@kne/react-form-antd 4.0.2 → 4.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/README.md +1492 -48
- package/dist/index.css +107 -0
- package/dist/index.css.map +1 -1
- package/dist/index.js +432 -142
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +421 -144
- package/dist/index.modern.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -4,8 +4,9 @@ var ReactForm = require('@kne/react-form');
|
|
|
4
4
|
var reactFormHelper = require('@kne/react-form-helper');
|
|
5
5
|
var merge = require('lodash/merge');
|
|
6
6
|
var antd = require('antd');
|
|
7
|
+
var reactIntl = require('@kne/react-intl');
|
|
8
|
+
var icons = require('@ant-design/icons');
|
|
7
9
|
var dayjs = require('dayjs');
|
|
8
|
-
var lodash = require('lodash');
|
|
9
10
|
var useControlValue = require('@kne/use-control-value');
|
|
10
11
|
|
|
11
12
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -58,7 +59,7 @@ var preset = (function (props) {
|
|
|
58
59
|
ReactForm.preset(globalParams.rules);
|
|
59
60
|
});
|
|
60
61
|
|
|
61
|
-
var _excluded$
|
|
62
|
+
var _excluded$5 = ["className", "cache", "enterSubmit", "scrollToError", "scrollProps", "type", "size", "children"];
|
|
62
63
|
var ScrollToError = reactFormHelper.widget.ScrollToError,
|
|
63
64
|
EnterSubmit = reactFormHelper.widget.EnterSubmit,
|
|
64
65
|
FormStore = reactFormHelper.widget.FormStore,
|
|
@@ -76,7 +77,7 @@ var Form = React.forwardRef(function (originProps, ref) {
|
|
|
76
77
|
block: 'center'
|
|
77
78
|
} : _originProps$scrollPr,
|
|
78
79
|
children = originProps.children,
|
|
79
|
-
props = _objectWithoutPropertiesLoose(originProps, _excluded$
|
|
80
|
+
props = _objectWithoutPropertiesLoose(originProps, _excluded$5);
|
|
80
81
|
var baseClass = 'react-form';
|
|
81
82
|
var computedClass = baseClass;
|
|
82
83
|
var _Object$assign = Object.assign({
|
|
@@ -111,54 +112,121 @@ var Form = React.forwardRef(function (originProps, ref) {
|
|
|
111
112
|
}) : null, enterSubmit ? /*#__PURE__*/React__default["default"].createElement(EnterSubmit, null, maxLabel) : maxLabel)));
|
|
112
113
|
});
|
|
113
114
|
|
|
115
|
+
var locale$1 = {
|
|
116
|
+
PleaseSelect: '请选择{label}',
|
|
117
|
+
PleaseInput: '请输入{label}',
|
|
118
|
+
StartTime: '开始时间',
|
|
119
|
+
EndTime: '结束时间',
|
|
120
|
+
StartDate: '开始日期',
|
|
121
|
+
EndDate: '结束日期',
|
|
122
|
+
SoFar: '至今'
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
var locale = {
|
|
126
|
+
PleaseSelect: 'Please select {label}',
|
|
127
|
+
PleaseInput: 'Please enter {label}',
|
|
128
|
+
StartTime: 'Start Time',
|
|
129
|
+
EndTime: 'End Time',
|
|
130
|
+
StartDate: 'Start Date',
|
|
131
|
+
EndDate: 'End Date',
|
|
132
|
+
SoFar: 'Present'
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
var _excluded$4 = ["locale"];
|
|
136
|
+
var localeMap = {
|
|
137
|
+
'zh-CN': locale$1,
|
|
138
|
+
'en-US': locale
|
|
139
|
+
};
|
|
140
|
+
var withLocale = function withLocale(WrappedComponent) {
|
|
141
|
+
var WithLocaleComponent = function WithLocaleComponent(_ref) {
|
|
142
|
+
var _ref$locale = _ref.locale,
|
|
143
|
+
locale = _ref$locale === void 0 ? 'zh-CN' : _ref$locale,
|
|
144
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
145
|
+
var messages = localeMap[locale] || locale$1;
|
|
146
|
+
return /*#__PURE__*/React__default["default"].createElement(reactIntl.IntlProvider, {
|
|
147
|
+
locale: locale,
|
|
148
|
+
messages: messages
|
|
149
|
+
}, /*#__PURE__*/React__default["default"].createElement(WrappedComponent, props));
|
|
150
|
+
};
|
|
151
|
+
WithLocaleComponent.displayName = "withLocale(" + (WrappedComponent.displayName || WrappedComponent.name || 'Component') + ")";
|
|
152
|
+
return WithLocaleComponent;
|
|
153
|
+
};
|
|
154
|
+
|
|
114
155
|
var useOnChange$b = reactFormHelper.hooks.useOnChange;
|
|
115
|
-
var
|
|
116
|
-
|
|
156
|
+
var TreeSelectInner = function TreeSelectInner(props) {
|
|
157
|
+
var _useIntl = reactIntl.useIntl(),
|
|
158
|
+
formatMessage = _useIntl.formatMessage;
|
|
159
|
+
var mergedProps = Object.assign({}, {
|
|
117
160
|
fieldName: 'treeSelect'
|
|
118
161
|
}, props);
|
|
119
162
|
var render = useOnChange$b(Object.assign({
|
|
120
|
-
placeholder:
|
|
121
|
-
|
|
163
|
+
placeholder: formatMessage({
|
|
164
|
+
id: 'PleaseSelect'
|
|
165
|
+
}, {
|
|
166
|
+
label: mergedProps.label || ''
|
|
167
|
+
})
|
|
168
|
+
}, mergedProps));
|
|
122
169
|
return render(antd.TreeSelect);
|
|
123
170
|
};
|
|
124
|
-
|
|
125
|
-
|
|
171
|
+
TreeSelectInner.Field = antd.TreeSelect;
|
|
172
|
+
TreeSelectInner.TreeNode = antd.TreeSelect.TreeNode;
|
|
173
|
+
var _TreeSelect = withLocale(TreeSelectInner);
|
|
126
174
|
|
|
127
175
|
var useOnChange$a = reactFormHelper.hooks.useOnChange;
|
|
128
176
|
var RangePicker$1 = antd.TimePicker.RangePicker;
|
|
129
|
-
var
|
|
130
|
-
|
|
177
|
+
var TimePickerInner = function TimePickerInner(props) {
|
|
178
|
+
var _useIntl = reactIntl.useIntl(),
|
|
179
|
+
formatMessage = _useIntl.formatMessage;
|
|
180
|
+
var mergedProps = Object.assign({}, {
|
|
131
181
|
fieldName: 'timePicker'
|
|
132
182
|
}, props);
|
|
133
183
|
var render = useOnChange$a(Object.assign({
|
|
134
|
-
placeholder:
|
|
135
|
-
|
|
184
|
+
placeholder: formatMessage({
|
|
185
|
+
id: 'PleaseSelect'
|
|
186
|
+
}, {
|
|
187
|
+
label: mergedProps.label || ''
|
|
188
|
+
})
|
|
189
|
+
}, mergedProps));
|
|
136
190
|
return render(antd.TimePicker);
|
|
137
191
|
};
|
|
138
|
-
|
|
139
|
-
var
|
|
140
|
-
|
|
192
|
+
TimePickerInner.Field = antd.TimePicker;
|
|
193
|
+
var RangePickerInner$1 = function RangePickerInner(props) {
|
|
194
|
+
var _useIntl2 = reactIntl.useIntl(),
|
|
195
|
+
formatMessage = _useIntl2.formatMessage;
|
|
196
|
+
var mergedProps = Object.assign({}, {
|
|
141
197
|
fieldName: 'rangeTimePicker'
|
|
142
198
|
}, props);
|
|
143
199
|
var render = useOnChange$a(Object.assign({
|
|
144
|
-
placeholder:
|
|
145
|
-
|
|
200
|
+
placeholder: formatMessage({
|
|
201
|
+
id: 'PleaseSelect'
|
|
202
|
+
}, {
|
|
203
|
+
label: mergedProps.label || ''
|
|
204
|
+
})
|
|
205
|
+
}, mergedProps));
|
|
146
206
|
return render(RangePicker$1);
|
|
147
207
|
};
|
|
148
|
-
|
|
149
|
-
_TimePicker
|
|
208
|
+
RangePickerInner$1.Field = RangePicker$1;
|
|
209
|
+
var _TimePicker = withLocale(TimePickerInner);
|
|
210
|
+
_TimePicker.RangePicker = withLocale(RangePickerInner$1);
|
|
150
211
|
|
|
151
212
|
var useDecorator$2 = reactFormHelper.hooks.useDecorator;
|
|
152
|
-
var
|
|
153
|
-
|
|
213
|
+
var TextAreaInner = function TextAreaInner(props) {
|
|
214
|
+
var _useIntl = reactIntl.useIntl(),
|
|
215
|
+
formatMessage = _useIntl.formatMessage;
|
|
216
|
+
var mergedProps = Object.assign({}, {
|
|
154
217
|
fieldName: 'textArea'
|
|
155
218
|
}, props);
|
|
156
219
|
var render = useDecorator$2(Object.assign({
|
|
157
|
-
placeholder:
|
|
158
|
-
|
|
220
|
+
placeholder: formatMessage({
|
|
221
|
+
id: 'PleaseInput'
|
|
222
|
+
}, {
|
|
223
|
+
label: mergedProps.label
|
|
224
|
+
})
|
|
225
|
+
}, mergedProps));
|
|
159
226
|
return render(antd.Input.TextArea);
|
|
160
227
|
};
|
|
161
|
-
|
|
228
|
+
TextAreaInner.Field = antd.Input.TextArea;
|
|
229
|
+
var TextArea = withLocale(TextAreaInner);
|
|
162
230
|
|
|
163
231
|
var useOnChange$9 = reactFormHelper.hooks.useOnChange,
|
|
164
232
|
useCheckedToValue$1 = reactFormHelper.hooks.useCheckedToValue;
|
|
@@ -175,18 +243,25 @@ var Switch = function Switch(props) {
|
|
|
175
243
|
Switch.Field = antd.Switch;
|
|
176
244
|
|
|
177
245
|
var useOnChange$8 = reactFormHelper.hooks.useOnChange;
|
|
178
|
-
var
|
|
179
|
-
|
|
246
|
+
var SelectInner = function SelectInner(props) {
|
|
247
|
+
var _useIntl = reactIntl.useIntl(),
|
|
248
|
+
formatMessage = _useIntl.formatMessage;
|
|
249
|
+
var mergedProps = Object.assign({}, {
|
|
180
250
|
fieldName: 'select'
|
|
181
251
|
}, props);
|
|
182
252
|
var render = useOnChange$8(Object.assign({
|
|
183
|
-
placeholder:
|
|
184
|
-
|
|
253
|
+
placeholder: formatMessage({
|
|
254
|
+
id: 'PleaseSelect'
|
|
255
|
+
}, {
|
|
256
|
+
label: mergedProps.label || ''
|
|
257
|
+
})
|
|
258
|
+
}, mergedProps));
|
|
185
259
|
return render(antd.Select);
|
|
186
260
|
};
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
261
|
+
SelectInner.Field = antd.Select;
|
|
262
|
+
SelectInner.Option = antd.Select.Option;
|
|
263
|
+
SelectInner.OptGroup = antd.Select.OptGroup;
|
|
264
|
+
var _Select = withLocale(SelectInner);
|
|
190
265
|
|
|
191
266
|
var _excluded$3 = ["onChange"];
|
|
192
267
|
var useOnChange$7 = reactFormHelper.hooks.useOnChange;
|
|
@@ -211,129 +286,319 @@ _RadioGroup.Field = RadioGroup;
|
|
|
211
286
|
_RadioGroup.Radio = antd.Radio;
|
|
212
287
|
|
|
213
288
|
var useDecorator$1 = reactFormHelper.hooks.useDecorator;
|
|
214
|
-
var
|
|
215
|
-
|
|
289
|
+
var InputNumberFieldInner = function InputNumberFieldInner(props) {
|
|
290
|
+
var _useIntl = reactIntl.useIntl(),
|
|
291
|
+
formatMessage = _useIntl.formatMessage;
|
|
292
|
+
var mergedProps = Object.assign({}, {
|
|
216
293
|
fieldName: 'inputNumber',
|
|
217
294
|
autoComplete: 'off'
|
|
218
295
|
}, props);
|
|
219
296
|
var render = useDecorator$1(Object.assign({
|
|
220
|
-
placeholder:
|
|
221
|
-
|
|
297
|
+
placeholder: formatMessage({
|
|
298
|
+
id: 'PleaseInput'
|
|
299
|
+
}, {
|
|
300
|
+
label: mergedProps.label
|
|
301
|
+
})
|
|
302
|
+
}, mergedProps));
|
|
222
303
|
return render(antd.InputNumber);
|
|
223
304
|
};
|
|
224
|
-
|
|
305
|
+
InputNumberFieldInner.Field = antd.InputNumber;
|
|
306
|
+
var InputNumberField = withLocale(InputNumberFieldInner);
|
|
225
307
|
|
|
226
308
|
var useDecorator = reactFormHelper.hooks.useDecorator;
|
|
227
|
-
var
|
|
228
|
-
|
|
309
|
+
var InputFieldInner = function InputFieldInner(props) {
|
|
310
|
+
var _useIntl = reactIntl.useIntl(),
|
|
311
|
+
formatMessage = _useIntl.formatMessage;
|
|
312
|
+
var mergedProps = Object.assign({}, {
|
|
229
313
|
fieldName: 'input',
|
|
230
314
|
autoComplete: 'off'
|
|
231
315
|
}, props);
|
|
232
316
|
var render = useDecorator(Object.assign({
|
|
233
|
-
placeholder:
|
|
234
|
-
|
|
317
|
+
placeholder: formatMessage({
|
|
318
|
+
id: 'PleaseInput'
|
|
319
|
+
}, {
|
|
320
|
+
label: mergedProps.label
|
|
321
|
+
})
|
|
322
|
+
}, mergedProps));
|
|
235
323
|
return render(antd.Input);
|
|
236
324
|
};
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
325
|
+
InputFieldInner.Field = antd.Input;
|
|
326
|
+
var PasswordInner = function PasswordInner(props) {
|
|
327
|
+
var _useIntl2 = reactIntl.useIntl(),
|
|
328
|
+
formatMessage = _useIntl2.formatMessage;
|
|
329
|
+
var mergedProps = Object.assign({}, {
|
|
240
330
|
fieldName: 'password',
|
|
241
331
|
autoComplete: 'off'
|
|
242
332
|
}, props);
|
|
243
333
|
var render = useDecorator(Object.assign({
|
|
244
|
-
placeholder:
|
|
245
|
-
|
|
334
|
+
placeholder: formatMessage({
|
|
335
|
+
id: 'PleaseInput'
|
|
336
|
+
}, {
|
|
337
|
+
label: mergedProps.label
|
|
338
|
+
})
|
|
339
|
+
}, mergedProps));
|
|
246
340
|
return render(antd.Input.Password);
|
|
247
341
|
};
|
|
248
|
-
|
|
342
|
+
PasswordInner.Field = antd.Input.Password;
|
|
343
|
+
var InputField = withLocale(InputFieldInner);
|
|
344
|
+
InputField.Password = withLocale(PasswordInner);
|
|
249
345
|
|
|
250
|
-
var _excluded$2 = ["soFarText", "
|
|
346
|
+
var _excluded$2 = ["soFarText", "soFarValue"];
|
|
251
347
|
var useOnChange$6 = reactFormHelper.hooks.useOnChange;
|
|
252
|
-
var
|
|
348
|
+
var PickerTodayInner = function PickerTodayInner(_ref) {
|
|
253
349
|
var soFarText = _ref.soFarText,
|
|
254
|
-
|
|
255
|
-
|
|
350
|
+
_ref$soFarValue = _ref.soFarValue,
|
|
351
|
+
soFarValue = _ref$soFarValue === void 0 ? 'soFar' : _ref$soFarValue,
|
|
256
352
|
props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
353
|
+
var _useIntl = reactIntl.useIntl(),
|
|
354
|
+
formatMessage = _useIntl.formatMessage;
|
|
257
355
|
var _useControlValue = useControlValue__default["default"](props),
|
|
258
356
|
data = _useControlValue[0],
|
|
259
357
|
onChange = _useControlValue[1];
|
|
260
|
-
var
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
358
|
+
var _useState = React.useState(false),
|
|
359
|
+
openStart = _useState[0],
|
|
360
|
+
setOpenStart = _useState[1];
|
|
361
|
+
var _useState2 = React.useState(false),
|
|
362
|
+
openEnd = _useState2[0],
|
|
363
|
+
setOpenEnd = _useState2[1];
|
|
364
|
+
var _useState3 = React.useState(null),
|
|
365
|
+
tempStart = _useState3[0],
|
|
366
|
+
setTempStart = _useState3[1]; // 临时存储开始时间
|
|
367
|
+
var _useState4 = React.useState(null),
|
|
368
|
+
tempEnd = _useState4[0],
|
|
369
|
+
setTempEnd = _useState4[1]; // 临时存储结束时间
|
|
370
|
+
var _useState5 = React.useState(false),
|
|
371
|
+
hovering = _useState5[0],
|
|
372
|
+
setHovering = _useState5[1]; // hover 状态
|
|
373
|
+
var containerRef = React.useRef(null);
|
|
374
|
+
var isSwitchingRef = React.useRef(false); // 标记是否正在切换到结束时间选择
|
|
375
|
+
|
|
376
|
+
var soFarLabel = soFarText || formatMessage({
|
|
377
|
+
id: 'SoFar'
|
|
378
|
+
});
|
|
379
|
+
|
|
380
|
+
// 判断是否有值
|
|
381
|
+
var hasValue = React.useMemo(function () {
|
|
382
|
+
var _ref2 = data || [],
|
|
383
|
+
start = _ref2[0],
|
|
384
|
+
end = _ref2[1];
|
|
385
|
+
return !!(start || end);
|
|
386
|
+
}, [data]);
|
|
387
|
+
|
|
388
|
+
// 判断是否为"至今"
|
|
389
|
+
var isSoFar = React.useMemo(function () {
|
|
390
|
+
var _ref3 = data || [],
|
|
391
|
+
end = _ref3[1];
|
|
392
|
+
return end === soFarValue;
|
|
393
|
+
}, [data, soFarValue]);
|
|
394
|
+
|
|
395
|
+
// 解析数据
|
|
396
|
+
var parsedValue = React.useMemo(function () {
|
|
397
|
+
var _ref4 = data || [],
|
|
398
|
+
start = _ref4[0],
|
|
399
|
+
end = _ref4[1];
|
|
400
|
+
return {
|
|
401
|
+
start: start ? dayjs__default["default"](start) : null,
|
|
402
|
+
end: isSoFar ? null : end ? dayjs__default["default"](end) : null
|
|
403
|
+
};
|
|
404
|
+
}, [data, isSoFar]);
|
|
405
|
+
|
|
406
|
+
// 显示文本 - 弹窗打开时显示临时值,关闭后显示实际值
|
|
407
|
+
var displayText = React.useMemo(function () {
|
|
408
|
+
// 开始时间:有临时值时显示临时值
|
|
409
|
+
var startText = tempStart ? tempStart.format('YYYY-MM-DD') : parsedValue.start ? parsedValue.start.format('YYYY-MM-DD') : '';
|
|
410
|
+
|
|
411
|
+
// 结束时间:有临时值时显示临时值
|
|
412
|
+
var endText = tempEnd ? tempEnd.format('YYYY-MM-DD') : isSoFar ? soFarLabel : parsedValue.end ? parsedValue.end.format('YYYY-MM-DD') : '';
|
|
266
413
|
return {
|
|
267
|
-
start:
|
|
268
|
-
end:
|
|
269
|
-
showZj: d === '至今',
|
|
270
|
-
placeholder: p
|
|
414
|
+
start: startText,
|
|
415
|
+
end: endText
|
|
271
416
|
};
|
|
417
|
+
}, [parsedValue, isSoFar, soFarLabel, tempStart, tempEnd]);
|
|
418
|
+
|
|
419
|
+
// 点击整个Input框时,先弹出开始时间选择
|
|
420
|
+
var handleInputClick = React.useCallback(function () {
|
|
421
|
+
var _ref5 = data || [],
|
|
422
|
+
start = _ref5[0];
|
|
423
|
+
setTempStart(start ? dayjs__default["default"](start) : null);
|
|
424
|
+
setOpenStart(true);
|
|
425
|
+
setOpenEnd(false);
|
|
272
426
|
}, [data]);
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
427
|
+
|
|
428
|
+
// 清除值
|
|
429
|
+
var handleClear = React.useCallback(function (e) {
|
|
430
|
+
e.stopPropagation();
|
|
431
|
+
onChange([]);
|
|
432
|
+
setTempStart(null);
|
|
433
|
+
setTempEnd(null);
|
|
434
|
+
setOpenStart(false);
|
|
435
|
+
setOpenEnd(false);
|
|
436
|
+
}, [onChange]);
|
|
437
|
+
|
|
438
|
+
// 处理开始时间变化
|
|
439
|
+
var handleStartChange = React.useCallback(function (date) {
|
|
440
|
+
setTempStart(date);
|
|
441
|
+
isSwitchingRef.current = true; // 标记正在切换
|
|
442
|
+
setOpenStart(false);
|
|
443
|
+
setTimeout(function () {
|
|
444
|
+
setOpenEnd(true);
|
|
445
|
+
isSwitchingRef.current = false;
|
|
446
|
+
}, 100);
|
|
447
|
+
}, []);
|
|
448
|
+
|
|
449
|
+
// 处理结束时间变化(选择日期时实时更新显示,选择后确认值)
|
|
450
|
+
var handleEndChange = React.useCallback(function (date) {
|
|
451
|
+
if (date) {
|
|
452
|
+
// 选择了有效日期,确认值
|
|
453
|
+
if (!tempStart) return;
|
|
454
|
+
onChange([tempStart.toISOString(), date.toISOString()]);
|
|
455
|
+
setOpenEnd(false);
|
|
456
|
+
setTempStart(null);
|
|
457
|
+
setTempEnd(null);
|
|
458
|
+
} else {
|
|
459
|
+
// 清空选择
|
|
460
|
+
setTempEnd(null);
|
|
278
461
|
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
462
|
+
}, [tempStart, onChange]);
|
|
463
|
+
|
|
464
|
+
// 点击"至今"按钮
|
|
465
|
+
var handleSoFarClick = React.useCallback(function () {
|
|
466
|
+
if (!tempStart) return;
|
|
467
|
+
onChange([tempStart.toISOString(), soFarValue]);
|
|
468
|
+
setOpenEnd(false);
|
|
469
|
+
setTempStart(null);
|
|
470
|
+
setTempEnd(null);
|
|
471
|
+
}, [tempStart, onChange, soFarValue]);
|
|
472
|
+
|
|
473
|
+
// 处理开始时间弹窗关闭(未完成选择)
|
|
474
|
+
var handleStartOpenChange = React.useCallback(function (open) {
|
|
475
|
+
if (!open) {
|
|
476
|
+
setOpenStart(false);
|
|
477
|
+
// 如果不是正在切换到结束时间,则清空临时状态
|
|
478
|
+
if (!isSwitchingRef.current) {
|
|
479
|
+
setTempStart(null);
|
|
480
|
+
}
|
|
285
481
|
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
482
|
+
}, []);
|
|
483
|
+
|
|
484
|
+
// 处理结束时间弹窗关闭(未完成选择)
|
|
485
|
+
var handleEndOpenChange = React.useCallback(function (open) {
|
|
486
|
+
if (!open) {
|
|
487
|
+
setOpenEnd(false);
|
|
488
|
+
// 关闭结束时间弹窗时,不修改field值
|
|
489
|
+
setTempStart(null);
|
|
490
|
+
setTempEnd(null);
|
|
491
|
+
}
|
|
492
|
+
}, []);
|
|
493
|
+
|
|
494
|
+
// 结束时间面板变化时更新临时值(用于实时显示)
|
|
495
|
+
var handleEndPanelChange = React.useCallback(function (date) {
|
|
496
|
+
setTempEnd(date);
|
|
497
|
+
}, []);
|
|
498
|
+
|
|
499
|
+
// 空的 footer(用于开始时间,保持高度一致)
|
|
500
|
+
var renderEmptyFooter = React.useCallback(function () {
|
|
501
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
502
|
+
style: {
|
|
503
|
+
height: 40
|
|
294
504
|
}
|
|
295
|
-
}
|
|
296
|
-
};
|
|
505
|
+
});
|
|
506
|
+
}, []);
|
|
507
|
+
|
|
508
|
+
// 带至今按钮的 footer
|
|
509
|
+
var renderExtraFooter = React.useCallback(function () {
|
|
510
|
+
var isCurrentSoFar = !tempStart && isSoFar;
|
|
511
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
512
|
+
style: {
|
|
513
|
+
textAlign: 'right'
|
|
514
|
+
}
|
|
515
|
+
}, /*#__PURE__*/React__default["default"].createElement(antd.Button, {
|
|
516
|
+
type: isCurrentSoFar ? 'primary' : 'default',
|
|
517
|
+
onClick: handleSoFarClick
|
|
518
|
+
}, soFarLabel));
|
|
519
|
+
}, [isSoFar, tempStart, handleSoFarClick, soFarLabel]);
|
|
520
|
+
|
|
521
|
+
// 结束时间的可选日期(不能早于开始时间)
|
|
522
|
+
var endDisabledDate = React.useCallback(function (current) {
|
|
523
|
+
if (!tempStart) return false;
|
|
524
|
+
return current && current < tempStart.startOf('day');
|
|
525
|
+
}, [tempStart]);
|
|
297
526
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
298
|
-
|
|
299
|
-
|
|
527
|
+
className: "date-picker-today-container",
|
|
528
|
+
ref: containerRef
|
|
529
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
530
|
+
className: "date-picker-today-inputs",
|
|
531
|
+
onClick: handleInputClick,
|
|
532
|
+
onMouseEnter: function onMouseEnter() {
|
|
533
|
+
return setHovering(true);
|
|
534
|
+
},
|
|
535
|
+
onMouseLeave: function onMouseLeave() {
|
|
536
|
+
return setHovering(false);
|
|
300
537
|
}
|
|
301
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
302
|
-
|
|
303
|
-
},
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
}))
|
|
322
|
-
className:
|
|
323
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
324
|
-
className:
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
538
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
539
|
+
className: "date-picker-today-start"
|
|
540
|
+
}, /*#__PURE__*/React__default["default"].createElement("input", {
|
|
541
|
+
readOnly: true,
|
|
542
|
+
placeholder: formatMessage({
|
|
543
|
+
id: 'StartDate'
|
|
544
|
+
}),
|
|
545
|
+
value: displayText.start,
|
|
546
|
+
className: "ant-input"
|
|
547
|
+
})), /*#__PURE__*/React__default["default"].createElement("span", {
|
|
548
|
+
className: "date-picker-today-separator"
|
|
549
|
+
}, "~"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
550
|
+
className: "date-picker-today-end"
|
|
551
|
+
}, /*#__PURE__*/React__default["default"].createElement("input", {
|
|
552
|
+
readOnly: true,
|
|
553
|
+
placeholder: formatMessage({
|
|
554
|
+
id: 'EndDate'
|
|
555
|
+
}),
|
|
556
|
+
value: displayText.end,
|
|
557
|
+
className: "ant-input " + (isSoFar ? 'so-far-active' : '')
|
|
558
|
+
})), /*#__PURE__*/React__default["default"].createElement("span", {
|
|
559
|
+
className: "date-picker-today-suffix"
|
|
560
|
+
}, hasValue && hovering ? /*#__PURE__*/React__default["default"].createElement(icons.CloseCircleFilled, {
|
|
561
|
+
className: "date-picker-today-clear",
|
|
562
|
+
onClick: handleClear
|
|
563
|
+
}) : /*#__PURE__*/React__default["default"].createElement(icons.CalendarOutlined, null))), /*#__PURE__*/React__default["default"].createElement(antd.DatePicker, {
|
|
564
|
+
open: openStart,
|
|
565
|
+
onOpenChange: handleStartOpenChange,
|
|
566
|
+
value: tempStart || parsedValue.start,
|
|
567
|
+
onChange: handleStartChange,
|
|
568
|
+
renderExtraFooter: renderEmptyFooter,
|
|
569
|
+
showNow: false,
|
|
570
|
+
getPopupContainer: function getPopupContainer() {
|
|
571
|
+
return containerRef.current || document.body;
|
|
572
|
+
},
|
|
573
|
+
style: {
|
|
574
|
+
width: 0,
|
|
575
|
+
height: 0,
|
|
576
|
+
visibility: 'hidden',
|
|
577
|
+
position: 'absolute'
|
|
578
|
+
},
|
|
579
|
+
placement: "bottomLeft"
|
|
580
|
+
}), /*#__PURE__*/React__default["default"].createElement(antd.DatePicker, {
|
|
581
|
+
open: openEnd,
|
|
582
|
+
onOpenChange: handleEndOpenChange,
|
|
583
|
+
value: tempEnd || parsedValue.end,
|
|
584
|
+
onChange: handleEndChange,
|
|
585
|
+
onPanelChange: handleEndPanelChange,
|
|
586
|
+
disabledDate: endDisabledDate,
|
|
587
|
+
renderExtraFooter: renderExtraFooter,
|
|
588
|
+
showNow: false,
|
|
589
|
+
getPopupContainer: function getPopupContainer() {
|
|
590
|
+
return containerRef.current || document.body;
|
|
591
|
+
},
|
|
592
|
+
style: {
|
|
593
|
+
width: 0,
|
|
594
|
+
height: 0,
|
|
595
|
+
visibility: 'hidden',
|
|
596
|
+
position: 'absolute'
|
|
597
|
+
},
|
|
598
|
+
placement: "bottomLeft"
|
|
599
|
+
}));
|
|
336
600
|
};
|
|
601
|
+
var PickerToday = withLocale(PickerTodayInner);
|
|
337
602
|
var RangePickerToday = function RangePickerToday(props) {
|
|
338
603
|
props = Object.assign({}, {
|
|
339
604
|
fieldName: 'rangePickerToday'
|
|
@@ -347,49 +612,74 @@ var useOnChange$5 = reactFormHelper.hooks.useOnChange;
|
|
|
347
612
|
var MonthPicker = antd.DatePicker.MonthPicker,
|
|
348
613
|
RangePicker = antd.DatePicker.RangePicker,
|
|
349
614
|
WeekPicker = antd.DatePicker.WeekPicker;
|
|
350
|
-
var
|
|
351
|
-
|
|
615
|
+
var DatePickerInner = function DatePickerInner(props) {
|
|
616
|
+
var _useIntl = reactIntl.useIntl(),
|
|
617
|
+
formatMessage = _useIntl.formatMessage;
|
|
618
|
+
var mergedProps = Object.assign({}, {
|
|
352
619
|
fieldName: 'datePicker'
|
|
353
620
|
}, props);
|
|
354
621
|
var render = useOnChange$5(Object.assign({
|
|
355
|
-
placeholder:
|
|
356
|
-
|
|
622
|
+
placeholder: formatMessage({
|
|
623
|
+
id: 'PleaseSelect'
|
|
624
|
+
}, {
|
|
625
|
+
label: mergedProps.label || ''
|
|
626
|
+
})
|
|
627
|
+
}, mergedProps));
|
|
357
628
|
return render(antd.DatePicker);
|
|
358
629
|
};
|
|
359
|
-
|
|
360
|
-
var
|
|
361
|
-
|
|
630
|
+
DatePickerInner.Field = antd.DatePicker;
|
|
631
|
+
var MonthPickerInner = function MonthPickerInner(props) {
|
|
632
|
+
var _useIntl2 = reactIntl.useIntl(),
|
|
633
|
+
formatMessage = _useIntl2.formatMessage;
|
|
634
|
+
var mergedProps = Object.assign({}, {
|
|
362
635
|
fieldName: 'monthDatePicker'
|
|
363
636
|
}, props);
|
|
364
637
|
var render = useOnChange$5(Object.assign({
|
|
365
|
-
placeholder: [
|
|
366
|
-
|
|
638
|
+
placeholder: [formatMessage({
|
|
639
|
+
id: 'StartTime'
|
|
640
|
+
}), formatMessage({
|
|
641
|
+
id: 'EndTime'
|
|
642
|
+
})]
|
|
643
|
+
}, mergedProps));
|
|
367
644
|
return render(MonthPicker);
|
|
368
645
|
};
|
|
369
|
-
|
|
370
|
-
var
|
|
371
|
-
|
|
646
|
+
MonthPickerInner.Field = MonthPicker;
|
|
647
|
+
var RangePickerInner = function RangePickerInner(props) {
|
|
648
|
+
var _useIntl3 = reactIntl.useIntl(),
|
|
649
|
+
formatMessage = _useIntl3.formatMessage;
|
|
650
|
+
var mergedProps = Object.assign({}, {
|
|
372
651
|
fieldName: 'rangeDatePicker'
|
|
373
652
|
}, props);
|
|
374
653
|
var render = useOnChange$5(Object.assign({
|
|
375
|
-
placeholder: [
|
|
376
|
-
|
|
654
|
+
placeholder: [formatMessage({
|
|
655
|
+
id: 'StartTime'
|
|
656
|
+
}), formatMessage({
|
|
657
|
+
id: 'EndTime'
|
|
658
|
+
})]
|
|
659
|
+
}, mergedProps));
|
|
377
660
|
return render(RangePicker);
|
|
378
661
|
};
|
|
379
|
-
|
|
380
|
-
var
|
|
381
|
-
|
|
662
|
+
RangePickerInner.Field = RangePicker;
|
|
663
|
+
var WeekPickerInner = function WeekPickerInner(props) {
|
|
664
|
+
var _useIntl4 = reactIntl.useIntl(),
|
|
665
|
+
formatMessage = _useIntl4.formatMessage;
|
|
666
|
+
var mergedProps = Object.assign({}, {
|
|
382
667
|
fieldName: 'weekDatePicker'
|
|
383
668
|
}, props);
|
|
384
669
|
var render = useOnChange$5(Object.assign({
|
|
385
|
-
placeholder: [
|
|
386
|
-
|
|
670
|
+
placeholder: [formatMessage({
|
|
671
|
+
id: 'StartTime'
|
|
672
|
+
}), formatMessage({
|
|
673
|
+
id: 'EndTime'
|
|
674
|
+
})]
|
|
675
|
+
}, mergedProps));
|
|
387
676
|
return render(WeekPicker);
|
|
388
677
|
};
|
|
389
|
-
|
|
390
|
-
_DatePicker
|
|
391
|
-
_DatePicker.
|
|
392
|
-
_DatePicker.
|
|
678
|
+
WeekPickerInner.Field = WeekPicker;
|
|
679
|
+
var _DatePicker = withLocale(DatePickerInner);
|
|
680
|
+
_DatePicker.MonthPicker = withLocale(MonthPickerInner);
|
|
681
|
+
_DatePicker.RangePicker = withLocale(RangePickerInner);
|
|
682
|
+
_DatePicker.WeekPicker = withLocale(WeekPickerInner);
|
|
393
683
|
|
|
394
684
|
var useOnChange$4 = reactFormHelper.hooks.useOnChange;
|
|
395
685
|
var _CheckboxGroup = antd.Checkbox.Group;
|