@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
package/dist/index.js
ADDED
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
(function (global, factory) {
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('tslib'), require('react/jsx-runtime'), require('antd'), require('@ant-design/icons'), require('react')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', 'tslib', 'react/jsx-runtime', 'antd', '@ant-design/icons', 'react'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.KcComponents = {}, global.tslib, global.jsxRuntime, global.antd, global.Icons, global.React));
|
|
5
|
+
})(this, (function (exports, tslib, jsxRuntime, antd, Icons, react) { 'use strict';
|
|
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
|
+
var Icons__namespace = /*#__PURE__*/_interopNamespaceDefault(Icons);
|
|
26
|
+
|
|
27
|
+
var CHRButton = function CHRButton(_a) {
|
|
28
|
+
var children = _a.children,
|
|
29
|
+
title = _a.title,
|
|
30
|
+
_b = _a.defaultText,
|
|
31
|
+
defaultText = _b === void 0 ? '按钮' : _b,
|
|
32
|
+
onClick = _a.onClick,
|
|
33
|
+
restProps = tslib.__rest(_a, ["children", "title", "defaultText", "onClick"]);
|
|
34
|
+
var handleClick = function handleClick(e) {
|
|
35
|
+
console.log('CHRButton 内部点击处理');
|
|
36
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(e);
|
|
37
|
+
};
|
|
38
|
+
// 决定显示内容
|
|
39
|
+
var content;
|
|
40
|
+
content = children !== undefined ? children : title || defaultText;
|
|
41
|
+
return jsxRuntime.jsx(antd.Button, tslib.__assign({}, restProps, {
|
|
42
|
+
onClick: handleClick,
|
|
43
|
+
children: content
|
|
44
|
+
}));
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
var CHRIcon = function CHRIcon(_a) {
|
|
48
|
+
var icon = _a.icon,
|
|
49
|
+
_b = _a.fontSize,
|
|
50
|
+
fontSize = _b === void 0 ? 20 : _b,
|
|
51
|
+
className = _a.className,
|
|
52
|
+
style = _a.style;
|
|
53
|
+
var IconComponent = Icons__namespace[icon];
|
|
54
|
+
if (!IconComponent) {
|
|
55
|
+
console.warn("Icon \"".concat(icon, "\" is not a valid icon component"));
|
|
56
|
+
return jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
|
57
|
+
}
|
|
58
|
+
return jsxRuntime.jsx(IconComponent, {
|
|
59
|
+
className: className,
|
|
60
|
+
style: tslib.__assign({
|
|
61
|
+
fontSize: fontSize + 'px',
|
|
62
|
+
cursor: 'pointer'
|
|
63
|
+
}, style)
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
var CHRUpload = function CHRUpload(_a) {
|
|
68
|
+
var value = _a.value,
|
|
69
|
+
children = _a.children,
|
|
70
|
+
_b = _a.uploadType,
|
|
71
|
+
uploadType = _b === void 0 ? 'file' : _b,
|
|
72
|
+
url = _a.url,
|
|
73
|
+
token = _a.token,
|
|
74
|
+
_c = _a.maxCount,
|
|
75
|
+
maxCount = _c === void 0 ? 1 : _c,
|
|
76
|
+
limit = _a.limit,
|
|
77
|
+
acceptProp = _a.accept,
|
|
78
|
+
handleChange = _a.handleChange,
|
|
79
|
+
restProps = tslib.__rest(_a, ["value", "children", "uploadType", "url", "token", "maxCount", "limit", "accept", "handleChange"]);
|
|
80
|
+
var className = restProps.className;
|
|
81
|
+
var _d = react.useState(value || []),
|
|
82
|
+
fileList = _d[0],
|
|
83
|
+
setFileList = _d[1];
|
|
84
|
+
var _e = react.useState(false),
|
|
85
|
+
previewOpen = _e[0],
|
|
86
|
+
setPreviewOpen = _e[1];
|
|
87
|
+
var _f = react.useState(''),
|
|
88
|
+
previewImage = _f[0],
|
|
89
|
+
setPreviewImage = _f[1];
|
|
90
|
+
var getDefaultAccept = react.useCallback(function () {
|
|
91
|
+
if (uploadType === 'avatar') return 'image/*';
|
|
92
|
+
return undefined;
|
|
93
|
+
}, [uploadType]);
|
|
94
|
+
var getDefaultLimit = react.useCallback(function () {
|
|
95
|
+
if (uploadType === 'avatar') return 2;
|
|
96
|
+
if (uploadType === 'file') return 10;
|
|
97
|
+
return undefined;
|
|
98
|
+
}, [uploadType]);
|
|
99
|
+
var finalAccept = acceptProp !== null && acceptProp !== void 0 ? acceptProp : getDefaultAccept();
|
|
100
|
+
var finalLimit = limit !== null && limit !== void 0 ? limit : getDefaultLimit();
|
|
101
|
+
var beforeUpload = react.useCallback(function (file) {
|
|
102
|
+
if (finalLimit) {
|
|
103
|
+
var isLimit = file.size / 1024 / 1024 < finalLimit;
|
|
104
|
+
if (!isLimit) {
|
|
105
|
+
antd__namespace.message.error("\u6587\u4EF6\u5927\u5C0F\u4E0D\u80FD\u8D85\u8FC7 ".concat(finalLimit, "MB"));
|
|
106
|
+
return antd__namespace.Upload.LIST_IGNORE;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (finalAccept) {
|
|
110
|
+
var acceptList = finalAccept.split(',').map(function (item) {
|
|
111
|
+
return item.trim();
|
|
112
|
+
});
|
|
113
|
+
var fileType_1 = file.type;
|
|
114
|
+
var fileName_1 = file.name;
|
|
115
|
+
var isAccept = acceptList.some(function (accept) {
|
|
116
|
+
if (accept.endsWith('/*')) {
|
|
117
|
+
var mainType = accept.replace('/*', '');
|
|
118
|
+
return fileType_1.startsWith(mainType + '/');
|
|
119
|
+
}
|
|
120
|
+
if (accept.startsWith('.')) {
|
|
121
|
+
return fileName_1.endsWith(accept);
|
|
122
|
+
}
|
|
123
|
+
return fileType_1 === accept;
|
|
124
|
+
});
|
|
125
|
+
if (!isAccept && acceptList.length > 0) {
|
|
126
|
+
antd__namespace.message.error("\u4E0D\u652F\u6301\u7684\u6587\u4EF6\u7C7B\u578B\uFF0C\u4EC5\u652F\u6301 ".concat(finalAccept));
|
|
127
|
+
return antd__namespace.Upload.LIST_IGNORE;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return true;
|
|
131
|
+
}, [finalLimit, finalAccept]);
|
|
132
|
+
var handleUploadChange = react.useCallback(function (info) {
|
|
133
|
+
var _a;
|
|
134
|
+
var file = info.file,
|
|
135
|
+
newFileList = info.fileList;
|
|
136
|
+
var fileUrl = file.url;
|
|
137
|
+
if (file.response) {
|
|
138
|
+
fileUrl = ((_a = file.response.file) === null || _a === void 0 ? void 0 : _a.url) || file.response.url;
|
|
139
|
+
}
|
|
140
|
+
// 1. 状态提示
|
|
141
|
+
if (file.status === 'done') {
|
|
142
|
+
antd__namespace.message.success("".concat(file.name, " \u4E0A\u4F20\u6210\u529F"));
|
|
143
|
+
file.url = fileUrl;
|
|
144
|
+
} else if (file.status === 'error') {
|
|
145
|
+
antd__namespace.message.error("".concat(file.name, " \u4E0A\u4F20\u5931\u8D25"));
|
|
146
|
+
file.status = 'error';
|
|
147
|
+
}
|
|
148
|
+
var finalFileList = maxCount ? newFileList.slice(-maxCount) : newFileList;
|
|
149
|
+
finalFileList = finalFileList.map(function (item) {
|
|
150
|
+
if (item.uid === file.uid) {
|
|
151
|
+
return tslib.__assign(tslib.__assign({}, item), {
|
|
152
|
+
url: fileUrl,
|
|
153
|
+
status: file.status
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
return item;
|
|
157
|
+
});
|
|
158
|
+
setFileList(finalFileList);
|
|
159
|
+
var simplifiedList = finalFileList.map(function (e) {
|
|
160
|
+
return {
|
|
161
|
+
uid: e.uid,
|
|
162
|
+
name: e.name,
|
|
163
|
+
url: e.url || '',
|
|
164
|
+
status: e.status
|
|
165
|
+
};
|
|
166
|
+
});
|
|
167
|
+
handleChange === null || handleChange === void 0 ? void 0 : handleChange(file, simplifiedList);
|
|
168
|
+
}, [maxCount, handleChange]);
|
|
169
|
+
var headers = react.useMemo(function () {
|
|
170
|
+
if (token) {
|
|
171
|
+
return {
|
|
172
|
+
Authorization: "Bearer ".concat(token)
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
return undefined;
|
|
176
|
+
}, [token]);
|
|
177
|
+
var getBase64 = function getBase64(file) {
|
|
178
|
+
return new Promise(function (resolve, reject) {
|
|
179
|
+
var reader = new FileReader();
|
|
180
|
+
reader.readAsDataURL(file);
|
|
181
|
+
reader.onload = function () {
|
|
182
|
+
return resolve(reader.result);
|
|
183
|
+
};
|
|
184
|
+
reader.onerror = function (error) {
|
|
185
|
+
return reject(error);
|
|
186
|
+
};
|
|
187
|
+
});
|
|
188
|
+
};
|
|
189
|
+
var handlePreview = react.useCallback(function (file) {
|
|
190
|
+
return tslib.__awaiter(void 0, void 0, void 0, function () {
|
|
191
|
+
var _a;
|
|
192
|
+
return tslib.__generator(this, function (_b) {
|
|
193
|
+
switch (_b.label) {
|
|
194
|
+
case 0:
|
|
195
|
+
if (!(!file.url && !file.preview && file.originFileObj)) return [3 /*break*/, 2];
|
|
196
|
+
_a = file;
|
|
197
|
+
return [4 /*yield*/, getBase64(file.originFileObj)];
|
|
198
|
+
case 1:
|
|
199
|
+
_a.preview = _b.sent();
|
|
200
|
+
_b.label = 2;
|
|
201
|
+
case 2:
|
|
202
|
+
setPreviewImage(file.url || file.preview);
|
|
203
|
+
setPreviewOpen(true);
|
|
204
|
+
return [2 /*return*/];
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
}, []);
|
|
209
|
+
var avatarUploadButton = jsxRuntime.jsxs("button", {
|
|
210
|
+
style: {
|
|
211
|
+
border: 0,
|
|
212
|
+
background: 'none'
|
|
213
|
+
},
|
|
214
|
+
type: "button",
|
|
215
|
+
children: [jsxRuntime.jsx(CHRIcon, {
|
|
216
|
+
icon: "PlusOutlined"
|
|
217
|
+
}), jsxRuntime.jsx("div", {
|
|
218
|
+
style: {
|
|
219
|
+
marginTop: 8
|
|
220
|
+
},
|
|
221
|
+
children: "\u4E0A\u4F20"
|
|
222
|
+
})]
|
|
223
|
+
});
|
|
224
|
+
var renderByType = function renderByType() {
|
|
225
|
+
if (uploadType === 'avatar') {
|
|
226
|
+
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
227
|
+
children: [jsxRuntime.jsx(antd__namespace.Upload, tslib.__assign({
|
|
228
|
+
name: "file",
|
|
229
|
+
listType: "picture-card",
|
|
230
|
+
className: className,
|
|
231
|
+
action: url,
|
|
232
|
+
headers: headers,
|
|
233
|
+
accept: finalAccept,
|
|
234
|
+
fileList: fileList,
|
|
235
|
+
beforeUpload: beforeUpload,
|
|
236
|
+
onChange: handleUploadChange,
|
|
237
|
+
onPreview: handlePreview,
|
|
238
|
+
maxCount: 1
|
|
239
|
+
}, restProps, {
|
|
240
|
+
children: fileList.length >= 1 ? null : avatarUploadButton
|
|
241
|
+
})), previewImage && jsxRuntime.jsx(antd.Image, {
|
|
242
|
+
style: {
|
|
243
|
+
display: 'none'
|
|
244
|
+
},
|
|
245
|
+
preview: {
|
|
246
|
+
open: previewOpen,
|
|
247
|
+
onOpenChange: function onOpenChange(visible) {
|
|
248
|
+
return setPreviewOpen(visible);
|
|
249
|
+
},
|
|
250
|
+
afterOpenChange: function afterOpenChange(visible) {
|
|
251
|
+
return !visible && setPreviewImage('');
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
src: previewImage
|
|
255
|
+
})]
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
return jsxRuntime.jsx(antd__namespace.Upload, tslib.__assign({
|
|
259
|
+
className: className,
|
|
260
|
+
action: url,
|
|
261
|
+
headers: headers,
|
|
262
|
+
accept: finalAccept,
|
|
263
|
+
beforeUpload: beforeUpload,
|
|
264
|
+
fileList: fileList,
|
|
265
|
+
onChange: handleUploadChange,
|
|
266
|
+
maxCount: maxCount,
|
|
267
|
+
multiple: maxCount > 1
|
|
268
|
+
}, restProps, {
|
|
269
|
+
children: children || jsxRuntime.jsxs(CHRButton, {
|
|
270
|
+
children: [jsxRuntime.jsx(CHRIcon, {
|
|
271
|
+
icon: "UploadOutlined"
|
|
272
|
+
}), "\u4E0A\u4F20\u6587\u4EF6"]
|
|
273
|
+
})
|
|
274
|
+
}));
|
|
275
|
+
};
|
|
276
|
+
return renderByType();
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
exports.antd = antd__namespace;
|
|
280
|
+
exports.CHRButton = CHRButton;
|
|
281
|
+
exports.CHRIcon = CHRIcon;
|
|
282
|
+
exports.CHRUpload = CHRUpload;
|
|
283
|
+
|
|
284
|
+
}));
|
|
285
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/Button/index.tsx","../src/Icon/index.tsx","../src/Upload/index.tsx"],"sourcesContent":["import { Button } from 'antd';\nimport React, { type FC, ReactNode } from 'react';\n\ninterface CHRButtonProps {\n children?: ReactNode;\n title?: string;\n defaultText?: string;\n onClick?: React.MouseEventHandler<HTMLElement>;\n}\n\nconst CHRButton: FC<CHRButtonProps> = ({\n children,\n title,\n defaultText = '按钮',\n onClick,\n ...restProps\n}) => {\n const handleClick: React.MouseEventHandler<HTMLElement> = (e) => {\n console.log('CHRButton 内部点击处理');\n onClick?.(e);\n };\n\n // 决定显示内容\n let content: ReactNode;\n content = children !== undefined ? children : title || defaultText;\n\n return (\n <Button {...restProps} onClick={handleClick}>\n {content}\n </Button>\n );\n};\n\nexport default CHRButton;\n","import * as Icons from '@ant-design/icons';\nimport React, { FC } from 'react';\n\ninterface ChrIconProps {\n icon: string;\n fontSize?: number;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst CHRIcon: FC<ChrIconProps> = ({\n icon,\n fontSize = 20,\n className,\n style,\n}) => {\n const IconComponent = (Icons as any)[icon];\n if (!IconComponent) {\n console.warn(`Icon \"${icon}\" is not a valid icon component`);\n return <></>;\n }\n return (\n <IconComponent\n className={className}\n style={{\n fontSize: fontSize + 'px',\n cursor: 'pointer',\n ...style,\n }}\n />\n );\n};\n\nexport default CHRIcon;\n","import { Image } from 'antd';\nimport type { UploadProps } from 'antd/es/upload';\nimport type { UploadChangeParam, UploadFile } from 'antd/es/upload/interface';\nimport { ReactNode, useCallback, useMemo, useState } from 'react';\nimport { antd, CHRButton, CHRIcon } from '..';\n\ninterface CHRUploadProps {\n children?: ReactNode;\n uploadType?: 'avatar' | 'file';\n url?: string;\n token?: string;\n maxCount?: number;\n limit?: number;\n accept?: string;\n handleChange?: (file: UploadFile, fileList: UploadFile[]) => void;\n value: UploadFile[];\n}\n\nconst CHRUpload = ({\n value,\n children,\n uploadType = 'file',\n url,\n token,\n maxCount = 1,\n limit,\n accept: acceptProp,\n handleChange,\n ...restProps\n}: CHRUploadProps &\n Omit<\n UploadProps,\n 'onChange' | 'fileList' | 'action' | 'headers' | 'accept' | 'maxCount'\n >) => {\n const className = restProps.className;\n const [fileList, setFileList] = useState<UploadFile[]>(value || []);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [previewImage, setPreviewImage] = useState('');\n\n const getDefaultAccept = useCallback(() => {\n if (uploadType === 'avatar') return 'image/*';\n return undefined;\n }, [uploadType]);\n\n const getDefaultLimit = useCallback(() => {\n if (uploadType === 'avatar') return 2;\n if (uploadType === 'file') return 10;\n return undefined;\n }, [uploadType]);\n\n const finalAccept = acceptProp ?? getDefaultAccept();\n const finalLimit = limit ?? getDefaultLimit();\n\n const beforeUpload = useCallback(\n (file: File) => {\n if (finalLimit) {\n const isLimit = file.size / 1024 / 1024 < finalLimit;\n if (!isLimit) {\n antd.message.error(`文件大小不能超过 ${finalLimit}MB`);\n return antd.Upload.LIST_IGNORE;\n }\n }\n if (finalAccept) {\n const acceptList = finalAccept.split(',').map((item) => item.trim());\n const fileType = file.type;\n const fileName = file.name;\n const isAccept = acceptList.some((accept) => {\n if (accept.endsWith('/*')) {\n const mainType = accept.replace('/*', '');\n return fileType.startsWith(mainType + '/');\n }\n if (accept.startsWith('.')) {\n return fileName.endsWith(accept);\n }\n return fileType === accept;\n });\n if (!isAccept && acceptList.length > 0) {\n antd.message.error(`不支持的文件类型,仅支持 ${finalAccept}`);\n return antd.Upload.LIST_IGNORE;\n }\n }\n return true;\n },\n [finalLimit, finalAccept],\n );\n\n const handleUploadChange = useCallback(\n (info: UploadChangeParam<UploadFile>) => {\n const { file, fileList: newFileList } = info;\n\n let fileUrl = file.url;\n if (file.response) {\n fileUrl = file.response.file?.url || file.response.url;\n }\n\n // 1. 状态提示\n if (file.status === 'done') {\n antd.message.success(`${file.name} 上传成功`);\n file.url = fileUrl;\n } else if (file.status === 'error') {\n antd.message.error(`${file.name} 上传失败`);\n file.status = 'error';\n }\n\n let finalFileList = maxCount ? newFileList.slice(-maxCount) : newFileList;\n\n finalFileList = finalFileList.map((item) => {\n if (item.uid === file.uid) {\n return { ...item, url: fileUrl, status: file.status };\n }\n return item;\n });\n\n setFileList(finalFileList);\n\n const simplifiedList = finalFileList.map((e: UploadFile) => ({\n uid: e.uid,\n name: e.name,\n url: e.url || '',\n status: e.status,\n }));\n handleChange?.(file, simplifiedList);\n },\n [maxCount, handleChange],\n );\n\n const headers = useMemo(() => {\n if (token) {\n return { Authorization: `Bearer ${token}` };\n }\n return undefined;\n }, [token]);\n\n const getBase64 = (file: File): Promise<string> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n\n const handlePreview = useCallback(async (file: UploadFile) => {\n if (!file.url && !file.preview && file.originFileObj) {\n file.preview = await getBase64(file.originFileObj as File);\n }\n setPreviewImage(file.url || (file.preview as string));\n setPreviewOpen(true);\n }, []);\n\n const avatarUploadButton = (\n <button style={{ border: 0, background: 'none' }} type=\"button\">\n <CHRIcon icon=\"PlusOutlined\" />\n <div style={{ marginTop: 8 }}>上传</div>\n </button>\n );\n\n const renderByType = () => {\n if (uploadType === 'avatar') {\n return (\n <>\n <antd.Upload\n name=\"file\"\n listType=\"picture-card\"\n className={className}\n action={url}\n headers={headers}\n accept={finalAccept}\n fileList={fileList}\n beforeUpload={beforeUpload}\n onChange={handleUploadChange}\n onPreview={handlePreview}\n maxCount={1}\n {...restProps}\n >\n {fileList.length >= 1 ? null : avatarUploadButton}\n </antd.Upload>\n {previewImage && (\n <Image\n style={{ display: 'none' }}\n preview={{\n open: previewOpen,\n onOpenChange: (visible) => setPreviewOpen(visible),\n afterOpenChange: (visible) => !visible && setPreviewImage(''),\n }}\n src={previewImage}\n />\n )}\n </>\n );\n }\n\n return (\n <antd.Upload\n className={className}\n action={url}\n headers={headers}\n accept={finalAccept}\n beforeUpload={beforeUpload}\n fileList={fileList}\n onChange={handleUploadChange}\n maxCount={maxCount}\n multiple={maxCount > 1}\n {...restProps}\n >\n {children || (\n <CHRButton>\n <CHRIcon icon=\"UploadOutlined\" />\n 上传文件\n </CHRButton>\n )}\n </antd.Upload>\n );\n };\n\n return renderByType();\n};\n\nexport default CHRUpload;\n"],"names":["CHRButton","_a","children","title","_b","defaultText","onClick","restProps","__rest","handleClick","e","console","log","content","undefined","_jsx","Button","__assign","CHRIcon","icon","fontSize","className","style","IconComponent","Icons","warn","cursor","CHRUpload","value","uploadType","url","token","_c","maxCount","limit","acceptProp","accept","handleChange","_d","useState","fileList","setFileList","_e","previewOpen","setPreviewOpen","_f","previewImage","setPreviewImage","getDefaultAccept","useCallback","getDefaultLimit","finalAccept","finalLimit","beforeUpload","file","isLimit","size","antd","message","error","concat","Upload","LIST_IGNORE","acceptList","split","map","item","trim","fileType_1","type","fileName_1","name","isAccept","some","endsWith","mainType","replace","startsWith","length","handleUploadChange","info","newFileList","fileUrl","response","status","success","finalFileList","slice","uid","simplifiedList","headers","useMemo","Authorization","getBase64","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","result","onerror","handlePreview","__awaiter","preview","originFileObj","sent","avatarUploadButton","_jsxs","border","background","marginTop","renderByType","_Fragment","listType","action","onChange","onPreview","Image","display","open","onOpenChange","visible","afterOpenChange","src","multiple"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("tslib"),require("react/jsx-runtime"),require("antd"),require("@ant-design/icons"),require("react")):"function"==typeof define&&define.amd?define(["exports","tslib","react/jsx-runtime","antd","@ant-design/icons","react"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).KcComponents={},e.tslib,e.jsxRuntime,e.antd,e.Icons,e.react)}(this,(function(e,n,t,r,a,i){"use strict";function o(e){var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var s=o(r),u=o(a),l=function(e){var a,i=e.children,o=e.title,s=e.defaultText,u=void 0===s?"按钮":s,l=e.onClick,c=n.__rest(e,["children","title","defaultText","onClick"]);return a=void 0!==i?i:o||u,t.jsx(r.Button,n.__assign({},c,{onClick:function(e){console.log("CHRButton 内部点击处理"),null==l||l(e)},children:a}))},c=function(e){var r=e.icon,a=e.fontSize,i=void 0===a?20:a,o=e.className,s=e.style,l=u[r];return l?t.jsx(l,{className:o,style:n.__assign({fontSize:i+"px",cursor:"pointer"},s)}):(console.warn('Icon "'.concat(r,'" is not a valid icon component')),t.jsx(t.Fragment,{}))};e.antd=s,e.CHRButton=l,e.CHRIcon=c,e.CHRUpload=function(e){var a=e.value,o=e.children,u=e.uploadType,d=void 0===u?"file":u,f=e.url,p=e.token,m=e.maxCount,v=void 0===m?1:m,g=e.limit,h=e.accept,b=e.handleChange,x=n.__rest(e,["value","children","uploadType","url","token","maxCount","limit","accept","handleChange"]),j=x.className,C=i.useState(a||[]),_=C[0],y=C[1],O=i.useState(!1),k=O[0],w=O[1],T=i.useState(""),R=T[0],U=T[1],I=i.useCallback((function(){if("avatar"===d)return"image/*"}),[d]),N=i.useCallback((function(){return"avatar"===d?2:"file"===d?10:void 0}),[d]),S=null!=h?h:I(),L=null!=g?g:N(),q=i.useCallback((function(e){if(L&&!(e.size/1024/1024<L))return s.message.error("文件大小不能超过 ".concat(L,"MB")),s.Upload.LIST_IGNORE;if(S){var n=S.split(",").map((function(e){return e.trim()})),t=e.type,r=e.name;if(!n.some((function(e){if(e.endsWith("/*")){var n=e.replace("/*","");return t.startsWith(n+"/")}return e.startsWith(".")?r.endsWith(e):t===e}))&&n.length>0)return s.message.error("不支持的文件类型,仅支持 ".concat(S)),s.Upload.LIST_IGNORE}return!0}),[L,S]),z=i.useCallback((function(e){var t,r=e.file,a=e.fileList,i=r.url;r.response&&(i=(null===(t=r.response.file)||void 0===t?void 0:t.url)||r.response.url),"done"===r.status?(s.message.success("".concat(r.name," 上传成功")),r.url=i):"error"===r.status&&(s.message.error("".concat(r.name," 上传失败")),r.status="error");var o=v?a.slice(-v):a;o=o.map((function(e){return e.uid===r.uid?n.__assign(n.__assign({},e),{url:i,status:r.status}):e})),y(o);var u=o.map((function(e){return{uid:e.uid,name:e.name,url:e.url||"",status:e.status}}));null==b||b(r,u)}),[v,b]),B=i.useMemo((function(){if(p)return{Authorization:"Bearer ".concat(p)}}),[p]),F=function(e){return new Promise((function(n,t){var r=new FileReader;r.readAsDataURL(e),r.onload=function(){return n(r.result)},r.onerror=function(e){return t(e)}}))},P=i.useCallback((function(e){return n.__awaiter(void 0,void 0,void 0,(function(){var t;return n.__generator(this,(function(n){switch(n.label){case 0:return e.url||e.preview||!e.originFileObj?[3,2]:(t=e,[4,F(e.originFileObj)]);case 1:t.preview=n.sent(),n.label=2;case 2:return U(e.url||e.preview),w(!0),[2]}}))}))}),[]),H=t.jsxs("button",{style:{border:0,background:"none"},type:"button",children:[t.jsx(c,{icon:"PlusOutlined"}),t.jsx("div",{style:{marginTop:8},children:"上传"})]});return"avatar"===d?t.jsxs(t.Fragment,{children:[t.jsx(s.Upload,n.__assign({name:"file",listType:"picture-card",className:j,action:f,headers:B,accept:S,fileList:_,beforeUpload:q,onChange:z,onPreview:P,maxCount:1},x,{children:_.length>=1?null:H})),R&&t.jsx(r.Image,{style:{display:"none"},preview:{open:k,onOpenChange:function(e){return w(e)},afterOpenChange:function(e){return!e&&U("")}},src:R})]}):t.jsx(s.Upload,n.__assign({className:j,action:f,headers:B,accept:S,beforeUpload:q,fileList:_,onChange:z,maxCount:v,multiple:v>1},x,{children:o||t.jsxs(l,{children:[t.jsx(c,{icon:"UploadOutlined"}),"上传文件"]})}))}}));
|
|
2
|
+
//# sourceMappingURL=index.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.min.js","sources":["../src/Button/index.tsx","../src/Icon/index.tsx","../src/Upload/index.tsx"],"sourcesContent":["import { Button } from 'antd';\nimport React, { type FC, ReactNode } from 'react';\n\ninterface CHRButtonProps {\n children?: ReactNode;\n title?: string;\n defaultText?: string;\n onClick?: React.MouseEventHandler<HTMLElement>;\n}\n\nconst CHRButton: FC<CHRButtonProps> = ({\n children,\n title,\n defaultText = '按钮',\n onClick,\n ...restProps\n}) => {\n const handleClick: React.MouseEventHandler<HTMLElement> = (e) => {\n console.log('CHRButton 内部点击处理');\n onClick?.(e);\n };\n\n // 决定显示内容\n let content: ReactNode;\n content = children !== undefined ? children : title || defaultText;\n\n return (\n <Button {...restProps} onClick={handleClick}>\n {content}\n </Button>\n );\n};\n\nexport default CHRButton;\n","import * as Icons from '@ant-design/icons';\nimport React, { FC } from 'react';\n\ninterface ChrIconProps {\n icon: string;\n fontSize?: number;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst CHRIcon: FC<ChrIconProps> = ({\n icon,\n fontSize = 20,\n className,\n style,\n}) => {\n const IconComponent = (Icons as any)[icon];\n if (!IconComponent) {\n console.warn(`Icon \"${icon}\" is not a valid icon component`);\n return <></>;\n }\n return (\n <IconComponent\n className={className}\n style={{\n fontSize: fontSize + 'px',\n cursor: 'pointer',\n ...style,\n }}\n />\n );\n};\n\nexport default CHRIcon;\n","import { Image } from 'antd';\nimport type { UploadProps } from 'antd/es/upload';\nimport type { UploadChangeParam, UploadFile } from 'antd/es/upload/interface';\nimport { ReactNode, useCallback, useMemo, useState } from 'react';\nimport { antd, CHRButton, CHRIcon } from '..';\n\ninterface CHRUploadProps {\n children?: ReactNode;\n uploadType?: 'avatar' | 'file';\n url?: string;\n token?: string;\n maxCount?: number;\n limit?: number;\n accept?: string;\n handleChange?: (file: UploadFile, fileList: UploadFile[]) => void;\n value: UploadFile[];\n}\n\nconst CHRUpload = ({\n value,\n children,\n uploadType = 'file',\n url,\n token,\n maxCount = 1,\n limit,\n accept: acceptProp,\n handleChange,\n ...restProps\n}: CHRUploadProps &\n Omit<\n UploadProps,\n 'onChange' | 'fileList' | 'action' | 'headers' | 'accept' | 'maxCount'\n >) => {\n const className = restProps.className;\n const [fileList, setFileList] = useState<UploadFile[]>(value || []);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [previewImage, setPreviewImage] = useState('');\n\n const getDefaultAccept = useCallback(() => {\n if (uploadType === 'avatar') return 'image/*';\n return undefined;\n }, [uploadType]);\n\n const getDefaultLimit = useCallback(() => {\n if (uploadType === 'avatar') return 2;\n if (uploadType === 'file') return 10;\n return undefined;\n }, [uploadType]);\n\n const finalAccept = acceptProp ?? getDefaultAccept();\n const finalLimit = limit ?? getDefaultLimit();\n\n const beforeUpload = useCallback(\n (file: File) => {\n if (finalLimit) {\n const isLimit = file.size / 1024 / 1024 < finalLimit;\n if (!isLimit) {\n antd.message.error(`文件大小不能超过 ${finalLimit}MB`);\n return antd.Upload.LIST_IGNORE;\n }\n }\n if (finalAccept) {\n const acceptList = finalAccept.split(',').map((item) => item.trim());\n const fileType = file.type;\n const fileName = file.name;\n const isAccept = acceptList.some((accept) => {\n if (accept.endsWith('/*')) {\n const mainType = accept.replace('/*', '');\n return fileType.startsWith(mainType + '/');\n }\n if (accept.startsWith('.')) {\n return fileName.endsWith(accept);\n }\n return fileType === accept;\n });\n if (!isAccept && acceptList.length > 0) {\n antd.message.error(`不支持的文件类型,仅支持 ${finalAccept}`);\n return antd.Upload.LIST_IGNORE;\n }\n }\n return true;\n },\n [finalLimit, finalAccept],\n );\n\n const handleUploadChange = useCallback(\n (info: UploadChangeParam<UploadFile>) => {\n const { file, fileList: newFileList } = info;\n\n let fileUrl = file.url;\n if (file.response) {\n fileUrl = file.response.file?.url || file.response.url;\n }\n\n // 1. 状态提示\n if (file.status === 'done') {\n antd.message.success(`${file.name} 上传成功`);\n file.url = fileUrl;\n } else if (file.status === 'error') {\n antd.message.error(`${file.name} 上传失败`);\n file.status = 'error';\n }\n\n let finalFileList = maxCount ? newFileList.slice(-maxCount) : newFileList;\n\n finalFileList = finalFileList.map((item) => {\n if (item.uid === file.uid) {\n return { ...item, url: fileUrl, status: file.status };\n }\n return item;\n });\n\n setFileList(finalFileList);\n\n const simplifiedList = finalFileList.map((e: UploadFile) => ({\n uid: e.uid,\n name: e.name,\n url: e.url || '',\n status: e.status,\n }));\n handleChange?.(file, simplifiedList);\n },\n [maxCount, handleChange],\n );\n\n const headers = useMemo(() => {\n if (token) {\n return { Authorization: `Bearer ${token}` };\n }\n return undefined;\n }, [token]);\n\n const getBase64 = (file: File): Promise<string> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n\n const handlePreview = useCallback(async (file: UploadFile) => {\n if (!file.url && !file.preview && file.originFileObj) {\n file.preview = await getBase64(file.originFileObj as File);\n }\n setPreviewImage(file.url || (file.preview as string));\n setPreviewOpen(true);\n }, []);\n\n const avatarUploadButton = (\n <button style={{ border: 0, background: 'none' }} type=\"button\">\n <CHRIcon icon=\"PlusOutlined\" />\n <div style={{ marginTop: 8 }}>上传</div>\n </button>\n );\n\n const renderByType = () => {\n if (uploadType === 'avatar') {\n return (\n <>\n <antd.Upload\n name=\"file\"\n listType=\"picture-card\"\n className={className}\n action={url}\n headers={headers}\n accept={finalAccept}\n fileList={fileList}\n beforeUpload={beforeUpload}\n onChange={handleUploadChange}\n onPreview={handlePreview}\n maxCount={1}\n {...restProps}\n >\n {fileList.length >= 1 ? null : avatarUploadButton}\n </antd.Upload>\n {previewImage && (\n <Image\n style={{ display: 'none' }}\n preview={{\n open: previewOpen,\n onOpenChange: (visible) => setPreviewOpen(visible),\n afterOpenChange: (visible) => !visible && setPreviewImage(''),\n }}\n src={previewImage}\n />\n )}\n </>\n );\n }\n\n return (\n <antd.Upload\n className={className}\n action={url}\n headers={headers}\n accept={finalAccept}\n beforeUpload={beforeUpload}\n fileList={fileList}\n onChange={handleUploadChange}\n maxCount={maxCount}\n multiple={maxCount > 1}\n {...restProps}\n >\n {children || (\n <CHRButton>\n <CHRIcon icon=\"UploadOutlined\" />\n 上传文件\n </CHRButton>\n )}\n </antd.Upload>\n );\n };\n\n return renderByType();\n};\n\nexport default CHRUpload;\n"],"names":["CHRButton","_a","content","children","title","_b","defaultText","onClick","restProps","__rest","undefined","_jsx","jsx","Button","__assign","e","console","log","CHRIcon","icon","fontSize","className","style","IconComponent","Icons","cursor","warn","value","uploadType","url","token","_c","maxCount","limit","acceptProp","accept","handleChange","_d","useState","fileList","setFileList","_e","previewOpen","setPreviewOpen","_f","previewImage","setPreviewImage","getDefaultAccept","useCallback","getDefaultLimit","finalAccept","finalLimit","beforeUpload","file","size","antd","message","error","concat","Upload","LIST_IGNORE","acceptList","split","map","item","trim","fileType_1","type","fileName_1","name","some","endsWith","mainType","replace","startsWith","length","handleUploadChange","info","newFileList","fileUrl","response","status","success","finalFileList","slice","uid","simplifiedList","headers","useMemo","Authorization","getBase64","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","result","onerror","handlePreview","__awaiter","preview","originFileObj","sent","avatarUploadButton","_jsxs","jsxs","border","background","marginTop","_Fragment","listType","action","onChange","onPreview","Image","display","open","onOpenChange","visible","afterOpenChange","src","multiple"],"mappings":"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"}
|
|
@@ -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,25 @@
|
|
|
1
|
+
import { __rest, __assign } from 'tslib';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { Button } from 'antd';
|
|
4
|
+
|
|
5
|
+
var CHRButton = function CHRButton(_a) {
|
|
6
|
+
var children = _a.children,
|
|
7
|
+
title = _a.title,
|
|
8
|
+
_b = _a.defaultText,
|
|
9
|
+
defaultText = _b === void 0 ? '按钮' : _b,
|
|
10
|
+
onClick = _a.onClick,
|
|
11
|
+
restProps = __rest(_a, ["children", "title", "defaultText", "onClick"]);
|
|
12
|
+
var handleClick = function handleClick(e) {
|
|
13
|
+
console.log('CHRButton 内部点击处理');
|
|
14
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(e);
|
|
15
|
+
};
|
|
16
|
+
// 决定显示内容
|
|
17
|
+
var content;
|
|
18
|
+
content = children !== undefined ? children : title || defaultText;
|
|
19
|
+
return jsx(Button, __assign({}, restProps, {
|
|
20
|
+
onClick: handleClick,
|
|
21
|
+
children: content
|
|
22
|
+
}));
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { CHRButton as default };
|
package/es/Icon/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { __assign } from 'tslib';
|
|
2
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
3
|
+
import * as Icons from '@ant-design/icons';
|
|
4
|
+
|
|
5
|
+
var CHRIcon = function CHRIcon(_a) {
|
|
6
|
+
var icon = _a.icon,
|
|
7
|
+
_b = _a.fontSize,
|
|
8
|
+
fontSize = _b === void 0 ? 20 : _b,
|
|
9
|
+
className = _a.className,
|
|
10
|
+
style = _a.style;
|
|
11
|
+
var IconComponent = Icons[icon];
|
|
12
|
+
if (!IconComponent) {
|
|
13
|
+
console.warn("Icon \"".concat(icon, "\" is not a valid icon component"));
|
|
14
|
+
return jsx(Fragment, {});
|
|
15
|
+
}
|
|
16
|
+
return jsx(IconComponent, {
|
|
17
|
+
className: className,
|
|
18
|
+
style: __assign({
|
|
19
|
+
fontSize: fontSize + 'px',
|
|
20
|
+
cursor: 'pointer'
|
|
21
|
+
}, style)
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { CHRIcon as default };
|
|
@@ -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;
|