fix: picker nest select error, close #6062 #5994

pull/6067/head
tangjinzhou 2022-10-30 21:45:59 +08:00
parent 213c3a4059
commit 9eac1a1da5
3 changed files with 8 additions and 3 deletions

View File

@ -96,6 +96,7 @@ function PickerTrigger(props: PickerTriggerProps, { slots }) {
default: slots.default, default: slots.default,
popup: slots.popupElement, popup: slots.popupElement,
}} }}
tryPopPortal
></Trigger> ></Trigger>
); );
} }

View File

@ -86,6 +86,8 @@ export default defineComponent({
autoDestroy: { type: Boolean, default: false }, autoDestroy: { type: Boolean, default: false },
mobile: Object, mobile: Object,
getTriggerDOMNode: Function as PropType<(d?: HTMLElement) => HTMLElement>, getTriggerDOMNode: Function as PropType<(d?: HTMLElement) => HTMLElement>,
// portal context will change
tryPopPortal: Boolean, // no need reactive
}, },
setup(props) { setup(props) {
const align = computed(() => { const align = computed(() => {
@ -95,7 +97,7 @@ export default defineComponent({
} }
return popupAlign; return popupAlign;
}); });
const { setPortal, popPortal } = useInjectTrigger(); const { setPortal, popPortal } = useInjectTrigger(props.tryPopPortal);
const popupRef = ref(null); const popupRef = ref(null);
const setPopupRef = val => { const setPopupRef = val => {
popupRef.value = val; popupRef.value = val;

View File

@ -18,8 +18,10 @@ export const useProviderTrigger = () => {
}; };
}; };
export const useInjectTrigger = () => { export const useInjectTrigger = (tryPopPortal?: boolean) => {
return inject(TriggerContextKey, { setPortal: () => {}, popPortal: false }); return tryPopPortal
? inject(TriggerContextKey, { setPortal: () => {}, popPortal: false })
: { setPortal: () => {}, popPortal: false };
}; };
export interface PortalContextProps { export interface PortalContextProps {