UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 6.53 kB
{"version":3,"file":"directive.mjs","sources":["../../../../../../packages/components/loading/src/directive.ts"],"sourcesContent":["// @ts-nocheck\nimport { isRef, ref } from 'vue'\nimport { hyphenate, isObject, isString } from '@element-plus/utils'\nimport Loading from './service'\n\nimport type { Directive, DirectiveBinding, UnwrapRef } from 'vue'\nimport type { LoadingOptions } from './types'\nimport type { LoadingInstance } from './loading'\n\nconst INSTANCE_KEY = Symbol('ElLoading')\nconst getAttributeName = (name: string) => {\n return `element-loading-${hyphenate(name)}`\n}\n\nexport type LoadingBinding = boolean | UnwrapRef<LoadingOptions>\nexport interface ElementLoading extends HTMLElement {\n [INSTANCE_KEY]?: {\n instance: LoadingInstance\n options: LoadingOptions\n }\n}\n\nconst createInstance = (\n el: ElementLoading,\n binding: DirectiveBinding<LoadingBinding>\n) => {\n const vm = binding.instance\n\n const getBindingProp = <K extends keyof LoadingOptions>(\n key: K\n ): LoadingOptions[K] =>\n isObject(binding.value) ? binding.value[key] : undefined\n\n const resolveExpression = (key: any) => {\n const data = (isString(key) && vm?.[key]) || key\n return ref(data)\n }\n\n const getProp = <K extends keyof LoadingOptions>(name: K) =>\n resolveExpression(\n getBindingProp(name) || el.getAttribute(getAttributeName(name))\n )\n\n const fullscreen =\n getBindingProp('fullscreen') ?? binding.modifiers.fullscreen\n\n const options: LoadingOptions = {\n text: getProp('text'),\n svg: getProp('svg'),\n svgViewBox: getProp('svgViewBox'),\n spinner: getProp('spinner'),\n background: getProp('background'),\n customClass: getProp('customClass'),\n fullscreen,\n target: getBindingProp('target') ?? (fullscreen ? undefined : el),\n body: getBindingProp('body') ?? binding.modifiers.body,\n lock: getBindingProp('lock') ?? binding.modifiers.lock,\n }\n const instance = Loading(options)\n instance._context = vLoading._context\n el[INSTANCE_KEY] = {\n options,\n instance,\n }\n}\n\nconst updateOptions = (\n originalOptions: LoadingOptions,\n newOptions: UnwrapRef<LoadingOptions>\n) => {\n for (const key of Object.keys(originalOptions)) {\n if (isRef(originalOptions[key]))\n originalOptions[key].value = newOptions[key]\n }\n}\n\nconst vLoading: Directive<ElementLoading, LoadingBinding> = {\n mounted(el, binding) {\n if (binding.value) {\n createInstance(el, binding)\n }\n },\n updated(el, binding) {\n const instance = el[INSTANCE_KEY]\n if (!binding.value) {\n instance?.instance.close()\n el[INSTANCE_KEY] = null\n return\n }\n\n if (!instance) createInstance(el, binding)\n else {\n updateOptions(\n instance.options,\n isObject(binding.value)\n ? binding.value\n : {\n text: el.getAttribute(getAttributeName('text')),\n svg: el.getAttribute(getAttributeName('svg')),\n svgViewBox: el.getAttribute(getAttributeName('svgViewBox')),\n spinner: el.getAttribute(getAttributeName('spinner')),\n background: el.getAttribute(getAttributeName('background')),\n customClass: el.getAttribute(getAttributeName('customClass')),\n }\n )\n }\n },\n unmounted(el) {\n el[INSTANCE_KEY]?.instance.close()\n el[INSTANCE_KEY] = null\n },\n}\n\nvLoading._context = null\nexport default vLoading\n"],"names":[],"mappings":"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"}