ideaz-element
Version:
<p align="center"> <a href="" target="_blank" rel="noopener noreferrer"> <img src="./docs/public/logo.svg" alt="Ideaz Element" width="180" style="width: 180px;" /> </a> </p>
1 lines • 3.98 kB
Source Map (JSON)
{"version":3,"file":"FormItemLabel.mjs","sources":["../../../../../packages/element/form/src/FormItemLabel.tsx"],"sourcesContent":["import { isFunction, isObject, isSlot, isString } from '@ideaz/utils'\nimport { QuestionFilled } from '@element-plus/icons-vue'\nimport { ElIcon, ElTooltip } from 'element-plus'\nimport type { FormItemTooltip, TooltipObjectType } from '../../types'\n\ninterface TooltipReference { reference?: (() => VNode) }\n\nexport default defineComponent({\n name: 'FormItemLabel',\n props: {\n label: {\n type: [String, Function],\n default: '',\n },\n tooltip: {\n type: [String, Function, Object] as PropType<FormItemTooltip>,\n default: '',\n },\n colon: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n const ns = useNamespace('form-item')\n\n const renderReference = (tooltip: FormItemTooltip) => {\n if (isObject(tooltip) && isFunction((tooltip as TooltipReference).reference)) {\n return (tooltip as TooltipReference).reference?.()\n }\n if (isSlot((tooltip as TooltipReference).reference)) {\n return slots[(tooltip as { reference: string }).reference]?.()\n }\n return tooltip && (\n <ElIcon class={ns.be('label', 'icon')}>\n <QuestionFilled />\n </ElIcon>\n )\n }\n\n return () => {\n const { label, colon, tooltip } = props\n\n const tooltipProps = isObject(tooltip)\n ? { content: isString((tooltip as TooltipObjectType).content) ? (tooltip as TooltipObjectType).content : '' }\n : { content: isString(tooltip) ? tooltip : '' }\n const tooltipSlot: any = {}\n\n if (isObject(tooltip)) {\n const content = (tooltip as TooltipObjectType).content\n if (isFunction(content)) {\n tooltipSlot.content = () => content()\n }\n if (isSlot(content)) {\n tooltipSlot.content = () => slots[content as string]?.()\n }\n }\n\n if (isFunction(tooltip))\n tooltipSlot.content = () => tooltip()\n\n if (isSlot(tooltip))\n tooltipSlot.content = () => slots[tooltip as string]?.()\n\n return (\n <span>\n {label}\n <ElTooltip\n effect=\"dark\"\n placement=\"top\"\n {...tooltipProps as Omit<TooltipObjectType, 'content'>}\n v-slots={tooltipSlot}\n >\n {renderReference(tooltip)}\n </ElTooltip>\n {colon ? ':' : null}\n </span>\n )\n }\n },\n})\n"],"names":["FormItemLabel","defineComponent","name","props","label","type","default","tooltip","colon","slots","ns","useNamespace","_a","isSlot","_b","createVNode","ElIcon","tooltipProps","isObject","content","isFunction","tooltipSlot"],"mappings":";;;;;;AAOA,MAAAA,IAAA,gBAAAC,EAAA;AAAA,EACEC,MAAAA;AAAAA,EACAC,OAAAA;AAAAA,IACEC,OAAAA;AAAAA,MACEC,MAAAA,CAAAA,QAAAA,QAAAA;AAAAA,MACAC,SAAAA;AAAAA;IAEFC,SAAAA;AAAAA,MACEF,MAAAA,CAAAA,QAAAA,UAAAA,MAAAA;AAAAA,MACAC,SAAAA;AAAAA;IAEFE,OAAAA;AAAAA,MACEH,MAAAA;AAAAA,MACAC,SAAAA;AAAAA,IACF;AAAA;;IAEaG,OAAAA;AAAAA,EAAM,GAAA;AACnB,UAAAC,IAAAC,EAAA,WAAA;;uCAIIC,IAAAL,EAAA,cAAA,gBAAAK,EAAA,KAAAL,KAEFM,EAAAN,EAAA,SAAA,KACEO,IAAAL,EAAAF,EAAA,eAAA,gBAAAO,EAAA,KAAAL,KAEFF,KAAAQ,EAAAC,GAAA;AAAA,QAAc,OAAAN,EAAA,GAAA,SAAA,MAAA;AAAA,MACyB,GAAA;AAAA,QAAAJ,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,MAAAA,IAAAA,CAAAA;AAAAA;;AAMzC,WAAA,MAAA;;;;QACwBC,SAAAA;AAAAA,MAAQ,IAAAJ,GAE9Bc,IAAAC,EAAAX,CAAA,IAAA;AAAA;MAC8G,IAAA;AAAA,QACxGY,SAAAA,EAAAA,CAAAA,IAAAA,IAAAA;AAAAA;AAGN,UAAAD,EAAAX,CAAA,GAAA;AACE,cAAAY,IAAAZ,EAAA;AACA,QAAAa,EAAAD,CAAA,MACEE,EAAAA,UAAAA,MAAAA,EAAAA,IAEFR,EAAAM,CAAA;;;;MAGF;AAEA,aAAAC,EAAAb,CAAA,MAAAc,EAAA,UAAA,MAAAd,EAAA,IAGAM,EAAAN,CAAA,MAAAc,EAAA,UAAA,MAAA;;AAAA,gBAAAT,IAAAH,EAAAF,OAAA,gBAAAK,EAAA,KAAAH;AAAA;QAKU,QAAA;AAAA,QAAA,WAAA;AAAA,MAAA,GAAAQ,CAAA,GAAA;AAAA,QAIYX,SAAAA,MAAAA,CAAAA,EAAAA,CAAAA,CAAAA;AAAAA;MACI,CAAA,GAAAE,IAAA,MAAA,IAAA,CAAA;AAAA;EAQ9B;AACF,CAAA;"}