@agentscope-ai/design 1.0.26-beta.1767840384443 → 1.0.26-beta.1768271896414

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/llms/all.llms.txt CHANGED
@@ -1,5 +1,65 @@
1
1
 
2
2
 
3
+ <DemoTitle title="Video" desc="视频展示">
4
+ #### API
5
+
6
+ | 属性名 | 描述 | 类型 | 默认值 |
7
+ |--------|--------|--------|--------|
8
+ | mouseEnterAutoPlay | 鼠标进入时是否自动播放 | boolean | false |
9
+ | children | video内部设置了按钮在暗色背景下的样式,如果有一些操作按钮想继承这个样式可以在这里传入 | React.ReactNode | |
10
+
11
+
12
+
13
+
14
+
15
+
16
+ <DemoTitle title="Tooltip" desc="简单的文本提示气泡框">
17
+ #### API
18
+
19
+ | 属性名 | 描述 | 类型 | 默认值 |
20
+ |--------|--------|--------|--------|
21
+ | mode | 颜色模式 | 'dark' \| 'light' | 'dark' |
22
+ | maxHeight | 最大高度 | number \| string | '90vh' |
23
+
24
+
25
+ <AntdApiRef url="https://ant.design/components/tooltip-cn/#api"></AntdApiRef>
26
+
27
+
28
+ ## antd API
29
+
30
+ 通用属性参考:[通用属性](/docs/react/common-props)
31
+
32
+ | 参数 | 说明 | 类型 | 默认值 |
33
+ |--------|--------|--------|--------|
34
+ | title | 提示文字 | ReactNode \| () => ReactNode | - |
35
+
36
+
37
+ ### 共同的 API
38
+
39
+ 以下 API 为 Tooltip、Popconfirm、Popover 共享的 API。
40
+
41
+ <!-- prettier-ignore -->
42
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
43
+ |--------|--------|--------|--------|--------|
44
+ | align | 该值将合并到 placement 的配置中,设置参考 | object | - | |
45
+ | arrow | 修改箭头的显示状态以及修改箭头是否指向目标元素中心 | boolean \| { pointAtCenter: boolean } | true | 5.2.0 |
46
+ | autoAdjustOverflow | 气泡被遮挡时自动调整位置 | boolean | true | |
47
+ | color | 背景颜色 | string | - | 4.3.0 |
48
+ | defaultOpen | 默认是否显隐 | boolean | false | 4.23.0 |
49
+ | destroyOnHidden | 关闭后是否销毁 dom | boolean | false | 5.25.0 |
50
+ | fresh | 默认情况下,Tooltip 在关闭时会缓存内容。设置该属性后会始终保持更新 | boolean | false | 5.10.0 |
51
+ | getPopupContainer | 浮层渲染父节点,默认渲染到 body 上 | (triggerNode: HTMLElement) => HTMLElement | () => document.body | |
52
+ | mouseEnterDelay | 鼠标移入后延时多少才显示 Tooltip,单位:秒 | number | 0.1 | |
53
+ | mouseLeaveDelay | 鼠标移出后延时多少才隐藏 Tooltip,单位:秒 | number | 0.1 | |
54
+ | placement | 气泡框位置,可选 | string | top | |
55
+ | trigger | 触发行为,可选 | string \| string[] | hover | |
56
+ | open | 用于手动控制浮层显隐,小于 4.23.0 使用 | boolean | false | 4.23.0 |
57
+ | zIndex | 设置 Tooltip 的 | number | - | |
58
+ | onOpenChange | 显示隐藏的回调 | (open: boolean) => void | - | 4.23.0 |
59
+
60
+
61
+
62
+
3
63
  <DemoTitle title="Upload" desc="文件选择上传和拖拽上传控件。">
4
64
  #### API
5
65
 
@@ -96,19 +156,6 @@
96
156
 
97
157
 
98
158
 
99
- <DemoTitle title="Video" desc="视频展示">
100
- #### API
101
-
102
- | 属性名 | 描述 | 类型 | 默认值 |
103
- |--------|--------|--------|--------|
104
- | mouseEnterAutoPlay | 鼠标进入时是否自动播放 | boolean | false |
105
- | children | video内部设置了按钮在暗色背景下的样式,如果有一些操作按钮想继承这个样式可以在这里传入 | React.ReactNode | |
106
-
107
-
108
-
109
-
110
-
111
-
112
159
  <DemoTitle title="Tag" desc="进行标记和分类的小标签">
113
160
  #### API
114
161
 
@@ -144,49 +191,115 @@
144
191
 
145
192
 
146
193
 
147
- <DemoTitle title="Tooltip" desc="简单的文本提示气泡框">
194
+ <DemoTitle title="TimePicker" desc="输入或选择时间的控件。">
148
195
  #### API
149
196
 
150
- | 属性名 | 描述 | 类型 | 默认值 |
151
- |--------|--------|--------|--------|
152
- | mode | 颜色模式 | 'dark' \| 'light' | 'dark' |
153
- | maxHeight | 最大高度 | number \| string | '90vh' |
197
+ <AntdApiRef url="https://ant.design/components/time-picker-cn/#api"></AntdApiRef>
154
198
 
155
199
 
156
- <AntdApiRef url="https://ant.design/components/tooltip-cn/#api"></AntdApiRef>
200
+ ## antd API
157
201
 
158
202
 
159
- ## antd API
160
203
 
161
204
  通用属性参考:[通用属性](/docs/react/common-props)
162
205
 
163
- | 参数 | 说明 | 类型 | 默认值 |
164
- |--------|--------|--------|--------|
165
- | title | 提示文字 | ReactNode \| () => ReactNode | - |
166
206
 
207
+ ```jsx
208
+ import dayjs from 'dayjs';
209
+ import customParseFormat from 'dayjs/plugin/customParseFormat'
167
210
 
168
- ### 共同的 API
211
+ dayjs.extend(customParseFormat)
212
+ <TimePicker defaultValue={dayjs('13:30:56', 'HH:mm:ss')} />;
213
+ ```
169
214
 
170
- 以下 API 为 Tooltip、Popconfirm、Popover 共享的 API。
171
215
 
172
- <!-- prettier-ignore -->
173
216
  | 参数 | 说明 | 类型 | 默认值 | 版本 |
174
217
  |--------|--------|--------|--------|--------|
