@rainbow-oh/yee-c 0.9.2 → 0.11.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 (162) hide show
  1. package/dist/cjs/Button/demo/icon.js +1 -1
  2. package/dist/cjs/Input/style/index.less +1 -0
  3. package/dist/cjs/Table/demo/resizable.d.ts +3 -0
  4. package/dist/cjs/Table/demo/resizable.js +143 -0
  5. package/dist/cjs/Table/hooks/useColumnResize.d.ts +30 -0
  6. package/dist/cjs/Table/hooks/useColumnResize.js +217 -0
  7. package/dist/cjs/Table/hooks/useColumns.d.ts +3 -1
  8. package/dist/cjs/Table/hooks/useColumns.js +14 -3
  9. package/dist/cjs/Table/interface.d.ts +49 -0
  10. package/dist/cjs/Table/style/index.less +42 -0
  11. package/dist/cjs/Table/table.js +62 -9
  12. package/dist/cjs/Table/theader/cell.js +46 -4
  13. package/dist/cjs/Table/util/index.d.ts +19 -1
  14. package/dist/cjs/Table/util/index.js +22 -0
  15. package/dist/cjs/Tabs/demo/overflow-center.d.ts +3 -0
  16. package/dist/cjs/Tabs/demo/overflow-center.js +54 -0
  17. package/dist/cjs/Tabs/hooks/useNavListMove.d.ts +2 -1
  18. package/dist/cjs/Tabs/hooks/useNavListMove.js +51 -16
  19. package/dist/cjs/Tabs/hooks/useTabScroll.d.ts +1 -0
  20. package/dist/cjs/Tabs/hooks/useTabScroll.js +5 -1
  21. package/dist/cjs/Tabs/interface.d.ts +10 -1
  22. package/dist/cjs/Tabs/style/index.less +5 -0
  23. package/dist/cjs/Tabs/tab-header/index.d.ts +1 -0
  24. package/dist/cjs/Tabs/tab-header/index.js +11 -3
  25. package/dist/cjs/Tabs/tabs.js +4 -1
  26. package/dist/cjs/Upload/demo/auto-upload.d.ts +3 -0
  27. package/dist/cjs/Upload/demo/auto-upload.js +65 -0
  28. package/dist/cjs/Upload/demo/basic.js +5 -10
  29. package/dist/cjs/Upload/demo/controlled.js +4 -4
  30. package/dist/cjs/Upload/demo/pictureWall.js +14 -13
  31. package/dist/cjs/Upload/dragger.d.ts +2 -1
  32. package/dist/cjs/Upload/dragger.js +32 -21
  33. package/dist/cjs/Upload/index.d.ts +1 -1
  34. package/dist/cjs/Upload/interface.d.ts +67 -120
  35. package/dist/cjs/Upload/style/index.less +40 -13
  36. package/dist/cjs/Upload/upload.d.ts +2 -2
  37. package/dist/cjs/Upload/upload.js +435 -185
  38. package/dist/cjs/Upload/uploaded-list/index.d.ts +2 -1
  39. package/dist/cjs/Upload/uploaded-list/index.js +6 -3
  40. package/dist/cjs/Upload/uploaded-list/uploaded-item.d.ts +6 -3
  41. package/dist/cjs/Upload/uploaded-list/uploaded-item.js +127 -138
  42. package/dist/cjs/locale/interface.d.ts +1 -0
  43. package/dist/cjs/locale/lang/en_US.js +2 -1
  44. package/dist/cjs/locale/lang/ja_JP.js +2 -1
  45. package/dist/cjs/locale/lang/zh_CN.js +2 -1
  46. package/dist/cjs/locale/lang/zh_TW.js +2 -1
  47. package/dist/cjs/style/size.css +2 -1
  48. package/dist/cjs/style/themes.css +1 -1
  49. package/dist/cjs/style/variables.css +3 -2
  50. package/dist/cjs/utils/ax/core.d.ts +3 -1
  51. package/dist/cjs/utils/ax/core.js +24 -37
  52. package/dist/cjs/utils/ax/index.d.ts +3 -1
  53. package/dist/cjs/utils/folder-scanner.d.ts +1 -1
  54. package/dist/cjs/utils/folder-scanner.js +43 -34
  55. package/dist/cjs/version.d.ts +1 -1
  56. package/dist/cjs/version.js +1 -1
  57. package/dist/esm/Button/demo/icon.js +7 -4
  58. package/dist/esm/Input/style/index.less +1 -0
  59. package/dist/esm/Table/demo/resizable.d.ts +3 -0
  60. package/dist/esm/Table/demo/resizable.js +110 -0
  61. package/dist/esm/Table/hooks/useColumnResize.d.ts +30 -0
  62. package/dist/esm/Table/hooks/useColumnResize.js +206 -0
  63. package/dist/esm/Table/hooks/useColumns.d.ts +3 -1
  64. package/dist/esm/Table/hooks/useColumns.js +9 -4
  65. package/dist/esm/Table/interface.d.ts +49 -0
  66. package/dist/esm/Table/style/index.less +42 -0
  67. package/dist/esm/Table/table.js +83 -13
  68. package/dist/esm/Table/theader/cell.js +38 -3
  69. package/dist/esm/Table/util/index.d.ts +19 -1
  70. package/dist/esm/Table/util/index.js +37 -0
  71. package/dist/esm/Tabs/demo/overflow-center.d.ts +3 -0
  72. package/dist/esm/Tabs/demo/overflow-center.js +61 -0
  73. package/dist/esm/Tabs/hooks/useNavListMove.d.ts +2 -1
  74. package/dist/esm/Tabs/hooks/useNavListMove.js +62 -25
  75. package/dist/esm/Tabs/hooks/useTabScroll.d.ts +1 -0
  76. package/dist/esm/Tabs/hooks/useTabScroll.js +9 -0
  77. package/dist/esm/Tabs/interface.d.ts +10 -1
  78. package/dist/esm/Tabs/style/index.less +5 -0
  79. package/dist/esm/Tabs/tab-header/index.d.ts +1 -0
  80. package/dist/esm/Tabs/tab-header/index.js +15 -3
  81. package/dist/esm/Tabs/tabs.js +4 -2
  82. package/dist/esm/Upload/demo/auto-upload.d.ts +3 -0
  83. package/dist/esm/Upload/demo/auto-upload.js +42 -0
  84. package/dist/esm/Upload/demo/basic.js +5 -11
  85. package/dist/esm/Upload/demo/controlled.js +8 -6
  86. package/dist/esm/Upload/demo/pictureWall.js +17 -14
  87. package/dist/esm/Upload/dragger.d.ts +2 -1
  88. package/dist/esm/Upload/dragger.js +10 -5
  89. package/dist/esm/Upload/index.d.ts +1 -1
  90. package/dist/esm/Upload/interface.d.ts +67 -120
  91. package/dist/esm/Upload/style/index.less +40 -13
  92. package/dist/esm/Upload/upload.d.ts +2 -2
  93. package/dist/esm/Upload/upload.js +573 -271
  94. package/dist/esm/Upload/uploaded-list/index.d.ts +2 -1
  95. package/dist/esm/Upload/uploaded-list/index.js +9 -4
  96. package/dist/esm/Upload/uploaded-list/uploaded-item.d.ts +6 -3
  97. package/dist/esm/Upload/uploaded-list/uploaded-item.js +145 -150
  98. package/dist/esm/locale/interface.d.ts +1 -0
  99. package/dist/esm/locale/lang/en_US.js +2 -1
  100. package/dist/esm/locale/lang/ja_JP.js +2 -1
  101. package/dist/esm/locale/lang/zh_CN.js +2 -1
  102. package/dist/esm/locale/lang/zh_TW.js +2 -1
  103. package/dist/esm/style/size.css +2 -1
  104. package/dist/esm/style/themes.css +1 -1
  105. package/dist/esm/style/variables.css +3 -2
  106. package/dist/esm/utils/ax/core.d.ts +3 -1
  107. package/dist/esm/utils/ax/core.js +32 -40
  108. package/dist/esm/utils/ax/index.d.ts +3 -1
  109. package/dist/esm/utils/folder-scanner.d.ts +1 -1
  110. package/dist/esm/utils/folder-scanner.js +76 -75
  111. package/dist/esm/version.d.ts +1 -1
  112. package/dist/esm/version.js +1 -1
  113. package/dist/umd/yee-c.min.css +2 -2
  114. package/dist/umd/yee-c.min.js +1 -1
  115. package/package.json +1 -1
  116. package/src/Button/demo/icon.tsx +5 -3
  117. package/src/Input/style/index.less +1 -0
  118. package/src/Table/demo/resizable.tsx +106 -0
  119. package/src/Table/hooks/useColumnResize.ts +224 -0
  120. package/src/Table/hooks/useColumns.ts +18 -3
  121. package/src/Table/index.en-US.md +7 -0
  122. package/src/Table/index.zh-CN.md +7 -0
  123. package/src/Table/interface.ts +52 -0
  124. package/src/Table/style/index.less +42 -0
  125. package/src/Table/table-resize.test.tsx +234 -0
  126. package/src/Table/table.tsx +90 -13
  127. package/src/Table/theader/cell.tsx +52 -2
  128. package/src/Table/util/index.ts +44 -1
  129. package/src/Tabs/demo/overflow-center.tsx +35 -0
  130. package/src/Tabs/hooks/useNavListMove.ts +60 -18
  131. package/src/Tabs/hooks/useTabScroll.ts +7 -1
  132. package/src/Tabs/index.en-US.md +33 -31
  133. package/src/Tabs/index.zh-CN.md +33 -31
  134. package/src/Tabs/interface.ts +10 -1
  135. package/src/Tabs/style/index.less +5 -0
  136. package/src/Tabs/tab-header/index.tsx +14 -3
  137. package/src/Tabs/tabs.tsx +2 -0
  138. package/src/Upload/demo/auto-upload.tsx +35 -0
  139. package/src/Upload/demo/basic.tsx +7 -11
  140. package/src/Upload/demo/controlled.tsx +12 -8
  141. package/src/Upload/demo/directory.tsx +3 -4
  142. package/src/Upload/demo/drag.tsx +5 -12
  143. package/src/Upload/demo/multiple.tsx +3 -4
  144. package/src/Upload/demo/pictureWall.tsx +22 -21
  145. package/src/Upload/dragger.tsx +47 -34
  146. package/src/Upload/index.en-US.md +63 -43
  147. package/src/Upload/index.ts +8 -1
  148. package/src/Upload/index.zh-CN.md +62 -42
  149. package/src/Upload/interface.ts +68 -120
  150. package/src/Upload/style/index.less +40 -13
  151. package/src/Upload/upload.tsx +546 -215
  152. package/src/Upload/uploaded-list/index.tsx +9 -5
  153. package/src/Upload/uploaded-list/uploaded-item.tsx +199 -228
  154. package/src/locale/interface.ts +1 -0
  155. package/src/locale/lang/en_US.ts +1 -0
  156. package/src/locale/lang/ja_JP.ts +1 -0
  157. package/src/locale/lang/zh_CN.ts +1 -0
  158. package/src/locale/lang/zh_TW.ts +1 -0
  159. package/src/style/size.css +2 -1
  160. package/src/utils/ax/core.ts +28 -41
  161. package/src/utils/folder-scanner.ts +51 -37
  162. package/src/version.ts +1 -1
