@kne/react-form-antd 4.1.4 → 4.1.5
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 +162 -14
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +147 -15
- 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
|
|
|
@@ -1045,6 +1177,22 @@ var useOnChange$5 = reactFormHelper.hooks.useOnChange;
|
|
|
1045
1177
|
var MonthPicker = antd.DatePicker.MonthPicker,
|
|
1046
1178
|
RangePicker = antd.DatePicker.RangePicker,
|
|
1047
1179
|
WeekPicker = antd.DatePicker.WeekPicker;
|
|
1180
|
+
var DayjsDatePicker = withDayjsValue(antd.DatePicker, {
|
|
1181
|
+
stripTime: true,
|
|
1182
|
+
defaultPicker: 'date'
|
|
1183
|
+
});
|
|
1184
|
+
var DayjsMonthPicker = MonthPicker ? withDayjsValue(MonthPicker, {
|
|
1185
|
+
stripTime: true,
|
|
1186
|
+
defaultPicker: 'month'
|
|
1187
|
+
}) : DayjsDatePicker;
|
|
1188
|
+
var DayjsRangePicker = withDayjsValue(RangePicker, {
|
|
1189
|
+
stripTime: true,
|
|
1190
|
+
defaultPicker: 'date'
|
|
1191
|
+
});
|
|
1192
|
+
var DayjsWeekPicker = WeekPicker ? withDayjsValue(WeekPicker, {
|
|
1193
|
+
stripTime: true,
|
|
1194
|
+
defaultPicker: 'week'
|
|
1195
|
+
}) : DayjsDatePicker;
|
|
1048
1196
|
var DatePickerInner = function DatePickerInner(props) {
|
|
1049
1197
|
var _useIntl = reactIntl.useIntl(),
|
|
1050
1198
|
formatMessage = _useIntl.formatMessage;
|
|
@@ -1058,9 +1206,9 @@ var DatePickerInner = function DatePickerInner(props) {
|
|
|
1058
1206
|
label: mergedProps.label || ''
|
|
1059
1207
|
})
|
|
1060
1208
|
}, mergedProps));
|
|
1061
|
-
return render(
|
|
1209
|
+
return render(DayjsDatePicker);
|
|
1062
1210
|
};
|
|
1063
|
-
DatePickerInner.Field =
|
|
1211
|
+
DatePickerInner.Field = DayjsDatePicker;
|
|
1064
1212
|
var MonthPickerInner = function MonthPickerInner(props) {
|
|
1065
1213
|
var _useIntl2 = reactIntl.useIntl(),
|
|
1066
1214
|
formatMessage = _useIntl2.formatMessage;
|
|
@@ -1074,9 +1222,9 @@ var MonthPickerInner = function MonthPickerInner(props) {
|
|
|
1074
1222
|
id: 'EndTime'
|
|
1075
1223
|
})]
|
|
1076
1224
|
}, mergedProps));
|
|
1077
|
-
return render(
|
|
1225
|
+
return render(DayjsMonthPicker);
|
|
1078
1226
|
};
|
|
1079
|
-
MonthPickerInner.Field =
|
|
1227
|
+
MonthPickerInner.Field = DayjsMonthPicker;
|
|
1080
1228
|
var RangePickerInner = function RangePickerInner(props) {
|
|
1081
1229
|
var _useIntl3 = reactIntl.useIntl(),
|
|
1082
1230
|
formatMessage = _useIntl3.formatMessage;
|
|
@@ -1090,9 +1238,9 @@ var RangePickerInner = function RangePickerInner(props) {
|
|
|
1090
1238
|
id: 'EndTime'
|
|
1091
1239
|
})]
|
|
1092
1240
|
}, mergedProps));
|
|
1093
|
-
return render(
|
|
1241
|
+
return render(DayjsRangePicker);
|
|
1094
1242
|
};
|
|
1095
|
-
RangePickerInner.Field =
|
|
1243
|
+
RangePickerInner.Field = DayjsRangePicker;
|
|
1096
1244
|
var WeekPickerInner = function WeekPickerInner(props) {
|
|
1097
1245
|
var _useIntl4 = reactIntl.useIntl(),
|
|
1098
1246
|
formatMessage = _useIntl4.formatMessage;
|
|
@@ -1106,9 +1254,9 @@ var WeekPickerInner = function WeekPickerInner(props) {
|
|
|
1106
1254
|
id: 'EndTime'
|
|
1107
1255
|
})]
|
|
1108
1256
|
}, mergedProps));
|
|
1109
|
-
return render(
|
|
1257
|
+
return render(DayjsWeekPicker);
|
|
1110
1258
|
};
|
|
1111
|
-
WeekPickerInner.Field =
|
|
1259
|
+
WeekPickerInner.Field = DayjsWeekPicker;
|
|
1112
1260
|
var _DatePicker = withLocale(DatePickerInner);
|
|
1113
1261
|
_DatePicker.MonthPicker = withLocale(MonthPickerInner);
|
|
1114
1262
|
_DatePicker.RangePicker = withLocale(RangePickerInner);
|