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.38 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../../../packages/element/descriptions/src/index.tsx"],"sourcesContent":["import type { Slot } from 'vue'\nimport { mergeProps } from 'vue'\nimport { reactiveOmit } from '@vueuse/core'\nimport { ElDescriptions, ElDescriptionsItem } from 'element-plus'\nimport { getContentByRenderAndSlot } from '@ideaz/shared'\nimport { get } from 'lodash-unified'\nimport { isArray, isFunction, isString } from '@ideaz/utils'\nimport { descriptionsProps } from './descriptions'\nimport type { DescriptionsColumn } from './descriptions'\n\nexport default defineComponent({\n name: 'ZDescriptions',\n props: descriptionsProps,\n setup(props, { slots }) {\n const size = useFormSize()\n const config = reactiveOmit(\n props,\n 'title',\n 'extra',\n 'columns',\n 'detail',\n 'align',\n 'labelAlign',\n )\n const ns = useNamespace('descriptions')\n\n function createDetail(item: DescriptionsColumn) {\n if (slots[`detail-${item.prop}`]) {\n return (slots[`detail-${item.prop}`] as Slot)({\n size: size.value,\n item: props.detail,\n })\n }\n else if (item.render) {\n return isFunction(item.render)\n ? item.render(props.detail)\n : String(item.render)\n }\n else {\n const val = get(props.detail, item.prop, '')\n return isArray(val) ? val.join(', ') : val\n }\n }\n\n function createDefault() {\n return props.columns?.map(item =>\n h(\n ElDescriptionsItem,\n {\n ...item,\n align: item.align ?? props.align,\n labelAlign: item.labelAlign ?? props.labelAlign,\n },\n {\n default: () => createDetail(item),\n label: () => getContentByRenderAndSlot(item.label, slots, item),\n },\n ),\n )\n }\n\n function createExtra() {\n if (isFunction(props.extra))\n return props.extra()\n if (isString(props.extra))\n return props.extra\n if (isFunction(slots.extra))\n return slots.extra()\n return null\n }\n\n return () =>\n h(ElDescriptions, mergeProps(config, { class: ns.b() }), {\n default: () => [createDefault(), slots.default && slots.default()],\n title: () => getContentByRenderAndSlot(props.title, slots),\n extra: () => createExtra(),\n })\n },\n})\n"],"names":["ZDescription","vue","name","props","slots","size","useFormSize","config","index","ns","useNamespace","item","val","get","is","align","labelAlign","default","class","extra"],"mappings":"m9BAUAA,EAAAC,EAAA,gBAAA,CACEC,KAAAA,gBACAC,MAAAA,EAAAA,2BACeC,MAAAA,CAAM,EAAA,CACnB,MAAAC,EAAAC,EAAA,YAAA,EACAC,EAAAC,EAAA,aAAAL,EAAA,QAAA,QAAA,UAAA,SAAA,QAAA,YAAA,EASAM,EAAAC,EAAA,aAAA,cAAA,iGAOI,CAAA,EACF,GAAAC,EAAA,yEAKA,CAEE,MAAAC,EAAAC,EAAAV,EAAA,OAAAQ,EAAA,KAAA,EAAA,EACA,OAAAG,EAAA,QAAAF,CAAA,EAAAA,EAAA,KAAA,IAAA,EAAAA,CACF,CACF,wFAOQ,GAAAD,EACAI,MAAAA,EAAAA,OAAAA,EAAAA,MACAC,WAAAA,EAAAA,YAAAA,EAAAA,UACF,EAAA,CAEEC,QAAAA,IAAAA,EAAAA,CAAAA,oDAEF,CAAA,EAGN,cAGE,OAAAH,EAAA,WAAAX,EAAA,KAAA,EAAAA,EAAA,MAAA,8BAIAW,EAAA,WAAAV,EAAA,KAAA,EAAAA,EAAA,MAAA,EAEA,IACF,gDAGyCc,MAAAA,EAAAA,EAAAA,CAAc,CAAA,EAAA,CACnDD,QAAAA,IAAAA,CAAAA,EAAAA,EAAAA,EAAAA,SAAAA,EAAAA,QAAAA,CAAAA,mDAEAE,MAAAA,IAAAA,EAAAA,CACF,CAAA,CACJ,CACF,CAAA"}