@@ -2,123 +2,75 @@ import React from 'react';
2
2
  import type { DataAttributeProps } from '../utils/types';
3
3
 
4
4
  export type UploadFile = {
5
- /**
6
- * File upload status
7
- */
5
+ /** File upload status */
8
6
  status: 'uploading' | 'error' | 'success' | 'ready';
9
- /**
10
- * Unique file id, auto-generated if not set
11
- */
7
+ /** Unique file id. Files selected by Upload receive an id automatically. */
12
8
  uid?: string;
13
- /**
14
- * File name
15
- */
9
+ /** File name */
16
10
  name: string;
17
- /**
18
- * File size
19
- */
20
- size: number;
21
- /**
22
- * Upload progress
23
- */
11
+ /** File size in bytes */
12
+ size?: number;
13
+ /** Upload progress */
24
14
  percent?: number;
25
- /**
26
- * Source file
27
- */
28
- raw: File;
29
- /**
30
- * File type, determined by file extension
31
- */
15
+ /** Source file. This can be omitted for files that already exist remotely. */
16
+ raw?: File;
17
+ /** MIME type or file extension */
32
18
  type?: string;
33
- /**
34
- * Upload response content
35
- */
19
+ /** Remote file URL */
20
+ url?: string;
21
+ /** Upload response content */
36
22
  response?: any;
37
- /**
38
- * Upload error message
39
- */
23
+ /** Upload error */
40
24
  error?: Error;
41
25
  };
