@tendaui/components 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +176 -176
  3. package/alert/Alert.tsx +3 -2
  4. package/button/_example/base.tsx +10 -0
  5. package/button/_example/icon.tsx +20 -0
  6. package/color-picker/ColorPickPanel.tsx +9 -0
  7. package/color-picker/ColorPicker.tsx +67 -0
  8. package/color-picker/components/panel/alpha.tsx +32 -0
  9. package/color-picker/components/panel/format/index.tsx +47 -0
  10. package/color-picker/components/panel/format/inputs.tsx +119 -0
  11. package/color-picker/components/panel/header.tsx +37 -0
  12. package/color-picker/components/panel/hue.tsx +20 -0
  13. package/color-picker/components/panel/index.tsx +191 -0
  14. package/color-picker/components/panel/saturation.tsx +81 -0
  15. package/color-picker/components/panel/slider.tsx +76 -0
  16. package/color-picker/components/panel/swatches.tsx +84 -0
  17. package/color-picker/components/trigger.tsx +49 -0
  18. package/color-picker/defaultProps.ts +7 -0
  19. package/color-picker/helpers.ts +53 -0
  20. package/color-picker/hooks/useClassNames.ts +9 -0
  21. package/color-picker/hooks/useStyles.ts +39 -0
  22. package/color-picker/index.ts +12 -0
  23. package/color-picker/style/css.js +1 -0
  24. package/color-picker/style/index.js +1 -0
  25. package/color-picker/type.ts +143 -0
  26. package/color-picker/utils/color-picker/cmyk.ts +89 -0
  27. package/color-picker/utils/color-picker/color.ts +467 -0
  28. package/color-picker/utils/color-picker/constants.ts +187 -0
  29. package/color-picker/utils/color-picker/draggable.ts +100 -0
  30. package/color-picker/utils/color-picker/format.ts +95 -0
  31. package/color-picker/utils/color-picker/gradient.ts +243 -0
  32. package/color-picker/utils/color-picker/index.ts +7 -0
  33. package/color-picker/utils/color-picker/types.ts +33 -0
  34. package/common/observe.ts +33 -0
  35. package/common.ts +20 -0
  36. package/config-provider/ConfigContext.tsx +4 -1
  37. package/config-provider/index.ts +1 -1
  38. package/dialog/DialogCard.tsx +4 -6
  39. package/dialog/hooks/useDialogPosition.ts +1 -2
  40. package/dialog/plugin.tsx +3 -2
  41. package/drawer/Drawer.tsx +264 -0
  42. package/drawer/defaultProps.ts +19 -0
  43. package/drawer/hooks/useDrag.ts +98 -0
  44. package/drawer/hooks/useLockStyle.ts +36 -0
  45. package/drawer/index.ts +5 -0
  46. package/drawer/style/css.js +1 -0
  47. package/drawer/style/index.js +1 -0
  48. package/drawer/type.ts +193 -0
  49. package/drawer/utils/index.ts +76 -0
  50. package/fireworks/Fireworks.tsx +138 -0
  51. package/fireworks/index.ts +10 -0
  52. package/fireworks/style/css.js +0 -0
  53. package/fireworks/style/index.js +0 -0
  54. package/fireworks/type.ts +72 -0
  55. package/form/FormItem.tsx +5 -5
  56. package/form/easing.ts +10 -0
  57. package/form/scroll.ts +124 -0
  58. package/form/type.ts +519 -519
  59. package/global-config/default-config.ts +95 -0
  60. package/global-config/locale/ar_KW.ts +270 -0
  61. package/global-config/locale/en_US.ts +280 -0
  62. package/global-config/locale/it_IT.ts +287 -0
  63. package/global-config/locale/ja_JP.ts +279 -0
  64. package/global-config/locale/ko_KR.ts +279 -0
  65. package/global-config/locale/ru_RU.ts +288 -0
  66. package/global-config/locale/zh_CN.ts +279 -0
  67. package/global-config/locale/zh_TW.ts +279 -0
  68. package/global-config/mobile/default-config.ts +6 -0
  69. package/global-config/mobile/locale/ar_KW.ts +113 -0
  70. package/global-config/mobile/locale/en_US.ts +114 -0
  71. package/global-config/mobile/locale/it_IT.ts +114 -0
  72. package/global-config/mobile/locale/ja_JP.ts +101 -0
  73. package/global-config/mobile/locale/ko_KR.ts +101 -0
  74. package/global-config/mobile/locale/ru_RU.ts +113 -0
  75. package/global-config/mobile/locale/zh_CN.ts +101 -0
  76. package/global-config/mobile/locale/zh_TW.ts +101 -0
  77. package/global-config/t.ts +111 -0
  78. package/hooks/useControlled.ts +3 -3
  79. package/hooks/useDeepEffect.ts +32 -0
  80. package/hooks/useGlobalIcon.ts +10 -3
  81. package/hooks/useLastest.ts +2 -6
  82. package/hooks/useResizeObserve.ts +36 -0
  83. package/index.ts +10 -7
  84. package/input/Input.tsx +4 -1
  85. package/input/defaultProps.ts +0 -2
  86. package/input/type.ts +1 -6
  87. package/input-number/InputNumber.tsx +124 -0
  88. package/input-number/defaultProps.ts +17 -0
  89. package/input-number/index.ts +9 -0
  90. package/input-number/style/css.js +1 -0
  91. package/input-number/style/index.js +1 -0
  92. package/input-number/type.ts +147 -0
  93. package/input-number/useInputNumber.tsx +270 -0
  94. package/ip-input/IPInput.tsx +516 -0
  95. package/ip-input/defaultProps.ts +11 -0
  96. package/ip-input/index.ts +3 -0
  97. package/ip-input/style/css.js +1 -0
  98. package/ip-input/style/index.js +1 -0
  99. package/ip-input/type.ts +115 -0
  100. package/ip-input/utils.ts +112 -0
  101. package/layout/Aside.tsx +38 -0
  102. package/layout/Layout.tsx +104 -0
  103. package/layout/defaultProps.ts +9 -0
  104. package/layout/index.ts +9 -0
  105. package/layout/style/css.js +1 -0
  106. package/layout/style/index.js +1 -0
  107. package/layout/type.ts +43 -0
  108. package/list/List.tsx +144 -0
  109. package/list/ListItem.tsx +36 -0
  110. package/list/ListItemMeta.tsx +40 -0
  111. package/list/defaultProps.ts +11 -0
  112. package/list/hooks/useListVirtualScroll.ts +82 -0
  113. package/list/index.ts +11 -0
  114. package/list/style/css.js +1 -0
  115. package/list/style/index.js +1 -0
  116. package/list/type.ts +93 -0
  117. package/locale/LocalReceiver.ts +55 -0
  118. package/locale/ar_KW.ts +7 -0
  119. package/locale/en_US.ts +7 -0
  120. package/locale/it_IT.ts +6 -0
  121. package/locale/ja_JP.ts +6 -0
  122. package/locale/ko_KR.ts +6 -0
  123. package/locale/ru_RU.ts +6 -0
  124. package/locale/zh_CN.ts +5 -0
  125. package/locale/zh_TW.ts +7 -0
  126. package/notification/NotifyContainer.tsx +2 -2
  127. package/notification/NotifyContext.tsx +1 -0
  128. package/package.json +6 -3
  129. package/popup/Popup.tsx +34 -10
  130. package/radio/Radio.tsx +24 -0
  131. package/radio/RadioGroup.tsx +159 -0
  132. package/radio/defaultProps.ts +18 -0
  133. package/radio/index.ts +12 -0
  134. package/radio/style/css.js +0 -0
  135. package/radio/style/index.js +1 -0
  136. package/radio/type.ts +115 -0
  137. package/radio/useKeyboard.ts +36 -0
  138. package/select/hooks/useOptions.ts +10 -7
  139. package/select/hooks/usePanelVirtualScroll.ts +1 -1
  140. package/select/type.ts +382 -382
  141. package/select-input/type.ts +280 -280
  142. package/slider/Slider.tsx +270 -0
  143. package/slider/SliderHandleButton.tsx +50 -0
  144. package/slider/defaultProps.ts +15 -0
  145. package/slider/index.ts +9 -0
  146. package/slider/style/css.js +1 -0
  147. package/slider/style/index.js +1 -0
  148. package/slider/type.ts +77 -0
  149. package/style/all.js +26 -0
  150. package/styles/_global.scss +39 -39
  151. package/styles/_vars.scss +358 -386
  152. package/styles/components/alert/_index.scss +175 -175
  153. package/styles/components/alert/_vars.scss +39 -39
  154. package/styles/components/badge/_index.scss +70 -70
  155. package/styles/components/badge/_vars.scss +25 -25
  156. package/styles/components/button/_index.scss +499 -511
  157. package/styles/components/button/_mixins.scss +39 -39
  158. package/styles/components/button/_vars.scss +120 -122
  159. package/styles/components/checkbox/_index.scss +158 -158
  160. package/styles/components/checkbox/_var.scss +60 -60
  161. package/styles/components/color-picker/_index.scss +586 -0
  162. package/styles/components/color-picker/_mixins.scss +0 -0
  163. package/styles/components/color-picker/_vars.scss +84 -0
  164. package/styles/components/dialog/_animate.scss +135 -135
  165. package/styles/components/dialog/_index.scss +311 -311
  166. package/styles/components/dialog/_vars.scss +59 -59
  167. package/styles/components/drawer/_index.scss +205 -0
  168. package/styles/components/drawer/_mixins.scss +1 -0
  169. package/styles/components/drawer/_var.scss +53 -0
  170. package/styles/components/fireworks/_index.scss +86 -0
  171. package/styles/components/fireworks/_vars.scss +4 -0
  172. package/styles/components/form/_index.scss +174 -174
  173. package/styles/components/form/_mixins.scss +76 -76
  174. package/styles/components/form/_vars.scss +100 -100
  175. package/styles/components/input/_index.scss +349 -349
  176. package/styles/components/input/_mixins.scss +116 -116
  177. package/styles/components/input/_vars.scss +134 -134
  178. package/styles/components/input-number/_index.scss +353 -0
  179. package/styles/components/input-number/_mixins.scss +0 -0
  180. package/styles/components/input-number/_vars.scss +65 -0
  181. package/styles/components/ip-input/_index.scss +280 -0
  182. package/styles/components/layout/_index.scss +47 -0
  183. package/styles/components/layout/_mixin.scss +0 -0
  184. package/styles/components/layout/_vars.scss +18 -0
  185. package/styles/components/layout/doc.scss +74 -0
  186. package/styles/components/list/_index.scss +172 -0
  187. package/styles/components/list/_mixins.scss +0 -0
  188. package/styles/components/list/_vars.scss +41 -0
  189. package/styles/components/loading/_index.scss +112 -112
  190. package/styles/components/loading/_vars.scss +39 -39
  191. package/styles/components/notification/_index.scss +160 -160
  192. package/styles/components/notification/_mixins.scss +12 -12
  193. package/styles/components/notification/_vars.scss +59 -59
  194. package/styles/components/popup/_index.scss +82 -82
  195. package/styles/components/popup/_mixin.scss +149 -149
  196. package/styles/components/popup/_var.scss +31 -31
  197. package/styles/components/radio/_index.scss +376 -0
  198. package/styles/components/radio/_mixins.scss +0 -0
  199. package/styles/components/radio/_var.scss +92 -0
  200. package/styles/components/select/_index.scss +290 -290
  201. package/styles/components/select/_var.scss +65 -65
  202. package/styles/components/select-input/_index.scss +5 -5
  203. package/styles/components/select-input/_var.scss +3 -3
  204. package/styles/components/slider/_index.scss +241 -0
  205. package/styles/components/slider/_mixins.scss +0 -0
  206. package/styles/components/slider/_vars.scss +50 -0
  207. package/styles/components/switch/_index.scss +279 -279
  208. package/styles/components/switch/_vars.scss +61 -61
  209. package/styles/components/table/_index.scss +193 -0
  210. package/styles/components/table/_var.scss +52 -0
  211. package/styles/components/tabs/_index.scss +165 -0
  212. package/styles/components/tabs/_mixins.scss +11 -0
  213. package/styles/components/tabs/_vars.scss +71 -0
  214. package/styles/components/tag/_index.scss +316 -316
  215. package/styles/components/tag/_var.scss +85 -85
  216. package/styles/components/tag-input/_index.scss +163 -163
  217. package/styles/components/tag-input/_vars.scss +16 -16
  218. package/styles/globals.css +250 -250
  219. package/styles/mixins/_focus.scss +7 -7
  220. package/styles/mixins/_layout.scss +32 -32
  221. package/styles/mixins/_reset.scss +10 -10
  222. package/styles/mixins/_scrollbar.scss +31 -31
  223. package/styles/mixins/_text.scss +48 -48
  224. package/styles/rillple.css +16 -16
  225. package/styles/scrollbar.css +41 -41
  226. package/styles/themes/_dark.scss +191 -191
  227. package/styles/themes/_font.scss +69 -79
  228. package/styles/themes/_index.scss +5 -5
  229. package/styles/themes/_light.scss +190 -190
  230. package/styles/themes/_radius.scss +9 -9
  231. package/styles/themes/_size.scss +68 -68
  232. package/styles/themes.css +66 -66
  233. package/styles/utilities/_animation.scss +57 -57
  234. package/styles/utilities/_tips.scss +9 -9
  235. package/tab/TabBar.tsx +85 -0
  236. package/tab/TabNav.tsx +103 -0
  237. package/tab/TabNavItem.tsx +80 -0
  238. package/tab/TabPanel.tsx +42 -0
  239. package/tab/Tabs.tsx +71 -0
  240. package/tab/defaultProps.ts +19 -0
  241. package/tab/index.ts +7 -0
  242. package/tab/style/index.js +1 -0
  243. package/tab/type.ts +125 -0
  244. package/tab/useTabClass.ts +20 -0
  245. package/table/Cell.tsx +109 -0
  246. package/table/TBody.tsx +77 -0
  247. package/table/THead.tsx +63 -0
  248. package/table/TR.tsx +78 -0
  249. package/table/Table.tsx +73 -0
  250. package/table/defaultProps.ts +14 -0
  251. package/table/hooks/index.ts +4 -0
  252. package/table/hooks/useTableClassName.ts +63 -0
  253. package/table/hooks/useTableStyle.ts +93 -0
  254. package/table/index.ts +7 -0
  255. package/table/style/css.js +1 -0
  256. package/table/style/index.js +1 -0
  257. package/table/type.ts +192 -0
  258. package/tag/Tag.tsx +1 -1
  259. package/tag-input/hooks/useTagList.tsx +1 -1
  260. package/utils/dom.ts +4 -0
  261. package/utils/forwardRefWithStatics.ts +1 -4
  262. package/utils/input-number/large-number.ts +423 -0
  263. package/utils/input-number/number.ts +257 -0
  264. package/utils/isFragment.ts +6 -6
  265. package/utils/log/index.ts +3 -0
  266. package/utils/log/log.ts +30 -0
  267. package/utils/log/types.ts +12 -0
  268. package/utils/number.ts +21 -0
  269. package/utils/scroll.ts +26 -0
  270. package/utils/style.ts +2 -4
