import { computed, PropType, defineComponent } from 'vue'; import { createNamespace, addUnit, getSizeStyle, extend } from '../utils'; const [name, bem] = createNamespace('loading'); const SpinIcon: JSX.Element[] = Array(12) .fill(null) .map((_, index) => ); const CircularIcon = ( ); export type LoadingType = 'circular' | 'spinner'; export default defineComponent({ name, props: { size: [Number, String], color: String, vertical: Boolean, textSize: [Number, String], textColor: String, type: { type: String as PropType, default: 'circular', }, }, setup(props, { slots }) { const spinnerStyle = computed(() => extend({ color: props.color }, getSizeStyle(props.size)) ); const renderText = () => { if (slots.default) { return ( {slots.default()} ); } }; return () => { const { type, vertical } = props; return (
{type === 'spinner' ? SpinIcon : CircularIcon} {renderText()}
); }; }, });