@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/utils/ax/core.ts
CHANGED
|
@@ -25,9 +25,6 @@ function buildUrl(config: Record<string, any>) {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
class Ax {
|
|
28
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
29
|
-
// constructor() {}
|
|
30
|
-
|
|
31
28
|
request(configOrUrl: AxConfig | string) {
|
|
32
29
|
let config = getDefaultConfig() as any;
|
|
33
30
|
if (typeof configOrUrl === 'string') {
|
|
@@ -50,8 +47,9 @@ class Ax {
|
|
|
50
47
|
});
|
|
51
48
|
}
|
|
52
49
|
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
let xhr: any;
|
|
51
|
+
const request = new Promise((resolve, reject) => {
|
|
52
|
+
xhr = new XMLHttpRequest();
|
|
55
53
|
const {
|
|
56
54
|
headers,
|
|
57
55
|
timeout,
|
|
@@ -63,11 +61,10 @@ class Ax {
|
|
|
63
61
|
onUploadProgress,
|
|
64
62
|
onTimeout,
|
|
65
63
|
onLoaded,
|
|
66
|
-
formDataWithBoundary = true,
|
|
64
|
+
formDataWithBoundary = true,
|
|
67
65
|
} = config;
|
|
68
66
|
|
|
69
67
|
if ((!data || getType(data) === 'FormData') && headers) {
|
|
70
|
-
// Delete to let browser auto-generate
|
|
71
68
|
if (formDataWithBoundary) {
|
|
72
69
|
delete headers['Content-Type'];
|
|
73
70
|
}
|
|
@@ -82,73 +79,63 @@ class Ax {
|
|
|
82
79
|
}
|
|
83
80
|
|
|
84
81
|
xhr.upload.onprogress = function (event: any) {
|
|
85
|
-
|
|
86
|
-
onUploadProgress(event, xhr);
|
|
87
|
-
}
|
|
82
|
+
onUploadProgress?.(event, xhr);
|
|
88
83
|
};
|
|
89
84
|
|
|
90
85
|
xhr.onreadystatechange = function () {
|
|
91
|
-
if (xhr
|
|
86
|
+
if (xhr?.readyState === XMLHttpRequest.DONE) {
|
|
92
87
|
if (xhr.status >= 200 && xhr.status <= 299) {
|
|
93
88
|
const type = this.getResponseHeader('content-type') || '';
|
|
94
89
|
const isJsonType = type.indexOf('application/json') > -1;
|
|
95
90
|
|
|
96
|
-
let
|
|
97
|
-
|
|
91
|
+
let responseData;
|
|
98
92
|
if (isJsonType) {
|
|
99
93
|
try {
|
|
100
|
-
|
|
101
|
-
} catch (
|
|
102
|
-
|
|
94
|
+
responseData = JSON.parse(xhr.response);
|
|
95
|
+
} catch (error) {
|
|
96
|
+
responseData = xhr.response;
|
|
103
97
|
}
|
|
104
98
|
} else {
|
|
105
|
-
|
|
99
|
+
responseData = xhr.response;
|
|
106
100
|
}
|
|
107
101
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
resolve(data);
|
|
102
|
+
onSuccess?.(responseData, xhr);
|
|
103
|
+
resolve(responseData);
|
|
112
104
|
} else {
|
|
113
|
-
|
|
114
|
-
onError(xhr.response, xhr);
|
|
115
|
-
}
|
|
105
|
+
onError?.(xhr.response, xhr);
|
|
116
106
|
reject({ status: 'error', error: xhr.response });
|
|
117
107
|
}
|
|
118
108
|
}
|
|
119
109
|
};
|
|
120
110
|
|
|
121
111
|
xhr.onprogress = function (event: any) {
|
|
122
|
-
|
|
123
|
-
onProgress(event, xhr);
|
|
124
|
-
}
|
|
112
|
+
onProgress?.(event, xhr);
|
|
125
113
|
};
|
|
126
114
|
|
|
127
115
|
xhr.onloadend = function (event: any) {
|
|
128
|
-
|
|
129
|
-
onLoaded(event, xhr);
|
|
130
|
-
}
|
|
116
|
+
onLoaded?.(event, xhr);
|
|
131
117
|
xhr = null;
|
|
132
118
|
};
|
|
133
119
|
|
|
134
|
-
xhr.onerror = function (
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
120
|
+
xhr.onerror = function (error: any) {
|
|
121
|
+
onError?.(xhr.response, xhr);
|
|
122
|
+
reject({ status: 'error', error });
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
xhr.onabort = function (event: any) {
|
|
126
|
+
reject({ status: 'abort', error: event });
|
|
140
127
|
};
|
|
141
128
|
|
|
142
129
|
xhr.ontimeout = function (event: any) {
|
|
143
|
-
|
|
144
|
-
onTimeout(event, xhr);
|
|
145
|
-
}
|
|
130
|
+
onTimeout?.(event, xhr);
|
|
146
131
|
reject({ status: 'timeout', error: event });
|
|
147
|
-
xhr = null;
|
|
148
132
|
};
|
|
149
133
|
|
|
150
134
|
xhr.send(data || null);
|
|
151
|
-
});
|
|
135
|
+
}) as Promise<any> & { abort: () => void };
|
|
136
|
+
|
|
137
|
+
request.abort = () => xhr?.abort();
|
|
138
|
+
return request;
|
|
152
139
|
}
|
|
153
140
|
}
|
|
154
141
|
|
|
@@ -1,40 +1,54 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
) {
|
|
1
|
+
const readAllEntries = (
|
|
2
|
+
reader: FileSystemDirectoryReader,
|
|
3
|
+
): Promise<FileSystemEntry[]> => {
|
|
4
|
+
return new Promise((resolve, reject) => {
|
|
5
|
+
const entries: FileSystemEntry[] = [];
|
|
6
|
+
|
|
7
|
+
const readNextBatch = () => {
|
|
8
|
+
reader.readEntries((batch) => {
|
|
9
|
+
if (batch.length === 0) {
|
|
10
|
+
resolve(entries);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
entries.push(...batch);
|
|
14
|
+
readNextBatch();
|
|
15
|
+
}, reject);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
readNextBatch();
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const readFile = (entry: FileSystemFileEntry): Promise<File> => {
|
|
5
23
|
return new Promise((resolve, reject) => {
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
if (index === entries.length - 1) {
|
|
15
|
-
resolve(filesList);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
},
|
|
19
|
-
(e: any) => {
|
|
20
|
-
reject(e);
|
|
21
|
-
},
|
|
22
|
-
);
|
|
23
|
-
} else if (entry.isFile) {
|
|
24
|
-
(entry as FileSystemFileEntry).file(
|
|
25
|
-
async (file: any) => {
|
|
26
|
-
const path = entry.fullPath.substring(1);
|
|
27
|
-
/** Modifying webkitRelativePath is the core operation, because in drag events webkitRelativePath is empty, and webkitRelativePath is read-only so normal assignment won't work. Currently the only way is to use this method to assign entry.fullPath to webkitRelativePath **/
|
|
28
|
-
const newFile = Object.defineProperty(file, 'webkitRelativePath', {
|
|
29
|
-
value: path,
|
|
30
|
-
});
|
|
31
|
-
filesList.push(newFile);
|
|
32
|
-
resolve(filesList);
|
|
33
|
-
},
|
|
34
|
-
(e: any) => {
|
|
35
|
-
reject(e);
|
|
36
|
-
},
|
|
37
|
-
);
|
|
38
|
-
}
|
|
24
|
+
entry.file((file) => {
|
|
25
|
+
const path = entry.fullPath.replace(/^\//, '');
|
|
26
|
+
Object.defineProperty(file, 'webkitRelativePath', {
|
|
27
|
+
configurable: true,
|
|
28
|
+
value: path,
|
|
29
|
+
});
|
|
30
|
+
resolve(file);
|
|
31
|
+
}, reject);
|
|
39
32
|
});
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export default async function folderScanner(
|
|
36
|
+
entry: FileSystemEntry,
|
|
37
|
+
filesList: File[] = [],
|
|
38
|
+
): Promise<File[]> {
|
|
39
|
+
if (entry.isFile) {
|
|
40
|
+
filesList.push(await readFile(entry as FileSystemFileEntry));
|
|
41
|
+
return filesList;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (entry.isDirectory) {
|
|
45
|
+
const reader = (entry as FileSystemDirectoryEntry).createReader();
|
|
46
|
+
const entries = await readAllEntries(reader);
|
|
47
|
+
const nestedFiles = await Promise.all(
|
|
48
|
+
entries.map((nestedEntry) => folderScanner(nestedEntry, [])),
|
|
49
|
+
);
|
|
50
|
+
filesList.push(...nestedFiles.flat());
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return filesList;
|
|
40
54
|
}
|