package/select/type.ts CHANGED
@@ -1,382 +1,382 @@
1
- /* eslint-disable */
2
-
3
- /**
4
- * 该文件为脚本自动生成文件,请勿随意修改。如需修改请联系 PMC
5
- * */
6
-
7
- import { InputProps } from '../input';
8
- import { PopupProps } from '../popup';
9
- import { SelectInputProps } from '../select-input';
10
- import { TagInputProps } from '../tag-input';
11
- import { TagProps } from '../tag';
12
- import { SelectInputValueChangeContext } from '../select-input';
13
- import { PopupVisibleChangeContext } from '../popup';
14
- import {
15
- PlainObject,
16
- TNode,
17
- TElement,
18
- SizeEnum,
19
- InfinityScroll,
20
- } from '../common';
21
- import { MouseEvent, KeyboardEvent, FocusEvent } from 'react';
22
-
23
- export interface TdSelectProps<T extends SelectOption = SelectOption> {
24
- /**
25
- * 宽度随内容自适应
26
- * @default false
27
- */
28
- autoWidth?: boolean;
29
- /**
30
- * 自动聚焦
31
- * @default false
32
- */
33
- autofocus?: boolean;
34
- /**
35
- * 无边框模式
36
- * @default false
37
- */
38
- borderless?: boolean;
39
- /**
40
- * 是否可以清空选项
41
- * @default false
42
- */
43
- clearable?: boolean;
44
- /**
45
- * 多选情况下,用于设置折叠项内容,默认为 `+N`。如果需要悬浮就显示其他内容,可以使用 collapsedItems 自定义。`value` 表示当前存在的所有标签,`collapsedSelectedItems` 表示折叠的标签,泛型 `T` 继承 `SelectOption`,表示选项数据;`count` 表示折叠的数量, `onClose` 表示移除标签
46
- */
47
- collapsedItems?: TNode<{
48
- value: T[];
49
- collapsedSelectedItems: T[];
50
- count: number;
51
- onClose: (context: { index: number; e?: MouseEvent }) => void;
52
- }>;
53
- /**
54
- * 是否允许用户创建新条目,需配合 filterable 使用
55
- * @default false
56
- */
57
- creatable?: boolean;
58
- /**
59
- * 是否禁用组件
60
- */
61
- disabled?: boolean;
62
- /**
63
- * 当下拉列表为空时显示的内容
64
- */
65
- empty?: TNode;
66
- /**
67
- * 自定义搜索规则,用于对现有数据进行搜索,判断是否过滤某一项数据。参数 `filterWords` 表示搜索词,`option`表示单个选项内容,返回值为 `true` 保留该选项,返回值为 `false` 则隐藏该选项。使用该方法时无需设置 `filterable`
68
- */
69
- filter?: (filterWords: string, option: T) => boolean | Promise<boolean>;
70
- /**
71
- * 是否可搜索,默认搜索规则不区分大小写,全文本任意位置匹配。如果默认搜索规则不符合业务需求,可以更为使用 `filter` 自定义过滤规则
72
- */
73
- filterable?: boolean;
74
- /**
75
- * 透传 Input 输入框组件的全部属性
76
- */
77
- inputProps?: InputProps;
78
- /**
79
- * 输入框的值
80
- */
81
- inputValue?: string;
82
- /**
83
- * 输入框的值,非受控属性
84
- */
85
- defaultInputValue?: string;
86
- /**
87
- * 用来定义 value / label / disabled 在 `options` 中对应的字段别名
88
- */
89
- keys?: SelectKeysType;
90
- /**
91
- * 左侧文本
92
- */
93
- label?: TNode;
94
- /**
95
- * 是否为加载状态
96
- * @default false
97
- */
98
- loading?: boolean;
99
- /**
100
- * 远程加载时显示的文字,支持自定义。如加上超链接
101
- */
102
- loadingText?: TNode;
103
- /**
104
- * 用于控制多选数量,值为 0 则不限制
105
- * @default 0
106
- */
107
- max?: number;
108
- /**
109
- * 最小折叠数量,用于多选情况下折叠选中项,超出该数值的选中项折叠。值为 0 则表示不折叠
110
- * @default 0
111
- */
112
- minCollapsedNum?: number;
113
- /**
114
- * 是否允许多选
115
- * @default false
116
- */
117
- multiple?: boolean;
118
- /**
119
- * 数据化配置选项内容
120
- */
121
- options?: Array<T>;
122
- /**
123
- * 下拉选项布局方式,有纵向排列和横向排列两种,默认纵向排列
124
- * @default vertical
125
- */
126
- optionsLayout?: 'vertical' | 'horizontal';
127
- /**
128
- * 面板内的底部内容
129
- */
130
- panelBottomContent?: TNode;
131
- /**
132
- * 面板内的顶部内容
133
- */
134
- panelTopContent?: TNode;
135
- /**
136
- * 占位符
137
- */
138
- placeholder?: string;
139
- /**
140
- * 透传给 popup 组件的全部属性
141
- */
142
- popupProps?: PopupProps;
143
- /**
144
- * 是否显示下拉框
145
- */
146
- popupVisible?: boolean;
147
- /**
148
- * 是否显示下拉框,非受控属性
149
- */
150
- defaultPopupVisible?: boolean;
151
- /**
152
- * 组件前置图标
153
- */
154
- prefixIcon?: TElement;
155
- /**
156
- * 只读状态,值为真会隐藏输入框,且无法打开下拉框
157
- * @default false
158
- */
159
- readonly?: boolean;
160
- /**
161
- * 多选且可搜索时,是否在选中一个选项后保留当前的搜索关键词
162
- * @default false
163
- */
164
- reserveKeyword?: boolean;
165
- /**
166
- * 懒加载和虚拟滚动。为保证组件收益最大化,当数据量小于阈值 `scroll.threshold` 时,无论虚拟滚动的配置是否存在,组件内部都不会开启虚拟滚动,`scroll.threshold` 默认为 `100`
167
- */
168
- scroll?: InfinityScroll;
169
- /**
170
- * 透传 SelectInput 筛选器输入框组件的全部属性
171
- */
172
- selectInputProps?: SelectInputProps;
173
- /**
174
- * 是否显示右侧箭头,默认显示
175
- * @default true
176
- */
177
- showArrow?: boolean;
178
- /**
179
- * 组件尺寸
180
- * @default medium
181
- */
182
- size?: SizeEnum;
183
- /**
184
- * 输入框状态
185
- * @default default
186
- */
187
- status?: 'default' | 'success' | 'warning' | 'error';
188
- /**
189
- * 后置图标前的后置内容
190
- */
191
- suffix?: TNode;
192
- /**
193
- * 组件后置图标
194
- */
195
- suffixIcon?: TElement;
196
- /**
197
- * 透传 TagInput 标签输入框组件的全部属性
198
- */
199
- tagInputProps?: TagInputProps;
200
- /**
201
- * 透传 Tag 标签组件全部属性
202
- */
203
- tagProps?: TagProps;
204
- /**
205
- * 输入框下方提示文本,会根据不同的 `status` 呈现不同的样式
206
- */
207
- tips?: TNode;
208
- /**
209
- * 选中值
210
- */
211
- value?: SelectValue;
212
- /**
213
- * 选中值,非受控属性
214
- */
215
- defaultValue?: SelectValue;
216
- /**
217
- * 自定义选中项呈现的内容
218
- */
219
- valueDisplay?:
220
- | string
221
- | TNode<{
222
- value: SelectValue;
223
- onClose: (index: number) => void;
224
- displayValue?: SelectValue;
225
- }>;
226
- /**
227
- * 用于控制选中值的类型。假设数据选项为:`[{ label: '姓名', value: 'name' }]`,value 表示值仅返回数据选项中的 value, object 表示值返回全部数据。
228
- * @default value
229
- */
230
- valueType?: 'value' | 'object';
231
- /**
232
- * 输入框失去焦点时触发
233
- */
234
- onBlur?: (context: {
235
- value: SelectValue;
236
- e: FocusEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>;
237
- }) => void;
238
- /**
239
- * 选中值变化时触发。`context.trigger` 表示触发变化的来源;`context.selectedOptions` 表示选中值的完整对象,数组长度一定和 `value` 相同;`context.option` 表示当前操作的选项,不一定存在
240
- */
241
- onChange?: (
242
- value: SelectValue,
243
- context: {
244
- option?: T;
245
- selectedOptions: T[];
246
- trigger: SelectValueChangeTrigger;
247
- e?:
248
- | MouseEvent<SVGElement | HTMLDivElement | HTMLLIElement>
249
- | KeyboardEvent<HTMLInputElement>;
250
- },
251
- ) => void;
252
- /**
253
- * 点击清除按钮时触发
254
- */
255
- onClear?: (context: { e: MouseEvent<HTMLDivElement> }) => void;
256
- /**
257
- * 当选择新创建的条目时触发
258
- */
259
- onCreate?: (value: string | number) => void;
260
- /**
261
- * 回车键按下时触发。`inputValue` 表示输入框的值,`value` 表示选中值
262
- */
263
- onEnter?: (context: {
264
- inputValue: string;
265
- e: KeyboardEvent<HTMLDivElement>;
266
- value: SelectValue;
267
- }) => void;
268
- /**
269
- * 输入框获得焦点时触发
270
- */
271
- onFocus?: (context: {
272
- value: SelectValue;
273
- e: FocusEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>;
274
- }) => void;
275
- /**
276
- * 输入框值发生变化时触发,`context.trigger` 表示触发输入框值变化的来源:文本输入触发、清除按钮触发、失去焦点等
277
- */
278
- onInputChange?: (
279
- value: string,
280
- context?: SelectInputValueChangeContext,
281
- ) => void;
282
- /**
283
- * 下拉框显示或隐藏时触发
284
- */
285
- onPopupVisibleChange?: (
286
- visible: boolean,
287
- context: PopupVisibleChangeContext,
288
- ) => void;
289
- /**
290
- * 多选模式下,选中数据被移除时触发
291
- */
292
- onRemove?: (options: SelectRemoveContext<T>) => void;
293
- /**
294
- * 输入值变化时,触发搜索事件。主要用于远程搜索新数据
295
- */
296
- onSearch?: (
297
- filterWords: string,
298
- context: { e: KeyboardEvent<HTMLDivElement> },
299
- ) => void;
300
- }
301
-
302
- export interface TdOptionProps {
303
- /**
304
- * 当前选项是否为全选,全选可以在顶部,也可以在底部。点击当前选项会选中禁用态除外的全部选项,即使是分组选择器也会选中全部选项
305
- * @default false
306
- */
307
- checkAll?: boolean;
308
- /**
309
- * 用于定义复杂的选项内容,同 content
310
- */
311
- children?: TNode;
312
- /**
313
- * 用于定义复杂的选项内容
314
- */
315
- content?: TNode;
316
- /**
317
- * 是否禁用该选项
318
- * @default false
319
- */
320
- disabled?: boolean;
321
- /**
322
- * 选项名称
323
- * @default ''
324
- */
325
- label?: string;
326
- /**
327
- * 选项标题,在选项过长时hover选项展示
328
- * @default ''
329
- */
330
- title?: string;
331
- /**
332
- * 选项值
333
- */
334
- value?: string | number;
335
- }
336
-
337
- export interface TdOptionGroupProps {
338
- /**
339
- * 是否显示分隔线
340
- * @default true
341
- */
342
- divider?: boolean;
343
- /**
344
- * 分组别名
345
- * @default ''
346
- */
347
- label?: string;
348
- }
349
-
350
- export interface SelectKeysType {
351
- value?: string;
352
- label?: string;
353
- disabled?: string;
354
- }
355
-
356
- export type SelectValue<T extends SelectOption = SelectOption> =
357
- | string
358
- | number
359
- | boolean
360
- | T
361
- | Array<SelectValue<T>>;
362
-
363
- export type SelectValueChangeTrigger =
364
- | 'clear'
365
- | 'tag-remove'
366
- | 'backspace'
367
- | 'check'
368
- | 'uncheck'
369
- | 'default';
370
-
371
- export interface SelectRemoveContext<T> {
372
- value: SelectValue;
373
- data: T;
374
- e: MouseEvent<HTMLDivElement | HTMLLIElement> | KeyboardEvent<HTMLDivElement>;
375
- }
376
-
377
- export type SelectOption = TdOptionProps | SelectOptionGroup | PlainObject;
378
-
379
- export interface SelectOptionGroup extends TdOptionGroupProps {
380
- group: string;
381
- children: Array<TdOptionProps>;
382
- }
1
+ /* eslint-disable */
2
+
3
+ /**
4
+ * 该文件为脚本自动生成文件,请勿随意修改。如需修改请联系 PMC
5
+ * */
6
+
7
+ import { InputProps } from '../input';
8
+ import { PopupProps } from '../popup';
9
+ import { SelectInputProps } from '../select-input';
10
+ import { TagInputProps } from '../tag-input';
11
+ import { TagProps } from '../tag';
12
+ import { SelectInputValueChangeContext } from '../select-input';
13
+ import { PopupVisibleChangeContext } from '../popup';
14
+ import {
15
+ PlainObject,
16
+ TNode,
17
+ TElement,
18
+ SizeEnum,
19
+ InfinityScroll,
20
+ } from '../common';
21
+ import { MouseEvent, KeyboardEvent, FocusEvent } from 'react';
22
+
23
+ export interface TdSelectProps<T extends SelectOption = SelectOption> {
24
+ /**
25
+ * 宽度随内容自适应
26
+ * @default false
27
+ */
28
+ autoWidth?: boolean;
29
+ /**
30
+ * 自动聚焦
31
+ * @default false
32
+ */
33
+ autofocus?: boolean;
34
+ /**
35
+ * 无边框模式
36
+ * @default false
37
+ */
38
+ borderless?: boolean;
39
+ /**
40
+ * 是否可以清空选项
41
+ * @default false
42
+ */
43
+ clearable?: boolean;
44
+ /**
45
+ * 多选情况下,用于设置折叠项内容,默认为 `+N`。如果需要悬浮就显示其他内容,可以使用 collapsedItems 自定义。`value` 表示当前存在的所有标签,`collapsedSelectedItems` 表示折叠的标签,泛型 `T` 继承 `SelectOption`,表示选项数据;`count` 表示折叠的数量, `onClose` 表示移除标签
46
+ */
47
+ collapsedItems?: TNode<{
48
+ value: T[];
49
+ collapsedSelectedItems: T[];
50
+ count: number;
51
+ onClose: (context: { index: number; e?: MouseEvent }) => void;
52
+ }>;
53
+ /**
54
+ * 是否允许用户创建新条目,需配合 filterable 使用
55
+ * @default false
56
+ */
57
+ creatable?: boolean;
58
+ /**
59
+ * 是否禁用组件
60
+ */
61
+ disabled?: boolean;
62
+ /**
63
+ * 当下拉列表为空时显示的内容
64
+ */
65
+ empty?: TNode;
66
+ /**
67
+ * 自定义搜索规则,用于对现有数据进行搜索,判断是否过滤某一项数据。参数 `filterWords` 表示搜索词,`option`表示单个选项内容,返回值为 `true` 保留该选项,返回值为 `false` 则隐藏该选项。使用该方法时无需设置 `filterable`
68
+ */
69
+ filter?: (filterWords: string, option: T) => boolean | Promise<boolean>;
70
+ /**
71
+ * 是否可搜索,默认搜索规则不区分大小写,全文本任意位置匹配。如果默认搜索规则不符合业务需求,可以更为使用 `filter` 自定义过滤规则
72
+ */
73
+ filterable?: boolean;
74
+ /**
75
+ * 透传 Input 输入框组件的全部属性
76
+ */
77
+ inputProps?: InputProps;
78
+ /**
79
+ * 输入框的值
80
+ */
81
+ inputValue?: string;
82
+ /**
83
+ * 输入框的值,非受控属性
84
+ */
85
+ defaultInputValue?: string;
86
+ /**
87
+ * 用来定义 value / label / disabled 在 `options` 中对应的字段别名
88
+ */
89
+ keys?: SelectKeysType;
90
+ /**
91
+ * 左侧文本
92
+ */
93
+ label?: TNode;
94
+ /**
95
+ * 是否为加载状态
96
+ * @default false
97
+ */
98
+ loading?: boolean;
99
+ /**
100
+ * 远程加载时显示的文字,支持自定义。如加上超链接
101
+ */
102
+ loadingText?: TNode;
103
+ /**
104
+ * 用于控制多选数量,值为 0 则不限制
105
+ * @default 0
106
+ */
107
+ max?: number;
108
+ /**
109
+ * 最小折叠数量,用于多选情况下折叠选中项,超出该数值的选中项折叠。值为 0 则表示不折叠
110
+ * @default 0
111
+ */
112
+ minCollapsedNum?: number;
113
+ /**
114
+ * 是否允许多选
115
+ * @default false
116
+ */
117
+ multiple?: boolean;
118
+ /**
119
+ * 数据化配置选项内容
120
+ */
121
+ options?: Array<T>;
122
+ /**
123
+ * 下拉选项布局方式,有纵向排列和横向排列两种,默认纵向排列
124
+ * @default vertical
125
+ */
126
+ optionsLayout?: 'vertical' | 'horizontal';
127
+ /**
128
+ * 面板内的底部内容
129
+ */
130
+ panelBottomContent?: TNode;
131
+ /**
132
+ * 面板内的顶部内容
133
+ */
134
+ panelTopContent?: TNode;
135
+ /**
136
+ * 占位符
137
+ */
138
+ placeholder?: string;
139
+ /**
140
+ * 透传给 popup 组件的全部属性
141
+ */
142
+ popupProps?: PopupProps;
143
+ /**
144
+ * 是否显示下拉框
145
+ */
146
+ popupVisible?: boolean;
147
+ /**
148
+ * 是否显示下拉框,非受控属性
149
+ */
150
+ defaultPopupVisible?: boolean;
151
+ /**
152
+ * 组件前置图标
153
+ */
154
+ prefixIcon?: TElement;
155
+ /**
156
+ * 只读状态,值为真会隐藏输入框,且无法打开下拉框
157
+ * @default false
158
+ */
159
+ readonly?: boolean;
160
+ /**
161
+ * 多选且可搜索时,是否在选中一个选项后保留当前的搜索关键词
162
+ * @default false
163
+ */
164
+ reserveKeyword?: boolean;
165
+ /**
166
+ * 懒加载和虚拟滚动。为保证组件收益最大化,当数据量小于阈值 `scroll.threshold` 时,无论虚拟滚动的配置是否存在,组件内部都不会开启虚拟滚动,`scroll.threshold` 默认为 `100`
167
+ */
168
+ scroll?: InfinityScroll;
169
+ /**
170
+ * 透传 SelectInput 筛选器输入框组件的全部属性
171
+ */
172
+ selectInputProps?: SelectInputProps;
173
+ /**
174
+ * 是否显示右侧箭头,默认显示
175
+ * @default true
176
+ */
177
+ showArrow?: boolean;
178
+ /**
179
+ * 组件尺寸
180
+ * @default medium
181
+ */
182
+ size?: SizeEnum;
183
+ /**
184
+ * 输入框状态
185
+ * @default default
186
+ */
187
+ status?: 'default' | 'success' | 'warning' | 'error';
188
+ /**
189
+ * 后置图标前的后置内容
190
+ */
191
+ suffix?: TNode;
192
+ /**
193
+ * 组件后置图标
194
+ */
195
+ suffixIcon?: TElement;
196
+ /**
197
+ * 透传 TagInput 标签输入框组件的全部属性
198
+ */
199
+ tagInputProps?: TagInputProps;
200
+ /**
201
+ * 透传 Tag 标签组件全部属性
202
+ */
203
+ tagProps?: TagProps;
204
+ /**
205
+ * 输入框下方提示文本,会根据不同的 `status` 呈现不同的样式
206
+ */
207
+ tips?: TNode;
208
+ /**
209
+ * 选中值
210
+ */
211
+ value?: SelectValue;
212
+ /**
213
+ * 选中值,非受控属性
214
+ */
215
+ defaultValue?: SelectValue;
216
+ /**
217
+ * 自定义选中项呈现的内容
218
+ */
219
+ valueDisplay?:
220
+ | string
221
+ | TNode<{
222
+ value: SelectValue;
223
+ onClose: (index: number) => void;
224
+ displayValue?: SelectValue;
225
+ }>;
226
+ /**
227
+ * 用于控制选中值的类型。假设数据选项为:`[{ label: '姓名', value: 'name' }]`,value 表示值仅返回数据选项中的 value, object 表示值返回全部数据。
228
+ * @default value
229
+ */
230
+ valueType?: 'value' | 'object';
231
+ /**
232
+ * 输入框失去焦点时触发
233
+ */
234
+ onBlur?: (context: {
235
+ value: SelectValue;
236
+ e: FocusEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>;
237
+ }) => void;
238
+ /**
239
+ * 选中值变化时触发。`context.trigger` 表示触发变化的来源;`context.selectedOptions` 表示选中值的完整对象,数组长度一定和 `value` 相同;`context.option` 表示当前操作的选项,不一定存在
240
+ */
241
+ onChange?: (
242
+ value: SelectValue,
243
+ context: {
244
+ option?: T;
245
+ selectedOptions: T[];
246
+ trigger: SelectValueChangeTrigger;
247
+ e?:
248
+ | MouseEvent<SVGElement | HTMLDivElement | HTMLLIElement>
249
+ | KeyboardEvent<HTMLInputElement>;
250
+ },
251
+ ) => void;
252
+ /**
253
+ * 点击清除按钮时触发
254
+ */
255
+ onClear?: (context: { e: MouseEvent<HTMLDivElement> }) => void;
256
+ /**
257
+ * 当选择新创建的条目时触发
258
+ */
259
+ onCreate?: (value: string | number) => void;
260
+ /**
261
+ * 回车键按下时触发。`inputValue` 表示输入框的值,`value` 表示选中值
262
+ */
263
+ onEnter?: (context: {
264
+ inputValue: string;
265
+ e: KeyboardEvent<HTMLDivElement>;
266
+ value: SelectValue;
267
+ }) => void;
268
+ /**
269
+ * 输入框获得焦点时触发
270
+ */
271
+ onFocus?: (context: {
272
+ value: SelectValue;
273
+ e: FocusEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>;
274
+ }) => void;
275
+ /**
276
+ * 输入框值发生变化时触发,`context.trigger` 表示触发输入框值变化的来源:文本输入触发、清除按钮触发、失去焦点等
277
+ */
278
+ onInputChange?: (
279
+ value: string,
280
+ context?: SelectInputValueChangeContext,
281
+ ) => void;
282
+ /**
283
+ * 下拉框显示或隐藏时触发
284
+ */
285
+ onPopupVisibleChange?: (
286
+ visible: boolean,
287
+ context: PopupVisibleChangeContext,
288
+ ) => void;
289
+ /**
290
+ * 多选模式下,选中数据被移除时触发
291
+ */
292
+ onRemove?: (options: SelectRemoveContext<T>) => void;
293
+ /**
294
+ * 输入值变化时,触发搜索事件。主要用于远程搜索新数据
295
+ */
296
+ onSearch?: (
297
+ filterWords: string,
298
+ context: { e: KeyboardEvent<HTMLDivElement> },
299
+ ) => void;
300
+ }
301
+
302
+ export interface TdOptionProps {
303
+ /**
304
+ * 当前选项是否为全选,全选可以在顶部,也可以在底部。点击当前选项会选中禁用态除外的全部选项,即使是分组选择器也会选中全部选项
305
+ * @default false
306
+ */
307
+ checkAll?: boolean;
308
+ /**
309
+ * 用于定义复杂的选项内容,同 content
310
+ */
311
+ children?: TNode;
312
+ /**
313
+ * 用于定义复杂的选项内容
314
+ */
315
+ content?: TNode;
316
+ /**
317
+ * 是否禁用该选项
318
+ * @default false
319
+ */
320
+ disabled?: boolean;
321
+ /**
322
+ * 选项名称
323
+ * @default ''
324
+ */
325
+ label?: string;
326
+ /**
327
+ * 选项标题,在选项过长时hover选项展示
328
+ * @default ''
329
+ */
330
+ title?: string;
331
+ /**
332
+ * 选项值
333
+ */
334
+ value?: string | number;
335
+ }
336
+
337
+ export interface TdOptionGroupProps {
338
+ /**
339
+ * 是否显示分隔线
340
+ * @default true
341
+ */
342
+ divider?: boolean;
343
+ /**
344
+ * 分组别名
345
+ * @default ''
346
+ */
347
+ label?: string;
348
+ }
349
+
350
+ export interface SelectKeysType {
351
+ value?: string;
352
+ label?: string;
353
+ disabled?: string;
354
+ }
355
+
356
+ export type SelectValue<T extends SelectOption = SelectOption> =
357
+ | string
358
+ | number
359
+ | boolean
360
+ | T
361
+ | Array<SelectValue<T>>;
362
+
363
+ export type SelectValueChangeTrigger =
364
+ | 'clear'
365
+ | 'tag-remove'
366
+ | 'backspace'
367
+ | 'check'
368
+ | 'uncheck'
369
+ | 'default';
370
+
371
+ export interface SelectRemoveContext<T> {
372
+ value: SelectValue;
373
+ data: T;
374
+ e: MouseEvent<HTMLDivElement | HTMLLIElement> | KeyboardEvent<HTMLDivElement>;
375
+ }
376
+
377
+ export type SelectOption = TdOptionProps | SelectOptionGroup | PlainObject;
378
+
379
+ export interface SelectOptionGroup extends TdOptionGroupProps {
380
+ group: string;
381
+ children: Array<TdOptionProps>;
382
+ }