diff --git a/packages/@core/ui-kit/shadcn-ui/src/ui/checkbox/Checkbox.vue b/packages/@core/ui-kit/shadcn-ui/src/ui/checkbox/Checkbox.vue index 20c804eb4..87e93702d 100644 --- a/packages/@core/ui-kit/shadcn-ui/src/ui/checkbox/Checkbox.vue +++ b/packages/@core/ui-kit/shadcn-ui/src/ui/checkbox/Checkbox.vue @@ -5,16 +5,19 @@ import type { HTMLAttributes } from 'vue'; import { cn } from '@vben-core/shared/utils'; -import { Check } from '@lucide/vue'; +import { Check, Minus } from '@lucide/vue'; import { reactiveOmit } from '@vueuse/core'; import { CheckboxIndicator, CheckboxRoot, useForwardPropsEmits } from 'reka-ui'; const props = defineProps< - CheckboxRootProps & { class?: HTMLAttributes['class'] } + CheckboxRootProps & { + class?: HTMLAttributes['class']; + indeterminate?: boolean; + } >(); const emits = defineEmits(); -const delegatedProps = reactiveOmit(props, 'class'); +const delegatedProps = reactiveOmit(props, 'class', 'indeterminate'); const forwarded = useForwardPropsEmits(delegatedProps, emits); @@ -27,6 +30,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits); :class=" cn( 'peer border-input data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50', + indeterminate && 'bg-primary text-primary-foreground border-primary', props.class, ) " @@ -34,9 +38,11 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits); - + + diff --git a/packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue b/packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue index 81d5e4eda..0a6e8806d 100644 --- a/packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue +++ b/packages/@core/ui-kit/shadcn-ui/src/ui/tree/tree.vue @@ -227,7 +227,7 @@ function onSelect(item: FlattenedItem>, isSelected: boolean) { } if ( - !props.checkStrictly && + props.checkStrictly && props.multiple && props.autoCheckParent && isSelected @@ -246,7 +246,7 @@ function onSelect(item: FlattenedItem>, isSelected: boolean) { }); } if ( - !props.checkStrictly && + props.checkStrictly && props.multiple && props.autoCheckParent && !isSelected @@ -307,6 +307,7 @@ defineExpose({ v-model:expanded="expanded as string[]" :default-expanded="defaultExpandedKeys as string[]" :propagate-select="!checkStrictly" + :bubble-select="!checkStrictly" :multiple="multiple" :disabled="disabled" :selection-behavior="allowClear || multiple ? 'toggle' : 'replace'"