@kne/react-form-antd 3.0.5 → 3.0.6

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.
@@ -0,0 +1,1214 @@
1
+ import * as React from 'react';
2
+ import React__default, { forwardRef, useRef, useState, useEffect, useMemo, useCallback, useImperativeHandle } from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import classnames from 'classnames';
5
+ import ReactForm__default, { preset as preset$2, useSubmit, useReset } from '@kne/react-form';
6
+ export * from '@kne/react-form';
7
+ import { preset as preset$1, widget, hooks, hoc } from '@kne/react-form-helper';
8
+ export { hooks, utils, widget } from '@kne/react-form-helper';
9
+ import merge from 'lodash/merge';
10
+ import get from 'lodash/get';
11
+ import { Modal, Row, Col, Tooltip, Slider, message, Upload as Upload$1, Cascader as Cascader$2, Checkbox as Checkbox$2, DatePicker as DatePicker$1, Button, Input as Input$1, InputNumber as InputNumber$1, Radio, Select as Select$1, Switch as Switch$2, TimePicker as TimePicker$1, TreeSelect as TreeSelect$1, Space } from 'antd';
12
+ import withLayer from '@kne/with-layer';
13
+ import { LoadingOutlined, PlusOutlined, UploadOutlined } from '@ant-design/icons';
14
+ import AvatarEditor from 'react-avatar-editor';
15
+ import omit from 'lodash/omit';
16
+ import moment from 'moment';
17
+ import useControlValue from '@kne/use-control-value';
18
+ import useEvent from '@kne/use-event';
19
+ import { withFetch as withFetch$1 } from '@kne/react-fetch';
20
+ import groupBy from 'lodash/groupBy';
21
+ import uniqueId from 'lodash/uniqueId';
22
+
23
+ function _extends() {
24
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
25
+ for (var i = 1; i < arguments.length; i++) {
26
+ var source = arguments[i];
27
+ for (var key in source) {
28
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
29
+ target[key] = source[key];
30
+ }
31
+ }
32
+ }
33
+ return target;
34
+ };
35
+ return _extends.apply(this, arguments);
36
+ }
37
+ function _objectWithoutPropertiesLoose(source, excluded) {
38
+ if (source == null) return {};
39
+ var target = {};
40
+ var sourceKeys = Object.keys(source);
41
+ var key, i;
42
+ for (i = 0; i < sourceKeys.length; i++) {
43
+ key = sourceKeys[i];
44
+ if (excluded.indexOf(key) >= 0) continue;
45
+ target[key] = source[key];
46
+ }
47
+ return target;
48
+ }
49
+
50
+ const globalParams = {
51
+ type: 'default',
52
+ size: 'middle',
53
+ rules: {},
54
+ formModal: {},
55
+ resetButton: {},
56
+ submitButton: {},
57
+ field: {
58
+ upload: {
59
+ displayFilename: 'filename',
60
+ action: '/upload',
61
+ transformResponse: response => {
62
+ const targetPath = get(response, 'results[0].targetPath');
63
+ const filename = get(response, 'results[0].filename');
64
+ return {
65
+ code: response.code,
66
+ msg: response.msg,
67
+ results: targetPath + (filename ? `?${globalParams.field.upload.displayFilename}=` + encodeURIComponent(filename) : '')
68
+ };
69
+ }
70
+ },
71
+ avatar: {
72
+ transformResponse: response => {
73
+ return {
74
+ code: response.code,
75
+ results: response.results,
76
+ msg: response.msg
77
+ };
78
+ },
79
+ action: '/upload'
80
+ }
81
+ }
82
+ };
83
+ var preset = (props => {
84
+ const defaultProps = {};
85
+ merge(globalParams, props);
86
+ Object.keys(globalParams.field).forEach(name => {
87
+ defaultProps[name] = (globalParams.field[name] || {}).defaultProps;
88
+ });
89
+ preset$1({
90
+ field: defaultProps
91
+ });
92
+ preset$2(globalParams.rules);
93
+ });
94
+
95
+ const _excluded$8 = ["className", "cache", "enterSubmit", "scrollToError", "scrollProps", "type", "size", "children"];
96
+ const {
97
+ ScrollToError,
98
+ EnterSubmit,
99
+ FormStore,
100
+ MaxLabelProvider,
101
+ SizeProvider
102
+ } = widget;
103
+ const Form = forwardRef((originProps, ref) => {
104
+ const {
105
+ className,
106
+ cache,
107
+ enterSubmit,
108
+ scrollToError,
109
+ scrollProps,
110
+ children
111
+ } = originProps,
112
+ props = _objectWithoutPropertiesLoose(originProps, _excluded$8);
113
+ const baseClass = 'react-form';
114
+ let computedClass = baseClass;
115
+ const {
116
+ type,
117
+ size
118
+ } = Object.assign({
119
+ type: 'default',
120
+ size: 'middle'
121
+ }, globalParams, originProps);
122
+ if (type !== 'default') {
123
+ computedClass += `--${type}`;
124
+ }
125
+ if (size !== 'middle') {
126
+ computedClass += `--${size}`;
127
+ }
128
+ const maxLabel = /*#__PURE__*/React__default.createElement(MaxLabelProvider, null, children);
129
+ return /*#__PURE__*/React__default.createElement("form", {
130
+ className: classnames(baseClass, computedClass, className),
131
+ onSubmit: e => {
132
+ e.preventDefault();
133
+ e.stopPropagation();
134
+ }
135
+ }, /*#__PURE__*/React__default.createElement(SizeProvider, {
136
+ value: {
137
+ size
138
+ }
139
+ }, /*#__PURE__*/React__default.createElement(ReactForm__default, _extends({}, props, {
140
+ ref: ref
141
+ }), cache ? /*#__PURE__*/React__default.createElement(FormStore, {
142
+ cache: cache
143
+ }) : null, scrollToError ? /*#__PURE__*/React__default.createElement(ScrollToError, {
144
+ scrollProps: scrollProps
145
+ }) : null, enterSubmit ? /*#__PURE__*/React__default.createElement(EnterSubmit, null, maxLabel) : maxLabel)));
146
+ });
147
+ Form.defaultProps = {
148
+ scrollToError: true,
149
+ enterSubmit: false,
150
+ scrollProps: {
151
+ block: 'center'
152
+ }
153
+ };
154
+ Form.propTypes = {
155
+ className: PropTypes.string,
156
+ type: PropTypes.oneOf(['inline', 'default', 'inner']),
157
+ size: PropTypes.oneOf(['small', 'middle', 'large']),
158
+ enterSubmit: PropTypes.bool,
159
+ scrollToError: PropTypes.bool,
160
+ scrollProps: PropTypes.shape({
161
+ block: PropTypes.oneOf(['start', 'center', 'end', 'nearest']),
162
+ behavior: PropTypes.oneOf(['auto', 'smooth']),
163
+ inline: PropTypes.oneOf(['start', 'center', 'end', 'nearest'])
164
+ })
165
+ };
166
+
167
+ const RotateIcon = props => /*#__PURE__*/React.createElement("svg", _extends({
168
+ width: "1em",
169
+ height: "1em",
170
+ viewBox: "0 0 14 14",
171
+ xmlns: "http://www.w3.org/2000/svg",
172
+ xmlnsXlink: "http://www.w3.org/1999/xlink"
173
+ }, props), /*#__PURE__*/React.createElement("title", null, "\u65CB\u8F6C"), /*#__PURE__*/React.createElement("g", {
174
+ id: "PC\\u7AEF",
175
+ stroke: "none",
176
+ strokeWidth: 1,
177
+ fill: "none",
178
+ fillRule: "evenodd"
179
+ }, /*#__PURE__*/React.createElement("g", {
180
+ id: "\\u56FE\\u6807",
181
+ transform: "translate(-77.000000, -1567.000000)",
182
+ fill: "#222222",
183
+ fillRule: "nonzero"
184
+ }, /*#__PURE__*/React.createElement("g", {
185
+ id: "\\u65CB\\u8F6C",
186
+ transform: "translate(77.000000, 1567.000000)"
187
+ }, /*#__PURE__*/React.createElement("path", {
188
+ d: "M9.16414904,5.6345426 C9.35110931,5.6345426 9.53041217,5.70881228 9.66261304,5.84101315 C9.79481391,5.97321402 9.86908359,6.15251688 9.86908359,6.33947715 L9.86908359,12.683888 C9.86908359,13.0732126 9.55347364,13.3888226 9.16414904,13.3888226 L0.704934547,13.3888226 C0.315609953,13.3888226 1.8189894e-12,13.0732126 1.8189894e-12,12.683888 L1.8189894e-12,6.33947715 C1.8189894e-12,6.15251688 0.0742696765,5.97321402 0.206470548,5.84101315 C0.33867142,5.70881228 0.517974281,5.6345426 0.704934547,5.6345426 L9.16414904,5.6345426 Z M8.4592145,7.04441168 L1.40986909,7.04441168 L1.40986909,11.9789535 L8.4592145,11.9789535 L8.4592145,7.04441168 Z M7.58258803,0.714885198 C7.63035214,0.738767256 7.66052367,0.787585825 7.66052367,0.840987728 L7.66052367,2.02739256 C11.1625178,2.03011634 14,4.86980822 14,8.37180343 C14,8.62367799 13.8656872,8.85643618 13.6475639,8.98238459 C13.4294405,9.108333 13.1606904,9.108333 12.942567,8.98238459 C12.7244437,8.85643618 12.5900924,8.62367799 12.5901309,8.37180343 C12.5901323,5.64845715 10.3838686,3.43998499 7.66052367,3.43726164 L7.66052367,4.50664733 C7.66052367,4.56004923 7.63035214,4.6088678 7.58258803,4.63274986 C7.53482391,4.65663192 7.47766614,4.65147801 7.43494462,4.61943686 L4.99093655,2.78660706 C4.95543522,2.75998107 4.93454178,2.71819419 4.93454178,2.67381753 C4.93454178,2.62944087 4.95543522,2.58765399 4.99093655,2.561028 L7.43494462,0.728198195 C7.47766614,0.696157053 7.53482391,0.691003139 7.58258803,0.714885198 Z",
189
+ id: "\\u5F62\\u72B6\\u7ED3\\u5408"
190
+ })))));
191
+
192
+ const FullIcon = props => /*#__PURE__*/React.createElement("svg", _extends({
193
+ width: "1em",
194
+ height: "1em",
195
+ viewBox: "0 0 14 14",
196
+ xmlns: "http://www.w3.org/2000/svg",
197
+ xmlnsXlink: "http://www.w3.org/1999/xlink"
198
+ }, props), /*#__PURE__*/React.createElement("title", null, "\u5145\u6EE1"), /*#__PURE__*/React.createElement("g", {
199
+ id: "PC\\u7AEF",
200
+ stroke: "none",
201
+ strokeWidth: 1,
202
+ fill: "none",
203
+ fillRule: "evenodd"
204
+ }, /*#__PURE__*/React.createElement("g", {
205
+ id: "\\u56FE\\u6807",
206
+ transform: "translate(-145.000000, -1567.000000)",
207
+ fill: "#222222",
208
+ fillRule: "nonzero"
209
+ }, /*#__PURE__*/React.createElement("g", {
210
+ id: "\\u5145\\u6EE1",
211
+ transform: "translate(145.000000, 1567.000000)"
212
+ }, /*#__PURE__*/React.createElement("path", {
213
+ d: "M12.09375,0 C12.35,0 12.6,0.05 12.8359375,0.15 C13.0640625,0.2453125 13.2671875,0.3828125 13.4421875,0.5578125 C13.6171875,0.7328125 13.7546875,0.9375 13.85,1.1640625 C13.95,1.4 14,1.65 14,1.90625 L14,1.90625 L14,12.09375 C14,12.35 13.95,12.6 13.85,12.8359375 C13.7546875,13.0640625 13.6171875,13.2671875 13.4421875,13.4421875 C13.2671875,13.6171875 13.0625,13.7546875 12.8359375,13.85 C12.6,13.95 12.35,14 12.09375,14 L12.09375,14 L1.90625,14 C1.65,14 1.4,13.95 1.1640625,13.85 C0.9359375,13.7546875 0.7328125,13.6171875 0.5578125,13.4421875 C0.3828125,13.2671875 0.2453125,13.0625 0.15,12.8359375 C0.05,12.6 0,12.35 0,12.09375 L0,12.09375 L0,1.90625 C0,1.65 0.05,1.4 0.15,1.1640625 C0.2453125,0.9359375 0.3828125,0.7328125 0.5578125,0.5578125 C0.7328125,0.3828125 0.9375,0.2453125 1.1640625,0.15 C1.4,0.05 1.65,0 1.90625,0 L1.90625,0 Z M12.09375,1.125 L1.90625,1.125 C1.475,1.125 1.125,1.475 1.125,1.90625 L1.125,1.90625 L1.125,12.09375 C1.125,12.525 1.475,12.875 1.90625,12.875 L1.90625,12.875 L12.09375,12.875 C12.525,12.875 12.875,12.525 12.875,12.09375 L12.875,12.09375 L12.875,1.90625 C12.875,1.475 12.525,1.125 12.09375,1.125 L12.09375,1.125 Z M2.5734375,7.484375 C2.878125,7.490625 3.125,7.740625 3.125,8.046875 L3.125,8.046875 L3.125,10.0640625 L5.1265625,8.0625 C5.3453125,7.84375 5.703125,7.84375 5.921875,8.0625 C6.140625,8.28125 6.140625,8.6390625 5.921875,8.8578125 L5.921875,8.8578125 L3.903125,10.875 L5.909375,10.875 C6.2265625,10.875 6.4890625,11.13125 6.484375,11.4484375 C6.478125,11.7546875 6.228125,12 5.921875,12 L5.921875,12 L2.5734375,12 C2.25625,12 2,11.74375 2,11.4265625 L2,11.4265625 L2,8.0578125 C2,7.740625 2.2578125,7.478125 2.5734375,7.484375 Z M11.4296875,2 C11.7453125,2 12,2.25625 12,2.5703125 L12,2.5703125 L12,5.940625 C12,6.2578125 11.7421875,6.5203125 11.4265625,6.5140625 C11.121875,6.5078125 10.875,6.2578125 10.875,5.9515625 L10.875,5.9515625 L10.875,3.9359375 L8.8734375,5.9375 C8.6546875,6.15625 8.296875,6.15625 8.078125,5.9375 C7.859375,5.71875 7.859375,5.3609375 8.078125,5.1421875 L8.078125,5.1421875 L10.0953125,3.125 L8.0890625,3.125 C7.771875,3.125 7.509375,2.86875 7.515625,2.5515625 C7.521875,2.2453125 7.771875,2 8.078125,2 L8.078125,2 Z",
214
+ id: "\\u5F62\\u72B6\\u7ED3\\u5408"
215
+ })))));
216
+
217
+ const getPopupContainer = triggerNode => {
218
+ const findAntdPopupContainer = el => {
219
+ if (el === document.body || !el.parentElement) {
220
+ return document.body;
221
+ }
222
+ const targetEl = [].slice.call(el.classList, 0).find(className => ['ant-modal-body', 'ant-modal-content', 'ant-popover-content'].indexOf(className) > -1);
223
+ if (targetEl) {
224
+ return el;
225
+ }
226
+ return findAntdPopupContainer(el.parentElement);
227
+ };
228
+ return findAntdPopupContainer(triggerNode);
229
+ };
230
+
231
+ const _excluded$7 = ["close", "file", "editor", "onComplete"];
232
+ const {
233
+ useOnChange: useOnChange$c
234
+ } = hooks;
235
+ const avatarParams = globalParams.field.avatar;
236
+ const createAvatarEditor = withLayer(_ref => {
237
+ let {
238
+ close,
239
+ file,
240
+ editor,
241
+ onComplete
242
+ } = _ref,
243
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$7);
244
+ const editorRef = useRef(null);
245
+ const [rotate, setRotate] = useState(0);
246
+ const [scale, setScale] = useState(() => {
247
+ if (editor.width === editor.height) {
248
+ return 1;
249
+ }
250
+ return 0.35;
251
+ });
252
+ return /*#__PURE__*/React__default.createElement(Modal, _extends({}, props, {
253
+ className: editor.className,
254
+ centered: true,
255
+ onOk: () => {
256
+ onComplete && onComplete(editorRef.current.getImage().toDataURL());
257
+ close();
258
+ }
259
+ }), editor.tips ? /*#__PURE__*/React__default.createElement("div", {
260
+ className: "react-form-avatar-tips"
261
+ }, editor.tips) : null, /*#__PURE__*/React__default.createElement("div", {
262
+ style: {
263
+ "width": editor.width,
264
+ "margin": "auto"
265
+ }
266
+ }, /*#__PURE__*/React__default.createElement(AvatarEditor, {
267
+ ref: editorRef,
268
+ image: file,
269
+ width: editor.width,
270
+ height: editor.height,
271
+ border: 1,
272
+ borderRadius: editor.borderRadius,
273
+ color: [24, 144, 255, 1] // RGBA
274
+ ,
275
+ scale: scale,
276
+ rotate: rotate
277
+ }), /*#__PURE__*/React__default.createElement(Row, {
278
+ gutter: 4,
279
+ align: "middle"
280
+ }, /*#__PURE__*/React__default.createElement(Col, {
281
+ span: 4
282
+ }, /*#__PURE__*/React__default.createElement(Tooltip, {
283
+ title: "\u65CB\u8F6C",
284
+ placement: "bottom",
285
+ getPopupContainer: getPopupContainer
286
+ }, /*#__PURE__*/React__default.createElement(RotateIcon, {
287
+ className: "react-form-avatar-btn",
288
+ onClick: () => {
289
+ setRotate(rotate => {
290
+ return (rotate - 90) % 360;
291
+ });
292
+ }
293
+ }))), /*#__PURE__*/React__default.createElement(Col, {
294
+ span: 4
295
+ }, /*#__PURE__*/React__default.createElement(Tooltip, {
296
+ title: "\u8FD8\u539F",
297
+ placement: "bottom",
298
+ getPopupContainer: getPopupContainer
299
+ }, /*#__PURE__*/React__default.createElement(FullIcon, {
300
+ className: "react-form-avatar-btn",
301
+ onClick: () => {
302
+ setScale(1);
303
+ }
304
+ }))), /*#__PURE__*/React__default.createElement(Col, {
305
+ flex: 1
306
+ }, /*#__PURE__*/React__default.createElement(Slider, {
307
+ className: "react-form-avatar-slider",
308
+ tooltip: {
309
+ placement: "bottom",
310
+ formatter: () => '大小',
311
+ getPopupContainer
312
+ },
313
+ value: scale,
314
+ step: 0.05,
315
+ min: 0.2,
316
+ max: 3,
317
+ onChange: setScale
318
+ })))));
319
+ });
320
+ const _Avatar = ({
321
+ className,
322
+ value: imageUrl,
323
+ onChange: propsChange,
324
+ beforeUpload: onBeforeUpload,
325
+ transformResponse,
326
+ action,
327
+ imageType,
328
+ fileSize: size,
329
+ children,
330
+ extraRender,
331
+ onError,
332
+ openEditor,
333
+ editorTips,
334
+ editor: targetEditor,
335
+ previewImg,
336
+ previewRender
337
+ }) => {
338
+ const [loading, setLoading] = useState(false);
339
+ const [showImageUrl, setImageUrl] = useState(imageUrl);
340
+ useRef();
341
+ const defaultEditor = {
342
+ open: false,
343
+ width: 250,
344
+ height: 250,
345
+ borderRadius: 1,
346
+ text: "确定",
347
+ cancelText: '取消',
348
+ title: "裁剪图片",
349
+ tips: null
350
+ };
351
+ const editor = merge({}, defaultEditor, {
352
+ open: openEditor,
353
+ tips: editorTips
354
+ }, targetEditor);
355
+ useEffect(() => {
356
+ setImageUrl(imageUrl);
357
+ }, [imageUrl]);
358
+
359
+ /* base64转blob */
360
+ const dataURLtoBlob = dataurl => {
361
+ let arr = dataurl.split(",");
362
+ // 注意base64的最后面中括号和引号是不转译的
363
+ let _arr = arr[1].substring(0, arr[1].length - 2);
364
+ let mime = arr[0].match(/:(.*?);/)[1],
365
+ bstr = atob(_arr),
366
+ n = bstr.length,
367
+ u8arr = new Uint8Array(n);
368
+ while (n--) {
369
+ u8arr[n] = bstr.charCodeAt(n);
370
+ }
371
+ return new Blob([u8arr], {
372
+ type: mime
373
+ });
374
+ };
375
+ const uploadButton = /*#__PURE__*/React__default.createElement("div", null, loading ? /*#__PURE__*/React__default.createElement(LoadingOutlined, null) : /*#__PURE__*/React__default.createElement(PlusOutlined, null), children);
376
+ const beforeUpload = async file => {
377
+ return new Promise((resolve, reject) => {
378
+ const isJpgOrPng = imageType.indexOf(file.type) > -1;
379
+ if (!isJpgOrPng) {
380
+ onError(`只支持${imageType.map(str => str.replace("image/", "")).join("/")}格式图片!`, "typeError", {
381
+ type: imageType,
382
+ fileType: file.type
383
+ });
384
+ reject();
385
+ return false;
386
+ }
387
+ const isLt = file.size / 1024 / 1024 < size;
388
+ if (!isLt) {
389
+ onError(`图片不能超过${size}MB!`, "sizeError", {
390
+ size,
391
+ fileSize: file.size
392
+ });
393
+ reject();
394
+ return false;
395
+ }
396
+
397
+ /*剪切图像*/
398
+ // editor:{open:false,width:250,height:250,borderRadius:0-100,text:'剪切'}
399
+ if (editor.open) {
400
+ createAvatarEditor({
401
+ editor,
402
+ file,
403
+ title: editor.title,
404
+ icon: "",
405
+ width: editor.width * 2,
406
+ cancelText: editor.cancelText,
407
+ okText: editor.text,
408
+ onComplete: base64 => {
409
+ setImageUrl(base64);
410
+ let blob = dataURLtoBlob(base64);
411
+ const files = new window.File([blob], file.name, {
412
+ type: file.type
413
+ });
414
+ onBeforeUpload && onBeforeUpload(files);
415
+ resolve(files);
416
+ }
417
+ });
418
+ } else {
419
+ onBeforeUpload && onBeforeUpload(file);
420
+ resolve(file);
421
+ }
422
+ });
423
+ };
424
+ const onChange = info => {
425
+ if (info.file.status === "uploading") {
426
+ setLoading(true);
427
+ return;
428
+ }
429
+ if (info.file.status === "done") {
430
+ setLoading(false);
431
+ const response = (transformResponse || avatarParams.transformResponse)(info.file.response);
432
+ if (response.code === 200) {
433
+ propsChange(response.results);
434
+ } else {
435
+ onError(response.msg, "xhrError", response);
436
+ }
437
+ }
438
+ };
439
+ const headers = Object.assign({}, avatarParams.headers);
440
+ if (typeof avatarParams.getHeaders === 'function') {
441
+ Object.assign(headers, avatarParams.getHeaders());
442
+ }
443
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Upload$1, _extends({}, omit(avatarParams, ['action', 'transformResponse', 'headers', 'getHeaders']), {
444
+ headers: headers,
445
+ className: classnames(className, "react-form-avatar"),
446
+ listType: "picture-card",
447
+ showUploadList: false,
448
+ action: action || avatarParams.action,
449
+ beforeUpload: beforeUpload,
450
+ onChange: onChange
451
+ }), /*#__PURE__*/React__default.createElement("div", {
452
+ className: "react-form-avatar-inner"
453
+ }, previewImg && showImageUrl ? previewRender ? previewRender(showImageUrl) : /*#__PURE__*/React__default.createElement("div", {
454
+ className: "preview"
455
+ }, /*#__PURE__*/React__default.createElement("img", {
456
+ src: showImageUrl,
457
+ alt: "avatar"
458
+ })) : uploadButton, extraRender ? extraRender(showImageUrl) : '')));
459
+ };
460
+ _Avatar.defaultProps = {
461
+ imageType: ["image/jpeg", "image/png"],
462
+ fileSize: 2,
463
+ // 单位MB
464
+ children: /*#__PURE__*/React__default.createElement("div", {
465
+ className: "ant-upload-text"
466
+ }, "\u70B9\u51FB\u4E0A\u4F20"),
467
+ extraRender: null,
468
+ onError: info => message.error(info),
469
+ previewImg: true,
470
+ previewRender: null,
471
+ openEditor: false
472
+ };
473
+ const AvatarInput = props => {
474
+ const render = useOnChange$c(props);
475
+ return render(_Avatar);
476
+ };
477
+ AvatarInput.defaultProps = {
478
+ fieldName: 'avatar'
479
+ };
480
+ AvatarInput.field = _Avatar;
481
+
482
+ const {
483
+ useOnChange: useOnChange$b
484
+ } = hooks;
485
+ const Cascader$1 = props => {
486
+ const render = useOnChange$b(props);
487
+ return render(Cascader$2);
488
+ };
489
+ Cascader$1.defaultProps = {
490
+ fieldName: 'cascader'
491
+ };
492
+
493
+ const {
494
+ useOnChange: useOnChange$a,
495
+ useCheckedToValue: useCheckedToValue$1
496
+ } = hooks;
497
+ const {
498
+ withChecked: withChecked$1
499
+ } = hoc;
500
+ const WithCheckbox = withChecked$1(Checkbox$2);
501
+ const Checkbox$1 = props => {
502
+ const checkedProps = useCheckedToValue$1(props);
503
+ const render = useOnChange$a(checkedProps);
504
+ return render(WithCheckbox);
505
+ };
506
+ Checkbox$1.defaultProps = {
507
+ fieldName: 'checkbox'
508
+ };
509
+
510
+ const {
511
+ useOnChange: useOnChange$9
512
+ } = hooks;
513
+ const _CheckboxGroup = Checkbox$2.Group;
514
+ const CheckboxGroup$1 = props => {
515
+ const render = useOnChange$9(props);
516
+ return render(_CheckboxGroup);
517
+ };
518
+ CheckboxGroup$1.Checkbox = Checkbox$2;
519
+ CheckboxGroup$1.defaultProps = {
520
+ fieldName: 'checkboxGroup'
521
+ };
522
+
523
+ const {
524
+ useOnChange: useOnChange$8
525
+ } = hooks;
526
+ const {
527
+ MonthPicker,
528
+ RangePicker: RangePicker$1,
529
+ WeekPicker
530
+ } = DatePicker$1;
531
+ const _DatePicker = props => {
532
+ const render = useOnChange$8(Object.assign({
533
+ placeholder: `请选择${props.label || ''}`
534
+ }, props));
535
+ return render(DatePicker$1);
536
+ };
537
+ _DatePicker.defaultProps = {
538
+ fieldName: 'datePicker'
539
+ };
540
+ const _MonthPicker = props => {
541
+ const render = useOnChange$8(Object.assign({
542
+ placeholder: ['开始时间', '结束时间']
543
+ }, props));
544
+ return render(MonthPicker);
545
+ };
546
+ _MonthPicker.defaultProps = {
547
+ fieldName: 'monthDatePicker'
548
+ };
549
+ const _RangePicker$1 = props => {
550
+ const render = useOnChange$8(Object.assign({
551
+ placeholder: ['开始时间', '结束时间']
552
+ }, props));
553
+ return render(RangePicker$1);
554
+ };
555
+ _RangePicker$1.defaultProps = {
556
+ fieldName: 'rangeDatePicker'
557
+ };
558
+ const _WeekPicker = props => {
559
+ const render = useOnChange$8(Object.assign({
560
+ placeholder: ['开始时间', '结束时间']
561
+ }, props));
562
+ return render(WeekPicker);
563
+ };
564
+ _WeekPicker.defaultProps = {
565
+ fieldName: 'weekDatePicker'
566
+ };
567
+ _DatePicker.MonthPicker = _MonthPicker;
568
+ _DatePicker.RangePicker = _RangePicker$1;
569
+ _DatePicker.WeekPicker = _WeekPicker;
570
+
571
+ const _excluded$6 = ["soFarText"];
572
+ const {
573
+ useOnChange: useOnChange$7
574
+ } = hooks;
575
+ const PickerToday = _ref => {
576
+ let {
577
+ soFarText
578
+ } = _ref,
579
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$6);
580
+ const [data, onChange] = useControlValue(props);
581
+ const ref_d = useRef();
582
+ const newData = useMemo(() => {
583
+ // console.log('......', data);
584
+ const s = get(data, 0, '');
585
+ const d = get(data, 1, '');
586
+ const p = get(props, ['placeholder'], ['开始日期', '结束日期']);
587
+ return {
588
+ start: s ? moment(s) : '',
589
+ end: d === '至今' ? null : d ? moment(d) : '',
590
+ showZj: d === '至今',
591
+ placeholder: p
592
+ };
593
+ }, [data]);
594
+ const startChange = v => {
595
+ // 比较日期大小
596
+ if (!newData.showZj && newData.end && v && newData.end.isBefore(v)) {
597
+ onChange([newData.end, v]);
598
+ return;
599
+ }
600
+ onChange([v || '', newData.showZj ? '至今' : newData.end]);
601
+ };
602
+ const endChange = v => {
603
+ if (newData.start && v && v.isBefore(newData.start)) {
604
+ onChange([v, newData.start]);
605
+ return;
606
+ }
607
+ onChange([newData.start, v || '']);
608
+ };
609
+ const foot = () => {
610
+ return /*#__PURE__*/React__default.createElement(Button, {
611
+ type: newData.showZj ? 'primary' : 'default',
612
+ onClick: v => {
613
+ ref_d.current.blur();
614
+ onChange([newData.start || '', '至今']);
615
+ }
616
+ }, soFarText || '至今');
617
+ };
618
+ return /*#__PURE__*/React__default.createElement("div", {
619
+ style: {
620
+ display: 'flex'
621
+ }
622
+ }, /*#__PURE__*/React__default.createElement(DatePicker$1, _extends({}, _extends({
623
+ showToday: false
624
+ }, props, {
625
+ placeholder: newData.placeholder[0],
626
+ value: newData.start
627
+ }), {
628
+ onChange: startChange
629
+ })), /*#__PURE__*/React__default.createElement("div", {
630
+ className: 'svg_box'
631
+ }, /*#__PURE__*/React__default.createElement("svg", {
632
+ viewBox: "0 0 1024 1024",
633
+ focusable: "false",
634
+ "data-icon": "swap-right",
635
+ width: "1em",
636
+ height: "1em",
637
+ fill: "currentColor",
638
+ "aria-hidden": "true"
639
+ }, /*#__PURE__*/React__default.createElement("path", {
640
+ d: "M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z"
641
+ }))), /*#__PURE__*/React__default.createElement("div", {
642
+ className: newData.showZj ? 'data_range_picker data_range_picker_dis' : 'data_range_picker'
643
+ }, /*#__PURE__*/React__default.createElement("span", {
644
+ className: newData.showZj ? 'zhijin zhijin_show' : 'zhijin'
645
+ }, soFarText || '至今'), /*#__PURE__*/React__default.createElement(DatePicker$1, _extends({}, _extends({
646
+ showToday: false
647
+ }, props, {
648
+ placeholder: newData.showZj ? '' : newData.placeholder[1],
649
+ value: newData.end
650
+ }), {
651
+ ref: ref_d,
652
+ onChange: endChange,
653
+ renderExtraFooter: foot
654
+ }))));
655
+ };
656
+ const RangePickerToday = props => {
657
+ const render = useOnChange$7(props);
658
+ return render(PickerToday);
659
+ };
660
+ RangePickerToday.defaultProps = {
661
+ fieldName: 'rangePickerToday'
662
+ };
663
+ RangePickerToday.field = PickerToday;
664
+
665
+ const {
666
+ useDecorator: useDecorator$2
667
+ } = hooks;
668
+ const InputField = props => {
669
+ const render = useDecorator$2(Object.assign({
670
+ placeholder: `请输入${props.label}`
671
+ }, props));
672
+ return render(Input$1);
673
+ };
674
+ InputField.Password = props => {
675
+ const render = useDecorator$2(Object.assign({
676
+ placeholder: `请输入${props.label}`
677
+ }, props));
678
+ return render(Input$1.Password);
679
+ };
680
+ InputField.defaultProps = {
681
+ fieldName: 'input',
682
+ autoComplete: 'off'
683
+ };
684
+ InputField.Password.defaultProps = {
685
+ fieldName: 'password',
686
+ autoComplete: 'off'
687
+ };
688
+
689
+ const {
690
+ useDecorator: useDecorator$1
691
+ } = hooks;
692
+ const InputNumberField = props => {
693
+ const render = useDecorator$1(Object.assign({
694
+ placeholder: `请输入${props.label}`
695
+ }, props));
696
+ return render(InputNumber$1);
697
+ };
698
+ InputNumberField.defaultProps = {
699
+ fieldName: 'inputNumber',
700
+ autoComplete: 'off'
701
+ };
702
+
703
+ const _excluded$5 = ["onChange"];
704
+ const {
705
+ useOnChange: useOnChange$6
706
+ } = hooks;
707
+ const RadioGroup$1 = _ref => {
708
+ let {
709
+ onChange
710
+ } = _ref,
711
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$5);
712
+ const handler = useCallback(e => {
713
+ onChange && onChange(e.target.value);
714
+ }, [onChange]);
715
+ return /*#__PURE__*/React__default.createElement(Radio.Group, _extends({}, props, {
716
+ onChange: handler
717
+ }));
718
+ };
719
+ const _RadioGroup = props => {
720
+ const render = useOnChange$6(props);
721
+ return render(RadioGroup$1);
722
+ };
723
+ _RadioGroup.defaultProps = {
724
+ fieldName: 'radioGroup'
725
+ };
726
+ _RadioGroup.Radio = Radio;
727
+
728
+ const _excluded$4 = ["data", "setData", "send", "loadMore", "isComplete", "refresh", "reload", "fetchEmitter", "isLoading", "children", "onLoaded", "fetchProps", "requestParams"];
729
+ const {
730
+ useOnChange: useOnChange$5
731
+ } = hooks;
732
+ const withFetch = WrappedComponent => {
733
+ const FieldInner = withFetch$1(_ref => {
734
+ let {
735
+ data,
736
+ setData,
737
+ send,
738
+ loadMore,
739
+ isComplete,
740
+ refresh,
741
+ reload,
742
+ fetchEmitter,
743
+ isLoading,
744
+ children,
745
+ onLoaded,
746
+ fetchProps
747
+ } = _ref,
748
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$4);
749
+ const refreshRef = useRef(refresh);
750
+ refreshRef.current = refresh;
751
+ const reloadRef = useRef(reload);
752
+ reloadRef.current = reload;
753
+ const setDataRef = useRef(setData);
754
+ setDataRef.current = setData;
755
+ const dataRef = useRef(data);
756
+ useEffect(() => {
757
+ const token1 = fetchEmitter.addListener('select-fetch-refresh', () => refreshRef.current());
758
+ const token2 = fetchEmitter.addListener('select-fetch-reload', () => reloadRef.current());
759
+ const token3 = fetchEmitter.addListener('select-fetch-set-data', () => setDataRef.current());
760
+ return () => {
761
+ token1 && token1.remove();
762
+ token2 && token2.remove();
763
+ token3 && token3.remove();
764
+ };
765
+ }, [fetchEmitter]);
766
+ useEffect(() => {
767
+ onLoaded && onLoaded(dataRef.current);
768
+ }, []);
769
+ return /*#__PURE__*/React__default.createElement(WrappedComponent, _extends({}, props, children({
770
+ data,
771
+ fetchProps,
772
+ loadMore,
773
+ send,
774
+ refresh,
775
+ reload,
776
+ isLoading,
777
+ isComplete,
778
+ setData
779
+ })));
780
+ });
781
+ const useFetchEmitter = ref => {
782
+ const emitter = useEvent();
783
+ useImperativeHandle(ref, () => {
784
+ return {
785
+ refresh: () => emitter.emit('select-fetch-refresh'),
786
+ reload: () => emitter.emit('select-fetch-reload'),
787
+ setData: data => emitter.emit('select-fetch-set-data', data)
788
+ };
789
+ }, [emitter]);
790
+ return emitter;
791
+ };
792
+ const Fetch = forwardRef((props, ref) => {
793
+ const emitter = useFetchEmitter(ref);
794
+ const render = useOnChange$5(Object.assign({
795
+ placeholder: `请选择${props.label}`
796
+ }, props, {
797
+ fetchEmitter: emitter
798
+ }));
799
+ return render(FieldInner);
800
+ });
801
+ Fetch.field = forwardRef((props, ref) => {
802
+ const emitter = useFetchEmitter(ref);
803
+ return /*#__PURE__*/React__default.createElement(FieldInner, _extends({}, props, {
804
+ fetchEmitter: emitter
805
+ }));
806
+ });
807
+ return Fetch;
808
+ };
809
+
810
+ const {
811
+ useOnChange: useOnChange$4
812
+ } = hooks;
813
+ const _Select = props => {
814
+ const render = useOnChange$4(Object.assign({
815
+ placeholder: `请选择${props.label || ''}`
816
+ }, props));
817
+ return render(Select$1);
818
+ };
819
+ _Select.Fetch = withFetch(Select$1);
820
+ _Select.Option = Select$1.Option;
821
+ _Select.OptGroup = Select$1.OptGroup;
822
+ _Select.defaultProps = _Select.Fetch.defaultProps = {
823
+ fieldName: 'select'
824
+ };
825
+
826
+ const {
827
+ useOnChange: useOnChange$3,
828
+ useCheckedToValue
829
+ } = hooks;
830
+ const {
831
+ withChecked
832
+ } = hoc;
833
+ const WithSwitch = withChecked(Switch$2);
834
+ const Switch$1 = props => {
835
+ const checkedProps = useCheckedToValue(props);
836
+ const render = useOnChange$3(checkedProps);
837
+ return render(WithSwitch);
838
+ };
839
+ Switch$1.defaultProps = {
840
+ fieldName: 'switch'
841
+ };
842
+
843
+ const {
844
+ useDecorator
845
+ } = hooks;
846
+ const TextArea$1 = props => {
847
+ const render = useDecorator(Object.assign({
848
+ placeholder: `请输入${props.label}`
849
+ }, props));
850
+ return render(Input$1.TextArea);
851
+ };
852
+ TextArea$1.defaultProps = {
853
+ fieldName: 'textArea'
854
+ };
855
+
856
+ const {
857
+ useOnChange: useOnChange$2
858
+ } = hooks;
859
+ const {
860
+ RangePicker
861
+ } = TimePicker$1;
862
+ const _TimePicker = props => {
863
+ const render = useOnChange$2(Object.assign({
864
+ placeholder: `请选择${props.label || ''}`
865
+ }, props));
866
+ return render(TimePicker$1);
867
+ };
868
+ _TimePicker.defaultProps = {
869
+ fieldName: 'timePicker'
870
+ };
871
+ const _RangePicker = props => {
872
+ const render = useOnChange$2(Object.assign({
873
+ placeholder: `请选择${props.label || ''}`
874
+ }, props));
875
+ return render(RangePicker);
876
+ };
877
+ _RangePicker.defaultProps = {
878
+ fieldName: 'rangeTimePicker'
879
+ };
880
+ _TimePicker.RangePicker = _RangePicker;
881
+
882
+ const {
883
+ useOnChange: useOnChange$1
884
+ } = hooks;
885
+ const _TreeSelect = props => {
886
+ const render = useOnChange$1(Object.assign({
887
+ placeholder: `请选择${props.label || ''}`
888
+ }, props));
889
+ return render(TreeSelect$1);
890
+ };
891
+ _TreeSelect.Fetch = withFetch(TreeSelect$1);
892
+ _TreeSelect.defaultProps = _TreeSelect.Fetch.defaultProps = {
893
+ fieldName: 'treeSelect'
894
+ };
895
+ _TreeSelect.TreeNode = TreeSelect$1.TreeNode;
896
+
897
+ const _excluded$3 = ["action", "value", "onChange", "drag", "children", "displayFilename", "accept", "fileSize", "onError", "onUploadComplete", "onBeforeUpload", "maxLength", "transformResponse"];
898
+ const {
899
+ useOnChange
900
+ } = hooks;
901
+ const {
902
+ Dragger
903
+ } = Upload$1;
904
+ const uploadParams = globalParams.field.upload;
905
+ const decodeURIComponentSafe = str => {
906
+ try {
907
+ return decodeURIComponent(str);
908
+ } catch (e) {
909
+ return str;
910
+ }
911
+ };
912
+ const computedFilename = (path, displayFilename = 'filename') => {
913
+ const strArray = path.split('?');
914
+ if (strArray[1]) {
915
+ const query = {};
916
+ strArray[1].split('&').forEach(str => {
917
+ const [key, value] = str.split('=');
918
+ query[key] = value;
919
+ });
920
+ if (query[displayFilename]) {
921
+ return decodeURIComponentSafe(query[displayFilename]);
922
+ }
923
+ }
924
+ return path;
925
+ };
926
+ const valueToList = (value, displayFilename) => {
927
+ if (!value) {
928
+ return [];
929
+ }
930
+ return value.map(item => {
931
+ return {
932
+ uid: uniqueId(),
933
+ name: computedFilename(item.substr(item.lastIndexOf('/') + 1), displayFilename),
934
+ status: 'done',
935
+ response: {
936
+ code: 200,
937
+ results: item
938
+ }
939
+ };
940
+ });
941
+ };
942
+ const listToValue = value => {
943
+ return (value || []).slice(0).filter(({
944
+ status
945
+ }) => status === 'done').map(({
946
+ response
947
+ }) => response.results);
948
+ };
949
+ const _Upload = _ref => {
950
+ let {
951
+ action,
952
+ value,
953
+ onChange,
954
+ drag,
955
+ children,
956
+ displayFilename,
957
+ accept,
958
+ fileSize: size,
959
+ onError,
960
+ onUploadComplete,
961
+ onBeforeUpload,
962
+ maxLength,
963
+ transformResponse
964
+ } = _ref,
965
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$3);
966
+ displayFilename = displayFilename || uploadParams.displayFilename;
967
+ value = value || [];
968
+ const [list, setList] = useState([]);
969
+ const valueList = useMemo(() => {
970
+ return valueToList(value.filter(url => {
971
+ return !list.find(file => get(file, 'response.results') === decodeURIComponentSafe(url));
972
+ }), displayFilename).concat(list);
973
+ }, [list, value, displayFilename]);
974
+ const changeHandler = info => {
975
+ if (['uploading', 'done', 'error', 'removed'].indexOf(info.file.status) === -1) {
976
+ return;
977
+ }
978
+ if (info.fileList.length > maxLength) {
979
+ onError(`上传文件不能超过最大允许数量${maxLength}`, 'lengthError', maxLength);
980
+ return;
981
+ }
982
+ if (info.file.status === 'done' && info.fileList.find(({
983
+ uid
984
+ }) => uid === info.file.uid)) {
985
+ info.file.response = (transformResponse || uploadParams.transformResponse)(info.file.response);
986
+ if (info.file.response.code === 200) {
987
+ info.file.name = computedFilename(info.file.response.results.substr(info.file.response.results.lastIndexOf('/') + 1), displayFilename);
988
+ onUploadComplete(info);
989
+ } else {
990
+ info.file.status = 'error';
991
+ onError(info.file.response.msg, 'xhrError', info.file.response);
992
+ }
993
+ }
994
+ const {
995
+ done
996
+ } = groupBy(info.fileList, file => file.status === 'done' ? 'done' : 'uploading');
997
+ if (['done', 'removed'].indexOf(info.file.status) > -1) {
998
+ onChange(listToValue(done));
999
+ }
1000
+ setList(info.fileList);
1001
+ };
1002
+ const beforeUploadHandler = (file, fileList) => {
1003
+ const isLt = file.size / 1024 / 1024 < size;
1004
+ if (!isLt) {
1005
+ onError(`文件不能超过${size}MB!`, 'sizeError', {
1006
+ size,
1007
+ fileSize: file.size
1008
+ });
1009
+ return false;
1010
+ }
1011
+ if ((fileList == null ? void 0 : fileList.length) > maxLength) {
1012
+ onError(`上传文件不能超过最大允许数量${maxLength}`, 'lengthError', maxLength);
1013
+ return false;
1014
+ }
1015
+ if (maxLength === 1) {
1016
+ onChange([]);
1017
+ setList([]);
1018
+ }
1019
+ return onBeforeUpload && onBeforeUpload(file);
1020
+ };
1021
+ const headers = Object.assign({}, uploadParams.headers);
1022
+ if (typeof uploadParams.getHeaders === 'function') {
1023
+ Object.assign(headers, uploadParams.getHeaders());
1024
+ }
1025
+ const UploadComponent = drag ? Dragger : Upload$1;
1026
+ return /*#__PURE__*/React__default.createElement(UploadComponent, _extends({}, omit(uploadParams, ['action', 'transformResponse']), props, {
1027
+ headers: headers,
1028
+ action: action || uploadParams.action,
1029
+ fileList: valueList,
1030
+ accept: accept.join(','),
1031
+ onChange: changeHandler,
1032
+ beforeUpload: beforeUploadHandler
1033
+ }), typeof children === 'function' ? children({
1034
+ size: props.size
1035
+ }) : children);
1036
+ };
1037
+ _Upload.defaultProps = {
1038
+ value: [],
1039
+ accept: [],
1040
+ fileSize: 2,
1041
+ maxLength: 1,
1042
+ children: ({
1043
+ size
1044
+ }) => /*#__PURE__*/React__default.createElement(Button, {
1045
+ size: size
1046
+ }, /*#__PURE__*/React__default.createElement(UploadOutlined, null), "\u70B9\u51FB\u4E0A\u4F20"),
1047
+ onError: info => message.error(info),
1048
+ onUploadComplete: () => {}
1049
+ };
1050
+ const UploadInput = props => {
1051
+ const render = useOnChange(props);
1052
+ return render(_Upload);
1053
+ };
1054
+ UploadInput.defaultProps = {
1055
+ fieldName: 'upload'
1056
+ };
1057
+ UploadInput.field = _Upload;
1058
+
1059
+ const _excluded$2 = ["realTime", "disabled"],
1060
+ _excluded2$1 = ["isPass", "isLoading"];
1061
+ const SubmitButton = _ref => {
1062
+ let {
1063
+ realTime,
1064
+ disabled
1065
+ } = _ref,
1066
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
1067
+ const _useSubmit = useSubmit(props),
1068
+ {
1069
+ isPass,
1070
+ isLoading
1071
+ } = _useSubmit,
1072
+ submitProps = _objectWithoutPropertiesLoose(_useSubmit, _excluded2$1);
1073
+ return /*#__PURE__*/React__default.createElement(Button, _extends({
1074
+ loading: isLoading,
1075
+ disabled: disabled || (realTime ? !isPass : false)
1076
+ }, props, submitProps));
1077
+ };
1078
+ SubmitButton.defaultProps = {
1079
+ type: 'primary',
1080
+ disabled: false
1081
+ };
1082
+
1083
+ const ResetButton = props => {
1084
+ const resetProps = useReset();
1085
+ return /*#__PURE__*/React__default.createElement(Button, _extends({}, resetProps, props));
1086
+ };
1087
+
1088
+ const _excluded$1 = ["onClick"];
1089
+ const {
1090
+ useCacheRemove
1091
+ } = hooks;
1092
+ const CancelButton = _ref => {
1093
+ let {
1094
+ onClick
1095
+ } = _ref,
1096
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$1);
1097
+ const remove = useCacheRemove();
1098
+ return /*#__PURE__*/React__default.createElement(Button, _extends({}, props, {
1099
+ onClick: (...args) => {
1100
+ remove();
1101
+ onClick && onClick(...args);
1102
+ }
1103
+ }));
1104
+ };
1105
+
1106
+ const _excluded = ["className", "formProps", "footer", "children", "isReset"],
1107
+ _excluded2 = ["className", "title", "formProps", "footer", "content", "isReset"];
1108
+ const FetchForm = withFetch$1(Form);
1109
+ const CommonModal = forwardRef(({
1110
+ formProps,
1111
+ footer,
1112
+ close,
1113
+ onCancel,
1114
+ isReset,
1115
+ children
1116
+ }, ref) => {
1117
+ const TargetForm = formProps.hasOwnProperty('url') ? FetchForm : Form;
1118
+ return /*#__PURE__*/React__default.createElement(TargetForm, _extends({}, formProps, {
1119
+ ref: ref
1120
+ }), /*#__PURE__*/React__default.createElement("div", {
1121
+ className: "ant-modal-body"
1122
+ }, children), /*#__PURE__*/React__default.createElement("div", {
1123
+ className: "ant-modal-footer"
1124
+ }, footer ? footer : /*#__PURE__*/React__default.createElement(Space, null, isReset ? /*#__PURE__*/React__default.createElement(ResetButton, null, "\u91CD\u7F6E") : /*#__PURE__*/React__default.createElement(CancelButton, {
1125
+ onClick: () => {
1126
+ onCancel && onCancel();
1127
+ }
1128
+ }, "\u53D6\u6D88"), /*#__PURE__*/React__default.createElement(SubmitButton, {
1129
+ type: "primary"
1130
+ }, "\u786E\u5B9A"))));
1131
+ });
1132
+ const FormModal = forwardRef((_ref, ref) => {
1133
+ let {
1134
+ className,
1135
+ formProps = {},
1136
+ footer,
1137
+ children,
1138
+ isReset
1139
+ } = _ref,
1140
+ props = _objectWithoutPropertiesLoose(_ref, _excluded);
1141
+ return /*#__PURE__*/React__default.createElement(Modal, _extends({}, props, {
1142
+ className: classnames(className, 'react-form-modal'),
1143
+ footer: null
1144
+ }), /*#__PURE__*/React__default.createElement(CommonModal, {
1145
+ ref: ref,
1146
+ formProps: formProps,
1147
+ footer: footer,
1148
+ isReset: isReset,
1149
+ onCancel: props.onCancel
1150
+ }, children));
1151
+ });
1152
+ FormModal.modal = _ref2 => {
1153
+ let {
1154
+ className,
1155
+ title,
1156
+ formProps = {},
1157
+ footer,
1158
+ content,
1159
+ isReset
1160
+ } = _ref2,
1161
+ props = _objectWithoutPropertiesLoose(_ref2, _excluded2);
1162
+ return Modal.info(_extends({}, props, {
1163
+ title: title ? /*#__PURE__*/React__default.createElement("div", {
1164
+ className: "ant-modal-header"
1165
+ }, /*#__PURE__*/React__default.createElement("div", {
1166
+ className: "ant-modal-title"
1167
+ }, title)) : null,
1168
+ className: classnames(className, 'react-form-modal'),
1169
+ content: /*#__PURE__*/React__default.createElement(CommonModal, {
1170
+ formProps: formProps,
1171
+ footer: footer,
1172
+ isReset: isReset,
1173
+ onCancel: props.onCancel
1174
+ }, content),
1175
+ icon: null,
1176
+ footer: null
1177
+ }));
1178
+ };
1179
+
1180
+ const Avatar = AvatarInput;
1181
+ const Cascader = Cascader$1;
1182
+ const Checkbox = Checkbox$1;
1183
+ const CheckboxGroup = CheckboxGroup$1;
1184
+ const DatePicker = _DatePicker;
1185
+ const DatePickerToday = RangePickerToday;
1186
+ const Input = InputField;
1187
+ const InputNumber = InputNumberField;
1188
+ const RadioGroup = _RadioGroup;
1189
+ const Select = _Select;
1190
+ const Switch = Switch$1;
1191
+ const TextArea = TextArea$1;
1192
+ const TimePicker = _TimePicker;
1193
+ const TreeSelect = _TreeSelect;
1194
+ const Upload = UploadInput;
1195
+ const fields = {
1196
+ Avatar,
1197
+ Cascader,
1198
+ Checkbox,
1199
+ CheckboxGroup,
1200
+ DatePicker,
1201
+ DatePickerToday,
1202
+ Input,
1203
+ InputNumber,
1204
+ RadioGroup,
1205
+ Select,
1206
+ Switch,
1207
+ TextArea,
1208
+ TimePicker,
1209
+ TreeSelect,
1210
+ Upload
1211
+ };
1212
+
1213
+ export { Avatar, CancelButton, Cascader, Checkbox, CheckboxGroup, DatePicker, DatePickerToday, FormModal, Input, InputNumber, RadioGroup, ResetButton, Select, SubmitButton, Switch, TextArea, TimePicker, TreeSelect, Upload, Form as default, fields, preset };
1214
+ //# sourceMappingURL=index.modern.js.map