element-plus
Version:
A Component Library for Vue 3
1 lines • 3.95 kB
Source Map (JSON)
{"version":3,"file":"text.vue2.mjs","sources":["../../../../../../packages/components/text/src/text.vue"],"sourcesContent":["<template>\n <component\n :is=\"tag\"\n ref=\"textRef\"\n :class=\"textKls\"\n :style=\"{ '-webkit-line-clamp': lineClamp }\"\n >\n <slot />\n </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onMounted, onUpdated, ref, useAttrs } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { useFormSize } from '@element-plus/components/form'\nimport { isUndefined } from '@element-plus/utils'\n\nimport type { TextProps } from './text'\n\ndefineOptions({\n name: 'ElText',\n})\n\nconst props = withDefaults(defineProps<TextProps>(), {\n type: '',\n size: '',\n tag: 'span',\n})\nconst textRef = ref<HTMLElement>()\n\nconst textSize = useFormSize()\nconst ns = useNamespace('text')\n\nconst textKls = computed(() => [\n ns.b(),\n ns.m(props.type),\n ns.m(textSize.value),\n ns.is('truncated', props.truncated),\n ns.is('line-clamp', !isUndefined(props.lineClamp)),\n])\n\nconst bindTitle = () => {\n const inheritTitle = useAttrs().title\n\n if (inheritTitle) return\n let shouldAddTitle = false\n const text = textRef.value?.textContent || ''\n\n if (props.truncated) {\n const width = textRef.value?.offsetWidth\n const scrollWidth = textRef.value?.scrollWidth\n if (width && scrollWidth && scrollWidth > width) {\n shouldAddTitle = true\n }\n } else if (!isUndefined(props.lineClamp)) {\n const height = textRef.value?.offsetHeight\n const scrollHeight = textRef.value?.scrollHeight\n if (height && scrollHeight && scrollHeight > height) {\n shouldAddTitle = true\n }\n }\n\n if (shouldAddTitle) {\n textRef.value?.setAttribute('title', text)\n } else {\n textRef.value?.removeAttribute('title')\n }\n}\n\nonMounted(bindTitle)\nonUpdated(bindTitle)\n</script>\n"],"names":["_openBlock","_createBlock","_resolveDynamicComponent","_renderSlot"],"mappings":";;;;;;;;;;;;;AAuBA,IAAA,MAAM,KAAA,GAAQ,OAAA;AAKd,IAAA,MAAM,UAAU,GAAA,EAAiB;AAEjC,IAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,IAAA,MAAM,EAAA,GAAK,aAAa,MAAM,CAAA;AAE9B,IAAA,MAAM,OAAA,GAAU,SAAS,MAAM;AAAA,MAC7B,GAAG,CAAA,EAAE;AAAA,MACL,EAAA,CAAG,CAAA,CAAE,KAAA,CAAM,IAAI,CAAA;AAAA,MACf,EAAA,CAAG,CAAA,CAAE,QAAA,CAAS,KAAK,CAAA;AAAA,MACnB,EAAA,CAAG,EAAA,CAAG,WAAA,EAAa,KAAA,CAAM,SAAS,CAAA;AAAA,MAClC,GAAG,EAAA,CAAG,YAAA,EAAc,CAAC,WAAA,CAAY,KAAA,CAAM,SAAS,CAAC;AAAA,KAClD,CAAA;AAED,IAAA,MAAM,YAAY,MAAM;;AACtB,MAAA,MAAM,YAAA,GAAe,UAAS,CAAE,KAAA;AAEhC,MAAA,IAAI,YAAA,EAAc;AAClB,MAAA,IAAI,cAAA,GAAiB,KAAA;AACrB,MAAA,MAAM,IAAA,GAAA,CAAA,CAAO,EAAA,GAAA,OAAA,CAAQ,KAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,WAAA,KAAe,EAAA;AAE3C,MAAA,IAAI,MAAM,SAAA,EAAW;AACnB,QAAA,MAAM,KAAA,GAAA,CAAQ,EAAA,GAAA,OAAA,CAAQ,KAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,WAAA;AAC7B,QAAA,MAAM,WAAA,GAAA,CAAc,EAAA,GAAA,OAAA,CAAQ,KAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,WAAA;AACnC,QAAA,IAAI,KAAA,IAAS,WAAA,IAAe,WAAA,GAAc,KAAA,EAAO;AAC/C,UAAA,cAAA,GAAiB,IAAA;AAAA,QACnB;AAAA,MACF,CAAA,MAAA,IAAW,CAAC,WAAA,CAAY,KAAA,CAAM,SAAS,CAAA,EAAG;AACxC,QAAA,MAAM,MAAA,GAAA,CAAS,EAAA,GAAA,OAAA,CAAQ,KAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,YAAA;AAC9B,QAAA,MAAM,YAAA,GAAA,CAAe,EAAA,GAAA,OAAA,CAAQ,KAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,YAAA;AACpC,QAAA,IAAI,MAAA,IAAU,YAAA,IAAgB,YAAA,GAAe,MAAA,EAAQ;AACnD,UAAA,cAAA,GAAiB,IAAA;AAAA,QACnB;AAAA,MACF;AAEA,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,KAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,YAAA,CAAa,OAAA,EAAS,IAAA,CAAA;AAAA,MACvC,CAAA,MAAO;AACL,QAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,KAAA,KAAR,mBAAe,eAAA,CAAgB,OAAA,CAAA;AAAA,MACjC;AAAA,IACF,CAAA;AAEA,IAAA,SAAA,CAAU,SAAS,CAAA;AACnB,IAAA,SAAA,CAAU,SAAS,CAAA;;AArEjB,MAAA,OAAAA,WAAA,EAAAC,WAAA,CAOYC,uBAAA,CANL,OAAA,CAAA,GAAG,CAAA,EAAA;AAAA,iBACJ,SAAA;AAAA,QAAJ,GAAA,EAAI,OAAA;AAAA,QACH,KAAA,iBAAO,OAAA,CAAA,KAAO,CAAA;AAAA,QACd,8CAA+B,OAAA,CAAA,WAAS;AAAA;yBAEzC,MAAQ;AAAA,UAARC,UAAA,CAAQ,IAAA,CAAA,MAAA,EAAA,SAAA;AAAA;;;;;;;;;;"}