@wangtaizong/components 1.0.7 → 1.1.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/index.js +285 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.js +2 -0
- package/dist/index.min.js.map +1 -0
- package/es/Button/index.d.ts +9 -0
- package/es/Button/index.js +25 -0
- package/es/Icon/index.d.ts +9 -0
- package/es/Icon/index.js +25 -0
- package/es/Upload/index.d.ts +16 -0
- package/es/Upload/index.js +221 -0
- package/es/antd/index.js +2 -0
- package/es/index.js +5 -0
- package/lib/Button/index.d.ts +9 -0
- package/lib/Button/index.js +29 -0
- package/lib/Icon/index.d.ts +9 -0
- package/lib/Icon/index.js +48 -0
- package/lib/Upload/index.d.ts +16 -0
- package/lib/Upload/index.js +243 -0
- package/lib/antd/index.d.ts +2 -0
- package/lib/antd/index.js +28 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.js +32 -0
- package/package.json +40 -68
- package/.changeset/README.md +0 -8
- package/.changeset/config.json +0 -11
- package/.dumirc.ts +0 -28
- package/.editorconfig +0 -13
- package/.eslintrc.js +0 -3
- package/.husky/commit-msg +0 -5
- package/.husky/pre-commit +0 -8
- package/.husky/pre-push +0 -8
- package/.prettierignore +0 -2
- package/.prettierrc.js +0 -19
- package/.stylelintrc +0 -3
- package/.vscode/settings.json +0 -3
- package/README.md +0 -0
- package/commitlint.config.js +0 -21
- package/docs/changelogs/index.md +0 -9
- package/docs/components/index.md +0 -1
- package/docs/guide/install.md +0 -39
- package/docs/index.md +0 -21
- package/docs/utils/index.md +0 -1
- package/lerna.json +0 -8
- package/packages/components/CHANGELOG.md +0 -0
- package/packages/components/package.json +0 -48
- package/packages/components/rollup.config.mjs +0 -108
- package/packages/components/src/Button/index.md +0 -13
- package/packages/components/src/Button/index.tsx +0 -34
- package/packages/components/src/Icon/index.md +0 -81
- package/packages/components/src/Icon/index.tsx +0 -34
- package/packages/components/src/Upload/index.md +0 -209
- package/packages/components/src/Upload/index.tsx +0 -218
- package/packages/components/src/antd/index.md +0 -12
- package/packages/components/src/index.md +0 -23
- package/packages/components/tsconfig.json +0 -32
- package/packages/utils/README.md +0 -11
- package/packages/utils/package.json +0 -35
- package/packages/utils/rollup.config.mjs +0 -63
- package/packages/utils/src/CHRRequest/index.md +0 -59
- package/packages/utils/src/CHRRequest/index.ts +0 -94
- package/packages/utils/src/index.ts +0 -17
- package/packages/utils/tsconfig.json +0 -28
- package/pnpm-workspace.yaml +0 -8
- package/public/favicon.ico +0 -0
- package/public/logo.webp +0 -0
- package/tsconfig.json +0 -14
- /package/{packages/components/src/antd/index.tsx → es/antd/index.d.ts} +0 -0
- /package/{packages/components/src/index.ts → es/index.d.ts} +0 -0
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { __rest, __assign, __awaiter, __generator } from 'tslib';
|
|
2
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
3
|
+
import * as antd from 'antd';
|
|
4
|
+
import { Image } from 'antd';
|
|
5
|
+
import { useState, useCallback, useMemo } from 'react';
|
|
6
|
+
import CHRButton from '../Button/index.js';
|
|
7
|
+
import CHRIcon from '../Icon/index.js';
|
|
8
|
+
|
|
9
|
+
var CHRUpload = function CHRUpload(_a) {
|
|
10
|
+
var value = _a.value,
|
|
11
|
+
children = _a.children,
|
|
12
|
+
_b = _a.uploadType,
|
|
13
|
+
uploadType = _b === void 0 ? 'file' : _b,
|
|
14
|
+
url = _a.url,
|
|
15
|
+
token = _a.token,
|
|
16
|
+
_c = _a.maxCount,
|
|
17
|
+
maxCount = _c === void 0 ? 1 : _c,
|
|
18
|
+
limit = _a.limit,
|
|
19
|
+
acceptProp = _a.accept,
|
|
20
|
+
handleChange = _a.handleChange,
|
|
21
|
+
restProps = __rest(_a, ["value", "children", "uploadType", "url", "token", "maxCount", "limit", "accept", "handleChange"]);
|
|
22
|
+
var className = restProps.className;
|
|
23
|
+
var _d = useState(value || []),
|
|
24
|
+
fileList = _d[0],
|
|
25
|
+
setFileList = _d[1];
|
|
26
|
+
var _e = useState(false),
|
|
27
|
+
previewOpen = _e[0],
|
|
28
|
+
setPreviewOpen = _e[1];
|
|
29
|
+
var _f = useState(''),
|
|
30
|
+
previewImage = _f[0],
|
|
31
|
+
setPreviewImage = _f[1];
|
|
32
|
+
var getDefaultAccept = useCallback(function () {
|
|
33
|
+
if (uploadType === 'avatar') return 'image/*';
|
|
34
|
+
return undefined;
|
|
35
|
+
}, [uploadType]);
|
|
36
|
+
var getDefaultLimit = useCallback(function () {
|
|
37
|
+
if (uploadType === 'avatar') return 2;
|
|
38
|
+
if (uploadType === 'file') return 10;
|
|
39
|
+
return undefined;
|
|
40
|
+
}, [uploadType]);
|
|
41
|
+
var finalAccept = acceptProp !== null && acceptProp !== void 0 ? acceptProp : getDefaultAccept();
|
|
42
|
+
var finalLimit = limit !== null && limit !== void 0 ? limit : getDefaultLimit();
|
|
43
|
+
var beforeUpload = useCallback(function (file) {
|
|
44
|
+
if (finalLimit) {
|
|
45
|
+
var isLimit = file.size / 1024 / 1024 < finalLimit;
|
|
46
|
+
if (!isLimit) {
|
|
47
|
+
antd.message.error("\u6587\u4EF6\u5927\u5C0F\u4E0D\u80FD\u8D85\u8FC7 ".concat(finalLimit, "MB"));
|
|
48
|
+
return antd.Upload.LIST_IGNORE;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (finalAccept) {
|
|
52
|
+
var acceptList = finalAccept.split(',').map(function (item) {
|
|
53
|
+
return item.trim();
|
|
54
|
+
});
|
|
55
|
+
var fileType_1 = file.type;
|
|
56
|
+
var fileName_1 = file.name;
|
|
57
|
+
var isAccept = acceptList.some(function (accept) {
|
|
58
|
+
if (accept.endsWith('/*')) {
|
|
59
|
+
var mainType = accept.replace('/*', '');
|
|
60
|
+
return fileType_1.startsWith(mainType + '/');
|
|
61
|
+
}
|
|
62
|
+
if (accept.startsWith('.')) {
|
|
63
|
+
return fileName_1.endsWith(accept);
|
|
64
|
+
}
|
|
65
|
+
return fileType_1 === accept;
|
|
66
|
+
});
|
|
67
|
+
if (!isAccept && acceptList.length > 0) {
|
|
68
|
+
antd.message.error("\u4E0D\u652F\u6301\u7684\u6587\u4EF6\u7C7B\u578B\uFF0C\u4EC5\u652F\u6301 ".concat(finalAccept));
|
|
69
|
+
return antd.Upload.LIST_IGNORE;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
}, [finalLimit, finalAccept]);
|
|
74
|
+
var handleUploadChange = useCallback(function (info) {
|
|
75
|
+
var _a;
|
|
76
|
+
var file = info.file,
|
|
77
|
+
newFileList = info.fileList;
|
|
78
|
+
var fileUrl = file.url;
|
|
79
|
+
if (file.response) {
|
|
80
|
+
fileUrl = ((_a = file.response.file) === null || _a === void 0 ? void 0 : _a.url) || file.response.url;
|
|
81
|
+
}
|
|
82
|
+
// 1. 状态提示
|
|
83
|
+
if (file.status === 'done') {
|
|
84
|
+
antd.message.success("".concat(file.name, " \u4E0A\u4F20\u6210\u529F"));
|
|
85
|
+
file.url = fileUrl;
|
|
86
|
+
} else if (file.status === 'error') {
|
|
87
|
+
antd.message.error("".concat(file.name, " \u4E0A\u4F20\u5931\u8D25"));
|
|
88
|
+
file.status = 'error';
|
|
89
|
+
}
|
|
90
|
+
var finalFileList = maxCount ? newFileList.slice(-maxCount) : newFileList;
|
|
91
|
+
finalFileList = finalFileList.map(function (item) {
|
|
92
|
+
if (item.uid === file.uid) {
|
|
93
|
+
return __assign(__assign({}, item), {
|
|
94
|
+
url: fileUrl,
|
|
95
|
+
status: file.status
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return item;
|
|
99
|
+
});
|
|
100
|
+
setFileList(finalFileList);
|
|
101
|
+
var simplifiedList = finalFileList.map(function (e) {
|
|
102
|
+
return {
|
|
103
|
+
uid: e.uid,
|
|
104
|
+
name: e.name,
|
|
105
|
+
url: e.url || '',
|
|
106
|
+
status: e.status
|
|
107
|
+
};
|
|
108
|
+
});
|
|
109
|
+
handleChange === null || handleChange === void 0 ? void 0 : handleChange(file, simplifiedList);
|
|
110
|
+
}, [maxCount, handleChange]);
|
|
111
|
+
var headers = useMemo(function () {
|
|
112
|
+
if (token) {
|
|
113
|
+
return {
|
|
114
|
+
Authorization: "Bearer ".concat(token)
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return undefined;
|
|
118
|
+
}, [token]);
|
|
119
|
+
var getBase64 = function getBase64(file) {
|
|
120
|
+
return new Promise(function (resolve, reject) {
|
|
121
|
+
var reader = new FileReader();
|
|
122
|
+
reader.readAsDataURL(file);
|
|
123
|
+
reader.onload = function () {
|
|
124
|
+
return resolve(reader.result);
|
|
125
|
+
};
|
|
126
|
+
reader.onerror = function (error) {
|
|
127
|
+
return reject(error);
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
var handlePreview = useCallback(function (file) {
|
|
132
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
133
|
+
var _a;
|
|
134
|
+
return __generator(this, function (_b) {
|
|
135
|
+
switch (_b.label) {
|
|
136
|
+
case 0:
|
|
137
|
+
if (!(!file.url && !file.preview && file.originFileObj)) return [3 /*break*/, 2];
|
|
138
|
+
_a = file;
|
|
139
|
+
return [4 /*yield*/, getBase64(file.originFileObj)];
|
|
140
|
+
case 1:
|
|
141
|
+
_a.preview = _b.sent();
|
|
142
|
+
_b.label = 2;
|
|
143
|
+
case 2:
|
|
144
|
+
setPreviewImage(file.url || file.preview);
|
|
145
|
+
setPreviewOpen(true);
|
|
146
|
+
return [2 /*return*/];
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
}, []);
|
|
151
|
+
var avatarUploadButton = jsxs("button", {
|
|
152
|
+
style: {
|
|
153
|
+
border: 0,
|
|
154
|
+
background: 'none'
|
|
155
|
+
},
|
|
156
|
+
type: "button",
|
|
157
|
+
children: [jsx(CHRIcon, {
|
|
158
|
+
icon: "PlusOutlined"
|
|
159
|
+
}), jsx("div", {
|
|
160
|
+
style: {
|
|
161
|
+
marginTop: 8
|
|
162
|
+
},
|
|
163
|
+
children: "\u4E0A\u4F20"
|
|
164
|
+
})]
|
|
165
|
+
});
|
|
166
|
+
var renderByType = function renderByType() {
|
|
167
|
+
if (uploadType === 'avatar') {
|
|
168
|
+
return jsxs(Fragment, {
|
|
169
|
+
children: [jsx(antd.Upload, __assign({
|
|
170
|
+
name: "file",
|
|
171
|
+
listType: "picture-card",
|
|
172
|
+
className: className,
|
|
173
|
+
action: url,
|
|
174
|
+
headers: headers,
|
|
175
|
+
accept: finalAccept,
|
|
176
|
+
fileList: fileList,
|
|
177
|
+
beforeUpload: beforeUpload,
|
|
178
|
+
onChange: handleUploadChange,
|
|
179
|
+
onPreview: handlePreview,
|
|
180
|
+
maxCount: 1
|
|
181
|
+
}, restProps, {
|
|
182
|
+
children: fileList.length >= 1 ? null : avatarUploadButton
|
|
183
|
+
})), previewImage && jsx(Image, {
|
|
184
|
+
style: {
|
|
185
|
+
display: 'none'
|
|
186
|
+
},
|
|
187
|
+
preview: {
|
|
188
|
+
open: previewOpen,
|
|
189
|
+
onOpenChange: function onOpenChange(visible) {
|
|
190
|
+
return setPreviewOpen(visible);
|
|
191
|
+
},
|
|
192
|
+
afterOpenChange: function afterOpenChange(visible) {
|
|
193
|
+
return !visible && setPreviewImage('');
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
src: previewImage
|
|
197
|
+
})]
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
return jsx(antd.Upload, __assign({
|
|
201
|
+
className: className,
|
|
202
|
+
action: url,
|
|
203
|
+
headers: headers,
|
|
204
|
+
accept: finalAccept,
|
|
205
|
+
beforeUpload: beforeUpload,
|
|
206
|
+
fileList: fileList,
|
|
207
|
+
onChange: handleUploadChange,
|
|
208
|
+
maxCount: maxCount,
|
|
209
|
+
multiple: maxCount > 1
|
|
210
|
+
}, restProps, {
|
|
211
|
+
children: children || jsxs(CHRButton, {
|
|
212
|
+
children: [jsx(CHRIcon, {
|
|
213
|
+
icon: "UploadOutlined"
|
|
214
|
+
}), "\u4E0A\u4F20\u6587\u4EF6"]
|
|
215
|
+
})
|
|
216
|
+
}));
|
|
217
|
+
};
|
|
218
|
+
return renderByType();
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
export { CHRUpload as default };
|
package/es/antd/index.js
ADDED
package/es/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React, { type FC, ReactNode } from 'react';
|
|
2
|
+
interface CHRButtonProps {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
title?: string;
|
|
5
|
+
defaultText?: string;
|
|
6
|
+
onClick?: React.MouseEventHandler<HTMLElement>;
|
|
7
|
+
}
|
|
8
|
+
declare const CHRButton: FC<CHRButtonProps>;
|
|
9
|
+
export default CHRButton;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
var antd = require('antd');
|
|
8
|
+
|
|
9
|
+
var CHRButton = function CHRButton(_a) {
|
|
10
|
+
var children = _a.children,
|
|
11
|
+
title = _a.title,
|
|
12
|
+
_b = _a.defaultText,
|
|
13
|
+
defaultText = _b === void 0 ? '按钮' : _b,
|
|
14
|
+
onClick = _a.onClick,
|
|
15
|
+
restProps = tslib.__rest(_a, ["children", "title", "defaultText", "onClick"]);
|
|
16
|
+
var handleClick = function handleClick(e) {
|
|
17
|
+
console.log('CHRButton 内部点击处理');
|
|
18
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(e);
|
|
19
|
+
};
|
|
20
|
+
// 决定显示内容
|
|
21
|
+
var content;
|
|
22
|
+
content = children !== undefined ? children : title || defaultText;
|
|
23
|
+
return jsxRuntime.jsx(antd.Button, tslib.__assign({}, restProps, {
|
|
24
|
+
onClick: handleClick,
|
|
25
|
+
children: content
|
|
26
|
+
}));
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
exports.default = CHRButton;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
var Icons = require('@ant-design/icons');
|
|
8
|
+
|
|
9
|
+
function _interopNamespaceDefault(e) {
|
|
10
|
+
var n = Object.create(null);
|
|
11
|
+
if (e) {
|
|
12
|
+
Object.keys(e).forEach(function (k) {
|
|
13
|
+
if (k !== 'default') {
|
|
14
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
15
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return e[k]; }
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
n.default = e;
|
|
23
|
+
return Object.freeze(n);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
var Icons__namespace = /*#__PURE__*/_interopNamespaceDefault(Icons);
|
|
27
|
+
|
|
28
|
+
var CHRIcon = function CHRIcon(_a) {
|
|
29
|
+
var icon = _a.icon,
|
|
30
|
+
_b = _a.fontSize,
|
|
31
|
+
fontSize = _b === void 0 ? 20 : _b,
|
|
32
|
+
className = _a.className,
|
|
33
|
+
style = _a.style;
|
|
34
|
+
var IconComponent = Icons__namespace[icon];
|
|
35
|
+
if (!IconComponent) {
|
|
36
|
+
console.warn("Icon \"".concat(icon, "\" is not a valid icon component"));
|
|
37
|
+
return jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
|
38
|
+
}
|
|
39
|
+
return jsxRuntime.jsx(IconComponent, {
|
|
40
|
+
className: className,
|
|
41
|
+
style: tslib.__assign({
|
|
42
|
+
fontSize: fontSize + 'px',
|
|
43
|
+
cursor: 'pointer'
|
|
44
|
+
}, style)
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
exports.default = CHRIcon;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { UploadProps } from 'antd/es/upload';
|
|
2
|
+
import type { UploadFile } from 'antd/es/upload/interface';
|
|
3
|
+
import { ReactNode } from 'react';
|
|
4
|
+
interface CHRUploadProps {
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
uploadType?: 'avatar' | 'file';
|
|
7
|
+
url?: string;
|
|
8
|
+
token?: string;
|
|
9
|
+
maxCount?: number;
|
|
10
|
+
limit?: number;
|
|
11
|
+
accept?: string;
|
|
12
|
+
handleChange?: (file: UploadFile, fileList: UploadFile[]) => void;
|
|
13
|
+
value: UploadFile[];
|
|
14
|
+
}
|
|
15
|
+
declare const CHRUpload: ({ value, children, uploadType, url, token, maxCount, limit, accept: acceptProp, handleChange, ...restProps }: CHRUploadProps & Omit<UploadProps, "onChange" | "fileList" | "action" | "headers" | "accept" | "maxCount">) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export default CHRUpload;
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
var antd = require('antd');
|
|
8
|
+
var react = require('react');
|
|
9
|
+
var index$1 = require('../Button/index.js');
|
|
10
|
+
var index = require('../Icon/index.js');
|
|
11
|
+
|
|
12
|
+
function _interopNamespaceDefault(e) {
|
|
13
|
+
var n = Object.create(null);
|
|
14
|
+
if (e) {
|
|
15
|
+
Object.keys(e).forEach(function (k) {
|
|
16
|
+
if (k !== 'default') {
|
|
17
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
18
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return e[k]; }
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
n.default = e;
|
|
26
|
+
return Object.freeze(n);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
var antd__namespace = /*#__PURE__*/_interopNamespaceDefault(antd);
|
|
30
|
+
|
|
31
|
+
var CHRUpload = function CHRUpload(_a) {
|
|
32
|
+
var value = _a.value,
|
|
33
|
+
children = _a.children,
|
|
34
|
+
_b = _a.uploadType,
|
|
35
|
+
uploadType = _b === void 0 ? 'file' : _b,
|
|
36
|
+
url = _a.url,
|
|
37
|
+
token = _a.token,
|
|
38
|
+
_c = _a.maxCount,
|
|
39
|
+
maxCount = _c === void 0 ? 1 : _c,
|
|
40
|
+
limit = _a.limit,
|
|
41
|
+
acceptProp = _a.accept,
|
|
42
|
+
handleChange = _a.handleChange,
|
|
43
|
+
restProps = tslib.__rest(_a, ["value", "children", "uploadType", "url", "token", "maxCount", "limit", "accept", "handleChange"]);
|
|
44
|
+
var className = restProps.className;
|
|
45
|
+
var _d = react.useState(value || []),
|
|
46
|
+
fileList = _d[0],
|
|
47
|
+
setFileList = _d[1];
|
|
48
|
+
var _e = react.useState(false),
|
|
49
|
+
previewOpen = _e[0],
|
|
50
|
+
setPreviewOpen = _e[1];
|
|
51
|
+
var _f = react.useState(''),
|
|
52
|
+
previewImage = _f[0],
|
|
53
|
+
setPreviewImage = _f[1];
|
|
54
|
+
var getDefaultAccept = react.useCallback(function () {
|
|
55
|
+
if (uploadType === 'avatar') return 'image/*';
|
|
56
|
+
return undefined;
|
|
57
|
+
}, [uploadType]);
|
|
58
|
+
var getDefaultLimit = react.useCallback(function () {
|
|
59
|
+
if (uploadType === 'avatar') return 2;
|
|
60
|
+
if (uploadType === 'file') return 10;
|
|
61
|
+
return undefined;
|
|
62
|
+
}, [uploadType]);
|
|
63
|
+
var finalAccept = acceptProp !== null && acceptProp !== void 0 ? acceptProp : getDefaultAccept();
|
|
64
|
+
var finalLimit = limit !== null && limit !== void 0 ? limit : getDefaultLimit();
|
|
65
|
+
var beforeUpload = react.useCallback(function (file) {
|
|
66
|
+
if (finalLimit) {
|
|
67
|
+
var isLimit = file.size / 1024 / 1024 < finalLimit;
|
|
68
|
+
if (!isLimit) {
|
|
69
|
+
antd__namespace.message.error("\u6587\u4EF6\u5927\u5C0F\u4E0D\u80FD\u8D85\u8FC7 ".concat(finalLimit, "MB"));
|
|
70
|
+
return antd__namespace.Upload.LIST_IGNORE;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (finalAccept) {
|
|
74
|
+
var acceptList = finalAccept.split(',').map(function (item) {
|
|
75
|
+
return item.trim();
|
|
76
|
+
});
|
|
77
|
+
var fileType_1 = file.type;
|
|
78
|
+
var fileName_1 = file.name;
|
|
79
|
+
var isAccept = acceptList.some(function (accept) {
|
|
80
|
+
if (accept.endsWith('/*')) {
|
|
81
|
+
var mainType = accept.replace('/*', '');
|
|
82
|
+
return fileType_1.startsWith(mainType + '/');
|
|
83
|
+
}
|
|
84
|
+
if (accept.startsWith('.')) {
|
|
85
|
+
return fileName_1.endsWith(accept);
|
|
86
|
+
}
|
|
87
|
+
return fileType_1 === accept;
|
|
88
|
+
});
|
|
89
|
+
if (!isAccept && acceptList.length > 0) {
|
|
90
|
+
antd__namespace.message.error("\u4E0D\u652F\u6301\u7684\u6587\u4EF6\u7C7B\u578B\uFF0C\u4EC5\u652F\u6301 ".concat(finalAccept));
|
|
91
|
+
return antd__namespace.Upload.LIST_IGNORE;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return true;
|
|
95
|
+
}, [finalLimit, finalAccept]);
|
|
96
|
+
var handleUploadChange = react.useCallback(function (info) {
|
|
97
|
+
var _a;
|
|
98
|
+
var file = info.file,
|
|
99
|
+
newFileList = info.fileList;
|
|
100
|
+
var fileUrl = file.url;
|
|
101
|
+
if (file.response) {
|
|
102
|
+
fileUrl = ((_a = file.response.file) === null || _a === void 0 ? void 0 : _a.url) || file.response.url;
|
|
103
|
+
}
|
|
104
|
+
// 1. 状态提示
|
|
105
|
+
if (file.status === 'done') {
|
|
106
|
+
antd__namespace.message.success("".concat(file.name, " \u4E0A\u4F20\u6210\u529F"));
|
|
107
|
+
file.url = fileUrl;
|
|
108
|
+
} else if (file.status === 'error') {
|
|
109
|
+
antd__namespace.message.error("".concat(file.name, " \u4E0A\u4F20\u5931\u8D25"));
|
|
110
|
+
file.status = 'error';
|
|
111
|
+
}
|
|
112
|
+
var finalFileList = maxCount ? newFileList.slice(-maxCount) : newFileList;
|
|
113
|
+
finalFileList = finalFileList.map(function (item) {
|
|
114
|
+
if (item.uid === file.uid) {
|
|
115
|
+
return tslib.__assign(tslib.__assign({}, item), {
|
|
116
|
+
url: fileUrl,
|
|
117
|
+
status: file.status
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return item;
|
|
121
|
+
});
|
|
122
|
+
setFileList(finalFileList);
|
|
123
|
+
var simplifiedList = finalFileList.map(function (e) {
|
|
124
|
+
return {
|
|
125
|
+
uid: e.uid,
|
|
126
|
+
name: e.name,
|
|
127
|
+
url: e.url || '',
|
|
128
|
+
status: e.status
|
|
129
|
+
};
|
|
130
|
+
});
|
|
131
|
+
handleChange === null || handleChange === void 0 ? void 0 : handleChange(file, simplifiedList);
|
|
132
|
+
}, [maxCount, handleChange]);
|
|
133
|
+
var headers = react.useMemo(function () {
|
|
134
|
+
if (token) {
|
|
135
|
+
return {
|
|
136
|
+
Authorization: "Bearer ".concat(token)
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
return undefined;
|
|
140
|
+
}, [token]);
|
|
141
|
+
var getBase64 = function getBase64(file) {
|
|
142
|
+
return new Promise(function (resolve, reject) {
|
|
143
|
+
var reader = new FileReader();
|
|
144
|
+
reader.readAsDataURL(file);
|
|
145
|
+
reader.onload = function () {
|
|
146
|
+
return resolve(reader.result);
|
|
147
|
+
};
|
|
148
|
+
reader.onerror = function (error) {
|
|
149
|
+
return reject(error);
|
|
150
|
+
};
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
var handlePreview = react.useCallback(function (file) {
|
|
154
|
+
return tslib.__awaiter(void 0, void 0, void 0, function () {
|
|
155
|
+
var _a;
|
|
156
|
+
return tslib.__generator(this, function (_b) {
|
|
157
|
+
switch (_b.label) {
|
|
158
|
+
case 0:
|
|
159
|
+
if (!(!file.url && !file.preview && file.originFileObj)) return [3 /*break*/, 2];
|
|
160
|
+
_a = file;
|
|
161
|
+
return [4 /*yield*/, getBase64(file.originFileObj)];
|
|
162
|
+
case 1:
|
|
163
|
+
_a.preview = _b.sent();
|
|
164
|
+
_b.label = 2;
|
|
165
|
+
case 2:
|
|
166
|
+
setPreviewImage(file.url || file.preview);
|
|
167
|
+
setPreviewOpen(true);
|
|
168
|
+
return [2 /*return*/];
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
}, []);
|
|
173
|
+
var avatarUploadButton = jsxRuntime.jsxs("button", {
|
|
174
|
+
style: {
|
|
175
|
+
border: 0,
|
|
176
|
+
background: 'none'
|
|
177
|
+
},
|
|
178
|
+
type: "button",
|
|
179
|
+
children: [jsxRuntime.jsx(index.default, {
|
|
180
|
+
icon: "PlusOutlined"
|
|
181
|
+
}), jsxRuntime.jsx("div", {
|
|
182
|
+
style: {
|
|
183
|
+
marginTop: 8
|
|
184
|
+
},
|
|
185
|
+
children: "\u4E0A\u4F20"
|
|
186
|
+
})]
|
|
187
|
+
});
|
|
188
|
+
var renderByType = function renderByType() {
|
|
189
|
+
if (uploadType === 'avatar') {
|
|
190
|
+
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
191
|
+
children: [jsxRuntime.jsx(antd__namespace.Upload, tslib.__assign({
|
|
192
|
+
name: "file",
|
|
193
|
+
listType: "picture-card",
|
|
194
|
+
className: className,
|
|
195
|
+
action: url,
|
|
196
|
+
headers: headers,
|
|
197
|
+
accept: finalAccept,
|
|
198
|
+
fileList: fileList,
|
|
199
|
+
beforeUpload: beforeUpload,
|
|
200
|
+
onChange: handleUploadChange,
|
|
201
|
+
onPreview: handlePreview,
|
|
202
|
+
maxCount: 1
|
|
203
|
+
}, restProps, {
|
|
204
|
+
children: fileList.length >= 1 ? null : avatarUploadButton
|
|
205
|
+
})), previewImage && jsxRuntime.jsx(antd.Image, {
|
|
206
|
+
style: {
|
|
207
|
+
display: 'none'
|
|
208
|
+
},
|
|
209
|
+
preview: {
|
|
210
|
+
open: previewOpen,
|
|
211
|
+
onOpenChange: function onOpenChange(visible) {
|
|
212
|
+
return setPreviewOpen(visible);
|
|
213
|
+
},
|
|
214
|
+
afterOpenChange: function afterOpenChange(visible) {
|
|
215
|
+
return !visible && setPreviewImage('');
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
src: previewImage
|
|
219
|
+
})]
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
return jsxRuntime.jsx(antd__namespace.Upload, tslib.__assign({
|
|
223
|
+
className: className,
|
|
224
|
+
action: url,
|
|
225
|
+
headers: headers,
|
|
226
|
+
accept: finalAccept,
|
|
227
|
+
beforeUpload: beforeUpload,
|
|
228
|
+
fileList: fileList,
|
|
229
|
+
onChange: handleUploadChange,
|
|
230
|
+
maxCount: maxCount,
|
|
231
|
+
multiple: maxCount > 1
|
|
232
|
+
}, restProps, {
|
|
233
|
+
children: children || jsxRuntime.jsxs(index$1.default, {
|
|
234
|
+
children: [jsxRuntime.jsx(index.default, {
|
|
235
|
+
icon: "UploadOutlined"
|
|
236
|
+
}), "\u4E0A\u4F20\u6587\u4EF6"]
|
|
237
|
+
})
|
|
238
|
+
}));
|
|
239
|
+
};
|
|
240
|
+
return renderByType();
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
exports.default = CHRUpload;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var antd = require('antd');
|
|
6
|
+
|
|
7
|
+
function _interopNamespaceDefault(e) {
|
|
8
|
+
var n = Object.create(null);
|
|
9
|
+
if (e) {
|
|
10
|
+
Object.keys(e).forEach(function (k) {
|
|
11
|
+
if (k !== 'default') {
|
|
12
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
13
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () { return e[k]; }
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
n.default = e;
|
|
21
|
+
return Object.freeze(n);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
var antd__namespace = /*#__PURE__*/_interopNamespaceDefault(antd);
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
exports.default = antd__namespace;
|
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./Button/index.js');
|
|
4
|
+
var index$1 = require('./Icon/index.js');
|
|
5
|
+
var index$2 = require('./Upload/index.js');
|
|
6
|
+
var antd = require('antd');
|
|
7
|
+
|
|
8
|
+
function _interopNamespaceDefault(e) {
|
|
9
|
+
var n = Object.create(null);
|
|
10
|
+
if (e) {
|
|
11
|
+
Object.keys(e).forEach(function (k) {
|
|
12
|
+
if (k !== 'default') {
|
|
13
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
14
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () { return e[k]; }
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
n.default = e;
|
|
22
|
+
return Object.freeze(n);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
var antd__namespace = /*#__PURE__*/_interopNamespaceDefault(antd);
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
exports.CHRButton = index.default;
|
|
30
|
+
exports.CHRIcon = index$1.default;
|
|
31
|
+
exports.CHRUpload = index$2.default;
|
|
32
|
+
exports.antd = antd__namespace;
|