tdesign-react
Version:
TDesign Component for React
334 lines (330 loc) • 18.5 kB
JavaScript
/**
* tdesign v1.15.1
* (c) 2025 tdesign
* @license MIT
*/
import { _ as _objectWithoutProperties } from '../../_chunks/dep-6b660ef0.js';
import { _ as _toConsumableArray } from '../../_chunks/dep-87d110df.js';
import { _ as _asyncToGenerator, r as regenerator } from '../../_chunks/dep-52ff3837.js';
import { _ as _slicedToArray } from '../../_chunks/dep-48805ab8.js';
import { merge, get, isEqual, set, isEmpty, isFunction } from 'lodash-es';
import { l as log } from '../../_chunks/dep-b908e1fe.js';
import useConfig from '../../hooks/useConfig.js';
import { getMapValue, calcFieldValue, objectToArray, travelMapFromObject } from '../utils/index.js';
import '../../_chunks/dep-026a4c6b.js';
import '../../_chunks/dep-eca3a3de.js';
import 'react';
import '../../config-provider/ConfigContext.js';
import '../../_chunks/dep-cb0a3966.js';
import '../../_chunks/dep-f97636ce.js';
import '../../_chunks/dep-9dbbf468.js';
import 'dayjs';
var _excluded = ["name"];
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
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$current16, _formItemRef$current17;
return isFunction(formItemRef === null || formItemRef === void 0 || (_formItemRef$current16 = formItemRef.current) === null || _formItemRef$current16 === void 0 ? void 0 : _formItemRef$current16.validate) && needValidate(formItemRef === null || formItemRef === void 0 || (_formItemRef$current17 = formItemRef.current) === null || _formItemRef$current17 === void 0 ? void 0 : _formItemRef$current17.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$current18, _formItemRef$current19;
return isFunction(formItemRef === null || formItemRef === void 0 || (_formItemRef$current18 = formItemRef.current) === null || _formItemRef$current18 === void 0 ? void 0 : _formItemRef$current18.validateOnly) && needValidate(formItemRef === null || formItemRef === void 0 || (_formItemRef$current19 = formItemRef.current) === null || _formItemRef$current19 === void 0 ? void 0 : _formItemRef$current19.name, fields);
}).map(function (formItemRef) {
var _formItemRef$current$5, _formItemRef$current20;
return formItemRef === null || formItemRef === void 0 || (_formItemRef$current$5 = (_formItemRef$current20 = formItemRef.current).validateOnly) === null || _formItemRef$current$5 === void 0 ? void 0 : _formItemRef$current$5.call(_formItemRef$current20, 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 = getMapValue(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 = {};
if (nameList === true) {
var _iterator = _createForOfIteratorHelper(_toConsumableArray(formMapRef.current.entries()).reverse()),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var _step$value = _slicedToArray(_step.value, 2),
name = _step$value[0],
formItemRef = _step$value[1];
var fieldValue = null;
if (formItemRef !== null && formItemRef !== void 0 && formItemRef.current.isFormList) {
var _formItemRef$current$2, _formItemRef$current2;
fieldValue = calcFieldValue(name, formItemRef === null || formItemRef === void 0 || (_formItemRef$current$2 = (_formItemRef$current2 = formItemRef.current).getValue) === null || _formItemRef$current$2 === void 0 ? void 0 : _formItemRef$current$2.call(_formItemRef$current2));
} else {
var _formItemRef$current$3, _formItemRef$current3;
fieldValue = calcFieldValue(name, formItemRef === null || formItemRef === void 0 || (_formItemRef$current$3 = (_formItemRef$current3 = formItemRef.current).getValue) === null || _formItemRef$current$3 === void 0 ? void 0 : _formItemRef$current$3.call(_formItemRef$current3), !props.supportNumberKey);
}
merge(fieldsValue, fieldValue);
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
} else {
if (!Array.isArray(nameList)) {
log.error("Form", "`getFieldsValue` \u53C2\u6570\u9700\u8981 Array \u7C7B\u578B");
return {};
}
nameList.forEach(function (name) {
var _formItemRef$current$4, _formItemRef$current4;
var formItemRef = getMapValue(name, formMapRef);
if (!formItemRef) return;
var fieldValue = calcFieldValue(name, formItemRef === null || formItemRef === void 0 || (_formItemRef$current$4 = (_formItemRef$current4 = formItemRef.current).getValue) === null || _formItemRef$current$4 === void 0 ? void 0 : _formItemRef$current$4.call(_formItemRef$current4));
merge(fieldsValue, fieldValue);
});
}
return fieldsValue;
}
function setFieldsValue() {
var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var nameLists = objectToArray(fields);
nameLists.forEach(function (nameList) {
var _formItemRef2;
var fieldValue = get(fields, nameList);
var formItemRef;
if (nameList.length > 1) {
var _iterator2 = _createForOfIteratorHelper(formMapRef.current.entries()),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
var _step2$value = _slicedToArray(_step2.value, 2),
mapNameList = _step2$value[0],
_formItemRef = _step2$value[1];
if (isEqual(nameList, mapNameList)) {
formItemRef = _formItemRef;
break;
}
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
} else {
formItemRef = formMapRef.current.get(nameList[0]);
}
if ((_formItemRef2 = formItemRef) !== null && _formItemRef2 !== void 0 && _formItemRef2.current) {
var _formItemRef3, _formItemRef3$setValu;
(_formItemRef3 = formItemRef) === null || _formItemRef3 === void 0 || (_formItemRef3 = _formItemRef3.current) === null || _formItemRef3 === void 0 || (_formItemRef3$setValu = _formItemRef3.setValue) === null || _formItemRef3$setValu === void 0 || _formItemRef3$setValu.call(_formItemRef3, fieldValue, fields);
} else {
set(floatingFormDataRef.current, nameList, fieldValue);
}
});
}
function setFields() {
var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
if (!Array.isArray(fields)) throw new Error("setFields \u53C2\u6570\u9700\u8981 Array \u7C7B\u578B");
fields.forEach(function (field) {
var _formItemRef$current5;
var name = field.name,
restFields = _objectWithoutProperties(field, _excluded);
var formItemRef = getMapValue(name, formMapRef);
formItemRef === null || formItemRef === void 0 || (_formItemRef$current5 = formItemRef.current) === null || _formItemRef$current5 === void 0 || _formItemRef$current5.setField(restFields, field);
});
}
function reset(params) {
if (typeof params === "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.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$current7;
var formItemRef = getMapValue(name, formMapRef);
formItemRef === null || formItemRef === void 0 || (_formItemRef$current7 = formItemRef.current) === null || _formItemRef$current7 === void 0 || _formItemRef$current7.resetField(type);
});
}
onReset === null || onReset === void 0 || onReset({});
}
function clearValidate(fields) {
if (typeof fields === "undefined") {
_toConsumableArray(formMapRef.current.values()).forEach(function (formItemRef) {
var _formItemRef$current8;
formItemRef === null || formItemRef === void 0 || (_formItemRef$current8 = formItemRef.current) === null || _formItemRef$current8 === void 0 || _formItemRef$current8.resetValidate();
});
} else {
if (!Array.isArray(fields)) throw new Error("clearValidate \u53C2\u6570\u9700\u8981 Array \u7C7B\u578B");
fields.forEach(function (name) {
var _formItemRef$current9;
var formItemRef = getMapValue(name, formMapRef);
formItemRef === null || formItemRef === void 0 || (_formItemRef$current9 = formItemRef.current) === null || _formItemRef$current9 === void 0 || _formItemRef$current9.resetValidate();
});
}
}
function setValidateMessage(message) {
travelMapFromObject(message, formMapRef, function (formItemRef, fieldValue) {
var _formItemRef$current0, _formItemRef$current1;
formItemRef === null || formItemRef === void 0 || (_formItemRef$current0 = formItemRef.current) === null || _formItemRef$current0 === void 0 || (_formItemRef$current1 = _formItemRef$current0.setValidateMessage) === null || _formItemRef$current1 === void 0 || _formItemRef$current1.call(_formItemRef$current0, fieldValue);
});
}
function getValidateMessage(fields) {
var message = {};
if (typeof fields === "undefined") {
_toConsumableArray(formMapRef.current.values()).forEach(function (formItemRef) {
var _formItemRef$current10, _formItemRef$current11, _formItemRef$current12;
var item = formItemRef === null || formItemRef === void 0 || (_formItemRef$current10 = formItemRef.current) === null || _formItemRef$current10 === void 0 || (_formItemRef$current11 = _formItemRef$current10.getValidateMessage) === null || _formItemRef$current11 === void 0 ? void 0 : _formItemRef$current11.call(_formItemRef$current10);
if (isEmpty(item)) return;
message[formItemRef === null || formItemRef === void 0 || (_formItemRef$current12 = formItemRef.current) === null || _formItemRef$current12 === void 0 ? void 0 : _formItemRef$current12.name] = item;
});
} else {
if (!Array.isArray(fields)) throw new Error("getValidateMessage \u53C2\u6570\u9700\u8981 Array \u7C7B\u578B");
fields.forEach(function (name) {
var _formItemRef$current13, _formItemRef$current14, _formItemRef$current15;
var formItemRef = getMapValue(name, formMapRef);
var item = formItemRef === null || formItemRef === void 0 || (_formItemRef$current13 = formItemRef.current) === null || _formItemRef$current13 === void 0 || (_formItemRef$current14 = _formItemRef$current13.getValidateMessage) === null || _formItemRef$current14 === void 0 ? void 0 : _formItemRef$current14.call(_formItemRef$current13);
if (isEmpty(item)) return;
message[formItemRef === null || formItemRef === void 0 || (_formItemRef$current15 = formItemRef.current) === null || _formItemRef$current15 === void 0 ? void 0 : _formItemRef$current15.name] = 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