|
1 |
| -import classNames from 'classnames' |
2 | 1 | import { computed, type Ref } from 'vue'
|
3 | 2 |
|
4 | 3 | import type { ProgressLabelPosition, ProgressSize, ProgressVariant } from '../types'
|
5 | 4 |
|
| 5 | +import { useMergeClasses } from '@/composables/useMergeClasses' |
| 6 | + |
| 7 | +const defaultInnerClasses = 'rounded-full p-0.5 text-center font-medium text-blue-100' |
| 8 | +const defaultOuterClasses = 'w-full rounded-full bg-gray-200 dark:bg-gray-700' |
| 9 | +const defaultOutsideLabelClasses = 'text-base font-medium' |
| 10 | + |
6 | 11 | const barColorClasses: Record<ProgressVariant, string> = {
|
7 | 12 | default: 'bg-blue-600 dark:bg-blue-600',
|
8 | 13 | blue: 'bg-blue-600 dark:bg-blue-600',
|
@@ -36,28 +41,37 @@ export type UseProgressClassesProps = {
|
36 | 41 | color: Ref<ProgressVariant>
|
37 | 42 | size: Ref<ProgressSize>
|
38 | 43 | labelPosition: Ref<ProgressLabelPosition>
|
| 44 | + innerClasses?: Ref<string | Record<string, boolean>> |
| 45 | + outerClasses?: Ref<string | Record<string, boolean>> |
| 46 | + outsideLabelClasses?: Ref<string | Record<string, boolean>> |
39 | 47 | }
|
40 | 48 |
|
41 |
| -export function useProgressClasses (props: UseProgressClassesProps): { innerClasses: Ref<string>, outerClasses: Ref<string>, outsideLabelClasses: Ref<string> } { |
42 |
| - const bindClasses = computed(() => { |
43 |
| - return classNames( |
44 |
| - barColorClasses[props.color.value], |
45 |
| - progressSizeClasses[props.size.value], |
46 |
| - ) |
47 |
| - }) |
48 |
| - const outerClasses = computed(() => { |
49 |
| - return classNames( |
50 |
| - progressSizeClasses[props.size.value], |
51 |
| - ) |
52 |
| - }) |
53 |
| - const outsideLabelClasses = computed(() => { |
54 |
| - return classNames( |
55 |
| - outsideTextColorClasses[props.color.value], |
56 |
| - ) |
57 |
| - }) |
| 49 | +export function useProgressClasses (props: UseProgressClassesProps): { |
| 50 | + innerClasses: Ref<string> |
| 51 | + outerClasses: Ref<string> |
| 52 | + outsideLabelClasses: Ref<string> |
| 53 | +} { |
| 54 | + const innerClasses = computed(() => useMergeClasses([ |
| 55 | + defaultInnerClasses, |
| 56 | + barColorClasses[props.color.value], |
| 57 | + progressSizeClasses[props.size.value], |
| 58 | + props.innerClasses?.value || '', |
| 59 | + ])) |
| 60 | + |
| 61 | + const outerClasses = computed(() => useMergeClasses([ |
| 62 | + defaultOuterClasses, |
| 63 | + progressSizeClasses[props.size.value], |
| 64 | + props.outerClasses?.value || '', |
| 65 | + ])) |
| 66 | + |
| 67 | + const outsideLabelClasses = computed(() => useMergeClasses([ |
| 68 | + defaultOutsideLabelClasses, |
| 69 | + outsideTextColorClasses[props.color.value], |
| 70 | + props.outsideLabelClasses?.value || '', |
| 71 | + ])) |
58 | 72 |
|
59 | 73 | return {
|
60 |
| - innerClasses: bindClasses, |
| 74 | + innerClasses, |
61 | 75 | outerClasses,
|
62 | 76 | outsideLabelClasses,
|
63 | 77 | }
|
|
0 commit comments