UNPKG

tdesign-mobile-vue

Version:
1 lines 12.2 kB
{"version":3,"file":"loading.mjs","sources":["../../src/loading/loading.tsx"],"sourcesContent":["import { defineComponent, computed, ref, watch, h, setBlockTracking, Teleport, onMounted } from 'vue';\nimport TGradientIcon from './icon/gradient';\nimport SpinnerIcon from './icon/spinner';\n\nimport config from '../config';\nimport props from './props';\nimport { useContent, useTNodeJSX } from '../hooks/tnode';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { addClass, getAttach, removeClass } from '../shared/dom';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-loading`,\n props,\n setup(props) {\n const renderTNodeJSX = useTNodeJSX();\n const renderTNodeContent = useContent();\n const loadingClass = usePrefixClass('loading');\n\n const delayShowLoading = ref(false);\n const teleportElement = ref();\n\n const countDelay = () => {\n delayShowLoading.value = false;\n const timer = setTimeout(() => {\n delayShowLoading.value = true;\n clearTimeout(timer);\n }, props.delay);\n };\n\n const realLoading = computed(() => (!props.delay || delayShowLoading.value) && props.loading);\n\n watch(\n () => props.loading,\n (value) => {\n if (value) {\n props.delay && countDelay();\n }\n },\n {\n immediate: true,\n },\n );\n\n const rootClass = computed(() => [\n loadingClass.value,\n { [`${loadingClass.value}--vertical`]: props.layout === 'vertical' },\n { [`${loadingClass.value}--fullscreen`]: props.fullscreen },\n { [`${loadingClass.value}--full`]: !props.fullscreen && !!props.attach },\n ]);\n\n const textClass = computed(() => [\n `${loadingClass.value}__text`,\n {\n [`${loadingClass.value}__text--only`]: !props.indicator,\n },\n ]);\n\n const rootStyle = computed(() => {\n const style = [];\n if (props.inheritColor) {\n style.push('color: inherit');\n }\n if (props.size) {\n style.push(`font-size: ${props.size};`);\n }\n return style.join(';');\n });\n\n const defaultIndicator = {\n circular: TGradientIcon,\n spinner: SpinnerIcon,\n };\n\n onMounted(() => {\n if (props.attach) {\n const attach = getAttach(props.attach);\n if (!attach) {\n console.error('attach is not exist');\n } else {\n teleportElement.value = attach;\n }\n }\n if (props.fullscreen) {\n teleportElement.value = getAttach('body');\n }\n });\n\n const dotsLoading = computed(() => {\n setBlockTracking(-1);\n const node = (\n <div\n class={`${loadingClass.value}__dots`}\n style={{\n animationPlayState: props.pause ? 'paused' : '',\n animationDirection: props.reverse ? 'reverse' : '',\n animationDuration: `${props.duration}ms`,\n width: props.size,\n height: props.size,\n }}\n >\n {Array.from({ length: 3 }).map((val, i) => {\n return (\n <div\n class={`${loadingClass.value}__dot`}\n style={\n props.duration\n ? `animation-duration: ${props.duration / 1000}s; animation-delay: ${(props.duration * i) / 3000}s`\n : ''\n }\n ></div>\n );\n })}\n </div>\n );\n setBlockTracking(1);\n return node;\n });\n\n const defaultLoading = computed(() => {\n setBlockTracking(-1);\n const TIndicator = defaultIndicator[props.theme || 'circular'];\n const node = (\n <TIndicator\n style={{\n animationPlayState: props.pause ? 'paused' : '',\n animationDirection: props.reverse ? 'reverse' : '',\n animationDuration: `${props.duration}ms`,\n width: props.size,\n height: props.size,\n }}\n />\n );\n\n setBlockTracking(1);\n return node;\n });\n\n watch(\n () => props.loading,\n (isLoading) => {\n if (isLoading && props.fullscreen) {\n countDelay();\n addClass(document.body, `${loadingClass.value}--lock`);\n } else {\n removeClass(document.body, `${loadingClass.value}--lock`);\n }\n },\n );\n\n return () => {\n const indicator = renderTNodeJSX('indicator', {\n defaultNode: props.theme === 'dots' ? dotsLoading.value : defaultLoading.value,\n });\n const text = renderTNodeJSX('text');\n const TNodeContent = renderTNodeContent('default', 'content');\n\n if (props.fullscreen || props.attach) {\n if (!props.loading) return null;\n return (\n <Teleport disabled={!props.attach || !teleportElement.value} to={teleportElement.value}>\n <div class={rootClass.value} style={rootStyle.value}>\n {realLoading.value && indicator}\n {text && realLoading.value && <span class={textClass.value}>{text}</span>}\n {TNodeContent}\n </div>\n </Teleport>\n );\n }\n\n return (\n <div class={rootClass.value} style={rootStyle.value}>\n {realLoading.value && indicator}\n {text && realLoading.value && <span class={textClass.value}>{text}</span>}\n {TNodeContent}\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","setup","renderTNodeJSX","useTNodeJSX","renderTNodeContent","useContent","loadingClass","usePrefixClass","delayShowLoading","ref","teleportElement","countDelay","value","timer","setTimeout","clearTimeout","delay","realLoading","computed","loading","watch","immediate","rootClass","_defineProperty","concat","layout","fullscreen","attach","textClass","indicator","rootStyle","style","inheritColor","push","size","join","defaultIndicator","circular","TGradientIcon","spinner","SpinnerIcon","onMounted","getAttach","console","error","dotsLoading","setBlockTracking","node","animationPlayState","pause","animationDirection","reverse","animationDuration","duration","width","height","Array","from","length","map","val","i","_createVNode","defaultLoading","TIndicator","theme","isLoading","addClass","document","body","removeClass","defaultNode","text","TNodeContent","Teleport"],"mappings":"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"}