Browse Source
feat: vben checkbox support indeterminate state and transition animation (#5662)
pull/5666/head
Netfan
1 year ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with
7 additions and
5 deletions
-
packages/@core/ui-kit/shadcn-ui/src/components/checkbox/checkbox.vue
-
packages/@core/ui-kit/shadcn-ui/src/ui/checkbox/Checkbox.vue
|
|
|
@ -7,7 +7,7 @@ import { useForwardPropsEmits } from 'radix-vue'; |
|
|
|
|
|
|
|
import { Checkbox } from '../../ui/checkbox'; |
|
|
|
|
|
|
|
const props = defineProps<CheckboxRootProps>(); |
|
|
|
const props = defineProps<CheckboxRootProps & { indeterminate?: boolean }>(); |
|
|
|
|
|
|
|
const emits = defineEmits<CheckboxRootEmits>(); |
|
|
|
|
|
|
|
|
|
|
|
@ -5,14 +5,16 @@ import { computed } from 'vue'; |
|
|
|
|
|
|
|
import { cn } from '@vben-core/shared/utils'; |
|
|
|
|
|
|
|
import { Check } from 'lucide-vue-next'; |
|
|
|
import { Check, Minus } from 'lucide-vue-next'; |
|
|
|
import { |
|
|
|
CheckboxIndicator, |
|
|
|
CheckboxRoot, |
|
|
|
useForwardPropsEmits, |
|
|
|
} from 'radix-vue'; |
|
|
|
|
|
|
|
const props = defineProps<CheckboxRootProps & { class?: any }>(); |
|
|
|
const props = defineProps< |
|
|
|
CheckboxRootProps & { class?: any; indeterminate?: boolean } |
|
|
|
>(); |
|
|
|
const emits = defineEmits<CheckboxRootEmits>(); |
|
|
|
|
|
|
|
const delegatedProps = computed(() => { |
|
|
|
@ -29,7 +31,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits); |
|
|
|
v-bind="forwarded" |
|
|
|
:class=" |
|
|
|
cn( |
|
|
|
'focus-visible:ring-ring data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground border-border peer h-4 w-4 shrink-0 rounded-sm border focus-visible:outline-none focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50', |
|
|
|
'focus-visible:ring-ring data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground border-border peer h-4 w-4 shrink-0 rounded-sm border transition focus-visible:outline-none focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50', |
|
|
|
props.class, |
|
|
|
) |
|
|
|
" |
|
|
|
@ -38,7 +40,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits); |
|
|
|
class="flex h-full w-full items-center justify-center text-current" |
|
|
|
> |
|
|
|
<slot> |
|
|
|
<Check class="h-4 w-4" /> |
|
|
|
<component :is="indeterminate ? Minus : Check" class="h-4 w-4" /> |
|
|
|
</slot> |
|
|
|
</CheckboxIndicator> |
|
|
|
</CheckboxRoot> |
|
|
|
|