@rainbow-oh/yee-c 0.9.2 → 0.10.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 (109) hide show
  1. package/dist/cjs/Input/style/index.less +1 -0
  2. package/dist/cjs/Tabs/demo/overflow-center.d.ts +3 -0
  3. package/dist/cjs/Tabs/demo/overflow-center.js +54 -0
  4. package/dist/cjs/Tabs/hooks/useNavListMove.d.ts +2 -1
  5. package/dist/cjs/Tabs/hooks/useNavListMove.js +51 -16
  6. package/dist/cjs/Tabs/hooks/useTabScroll.d.ts +1 -0
  7. package/dist/cjs/Tabs/hooks/useTabScroll.js +5 -1
  8. package/dist/cjs/Tabs/interface.d.ts +9 -0
  9. package/dist/cjs/Tabs/style/index.less +5 -0
  10. package/dist/cjs/Tabs/tab-header/index.d.ts +1 -0
  11. package/dist/cjs/Tabs/tab-header/index.js +9 -2
  12. package/dist/cjs/Tabs/tabs.js +4 -1
  13. package/dist/cjs/Upload/demo/auto-upload.d.ts +3 -0
  14. package/dist/cjs/Upload/demo/auto-upload.js +65 -0
  15. package/dist/cjs/Upload/demo/basic.js +5 -10
  16. package/dist/cjs/Upload/demo/controlled.js +4 -4
  17. package/dist/cjs/Upload/demo/pictureWall.js +14 -13
  18. package/dist/cjs/Upload/dragger.d.ts +2 -1
  19. package/dist/cjs/Upload/dragger.js +32 -21
  20. package/dist/cjs/Upload/index.d.ts +1 -1
  21. package/dist/cjs/Upload/interface.d.ts +67 -120
  22. package/dist/cjs/Upload/style/index.less +40 -13
  23. package/dist/cjs/Upload/upload.d.ts +2 -2
  24. package/dist/cjs/Upload/upload.js +435 -185
  25. package/dist/cjs/Upload/uploaded-list/index.d.ts +2 -1
  26. package/dist/cjs/Upload/uploaded-list/index.js +6 -3
  27. package/dist/cjs/Upload/uploaded-list/uploaded-item.d.ts +6 -3
  28. package/dist/cjs/Upload/uploaded-list/uploaded-item.js +127 -138
  29. package/dist/cjs/style/size.css +1 -1
  30. package/dist/cjs/style/themes.css +1 -1
  31. package/dist/cjs/style/variables.css +2 -2
  32. package/dist/cjs/utils/ax/core.d.ts +3 -1
  33. package/dist/cjs/utils/ax/core.js +24 -37
  34. package/dist/cjs/utils/ax/index.d.ts +3 -1
  35. package/dist/cjs/utils/folder-scanner.d.ts +1 -1
  36. package/dist/cjs/utils/folder-scanner.js +43 -34
  37. package/dist/cjs/version.d.ts +1 -1
  38. package/dist/cjs/version.js +1 -1
  39. package/dist/esm/Input/style/index.less +1 -0
  40. package/dist/esm/Tabs/demo/overflow-center.d.ts +3 -0
  41. package/dist/esm/Tabs/demo/overflow-center.js +61 -0
  42. package/dist/esm/Tabs/hooks/useNavListMove.d.ts +2 -1
  43. package/dist/esm/Tabs/hooks/useNavListMove.js +62 -25
  44. package/dist/esm/Tabs/hooks/useTabScroll.d.ts +1 -0
  45. package/dist/esm/Tabs/hooks/useTabScroll.js +9 -0
  46. package/dist/esm/Tabs/interface.d.ts +9 -0
  47. package/dist/esm/Tabs/style/index.less +5 -0
  48. package/dist/esm/Tabs/tab-header/index.d.ts +1 -0
  49. package/dist/esm/Tabs/tab-header/index.js +13 -2
  50. package/dist/esm/Tabs/tabs.js +4 -2
  51. package/dist/esm/Upload/demo/auto-upload.d.ts +3 -0
  52. package/dist/esm/Upload/demo/auto-upload.js +42 -0
  53. package/dist/esm/Upload/demo/basic.js +5 -11
  54. package/dist/esm/Upload/demo/controlled.js +8 -6
  55. package/dist/esm/Upload/demo/pictureWall.js +17 -14
  56. package/dist/esm/Upload/dragger.d.ts +2 -1
  57. package/dist/esm/Upload/dragger.js +10 -5
  58. package/dist/esm/Upload/index.d.ts +1 -1
  59. package/dist/esm/Upload/interface.d.ts +67 -120
  60. package/dist/esm/Upload/style/index.less +40 -13
  61. package/dist/esm/Upload/upload.d.ts +2 -2
  62. package/dist/esm/Upload/upload.js +573 -271
  63. package/dist/esm/Upload/uploaded-list/index.d.ts +2 -1
  64. package/dist/esm/Upload/uploaded-list/index.js +9 -4
  65. package/dist/esm/Upload/uploaded-list/uploaded-item.d.ts +6 -3
  66. package/dist/esm/Upload/uploaded-list/uploaded-item.js +145 -150
  67. package/dist/esm/style/size.css +1 -1
  68. package/dist/esm/style/themes.css +1 -1
  69. package/dist/esm/style/variables.css +2 -2
  70. package/dist/esm/utils/ax/core.d.ts +3 -1
  71. package/dist/esm/utils/ax/core.js +32 -40
  72. package/dist/esm/utils/ax/index.d.ts +3 -1
  73. package/dist/esm/utils/folder-scanner.d.ts +1 -1
  74. package/dist/esm/utils/folder-scanner.js +76 -75
  75. package/dist/esm/version.d.ts +1 -1
  76. package/dist/esm/version.js +1 -1
  77. package/dist/umd/yee-c.min.css +2 -2
  78. package/dist/umd/yee-c.min.js +1 -1
  79. package/package.json +1 -1
  80. package/src/Input/style/index.less +1 -0
  81. package/src/Tabs/demo/overflow-center.tsx +35 -0
  82. package/src/Tabs/hooks/useNavListMove.ts +60 -18
  83. package/src/Tabs/hooks/useTabScroll.ts +7 -1
  84. package/src/Tabs/index.en-US.md +33 -31
  85. package/src/Tabs/index.zh-CN.md +33 -31
  86. package/src/Tabs/interface.ts +9 -0
  87. package/src/Tabs/style/index.less +5 -0
  88. package/src/Tabs/tab-header/index.tsx +12 -2
  89. package/src/Tabs/tabs.tsx +2 -0
  90. package/src/Upload/demo/auto-upload.tsx +35 -0
  91. package/src/Upload/demo/basic.tsx +7 -11
  92. package/src/Upload/demo/controlled.tsx +12 -8
  93. package/src/Upload/demo/directory.tsx +3 -4
  94. package/src/Upload/demo/drag.tsx +5 -12
  95. package/src/Upload/demo/multiple.tsx +3 -4
  96. package/src/Upload/demo/pictureWall.tsx +22 -21
  97. package/src/Upload/dragger.tsx +47 -34
  98. package/src/Upload/index.en-US.md +63 -43
  99. package/src/Upload/index.ts +8 -1
  100. package/src/Upload/index.zh-CN.md +62 -42
  101. package/src/Upload/interface.ts +68 -120
  102. package/src/Upload/style/index.less +40 -13
  103. package/src/Upload/upload.tsx +546 -215
  104. package/src/Upload/uploaded-list/index.tsx +9 -5
  105. package/src/Upload/uploaded-list/uploaded-item.tsx +199 -228
  106. package/src/style/size.css +1 -1
  107. package/src/utils/ax/core.ts +28 -41
  108. package/src/utils/folder-scanner.ts +51 -37
  109. package/src/version.ts +1 -1