42
26
 
27
+ export type UploadRequestAbort = (() => void) | { abort: () => void };
28
+
29
+ export interface UploadRequestOptions {
30
+ file: File;
31
+ onProgress: (percent: number) => void;
32
+ onError: (error: Error) => void;
33
+ onSuccess: (response: any) => void;
34
+ }
35
+
43
36
  export interface UploadProps extends DataAttributeProps {
44
- /**
45
- * Custom prefix class name
46
- */
37
+ /** Custom prefix class name */
47
38
  prefixCls?: string;
48
- /**
49
- * Child nodes
50
- */
39
+ /** Child nodes */
51
40
  children?: React.ReactNode;
52
- /**
53
- * Custom class name
54
- */
41
+ /** Custom class name */
55
42
  className?: string;
56
- /**
57
- * Custom inline style
58
- */
43
+ /** Custom inline style */
59
44
  style?: React.CSSProperties;
60
- /**
61
- * Upload type
62
- */
45
+ /** Upload type */
63
46
  type?: 'drag' | 'select';
64
- /**
65
- * File parameter name sent to the server
66
- * @default 'file'
67
- */
47
+ /** File parameter name sent to the server @default 'file' */
68
48
  name?: string;
69
- /**
70
- * Upload URL
71
- */
49
+ /** Upload URL */
72
50
  action?: string | (() => string);
73
- /**
74
- * Additional parameters for upload
75
- */
51
+ /** Additional parameters for upload */
76
52
  data?: Record<string, any> | ((file: File) => Record<string, any>);
77
- /**
78
- * Whether to send cookies with upload
79
- */
53
+ /** Whether to send cookies with upload */
80
54
  withCredentials?: boolean;
81
- /**
82
- * Set upload request headers
83
- */
55
+ /** Set upload request headers */
84
56
  headers?: Record<string, any>;
85
- /**
86
- * Accepted file types for upload
87
- */
57
+ /** Accepted file types for upload */
88
58
  accept?: string;
89
- /**
90
- * Whether to support multiple file selection
91
- */
59
+ /** Whether to support multiple file selection */
92
60
  multiple?: boolean;
93
- /**
94
- * Whether to support folder upload
95
- */
61
+ /** Whether to support folder upload */
96
62
  directory?: boolean;
97
- /**
98
- * Whether disabled
99
- */
63
+ /** Whether disabled */
100
64
  disabled?: boolean;
101
- /**
102
- * Maximum file size in bytes
103
- */
65
+ /** Maximum file size in bytes */
104
66
  maxFileSize?: number;
105
- /**
106
- * Maximum number of files to upload
107
- */
67
+ /** Maximum number of files to upload */
108
68
  maxCount?: number;
109
- /**
110
- * Set upload list type
111
- */
69
+ /** Set upload list type */
112
70
  listType?: 'text' | 'picture-list' | 'picture-wall';
113
- /**
114
- * Whether to show upload progress
115
- * @default true
116
- */
71
+ /** Whether to show upload progress @default true */
117
72
  progress?: boolean;
118
- /**
119
- * Whether to show the uploaded file list
120
- * @default true
121
- */
73
+ /** Whether to show the uploaded file list @default true */
122
74
  showUploadList?:
123
75
  | boolean
124
76
  | {
@@ -130,55 +82,51 @@ export interface UploadProps extends DataAttributeProps {
130
82
  reloadIcon?: React.ReactNode;
131
83
  previewIcon?: React.ReactNode;
132
84
  };
133
- /**
134
- * Custom upload list item render
135
- */
85
+ /** Custom upload list item render */
136
86
  itemRender?: (file: UploadFile, fileList: UploadFile[]) => React.ReactNode;
137
- /**
138
- * Default uploaded files
139
- */
87
+ /** Default uploaded files */
140
88
  defaultFileList?: Array<UploadFile>;
141
- /**
142
- * Uploaded files in controlled mode
143
- */
89
+ /** Uploaded files in controlled mode */
144
90
  fileList?: Array<UploadFile>;
145
91
  /**
146
- * Callback before uploading a file
92
+ * Whether to upload automatically after files are selected.
93
+ * Set to false to only collect files into the list and trigger them
94
+ * later via the instance method `upload()`.
95
+ * @default true
147
96
  */
97
+ autoUpload?: boolean;
98
+ /** Callback before uploading a file */
148
99
  beforeUpload?: (
149
100
  file: File,
150
101
  fileList: Array<File>,
151
- ) => boolean | Promise<File | boolean>;
152
- /**
153
- * Custom upload implementation
154
- */
155
- customRequest?: (options: {
156
- file: File;
157
- onProgress: (percent: number) => void;
158
- onError: (error: Error) => void;
159
- onSuccess: (response: any) => void;
160
- }) => void;
102
+ ) => boolean | File | PromiseLike<File | boolean>;
161
103
  /**
162
- * Callback when upload status changes
104
+ * Custom upload implementation. Return an abort function or object to make
105
+ * remove, retry, and unmount cancel the active request.
163
106
  */
107
+ customRequest?: (options: UploadRequestOptions) => void | UploadRequestAbort;
108
+ /** Callback when upload status changes */
164
109
  onChange?: (params: {
165
110
  file: UploadFile;
166
111
  fileList: Array<UploadFile>;
167
112
  event?: any;
168
113
  }) => void;
169
- /**
170
- * Callback when file link or preview icon is clicked
171
- */
114
+ /** Callback when file link or preview icon is clicked */
172
115
  onPreview?: (file: UploadFile) => void;
173
- /**
174
- * Callback when a file is removed
175
- */
176
- onRemove?: (file: UploadFile) => boolean | Promise<boolean>;
116
+ /** Callback when a file is removed */
117
+ onRemove?: (file: UploadFile) => boolean | PromiseLike<boolean>;
177
118
  }
