UNPKG

@flatbiz/antd

Version:
137 lines (133 loc) 6.92 kB
/*! @flatjs/forge MIT @flatbiz/antd */ import { _ as _objectWithoutProperties, d as _toArray, c as _toConsumableArray, b as _objectSpread2 } from './_rollupPluginBabelHelpers-BYm17lo8.js'; import { hooks } from '@wove/react/hooks'; import { isArray } from '@dimjs/lang/is-array'; import { useMemo, useEffect, useRef } from 'react'; import { Form } from 'antd'; import { toArray } from '@flatbiz/utils'; import { fbaHooks } from './fba-hooks/index.js'; import { f as fbaUtils } from './fba-utils-Dfbczn1S.js'; import { F as FormItemHidden } from './form-item-hidden-BtQvJEx7.js'; import { F as FormItemWrapper } from './form-item-wrapper-BneADBjX.js'; import { T as TimeRangePickerWrapper } from './time-range-picker-wrapper-BpQQjbcu.js'; import { jsxs, Fragment, jsx } from 'react/jsx-runtime'; var _excluded = ["startName", "endName", "formListName", "formListCompleteName", "timeRangePickerWrapperProps"]; /** * 包含了Form.Item组件的时间区间选择组件,时间区间组件可以定义成两个字段操作,不用再通过数组处理 * ``` * 1. 会在form中产生一个 `__#invalid_time_xxxx_xxxx` 的无效字段,可以直接忽略 * 2. 设置日期格式 timeRangePickerWrapperProps={{ format: 'HH:mm:ss' }} * 使用场景: * 1. 基础使用场景 * <TimeRangePickerWrapperFormItem startName={'date1'} endName={'date2'} /> * 2. Form.List 内部使用 * <FormListWrapper name="dataList" prevCompleteName={[]}> * {(data) => { * return <TimeRangePickerWrapperFormItem formListCompleteName={data.prevCompleteName} startName={data.getInsideFormItemName('date1')} endName={data.getInsideFormItemName('date2')} /> * }} * </FormListWrapper> * 3. Form.List 套 Form.List 内部使用 * <FormListWrapper name="dataList" prevCompleteName={[]}> * {(data) => { * return <FormListWrapper name={data.getInsideFormItemName('childrenList')} prevCompleteName={data.prevCompleteName}> * {(data2) => { * return <TimeRangePickerWrapperFormItem formListCompleteName={data2.prevCompleteName} startName={data2.getInsideFormItemName('date1')} endName={data2.getInsideFormItemName('date2')} /> * }} * </FormListWrapper> * }} * </FormListWrapper> * ``` */ var TimeRangePickerWrapperFormItem = function TimeRangePickerWrapperFormItem(props) { var _props$rules; var startName = props.startName, endName = props.endName, formListName = props.formListName, formListCompleteName = props.formListCompleteName, timeRangePickerWrapperProps = props.timeRangePickerWrapperProps, otherProps = _objectWithoutProperties(props, _excluded); var form = Form.useFormInstance(); var prevName = formListCompleteName || formListName; var bodyName = useMemo(function () { if (prevName && isArray(startName) && isArray(endName)) { var _ref = startName, _ref2 = _toArray(_ref), startName0 = _ref2[0], startNameOther = _ref2.slice(1); var _ref3 = endName, _ref4 = _toArray(_ref3), endNameOther = _ref4.slice(1); return [startName0].concat("__#invalid_time_".concat(startNameOther.join('-'), "_").concat(endNameOther.join('-'))); } return "__#invalid_time_".concat(startName, "_").concat(endName); }, [prevName, startName, endName]); var bodyCompleteName = useMemo(function () { return prevName ? [].concat(_toConsumableArray(toArray(prevName)), _toConsumableArray(bodyName)) : bodyName; }, [bodyName, prevName]); var startCompleteName = useMemo(function () { return prevName ? [].concat(_toConsumableArray(toArray(prevName)), _toConsumableArray(toArray(startName))) : startName; }, [startName, prevName]); var endCompleteName = useMemo(function () { return prevName ? [].concat(_toConsumableArray(toArray(prevName)), _toConsumableArray(toArray(endName))) : endName; }, [endName, prevName]); var startVal = Form.useWatch(startCompleteName, form); var endVal = Form.useWatch(endCompleteName, form); var bodyValue = Form.useWatch(bodyCompleteName, form); var onChange = hooks.useCallbackRef(function (data) { var _timeRangePickerWrapp; var value1 = data === null || data === void 0 ? void 0 : data[0]; var value2 = data === null || data === void 0 ? void 0 : data[1]; fbaUtils.setFormFieldsAndTriggerValuesChange(form, [{ name: startCompleteName, value: value1 }, { name: endCompleteName, value: value2 }]); timeRangePickerWrapperProps === null || timeRangePickerWrapperProps === void 0 || (_timeRangePickerWrapp = timeRangePickerWrapperProps.onChange) === null || _timeRangePickerWrapp === void 0 || _timeRangePickerWrapp.call(timeRangePickerWrapperProps, data); }); useEffect(function () { if (startVal && endVal) { form.setFields([{ name: bodyCompleteName, value: [startVal, endVal] }]); } else { form.setFields([{ name: bodyCompleteName, value: undefined }]); } }, [startVal, endVal, bodyValue, form, bodyCompleteName]); return /*#__PURE__*/jsxs(Fragment, { children: [/*#__PURE__*/jsx(FormItemHidden, { name: startName }), /*#__PURE__*/jsx(FormItemHidden, { name: endName }), /*#__PURE__*/jsx(FormItemWrapper, _objectSpread2(_objectSpread2({}, otherProps), {}, { name: bodyName, children: prevName && (_props$rules = props.rules) !== null && _props$rules !== void 0 && _props$rules.length ? /*#__PURE__*/jsx(Content, _objectSpread2(_objectSpread2({}, timeRangePickerWrapperProps), {}, { onChange: onChange })) : /*#__PURE__*/jsx(TimeRangePickerWrapper, _objectSpread2(_objectSpread2({}, timeRangePickerWrapperProps), {}, { onChange: onChange })) }))] }); }; var Content = function Content(props) { var _props$value3, _props$value4; var ref = useRef(0); var preValue = fbaHooks.usePrevious(props.value); fbaHooks.useEffectCustom(function () { var _props$value, _props$value2; // 处在Form.List场景下,当第一次外部赋值时,会出现赋值成功,但显示异常效果 if (ref.current === 0 && !preValue && (_props$value = props.value) !== null && _props$value !== void 0 && _props$value[0] && (_props$value2 = props.value) !== null && _props$value2 !== void 0 && _props$value2[1]) { var _props$onChange; ref.current = 1; (_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, props.value); } }, [(_props$value3 = props.value) === null || _props$value3 === void 0 ? void 0 : _props$value3[0], (_props$value4 = props.value) === null || _props$value4 === void 0 ? void 0 : _props$value4[1]]); return /*#__PURE__*/jsx(TimeRangePickerWrapper, _objectSpread2({}, props)); }; export { TimeRangePickerWrapperFormItem as T }; //# sourceMappingURL=time-range-picker-wrapper-form-item-BSE3DCEy.js.map