@@ -18,7 +18,8 @@ var Dragger = /*#__PURE__*/React.forwardRef(function (props, ref) {
18
18
  t = _useLocale.t;
19
19
  var renderChildren = function renderChildren() {
20
20
  return children !== null && children !== void 0 ? children : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
21
- className: "".concat(prefixCls, "-icon")
21
+ className: "".concat(prefixCls, "-icon"),
22
+ "aria-hidden": "true"
22
23
  }, /*#__PURE__*/React.createElement(UploadIcon, {
23
24
  size: 22
24
25
  })), /*#__PURE__*/React.createElement("span", {
@@ -29,11 +30,15 @@ var Dragger = /*#__PURE__*/React.forwardRef(function (props, ref) {
29
30
  type: "drag",
30
31
  ref: ref
31
32
  }), /*#__PURE__*/React.createElement("div", {
32
- className: clsx("".concat(prefixCls), _defineProperty({}, "".concat(prefixCls, "-disabled"), disabled)),
33
+ className: clsx(prefixCls, _defineProperty({}, "".concat(prefixCls, "-disabled"), disabled)),
34
+ role: "button",
35
+ "aria-disabled": disabled,
33
36
  tabIndex: disabled ? -1 : 0,
34
- onKeyDown: function onKeyDown(e) {
35
- if (e.key === 'Enter') {
36
- e.target.click();
37
+ onKeyDown: function onKeyDown(event) {
38
+ if (event.key === 'Enter' || event.key === ' ') {
39
+ var _event$currentTarget$;
40
+ event.preventDefault();
41
+ (_event$currentTarget$ = event.currentTarget.parentElement) === null || _event$currentTarget$ === void 0 || (_event$currentTarget$ = _event$currentTarget$.querySelector('input[type="file"]')) === null || _event$currentTarget$ === void 0 || _event$currentTarget$.click();
37
42
  }
38
43
  }
39
44
  }, renderChildren()));
@@ -4,5 +4,5 @@ type UploadType = typeof InternalUpload & {
4
4
  Dragger: typeof Dragger;
5
5
  };
6
6
  declare const Upload: UploadType;
7
- export type { UploadProps } from './interface';
7
+ export type { UploadDraggerProps, UploadFile, UploadInstance, UploadProps, UploadRequestAbort, UploadRequestOptions, } from './interface';
8
8
  export default Upload;
@@ -1,122 +1,74 @@
1
1
  import React from 'react';
2
2
  import type { DataAttributeProps } from '../utils/types';
3
3
  export type UploadFile = {
4
- /**
5
- * File upload status
6
- */
4
+ /** File upload status */
7
5
  status: 'uploading' | 'error' | 'success' | 'ready';
8
- /**
9
- * Unique file id, auto-generated if not set
10
- */
6
+ /** Unique file id. Files selected by Upload receive an id automatically. */
11
7
  uid?: string;
12
- /**
13
- * File name
14
- */
8
+ /** File name */
15
9
  name: string;
16
- /**
17
- * File size
18
- */
19
- size: number;
20
- /**
21
- * Upload progress
22
- */
10
+ /** File size in bytes */
11
+ size?: number;
12
+ /** Upload progress */
23
13
  percent?: number;
24
- /**
25
- * Source file
26
- */
27
- raw: File;
28
- /**
29
- * File type, determined by file extension
30
- */
14
+ /** Source file. This can be omitted for files that already exist remotely. */
15
+ raw?: File;
16
+ /** MIME type or file extension */
31
17
  type?: string;
32
- /**
33
- * Upload response content
34
- */
18
+ /** Remote file URL */
19
+ url?: string;
20
+ /** Upload response content */
35
21
  response?: any;
36
- /**
37
- * Upload error message
38
- */
22
+ /** Upload error */
39
23
  error?: Error;
40
24
  };
25
+ export type UploadRequestAbort = (() => void) | {
26
+ abort: () => void;
27
+ };
28
+ export interface UploadRequestOptions {
29
+ file: File;
30
+ onProgress: (percent: number) => void;
31
+ onError: (error: Error) => void;
32
+ onSuccess: (response: any) => void;
33
+ }
41
34
  export interface UploadProps extends DataAttributeProps {
42
- /**
43
- * Custom prefix class name
44
- */
35
+ /** Custom prefix class name */
45
36
  prefixCls?: string;
46
- /**
47
- * Child nodes
48
- */
37
+ /** Child nodes */
49
38
  children?: React.ReactNode;
50
- /**
51
- * Custom class name
52
- */
39
+ /** Custom class name */
53
40
  className?: string;
54
- /**
55
- * Custom inline style
56
- */
41
+ /** Custom inline style */
57
42
  style?: React.CSSProperties;
58
- /**
59
- * Upload type
60
- */
43
+ /** Upload type */
61
44
  type?: 'drag' | 'select';
62
- /**
63
- * File parameter name sent to the server
64
- * @default 'file'
65
- */
45
+ /** File parameter name sent to the server @default 'file' */
66
46
  name?: string;
67
- /**
68
- * Upload URL
69
- */
47
+ /** Upload URL */
70
48
  action?: string | (() => string);
71
- /**
72
- * Additional parameters for upload
73
- */
49
+ /** Additional parameters for upload */
74
50
  data?: Record<string, any> | ((file: File) => Record<string, any>);
75
- /**
76
- * Whether to send cookies with upload
77
- */
51
+ /** Whether to send cookies with upload */
78
52
  withCredentials?: boolean;
79
- /**
80
- * Set upload request headers
81
- */
53
+ /** Set upload request headers */
82
54
  headers?: Record<string, any>;
83
- /**
84
- * Accepted file types for upload
85
- */
55
+ /** Accepted file types for upload */
86
56
  accept?: string;
87
- /**
88
- * Whether to support multiple file selection
89
- */
57
+ /** Whether to support multiple file selection */
90
58
  multiple?: boolean;
91
- /**
92
- * Whether to support folder upload
93
- */
59
+ /** Whether to support folder upload */
94
60
  directory?: boolean;
95
- /**
96
- * Whether disabled
97
- */
61
+ /** Whether disabled */
98
62
  disabled?: boolean;
99
- /**
100
- * Maximum file size in bytes
101
- */
63
+ /** Maximum file size in bytes */
102
64
  maxFileSize?: number;
103
- /**
104
- * Maximum number of files to upload
105
- */
65
+ /** Maximum number of files to upload */
106
66
  maxCount?: number;
107
- /**
108
- * Set upload list type
109
- */
67
+ /** Set upload list type */
110
68
  listType?: 'text' | 'picture-list' | 'picture-wall';
111
- /**
112
- * Whether to show upload progress
113
- * @default true
114
- */
69
+ /** Whether to show upload progress @default true */
115
70
  progress?: boolean;
116
- /**
117
- * Whether to show the uploaded file list
118
- * @default true
119
- */
71
+ /** Whether to show the uploaded file list @default true */
120
72
  showUploadList?: boolean | {
121
73
  showTooltip?: boolean;
122
74
  showRemoveIcon?: boolean;
@@ -126,51 +78,46 @@ export interface UploadProps extends DataAttributeProps {
126
78
  reloadIcon?: React.ReactNode;
127
79
  previewIcon?: React.ReactNode;
128
80
  };
129
- /**
130
- * Custom upload list item render
131
- */
81
+ /** Custom upload list item render */
132
82
  itemRender?: (file: UploadFile, fileList: UploadFile[]) => React.ReactNode;
133
- /**
134
- * Default uploaded files
135
- */
83
+ /** Default uploaded files */
136
84
  defaultFileList?: Array<UploadFile>;
137
- /**
138
- * Uploaded files in controlled mode
139
- */
85
+ /** Uploaded files in controlled mode */
140
86
  fileList?: Array<UploadFile>;
141
87
  /**
142
- * Callback before uploading a file
88
+ * Whether to upload automatically after files are selected.
89
+ * Set to false to only collect files into the list and trigger them
90
+ * later via the instance method `upload()`.
91
+ * @default true
143
92
  */
144
- beforeUpload?: (file: File, fileList: Array<File>) => boolean | Promise<File | boolean>;
93
+ autoUpload?: boolean;
94
+ /** Callback before uploading a file */
95
+ beforeUpload?: (file: File, fileList: Array<File>) => boolean | File | PromiseLike<File | boolean>;
145
96
  /**
146
- * Custom upload implementation
147
- */
148
- customRequest?: (options: {
149
- file: File;
150
- onProgress: (percent: number) => void;
151
- onError: (error: Error) => void;
152
- onSuccess: (response: any) => void;
153
- }) => void;
154
- /**
155
- * Callback when upload status changes
97
+ * Custom upload implementation. Return an abort function or object to make
98
+ * remove, retry, and unmount cancel the active request.
156
99
  */
100
+ customRequest?: (options: UploadRequestOptions) => void | UploadRequestAbort;
101
+ /** Callback when upload status changes */
157
102
  onChange?: (params: {
158
103
  file: UploadFile;
159
104
  fileList: Array<UploadFile>;
160
105
  event?: any;
161
106
  }) => void;
162
- /**
163
- * Callback when file link or preview icon is clicked
164
- */
107
+ /** Callback when file link or preview icon is clicked */
165
108
  onPreview?: (file: UploadFile) => void;
166
- /**
167
- * Callback when a file is removed
168
- */
169
- onRemove?: (file: UploadFile) => boolean | Promise<boolean>;
109
+ /** Callback when a file is removed */
110
+ onRemove?: (file: UploadFile) => boolean | PromiseLike<boolean>;
170
111
  }
171
112
  export interface UploadDraggerProps extends UploadProps {
172
- /**
173
- * Upload hint
174
- * */
113
+ /** Upload hint */
175
114
  hint?: React.ReactNode;
176
115
  }
116
+ export type UploadInstance = HTMLDivElement & {
117
+ /**
118
+ * Upload files waiting in the list (status 'ready'). Without arguments
119
+ * uploads every ready file; accepts a single file or a list of files.
120
+ * Combine with `autoUpload={false}` to trigger uploads manually.
121
+ */
122
+ upload: (file?: UploadFile | UploadFile[]) => void;
123
+ };
@@ -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
 
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { UploadProps } from './interface';
2
+ import type { UploadInstance, UploadProps } from './interface';
3
3
  import './style/index.less';
4
- declare const Upload: React.ForwardRefExoticComponent<UploadProps & React.RefAttributes<HTMLDivElement>>;
4
+ declare const Upload: React.ForwardRefExoticComponent<UploadProps & React.RefAttributes<UploadInstance>>;
5
5
  export default Upload;