From 5aad611d4c7299bf2ca7a6c2773501effc8b80ee Mon Sep 17 00:00:00 2001 From: tangjinzhou <415800467@qq.com> Date: Wed, 17 May 2023 22:53:02 +0800 Subject: [PATCH] fix: picker support v-show --- components/vc-picker/Picker.tsx | 82 ++++++------ components/vc-picker/RangePicker.tsx | 180 ++++++++++++++------------- components/vc-trigger/Trigger.tsx | 2 +- components/vc-trigger/context.ts | 17 --- 4 files changed, 142 insertions(+), 139 deletions(-) diff --git a/components/vc-picker/Picker.tsx b/components/vc-picker/Picker.tsx index 19cb3a0a0..c26099885 100644 --- a/components/vc-picker/Picker.tsx +++ b/components/vc-picker/Picker.tsx @@ -589,47 +589,57 @@ function Picker() { const popupPlacement = direction === 'rtl' ? 'bottomRight' : 'bottomLeft'; return ( - panel, - }} +
+ {inputNode} + {suffixNode} + {clearNode} +
+ panel, + }} >
- {inputNode} - {suffixNode} - {clearNode} -
-
-
+ style={{ + pointerEvents: 'none', + position: 'absolute', + top: 0, + bottom: 0, + left: 0, + right: 0, + }} + > + + ); }; }, diff --git a/components/vc-picker/RangePicker.tsx b/components/vc-picker/RangePicker.tsx index a4fb4d364..7f0db8889 100644 --- a/components/vc-picker/RangePicker.tsx +++ b/components/vc-picker/RangePicker.tsx @@ -1205,99 +1205,109 @@ function RangerPicker() { // ============================ Return ============================= return ( - rangePanel, - }} +
+ { + triggerStartTextChange(e.target.value); + }} + autofocus={autofocus} + placeholder={getValue(placeholder, 0) || ''} + ref={startInputRef} + {...startInputProps.value} + {...inputSharedProps} + autocomplete={autocomplete} + /> +
+
+ {separator} +
+
+ { + triggerEndTextChange(e.target.value); + }} + placeholder={getValue(placeholder, 1) || ''} + ref={endInputRef} + {...endInputProps.value} + {...inputSharedProps} + autocomplete={autocomplete} + /> +
+
+ {suffixNode} + {clearNode} + rangePanel, + }} >
- { - triggerStartTextChange(e.target.value); - }} - autofocus={autofocus} - placeholder={getValue(placeholder, 0) || ''} - ref={startInputRef} - {...startInputProps.value} - {...inputSharedProps} - autocomplete={autocomplete} - /> -
-
- {separator} -
-
- { - triggerEndTextChange(e.target.value); - }} - placeholder={getValue(placeholder, 1) || ''} - ref={endInputRef} - {...endInputProps.value} - {...inputSharedProps} - autocomplete={autocomplete} - /> -
-
- {suffixNode} - {clearNode} -
-
+ >
+ +
); }; }, diff --git a/components/vc-trigger/Trigger.tsx b/components/vc-trigger/Trigger.tsx index 5adcd89e0..dfd689c73 100644 --- a/components/vc-trigger/Trigger.tsx +++ b/components/vc-trigger/Trigger.tsx @@ -701,8 +701,8 @@ export default defineComponent({ ); return ( <> - {portal} {trigger} + {portal} ); }, diff --git a/components/vc-trigger/context.ts b/components/vc-trigger/context.ts index 7e69b6143..186b7eb76 100644 --- a/components/vc-trigger/context.ts +++ b/components/vc-trigger/context.ts @@ -1,22 +1,5 @@ import type { InjectionKey, Ref } from 'vue'; import { computed, inject, provide } from 'vue'; -export interface TriggerContextProps { - setPortal: (val?: any) => void; - popPortal: boolean; // 将 portal 上传至父级元素渲染,不用考虑响应式 -} -const TriggerContextKey: InjectionKey = Symbol('TriggerContextKey'); -export const useProviderTrigger = () => { - let portal = null; - provide(TriggerContextKey, { - setPortal(val) { - portal = val; - }, - popPortal: true, - }); - return () => { - return portal; - }; -}; export interface PortalContextProps { shouldRender: Ref;