Skip to content

Commit be84046

Browse files
authored
feat: vbenSelect support prop allowClear (#6043)
1 parent cb45987 commit be84046

File tree

1 file changed

+22
-4
lines changed
  • packages/@core/ui-kit/shadcn-ui/src/components/select

1 file changed

+22
-4
lines changed

packages/@core/ui-kit/shadcn-ui/src/components/select/select.vue

+22-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
<script lang="ts" setup>
2+
import { CircleX } from '@vben-core/icons';
3+
24
import {
35
Select,
46
SelectContent,
@@ -8,17 +10,33 @@ import {
810
} from '../../ui';
911
1012
interface Props {
13+
allowClear?: boolean;
1114
class?: any;
1215
options?: Array<{ label: string; value: string }>;
1316
placeholder?: string;
1417
}
1518
16-
const props = defineProps<Props>();
19+
const props = withDefaults(defineProps<Props>(), {
20+
allowClear: false,
21+
});
22+
23+
const modelValue = defineModel<string>();
24+
25+
function handleClear() {
26+
modelValue.value = undefined;
27+
}
1728
</script>
1829
<template>
19-
<Select>
20-
<SelectTrigger :class="props.class">
21-
<SelectValue :placeholder="placeholder" />
30+
<Select v-model="modelValue">
31+
<SelectTrigger :class="props.class" class="flex w-full items-center">
32+
<SelectValue class="flex-auto text-left" :placeholder="placeholder" />
33+
<CircleX
34+
@pointerdown.stop
35+
@click.stop.prevent="handleClear"
36+
v-if="allowClear && modelValue"
37+
data-clear-button
38+
class="mr-1 size-4 cursor-pointer opacity-50 hover:opacity-100"
39+
/>
2240
</SelectTrigger>
2341
<SelectContent>
2442
<template v-for="item in options" :key="item.value">

0 commit comments

Comments
 (0)