@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.
- package/dist/cjs/Input/style/index.less +1 -0
- package/dist/cjs/Tabs/demo/overflow-center.d.ts +3 -0
- package/dist/cjs/Tabs/demo/overflow-center.js +54 -0
- package/dist/cjs/Tabs/hooks/useNavListMove.d.ts +2 -1
- package/dist/cjs/Tabs/hooks/useNavListMove.js +51 -16
- package/dist/cjs/Tabs/hooks/useTabScroll.d.ts +1 -0
- package/dist/cjs/Tabs/hooks/useTabScroll.js +5 -1
- package/dist/cjs/Tabs/interface.d.ts +9 -0
- package/dist/cjs/Tabs/style/index.less +5 -0
- package/dist/cjs/Tabs/tab-header/index.d.ts +1 -0
- package/dist/cjs/Tabs/tab-header/index.js +9 -2
- package/dist/cjs/Tabs/tabs.js +4 -1
- package/dist/cjs/Upload/demo/auto-upload.d.ts +3 -0
- package/dist/cjs/Upload/demo/auto-upload.js +65 -0
- package/dist/cjs/Upload/demo/basic.js +5 -10
- package/dist/cjs/Upload/demo/controlled.js +4 -4
- package/dist/cjs/Upload/demo/pictureWall.js +14 -13
- package/dist/cjs/Upload/dragger.d.ts +2 -1
- package/dist/cjs/Upload/dragger.js +32 -21
- package/dist/cjs/Upload/index.d.ts +1 -1
- package/dist/cjs/Upload/interface.d.ts +67 -120
- package/dist/cjs/Upload/style/index.less +40 -13
- package/dist/cjs/Upload/upload.d.ts +2 -2
- package/dist/cjs/Upload/upload.js +435 -185
- package/dist/cjs/Upload/uploaded-list/index.d.ts +2 -1
- package/dist/cjs/Upload/uploaded-list/index.js +6 -3
- package/dist/cjs/Upload/uploaded-list/uploaded-item.d.ts +6 -3
- package/dist/cjs/Upload/uploaded-list/uploaded-item.js +127 -138
- package/dist/cjs/style/size.css +1 -1
- package/dist/cjs/style/themes.css +1 -1
- package/dist/cjs/style/variables.css +2 -2
- package/dist/cjs/utils/ax/core.d.ts +3 -1
- package/dist/cjs/utils/ax/core.js +24 -37
- package/dist/cjs/utils/ax/index.d.ts +3 -1
- package/dist/cjs/utils/folder-scanner.d.ts +1 -1
- package/dist/cjs/utils/folder-scanner.js +43 -34
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/Input/style/index.less +1 -0
- package/dist/esm/Tabs/demo/overflow-center.d.ts +3 -0
- package/dist/esm/Tabs/demo/overflow-center.js +61 -0
- package/dist/esm/Tabs/hooks/useNavListMove.d.ts +2 -1
- package/dist/esm/Tabs/hooks/useNavListMove.js +62 -25
- package/dist/esm/Tabs/hooks/useTabScroll.d.ts +1 -0
- package/dist/esm/Tabs/hooks/useTabScroll.js +9 -0
- package/dist/esm/Tabs/interface.d.ts +9 -0
- package/dist/esm/Tabs/style/index.less +5 -0
- package/dist/esm/Tabs/tab-header/index.d.ts +1 -0
- package/dist/esm/Tabs/tab-header/index.js +13 -2
- package/dist/esm/Tabs/tabs.js +4 -2
- package/dist/esm/Upload/demo/auto-upload.d.ts +3 -0
- package/dist/esm/Upload/demo/auto-upload.js +42 -0
- package/dist/esm/Upload/demo/basic.js +5 -11
- package/dist/esm/Upload/demo/controlled.js +8 -6
- package/dist/esm/Upload/demo/pictureWall.js +17 -14
- package/dist/esm/Upload/dragger.d.ts +2 -1
- package/dist/esm/Upload/dragger.js +10 -5
- package/dist/esm/Upload/index.d.ts +1 -1
- package/dist/esm/Upload/interface.d.ts +67 -120
- package/dist/esm/Upload/style/index.less +40 -13
- package/dist/esm/Upload/upload.d.ts +2 -2
- package/dist/esm/Upload/upload.js +573 -271
- package/dist/esm/Upload/uploaded-list/index.d.ts +2 -1
- package/dist/esm/Upload/uploaded-list/index.js +9 -4
- package/dist/esm/Upload/uploaded-list/uploaded-item.d.ts +6 -3
- package/dist/esm/Upload/uploaded-list/uploaded-item.js +145 -150
- package/dist/esm/style/size.css +1 -1
- package/dist/esm/style/themes.css +1 -1
- package/dist/esm/style/variables.css +2 -2
- package/dist/esm/utils/ax/core.d.ts +3 -1
- package/dist/esm/utils/ax/core.js +32 -40
- package/dist/esm/utils/ax/index.d.ts +3 -1
- package/dist/esm/utils/folder-scanner.d.ts +1 -1
- package/dist/esm/utils/folder-scanner.js +76 -75
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/umd/yee-c.min.css +2 -2
- package/dist/umd/yee-c.min.js +1 -1
- package/package.json +1 -1
- package/src/Input/style/index.less +1 -0
- package/src/Tabs/demo/overflow-center.tsx +35 -0
- package/src/Tabs/hooks/useNavListMove.ts +60 -18
- package/src/Tabs/hooks/useTabScroll.ts +7 -1
- package/src/Tabs/index.en-US.md +33 -31
- package/src/Tabs/index.zh-CN.md +33 -31
- package/src/Tabs/interface.ts +9 -0
- package/src/Tabs/style/index.less +5 -0
- package/src/Tabs/tab-header/index.tsx +12 -2
- package/src/Tabs/tabs.tsx +2 -0
- package/src/Upload/demo/auto-upload.tsx +35 -0
- package/src/Upload/demo/basic.tsx +7 -11
- package/src/Upload/demo/controlled.tsx +12 -8
- package/src/Upload/demo/directory.tsx +3 -4
- package/src/Upload/demo/drag.tsx +5 -12
- package/src/Upload/demo/multiple.tsx +3 -4
- package/src/Upload/demo/pictureWall.tsx +22 -21
- package/src/Upload/dragger.tsx +47 -34
- package/src/Upload/index.en-US.md +63 -43
- package/src/Upload/index.ts +8 -1
- package/src/Upload/index.zh-CN.md +62 -42
- package/src/Upload/interface.ts +68 -120
- package/src/Upload/style/index.less +40 -13
- package/src/Upload/upload.tsx +546 -215
- package/src/Upload/uploaded-list/index.tsx +9 -5
- package/src/Upload/uploaded-list/uploaded-item.tsx +199 -228
- package/src/style/size.css +1 -1
- package/src/utils/ax/core.ts +28 -41
- package/src/utils/folder-scanner.ts +51 -37
- package/src/version.ts +1 -1
package/src/Upload/interface.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
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 |
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
|
56
|
+
border-color: var(--yee-primary-color);
|
|
38
57
|
}
|
|
39
58
|
|
|
40
59
|
&-hover {
|
|
41
|
-
border-color: var(--yee-color
|
|
42
|
-
background-color: var(--yee-color-
|
|
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
|
|
72
|
-
color: var(--yee-color
|
|
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
|
|
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
|
-
|
|
127
|
-
|
|
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:
|
|
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
|
|
273
|
+
color: var(--yee-primary-color);
|
|
247
274
|
}
|
|
248
275
|
|
|
249
276
|
&-error {
|
|
250
|
-
color: var(--yee-color
|
|
277
|
+
color: var(--yee-error-color);
|
|
251
278
|
}
|
|
252
279
|
|
|
253
280
|
&-success {
|
|
254
|
-
color: var(--yee-color
|
|
281
|
+
color: var(--yee-success-color);
|
|
255
282
|
}
|
|
256
283
|
}
|
|
257
284
|
|