UNPKG

tdesign-react

Version:
310 lines (306 loc) 15.3 kB
/** * tdesign v1.16.2 * (c) 2025 tdesign * @license MIT */ import { _ as _toConsumableArray } from '../../_chunks/dep-a3a3e527.js'; import { _ as _objectWithoutProperties } from '../../_chunks/dep-ed34fbd4.js'; import { _ as _asyncToGenerator, r as regenerator } from '../../_chunks/dep-4f115c18.js'; import { _ as _slicedToArray } from '../../_chunks/dep-10d5731f.js'; import { cloneDeep, get, set, isEmpty, isFunction, merge } from 'lodash-es'; import { l as log } from '../../_chunks/dep-2ba7b13f.js'; import useConfig from '../../hooks/useConfig.js'; import { findFormItem, objectToArray, travelMapFromObject, calcFieldValue } from '../utils/index.js'; import '../../_chunks/dep-74a10cfb.js'; import '../../_chunks/dep-8abcbcbc.js'; import 'react'; import '../../config-provider/ConfigContext.js'; import '../../_chunks/dep-d67deb2c.js'; import '../../_chunks/dep-6b235a32.js'; import '../../_chunks/dep-b9afa32b.js'; import 'dayjs'; var _excluded = ["name"]; function needValidate(name, fields) { if (!fields || !Array.isArray(fields)) return true; return fields.some(function (item) { return String(item) === String(name); }); } function formatValidateResult(validateResultList) { var result = validateResultList.reduce(function (r, err) { return Object.assign(r || {}, err); }, {}); Object.keys(result).forEach(function (key) { if (result[key] === true) { delete result[key]; } else { result[key] = result[key].filter(function (fr) { return fr.result === false; }); } if (result[key] && key.includes(",")) { var keyList = key.split(","); var fieldValue = calcFieldValue(keyList, result[key]); merge(result, fieldValue); delete result[key]; } }); return isEmpty(result) ? true : result; } function useInstance(props, formRef, formMapRef, floatingFormDataRef) { var _useConfig = useConfig(), classPrefix = _useConfig.classPrefix; var scrollToFirstError = props.scrollToFirstError, _props$preventSubmitD = props.preventSubmitDefault, preventSubmitDefault = _props$preventSubmitD === void 0 ? true : _props$preventSubmitD, onSubmit = props.onSubmit, onReset = props.onReset; function getFirstError(r) { var _r$firstKey$; if (r === true) return; var _Object$keys = Object.keys(r), _Object$keys2 = _slicedToArray(_Object$keys, 1), firstKey = _Object$keys2[0]; if (scrollToFirstError) { scrollTo(".".concat(classPrefix, "-form--has-error")); } return (_r$firstKey$ = r[firstKey][0]) === null || _r$firstKey$ === void 0 ? void 0 : _r$firstKey$.message; } function scrollTo(selector) { var _formRef$current$quer, _formRef$current; var dom = (_formRef$current$quer = (_formRef$current = formRef.current).querySelector) === null || _formRef$current$quer === void 0 ? void 0 : _formRef$current$quer.call(_formRef$current, selector); var behavior = scrollToFirstError; dom && dom.scrollIntoView({ behavior: behavior }); } function submit(e) { if (preventSubmitDefault) { var _e$preventDefault, _e$stopPropagation; e === null || e === void 0 || (_e$preventDefault = e.preventDefault) === null || _e$preventDefault === void 0 || _e$preventDefault.call(e); e === null || e === void 0 || (_e$stopPropagation = e.stopPropagation) === null || _e$stopPropagation === void 0 || _e$stopPropagation.call(e); } validate().then(function (r) { var firstError = getFirstError(r); var fields = getFieldsValue(true); onSubmit === null || onSubmit === void 0 || onSubmit({ validateResult: r, firstError: firstError, e: e, fields: fields }); }); } function validate(_x) { return _validate.apply(this, arguments); } function _validate() { _validate = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee(param) { var _ref, fields, _ref$trigger, trigger, showErrorMessage, list, validateList; return regenerator.wrap(function (_context) { while (1) switch (_context.prev = _context.next) { case 0: _ref = param || {}, fields = _ref.fields, _ref$trigger = _ref.trigger, trigger = _ref$trigger === void 0 ? "all" : _ref$trigger, showErrorMessage = _ref.showErrorMessage; list = _toConsumableArray(formMapRef.current.values()).filter(function (formItemRef) { var _formItemRef$current11, _formItemRef$current12; return isFunction(formItemRef === null || formItemRef === void 0 || (_formItemRef$current11 = formItemRef.current) === null || _formItemRef$current11 === void 0 ? void 0 : _formItemRef$current11.validate) && needValidate(formItemRef === null || formItemRef === void 0 || (_formItemRef$current12 = formItemRef.current) === null || _formItemRef$current12 === void 0 ? void 0 : _formItemRef$current12.name, fields); }).map(function (formItemRef) { return formItemRef === null || formItemRef === void 0 ? void 0 : formItemRef.current.validate(trigger, showErrorMessage); }); _context.next = 1; return Promise.all(list); case 1: validateList = _context.sent; return _context.abrupt("return", formatValidateResult(validateList)); case 2: case "end": return _context.stop(); } }, _callee); })); return _validate.apply(this, arguments); } function validateOnly(_x2) { return _validateOnly.apply(this, arguments); } function _validateOnly() { _validateOnly = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee2(param) { var _ref2, fields, _ref2$trigger, trigger, list, validateList; return regenerator.wrap(function (_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _ref2 = param || {}, fields = _ref2.fields, _ref2$trigger = _ref2.trigger, trigger = _ref2$trigger === void 0 ? "all" : _ref2$trigger; list = _toConsumableArray(formMapRef.current.values()).filter(function (formItemRef) { var _formItemRef$current13, _formItemRef$current14; return isFunction(formItemRef === null || formItemRef === void 0 || (_formItemRef$current13 = formItemRef.current) === null || _formItemRef$current13 === void 0 ? void 0 : _formItemRef$current13.validateOnly) && needValidate(formItemRef === null || formItemRef === void 0 || (_formItemRef$current14 = formItemRef.current) === null || _formItemRef$current14 === void 0 ? void 0 : _formItemRef$current14.name, fields); }).map(function (formItemRef) { var _formItemRef$current$3, _formItemRef$current15; return formItemRef === null || formItemRef === void 0 || (_formItemRef$current$3 = (_formItemRef$current15 = formItemRef.current).validateOnly) === null || _formItemRef$current$3 === void 0 ? void 0 : _formItemRef$current$3.call(_formItemRef$current15, trigger); }); _context2.next = 1; return Promise.all(list); case 1: validateList = _context2.sent; return _context2.abrupt("return", formatValidateResult(validateList)); case 2: case "end": return _context2.stop(); } }, _callee2); })); return _validateOnly.apply(this, arguments); } function getFieldValue(name) { var _formItemRef$current, _formItemRef$current$; if (!name) return null; var formItemRef = findFormItem(name, formMapRef); return formItemRef === null || formItemRef === void 0 || (_formItemRef$current = formItemRef.current) === null || _formItemRef$current === void 0 || (_formItemRef$current$ = _formItemRef$current.getValue) === null || _formItemRef$current$ === void 0 ? void 0 : _formItemRef$current$.call(_formItemRef$current); } function getFieldsValue(nameList) { var fieldsValue = {}; var processField = function processField(name, formItemRef) { if (!(formItemRef !== null && formItemRef !== void 0 && formItemRef.current)) return; var getValue = formItemRef.current.getValue; var value = getValue === null || getValue === void 0 ? void 0 : getValue(); var fieldValue = calcFieldValue(name, value, !props.supportNumberKey); merge(fieldsValue, fieldValue); }; if (nameList === true) { var entries = Array.from(formMapRef.current.entries()); for (var i = entries.length - 1; i >= 0; i--) { var _entries$i = _slicedToArray(entries[i], 2), name = _entries$i[0], formItemRef = _entries$i[1]; processField(name, formItemRef); } } else { if (!Array.isArray(nameList)) { log.error("Form", 'The parameter of "getFieldsValue" must be an array'); return {}; } for (var _i = 0; _i < nameList.length; _i++) { var _name = nameList[_i]; var _formItemRef = findFormItem(_name, formMapRef); processField(_name, _formItemRef); } } return cloneDeep(fieldsValue); } function setFieldsValue() { var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var nameLists = objectToArray(fields); nameLists.forEach(function (nameList) { var fieldValue = get(fields, nameList); var formItemRef = findFormItem(nameList, formMapRef); if (formItemRef !== null && formItemRef !== void 0 && formItemRef.current) { var _formItemRef$current$2, _formItemRef$current2; (_formItemRef$current$2 = (_formItemRef$current2 = formItemRef.current).setValue) === null || _formItemRef$current$2 === void 0 || _formItemRef$current$2.call(_formItemRef$current2, fieldValue); } else { set(floatingFormDataRef.current, nameList, fieldValue); } }); } function setFields() { var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; if (!Array.isArray(fields)) throw new TypeError('The parameter of "setFields" must be an array'); fields.forEach(function (field) { var _formItemRef$current3; var name = field.name, restFields = _objectWithoutProperties(field, _excluded); var formItemRef = findFormItem(name, formMapRef); formItemRef === null || formItemRef === void 0 || (_formItemRef$current3 = formItemRef.current) === null || _formItemRef$current3 === void 0 || _formItemRef$current3.setField(restFields); }); } function reset(params) { if (typeof params === "undefined") { _toConsumableArray(formMapRef.current.values()).forEach(function (formItemRef) { var _formItemRef$current4; formItemRef === null || formItemRef === void 0 || (_formItemRef$current4 = formItemRef.current) === null || _formItemRef$current4 === void 0 || _formItemRef$current4.resetField(); }); } else { var _params$type = params.type, type = _params$type === void 0 ? "initial" : _params$type, _params$fields = params.fields, fields = _params$fields === void 0 ? [] : _params$fields; fields.forEach(function (name) { var _formItemRef$current5; var formItemRef = findFormItem(name, formMapRef); formItemRef === null || formItemRef === void 0 || (_formItemRef$current5 = formItemRef.current) === null || _formItemRef$current5 === void 0 || _formItemRef$current5.resetField(type); }); } onReset === null || onReset === void 0 || onReset({}); requestAnimationFrame(function () { var _props$onValuesChange; var fieldValue = getFieldsValue(true); (_props$onValuesChange = props.onValuesChange) === null || _props$onValuesChange === void 0 || _props$onValuesChange.call(props, fieldValue, fieldValue); }); } function clearValidate(fields) { if (typeof fields === "undefined") { _toConsumableArray(formMapRef.current.values()).forEach(function (formItemRef) { var _formItemRef$current6; formItemRef === null || formItemRef === void 0 || (_formItemRef$current6 = formItemRef.current) === null || _formItemRef$current6 === void 0 || _formItemRef$current6.resetValidate(); }); } else { if (!Array.isArray(fields)) throw new TypeError('The parameter of "clearValidate" must be an array'); fields.forEach(function (name) { var _formItemRef$current7; var formItemRef = findFormItem(name, formMapRef); formItemRef === null || formItemRef === void 0 || (_formItemRef$current7 = formItemRef.current) === null || _formItemRef$current7 === void 0 || _formItemRef$current7.resetValidate(); }); } } function setValidateMessage(message) { travelMapFromObject(message, formMapRef, function (formItemRef, fieldValue) { var _formItemRef$current8, _formItemRef$current9; formItemRef === null || formItemRef === void 0 || (_formItemRef$current8 = formItemRef.current) === null || _formItemRef$current8 === void 0 || (_formItemRef$current9 = _formItemRef$current8.setValidateMessage) === null || _formItemRef$current9 === void 0 || _formItemRef$current9.call(_formItemRef$current8, fieldValue); }); } function getValidateMessage(fields) { if (typeof fields !== "undefined" && !Array.isArray(fields)) { throw new TypeError('The parameter of "getValidateMessage" must be an array'); } var formItemRefs = typeof fields === "undefined" ? _toConsumableArray(formMapRef.current.values()) : fields.map(function (name) { var formItemRef = findFormItem(name, formMapRef); return formItemRef; }).filter(Boolean); var extractValidateMessage = function extractValidateMessage(formItemRef) { var _formItemRef$current0, _formItemRef$current1, _formItemRef$current10; var item = formItemRef === null || formItemRef === void 0 || (_formItemRef$current0 = formItemRef.current) === null || _formItemRef$current0 === void 0 || (_formItemRef$current1 = _formItemRef$current0.getValidateMessage) === null || _formItemRef$current1 === void 0 ? void 0 : _formItemRef$current1.call(_formItemRef$current0); if (isEmpty(item)) return null; var nameKey = formItemRef === null || formItemRef === void 0 || (_formItemRef$current10 = formItemRef.current) === null || _formItemRef$current10 === void 0 ? void 0 : _formItemRef$current10.name; return { nameKey: nameKey, item: item }; }; var message = {}; formItemRefs.forEach(function (formItemRef) { var result = extractValidateMessage(formItemRef); if (!result) return; var key = Array.isArray(result.nameKey) ? result.nameKey.toString() : String(result.nameKey); message[key] = result.item; }); if (isEmpty(message)) return; return message; } return { submit: submit, reset: reset, validate: validate, validateOnly: validateOnly, clearValidate: clearValidate, setFields: setFields, setFieldsValue: setFieldsValue, setValidateMessage: setValidateMessage, getValidateMessage: getValidateMessage, getFieldValue: getFieldValue, getFieldsValue: getFieldsValue, currentElement: formRef.current, getCurrentElement: function getCurrentElement() { return formRef.current; } }; } export { useInstance as default }; //# sourceMappingURL=useInstance.js.map