UNPKG

tdesign-mobile-vue

Version:
1 lines 9.05 kB
{"version":3,"file":"skeleton.mjs","sources":["../../src/skeleton/skeleton.tsx"],"sourcesContent":["import { h, defineComponent, watch, ref } from 'vue';\nimport { isArray, isFunction, isNumber } from 'lodash-es';\nimport { useContent } from '../hooks/tnode';\nimport { usePrefixClass } from '../hooks/useClass';\nimport config from '../config';\nimport SkeletonProps from './props';\nimport { SkeletonRowCol, SkeletonRowColObj, TdSkeletonProps } from './type';\nimport { ClassName, Styles } from '../common';\n\nconst { prefix } = config;\n\nconst ThemeMap: Record<TdSkeletonProps['theme'], SkeletonRowCol> = {\n avatar: [{ type: 'circle', size: '48px' }],\n image: [{ type: 'rect', size: '72px' }],\n text: [\n [\n { width: '24%', height: '16px', marginRight: '16px' },\n { width: '76%', height: '16px' },\n ],\n 1,\n ],\n paragraph: [1, 1, 1, { width: '55%' }],\n};\n\nconst getColItemStyle = (obj: SkeletonRowColObj): Styles => {\n const styleName = [\n 'width',\n 'height',\n 'marginRight',\n 'marginLeft',\n 'margin',\n 'size',\n 'background',\n 'backgroundColor',\n 'borderRadius',\n ];\n const style: Styles = {};\n styleName.forEach((name) => {\n if (name in obj) {\n const px = isNumber(obj[name]) ? `${obj[name]}px` : obj[name];\n if (name === 'size') {\n [style.width, style.height] = [px, px];\n } else {\n style[name] = px;\n }\n }\n });\n return style;\n};\n\nexport default defineComponent({\n name: `${prefix}-skeleton`,\n props: SkeletonProps,\n setup(props, { slots }) {\n const isShow = ref(false);\n const renderContent = useContent();\n\n const skeletonClass = usePrefixClass('skeleton');\n\n const getColItemClass = (obj: SkeletonRowColObj): ClassName => [\n `${skeletonClass.value}__col`,\n `${skeletonClass.value}--type-${obj.type || 'text'}`,\n { [`${skeletonClass.value}--animation-${props.animation}`]: props.animation },\n ];\n\n const renderCols = (_cols: Number | SkeletonRowColObj | Array<SkeletonRowColObj>) => {\n let cols: Array<SkeletonRowColObj> = [];\n if (isArray(_cols)) {\n cols = _cols;\n } else if (isNumber(_cols)) {\n cols = new Array(_cols).fill({ type: 'text' });\n } else {\n cols = [_cols as SkeletonRowColObj];\n }\n\n return cols.map((obj) => (\n <div class={getColItemClass(obj)} style={getColItemStyle(obj)}>\n {isFunction(obj.content) ? obj.content(h) : obj.content}\n </div>\n ));\n };\n\n const renderRowCol = (_rowCol?: SkeletonRowCol) => {\n const rowCol: SkeletonRowCol = _rowCol || props.rowCol;\n\n return rowCol.map((item) => <div class={`${skeletonClass.value}__row`}>{renderCols(item)}</div>);\n };\n\n watch(\n () => props.loading,\n (val) => {\n if (!val || props.delay === 0) {\n isShow.value = val;\n return;\n }\n setTimeout(() => {\n isShow.value = val;\n }, props.delay);\n },\n { immediate: true },\n );\n\n return () => {\n const content = renderContent('default', 'content');\n if (slots.default) {\n return <div>{content}</div>;\n }\n\n if (!isShow.value) {\n return;\n }\n\n const children = [];\n\n // 保持优先级: rowCol > theme,增加默认值兜底\n if (props.rowCol) {\n children.push(renderRowCol(props.rowCol));\n } else if (props.theme) {\n children.push(renderRowCol(ThemeMap[props.theme]));\n } else if (!props.theme && !props.rowCol) {\n // 什么都不传时,传入默认 rowCol\n children.push(\n renderRowCol([\n [\n { width: '24%', height: '16px', marginRight: '16px' },\n { width: '76%', height: '16px' },\n ],\n 1,\n ]),\n );\n }\n\n return <div class={skeletonClass.value}>{children}</div>;\n };\n },\n});\n"],"names":["prefix","config","ThemeMap","avatar","type","size","image","text","width","height","marginRight","paragraph","getColItemStyle","obj","styleName","style","forEach","name","px","isNumber","_ref","defineComponent","props","SkeletonProps","setup","_ref2","slots","isShow","ref","renderContent","useContent","skeletonClass","usePrefixClass","getColItemClass","concat","value","_defineProperty","animation","renderCols","_cols","cols","isArray","Array","fill","map","_createVNode","isFunction","content","h","renderRowCol","_rowCol","rowCol","item","watch","loading","val","delay","setTimeout","immediate","default","children","push","theme"],"mappings":"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"}