@tendaui/components 1.0.0

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 (245) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +176 -0
  3. package/alert/Alert.tsx +147 -0
  4. package/alert/defaultProps.ts +3 -0
  5. package/alert/index.ts +9 -0
  6. package/alert/style/css.js +1 -0
  7. package/alert/style/index.js +1 -0
  8. package/alert/type.ts +44 -0
  9. package/badge/Badge.tsx +85 -0
  10. package/badge/defaultProps.ts +10 -0
  11. package/badge/index.ts +9 -0
  12. package/badge/style/css.js +1 -0
  13. package/badge/style/index.js +1 -0
  14. package/badge/type.ts +51 -0
  15. package/button/Button.tsx +95 -0
  16. package/button/defaultProps.ts +13 -0
  17. package/button/index.ts +7 -0
  18. package/button/style/css.js +1 -0
  19. package/button/style/index.js +1 -0
  20. package/button/type.ts +82 -0
  21. package/checkbox/Checkbox.tsx +19 -0
  22. package/checkbox/CheckboxGroup.tsx +207 -0
  23. package/checkbox/defaultProps.ts +14 -0
  24. package/checkbox/index.ts +10 -0
  25. package/checkbox/style/css.js +1 -0
  26. package/checkbox/style/index.js +1 -0
  27. package/checkbox/type.ts +117 -0
  28. package/common/Check.tsx +131 -0
  29. package/common/FakeArrow.tsx +36 -0
  30. package/common/PluginContainer.tsx +21 -0
  31. package/common/Portal.tsx +67 -0
  32. package/common.ts +76 -0
  33. package/config-provider/ConfigContext.tsx +21 -0
  34. package/config-provider/ConfigProvider.tsx +53 -0
  35. package/config-provider/index.ts +9 -0
  36. package/config-provider/type.ts +1062 -0
  37. package/dialog/Dialog.tsx +254 -0
  38. package/dialog/DialogCard.tsx +152 -0
  39. package/dialog/defaultProps.ts +25 -0
  40. package/dialog/hooks/useDialogDrag.ts +50 -0
  41. package/dialog/hooks/useDialogEsc.ts +31 -0
  42. package/dialog/hooks/useDialogPosition.ts +36 -0
  43. package/dialog/hooks/useLockStyle.ts +54 -0
  44. package/dialog/index.ts +13 -0
  45. package/dialog/plugin.tsx +78 -0
  46. package/dialog/style/css.js +1 -0
  47. package/dialog/style/index.js +1 -0
  48. package/dialog/type.ts +241 -0
  49. package/dialog/utils.ts +4 -0
  50. package/form/Form.tsx +136 -0
  51. package/form/FormContext.tsx +64 -0
  52. package/form/FormItem.tsx +554 -0
  53. package/form/FormList.tsx +303 -0
  54. package/form/const.ts +6 -0
  55. package/form/defaultProps.ts +26 -0
  56. package/form/formModel.ts +117 -0
  57. package/form/hooks/interface.ts +20 -0
  58. package/form/hooks/useForm.ts +122 -0
  59. package/form/hooks/useFormItemInitialData.ts +95 -0
  60. package/form/hooks/useFormItemStyle.tsx +122 -0
  61. package/form/hooks/useInstance.tsx +275 -0
  62. package/form/hooks/useWatch.ts +42 -0
  63. package/form/index.ts +11 -0
  64. package/form/style/css.js +1 -0
  65. package/form/style/index.js +1 -0
  66. package/form/type.ts +519 -0
  67. package/form/utils/index.ts +69 -0
  68. package/hooks/useAttach.ts +24 -0
  69. package/hooks/useCommonClassName.ts +45 -0
  70. package/hooks/useConfig.ts +3 -0
  71. package/hooks/useControlled.ts +39 -0
  72. package/hooks/useDefaultProps.ts +16 -0
  73. package/hooks/useDomCallback.ts +13 -0
  74. package/hooks/useDomRefCallback.ts +12 -0
  75. package/hooks/useDragSorter.tsx +151 -0
  76. package/hooks/useEventCallback.ts +47 -0
  77. package/hooks/useGlobalConfig.ts +14 -0
  78. package/hooks/useGlobalIcon.ts +14 -0
  79. package/hooks/useLastest.ts +13 -0
  80. package/hooks/useLayoutEffect.ts +7 -0
  81. package/hooks/useMouseEvent.ts +142 -0
  82. package/hooks/useMutationObserver.ts +56 -0
  83. package/hooks/usePopper.ts +189 -0
  84. package/hooks/useRipple.ts +0 -0
  85. package/hooks/useSetState.ts +25 -0
  86. package/hooks/useVirtualScroll.ts +246 -0
  87. package/hooks/useWindowSize.ts +31 -0
  88. package/index.ts +70 -0
  89. package/input/Input.tsx +383 -0
  90. package/input/InputGroup.tsx +29 -0
  91. package/input/defaultProps.ts +22 -0
  92. package/input/index.ts +11 -0
  93. package/input/style/css.js +1 -0
  94. package/input/style/index.js +1 -0
  95. package/input/type.ts +219 -0
  96. package/loading/Gradient.tsx +36 -0
  97. package/loading/Loading.tsx +169 -0
  98. package/loading/circleAdapter.ts +44 -0
  99. package/loading/defaultProps.ts +12 -0
  100. package/loading/index.ts +13 -0
  101. package/loading/style/css.js +1 -0
  102. package/loading/style/index.js +1 -0
  103. package/loading/type.ts +71 -0
  104. package/loading/utils/setStyle.ts +13 -0
  105. package/myform/index.ts +0 -0
  106. package/notification/Notify.ts +24 -0
  107. package/notification/NotifyContainer.tsx +90 -0
  108. package/notification/NotifyContext.tsx +173 -0
  109. package/notification/NotifyItem.tsx +121 -0
  110. package/notification/index.ts +3 -0
  111. package/notification/style/css.js +1 -0
  112. package/notification/style/index.js +1 -0
  113. package/notification/type.ts +23 -0
  114. package/package.json +52 -0
  115. package/popup/Popup.tsx +264 -0
  116. package/popup/defaultProps.ts +13 -0
  117. package/popup/hooks/useTrigger.ts +276 -0
  118. package/popup/index.ts +6 -0
  119. package/popup/style/css.js +1 -0
  120. package/popup/style/index.js +1 -0
  121. package/popup/type.ts +130 -0
  122. package/portal/Portal.tsx +63 -0
  123. package/portal/index.ts +1 -0
  124. package/select/Option.tsx +162 -0
  125. package/select/OptionGroup.tsx +30 -0
  126. package/select/PopupContent.tsx +271 -0
  127. package/select/Select.tsx +586 -0
  128. package/select/defaultProps.ts +27 -0
  129. package/select/hooks/useOptions.ts +120 -0
  130. package/select/hooks/usePanelVirtualScroll.ts +111 -0
  131. package/select/index.ts +9 -0
  132. package/select/style/css.js +1 -0
  133. package/select/style/index.js +2 -0
  134. package/select/type.ts +382 -0
  135. package/select/utils/helper.ts +256 -0
  136. package/select-input/SelectInput.tsx +98 -0
  137. package/select-input/defaultProps.ts +15 -0
  138. package/select-input/hook/useMultiple.tsx +100 -0
  139. package/select-input/hook/useOverlayInnerStyle.ts +84 -0
  140. package/select-input/hook/useSingle.tsx +112 -0
  141. package/select-input/index.ts +6 -0
  142. package/select-input/interface.ts +18 -0
  143. package/select-input/style/css.js +1 -0
  144. package/select-input/style/index.js +1 -0
  145. package/select-input/type.ts +280 -0
  146. package/space/defaultProps.ts +0 -0
  147. package/space/index.ts +0 -0
  148. package/space/type.ts +0 -0
  149. package/style/index.js +2 -0
  150. package/styles/_global.scss +39 -0
  151. package/styles/_vars.scss +386 -0
  152. package/styles/components/alert/_index.scss +175 -0
  153. package/styles/components/alert/_vars.scss +39 -0
  154. package/styles/components/badge/_index.scss +70 -0
  155. package/styles/components/badge/_vars.scss +25 -0
  156. package/styles/components/button/_index.scss +511 -0
  157. package/styles/components/button/_mixins.scss +39 -0
  158. package/styles/components/button/_vars.scss +122 -0
  159. package/styles/components/checkbox/_index.scss +158 -0
  160. package/styles/components/checkbox/_mixin.scss +0 -0
  161. package/styles/components/checkbox/_var.scss +60 -0
  162. package/styles/components/dialog/_animate.scss +135 -0
  163. package/styles/components/dialog/_index.scss +311 -0
  164. package/styles/components/dialog/_mixins.scss +0 -0
  165. package/styles/components/dialog/_vars.scss +59 -0
  166. package/styles/components/form/_index.scss +174 -0
  167. package/styles/components/form/_mixins.scss +76 -0
  168. package/styles/components/form/_vars.scss +100 -0
  169. package/styles/components/input/_index.scss +349 -0
  170. package/styles/components/input/_map.scss +0 -0
  171. package/styles/components/input/_mixins.scss +116 -0
  172. package/styles/components/input/_vars.scss +134 -0
  173. package/styles/components/loading/_index.scss +112 -0
  174. package/styles/components/loading/_vars.scss +39 -0
  175. package/styles/components/notification/_index.scss +160 -0
  176. package/styles/components/notification/_mixins.scss +12 -0
  177. package/styles/components/notification/_vars.scss +59 -0
  178. package/styles/components/popup/_index.scss +82 -0
  179. package/styles/components/popup/_mixin.scss +149 -0
  180. package/styles/components/popup/_var.scss +31 -0
  181. package/styles/components/select/_index.scss +290 -0
  182. package/styles/components/select/_var.scss +65 -0
  183. package/styles/components/select-input/_index.scss +5 -0
  184. package/styles/components/select-input/_var.scss +3 -0
  185. package/styles/components/switch/_index.scss +279 -0
  186. package/styles/components/switch/_mixins.scss +0 -0
  187. package/styles/components/switch/_vars.scss +61 -0
  188. package/styles/components/tag/_index.scss +316 -0
  189. package/styles/components/tag/_var.scss +85 -0
  190. package/styles/components/tag-input/_index.scss +163 -0
  191. package/styles/components/tag-input/_vars.scss +16 -0
  192. package/styles/globals.css +250 -0
  193. package/styles/mixins/_focus.scss +7 -0
  194. package/styles/mixins/_layout.scss +32 -0
  195. package/styles/mixins/_reset.scss +10 -0
  196. package/styles/mixins/_scrollbar.scss +31 -0
  197. package/styles/mixins/_text.scss +48 -0
  198. package/styles/rillple.css +16 -0
  199. package/styles/scrollbar.css +42 -0
  200. package/styles/themes/_dark.scss +191 -0
  201. package/styles/themes/_font.scss +79 -0
  202. package/styles/themes/_index.scss +5 -0
  203. package/styles/themes/_light.scss +190 -0
  204. package/styles/themes/_radius.scss +9 -0
  205. package/styles/themes/_size.scss +68 -0
  206. package/styles/themes.css +66 -0
  207. package/styles/utilities/_animation.scss +57 -0
  208. package/styles/utilities/_tips.scss +9 -0
  209. package/switch/Switch.tsx +120 -0
  210. package/switch/defaultProps.ts +3 -0
  211. package/switch/index.ts +7 -0
  212. package/switch/style/css.js +1 -0
  213. package/switch/style/index.js +1 -0
  214. package/switch/type.ts +46 -0
  215. package/tag/Tag.tsx +149 -0
  216. package/tag/defaultProps.ts +19 -0
  217. package/tag/index.ts +8 -0
  218. package/tag/style/css.js +1 -0
  219. package/tag/style/index.js +1 -0
  220. package/tag/type.ts +170 -0
  221. package/tag-input/TagInput.tsx +215 -0
  222. package/tag-input/defaultProps.ts +15 -0
  223. package/tag-input/hooks/useHover.ts +28 -0
  224. package/tag-input/hooks/useTagList.tsx +131 -0
  225. package/tag-input/hooks/useTagScroll.ts +105 -0
  226. package/tag-input/index.ts +9 -0
  227. package/tag-input/style/css.js +1 -0
  228. package/tag-input/style/index.js +1 -0
  229. package/tag-input/type.ts +224 -0
  230. package/tag-input/useTagList.tsx +131 -0
  231. package/utils/composeRefs.ts +14 -0
  232. package/utils/dom.ts +29 -0
  233. package/utils/forwardRefWithStatics.ts +12 -0
  234. package/utils/getScrollbarWidth.ts +11 -0
  235. package/utils/helper.ts +161 -0
  236. package/utils/isFragment.ts +22 -0
  237. package/utils/listener.ts +37 -0
  238. package/utils/noop.ts +3 -0
  239. package/utils/parentTNode.ts +38 -0
  240. package/utils/parseTNode.ts +38 -0
  241. package/utils/react-render.ts +108 -0
  242. package/utils/ref.ts +6 -0
  243. package/utils/refs.ts +81 -0
  244. package/utils/style.ts +60 -0
  245. package/utils/transition.ts +28 -0
