@kne/react-form-antd 4.1.4 → 4.1.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.
- package/README.md +17 -0
- package/dist/index.js +182 -31
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +167 -32
- package/dist/index.modern.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -539,6 +539,23 @@ const DatePickerExample = () => {
|
|
|
539
539
|
</Form>
|
|
540
540
|
</Card>
|
|
541
541
|
|
|
542
|
+
<Card title="字符串初始值(兼容 antd 6)" size="small">
|
|
543
|
+
<Form
|
|
544
|
+
data={{
|
|
545
|
+
stringDate: '2024-06-15',
|
|
546
|
+
stringRange: ['2024-01-01', '2024-12-31'],
|
|
547
|
+
stringTime: '14:30:00'
|
|
548
|
+
}}
|
|
549
|
+
onSubmit={setFormData}
|
|
550
|
+
>
|
|
551
|
+
<Flex vertical gap={16}>
|
|
552
|
+
<DatePicker name="stringDate" label="日期字符串" placeholder="请选择日期" />
|
|
553
|
+
<DatePicker.RangePicker name="stringRange" label="范围字符串" placeholder={['开始日期', '结束日期']} />
|
|
554
|
+
<TimePicker name="stringTime" label="时间字符串" format="HH:mm:ss" placeholder="请选择时间" />
|
|
555
|
+
</Flex>
|
|
556
|
+
</Form>
|
|
557
|
+
</Card>
|
|
558
|
+
|
|
542
559
|
<Card title="TimePicker 时间选择" size="small">
|
|
543
560
|
<Form onSubmit={setFormData}>
|
|
544
561
|
<Flex vertical gap={16}>
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ var merge = require('lodash/merge');
|
|
|
6
6
|
var antd = require('antd');
|
|
7
7
|
var reactIntl = require('@kne/react-intl');
|
|
8
8
|
var dayjs = require('dayjs');
|
|
9
|
+
var customParseFormat = require('dayjs/plugin/customParseFormat');
|
|
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 }; }
|
|
@@ -34,6 +35,7 @@ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
|
34
35
|
var ReactForm__default = /*#__PURE__*/_interopDefaultLegacy(ReactForm);
|
|
35
36
|
var merge__default = /*#__PURE__*/_interopDefaultLegacy(merge);
|
|
36
37
|
var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
|
|
38
|
+
var customParseFormat__default = /*#__PURE__*/_interopDefaultLegacy(customParseFormat);
|
|
37
39
|
var useControlValue__default = /*#__PURE__*/_interopDefaultLegacy(useControlValue);
|
|
38
40
|
|
|
39
41
|
function _extends$3() {
|
|
@@ -77,7 +79,7 @@ var preset = (function (props) {
|
|
|
77
79
|
ReactForm.preset(globalParams.rules);
|
|
78
80
|
});
|
|
79
81
|
|
|
80
|
-
var _excluded$
|
|
82
|
+
var _excluded$5 = ["className", "cache", "enterSubmit", "scrollToError", "scrollProps", "type", "size", "children"];
|
|
81
83
|
var ScrollToError = reactFormHelper.widget.ScrollToError,
|
|
82
84
|
EnterSubmit = reactFormHelper.widget.EnterSubmit,
|
|
83
85
|
FormStore = reactFormHelper.widget.FormStore,
|
|
@@ -95,7 +97,7 @@ var Form = React.forwardRef(function (originProps, ref) {
|
|
|
95
97
|
block: 'center'
|
|
96
98
|
} : _originProps$scrollPr,
|
|
97
99
|
children = originProps.children,
|
|
98
|
-
props = _objectWithoutPropertiesLoose(originProps, _excluded$
|
|
100
|
+
props = _objectWithoutPropertiesLoose(originProps, _excluded$5);
|
|
99
101
|
var baseClass = 'react-form';
|
|
100
102
|
var computedClass = baseClass;
|
|
101
103
|
var _Object$assign = Object.assign({
|
|
@@ -179,8 +181,138 @@ TreeSelectInner.Field = antd.TreeSelect;
|
|
|
179
181
|
TreeSelectInner.TreeNode = antd.TreeSelect.TreeNode;
|
|
180
182
|
var _TreeSelect = withLocale(TreeSelectInner);
|
|
181
183
|
|
|
184
|
+
dayjs__default["default"].extend(customParseFormat__default["default"]);
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Convert form/API date values to dayjs for antd DatePicker/TimePicker.
|
|
188
|
+
* Newer @rc-component/picker getUDayjs returns non-dayjs values as-is,
|
|
189
|
+
* then calls .isValid() and throws on plain strings.
|
|
190
|
+
*/
|
|
191
|
+
var toDayjs = function toDayjs(value, format) {
|
|
192
|
+
if (value == null || value === '') {
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
if (dayjs__default["default"].isDayjs(value)) {
|
|
196
|
+
return value;
|
|
197
|
+
}
|
|
198
|
+
if (typeof value === 'string' && typeof format === 'string' && format) {
|
|
199
|
+
var _parsed = dayjs__default["default"](value, format, true);
|
|
200
|
+
if (_parsed.isValid()) {
|
|
201
|
+
return _parsed;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
var parsed = dayjs__default["default"](value);
|
|
205
|
+
return parsed.isValid() ? parsed : null;
|
|
206
|
+
};
|
|
207
|
+
var toDayjsValue = function toDayjsValue(value, format) {
|
|
208
|
+
if (Array.isArray(value)) {
|
|
209
|
+
return value.map(function (item) {
|
|
210
|
+
return toDayjs(item, format);
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
return toDayjs(value, format);
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Date-only pickers should emit start of the selected unit (e.g. day at 00:00:00),
|
|
218
|
+
* not "selected date + current clock time".
|
|
219
|
+
*/
|
|
220
|
+
var startOfByPicker = function startOfByPicker(value, picker) {
|
|
221
|
+
if (picker === void 0) {
|
|
222
|
+
picker = 'date';
|
|
223
|
+
}
|
|
224
|
+
if (!value || !dayjs__default["default"].isDayjs(value) || !value.isValid()) {
|
|
225
|
+
return value;
|
|
226
|
+
}
|
|
227
|
+
var unit = picker === 'week' ? 'week' : picker === 'month' ? 'month' : picker === 'quarter' ? 'quarter' : picker === 'year' ? 'year' : 'day';
|
|
228
|
+
return value.startOf(unit);
|
|
229
|
+
};
|
|
230
|
+
var normalizeDateValue = function normalizeDateValue(value, picker) {
|
|
231
|
+
if (picker === void 0) {
|
|
232
|
+
picker = 'date';
|
|
233
|
+
}
|
|
234
|
+
if (Array.isArray(value)) {
|
|
235
|
+
return value.map(function (item) {
|
|
236
|
+
return startOfByPicker(item, picker);
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
return startOfByPicker(value, picker);
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
var _excluded$4 = ["value", "defaultValue", "format", "showTime", "picker", "onChange"];
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Wrap antd picker so string/number initial values from form/API become dayjs.
|
|
246
|
+
* When options.stripTime is true and showTime is off, onChange values are
|
|
247
|
+
* normalized to start of the picker unit (date → 00:00:00).
|
|
248
|
+
*/
|
|
249
|
+
var withDayjsValue = function withDayjsValue(WrappedComponent, options) {
|
|
250
|
+
if (options === void 0) {
|
|
251
|
+
options = {};
|
|
252
|
+
}
|
|
253
|
+
var _options = options,
|
|
254
|
+
_options$stripTime = _options.stripTime,
|
|
255
|
+
stripTime = _options$stripTime === void 0 ? false : _options$stripTime,
|
|
256
|
+
_options$defaultPicke = _options.defaultPicker,
|
|
257
|
+
defaultPicker = _options$defaultPicke === void 0 ? 'date' : _options$defaultPicke;
|
|
258
|
+
var Component = React.forwardRef(function (_ref, ref) {
|
|
259
|
+
var value = _ref.value,
|
|
260
|
+
defaultValue = _ref.defaultValue,
|
|
261
|
+
format = _ref.format,
|
|
262
|
+
showTime = _ref.showTime,
|
|
263
|
+
picker = _ref.picker,
|
|
264
|
+
onChange = _ref.onChange,
|
|
265
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
266
|
+
var mergedPicker = picker || defaultPicker;
|
|
267
|
+
var shouldStripTime = stripTime && !showTime;
|
|
268
|
+
var mergedValue = React.useMemo(function () {
|
|
269
|
+
if (value === undefined) {
|
|
270
|
+
return undefined;
|
|
271
|
+
}
|
|
272
|
+
var next = toDayjsValue(value, format);
|
|
273
|
+
return shouldStripTime ? normalizeDateValue(next, mergedPicker) : next;
|
|
274
|
+
}, [value, format, shouldStripTime, mergedPicker]);
|
|
275
|
+
var mergedDefaultValue = React.useMemo(function () {
|
|
276
|
+
if (defaultValue === undefined) {
|
|
277
|
+
return undefined;
|
|
278
|
+
}
|
|
279
|
+
var next = toDayjsValue(defaultValue, format);
|
|
280
|
+
return shouldStripTime ? normalizeDateValue(next, mergedPicker) : next;
|
|
281
|
+
}, [defaultValue, format, shouldStripTime, mergedPicker]);
|
|
282
|
+
var handleChange = React.useCallback(function (next) {
|
|
283
|
+
var rest = [].slice.call(arguments, 1);
|
|
284
|
+
if (!onChange) {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
if (shouldStripTime && next != null) {
|
|
288
|
+
onChange.apply(void 0, [normalizeDateValue(next, mergedPicker)].concat(rest));
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
onChange.apply(void 0, [next].concat(rest));
|
|
292
|
+
}, [onChange, shouldStripTime, mergedPicker]);
|
|
293
|
+
return /*#__PURE__*/React__default["default"].createElement(WrappedComponent, _extends$3({}, props, {
|
|
294
|
+
ref: ref,
|
|
295
|
+
format: format,
|
|
296
|
+
showTime: showTime,
|
|
297
|
+
picker: picker,
|
|
298
|
+
value: mergedValue,
|
|
299
|
+
defaultValue: mergedDefaultValue,
|
|
300
|
+
onChange: handleChange
|
|
301
|
+
}));
|
|
302
|
+
});
|
|
303
|
+
Component.displayName = "withDayjsValue(" + (WrappedComponent.displayName || WrappedComponent.name || 'Component') + ")";
|
|
304
|
+
Object.keys(WrappedComponent).filter(function (key) {
|
|
305
|
+
return ['$$typeof', 'render', 'field'].indexOf(key) === -1;
|
|
306
|
+
}).forEach(function (key) {
|
|
307
|
+
Component[key] = WrappedComponent[key];
|
|
308
|
+
});
|
|
309
|
+
return Component;
|
|
310
|
+
};
|
|
311
|
+
|
|
182
312
|
var useOnChange$a = reactFormHelper.hooks.useOnChange;
|
|
183
313
|
var RangePicker$1 = antd.TimePicker.RangePicker;
|
|
314
|
+
var DayjsTimePicker = withDayjsValue(antd.TimePicker);
|
|
315
|
+
var DayjsRangePicker$1 = withDayjsValue(RangePicker$1);
|
|
184
316
|
var TimePickerInner = function TimePickerInner(props) {
|
|
185
317
|
var _useIntl = reactIntl.useIntl(),
|
|
186
318
|
formatMessage = _useIntl.formatMessage;
|
|
@@ -194,9 +326,9 @@ var TimePickerInner = function TimePickerInner(props) {
|
|
|
194
326
|
label: mergedProps.label || ''
|
|
195
327
|
})
|
|
196
328
|
}, mergedProps));
|
|
197
|
-
return render(
|
|
329
|
+
return render(DayjsTimePicker);
|
|
198
330
|
};
|
|
199
|
-
TimePickerInner.Field =
|
|
331
|
+
TimePickerInner.Field = DayjsTimePicker;
|
|
200
332
|
var RangePickerInner$1 = function RangePickerInner(props) {
|
|
201
333
|
var _useIntl2 = reactIntl.useIntl(),
|
|
202
334
|
formatMessage = _useIntl2.formatMessage;
|
|
@@ -210,9 +342,9 @@ var RangePickerInner$1 = function RangePickerInner(props) {
|
|
|
210
342
|
label: mergedProps.label || ''
|
|
211
343
|
})
|
|
212
344
|
}, mergedProps));
|
|
213
|
-
return render(
|
|
345
|
+
return render(DayjsRangePicker$1);
|
|
214
346
|
};
|
|
215
|
-
RangePickerInner$1.Field =
|
|
347
|
+
RangePickerInner$1.Field = DayjsRangePicker$1;
|
|
216
348
|
var _TimePicker = withLocale(TimePickerInner);
|
|
217
349
|
_TimePicker.RangePicker = withLocale(RangePickerInner$1);
|
|
218
350
|
|
|
@@ -863,30 +995,33 @@ var PickerTodayInner = function PickerTodayInner(_ref) {
|
|
|
863
995
|
setOpenEnd(false);
|
|
864
996
|
}, [onChange]);
|
|
865
997
|
|
|
866
|
-
//
|
|
867
|
-
|
|
998
|
+
// 开始日期确认后切到结束选择。
|
|
999
|
+
// 必须用 onSelect:已有值时再次点选同一天,antd 的 onChange 不会触发,弹层会直接关闭。
|
|
1000
|
+
var switchToEndPicker = React.useCallback(function (date) {
|
|
1001
|
+
if (!date) {
|
|
1002
|
+
return;
|
|
1003
|
+
}
|
|
868
1004
|
setTempStart(date);
|
|
869
|
-
isSwitchingRef.current = true;
|
|
1005
|
+
isSwitchingRef.current = true;
|
|
870
1006
|
setOpenStart(false);
|
|
871
1007
|
setTimeout(function () {
|
|
872
1008
|
setOpenEnd(true);
|
|
873
1009
|
isSwitchingRef.current = false;
|
|
874
1010
|
}, 100);
|
|
875
1011
|
}, []);
|
|
1012
|
+
var handleStartSelect = React.useCallback(function (date) {
|
|
1013
|
+
switchToEndPicker(date);
|
|
1014
|
+
}, [switchToEndPicker]);
|
|
876
1015
|
|
|
877
|
-
//
|
|
878
|
-
var
|
|
879
|
-
if (date) {
|
|
880
|
-
|
|
881
|
-
if (!tempStart) return;
|
|
882
|
-
onChange([tempStart.toISOString(), date.toISOString()]);
|
|
883
|
-
setOpenEnd(false);
|
|
884
|
-
setTempStart(null);
|
|
885
|
-
setTempEnd(null);
|
|
886
|
-
} else {
|
|
887
|
-
// 清空选择
|
|
888
|
-
setTempEnd(null);
|
|
1016
|
+
// 结束日期确认(同样用 onSelect,避免与当前结束值相同时无法提交)
|
|
1017
|
+
var handleEndSelect = React.useCallback(function (date) {
|
|
1018
|
+
if (!date || !tempStart) {
|
|
1019
|
+
return;
|
|
889
1020
|
}
|
|
1021
|
+
onChange([tempStart.toISOString(), date.toISOString()]);
|
|
1022
|
+
setOpenEnd(false);
|
|
1023
|
+
setTempStart(null);
|
|
1024
|
+
setTempEnd(null);
|
|
890
1025
|
}, [tempStart, onChange]);
|
|
891
1026
|
|
|
892
1027
|
// 点击"至今"按钮
|
|
@@ -996,7 +1131,7 @@ var PickerTodayInner = function PickerTodayInner(_ref) {
|
|
|
996
1131
|
open: openStart,
|
|
997
1132
|
onOpenChange: handleStartOpenChange,
|
|
998
1133
|
value: tempStart || parsedValue.start,
|
|
999
|
-
|
|
1134
|
+
onSelect: handleStartSelect,
|
|
1000
1135
|
renderExtraFooter: renderEmptyFooter,
|
|
1001
1136
|
showNow: false,
|
|
1002
1137
|
getPopupContainer: function getPopupContainer() {
|
|
@@ -1014,7 +1149,7 @@ var PickerTodayInner = function PickerTodayInner(_ref) {
|
|
|
1014
1149
|
open: openEnd,
|
|
1015
1150
|
onOpenChange: handleEndOpenChange,
|
|
1016
1151
|
value: tempEnd || parsedValue.end,
|
|
1017
|
-
|
|
1152
|
+
onSelect: handleEndSelect,
|
|
1018
1153
|
onPanelChange: handleEndPanelChange,
|
|
1019
1154
|
disabledDate: endDisabledDate,
|
|
1020
1155
|
renderExtraFooter: renderExtraFooter,
|
|
@@ -1045,6 +1180,22 @@ var useOnChange$5 = reactFormHelper.hooks.useOnChange;
|
|
|
1045
1180
|
var MonthPicker = antd.DatePicker.MonthPicker,
|
|
1046
1181
|
RangePicker = antd.DatePicker.RangePicker,
|
|
1047
1182
|
WeekPicker = antd.DatePicker.WeekPicker;
|
|
1183
|
+
var DayjsDatePicker = withDayjsValue(antd.DatePicker, {
|
|
1184
|
+
stripTime: true,
|
|
1185
|
+
defaultPicker: 'date'
|
|
1186
|
+
});
|
|
1187
|
+
var DayjsMonthPicker = MonthPicker ? withDayjsValue(MonthPicker, {
|
|
1188
|
+
stripTime: true,
|
|
1189
|
+
defaultPicker: 'month'
|
|
1190
|
+
}) : DayjsDatePicker;
|
|
1191
|
+
var DayjsRangePicker = withDayjsValue(RangePicker, {
|
|
1192
|
+
stripTime: true,
|
|
1193
|
+
defaultPicker: 'date'
|
|
1194
|
+
});
|
|
1195
|
+
var DayjsWeekPicker = WeekPicker ? withDayjsValue(WeekPicker, {
|
|
1196
|
+
stripTime: true,
|
|
1197
|
+
defaultPicker: 'week'
|
|
1198
|
+
}) : DayjsDatePicker;
|
|
1048
1199
|
var DatePickerInner = function DatePickerInner(props) {
|
|
1049
1200
|
var _useIntl = reactIntl.useIntl(),
|
|
1050
1201
|
formatMessage = _useIntl.formatMessage;
|
|
@@ -1058,9 +1209,9 @@ var DatePickerInner = function DatePickerInner(props) {
|
|
|
1058
1209
|
label: mergedProps.label || ''
|
|
1059
1210
|
})
|
|
1060
1211
|
}, mergedProps));
|
|
1061
|
-
return render(
|
|
1212
|
+
return render(DayjsDatePicker);
|
|
1062
1213
|
};
|
|
1063
|
-
DatePickerInner.Field =
|
|
1214
|
+
DatePickerInner.Field = DayjsDatePicker;
|
|
1064
1215
|
var MonthPickerInner = function MonthPickerInner(props) {
|
|
1065
1216
|
var _useIntl2 = reactIntl.useIntl(),
|
|
1066
1217
|
formatMessage = _useIntl2.formatMessage;
|
|
@@ -1074,9 +1225,9 @@ var MonthPickerInner = function MonthPickerInner(props) {
|
|
|
1074
1225
|
id: 'EndTime'
|
|
1075
1226
|
})]
|
|
1076
1227
|
}, mergedProps));
|
|
1077
|
-
return render(
|
|
1228
|
+
return render(DayjsMonthPicker);
|
|
1078
1229
|
};
|
|
1079
|
-
MonthPickerInner.Field =
|
|
1230
|
+
MonthPickerInner.Field = DayjsMonthPicker;
|
|
1080
1231
|
var RangePickerInner = function RangePickerInner(props) {
|
|
1081
1232
|
var _useIntl3 = reactIntl.useIntl(),
|
|
1082
1233
|
formatMessage = _useIntl3.formatMessage;
|
|
@@ -1090,9 +1241,9 @@ var RangePickerInner = function RangePickerInner(props) {
|
|
|
1090
1241
|
id: 'EndTime'
|
|
1091
1242
|
})]
|
|
1092
1243
|
}, mergedProps));
|
|
1093
|
-
return render(
|
|
1244
|
+
return render(DayjsRangePicker);
|
|
1094
1245
|
};
|
|
1095
|
-
RangePickerInner.Field =
|
|
1246
|
+
RangePickerInner.Field = DayjsRangePicker;
|
|
1096
1247
|
var WeekPickerInner = function WeekPickerInner(props) {
|
|
1097
1248
|
var _useIntl4 = reactIntl.useIntl(),
|
|
1098
1249
|
formatMessage = _useIntl4.formatMessage;
|
|
@@ -1106,9 +1257,9 @@ var WeekPickerInner = function WeekPickerInner(props) {
|
|
|
1106
1257
|
id: 'EndTime'
|
|
1107
1258
|
})]
|
|
1108
1259
|
}, mergedProps));
|
|
1109
|
-
return render(
|
|
1260
|
+
return render(DayjsWeekPicker);
|
|
1110
1261
|
};
|
|
1111
|
-
WeekPickerInner.Field =
|
|
1262
|
+
WeekPickerInner.Field = DayjsWeekPicker;
|
|
1112
1263
|
var _DatePicker = withLocale(DatePickerInner);
|
|
1113
1264
|
_DatePicker.MonthPicker = withLocale(MonthPickerInner);
|
|
1114
1265
|
_DatePicker.RangePicker = withLocale(RangePickerInner);
|