@teamix-evo/ui 0.7.1 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/manifest.json +16 -7
- package/package.json +4 -4
- package/src/_design-system/theme-tokens/stories.tsx +2 -2
- package/src/components/accordion/index.tsx +1 -1
- package/src/components/affix/meta.md +26 -0
- package/src/components/alert/index.tsx +2 -2
- package/src/components/alert-dialog/index.tsx +3 -3
- package/src/components/alert-dialog/meta.md +52 -0
- package/src/components/alert-dialog/stories.tsx +45 -48
- package/src/components/avatar/index.tsx +1 -1
- package/src/components/badge/index.tsx +2 -2
- package/src/components/badge/meta.md +48 -0
- package/src/components/button/index.tsx +2 -2
- package/src/components/button/meta.md +15 -0
- package/src/components/button/stories.tsx +1 -1
- package/src/components/calendar/index.tsx +2 -2
- package/src/components/card/index.tsx +1 -1
- package/src/components/carousel/index.tsx +2 -2
- package/src/components/carousel/meta.md +34 -2
- package/src/components/carousel/stories.tsx +2 -2
- package/src/components/cascader-select/index.tsx +2 -1
- package/src/components/cascader-select/meta.md +46 -0
- package/src/components/checkbox/meta.md +47 -0
- package/src/components/color-picker/index.tsx +3 -3
- package/src/components/color-picker/meta.md +80 -0
- package/src/components/combobox/index.tsx +2 -2
- package/src/components/combobox/meta.md +130 -0
- package/src/components/data-table/index.tsx +2 -2
- package/src/components/data-table/meta.md +419 -0
- package/src/components/date-picker/meta.md +91 -0
- package/src/components/descriptions/index.tsx +1 -1
- package/src/components/descriptions/meta.md +245 -0
- package/src/components/dialog/index.tsx +4 -4
- package/src/components/dialog/meta.md +47 -1
- package/src/components/dialog/stories.tsx +38 -41
- package/src/components/dropdown-menu/index.tsx +5 -5
- package/src/components/empty/index.tsx +2 -2
- package/src/components/field/index.tsx +4 -4
- package/src/components/filter-bar/index.tsx +6 -6
- package/src/components/filter-bar/meta.md +323 -0
- package/src/components/float-button/index.tsx +2 -2
- package/src/components/form/index.tsx +1 -1
- package/src/components/form/meta.md +119 -0
- package/src/components/hover-card/index.tsx +1 -1
- package/src/components/hover-card/meta.md +21 -0
- package/src/components/input/meta.md +16 -0
- package/src/components/input-group/index.tsx +1 -1
- package/src/components/input-group/meta.md +118 -0
- package/src/components/input-group/stories.tsx +6 -6
- package/src/components/input-ip/index.tsx +2 -2
- package/src/components/input-ip/meta.md +30 -0
- package/src/components/input-ip/stories.tsx +2 -2
- package/src/components/input-number/index.tsx +3 -2
- package/src/components/input-number/meta.md +67 -0
- package/src/components/input-number/stories.tsx +2 -2
- package/src/components/item/index.tsx +4 -4
- package/src/components/label/meta.md +8 -0
- package/src/components/mentions/meta.md +15 -0
- package/src/components/menubar/index.tsx +4 -4
- package/src/components/navigation-menu/index.tsx +4 -4
- package/src/components/page-header/index.tsx +1 -1
- package/src/components/page-header/meta.md +145 -0
- package/src/components/page-shell/index.tsx +2 -2
- package/src/components/pagination/index.tsx +1 -1
- package/src/components/pagination/meta.md +203 -0
- package/src/components/popconfirm/meta.md +45 -0
- package/src/components/popover/index.tsx +2 -2
- package/src/components/popover/meta.md +47 -0
- package/src/components/progress/index.tsx +1 -1
- package/src/components/progress/meta.md +36 -0
- package/src/components/progress/stories.tsx +1 -1
- package/src/components/radio-group/meta.md +69 -0
- package/src/components/rate/index.tsx +1 -1
- package/src/components/rate/meta.md +50 -0
- package/src/components/resizable/index.tsx +1 -1
- package/src/components/select/index.tsx +2 -2
- package/src/components/select/meta.md +20 -0
- package/src/components/separator/index.tsx +1 -1
- package/src/components/sheet/index.tsx +13 -14
- package/src/components/sheet/meta.md +124 -0
- package/src/components/sheet/stories.tsx +110 -119
- package/src/components/sidebar/index.tsx +5 -5
- package/src/components/sidebar/meta.md +383 -0
- package/src/components/skeleton/meta.md +13 -0
- package/src/components/slider/index.tsx +2 -2
- package/src/components/sonner/meta.md +86 -0
- package/src/components/spinner/meta.md +46 -0
- package/src/components/spinner/stories.tsx +2 -2
- package/src/components/steps/meta.md +20 -0
- package/src/components/steps/stories.tsx +1 -1
- package/src/components/switch/index.tsx +2 -2
- package/src/components/switch/meta.md +33 -0
- package/src/components/table/index.tsx +2 -2
- package/src/components/table/meta.md +11 -0
- package/src/components/tabs/index.tsx +7 -7
- package/src/components/tabs/meta.md +52 -0
- package/src/components/tag/index.tsx +8 -8
- package/src/components/tag/meta.md +194 -0
- package/src/components/textarea/index.tsx +1 -1
- package/src/components/textarea/meta.md +27 -0
- package/src/components/textarea/stories.tsx +1 -1
- package/src/components/time-picker/index.tsx +3 -3
- package/src/components/time-picker/meta.md +76 -0
- package/src/components/timeline/index.tsx +1 -0
- package/src/components/toggle/index.tsx +1 -1
- package/src/components/toggle-group/index.tsx +1 -1
- package/src/components/tooltip/index.tsx +1 -1
- package/src/components/tooltip/meta.md +23 -0
- package/src/components/transfer/index.tsx +2 -2
- package/src/components/transfer/meta.md +97 -0
- package/src/components/tree/index.tsx +245 -15
- package/src/components/tree/meta.md +151 -0
- package/src/components/tree-select/index.tsx +16 -2
- package/src/components/tree-select/meta.md +150 -0
- package/src/components/typography/index.tsx +3 -3
- package/src/components/upload/index.tsx +3 -3
- package/src/components/upload/meta.md +82 -0
- package/src/components/tree/utils.ts +0 -269
- package/src/examples/built-in-assets/stories.tsx +0 -572
- package/src/examples/evaluators/stories.tsx +0 -502
|
@@ -128,6 +128,27 @@ CheckboxGroup 纵向排列。
|
|
|
128
128
|
/>
|
|
129
129
|
```
|
|
130
130
|
|
|
131
|
+
### GroupControlled
|
|
132
|
+
|
|
133
|
+
CheckboxGroup 受控用法 + onChange 回调。
|
|
134
|
+
|
|
135
|
+
```tsx
|
|
136
|
+
<div className="flex flex-col gap-2">
|
|
137
|
+
<CheckboxGroup
|
|
138
|
+
value={value}
|
|
139
|
+
onChange={setValue}
|
|
140
|
+
dataSource={[
|
|
141
|
+
{ value: 'apple', label: '苹果' },
|
|
142
|
+
{ value: 'banana', label: '香蕉' },
|
|
143
|
+
{ value: 'orange', label: '橙子' },
|
|
144
|
+
]}
|
|
145
|
+
/>
|
|
146
|
+
<div className="text-xs text-muted-foreground">
|
|
147
|
+
已选:{value.join(', ') || '无'}
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
```
|
|
151
|
+
|
|
131
152
|
### GroupDisabled
|
|
132
153
|
|
|
133
154
|
CheckboxGroup 整组禁用。
|
|
@@ -164,3 +185,29 @@ CheckboxGroup children 模式:自由组合 Checkbox 子元素,仍由 group
|
|
|
164
185
|
</label>
|
|
165
186
|
</CheckboxGroup>
|
|
166
187
|
```
|
|
188
|
+
|
|
189
|
+
### CheckAll
|
|
190
|
+
|
|
191
|
+
全选 / 半选 / 反选联动。
|
|
192
|
+
|
|
193
|
+
```tsx
|
|
194
|
+
<div className="flex flex-col gap-3">
|
|
195
|
+
<label className="inline-flex cursor-pointer items-center gap-2 text-xs">
|
|
196
|
+
<Checkbox
|
|
197
|
+
checked={allChecked}
|
|
198
|
+
indeterminate={indeterminate}
|
|
199
|
+
onCheckedChange={(c) => setValue(c === true ? options : [])}
|
|
200
|
+
/>
|
|
201
|
+
<span>全选</span>
|
|
202
|
+
</label>
|
|
203
|
+
<CheckboxGroup
|
|
204
|
+
value={value}
|
|
205
|
+
onChange={setValue}
|
|
206
|
+
dataSource={[
|
|
207
|
+
{ value: 'apple', label: '苹果' },
|
|
208
|
+
{ value: 'banana', label: '香蕉' },
|
|
209
|
+
{ value: 'orange', label: '橙子' },
|
|
210
|
+
]}
|
|
211
|
+
/>
|
|
212
|
+
</div>
|
|
213
|
+
```
|
|
@@ -48,7 +48,7 @@ type ColorPresets = string[] | ColorPresetGroup[];
|
|
|
48
48
|
// ─── Trigger variants ──────────────────────────────────────────────────────
|
|
49
49
|
|
|
50
50
|
const triggerVariants = cva(
|
|
51
|
-
'inline-flex cursor-pointer items-center gap-1.5 rounded-md border border-input bg-background transition-colors hover:border-ring focus-visible:
|
|
51
|
+
'inline-flex cursor-pointer items-center gap-1.5 rounded-md border border-input bg-background transition-colors hover:border-ring focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50',
|
|
52
52
|
{
|
|
53
53
|
variants: {
|
|
54
54
|
size: {
|
|
@@ -432,7 +432,7 @@ function PresetGrid({
|
|
|
432
432
|
type="button"
|
|
433
433
|
onClick={() => onSelect(hex)}
|
|
434
434
|
className={cn(
|
|
435
|
-
'size-5 cursor-pointer rounded-sm border border-border transition-transform hover:scale-110 focus-visible:
|
|
435
|
+
'size-5 cursor-pointer rounded-sm border border-border transition-transform hover:scale-110 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-none',
|
|
436
436
|
currentColor.toHex() === new Color(hex).toHex() &&
|
|
437
437
|
'ring-1 ring-ring ring-offset-1',
|
|
438
438
|
)}
|
|
@@ -628,7 +628,7 @@ function ColorPicker({
|
|
|
628
628
|
<button
|
|
629
629
|
type="button"
|
|
630
630
|
onClick={cycleFormat}
|
|
631
|
-
className="h-6 shrink-0 cursor-pointer rounded-sm px-1.5 text-xs font-medium
|
|
631
|
+
className="h-6 shrink-0 cursor-pointer rounded-sm px-1.5 text-xs font-medium text-muted-foreground uppercase transition-colors hover:bg-muted hover:text-foreground"
|
|
632
632
|
>
|
|
633
633
|
{currentFormat}
|
|
634
634
|
</button>
|
|
@@ -40,6 +40,18 @@
|
|
|
40
40
|
|
|
41
41
|
## 示例
|
|
42
42
|
|
|
43
|
+
### Basic
|
|
44
|
+
|
|
45
|
+
```tsx
|
|
46
|
+
<ColorPicker />
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### DefaultValue
|
|
50
|
+
|
|
51
|
+
```tsx
|
|
52
|
+
<ColorPicker defaultValue="#52c41a" />
|
|
53
|
+
```
|
|
54
|
+
|
|
43
55
|
### Sizes
|
|
44
56
|
|
|
45
57
|
```tsx
|
|
@@ -72,6 +84,68 @@
|
|
|
72
84
|
</div>
|
|
73
85
|
```
|
|
74
86
|
|
|
87
|
+
### DisabledAlpha
|
|
88
|
+
|
|
89
|
+
```tsx
|
|
90
|
+
<ColorPicker disabledAlpha defaultValue="#1677ff" />
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### AllowClear
|
|
94
|
+
|
|
95
|
+
```tsx
|
|
96
|
+
<ColorPicker allowClear defaultValue="#faad14" />
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### PresetFlat
|
|
100
|
+
|
|
101
|
+
```tsx
|
|
102
|
+
<ColorPicker defaultValue="#1677ff" presets={[
|
|
103
|
+
'#f5222d'} '#fa541c'={'#fa541c'} '#fa8c16'={'#fa8c16'} '#faad14'={'#faad14'} '#fadb14'={'#fadb14'} '#a0d911'={'#a0d911'} '#52c41a'={'#52c41a'} '#13c2c2'={'#13c2c2'} '#1677ff'={'#1677ff'} '#2f54eb'={'#2f54eb'} '#722ed1'={'#722ed1'} '#eb2f96'={'#eb2f96'} ]={]} />
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### PresetGroups
|
|
107
|
+
|
|
108
|
+
```tsx
|
|
109
|
+
<ColorPicker defaultValue="#1677ff" presets={[
|
|
110
|
+
{
|
|
111
|
+
label: '推荐色'} colors={['#f5222d'} '#fa8c16'={'#fa8c16'} '#fadb14'={'#fadb14'} '#52c41a'={'#52c41a'} '#1677ff'={'#1677ff'} '#722ed1']={'#722ed1']} }={}} {
|
|
112
|
+
label: '中性色'={{
|
|
113
|
+
label: '中性色'} colors={['#000000'} '#434343'={'#434343'} '#8c8c8c'={'#8c8c8c'} '#bfbfbf'={'#bfbfbf'} '#d9d9d9'={'#d9d9d9'} '#ffffff']={'#ffffff']} defaultOpen={false} }={}} ]={]} />
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Controlled
|
|
117
|
+
|
|
118
|
+
```tsx
|
|
119
|
+
<div className="flex items-center gap-3">
|
|
120
|
+
<ColorPicker
|
|
121
|
+
value={color}
|
|
122
|
+
onChange={(c) => setColor(c)}
|
|
123
|
+
showText
|
|
124
|
+
/>
|
|
125
|
+
<Button
|
|
126
|
+
variant="outline"
|
|
127
|
+
size="sm"
|
|
128
|
+
onClick={() => setColor(new Color('#ff4d4f'))}
|
|
129
|
+
>
|
|
130
|
+
设为红色
|
|
131
|
+
</Button>
|
|
132
|
+
</div>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### OnChangeComplete
|
|
136
|
+
|
|
137
|
+
```tsx
|
|
138
|
+
<div className="flex items-center gap-3">
|
|
139
|
+
<ColorPicker
|
|
140
|
+
defaultValue="#1677ff"
|
|
141
|
+
onChangeComplete={(c) => setHex(c.toHex())}
|
|
142
|
+
/>
|
|
143
|
+
<span className="text-xs text-muted-foreground">
|
|
144
|
+
完成选色: {hex}
|
|
145
|
+
</span>
|
|
146
|
+
</div>
|
|
147
|
+
```
|
|
148
|
+
|
|
75
149
|
### CustomTrigger
|
|
76
150
|
|
|
77
151
|
```tsx
|
|
@@ -81,3 +155,9 @@
|
|
|
81
155
|
</Button>
|
|
82
156
|
</ColorPicker>
|
|
83
157
|
```
|
|
158
|
+
|
|
159
|
+
### Disabled
|
|
160
|
+
|
|
161
|
+
```tsx
|
|
162
|
+
<ColorPicker disabled defaultValue="#faad14" />
|
|
163
|
+
```
|
|
@@ -372,7 +372,7 @@ function ComboboxTrigger({
|
|
|
372
372
|
}}
|
|
373
373
|
className={cn(
|
|
374
374
|
// 视觉与 SelectTrigger 对齐;focus-within 产生 ring;min-h 容纳多行 Tag
|
|
375
|
-
"flex w-fit cursor-text items-center justify-between gap-1.5 rounded-md border border-input bg-transparent py-1 pr-2 pl-2.5 text-xs transition-colors outline-none has-[input:focus]:border-ring has-[input:focus]:ring-ring/20 data-[disabled]:pointer-events-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[size=default]:min-h-8 data-[size=
|
|
375
|
+
"flex w-fit cursor-text items-center justify-between gap-1.5 rounded-md border border-input bg-transparent py-1 pr-2 pl-2.5 text-xs transition-colors outline-none has-[input:focus]:border-ring has-[input:focus]:ring-ring/20 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 data-[disabled]:pointer-events-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[size=default]:min-h-8 data-[size=lg]:min-h-9 data-[size=lg]:text-sm data-[size=sm]:min-h-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
376
376
|
className,
|
|
377
377
|
)}
|
|
378
378
|
{...props}
|
|
@@ -670,7 +670,7 @@ function ComboboxItem({
|
|
|
670
670
|
}}
|
|
671
671
|
className={cn(
|
|
672
672
|
// 与 SelectItem 视觉对齐:h-8、左侧勾选位;hover 灰底,选中蓝底(含 hover 保持)
|
|
673
|
-
"group/combobox-item relative flex h-8 w-full cursor-pointer items-center gap-1.5 rounded-md py-1 pr-2 pl-7 text-xs outline-hidden select-none hover:bg-muted data-[
|
|
673
|
+
"group/combobox-item relative flex h-8 w-full cursor-pointer items-center gap-1.5 rounded-md py-1 pr-2 pl-7 text-xs outline-hidden select-none hover:bg-muted data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[state=checked]:bg-primary/10 data-[state=checked]:hover:bg-primary/10 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
674
674
|
className,
|
|
675
675
|
)}
|
|
676
676
|
{...props}
|
|
@@ -30,6 +30,136 @@
|
|
|
30
30
|
|
|
31
31
|
## 示例
|
|
32
32
|
|
|
33
|
+
### Multiple
|
|
34
|
+
|
|
35
|
+
多选:选中项以可关闭 Tag 形式展示在触发区。
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
<Combobox multiple value={value} onValueChange={setValue}>
|
|
39
|
+
<ComboboxTrigger
|
|
40
|
+
className="w-72"
|
|
41
|
+
onClear={value.length ? () => setValue([]) : undefined}
|
|
42
|
+
>
|
|
43
|
+
<ComboboxValue placeholder="选择多个城市" />
|
|
44
|
+
</ComboboxTrigger>
|
|
45
|
+
<ComboboxContent>
|
|
46
|
+
<ComboboxList>
|
|
47
|
+
<ComboboxEmpty>无匹配结果</ComboboxEmpty>
|
|
48
|
+
<ComboboxGroup>
|
|
49
|
+
{cityOptions.map((o) => (
|
|
50
|
+
<ComboboxItem key={o.value} value={o.value}>
|
|
51
|
+
{o.label}
|
|
52
|
+
</ComboboxItem>
|
|
53
|
+
))}
|
|
54
|
+
</ComboboxGroup>
|
|
55
|
+
</ComboboxList>
|
|
56
|
+
</ComboboxContent>
|
|
57
|
+
</Combobox>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### WithMaxTagCount
|
|
61
|
+
|
|
62
|
+
多选模式下通过 `maxTagCount` 控制选择的个数,通过 `maxTagPlaceholder` 控制选择的 hover 样式。
|
|
63
|
+
|
|
64
|
+
```tsx
|
|
65
|
+
<div className="flex flex-wrap items-start gap-3">
|
|
66
|
+
{/* 默认 +N */}
|
|
67
|
+
<Combobox multiple maxTagCount={2} value={v1} onValueChange={setV1}>
|
|
68
|
+
<ComboboxTrigger className="w-60">
|
|
69
|
+
<ComboboxValue placeholder="选择城市" />
|
|
70
|
+
</ComboboxTrigger>
|
|
71
|
+
<ComboboxContent>
|
|
72
|
+
<ComboboxList>
|
|
73
|
+
<ComboboxGroup>
|
|
74
|
+
{cityOptions.map((o) => (
|
|
75
|
+
<ComboboxItem key={o.value} value={o.value}>
|
|
76
|
+
{o.label}
|
|
77
|
+
</ComboboxItem>
|
|
78
|
+
))}
|
|
79
|
+
</ComboboxGroup>
|
|
80
|
+
</ComboboxList>
|
|
81
|
+
</ComboboxContent>
|
|
82
|
+
</Combobox>
|
|
83
|
+
{/* 自定义摘要 wrapped in Tag */}
|
|
84
|
+
<Combobox
|
|
85
|
+
multiple
|
|
86
|
+
maxTagCount={2}
|
|
87
|
+
maxTagPlaceholder={(_omitted, total) => (
|
|
88
|
+
<Tag size="sm" variant="solid" color="primary">
|
|
89
|
+
已选择 {total}/{cityOptions.length} 项
|
|
90
|
+
</Tag>
|
|
91
|
+
)}
|
|
92
|
+
value={v2}
|
|
93
|
+
onValueChange={setV2}
|
|
94
|
+
>
|
|
95
|
+
<ComboboxTrigger className="w-60">
|
|
96
|
+
<ComboboxValue placeholder="选择城市" />
|
|
97
|
+
</ComboboxTrigger>
|
|
98
|
+
<ComboboxContent>
|
|
99
|
+
<ComboboxList>
|
|
100
|
+
<ComboboxGroup>
|
|
101
|
+
{cityOptions.map((o) => (
|
|
102
|
+
<ComboboxItem key={o.value} value={o.value}>
|
|
103
|
+
{o.label}
|
|
104
|
+
</ComboboxItem>
|
|
105
|
+
))}
|
|
106
|
+
</ComboboxGroup>
|
|
107
|
+
</ComboboxList>
|
|
108
|
+
</ComboboxContent>
|
|
109
|
+
</Combobox>
|
|
110
|
+
{/* 简洁 x/total 纯文本 */}
|
|
111
|
+
<Combobox
|
|
112
|
+
multiple
|
|
113
|
+
maxTagCount={2}
|
|
114
|
+
maxTagPlaceholder={(_omitted, total) =>
|
|
115
|
+
`${total}/${cityOptions.length}`
|
|
116
|
+
}
|
|
117
|
+
value={v3}
|
|
118
|
+
onValueChange={setV3}
|
|
119
|
+
>
|
|
120
|
+
<ComboboxTrigger className="w-60">
|
|
121
|
+
<ComboboxValue placeholder="选择城市" />
|
|
122
|
+
</ComboboxTrigger>
|
|
123
|
+
<ComboboxContent>
|
|
124
|
+
<ComboboxList>
|
|
125
|
+
<ComboboxGroup>
|
|
126
|
+
{cityOptions.map((o) => (
|
|
127
|
+
<ComboboxItem key={o.value} value={o.value}>
|
|
128
|
+
{o.label}
|
|
129
|
+
</ComboboxItem>
|
|
130
|
+
))}
|
|
131
|
+
</ComboboxGroup>
|
|
132
|
+
</ComboboxList>
|
|
133
|
+
</ComboboxContent>
|
|
134
|
+
</Combobox>
|
|
135
|
+
{/* maxTagCount=1 + 纯文本摘要 */}
|
|
136
|
+
<Combobox
|
|
137
|
+
multiple
|
|
138
|
+
maxTagCount={1}
|
|
139
|
+
maxTagPlaceholder={(_omitted, total) =>
|
|
140
|
+
`已选择 ${total}/${cityOptions.length} 项`
|
|
141
|
+
}
|
|
142
|
+
value={v4}
|
|
143
|
+
onValueChange={setV4}
|
|
144
|
+
>
|
|
145
|
+
<ComboboxTrigger className="w-60">
|
|
146
|
+
<ComboboxValue placeholder="选择城市" />
|
|
147
|
+
</ComboboxTrigger>
|
|
148
|
+
<ComboboxContent>
|
|
149
|
+
<ComboboxList>
|
|
150
|
+
<ComboboxGroup>
|
|
151
|
+
{cityOptions.map((o) => (
|
|
152
|
+
<ComboboxItem key={o.value} value={o.value}>
|
|
153
|
+
{o.label}
|
|
154
|
+
</ComboboxItem>
|
|
155
|
+
))}
|
|
156
|
+
</ComboboxGroup>
|
|
157
|
+
</ComboboxList>
|
|
158
|
+
</ComboboxContent>
|
|
159
|
+
</Combobox>
|
|
160
|
+
</div>
|
|
161
|
+
```
|
|
162
|
+
|
|
33
163
|
### Disabled
|
|
34
164
|
|
|
35
165
|
禁用态。
|
|
@@ -1289,7 +1289,7 @@ function DataTable<T = Record<string, unknown>>(props: DataTableProps<T>) {
|
|
|
1289
1289
|
data-slot="data-table-expanded-row"
|
|
1290
1290
|
className="bg-muted/20 hover:bg-muted/20"
|
|
1291
1291
|
>
|
|
1292
|
-
<TableCell colSpan={colCount} className="whitespace-normal
|
|
1292
|
+
<TableCell colSpan={colCount} className="py-3 whitespace-normal">
|
|
1293
1293
|
{expandable!.expandedRowRender(row.original, row.index)}
|
|
1294
1294
|
</TableCell>
|
|
1295
1295
|
</TableRow>
|
|
@@ -1462,7 +1462,7 @@ function DataTable<T = Record<string, unknown>>(props: DataTableProps<T>) {
|
|
|
1462
1462
|
onTouchStart={header.getResizeHandler()}
|
|
1463
1463
|
onClick={(e) => e.stopPropagation()}
|
|
1464
1464
|
className={cn(
|
|
1465
|
-
'absolute
|
|
1465
|
+
'absolute top-0 right-0 z-10 h-full w-1 cursor-col-resize touch-none bg-transparent transition-colors select-none hover:bg-primary/40',
|
|
1466
1466
|
header.column.getIsResizing() && 'bg-primary',
|
|
1467
1467
|
)}
|
|
1468
1468
|
/>
|