UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 4.69 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/tooltip/src/index.ts"],"sourcesContent":["import { defineComponent, h, ref, cloneVNode } from 'vue'\nimport {\n default as ElPopper,\n popperDefaultProps,\n} from '@element-plus/components/popper'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/utils/constants'\nimport { throwError } from '@element-plus/utils/error'\nimport { getFirstValidNode } from '@element-plus/utils/vnode'\n\n/**\n * ElTooltip\n * Tooltip is essentially an upper layer for Popper, due to popper has already implemented so many functionalities and Popper is essentially a component shared internally\n * Tooltip also does the API translation work for popper.\n * Tooltip shares the exact same API which v2 has, so that the user should be able to\n */\nexport default defineComponent({\n name: 'ElTooltip',\n components: {\n ElPopper,\n },\n props: {\n ...popperDefaultProps,\n manual: {\n type: Boolean,\n default: false,\n },\n modelValue: {\n type: Boolean,\n validator: (val: unknown) => {\n return typeof val === 'boolean'\n },\n default: undefined,\n },\n // This API should be decaprecate since it's confusing with close-delay\n openDelay: {\n type: Number,\n default: 0,\n },\n visibleArrow: {\n type: Boolean,\n default: true,\n },\n tabindex: {\n type: [String, Number],\n default: '0',\n },\n },\n emits: [UPDATE_MODEL_EVENT],\n setup(props, ctx) {\n // when manual mode is true, v-model must be passed down\n if (props.manual && typeof props.modelValue === 'undefined') {\n throwError(\n '[ElTooltip]',\n 'You need to pass a v-model to el-tooltip when `manual` is true'\n )\n }\n\n const popper = ref(null)\n\n const onUpdateVisible = (val) => {\n ctx.emit(UPDATE_MODEL_EVENT, val)\n }\n\n const updatePopper = () => {\n return popper.value.update()\n }\n\n return {\n popper,\n onUpdateVisible,\n updatePopper,\n }\n },\n render() {\n const {\n $slots,\n content,\n manual,\n openDelay,\n onUpdateVisible,\n showAfter,\n visibleArrow,\n modelValue,\n tabindex,\n } = this\n\n const throwErrorTip = () => {\n throwError('[ElTooltip]', 'you need to provide a valid default slot.')\n }\n\n const popper = h(\n ElPopper,\n {\n ...Object.keys(popperDefaultProps).reduce((result, key) => {\n return { ...result, [key]: this[key] }\n }, {}),\n ref: 'popper',\n manualMode: manual,\n showAfter: openDelay || showAfter, // this is for mapping API due to we decided to rename the current openDelay API to showAfter for better readability,\n showArrow: visibleArrow,\n visible: modelValue,\n 'onUpdate:visible': onUpdateVisible,\n },\n {\n default: () => ($slots.content ? $slots.content() : content),\n trigger: () => {\n if ($slots.default) {\n const firstVnode = getFirstValidNode($slots.default(), 1)\n if (!firstVnode) throwErrorTip()\n return cloneVNode(firstVnode, { tabindex }, true)\n }\n throwErrorTip()\n },\n }\n )\n\n return popper\n },\n})\n"],"names":["ElPopper"],"mappings":";;;;;;;AAeA,cAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,cACVA;AAAA;AAAA,EAEF,OAAO;AAAA,OACF;AAAA,IACH,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,YAAY;AAAA,MACV,MAAM;AAAA,MACN,WAAW,CAAC,QAAiB;AAC3B,eAAO,OAAO,QAAQ;AAAA;AAAA,MAExB,SAAS;AAAA;AAAA,IAGX,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,UAAU;AAAA,MACR,MAAM,CAAC,QAAQ;AAAA,MACf,SAAS;AAAA;AAAA;AAAA,EAGb,OAAO,CAAC;AAAA,EACR,MAAM,OAAO,KAAK;AAEhB,QAAI,MAAM,UAAU,OAAO,MAAM,eAAe,aAAa;AAC3D,iBACE,eACA;AAAA;AAIJ,UAAM,SAAS,IAAI;AAEnB,UAAM,kBAAkB,CAAC,QAAQ;AAC/B,UAAI,KAAK,oBAAoB;AAAA;AAG/B,UAAM,eAAe,MAAM;AACzB,aAAO,OAAO,MAAM;AAAA;AAGtB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA,EAGJ,SAAS;AACP,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE;AAEJ,UAAM,gBAAgB,MAAM;AAC1B,iBAAW,eAAe;AAAA;AAG5B,UAAM,SAAS,EACbA,SACA;AAAA,SACK,OAAO,KAAK,oBAAoB,OAAO,CAAC,QAAQ,QAAQ;AACzD,eAAO,KAAK,SAAS,MAAM,KAAK;AAAA,SAC/B;AAAA,MACH,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,WAAW,aAAa;AAAA,MACxB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,oBAAoB;AAAA,OAEtB;AAAA,MACE,SAAS,MAAO,OAAO,UAAU,OAAO,YAAY;AAAA,MACpD,SAAS,MAAM;AACb,YAAI,OAAO,SAAS;AAClB,gBAAM,aAAa,kBAAkB,OAAO,WAAW;AACvD,cAAI,CAAC;AAAY;AACjB,iBAAO,WAAW,YAAY,EAAE,YAAY;AAAA;AAE9C;AAAA;AAAA;AAKN,WAAO;AAAA;AAAA;;;;"}