@kne/react-form-antd
Version:
把 @kne/react-form 表单校验逻辑应用到antd
558 lines (532 loc) • 18.8 kB
JavaScript
var React = require('react');
var classnames = require('classnames');
var ReactForm = require('@kne/react-form');
var reactFormHelper = require('@kne/react-form-helper');
var merge = require('lodash/merge');
var antd = require('antd');
var dayjs = require('dayjs');
var lodash = require('lodash');
var useControlValue = require('@kne/use-control-value');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
var ReactForm__default = /*#__PURE__*/_interopDefaultLegacy(ReactForm);
var merge__default = /*#__PURE__*/_interopDefaultLegacy(merge);
var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
var useControlValue__default = /*#__PURE__*/_interopDefaultLegacy(useControlValue);
function _extends() {
return _extends = Object.assign ? Object.assign.bind() : function (n) {
for (var e = 1; e < arguments.length; e++) {
var t = arguments[e];
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
}
return n;
}, _extends.apply(null, arguments);
}
function _objectWithoutPropertiesLoose(r, e) {
if (null == r) return {};
var t = {};
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
if (-1 !== e.indexOf(n)) continue;
t[n] = r[n];
}
return t;
}
var globalParams = {
type: 'default',
size: 'middle',
rules: {},
formModal: {},
resetButton: {},
submitButton: {},
field: {}
};
var preset = (function (props) {
var defaultProps = {};
merge__default["default"](globalParams, props);
Object.keys(globalParams.field).forEach(function (name) {
defaultProps[name] = (globalParams.field[name] || {}).defaultProps;
});
reactFormHelper.preset({
field: defaultProps,
globalProps: globalParams.globalProps
});
ReactForm.preset(globalParams.rules);
});
var _excluded$4 = ["className", "cache", "enterSubmit", "scrollToError", "scrollProps", "type", "size", "children"];
var ScrollToError = reactFormHelper.widget.ScrollToError,
EnterSubmit = reactFormHelper.widget.EnterSubmit,
FormStore = reactFormHelper.widget.FormStore,
MaxLabelProvider = reactFormHelper.widget.MaxLabelProvider,
SizeProvider = reactFormHelper.widget.SizeProvider;
var Form = React.forwardRef(function (originProps, ref) {
var className = originProps.className,
cache = originProps.cache,
_originProps$enterSub = originProps.enterSubmit,
enterSubmit = _originProps$enterSub === void 0 ? false : _originProps$enterSub,
_originProps$scrollTo = originProps.scrollToError,
scrollToError = _originProps$scrollTo === void 0 ? true : _originProps$scrollTo,
_originProps$scrollPr = originProps.scrollProps,
scrollProps = _originProps$scrollPr === void 0 ? {
block: 'center'
} : _originProps$scrollPr,
children = originProps.children,
props = _objectWithoutPropertiesLoose(originProps, _excluded$4);
var baseClass = 'react-form';
var computedClass = baseClass;
var _Object$assign = Object.assign({
type: 'default',
size: 'middle'
}, globalParams, originProps),
type = _Object$assign.type,
size = _Object$assign.size;
if (type !== 'default') {
computedClass += "--" + type;
}
if (size !== 'middle') {
computedClass += "--" + size;
}
var maxLabel = /*#__PURE__*/React__default["default"].createElement(MaxLabelProvider, null, children);
return /*#__PURE__*/React__default["default"].createElement("form", {
className: classnames__default["default"](baseClass, computedClass, className),
onSubmit: function onSubmit(e) {
e.preventDefault();
e.stopPropagation();
}
}, /*#__PURE__*/React__default["default"].createElement(SizeProvider, {
value: {
size: size
}
}, /*#__PURE__*/React__default["default"].createElement(ReactForm__default["default"], _extends({}, props, {
ref: ref
}), cache ? /*#__PURE__*/React__default["default"].createElement(FormStore, {
cache: cache
}) : null, scrollToError ? /*#__PURE__*/React__default["default"].createElement(ScrollToError, {
scrollProps: scrollProps
}) : null, enterSubmit ? /*#__PURE__*/React__default["default"].createElement(EnterSubmit, null, maxLabel) : maxLabel)));
});
var useOnChange$b = reactFormHelper.hooks.useOnChange;
var _TreeSelect = function _TreeSelect(props) {
props = Object.assign({}, {
fieldName: 'treeSelect'
}, props);
var render = useOnChange$b(Object.assign({
placeholder: "\u8BF7\u9009\u62E9" + (props.label || '')
}, props));
return render(antd.TreeSelect);
};
_TreeSelect.Field = antd.TreeSelect;
_TreeSelect.TreeNode = antd.TreeSelect.TreeNode;
var useOnChange$a = reactFormHelper.hooks.useOnChange;
var RangePicker$1 = antd.TimePicker.RangePicker;
var _TimePicker = function _TimePicker(props) {
props = Object.assign({}, {
fieldName: 'timePicker'
}, props);
var render = useOnChange$a(Object.assign({
placeholder: "\u8BF7\u9009\u62E9" + (props.label || '')
}, props));
return render(antd.TimePicker);
};
_TimePicker.Field = antd.TimePicker;
var _RangePicker$1 = function _RangePicker(props) {
props = Object.assign({}, {
fieldName: 'rangeTimePicker'
}, props);
var render = useOnChange$a(Object.assign({
placeholder: "\u8BF7\u9009\u62E9" + (props.label || '')
}, props));
return render(RangePicker$1);
};
_RangePicker$1.Field = RangePicker$1;
_TimePicker.RangePicker = _RangePicker$1;
var useDecorator$2 = reactFormHelper.hooks.useDecorator;
var TextArea = function TextArea(props) {
props = Object.assign({}, {
fieldName: 'textArea'
}, props);
var render = useDecorator$2(Object.assign({
placeholder: "\u8BF7\u8F93\u5165" + props.label
}, props));
return render(antd.Input.TextArea);
};
TextArea.Field = antd.Input.TextArea;
var useOnChange$9 = reactFormHelper.hooks.useOnChange,
useCheckedToValue$1 = reactFormHelper.hooks.useCheckedToValue;
var withChecked$1 = reactFormHelper.hoc.withChecked;
var WithSwitch = withChecked$1(antd.Switch);
var Switch = function Switch(props) {
props = Object.assign({}, {
fieldName: 'switch'
}, props);
var checkedProps = useCheckedToValue$1(props);
var render = useOnChange$9(checkedProps);
return render(WithSwitch);
};
Switch.Field = antd.Switch;
var useOnChange$8 = reactFormHelper.hooks.useOnChange;
var _Select = function _Select(props) {
props = Object.assign({}, {
fieldName: 'select'
}, props);
var render = useOnChange$8(Object.assign({
placeholder: "\u8BF7\u9009\u62E9" + (props.label || '')
}, props));
return render(antd.Select);
};
_Select.Field = antd.Select;
_Select.Option = antd.Select.Option;
_Select.OptGroup = antd.Select.OptGroup;
var _excluded$3 = ["onChange"];
var useOnChange$7 = reactFormHelper.hooks.useOnChange;
var RadioGroup = function RadioGroup(_ref) {
var onChange = _ref.onChange,
props = _objectWithoutPropertiesLoose(_ref, _excluded$3);
props = Object.assign({}, {
fieldName: 'radioGroup'
}, props);
var handler = React.useCallback(function (e) {
onChange && onChange(e.target.value);
}, [onChange]);
return /*#__PURE__*/React__default["default"].createElement(antd.Radio.Group, _extends({}, props, {
onChange: handler
}));
};
var _RadioGroup = function _RadioGroup(props) {
var render = useOnChange$7(props);
return render(RadioGroup);
};
_RadioGroup.Field = RadioGroup;
_RadioGroup.Radio = antd.Radio;
var useDecorator$1 = reactFormHelper.hooks.useDecorator;
var InputNumberField = function InputNumberField(props) {
props = Object.assign({}, {
fieldName: 'inputNumber',
autoComplete: 'off'
}, props);
var render = useDecorator$1(Object.assign({
placeholder: "\u8BF7\u8F93\u5165" + props.label
}, props));
return render(antd.InputNumber);
};
InputNumberField.Field = antd.InputNumber;
var useDecorator = reactFormHelper.hooks.useDecorator;
var InputField = function InputField(props) {
props = Object.assign({}, {
fieldName: 'input',
autoComplete: 'off'
}, props);
var render = useDecorator(Object.assign({
placeholder: "\u8BF7\u8F93\u5165" + props.label
}, props));
return render(antd.Input);
};
InputField.Field = antd.Input;
InputField.Password = function (props) {
props = Object.assign({}, {
fieldName: 'password',
autoComplete: 'off'
}, props);
var render = useDecorator(Object.assign({
placeholder: "\u8BF7\u8F93\u5165" + props.label
}, props));
return render(antd.Input.Password);
};
InputField.Password.Field = antd.Input.Password;
var _excluded$2 = ["soFarText", "startProps", "endProps"];
var useOnChange$6 = reactFormHelper.hooks.useOnChange;
var PickerToday = function PickerToday(_ref) {
var soFarText = _ref.soFarText,
startProps = _ref.startProps,
endProps = _ref.endProps,
props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
var _useControlValue = useControlValue__default["default"](props),
data = _useControlValue[0],
onChange = _useControlValue[1];
var ref_d = React.useRef();
var newData = React.useMemo(function () {
// console.log('......', data);
var s = lodash.get(data, 0, '');
var d = lodash.get(data, 1, '');
var p = lodash.get(props, ['placeholder'], ['开始日期', '结束日期']);
return {
start: s ? dayjs__default["default"](s) : '',
end: d === '至今' ? null : d ? dayjs__default["default"](d) : '',
showZj: d === '至今',
placeholder: p
};
}, [data]);
var startChange = function startChange(v) {
// 比较日期大小
if (!newData.showZj && newData.end && v && newData.end.isBefore(v)) {
onChange([newData.end, v]);
return;
}
onChange([v || '', newData.showZj ? '至今' : newData.end]);
};
var endChange = function endChange(v) {
if (newData.start && v && v.isBefore(newData.start)) {
onChange([v, newData.start]);
return;
}
onChange([newData.start, v || '']);
};
var foot = function foot() {
return /*#__PURE__*/React__default["default"].createElement(antd.Button, {
type: newData.showZj ? 'primary' : 'default',
onClick: function onClick(v) {
ref_d.current.blur();
onChange([newData.start || '', '至今']);
}
}, soFarText || '至今');
};
return /*#__PURE__*/React__default["default"].createElement("div", {
style: {
display: 'flex'
}
}, /*#__PURE__*/React__default["default"].createElement(antd.DatePicker, _extends({}, _extends({
showToday: false
}, props, {
placeholder: newData.placeholder[0]
}, startProps, {
value: newData.start
}), {
onChange: startChange
})), /*#__PURE__*/React__default["default"].createElement("div", {
className: 'svg_box'
}, /*#__PURE__*/React__default["default"].createElement("svg", {
viewBox: "0 0 1024 1024",
focusable: "false",
"data-icon": "swap-right",
width: "1em",
height: "1em",
fill: "currentColor",
"aria-hidden": "true"
}, /*#__PURE__*/React__default["default"].createElement("path", {
d: "M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z"
}))), /*#__PURE__*/React__default["default"].createElement("div", {
className: newData.showZj ? 'data_range_picker data_range_picker_dis' : 'data_range_picker'
}, /*#__PURE__*/React__default["default"].createElement("span", {
className: newData.showZj ? 'zhijin zhijin_show' : 'zhijin'
}, soFarText || '至今'), /*#__PURE__*/React__default["default"].createElement(antd.DatePicker, _extends({}, _extends({
showToday: false
}, props, {
placeholder: newData.showZj ? '' : newData.placeholder[1]
}, endProps, {
value: newData.end
}), {
ref: ref_d,
onChange: endChange,
renderExtraFooter: foot
}))));
};
var RangePickerToday = function RangePickerToday(props) {
props = Object.assign({}, {
fieldName: 'rangePickerToday'
}, props);
var render = useOnChange$6(props);
return render(PickerToday);
};
RangePickerToday.Field = PickerToday;
var useOnChange$5 = reactFormHelper.hooks.useOnChange;
var MonthPicker = antd.DatePicker.MonthPicker,
RangePicker = antd.DatePicker.RangePicker,
WeekPicker = antd.DatePicker.WeekPicker;
var _DatePicker = function _DatePicker(props) {
props = Object.assign({}, {
fieldName: 'datePicker'
}, props);
var render = useOnChange$5(Object.assign({
placeholder: "\u8BF7\u9009\u62E9" + (props.label || '')
}, props));
return render(antd.DatePicker);
};
_DatePicker.Field = antd.DatePicker;
var _MonthPicker = function _MonthPicker(props) {
props = Object.assign({}, {
fieldName: 'monthDatePicker'
}, props);
var render = useOnChange$5(Object.assign({
placeholder: ['开始时间', '结束时间']
}, props));
return render(MonthPicker);
};
_MonthPicker.Field = MonthPicker;
var _RangePicker = function _RangePicker(props) {
props = Object.assign({}, {
fieldName: 'rangeDatePicker'
}, props);
var render = useOnChange$5(Object.assign({
placeholder: ['开始时间', '结束时间']
}, props));
return render(RangePicker);
};
_RangePicker.Field = RangePicker;
var _WeekPicker = function _WeekPicker(props) {
props = Object.assign({}, {
fieldName: 'weekDatePicker'
}, props);
var render = useOnChange$5(Object.assign({
placeholder: ['开始时间', '结束时间']
}, props));
return render(WeekPicker);
};
_WeekPicker.Field = WeekPicker;
_DatePicker.MonthPicker = _MonthPicker;
_DatePicker.RangePicker = _RangePicker;
_DatePicker.WeekPicker = _WeekPicker;
var useOnChange$4 = reactFormHelper.hooks.useOnChange;
var _CheckboxGroup = antd.Checkbox.Group;
var CheckboxGroup = function CheckboxGroup(props) {
props = Object.assign({}, {
fieldName: 'checkboxGroup'
}, props);
var render = useOnChange$4(props);
return render(_CheckboxGroup);
};
CheckboxGroup.Checkbox = antd.Checkbox;
CheckboxGroup.Field = _CheckboxGroup;
var useOnChange$3 = reactFormHelper.hooks.useOnChange,
useCheckedToValue = reactFormHelper.hooks.useCheckedToValue;
var withChecked = reactFormHelper.hoc.withChecked;
var WithCheckbox = withChecked(antd.Checkbox);
var Checkbox = function Checkbox(props) {
props = Object.assign({}, {
fieldName: 'checkbox'
}, props);
var checkedProps = useCheckedToValue(Object.assign({}, props, {
onChange: function onChange(e) {
e.target.type = 'checkbox';
props.onChange && props.onChange(e);
}
}));
var render = useOnChange$3(checkedProps);
return render(WithCheckbox);
};
Checkbox.Field = antd.Checkbox;
var useOnChange$2 = reactFormHelper.hooks.useOnChange;
var Cascader = function Cascader(props) {
props = Object.assign({}, {
fieldName: 'cascader'
}, props);
var render = useOnChange$2(props);
return render(antd.Cascader);
};
Cascader.Field = antd.Cascader;
var useOnChange$1 = reactFormHelper.hooks.useOnChange;
var Rate = function Rate(props) {
props = Object.assign({}, {
fieldName: 'rate'
}, props);
var render = useOnChange$1(Object.assign({}, props));
return render(antd.Rate);
};
Rate.Field = antd.Rate;
var useOnChange = reactFormHelper.hooks.useOnChange;
var Slider = function Slider(props) {
props = Object.assign({}, {
fieldName: 'slider'
}, props);
var render = useOnChange(Object.assign({}, props));
return render(antd.Slider);
};
Slider.Field = antd.Slider;
var ResetButton = function ResetButton(props) {
var resetProps = ReactForm.useReset();
return /*#__PURE__*/React__default["default"].createElement(antd.Button, _extends({}, resetProps, props));
};
var _excluded$1 = ["type", "realtime", "disabled"],
_excluded2 = ["isPass", "isLoading"];
var SubmitButton = function SubmitButton(_ref) {
var _ref$type = _ref.type,
type = _ref$type === void 0 ? 'primary' : _ref$type,
realtime = _ref.realtime,
_ref$disabled = _ref.disabled,
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
props = _objectWithoutPropertiesLoose(_ref, _excluded$1);
var _useSubmit = ReactForm.useSubmit(props),
isPass = _useSubmit.isPass,
isLoading = _useSubmit.isLoading,
submitProps = _objectWithoutPropertiesLoose(_useSubmit, _excluded2);
return /*#__PURE__*/React__default["default"].createElement(antd.Button, _extends({
type: type,
loading: isLoading,
disabled: disabled || (realtime ? !isPass : false)
}, props, submitProps));
};
var _excluded = ["onClick"];
var useCacheRemove = reactFormHelper.hooks.useCacheRemove;
var CancelButton = function CancelButton(_ref) {
var _onClick = _ref.onClick,
props = _objectWithoutPropertiesLoose(_ref, _excluded);
var remove = useCacheRemove();
return /*#__PURE__*/React__default["default"].createElement(antd.Button, _extends({}, props, {
onClick: function onClick() {
remove();
_onClick && _onClick.apply(void 0, [].slice.call(arguments));
}
}));
};
var FormAntd = Form;
var fields = {
TreeSelect: _TreeSelect,
TimePicker: _TimePicker,
TextArea: TextArea,
Switch: Switch,
Select: _Select,
RadioGroup: _RadioGroup,
InputNumber: InputNumberField,
Input: InputField,
DatePickerToday: RangePickerToday,
DatePicker: _DatePicker,
CheckboxGroup: CheckboxGroup,
Checkbox: Checkbox,
Cascader: Cascader,
Rate: Rate,
Slider: Slider
};
Object.defineProperty(exports, 'hoc', {
enumerable: true,
get: function () { return reactFormHelper.hoc; }
});
Object.defineProperty(exports, 'hooks', {
enumerable: true,
get: function () { return reactFormHelper.hooks; }
});
Object.defineProperty(exports, 'utils', {
enumerable: true,
get: function () { return reactFormHelper.utils; }
});
Object.defineProperty(exports, 'widget', {
enumerable: true,
get: function () { return reactFormHelper.widget; }
});
exports.CancelButton = CancelButton;
exports.Cascader = Cascader;
exports.Checkbox = Checkbox;
exports.CheckboxGroup = CheckboxGroup;
exports.DatePicker = _DatePicker;
exports.DatePickerToday = RangePickerToday;
exports.FormAntd = FormAntd;
exports.Input = InputField;
exports.InputNumber = InputNumberField;
exports.RadioGroup = _RadioGroup;
exports.Rate = Rate;
exports.ResetButton = ResetButton;
exports.Select = _Select;
exports.Slider = Slider;
exports.SubmitButton = SubmitButton;
exports.Switch = Switch;
exports.TextArea = TextArea;
exports.TimePicker = _TimePicker;
exports.TreeSelect = _TreeSelect;
exports["default"] = Form;
exports.fields = fields;
exports.preset = preset;
Object.keys(ReactForm).forEach(function (k) {
if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
enumerable: true,
get: function () { return ReactForm[k]; }
});
});
//# sourceMappingURL=index.js.map