UNPKG

tdesign-vue-next

Version:
1 lines 38.6 kB
{"version":3,"file":"popup.mjs","sources":["../../../components/popup/popup.tsx"],"sourcesContent":["import { createPopper, Placement } from '@popperjs/core';\nimport { inRange, max, min, isObject, debounce, isString, isFunction } from 'lodash-es';\nimport {\n computed,\n CSSProperties,\n defineComponent,\n inject,\n InjectionKey,\n nextTick,\n onUnmounted,\n provide,\n ref,\n Ref,\n toRefs,\n Transition,\n watch,\n} from 'vue';\nimport { useVModel, useContent, useTNodeJSX, usePrefixClass, useCommonClassName } from '@tdesign/shared-hooks';\n\nimport { off, on, once, isServer } from '@tdesign/shared-utils';\nimport setStyle from '@tdesign/common-js/utils/setStyle';\nimport Container from './container';\nimport props from './props';\nimport { PopupTriggerEvent, TdPopupProps } from './type';\n\nconst POPUP_ATTR_NAME = 'data-td-popup';\nconst POPUP_PARENT_ATTR_NAME = 'data-td-popup-parent';\n\nfunction isEscapeKey(ev: KeyboardEvent) {\n return ev.key === 'Escape' || ev.code === 'Escape' || ev.keyCode === 27;\n}\n\n/**\n * @param id\n * @param upwards query upwards poppers\n */\nfunction getPopperTree(id: number | string, upwards?: boolean): Element[] {\n const list = [] as any;\n const selectors = [POPUP_PARENT_ATTR_NAME, POPUP_ATTR_NAME];\n\n if (!id) return list;\n if (upwards) {\n selectors.unshift(selectors.pop());\n }\n\n recurse(id);\n\n return list;\n\n function recurse(id: number | string) {\n const children = document.querySelectorAll(`[${selectors[0]}=\"${id}\"]`);\n children.forEach((el) => {\n list.push(el);\n const childId = el.getAttribute(selectors[1]);\n if (childId && childId !== id) {\n recurse(childId);\n }\n });\n }\n}\n\nconst parentKey = Symbol() as InjectionKey<{\n id: string;\n assertMouseLeave: (ev: MouseEvent) => void;\n}>;\n\nfunction getPopperPlacement(placement: TdPopupProps['placement']): Placement {\n return placement.replace(/-(left|top)$/, '-start').replace(/-(right|bottom)$/, '-end') as Placement;\n}\n\nfunction attachListeners(elm: Ref<Element>) {\n const offs: Array<() => void> = [];\n return {\n add<K extends keyof HTMLElementEventMap>(type: K, listener: (ev: HTMLElementEventMap[K]) => void) {\n if (!type) return;\n on(elm.value, type, listener);\n offs.push(() => {\n off(elm.value, type, listener);\n });\n },\n clean() {\n offs.forEach((handler) => handler?.());\n offs.length = 0;\n },\n };\n}\n\nexport default defineComponent({\n name: 'TPopup',\n props: {\n ...props,\n expandAnimation: {\n type: Boolean,\n },\n },\n setup(props, { expose }) {\n const { visible: propVisible, modelValue } = toRefs(props);\n const [visible, setVisible] = useVModel(\n propVisible,\n modelValue,\n props.defaultVisible,\n props.onVisibleChange,\n 'visible',\n );\n const renderTNodeJSX = useTNodeJSX();\n const renderContent = useContent();\n\n /** popperjs instance */\n let popper: ReturnType<typeof createPopper>;\n /** timeout id */\n let showTimeout: any;\n let hideTimeout: any;\n\n const triggerEl = ref<HTMLElement>();\n const overlayEl = ref<HTMLElement>();\n const popperEl = ref<HTMLElement>();\n const containerRef = ref<typeof Container>();\n const isOverlayHover = ref(false);\n\n const arrowStyle = ref<CSSProperties>({});\n\n const id = Date.now().toString(36);\n const parent = inject(parentKey, undefined);\n\n provide(parentKey, {\n id,\n assertMouseLeave: onMouseLeave,\n });\n\n const prefixCls = usePrefixClass('popup');\n const { STATUS: commonCls } = useCommonClassName();\n const delay = computed(() => {\n const delay = props.trigger !== 'hover' ? [0, 0] : [].concat(props.delay ?? [250, 150]);\n return {\n show: delay[0],\n hide: delay[1] ?? delay[0],\n };\n });\n\n const trigger = attachListeners(triggerEl);\n\n watch(\n () => [props.trigger, triggerEl.value],\n () => {\n if (!triggerEl.value) return;\n trigger.clean();\n\n trigger.add(\n (\n {\n hover: 'mouseenter',\n focus: 'focusin',\n 'context-menu': 'contextmenu',\n click: 'click',\n } as any\n )[props.trigger],\n (ev: MouseEvent) => {\n if (props.disabled) return;\n\n if (ev.type === 'contextmenu') {\n ev.preventDefault();\n }\n\n if ((ev.type === 'click' || ev.type === 'contextmenu') && visible.value) {\n hide(ev);\n return;\n }\n\n show(ev);\n },\n );\n\n trigger.add(\n (\n {\n hover: 'mouseleave',\n focus: 'focusout',\n } as any\n )[props.trigger],\n hide,\n );\n },\n );\n\n watch(\n () => [props.overlayStyle, props.overlayInnerStyle, overlayEl.value],\n () => {\n updateOverlayInnerStyle();\n updatePopper();\n },\n { immediate: true },\n );\n\n watch(\n () => props.triggerElement,\n (v) => {\n // triggerElement 为字符串的情况,作为元素选择器使用\n if (typeof v === 'string') {\n nextTick(() => {\n triggerEl.value = document.querySelector(v);\n });\n }\n },\n { immediate: true },\n );\n\n watch(\n () => props.placement,\n () => {\n destroyPopper();\n updatePopper();\n },\n );\n\n watch(\n () => visible.value,\n (visible) => {\n if (visible) {\n !isServer && on(document, 'mousedown', onDocumentMouseDown, true);\n if (props.trigger === 'focus') {\n once(triggerEl.value, 'keydown', (ev: KeyboardEvent) => {\n if (isEscapeKey(ev)) {\n hide(ev);\n }\n });\n }\n return;\n }\n !isServer && off(document, 'mousedown', onDocumentMouseDown, true);\n },\n { immediate: true },\n );\n\n watch(\n () => [visible.value, overlayEl.value],\n () => {\n if (visible.value && overlayEl.value && updateScrollTop) {\n updateScrollTop?.(overlayEl.value);\n }\n },\n );\n\n onUnmounted(() => {\n destroyPopper();\n clearAllTimeout();\n off(document, 'mousedown', onDocumentMouseDown, true);\n });\n\n expose({\n update: updatePopper,\n getOverlay: () => overlayEl.value,\n getOverlayState: () => ({\n hover: isOverlayHover.value,\n }),\n getPopper: () => popper,\n /** close is going to be deprecated. visible is enough */\n close: () => hide(),\n });\n\n function getOverlayStyle() {\n const { overlayStyle } = props;\n\n if (!triggerEl.value || !overlayEl.value) return;\n if (isFunction(overlayStyle)) {\n return overlayStyle(triggerEl.value, overlayEl.value);\n }\n if (isObject(overlayStyle)) {\n return overlayStyle;\n }\n }\n\n function updateOverlayInnerStyle() {\n const { overlayInnerStyle } = props;\n\n if (!triggerEl.value || !overlayEl.value) return;\n if (isFunction(overlayInnerStyle)) {\n setStyle(overlayEl.value, overlayInnerStyle(triggerEl.value, overlayEl.value));\n } else if (isObject(overlayInnerStyle)) {\n setStyle(overlayEl.value, overlayInnerStyle);\n }\n }\n\n function getArrowStyle() {\n if (!triggerEl.value || !popperEl.value) {\n // 不做修改\n return {};\n }\n\n const triggerRect = triggerEl.value.getBoundingClientRect();\n const popupRect = popperEl.value.getBoundingClientRect();\n\n const position = props.placement;\n\n if (position.startsWith('top') || position.startsWith('bottom')) {\n // 距离中线的距离\n const offsetLeft = Math.abs(triggerRect.left + triggerRect.width / 2 - popupRect.left);\n\n const popupWidth = popperEl.value.offsetWidth ?? popperEl.value.offsetWidth;\n\n // 保留 padding 的安全 offset\n const maxPopupOffsetLeft = popupWidth - 4;\n const minPopupOffsetLeft = 12;\n\n // 偏移超出元素本身\n if (inRange(offsetLeft, 0, popupWidth)) {\n return {\n // 加上箭头元素本身的偏移\n left: `${max([minPopupOffsetLeft, min([maxPopupOffsetLeft, offsetLeft])]) - 4}px`,\n // 覆盖可能的 margin\n marginLeft: 0,\n };\n } else {\n // 此时箭头的指向将不准确\n // 不作偏移保持默认\n // 或许考虑隐藏箭头或尽可能偏移\n return {};\n }\n }\n\n // 判断元素顶部和触发器中线的距离\n const offsetTop = triggerRect.top + triggerRect.height / 2 - popupRect.top;\n\n const popupHeight = popperEl.value.offsetHeight ?? popperEl.value.clientHeight;\n\n // 保留 padding 的安全 offset\n const maxPopupOffsetTop = popupHeight - 8;\n const minPopupOffsetTop = 8;\n\n // 偏移超出元素本身\n if (inRange(offsetTop, 0, popupHeight)) {\n return {\n // 加上箭头元素本身的偏移\n top: `${max([minPopupOffsetTop, min([maxPopupOffsetTop, offsetTop])]) - 4}px`,\n // 覆盖可能的 margin\n marginTop: 0,\n };\n } else {\n // 此时箭头的指向将不准确\n // 不作偏移保持默认\n // 或许考虑隐藏箭头或尽可能偏移\n return {};\n }\n }\n\n function updatePopper() {\n if (!popperEl.value || !visible.value) return;\n if (popper) {\n /**\n * web component 内的元素限制在了shadow root内,\n * 无法通过寻找父元素的方式判定是否在当前文档内\n */\n if (triggerEl.value.getRootNode() instanceof ShadowRoot) {\n popper.state.elements.reference = triggerEl.value;\n popper.update();\n } else {\n const rect = triggerEl.value.getBoundingClientRect();\n let parent = triggerEl.value;\n while (parent && parent !== document.body) {\n parent = parent.parentElement;\n }\n const isHidden = parent !== document.body || (rect.width === 0 && rect.height === 0);\n if (!isHidden) {\n popper.state.elements.reference = triggerEl.value;\n popper.update();\n } else {\n setVisible(false, { trigger: getTriggerType({ type: 'mouseenter' } as MouseEvent) });\n }\n }\n if (props.showArrow) {\n arrowStyle.value = getArrowStyle();\n }\n return;\n }\n\n popper = createPopper(triggerEl.value, popperEl.value, {\n placement: getPopperPlacement(props.placement),\n onFirstUpdate: () => {\n nextTick(updatePopper);\n },\n ...props.popperOptions,\n });\n if (props.showArrow) {\n arrowStyle.value = getArrowStyle();\n }\n }\n\n function destroyPopper() {\n if (popper) {\n popper?.destroy();\n popper = null;\n }\n if (props.destroyOnClose) {\n containerRef.value?.unmountContent();\n }\n }\n\n function show(ev: PopupTriggerEvent) {\n clearAllTimeout();\n showTimeout = setTimeout(() => {\n setVisible(true, { trigger: getTriggerType(ev) });\n }, delay.value.show);\n }\n\n function hide(ev?: PopupTriggerEvent) {\n clearAllTimeout();\n hideTimeout = setTimeout(() => {\n setVisible(false, { trigger: getTriggerType(ev), e: ev });\n }, delay.value.hide);\n }\n\n function clearAllTimeout() {\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n }\n\n function getTriggerType(ev?: PopupTriggerEvent) {\n switch (ev?.type) {\n case 'mouseenter':\n return 'trigger-element-hover';\n case 'mouseleave':\n return 'trigger-element-hover';\n case 'focusin':\n return 'trigger-element-focus';\n case 'focusout':\n return 'trigger-element-blur';\n case 'click':\n return 'trigger-element-click';\n case 'context-menu':\n case 'keydown':\n return 'keydown-esc';\n case 'mousedown':\n return 'document';\n default:\n return 'trigger-element-close';\n }\n }\n\n function onDocumentMouseDown(ev: MouseEvent) {\n // click content\n if (popperEl.value?.contains(ev.target as Node)) {\n return;\n }\n\n // click trigger element\n if (triggerEl.value?.contains(ev.target as Node)) {\n return;\n }\n\n // ignore upwards\n const activedPopper = getPopperTree(id).find((el) => el.contains(ev.target as Node));\n if (\n activedPopper &&\n getPopperTree(activedPopper.getAttribute(POPUP_PARENT_ATTR_NAME), true).some((el) => el === popperEl.value)\n ) {\n return;\n }\n\n hide(ev);\n }\n\n function onMouseLeave(ev: MouseEvent) {\n isOverlayHover.value = false;\n if (props.trigger !== 'hover' || triggerEl.value.contains(ev.target as Node)) return;\n\n const isCursorOverlaps = getPopperTree(id).some((el) => {\n const rect = el.getBoundingClientRect();\n\n return ev.x > rect.x && ev.x < rect.x + rect.width && ev.y > rect.y && ev.y < rect.y + rect.height;\n });\n if (!isCursorOverlaps) {\n hide(ev);\n parent?.assertMouseLeave(ev);\n }\n }\n\n function onMouseenter() {\n isOverlayHover.value = true;\n if (visible.value && props.trigger === 'hover') {\n clearAllTimeout();\n }\n }\n\n function onOverlayClick(e: MouseEvent) {\n props.onOverlayClick?.({ e });\n }\n\n const updateScrollTop = inject('updateScrollTop', undefined);\n\n function handleOnScroll(e: WheelEvent) {\n const { scrollTop, clientHeight, scrollHeight } = e.target as HTMLDivElement;\n\n // 防止多次触发添加截流\n const debounceOnScrollBottom = debounce((e) => props.onScrollToBottom?.({ e }), 100);\n\n // 页面缩放时,scrollTop/clientHeight/scrollHeight 可能出现小数,使用容差值进行比较\n // When page is zoomed, scrollTop/clientHeight/scrollHeight may have decimal values, use tolerance for comparison\n if (Math.abs(clientHeight + scrollTop - scrollHeight) < 1) {\n // touch bottom\n debounceOnScrollBottom(e);\n }\n props.onScroll?.({ e });\n }\n\n return () => {\n const content = renderTNodeJSX('content');\n const hidePopup = props.hideEmptyPopup && ['', undefined, null].includes(content);\n const overlay =\n visible.value || !props.destroyOnClose ? (\n <div\n {...{\n [POPUP_ATTR_NAME]: id,\n [POPUP_PARENT_ATTR_NAME]: parent?.id,\n }}\n class={[prefixCls.value, props.overlayClassName]}\n ref={(ref: HTMLElement) => (popperEl.value = ref)}\n style={[{ zIndex: props.zIndex }, getOverlayStyle(), hidePopup && { visibility: 'hidden' }]}\n v-show={visible.value}\n onClick={onOverlayClick}\n onMouseenter={onMouseenter}\n onMouseleave={onMouseLeave}\n >\n <div\n class={[\n `${prefixCls.value}__content`,\n {\n [`${prefixCls.value}__content--text`]: isString(props.content),\n [`${prefixCls.value}__content--arrow`]: props.showArrow,\n [commonCls.value.disabled]: props.disabled,\n },\n props.overlayInnerClassName,\n ]}\n ref={overlayEl}\n onScroll={handleOnScroll}\n >\n {content}\n {props.showArrow && <div class={`${prefixCls.value}__arrow`} style={arrowStyle.value} />}\n </div>\n </div>\n ) : null;\n\n return (\n <Container\n ref={(ref: any) => (containerRef.value = ref)}\n forwardRef={(ref) => {\n if (typeof props.triggerElement !== 'string') triggerEl.value = ref;\n }}\n onContentMounted={() => {\n if (visible.value) {\n updatePopper();\n\n const timer = setTimeout(() => {\n /** compted after animation finished */\n updateOverlayInnerStyle();\n clearTimeout(timer);\n }, 60);\n }\n }}\n onResize={() => {\n if (visible.value) {\n updatePopper();\n }\n }}\n visible={visible.value}\n attach={props.attach}\n >\n {{\n content: () => (\n <Transition\n name={`${prefixCls.value}--animation${props.expandAnimation ? '-expand' : ''}`}\n appear\n onEnter={updatePopper}\n onAfterLeave={destroyPopper}\n >\n {overlay}\n </Transition>\n ),\n default: () => {\n if (typeof props.triggerElement === 'string') return null;\n return renderContent('default', 'triggerElement');\n },\n }}\n </Container>\n );\n };\n },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","POPUP_ATTR_NAME","POPUP_PARENT_ATTR_NAME","isEscapeKey","ev","key","code","keyCode","getPopperTree","id","upwards","list","selectors","unshift","pop","recurse","children","document","querySelectorAll","concat","forEach","el","push","childId","getAttribute","parentKey","Symbol","getPopperPlacement","placement","replace","attachListeners","elm","offs","add","type","listener","on","value","off","clean","handler","length","defineComponent","name","props","_objectSpread","expandAnimation","Boolean","setup","expose","_ref","_toRefs","toRefs","propVisible","visible","modelValue","_useVModel","useVModel","defaultVisible","onVisibleChange","_useVModel2","_slicedToArray","setVisible","renderTNodeJSX","useTNodeJSX","renderContent","useContent","popper","showTimeout","hideTimeout","triggerEl","ref","overlayEl","popperEl","containerRef","isOverlayHover","arrowStyle","Date","now","parent","inject","provide","assertMouseLeave","onMouseLeave","prefixCls","usePrefixClass","_useCommonClassName","useCommonClassName","commonCls","STATUS","delay","computed","_props2$delay","_delay2$","trigger","show","hide","watch","hover","focus","click","disabled","preventDefault","overlayStyle","overlayInnerStyle","updateOverlayInnerStyle","updatePopper","immediate","triggerElement","v","nextTick","querySelector","destroyPopper","isServer","onDocumentMouseDown","once","updateScrollTop","onUnmounted","clearAllTimeout","update","getOverlay","getOverlayState","getPopper","close","getOverlayStyle","isFunction","isObject","setStyle","getArrowStyle","_popperEl$value$offse2","triggerRect","getBoundingClientRect","popupRect","position","startsWith","_popperEl$value$offse","offsetLeft","Math","abs","left","width","popupWidth","offsetWidth","maxPopupOffsetLeft","minPopupOffsetLeft","inRange","max","min","marginLeft","offsetTop","top","height","popupHeight","offsetHeight","clientHeight","maxPopupOffsetTop","minPopupOffsetTop","marginTop","getRootNode","ShadowRoot","state","elements","reference","rect","body","parentElement","isHidden","getTriggerType","showArrow","createPopper","onFirstUpdate","popperOptions","_popper","destroy","destroyOnClose","_containerRef$value","unmountContent","setTimeout","e","clearTimeout","_popperEl$value","_triggerEl$value","contains","target","activedPopper","find","some","isCursorOverlaps","x","y","onMouseenter","onOverlayClick","_props2$onOverlayClic","handleOnScroll","_props2$onScroll","_e$target","scrollTop","scrollHeight","debounceOnScrollBottom","debounce","onScrollToBottom","_props2$onScrollToBot","onScroll","content","hidePopup","hideEmptyPopup","includes","overlay","_withDirectives","_createVNode","_mergeProps","_defineProperty","overlayClassName","zIndex","visibility","isString","overlayInnerClassName","_vShow","Container","forwardRef","onContentMounted","timer","onResize","attach","default"],"mappings":"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"}