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