activate useProgressClasses

This commit is contained in:
hirakei1203
2022-10-28 22:04:59 +09:00
parent 373fd8f602
commit d302645ca1
3 changed files with 28 additions and 6 deletions

View File

@@ -1,6 +1,6 @@
<template> <template>
<div class="w-full bg-gray-200 rounded-full h-2.5 dark:bg-gray-700"> <div class="w-full bg-gray-200 rounded-full h-2.5 dark:bg-gray-700">
<div class="bg-blue-600 h-2.5 rounded-full" style="width: 45%"></div> <div class="bg-blue-600 h-2.5 rounded-full" :class="wrapperClasses" style="width: 45%"></div>
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
@@ -11,7 +11,7 @@ import { useProgressClasses } from './composables/useProgressClasses'
const props = defineProps({ const props = defineProps({
color: { color: {
type: String, // 'dark' | 'blue' | 'red' | 'green' | 'yellow' | 'indigo' | 'purple' type: String, // 'dark' | 'blue' | 'red' | 'green' | 'yellow' | 'indigo' | 'purple'
default: 'blue', default: 'yellow',
}, },
label: { label: {
type: String, type: String,

View File

@@ -1,3 +1,11 @@
import type { Ref } from 'vue'
import { computed } from 'vue'
import classNames from 'classnames'
import type { ProgressVariant } from '../types'
export type ProgressClassMap<T extends string> = { default: Record<T, string> }
const progressColorClasses: ProgressClassMap<ProgressVariant> = { const progressColorClasses: ProgressClassMap<ProgressVariant> = {
default: { default: {
default: '', default: '',
@@ -14,10 +22,23 @@ const progressColorClasses: ProgressClassMap<ProgressVariant> = {
} }
export type UseProgressClassesProps = { export type UseProgressClassesProps = {
color: Ref<progressColor> color: Ref<ProgressVariant>
} }
export function useProgressClasses(props: UseProgressClassesProps): { wrapperClasses: Ref<string>} { export function useProgressClasses(props: UseProgressClassesProps): { wrapperClasses: Ref<string>} {
let colorClasses = '';
colorClasses = progressColorClasses(props.gradient.value as unknown as keyof typeof progressColorClasses.default) const bindClasses = computed(() => {
let colorClass = ''
const color = props.color.value
colorClass = progressColorClasses.default[color as unknown as keyof typeof progressColorClasses.default]
return classNames(
colorClass
)
})
return {
wrapperClasses: bindClasses,
}
} }

View File

@@ -1 +1,2 @@
export type progressColor = 'default' | 'alternative' | 'dark' | 'light' | 'green' | 'red' | 'yellow' | 'purple' | 'pink' | 'blue' export type progressColor = 'default' | 'alternative' | 'dark' | 'light' | 'green' | 'red' | 'yellow' | 'purple' | 'pink' | 'blue'
export type ProgressVariant = 'default' | 'alternative' | 'dark' | 'light' | 'green' | 'red' | 'yellow' | 'purple' | 'pink' | 'blue'