UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 9.92 kB
{"version":3,"file":"spin.vue2.cjs","sources":["../../../components/spin/spin.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Icon } from '@/components/icon'\nimport { Renderer } from '@/components/renderer'\n\nimport { computed, ref, watch } from 'vue'\n\nimport { createIconProp, emitEvent, useIcons, useNameHelper, useProps } from '@vexip-ui/config'\nimport { toNumber } from '@vexip-ui/utils'\nimport { spinProps } from './props'\n\nimport type { SpinSlots } from './symbol'\n\ndefineOptions({ name: 'Spin' })\n\nconst nh = useNameHelper('spin')\nconst _props = defineProps(spinProps)\nconst props = useProps('spin', _props, {\n active: {\n default: false,\n static: true,\n },\n icon: createIconProp(),\n inner: false,\n delay: false,\n tip: '',\n hideMask: false,\n maskColor: '',\n maskClass: null,\n transitionName: () => nh.ns('fade'),\n iconEffect: null,\n slots: () => ({}),\n})\n\nconst slots = defineSlots<SpinSlots>()\n\nconst icons = useIcons()\n\nconst currentActive = ref(props.active)\n\nconst hasTip = computed(() => !!(props.tip || slots.tip))\nconst maskStyle = computed(() => {\n const style = {} as any\n\n if (props.maskColor) {\n style[nh.cv('mask-bg-color')] = props.maskColor\n }\n\n return style\n})\nconst delayTime = computed(() => {\n if (props.delay) {\n if (props.delay === true) {\n return { enter: 500, leave: 500 }\n }\n\n if (typeof props.delay === 'number') {\n return { enter: props.delay, leave: props.delay }\n }\n\n if (Array.isArray(props.delay)) {\n return { enter: toNumber(props.delay[0]), leave: toNumber(props.delay[1]) }\n }\n }\n\n return { enter: 0, leave: 0 }\n})\n\nlet timer: ReturnType<typeof setTimeout>\n\nwatch(\n () => props.active,\n value => {\n clearTimeout(timer)\n\n const delay = value ? delayTime.value.enter : delayTime.value.leave\n\n if (delay) {\n timer = setTimeout(() => {\n currentActive.value = value\n }, delay)\n } else {\n currentActive.value = value\n }\n },\n)\n\ndefineExpose({\n currentActive,\n hasTip,\n handleShow,\n handleHide,\n})\n\nfunction handleMaskClick(event: MouseEvent) {\n emitEvent(props.onMaskClick, event)\n}\n\nfunction handleShow() {\n emitEvent(props.onShow)\n}\n\nfunction handleHide() {\n emitEvent(props.onHide)\n}\n</script>\n\n<template>\n <div\n v-if=\"!props.inner\"\n :class=\"[nh.b(), nh.bs('vars'), props.inherit && nh.bm('inherit')]\"\n :aria-busy=\"currentActive ? 'true' : undefined\"\n >\n <slot>\n <Renderer :renderer=\"props.slots.default\"></Renderer>\n </slot>\n <Transition\n appear\n :name=\"props.transitionName\"\n @after-enter=\"handleShow\"\n @after-leave=\"handleHide\"\n >\n <div v-if=\"currentActive\" :class=\"nh.be('loading')\">\n <div\n v-if=\"!props.hideMask\"\n :class=\"[nh.be('mask'), props.maskClass]\"\n :style=\"maskStyle\"\n @click=\"handleMaskClick\"\n ></div>\n <slot name=\"content\">\n <Renderer :renderer=\"props.slots.content\">\n <div :class=\"nh.be('icon')\">\n <slot name=\"icon\">\n <Renderer :renderer=\"props.slots.icon\">\n <Icon\n v-bind=\"icons.loading\"\n :icon=\"props.icon || icons.loading.icon\"\n :effect=\"props.iconEffect || icons.loading.effect\"\n label=\"loading\"\n ></Icon>\n </Renderer>\n </slot>\n </div>\n <div v-if=\"hasTip\" :class=\"nh.be('tip')\">\n <slot name=\"tip\">\n <Renderer :renderer=\"props.slots.tip\">\n {{ props.tip }}\n </Renderer>\n </slot>\n </div>\n </Renderer>\n </slot>\n </div>\n </Transition>\n </div>\n <Transition\n v-else\n appear\n :name=\"props.transitionName\"\n @after-enter=\"handleShow\"\n @after-leave=\"handleHide\"\n >\n <div v-if=\"currentActive\" :class=\"[nh.b(), nh.bs('vars'), nh.bm('inner')]\">\n <div\n v-if=\"!props.hideMask\"\n :class=\"[nh.be('mask'), props.maskClass]\"\n :style=\"maskStyle\"\n @click=\"handleMaskClick\"\n ></div>\n <slot name=\"content\">\n <Renderer :renderer=\"props.slots.content\">\n <div :class=\"nh.be('icon')\">\n <slot name=\"icon\">\n <Renderer :renderer=\"props.slots.icon\">\n <Icon\n v-bind=\"icons.loading\"\n :icon=\"props.icon || icons.loading.icon\"\n :effect=\"props.iconEffect || icons.loading.effect\"\n label=\"loading\"\n ></Icon>\n </Renderer>\n </slot>\n </div>\n <div v-if=\"hasTip\" :class=\"nh.be('tip')\">\n <slot name=\"tip\">\n <Renderer :renderer=\"props.slots.tip\">\n {{ props.tip }}\n </Renderer>\n </slot>\n </div>\n </Renderer>\n </slot>\n </div>\n </Transition>\n</template>\n"],"names":["nh","useNameHelper","_props","__props","props","useProps","createIconProp","slots","_useSlots","icons","useIcons","currentActive","ref","hasTip","computed","maskStyle","style","delayTime","toNumber","timer","watch","value","delay","__expose","handleShow","handleHide","handleMaskClick","event","emitEvent","_unref","_createBlock","_Transition","_createElementBlock","_normalizeClass","_renderSlot","_ctx","_createVNode","Renderer","_createElementVNode","Icon","_mergeProps","_createTextVNode","_toDisplayString"],"mappings":"qWAcM,MAAAA,EAAKC,gBAAc,MAAM,EACzBC,EAASC,EACTC,EAAQC,EAAAA,SAAS,OAAQH,EAAQ,CACrC,OAAQ,CACN,QAAS,GACT,OAAQ,EACV,EACA,KAAMI,EAAAA,eAAe,EACrB,MAAO,GACP,MAAO,GACP,IAAK,GACL,SAAU,GACV,UAAW,GACX,UAAW,KACX,eAAgB,IAAMN,EAAG,GAAG,MAAM,EAClC,WAAY,KACZ,MAAO,KAAO,CAAC,EAAA,CAChB,EAEKO,EAAQC,EAAAA,SAAA,EAERC,EAAQC,EAAAA,SAAS,EAEjBC,EAAgBC,EAAAA,IAAIR,EAAM,MAAM,EAEhCS,EAASC,WAAS,IAAM,CAAC,EAAEV,EAAM,KAAOG,EAAM,IAAI,EAClDQ,EAAYD,EAAAA,SAAS,IAAM,CAC/B,MAAME,EAAQ,CAAC,EAEf,OAAIZ,EAAM,YACRY,EAAMhB,EAAG,GAAG,eAAe,CAAC,EAAII,EAAM,WAGjCY,CAAA,CACR,EACKC,EAAYH,EAAAA,SAAS,IAAM,CAC/B,GAAIV,EAAM,MAAO,CACX,GAAAA,EAAM,QAAU,GAClB,MAAO,CAAE,MAAO,IAAK,MAAO,GAAI,EAG9B,GAAA,OAAOA,EAAM,OAAU,SACzB,MAAO,CAAE,MAAOA,EAAM,MAAO,MAAOA,EAAM,KAAM,EAGlD,GAAI,MAAM,QAAQA,EAAM,KAAK,EAC3B,MAAO,CAAE,MAAOc,EAAAA,SAASd,EAAM,MAAM,CAAC,CAAC,EAAG,MAAOc,EAAAA,SAASd,EAAM,MAAM,CAAC,CAAC,CAAE,CAC5E,CAGF,MAAO,CAAE,MAAO,EAAG,MAAO,CAAE,CAAA,CAC7B,EAEG,IAAAe,EAEJC,EAAA,MACE,IAAMhB,EAAM,OACHiB,GAAA,CACP,aAAaF,CAAK,EAElB,MAAMG,EAAQD,EAAQJ,EAAU,MAAM,MAAQA,EAAU,MAAM,MAE1DK,EACFH,EAAQ,WAAW,IAAM,CACvBR,EAAc,MAAQU,GACrBC,CAAK,EAERX,EAAc,MAAQU,CACxB,CAEJ,EAEaE,EAAA,CACX,cAAAZ,EACA,OAAAE,EACA,WAAAW,EACA,WAAAC,CAAA,CACD,EAED,SAASC,EAAgBC,EAAmB,CAChCC,YAAAxB,EAAM,YAAauB,CAAK,CAAA,CAGpC,SAASH,GAAa,CACpBI,EAAA,UAAUxB,EAAM,MAAM,CAAA,CAGxB,SAASqB,GAAa,CACpBG,EAAA,UAAUxB,EAAM,MAAM,CAAA,cAMbyB,QAAAzB,CAAA,EAAM,qBA8Cf0B,EAAAA,YAsCaC,EAAAA,WAAA,OApCX,OAAA,GACC,KAAMF,EAAAA,MAAKzB,CAAA,EAAC,eACZ,aAAaoB,EACb,aAAaC,CAAA,qBAEd,IA8BM,CA9BKd,EAAa,qBAAxBqB,EAAAA,mBA8BM,MAAA,OA9BqB,MAAKC,iBAAA,CAAGJ,EAAA,MAAE7B,CAAA,EAAC,IAAK6B,QAAE7B,CAAA,EAAC,GAAE,MAAA,EAAU6B,EAAE,MAAA7B,CAAA,EAAC,GAAE,OAAA,CAAA,CAAA,CAAA,GAEpD6B,EAAAA,MAAAzB,CAAA,EAAM,oDADf4B,qBAKO,MAAA,OAHJ,wBAAQH,EAAA,MAAE7B,CAAA,EAAC,GAAY,MAAA,EAAA6B,EAAA,MAAAzB,CAAA,EAAM,SAAS,CAAA,EACtC,uBAAOW,EAAS,KAAA,EAChB,QAAOW,YAEVQ,EAAAA,WAsBOC,sBAtBP,IAsBO,CArBLC,cAoBWP,EAAAA,MAAAQ,CAAA,EAAA,CApBA,SAAUR,EAAA,MAAAzB,CAAA,EAAM,MAAM,OAAA,qBAC/B,IAWM,CAXNkC,EAAAA,mBAWM,MAAA,CAXA,MAAKL,EAAE,eAAAJ,EAAA,MAAE7B,CAAA,EAAC,GAAE,MAAA,CAAA,CAAA,GAChBkC,EAAAA,WASOC,mBATP,IASO,CARLC,cAOWP,EAAAA,MAAAQ,CAAA,EAAA,CAPA,SAAUR,EAAA,MAAAzB,CAAA,EAAM,MAAM,IAAA,qBAC/B,IAKQ,CALRgC,EAAA,YAKQP,QALRU,CAAA,EAAAC,aACUX,QAIFpB,CAAA,EAJQ,QAAO,CACpB,KAAMoB,EAAAA,SAAM,MAAQA,EAAAA,MAAKpB,CAAA,EAAC,QAAQ,KAClC,OAAQoB,EAAAA,SAAM,YAAcA,EAAAA,MAAKpB,CAAA,EAAC,QAAQ,OAC3C,MAAM,oEAKHI,EAAM,qBAAjBmB,EAAAA,mBAMM,MAAA,OANc,MAAKC,EAAE,eAAAJ,EAAA,MAAE7B,CAAA,EAAC,GAAE,KAAA,CAAA,CAAA,GAC9BkC,EAAAA,WAIOC,kBAJP,IAIO,CAHLC,cAEWP,EAAAA,MAAAQ,CAAA,EAAA,CAFA,SAAUR,EAAA,MAAAzB,CAAA,EAAM,MAAM,GAAA,qBAC/B,IAAe,CAAZqC,kBAAAC,EAAA,gBAAAb,EAAA,MAAAzB,CAAA,EAAM,GAAG,EAAA,CAAA,CAAA,wJA9E1B4B,qBA8CM,MAAA,OA5CH,MAAQC,EAAAA,eAAA,CAAAJ,EAAAA,MAAA7B,CAAA,EAAG,IAAK6B,EAAAA,MAAE7B,CAAA,EAAC,GAAE,MAAA,EAAU6B,EAAA,SAAM,SAAWA,EAAAA,MAAA7B,CAAA,EAAG,GAAE,SAAA,CAAA,CAAA,EACrD,YAAWW,EAAa,MAAA,OAAY,MAAA,GAErCuB,EAAAA,WAEOC,sBAFP,IAEO,CADLC,cAAqDP,EAAAA,MAAAQ,CAAA,EAAA,CAA1C,SAAUR,EAAA,MAAAzB,CAAA,EAAM,MAAM,OAAA,yBAEnCgC,EAAAA,YAqCaL,EAAAA,WAAA,CApCX,OAAA,GACC,KAAMF,EAAAA,MAAKzB,CAAA,EAAC,eACZ,aAAaoB,EACb,aAAaC,CAAA,qBAEd,IA8BM,CA9BKd,EAAa,qBAAxBqB,EAAAA,mBA8BM,MAAA,OA9BqB,MAAKC,EAAE,eAAAJ,EAAA,MAAE7B,CAAA,EAAC,GAAE,SAAA,CAAA,CAAA,GAE5B6B,EAAAA,MAAAzB,CAAA,EAAM,oDADf4B,qBAKO,MAAA,OAHJ,wBAAQH,EAAA,MAAE7B,CAAA,EAAC,GAAY,MAAA,EAAA6B,EAAA,MAAAzB,CAAA,EAAM,SAAS,CAAA,EACtC,uBAAOW,EAAS,KAAA,EAChB,QAAOW,YAEVQ,EAAAA,WAsBOC,sBAtBP,IAsBO,CArBLC,cAoBWP,EAAAA,MAAAQ,CAAA,EAAA,CApBA,SAAUR,EAAA,MAAAzB,CAAA,EAAM,MAAM,OAAA,qBAC/B,IAWM,CAXNkC,EAAAA,mBAWM,MAAA,CAXA,MAAKL,EAAE,eAAAJ,EAAA,MAAE7B,CAAA,EAAC,GAAE,MAAA,CAAA,CAAA,GAChBkC,EAAAA,WASOC,mBATP,IASO,CARLC,cAOWP,EAAAA,MAAAQ,CAAA,EAAA,CAPA,SAAUR,EAAA,MAAAzB,CAAA,EAAM,MAAM,IAAA,qBAC/B,IAKQ,CALRgC,EAAA,YAKQP,QALRU,CAAA,EAAAC,aACUX,QAIFpB,CAAA,EAJQ,QAAO,CACpB,KAAMoB,EAAAA,SAAM,MAAQA,EAAAA,MAAKpB,CAAA,EAAC,QAAQ,KAClC,OAAQoB,EAAAA,SAAM,YAAcA,EAAAA,MAAKpB,CAAA,EAAC,QAAQ,OAC3C,MAAM,oEAKHI,EAAM,qBAAjBmB,EAAAA,mBAMM,MAAA,OANc,MAAKC,EAAE,eAAAJ,EAAA,MAAE7B,CAAA,EAAC,GAAE,KAAA,CAAA,CAAA,GAC9BkC,EAAAA,WAIOC,kBAJP,IAIO,CAHLC,cAEWP,EAAAA,MAAAQ,CAAA,EAAA,CAFA,SAAUR,EAAA,MAAAzB,CAAA,EAAM,MAAM,GAAA,qBAC/B,IAAe,CAAZqC,kBAAAC,EAAA,gBAAAb,EAAA,MAAAzB,CAAA,EAAM,GAAG,EAAA,CAAA,CAAA"}