forked from ant-design/ant-design
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.d.ts
2011 lines (1710 loc) · 57.1 KB
/
index.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// originated by: bang88 <https://github.com/bang88>, Bruce Mitchener <https://github.com/waywardmonkeys/>
import * as React from 'react'
// Affix
interface AffixProps {
/**
* 距离窗口顶部达到指定偏移量后触发
*/
offsetTop?:number,
offsetBottom?:number,
style?:React.CSSProperties
}
/**
* # Affix
* 将页面元素钉在可视范围。
* ## 何时使用
* 当内容区域比较长,需要滚动页面时,这部分内容对应的操作或者导航需要在滚动范围内始终展现。常用于侧边菜单和按钮组合。
* 页面可视范围过小时,慎用此功能以免遮挡页面内容。
*/
export class Affix extends React.Component<AffixProps, {}> {
}
type AlertType = 'success' | 'info' | 'warning' | 'error'
// Alert
interface AlertProps {
/**
* 必选参数,指定警告提示的样式,有四种选择`success`、`info`、`warn`、`error`
*/
type:AlertType,
/**可选参数,默认不显示关闭按钮 */
closable?:boolean,
/**可选参数,自定义关闭按钮 */
closeText?:React.ReactNode,
/**必选参数,警告提示内容 */
message:React.ReactNode,
/**可选参数,警告提示的辅助性文字介绍 */
description?:React.ReactNode,
/** 固定状态改变时触发的回调函数 */
onChange?:(affixed: boolean) => void,
/**可选参数,关闭时触发的回调函数 */
onClose?:Function,
/**可选参数,是否显示辅助图标 */
showIcon?:boolean,
style?:React.CSSProperties
}
/**
* # Alert
* 警告提示,展现需要关注的信息。
* ## 何时使用
* - 当某个页面需要向用户显示警告的信息时。
* - 非浮层的静态展现形式,始终展现,不会自动消失,用户可以点击关闭。
* */
export class Alert extends React.Component<AlertProps, {}> {
}
interface BadgeProps {
/** 展示的数字,大于 overflowCount 时显示为 `${overflowCount}+`,为 0 时隐藏*/
count:number,
/** 展示封顶的数字值*/
overflowCount?:number,
/** 不展示数字,只有一个小红点*/
dot?:boolean,
style?:React.CSSProperties
}
// Badge
/**
* #Badge
*
* 图标右上角的圆形徽标数字。
* ## 何时使用
* 一般出现在通知图标或头像的右上角,用于显示需要处理的消息条数,通过醒目视觉形式吸引用户处理。
*
*/
export class Badge extends React.Component<BadgeProps, {}> {
}
type ButtonType = 'primary' | 'ghost' | 'dashed'
type ButtonShape = 'circle' | 'circle-outline'
type ButtonSize = 'small' | 'large'
// Button
interface ButtonProps {
/** 设置按钮类型,可选值为 `primary` `ghost` 或者不设 */
type?:ButtonType,
/** 设置 `button` 原生的 `type` 值,可选值请参考 HTML标准*/
htmlType?:string,
icon?:string,
/** 设置按钮形状,可选值为 `circle` `circle-outline` 或者不设*/
shape?:ButtonShape,
/** 设置按钮大小,可选值为 `small` `large` 或者不设*/
size?:ButtonSize,
/** `click` 事件的 handler*/
onClick?:React.FormEventHandler,
/** 设置按钮载入状态*/
loading?:boolean,
disabled?:boolean,
style?:React.CSSProperties
}
interface ButtonGroupProps {
/** 设置按钮大小,可选值为 `small` `large` 或者不设*/
size?:ButtonSize,
style?:React.CSSProperties
}
/**
可以将多个 `Button` 放入 `Button.Group` 的容器中。
通过设置 `size` 为 `large` `small` 分别把按钮组合设为大、小尺寸。若不设置 `size`,则尺寸为中。*/
declare class ButtonGroup extends React.Component<ButtonGroupProps, {}> {
}
/**
* #Button
按钮用于开始一个即时操作。
## 何时使用
标记了一个(或封装一组)操作命令,响应用户点击行为,触发相应的业务逻辑。*/
export class Button extends React.Component<ButtonProps, {}> {
static Group:typeof ButtonGroup
}
// Breadcrumb
interface BreadcrumbItemProps {
/** 链接,如不传则不可点击 */
href?:string
}
export class BreadcrumbItem extends React.Component<BreadcrumbItemProps, {}> {
}
interface BreadcrumbProps {
prefixCls?:string,
/** router 的路由栈信息 */
routes?:Array<React.ReactNode>,
/** 路由的参数*/
params?:Object,
/** 分隔符自定义*/
separator?:string | React.ReactNode,
linkRender?:(path:string, name:string) => React.ReactNode,
nameRender?:(name:string) => React.ReactNode
style?:React.CSSProperties
}
/**
* #Breadcrumb
显示当前页面在系统层级结构中的位置,并能向上返回。
## 何时使用
- 当系统拥有超过两级以上的层级结构时;
- 当需要告知用户“你在哪里”时;
- 当需要向上导航的功能时。*/
export class Breadcrumb extends React.Component<BreadcrumbProps, {}> {
static Item:typeof BreadcrumbItem
}
export interface GregorianCalendar {
getMonth():number,
getYear():number,
getDayOfMonth():string,
getHourOfDay():string,
getMinutes():number,
getSeconds():number,
getMilliSeconds():number,
getWeekOfYear():number,
getWeekOfMonth():number,
getDayOfYear():number,
getDayOfWeek():number,
getDayOfWeekInMonth():number,
getWeekYear():number,
getWeeksInWeekYear():number
}
type CalendarMode = 'month' | 'year';
// Calendar
interface CalendarProps {
/** 自定义渲染月单元格*/
monthCellRender?:(value:GregorianCalendar, locale:any) => React.ReactNode,
/** 自定义渲染日期单元格*/
dateCellRender?:(value:GregorianCalendar) => React.ReactNode,
/** 是否全屏显示*/
fullscreen?:boolean,
/** 国际化配置*/
locale?:Object,
prefixCls?:string,
className?:string,
/** 日期面板变化回调*/
onPanelChange?:(value:GregorianCalendar, mode:CalendarMode) => void,
/** 展示日期*/
value?:Date,
/** 默认展示日期*/
defaultValue?:Date,
/** 初始模式,`month/year`*/
mode?:CalendarMode,
style?:React.CSSProperties
}
/**
* #Calendar
按照日历形式展示数据的容器。
## 何时使用
当数据是日期或按照日期划分时,例如日程、课表、价格日历等,农历等。目前支持年/月切换。
*/
export class Calendar extends React.Component<CalendarProps, {}> {
}
type CarouselEffect = 'scrollx' | 'fade'
// Carousel
interface CarouselProps {
/** 动画效果函数,可取 scrollx, fade*/
effect?:CarouselEffect,
/** 是否显示面板指示点*/
dots?:boolean,
/** 垂直显示*/
vertical?:boolean,
/** 是否自动切换*/
autoplay?:boolean,
/** 动画效果*/
easing?:string,
/** 切换面板的回调*/
beforeChange?:(from:number, to:number) => void,
/** 切换面板的回调*/
afterChange?:(current:number) => void,
style?:React.CSSProperties
}
/**
* #Carousel
旋转木马,一组轮播的区域。
## 何时使用
- 当有一组平级的内容。
- 当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。
- 常用于一组图片或卡片轮播。
*/
export class Carousel extends React.Component<CarouselProps, {}> {
}
export interface CascaderOptionType {
value:string,
label:string,
disabled?:boolean,
children?:Array<CascaderOptionType>
}
type CascaderExpandTrigger = 'click' | 'hover'
// Cascader
interface CascaderProps {
/** 可选项数据源*/
options:Array<CascaderOptionType>,
/** 默认的选中项*/
defaultValue?:Array<CascaderOptionType>,
/** 指定选中项*/
value?:Array<CascaderOptionType>,
/** 选择完成后的回调*/
onChange?:(value:string, selectedOptions:CascaderOptionType) => void,
/** 选择后展示的渲染函数*/
displayRender?:(label:Array<string>) => React.ReactNode,
/** 自定义样式*/
style?:React.CSSProperties,
/** 自定义类名*/
className?:string,
/** 自定义浮层类名*/
popupClassName?:string,
/** 浮层预设位置:`bottomLeft` `bottomRight` `topLeft` `topRight` */
popupPlacement?:string,
/** 输入框占位文本*/
placeholder?:string,
/** 输入框大小,可选 `large` `default` `small` */
size?:string,
/** 禁用*/
disabled?:boolean,
/** 是否支持清除*/
allowClear?:boolean,
expandTrigger?:CascaderExpandTrigger,
changeOnSelect?:boolean
}
/**
* #Cascader
级联选择框。
## 何时使用
- 需要从一组相关联的数据集合进行选择,例如省市区,公司层级,事物分类等。
- 从一个较大的数据集合中进行选择时,用多级分类进行分隔,方便选择。
- 比起 Select 组件,可以在同一个浮层中完成选择,有较好的体验。*/
export class Cascader extends React.Component<CascaderProps, {}> {
}
// Checkbox
interface CheckboxProps {
/** 指定当前是否选中*/
checked?:boolean,
/** 初始是否选中*/
defaultChecked?:boolean,
/** 变化时回调函数*/
onChange?:React.FormEventHandler,
style?:React.CSSProperties
}
export interface CheckboxOptionType {
label:string,
value:string,
disabled?:boolean
}
interface CheckboxGroupProps {
/** 默认选中的选项*/
defaultValue?:Array<string>,
/** 指定选中的选项*/
value?:Array<string>,
/** 指定可选项*/
options?:Array<CheckboxOptionType> | Array<string>,
/** 变化时回调函数*/
onChange?:(checkedValue:Array<string>) => void,
disabled?:boolean,
style?:React.CSSProperties
}
/** Checkbox 组*/
declare class CheckboxGroup extends React.Component<CheckboxGroupProps, {}> {
}
/**
* #Checkbox
多选框。
## 何时使用
- 在一组可选项中进行多项选择时;
- 单独使用可以表示两种状态之间的切换,和 `switch` 类似。区别在于切换 `switch` 会直接触发状态改变,而 `checkbox` 一般用于状态标记,需要和提交操作配合。
*/
export class Checkbox extends React.Component<CheckboxProps, {}> {
static Group:typeof CheckboxGroup
}
// Collapse
interface CollapseProps {
/** 当前激活 tab 面板的 key*/
activeKey?:Array<string> | string,
/** 初始化选中面板的key */
defaultActiveKey?:Array<string>,
/** accordion 为 true 的时候,一次只可以打开一个面板 */
accordion?:boolean,
/** 切换面板的回调*/
onChange?:(key:string) => void,
style?:React.CSSProperties
}
interface CollapsePanelProps {
/** 对应 activeKey */
key:string,
/** 面板头内容*/
header:React.ReactNode,
style?:React.CSSProperties
}
declare class CollapsePanel extends React.Component<CollapsePanelProps, {}> {
}
/**
* #Collapse
可以折叠/展开的内容区域。
## 何时使用
- 对复杂区域进行分组和隐藏,保持页面的整洁。
- `手风琴` 是一种特殊的折叠面板,只允许单个内容区域展开。*/
export class Collapse extends React.Component<CollapseProps, {}> {
static Panel:typeof CollapsePanel
}
type DatePickerDateType = string | Date;
// DatePicker
interface DatePickerProps {
value?:DatePickerDateType,
defaultValue?:DatePickerDateType,
/** 展示的日期格式,配置参考 [GregorianCalendarFormat](https://github.com/yiminghe/gregorian-calendar-format)*/
format?:string,
/** 不可选择的日期*/
disabledDate?:Function,
/** 时间发生变化的回调,发生在用户选择时间时*/
onChange?:(date:Date, dateString:string) => void,
/** 禁用*/
disabled?:boolean,
style?:React.CSSProperties,
/** 格外的弹出日历样式*/
popupStyle?:React.CSSProperties,
/** 输入框大小,`large` 高度为 32px,`small` 为 22px,默认是 28px*/
size?:'large' | 'small',
/** 国际化配置*/
locale?:Object,
/** 增加时间选择功能*/
showTime?:boolean,
/** 点击确定按钮的回调*/
onOk?:(value:Date) => void,
/** 定义浮层的容器,默认为 body 上新建 div*/
getCalendarContainer?:Function
}
interface RangePickProps {
value?:Array<DatePickerDateType>,
defaultValue?:Array<DatePickerDateType>,
format?:string,
onChange?:(date:Array<Date>, dateString:Array<string>) => void,
style:React.CSSProperties,
showTime:boolean | Object
}
declare class RangePicker extends React.Component<RangePickProps, {}> {
}
interface MonthPickProps {
value?:DatePickerDateType,
defaultValue?:DatePickerDateType,
/** 展示的日期格式,配置参考 [GregorianCalendarFormat](https://github.com/yiminghe/gregorian-calendar-format)*/
format?:string,
/** 时间发生变化的回调,发生在用户选择时间时*/
onChange?:(date:Date) => void,
/** 禁用*/
disabled?:boolean,
style?:React.CSSProperties,
/** 格外的弹出日历样式*/
popupStyle?:React.CSSProperties,
/** 输入框大小,`large` 高度为 32px,`small` 为 22px,默认是 28px*/
size?:'large' | 'small',
/** 国际化配置*/
locale?:Object,
/** 定义浮层的容器,默认为 body 上新建 div*/
getCalendarContainer?:Function
}
declare class MonthPicker extends React.Component<MonthPickProps, {}> {
}
/**
* #DatePicker
输入或选择日期的控件。
## 何时使用
当用户需要输入一个日期,可以点击标准输入框,弹出日期面板进行选择。*/
export class DatePicker extends React.Component<DatePickerProps, {}> {
static RangePicker:typeof RangePicker
static MonthPicker:typeof MonthPicker
}
// Dropdown
interface DropdownProps {
/** 触发下拉的行为 ['click'] or ['hover']*/
trigger?:Array<string>,
/** 菜单节点*/
overlay:React.ReactNode,
style?:React.CSSProperties
}
interface DropdownButtonProps {
/** 按钮类型*/
type?:'primary' | 'ghost' | 'dash',
/** 点击左侧按钮的回调*/
onClick?:React.FormEventHandler,
/** 触发下拉的行为*/
trigger?:'click' | 'hover',
/** 菜单节点*/
overlay:React.ReactNode,
visible?:boolean,
onVisibleChange?:(visible:boolean) => void,
style?:React.CSSProperties
}
declare class DropdownButton extends React.Component<DropdownButtonProps, {}> {
}
/**
* #Dropdown
向下弹出的列表。
## 何时使用
当页面上的操作命令过多时,用此组件可以收纳操作元素。点击或移入触点,会出现一个下拉菜单。可在列表中进行选择,并执行相应的命令。
*/
export class Dropdown extends React.Component<DropdownProps, {}> {
static Button:typeof DropdownButton
}
export interface FormItemLabelColOption {
span:number,
offset:number
}
// Form
interface FormItemProps {
prefixCls?:string,
/** label 标签的文本*/
label?:string,
/** label 标签布局,通 `<Col>` 组件,设置 `span` `offset` 值,如 `{span: 3, offset: 12}`*/
labelCol?:FormItemLabelColOption,
/** 需要为输入控件设置布局样式时,使用该属性,用法同 labelCol*/
wrapperCol?:FormItemLabelColOption,
/** 提示信息,如不设置,则会根据校验规则自动生成 */
help?:string,
/** 额外的提示信息,和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。*/
extra?:string,
/** 是否必填,如不设置,则会根据校验规则自动生成 */
validateStatus?:'success' | 'warning' | 'error' | 'validating',
/** 配合 validateStatus 属性使用,是否展示校验状态图标 */
hasFeedback?:boolean,
className?:string,
required?:boolean,
style?:React.CSSProperties
}
/**
表单一定会包含表单域,表单域可以是输入控件,标准表单域,标签,下拉菜单,文本域等。
这里我们分别封装了表单域 `<Form.Item />` 和输入控件 `<Input />`。*/
export class FormItem extends React.Component<FormItemProps, {}> {
}
interface FormComponentProps {
form:CreateFormOptions
}
export class FormComponent extends React.Component<FormComponentProps, {}> {
}
// function create
type CreateFormOptions = {
/** 获取一组输入控件的值,如不传入参数,则获取全部组件的值*/
getFieldsValue():(fieldNames?:Array<string>) => any
/** 获取一个输入控件的值*/
getFieldValue():(fieldName:string) => any
/** 设置一组输入控件的值*/
setFieldsValue():(obj:Object) => void
/** 设置一组输入控件的值*/
setFields():(obj:Object) => void
/** 校验并获取一组输入域的值与 Error*/
validateFields():(fieldNames?:Array<string>, options?:Object, callback?:(erros:any, values:any) => void) => any
/** 与 `validateFields` 相似,但校验完后,如果校验不通过的菜单域不在可见范围内,则自动滚动进可见范围 */
validateFieldsAndScroll():(fieldNames?:Array<string>, options?:Object, callback?:(erros:any, values:any) => void) => any
/** 获取某个输入控件的 Error */
getFieldError():(name:string) => Object
/** 判断一个输入控件是否在校验状态*/
isFieldValidating():(name:string) => Object
/**重置一组输入控件的值与状态,如不传入参数,则重置所有组件*/
resetFields():(names?:Array<string>) => void
getFieldsValue():(id:string, options:{
/** 子节点的值的属性,如 Checkbox 的是 'checked'*/
valuePropName?:string,
/** 子节点的初始值,类型、可选值均由子节点决定*/
initialValue?:any,
/** 收集子节点的值的时机*/
trigger?:string,
/** 校验子节点值的时机*/
validateTrigger?:string,
/** 校验规则,参见 [async-validator](https://github.com/yiminghe/async-validator) */
rules?:Array<any>,
/** 必填输入控件唯一标志*/
id?:string
}) => Array<any>
}
interface ComponentDecorator {
<T extends (typeof FormComponent)>(component:T):T;
}
interface FormProps {
prefixCls?:string,
/** 水平排列布局*/
horizontal?:boolean,
/** 行内排列布局*/
inline?:boolean,
/** 经 `Form.create()` 包装过的组件会自带 `this.props.form` 属性,直接传给 Form 即可*/
form?:Object,
/** 数据验证成功后回调事件*/
onSubmit?:React.FormEventHandler,
style?:React.CSSProperties
}
interface FormCreateOption {
/**
* 当 `Form.Item` 子节点的值发生改变时触发,可以把对应的值转存到 Redux store
*/
onFieldsChange?:(props:any, fields:Array<any>) => void,
/** 把 props 转为对应的值,可用于把 Redux store 中的值读出 */
mapPropsToFields?:(props:any) => void
}
/**
* #Form
具有数据收集、校验和提交功能的表单,包含复选框、单选框、输入框、下拉选择框等元素。
## 表单
我们为 `form` 提供了以下两种排列方式:
- 水平排列:可以实现 `label` 标签和表单控件的水平排列;
- 行内排列:使其表现为 `inline-block` 级别的控件。
*/
export class Form extends React.Component<FormProps, {}> {
static Item:typeof FormItem
static create(options?:FormCreateOption):ComponentDecorator
}
// Icon
interface IconProps {
/** 图标类型*/
type:string,
style?:React.CSSProperties
}
/**
* #Icon
有含义的矢量图形,每一个图标打倒一个敌人。
## 图标的命名规范
我们为每个图标赋予了语义化的命名,命名规则如下:
- 实心和描线图标保持同名,用 `-o` 来区分,比如 `question-circle`(实心) 和 `question-circle-o`(描线);
- 命名顺序:`[icon名]-[形状可选]-[描线与否]-[方向可选]`。
## 如何使用
使用 `<Icon />` 标签声明组件,指定图标对应的 type 属性,示例代码如下:
```html
<Icon type="link" />
```
最终会渲染为:
```html
<i class="anticon anticon-${type}"></i>
```*/
export class Icon extends React.Component<IconProps, {}> {
}
// Input
interface InputProps {
/** 【必须】声明 input 类型,同原生 input 标签的 type 属性*/
type?:string,
id?:string,
/** 控件大小,默认值为 default 。注:标准表单内的输入框大小限制为 large。 {'large','default','small'}*/
size?:string,
/** 是否禁用状态,默认为 false*/
disabled?:boolean,
value?:any,
/** 设置初始默认值*/
defaultValue?:any,
className?:string,
/** 带标签的 input,设置前置标签*/
addonBefore?:React.ReactNode,
/** 带标签的 input,设置后置标签*/
addonAfter?:React.ReactNode,
prefixCls?:string,
placeholder?:string,
onChange?:React.FormEventHandler,
style:React.CSSProperties
}
export class Input extends React.Component<InputProps, {}> {
}
// InputNumber
interface InputNumberProps {
/** 最小值*/
min:number,
/** 最大值*/
max:number,
/** 当前值*/
value?:number,
/** 每次改变步数*/
step?:number,
/** 初始值*/
defaultValue?:number,
/** 变化回调*/
onChange?:React.FormEventHandler,
/** 禁用*/
disabled?:boolean,
/** 输入框大小*/
size?:string,
style?:React.CSSProperties
}
/**
* #InputNumber
通过鼠标或键盘,输入范围内的数值。
## 何时使用
当需要获取标准数值时。*/
export class InputNumber extends React.Component<InputNumberProps, {}> {
}
// Layout
// Row
interface RowProps {
gutter?:number,
type?:'flex',
align?:'top' | 'middle' | 'bottom',
justify?:'start' | 'end' | 'center' | 'space-around' | 'space-between',
style?:React.CSSProperties,
className?:string,
}
export class Row extends React.Component<RowProps, {}> {
}
// Col
interface ColProps {
span?:number,
lg?: number,
md?:number,
sm?:number,
xs?:number,
order?:number,
offset?:string,
push?:string,
pull?:string,
className?:string,
style?:React.CSSProperties
}
/**
在多数业务情况下,Ant Design需要在设计区域内解决大量信息收纳的问题,因此在12栅格系统的基础上,我们将整个设计建议区域按照24等分的原则进行划分。
划分之后的信息区块我们称之为“盒子”。建议横向排列的盒子数量最多四个,最少一个。“盒子”在整个屏幕上占比见上图。设计部分基于盒子的单位定制盒子内部的排版规则,以保证视觉层面的舒适感。
## 概述
布局的栅格化系统,我们是基于行(row)和列(col)来定义信息区块的外部框架,以保证页面的每个区域能够稳健地排布起来。下面简单介绍一下它的工作原理:
* 通过`row`在水平方向建立一组`column`(简写col)
* 你的内容应当放置于`col`内,并且,只有`col`可以作为`row`的直接元素
* 栅格系统中的列是指1到24的值来表示其跨越的范围。例如,三个等宽的列可以使用`.col-8`来创建
* 如果一个`row`中的`col`总和超过24,那么多余的`col`会作为一个整体另起一行排列
## Flex 布局
我们的栅格化系统支持 Flex 布局,允许子元素在父节点内的水平对齐方式 - 居左、居中、居右、等宽排列、分散排列。子元素与子元素之间,支持顶部对齐、垂直居中对齐、底部对齐的方式。同时,支持使用 order 来定义元素的排列顺序。
Flex 布局是基于 24 栅格来定义每一个“盒子”的宽度,但排版则不拘泥于栅格。*/
export class Col extends React.Component<ColProps, {}> {
}
// Menu
interface MenuItemProps {
/**
* (是否禁用)
*
* @type {boolean}
*/
disabled?:boolean,
key?:string,
style?:React.CSSProperties
}
export class MenuItem extends React.Component<MenuItemProps, {}> {
}
interface MenuSubMenuProps {
disabled?:boolean,
key?:string,
/**
* (子菜单项值)
*
* @type {(string | React.ReactNode)}
*/
title:string | React.ReactNode,
/**
* (子菜单的菜单项)
*
* @type {(MenuItem | MenuSubMenu)}
*/
children?:Array<MenuItem | MenuSubMenu>,
onTitleClick?:Function,
style?:React.CSSProperties
}
export class MenuSubMenu extends React.Component<MenuSubMenuProps, {}> {
}
interface MenuItemGroupProps {
/**
* (分组标题)
*
* @type {(string | React.ReactNode)}
*/
title:string | React.ReactNode,
/**
* (分组的菜单项)
*
* @type {MenuItem}
*/
children?:Array<MenuItem | MenuSubMenu>,
style?:React.CSSProperties
}
export class MenuItemGroup extends React.Component<MenuItemGroupProps, {}> {
}
interface MenuProps {
id?: string,
/** 主题颜色*/
theme?:'light' | 'dark',
/** 菜单类型 enum: `vertical` `horizontal` `inline`*/
mode?:'vertical' | 'horizontal' | 'inline',
/** 当前选中的菜单项 key 数组*/
selectedKeys?:Array<string>,
/** 初始选中的菜单项 key 数组*/
defaultSelectedKeys?:Array<string>,
/** 当前展开的菜单项 key 数组*/
openKeys?:Array<string>,
/** 初始展开的菜单项 key 数组*/
defaultOpenKeys?:Array<string>,
onOpen?:Function,
onClose?:Function,
/**
* 被选中时调用
*
* @type {(item: any, key: string, selectedKeys: Array<string>) => void}
*/
onSelect?:(item:any, key:string, selectedKeys:Array<string>) => void,
/** 取消选中时调用*/
onDeselect?:(item:any, key:string, selectedKeys:Array<string>) => void,
/** 点击 menuitem 调用此函数*/
onClick?:(item:any, key:string) => void,
/** 根节点样式*/
style?:React.CSSProperties
}
/**
# Menu
为页面和功能提供导航的菜单列表。
## 何时使用
导航菜单是一个网站的灵魂,用户依赖导航在各个页面中进行跳转。一般分为顶部导航和侧边导航,顶部导航提供全局性的类目和功能,侧边导航提供多级结构来收纳和排列网站架构。
更多布局和导航的范例可以参考:[常用布局](/spec/layout)。*/
export class Menu extends React.Component<MenuProps, {}> {
static Item:typeof MenuItem
static SubMenu:typeof MenuSubMenu
static ItemGroup:typeof MenuItemGroup
static Divider:typeof React.Component
}
// Message
type MessageFunc = (/** 提示内容*/
content:string,
/** 自动关闭的延时*/
duration?:number) => void
/**
* #Message
全局展示操作反馈信息。
## 何时使用
- 可提供成功、警告和错误等反馈信息。
- 顶部居中显示并自动消失,是一种不打断用户操作的轻量级提示方式。*/
export const message:{
success:MessageFunc
error:MessageFunc
info:MessageFunc
loading:MessageFunc
config:(options:{
/**
* 消息距离顶部的位置
*
* @type {number}
*/
top:number,
duration?:number
}) => void
destroy:() => void
}
// Modal
type ModalFunc = (options:{
visible?:boolean,
title?:React.ReactNode | string,
content?:React.ReactNode | string,
onOk?:Function,
onCancel?:Function,
width?:string | number,
iconClassName?:string,
okText?:string,
cancelText?:string
}) => void
interface ModalProps {
/** 对话框是否可见*/
visible?:boolean,
/** 确定按钮 loading*/
confirmLoading?:boolean,
/** 标题*/
title?:React.ReactNode | string,
/** 是否显示右上角的关闭按钮*/
closable?:boolean,
/** 点击确定回调*/
onOk?:Function,
/** 点击遮罩层或右上角叉或取消按钮的回调*/
onCancel?:Function,
/** 宽度*/
width?:string | number,
/** 底部内容*/
footer?:React.ReactNode | string,
/** 确认按钮文字*/
okText?:string,
/** 取消按钮文字*/
cancelText?:string,
/** 点击蒙层是否允许关闭*/
maskClosable?:boolean,
style?:React.CSSProperties,
wrapClassName?:string
}
/**
# Modal
模态对话框。
## 何时使用
需要用户处理事务,又不希望跳转页面以致打断工作流程时,可以使用 `Modal` 在当前页面正中打开一个浮层,承载相应的操作。
另外当需要一个简洁的确认框询问用户时,可以使用精心封装好的 `ant.Modal.confirm()` 等方法。*/
export class Modal extends React.Component<ModalProps, {}> {
static info:ModalFunc
static success:ModalFunc
static error:ModalFunc
static confirm:ModalFunc
}
// Notification
type NotificationFunc = (config:{
/** 通知提醒标题,必选 */
message:React.ReactNode | string,
/** 通知提醒内容,必选*/
description:React.ReactNode | string,
/** 自定义关闭按钮*/
btn?:React.ReactNode | string,
/** 当前通知唯一标志*/
key?:string,
/** 点击默认关闭按钮时触发的回调函数*/
onClose?:Function,
/** 默认 4.5 秒后自动关闭,配置为 null 则不自动关闭*/
duration?:number
}) => void
/**
* #notification
全局展示通知提醒信息。
## 何时使用
在系统右上角显示通知提醒信息。经常用于以下情况:
- 较为复杂的通知内容。
- 带有交互的通知,给出用户下一步的行动点。