UNPKG

tdesign-vue-next

Version:
1 lines 13.8 kB
{"version":3,"file":"loading.mjs","sources":["../../../components/loading/loading.tsx"],"sourcesContent":["import { defineComponent, ref, computed, watch, onMounted, toRefs, CSSProperties, Teleport } from 'vue';\nimport GradientIcon from './icon/gradient';\nimport { addClass, removeClass } from '@tdesign/shared-utils';\nimport { getPropertyValFromObj } from '@tdesign/common-js/utils/general';\nimport { useContent, useTNodeJSX, useTeleport, usePrefixClass, useCommonClassName } from '@tdesign/shared-hooks';\n\nimport props from './props';\n\nconst useComponentClassName = () => {\n return {\n name: usePrefixClass('loading'),\n centerClass: usePrefixClass('loading--center'),\n fullscreenClass: usePrefixClass('loading__fullscreen'),\n lockClass: usePrefixClass('loading--lock'),\n overlayClass: usePrefixClass('loading__overlay'),\n relativeClass: usePrefixClass('loading__parent'),\n fullClass: usePrefixClass('loading--full'),\n inheritColorClass: usePrefixClass('loading--inherit-color'),\n };\n};\n\nexport default defineComponent({\n name: 'TLoading',\n inheritAttrs: false,\n props,\n setup(props, { slots, attrs }) {\n const delayShowLoading = ref(false);\n\n const { name, centerClass, fullscreenClass, lockClass, overlayClass, relativeClass, fullClass, inheritColorClass } =\n useComponentClassName();\n\n const classPrefix = usePrefixClass();\n const renderTNodeJSX = useTNodeJSX();\n const renderContent = useContent();\n const { SIZE } = useCommonClassName();\n\n const countDelay = () => {\n delayShowLoading.value = false;\n const timer = setTimeout(() => {\n delayShowLoading.value = true;\n clearTimeout(timer);\n }, props.delay);\n };\n // teleport容器\n const teleportElement = useTeleport(() => props.attach);\n // 延时计时是否完成。用于控制延时计时结束前不能显示加载态\n const delayCounted = computed(() => Boolean(!props.delay || (props.delay && delayShowLoading.value)));\n\n // loading style\n const styles = computed(() => {\n const styles: CSSProperties = {};\n if (props.zIndex !== undefined) {\n styles.zIndex = props.zIndex;\n }\n if (!['small', 'medium', 'large'].includes(props.size)) {\n styles['font-size'] = props.size;\n }\n return styles;\n });\n\n const hasContent = computed(() => Boolean(props.default || slots.default || props.content || slots.content));\n const lockFullscreen = computed(() => props.preventScrollThrough && props.fullscreen);\n const showText = computed(() => Boolean(props.text || slots.text));\n const showWrapLoading = computed(() => hasContent.value && props.loading && delayCounted.value);\n const showFullScreenLoading = computed(() => props.fullscreen && props.loading && delayCounted.value);\n const showAttachedLoading = computed(() => props.attach && props.loading && delayCounted.value);\n const classes = computed(() => {\n const baseClasses = [\n centerClass.value,\n getPropertyValFromObj(SIZE.value, props.size),\n { [inheritColorClass.value]: props.inheritColor },\n ];\n const fullScreenClasses = [name.value, fullscreenClass.value, centerClass.value, overlayClass.value];\n\n return {\n baseClasses,\n attachClasses: baseClasses.concat([name.value, fullClass.value, { [overlayClass.value]: props.showOverlay }]),\n withContentClasses: baseClasses.concat([\n name.value,\n fullClass.value,\n {\n [overlayClass.value]: props.showOverlay,\n },\n ]),\n fullScreenClasses,\n normalClasses: baseClasses.concat([name.value]),\n };\n });\n\n const { loading } = toRefs(props);\n\n watch([loading], ([isLoading]) => {\n if (isLoading) {\n countDelay();\n lockFullscreen.value && addClass(document.body, lockClass.value);\n } else {\n lockFullscreen.value && removeClass(document.body, lockClass.value);\n }\n });\n\n onMounted(() => {\n props.delay && countDelay();\n });\n\n return () => {\n const { fullScreenClasses, baseClasses, withContentClasses, attachClasses, normalClasses } = classes.value;\n\n const defaultIndicator = <GradientIcon size={props.size} />;\n const indicator = loading.value && renderTNodeJSX('indicator', defaultIndicator);\n const text = showText.value && <div class={`${classPrefix.value}-loading__text`}>{renderTNodeJSX('text')}</div>;\n\n // full screen loading\n if (props.fullscreen) {\n if (!showFullScreenLoading.value || !props.loading) return null;\n return (\n <Teleport disabled={!props.attach || !teleportElement.value} to={teleportElement.value}>\n <div class={fullScreenClasses} style={styles.value} {...attrs}>\n <div class={baseClasses}>\n {indicator}\n {text}\n </div>\n </div>\n </Teleport>\n );\n }\n\n // Loading is wrapping a HTMLElement.\n if (hasContent.value) {\n return (\n <div class={relativeClass.value} {...attrs}>\n {renderContent('default', 'content')}\n {showWrapLoading.value && (\n <div class={withContentClasses} style={styles.value}>\n {indicator}\n {text}\n </div>\n )}\n </div>\n );\n }\n\n // transfer parent node\n if (props.attach) {\n if (!showAttachedLoading.value || !loading.value) return null;\n return (\n <Teleport disabled={!props.attach || !teleportElement.value} to={teleportElement.value}>\n <div class={attachClasses} style={styles.value} {...attrs}>\n {indicator}\n {text}\n </div>\n </Teleport>\n );\n }\n\n // Normal Loading without overlay or content\n return loading.value ? (\n <div class={normalClasses} style={styles.value} {...attrs}>\n {indicator}\n {text}\n </div>\n ) : null;\n };\n },\n});\n"],"names":["useComponentClassName","name","usePrefixClass","centerClass","fullscreenClass","lockClass","overlayClass","relativeClass","fullClass","inheritColorClass","defineComponent","inheritAttrs","props","setup","slots","_ref","attrs","delayShowLoading","ref","_useComponentClassNam","classPrefix","renderTNodeJSX","useTNodeJSX","renderContent","useContent","_useCommonClassName","useCommonClassName","SIZE","countDelay","value","timer","setTimeout","clearTimeout","delay","teleportElement","useTeleport","attach","delayCounted","computed","Boolean","styles","zIndex","includes","size","hasContent","content","lockFullscreen","preventScrollThrough","fullscreen","showText","text","showWrapLoading","loading","showFullScreenLoading","showAttachedLoading","classes","baseClasses","getPropertyValFromObj","_defineProperty","inheritColor","fullScreenClasses","attachClasses","concat","showOverlay","withContentClasses","normalClasses","_toRefs","toRefs","watch","_ref5","_ref6","_slicedToArray","isLoading","addClass","document","body","removeClass","onMounted","_classes$value","defaultIndicator","_createVNode","GradientIcon","indicator","Teleport","_mergeProps"],"mappings":"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"}