@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 2.96 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../directives/loading/index.ts"],"sourcesContent":["import { Spin } from '@/components/spin'\n\nimport { createVNode, nextTick, render } from 'vue'\n\nimport { isObject } from '@vexip-ui/utils'\n\nimport type { SpinProps } from '@/components/spin'\nimport type { DirectiveBinding, ObjectDirective, VNode } from 'vue'\n\ninterface LoadingRecord {\n spin: VNode,\n props: SpinProps,\n originPosition: string\n}\n\nfunction createSpin(\n el: HTMLElement & { __loading?: LoadingRecord },\n binding: DirectiveBinding<boolean | SpinProps>\n) {\n const props: SpinProps = isObject(binding.value)\n ? { ...binding.value }\n : { active: binding.value }\n\n props.inner = true\n\n const spin = createVNode(Spin, props, null, 0, Object.keys(props))\n const position = getComputedStyle(el).position\n\n el.__loading = {\n spin,\n props,\n originPosition: position\n }\n\n if (position === 'static') {\n el.style.position = 'relative'\n }\n\n render(spin, el)\n}\n\nexport const vLoading: ObjectDirective<\n HTMLElement & { __loading?: LoadingRecord },\n boolean | SpinProps\n> = {\n mounted(el, binding) {\n nextTick(() => createSpin(el, binding))\n },\n updated(el, binding) {\n nextTick(() => {\n if (!el.__loading) {\n createSpin(el, binding)\n return\n }\n\n const props: SpinProps = isObject(binding.value) ? binding.value : { active: binding.value }\n const component = el.__loading.spin.component\n\n if (component) {\n Object.keys(props).forEach(key => {\n component.props[key] = props[key as keyof SpinProps]\n })\n\n component.props.inner = true\n }\n })\n },\n beforeUnmount(el) {\n if (!el.__loading) return\n\n render(null, el)\n delete el.__loading\n }\n}\n"],"names":["createSpin","el","binding","props","isObject","spin","createVNode","Spin","position","render","vLoading","nextTick","component","key"],"mappings":";;;;AAeA,SAASA,EACPC,GACAC,GACA;AACA,QAAMC,IAAmBC,EAASF,EAAQ,KAAK,IAC3C,EAAE,GAAGA,EAAQ,MAAM,IACnB,EAAE,QAAQA,EAAQ,MAAM;AAE5B,EAAAC,EAAM,QAAQ;AAER,QAAAE,IAAOC,EAAYC,GAAMJ,GAAO,MAAM,GAAG,OAAO,KAAKA,CAAK,CAAC,GAC3DK,IAAW,iBAAiBP,CAAE,EAAE;AAEtC,EAAAA,EAAG,YAAY;AAAA,IACb,MAAAI;AAAA,IACA,OAAAF;AAAA,IACA,gBAAgBK;AAAA,EAClB,GAEIA,MAAa,aACfP,EAAG,MAAM,WAAW,aAGtBQ,EAAOJ,GAAMJ,CAAE;AACjB;AAEO,MAAMS,IAGT;AAAA,EACF,QAAQT,GAAIC,GAAS;AACnB,IAAAS,EAAS,MAAMX,EAAWC,GAAIC,CAAO,CAAC;AAAA,EACxC;AAAA,EACA,QAAQD,GAAIC,GAAS;AACnB,IAAAS,EAAS,MAAM;AACT,UAAA,CAACV,EAAG,WAAW;AACjB,QAAAD,EAAWC,GAAIC,CAAO;AACtB;AAAA,MAAA;AAGI,YAAAC,IAAmBC,EAASF,EAAQ,KAAK,IAAIA,EAAQ,QAAQ,EAAE,QAAQA,EAAQ,MAAM,GACrFU,IAAYX,EAAG,UAAU,KAAK;AAEpC,MAAIW,MACF,OAAO,KAAKT,CAAK,EAAE,QAAQ,CAAOU,MAAA;AAChC,QAAAD,EAAU,MAAMC,CAAG,IAAIV,EAAMU,CAAsB;AAAA,MAAA,CACpD,GAEDD,EAAU,MAAM,QAAQ;AAAA,IAC1B,CACD;AAAA,EACH;AAAA,EACA,cAAcX,GAAI;AACZ,IAACA,EAAG,cAERQ,EAAO,MAAMR,CAAE,GACf,OAAOA,EAAG;AAAA,EAAA;AAEd;"}