178
119
 
179
120
  export interface UploadDraggerProps extends UploadProps {
180
- /**
181
- * Upload hint
182
- * */
121
+ /** Upload hint */
183
122
  hint?: React.ReactNode;
184
123
  }
124
+
125
+ export type UploadInstance = HTMLDivElement & {
126
+ /**
127
+ * Upload files waiting in the list (status 'ready'). Without arguments
128
+ * uploads every ready file; accepts a single file or a list of files.
129
+ * Combine with `autoUpload={false}` to trigger uploads manually.
130
+ */
131
+ upload: (file?: UploadFile | UploadFile[]) => void;
132
+ };
@@ -4,14 +4,33 @@
4
4
  position: relative;
5
5
 
6
6
  &-input {
7
+ position: relative;
7
8
  display: flex;
8
9
 
10
+ &:focus-within {
11
+ outline: 2px solid var(--yee-primary-color);
12
+ outline-offset: 2px;
13
+ border-radius: var(--yee-radius);
14
+ }
15
+
9
16
  &-disabled {
10
17
  cursor: not-allowed;
11
18
  opacity: 0.5;
12
19
  }
13
20
  }
14
21
 
22
+ &-native-input {
23
+ position: absolute;
24
+ width: 1px;
25
+ height: 1px;
26
+ padding: 0;
27
+ margin: -1px;
28
+ overflow: hidden;
29
+ clip: rect(0, 0, 0, 0);
30
+ white-space: nowrap;
31
+ border: 0;
32
+ }
33
+
15
34
  &-disabled {
16
35
  cursor: not-allowed;
17
36
  opacity: 0.5;
@@ -34,12 +53,12 @@
34
53
  }
