UNPKG

@vuesax-alpha/nightly

Version:
1 lines 6.77 kB
{"version":3,"file":"content2.mjs","sources":["../../../../../../packages/components/popper/src/content.vue"],"sourcesContent":["<template>\n <teleport :to=\"appendTo\" :disabled=\"!teleported\">\n <transition\n :name=\"animation\"\n @after-leave=\"onTransitionLeave\"\n @before-enter=\"onBeforeEnter\"\n @after-enter=\"onAfterShow\"\n @before-leave=\"onBeforeLeave\"\n >\n <div\n v-if=\"shouldRender\"\n v-show=\"shouldShow\"\n ref=\"contentRef\"\n :class=\"popperKls\"\n :style=\"popperStyle\"\n :data-popper-placement=\"placement\"\n @mouseenter=\"onContentEnter\"\n @mouseleave=\"onContentLeave\"\n >\n <template v-if=\"!destroyed\">\n <template v-if=\"content\">\n <template v-if=\"rawContent\">\n <div v-html=\"content\" />\n </template>\n <template v-else>\n {{ content }}\n </template>\n </template>\n\n <template v-else>\n <slot />\n </template>\n </template>\n </div>\n </transition>\n </teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n computed,\n inject,\n onBeforeUnmount,\n onMounted,\n ref,\n unref,\n watch,\n} from 'vue'\nimport { onClickOutside, unrefElement } from '@vueuse/core'\nimport { useNamespace } from '@vuesax-alpha/hooks'\nimport { popperContextKey } from '@vuesax-alpha/tokens'\nimport { composeEventHandlers } from '@vuesax-alpha/utils'\nimport { popperContentEmits, popperContentProps } from './content'\n\ndefineOptions({\n name: 'VsPopper',\n})\n\nconst ns = useNamespace('popper')\n\nconst {\n contentRef,\n controlled,\n open,\n trigger,\n updatePopper,\n onOpen,\n onClose,\n onShow,\n onHide,\n onBeforeShow,\n onBeforeHide,\n} = inject(popperContextKey, undefined)!\n\nconst props = defineProps(popperContentProps)\ndefineEmits(popperContentEmits)\n\nconst destroyed = ref(false)\n\nconst persistentRef = computed(() => {\n // For testing, we would always want the content to be rendered\n // to the DOM, so we need to return true here.\n if (process.env.NODE_ENV === 'test') {\n return true\n }\n return props.persistent\n})\n\nconst shouldRender = computed(() => {\n return unref(persistentRef) ? true : unref(open)\n})\n\nconst shouldShow = computed(() => {\n return props.disabled ? false : unref(open)\n})\n\nconst popperKls = computed(() => [\n ns.b(),\n ns.is('not-arrow', !props.showArrow),\n props.popperClass,\n])\n\nconst togglePopperAlive = () => {\n updatePopper(false)\n}\n\nconst stopWhenControlled = () => {\n if (unref(controlled)) return true\n}\n\nconst onContentEnter = composeEventHandlers(stopWhenControlled, () => {\n if (props.interactivity && unref(trigger) === 'hover') {\n onOpen()\n }\n})\n\nconst onContentLeave = composeEventHandlers(stopWhenControlled, () => {\n if (unref(trigger) === 'hover') {\n onClose()\n }\n})\n\nconst onTransitionLeave = () => {\n onHide()\n}\n\nconst onBeforeEnter = () => {\n updatePopper()\n onBeforeShow?.()\n}\n\nconst onBeforeLeave = () => {\n onBeforeHide?.()\n}\n\nlet stopHandle: ReturnType<typeof onClickOutside>\n\nconst onAfterShow = () => {\n onShow()\n stopHandle = onClickOutside(\n computed(() => {\n return unrefElement(contentRef)\n }),\n () => {\n if (unref(controlled)) return\n const $trigger = unref(trigger)\n if ($trigger !== 'hover') {\n onClose()\n }\n }\n )\n}\n\nonMounted(() => {\n watch(() => props.visible, togglePopperAlive, { immediate: true })\n})\n\nwatch(\n () => unref(open),\n (val) => {\n if (!val) {\n stopHandle?.()\n }\n },\n {\n flush: 'post',\n }\n)\n\nwatch(\n () => props.content,\n () => {\n updatePopper()\n }\n)\n\nonBeforeUnmount(() => {\n destroyed.value = true\n})\n</script>\n"],"names":[],"mappings":"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"}