|
11 | 11 | </component>
|
12 | 12 | </template>
|
13 | 13 |
|
14 |
| -<script lang="ts"> |
15 |
| -import {computed, defineComponent, PropType} from 'vue' |
16 |
| -import {ColorVariant, SpinnerType} from '../types' |
| 14 | +<script setup lang="ts"> |
| 15 | +// import type {BSpinnerProps} from '@/types/components' |
| 16 | +import {computed} from 'vue' |
| 17 | +import type {ColorVariant, SpinnerType} from '@/types' |
17 | 18 |
|
18 |
| -export default defineComponent({ |
19 |
| - name: 'BSpinner', |
20 |
| - props: { |
21 |
| - label: {type: String}, |
22 |
| - role: {type: String, default: 'status'}, |
23 |
| - small: {type: Boolean, default: false}, |
24 |
| - tag: {type: String, default: 'span'}, |
25 |
| - type: {type: String as PropType<SpinnerType>, default: 'border'}, |
26 |
| - variant: {type: String as PropType<ColorVariant>}, |
27 |
| - }, |
28 |
| - setup(props) { |
29 |
| - const classes = computed(() => ({ |
30 |
| - 'spinner-border': props.type === 'border', |
31 |
| - 'spinner-border-sm': props.type === 'border' && props.small, |
32 |
| - 'spinner-grow': props.type === 'grow', |
33 |
| - 'spinner-grow-sm': props.type === 'grow' && props.small, |
34 |
| - [`text-${props.variant}`]: !!props.variant, |
35 |
| - })) |
| 19 | +interface BSpinnerProps { |
| 20 | + label: string |
| 21 | + role?: string |
| 22 | + small?: boolean |
| 23 | + tag?: string |
| 24 | + type?: SpinnerType |
| 25 | + variant?: ColorVariant |
| 26 | +} |
36 | 27 |
|
37 |
| - return { |
38 |
| - classes, |
39 |
| - } |
40 |
| - }, |
| 28 | +const props = withDefaults(defineProps<BSpinnerProps>(), { |
| 29 | + role: 'status', |
| 30 | + small: false, |
| 31 | + tag: 'span', |
| 32 | + type: 'border', |
41 | 33 | })
|
| 34 | +
|
| 35 | +const classes = computed(() => ({ |
| 36 | + 'spinner-border': props.type === 'border', |
| 37 | + 'spinner-border-sm': props.type === 'border' && props.small, |
| 38 | + 'spinner-grow': props.type === 'grow', |
| 39 | + 'spinner-grow-sm': props.type === 'grow' && props.small, |
| 40 | + [`text-${props.variant}`]: !!props.variant, |
| 41 | +})) |
42 | 42 | </script>
|
0 commit comments