35
54
 
36
55
  &:hover {
37
- border-color: var(--yee-color-primary);
56
+ border-color: var(--yee-primary-color);
38
57
  }
39
58
 
40
59
  &-hover {
41
- border-color: var(--yee-color-primary);
42
- background-color: var(--yee-color-primary-bg);
60
+ border-color: var(--yee-primary-color);
61
+ background-color: var(--yee-primary-color-bg);
43
62
  }
44
63
  }
45
64
 
@@ -68,8 +87,8 @@
68
87
  background-color: var(--yee-color-bg-container);
69
88
 
70
89
  &:hover {
71
- border-color: var(--yee-color-primary);
72
- color: var(--yee-color-primary);
90
+ border-color: var(--yee-primary-color);
91
+ color: var(--yee-primary-color);
73
92
  }
74
93
  }
75
94
 
@@ -106,7 +125,7 @@
106
125
  align-items: center;
107
126
  justify-content: center;
108
127
  padding: 8px;
109
- color: var(--yee-color-error);
128
+ color: var(--yee-error-color);
110
129
  }
111
130
 
112
131
  &-operate {
@@ -122,10 +141,11 @@
122
141
  gap: 8px;
123
142
  opacity: 0;
124
143
  transition: opacity 0.3s;
144
+ }
125
145
 
