tntd 2.0.18 → 2.0.20

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.
Files changed (65) hide show
  1. package/es/index.js +2 -1
  2. package/es/index.js.map +1 -1
  3. package/es/table/table.js +4 -1
  4. package/es/table/table.js.map +1 -1
  5. package/es/table/table.less +7 -0
  6. package/es/tntd-cascader/AntdCascader/index.less +18 -14
  7. package/es/tntd-form/TntdForm/components/Item.js +40 -0
  8. package/es/tntd-form/TntdForm/components/Item.js.map +1 -0
  9. package/es/tntd-form/TntdForm/components/ItemComp.js +149 -0
  10. package/es/tntd-form/TntdForm/components/ItemComp.js.map +1 -0
  11. package/es/tntd-form/TntdForm/components/List.js +75 -0
  12. package/es/tntd-form/TntdForm/components/List.js.map +1 -0
  13. package/es/tntd-form/TntdForm/index.js +52 -0
  14. package/es/tntd-form/TntdForm/index.js.map +1 -0
  15. package/es/tntd-form/TntdForm/interface.js +1 -0
  16. package/es/tntd-form/TntdForm/interface.js.map +1 -0
  17. package/es/tntd-form/TntdForm/store.js +2 -0
  18. package/es/tntd-form/TntdForm/store.js.map +1 -0
  19. package/es/tntd-form/TntdForm/utils.js +219 -0
  20. package/es/tntd-form/TntdForm/utils.js.map +1 -0
  21. package/es/tntd-form/index.js +1 -0
  22. package/es/tntd-form/index.js.map +1 -0
  23. package/lib/index.d.ts +1 -0
  24. package/lib/index.d.ts.map +1 -1
  25. package/lib/index.js +7 -0
  26. package/lib/index.js.map +1 -1
  27. package/lib/table/table.d.ts +2 -1
  28. package/lib/table/table.d.ts.map +1 -1
  29. package/lib/table/table.js +4 -2
  30. package/lib/table/table.js.map +1 -1
  31. package/lib/table/table.less +7 -0
  32. package/lib/tntd-cascader/AntdCascader/index.less +18 -14
  33. package/lib/tntd-form/TntdForm/components/Item.d.ts +5 -0
  34. package/lib/tntd-form/TntdForm/components/Item.d.ts.map +1 -0
  35. package/lib/tntd-form/TntdForm/components/Item.js +50 -0
  36. package/lib/tntd-form/TntdForm/components/Item.js.map +1 -0
  37. package/lib/tntd-form/TntdForm/components/ItemComp.d.ts +5 -0
  38. package/lib/tntd-form/TntdForm/components/ItemComp.d.ts.map +1 -0
  39. package/lib/tntd-form/TntdForm/components/ItemComp.js +169 -0
  40. package/lib/tntd-form/TntdForm/components/ItemComp.js.map +1 -0
  41. package/lib/tntd-form/TntdForm/components/List.d.ts +5 -0
  42. package/lib/tntd-form/TntdForm/components/List.d.ts.map +1 -0
  43. package/lib/tntd-form/TntdForm/components/List.js +96 -0
  44. package/lib/tntd-form/TntdForm/components/List.js.map +1 -0
  45. package/lib/tntd-form/TntdForm/index.d.ts +10 -0
  46. package/lib/tntd-form/TntdForm/index.d.ts.map +1 -0
  47. package/lib/tntd-form/TntdForm/index.js +70 -0
  48. package/lib/tntd-form/TntdForm/index.js.map +1 -0
  49. package/lib/tntd-form/TntdForm/interface.d.ts +91 -0
  50. package/lib/tntd-form/TntdForm/interface.d.ts.map +1 -0
  51. package/lib/tntd-form/TntdForm/interface.js +5 -0
  52. package/lib/tntd-form/TntdForm/interface.js.map +1 -0
  53. package/lib/tntd-form/TntdForm/store.d.ts +4 -0
  54. package/lib/tntd-form/TntdForm/store.d.ts.map +1 -0
  55. package/lib/tntd-form/TntdForm/store.js +10 -0
  56. package/lib/tntd-form/TntdForm/store.js.map +1 -0
  57. package/lib/tntd-form/TntdForm/utils.d.ts +48 -0
  58. package/lib/tntd-form/TntdForm/utils.d.ts.map +1 -0
  59. package/lib/tntd-form/TntdForm/utils.js +239 -0
  60. package/lib/tntd-form/TntdForm/utils.js.map +1 -0
  61. package/lib/tntd-form/index.d.ts +2 -0
  62. package/lib/tntd-form/index.d.ts.map +1 -0
  63. package/lib/tntd-form/index.js +13 -0
  64. package/lib/tntd-form/index.js.map +1 -0
  65. package/package.json +1 -1
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _utils = require("../utils");
10
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
14
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
16
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
17
+ function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
18
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
19
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
20
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
21
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
22
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
23
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
24
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
25
+ var ItemComp = function ItemComp(_ref) {
26
+ var form = _ref.form,
27
+ name = _ref.name,
28
+ children = _ref.children,
29
+ style = _ref.style,
30
+ initialValues = _ref.initialValues,
31
+ initialValue = _ref.initialValue,
32
+ rules = _ref.rules,
33
+ setCurrentChangeKeys = _ref.setCurrentChangeKeys;
34
+ var _useState = (0, _react.useState)(undefined),
35
+ _useState2 = _slicedToArray(_useState, 2),
36
+ value = _useState2[0],
37
+ setValue = _useState2[1];
38
+ var _useState3 = (0, _react.useState)(undefined),
39
+ _useState4 = _slicedToArray(_useState3, 2),
40
+ errorMsg = _useState4[0],
41
+ setErrorMsg = _useState4[1];
42
+ /**
43
+ * 动态修改form内部的值,为啥不在useEffect里面处理的原因是子组件的useEffect会比父组件useEffect先执行,需要保证在子组件useEffect监听value变化的时候获取到的formData永远是最新的
44
+ * @param name
45
+ * @param value
46
+ * @returns
47
+ */
48
+ var generateFormData = function generateFormData(name, value) {
49
+ if (!name || !form) return;
50
+ var _name = _toArray(name),
51
+ str = _name[0],
52
+ rest = _name.slice(1);
53
+ rest.forEach(function (i) {
54
+ if (form.formData[str]) {
55
+ form.formData[str][i].value = value;
56
+ form.formData[str][i].checkItem = function () {
57
+ var error = (0, _utils.handleCheckItem)(value, rules);
58
+ setErrorMsg(error);
59
+ return error;
60
+ };
61
+ } else {
62
+ form.formData[str] = _defineProperty({}, i, {
63
+ value: value,
64
+ checkItem: function checkItem() {
65
+ var error = (0, _utils.handleCheckItem)(value, rules);
66
+ setErrorMsg(error);
67
+ return error;
68
+ },
69
+ setItemValue: function setItemValue() {},
70
+ errorMsg: undefined
71
+ });
72
+ }
73
+ });
74
+ };
75
+ // 为了给最外层提供方法去校验,比如保存的时候.
76
+ // 这里依赖不要添加value,因为子组件的useEffect会比父组件useEffect先执行,如果添加了依赖value会导致子组件获取到的formData永远是上一次的
77
+ (0, _react.useEffect)(function () {
78
+ if (!name || !form) return;
79
+ var _name2 = _toArray(name),
80
+ str = _name2[0],
81
+ rest = _name2.slice(1);
82
+ var addItem = {
83
+ setItemValue: function setItemValue(_val, callback) {
84
+ var error = (0, _utils.handleCheckItem)(_val, rules);
85
+ setValue(_val);
86
+ setErrorMsg(error);
87
+ callback === null || callback === void 0 ? void 0 : callback();
88
+ },
89
+ checkItem: function checkItem() {
90
+ var error = (0, _utils.handleCheckItem)(value, rules);
91
+ setErrorMsg(error);
92
+ return error;
93
+ },
94
+ value: value,
95
+ errorMsg: errorMsg
96
+ };
97
+ rest.forEach(function (i) {
98
+ if (form.formData[str]) {
99
+ form.formData[str][i] = addItem;
100
+ } else {
101
+ form.formData[str] = _defineProperty({}, i, addItem);
102
+ }
103
+ });
104
+ }, [rules, name, errorMsg, form]);
105
+ /** 这段代码不能删除,当增加/删除列的时候有些默认值需要更新 */
106
+ (0, _react.useEffect)(function () {
107
+ if (initialValue) {
108
+ setValue(initialValue);
109
+ generateFormData(name, initialValue);
110
+ }
111
+ }, [initialValue]);
112
+ // 初始化设置默认值,
113
+ (0, _react.useEffect)(function () {
114
+ var _a;
115
+ var initValue = (0, _utils.getInitValue)(initialValues, name);
116
+ // @ts-ignore
117
+ var _value = ['', null, undefined].includes(initValue) ? initialValue : initValue;
118
+ setValue(_value);
119
+ generateFormData(name, _value);
120
+ if (name) {
121
+ setCurrentChangeKeys([(_a = (0, _utils.getNames)(name)) === null || _a === void 0 ? void 0 : _a.join('.')]);
122
+ }
123
+ }, []);
124
+ // 默认方法
125
+ var handleChange = function handleChange(e) {
126
+ var _a, _b;
127
+ var val;
128
+ if (_typeof(e) === 'object') {
129
+ val = (_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.value;
130
+ } else {
131
+ val = e;
132
+ }
133
+ setValue(val);
134
+ generateFormData(name, val);
135
+ var error = (0, _utils.handleCheckItem)(val, rules);
136
+ setErrorMsg(error);
137
+ if (name) {
138
+ setCurrentChangeKeys([(_b = (0, _utils.getNames)(name)) === null || _b === void 0 ? void 0 : _b.join('.')]);
139
+ }
140
+ };
141
+ return _react["default"].createElement("div", {
142
+ className: errorMsg ? 'has-error custom-form-item-wrapper' : 'custom-form-item-wrapper',
143
+ style: style
144
+ }, _react["default"].Children.map(children, function (child) {
145
+ var _a;
146
+ if (_react["default"].isValidElement(child)) {
147
+ return _react["default"].cloneElement(child, Object.assign({
148
+ value: value,
149
+ form: form,
150
+ onChange: handleChange,
151
+ 'data-key': (_a = (0, _utils.getNames)(name)) === null || _a === void 0 ? void 0 : _a.join('.')
152
+ }, child.props));
153
+ }
154
+ return null;
155
+ }), errorMsg && _react["default"].createElement("div", {
156
+ className: "ant-form-explain ant-form-item-explain-error"
157
+ }, errorMsg));
158
+ };
159
+ function arePropsEqual(prevProps, nextProps) {
160
+ if (Array.isArray(nextProps.currentChangeKeys) && nextProps.currentChangeKeys.length && (0, _isEqual2["default"])(prevProps.initialValues, nextProps.initialValues) && !nextProps.currentChangeKeys.includes((0, _utils.getNames)(nextProps.name).join('.')) && !nextProps.shouldUpdate && Array.isArray(nextProps.dependencies) && nextProps.dependencies.every(function (i) {
161
+ var _a;
162
+ return !((_a = nextProps.currentChangeKeys) === null || _a === void 0 ? void 0 : _a.includes((0, _utils.getNames)(i).join('.')));
163
+ })) {
164
+ return true;
165
+ }
166
+ return false;
167
+ }
168
+ var _default = (0, _react.memo)(ItemComp, arePropsEqual);
169
+ exports["default"] = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemComp.js","sourceRoot":"","sources":["../../../../src/tntd-form/TntdForm/components/ItemComp.tsx"],"names":[],"mappings":"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","sourcesContent":["/*\n * @Descripttion: TntdForm.Item进行性能优化\n * @Author: 郑泳健\n * @Date: 2023-02-23 12:47:28\n * @LastEditors: 郑泳健\n * @LastEditTime: 2023-03-17 18:27:03\n */\n\nimport React, { useState, memo, useEffect } from 'react'\nimport { isEqual } from 'lodash'\nimport { getNames, handleCheckItem, getInitValue } from '../utils'\nimport type { IFormItem, IFormItemData, TinitialValueType } from '../interface'\n\nconst ItemComp: React.FC<IFormItem> = ({\n form,\n name,\n children,\n style,\n initialValues,\n initialValue,\n rules,\n setCurrentChangeKeys,\n}) => {\n const [value, setValue] = useState<TinitialValueType>(undefined)\n const [errorMsg, setErrorMsg] = useState<string | undefined>(undefined)\n\n /**\n * 动态修改form内部的值,为啥不在useEffect里面处理的原因是子组件的useEffect会比父组件useEffect先执行,需要保证在子组件useEffect监听value变化的时候获取到的formData永远是最新的\n * @param name\n * @param value\n * @returns\n */\n const generateFormData = (name: string[] | string, value: TinitialValueType) => {\n if (!name || !form) return\n const [str, ...rest] = name\n\n rest.forEach((i) => {\n if (form.formData[str]) {\n form.formData[str][i].value = value\n form.formData[str][i].checkItem = () => {\n const error = handleCheckItem(value, rules)\n setErrorMsg(error)\n return error\n }\n } else {\n form.formData[str] = {\n [i]: {\n value,\n checkItem: () => {\n const error = handleCheckItem(value, rules)\n setErrorMsg(error)\n return error\n },\n setItemValue: () => {},\n errorMsg: undefined,\n },\n }\n }\n })\n }\n\n // 为了给最外层提供方法去校验,比如保存的时候.\n // 这里依赖不要添加value,因为子组件的useEffect会比父组件useEffect先执行,如果添加了依赖value会导致子组件获取到的formData永远是上一次的\n useEffect(() => {\n if (!name || !form) return\n const [str, ...rest] = name\n\n const addItem: IFormItemData = {\n setItemValue: (_val, callback) => {\n const error = handleCheckItem(_val, rules)\n setValue(_val)\n setErrorMsg(error)\n callback?.()\n },\n checkItem: () => {\n const error = handleCheckItem(value, rules)\n setErrorMsg(error)\n return error\n },\n value,\n errorMsg,\n }\n rest.forEach((i) => {\n if (form.formData[str]) {\n form.formData[str][i] = addItem\n } else {\n form.formData[str] = {\n [i]: addItem,\n }\n }\n })\n }, [rules, name, errorMsg, form])\n\n /** 这段代码不能删除,当增加/删除列的时候有些默认值需要更新 */\n useEffect(() => {\n if (initialValue) {\n setValue(initialValue)\n generateFormData(name, initialValue)\n }\n }, [initialValue])\n\n // 初始化设置默认值,\n useEffect(() => {\n const initValue = getInitValue(initialValues, name)\n // @ts-ignore\n const _value = ['', null, undefined].includes(initValue) ? initialValue : initValue\n\n setValue(_value)\n generateFormData(name, _value)\n if (name) {\n setCurrentChangeKeys([getNames(name)?.join('.')])\n }\n }, [])\n\n // 默认方法\n const handleChange = (\n e:\n | React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>\n | string\n | number\n | undefined\n ) => {\n let val\n if (typeof e === 'object') {\n val = (e as React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>)\n ?.target?.value\n } else {\n val = e\n }\n setValue(val)\n generateFormData(name, val)\n const error = handleCheckItem(val, rules)\n setErrorMsg(error)\n if (name) {\n setCurrentChangeKeys([getNames(name)?.join('.')])\n }\n }\n\n return (\n <div\n className={errorMsg ? 'has-error custom-form-item-wrapper' : 'custom-form-item-wrapper'}\n style={style}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n value,\n form,\n onChange: handleChange,\n 'data-key': getNames(name)?.join('.'),\n ...child.props,\n })\n }\n return null\n })}\n {errorMsg && <div className=\"ant-form-explain ant-form-item-explain-error\">{errorMsg}</div>}\n </div>\n )\n}\n\nfunction arePropsEqual(prevProps: IFormItem, nextProps: IFormItem) {\n if (\n Array.isArray(nextProps.currentChangeKeys) &&\n nextProps.currentChangeKeys.length &&\n isEqual(prevProps.initialValues, nextProps.initialValues) &&\n !nextProps.currentChangeKeys.includes(getNames(nextProps.name).join('.')) &&\n !nextProps.shouldUpdate &&\n Array.isArray(nextProps.dependencies) &&\n nextProps.dependencies.every(\n (i) => !nextProps.currentChangeKeys?.includes(getNames(i).join('.'))\n )\n ) {\n return true\n }\n return false\n}\n\nexport default memo(ItemComp, arePropsEqual)\n"]}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { IFormListProps } from '../interface';
3
+ declare const _default: React.NamedExoticComponent<IFormListProps>;
4
+ export default _default;
5
+ //# sourceMappingURL=List.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../../src/tntd-form/TntdForm/components/List.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAwD,MAAM,OAAO,CAAA;AAI5E,OAAO,KAAK,EAAE,cAAc,EAA+C,MAAM,cAAc,CAAA;;AA0D/F,wBAKE"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
9
+ var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _utils = require("../utils");
12
+ var _store = require("../store");
13
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
16
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
17
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
18
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
19
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
20
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
21
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
22
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
23
+ var List = function List(_ref) {
24
+ var name = _ref.name,
25
+ children = _ref.children;
26
+ var maxRef = (0, _react.useRef)(-1);
27
+ var _useContext = (0, _react.useContext)(_store.FormContext),
28
+ form = _useContext.form,
29
+ initialValues = _useContext.initialValues;
30
+ var _useState = (0, _react.useState)([]),
31
+ _useState2 = _slicedToArray(_useState, 2),
32
+ dataLevel = _useState2[0],
33
+ setDataLevel = _useState2[1];
34
+ (0, _react.useEffect)(function () {
35
+ var key = Array.isArray(name) ? name === null || name === void 0 ? void 0 : name[0] : name;
36
+ if (form && form.dataLevel) {
37
+ form.dataLevel[key] = dataLevel;
38
+ }
39
+ }, [form, dataLevel, name]);
40
+ /** 根据默认数值自动生成dataLevel */
41
+ (0, _react.useEffect)(function () {
42
+ var dataSource = initialValues;
43
+ var attrs = (0, _utils.getNames)(name);
44
+ var _iterator = _createForOfIteratorHelper(attrs),
45
+ _step;
46
+ try {
47
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
48
+ var key = _step.value;
49
+ dataSource = (dataSource === null || dataSource === void 0 ? void 0 : dataSource[key]) || [{}];
50
+ }
51
+ } catch (err) {
52
+ _iterator.e(err);
53
+ } finally {
54
+ _iterator.f();
55
+ }
56
+ if (Array.isArray(dataSource)) {
57
+ var _level = dataSource.map(function (i, index) {
58
+ return {
59
+ key: index,
60
+ name: "".concat(attrs.join('.'), ".").concat(index)
61
+ };
62
+ });
63
+ setDataLevel(_level);
64
+ maxRef.current = dataSource.length - 1;
65
+ }
66
+ }, [initialValues, name]);
67
+ /** 新增一列 */
68
+ var handleAdd = function handleAdd(index) {
69
+ var tempDataLevel = (0, _cloneDeep2["default"])(dataLevel);
70
+ maxRef.current++;
71
+ var attrs = (0, _utils.getNames)(name);
72
+ tempDataLevel.splice(index + 1, 0, {
73
+ key: maxRef.current,
74
+ name: "".concat(attrs === null || attrs === void 0 ? void 0 : attrs.join('.'), ".").concat(maxRef.current)
75
+ });
76
+ setDataLevel(tempDataLevel);
77
+ };
78
+ /** 删除一列 */
79
+ var handleDel = function handleDel(index) {
80
+ var temp = (0, _cloneDeep2["default"])(dataLevel);
81
+ temp.splice(index, 1);
82
+ setDataLevel(temp);
83
+ };
84
+ return _react["default"].createElement(_react["default"].Fragment, null, children === null || children === void 0 ? void 0 : children(dataLevel, {
85
+ add: handleAdd,
86
+ remove: handleDel
87
+ }));
88
+ };
89
+ // name 没有改变就不需要重复render
90
+ var _default = (0, _react.memo)(List, function (nextProps, prevProps) {
91
+ if ((0, _isEqual2["default"])(nextProps.name, prevProps.name) && !!prevProps.name) {
92
+ return true;
93
+ }
94
+ return false;
95
+ });
96
+ exports["default"] = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.js","sourceRoot":"","sources":["../../../../src/tntd-form/TntdForm/components/List.tsx"],"names":[],"mappings":"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","sourcesContent":["/*\n * @Descripttion: FormList\n * @Author: 郑泳健\n * @Date: 2023-03-06 18:42:08\n * @LastEditors: 郑泳健\n * @LastEditTime: 2023-03-17 18:47:05\n */\n\nimport React, { useState, useEffect, useRef, useContext, memo } from 'react'\nimport { cloneDeep, isEqual } from 'lodash'\nimport { getNames } from '../utils'\nimport { FormContext } from '../store'\nimport type { IFormListProps, IFormContext, ILevel, TAddOrRemove, IObject } from '../interface'\n\nconst List: React.FC<IFormListProps> = ({ name, children }) => {\n const maxRef = useRef(-1)\n const { form, initialValues } = useContext<IFormContext>(FormContext)\n const [dataLevel, setDataLevel] = useState<ILevel[]>([])\n\n useEffect(() => {\n const key: string = Array.isArray(name) ? name?.[0] : name\n if (form && form.dataLevel) {\n form.dataLevel[key] = dataLevel\n }\n }, [form, dataLevel, name])\n\n /** 根据默认数值自动生成dataLevel */\n useEffect(() => {\n let dataSource = initialValues\n const attrs = getNames(name)\n\n for (const key of attrs) {\n dataSource = dataSource?.[key] || [{}]\n }\n\n if (Array.isArray(dataSource)) {\n const _level = dataSource.map((i, index) => {\n return {\n key: index,\n name: `${attrs.join('.')}.${index}`,\n }\n })\n setDataLevel(_level)\n maxRef.current = dataSource.length - 1\n }\n }, [initialValues, name])\n\n /** 新增一列 */\n const handleAdd: TAddOrRemove = (index) => {\n const tempDataLevel = cloneDeep(dataLevel)\n maxRef.current++\n const attrs = getNames(name)\n tempDataLevel.splice(index + 1, 0, {\n key: maxRef.current,\n name: `${attrs?.join('.')}.${maxRef.current}`,\n })\n setDataLevel(tempDataLevel)\n }\n\n /** 删除一列 */\n const handleDel: TAddOrRemove = (index) => {\n const temp = cloneDeep(dataLevel)\n temp.splice(index, 1)\n setDataLevel(temp)\n }\n\n return <>{children?.(dataLevel, { add: handleAdd, remove: handleDel })}</>\n}\n\n// name 没有改变就不需要重复render\nexport default memo(List, (nextProps, prevProps) => {\n if (isEqual(nextProps.name, prevProps.name) && !!prevProps.name) {\n return true\n }\n return false\n})\n"]}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import type { IForm, ITntdFormProps } from './interface';
3
+ declare const TntdForm: {
4
+ ({ form, initialValues, children }: ITntdFormProps): JSX.Element;
5
+ useForm(): IForm[];
6
+ List: React.NamedExoticComponent<import("./interface").IFormListProps>;
7
+ Item: React.NamedExoticComponent<import("./interface").IFormItem>;
8
+ };
9
+ export default TntdForm;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tntd-form/TntdForm/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA2B,MAAM,OAAO,CAAA;AAG/C,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAA8B,MAAM,aAAa,CAAA;AAIpF,QAAA,MAAM,QAAQ;wCAAuC,cAAc;;;;CAgBlE,CAAA;AA4BD,eAAe,QAAQ,CAAA"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _utils = require("./utils");
10
+ var _store = require("./store");
11
+ var _List = _interopRequireDefault(require("./components/List"));
12
+ var _Item = _interopRequireDefault(require("./components/Item"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
17
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
18
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
19
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
20
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
21
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
+ var TntdForm = function TntdForm(_ref) {
23
+ var form = _ref.form,
24
+ initialValues = _ref.initialValues,
25
+ children = _ref.children;
26
+ // 这个是为了获取当前是哪一个单元格在输入
27
+ var _useState = (0, _react.useState)([]),
28
+ _useState2 = _slicedToArray(_useState, 2),
29
+ currentChangeKeys = _useState2[0],
30
+ setCurrentChangeKeys = _useState2[1];
31
+ return _react["default"].createElement(_store.FormContext.Provider, {
32
+ value: {
33
+ form: form,
34
+ initialValues: initialValues,
35
+ currentChangeKeys: currentChangeKeys,
36
+ setCurrentChangeKeys: setCurrentChangeKeys
37
+ }
38
+ }, children);
39
+ };
40
+ TntdForm.useForm = function () {
41
+ var form = (0, _react.useRef)({
42
+ dataLevel: {},
43
+ formData: {},
44
+ validateFields: function validateFields() {
45
+ return (0, _utils.validateFields)(form.current);
46
+ },
47
+ getFieldsValue: function getFieldsValue() {
48
+ return (0, _utils.getFieldsValue)(form.current);
49
+ },
50
+ getFieldValue: function getFieldValue(field) {
51
+ return (0, _utils.getFieldValue)(form.current, field);
52
+ },
53
+ setFieldsValue: function setFieldsValue(obj) {
54
+ for (var i in obj) {
55
+ if (Object.prototype.hasOwnProperty.call(obj, i)) {
56
+ var prefix = (i === null || i === void 0 ? void 0 : i.split('.')) || [];
57
+ var attr = prefix.pop();
58
+ if (attr && form.current.formData[prefix.join('.')][attr]) {
59
+ form.current.formData[prefix.join('.')][attr].setItemValue(obj[i]);
60
+ }
61
+ }
62
+ }
63
+ }
64
+ });
65
+ return [form.current];
66
+ };
67
+ TntdForm.List = _List["default"];
68
+ TntdForm.Item = _Item["default"];
69
+ var _default = TntdForm;
70
+ exports["default"] = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tntd-form/TntdForm/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;GAMG;AACH,+CAA+C;AAC/C,mCAAuE;AACvE,mCAAqC;AAErC,6DAAoC;AACpC,6DAAoC;AAEpC,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAkB,EAAE,EAAE;IACrE,sBAAsB;IACtB,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,IAAA,gBAAQ,EAAW,EAAE,CAAC,CAAA;IAExE,OAAO,CACL,8BAAC,mBAAW,CAAC,QAAQ,IACnB,KAAK,EAAE;YACL,IAAI;YACJ,aAAa;YACb,iBAAiB;YACjB,oBAAoB;SACrB,IAEA,QAAQ,CACY,CACxB,CAAA;AACH,CAAC,CAAA;AAED,QAAQ,CAAC,OAAO,GAAG,GAAG,EAAE;IACtB,MAAM,IAAI,GAAuB,IAAA,cAAM,EAAQ;QAC7C,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,GAAG,EAAE,CAAC,IAAA,sBAAc,EAAC,IAAI,CAAC,OAAO,CAAC;QAClD,cAAc,EAAE,GAAG,EAAE,CAAC,IAAA,sBAAc,EAAC,IAAI,CAAC,OAAO,CAAC;QAClD,aAAa,EAAE,CAAC,KAAoB,EAAE,EAAE,CAAC,IAAA,qBAAa,EAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;QAC3E,cAAc,EAAE,CAAC,GAA+B,EAAE,EAAE;YAClD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;gBACnB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;oBAChD,MAAM,MAAM,GAAG,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC,GAAG,CAAC,KAAI,EAAE,CAAA;oBAClC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,CAAA;oBACzB,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;wBACzD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;qBACnE;iBACF;aACF;QACH,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACvB,CAAC,CAAA;AAED,QAAQ,CAAC,IAAI,GAAG,cAAI,CAAA;AACpB,QAAQ,CAAC,IAAI,GAAG,cAAI,CAAA;AAEpB,kBAAe,QAAQ,CAAA","sourcesContent":["/*\n * @Descripttion: 高性能动态增删form表单\n * @Author: 郑泳健\n * @Date: 2023-02-16 10:43:03\n * @LastEditors: 郑泳健\n * @LastEditTime: 2023-03-20 10:27:35\n */\nimport React, { useState, useRef } from 'react'\nimport { validateFields, getFieldsValue, getFieldValue } from './utils'\nimport { FormContext } from './store'\nimport type { IForm, ITntdFormProps, IObject, TinitialValueType } from './interface'\nimport List from './components/List'\nimport Item from './components/Item'\n\nconst TntdForm = ({ form, initialValues, children }: ITntdFormProps) => {\n // 这个是为了获取当前是哪一个单元格在输入\n const [currentChangeKeys, setCurrentChangeKeys] = useState<string[]>([])\n\n return (\n <FormContext.Provider\n value={{\n form,\n initialValues,\n currentChangeKeys,\n setCurrentChangeKeys,\n }}\n >\n {children}\n </FormContext.Provider>\n )\n}\n\nTntdForm.useForm = () => {\n const form: { current: IForm } = useRef<IForm>({\n dataLevel: {},\n formData: {},\n validateFields: () => validateFields(form.current),\n getFieldsValue: () => getFieldsValue(form.current),\n getFieldValue: (field: Array<string>) => getFieldValue(form.current, field),\n setFieldsValue: (obj: IObject<TinitialValueType>) => {\n for (const i in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, i)) {\n const prefix = i?.split('.') || []\n const attr = prefix.pop()\n if (attr && form.current.formData[prefix.join('.')][attr]) {\n form.current.formData[prefix.join('.')][attr].setItemValue(obj[i])\n }\n }\n }\n },\n })\n\n return [form.current]\n}\n\nTntdForm.List = List\nTntdForm.Item = Item\n\nexport default TntdForm\n"]}
@@ -0,0 +1,91 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * 层级
4
+ */
5
+ export interface ILevel {
6
+ key?: number;
7
+ name?: string;
8
+ }
9
+ export interface IObject<T> {
10
+ [key: string]: T;
11
+ }
12
+ export declare type TinitialValueType = null | undefined | string | number | boolean;
13
+ /**
14
+ * 每一个单元格的信息
15
+ */
16
+ export interface IFormItemData {
17
+ /** 每个formItem的值 */
18
+ value: TinitialValueType;
19
+ /** 每个formItem的错误信息 */
20
+ errorMsg: string | undefined;
21
+ /** 每个formItem的校验方法, 返回值为该formItem的错误信息,同时会在formItem下面显示错误信息 */
22
+ checkItem: () => string | undefined;
23
+ /** 给某个formItem设置值 */
24
+ setItemValue: (value: TinitialValueType, callback?: () => void) => void;
25
+ }
26
+ export interface IForm {
27
+ /** 记录每一层级的顺序 */
28
+ dataLevel: IObject<ILevel[]>;
29
+ /** 整个form的数据,{content.0: { id: IFormItemData, value: IFormItemData }} */
30
+ formData: IFormData;
31
+ /** 先校验,并将结果返回 */
32
+ validateFields: () => Promise<any>;
33
+ /** 获取form表单的数据 */
34
+ getFieldsValue: () => object;
35
+ /** 获取formItem的数据 */
36
+ getFieldValue: (field: Array<string>) => any;
37
+ /** 给某些formItem设置数据 */
38
+ setFieldsValue: (fileds: IObject<TinitialValueType>) => void;
39
+ }
40
+ /**
41
+ * TntdForm的props
42
+ */
43
+ export interface ITntdFormProps {
44
+ form: IForm;
45
+ initialValues: object;
46
+ children: React.ReactNode;
47
+ }
48
+ export interface IFormContext {
49
+ form?: IForm;
50
+ initialValues?: IObject<any>;
51
+ currentChangeKeys?: Array<string>;
52
+ setCurrentChangeKeys: React.Dispatch<React.SetStateAction<Array<string>>>;
53
+ }
54
+ /** formList的props */
55
+ export interface IFormListProps {
56
+ name: string[] | string;
57
+ children: (dataLevel: ILevel[], { add, remove }: {
58
+ add: TAddOrRemove;
59
+ remove: TAddOrRemove;
60
+ }) => void;
61
+ }
62
+ /** 增删事件 */
63
+ export declare type TAddOrRemove = (index: number) => void;
64
+ export declare type IFormItem = {
65
+ name: string[] | string;
66
+ children: React.ReactChild | React.ReactChild[];
67
+ style: React.CSSProperties;
68
+ rules: ValidationRule;
69
+ shouldUpdate: boolean;
70
+ initialValue: TinitialValueType;
71
+ dependencies?: Array<string[] | string>;
72
+ } & CustomRequired<IFormContext, 'setCurrentChangeKeys'>;
73
+ /** 将某个不可选属性变成必选 */
74
+ declare type CustomRequired<T, K extends keyof T> = {
75
+ [P in K]-?: T[P];
76
+ } & Omit<T, K>;
77
+ export interface ValidationRule {
78
+ /** validation error message */
79
+ message?: React.ReactNode;
80
+ /** indicates whether field is required */
81
+ required?: boolean;
82
+ /** custom validate function (Note: callback must be called) */
83
+ validator?: (rule: any, value: any, callback: any) => any;
84
+ }
85
+ export interface IFormData {
86
+ [name: string]: {
87
+ [attr: string]: IFormItemData;
88
+ };
89
+ }
90
+ export {};
91
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/tntd-form/TntdForm/interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/tntd-form/TntdForm/interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * 层级\n */\nexport interface ILevel {\n key?: number\n name?: string\n}\n\nexport interface IObject<T> {\n [key: string]: T\n}\n\nexport type TinitialValueType = null | undefined | string | number | boolean\n\n/**\n * 每一个单元格的信息\n */\nexport interface IFormItemData {\n /** 每个formItem的值 */\n value: TinitialValueType\n /** 每个formItem的错误信息 */\n errorMsg: string | undefined\n /** 每个formItem的校验方法, 返回值为该formItem的错误信息,同时会在formItem下面显示错误信息 */\n checkItem: () => string | undefined\n /** 给某个formItem设置值 */\n setItemValue: (value: TinitialValueType, callback?: () => void) => void\n}\n\nexport interface IForm {\n /** 记录每一层级的顺序 */\n dataLevel: IObject<ILevel[]>\n /** 整个form的数据,{content.0: { id: IFormItemData, value: IFormItemData }} */\n formData: IFormData\n /** 先校验,并将结果返回 */\n validateFields: () => Promise<any>\n /** 获取form表单的数据 */\n getFieldsValue: () => object\n /** 获取formItem的数据 */\n getFieldValue: (field: Array<string>) => any\n /** 给某些formItem设置数据 */\n setFieldsValue: (fileds: IObject<TinitialValueType>) => void\n}\n\n/**\n * TntdForm的props\n */\nexport interface ITntdFormProps {\n form: IForm\n initialValues: object\n children: React.ReactNode\n}\n\nexport interface IFormContext {\n form?: IForm\n initialValues?: IObject<any>\n currentChangeKeys?: Array<string>\n setCurrentChangeKeys: React.Dispatch<React.SetStateAction<Array<string>>>\n}\n\n/** formList的props */\nexport interface IFormListProps {\n name: string[] | string\n children: (\n dataLevel: ILevel[],\n { add, remove }: { add: TAddOrRemove; remove: TAddOrRemove }\n ) => void\n}\n\n/** 增删事件 */\nexport type TAddOrRemove = (index: number) => void\n\nexport type IFormItem = {\n name: string[] | string\n children: React.ReactChild | React.ReactChild[]\n style: React.CSSProperties\n rules: ValidationRule\n shouldUpdate: boolean\n initialValue: TinitialValueType\n dependencies?: Array<string[] | string>\n} & CustomRequired<IFormContext, 'setCurrentChangeKeys'>\n\n/** 将某个不可选属性变成必选 */\ntype CustomRequired<T, K extends keyof T> = {\n [P in K]-?: T[P]\n} & Omit<T, K>\n\nexport interface ValidationRule {\n /** validation error message */\n message?: React.ReactNode\n /** indicates whether field is required */\n required?: boolean\n /** custom validate function (Note: callback must be called) */\n validator?: (rule: any, value: any, callback: any) => any\n}\n\nexport interface IFormData {\n [name: string]: {\n [attr: string]: IFormItemData\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { IFormContext } from './interface';
3
+ export declare const FormContext: React.Context<IFormContext>;
4
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/tntd-form/TntdForm/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,eAAO,MAAM,WAAW,6BAAwD,CAAA"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FormContext = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
+ var FormContext = _react["default"].createContext({});
10
+ exports.FormContext = FormContext;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/tntd-form/TntdForm/store.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AAGZ,QAAA,WAAW,GAAG,eAAK,CAAC,aAAa,CAAe,EAAkB,CAAC,CAAA","sourcesContent":["import React from 'react'\nimport type { IFormContext } from './interface'\n\nexport const FormContext = React.createContext<IFormContext>({} as IFormContext)\n"]}
@@ -0,0 +1,48 @@
1
+ import type { TinitialValueType, ValidationRule, IForm, IObject, ILevel, IFormData } from './interface';
2
+ export declare const isValidKey: (key: string | number | symbol, object: object) => key is never;
3
+ /**
4
+ * 将xx.xx.xx 转换为数组
5
+ * @param {*} name
6
+ * @returns
7
+ */
8
+ export declare const getNames: (name: string[] | string) => string[];
9
+ /**
10
+ * 对数据进行校验
11
+ * @param {*} list
12
+ * @param {*} dataLevel
13
+ * @param {*} formData
14
+ * @returns
15
+ */
16
+ export declare const recursionCheck: (list: any, dataLevel: IObject<ILevel[]>, formData: IFormData, errorList?: string[]) => string[];
17
+ /**
18
+ * 将数据进行排序
19
+ * @param {*} list
20
+ * @param {*} dataLevel
21
+ * @param {*} formData
22
+ * @param {*} errorList
23
+ * @returns
24
+ */
25
+ export declare const recursionSort: (list: any, dataLevel: IObject<ILevel[]>, formData: IFormData) => any;
26
+ /**
27
+ * 获取form表单的value
28
+ * @param {*} formCurrent
29
+ * @returns
30
+ */
31
+ export declare const getFieldsValue: (formCurrent: IForm) => any;
32
+ /**
33
+ * 获取form表单的value
34
+ * @param {*} formCurrent
35
+ * @returns
36
+ */
37
+ export declare const getFieldValue: (formCurrent: IForm, field: string[]) => any;
38
+ /**
39
+ * 提交时候校验的方法
40
+ * @param {*} formCurrent
41
+ * @returns
42
+ */
43
+ export declare const validateFields: (formCurrent: IForm) => Promise<unknown>;
44
+ /** 获取初始化的值 */
45
+ export declare const getInitValue: (initialValues: IObject<any> | undefined, names: string[] | string) => TinitialValueType;
46
+ /** 校验表单是否正确的方法 */
47
+ export declare const handleCheckItem: (value: TinitialValueType, rules: ValidationRule) => string | undefined;
48
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tntd-form/TntdForm/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,KAAK,EACL,OAAO,EACP,MAAM,EACN,SAAS,EACV,MAAM,aAAa,CAAA;AAEpB,eAAO,MAAM,UAAU,QAChB,MAAM,GAAG,MAAM,GAAG,MAAM,UACrB,MAAM,iBAGf,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,SAAU,MAAM,EAAE,GAAG,MAAM,aAS/C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,SACnB,GAAG,aACE,QAAQ,MAAM,EAAE,CAAC,YAClB,SAAS,cACR,MAAM,EAAE,aA4BpB,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,SAAU,GAAG,aAAa,QAAQ,MAAM,EAAE,CAAC,YAAY,SAAS,QA6CzF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,gBAAiB,KAAK,QAwBhD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,gBAAiB,KAAK,SAAS,MAAM,EAAE,QAYhE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,gBAAiB,KAAK,qBAmBhD,CAAA;AAED,cAAc;AACd,eAAO,MAAM,YAAY,kBACR,QAAQ,GAAG,CAAC,GAAG,SAAS,SAChC,MAAM,EAAE,GAAG,MAAM,KACvB,iBAgBF,CAAA;AAED,kBAAkB;AAClB,eAAO,MAAM,eAAe,UAAW,iBAAiB,SAAS,cAAc,uBAuB9E,CAAA"}