UNPKG

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 1.62 kB
{"version":3,"file":"useFormComponentSlots.mjs","sources":["../../../packages/hooks/useFormComponentSlots.tsx"],"sourcesContent":["import { isFunction, isString } from '@ideaz/utils'\nimport type { Ref, Slot, VNode } from 'vue'\nimport type { Slots } from '../element/types'\n\nexport function useFormComponentSlots(props: Record<any, any>, slots: Slots, slotKeys: string[]) {\n const scopedSlots: Ref<Slots> = shallowRef({})\n\n const getSlotContent = (\n slot: string | (() => VNode) | undefined | Slot,\n defaultContent: Slot | (() => VNode) | undefined = () => <span />,\n ) => {\n if (isFunction(slot))\n return slot\n\n else if (isString(slot))\n return () => <span>{slot}</span>\n\n return defaultContent\n }\n\n watchEffect(() => {\n scopedSlots.value = {}\n slotKeys.forEach((key) => {\n if (slots[key] || props[key])\n scopedSlots.value[key] = getSlotContent((slots[key]), getSlotContent(props[key]))\n })\n })\n\n return { scopedSlots }\n}\n"],"names":["useFormComponentSlots","props","slots","slotKeys","scopedSlots","shallowRef","isFunction","slot","isString","createVNode","defaultContent","watchEffect","key","getSlotContent"],"mappings":";;;AAIO,SAAAA,EAAAC,GAAAC,GAAAC,GAAA;AACL,QAAAC,IAAAC,EAAA,CAAA,CAAA,+CAMEC,EAAAC,CAAA,IAAAA,IAAAC,EAAAD,CAAA,IAAA,MAAAE,EAAA,QAAA,MAAA,CAAAF,CAAA,CAAA,IAMAG;AAGFC,SAAAA,EAAAA,MAAAA;AACEP,IAAAA,EAAAA,QAAAA,CAAAA,GACAD,EAAAA,QAAAA,CAAAA,MAAAA;AACE,OAAAD,EAAAU,CAAA,KAAAX,EAAAW,CAAA,OAAAR,EAAA,MAAAQ,CAAA,IAAAC,EAAAX,EAAAU,CAAA,GAAAC,EAAAZ,EAAAW,CAAA,CAAA,CAAA;AAAA,IAEF,CAAA;AAAA,EACF,CAAA;IAESR,aAAAA;AAAAA;AACX;"}