UNPKG

wot-design-uni

Version:

一个基于Vue3+TS开发的uni-app组件库,提供70+高质量组件,支持暗黑模式、国际化和自定义主题。

70 lines (67 loc) 2.31 kB
import type { PropType, ExtractPropTypes, CSSProperties } from 'vue' import { makeArrayProp, makeBooleanProp, makeStringProp } from '../common/props' export type SkeletonTheme = 'text' | 'avatar' | 'paragraph' | 'image' export type SkeletonAnimation = 'gradient' | 'flashed' export type SkeletonRowColObj = { [key: string]: any type?: 'rect' | 'circle' | 'text' size?: string | number width?: string | number height?: string | number margin?: string | number background?: string marginLeft?: string | number marginRight?: string | number borderRadius?: string | number backgroundColor?: string } export type SkeletonRowCol = number | SkeletonRowColObj | Array<SkeletonRowColObj> export type SkeletonThemeVars = { notifyPadding?: string notifyFontSize?: string notifyTextColor?: string notifyLineHeight?: number | string notifyDangerBackground?: string notifyPrimaryBackground?: string notifySuccessBackground?: string notifyWarningBackground?: string } export const skeletonProps = { /** * 骨架图风格,有基础、头像组合等两大类 */ theme: makeStringProp<SkeletonTheme>('text'), /** * 用于设置行列数量、宽度高度、间距等。 * @example * 【示例一】,`[1, 1, 2]` 表示输出三行骨架图,第一行一列,第二行一列,第三行两列。 * 【示例二】,`[1, 1, { width: '100px' }]` 表示自定义第三行的宽度为 `100px`。 * 【示例三】,`[1, 2, [{ width, height }, { width, height, marginLeft }]]` 表示第三行有两列,且自定义宽度、高度和间距 */ rowCol: makeArrayProp<SkeletonRowCol>(), /** * 是否为加载状态,如果是则显示骨架图,如果不是则显示加载完成的内容 * @default true */ loading: makeBooleanProp(true), /** * 动画效果,有「渐变加载动画」和「闪烁加载动画」两种。值为空则表示没有动画 */ animation: { type: String as PropType<SkeletonAnimation>, default: '' }, // 自定义类名 customClass: { type: [String, Array, Object], default: '' }, // 自定义样式 customStyle: { type: Object as PropType<CSSProperties>, default() { return {} } } } export type SkeletonProps = ExtractPropTypes<typeof skeletonProps>