@@ -0,0 +1 @@
1
+ import "../../styles/components/select-input/_index.scss";
@@ -0,0 +1,280 @@
1
+ /* eslint-disable */
2
+
3
+ /**
4
+ * 该文件为脚本自动生成文件,请勿随意修改。如需修改请联系 PMC
5
+ * */
6
+
7
+ import { InputProps } from '../input';
8
+ import { PopupProps } from '../popup';
9
+ import {
10
+ TagInputProps,
11
+ TagInputValue,
12
+ TagInputChangeContext,
13
+ } from '../tag-input';
14
+ import { TagProps } from '../tag';
15
+ import { PopupVisibleChangeContext } from '../popup';
16
+ import { TNode, TElement, SizeEnum } from '../common';
17
+ import {
18
+ MouseEvent,
19
+ KeyboardEvent,
20
+ ClipboardEvent,
21
+ FocusEvent,
22
+ FormEvent,
23
+ CompositionEvent,
24
+ } from 'react';
25
+
26
+ export interface TdSelectInputProps {
27
+ /**
28
+ * 是否允许输入
29
+ * @default false
30
+ */
31
+ allowInput?: boolean;
32
+ /**
33
+ * 宽度随内容自适应
34
+ * @default false
35
+ */
36
+ autoWidth?: boolean;
37
+ /**
38
+ * 自动聚焦
39
+ * @default false
40
+ */
41
+ autofocus?: boolean;
42
+ /**
43
+ * 无边框模式
44
+ * @default false
45
+ */
46
+ borderless?: boolean;
47
+ /**
48
+ * 是否可清空
49
+ * @default false
50
+ */
51
+ clearable?: boolean;
52
+ /**
53
+ * 标签过多的情况下,折叠项内容,默认为 `+N`。如果需要悬浮就显示其他内容,可以使用 `collapsedItems` 自定义。`value` 表示所有标签值,`collapsedSelectedItems` 表示折叠标签值,`count` 表示折叠的数量,`onClose` 表示移除标签的事件回调
54
+ */
55
+ collapsedItems?: TNode<{
56
+ value: SelectInputValue;
57
+ collapsedSelectedItems: SelectInputValue;
58
+ count: number;
59
+ onClose: (context: { index: number; e?: MouseEvent }) => void;
60
+ }>;
61
+ /**
62
+ * 是否禁用
63
+ */
64
+ disabled?: boolean;
65
+ /**
66
+ * 透传 Input 输入框组件全部属性
67
+ */
68
+ inputProps?: InputProps;
69
+ /**
70
+ * 输入框的值
71
+ */
72
+ inputValue?: string;
73
+ /**
74
+ * 输入框的值,非受控属性
75
+ */
76
+ defaultInputValue?: string;
77
+ /**
78
+ * 定义字段别名,示例:`{ label: 'text', value: 'id', children: 'list' }`
79
+ */
80
+ keys?: SelectInputKeys;
81
+ /**
82
+ * 左侧文本
83
+ */
84
+ label?: TNode;
85
+ /**
86
+ * 是否处于加载状态
87
+ * @default false
88
+ */
89
+ loading?: boolean;
90
+ /**
91
+ * 最小折叠数量,用于标签数量过多的情况下折叠选中项,超出该数值的选中项折叠。值为 0 则表示不折叠
92
+ * @default 0
93
+ */
94
+ minCollapsedNum?: number;
95
+ /**
96
+ * 是否为多选模式,默认为单选
97
+ * @default false
98
+ */
99
+ multiple?: boolean;
100
+ /**
101
+ * 下拉框内容,可完全自定义
102
+ */
103
+ panel?: TNode;
104
+ /**
105
+ * 占位符
106
+ * @default ''
107
+ */
108
+ placeholder?: string;
109
+ /**
110
+ * 透传 Popup 浮层组件全部属性
111
+ */
112
+ popupProps?: PopupProps;
113
+ /**
114
+ * 是否显示下拉框
115
+ */
116
+ popupVisible?: boolean;
117
+ /**
118
+ * 是否显示下拉框,非受控属性
119
+ */
120
+ defaultPopupVisible?: boolean;
121
+ /**
122
+ * 组件前置图标
123
+ */
124
+ prefixIcon?: TElement;
125
+ /**
126
+ * 只读状态,值为真会隐藏输入框,且无法打开下拉框
127
+ * @default false
128
+ */
129
+ readonly?: boolean;
130
+ /**
131
+ * 多选且可搜索时,是否在选中一个选项后保留当前的搜索关键词
132
+ * @default false
133
+ */
134
+ reserveKeyword?: boolean;
135
+ /**
136
+ * 组件尺寸
137
+ * @default medium
138
+ */
139
+ size?: SizeEnum;
140
+ /**
141
+ * 输入框状态
142
+ * @default default
143
+ */
144
+ status?: 'default' | 'success' | 'warning' | 'error';
145
+ /**
146
+ * 后置图标前的后置内容
147
+ */
148
+ suffix?: TNode;
149
+ /**
150
+ * 组件后置图标
151
+ */
152
+ suffixIcon?: TElement;
153
+ /**
154
+ * 多选场景下,自定义选中标签的内部内容。注意和 `valueDisplay` 区分,`valueDisplay` 是用来定义全部标签内容,而非某一个标签
155
+ */
156
+ tag?: string | TNode<{ value: string | number }>;
157
+ /**
158
+ * 透传 TagInput 组件全部属性
159
+ */
160
+ tagInputProps?: TagInputProps;
161
+ /**
162
+ * 透传 Tag 标签组件全部属性
163
+ */
164
+ tagProps?: TagProps;
165
+ /**
166
+ * 输入框下方提示文本,会根据不同的 `status` 呈现不同的样式
167
+ */
168
+ tips?: TNode;
169
+ /**
170
+ * 全部标签值。值为数组表示多个标签,值为非数组表示单个数值
171
+ */
172
+ value?: SelectInputValue;
173
+ /**
174
+ * 自定义值呈现的全部内容,参数为所有标签的值
175
+ */
176
+ valueDisplay?:
177
+ | string
178
+ | TNode<{
179
+ value: TagInputValue;
180
+ onClose: (index: number, item?: any) => void;
181
+ }>;
182
+ /**
183
+ * 失去焦点时触发,`context.inputValue` 表示输入框的值;`context.tagInputValue` 表示标签输入框的值
184
+ */
185
+ onBlur?: (value: SelectInputValue, context: SelectInputBlurContext) => void;
186
+ /**
187
+ * 清空按钮点击时触发
188
+ */
189
+ onClear?: (context: { e: MouseEvent<SVGSVGElement> }) => void;
190
+ /**
191
+ * 按键按下 Enter 时触发
192
+ */
193
+ onEnter?: (
194
+ value: SelectInputValue,
195
+ context: {
196
+ e: KeyboardEvent<HTMLDivElement>;
197
+ inputValue: string;
198
+ tagInputValue?: TagInputValue;
199
+ },
200
+ ) => void;
201
+ /**
202
+ * 聚焦时触发
203
+ */
204
+ onFocus?: (value: SelectInputValue, context: SelectInputFocusContext) => void;
205
+ /**
206
+ * 输入框值发生变化时触发,`context.trigger` 表示触发输入框值变化的来源:文本输入触发、清除按钮触发等
207
+ */
208
+ onInputChange?: (
209
+ value: string,
210
+ context?: SelectInputValueChangeContext,
211
+ ) => void;
212
+ /**
213
+ * 进入输入框时触发
214
+ */
215
+ onMouseenter?: (context: { e: MouseEvent<HTMLDivElement> }) => void;
216
+ /**
217
+ * 离开输入框时触发
218
+ */
219
+ onMouseleave?: (context: { e: MouseEvent<HTMLDivElement> }) => void;
220
+ /**
221
+ * 粘贴事件,`pasteValue` 表示粘贴板的内容
222
+ */
223
+ onPaste?: (context: {
224
+ e: ClipboardEvent<HTMLDivElement>;
225
+ pasteValue: string;
226
+ }) => void;
227
+ /**
228
+ * 下拉框显示或隐藏时触发
229
+ */
230
+ onPopupVisibleChange?: (
231
+ visible: boolean,
232
+ context: PopupVisibleChangeContext,
233
+ ) => void;
234
+ /**
235
+ * 值变化时触发,参数 `context.trigger` 表示数据变化的触发来源;`context.index` 指当前变化项的下标;`context.item` 指当前变化项;`context.e` 表示事件参数
236
+ */
237
+ onTagChange?: (
238
+ value: TagInputValue,
239
+ context: SelectInputChangeContext,
240
+ ) => void;
241
+ }
242
+
243
+ export interface SelectInputKeys {
244
+ label?: string;
245
+ value?: string;
246
+ children?: string;
247
+ }
248
+
249
+ export type SelectInputValue =
250
+ | string
251
+ | number
252
+ | boolean
253
+ | Date
254
+ | Object
255
+ | Array<any>
256
+ | Array<SelectInputValue>;
257
+
258
+ export type SelectInputBlurContext = PopupVisibleChangeContext & {
259
+ inputValue: string;
260
+ tagInputValue?: TagInputValue;
261
+ };
262
+
263
+ export interface SelectInputFocusContext {
264
+ inputValue: string;
265
+ tagInputValue?: TagInputValue;
266
+ e: FocusEvent<HTMLInputElement>;
267
+ }
268
+
269
+ export interface SelectInputValueChangeContext {
270
+ e?:
271
+ | Event
272
+ | FormEvent<HTMLInputElement>
273
+ | MouseEvent<HTMLElement | SVGElement>
274
+ | FocusEvent<HTMLInputElement>
275
+ | KeyboardEvent<HTMLInputElement>
276
+ | CompositionEvent<HTMLDivElement>;
277
+ trigger: 'input' | 'clear' | 'blur' | 'focus' | 'initial' | 'change';
278
+ }
279
+
280
+ export type SelectInputChangeContext = TagInputChangeContext;
File without changes
package/space/index.ts ADDED
File without changes
package/space/type.ts ADDED
File without changes
package/style/index.js ADDED
@@ -0,0 +1,2 @@
1
+ import "../styles/_global.scss";
2
+ import "../styles/themes/_index.scss";
@@ -0,0 +1,39 @@
1
+ @import './_vars.scss';
2
+
3
+ @import './mixins/_scrollbar.scss';
4
+
5
+ // 响应式断点 后面支持紧凑模式可以迁移过去
6
+ :root {
7
+ --td-screen-xs: #{$screen-xs};
8
+ --td-screen-sm: #{$screen-sm};
9
+ --td-screen-md: #{$screen-md};
10
+ --td-screen-lg: #{$screen-lg};
11
+ --td-screen-xl: #{$screen-xl};
12
+ --td-screen-xxl: #{$screen-xxl};
13
+ }
14
+
15
+ // 统一的scrollbar
16
+ .narrow-scrollbar {
17
+ @include scrollbar(8px, 2px);
18
+ }
19
+
20
+ // 统一的可旋转箭头
21
+ .#{$prefix}-fake-arrow {
22
+ path {
23
+ transition: d $anim-duration-base;
24
+ stroke: currentcolor;
25
+ }
26
+
27
+ &--active {
28
+ path {
29
+ d: path('M3.75 10.2002L7.99274 5.7998L12.2361 10.0425');
30
+ }
31
+ }
32
+ }
33
+
34
+ .#{$prefix}-slide-down-enter-active,
35
+ .#{$prefix}-slide-down-leave-active {
36
+ transition:
37
+ height $anim-duration-base $anim-time-fn-easing,
38
+ max-height $anim-duration-base $anim-time-fn-easing;
39
+ }