UNPKG

tdesign-vue-next

Version:
1 lines 38.9 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\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 = typeof process !== 'undefined' && process.env?.TEST ? '' : 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 const code = typeof process !== 'undefined' && process.env?.TEST ? '27' : 'Escape';\n if (ev.code === code) {\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","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","_process$env","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","process","env","TEST","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","ev","disabled","preventDefault","overlayStyle","overlayInnerStyle","updateOverlayInnerStyle","updatePopper","immediate","triggerElement","v","nextTick","querySelector","destroyPopper","isServer","onDocumentMouseDown","once","_process$env2","code","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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"}