element-plus
Version:
A Component Library for Vue 3
1 lines • 7.14 kB
Source Map (JSON)
{"version":3,"file":"content2.mjs","sources":["../../../../../../packages/components/popper/src/content.vue"],"sourcesContent":["<template>\n <div\n ref=\"popperContentRef\"\n :style=\"contentStyle\"\n :class=\"contentClass\"\n role=\"tooltip\"\n @mouseenter=\"(e) => $emit('mouseenter', e)\"\n @mouseleave=\"(e) => $emit('mouseleave', e)\"\n >\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onMounted, provide, ref, unref, watch } from 'vue'\nimport { createPopper } from '@popperjs/core'\nimport { useNamespace, useZIndex } from '@element-plus/hooks'\nimport {\n POPPER_CONTENT_INJECTION_KEY,\n POPPER_INJECTION_KEY,\n} from '@element-plus/tokens'\nimport { usePopperContentProps } from './content'\nimport { buildPopperOptions, unwrapMeasurableEl } from './utils'\n\nimport type { WatchStopHandle } from 'vue'\n\ndefineOptions({\n name: 'ElPopperContent',\n})\n\ndefineEmits(['mouseenter', 'mouseleave'])\n\nconst props = defineProps(usePopperContentProps)\n\nconst { popperInstanceRef, contentRef, triggerRef } = inject(\n POPPER_INJECTION_KEY,\n undefined\n)!\nconst { nextZIndex } = useZIndex()\nconst ns = useNamespace('popper')\nconst popperContentRef = ref<HTMLElement>()\nconst arrowRef = ref<HTMLElement>()\nconst arrowOffset = ref<number>()\nprovide(POPPER_CONTENT_INJECTION_KEY, {\n arrowRef,\n arrowOffset,\n})\nconst contentZIndex = ref(props.zIndex || nextZIndex())\n\nconst computedReference = computed(\n () => unwrapMeasurableEl(props.referenceEl) || unref(triggerRef)\n)\n\nconst contentStyle = computed(\n () => [{ zIndex: unref(contentZIndex) }, props.popperStyle] as any\n)\n\nconst contentClass = computed(() => [\n ns.b(),\n ns.is('pure', props.pure),\n ns.is(props.effect),\n props.popperClass,\n])\n\nconst createPopperInstance = ({ referenceEl, popperContentEl, arrowEl }) => {\n const options = buildPopperOptions(props, {\n arrowEl,\n arrowOffset: unref(arrowOffset),\n })\n\n return createPopper(referenceEl, popperContentEl, options)\n}\n\nconst updatePopper = (shouldUpdateZIndex = true) => {\n unref(popperInstanceRef)?.update()\n shouldUpdateZIndex && (contentZIndex.value = props.zIndex || nextZIndex())\n}\n\nconst togglePopperAlive = () => {\n const monitorable = { name: 'eventListeners', enabled: props.visible }\n unref(popperInstanceRef)?.setOptions?.((options) => ({\n ...options,\n modifiers: [...(options.modifiers || []), monitorable],\n }))\n updatePopper(false)\n}\n\nonMounted(() => {\n let updateHandle: WatchStopHandle\n watch(\n computedReference,\n (referenceEl) => {\n updateHandle?.()\n const popperInstance = unref(popperInstanceRef)\n popperInstance?.destroy?.()\n if (referenceEl) {\n const popperContentEl = unref(popperContentRef)!\n contentRef.value = popperContentEl\n\n popperInstanceRef.value = createPopperInstance({\n referenceEl,\n popperContentEl,\n arrowEl: unref(arrowRef),\n })\n\n updateHandle = watch(\n () => referenceEl.getBoundingClientRect(),\n () => updatePopper(),\n {\n immediate: true,\n }\n )\n } else {\n popperInstanceRef.value = undefined\n }\n },\n {\n immediate: true,\n }\n )\n\n watch(() => props.visible, togglePopperAlive, { immediate: true })\n\n watch(\n () =>\n buildPopperOptions(props, {\n arrowEl: unref(arrowRef),\n arrowOffset: unref(arrowOffset),\n }),\n (option) => popperInstanceRef.value?.setOptions(option)\n )\n})\n\ndefineExpose({\n /**\n * @description popper content element\n */\n popperContentRef,\n /**\n * @description popperjs instance\n */\n popperInstanceRef,\n /**\n * @description method for updating popper\n */\n updatePopper,\n\n /**\n * @description content style\n */\n contentStyle,\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAkCA,IAAA,MAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,GAAA,MAAA,CACA,sBACA,KACA,CAAA,CAAA,CAAA;AACA,IAAA,MAAA,EAAA,eAAA,SAAA,EAAA,CAAA;AACA,IAAA,MAAA,EAAA,GAAA,aAAA,QAAA,CAAA,CAAA;AACA,IAAA,MAAA,mBAAA,GAAA,EAAA,CAAA;AACA,IAAA,MAAA,WAAA,GAAA,EAAA,CAAA;AACA,IAAA,MAAA,cAAA,GAAA,EAAA,CAAA;AACA,IAAA,OAAA,CAAA,4BAAA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,KACA,CAAA,CAAA;AACA,IAAA,MAAA,aAAA,GAAA,GAAA,CAAA,KAAA,CAAA,MAAA,IAAA,YAAA,CAAA,CAAA;AAEA,IAAA,MAAA,iBAAA,GAAA,SACA,MAAA,kBAAA,CAAA,MAAA,WAAA,CAAA,IAAA,KAAA,CAAA,UAAA,CACA,CAAA,CAAA;AAEA,IAAA,MAAA,YAAA,GAAA,QAAA,CACA,MAAA,CAAA,EAAA,MAAA,EAAA,KAAA,CAAA,aAAA,CAAA,EAAA,EAAA,KAAA,CAAA,WAAA,CACA,CAAA,CAAA;AAEA,IAAA,MAAA,YAAA,GAAA,SAAA,MAAA;AAAA,MACA,GAAA,CAAA,EAAA;AAAA,MACA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,KAAA,CAAA,IAAA,CAAA;AAAA,MACA,EAAA,CAAA,EAAA,CAAA,KAAA,CAAA,MAAA,CAAA;AAAA,MACA,KAAA,CAAA,WAAA;AAAA,KACA,CAAA,CAAA;AAEA,IAAA,MAAA,oBAAA,GAAA,CAAA,EAAA,WAAA,EAAA,iBAAA,OAAA,EAAA,KAAA;AACA,MAAA,MAAA,OAAA,GAAA,mBAAA,KAAA,EAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA,EAAA,MAAA,WAAA,CAAA;AAAA,OACA,CAAA,CAAA;AAEA,MAAA,OAAA,YAAA,CAAA,WAAA,EAAA,eAAA,EAAA,OAAA,CAAA,CAAA;AAAA,KACA,CAAA;AAEA,IAAA,MAAA,YAAA,GAAA,CAAA,kBAAA,GAAA,IAAA,KAAA;AACA,MAAA,IAAA,EAAA,CAAA;AACA,MAAA,CAAA,EAAA,GAAA,KAAA,CAAA,iBAAA,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,EAAA,CAAA;AAAA,MACA,kBAAA,KAAA,aAAA,CAAA,KAAA,GAAA,KAAA,CAAA,MAAA,IAAA,UAAA,EAAA,CAAA,CAAA;AAEA,KAAA,CAAA;AACA,IAAA,MAAA,iBAAA,GAAA,MAAA;AACA,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAAA,MACA,MAAA,WAAA,GAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,KAAA,CAAA,OAAA,EAAA,CAAA;AAAA,MAAA,CAAA,gBACA,kBAAA,CAAA,SAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,CAAA,OAAA,MAAA;AAAA,QACA,GAAA,OAAA;AACA,QAAA,SAAA,EAAA,CAAA,GAAA,OAAA,CAAA,SAAA,IAAA,EAAA,EAAA,WAAA,CAAA;AAAA,OACA,CAAA,CAAA,CAAA;AAEA,MAAA,YAAA,CAAA,KAAA,CAAA,CAAA;AACA,KAAA,CAAA;AACA,IACA,SAAA,CAAA,MAAA;AAEA,MAAA,IAAA,YAAA,CAAA;AACA,MAAA,KAAA,CAAA,iBAAA,EAAA,YAAA,KAAA;AACA,QAAA,IAAA,EAAA,CAAA;AACA,QAAA,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,EAAA,CAAA;AACA,QAAA,MAAA,cAAA,GAAA,uBAAA,CAAA,CAAA;AACA,QAAA,CAAA,EAAA,GAAA,cAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,cAAA,CAAA,OAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,cAAA,CAAA,CAAA;AAEA,QAAA,IAAA,WAAA,EAAA;AAAA,UACA,MAAA,eAAA,GAAA,KAAA,CAAA,gBAAA,CAAA,CAAA;AAAA,UACA,UAAA,CAAA,KAAA,GAAA,eAAA,CAAA;AAAA,UACA,iBAAA,CAAA,KAAA,GAAA,oBAAA,CAAA;AAAA,YACA,WAAA;AAEA,YAAA;AAGA,YACA,OAAA,EAAA,KAAA,CAAA,QAAA,CAAA;AAAA,WAEA,CAAA,CAAA;AAAA,UACA,YAAA,GAAA,KAAA,CAAA,MAAA,WAAA,CAAA,qBAAA,EAAA,EAAA,MAAA,YAAA,EAAA,EAAA;AACA,YAAA,SAAA,EAAA,IAAA;AAAA,WACA,CAAA,CAAA;AAAA,SAEA,MAAA;AAAA,UACA,iBAAA,CAAA,KAAA,GAAA,KAAA,CAAA,CAAA;AAAA,SAEA;AAEA,OAAA,EAAA;AAEA,QACA,SAAA;AACA,OACA,CAAA,CAAA;AAAA,MACA,KAAA,CAAA,MAAA,aAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,CAAA;AAAA,MACA,KACA,CAAA,MAAA,wBAAA,EAAA;AACA,QACA,OAAA,EAAA,KAAA,CAAA,QAAA,CAAA;AAEA,QAAA,WAAA,EAAA,KAAA,CAAA,WAAA,CAAA;AAAA,OAIA,CAAA,EAAA,CAAA,MAAA,KAAA;AAAA,QAIA,IAAA,EAAA,CAAA;AAAA,QAIA,OAAA,CAAA,EAAA,GAAA,iBAAA,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA;AAAA,OAKA,CAAA,CAAA;AAAA,KACA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;"}