175
- | align | 该值将合并到 placement 的配置中,设置参考 | object | - | |
176
- | arrow | 修改箭头的显示状态以及修改箭头是否指向目标元素中心 | boolean \| { pointAtCenter: boolean } | true | 5.2.0 |
177
- | autoAdjustOverflow | 气泡被遮挡时自动调整位置 | boolean | true | |
178
- | color | 背景颜色 | string | - | 4.3.0 |
179
- | defaultOpen | 默认是否显隐 | boolean | false | 4.23.0 |
180
- | destroyOnHidden | 关闭后是否销毁 dom | boolean | false | 5.25.0 |
181
- | fresh | 默认情况下,Tooltip 在关闭时会缓存内容。设置该属性后会始终保持更新 | boolean | false | 5.10.0 |
182
- | getPopupContainer | 浮层渲染父节点,默认渲染到 body 上 | (triggerNode: HTMLElement) => HTMLElement | () => document.body | |
183
- | mouseEnterDelay | 鼠标移入后延时多少才显示 Tooltip,单位:秒 | number | 0.1 | |
184
- | mouseLeaveDelay | 鼠标移出后延时多少才隐藏 Tooltip,单位:秒 | number | 0.1 | |
185
- | placement | 气泡框位置,可选 | string | top | |
186
- | trigger | 触发行为,可选 | string \| string[] | hover | |
187
- | open | 用于手动控制浮层显隐,小于 4.23.0 使用 | boolean | false | 4.23.0 |
188
- | zIndex | 设置 Tooltip 的 | number | - | |
189
- | onOpenChange | 显示隐藏的回调 | (open: boolean) => void | - | 4.23.0 |
218
+ | allowClear | 自定义清除按钮 | boolean \| { clearIcon?: ReactNode } | true | 5.8.0: 支持对象类型 |
219
+ | autoFocus | 自动获取焦点 | boolean | false | |
220
+ | cellRender | 自定义单元格的内容 | (current: number, info: { originNode: React.ReactNode, today: dayjs, range?: 'start' \| 'end', subType: 'hour' \| 'minute' \| 'second' \| 'meridiem' }) => React.ReactNode | - | 5.4.0 |
221
+ | changeOnScroll | 在滚动时改变选择值 | boolean | false | 5.14.0 |
222
+ | className | 选择器类名 | string | - | |
223
+ | defaultValue | 默认时间 | | - | |
224
+ | disabled | 禁用全部操作 | boolean | false | |
225
+ | disabledTime | 不可选择的时间 | | - | 4.19.0 |
226
+ | format | 展示的时间格式 | string | HH:mm:ss | |
227
+ | getPopupContainer | 定义浮层的容器,默认为 body 上新建 div | function(trigger) | - | |
228
+ | hideDisabledOptions | 隐藏禁止选择的选项 | boolean | false | |
229
+ | hourStep | 小时选项间隔 | number | 1 | |
230
+ | inputReadOnly | 设置输入框为只读(避免在移动设备上打开虚拟键盘) | boolean | false | |
231
+ | minuteStep | 分钟选项间隔 | number | 1 | |
232
+ | needConfirm | 是否需要确认按钮,为 | boolean | - | 5.14.0 |
233
+ | open | 面板是否打开 | boolean | false | |
234
+ | placeholder | 没有值的时候显示的内容 | string \| [string, string] | 请选择时间 | |
235
+ | placement | 选择框弹出的位置 | bottomLeft | bottomLeft | |
236
+ | popupClassName | 弹出层类名 | string | - | |
237
+ | popupStyle | 弹出层样式对象 | object | - | |
238
+ | prefix | 自定义前缀 | ReactNode | - | 5.22.0 |
239
+ | renderExtraFooter | 选择框底部显示自定义的内容 | () => ReactNode | - | |
240
+ | secondStep | 秒选项间隔 | number | 1 | |
241
+ | showNow | 面板是否显示“此刻”按钮 | boolean | - | 4.4.0 |
242
+ | size | 输入框大小, | large | - | |
243
+ | status | 设置校验状态 | 'error' \| 'warning' | - | 4.19.0 |
244
+ | suffixIcon | 自定义的选择框后缀图标 | ReactNode | - | |
245
+ | use12Hours | 使用 12 小时制,为 true 时 | boolean | false | |
246
+ | value | 当前时间 | | - | |
247
+ | variant | 形态变体 | outlined | outlined | 5.13.0 \| |
248
+ | onCalendarChange | 待选日期发生变化的回调。 | function(dates: [dayjs, dayjs], dateStrings: [string, string], info: { range: | - | |
249
+ | onChange | 时间发生变化的回调 | function(time: dayjs, timeString: string): void | - | |
250
+ | onOpenChange | 面板打开/关闭时的回调 | (open: boolean) => void | - | |
251
+
252
+
253
+ #### DisabledTime
254
+
255
+
256
+ ```typescript
257
+ type DisabledTime = (now: Dayjs) => {
258
+ disabledHours?: () => number[];
259
+ disabledMinutes?: (selectedHour: number) => number[];
260
+ disabledSeconds?: (selectedHour: number, selectedMinute: number) => number[];
261
+ disabledMilliseconds?: (
262
+ selectedHour: number,
263
+ selectedMinute: number,
264
+ selectedSecond: number,
265
+ ) => number[];
266
+ };
267
+ ```
268
+
269
+
270
+ 注意:`disabledMilliseconds` 为 `5.14.0` 新增。
271
+
272
+ ## 方法
273
+
274
+ | 名称 | 描述 | 版本 |
275
+ |--------|--------|--------|
276
+ | blur() | 移除焦点 | |
277
+ | focus() | 获取焦点 | |
278
+
279
+
280
+ ## RangePicker
281
+
282
+ 属性与 DatePicker 的 [RangePicker](/components/date-picker-cn#rangepicker) 相同。还包含以下属性:
283
+
284
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
285
+ |--------|--------|--------|--------|--------|
286
+ | disabledTime | 不可选择的时间 | | - | 4.19.0 |
287
+ | order | 始末时间是否自动排序 | boolean | true | 4.1.0 |
288
+
289
+
290
+ ### RangeDisabledTime
291
+
292
+
293
+ ```typescript
294
+ type RangeDisabledTime = (
295
+ now: Dayjs,
296
+ type = 'start' | 'end',
297
+ ) => {
298
+ disabledHours?: () => number[];
299
+ disabledMinutes?: (selectedHour: number) => number[];
300
+ disabledSeconds?: (selectedHour: number, selectedMinute: number) => number[];
301
+ };
302
+ ```
190
303
 
191
304
 
192
305
 
@@ -446,6 +559,47 @@ TypeScript 里使用 Table 的 [CodeSandbox 实例](https://codesandbox.io/s/ser
446
559
 
447
560
 
448
561
 
562
+ <DemoTitle title="Switch" desc="使用开关切换两种状态之间。">
563
+ #### API
564
+
565
+ | 属性名 | 描述 | 类型 | 默认值 |
566
+ |--------|--------|--------|--------|
567
+ | label | Switch后的内容 | ReactNode | |
568
+
569
+ <AntdApiRef url="https://ant.design/components/switch-cn/#api"></AntdApiRef>
570
+
571
+
572
+ ## antd API
573
+
574
+ 通用属性参考:[通用属性](/docs/react/common-props)
575
+
576
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
577
+ |--------|--------|--------|--------|--------|
578
+ | autoFocus | 组件自动获取焦点 | boolean | false | |
579
+ | checked | 指定当前是否选中 | boolean | false | |
580
+ | checkedChildren | 选中时的内容 | ReactNode | - | |
581
+ | className | Switch 器类名 | string | - | |
582
+ | defaultChecked | 初始是否选中 | boolean | false | |
583
+ | defaultValue | defaultChecked | boolean | - | 5.12.0 |
584
+ | disabled | 是否禁用 | boolean | false | |
585
+ | loading | 加载中的开关 | boolean | false | |
586
+ | size | 开关大小,可选值: | string | default | |
587
+ | unCheckedChildren | 非选中时的内容 | ReactNode | - | |
588
+ | value | checked | boolean | - | 5.12.0 |
589
+ | onChange | 变化时的回调函数 | function(checked: boolean, event: Event) | - | |
590
+ | onClick | 点击时的回调函数 | function(checked: boolean, event: Event) | - | |
591
+
592
+
593
+ ## 方法
594
+
595
+ | 名称 | 描述 |
596
+ |--------|--------|
597
+ | blur() | 移除焦点 |
598
+ | focus() | 获取焦点 |
599
+
600
+
601
+
602
+
449
603
  <DemoTitle title="Tabs" desc="用户可以通过点击不同的标签在同一页面中查看不同的内容区域。">
450
604
  #### API
451
605
 
@@ -516,156 +670,62 @@ TypeScript 里使用 Table 的 [CodeSandbox 实例](https://codesandbox.io/s/ser
516
670
 
517
671
 
518
672
 
519
- <DemoTitle title="TimePicker" desc="输入或选择时间的控件。">
673
+ <DemoTitle title="Statistic" desc="展示统计数值">
520
674
  #### API
521
675
 
522
- <AntdApiRef url="https://ant.design/components/time-picker-cn/#api"></AntdApiRef>
676
+ <AntdApiRef url="https://ant.design/components/statistic-cn/#api"></AntdApiRef>
523
677
 
524
678
 
525
679
  ## antd API
526
680
 
527
-
528
-
529
681
  通用属性参考:[通用属性](/docs/react/common-props)
530
682
 
531
-
532
- ```jsx
533
- import dayjs from 'dayjs';
534
- import customParseFormat from 'dayjs/plugin/customParseFormat'
535
-
536
- dayjs.extend(customParseFormat)
537
- <TimePicker defaultValue={dayjs('13:30:56', 'HH:mm:ss')} />;
538
- ```
539
-
683
+ #### Statistic
540
684
 
541
685
  | 参数 | 说明 | 类型 | 默认值 | 版本 |
542
686
  |--------|--------|--------|--------|--------|
543
- | allowClear | 自定义清除按钮 | boolean \| { clearIcon?: ReactNode } | true | 5.8.0: 支持对象类型 |
544
- | autoFocus | 自动获取焦点 | boolean | false | |
545
- | cellRender | 自定义单元格的内容 | (current: number, info: { originNode: React.ReactNode, today: dayjs, range?: 'start' \| 'end', subType: 'hour' \| 'minute' \| 'second' \| 'meridiem' }) => React.ReactNode | - | 5.4.0 |
546
- | changeOnScroll | 在滚动时改变选择值 | boolean | false | 5.14.0 |
547
- | className | 选择器类名 | string | - | |
548
- | defaultValue | 默认时间 | | - | |
549
- | disabled | 禁用全部操作 | boolean | false | |
550
- | disabledTime | 不可选择的时间 | | - | 4.19.0 |
551
- | format | 展示的时间格式 | string | HH:mm:ss | |
552
- | getPopupContainer | 定义浮层的容器,默认为 body 上新建 div | function(trigger) | - | |
553
- | hideDisabledOptions | 隐藏禁止选择的选项 | boolean | false | |
554
- | hourStep | 小时选项间隔 | number | 1 | |
555
- | inputReadOnly | 设置输入框为只读(避免在移动设备上打开虚拟键盘) | boolean | false | |
556
- | minuteStep | 分钟选项间隔 | number | 1 | |
557
- | needConfirm | 是否需要确认按钮,为 | boolean | - | 5.14.0 |
558
- | open | 面板是否打开 | boolean | false | |
559
- | placeholder | 没有值的时候显示的内容 | string \| [string, string] | 请选择时间 | |
560
- | placement | 选择框弹出的位置 | bottomLeft | bottomLeft | |
561
- | popupClassName | 弹出层类名 | string | - | |
562
- | popupStyle | 弹出层样式对象 | object | - | |
563
- | prefix | 自定义前缀 | ReactNode | - | 5.22.0 |
564
- | renderExtraFooter | 选择框底部显示自定义的内容 | () => ReactNode | - | |
565
- | secondStep | 秒选项间隔 | number | 1 | |
566
- | showNow | 面板是否显示“此刻”按钮 | boolean | - | 4.4.0 |
567
- | size | 输入框大小, | large | - | |
568
- | status | 设置校验状态 | 'error' \| 'warning' | - | 4.19.0 |
569
- | suffixIcon | 自定义的选择框后缀图标 | ReactNode | - | |
570
- | use12Hours | 使用 12 小时制,为 true 时 | boolean | false | |
571
- | value | 当前时间 | | - | |
572
- | variant | 形态变体 | outlined | outlined | 5.13.0 \| |
573
- | onCalendarChange | 待选日期发生变化的回调。 | function(dates: [dayjs, dayjs], dateStrings: [string, string], info: { range: | - | |
574
- | onChange | 时间发生变化的回调 | function(time: dayjs, timeString: string): void | - | |
575
- | onOpenChange | 面板打开/关闭时的回调 | (open: boolean) => void | - | |
576
-
577
-
578
- #### DisabledTime
579
-
580
-
581
- ```typescript
582
- type DisabledTime = (now: Dayjs) => {
583
- disabledHours?: () => number[];
584
- disabledMinutes?: (selectedHour: number) => number[];
585
- disabledSeconds?: (selectedHour: number, selectedMinute: number) => number[];
586
- disabledMilliseconds?: (
587
- selectedHour: number,
588
- selectedMinute: number,
589
- selectedSecond: number,
590
- ) => number[];
591
- };
592
- ```
593
-
594
-
595
- 注意:`disabledMilliseconds` 为 `5.14.0` 新增。
596
-
597
- ## 方法
598
-
599
- | 名称 | 描述 | 版本 |
600
- |--------|--------|--------|
601
- | blur() | 移除焦点 | |
602
- | focus() | 获取焦点 | |
687
+ | decimalSeparator | 设置小数点 | string | . | |
688
+ | formatter | 自定义数值展示 | (value) => ReactNode | - | |
689
+ | groupSeparator | 设置千分位标识符 | string | , | |
690
+ | loading | 数值是否加载中 | boolean | false | 4.8.0 |
691
+ | precision | 数值精度 | number | - | |
692
+ | prefix | 设置数值的前缀 | ReactNode | - | |
693
+ | suffix | 设置数值的后缀 | ReactNode | - | |
694
+ | title | 数值的标题 | ReactNode | - | |
695
+ | value | 数值内容 | string \| number | - | |
696
+ | valueStyle | 设置数值区域的样式 | CSSProperties | - | |
603
697
 
604
698
 
605
- ## RangePicker
699
+ #### Statistic.Countdown <Badge type="error">Deprecated</Badge>
606
700
 
607
- 属性与 DatePicker [RangePicker](/components/date-picker-cn#rangepicker) 相同。还包含以下属性:
701
+ <!-- <Antd component="Alert" message="版本 >= 5.25.0 时请使用 Statistic.Timer 作为替代方案。" type="warning" banner="true"></Antd> -->
608
702
 
703
+ <!-- prettier-ignore -->
609
704
  | 参数 | 说明 | 类型 | 默认值 | 版本 |
610
705
  |--------|--------|--------|--------|--------|
611
- | disabledTime | 不可选择的时间 | | - | 4.19.0 |
612
- | order | 始末时间是否自动排序 | boolean | true | 4.1.0 |
613
-
614
-
615
- ### RangeDisabledTime
616
-
617
-
618
- ```typescript
619
- type RangeDisabledTime = (
620
- now: Dayjs,
621
- type = 'start' | 'end',
622
- ) => {
623
- disabledHours?: () => number[];
624
- disabledMinutes?: (selectedHour: number) => number[];
625
- disabledSeconds?: (selectedHour: number, selectedMinute: number) => number[];
626
- };
627
- ```
628
-
629
-
630
-
631
-
632
- <DemoTitle title="Switch" desc="使用开关切换两种状态之间。">
633
- #### API
634
-
635
- | 属性名 | 描述 | 类型 | 默认值 |
636
- |--------|--------|--------|--------|
637
- | label | Switch后的内容 | ReactNode | |
638
-
639
- <AntdApiRef url="https://ant.design/components/switch-cn/#api"></AntdApiRef>
640
-
706
+ | format | 格式化倒计时展示,参考 | string | HH:mm:ss | |
707
+ | prefix | 设置数值的前缀 | ReactNode | - | |
708
+ | suffix | 设置数值的后缀 | ReactNode | - | |
709
+ | title | 数值的标题 | ReactNode | - | |
710
+ | value | 数值内容 | number | - | |
711
+ | valueStyle | 设置数值区域的样式 | CSSProperties | - | |
712
+ | onFinish | 倒计时完成时触发 | () => void | - | |
713
+ | onChange | 倒计时时间变化时触发 | (value: number) => void | - | |
641
714
 
642
- ## antd API
643
715
 
644
- 通用属性参考:[通用属性](/docs/react/common-props)
716
+ #### Statistic.Timer <Badge>5.25.0+</Badge>
645
717
 
646
718
  | 参数 | 说明 | 类型 | 默认值 | 版本 |
647
719
  |--------|--------|--------|--------|--------|
648
- | autoFocus | 组件自动获取焦点 | boolean | false | |
649
- | checked | 指定当前是否选中 | boolean | false | |
650
- | checkedChildren | 选中时的内容 | ReactNode | - | |
651
- | className | Switch 器类名 | string | - | |
652
- | defaultChecked | 初始是否选中 | boolean | false | |
653
- | defaultValue | defaultChecked | boolean | - | 5.12.0 |
654
- | disabled | 是否禁用 | boolean | false | |
655
- | loading | 加载中的开关 | boolean | false | |
656
- | size | 开关大小,可选值: | string | default | |
657
- | unCheckedChildren | 非选中时的内容 | ReactNode | - | |
658
- | value | checked | boolean | - | 5.12.0 |
659
- | onChange | 变化时的回调函数 | function(checked: boolean, event: Event) | - | |
660
- | onClick | 点击时的回调函数 | function(checked: boolean, event: Event) | - | |
661
-
662
-
663
- ## 方法
664
-
665
- | 名称 | 描述 |
666
- |--------|--------|
667
- | blur() | 移除焦点 |
668
- | focus() | 获取焦点 |
720
+ | type | 计时类型,正计时或者倒计时 | countdown | - | |
721
+ | format | 格式化倒计时展示,参考 | string | HH:mm:ss | |
722
+ | prefix | 设置数值的前缀 | ReactNode | - | |
723
+ | suffix | 设置数值的后缀 | ReactNode | - | |
724
+ | title | 数值的标题 | ReactNode | - | |
725
+ | value | 数值内容 | number | - | |
726
+ | valueStyle | 设置数值区域的样式 | CSSProperties | - | |
727
+ | onFinish | 倒计时完成时触发, 指定为 | () => void | - | |
728
+ | onChange | 倒计时时间变化时触发 | (value: number) => void | - | |
669
729
 
670
730
 
671
731
 
@@ -729,66 +789,6 @@ type RangeDisabledTime = (
729
789
 
730
790
 
731
791
 
732
- <DemoTitle title="Statistic" desc="展示统计数值">
733
- #### API
734
-
735
- <AntdApiRef url="https://ant.design/components/statistic-cn/#api"></AntdApiRef>
736
-
737
-
738
- ## antd API
739
-
740
- 通用属性参考:[通用属性](/docs/react/common-props)
741
-
742
- #### Statistic
743
-
744
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
745
- |--------|--------|--------|--------|--------|
746
- | decimalSeparator | 设置小数点 | string | . | |
747
- | formatter | 自定义数值展示 | (value) => ReactNode | - | |
748
- | groupSeparator | 设置千分位标识符 | string | , | |
749
- | loading | 数值是否加载中 | boolean | false | 4.8.0 |
750
- | precision | 数值精度 | number | - | |
751
- | prefix | 设置数值的前缀 | ReactNode | - | |
752
- | suffix | 设置数值的后缀 | ReactNode | - | |
753
- | title | 数值的标题 | ReactNode | - | |
754
- | value | 数值内容 | string \| number | - | |
755
- | valueStyle | 设置数值区域的样式 | CSSProperties | - | |
756
-
757
-
758
- #### Statistic.Countdown <Badge type="error">Deprecated</Badge>
759
-
760
- <!-- <Antd component="Alert" message="版本 >= 5.25.0 时请使用 Statistic.Timer 作为替代方案。" type="warning" banner="true"></Antd> -->
761
-
762
- <!-- prettier-ignore -->
763
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
764
- |--------|--------|--------|--------|--------|
765
- | format | 格式化倒计时展示,参考 | string | HH:mm:ss | |
766
- | prefix | 设置数值的前缀 | ReactNode | - | |
767
- | suffix | 设置数值的后缀 | ReactNode | - | |
768
- | title | 数值的标题 | ReactNode | - | |
769
- | value | 数值内容 | number | - | |
770
- | valueStyle | 设置数值区域的样式 | CSSProperties | - | |
771
- | onFinish | 倒计时完成时触发 | () => void | - | |
772
- | onChange | 倒计时时间变化时触发 | (value: number) => void | - | |
773
-
774
-
775
- #### Statistic.Timer <Badge>5.25.0+</Badge>
776
-
777
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
778
- |--------|--------|--------|--------|--------|
779
- | type | 计时类型,正计时或者倒计时 | countdown | - | |
780
- | format | 格式化倒计时展示,参考 | string | HH:mm:ss | |
781
- | prefix | 设置数值的前缀 | ReactNode | - | |
782
- | suffix | 设置数值的后缀 | ReactNode | - | |
783
- | title | 数值的标题 | ReactNode | - | |
784
- | value | 数值内容 | number | - | |
785
- | valueStyle | 设置数值区域的样式 | CSSProperties | - | |
786
- | onFinish | 倒计时完成时触发, 指定为 | () => void | - | |
787
- | onChange | 倒计时时间变化时触发 | (value: number) => void | - | |
788
-
789
-
790
-
791
-
792
792
  <DemoTitle title="Spinner" desc="指示页面或区块的加载中状态">
793
793
  #### API
794
794
 
@@ -806,75 +806,14 @@ type RangeDisabledTime = (
806
806
 
807
807
 
808
808
 
809
- <DemoTitle title="Skeleton" desc="在内容加载时提供占位图形展示。">
809
+ <DemoTitle title="Select" desc="下拉选择器">
810
810
  ## antd API
811
811
 
812
812
  通用属性参考:[通用属性](/docs/react/common-props)
813
813
 
814
- ### Skeleton
815
-
816
- | 属性 | 说明 | 类型 | 默认值 |
817
- |--------|--------|--------|--------|
818
- | active | 是否展示动画效果 | boolean | false |
819
- | avatar | 是否显示头像占位图 | boolean \| | false |
820
- | loading | 为 true 时,显示占位图。反之则直接展示子组件 | boolean | - |
821
- | paragraph | 是否显示段落占位图 | boolean \| | true |
822
- | round | 为 true 时,段落和标题显示圆角 | boolean | false |
823
- | title | 是否显示标题占位图 | boolean \| | true |
824
-
825
-
826
- ### SkeletonAvatarProps
827
-
828
- | 属性 | 说明 | 类型 | 默认值 |
829
- |--------|--------|--------|--------|
830
- | active | 是否展示动画效果,仅在单独使用头像骨架时生效 | boolean | false |
831
- | shape | 指定头像的形状 | circle | - |
832
- | size | 设置头像占位图的大小 | number \| | - |
833
-
834
-
835
- ### SkeletonTitleProps
836
-
837
- | 属性 | 说明 | 类型 | 默认值 |
838
- |--------|--------|--------|--------|
839
- | width | 设置标题占位图的宽度 | number \| string | - |
840
-
841
-
842
- ### SkeletonParagraphProps
843
-
844
- | 属性 | 说明 | 类型 | 默认值 |
845
- |--------|--------|--------|--------|
846
- | rows | 设置段落占位图的行数 | number | - |
847
- | width | 设置段落占位图的宽度,若为数组时则为对应的每行宽度,反之则是最后一行的宽度 | number \| string \| Array | - |
848
-
849
-
850
- ### SkeletonButtonProps
814
+ ### Select props
851
815
 
852
- | 属性 | 说明 | 类型 | 默认值 | 版本 |
853
- |--------|--------|--------|--------|--------|
854
- | active | 是否展示动画效果 | boolean | false | |
855
- | block | 将按钮宽度调整为其父宽度的选项 | boolean | false | 4.17.0 |
856
- | shape | 指定按钮的形状 | circle | - | |
857
- | size | 设置按钮的大小 | large | - | |
858
-
859
-
860
- ### SkeletonInputProps
861
-
862
- | 属性 | 说明 | 类型 | 默认值 |
863
- |--------|--------|--------|--------|
864
- | active | 是否展示动画效果 | boolean | false |
865
- | size | 设置输入框的大小 | large | - |
866
-
867
-
868
-
869
-
870
- <DemoTitle title="Select" desc="下拉选择器">
871
- ## antd API
872
-
873
- 通用属性参考:[通用属性](/docs/react/common-props)
874
-
875
- ### Select props
876
-
877
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
816
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
878
817
  |--------|--------|--------|--------|--------|
879
818
  | allowClear | 自定义清除按钮 | boolean \| { clearIcon?: ReactNode } | false | 5.8.0: 支持对象类型 |
880
819
  | autoClearSearchValue | 是否在选中项后清空搜索框,只在 | boolean | true | |
@@ -965,6 +904,18 @@ type RangeDisabledTime = (
965
904
 
966
905
 
967
906
 
907
+ <DemoTitle title="Result" desc="为操作结果提供反馈信息的展示。">
908
+ ## API
909
+
910
+ | 属性名 | 描述 | 类型 | 默认值 |
911
+ |--------|--------|--------|--------|
912
+ | texture | 是否显示纹理 | boolean | false |
913
+
914
+
915
+
916
+
917
+
918
+
968
919
  <DemoTitle title="Slider" desc="滑动型输入器,展示当前值和可选范围。">
969
920
  #### API
970
921
 
@@ -1029,21 +980,77 @@ type RangeDisabledTime = (
1029
980
 
1030
981
 
1031
982
 
1032
- <DemoTitle title="Result" desc="为操作结果提供反馈信息的展示。">
1033
- ## API
983
+ <DemoTitle title="Skeleton" desc="在内容加载时提供占位图形展示。">
984
+ ## antd API
1034
985
 
1035
- | 属性名 | 描述 | 类型 | 默认值 |
986
+ 通用属性参考:[通用属性](/docs/react/common-props)
987
+
988
+ ### Skeleton
989
+
990
+ | 属性 | 说明 | 类型 | 默认值 |
1036
991
  |--------|--------|--------|--------|
1037
- | texture | 是否显示纹理 | boolean | false |
992
+ | active | 是否展示动画效果 | boolean | false |
993
+ | avatar | 是否显示头像占位图 | boolean \| | false |
994
+ | loading | 为 true 时,显示占位图。反之则直接展示子组件 | boolean | - |
995
+ | paragraph | 是否显示段落占位图 | boolean \| | true |
996
+ | round | 为 true 时,段落和标题显示圆角 | boolean | false |
997
+ | title | 是否显示标题占位图 | boolean \| | true |
998
+
999
+
1000
+ ### SkeletonAvatarProps
1001
+
1002
+ | 属性 | 说明 | 类型 | 默认值 |
1003
+ |--------|--------|--------|--------|
1004
+ | active | 是否展示动画效果,仅在单独使用头像骨架时生效 | boolean | false |
1005
+ | shape | 指定头像的形状 | circle | - |
1006
+ | size | 设置头像占位图的大小 | number \| | - |
1007
+
1038
1008
 
1009
+ ### SkeletonTitleProps
1010
+
1011
+ | 属性 | 说明 | 类型 | 默认值 |
1012
+ |--------|--------|--------|--------|
1013
+ | width | 设置标题占位图的宽度 | number \| string | - |
1039
1014
 
1040
1015
 
1016
+ ### SkeletonParagraphProps
1041
1017
 
1018
+ | 属性 | 说明 | 类型 | 默认值 |
1019
+ |--------|--------|--------|--------|
1020
+ | rows | 设置段落占位图的行数 | number | - |
1021
+ | width | 设置段落占位图的宽度,若为数组时则为对应的每行宽度,反之则是最后一行的宽度 | number \| string \| Array | - |
1042
1022
 
1043
1023
 
1044
- <DemoTitle title="Radio" desc="用于在多个备选项中选中单个状态。">
1024
+ ### SkeletonButtonProps
1025
+
1026
+ | 属性 | 说明 | 类型 | 默认值 | 版本 |
1027
+ |--------|--------|--------|--------|--------|
1028
+ | active | 是否展示动画效果 | boolean | false | |
1029
+ | block | 将按钮宽度调整为其父宽度的选项 | boolean | false | 4.17.0 |
1030
+ | shape | 指定按钮的形状 | circle | - | |
1031
+ | size | 设置按钮的大小 | large | - | |
1032
+
1033
+
1034
+ ### SkeletonInputProps
1035
+
1036
+ | 属性 | 说明 | 类型 | 默认值 |
1037
+ |--------|--------|--------|--------|
1038
+ | active | 是否展示动画效果 | boolean | false |
1039
+ | size | 设置输入框的大小 | large | - |
1040
+
1041
+
1042
+
1043
+
1044
+ <DemoTitle title="RadioButton" desc="用于在多个备选项中选中单个状态。">
1045
1045
  #### API
1046
1046
 
1047
+ | 属性名 | 描述 | 类型 | 默认值 |
1048
+ |--------|--------|--------|--------|
1049
+ | bordered | 边框 | boolean | false |
1050
+ | ghost | 按钮背景色类型 | boolean | true |
1051
+ | gap | 间距 | number | 12 px |
1052
+
1053
+
1047
1054
  <AntdApiRef url="https://ant.design/components/radio-cn/#api"></AntdApiRef>
1048
1055
 
1049
1056
 
@@ -1109,33 +1116,9 @@ type RangeDisabledTime = (
1109
1116
 
1110
1117
 
1111
1118
 
1112
- <DemoTitle title="MdEditor" desc="提示词编辑器,可以高亮 Markdown 的语法,支持自定义槽位变量的插入">
1113
- #### API
1114
-
1115
- | 属性名 | 描述 | 类型 | 默认值 |
1116
- |--------|--------|--------|--------|
1117
- | maxLength | 可以输入内容的最大长度 | number | |
1118
- | value | 输入的内容 | string | (必填) |
1119
- | className | 输入内容的类名 | string | |
1120
- | onChange | 输入内容的回调 | (value: string) => void | |
1121
- | variables | 可以插入的变量列表 | Array | |
1122
- | onCreate | 新增变量的触发回调 | () => void | |
1123
- | createBtnText | 新增变量的按钮文本 | string | |
1124
- | tipsText | 提示文本,传入 false 时隐藏提示 | string \| React.ReactNode \| false | |
1125
-
1126
-
1127
-
1128
-
1129
- <DemoTitle title="RadioButton" desc="用于在多个备选项中选中单个状态。">
1119
+ <DemoTitle title="Radio" desc="用于在多个备选项中选中单个状态。">
1130
1120
  #### API
1131
1121
 
1132
- | 属性名 | 描述 | 类型 | 默认值 |
1133
- |--------|--------|--------|--------|
1134
- | bordered | 边框 | boolean | false |
1135
- | ghost | 按钮背景色类型 | boolean | true |
1136
- | gap | 间距 | number | 12 px |
1137
-
1138
-
1139
1122
  <AntdApiRef url="https://ant.design/components/radio-cn/#api"></AntdApiRef>
1140
1123
 
1141
1124
 
@@ -1253,6 +1236,23 @@ type RangeDisabledTime = (
1253
1236
 
1254
1237
 
1255
1238
 
1239
+ <DemoTitle title="MdEditor" desc="提示词编辑器,可以高亮 Markdown 的语法,支持自定义槽位变量的插入">
1240
+ #### API
1241
+
1242
+ | 属性名 | 描述 | 类型 | 默认值 |
1243
+ |--------|--------|--------|--------|
1244
+ | maxLength | 可以输入内容的最大长度 | number | |
1245
+ | value | 输入的内容 | string | (必填) |
1246
+ | className | 输入内容的类名 | string | |
1247
+ | onChange | 输入内容的回调 | (value: string) => void | |
1248
+ | variables | 可以插入的变量列表 | Array | |
1249
+ | onCreate | 新增变量的触发回调 | () => void | |
1250
+ | createBtnText | 新增变量的按钮文本 | string | |
1251
+ | tipsText | 提示文本,传入 false 时隐藏提示 | string \| React.ReactNode \| false | |
1252
+
1253
+
1254
+
1255
+
1256
1256
  <DemoTitle title="Popover" desc="点击/鼠标移入元素,弹出气泡式的卡片浮层">
1257
1257
  #### API
1258
1258
 
@@ -1401,6 +1401,102 @@ type RangeDisabledTime = (
1401
1401
 
1402
1402
 
1403
1403
 
1404
+ <DemoTitle title="Notification" desc="用于指示任务的完成进度">
1405
+ #### API
1406
+
1407
+ <AntdApiRef url="https://ant.design/components/notification-cn/#api"></AntdApiRef>
1408
+
1409
+
1410
+ ## antd API
1411
+
1412
+ 通用属性参考:[通用属性](/docs/react/common-props)
1413
+
1414
+
1415
+ - `notification.success(config)`
1416
+ - `notification.error(config)`
1417
+ - `notification.info(config)`
1418
+ - `notification.warning(config)`
1419
+ - `notification.open(config)`
1420
+ - `notification.destroy(key?: String)`
1421
+
1422
+ config 参数如下:
1423
+
1424
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
1425
+ |--------|--------|--------|--------|--------|
1426
+ | actions | 自定义按钮组 | ReactNode | - | 5.24.0 |
1427
+ | className | 自定义 CSS class | string | - | - |
1428
+ | closeIcon | 自定义关闭图标 | ReactNode | true | 5.7.0:设置为 null 或 false 时隐藏关闭按钮 |
1429
+ | description | 通知提醒内容,必选 | ReactNode | - | - |
1430
+ | duration | 默认 4.5 秒后自动关闭,配置为 null 则不自动关闭 | number | 4.5 | - |
1431
+ | showProgress | 显示自动关闭通知框的进度条 | boolean | | 5.18.0 |
1432
+ | pauseOnHover | 悬停时是否暂停计时器 | boolean | true | 5.18.0 |
1433
+ | icon | 自定义图标 | ReactNode | - | - |
1434
+ | key | 当前通知唯一标志 | string | - | - |
1435
+ | message | 通知提醒标题,必选 | ReactNode | - | - |
1436
+ | placement | 弹出位置,可选 | string | topRight | - |
1437
+ | style | 自定义内联样式 | | - | - |
1438
+ | role | 供屏幕阅读器识别的通知内容语义,默认为 | alert \| status | alert | 5.6.0 |
1439
+ | onClick | 点击通知时触发的回调函数 | function | - | - |
1440
+ | onClose | 当通知关闭时触发 | function | - | - |
1441
+ | props | 透传至通知 | Object | - | - |
1442
+
1443
+
1444
+
1445
+ - `notification.useNotification(config)`
1446
+
1447
+ config 参数如下:
1448
+
1449
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
1450
+ |--------|--------|--------|--------|--------|
1451
+ | bottom | 消息从底部弹出时,距离底部的位置,单位像素 | number | 24 | |
1452
+ | closeIcon | 自定义关闭图标 | ReactNode | true | 5.7.0:设置为 null 或 false 时隐藏关闭按钮 |
1453
+ | getContainer | 配置渲染节点的输出位置 | () => HTMLNode | () => document.body | |
1454
+ | placement | 弹出位置,可选 | string | topRight | |
1455
+ | showProgress | 显示自动关闭通知框的进度条 | boolean | | 5.18.0 |
1456
+ | pauseOnHover | 悬停时是否暂停计时器 | boolean | true | 5.18.0 |
1457
+ | rtl | 是否开启 RTL 模式 | boolean | false | |
1458
+ | stack | 堆叠模式,超过阈值时会将所有消息收起 | boolean \| | { threshold: 3 } | 5.10.0 |
1459
+ | top | 消息从顶部弹出时,距离顶部的位置,单位像素 | number | 24 | |
1460
+ | maxCount | 最大显示数,超过限制时,最早的消息会被自动关闭 | number | - | 4.17.0 |
1461
+
1462
+
1463
+ ### 全局配置
1464
+
1465
+ 还提供了一个全局配置方法,在调用前提前配置,全局一次生效。
1466
+
1467
+ `notification.config(options)`
1468
+
1469
+ 当你使用 `ConfigProvider` 进行全局化配置时,系统会默认自动开启 RTL 模式。(4.3.0+)当你想单独使用,可通过如下设置开启 RTL 模式。
1470
+
1471
+
1472
+ ```js
1473
+ notification.config({
1474
+ placement: 'bottomRight',
1475
+ bottom: 50,
1476
+ duration: 3,
1477
+ rtl: true,
1478
+ });
1479
+ ```
1480
+
1481
+
1482
+ #### notification.config
1483
+
1484
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
1485
+ |--------|--------|--------|--------|--------|
1486
+ | bottom | 消息从底部弹出时,距离底部的位置,单位像素 | number | 24 | |
1487
+ | closeIcon | 自定义关闭图标 | ReactNode | true | 5.7.0:设置为 null 或 false 时隐藏关闭按钮 |
1488
+ | duration | 默认自动关闭延时,单位秒 | number | 4.5 | |
1489
+ | showProgress | 显示自动关闭通知框的进度条 | boolean | | 5.18.0 |
1490
+ | pauseOnHover | 悬停时是否暂停计时器 | boolean | true | 5.18.0 |
1491
+ | getContainer | 配置渲染节点的输出位置,但依旧为全屏展示 | () => HTMLNode | () => document.body | |
1492
+ | placement | 弹出位置,可选 | string | topRight | |
1493
+ | rtl | 是否开启 RTL 模式 | boolean | false | |
1494
+ | top | 消息从顶部弹出时,距离顶部的位置,单位像素 | number | 24 | |
1495
+ | maxCount | 最大显示数,超过限制时,最早的消息会被自动关闭 | number | - | 4.17.0 |
1496
+
1497
+
1498
+
1499
+
1404
1500
  <DemoTitle title="Modal" desc="用于叠加当前页面上的对话框窗口,提供标题、内容区、操作区。">
1405
1501
  #### API
1406
1502
 
@@ -1571,124 +1667,28 @@ const confirmed = await modal.confirm({ ... });
1571
1667
 
1572
1668
 
1573
1669
 
1574
- <DemoTitle title="Notification" desc="用于指示任务的完成进度">
1670
+ <DemoTitle title="Message" desc="一条简洁且临时显示的消息,为操作提供全局反馈">
1575
1671
  #### API
1576
1672
 
1577
- <AntdApiRef url="https://ant.design/components/notification-cn/#api"></AntdApiRef>
1673
+ | 属性名 | 描述 | 类型 | 默认值 |
1674
+ |--------|--------|--------|--------|
1675
+ | conent | 显示的内容 | string | "" |
1676
+
1677
+ <AntdApiRef url="https://ant.design/components/message-cn/#api"></AntdApiRef>
1578
1678
 
1579
1679
 
1580
1680
  ## antd API
1581
1681
 
1582
1682
  通用属性参考:[通用属性](/docs/react/common-props)
1583
1683
 
1684
+ 组件提供了一些静态方法,使用方式和参数如下:
1584
1685
 
1585
- - `notification.success(config)`
1586
- - `notification.error(config)`
1587
- - `notification.info(config)`
1588
- - `notification.warning(config)`
1589
- - `notification.open(config)`
1590
- - `notification.destroy(key?: String)`
1591
1686
 
1592
- config 参数如下:
1593
-
1594
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
1595
- |--------|--------|--------|--------|--------|
1596
- | actions | 自定义按钮组 | ReactNode | - | 5.24.0 |
1597
- | className | 自定义 CSS class | string | - | - |
1598
- | closeIcon | 自定义关闭图标 | ReactNode | true | 5.7.0:设置为 null 或 false 时隐藏关闭按钮 |
1599
- | description | 通知提醒内容,必选 | ReactNode | - | - |
1600
- | duration | 默认 4.5 秒后自动关闭,配置为 null 则不自动关闭 | number | 4.5 | - |
1601
- | showProgress | 显示自动关闭通知框的进度条 | boolean | | 5.18.0 |
1602
- | pauseOnHover | 悬停时是否暂停计时器 | boolean | true | 5.18.0 |
1603
- | icon | 自定义图标 | ReactNode | - | - |
1604
- | key | 当前通知唯一标志 | string | - | - |
1605
- | message | 通知提醒标题,必选 | ReactNode | - | - |
1606
- | placement | 弹出位置,可选 | string | topRight | - |
1607
- | style | 自定义内联样式 | | - | - |
1608
- | role | 供屏幕阅读器识别的通知内容语义,默认为 | alert \| status | alert | 5.6.0 |
1609
- | onClick | 点击通知时触发的回调函数 | function | - | - |
1610
- | onClose | 当通知关闭时触发 | function | - | - |
1611
- | props | 透传至通知 | Object | - | - |
1612
-
1613
-
1614
-
1615
- - `notification.useNotification(config)`
1616
-
1617
- config 参数如下:
1618
-
1619
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
1620
- |--------|--------|--------|--------|--------|
1621
- | bottom | 消息从底部弹出时,距离底部的位置,单位像素 | number | 24 | |
1622
- | closeIcon | 自定义关闭图标 | ReactNode | true | 5.7.0:设置为 null 或 false 时隐藏关闭按钮 |
1623
- | getContainer | 配置渲染节点的输出位置 | () => HTMLNode | () => document.body | |
1624
- | placement | 弹出位置,可选 | string | topRight | |
1625
- | showProgress | 显示自动关闭通知框的进度条 | boolean | | 5.18.0 |
1626
- | pauseOnHover | 悬停时是否暂停计时器 | boolean | true | 5.18.0 |
1627
- | rtl | 是否开启 RTL 模式 | boolean | false | |
1628
- | stack | 堆叠模式,超过阈值时会将所有消息收起 | boolean \| | { threshold: 3 } | 5.10.0 |
1629
- | top | 消息从顶部弹出时,距离顶部的位置,单位像素 | number | 24 | |
1630
- | maxCount | 最大显示数,超过限制时,最早的消息会被自动关闭 | number | - | 4.17.0 |
1631
-
1632
-
1633
- ### 全局配置
1634
-
1635
- 还提供了一个全局配置方法,在调用前提前配置,全局一次生效。
1636
-
1637
- `notification.config(options)`
1638
-
1639
- 当你使用 `ConfigProvider` 进行全局化配置时,系统会默认自动开启 RTL 模式。(4.3.0+)当你想单独使用,可通过如下设置开启 RTL 模式。
1640
-
1641
-
1642
- ```js
1643
- notification.config({
1644
- placement: 'bottomRight',
1645
- bottom: 50,
1646
- duration: 3,
1647
- rtl: true,
1648
- });
1649
- ```
1650
-
1651
-
1652
- #### notification.config
1653
-
1654
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
1655
- |--------|--------|--------|--------|--------|
1656
- | bottom | 消息从底部弹出时,距离底部的位置,单位像素 | number | 24 | |
1657
- | closeIcon | 自定义关闭图标 | ReactNode | true | 5.7.0:设置为 null 或 false 时隐藏关闭按钮 |
1658
- | duration | 默认自动关闭延时,单位秒 | number | 4.5 | |
1659
- | showProgress | 显示自动关闭通知框的进度条 | boolean | | 5.18.0 |
1660
- | pauseOnHover | 悬停时是否暂停计时器 | boolean | true | 5.18.0 |
1661
- | getContainer | 配置渲染节点的输出位置,但依旧为全屏展示 | () => HTMLNode | () => document.body | |
1662
- | placement | 弹出位置,可选 | string | topRight | |
1663
- | rtl | 是否开启 RTL 模式 | boolean | false | |
1664
- | top | 消息从顶部弹出时,距离顶部的位置,单位像素 | number | 24 | |
1665
- | maxCount | 最大显示数,超过限制时,最早的消息会被自动关闭 | number | - | 4.17.0 |
1666
-
1667
-
1668
-
1669
-
1670
- <DemoTitle title="Message" desc="一条简洁且临时显示的消息,为操作提供全局反馈">
1671
- #### API
1672
-
1673
- | 属性名 | 描述 | 类型 | 默认值 |
1674
- |--------|--------|--------|--------|
1675
- | conent | 显示的内容 | string | "" |
1676
-
1677
- <AntdApiRef url="https://ant.design/components/message-cn/#api"></AntdApiRef>
1678
-
1679
-
1680
- ## antd API
1681
-
1682
- 通用属性参考:[通用属性](/docs/react/common-props)
1683
-
1684
- 组件提供了一些静态方法,使用方式和参数如下:
1685
-
1686
-
1687
- - `message.success(content, [duration], onClose)`
1688
- - `message.error(content, [duration], onClose)`
1689
- - `message.info(content, [duration], onClose)`
1690
- - `message.warning(content, [duration], onClose)`
1691
- - `message.loading(content, [duration], onClose)`
1687
+ - `message.success(content, [duration], onClose)`
1688
+ - `message.error(content, [duration], onClose)`
1689
+ - `message.info(content, [duration], onClose)`
1690
+ - `message.warning(content, [duration], onClose)`
1691
+ - `message.loading(content, [duration], onClose)`
1692
1692
 
1693
1693
  | 参数 | 说明 | 类型 | 默认值 |
1694
1694
  |--------|--------|--------|--------|
@@ -1767,137 +1767,55 @@ message.config({
1767
1767
 
1768
1768
 
1769
1769
 
1770
- <DemoTitle title="Input" desc="通过鼠标或键盘输入内容,为表单提供输入字段的基础容器。。">
1770
+ <DemoTitle title="InputNumber" desc="通过鼠标或键盘,输入范围内的数值。">
1771
1771
  #### API
1772
1772
 
1773
- | 属性名 | 描述 | 类型 | 默认值 |
1774
- |--------|--------|--------|--------|
1775
- | shape | 形态 | 'default' \| 'round' | default 默认 |
1776
-
1777
-
1778
- <AntdApiRef url="https://ant.design/components/input-cn/#api"></AntdApiRef>
1773
+ <AntdApiRef url="https://ant.design/components/input-number-cn/#api"></AntdApiRef>
1779
1774
 
1780
1775
 
1781
1776
  ## antd API
1782
1777
 
1783
1778
  通用属性参考:[通用属性](/docs/react/common-props)
1784
1779
 
1785
- ### Input
1786
-
1787
1780
  | 参数 | 说明 | 类型 | 默认值 | 版本 |
1788
1781
  |--------|--------|--------|--------|--------|
1789
- | addonAfter | 带标签的 input,设置后置标签 | ReactNode | - | |
1790
- | addonBefore | 带标签的 input,设置前置标签 | ReactNode | - | |
1791
- | allowClear | 可以点击清除图标删除内容 | boolean \| { clearIcon: ReactNode } | - | |
1792
- | classNames | 语义化结构 class | Record< | - | 5.4.0 |
1793
- | count | 字符计数配置 | | - | 5.10.0 |
1794
- | defaultValue | 输入框默认内容 | string | - | |
1795
- | disabled | 是否禁用状态,默认为 false | boolean | false | |
1796
- | id | 输入框的 id | string | - | |
1797
- | maxLength | 最大长度 | number | - | |
1798
- | prefix | 带有前缀图标的 input | ReactNode | - | |
1799
- | showCount | 是否展示字数 | boolean \| { formatter: (info: { value: string, count: number, maxLength?: number }) => ReactNode } | false | 4.18.0 info.value: 4.23.0 |
1782
+ | addonAfter | 带标签的 input,设置后置标签 | ReactNode | - | 4.17.0 |
1783
+ | addonBefore | 带标签的 input,设置前置标签 | ReactNode | - | 4.17.0 |
1784
+ | autoFocus | 自动获取焦点 | boolean | false | - |
1785
+ | changeOnBlur | 是否在失去焦点时,触发 | boolean | true | 5.11.0 |
1786
+ | changeOnWheel | 允许鼠标滚轮改变数值 | boolean | - | 5.14.0 |
1787
+ | controls | 是否显示增减按钮,也可设置自定义箭头图标 | boolean \| { upIcon?: React.ReactNode; downIcon?: React.ReactNode; } | - | 4.19.0 |
1788
+ | decimalSeparator | 小数点 | string | - | - |
1789
+ | placeholder | 占位符 | string | - | |
1790
+ | defaultValue | 初始值 | number | - | - |
1791
+ | disabled | 禁用 | boolean | false | - |
1792
+ | formatter | 指定输入框展示值的格式 | function(value: number \| string, info: { userTyping: boolean, input: string }): string | - | info: 4.17.0 |
1793
+ | keyboard | 是否启用键盘快捷行为 | boolean | true | 4.12.0 |
1794
+ | max | 最大值 | number | | - |
1795
+ | min | 最小值 | number | | - |
1796
+ | parser | 指定从 | function(string): number | - | - |
1797
+ | precision | 数值精度,配置 | number | - | - |
1798
+ | readOnly | 只读 | boolean | false | - |
1800
1799
  | status | 设置校验状态 | 'error' \| 'warning' | - | 4.19.0 |
1801
- | styles | 语义化结构 style | Record< | - | 5.4.0 |
1802
- | size | 控件大小。注:标准表单内的输入框大小限制为 | large | - | |
1803
- | suffix | 带有后缀图标的 input | ReactNode | - | |
1804
- | type | 声明 input 类型,同原生 input 标签的 type 属性,见: | string | text | |
1805
- | value | 输入框内容 | string | - | |
1800
+ | prefix | 带有前缀图标的 input | ReactNode | - | 4.17.0 |
1801
+ | suffix | 带有后缀图标的 input | ReactNode | - | 5.20.0 |
1802
+ | size | 输入框大小 | large | - | - |
1803
+ | step | 每次改变步数,可以为小数 | number \| string | 1 | - |
1804
+ | stringMode | 字符值模式,开启后支持高精度小数。同时 | boolean | false | 4.13.0 |
1805
+ | value | 当前值 | number | - | - |
1806
1806
  | variant | 形态变体 | outlined | outlined | 5.13.0 \| |
1807
- | onChange | 输入框内容变化时的回调 | function(e) | - | |
1808
- | onPressEnter | 按下回车的回调 | function(e) | - | |
1809
- | onClear | 按下清除按钮的回调 | () => void | - | 5.20.0 |
1810
-
1811
-
1812
- 如果 `Input` 在 `Form.Item` 内,并且 `Form.Item` 设置了 `id` 属性,则 `value` `defaultValue` 和 `id` 属性会被自动设置。
1813
-
1814
- Input 的其他属性和 React 自带的 [input](https://reactjs.org/docs/dom-elements.html#all-supported-html-attributes) 一致。
1815
-
1816
- #### CountConfig
1817
-
1818
-
1819
- ```tsx
1820
- interface CountConfig {
1821
- // 最大字符数,不同于原生 `maxLength`,超出后标红但不会截断
1822
- max?: number;
1823
- // 自定义字符计数,例如标准 emoji 长度大于 1,可以自定义计数策略将其改为 1
1824
- strategy?: (value: string) => number;
1825
- // 同 `showCount`
1826
- show?: boolean | ((args: { value: string; count: number; maxLength?: number }) => ReactNode);
1827
- // 当字符数超出 `count.max` 时的自定义裁剪逻辑,不配置时不进行裁剪
1828
- exceedFormatter?: (value: string, config: { max: number }) => string;
1829
- }
1830
- ```
1831
-
1832
-
1833
- ### Input.TextArea
1834
-
1835
- 同 Input 属性,外加:
1836
-
1837
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
1838
- |--------|--------|--------|--------|--------|
1839
- | autoSize | 自适应内容高度,可设置为 true \| false 或对象:{ minRows: 2, maxRows: 6 } | boolean \| object | false | |
1840
- | classNames | 语义化结构 class | Record< | - | 5.4.0 |
1841
- | styles | 语义化结构 style | Record< | - | 5.4.0 |
1842
-
1843
-
1844
- `Input.TextArea` 的其他属性和浏览器自带的 [textarea](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea) 一致。
1845
-
1846
- ### Input.Search
1847
-
1848
- | 参数 | 说明 | 类型 | 默认值 |
1849
- |--------|--------|--------|--------|
1850
- | enterButton | 是否有确认按钮,可设为按钮文字。该属性会与 | ReactNode | false |
1851
- | loading | 搜索 loading | boolean | false |
1852
- | onSearch | 点击搜索图标、清除图标,或按下回车键时的回调 | function(value, event, { source: "input" \| "clear" }) | - |
1853
-
1854
-
1855
- 其余属性和 Input 一致。
1856
-
1857
- ### Input.Password
1858
-
1859
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
1860
- |--------|--------|--------|--------|--------|
1861
- | iconRender | 自定义切换按钮 | (visible) => ReactNode | (visible) => (visible ? : ) | 4.3.0 |
1862
- | visibilityToggle | 是否显示切换按钮或者控制密码显隐 | boolean \| | true | |
1863
-
1864
-
1865
- ### Input.OTP
1866
-
1867
- `5.16.0` 新增。
1868
-
1869
- 开发者注意事项:当 `mask` 属性的类型为 string 时,我们强烈推荐接收单个字符或单个 emoji,如果传入多个字符或多个 emoji,则会在控制台抛出警告。
1870
-
1871
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
1872
- |--------|--------|--------|--------|--------|
1873
- | defaultValue | 默认值 | string | - | |
1874
- | disabled | 是否禁用 | boolean | false | |
1875
- | formatter | 格式化展示,留空字段会被 | (value: string) => string | - | |
1876
- | separator | 分隔符,在指定索引的输入框后渲染分隔符 | ReactNode \|((i: number) => ReactNode) | - | 5.24.0 |
1877
- | mask | 自定义展示,和 | boolean \| string | false | 5.17.0 |
1878
- | length | 输入元素数量 | number | 6 | |
1879
- | status | 设置校验状态 | 'error' \| 'warning' | - | |
1880
- | size | 输入框大小 | small | middle | |
1881
- | variant | 形态变体 | outlined | outlined | underlined |
1882
- | value | 输入框内容 | string | - | |
1883
- | onChange | 当输入框内容全部填充时触发回调 | (value: string) => void | - | |
1884
- | onInput | 输入值变化时触发的回调 | (value: string[]) => void | - | 5.22.0 |
1885
-
1886
-
1887
- #### VisibilityToggle
1888
-
1889
- | Property | Description | Type | Default | Version |
1890
- |--------|--------|--------|--------|--------|
1891
- | visible | 用于手动控制密码显隐 | boolean | false | 4.24 |
1892
- | onVisibleChange | 显隐密码的回调 | (visible) => void | - | 4.24 |
1807
+ | onChange | 变化回调 | function(value: number \| string \| null) | - | - |
1808
+ | onPressEnter | 按下回车的回调 | function(e) | - | - |
1809
+ | onStep | 点击上下箭头的回调 | (value: number, info: { offset: number, type: 'up' \| 'down' }) => void | - | 4.7.0 |
1893
1810
 
1894
1811
 
1895
- #### Input Methods
1812
+ ## Ref
1896
1813
 
1897
1814
  | 名称 | 说明 | 参数 | 版本 |
1898
1815
  |--------|--------|--------|--------|
1899
- | blur | 取消焦点 | - | |
1900
- | focus | 获取焦点 | (option?: { preventScroll?: boolean, cursor?: 'start' \| 'end' \| 'all' }) | option - 4.10.0 |
1816
+ | blur() | 移除焦点 | - | |
1817
+ | focus() | 获取焦点 | (option?: { preventScroll?: boolean, cursor?: 'start' \| 'end' \| 'all' }) | cursor - 5.22.0 |
1818
+ | nativeElement | 获取原生 DOM 元素 | - | 5.17.3 |
1901
1819
 
1902
1820
 
1903
1821
 
@@ -2069,55 +1987,137 @@ type TransformAction =
2069
1987
 
2070
1988
 
2071
1989
 
2072
- <DemoTitle title="InputNumber" desc="通过鼠标或键盘,输入范围内的数值。">
1990
+ <DemoTitle title="Input" desc="通过鼠标或键盘输入内容,为表单提供输入字段的基础容器。。">
2073
1991
  #### API
2074
1992
 
2075
- <AntdApiRef url="https://ant.design/components/input-number-cn/#api"></AntdApiRef>
1993
+ | 属性名 | 描述 | 类型 | 默认值 |
1994
+ |--------|--------|--------|--------|
1995
+ | shape | 形态 | 'default' \| 'round' | default 默认 |
1996
+
1997
+
1998
+ <AntdApiRef url="https://ant.design/components/input-cn/#api"></AntdApiRef>
2076
1999
 
2077
2000
 
2078
2001
  ## antd API
2079
2002
 
2080
2003
  通用属性参考:[通用属性](/docs/react/common-props)
2081
2004
 
2005
+ ### Input
2006
+
2082
2007
  | 参数 | 说明 | 类型 | 默认值 | 版本 |
2083
2008
  |--------|--------|--------|--------|--------|
2084
- | addonAfter | 带标签的 input,设置后置标签 | ReactNode | - | 4.17.0 |
2085
- | addonBefore | 带标签的 input,设置前置标签 | ReactNode | - | 4.17.0 |
2086
- | autoFocus | 自动获取焦点 | boolean | false | - |
2087
- | changeOnBlur | 是否在失去焦点时,触发 | boolean | true | 5.11.0 |
2088
- | changeOnWheel | 允许鼠标滚轮改变数值 | boolean | - | 5.14.0 |
2089
- | controls | 是否显示增减按钮,也可设置自定义箭头图标 | boolean \| { upIcon?: React.ReactNode; downIcon?: React.ReactNode; } | - | 4.19.0 |
2090
- | decimalSeparator | 小数点 | string | - | - |
2091
- | placeholder | 占位符 | string | - | |
2092
- | defaultValue | 初始值 | number | - | - |
2093
- | disabled | 禁用 | boolean | false | - |
2094
- | formatter | 指定输入框展示值的格式 | function(value: number \| string, info: { userTyping: boolean, input: string }): string | - | info: 4.17.0 |
2095
- | keyboard | 是否启用键盘快捷行为 | boolean | true | 4.12.0 |
2096
- | max | 最大值 | number | | - |
2097
- | min | 最小值 | number | | - |
2098
- | parser | 指定从 | function(string): number | - | - |
2099
- | precision | 数值精度,配置 | number | - | - |
2100
- | readOnly | 只读 | boolean | false | - |
2009
+ | addonAfter | 带标签的 input,设置后置标签 | ReactNode | - | |
2010
+ | addonBefore | 带标签的 input,设置前置标签 | ReactNode | - | |
2011
+ | allowClear | 可以点击清除图标删除内容 | boolean \| { clearIcon: ReactNode } | - | |
2012
+ | classNames | 语义化结构 class | Record< | - | 5.4.0 |
2013
+ | count | 字符计数配置 | | - | 5.10.0 |
2014
+ | defaultValue | 输入框默认内容 | string | - | |
2015
+ | disabled | 是否禁用状态,默认为 false | boolean | false | |
2016
+ | id | 输入框的 id | string | - | |
2017
+ | maxLength | 最大长度 | number | - | |
2018
+ | prefix | 带有前缀图标的 input | ReactNode | - | |
2019
+ | showCount | 是否展示字数 | boolean \| { formatter: (info: { value: string, count: number, maxLength?: number }) => ReactNode } | false | 4.18.0 info.value: 4.23.0 |
2101
2020
  | status | 设置校验状态 | 'error' \| 'warning' | - | 4.19.0 |
2102
- | prefix | 带有前缀图标的 input | ReactNode | - | 4.17.0 |
2103
- | suffix | 带有后缀图标的 input | ReactNode | - | 5.20.0 |
2104
- | size | 输入框大小 | large | - | - |
2105
- | step | 每次改变步数,可以为小数 | number \| string | 1 | - |
2106
- | stringMode | 字符值模式,开启后支持高精度小数。同时 | boolean | false | 4.13.0 |
2107
- | value | 当前值 | number | - | - |
2021
+ | styles | 语义化结构 style | Record< | - | 5.4.0 |
2022
+ | size | 控件大小。注:标准表单内的输入框大小限制为 | large | - | |
2023
+ | suffix | 带有后缀图标的 input | ReactNode | - | |
2024
+ | type | 声明 input 类型,同原生 input 标签的 type 属性,见: | string | text | |
2025
+ | value | 输入框内容 | string | - | |
2108
2026
  | variant | 形态变体 | outlined | outlined | 5.13.0 \| |
2109
- | onChange | 变化回调 | function(value: number \| string \| null) | - | - |
2110
- | onPressEnter | 按下回车的回调 | function(e) | - | - |
2111
- | onStep | 点击上下箭头的回调 | (value: number, info: { offset: number, type: 'up' \| 'down' }) => void | - | 4.7.0 |
2027
+ | onChange | 输入框内容变化时的回调 | function(e) | - | |
2028
+ | onPressEnter | 按下回车的回调 | function(e) | - | |
2029
+ | onClear | 按下清除按钮的回调 | () => void | - | 5.20.0 |
2112
2030
 
2113
2031
 
2114
- ## Ref
2032
+ 如果 `Input` 在 `Form.Item` 内,并且 `Form.Item` 设置了 `id` 属性,则 `value` `defaultValue` 和 `id` 属性会被自动设置。
2033
+
2034
+ Input 的其他属性和 React 自带的 [input](https://reactjs.org/docs/dom-elements.html#all-supported-html-attributes) 一致。
2035
+
2036
+ #### CountConfig
2037
+
2038
+
2039
+ ```tsx
2040
+ interface CountConfig {
2041
+ // 最大字符数,不同于原生 `maxLength`,超出后标红但不会截断
2042
+ max?: number;
2043
+ // 自定义字符计数,例如标准 emoji 长度大于 1,可以自定义计数策略将其改为 1
2044
+ strategy?: (value: string) => number;
2045
+ // 同 `showCount`
2046
+ show?: boolean | ((args: { value: string; count: number; maxLength?: number }) => ReactNode);
2047
+ // 当字符数超出 `count.max` 时的自定义裁剪逻辑,不配置时不进行裁剪
2048
+ exceedFormatter?: (value: string, config: { max: number }) => string;
2049
+ }
2050
+ ```
2051
+
2052
+
2053
+ ### Input.TextArea
2054
+
2055
+ 同 Input 属性,外加:
2056
+
2057
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2058
+ |--------|--------|--------|--------|--------|
2059
+ | autoSize | 自适应内容高度,可设置为 true \| false 或对象:{ minRows: 2, maxRows: 6 } | boolean \| object | false | |
2060
+ | classNames | 语义化结构 class | Record< | - | 5.4.0 |
2061
+ | styles | 语义化结构 style | Record< | - | 5.4.0 |
2062
+
2063
+
2064
+ `Input.TextArea` 的其他属性和浏览器自带的 [textarea](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea) 一致。
2065
+
2066
+ ### Input.Search
2067
+
2068
+ | 参数 | 说明 | 类型 | 默认值 |
2069
+ |--------|--------|--------|--------|
2070
+ | enterButton | 是否有确认按钮,可设为按钮文字。该属性会与 | ReactNode | false |
2071
+ | loading | 搜索 loading | boolean | false |
2072
+ | onSearch | 点击搜索图标、清除图标,或按下回车键时的回调 | function(value, event, { source: "input" \| "clear" }) | - |
2073
+
2074
+
2075
+ 其余属性和 Input 一致。
2076
+
2077
+ ### Input.Password
2078
+
2079
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2080
+ |--------|--------|--------|--------|--------|
2081
+ | iconRender | 自定义切换按钮 | (visible) => ReactNode | (visible) => (visible ? : ) | 4.3.0 |
2082
+ | visibilityToggle | 是否显示切换按钮或者控制密码显隐 | boolean \| | true | |
2083
+
2084
+
2085
+ ### Input.OTP
2086
+
2087
+ `5.16.0` 新增。
2088
+
2089
+ 开发者注意事项:当 `mask` 属性的类型为 string 时,我们强烈推荐接收单个字符或单个 emoji,如果传入多个字符或多个 emoji,则会在控制台抛出警告。
2090
+
2091
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2092
+ |--------|--------|--------|--------|--------|
2093
+ | defaultValue | 默认值 | string | - | |
2094
+ | disabled | 是否禁用 | boolean | false | |
2095
+ | formatter | 格式化展示,留空字段会被 | (value: string) => string | - | |
2096
+ | separator | 分隔符,在指定索引的输入框后渲染分隔符 | ReactNode \|((i: number) => ReactNode) | - | 5.24.0 |
2097
+ | mask | 自定义展示,和 | boolean \| string | false | 5.17.0 |
2098
+ | length | 输入元素数量 | number | 6 | |
2099
+ | status | 设置校验状态 | 'error' \| 'warning' | - | |
2100
+ | size | 输入框大小 | small | middle | |
2101
+ | variant | 形态变体 | outlined | outlined | underlined |
2102
+ | value | 输入框内容 | string | - | |
2103
+ | onChange | 当输入框内容全部填充时触发回调 | (value: string) => void | - | |
2104
+ | onInput | 输入值变化时触发的回调 | (value: string[]) => void | - | 5.22.0 |
2105
+
2106
+
2107
+ #### VisibilityToggle
2108
+
2109
+ | Property | Description | Type | Default | Version |
2110
+ |--------|--------|--------|--------|--------|
2111
+ | visible | 用于手动控制密码显隐 | boolean | false | 4.24 |
2112
+ | onVisibleChange | 显隐密码的回调 | (visible) => void | - | 4.24 |
2113
+
2114
+
2115
+ #### Input Methods
2115
2116
 
2116
2117
  | 名称 | 说明 | 参数 | 版本 |
2117
2118
  |--------|--------|--------|--------|
2118
- | blur() | 移除焦点 | - | |
2119
- | focus() | 获取焦点 | (option?: { preventScroll?: boolean, cursor?: 'start' \| 'end' \| 'all' }) | cursor - 5.22.0 |
2120
- | nativeElement | 获取原生 DOM 元素 | - | 5.17.3 |
2119
+ | blur | 取消焦点 | - | |
2120
+ | focus | 获取焦点 | (option?: { preventScroll?: boolean, cursor?: 'start' \| 'end' \| 'all' }) | option - 4.10.0 |
2121
2121
 
2122
2122
 
2123
2123
 
@@ -2168,1228 +2168,1155 @@ type PresetColors = 'blue' | 'purple' | 'cyan' | 'green' | 'magenta' | 'pink' |
2168
2168
 
2169
2169
 
2170
2170
 
2171
- <DemoTitle title="Form" desc="高性能表单控件,自带数据域管理。包含数据录入、校验以及对应样式。">
2172
- #### API
2173
-
2174
- <AntdApiRef url="https://ant.design/components/form-cn/#api"></AntdApiRef>
2171
+ <DemoTitle title="Empty" desc="用于空状态的占位图形展示。">
2172
+ ## API
2175
2173
 
2174
+ | 属性名 | 描述 | 类型 | 默认值 |
2175
+ |--------|--------|--------|--------|
2176
+ | type | 空状态类型 | \| 'noData'
2177
+ \| 'networkError'
2178
+ \| '404'
2179
+ \| 'arrears'
2180
+ \| 'desktopOnly'
2181
+ \| 'noAudio'
2182
+ \| 'noImage'
2183
+ \| 'noVideo'
2184
+ \| 'noAccess'
2185
+ \| 'error'
2186
+ \| 'noChat'
2187
+ \| 'noModel'
2188
+ \| 'noApp'
2189
+ \| 'success'
2190
+ \| 'failed'
2191
+ \| 'inProgress'
2192
+ \| 'stayTuned' | 'noData' |
2193
+ | texture | 是否显示纹理 | boolean | true |
2194
+ | image | 图片地址 | string | 默认是no data的图片 |
2195
+ | imageStyle | 图片样式 | React.CSSProperties | |
2196
+ | title | 标题内容 | React.ReactNode | |
2197
+ | description | 自定义描述内容 | React.ReactNode | |
2198
+ | onOk | ok按钮的点击事件 | (e: React.MouseEvent) => void | |
2199
+ | okText | ok按钮的文本 | React.ReactNode | |
2200
+ | okType | ok按钮的类型 | SparkButtonProps['type'] | 'primary' |
2201
+ | okButtonProps | ok按钮的props | SparkButtonProps | |
2202
+ | children | 自定义空状态的内容 | React.ReactNode | |
2203
+ | className | 自定义空状态的类名 | string | |
2204
+ | style | 自定义空状态的样式 | React.CSSProperties | |
2205
+ | size | 自定义空状态的大小 | React.CSSProperties['width'] | |
2206
+ | autoFit | 是否自适应容器宽度,当容器宽度小于 size 时自动缩放 | boolean | false |
2176
2207
 
2177
- ## antd API
2178
2208
 
2179
- 通用属性参考:[通用属性](/docs/react/common-props)
2209
+ <AntdApiRef url="https://ant.design/components/empty-cn/#api"></AntdApiRef>
2180
2210
 
2181
- ### Form
2182
2211
 
2183
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
2184
- |--------|--------|--------|--------|--------|
2185
- | colon | 配置 Form.Item 的 | boolean | true | |
2186
- | disabled | 设置表单组件禁用,仅对 antd 组件有效 | boolean | false | 4.21.0 |
2187
- | component | 设置 Form 渲染元素,为 | ComponentType \| false | form | |
2188
- | fields | 通过状态管理(如 redux)控制表单字段,如非强需求不推荐使用。查看 | | - | |
2189
- | form | 经 | | - | |
2190
- | feedbackIcons | 当 | | - | 5.9.0 |
2191
- | initialValues | 表单默认值,只有初始化以及重置时生效 | object | - | |
2192
- | labelAlign | label 标签的文本对齐方式 | left | right | |
2193
- | labelWrap | label 标签的文本换行方式 | boolean | false | 4.18.0 |
2194
- | labelCol | label 标签布局,同 | | - | |
2195
- | layout | 表单布局 | horizontal | horizontal | |
2196
- | name | 表单名称,会作为表单字段 | string | - | |
2197
- | preserve | 当字段被删除时保留字段值。你可以通过 | boolean | true | 4.4.0 |
2198
- | requiredMark | 必选样式,可以切换为必选或者可选展示样式。此为 Form 配置,Form.Item 无法单独配置 | boolean \| | true | renderProps |
2199
- | scrollToFirstError | 提交失败自动滚动到第一个错误字段 | boolean \| | false | focus: 5.24.0 |
2200
- | size | 设置字段组件的尺寸(仅限 antd 组件) | small | - | |
2201
- | validateMessages | 验证提示模板,说明 | | - | |
2202
- | validateTrigger | 统一设置字段触发验证的时机 | string \| string[] | onChange | 4.3.0 |
2203
- | variant | 表单内控件变体 | outlined | outlined | 5.13.0 \| |
2204
- | wrapperCol | 需要为输入控件设置布局样式时,使用该属性,用法同 labelCol | | - | |
2205
- | onFieldsChange | 字段更新时触发回调事件 | function(changedFields, allFields) | - | |
2206
- | onFinish | 提交表单且数据验证成功后回调事件 | function(values) | - | |
2207
- | onFinishFailed | 提交表单且数据验证失败后回调事件 | function({ values, errorFields, outOfDate }) | - | |
2208
- | onValuesChange | 字段值更新时触发回调事件 | function(changedValues, allValues) | - | |
2209
- | clearOnDestroy | 当表单被卸载时清空表单值 | boolean | false | 5.18.0 |
2210
2212
 
2211
2213
 
2212
- 支持原生 form 除 `onSubmit` 外的所有属性。
2213
2214
 
2214
- ### validateMessages
2215
+ <DemoTitle title="FloatButton" desc="用于网站上的全局功能;无论浏览到何处都可以看见的按钮。">
2216
+ #### API
2215
2217
 
2216
- Form 为验证提供了[默认的错误提示信息](https://github.com/ant-design/ant-design/blob/6234509d18bac1ac60fbb3f92a5b2c6a6361295a/components/locale/en_US.ts#L88-L134),你可以通过配置 `validateMessages` 属性,修改对应的提示模板。一种常见的使用方式,是配置国际化提示信息:
2218
+ <AntdApiRef url="https://ant.design/components/float-button-cn/#api"></AntdApiRef>
2217
2219
 
2218
2220
 
2219
- ```jsx
2220
- const validateMessages = {
2221
- required: "'${name}' 是必选字段",
2222
- // ...
2223
- };
2221
+ ## antd API
2224
2222
 
2225
- <Form validateMessages={validateMessages} />;
2226
- ```
2223
+ 通用属性参考:[通用属性](/docs/react/common-props)
2227
2224
 
2225
+ 自 `antd@5.0.0` 版本开始提供该组件。
2228
2226
 
2229
- 此外,[ConfigProvider](/components/config-provider-cn) 也提供了全局化配置方案,允许统一配置错误提示模板:
2227
+ ### 共同的 API
2230
2228
 
2229
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2230
+ |--------|--------|--------|--------|--------|
2231
+ | icon | 自定义图标 | ReactNode | - | |
2232
+ | description | 文字及其它内容 | ReactNode | - | |
2233
+ | tooltip | 气泡卡片的内容 | ReactNode \| | - | TooltipProps: 5.25.0 |
2234
+ | type | 设置按钮类型 | default | default | |
2235
+ | shape | 设置按钮形状 | circle | circle | |
2236
+ | onClick | 点击按钮时的回调 | (event) => void | - | |
2237
+ | href | 点击跳转的地址,指定此属性 button 的行为和 a 链接一致 | string | - | |
2238
+ | target | 相当于 a 标签的 target 属性,href 存在时生效 | string | - | |
2239
+ | htmlType | 设置 | submit | button | 5.21.0 |
2240
+ | badge | 带徽标数字的悬浮按钮(不支持 | | - | 5.4.0 |
2231
2241
 
2232
- ```jsx
2233
- const validateMessages = {
2234
- required: "'${name}' 是必选字段",
2235
- // ...
2236
- };
2237
2242
 
2238
- <ConfigProvider form={{ validateMessages }}>
2239
- <Form />
2240
- </ConfigProvider>;
2241
- ```
2243
+ ### FloatButton.Group
2242
2244
 
2245
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2246
+ |--------|--------|--------|--------|--------|
2247
+ | shape | 设置包含的 FloatButton 按钮形状 | circle | circle | |
2248
+ | trigger | 触发方式(有触发方式为菜单模式) | click | - | |
2249
+ | open | 受控展开,需配合 trigger 一起使用 | boolean | - | |
2250
+ | closeIcon | 自定义关闭按钮 | React.ReactNode | | |
2251
+ | placement | 自定义菜单弹出位置 | top | top | 5.21.0 |
2252
+ | onOpenChange | 展开收起时的回调,需配合 trigger 一起使用 | (open: boolean) => void | - | |
2253
+ | onClick | 点击按钮时的回调(仅在菜单模式中有效) | (event) => void | - | 5.3.0 |
2243
2254
 
2244
- ## Form.Item
2245
2255
 
2246
- 表单字段组件,用于数据双向绑定、校验、布局等。
2256
+ ### FloatButton.BackTop
2247
2257
 
2248
2258
  | 参数 | 说明 | 类型 | 默认值 | 版本 |
2249
2259
  |--------|--------|--------|--------|--------|
2250
- | colon | 配合 | boolean | true | |
2251
- | dependencies | 设置依赖字段,说明 | | - | |
2252
- | extra | 额外的提示信息,和 | ReactNode | - | |
2253
- | getValueFromEvent | 设置如何将 event 的值转换成字段值 | (..args: any[]) => any | - | |
2254
- | getValueProps | 为子元素添加额外的属性 (不建议通过 | (value: any) => Record | - | 4.2.0 |
2255
- | hasFeedback | 配合 | boolean \| { icons: | false | icons: 5.9.0 |
2256
- | help | 提示信息,如不设置,则会根据校验规则自动生成 | ReactNode | - | |
2257
- | hidden | 是否隐藏字段(依然会收集和校验字段) | boolean | false | 4.4.0 |
2258
- | htmlFor | 设置子元素 label | string | - | |
2259
- | initialValue | 设置子元素默认值,如果与 Form 的 | string | - | 4.2.0 |
2260
- | label | label | ReactNode | - | null: 5.22.0 |
2261
- | labelAlign | 标签文本对齐方式 | left | right | |
2262
- | labelCol | label | | - | |
2263
- | messageVariables | 默认验证字段的信息,查看 | Record | - | 4.7.0 |
2264
- | name | 字段名,支持数组 | | - | |
2265
- | normalize | 组件获取值后进行转换,再放入 Form 中。不支持异步 | (value, prevValue, prevValues) => any | - | |
2266
- | noStyle | 为 | boolean | false | |
2267
- | preserve | 当字段被删除时保留字段值 | boolean | true | 4.4.0 |
2268
- | required | 必填样式设置。如不设置,则会根据校验规则自动生成 | boolean | false | |
2269
- | rules | 校验规则,设置字段的校验逻辑。点击 | | - | |
2270
- | shouldUpdate | 自定义字段更新逻辑,说明 | boolean \| (prevValue, curValue) => boolean | false | |
2271
- | tooltip | 配置提示信息 | ReactNode \| | - | 4.7.0 |
2272
- | trigger | 设置收集字段值变更的时机。点击 | string | onChange | |
2273
- | validateFirst | 当某一规则校验不通过时,是否停止剩下的规则的校验。设置 | boolean \| | false | parallel |
2274
- | validateDebounce | 设置防抖,延迟毫秒数后进行校验 | number | - | 5.9.0 |
2275
- | validateStatus | 校验状态,如不设置,则会根据校验规则自动生成,可选:'success' 'warning' 'error' 'validating' | string | - | |
2276
- | validateTrigger | 设置字段校验的时机 | string \| string[] | onChange | |
2277
- | valuePropName | 子节点的值的属性。注意:Switch、Checkbox 的 valuePropName 应该是 | string | value | |
2278
- | wrapperCol | 需要为输入控件设置布局样式时,使用该属性,用法同 | | - | |
2279
- | layout | 表单项布局 | horizontal | - | 5.18.0 |
2260
+ | duration | 回到顶部所需时间(ms) | number | 450 | |
2261
+ | target | 设置需要监听其滚动事件的元素 | () => HTMLElement | () => window | |
2262
+ | visibilityHeight | 滚动高度达到此参数值才出现 BackTop | number | 400 | |
2263
+ | onClick | 点击按钮的回调函数 | () => void | - | |
2280
2264
 
2281
2265
 
2282
- 被设置了 `name` 属性的 `Form.Item` 包装的控件,表单控件会自动添加 `value`(或 `valuePropName` 指定的其他属性) `onChange`(或 `trigger` 指定的其他属性),数据同步将被 Form 接管,这会导致以下结果:
2283
2266
 
2284
2267
 
2285
- 1. 你**不再需要也不应该**用 `onChange` 来做数据收集同步(你可以使用 Form 的 `onValuesChange`),但还是可以继续监听 `onChange` 事件。
2286
- 2. 你不能用控件的 `value` 或 `defaultValue` 等属性来设置表单域的值,默认值可以用 Form 里的 `initialValues` 来设置。注意 `initialValues` 不能被 `setState` 动态更新,你需要用 `setFieldsValue` 来更新。
2287
- 3. 你不应该用 `setState`,可以使用 `form.setFieldsValue` 来动态改变表单值。
2268
+ <DemoTitle title="Dropdown" desc="向下弹出的列表。">
2269
+ #### API
2288
2270
 
2289
- ### dependencies
2271
+ <AntdApiRef url="https://ant.design/components/dropdown-cn/#api"></AntdApiRef>
2290
2272
 
2291
- 当字段间存在依赖关系时使用。如果一个字段设置了 `dependencies` 属性。那么它所依赖的字段更新时,该字段将自动触发更新与校验。一种常见的场景,就是注册用户表单的“密码”与“确认密码”字段。“确认密码”校验依赖于“密码”字段,设置 `dependencies` 后,“密码”字段更新会重新触发“校验密码”的校验逻辑。你可以参考[具体例子](#form-demo-dependencies)。
2292
2273
 
2293
- `dependencies` 不应和 `shouldUpdate` 一起使用,因为这可能带来更新逻辑的混乱。
2274
+ ## antd API
2294
2275
 
2295
- ### FeedbackIcons
2276
+ 通用属性参考:[通用属性](/docs/react/common-props)
2296
2277
 
2297
- `({ status: ValidateStatus, errors: ReactNode, warnings: ReactNode }) => Record<ValidateStatus, ReactNode>`
2278
+ ### Dropdown
2298
2279
 
2299
- ### shouldUpdate
2280
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2281
+ |--------|--------|--------|--------|--------|
2282
+ | arrow | 下拉框箭头是否显示 | boolean \| { pointAtCenter: boolean } | false | |
2283
+ | autoAdjustOverflow | 下拉框被遮挡时自动调整位置 | boolean | true | 5.2.0 |
2284
+ | autoFocus | 打开后自动聚焦下拉框 | boolean | false | 4.21.0 |
2285
+ | disabled | 菜单是否禁用 | boolean | - | |
2286
+ | destroyOnHidden | 关闭后是否销毁 Dropdown | boolean | false | 5.25.0 |
2287
+ | popupRender | 自定义弹出框内容 | (menus: ReactNode) => ReactNode | - | 5.25.0 |
2288
+ | getPopupContainer | 菜单渲染父节点。默认渲染到 body 上,如果你遇到菜单滚动定位问题,试试修改为滚动的区域,并相对其定位。 | (triggerNode: HTMLElement) => HTMLElement | () => document.body | |
2289
+ | menu | 菜单配置项 | | - | 4.24.0 |
2290
+ | overlayClassName | 下拉根元素的类名称 | string | - | |
2291
+ | overlayStyle | 下拉根元素的样式 | CSSProperties | - | |
2292
+ | placement | 菜单弹出位置: | string | bottomLeft | |
2293
+ | trigger | 触发下拉的行为,移动端不支持 hover | Array< | [ | |
2294
+ | open | 菜单是否显示,小于 4.23.0 使用 | boolean | - | 4.23.0 |
2295
+ | onOpenChange | 菜单显示状态改变时调用,点击菜单按钮导致的消失不会触发。小于 4.23.0 使用 | (open: boolean, info: { source: 'trigger' \| 'menu' }) => void | - | info.source |
2300
2296
 
2301
- Form 通过增量更新方式,只更新被修改的字段相关组件以达到性能优化目的。大部分场景下,你只需要编写代码或者与 [`dependencies`](#dependencies) 属性配合校验即可。而在某些特定场景,例如修改某个字段值后出现新的字段选项、或者纯粹希望表单任意变化都对某一个区域进行渲染。你可以通过 `shouldUpdate` 修改 Form.Item 的更新逻辑。
2302
2297
 
2303
- `shouldUpdate` 为 `true` 时,Form 的任意变化都会使该 Form.Item 重新渲染。这对于自定义渲染一些区域十分有帮助,要注意 Form.Item 里包裹的子组件必须由函数返回,否则 `shouldUpdate` 不会起作用:
2298
+ ### Dropdown.Button
2304
2299
 
2305
- 相关issue:[#34500](https://github.com/ant-design/ant-design/issues/34500)
2300
+ 属性与 Dropdown 的相同。还包含以下属性:
2306
2301
 
2302
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2303
+ |--------|--------|--------|--------|--------|
2304
+ | buttonsRender | 自定义左右两个按钮 | (buttons: ReactNode[]) => ReactNode[] | - | |
2305
+ | loading | 设置按钮载入状态,和 | boolean \| { delay: number, icon: ReactNode } | false | icon: 5.23.0 |
2306
+ | danger | 设置危险按钮 | boolean | - | 4.23.0 |
2307
+ | icon | 右侧的 icon | ReactNode | - | |
2308
+ | size | 按钮大小,和 | large | middle | |
2309
+ | type | 按钮类型,和 | primary | default | |
2310
+ | onClick | 点击左侧按钮的回调,和 | (event: React.MouseEvent) => void | - | |
2307
2311
 
2308
- ```jsx
2309
- <Form.Item shouldUpdate>
2310
- {() => {
2311
- return <pre>{JSON.stringify(form.getFieldsValue(), null, 2)}</pre>;
2312
- }}
2313
- </Form.Item>
2314
- ```
2315
2312
 
2313
+ ## 注意
2316
2314
 
2317
- 你可以参考[示例](#form-demo-inline-login)查看具体使用场景。
2315
+ 请确保 `Dropdown` 的子元素能接受 `onMouseEnter`、`onMouseLeave`、`onFocus`、`onClick` 事件。
2316
+ ## antd API
2318
2317
 
2319
- `shouldUpdate` 为方法时,表单的每次数值更新都会调用该方法,提供原先的值与当前的值以供你比较是否需要更新。这对于是否根据值来渲染额外字段十分有帮助:
2318
+ ### Menu
2320
2319
 
2320
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2321
+ |--------|--------|--------|--------|--------|
2322
+ | defaultOpenKeys | 初始展开的 SubMenu 菜单项 key 数组 | string[] | - | |
2323
+ | defaultSelectedKeys | 初始选中的菜单项 key 数组 | string[] | - | |
2324
+ | expandIcon | 自定义展开图标 | ReactNode \| | - | 4.9.0 |
2325
+ | forceSubMenuRender | 在子菜单展示之前就渲染进 DOM | boolean | false | |
2326
+ | inlineCollapsed | inline 时菜单是否收起状态 | boolean | - | |
2327
+ | inlineIndent | inline 模式的菜单缩进宽度 | number | 24 | |
2328
+ | items | 菜单内容 | | - | 4.20.0 |
2329
+ | mode | 菜单类型,现在支持垂直、水平、和内嵌模式三种 | vertical | vertical | |
2330
+ | multiple | 是否允许多选 | boolean | false | |
2331
+ | openKeys | 当前展开的 SubMenu 菜单项 key 数组 | string[] | - | |
2332
+ | overflowedIndicator | 用于自定义 Menu 水平空间不足时的省略收缩的图标 | ReactNode | | |
2333
+ | selectable | 是否允许选中 | boolean | true | |
2334
+ | selectedKeys | 当前选中的菜单项 key 数组 | string[] | - | |
2335
+ | style | 根节点样式 | CSSProperties | - | |
2336
+ | subMenuCloseDelay | 用户鼠标离开子菜单后关闭延时,单位:秒 | number | 0.1 | |
2337
+ | subMenuOpenDelay | 用户鼠标进入子菜单后开启延时,单位:秒 | number | 0 | |
2338
+ | theme | 主题颜色 | light | light | |
2339
+ | triggerSubMenuAction | SubMenu 展开/关闭的触发行为 | hover | hover | |
2340
+ | onClick | 点击 MenuItem 调用此函数 | function({ item, key, keyPath, domEvent }) | - | |
2341
+ | onDeselect | 取消选中时调用,仅在 multiple 生效 | function({ item, key, keyPath, selectedKeys, domEvent }) | - | |
2342
+ | onOpenChange | SubMenu 展开/关闭的回调 | function(openKeys: string[]) | - | |
2343
+ | onSelect | 被选中时调用 | function({ item, key, keyPath, selectedKeys, domEvent }) | -   | |
2321
2344
 
2322
- ```jsx
2323
- <Form.Item shouldUpdate={(prevValues, curValues) => prevValues.additional !== curValues.additional}>
2324
- {() => {
2325
- return (
2326
- <Form.Item name="other">
2327
- <Input />
2328
- </Form.Item>
2329
- );
2330
- }}
2331
- </Form.Item>
2332
- ```
2333
2345
 
2346
+ 更多属性查看 [rc-menu](https://github.com/react-component/menu#api)
2334
2347
 
2335
- 你可以参考[示例](#form-demo-control-hooks)查看具体使用场景。
2348
+ ### ItemType
2336
2349
 
2337
- ### messageVariables
2350
+ type ItemType = [MenuItemType](#menuitemtype) | [SubMenuType](#submenutype) | [MenuItemGroupType](#menuitemgrouptype) | [MenuDividerType](#menudividertype);
2338
2351
 
2339
- 你可以通过 `messageVariables` 修改 Form.Item 的默认验证信息。
2352
+ #### MenuItemType
2340
2353
 
2354
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2355
+ |--------|--------|--------|--------|--------|
2356
+ | danger | 展示错误状态样式 | boolean | false | |
2357
+ | disabled | 是否禁用 | boolean | false | |
2358
+ | extra | 额外节点 | ReactNode | - | 5.21.0 |
2359
+ | icon | 菜单图标 | ReactNode | - | |
2360
+ | key | item 的唯一标志 | string | - | |
2361
+ | label | 菜单项标题 | ReactNode | - | |
2362
+ | title | 设置收缩时展示的悬浮标题 | string | - | |
2341
2363
 
2342
- ```jsx
2343
- <Form>
2344
- <Form.Item
2345
- messageVariables={{ another: 'good' }}
2346
- label="user"
2347
- rules={[{ required: true, message: '${another} is required' }]}
2348
- >
2349
- <Input />
2350
- </Form.Item>
2351
- <Form.Item
2352
- messageVariables={{ label: 'good' }}
2353
- label={<span>user</span>}
2354
- rules={[{ required: true, message: '${label} is required' }]}
2355
- >
2356
- <Input />
2357
- </Form.Item>
2358
- </Form>
2359
- ```
2360
2364
 
2365
+ #### SubMenuType
2361
2366
 
2362
- `5.20.2` 起,当你希望不要转译 `${}` 时,你可以通过 `\\${}` 来略过:
2367
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2368
+ |--------|--------|--------|--------|--------|
2369
+ | children | 子菜单的菜单项 | | - | |
2370
+ | disabled | 是否禁用 | boolean | false | |
2371
+ | icon | 菜单图标 | ReactNode | - | |
2372
+ | key | 唯一标志 | string | - | |
2373
+ | label | 菜单项标题 | ReactNode | - | |
2374
+ | popupClassName | 子菜单样式, | string | - | |
2375
+ | popupOffset | 子菜单偏移量, | [number, number] | - | |
2376
+ | onTitleClick | 点击子菜单标题 | function({ key, domEvent }) | - | |
2377
+ | theme | 设置子菜单的主题,默认从 Menu 上继承 | light | - | |
2363
2378
 
2364
2379
 
2365
- ```jsx
2366
- { required: true, message: '${label} is convert, \\${label} is not convert' }
2380
+ #### MenuItemGroupType
2367
2381
 
2368
- // good is convert, ${label} is not convert
2369
- ```
2382
+ 定义类型为 `group` 时,会作为分组处理:
2370
2383
 
2371
2384
 
2372
- ## Form.List
2385
+ ```ts
2386
+ const groupItem = {
2387
+ type: 'group', // Must have
2388
+ label: 'My Group',
2389
+ children: [],
2390
+ };
2391
+ ```
2373
2392
 
2374
- 为字段提供数组化管理。
2375
2393
 
2376
2394
  | 参数 | 说明 | 类型 | 默认值 | 版本 |
2377
2395
  |--------|--------|--------|--------|--------|
2378
- | children | 渲染函数 | (fields: Field[], operation: { add, remove, move }, meta: { errors }) => React.ReactNode | - | |
2379
- | initialValue | 设置子元素默认值,如果与 Form 的 | any[] | - | 4.9.0 |
2380
- | name | 字段名,支持数组。List 本身也是字段,因而 | | - | |
2381
- | rules | 校验规则,仅支持自定义规则。需要配合 | { validator, message }[] | - | 4.7.0 |
2382
-
2396
+ | children | 分组的菜单项 | | - | |
2397
+ | label | 分组标题 | ReactNode | - | |
2383
2398
 
2384
2399
 
2385
- ```tsx
2386
- <Form.List>
2387
- {(fields) =>
2388
- fields.map((field) => (
2389
- <Form.Item {...field}>
2390
- <Input />
2391
- </Form.Item>
2392
- ))
2393
- }
2394
- </Form.List>
2395
- ```
2400
+ #### MenuDividerType
2396
2401
 
2402
+ 菜单项分割线,只用在弹出菜单内,需要定义类型为 `divider`:
2397
2403
 
2398
- 注意:Form.List 下的字段不应该配置 `initialValue`,你始终应该通过 Form.List 的 `initialValue` 或者 Form 的 `initialValues` 来配置。
2399
2404
 
2400
- ## operation
2405
+ ```ts
2406
+ const dividerItem = {
2407
+ type: 'divider', // Must have
2408
+ };
2409
+ ```
2401
2410
 
2402
- Form.List 渲染表单相关操作函数。
2403
2411
 
2404
2412
  | 参数 | 说明 | 类型 | 默认值 | 版本 |
2405
2413
  |--------|--------|--------|--------|--------|
2406
- | add | 新增表单项 | (defaultValue?: any, insertIndex?: number) => void | insertIndex | 4.6.0 |
2407
- | move | 移动表单项 | (from: number, to: number) => void | - | |
2408
- | remove | 删除表单项 | (index: number \| number[]) => void | number[] | 4.5.0 |
2414
+ | dashed | 是否虚线 | boolean | false | |
2409
2415
 
2410
2416
 
2411
- ## Form.ErrorList
2412
2417
 
2413
- 4.7.0 新增。错误展示组件,仅限配合 Form.List 的 rules 一同使用。参考[示例](#form-demo-dynamic-form-item)。
2414
2418
 
2415
- | 参数 | 说明 | 类型 | 默认值 |
2416
- |--------|--------|--------|--------|
2417
- | errors | 错误列表 | ReactNode[] | - |
2419
+ <DemoTitle title="Descriptions" desc="展示多个只读字段的组合">
2420
+ #### API
2418
2421
 
2422
+ <AntdApiRef url="https://ant.design/components/descriptions-cn/#api"></AntdApiRef>
2419
2423
 
2420
- ## Form.Provider
2421
2424
 
2422
- 提供表单间联动功能,其下设置 `name` 的 Form 更新时,会自动触发对应事件。查看[示例](#form-demo-form-context)。
2425
+ ## antd API
2423
2426
 
2424
- | 参数 | 说明 | 类型 | 默认值 |
2425
- |--------|--------|--------|--------|
2426
- | onFormChange | 子表单字段更新时触发 | function(formName: string, info: { changedFields, forms }) | - |
2427
- | onFormFinish | 子表单提交时触发 | function(formName: string, info: { values, forms }) | - |
2427
+ 通用属性参考:[通用属性](/docs/react/common-props)
2428
2428
 
2429
+ ### Descriptions
2429
2430
 
2430
-
2431
- ```jsx
2432
- <Form.Provider
2433
- onFormFinish={(name) => {
2434
- if (name === 'form1') {
2435
- // Do something...
2436
- }
2437
- }}
2438
- >
2439
- <Form name="form1">...</Form>
2440
- <Form name="form2">...</Form>
2441
- </Form.Provider>
2442
- ```
2443
-
2444
-
2445
- ### FormInstance
2446
-
2447
- | 名称 | 说明 | 类型 | 版本 |
2448
- |--------|--------|--------|--------|
2449
- | getFieldError | 获取对应字段名的错误信息 | (name: | |
2450
- | getFieldInstance | 获取对应字段实例 | (name: | 4.4.0 |
2451
- | getFieldsError | 获取一组字段名对应的错误信息,返回为数组形式 | (nameList?: | |
2452
- | getFieldsValue | 获取一组字段名对应的值,会按照对应结构返回。默认返回现存字段值,当调用 | | |
2453
- | getFieldValue | 获取对应字段名的值 | (name: | |
2454
- | isFieldsTouched | 检查一组字段是否被用户操作过, | (nameList?: | |
2455
- | isFieldTouched | 检查对应字段是否被用户操作过 | (name: | |
2456
- | isFieldValidating | 检查对应字段是否正在校验 | (name: | |
2457
- | resetFields | 重置一组字段到 | (fields?: | |
2458
- | scrollToField | 滚动到对应字段位置 | (name: | focus: 5.24.0 |
2459
- | setFields | 设置一组字段状态 | (fields: | |
2460
- | setFieldValue | 设置表单的值(该值将直接传入 form store 中并且 | (name: | 4.22.0 |
2461
- | setFieldsValue | 设置表单的值(该值将直接传入 form store 中并且 | (values) => void | |
2462
- | submit | 提交表单,与点击 | () => void | |
2463
- | validateFields | 触发表单验证,设置 | (nameList?: | |
2464
-
2465
-
2466
- #### validateFields
2467
-
2468
-
2469
- ```tsx
2470
- export interface ValidateConfig {
2471
- // 5.5.0 新增。仅校验内容而不会将错误信息展示到 UI 上。
2472
- validateOnly?: boolean;
2473
- // 5.9.0 新增。对提供的 `nameList` 与其子路径进行递归校验。
2474
- recursive?: boolean;
2475
- // 5.11.0 新增。校验 dirty 的字段(touched + validated)。
2476
- // 使用 `dirty` 可以很方便的仅校验用户操作过和被校验过的字段。
2477
- dirty?: boolean;
2478
- }
2479
- ```
2480
-
2481
-
2482
- 返回示例:
2483
-
2484
-
2485
- ```jsx
2486
- validateFields()
2487
- .then((values) => {
2488
- /*
2489
- values:
2490
- {
2491
- username: 'username',
2492
- password: 'password',
2493
- }
2494
- */
2495
- })
2496
- .catch((errorInfo) => {
2497
- /*
2498
- errorInfo:
2499
- {
2500
- values: {
2501
- username: 'username',
2502
- password: 'password',
2503
- },
2504
- errorFields: [
2505
- { name: ['password'], errors: ['Please input your Password!'] },
2506
- ],
2507
- outOfDate: false,
2508
- }
2509
- */
2510
- });
2511
- ```
2431
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2432
+ |--------|--------|--------|--------|--------|
2433
+ | bordered | 是否展示边框 | boolean | false | |
2434
+ | colon | 配置 | boolean | true | |
2435
+ | column | 一行的 | number \| | 3 | |
2436
+ | extra | 描述列表的操作区域,显示在右上方 | ReactNode | - | 4.5.0 |
2437
+ | items | 描述列表项内容 | | - | 5.8.0 |
2438
+ | layout | 描述布局 | horizontal | horizontal | |
2439
+ | size | 设置列表的大小。可以设置为 | default | - | |
2440
+ | title | 描述列表的标题,显示在最顶部 | ReactNode | - | |
2441
+ | classNames | 语义化结构 class | | - | 5.23.0 |
2442
+ | styles | 语义化结构 style | | - | 5.23.0 |
2512
2443
 
2513
2444
 
2514
- ## Hooks
2515
-
2516
- ### Form.useForm
2445
+ ### DescriptionItem
2517
2446
 
2518
- `type Form.useForm = (): [FormInstance]`
2447
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2448
+ |--------|--------|--------|--------|--------|
2449
+ | label | 内容的描述 | ReactNode | - | |
2450
+ | span | 包含列的数量( | number\| | 1 | screens: 5.9.0 |
2519
2451
 
2520
- 创建 Form 实例,用于管理所有数据状态。
2521
2452
 
2522
- ### Form.useFormInstance
2453
+ span 是 Description.Item 的数量。 span={2} 会占用两个 DescriptionItem 的宽度。当同时配置 `style` 和 `labelStyle`(或 `contentStyle`)时,两者会同时作用。样式冲突时,后者会覆盖前者。
2523
2454
 
2524
- `type Form.useFormInstance = (): FormInstance`
2525
2455
 
2526
- `4.20.0` 新增,获取当前上下文正在使用的 Form 实例,常见于封装子组件消费无需透传 Form 实例:
2527
2456
 
2457
+ <DemoTitle title="Drawer" desc="从页面一侧滑入的操作面板,用于承载临时界面内容。">
2458
+ #### API
2528
2459
 
2529
- ```tsx
2530
- const Sub = () => {
2531
- const form = Form.useFormInstance();
2460
+ | 属性名 | 描述 | 类型 | 默认值 |
2461
+ |--------|--------|--------|--------|
2462
+ | showDivider | 是否显示分割线 | boolean | true |
2532
2463
 
2533
- return <Button onClick={() => form.setFieldsValue({})} />;
2534
- };
2464
+ ##### Drawer.Confirm - 带按钮的抽屉
2535
2465
 
2536
- export default () => {
2537
- const [form] = Form.useForm();
2466
+ | 属性名 | 描述 | 类型 | 默认值 |
2467
+ |--------|--------|--------|--------|
2468
+ | footer | 自定义底部内容 | React.ReactNode | |
2469
+ | onOk | 点击确定回调 | () => void | |
2470
+ | okText | 确认按钮文字 | string | |
2471
+ | okButtonProps | 确认按钮属性 | ButtonProps | |
2472
+ | onCancel | 点击取消回调 | () => void | |
2473
+ | cancelText | 取消按钮文字 | string | |
2474
+ | cancelButtonProps | 取消按钮属性 | ButtonProps | |
2475
+ | info | 底部额外内容 | React.ReactNode | |
2538
2476
 
2539
- return (
2540
- <Form form={form}>
2541
- <Sub />
2542
- </Form>
2543
- );
2544
- };
2545
- ```
2477
+ <AntdApiRef url="https://ant.design/components/drawer-cn/#api"></AntdApiRef>
2546
2478
 
2547
2479
 
2548
- ### Form.useWatch
2480
+ ## antd API
2549
2481
 
2550
- `type Form.useWatch = (namePath: NamePath | (selector: (values: Store)) => any, formInstance?: FormInstance | WatchOptions): Value`
2482
+ 通用属性参考:[通用属性](/docs/react/common-props)
2551
2483
 
2552
- `5.12.0` 新增 `selector`
2484
+ <!-- prettier-ignore -->
2485
+ <Container type="warning" title="注意">
2486
+ v5 使用 `rootClassName` 与 `rootStyle` 来配置最外层元素样式。原 v4 `className` 与 `style` 改至配置 Drawer 窗体样式以和 Modal 对齐。
2487
+ </Container>
2488
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2489
+ |--------|--------|--------|--------|--------|
2490
+ | autoFocus | 抽屉展开后是否将焦点切换至其 DOM 节点 | boolean | true | 4.17.0 |
2491
+ | afterOpenChange | 切换抽屉时动画结束后的回调 | function(open) | - | |
2492
+ | className | Drawer 容器外层 className 设置,如果需要设置最外层,请使用 rootClassName | string | - | |
2493
+ | classNames | 语义化结构 className | | - | 5.10.0 |
2494
+ | closeIcon | 自定义关闭图标。5.7.0:设置为 | ReactNode | | |
2495
+ | destroyOnHidden | 关闭时销毁 Drawer 里的子元素 | boolean | false | 5.25.0 |
2496
+ | extra | 抽屉右上角的操作区域 | ReactNode | - | 4.17.0 |
2497
+ | footer | 抽屉的页脚 | ReactNode | - | |
2498
+ | forceRender | 预渲染 Drawer 内元素 | boolean | false | |
2499
+ | getContainer | 指定 Drawer 挂载的节点, | HTMLElement \| () => HTMLElement \| Selectors \| false | body | |
2500
+ | height | 高度,在 | string \| number | 378 | |
2501
+ | keyboard | 是否支持键盘 esc 关闭 | boolean | true | |
2502
+ | mask | 是否展示遮罩 | boolean | true | |
2503
+ | maskClosable | 点击蒙层是否允许关闭 | boolean | true | |
2504
+ | placement | 抽屉的方向 | top | right | |
2505
+ | push | 用于设置多层 Drawer 的推动行为 | boolean \| { distance: string \| number } | { distance: 180 } | 4.5.0+ |
2506
+ | rootStyle | 可用于设置 Drawer 最外层容器的样式,和 | CSSProperties | - | |
2507
+ | size | 预设抽屉宽度(或高度),default | 'default' \| 'large' | 'default' | 4.17.0 |
2508
+ | style | 设计 Drawer 容器样式,如果你只需要设置内容部分请使用 | CSSProperties | - | |
2509
+ | styles | 语义化结构 style | | - | 5.10.0 |
2510
+ | title | 标题 | ReactNode | - | |
2511
+ | loading | 显示骨架屏 | boolean | false | 5.17.0 |
2512
+ | open | Drawer 是否可见 | boolean | - |
2513
+ | width | 宽度 | string \| number | 378 | |
2514
+ | zIndex | 设置 Drawer 的 | number | 1000 | |
2515
+ | onClose | 点击遮罩层或左上角叉或取消按钮的回调 | function(e) | - | |
2516
+ | drawerRender | 自定义渲染抽屉 | (node: ReactNode) => ReactNode | - | 5.18.0 |
2553
2517
 
2554
- 用于直接获取 form 中字段对应的值。通过该 Hooks 可以与诸如 `useSWR` 进行联动从而降低维护成本:
2555
2518
 
2556
2519
 
2557
- ```tsx
2558
- const Demo = () => {
2559
- const [form] = Form.useForm();
2560
- const userName = Form.useWatch('username', form);
2561
2520
 
2562
- const { data: options } = useSWR(`/api/user/${userName}`, fetcher);
2521
+ <DemoTitle title="DatePicker" desc="输入或选择时间的控件。">
2522
+ #### API
2563
2523
 
2564
- return (
2565
- <Form form={form}>
2566
- <Form.Item name="username">
2567
- <AutoComplete options={options} />
2568
- </Form.Item>
2569
- </Form>
2570
- );
2571
- };
2572
- ```
2524
+ <AntdApiRef url="https://ant.design/components/date-picker-cn/#api"></AntdApiRef>
2573
2525
 
2574
2526
 
2575
- 如果你的组件被包裹在 `Form.Item` 内部,你可以省略第二个参数,`Form.useWatch` 会自动找到上层最近的 `FormInstance`。
2527
+ ## antd API
2576
2528
 
2577
- `useWatch` 默认只监听在 Form 中注册的字段,如果需要监听非注册字段,可以通过配置 `preserve` 进行监听:
2529
+ 通用属性参考:[通用属性](/docs/react/common-props)
2578
2530
 
2531
+ 日期类组件包括以下五种形式。
2579
2532
 
2580
- ```tsx
2581
- const Demo = () => {
2582
- const [form] = Form.useForm();
2583
2533
 
2584
- const age = Form.useWatch('age', { form, preserve: true });
2585
- console.log(age);
2534
+ - DatePicker
2535
+ - DatePicker[picker="month"]
2536
+ - DatePicker[picker="week"]
2537
+ - DatePicker[picker="year"]
2538
+ - DatePicker[picker="quarter"] (4.1.0 新增)
2539
+ - RangePicker
2586
2540
 
2587
- return (
2588
- <div>
2589
- <Button onClick={() => form.setFieldValue('age', 2)}>Update</Button>
2590
- <Form form={form}>
2591
- <Form.Item name="name">
2592
- <Input />
2593
- </Form.Item>
2594
- </Form>
2595
- </div>
2596
- );
2597
- };
2598
- ```
2541
+ ### 国际化配置
2599
2542
 
2543
+ 默认配置为 en-US,如果你需要设置其他语言,推荐在入口处使用我们提供的国际化组件,详见:[ConfigProvider 国际化](https://ant.design/components/config-provider-cn/)。
2600
2544
 
2601
- ### Form.Item.useStatus
2545
+ 如有特殊需求(仅修改单一组件的语言),请使用 locale 参数,参考:[默认配置](https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json)。
2602
2546
 
2603
- `type Form.Item.useStatus = (): { status: ValidateStatus | undefined, errors: ReactNode[], warnings: ReactNode[] }`
2604
2547
 
2605
- `4.22.0` 新增,可用于获取当前 Form.Item 的校验状态,如果上层没有 Form.Item,`status` 将会返回 `undefined`。`5.4.0` 新增 `errors` 和 `warnings`,可用于获取当前 Form.Item 的错误信息和警告信息:
2548
+ ```jsx
2549
+ // 默认语言为 en-US,如果你需要设置其他语言,推荐在入口文件全局设置 locale
2550
+ // 确保还导入相关的 dayjs 文件,否则所有文本的区域设置都不会更改(例如范围选择器月份)
2551
+ import locale from 'antd/locale/zh_CN';
2552
+ import dayjs from 'dayjs';
2606
2553
 
2554
+ import 'dayjs/locale/zh-cn';
2607
2555
 
2608
- ```tsx
2609
- const CustomInput = ({ value, onChange }) => {
2610
- const { status, errors } = Form.Item.useStatus();
2611
- return (
2612
- <input
2613
- value={value}
2614
- onChange={onChange}
2615
- className={`custom-input-${status}`}
2616
- placeholder={(errors.length && errors[0]) || ''}
2617
- />
2618
- );
2619
- };
2556
+ dayjs.locale('zh-cn');
2620
2557
 
2621
- export default () => (
2622
- <Form>
2623
- <Form.Item name="username">
2624
- <CustomInput />
2625
- </Form.Item>
2626
- </Form>
2627
- );
2558
+ <ConfigProvider locale={locale}>
2559
+ <DatePicker defaultValue={dayjs('2015-01-01', 'YYYY-MM-DD')} />
2560
+ </ConfigProvider>;
2628
2561
  ```
2629
2562
 
2630
2563
 
2631
- #### 与其他获取数据的方式的区别
2632
-
2633
- Form 仅会对变更的 Field 进行刷新,从而避免完整的组件刷新可能引发的性能问题。因而你无法在 render 阶段通过 `form.getFieldsValue` 来实时获取字段值,而 `useWatch` 提供了一种特定字段访问的方式,从而使得在当前组件中可以直接消费字段的值。同时,如果为了更好的渲染性能,你可以通过 Field renderProps 仅更新需要更新的部分。而当当前组件更新或者 effect 都不需要消费字段值时,则可以通过 `onValuesChange` 将数据抛出,从而避免组件更新。
2634
-
2635
- ## Interface
2564
+ <!-- prettier-ignore -->
2565
+ <Container type="warning">
2566
+ 在搭配 Next.js App Router 使用时,注意在引入 dayjs locale 文件时加上 `'use client'`。这是由于 Ant Design 的组件都是客户端组件,在 RSC 中引入 dayjs locale 文件将不会在客户端生效。
2567
+ </Container>
2568
+ ### 共同的 API
2636
2569
 
2637
- ### NamePath
2570
+ 以下 API 为 DatePicker、 RangePicker 共享的 API。
2638
2571
 
2639
- `string | number | (string | number)[]`
2572
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2573
+ |--------|--------|--------|--------|--------|
2574
+ | allowClear | 自定义清除按钮 | boolean \| { clearIcon?: ReactNode } | true | 5.8.0: 支持对象类型 |
2575
+ | autoFocus | 自动获取焦点 | boolean | false | |
2576
+ | className | 选择器 className | string | - | |
2577
+ | dateRender | 自定义日期单元格的内容,5.4.0 起用 | function(currentDate: dayjs, today: dayjs) => React.ReactNode | - | < 5.4.0 |
2578
+ | cellRender | 自定义单元格的内容 | (current: dayjs, info: { originNode: React.ReactElement,today: DateType, range?: 'start' \| 'end', type: PanelMode, locale?: Locale, subType?: 'hour' \| 'minute' \| 'second' \| 'meridiem' }) => React.ReactNode | - | 5.4.0 |
2579
+ | components | 自定义面板 | Record | - | 5.14.0 |
2580
+ | defaultOpen | 是否默认展开控制弹层 | boolean | - | |
2581
+ | disabled | 禁用 | boolean | false | |
2582
+ | disabledDate | 不可选择的日期 | (currentDate: dayjs, info: { from?: dayjs, type: Picker }) => boolean | - | info |
2583
+ | format | 设置日期格式,为数组时支持多格式匹配,展示以第一个为准。配置参考 | | | |
2584
+ | order | 多选、范围时是否自动排序 | boolean | true | 5.14.0 |
2585
+ | preserveInvalidOnBlur | 失去焦点是否要清空输入框内无效内容 | boolean | false | 5.14.0 |
2586
+ | getPopupContainer | 定义浮层的容器,默认为 body 上新建 div | function(trigger) | - | |
2587
+ | inputReadOnly | 设置输入框为只读(避免在移动设备上打开虚拟键盘) | boolean | false | |
2588
+ | locale | 国际化配置 | object | | |
2589
+ | minDate | 最小日期,同样会限制面板的切换范围 | dayjs | - | 5.14.0 |
2590
+ | maxDate | 最大日期,同样会限制面板的切换范围 | dayjs | - | 5.14.0 |
2591
+ | mode | 日期面板的状态( | time | - | |
2592
+ | needConfirm | 是否需要确认按钮,为 | boolean | - | 5.14.0 |
2593
+ | nextIcon | 自定义下一个图标 | ReactNode | - | 4.17.0 |
2594
+ | open | 控制弹层是否展开 | boolean | - | |
2595
+ | panelRender | 自定义渲染面板 | (panelNode) => ReactNode | - | 4.5.0 |
2596
+ | picker | 设置选择器类型 | date | date | quarter |
2597
+ | placeholder | 输入框提示文字 | string \| [string, string] | - | |
2598
+ | placement | 选择框弹出的位置 | bottomLeft | bottomLeft | |
2599
+ | prefix | 自定义前缀 | ReactNode | - | 5.22.0 |
2600
+ | prevIcon | 自定义上一个图标 | ReactNode | - | 4.17.0 |
2601
+ | presets | 预设时间范围快捷选择, 自 | { label: React.ReactNode, value: Dayjs \| (() => Dayjs) }[] | - | |
2602
+ | size | 输入框大小, | large | - | |
2603
+ | status | 设置校验状态 | 'error' \| 'warning' | - | 4.19.0 |
2604
+ | style | 自定义输入框样式 | CSSProperties | {} | |
2605
+ | suffixIcon | 自定义的选择框后缀图标 | ReactNode | - | |
2606
+ | superNextIcon | 自定义 | ReactNode | - | 4.17.0 |
2607
+ | superPrevIcon | 自定义 | ReactNode | - | 4.17.0 |
2608
+ | variant | 形态变体 | outlined | outlined | 5.13.0 \| |
2609
+ | onOpenChange | 弹出日历和关闭日历的回调 | function(open) | - | |
2610
+ | onPanelChange | 日历面板切换的回调 | function(value, mode) | - | |
2640
2611
 
2641
- ### GetFieldsValue
2642
2612
 
2643
- `getFieldsValue` 提供了多种重载方法:
2613
+ ### 共同的方法
2644
2614
 
2645
- #### getFieldsValue(nameList?: true | [NamePath](#namepath)[], filterFunc?: FilterFunc)
2615
+ | 名称 | 描述 | 版本 |
2616
+ |--------|--------|--------|
2617
+ | blur() | 移除焦点 | |
2618
+ | focus() | 获取焦点 | |
2646
2619
 
2647
- 当不提供 `nameList` 时,返回所有注册字段,这也包含 List 下所有的值(即便 List 下没有绑定 Item)。
2648
2620
 
2649
- `nameList` 为 `true` 时,返回 store 中所有的值,包含未注册字段。例如通过 `setFieldsValue` 设置了不存在的 Item 的值,也可以通过 `true` 全部获取。
2621
+ ### DatePicker
2650
2622
 
2651
- `nameList` 为数组时,返回规定路径的值。需要注意的是,`nameList` 为嵌套数组。例如你需要某路径值应该如下:
2623
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2624
+ |--------|--------|--------|--------|--------|
2625
+ | defaultPickerValue | 默认面板日期,每次面板打开时会被重置到该日期 | | - | 5.14.0 |
2626
+ | defaultValue | 默认日期,如果开始时间或结束时间为 | | - | |
2627
+ | disabledTime | 不可选择的时间 | function(date) | - | |
2628
+ | format | 展示的日期格式,配置参考 | | YYYY-MM-DD | |
2629
+ | multiple | 是否为多选,不支持 | boolean | false | 5.14.0 |
2630
+ | pickerValue | 面板日期,可以用于受控切换面板所在日期。配合 | | - | 5.14.0 |
2631
+ | renderExtraFooter | 在面板中添加额外的页脚 | (mode) => React.ReactNode | - | |
2632
+ | showNow | 显示当前日期时间的快捷选择 | boolean | - | |
2633
+ | showTime | 增加时间选择功能 | Object \| boolean | | |
2634
+ | showTime.defaultValue | 设置用户选择日期时默认的时分秒, | | dayjs() | |
2635
+ | showWeek | DatePicker 下展示当前周 | boolean | false | 5.14.0 |
2636
+ | value | 日期 | | - | |
2637
+ | onChange | 时间发生变化的回调 | function(date: dayjs, dateString: string) | - | |
2638
+ | onOk | 点击确定按钮的回调 | function() | - | |
2639
+ | onPanelChange | 日期面板变化时的回调 | function(value, mode) | - | |
2652
2640
 
2653
2641
 
2654
- ```tsx
2655
- // 单个路径
2656
- form.getFieldsValue([['user', 'age']]);
2642
+ ### DatePicker[picker=year]
2657
2643
 
2658
- // 多个路径
2659
- form.getFieldsValue([
2660
- ['user', 'age'],
2661
- ['preset', 'account'],
2662
- ]);
2663
- ```
2644
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2645
+ |--------|--------|--------|--------|--------|
2646
+ | defaultValue | 默认日期 | | - | |
2647
+ | format | 展示的日期格式,配置参考 | | YYYY | |
2648
+ | multiple | 是否为多选 | boolean | false | 5.14.0 |
2649
+ | renderExtraFooter | 在面板中添加额外的页脚 | () => React.ReactNode | - | |
2650
+ | value | 日期 | | - | |
2651
+ | onChange | 时间发生变化的回调,发生在用户选择时间时 | function(date: dayjs, dateString: string) | - | |
2664
2652
 
2665
2653
 
2666
- #### getFieldsValue({ strict?: boolean, filter?: FilterFunc })
2654
+ ### DatePicker[picker=quarter]
2667
2655
 
2668
- `5.8.0` 新增接受配置参数。当 `strict` 为 `true` 时会仅匹配 Item 的值。例如 `{ list: [{ bamboo: 1, little: 2 }] }` 中,如果 List 仅绑定了 `bamboo` 字段,那么 `getFieldsValue({ strict: true })` 会只获得 `{ list: [{ bamboo: 1 }] }`。
2656
+ `4.1.0` 新增。
2669
2657
 
2670
- ### FilterFunc
2658
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2659
+ |--------|--------|--------|--------|--------|
2660
+ | defaultValue | 默认日期 | | - | |
2661
+ | format | 展示的日期格式,配置参考 | | YYYY-\QQ | |
2662
+ | multiple | 是否为多选 | boolean | false | 5.14.0 |
2663
+ | renderExtraFooter | 在面板中添加额外的页脚 | () => React.ReactNode | - | |
2664
+ | value | 日期 | | - | |
2665
+ | onChange | 时间发生变化的回调,发生在用户选择时间时 | function(date: dayjs, dateString: string) | - | |
2671
2666
 
2672
- 用于过滤一些字段值,`meta` 会返回字段相关信息。例如可以用来获取仅被用户修改过的值等等。
2673
2667
 
2668
+ ### DatePicker[picker=month]
2674
2669
 
2675
- ```tsx
2676
- type FilterFunc = (meta: { touched: boolean; validating: boolean }) => boolean;
2677
- ```
2670
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2671
+ |--------|--------|--------|--------|--------|
2672
+ | defaultValue | 默认日期 | | - | |
2673
+ | format | 展示的日期格式,配置参考 | | YYYY-MM | |
2674
+ | multiple | 是否为多选 | boolean | false | 5.14.0 |
2675
+ | renderExtraFooter | 在面板中添加额外的页脚 | () => React.ReactNode | - | |
2676
+ | value | 日期 | | - | |
2677
+ | onChange | 时间发生变化的回调,发生在用户选择时间时 | function(date: dayjs, dateString: string) | - | |
2678
2678
 
2679
2679
 
2680
- ### FieldData
2680
+ ### DatePicker[picker=week]
2681
2681
 
2682
- | 名称 | 说明 | 类型 |
2683
- |--------|--------|--------|
2684
- | errors | 错误信息 | string[] |
2685
- | warnings | 警告信息 | string[] |
2686
- | name | 字段名称 | |
2687
- | touched | 是否被用户操作过 | boolean |
2688
- | validating | 是否正在校验 | boolean |
2689
- | value | 字段对应值 | any |
2682
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2683
+ |--------|--------|--------|--------|--------|
2684
+ | defaultValue | 默认日期 | | - | |
2685
+ | format | 展示的日期格式,配置参考 | | YYYY-wo | |
2686
+ | multiple | 是否为多选 | boolean | false | 5.14.0 |
2687
+ | renderExtraFooter | 在面板中添加额外的页脚 | (mode) => React.ReactNode | - | |
2688
+ | value | 日期 | | - | |
2689
+ | onChange | 时间发生变化的回调,发生在用户选择时间时 | function(date: dayjs, dateString: string) | - | |
2690
+ | showWeek | DatePicker 下展示当前周 | boolean | true | 5.14.0 |
2690
2691
 
2691
2692
 
2692
- ### Rule
2693
+ ### RangePicker
2693
2694
 
2694
- Rule 支持接收 object 进行配置,也支持 function 来动态获取 form 的数据:
2695
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2696
+ |--------|--------|--------|--------|--------|
2697
+ | allowEmpty | 允许起始项部分为空 | [boolean, boolean] | [false, false] | |
2698
+ | cellRender | 自定义单元格的内容。 | (current: dayjs, info: { originNode: React.ReactElement,today: DateType, range?: 'start' \| 'end', type: PanelMode, locale?: Locale, subType?: 'hour' \| 'minute' \| 'second' \| 'meridiem' }) => React.ReactNode | - | 5.4.0 |
2699
+ | dateRender | 自定义日期单元格的内容,5.4.0 起用 | function(currentDate: dayjs, today: dayjs) => React.ReactNode | - | < 5.4.0 |
2700
+ | defaultPickerValue | 默认面板日期,每次面板打开时会被重置到该日期 | | - | 5.14.0 |
2701
+ | defaultValue | 默认日期 | | - | |
2702
+ | disabled | 禁用起始项 | [boolean, boolean] | - | |
2703
+ | disabledTime | 不可选择的时间 | function(date: dayjs, partial: | - | info.from |
2704
+ | format | 展示的日期格式,配置参考 | | YYYY-MM-DD HH:mm:ss | |
2705
+ | id | 设置输入框 | { start?: string, end?: string } | - | 5.14.0 |
2706
+ | pickerValue | 面板日期,可以用于受控切换面板所在日期。配合 | | - | 5.14.0 |
2707
+ | presets | 预设时间范围快捷选择,自 | { label: React.ReactNode, value: (Dayjs \| (() => Dayjs))[] }[] | - | |
2708
+ | renderExtraFooter | 在面板中添加额外的页脚 | () => React.ReactNode | - | |
2709
+ | separator | 设置分隔符 | React.ReactNode | | |
2710
+ | showTime | 增加时间选择功能 | Object\|boolean | | |
2711
+ | showTime.defaultValue | 设置用户选择日期时默认的时分秒, | | [dayjs(), dayjs()] | |
2712
+ | value | 日期 | | - | |
2713
+ | onCalendarChange | 待选日期发生变化的回调。 | function(dates: [dayjs, dayjs], dateStrings: [string, string], info: { range: | - | |
2714
+ | onChange | 日期范围发生变化的回调 | function(dates: [dayjs, dayjs], dateStrings: [string, string]) | - | |
2715
+ | onFocus | 聚焦时回调 | function(event, { range: 'start' \| 'end' }) | - | range |
2716
+ | onBlur | 失焦时回调 | function(event, { range: 'start' \| 'end' }) | - | range |
2695
2717
 
2696
2718
 
2697
- ```tsx
2698
- type Rule = RuleConfig | ((form: FormInstance) => RuleConfig);
2699
- ```
2719
+ #### formatType
2700
2720
 
2701
2721
 
2702
- | 名称 | 说明 | 类型 | 版本 |
2703
- |--------|--------|--------|--------|
2704
- | defaultField | 仅在 | | |
2705
- | enum | 是否匹配枚举中的值(需要将 | any[] | |
2706
- | fields | 仅在 | Record<string, | |
2707
- | len | string 类型时为字符串长度;number 类型时为确定数字; array 类型时为数组长度 | number | |
2708
- | max | 必须设置 | number | |
2709
- | message | 错误信息,不设置时会通过 | string \| ReactElement | |
2710
- | min | 必须设置 | number | |
2711
- | pattern | 正则表达式匹配 | RegExp | |
2712
- | required | 是否为必选字段 | boolean | |
2713
- | transform | 将字段值转换成目标值后进行校验 | (value) => any | |
2714
- | type | 类型,常见有 | string | |
2715
- | validateTrigger | 设置触发验证时机,必须是 Form.Item 的 | string \| string[] | |
2716
- | validator | 自定义校验,接收 Promise 作为返回值。 | ( | |
2717
- | warningOnly | 仅警告,不阻塞表单提交 | boolean | 4.17.0 |
2718
- | whitespace | 如果字段仅包含空格则校验不通过,只在 | boolean | |
2722
+ ```typescript
2723
+ import type { Dayjs } from 'dayjs';
2719
2724
 
2725
+ type Generic = string;
2726
+ type GenericFn = (value: Dayjs) => string;
2720
2727
 
2721
- ### WatchOptions
2728
+ export type FormatType =
2729
+ | Generic
2730
+ | GenericFn
2731
+ | Array
2732
+ | {
2733
+ format: string;
2734
+ type?: 'mask';
2735
+ };
2736
+ ```
2722
2737
 
2723
- | 名称 | 说明 | 类型 | 默认值 | 版本 |
2724
- |--------|--------|--------|--------|--------|
2725
- | form | 指定 Form 实例 | FormInstance | 当前 context 中的 Form | 5.4.0 |
2726
- | preserve | 是否监视没有对应的 | boolean | false | 5.4.0 |
2727
2738
 
2739
+ 注意:`type` 定义为 `5.14.0` 新增。
2728
2740
 
2729
2741
 
2730
2742
 
2731
- <DemoTitle title="Dropdown" desc="向下弹出的列表。">
2743
+ <DemoTitle title="Form" desc="高性能表单控件,自带数据域管理。包含数据录入、校验以及对应样式。">
2732
2744
  #### API
2733
2745
 
2734
- <AntdApiRef url="https://ant.design/components/dropdown-cn/#api"></AntdApiRef>
2746
+ <AntdApiRef url="https://ant.design/components/form-cn/#api"></AntdApiRef>
2735
2747
 
2736
2748
 
2737
2749
  ## antd API
2738
2750
 
2739
2751
  通用属性参考:[通用属性](/docs/react/common-props)
2740
2752
 
2741
- ### Dropdown
2753
+ ### Form
2742
2754
 
2743
2755
  | 参数 | 说明 | 类型 | 默认值 | 版本 |
2744
2756
  |--------|--------|--------|--------|--------|
2745
- | arrow | 下拉框箭头是否显示 | boolean \| { pointAtCenter: boolean } | false | |
2746
- | autoAdjustOverflow | 下拉框被遮挡时自动调整位置 | boolean | true | 5.2.0 |
2747
- | autoFocus | 打开后自动聚焦下拉框 | boolean | false | 4.21.0 |
2748
- | disabled | 菜单是否禁用 | boolean | - | |
2749
- | destroyOnHidden | 关闭后是否销毁 Dropdown | boolean | false | 5.25.0 |
2750
- | popupRender | 自定义弹出框内容 | (menus: ReactNode) => ReactNode | - | 5.25.0 |
2751
- | getPopupContainer | 菜单渲染父节点。默认渲染到 body 上,如果你遇到菜单滚动定位问题,试试修改为滚动的区域,并相对其定位。 | (triggerNode: HTMLElement) => HTMLElement | () => document.body | |
2752
- | menu | 菜单配置项 | | - | 4.24.0 |
2753
- | overlayClassName | 下拉根元素的类名称 | string | - | |
2754
- | overlayStyle | 下拉根元素的样式 | CSSProperties | - | |
2755
- | placement | 菜单弹出位置: | string | bottomLeft | |
2756
- | trigger | 触发下拉的行为,移动端不支持 hover | Array< | [ | |
2757
- | open | 菜单是否显示,小于 4.23.0 使用 | boolean | - | 4.23.0 |
2758
- | onOpenChange | 菜单显示状态改变时调用,点击菜单按钮导致的消失不会触发。小于 4.23.0 使用 | (open: boolean, info: { source: 'trigger' \| 'menu' }) => void | - | info.source |
2757
+ | colon | 配置 Form.Item 的 | boolean | true | |
2758
+ | disabled | 设置表单组件禁用,仅对 antd 组件有效 | boolean | false | 4.21.0 |
2759
+ | component | 设置 Form 渲染元素,为 | ComponentType \| false | form | |
2760
+ | fields | 通过状态管理(如 redux)控制表单字段,如非强需求不推荐使用。查看 | | - | |
2761
+ | form | | | - | |
2762
+ | feedbackIcons | | | - | 5.9.0 |
2763
+ | initialValues | 表单默认值,只有初始化以及重置时生效 | object | - | |
2764
+ | labelAlign | label 标签的文本对齐方式 | left | right | |
2765
+ | labelWrap | label 标签的文本换行方式 | boolean | false | 4.18.0 |
2766
+ | labelCol | label 标签布局,同 | | - | |
2767
+ | layout | 表单布局 | horizontal | horizontal | |
2768
+ | name | 表单名称,会作为表单字段 | string | - | |
2769
+ | preserve | 当字段被删除时保留字段值。你可以通过 | boolean | true | 4.4.0 |
2770
+ | requiredMark | 必选样式,可以切换为必选或者可选展示样式。此为 Form 配置,Form.Item 无法单独配置 | boolean \| | true | renderProps |
2771
+ | scrollToFirstError | 提交失败自动滚动到第一个错误字段 | boolean \| | false | focus: 5.24.0 |
2772
+ | size | 设置字段组件的尺寸(仅限 antd 组件) | small | - | |
2773
+ | validateMessages | 验证提示模板,说明 | | - | |
2774
+ | validateTrigger | 统一设置字段触发验证的时机 | string \| string[] | onChange | 4.3.0 |
2775
+ | variant | 表单内控件变体 | outlined | outlined | 5.13.0 \| |
2776
+ | wrapperCol | 需要为输入控件设置布局样式时,使用该属性,用法同 labelCol | | - | |
2777
+ | onFieldsChange | 字段更新时触发回调事件 | function(changedFields, allFields) | - | |
2778
+ | onFinish | 提交表单且数据验证成功后回调事件 | function(values) | - | |
2779
+ | onFinishFailed | 提交表单且数据验证失败后回调事件 | function({ values, errorFields, outOfDate }) | - | |
2780
+ | onValuesChange | 字段值更新时触发回调事件 | function(changedValues, allValues) | - | |
2781
+ | clearOnDestroy | 当表单被卸载时清空表单值 | boolean | false | 5.18.0 |
2759
2782
 
2760
2783
 
2761
- ### Dropdown.Button
2784
+ 支持原生 form 除 `onSubmit` 外的所有属性。
2762
2785
 
2763
- 属性与 Dropdown 的相同。还包含以下属性:
2786
+ ### validateMessages
2764
2787
 
2765
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
2766
- |--------|--------|--------|--------|--------|
2767
- | buttonsRender | 自定义左右两个按钮 | (buttons: ReactNode[]) => ReactNode[] | - | |
2768
- | loading | 设置按钮载入状态,和 | boolean \| { delay: number, icon: ReactNode } | false | icon: 5.23.0 |
2769
- | danger | 设置危险按钮 | boolean | - | 4.23.0 |
2770
- | icon | 右侧的 icon | ReactNode | - | |
2771
- | size | 按钮大小,和 | large | middle | |
2772
- | type | 按钮类型,和 | primary | default | |
2773
- | onClick | 点击左侧按钮的回调,和 | (event: React.MouseEvent) => void | - | |
2788
+ Form 为验证提供了[默认的错误提示信息](https://github.com/ant-design/ant-design/blob/6234509d18bac1ac60fbb3f92a5b2c6a6361295a/components/locale/en_US.ts#L88-L134),你可以通过配置 `validateMessages` 属性,修改对应的提示模板。一种常见的使用方式,是配置国际化提示信息:
2774
2789
 
2775
2790
 
2776
- ## 注意
2791
+ ```jsx
2792
+ const validateMessages = {
2793
+ required: "'${name}' 是必选字段",
2794
+ // ...
2795
+ };
2777
2796
 
2778
- 请确保 `Dropdown` 的子元素能接受 `onMouseEnter`、`onMouseLeave`、`onFocus`、`onClick` 事件。
2779
- ## antd API
2797
+ <Form validateMessages={validateMessages} />;
2798
+ ```
2780
2799
 
2781
- ### Menu
2782
2800
 
2783
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
2784
- |--------|--------|--------|--------|--------|
2785
- | defaultOpenKeys | 初始展开的 SubMenu 菜单项 key 数组 | string[] | - | |
2786
- | defaultSelectedKeys | 初始选中的菜单项 key 数组 | string[] | - | |
2787
- | expandIcon | 自定义展开图标 | ReactNode \| | - | 4.9.0 |
2788
- | forceSubMenuRender | 在子菜单展示之前就渲染进 DOM | boolean | false | |
2789
- | inlineCollapsed | inline 时菜单是否收起状态 | boolean | - | |
2790
- | inlineIndent | inline 模式的菜单缩进宽度 | number | 24 | |
2791
- | items | 菜单内容 | | - | 4.20.0 |
2792
- | mode | 菜单类型,现在支持垂直、水平、和内嵌模式三种 | vertical | vertical | |
2793
- | multiple | 是否允许多选 | boolean | false | |
2794
- | openKeys | 当前展开的 SubMenu 菜单项 key 数组 | string[] | - | |
2795
- | overflowedIndicator | 用于自定义 Menu 水平空间不足时的省略收缩的图标 | ReactNode | | |
2796
- | selectable | 是否允许选中 | boolean | true | |
2797
- | selectedKeys | 当前选中的菜单项 key 数组 | string[] | - | |
2798
- | style | 根节点样式 | CSSProperties | - | |
2799
- | subMenuCloseDelay | 用户鼠标离开子菜单后关闭延时,单位:秒 | number | 0.1 | |
2800
- | subMenuOpenDelay | 用户鼠标进入子菜单后开启延时,单位:秒 | number | 0 | |
2801
- | theme | 主题颜色 | light | light | |
2802
- | triggerSubMenuAction | SubMenu 展开/关闭的触发行为 | hover | hover | |
2803
- | onClick | 点击 MenuItem 调用此函数 | function({ item, key, keyPath, domEvent }) | - | |
2804
- | onDeselect | 取消选中时调用,仅在 multiple 生效 | function({ item, key, keyPath, selectedKeys, domEvent }) | - | |
2805
- | onOpenChange | SubMenu 展开/关闭的回调 | function(openKeys: string[]) | - | |
2806
- | onSelect | 被选中时调用 | function({ item, key, keyPath, selectedKeys, domEvent }) | -   | |
2801
+ 此外,[ConfigProvider](/components/config-provider-cn) 也提供了全局化配置方案,允许统一配置错误提示模板:
2807
2802
 
2808
2803
 
2809
- 更多属性查看 [rc-menu](https://github.com/react-component/menu#api)
2804
+ ```jsx
2805
+ const validateMessages = {
2806
+ required: "'${name}' 是必选字段",
2807
+ // ...
2808
+ };
2809
+
2810
+ <ConfigProvider form={{ validateMessages }}>
2811
+ <Form />
2812
+ </ConfigProvider>;
2813
+ ```
2810
2814
 
2811
- ### ItemType
2812
2815
 
2813
- type ItemType = [MenuItemType](#menuitemtype) | [SubMenuType](#submenutype) | [MenuItemGroupType](#menuitemgrouptype) | [MenuDividerType](#menudividertype);
2816
+ ## Form.Item
2814
2817
 
2815
- #### MenuItemType
2818
+ 表单字段组件,用于数据双向绑定、校验、布局等。
2816
2819
 
2817
2820
  | 参数 | 说明 | 类型 | 默认值 | 版本 |
2818
2821
  |--------|--------|--------|--------|--------|
2819
- | danger | 展示错误状态样式 | boolean | false | |
2820
- | disabled | 是否禁用 | boolean | false | |
2821
- | extra | 额外节点 | ReactNode | - | 5.21.0 |
2822
- | icon | 菜单图标 | ReactNode | - | |
2823
- | key | item 的唯一标志 | string | - | |
2824
- | label | 菜单项标题 | ReactNode | - | |
2825
- | title | 设置收缩时展示的悬浮标题 | string | - | |
2822
+ | colon | 配合 | boolean | true | |
2823
+ | dependencies | 设置依赖字段,说明 | | - | |
2824
+ | extra | 额外的提示信息,和 | ReactNode | - | |
2825
+ | getValueFromEvent | 设置如何将 event 的值转换成字段值 | (..args: any[]) => any | - | |
2826
+ | getValueProps | 为子元素添加额外的属性 (不建议通过 | (value: any) => Record | - | 4.2.0 |
2827
+ | hasFeedback | 配合 | boolean \| { icons: | false | icons: 5.9.0 |
2828
+ | help | 提示信息,如不设置,则会根据校验规则自动生成 | ReactNode | - | |
2829
+ | hidden | 是否隐藏字段(依然会收集和校验字段) | boolean | false | 4.4.0 |
2830
+ | htmlFor | 设置子元素 label | string | - | |
2831
+ | initialValue | 设置子元素默认值,如果与 Form 的 | string | - | 4.2.0 |
2832
+ | label | label | ReactNode | - | null: 5.22.0 |
2833
+ | labelAlign | 标签文本对齐方式 | left | right | |
2834
+ | labelCol | label | | - | |
2835
+ | messageVariables | 默认验证字段的信息,查看 | Record | - | 4.7.0 |
2836
+ | name | 字段名,支持数组 | | - | |
2837
+ | normalize | 组件获取值后进行转换,再放入 Form 中。不支持异步 | (value, prevValue, prevValues) => any | - | |
2838
+ | noStyle | 为 | boolean | false | |
2839
+ | preserve | 当字段被删除时保留字段值 | boolean | true | 4.4.0 |
2840
+ | required | 必填样式设置。如不设置,则会根据校验规则自动生成 | boolean | false | |
2841
+ | rules | 校验规则,设置字段的校验逻辑。点击 | | - | |
2842
+ | shouldUpdate | 自定义字段更新逻辑,说明 | boolean \| (prevValue, curValue) => boolean | false | |
2843
+ | tooltip | 配置提示信息 | ReactNode \| | - | 4.7.0 |
2844
+ | trigger | 设置收集字段值变更的时机。点击 | string | onChange | |
2845
+ | validateFirst | 当某一规则校验不通过时,是否停止剩下的规则的校验。设置 | boolean \| | false | parallel |
2846
+ | validateDebounce | 设置防抖,延迟毫秒数后进行校验 | number | - | 5.9.0 |
2847
+ | validateStatus | 校验状态,如不设置,则会根据校验规则自动生成,可选:'success' 'warning' 'error' 'validating' | string | - | |
2848
+ | validateTrigger | 设置字段校验的时机 | string \| string[] | onChange | |
2849
+ | valuePropName | 子节点的值的属性。注意:Switch、Checkbox 的 valuePropName 应该是 | string | value | |
2850
+ | wrapperCol | 需要为输入控件设置布局样式时,使用该属性,用法同 | | - | |
2851
+ | layout | 表单项布局 | horizontal | - | 5.18.0 |
2826
2852
 
2827
2853
 
2828
- #### SubMenuType
2854
+ 被设置了 `name` 属性的 `Form.Item` 包装的控件,表单控件会自动添加 `value`(或 `valuePropName` 指定的其他属性) `onChange`(或 `trigger` 指定的其他属性),数据同步将被 Form 接管,这会导致以下结果:
2829
2855
 
2830
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
2831
- |--------|--------|--------|--------|--------|
2832
- | children | 子菜单的菜单项 | | - | |
2833
- | disabled | 是否禁用 | boolean | false | |
2834
- | icon | 菜单图标 | ReactNode | - | |
2835
- | key | 唯一标志 | string | - | |
2836
- | label | 菜单项标题 | ReactNode | - | |
2837
- | popupClassName | 子菜单样式, | string | - | |
2838
- | popupOffset | 子菜单偏移量, | [number, number] | - | |
2839
- | onTitleClick | 点击子菜单标题 | function({ key, domEvent }) | - | |
2840
- | theme | 设置子菜单的主题,默认从 Menu 上继承 | light | - | |
2841
2856
 
2857
+ 1. 你**不再需要也不应该**用 `onChange` 来做数据收集同步(你可以使用 Form 的 `onValuesChange`),但还是可以继续监听 `onChange` 事件。
2858
+ 2. 你不能用控件的 `value` 或 `defaultValue` 等属性来设置表单域的值,默认值可以用 Form 里的 `initialValues` 来设置。注意 `initialValues` 不能被 `setState` 动态更新,你需要用 `setFieldsValue` 来更新。
2859
+ 3. 你不应该用 `setState`,可以使用 `form.setFieldsValue` 来动态改变表单值。
2842
2860
 
2843
- #### MenuItemGroupType
2861
+ ### dependencies
2844
2862
 
2845
- 定义类型为 `group` 时,会作为分组处理:
2863
+ 当字段间存在依赖关系时使用。如果一个字段设置了 `dependencies` 属性。那么它所依赖的字段更新时,该字段将自动触发更新与校验。一种常见的场景,就是注册用户表单的“密码”与“确认密码”字段。“确认密码”校验依赖于“密码”字段,设置 `dependencies` 后,“密码”字段更新会重新触发“校验密码”的校验逻辑。你可以参考[具体例子](#form-demo-dependencies)。
2846
2864
 
2865
+ `dependencies` 不应和 `shouldUpdate` 一起使用,因为这可能带来更新逻辑的混乱。
2847
2866
 
2848
- ```ts
2849
- const groupItem = {
2850
- type: 'group', // Must have
2851
- label: 'My Group',
2852
- children: [],
2853
- };
2854
- ```
2867
+ ### FeedbackIcons
2855
2868
 
2869
+ `({ status: ValidateStatus, errors: ReactNode, warnings: ReactNode }) => Record<ValidateStatus, ReactNode>`
2856
2870
 
2857
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
2858
- |--------|--------|--------|--------|--------|
2859
- | children | 分组的菜单项 | | - | |
2860
- | label | 分组标题 | ReactNode | - | |
2871
+ ### shouldUpdate
2861
2872
 
2873
+ Form 通过增量更新方式,只更新被修改的字段相关组件以达到性能优化目的。大部分场景下,你只需要编写代码或者与 [`dependencies`](#dependencies) 属性配合校验即可。而在某些特定场景,例如修改某个字段值后出现新的字段选项、或者纯粹希望表单任意变化都对某一个区域进行渲染。你可以通过 `shouldUpdate` 修改 Form.Item 的更新逻辑。
2862
2874
 
2863
- #### MenuDividerType
2875
+ `shouldUpdate` 为 `true` 时,Form 的任意变化都会使该 Form.Item 重新渲染。这对于自定义渲染一些区域十分有帮助,要注意 Form.Item 里包裹的子组件必须由函数返回,否则 `shouldUpdate` 不会起作用:
2864
2876
 
2865
- 菜单项分割线,只用在弹出菜单内,需要定义类型为 `divider`:
2877
+ 相关issue:[#34500](https://github.com/ant-design/ant-design/issues/34500)
2866
2878
 
2867
2879
 
2868
- ```ts
2869
- const dividerItem = {
2870
- type: 'divider', // Must have
2871
- };
2880
+ ```jsx
2881
+ <Form.Item shouldUpdate>
2882
+ {() => {
2883
+ return <pre>{JSON.stringify(form.getFieldsValue(), null, 2)}</pre>;
2884
+ }}
2885
+ </Form.Item>
2872
2886
  ```
2873
2887
 
2874
2888
 
2875
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
2876
- |--------|--------|--------|--------|--------|
2877
- | dashed | 是否虚线 | boolean | false | |
2878
-
2889
+ 你可以参考[示例](#form-demo-inline-login)查看具体使用场景。
2879
2890
 
2891
+ 当 `shouldUpdate` 为方法时,表单的每次数值更新都会调用该方法,提供原先的值与当前的值以供你比较是否需要更新。这对于是否根据值来渲染额外字段十分有帮助:
2880
2892
 
2881
2893
 
2882
- <DemoTitle title="Empty" desc="用于空状态的占位图形展示。">
2883
- ## API
2894
+ ```jsx
2895
+ <Form.Item shouldUpdate={(prevValues, curValues) => prevValues.additional !== curValues.additional}>
2896
+ {() => {
2897
+ return (
2898
+ <Form.Item name="other">
2899
+ <Input />
2900
+ </Form.Item>
2901
+ );
2902
+ }}
2903
+ </Form.Item>
2904
+ ```
2884
2905
 
2885
- | 属性名 | 描述 | 类型 | 默认值 |
2886
- |--------|--------|--------|--------|
2887
- | type | 空状态类型 | \| 'noData'
2888
- \| 'networkError'
2889
- \| '404'
2890
- \| 'arrears'
2891
- \| 'desktopOnly'
2892
- \| 'noAudio'
2893
- \| 'noImage'
2894
- \| 'noVideo'
2895
- \| 'noAccess'
2896
- \| 'error'
2897
- \| 'noChat'
2898
- \| 'noModel'
2899
- \| 'noApp'
2900
- \| 'success'
2901
- \| 'failed'
2902
- \| 'inProgress'
2903
- \| 'stayTuned' | 'noData' |
2904
- | texture | 是否显示纹理 | boolean | true |
2905
- | image | 图片地址 | string | 默认是no data的图片 |
2906
- | imageStyle | 图片样式 | React.CSSProperties | |
2907
- | title | 标题内容 | React.ReactNode | |
2908
- | description | 自定义描述内容 | React.ReactNode | |
2909
- | onOk | ok按钮的点击事件 | (e: React.MouseEvent) => void | |
2910
- | okText | ok按钮的文本 | React.ReactNode | |
2911
- | okType | ok按钮的类型 | SparkButtonProps['type'] | 'primary' |
2912
- | okButtonProps | ok按钮的props | SparkButtonProps | |
2913
- | children | 自定义空状态的内容 | React.ReactNode | |
2914
- | className | 自定义空状态的类名 | string | |
2915
- | style | 自定义空状态的样式 | React.CSSProperties | |
2916
- | size | 自定义空状态的大小 | React.CSSProperties['width'] | |
2917
- | autoFit | 是否自适应容器宽度,当容器宽度小于 size 时自动缩放 | boolean | false |
2918
2906
 
2907
+ 你可以参考[示例](#form-demo-control-hooks)查看具体使用场景。
2919
2908
 
2920
- <AntdApiRef url="https://ant.design/components/empty-cn/#api"></AntdApiRef>
2909
+ ### messageVariables
2921
2910
 
2911
+ 你可以通过 `messageVariables` 修改 Form.Item 的默认验证信息。
2922
2912
 
2923
2913
 
2914
+ ```jsx
2915
+ <Form>
2916
+ <Form.Item
2917
+ messageVariables={{ another: 'good' }}
2918
+ label="user"
2919
+ rules={[{ required: true, message: '${another} is required' }]}
2920
+ >
2921
+ <Input />
2922
+ </Form.Item>
2923
+ <Form.Item
2924
+ messageVariables={{ label: 'good' }}
2925
+ label={<span>user</span>}
2926
+ rules={[{ required: true, message: '${label} is required' }]}
2927
+ >
2928
+ <Input />
2929
+ </Form.Item>
2930
+ </Form>
2931
+ ```
2924
2932
 
2925
2933
 
2926
- <DemoTitle title="FloatButton" desc="用于网站上的全局功能;无论浏览到何处都可以看见的按钮。">
2927
- #### API
2934
+ `5.20.2` 起,当你希望不要转译 `${}` 时,你可以通过 `\\${}` 来略过:
2928
2935
 
2929
- <AntdApiRef url="https://ant.design/components/float-button-cn/#api"></AntdApiRef>
2930
2936
 
2937
+ ```jsx
2938
+ { required: true, message: '${label} is convert, \\${label} is not convert' }
2931
2939
 
2932
- ## antd API
2940
+ // good is convert, ${label} is not convert
2941
+ ```
2933
2942
 
2934
- 通用属性参考:[通用属性](/docs/react/common-props)
2935
2943
 
2936
- `antd@5.0.0` 版本开始提供该组件。
2944
+ ## Form.List
2937
2945
 
2938
- ### 共同的 API
2946
+ 为字段提供数组化管理。
2939
2947
 
2940
2948
  | 参数 | 说明 | 类型 | 默认值 | 版本 |
2941
2949
  |--------|--------|--------|--------|--------|
2942
- | icon | 自定义图标 | ReactNode | - | |
2943
- | description | 文字及其它内容 | ReactNode | - | |
2944
- | tooltip | 气泡卡片的内容 | ReactNode \| | - | TooltipProps: 5.25.0 |
2945
- | type | 设置按钮类型 | default | default | |
2946
- | shape | 设置按钮形状 | circle | circle | |
2947
- | onClick | 点击按钮时的回调 | (event) => void | - | |
2948
- | href | 点击跳转的地址,指定此属性 button 的行为和 a 链接一致 | string | - | |
2949
- | target | 相当于 a 标签的 target 属性,href 存在时生效 | string | - | |
2950
- | htmlType | 设置 | submit | button | 5.21.0 |
2951
- | badge | 带徽标数字的悬浮按钮(不支持 | | - | 5.4.0 |
2952
-
2953
-
2954
- ### FloatButton.Group
2950
+ | children | 渲染函数 | (fields: Field[], operation: { add, remove, move }, meta: { errors }) => React.ReactNode | - | |
2951
+ | initialValue | 设置子元素默认值,如果与 Form 的 | any[] | - | 4.9.0 |
2952
+ | name | 字段名,支持数组。List 本身也是字段,因而 | | - | |
2953
+ | rules | 校验规则,仅支持自定义规则。需要配合 | { validator, message }[] | - | 4.7.0 |
2955
2954
 
2956
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
2957
- |--------|--------|--------|--------|--------|
2958
- | shape | 设置包含的 FloatButton 按钮形状 | circle | circle | |
2959
- | trigger | 触发方式(有触发方式为菜单模式) | click | - | |
2960
- | open | 受控展开,需配合 trigger 一起使用 | boolean | - | |
2961
- | closeIcon | 自定义关闭按钮 | React.ReactNode | | |
2962
- | placement | 自定义菜单弹出位置 | top | top | 5.21.0 |
2963
- | onOpenChange | 展开收起时的回调,需配合 trigger 一起使用 | (open: boolean) => void | - | |
2964
- | onClick | 点击按钮时的回调(仅在菜单模式中有效) | (event) => void | - | 5.3.0 |
2965
2955
 
2966
2956
 
2967
- ### FloatButton.BackTop
2957
+ ```tsx
2958
+ <Form.List>
2959
+ {(fields) =>
2960
+ fields.map((field) => (
2961
+ <Form.Item {...field}>
2962
+ <Input />
2963
+ </Form.Item>
2964
+ ))
2965
+ }
2966
+ </Form.List>
2967
+ ```
2968
2968
 
2969
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
2970
- |--------|--------|--------|--------|--------|
2971
- | duration | 回到顶部所需时间(ms) | number | 450 | |
2972
- | target | 设置需要监听其滚动事件的元素 | () => HTMLElement | () => window | |
2973
- | visibilityHeight | 滚动高度达到此参数值才出现 BackTop | number | 400 | |
2974
- | onClick | 点击按钮的回调函数 | () => void | - | |
2975
2969
 
2970
+ 注意:Form.List 下的字段不应该配置 `initialValue`,你始终应该通过 Form.List 的 `initialValue` 或者 Form 的 `initialValues` 来配置。
2976
2971
 
2972
+ ## operation
2977
2973
 
2974
+ Form.List 渲染表单相关操作函数。
2978
2975
 
2979
- <DemoTitle title="Drawer" desc="从页面一侧滑入的操作面板,用于承载临时界面内容。">
2980
- #### API
2976
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
2977
+ |--------|--------|--------|--------|--------|
2978
+ | add | 新增表单项 | (defaultValue?: any, insertIndex?: number) => void | insertIndex | 4.6.0 |
2979
+ | move | 移动表单项 | (from: number, to: number) => void | - | |
2980
+ | remove | 删除表单项 | (index: number \| number[]) => void | number[] | 4.5.0 |
2981
2981
 
2982
- | 属性名 | 描述 | 类型 | 默认值 |
2983
- |--------|--------|--------|--------|
2984
- | showDivider | 是否显示分割线 | boolean | true |
2985
2982
 
2986
- ##### Drawer.Confirm - 带按钮的抽屉
2983
+ ## Form.ErrorList
2987
2984
 
2988
- | 属性名 | 描述 | 类型 | 默认值 |
2989
- |--------|--------|--------|--------|
2990
- | footer | 自定义底部内容 | React.ReactNode | |
2991
- | onOk | 点击确定回调 | () => void | |
2992
- | okText | 确认按钮文字 | string | |
2993
- | okButtonProps | 确认按钮属性 | ButtonProps | |
2994
- | onCancel | 点击取消回调 | () => void | |
2995
- | cancelText | 取消按钮文字 | string | |
2996
- | cancelButtonProps | 取消按钮属性 | ButtonProps | |
2997
- | info | 底部额外内容 | React.ReactNode | |
2985
+ 4.7.0 新增。错误展示组件,仅限配合 Form.List rules 一同使用。参考[示例](#form-demo-dynamic-form-item)。
2998
2986
 
2999
- <AntdApiRef url="https://ant.design/components/drawer-cn/#api"></AntdApiRef>
2987
+ | 参数 | 说明 | 类型 | 默认值 |
2988
+ |--------|--------|--------|--------|
2989
+ | errors | 错误列表 | ReactNode[] | - |
3000
2990
 
3001
2991
 
3002
- ## antd API
2992
+ ## Form.Provider
3003
2993
 
3004
- 通用属性参考:[通用属性](/docs/react/common-props)
2994
+ 提供表单间联动功能,其下设置 `name` 的 Form 更新时,会自动触发对应事件。查看[示例](#form-demo-form-context)
3005
2995
 
3006
- <!-- prettier-ignore -->
3007
- <Container type="warning" title="注意">
3008
- v5 使用 `rootClassName` `rootStyle` 来配置最外层元素样式。原 v4 `className` `style` 改至配置 Drawer 窗体样式以和 Modal 对齐。
3009
- </Container>
3010
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
3011
- |--------|--------|--------|--------|--------|
3012
- | autoFocus | 抽屉展开后是否将焦点切换至其 DOM 节点 | boolean | true | 4.17.0 |
3013
- | afterOpenChange | 切换抽屉时动画结束后的回调 | function(open) | - | |
3014
- | className | Drawer 容器外层 className 设置,如果需要设置最外层,请使用 rootClassName | string | - | |
3015
- | classNames | 语义化结构 className | | - | 5.10.0 |
3016
- | closeIcon | 自定义关闭图标。5.7.0:设置为 | ReactNode | | |
3017
- | destroyOnHidden | 关闭时销毁 Drawer 里的子元素 | boolean | false | 5.25.0 |
3018
- | extra | 抽屉右上角的操作区域 | ReactNode | - | 4.17.0 |
3019
- | footer | 抽屉的页脚 | ReactNode | - | |
3020
- | forceRender | 预渲染 Drawer 内元素 | boolean | false | |
3021
- | getContainer | 指定 Drawer 挂载的节点, | HTMLElement \| () => HTMLElement \| Selectors \| false | body | |
3022
- | height | 高度,在 | string \| number | 378 | |
3023
- | keyboard | 是否支持键盘 esc 关闭 | boolean | true | |
3024
- | mask | 是否展示遮罩 | boolean | true | |
3025
- | maskClosable | 点击蒙层是否允许关闭 | boolean | true | |
3026
- | placement | 抽屉的方向 | top | right | |
3027
- | push | 用于设置多层 Drawer 的推动行为 | boolean \| { distance: string \| number } | { distance: 180 } | 4.5.0+ |
3028
- | rootStyle | 可用于设置 Drawer 最外层容器的样式,和 | CSSProperties | - | |
3029
- | size | 预设抽屉宽度(或高度),default | 'default' \| 'large' | 'default' | 4.17.0 |
3030
- | style | 设计 Drawer 容器样式,如果你只需要设置内容部分请使用 | CSSProperties | - | |
3031
- | styles | 语义化结构 style | | - | 5.10.0 |
3032
- | title | 标题 | ReactNode | - | |
3033
- | loading | 显示骨架屏 | boolean | false | 5.17.0 |
3034
- | open | Drawer 是否可见 | boolean | - |
3035
- | width | 宽度 | string \| number | 378 | |
3036
- | zIndex | 设置 Drawer 的 | number | 1000 | |
3037
- | onClose | 点击遮罩层或左上角叉或取消按钮的回调 | function(e) | - | |
3038
- | drawerRender | 自定义渲染抽屉 | (node: ReactNode) => ReactNode | - | 5.18.0 |
2996
+ | 参数 | 说明 | 类型 | 默认值 |
2997
+ |--------|--------|--------|--------|
2998
+ | onFormChange | 子表单字段更新时触发 | function(formName: string, info: { changedFields, forms }) | - |
2999
+ | onFormFinish | 子表单提交时触发 | function(formName: string, info: { values, forms }) | - |
3039
3000
 
3040
3001
 
3041
3002
 
3003
+ ```jsx
3004
+ <Form.Provider
3005
+ onFormFinish={(name) => {
3006
+ if (name === 'form1') {
3007
+ // Do something...
3008
+ }
3009
+ }}
3010
+ >
3011
+ <Form name="form1">...</Form>
3012
+ <Form name="form2">...</Form>
3013
+ </Form.Provider>
3014
+ ```
3042
3015
 
3043
- <DemoTitle title="Descriptions" desc="展示多个只读字段的组合">
3044
- #### API
3045
3016
 
3046
- <AntdApiRef url="https://ant.design/components/descriptions-cn/#api"></AntdApiRef>
3017
+ ### FormInstance
3047
3018
 
3019
+ | 名称 | 说明 | 类型 | 版本 |
3020
+ |--------|--------|--------|--------|
3021
+ | getFieldError | 获取对应字段名的错误信息 | (name: | |
3022
+ | getFieldInstance | 获取对应字段实例 | (name: | 4.4.0 |
3023
+ | getFieldsError | 获取一组字段名对应的错误信息,返回为数组形式 | (nameList?: | |
3024
+ | getFieldsValue | 获取一组字段名对应的值,会按照对应结构返回。默认返回现存字段值,当调用 | | |
3025
+ | getFieldValue | 获取对应字段名的值 | (name: | |
3026
+ | isFieldsTouched | 检查一组字段是否被用户操作过, | (nameList?: | |
3027
+ | isFieldTouched | 检查对应字段是否被用户操作过 | (name: | |
3028
+ | isFieldValidating | 检查对应字段是否正在校验 | (name: | |
3029
+ | resetFields | 重置一组字段到 | (fields?: | |
3030
+ | scrollToField | 滚动到对应字段位置 | (name: | focus: 5.24.0 |
3031
+ | setFields | 设置一组字段状态 | (fields: | |
3032
+ | setFieldValue | 设置表单的值(该值将直接传入 form store 中并且 | (name: | 4.22.0 |
3033
+ | setFieldsValue | 设置表单的值(该值将直接传入 form store 中并且 | (values) => void | |
3034
+ | submit | 提交表单,与点击 | () => void | |
3035
+ | validateFields | 触发表单验证,设置 | (nameList?: | |
3048
3036
 
3049
- ## antd API
3050
3037
 
3051
- 通用属性参考:[通用属性](/docs/react/common-props)
3038
+ #### validateFields
3052
3039
 
3053
- ### Descriptions
3054
3040
 
3055
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
3056
- |--------|--------|--------|--------|--------|
3057
- | bordered | 是否展示边框 | boolean | false | |
3058
- | colon | 配置 | boolean | true | |
3059
- | column | 一行的 | number \| | 3 | |
3060
- | extra | 描述列表的操作区域,显示在右上方 | ReactNode | - | 4.5.0 |
3061
- | items | 描述列表项内容 | | - | 5.8.0 |
3062
- | layout | 描述布局 | horizontal | horizontal | |
3063
- | size | 设置列表的大小。可以设置为 | default | - | |
3064
- | title | 描述列表的标题,显示在最顶部 | ReactNode | - | |
3065
- | classNames | 语义化结构 class | | - | 5.23.0 |
3066
- | styles | 语义化结构 style | | - | 5.23.0 |
3041
+ ```tsx
3042
+ export interface ValidateConfig {
3043
+ // 5.5.0 新增。仅校验内容而不会将错误信息展示到 UI 上。
3044
+ validateOnly?: boolean;
3045
+ // 5.9.0 新增。对提供的 `nameList` 与其子路径进行递归校验。
3046
+ recursive?: boolean;
3047
+ // 5.11.0 新增。校验 dirty 的字段(touched + validated)。
3048
+ // 使用 `dirty` 可以很方便的仅校验用户操作过和被校验过的字段。
3049
+ dirty?: boolean;
3050
+ }
3051
+ ```
3067
3052
 
3068
3053
 
3069
- ### DescriptionItem
3054
+ 返回示例:
3070
3055
 
3071
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
3072
- |--------|--------|--------|--------|--------|
3073
- | label | 内容的描述 | ReactNode | - | |
3074
- | span | 包含列的数量( | number\| | 1 | screens: 5.9.0 |
3075
3056
 
3057
+ ```jsx
3058
+ validateFields()
3059
+ .then((values) => {
3060
+ /*
3061
+ values:
3062
+ {
3063
+ username: 'username',
3064
+ password: 'password',
3065
+ }
3066
+ */
3067
+ })
3068
+ .catch((errorInfo) => {
3069
+ /*
3070
+ errorInfo:
3071
+ {
3072
+ values: {
3073
+ username: 'username',
3074
+ password: 'password',
3075
+ },
3076
+ errorFields: [
3077
+ { name: ['password'], errors: ['Please input your Password!'] },
3078
+ ],
3079
+ outOfDate: false,
3080
+ }
3081
+ */
3082
+ });
3083
+ ```
3076
3084
 
3077
- span 是 Description.Item 的数量。 span={2} 会占用两个 DescriptionItem 的宽度。当同时配置 `style` 和 `labelStyle`(或 `contentStyle`)时,两者会同时作用。样式冲突时,后者会覆盖前者。
3078
3085
 
3086
+ ## Hooks
3079
3087
 
3088
+ ### Form.useForm
3080
3089
 
3081
- <DemoTitle title="CollapsePanel" desc="折叠面板">
3082
- #### API
3090
+ `type Form.useForm = (): [FormInstance]`
3083
3091
 
3084
- | 属性名 | 描述 | 类型 | 默认值 |
3085
- |--------|--------|--------|--------|
3086
- | collapsedHeight | 收起状态下显示的内容高度 | number | 0 |
3087
- | expandedHeight | 展开状态下的内容高度,设置后内容超出时可滚动,不设置则自适应内容高度 | number | 300 |
3088
- | title | 面板标题 | string \| React.ReactNode | "" |
3089
- | expandOnPanelClick | 是否允许点击整个面板进行展开 | boolean | false |
3090
- | extra | 面板右侧内容 | React.ReactNode | |
3091
- | children | 面板内容 | React.ReactNode | |
3092
- | defaultExpanded | 是否默认展开 | boolean | false |
3093
- | classNames | 语义化的classNames | Partial> | |
3094
- | styles | 语义化的styles | Partial<
3095
- Record
3096
- > | |
3092
+ 创建 Form 实例,用于管理所有数据状态。
3097
3093
 
3094
+ ### Form.useFormInstance
3098
3095
 
3096
+ `type Form.useFormInstance = (): FormInstance`
3099
3097
 
3100
- ## antd API
3098
+ `4.20.0` 新增,获取当前上下文正在使用的 Form 实例,常见于封装子组件消费无需透传 Form 实例:
3101
3099
 
3102
- 通用属性参考:[通用属性](/docs/react/common-props)
3103
3100
 
3104
- ### Collapse
3101
+ ```tsx
3102
+ const Sub = () => {
3103
+ const form = Form.useFormInstance();
3105
3104
 
3106
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
3107
- |--------|--------|--------|--------|--------|
3108
- | accordion | 手风琴模式 | boolean | false | |
3109
- | activeKey | 当前激活 tab 面板的 key | string[] \| string | | |
3110
- | bordered | 带边框风格的折叠面板 | boolean | true | |
3111
- | collapsible | 所有子面板是否可折叠或指定可折叠触发区域 | header | - | 4.9.0 |
3112
- | defaultActiveKey | 初始化选中面板的 key | string[] \| string | - | |
3113
- | destroyOnHidden | 销毁折叠隐藏的面板 | boolean | false | 5.25.0 |
3114
- | expandIcon | 自定义切换图标 | (panelProps) => ReactNode | - | |
3115
- | expandIconPosition | 设置图标位置 | start | - | 4.21.0 |
3116
- | ghost | 使折叠面板透明且无边框 | boolean | false | 4.4.0 |
3117
- | size | 设置折叠面板大小 | large | middle | 5.2.0 |
3118
- | onChange | 切换面板的回调 | function | - | |
3119
- | items | 折叠项目内容 | | - | 5.6.0 |
3105
+ return <Button onClick={() => form.setFieldsValue({})} />;
3106
+ };
3120
3107
 
3108
+ export default () => {
3109
+ const [form] = Form.useForm();
3121
3110
 
3122
- ### ItemType
3111
+ return (
3112
+ <Form form={form}>
3113
+ <Sub />
3114
+ </Form>
3115
+ );
3116
+ };
3117
+ ```
3123
3118
 
3124
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
3125
- |--------|--------|--------|--------|--------|
3126
- | classNames | 语义化结构 className | | - | 5.21.0 |
3127
- | collapsible | 是否可折叠或指定可折叠触发区域 | header | - | |
3128
- | forceRender | 被隐藏时是否渲染 body 区域 DOM 结构 | boolean | false | |
3129
- | key | 对应 activeKey | string \| number | - | |
3130
- | label | 面板标题 | ReactNode | - | - |
3131
- | showArrow | 是否展示当前面板上的箭头(为 false 时,collapsible 不能设为 icon) | boolean | true | |
3132
- | styles | 语义化结构 style | | - | 5.21.0 |
3133
3119
 
3120
+ ### Form.useWatch
3134
3121
 
3135
- ### Collapse.Panel
3122
+ `type Form.useWatch = (namePath: NamePath | (selector: (values: Store)) => any, formInstance?: FormInstance | WatchOptions): Value`
3136
3123
 
3137
- <!-- prettier-ignore -->
3138
- <Container type="warning" title="已废弃">
3139
- 版本 >= 5.6.0 时请使用 items 方式配置面板。
3140
- </Container>
3141
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
3142
- |--------|--------|--------|--------|--------|
3143
- | collapsible | 是否可折叠或指定可折叠触发区域 | header | - | 4.9.0 (icon: 4.24.0) |
3144
- | forceRender | 被隐藏时是否渲染 body 区域 DOM 结构 | boolean | false | |
3145
- | header | 面板标题 | ReactNode | - | |
3146
- | key | 对应 activeKey | string \| number | - | |
3147
- | showArrow | 是否展示当前面板上的箭头(为 false 时,collapsible 不能设为 icon) | boolean | true | |
3124
+ `5.12.0` 新增 `selector`
3148
3125
 
3126
+ 用于直接获取 form 中字段对应的值。通过该 Hooks 可以与诸如 `useSWR` 进行联动从而降低维护成本:
3149
3127
 
3150
3128
 
3129
+ ```tsx
3130
+ const Demo = () => {
3131
+ const [form] = Form.useForm();
3132
+ const userName = Form.useWatch('username', form);
3151
3133
 
3152
- <DemoTitle title="DatePicker" desc="输入或选择时间的控件。">
3153
- #### API
3134
+ const { data: options } = useSWR(`/api/user/${userName}`, fetcher);
3154
3135
 
3155
- <AntdApiRef url="https://ant.design/components/date-picker-cn/#api"></AntdApiRef>
3136
+ return (
3137
+ <Form form={form}>
3138
+ <Form.Item name="username">
3139
+ <AutoComplete options={options} />
3140
+ </Form.Item>
3141
+ </Form>
3142
+ );
3143
+ };
3144
+ ```
3156
3145
 
3157
3146
 
3158
- ## antd API
3147
+ 如果你的组件被包裹在 `Form.Item` 内部,你可以省略第二个参数,`Form.useWatch` 会自动找到上层最近的 `FormInstance`。
3159
3148
 
3160
- 通用属性参考:[通用属性](/docs/react/common-props)
3149
+ `useWatch` 默认只监听在 Form 中注册的字段,如果需要监听非注册字段,可以通过配置 `preserve` 进行监听:
3161
3150
 
3162
- 日期类组件包括以下五种形式。
3163
3151
 
3152
+ ```tsx
3153
+ const Demo = () => {
3154
+ const [form] = Form.useForm();
3164
3155
 
3165
- - DatePicker
3166
- - DatePicker[picker="month"]
3167
- - DatePicker[picker="week"]
3168
- - DatePicker[picker="year"]
3169
- - DatePicker[picker="quarter"] (4.1.0 新增)
3170
- - RangePicker
3156
+ const age = Form.useWatch('age', { form, preserve: true });
3157
+ console.log(age);
3171
3158
 
3172
- ### 国际化配置
3159
+ return (
3160
+ <div>
3161
+ <Button onClick={() => form.setFieldValue('age', 2)}>Update</Button>
3162
+ <Form form={form}>
3163
+ <Form.Item name="name">
3164
+ <Input />
3165
+ </Form.Item>
3166
+ </Form>
3167
+ </div>
3168
+ );
3169
+ };
3170
+ ```
3173
3171
 
3174
- 默认配置为 en-US,如果你需要设置其他语言,推荐在入口处使用我们提供的国际化组件,详见:[ConfigProvider 国际化](https://ant.design/components/config-provider-cn/)。
3175
3172
 
3176
- 如有特殊需求(仅修改单一组件的语言),请使用 locale 参数,参考:[默认配置](https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json)。
3173
+ ### Form.Item.useStatus
3177
3174
 
3175
+ `type Form.Item.useStatus = (): { status: ValidateStatus | undefined, errors: ReactNode[], warnings: ReactNode[] }`
3178
3176
 
3179
- ```jsx
3180
- // 默认语言为 en-US,如果你需要设置其他语言,推荐在入口文件全局设置 locale
3181
- // 确保还导入相关的 dayjs 文件,否则所有文本的区域设置都不会更改(例如范围选择器月份)
3182
- import locale from 'antd/locale/zh_CN';
3183
- import dayjs from 'dayjs';
3177
+ `4.22.0` 新增,可用于获取当前 Form.Item 的校验状态,如果上层没有 Form.Item,`status` 将会返回 `undefined`。`5.4.0` 新增 `errors` 和 `warnings`,可用于获取当前 Form.Item 的错误信息和警告信息:
3184
3178
 
3185
- import 'dayjs/locale/zh-cn';
3186
3179
 
3187
- dayjs.locale('zh-cn');
3180
+ ```tsx
3181
+ const CustomInput = ({ value, onChange }) => {
3182
+ const { status, errors } = Form.Item.useStatus();
3183
+ return (
3184
+ <input
3185
+ value={value}
3186
+ onChange={onChange}
3187
+ className={`custom-input-${status}`}
3188
+ placeholder={(errors.length && errors[0]) || ''}
3189
+ />
3190
+ );
3191
+ };
3188
3192
 
3189
- <ConfigProvider locale={locale}>
3190
- <DatePicker defaultValue={dayjs('2015-01-01', 'YYYY-MM-DD')} />
3191
- </ConfigProvider>;
3193
+ export default () => (
3194
+ <Form>
3195
+ <Form.Item name="username">
3196
+ <CustomInput />
3197
+ </Form.Item>
3198
+ </Form>
3199
+ );
3192
3200
  ```
3193
3201
 
3194
3202
 
3195
- <!-- prettier-ignore -->
3196
- <Container type="warning">
3197
- 在搭配 Next.js 的 App Router 使用时,注意在引入 dayjs 的 locale 文件时加上 `'use client'`。这是由于 Ant Design 的组件都是客户端组件,在 RSC 中引入 dayjs 的 locale 文件将不会在客户端生效。
3198
- </Container>
3199
- ### 共同的 API
3200
-
3201
- 以下 API 为 DatePicker、 RangePicker 共享的 API。
3202
-
3203
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
3204
- |--------|--------|--------|--------|--------|
3205
- | allowClear | 自定义清除按钮 | boolean \| { clearIcon?: ReactNode } | true | 5.8.0: 支持对象类型 |
3206
- | autoFocus | 自动获取焦点 | boolean | false | |
3207
- | className | 选择器 className | string | - | |
3208
- | dateRender | 自定义日期单元格的内容,5.4.0 起用 | function(currentDate: dayjs, today: dayjs) => React.ReactNode | - | < 5.4.0 |
3209
- | cellRender | 自定义单元格的内容 | (current: dayjs, info: { originNode: React.ReactElement,today: DateType, range?: 'start' \| 'end', type: PanelMode, locale?: Locale, subType?: 'hour' \| 'minute' \| 'second' \| 'meridiem' }) => React.ReactNode | - | 5.4.0 |
3210
- | components | 自定义面板 | Record | - | 5.14.0 |
3211
- | defaultOpen | 是否默认展开控制弹层 | boolean | - | |
3212
- | disabled | 禁用 | boolean | false | |
3213
- | disabledDate | 不可选择的日期 | (currentDate: dayjs, info: { from?: dayjs, type: Picker }) => boolean | - | info |
3214
- | format | 设置日期格式,为数组时支持多格式匹配,展示以第一个为准。配置参考 | | | |
3215
- | order | 多选、范围时是否自动排序 | boolean | true | 5.14.0 |
3216
- | preserveInvalidOnBlur | 失去焦点是否要清空输入框内无效内容 | boolean | false | 5.14.0 |
3217
- | getPopupContainer | 定义浮层的容器,默认为 body 上新建 div | function(trigger) | - | |
3218
- | inputReadOnly | 设置输入框为只读(避免在移动设备上打开虚拟键盘) | boolean | false | |
3219
- | locale | 国际化配置 | object | | |
3220
- | minDate | 最小日期,同样会限制面板的切换范围 | dayjs | - | 5.14.0 |
3221
- | maxDate | 最大日期,同样会限制面板的切换范围 | dayjs | - | 5.14.0 |
3222
- | mode | 日期面板的状态( | time | - | |
3223
- | needConfirm | 是否需要确认按钮,为 | boolean | - | 5.14.0 |
3224
- | nextIcon | 自定义下一个图标 | ReactNode | - | 4.17.0 |
3225
- | open | 控制弹层是否展开 | boolean | - | |
3226
- | panelRender | 自定义渲染面板 | (panelNode) => ReactNode | - | 4.5.0 |
3227
- | picker | 设置选择器类型 | date | date | quarter |
3228
- | placeholder | 输入框提示文字 | string \| [string, string] | - | |
3229
- | placement | 选择框弹出的位置 | bottomLeft | bottomLeft | |
3230
- | prefix | 自定义前缀 | ReactNode | - | 5.22.0 |
3231
- | prevIcon | 自定义上一个图标 | ReactNode | - | 4.17.0 |
3232
- | presets | 预设时间范围快捷选择, 自 | { label: React.ReactNode, value: Dayjs \| (() => Dayjs) }[] | - | |
3233
- | size | 输入框大小, | large | - | |
3234
- | status | 设置校验状态 | 'error' \| 'warning' | - | 4.19.0 |
3235
- | style | 自定义输入框样式 | CSSProperties | {} | |
3236
- | suffixIcon | 自定义的选择框后缀图标 | ReactNode | - | |
3237
- | superNextIcon | 自定义 | ReactNode | - | 4.17.0 |
3238
- | superPrevIcon | 自定义 | ReactNode | - | 4.17.0 |
3239
- | variant | 形态变体 | outlined | outlined | 5.13.0 \| |
3240
- | onOpenChange | 弹出日历和关闭日历的回调 | function(open) | - | |
3241
- | onPanelChange | 日历面板切换的回调 | function(value, mode) | - | |
3203
+ #### 与其他获取数据的方式的区别
3242
3204
 
3205
+ Form 仅会对变更的 Field 进行刷新,从而避免完整的组件刷新可能引发的性能问题。因而你无法在 render 阶段通过 `form.getFieldsValue` 来实时获取字段值,而 `useWatch` 提供了一种特定字段访问的方式,从而使得在当前组件中可以直接消费字段的值。同时,如果为了更好的渲染性能,你可以通过 Field 的 renderProps 仅更新需要更新的部分。而当当前组件更新或者 effect 都不需要消费字段值时,则可以通过 `onValuesChange` 将数据抛出,从而避免组件更新。
3243
3206
 
3244
- ### 共同的方法
3207
+ ## Interface
3245
3208
 
3246
- | 名称 | 描述 | 版本 |
3247
- |--------|--------|--------|
3248
- | blur() | 移除焦点 | |
3249
- | focus() | 获取焦点 | |
3209
+ ### NamePath
3250
3210
 
3211
+ `string | number | (string | number)[]`
3251
3212
 
3252
- ### DatePicker
3213
+ ### GetFieldsValue
3253
3214
 
3254
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
3255
- |--------|--------|--------|--------|--------|
3256
- | defaultPickerValue | 默认面板日期,每次面板打开时会被重置到该日期 | | - | 5.14.0 |
3257
- | defaultValue | 默认日期,如果开始时间或结束时间为 | | - | |
3258
- | disabledTime | 不可选择的时间 | function(date) | - | |
3259
- | format | 展示的日期格式,配置参考 | | YYYY-MM-DD | |
3260
- | multiple | 是否为多选,不支持 | boolean | false | 5.14.0 |
3261
- | pickerValue | 面板日期,可以用于受控切换面板所在日期。配合 | | - | 5.14.0 |
3262
- | renderExtraFooter | 在面板中添加额外的页脚 | (mode) => React.ReactNode | - | |
3263
- | showNow | 显示当前日期时间的快捷选择 | boolean | - | |
3264
- | showTime | 增加时间选择功能 | Object \| boolean | | |
3265
- | showTime.defaultValue | 设置用户选择日期时默认的时分秒, | | dayjs() | |
3266
- | showWeek | DatePicker 下展示当前周 | boolean | false | 5.14.0 |
3267
- | value | 日期 | | - | |
3268
- | onChange | 时间发生变化的回调 | function(date: dayjs, dateString: string) | - | |
3269
- | onOk | 点击确定按钮的回调 | function() | - | |
3270
- | onPanelChange | 日期面板变化时的回调 | function(value, mode) | - | |
3215
+ `getFieldsValue` 提供了多种重载方法:
3271
3216
 
3217
+ #### getFieldsValue(nameList?: true | [NamePath](#namepath)[], filterFunc?: FilterFunc)
3272
3218
 
3273
- ### DatePicker[picker=year]
3219
+ 当不提供 `nameList` 时,返回所有注册字段,这也包含 List 下所有的值(即便 List 下没有绑定 Item)。
3274
3220
 
3275
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
3276
- |--------|--------|--------|--------|--------|
3277
- | defaultValue | 默认日期 | | - | |
3278
- | format | 展示的日期格式,配置参考 | | YYYY | |
3279
- | multiple | 是否为多选 | boolean | false | 5.14.0 |
3280
- | renderExtraFooter | 在面板中添加额外的页脚 | () => React.ReactNode | - | |
3281
- | value | 日期 | | - | |
3282
- | onChange | 时间发生变化的回调,发生在用户选择时间时 | function(date: dayjs, dateString: string) | - | |
3221
+ `nameList` `true` 时,返回 store 中所有的值,包含未注册字段。例如通过 `setFieldsValue` 设置了不存在的 Item 的值,也可以通过 `true` 全部获取。
3283
3222
 
3223
+ 当 `nameList` 为数组时,返回规定路径的值。需要注意的是,`nameList` 为嵌套数组。例如你需要某路径值应该如下:
3284
3224
 
3285
- ### DatePicker[picker=quarter]
3286
3225
 
3287
- `4.1.0` 新增。
3226
+ ```tsx
3227
+ // 单个路径
3228
+ form.getFieldsValue([['user', 'age']]);
3288
3229
 
3289
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
3290
- |--------|--------|--------|--------|--------|
3291
- | defaultValue | 默认日期 | | - | |
3292
- | format | 展示的日期格式,配置参考 | | YYYY-\QQ | |
3293
- | multiple | 是否为多选 | boolean | false | 5.14.0 |
3294
- | renderExtraFooter | 在面板中添加额外的页脚 | () => React.ReactNode | - | |
3295
- | value | 日期 | | - | |
3296
- | onChange | 时间发生变化的回调,发生在用户选择时间时 | function(date: dayjs, dateString: string) | - | |
3230
+ // 多个路径
3231
+ form.getFieldsValue([
3232
+ ['user', 'age'],
3233
+ ['preset', 'account'],
3234
+ ]);
3235
+ ```
3297
3236
 
3298
3237
 
3299
- ### DatePicker[picker=month]
3238
+ #### getFieldsValue({ strict?: boolean, filter?: FilterFunc })
3300
3239
 
3301
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
3302
- |--------|--------|--------|--------|--------|
3303
- | defaultValue | 默认日期 | | - | |
3304
- | format | 展示的日期格式,配置参考 | | YYYY-MM | |
3305
- | multiple | 是否为多选 | boolean | false | 5.14.0 |
3306
- | renderExtraFooter | 在面板中添加额外的页脚 | () => React.ReactNode | - | |
3307
- | value | 日期 | | - | |
3308
- | onChange | 时间发生变化的回调,发生在用户选择时间时 | function(date: dayjs, dateString: string) | - | |
3240
+ `5.8.0` 新增接受配置参数。当 `strict` `true` 时会仅匹配 Item 的值。例如 `{ list: [{ bamboo: 1, little: 2 }] }` 中,如果 List 仅绑定了 `bamboo` 字段,那么 `getFieldsValue({ strict: true })` 会只获得 `{ list: [{ bamboo: 1 }] }`。
3309
3241
 
3242
+ ### FilterFunc
3310
3243
 
3311
- ### DatePicker[picker=week]
3244
+ 用于过滤一些字段值,`meta` 会返回字段相关信息。例如可以用来获取仅被用户修改过的值等等。
3312
3245
 
3313
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
3314
- |--------|--------|--------|--------|--------|
3315
- | defaultValue | 默认日期 | | - | |
3316
- | format | 展示的日期格式,配置参考 | | YYYY-wo | |
3317
- | multiple | 是否为多选 | boolean | false | 5.14.0 |
3318
- | renderExtraFooter | 在面板中添加额外的页脚 | (mode) => React.ReactNode | - | |
3319
- | value | 日期 | | - | |
3320
- | onChange | 时间发生变化的回调,发生在用户选择时间时 | function(date: dayjs, dateString: string) | - | |
3321
- | showWeek | DatePicker 下展示当前周 | boolean | true | 5.14.0 |
3322
3246
 
3247
+ ```tsx
3248
+ type FilterFunc = (meta: { touched: boolean; validating: boolean }) => boolean;
3249
+ ```
3323
3250
 
3324
- ### RangePicker
3325
3251
 
3326
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
3327
- |--------|--------|--------|--------|--------|
3328
- | allowEmpty | 允许起始项部分为空 | [boolean, boolean] | [false, false] | |
3329
- | cellRender | 自定义单元格的内容。 | (current: dayjs, info: { originNode: React.ReactElement,today: DateType, range?: 'start' \| 'end', type: PanelMode, locale?: Locale, subType?: 'hour' \| 'minute' \| 'second' \| 'meridiem' }) => React.ReactNode | - | 5.4.0 |
3330
- | dateRender | 自定义日期单元格的内容,5.4.0 起用 | function(currentDate: dayjs, today: dayjs) => React.ReactNode | - | < 5.4.0 |
3331
- | defaultPickerValue | 默认面板日期,每次面板打开时会被重置到该日期 | | - | 5.14.0 |
3332
- | defaultValue | 默认日期 | | - | |
3333
- | disabled | 禁用起始项 | [boolean, boolean] | - | |
3334
- | disabledTime | 不可选择的时间 | function(date: dayjs, partial: | - | info.from |
3335
- | format | 展示的日期格式,配置参考 | | YYYY-MM-DD HH:mm:ss | |
3336
- | id | 设置输入框 | { start?: string, end?: string } | - | 5.14.0 |
3337
- | pickerValue | 面板日期,可以用于受控切换面板所在日期。配合 | | - | 5.14.0 |
3338
- | presets | 预设时间范围快捷选择,自 | { label: React.ReactNode, value: (Dayjs \| (() => Dayjs))[] }[] | - | |
3339
- | renderExtraFooter | 在面板中添加额外的页脚 | () => React.ReactNode | - | |
3340
- | separator | 设置分隔符 | React.ReactNode | | |
3341
- | showTime | 增加时间选择功能 | Object\|boolean | | |
3342
- | showTime.defaultValue | 设置用户选择日期时默认的时分秒, | | [dayjs(), dayjs()] | |
3343
- | value | 日期 | | - | |
3344
- | onCalendarChange | 待选日期发生变化的回调。 | function(dates: [dayjs, dayjs], dateStrings: [string, string], info: { range: | - | |
3345
- | onChange | 日期范围发生变化的回调 | function(dates: [dayjs, dayjs], dateStrings: [string, string]) | - | |
3346
- | onFocus | 聚焦时回调 | function(event, { range: 'start' \| 'end' }) | - | range |
3347
- | onBlur | 失焦时回调 | function(event, { range: 'start' \| 'end' }) | - | range |
3252
+ ### FieldData
3348
3253
 
3254
+ | 名称 | 说明 | 类型 |
3255
+ |--------|--------|--------|
3256
+ | errors | 错误信息 | string[] |
3257
+ | warnings | 警告信息 | string[] |
3258
+ | name | 字段名称 | |
3259
+ | touched | 是否被用户操作过 | boolean |
3260
+ | validating | 是否正在校验 | boolean |
3261
+ | value | 字段对应值 | any |
3349
3262
 
3350
- #### formatType
3351
3263
 
3264
+ ### Rule
3352
3265
 
3353
- ```typescript
3354
- import type { Dayjs } from 'dayjs';
3266
+ Rule 支持接收 object 进行配置,也支持 function 来动态获取 form 的数据:
3355
3267
 
3356
- type Generic = string;
3357
- type GenericFn = (value: Dayjs) => string;
3358
3268
 
3359
- export type FormatType =
3360
- | Generic
3361
- | GenericFn
3362
- | Array
3363
- | {
3364
- format: string;
3365
- type?: 'mask';
3366
- };
3269
+ ```tsx
3270
+ type Rule = RuleConfig | ((form: FormInstance) => RuleConfig);
3367
3271
  ```
3368
3272
 
3369
3273
 
3370
- 注意:`type` 定义为 `5.14.0` 新增。
3371
-
3274
+ | 名称 | 说明 | 类型 | 版本 |
3275
+ |--------|--------|--------|--------|
3276
+ | defaultField | 仅在 | | |
3277
+ | enum | 是否匹配枚举中的值(需要将 | any[] | |
3278
+ | fields | 仅在 | Record<string, | |
3279
+ | len | string 类型时为字符串长度;number 类型时为确定数字; array 类型时为数组长度 | number | |
3280
+ | max | 必须设置 | number | |
3281
+ | message | 错误信息,不设置时会通过 | string \| ReactElement | |
3282
+ | min | 必须设置 | number | |
3283
+ | pattern | 正则表达式匹配 | RegExp | |
3284
+ | required | 是否为必选字段 | boolean | |
3285
+ | transform | 将字段值转换成目标值后进行校验 | (value) => any | |
3286
+ | type | 类型,常见有 | string | |
3287
+ | validateTrigger | 设置触发验证时机,必须是 Form.Item 的 | string \| string[] | |
3288
+ | validator | 自定义校验,接收 Promise 作为返回值。 | ( | |
3289
+ | warningOnly | 仅警告,不阻塞表单提交 | boolean | 4.17.0 |
3290
+ | whitespace | 如果字段仅包含空格则校验不通过,只在 | boolean | |
3372
3291
 
3373
3292
 
3374
- <DemoTitle title="CodeBlock" desc="代码块">
3375
- #### API
3293
+ ### WatchOptions
3376
3294
 
3377
- | 属性名 | 描述 | 类型 | 默认值 |
3378
- |--------|--------|--------|--------|
3379
- | language | 语言 | string \| string[] | (必填) |
3380
- | value | | string | |
3381
- | className | 类名 | string | |
3382
- | theme | 主题 | 'dark' \| 'light' | |
3383
- | readOnly | 只读 | boolean | |
3384
- | onChange | | (value?: string) => void | |
3295
+ | 名称 | 说明 | 类型 | 默认值 | 版本 |
3296
+ |--------|--------|--------|--------|--------|
3297
+ | form | 指定 Form 实例 | FormInstance | 当前 context 中的 Form | 5.4.0 |
3298
+ | preserve | 是否监视没有对应的 | boolean | false | 5.4.0 |
3385
3299
 
3386
3300
 
3387
3301
 
3388
3302
 
3389
- <DemoTitle title="Collapse" desc="可以折叠/展开的内容区域">
3303
+ <DemoTitle title="CollapsePanel" desc="折叠面板">
3390
3304
  #### API
3391
3305
 
3392
- <AntdApiRef url="https://ant.design/components/collapse-cn/#api"></AntdApiRef>
3306
+ | 属性名 | 描述 | 类型 | 默认值 |
3307
+ |--------|--------|--------|--------|
3308
+ | collapsedHeight | 收起状态下显示的内容高度 | number | 0 |
3309
+ | expandedHeight | 展开状态下的内容高度,设置后内容超出时可滚动,不设置则自适应内容高度 | number | 300 |
3310
+ | title | 面板标题 | string \| React.ReactNode | "" |
3311
+ | expandOnPanelClick | 是否允许点击整个面板进行展开 | boolean | false |
3312
+ | extra | 面板右侧内容 | React.ReactNode | |
3313
+ | children | 面板内容 | React.ReactNode | |
3314
+ | defaultExpanded | 是否默认展开 | boolean | false |
3315
+ | classNames | 语义化的classNames | Partial> | |
3316
+ | styles | 语义化的styles | Partial<
3317
+ Record
3318
+ > | |
3319
+
3393
3320
 
3394
3321
 
3395
3322
  ## antd API
@@ -3444,6 +3371,21 @@ export type FormatType =
3444
3371
 
3445
3372
 
3446
3373
 
3374
+ <DemoTitle title="CodeBlock" desc="代码块">
3375
+ #### API
3376
+
3377
+ | 属性名 | 描述 | 类型 | 默认值 |
3378
+ |--------|--------|--------|--------|
3379
+ | language | 语言 | string \| string[] | (必填) |
3380
+ | value | 值 | string | (必填) |
3381
+ | className | 类名 | string | |
3382
+ | theme | 主题 | 'dark' \| 'light' | |
3383
+ | readOnly | 只读 | boolean | |
3384
+ | onChange | | (value: string) => void | |
3385
+
3386
+
3387
+
3388
+
3447
3389
  <DemoTitle title="Checkbox" desc="收集用户的多项选择。">
3448
3390
  #### API
3449
3391
 
@@ -3515,6 +3457,64 @@ interface Option {
3515
3457
 
3516
3458
 
3517
3459
 
3460
+ <DemoTitle title="Collapse" desc="可以折叠/展开的内容区域">
3461
+ #### API
3462
+
3463
+ <AntdApiRef url="https://ant.design/components/collapse-cn/#api"></AntdApiRef>
3464
+
3465
+
3466
+ ## antd API
3467
+
3468
+ 通用属性参考:[通用属性](/docs/react/common-props)
3469
+
3470
+ ### Collapse
3471
+
3472
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
3473
+ |--------|--------|--------|--------|--------|
3474
+ | accordion | 手风琴模式 | boolean | false | |
3475
+ | activeKey | 当前激活 tab 面板的 key | string[] \| string | | |
3476
+ | bordered | 带边框风格的折叠面板 | boolean | true | |
3477
+ | collapsible | 所有子面板是否可折叠或指定可折叠触发区域 | header | - | 4.9.0 |
3478
+ | defaultActiveKey | 初始化选中面板的 key | string[] \| string | - | |
3479
+ | destroyOnHidden | 销毁折叠隐藏的面板 | boolean | false | 5.25.0 |
3480
+ | expandIcon | 自定义切换图标 | (panelProps) => ReactNode | - | |
3481
+ | expandIconPosition | 设置图标位置 | start | - | 4.21.0 |
3482
+ | ghost | 使折叠面板透明且无边框 | boolean | false | 4.4.0 |
3483
+ | size | 设置折叠面板大小 | large | middle | 5.2.0 |
3484
+ | onChange | 切换面板的回调 | function | - | |
3485
+ | items | 折叠项目内容 | | - | 5.6.0 |
3486
+
3487
+
3488
+ ### ItemType
3489
+
3490
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
3491
+ |--------|--------|--------|--------|--------|
3492
+ | classNames | 语义化结构 className | | - | 5.21.0 |
3493
+ | collapsible | 是否可折叠或指定可折叠触发区域 | header | - | |
3494
+ | forceRender | 被隐藏时是否渲染 body 区域 DOM 结构 | boolean | false | |
3495
+ | key | 对应 activeKey | string \| number | - | |
3496
+ | label | 面板标题 | ReactNode | - | - |
3497
+ | showArrow | 是否展示当前面板上的箭头(为 false 时,collapsible 不能设为 icon) | boolean | true | |
3498
+ | styles | 语义化结构 style | | - | 5.21.0 |
3499
+
3500
+
3501
+ ### Collapse.Panel
3502
+
3503
+ <!-- prettier-ignore -->
3504
+ <Container type="warning" title="已废弃">
3505
+ 版本 >= 5.6.0 时请使用 items 方式配置面板。
3506
+ </Container>
3507
+ | 参数 | 说明 | 类型 | 默认值 | 版本 |
3508
+ |--------|--------|--------|--------|--------|
3509
+ | collapsible | 是否可折叠或指定可折叠触发区域 | header | - | 4.9.0 (icon: 4.24.0) |
3510
+ | forceRender | 被隐藏时是否渲染 body 区域 DOM 结构 | boolean | false | |
3511
+ | header | 面板标题 | ReactNode | - | |
3512
+ | key | 对应 activeKey | string \| number | - | |
3513
+ | showArrow | 是否展示当前面板上的箭头(为 false 时,collapsible 不能设为 icon) | boolean | true | |
3514
+
3515
+
3516
+
3517
+
3518
3518
  <DemoTitle title="Card" desc="通用卡片容器">
3519
3519
  #### API
3520
3520
 
@@ -4060,349 +4060,6 @@ const confirmed = await modal.confirm({ ... });
4060
4060
 
4061
4061
 
4062
4062
 
4063
- <div align="center"><a name="readme-top"></a>
4064
- <img height="120" src="https://img.alicdn.com/imgextra/i1/O1CN01ipemFb1EzmZI9LiTe_!!6000000000423-55-tps-28-28.svg" style="border: none">
4065
- <h1>Alibaba Cloud Spark Design</h1>
4066
- </div>
4067
-
4068
- # 概述
4069
-
4070
- Alibaba Cloud Spark Design 是一个基于 Ant Design 的 React UI 组件库,包含丰富的基础组件和场景组件,专为构建优秀的 LLM 产品而设计。
4071
- <br />
4072
- <br />
4073
-
4074
- ## ✨ 特性
4075
-
4076
-
4077
- - <img height="15" src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg"> 基于 Ant Design,兼容 Ant Design 生态系统。您可以无需修改代码即可切换到 Spark Design。
4078
- - 🛡 使用 TypeScript 编写,具有可预测的静态类型。
4079
- - 🧠 为 LLM 产品设计的各种场景组件。
4080
- - 💡 与@agentscope-ai/chat 和 @agentscope-ai/flow 配合使用,构建企业级 LLM 应用。
4081
- - 🎨 多种预设主题。
4082
- - ☀️ 轻松切换明暗模式。
4083
-
4084
- ## 📦 安装
4085
-
4086
-
4087
- ```bash
4088
- npm install antd @agentscope-ai/icons @agentscope-ai/design --save
4089
- ```
4090
-
4091
-
4092
- ## Tree Shaking 支持
4093
-
4094
- @agentscope-ai/design 默认基于 ES 模块支持 tree shaking
4095
-
4096
- ## TypeScript
4097
-
4098
- @agentscope-ai/chat 使用 TypeScript 编写并提供完整的定义文件。
4099
-
4100
- ## 内置主题
4101
-
4102
- 我们提供四种内置主题:
4103
-
4104
- <div><span style="display: inline-block; width: 12px; height: 12px; background-color: #615CED;"></span> purpleTheme</div>
4105
- <div><span style="display: inline-block; width: 12px; height: 12px; background-color: #5551CC;"></span> purpleDarkTheme(暗色模式)</div>
4106
- <div><span style="display: inline-block; width: 12px; height: 12px; background-color: rgba(26, 26, 29, 1);"></span> carbonTheme</div>
4107
- <div><span style="display: inline-block; width: 12px; height: 12px; background-color: #676767;"></span> carbonDarkTheme(暗色模式)</div>
4108
-
4109
- ## 🏗️ 开源
4110
-
4111
- [@agentscope-ai/design](https://www.npmjs.com/package/@agentscope-ai/design) 和 [@agentscope-ai/chat](https://www.npmjs.com/package/@agentscope-ai/chat) 正在积极推进开源,预计将在 2025 年底完成。目前,您可以通过 npm 访问我们的项目。
4112
-
4113
-
4114
-
4115
- ## 内置主题
4116
-
4117
- Alibaba Cloud Spark Design 提供四种内置主题:
4118
-
4119
- <div><span style="display: inline-block; width: 12px; height: 12px; background-color: #615CED;"></span> purpleTheme</div>
4120
- <div><span style="display: inline-block; width: 12px; height: 12px; background-color: #5551CC;"></span> purpleDarkTheme(暗色模式)</div>
4121
- <div><span style="display: inline-block; width: 12px; height: 12px; background-color: rgba(26, 26, 29, 1);"></span> carbonTheme</div>
4122
- <div><span style="display: inline-block; width: 12px; height: 12px; background-color: #676767;"></span> carbonDarkTheme(暗色模式)</div>
4123
-
4124
- ### 示例用法
4125
-
4126
-
4127
- ```tsx
4128
- import { ConfigProvider, purpleTheme } from '@agentscope-ai/design';
4129
-
4130
- const App = () => {
4131
- return <ConfigProvider {...purpleTheme}>Hello Spark Design!</ConfigProvider>;
4132
- };
4133
-
4134
- export default App;
4135
- ```
4136
-
4137
-
4138
- ## 从 Antd token 生成您自己的主题
4139
-
4140
- 如果您已经有了 Antd 主题,仍然可以使用 generateThemeByToken 生成 spark 风格的主题
4141
-
4142
-
4143
- ```tsx
4144
- import { ConfigProvider, generateThemeByToken } from '@agentscope-ai/design';
4145
- const yourToken = {
4146
- borderRadiusXS: 2,
4147
- borderRadiusSM: 4,
4148
- borderRadius: 6,
4149
- borderRadiusLG: 8,
4150
- borderRadiusXL: 12,
4151
- borderRadiusFull: 999,
4152
- wireframe: false,
4153
- colorPrimaryBg: '#F2F0FF',
4154
- colorPrimaryBgHover: '#F2F0FF',
4155
- colorPrimaryBorder: '#E2DEFF',
4156
- colorPrimaryBorderHover: '#BCB5FF',
4157
- // ... 您可以在下一个文档中找到完整版本的 tokens:Tokens 和 CSS 变量
4158
- };
4159
- const darkMode = false;
4160
- const yourThemeWithSparkStyle = generateThemeByToken(yourToken, darkMode);
4161
- const App = () => {
4162
- return (
4163
- <ConfigProvider {...yourThemeWithSparkStyle}>
4164
- Hello Spark Design!
4165
- </ConfigProvider>
4166
- );
4167
- };
4168
-
4169
- export default App;
4170
- ```
4171
-
4172
-
4173
- 您仍然可以修改生成的主题:`yourThemeWithSparkStyle`,但不建议这样做。我们建议您保持原始主题以获得 Spark Design 的最佳体验。
4174
-
4175
-
4176
-
4177
- # 使用
4178
-
4179
- 如果您有自己的 iconfont 项目,可以将您的图标集成到 Spark Design 中,并通过简单的符号名称访问您的图标。
4180
-
4181
-
4182
- ```tsx
4183
- import {
4184
- ConfigProvider,
4185
- purpleTheme,
4186
- Button,
4187
- IconFont,
4188
- IconButton,
4189
- } from '@agentscope-ai/design';
4190
- import { Flex } from 'antd';
4191
- import zhCN from 'antd/locale/zh_CN';
4192
- import { useState } from 'react';
4193
-
4194
- const App = () => {
4195
- const prefix = 'sps';
4196
- const iconSymbol = 'spark-effciency-line';
4197
- const iconfont = '//at.alicdn.com/t/a/font_4807885_ugexdeaoq7.js'; // 您可以从 https://www.iconfont.cn/ 获取
4198
- return (
4199
- <ConfigProvider
4200
- {...purpleTheme}
4201
- prefix={prefix}
4202
- prefixCls={prefix}
4203
- iconfont={iconfont}
4204
- locale={zhCN}
4205
- style={{
4206
- width: '100%',
4207
- height: '100%',
4208
- }}
4209
- >
4210
- <Flex
4211
- style={{
4212
- width: '100%',
4213
- height: '100%',
4214
- backgroundColor: `var(--${prefix}-color-bg-base)`,
4215
- }}
4216
- justify="center"
4217
- align="center"
4218
- >
4219
- <Flex vertical gap={16} style={{ width: '300px', padding: '12px 0' }}>
4220
- <Flex gap={8}>
4221
- <div style={{ width: '100px', lineHeight: '32px' }}>IconFont:</div>
4222
- <IconFont type={iconSymbol} />
4223
- </Flex>
4224
- <Flex gap={8}>
4225
- <div style={{ width: '100px', lineHeight: '32px' }}>Button:</div>
4226
- <Button type="primary" iconType={iconSymbol}>
4227
- 添加用户
4228
- </Button>
4229
- </Flex>
4230
- <Flex gap={8}>
4231
- <div style={{ width: '100px', lineHeight: '32px' }}>
4232
- IconButton:
4233
- </div>
4234
- <IconButton iconType={iconSymbol}></IconButton>
4235
- </Flex>
4236
- </Flex>
4237
- </Flex>
4238
- </ConfigProvider>
4239
- );
4240
- };
4241
-
4242
- export default App;
4243
- ```
4244
-
4245
-
4246
-
4247
-
4248
- # 从 Antd 迁移
4249
-
4250
- ## 📦 安装
4251
-
4252
-
4253
- ```bash
4254
- $ npm install @agentscope-ai/icons @agentscope-ai/design --save
4255
- ```
4256
-
4257
-
4258
- ## 🔨 使用
4259
-
4260
- 从 @agentscope-ai/design 导出的所有同名组件在 API 方面都与 antd 的对应组件兼容,这意味着您无需学习如何使用它们。如果您想充分利用 Alibaba Cloud Spark Design 的新功能,可以尝试使用这些组件而不是 antd 的组件。
4261
-
4262
-
4263
- ```tsx
4264
- import {
4265
- Button,
4266
- Image,
4267
- ConfigProvider,
4268
- purpleDarkTheme,
4269
- purpleTheme,
4270
- } from '@agentscope-ai/design';
4271
- import { SparkSunLine, SparkMoonLine } from '@agentscope-ai/icons';
4272
- import { Flex } from 'antd';
4273
- import zhCN from 'antd/locale/zh_CN';
4274
- import { useState } from 'react';
4275
-
4276
- const App = () => {
4277
- const [colorMode, setColorMode] = useState('light');
4278
- const theme = colorMode === 'light' ? purpleTheme : purpleDarkTheme;
4279
-
4280
- const prefix = 'sps';
4281
- return (
4282
- <ConfigProvider
4283
- {...theme} // 您可以从 purpleTheme、purpleDarkTheme、carbonTheme 和 carbonDarkTheme 中选择
4284
- prefix={prefix} // Ant Design 和 @agentscope-ai/design 的前缀
4285
- prefixCls={prefix}
4286
- iconfont="//at.alicdn.com/t/a/font_4807885_ugexdeaoq7.js" // 可选参数,您可以从 https://www.iconfont.cn/ 获取
4287
- locale={zhCN} // 来自 Ant Design 的语言包
4288
- style={{
4289
- width: '100%',
4290
- height: '100%',
4291
- }}
4292
- >
4293
- <div
4294
- style={{
4295
- width: '100%',
4296
- height: '100%',
4297
- backgroundColor: `var(--${prefix}-color-bg-base)`,
4298
- }}
4299
- >
4300
- <Flex vertical gap={16} align="center" style={{ padding: '12px 0' }}>
4301
- <Image
4302
- width={120}
4303
- src="https://img.alicdn.com/imgextra/i1/O1CN01Py27NU1re2pgohzqU_!!6000000005655-0-tps-480-480.jpg"
4304
- />
4305
- <div
4306
- style={{
4307
- color: `var(--${prefix}-ant-color-text-base)`,
4308
- fontSize: '24px',
4309
- textAlign: 'center',
4310
- }}
4311
- >
4312
- Hello Spark Design!
4313
- </div>
4314
- <Button
4315
- type="primary"
4316
- onClick={() => {
4317
- setColorMode(colorMode === 'light' ? 'dark' : 'light');
4318
- }}
4319
- icon={colorMode === 'light' ? <SparkMoonLine /> : <SparkSunLine />}
4320
- >
4321
- {colorMode === 'light' ? '暗色' : '亮色'} 模式
4322
- </Button>
4323
- </Flex>
4324
- </div>
4325
- </ConfigProvider>
4326
- );
4327
- };
4328
-
4329
- export default App;
4330
- ```
4331
-
4332
-
4333
- 如果您想继续使用 antd 的组件,那也没问题。您只需要将 antd 的 ConfigProvider 替换为 @agentscope-ai/design 的即可。
4334
-
4335
-
4336
- ```tsx
4337
- import {
4338
- ConfigProvider,
4339
- purpleDarkTheme,
4340
- purpleTheme,
4341
- } from '@agentscope-ai/design';
4342
- import { Button, Image, Flex } from 'antd';
4343
- import { SparkSunLine, SparkMoonLine } from '@agentscope-ai/icons';
4344
- import zhCN from 'antd/locale/zh_CN';
4345
- import { useState } from 'react';
4346
-
4347
- const App = () => {
4348
- const [colorMode, setColorMode] = useState('light');
4349
- const theme = colorMode === 'light' ? purpleTheme : purpleDarkTheme;
4350
-
4351
- const prefix = 'sps';
4352
- return (
4353
- <ConfigProvider
4354
- {...theme} // 您可以从 purpleTheme、purpleDarkTheme、carbonTheme 和 carbonDarkTheme 中选择
4355
- prefix={prefix} // Ant Design 和 @agentscope-ai/design 的前缀
4356
- prefixCls={prefix}
4357
- iconfont="//at.alicdn.com/t/a/font_4807885_ugexdeaoq7.js" // 可选参数,您可以从 https://www.iconfont.cn/ 获取
4358
- locale={zhCN} // 来自 Ant Design 的语言包
4359
- style={{
4360
- width: '100%',
4361
- height: '100%',
4362
- }}
4363
- >
4364
- <div
4365
- style={{
4366
- width: '100%',
4367
- height: '100%',
4368
- backgroundColor: `var(--${prefix}-color-bg-base)`,
4369
- }}
4370
- >
4371
- <Flex vertical gap={16} align="center" style={{ padding: '12px 0' }}>
4372
- <Image
4373
- width={120}
4374
- src="https://img.alicdn.com/imgextra/i1/O1CN01Py27NU1re2pgohzqU_!!6000000005655-0-tps-480-480.jpg"
4375
- />
4376
- <div
4377
- style={{
4378
- color: `var(--${prefix}-ant-color-text-base)`,
4379
- fontSize: '24px',
4380
- textAlign: 'center',
4381
- }}
4382
- >
4383
- Hello Spark Design!
4384
- </div>
4385
- <Button
4386
- type="primary"
4387
- onClick={() => {
4388
- setColorMode(colorMode === 'light' ? 'dark' : 'light');
4389
- }}
4390
- icon={colorMode === 'light' ? <SparkMoonLine /> : <SparkSunLine />}
4391
- >
4392
- {colorMode === 'light' ? '暗色' : '亮色'} 模式
4393
- </Button>
4394
- </Flex>
4395
- </div>
4396
- </ConfigProvider>
4397
- );
4398
- };
4399
-
4400
- export default App;
4401
- ```
4402
-
4403
-
4404
-
4405
-
4406
4063
  # 使用
4407
4064
 
4408
4065
 
@@ -4425,574 +4082,4 @@ export default () => {
4425
4082
 
4426
4083
  基本用法
4427
4084
 
4428
- 访问 [Icon Library](https://sparkdesign.agentscope.io/#/resources/icons) 查看全部 Icon
4429
-
4430
-
4431
-
4432
- # Vibe 编程
4433
-
4434
- ## LLMs.txt
4435
-
4436
- 为了让 Cursor 和 Claude Code 等工具理解 Spark Design,我们支持 LLMs.txt 文件,使 Spark Design 的文档可供大型语言模型使用。
4437
-
4438
-
4439
- - [index.llms.txt](https://g.alicdn.com/code/npm/@ali/agentscope-ai-design/4.7.2/docs-dist/llms/index.llms.txt):主要的 LLMs.txt 索引文件
4440
- - [all.llms.txt](https://g.alicdn.com/code/npm/@ali/agentscope-ai-design/4.7.2/docs-dist/llms/all.llms.txt):Spark Design 的完整文档
4441
-
4442
- 在 Cursor 中使用 @Docs 功能将 LLMs.txt 文件包含在您的项目中。[了解更多](https://docs.cursor.com/en/context/@-symbols/@-docs)
4443
-
4444
- ## D2C
4445
-
4446
- 在前端使用 Alibaba Cloud Spark Design、设计稿使用 Spark Design 套件的前提下,通过 masterGo 视觉稿生成代码可以做到以下几点:
4447
-
4448
-
4449
- - 准确识别 icon
4450
- - 使用标准 css token
4451
- - 无需测量间距、圆角等数据,AI 直接还原布局(90%以上概率准确生成)
4452
- - 使用标准组件还原页面,大部分标准组件可一次性正确生成,无需二次调整
4453
-
4454
- <div>
4455
- <video style="width: 100%" controls src="https://cloud.video.taobao.com/vod/PrrYzvYJkoDlbJwoL8Ei1Bo_60LrKAROCojWxB_EAYs.mp4" />
4456
- </div>
4457
-
4458
- 我们会在不久的将来开放 masterGo 的设计套件和 rules,帮助您高效率还原视觉稿
4459
-
4460
-
4461
-
4462
- # 从零开始使用
4463
-
4464
- ## 📦 安装
4465
-
4466
-
4467
- ```bash
4468
- $ npm install antd @agentscope-ai/icons @agentscope-ai/design --save
4469
- ```
4470
-
4471
-
4472
- ## 🔨 使用
4473
-
4474
-
4475
- ```tsx
4476
- import {
4477
- Button,
4478
- Image,
4479
- ConfigProvider,
4480
- purpleDarkTheme,
4481
- purpleTheme,
4482
- } from '@agentscope-ai/design';
4483
- import { SparkSunLine, SparkMoonLine } from '@agentscope-ai/icons';
4484
- import { Flex } from 'antd';
4485
- import zhCN from 'antd/locale/zh_CN';
4486
- import { useState } from 'react';
4487
-
4488
- const App = () => {
4489
- const [colorMode, setColorMode] = useState('light');
4490
- const theme = colorMode === 'light' ? purpleTheme : purpleDarkTheme;
4491
-
4492
- const prefix = 'sps';
4493
- return (
4494
- <ConfigProvider
4495
- {...theme} // 您可以从 purpleTheme、purpleDarkTheme、carbonTheme 和 carbonDarkTheme 中选择
4496
- prefix={prefix} // Ant Design 和 @agentscope-ai/design 的前缀
4497
- prefixCls={prefix}
4498
- iconfont="//at.alicdn.com/t/a/font_4807885_ugexdeaoq7.js" // 可选参数,您可以从 https://www.iconfont.cn/ 获取
4499
- locale={zhCN} // 来自 Ant Design 的语言包
4500
- style={{
4501
- width: '100%',
4502
- height: '100%',
4503
- }}
4504
- >
4505
- <div
4506
- style={{
4507
- width: '100%',
4508
- height: '100%',
4509
- backgroundColor: `var(--${prefix}-color-bg-base)`,
4510
- }}
4511
- >
4512
- <Flex vertical gap={16} align="center" style={{ padding: '12px 0' }}>
4513
- <Image
4514
- width={120}
4515
- src="https://img.alicdn.com/imgextra/i1/O1CN01Py27NU1re2pgohzqU_!!6000000005655-0-tps-480-480.jpg"
4516
- />
4517
- <div
4518
- style={{
4519
- color: `var(--${prefix}-ant-color-text-base)`,
4520
- fontSize: '24px',
4521
- textAlign: 'center',
4522
- }}
4523
- >
4524
- Hello Spark Design!
4525
- </div>
4526
- <Button
4527
- type="primary"
4528
- onClick={() => {
4529
- setColorMode(colorMode === 'light' ? 'dark' : 'light');
4530
- }}
4531
- icon={colorMode === 'light' ? <SparkMoonLine /> : <SparkSunLine />}
4532
- >
4533
- {colorMode === 'light' ? '暗色' : '亮色'} 模式
4534
- </Button>
4535
- </Flex>
4536
- </div>
4537
- </ConfigProvider>
4538
- );
4539
- };
4540
-
4541
- export default App;
4542
- ```
4543
-
4544
-
4545
-
4546
-
4547
- # Tokens
4548
-
4549
- 除了来自 [antd](https://ant.design/theme-editor) 的固有 tokens 之外,Spark Design 在原有基础上扩展了更多变量。完整的 token 示例如下所示:
4550
-
4551
- <div><span style="display: inline-block; width: 12px; height: 12px; background-color: #615CED;"></span> purpleTheme</div>
4552
-
4553
- ```json
4554
- {
4555
- "borderRadiusXS": 2,
4556
- "borderRadiusSM": 4,
4557
- "borderRadius": 6,
4558
- "borderRadiusLG": 8,
4559
- "borderRadiusXL": 12,
4560
- "borderRadiusFull": 999,
4561
- "wireframe": false,
4562
- "colorPrimaryBg": "rgba(97, 92, 237, 0.08)",
4563
- "colorPrimaryBgHover": "#F2F0FF",
4564
- "colorPrimaryBorder": "#E2DEFF",
4565
- "colorPrimaryBorderHover": "#BCB5FF",
4566
- "colorPrimaryHover": "#9189FA",
4567
- "colorPrimary": "#615CED",
4568
- "colorPrimaryActive": "#4444C7",
4569
- "colorPrimaryTextHover": "#9189FA",
4570
- "colorPrimaryText": "#615CED",
4571
- "colorPrimaryTextActive": "#4444C7",
4572
- "colorTextBase": "#26244c",
4573
- "colorBgBase": "#FFFFFF",
4574
- "colorText": "rgba(38, 36, 76, 0.88)",
4575
- "colorTextSecondary": "rgba(38, 36, 76, 0.65)",
4576
- "colorTextTertiary": "rgba(38, 36, 76, 0.45)",
4577
- "colorTextQuaternary": "rgba(38, 36, 76, 0.25)",
4578
- "colorBorder": "#cdd0dc",
4579
- "colorBorderSecondary": "#e6e8ee",
4580
- "colorFill": "#cdd0dc5c",
4581
- "colorFillSecondary": "#cdd0dc33",
4582
- "colorFillTertiary": "#cdd0dc26",
4583
- "colorFillQuaternary": "#cdd0dc1a",
4584
- "colorBgContainer": "#FFFFFF",
4585
- "colorBgElevated": "#FFFFFF",
4586
- "colorBgLayout": "#f9fafd",
4587
- "colorBgSpotlight": "rgba(38, 36, 76, 0.85)",
4588
- "colorBgMask": "rgba(20, 19, 39, 0.45)",
4589
- "colorInfo": "#0B83F1",
4590
- "colorInfoHover": "#5EBCFF",
4591
- "colorInfoBorder": "#87D1FF",
4592
- "colorInfoText": "#0B83F1",
4593
- "colorInfoBg": "#E6F7FF",
4594
- "colorInfoBgHover": "#B0E3FF",
4595
- "colorInfoBorderHover": "#5EBCFF",
4596
- "colorSuccess": "#5BB98B",
4597
- "colorSuccessHover": "#ABD4BE",
4598
- "colorSuccessBg": "#EBFAF0",
4599
- "colorSuccessBgHover": "#DFEDE4",
4600
- "colorSuccessBorder": "#D3E0D9",
4601
- "colorSuccessBorderHover": "#ABD4BE",
4602
- "colorWarning": "#FAAD14",
4603
- "colorWarningHover": "#FFD666",
4604
- "colorWarningBg": "#FFFBE6",
4605
- "colorWarningBgHover": "#FFF1B8",
4606
- "colorWarningBorder": "#FFE58F",
4607
- "colorWarningBorderHover": "#FFD666",
4608
- "colorError": "#FF4D4F",
4609
- "colorErrorHover": "#FF7875",
4610
- "colorErrorBg": "#FFF2F0",
4611
- "colorErrorBgHover": "#FFF1F0",
4612
- "colorErrorBorder": "#FFCCC7",
4613
- "colorErrorBorderHover": "#FFA39E",
4614
- "colorLink": "#615CED",
4615
- "boxShadow": "0px 4px 6px 0px rgba(0, 0, 0, 0.08)",
4616
- "boxShadowSecondary": "0px 12px 24px -16px rgba(0, 0, 0, 0.06),0px 8px 40px 0px rgba(0, 0, 0, 0.12),0px 0px 1px 0px rgba(0, 0, 0, 0.04)",
4617
-
4618
- "colorTextWhite": "#ffffff",
4619
- "colorTextOnPrimary": "#ffffff",
4620
- "colorFillDisable": "#DBDAE7",
4621
- "colorPurple": "#615CED",
4622
- "colorPurpleHover": "#8080FF",
4623
- "colorPurpleBg": "rgba(226, 222, 255, 0.8)",
4624
- "colorPink": "#EC4899",
4625
- "colorPinkHover": "#E593BC",
4626
- "colorPinkBg": "rgba(251, 220, 239, 0.8)",
4627
- "colorYellow": "#EAB308",
4628
- "colorYellowHover": "#F1D372",
4629
- "colorYellowBg": "rgba(255, 250, 184, 0.8)",
4630
- "colorOrange": "#FA8125",
4631
- "colorOrangeHover": "#E88C45",
4632
- "colorOrangeBg": "rgba(255, 232, 201, 0.8)",
4633
- "colorTeal": "#14B8A6",
4634
- "colorTealHover": "#5FB3A9",
4635
- "colorTealBg": "rgba(200, 244, 233, 0.8)",
4636
- "colorBlue": "#0090FF",
4637
- "colorBlueHover": "#72BCF5",
4638
- "colorBlueBg": "rgba(194, 229, 255, 0.8)",
4639
- "colorMauve": "#8E8C99",
4640
- "colorMauveHover": "#C0BFC8",
4641
- "colorMauveBg": "rgba(239, 240, 243, 0.8)",
4642
- "colorSlate": "#1E293B",
4643
- "colorSlateHover": "#475569",
4644
- "colorSlateBg": "#E2E8F0",
4645
- "colorLavender": "#A77BFF",
4646
- "colorLavenderHover": "#BB99FF",
4647
- "colorLavenderBg": "rgba(226, 212, 255, 0.8)",
4648
-
4649
- "boxShadowTertiary": "0px 12px 32px -16px rgba(0, 0, 0, 0.24),0px 12px 60px 0px rgba(0, 0, 0, 0.12),0px 0px 1px 0px rgba(0, 0, 0, 0.04)",
4650
- "boxShadowTertiaryLeft": "-12px 0px 32px -16px rgba(0, 0, 0, 0.24),-12px 0px 60px 0px rgba(0, 0, 0, 0.12),0px 0px 1px 0px rgba(0, 0, 0, 0.04)",
4651
- "boxShadowInput": "0px 12px 24px -16px rgba(54, 54, 73, 0.04),0px 12px 40px 0px rgba(51, 51, 71, 0.08),0px 0px 1px 0px rgba(44, 44, 54, 0.02)"
4652
- }
4653
- ```
4654
-
4655
- <div><span style="display: inline-block; width: 12px; height: 12px; background-color: #5551CC;"></span> purpleDarkTheme(暗色模式)</div>
4656
-
4657
- ```json
4658
- {
4659
- "borderRadiusXS": 2,
4660
- "borderRadiusSM": 4,
4661
- "borderRadius": 6,
4662
- "borderRadiusLG": 8,
4663
- "borderRadiusXL": 12,
4664
- "borderRadiusFull": 999,
4665
- "wireframe": false,
4666
- "colorPrimaryBg": "#202041",
4667
- "colorPrimaryBgHover": "#202041",
4668
- "colorPrimaryBorder": "#2B2A55",
4669
- "colorPrimaryBorderHover": "#373476",
4670
- "colorPrimaryHover": "#857DE3",
4671
- "colorPrimary": "#5551CC",
4672
- "colorPrimaryActive": "#4643A1",
4673
- "colorPrimaryTextHover": "#857DE3",
4674
- "colorPrimaryText": "#5551CC",
4675
- "colorPrimaryTextActive": "#4643A1",
4676
- "colorTextBase": "#E7E7ED",
4677
- "colorBgBase": "#000000",
4678
- "colorText": "rgba(231, 231, 237, 0.88)",
4679
- "colorTextSecondary": "rgba(231, 231, 237, 0.65)",
4680
- "colorTextTertiary": "rgba(231, 231, 237, 0.45)",
4681
- "colorTextQuaternary": "rgba(231, 231, 237, 0.25)",
4682
- "colorBorder": "rgba(71, 71, 97, 0.8)",
4683
- "colorBorderSecondary": "rgba(56, 56, 76, 0.8)",
4684
- "colorFill": "rgba(231, 231, 237, 0.18)",
4685
- "colorFillSecondary": "rgba(231, 231, 237, 0.12)",
4686
- "colorFillTertiary": "rgba(231, 231, 237, 0.08)",
4687
- "colorFillQuaternary": "rgba(231, 231, 237, 0.04)",
4688
- "colorBgContainer": "#0F0F14",
4689
- "colorBgElevated": "#0F0F14",
4690
- "colorBgLayout": "#0F0F14",
4691
- "colorBgSpotlight": "rgba(71, 71, 97, 0.85)",
4692
- "colorBgMask": "rgba(5, 5, 8, 0.8)",
4693
- "colorInfo": "#0B83F1",
4694
- "colorInfoHover": "rgba(42, 114, 165, 1)",
4695
- "colorInfoBorder": "rgba(135, 209, 255, 0.2)",
4696
- "colorInfoText": "#0B83F1",
4697
- "colorInfoBg": "rgba(27, 73, 115, 0.25)",
4698
- "colorInfoBgHover": "rgba(27, 73, 115, 0.32)",
4699
- "colorInfoBorderHover": "rgba(94, 188, 255, 0.2)",
4700
- "colorSuccess": "#5BB98B",
4701
- "colorSuccessHover": "rgba(87, 141, 112, 1)",
4702
- "colorSuccessBg": "rgba(0, 50, 26, 0.25)",
4703
- "colorSuccessBgHover": "rgba(0, 50, 26, 0.32)",
4704
- "colorSuccessBorder": "rgba(211, 224, 217, 0.2)",
4705
- "colorSuccessBorderHover": "rgba(171, 212, 190, 0.2)",
4706
- "colorWarning": "#FAAD14",
4707
- "colorWarningHover": "rgba(170, 136, 43, 1)",
4708
- "colorWarningBg": "rgba(129, 116, 49, 0.25)",
4709
- "colorWarningBgHover": "rgba(129, 116, 49, 0.32)",
4710
- "colorWarningBorder": "rgba(255, 229, 143, 0.2)",
4711
- "colorWarningBorderHover": "rgba(255, 214, 102, 0.2)",
4712
- "colorError": "#FF4D4F",
4713
- "colorErrorHover": "rgba(165, 50, 48, 1)",
4714
- "colorErrorBg": "rgba(129, 46, 46, 0.25)",
4715
- "colorErrorBgHover": "rgba(129, 46, 46, 0.32)",
4716
- "colorErrorBorder": "rgba(255, 204, 199, 0.2)",
4717
- "colorErrorBorderHover": "rgba(255, 163, 158, 0.2)",
4718
- "colorLink": "#5551CC",
4719
- "boxShadow": "0px 4px 6px 0px rgba(255, 255, 255, 0.08)",
4720
- "boxShadowSecondary": "0px 12px 24px -16px rgba(255, 255, 255, 0.04),0px 8px 40px 0px rgba(255, 255, 255, 0.06),0px 0px 1px 0px rgba(255, 255, 255, 0.02)",
4721
-
4722
- "colorTextWhite": "#fff",
4723
- "colorTextOnPrimary": "#fff",
4724
- "colorFillDisable": "#8D8C98",
4725
- "colorPurple": "#5551CC",
4726
- "colorPurpleHover": "#8383F0",
4727
- "colorPurpleBg": "rgba(226, 222, 255, 0.2)",
4728
- "colorPink": "#EC4899",
4729
- "colorPinkHover": "#E494BC",
4730
- "colorPinkBg": "rgba(251, 220, 239, 0.2)",
4731
- "colorYellow": "#EAB308",
4732
- "colorYellowHover": "#DBBE62",
4733
- "colorYellowBg": "rgba(255, 250, 184, 0.2)",
4734
- "colorOrange": "#FA8125",
4735
- "colorOrangeHover": "#F7A25F",
4736
- "colorOrangeBg": "rgba(255, 232, 201, 0.2)",
4737
- "colorTeal": "#14B8A6",
4738
- "colorTealHover": "#7BC7BE",
4739
- "colorTealBg": "rgba(200, 244, 233, 0.2)",
4740
- "colorBlue": "#0090FF",
4741
- "colorBlueHover": "#83BFED",
4742
- "colorBlueBg": "rgba(194, 229, 255, 0.2)",
4743
- "colorMauve": "#8E8C99",
4744
- "colorMauveHover": "#BBB8CA",
4745
- "colorMauveBg": "rgba(239, 240, 243, 0.2)",
4746
- "colorSlate": "#2C3A50",
4747
- "colorSlateHover": "#354252",
4748
- "colorSlateBg": "#232B36",
4749
- "colorLavender": "#A77BFF",
4750
- "colorLavenderHover": "#BFA5F3",
4751
- "colorLavenderBg": "rgba(150, 143, 167, 0.48)",
4752
-
4753
- "boxShadowTertiary": "0px 12px 32px -16px rgba(255, 255, 255, 0.16),0px 12px 60px 0px rgba(255, 255, 255, 0.08),0px 0px 1px 0px rgba(255, 255, 255, 0.02)",
4754
- "boxShadowTertiaryLeft": "-12px 0px 32px -16px rgba(255, 255, 255, 0.16),-12px 0px 60px 0px rgba(255, 255, 255, 0.08),0px 0px 1px 0px rgba(255, 255, 255, 0.02);",
4755
- "boxShadowInput": "0px 12px 24px -16px rgba(255, 255, 255, 0.08),0px 12px 40px 0px rgba(255, 255, 255, 0.16),0px 0px 1px 0px rgba(255, 255, 255, 0.04)"
4756
- }
4757
-
4758
- ```
4759
-
4760
- <div><span style="display: inline-block; width: 12px; height: 12px; background-color: rgba(26, 26, 29, 1);"></span> carbonTheme</div>
4761
-
4762
- ```json
4763
- {
4764
- "borderRadiusXS": 2,
4765
- "borderRadiusSM": 4,
4766
- "borderRadius": 6,
4767
- "borderRadiusLG": 8,
4768
- "borderRadiusXL": 12,
4769
- "borderRadiusFull": 999,
4770
- "wireframe": false,
4771
- "colorPrimaryBg": "rgba(244, 244, 247, 1)",
4772
- "colorPrimaryBgHover": "rgba(239, 239, 244, 1)",
4773
- "colorPrimaryBorder": "rgba(62, 63, 66, 1)",
4774
- "colorPrimaryBorderHover": "rgba(130, 132, 137, 1)",
4775
- "colorPrimaryHover": "rgba(38, 38, 41, 1)",
4776
- "colorPrimary": "rgba(26, 26, 29, 1)",
4777
- "colorPrimaryActive": "rgba(0, 0, 0, 1)",
4778
- "colorPrimaryTextHover": "rgba(38, 38, 41, 1)",
4779
- "colorPrimaryText": "rgba(26, 26, 29, 1)",
4780
- "colorPrimaryTextActive": "rgba(0, 0, 0, 1)",
4781
- "colorTextBase": "rgba(26, 26, 29, 1)",
4782
- "colorBgBase": "rgba(255, 255, 255, 1)",
4783
- "colorText": "rgba(26, 26, 29, 0.88)",
4784
- "colorTextSecondary": "rgba(26, 26, 29, 0.65)",
4785
- "colorTextTertiary": "rgba(26, 26, 29, 0.45)",
4786
- "colorTextQuaternary": "rgba(26, 26, 29, 0.25)",
4787
- "colorBorder": "rgba(187, 187, 193, 1)",
4788
- "colorBorderSecondary": "rgba(234, 234, 234, 1)",
4789
- "colorFill": "rgba(0, 0, 43, 0.06)",
4790
- "colorFillSecondary": "rgba(0, 0, 85, 0.03)",
4791
- "colorFillTertiary": "rgba(205, 208, 220, 0.15)",
4792
- "colorFillQuaternary": "rgba(205, 208, 220, 0.1)",
4793
- "colorBgContainer": "rgba(255, 255, 255, 1)",
4794
- "colorBgElevated": "rgba(255, 255, 255, 1)",
4795
- "colorBgLayout": "rgba(250, 250, 251, 1)",
4796
- "colorBgSpotlight": "rgba(26, 26, 29, 0.85)",
4797
- "colorBgMask": "rgba(0, 0, 0, 0.45)",
4798
- "colorInfo": "rgba(11, 131, 241, 1)",
4799
- "colorInfoHover": "rgba(94, 188, 255, 1)",
4800
- "colorInfoBorder": "rgba(135, 209, 255, 1)",
4801
- "colorInfoText": "rgba(11, 131, 241, 1)",
4802
- "colorInfoBg": "rgba(230, 247, 255, 1)",
4803
- "colorInfoBgHover": "rgba(176, 227, 255, 1)",
4804
- "colorInfoBorderHover": "rgba(94, 188, 255, 1)",
4805
- "colorSuccess": "rgba(91, 185, 139, 1)",
4806
- "colorSuccessHover": "rgba(171, 212, 190, 1)",
4807
- "colorSuccessBg": "rgba(235, 250, 240, 1)",
4808
- "colorSuccessBgHover": "rgba(223, 237, 228, 1)",
4809
- "colorSuccessBorder": "rgba(211, 224, 217, 1)",
4810
- "colorSuccessBorderHover": "rgba(171, 212, 190, 1)",
4811
- "colorWarning": "rgba(250, 173, 20, 1)",
4812
- "colorWarningHover": "rgba(255, 214, 102, 1)",
4813
- "colorWarningBg": "rgba(255, 251, 230, 1)",
4814
- "colorWarningBgHover": "rgba(255, 241, 184, 1)",
4815
- "colorWarningBorder": "rgba(255, 229, 143, 1)",
4816
- "colorWarningBorderHover": "rgba(255, 214, 102, 1)",
4817
- "colorError": "rgba(255, 77, 79, 1)",
4818
- "colorErrorHover": "rgba(255, 120, 117, 1)",
4819
- "colorErrorBg": "rgba(255, 242, 240, 1)",
4820
- "colorErrorBgHover": "rgba(255, 241, 240, 1)",
4821
- "colorErrorBorder": "rgba(255, 204, 199, 1)",
4822
- "colorErrorBorderHover": "rgba(255, 163, 158, 1)",
4823
- "colorLink": "rgba(0, 77, 255, 1)",
4824
- "boxShadow": "0px 4px 6px 0px rgba(0, 0, 0, 0.08)",
4825
- "boxShadowSecondary": "0px 12px 24px -16px rgba(0, 0, 0, 0.06),0px 8px 40px 0px rgba(0, 0, 0, 0.12),0px 0px 1px 0px rgba(0, 0, 0, 0.04)",
4826
-
4827
- "colorTextWhite": "#ffffff",
4828
- "colorTextOnPrimary": "#ffffff",
4829
- "colorFillDisable": "rgba(232, 232, 235, 1)",
4830
- "colorPurple": "rgba(97, 92, 237, 1)",
4831
- "colorPurpleHover": "#8080FF",
4832
- "colorPurpleBg": "rgba(226, 222, 255, 0.8)",
4833
- "colorPink": "rgba(236, 72, 153, 1)",
4834
- "colorPinkHover": "#E593BC",
4835
- "colorPinkBg": "rgba(251, 220, 239, 0.8)",
4836
- "colorYellow": "rgba(234, 179, 8, 1)",
4837
- "colorYellowHover": "#F1D372",
4838
- "colorYellowBg": "rgba(255, 250, 184, 0.8)",
4839
- "colorOrange": "rgba(250, 129, 37, 1)",
4840
- "colorOrangeHover": "#E88C45",
4841
- "colorOrangeBg": "rgba(255, 232, 201, 0.8)",
4842
- "colorTeal": "rgba(20, 184, 166, 1)",
4843
- "colorTealHover": "#5FB3A9",
4844
- "colorTealBg": "rgba(200, 244, 233, 0.8)",
4845
- "colorBlue": "rgba(0, 144, 255, 1)",
4846
- "colorBlueHover": "#72BCF5",
4847
- "colorBlueBg": "rgba(194, 229, 255, 0.8)",
4848
- "colorMauve": "rgba(142, 140, 153, 1)",
4849
- "colorMauveHover": "#C0BFC8",
4850
- "colorMauveBg": "rgba(239, 240, 243, 0.8)",
4851
- "colorSlate": "#2C3A50",
4852
- "colorSlateHover": "#354252",
4853
- "colorSlateBg": "#232B36",
4854
- "boxShadowTertiary": "0px 12px 32px -16px rgba(0, 0, 0, 0.24),0px 12px 60px 0px rgba(0, 0, 0, 0.12),0px 0px 1px 0px rgba(0, 0, 0, 0.04)",
4855
- "boxShadowTertiaryLeft": "-12px 0px 32px -16px rgba(0, 0, 0, 0.24),-12px 0px 60px 0px rgba(0, 0, 0, 0.12),0px 0px 1px 0px rgba(0, 0, 0, 0.04)",
4856
- "boxShadowInput": "0px 12px 24px -16px rgba(54, 54, 73, 0.04),0px 12px 40px 0px rgba(51, 51, 71, 0.08),0px 0px 1px 0px rgba(44, 44, 54, 0.02)"
4857
- }
4858
-
4859
- ```
4860
-
4861
- <div><span style="display: inline-block; width: 12px; height: 12px; background-color: rgba(26, 26, 29, 1);"></span> carbonDarkTheme</div>
4862
-
4863
- ```json
4864
- {
4865
- "borderRadiusXS": 2,
4866
- "borderRadiusSM": 4,
4867
- "borderRadius": 6,
4868
- "borderRadiusLG": 8,
4869
- "borderRadiusXL": 12,
4870
- "borderRadiusFull": 999,
4871
- "wireframe": false,
4872
- "colorPrimaryBg": "#181818",
4873
- "colorPrimaryBgHover": "#2E2E2E",
4874
- "colorPrimaryBorder": "#323232",
4875
- "colorPrimaryBorderHover": "#2C2C2C",
4876
- "colorPrimaryHover": "#DFDFDF",
4877
- "colorPrimary": "#E4E4E4",
4878
- "colorPrimaryActive": "#7E7E7E",
4879
- "colorPrimaryTextHover": "#909090",
4880
- "colorPrimaryText": "#676767",
4881
- "colorPrimaryTextActive": "#959595",
4882
- "colorTextBase": "#E7E7ED",
4883
- "colorBgBase": "#0A0A0B",
4884
- "colorText": "#E7E7EDC7",
4885
- "colorTextSecondary": "#E7E7EDA6",
4886
- "colorTextTertiary": "#E7E7ED73",
4887
- "colorTextQuaternary": "#E7E7ED40",
4888
- "colorBorder": "#5B5B5BCC",
4889
- "colorBorderSecondary": "#323232CC",
4890
- "colorFill": "#E7E7ED2E",
4891
- "colorFillSecondary": "#E7E7ED1F",
4892
- "colorFillTertiary": "#E7E7ED14",
4893
- "colorFillQuaternary": "#E7E7ED0A",
4894
- "colorBgContainer": "#121212",
4895
- "colorBgElevated": "#212121",
4896
- "colorBgLayout": "#141414",
4897
- "colorBgSpotlight": "#525252D9",
4898
- "colorBgMask": "#050508CC",
4899
- "colorInfo": "#0B83F1",
4900
- "colorInfoHover": "#5EBCFF",
4901
- "colorInfoBorder": "#3990C9",
4902
- "colorInfoText": "#0B83F1",
4903
- "colorInfoBg": "#112233",
4904
- "colorInfoBgHover": "#264866",
4905
- "colorInfoBorderHover": "#5EBCFF",
4906
- "colorSuccess": "#5BB98B",
4907
- "colorSuccessHover": "#74A47C",
4908
- "colorSuccessBg": "#293631",
4909
- "colorSuccessBgHover": "#3F5147",
4910
- "colorSuccessBorder": "#73A377",
4911
- "colorSuccessBorderHover": "#ABD4BE",
4912
- "colorWarning": "#FAAD14",
4913
- "colorWarningHover": "#FF8C28",
4914
- "colorWarningBg": "#2D231A",
4915
- "colorWarningBgHover": "#4D3B23",
4916
- "colorWarningBorder": "#FFA628",
4917
- "colorWarningBorderHover": "#FFD666",
4918
- "colorError": "#FF4D4F",
4919
- "colorErrorHover": "#EE654E",
4920
- "colorErrorBg": "#2B0B08",
4921
- "colorErrorBgHover": "#4A2A28",
4922
- "colorErrorBorder": "#EE5B4E",
4923
- "colorErrorBorderHover": "#FFA39E",
4924
- "colorLink": "#4D7DFF",
4925
- "boxShadow": "0px 4px 6px 0px rgba(255, 255, 255, 0.08)",
4926
- "boxShadowSecondary": "0px 12px 24px -16px rgba(255, 255, 255, 0.06),0px 8px 40px 0px rgba(255, 255, 255, 0.12),0px 0px 1px 0px rgba(255, 255, 255, 0.04)",
4927
-
4928
- "colorTextWhite": "#ffffff",
4929
- "colorTextBlack": "#000000",
4930
- "colorTextOnPrimary": "#ffffff",
4931
- "colorFillDisable": "#898989",
4932
- "colorPurple": "#615CED",
4933
- "colorPurpleHover": "#8383F0",
4934
- "colorPurpleBg": "#6964877A",
4935
- "colorPink": "#EC4899",
4936
- "colorPinkHover": "#E494BC",
4937
- "colorPinkBg": "#53424D7A",
4938
- "colorYellow": "#EAB308",
4939
- "colorYellowHover": "#DBBE62",
4940
- "colorYellowBg": "#9585527A",
4941
- "colorOrange": "#FA8125",
4942
- "colorOrangeHover": "#F7A25F",
4943
- "colorOrangeBg": "#6F58417A",
4944
- "colorTeal": "#14B8A6",
4945
- "colorTealHover": "#7BC7BE",
4946
- "colorTealBg": "#4658547A",
4947
- "colorBlue": "#0090FF",
4948
- "colorBlueHover": "#83BFED",
4949
- "colorBlueBg": "#5E76897A",
4950
- "colorMauve": "#8E8C99",
4951
- "colorMauveHover": "#BBB8CA",
4952
- "colorMauveBg": "#5859647A",
4953
- "colorSlate": "#2C3A50",
4954
- "colorSlateHover": "#354252",
4955
- "colorSlateBg": "#232B36",
4956
- "colorLavender": "#A77BFF",
4957
- "colorLavenderHover": "#BFA5F3",
4958
- "colorLavenderBg": "rgba(150, 143, 167, 0.48)",
4959
-
4960
- "boxShadowTertiary": "0px 12px 32px -16px rgba(255, 255, 255, 0.24),0px 12px 60px 0px rgba(255, 255, 255, 0.12),0px 0px 1px 0px rgba(255, 255, 255, 0.04)",
4961
- "boxShadowTertiaryLeft": "-12px 0px 32px -16px rgba(255, 255, 255, 0.24),-12px 0px 60px 0px rgba(255, 255, 255, 0.12),0px 0px 1px 0px rgba(255, 255, 255, 0.04)",
4962
- "boxShadowInput": "0px 12px 24px -16px rgba(255, 255, 255, 0.08),0px 12px 40px 0px rgba(255, 255, 255, 0.16),0px 0px 1px 0px rgba(255, 255, 255, 0.04)"
4963
-
4964
- }
4965
- ```
4966
-
4967
- # CSS 变量
4968
-
4969
- Spark Design 默认启用 cssVar 模式,因此您可以利用 从 token 派生出的 CSS 变量来构建自己的样式。
4970
-
4971
-
4972
- ```less
4973
- .example {
4974
- background: var(--sps-color-bg-base);
4975
- color: var(--sps-color-pink);
4976
- }
4977
- // 提示:您可以将 'sps' 替换为您自己的前缀
4978
- ```
4979
-
4980
-
4981
-
4982
-
4983
- ### 1.0.21
4984
- `2025-12-25`
4985
-
4986
- ##### Changed
4987
-
4988
- - AlertDialog 组件:定位距离顶部的默认高度调整为当前窗口高度的 36%
4989
- - Table 组件:表格行 hover 背景色修改为 `color-bg-layout` 颜色变量;表格行选中背景色修改为 `color-primary-bg-hover` 颜色变量
4990
- - Select 组件:多选模式的选中项背景色调整
4991
- - 主题色变量更新:,
4992
- - bailianDarkTheme:添加 `"colorLinkHover": "#857DE3"`
4993
- - bailianTheme:添加 `"colorLinkHover": "#8080FF"`
4994
- - carbonDarkTheme:修改 `"colorTextOnPrimary": "#ffffff"`
4995
-
4996
- ##### Fixed
4997
-
4998
- - Slider 组件:水平滑动条组件取消默认左右两边的外边距 margin,操作按钮 handle 在最左侧与最右侧不超出滑动轨道宽度
4085
+ 访问 [Icon Library](https://sparkdesign.agentscope.io/#/resources/icons) 查看全部 Icon