126
- &:hover {
127
- opacity: 1;
128
- }
146
+ &:hover &-operate,
147
+ &:focus-within &-operate {
148
+ opacity: 1;
129
149
  }
130
150
  }
131
151
 
@@ -201,7 +221,7 @@
201
221
  display: flex;
202
222
  align-items: center;
203
223
  justify-content: space-between;
204
- padding: 8px 12px;
224
+ padding: 0 12px;
205
225
  border-radius: var(--yee-radius);
206
226
  transition: all 0.3s;
207
227
 
@@ -216,6 +236,12 @@
216
236
  }
217
237
 
218
238
  &-item {
239
+
240
+ &-label {
241
+ display: flex;
242
+ align-items: center;
243
+ }
244
+
219
245
  &-icon {
220
246
  display: flex;
221
247
  align-items: center;
@@ -224,6 +250,7 @@
224
250
 
225
251
  &-name-content {
226
252
  flex: 1;
253
+ font-size: 14px;
227
254
  overflow: hidden;
228
255
  text-overflow: ellipsis;
229
256
  white-space: nowrap;
@@ -243,15 +270,15 @@
243
270
  // 上传状态样式
244
271
  &-state {
245
272
  &-uploading {
246
- color: var(--yee-color-primary);
273
+ color: var(--yee-primary-color);
247
274
  }
248
275
 
249
276
  &-error {
250
- color: var(--yee-color-error);
277
+ color: var(--yee-error-color);
251
278
  }
252
279
 
253
280
  &-success {
254
- color: var(--yee-color-success);
281
+ color: var(--yee-success-color);
255
282
  }
256
283
  }
257
284