@kne/react-form-antd 4.1.3 → 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 +170 -24
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +155 -25
- package/dist/index.modern.js.map +1 -1
- package/package.json +2 -2
package/dist/index.modern.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import React__default, { forwardRef, useCallback, createContext, useContext, useEffect, useState, useRef
|
|
2
|
+
import React__default, { forwardRef, useMemo, useCallback, createContext, useContext, useEffect, useState, useRef } from 'react';
|
|
3
3
|
import classnames from 'classnames';
|
|
4
4
|
import ReactForm__default, { preset as preset$2, useReset, useSubmit } from '@kne/react-form';
|
|
5
5
|
export * from '@kne/react-form';
|
|
@@ -9,6 +9,7 @@ import merge from 'lodash/merge';
|
|
|
9
9
|
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';
|
|
10
10
|
import { createWithIntlProvider, useIntl } from '@kne/react-intl';
|
|
11
11
|
import dayjs from 'dayjs';
|
|
12
|
+
import customParseFormat from 'dayjs/plugin/customParseFormat';
|
|
12
13
|
import useControlValue from '@kne/use-control-value';
|
|
13
14
|
|
|
14
15
|
function _extends$3() {
|
|
@@ -52,7 +53,7 @@ var preset = props => {
|
|
|
52
53
|
preset$2(globalParams.rules);
|
|
53
54
|
};
|
|
54
55
|
|
|
55
|
-
const _excluded$
|
|
56
|
+
const _excluded$5 = ["className", "cache", "enterSubmit", "scrollToError", "scrollProps", "type", "size", "children"];
|
|
56
57
|
const {
|
|
57
58
|
ScrollToError,
|
|
58
59
|
EnterSubmit,
|
|
@@ -71,7 +72,7 @@ const Form = forwardRef((originProps, ref) => {
|
|
|
71
72
|
},
|
|
72
73
|
children
|
|
73
74
|
} = originProps,
|
|
74
|
-
props = _objectWithoutPropertiesLoose(originProps, _excluded$
|
|
75
|
+
props = _objectWithoutPropertiesLoose(originProps, _excluded$5);
|
|
75
76
|
const baseClass = 'react-form';
|
|
76
77
|
let computedClass = baseClass;
|
|
77
78
|
const {
|
|
@@ -159,12 +160,127 @@ TreeSelectInner.Field = TreeSelect;
|
|
|
159
160
|
TreeSelectInner.TreeNode = TreeSelect.TreeNode;
|
|
160
161
|
const _TreeSelect = withLocale(TreeSelectInner);
|
|
161
162
|
|
|
163
|
+
dayjs.extend(customParseFormat);
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Convert form/API date values to dayjs for antd DatePicker/TimePicker.
|
|
167
|
+
* Newer @rc-component/picker getUDayjs returns non-dayjs values as-is,
|
|
168
|
+
* then calls .isValid() and throws on plain strings.
|
|
169
|
+
*/
|
|
170
|
+
const toDayjs = (value, format) => {
|
|
171
|
+
if (value == null || value === '') {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
if (dayjs.isDayjs(value)) {
|
|
175
|
+
return value;
|
|
176
|
+
}
|
|
177
|
+
if (typeof value === 'string' && typeof format === 'string' && format) {
|
|
178
|
+
const _parsed = dayjs(value, format, true);
|
|
179
|
+
if (_parsed.isValid()) {
|
|
180
|
+
return _parsed;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
const parsed = dayjs(value);
|
|
184
|
+
return parsed.isValid() ? parsed : null;
|
|
185
|
+
};
|
|
186
|
+
const toDayjsValue = (value, format) => {
|
|
187
|
+
if (Array.isArray(value)) {
|
|
188
|
+
return value.map(item => toDayjs(item, format));
|
|
189
|
+
}
|
|
190
|
+
return toDayjs(value, format);
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Date-only pickers should emit start of the selected unit (e.g. day at 00:00:00),
|
|
195
|
+
* not "selected date + current clock time".
|
|
196
|
+
*/
|
|
197
|
+
const startOfByPicker = (value, picker = 'date') => {
|
|
198
|
+
if (!value || !dayjs.isDayjs(value) || !value.isValid()) {
|
|
199
|
+
return value;
|
|
200
|
+
}
|
|
201
|
+
const unit = picker === 'week' ? 'week' : picker === 'month' ? 'month' : picker === 'quarter' ? 'quarter' : picker === 'year' ? 'year' : 'day';
|
|
202
|
+
return value.startOf(unit);
|
|
203
|
+
};
|
|
204
|
+
const normalizeDateValue = (value, picker = 'date') => {
|
|
205
|
+
if (Array.isArray(value)) {
|
|
206
|
+
return value.map(item => startOfByPicker(item, picker));
|
|
207
|
+
}
|
|
208
|
+
return startOfByPicker(value, picker);
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
const _excluded$4 = ["value", "defaultValue", "format", "showTime", "picker", "onChange"];
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Wrap antd picker so string/number initial values from form/API become dayjs.
|
|
215
|
+
* When options.stripTime is true and showTime is off, onChange values are
|
|
216
|
+
* normalized to start of the picker unit (date → 00:00:00).
|
|
217
|
+
*/
|
|
218
|
+
const withDayjsValue = (WrappedComponent, options = {}) => {
|
|
219
|
+
const {
|
|
220
|
+
stripTime = false,
|
|
221
|
+
defaultPicker = 'date'
|
|
222
|
+
} = options;
|
|
223
|
+
const Component = forwardRef((_ref, ref) => {
|
|
224
|
+
let {
|
|
225
|
+
value,
|
|
226
|
+
defaultValue,
|
|
227
|
+
format,
|
|
228
|
+
showTime,
|
|
229
|
+
picker,
|
|
230
|
+
onChange
|
|
231
|
+
} = _ref,
|
|
232
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
233
|
+
const mergedPicker = picker || defaultPicker;
|
|
234
|
+
const shouldStripTime = stripTime && !showTime;
|
|
235
|
+
const mergedValue = useMemo(() => {
|
|
236
|
+
if (value === undefined) {
|
|
237
|
+
return undefined;
|
|
238
|
+
}
|
|
239
|
+
const next = toDayjsValue(value, format);
|
|
240
|
+
return shouldStripTime ? normalizeDateValue(next, mergedPicker) : next;
|
|
241
|
+
}, [value, format, shouldStripTime, mergedPicker]);
|
|
242
|
+
const mergedDefaultValue = useMemo(() => {
|
|
243
|
+
if (defaultValue === undefined) {
|
|
244
|
+
return undefined;
|
|
245
|
+
}
|
|
246
|
+
const next = toDayjsValue(defaultValue, format);
|
|
247
|
+
return shouldStripTime ? normalizeDateValue(next, mergedPicker) : next;
|
|
248
|
+
}, [defaultValue, format, shouldStripTime, mergedPicker]);
|
|
249
|
+
const handleChange = useCallback((next, ...rest) => {
|
|
250
|
+
if (!onChange) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
if (shouldStripTime && next != null) {
|
|
254
|
+
onChange(normalizeDateValue(next, mergedPicker), ...rest);
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
onChange(next, ...rest);
|
|
258
|
+
}, [onChange, shouldStripTime, mergedPicker]);
|
|
259
|
+
return /*#__PURE__*/React__default.createElement(WrappedComponent, _extends$3({}, props, {
|
|
260
|
+
ref: ref,
|
|
261
|
+
format: format,
|
|
262
|
+
showTime: showTime,
|
|
263
|
+
picker: picker,
|
|
264
|
+
value: mergedValue,
|
|
265
|
+
defaultValue: mergedDefaultValue,
|
|
266
|
+
onChange: handleChange
|
|
267
|
+
}));
|
|
268
|
+
});
|
|
269
|
+
Component.displayName = `withDayjsValue(${WrappedComponent.displayName || WrappedComponent.name || 'Component'})`;
|
|
270
|
+
Object.keys(WrappedComponent).filter(key => ['$$typeof', 'render', 'field'].indexOf(key) === -1).forEach(key => {
|
|
271
|
+
Component[key] = WrappedComponent[key];
|
|
272
|
+
});
|
|
273
|
+
return Component;
|
|
274
|
+
};
|
|
275
|
+
|
|
162
276
|
const {
|
|
163
277
|
useOnChange: useOnChange$a
|
|
164
278
|
} = hooks;
|
|
165
279
|
const {
|
|
166
280
|
RangePicker: RangePicker$1
|
|
167
281
|
} = TimePicker;
|
|
282
|
+
const DayjsTimePicker = withDayjsValue(TimePicker);
|
|
283
|
+
const DayjsRangePicker$1 = withDayjsValue(RangePicker$1);
|
|
168
284
|
const TimePickerInner = props => {
|
|
169
285
|
const {
|
|
170
286
|
formatMessage
|
|
@@ -179,9 +295,9 @@ const TimePickerInner = props => {
|
|
|
179
295
|
label: mergedProps.label || ''
|
|
180
296
|
})
|
|
181
297
|
}, mergedProps));
|
|
182
|
-
return render(
|
|
298
|
+
return render(DayjsTimePicker);
|
|
183
299
|
};
|
|
184
|
-
TimePickerInner.Field =
|
|
300
|
+
TimePickerInner.Field = DayjsTimePicker;
|
|
185
301
|
const RangePickerInner$1 = props => {
|
|
186
302
|
const {
|
|
187
303
|
formatMessage
|
|
@@ -196,9 +312,9 @@ const RangePickerInner$1 = props => {
|
|
|
196
312
|
label: mergedProps.label || ''
|
|
197
313
|
})
|
|
198
314
|
}, mergedProps));
|
|
199
|
-
return render(
|
|
315
|
+
return render(DayjsRangePicker$1);
|
|
200
316
|
};
|
|
201
|
-
RangePickerInner$1.Field =
|
|
317
|
+
RangePickerInner$1.Field = DayjsRangePicker$1;
|
|
202
318
|
const _TimePicker = withLocale(TimePickerInner);
|
|
203
319
|
_TimePicker.RangePicker = withLocale(RangePickerInner$1);
|
|
204
320
|
|
|
@@ -524,7 +640,7 @@ function warning(valid, message) {
|
|
|
524
640
|
warningOnce(valid, `[@ant-design/icons] ${message}`);
|
|
525
641
|
}
|
|
526
642
|
function isIconDefinition(target) {
|
|
527
|
-
return typeof target === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (typeof target.icon === 'object' || typeof target.icon === 'function');
|
|
643
|
+
return target !== null && typeof target === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (typeof target.icon === 'object' || typeof target.icon === 'function');
|
|
528
644
|
}
|
|
529
645
|
function normalizeAttrs(attrs = {}) {
|
|
530
646
|
return Object.keys(attrs).reduce((acc, key) => {
|
|
@@ -649,7 +765,7 @@ const IconBase = props => {
|
|
|
649
765
|
} = props;
|
|
650
766
|
const svgRef = React.useRef(null);
|
|
651
767
|
useInsertStyles(svgRef);
|
|
652
|
-
warning(isIconDefinition(icon), `icon should be icon definiton, but got ${icon}`);
|
|
768
|
+
warning(isIconDefinition(icon), `icon should be icon definiton, but got ${typeof icon}`);
|
|
653
769
|
if (!isIconDefinition(icon)) {
|
|
654
770
|
return null;
|
|
655
771
|
}
|
|
@@ -689,6 +805,10 @@ const Icon = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
689
805
|
prefixCls = 'anticon',
|
|
690
806
|
rootClassName
|
|
691
807
|
} = React.useContext(Context);
|
|
808
|
+
warning(isIconDefinition(icon), `icon should be icon definiton, but got ${typeof icon}`);
|
|
809
|
+
if (!isIconDefinition(icon)) {
|
|
810
|
+
return null;
|
|
811
|
+
}
|
|
692
812
|
const classString = clsx(rootClassName, prefixCls, {
|
|
693
813
|
[`${prefixCls}-${icon.name}`]: !!icon.name,
|
|
694
814
|
[`${prefixCls}-spin`]: !!spin || icon.name === 'loading'
|
|
@@ -720,11 +840,8 @@ if (process.env.NODE_ENV !== 'production') {
|
|
|
720
840
|
var AntdIcon = Icon;
|
|
721
841
|
|
|
722
842
|
// This icon file is generated automatically.
|
|
723
|
-
|
|
724
843
|
var CalendarOutlined$2 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z" } }] }, "name": "calendar", "theme": "outlined" };
|
|
725
|
-
var
|
|
726
|
-
|
|
727
|
-
var CalendarOutlinedSvg = _default$1;
|
|
844
|
+
var CalendarOutlinedSvg = CalendarOutlined$2;
|
|
728
845
|
|
|
729
846
|
function _extends$1() { _extends$1 = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1.apply(this, arguments); }
|
|
730
847
|
const CalendarOutlined = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends$1({}, props, {
|
|
@@ -740,11 +857,8 @@ if (process.env.NODE_ENV !== 'production') {
|
|
|
740
857
|
var CalendarOutlined$1 = RefIcon$1;
|
|
741
858
|
|
|
742
859
|
// This icon file is generated automatically.
|
|
743
|
-
|
|
744
860
|
var CloseCircleFilled$2 = { "icon": { "tag": "svg", "attrs": { "fill-rule": "evenodd", "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z" } }] }, "name": "close-circle", "theme": "filled" };
|
|
745
|
-
var
|
|
746
|
-
|
|
747
|
-
var CloseCircleFilledSvg = _default;
|
|
861
|
+
var CloseCircleFilledSvg = CloseCircleFilled$2;
|
|
748
862
|
|
|
749
863
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
750
864
|
const CloseCircleFilled = (props, ref) => /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {
|
|
@@ -1033,6 +1147,22 @@ const {
|
|
|
1033
1147
|
RangePicker,
|
|
1034
1148
|
WeekPicker
|
|
1035
1149
|
} = DatePicker;
|
|
1150
|
+
const DayjsDatePicker = withDayjsValue(DatePicker, {
|
|
1151
|
+
stripTime: true,
|
|
1152
|
+
defaultPicker: 'date'
|
|
1153
|
+
});
|
|
1154
|
+
const DayjsMonthPicker = MonthPicker ? withDayjsValue(MonthPicker, {
|
|
1155
|
+
stripTime: true,
|
|
1156
|
+
defaultPicker: 'month'
|
|
1157
|
+
}) : DayjsDatePicker;
|
|
1158
|
+
const DayjsRangePicker = withDayjsValue(RangePicker, {
|
|
1159
|
+
stripTime: true,
|
|
1160
|
+
defaultPicker: 'date'
|
|
1161
|
+
});
|
|
1162
|
+
const DayjsWeekPicker = WeekPicker ? withDayjsValue(WeekPicker, {
|
|
1163
|
+
stripTime: true,
|
|
1164
|
+
defaultPicker: 'week'
|
|
1165
|
+
}) : DayjsDatePicker;
|
|
1036
1166
|
const DatePickerInner = props => {
|
|
1037
1167
|
const {
|
|
1038
1168
|
formatMessage
|
|
@@ -1047,9 +1177,9 @@ const DatePickerInner = props => {
|
|
|
1047
1177
|
label: mergedProps.label || ''
|
|
1048
1178
|
})
|
|
1049
1179
|
}, mergedProps));
|
|
1050
|
-
return render(
|
|
1180
|
+
return render(DayjsDatePicker);
|
|
1051
1181
|
};
|
|
1052
|
-
DatePickerInner.Field =
|
|
1182
|
+
DatePickerInner.Field = DayjsDatePicker;
|
|
1053
1183
|
const MonthPickerInner = props => {
|
|
1054
1184
|
const {
|
|
1055
1185
|
formatMessage
|
|
@@ -1064,9 +1194,9 @@ const MonthPickerInner = props => {
|
|
|
1064
1194
|
id: 'EndTime'
|
|
1065
1195
|
})]
|
|
1066
1196
|
}, mergedProps));
|
|
1067
|
-
return render(
|
|
1197
|
+
return render(DayjsMonthPicker);
|
|
1068
1198
|
};
|
|
1069
|
-
MonthPickerInner.Field =
|
|
1199
|
+
MonthPickerInner.Field = DayjsMonthPicker;
|
|
1070
1200
|
const RangePickerInner = props => {
|
|
1071
1201
|
const {
|
|
1072
1202
|
formatMessage
|
|
@@ -1081,9 +1211,9 @@ const RangePickerInner = props => {
|
|
|
1081
1211
|
id: 'EndTime'
|
|
1082
1212
|
})]
|
|
1083
1213
|
}, mergedProps));
|
|
1084
|
-
return render(
|
|
1214
|
+
return render(DayjsRangePicker);
|
|
1085
1215
|
};
|
|
1086
|
-
RangePickerInner.Field =
|
|
1216
|
+
RangePickerInner.Field = DayjsRangePicker;
|
|
1087
1217
|
const WeekPickerInner = props => {
|
|
1088
1218
|
const {
|
|
1089
1219
|
formatMessage
|
|
@@ -1098,9 +1228,9 @@ const WeekPickerInner = props => {
|
|
|
1098
1228
|
id: 'EndTime'
|
|
1099
1229
|
})]
|
|
1100
1230
|
}, mergedProps));
|
|
1101
|
-
return render(
|
|
1231
|
+
return render(DayjsWeekPicker);
|
|
1102
1232
|
};
|
|
1103
|
-
WeekPickerInner.Field =
|
|
1233
|
+
WeekPickerInner.Field = DayjsWeekPicker;
|
|
1104
1234
|
const _DatePicker = withLocale(DatePickerInner);
|
|
1105
1235
|
_DatePicker.MonthPicker = withLocale(MonthPickerInner);
|
|
1106
1236
|
_DatePicker.RangePicker = withLocale(RangePickerInner);
|