@sheinx/hooks 3.6.0-beta.2 → 3.6.0-beta.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 (161) hide show
  1. package/cjs/common/use-filter/use-filter.d.ts.map +1 -1
  2. package/cjs/common/use-position-style/check-border.d.ts +6 -0
  3. package/cjs/common/use-position-style/check-border.d.ts.map +1 -0
  4. package/cjs/common/use-position-style/check-border.js +35 -0
  5. package/cjs/common/use-position-style/get-position-style.d.ts +1 -0
  6. package/cjs/common/use-position-style/get-position-style.d.ts.map +1 -1
  7. package/cjs/common/use-position-style/get-position-style.js +14 -8
  8. package/cjs/common/use-position-style/index.d.ts +1 -0
  9. package/cjs/common/use-position-style/index.d.ts.map +1 -1
  10. package/cjs/common/use-position-style/index.js +16 -7
  11. package/cjs/components/use-cascader/use-cascader.d.ts.map +1 -1
  12. package/cjs/components/use-cascader/use-cascader.type.d.ts +2 -1
  13. package/cjs/components/use-cascader/use-cascader.type.d.ts.map +1 -1
  14. package/cjs/components/use-check/use-check.d.ts +1 -1
  15. package/cjs/components/use-check/use-check.d.ts.map +1 -1
  16. package/cjs/components/use-check/use-check.js +10 -3
  17. package/cjs/components/use-form/Provider.d.ts +1 -2
  18. package/cjs/components/use-form/Provider.d.ts.map +1 -1
  19. package/cjs/components/use-form/use-form-control/use-form-control.d.ts.map +1 -1
  20. package/cjs/components/use-form/use-form-fieldset/fieldset-context.d.ts +1 -1
  21. package/cjs/components/use-form/use-form-fieldset/fieldset-context.d.ts.map +1 -1
  22. package/cjs/components/use-form/use-form-fieldset/fieldset-context.js +3 -2
  23. package/cjs/components/use-form/use-form-fieldset/index.d.ts +1 -0
  24. package/cjs/components/use-form/use-form-fieldset/index.d.ts.map +1 -1
  25. package/cjs/components/use-form/use-form-fieldset/index.js +6 -0
  26. package/cjs/components/use-form/use-form.d.ts +3 -4
  27. package/cjs/components/use-form/use-form.d.ts.map +1 -1
  28. package/cjs/components/use-form/use-form.js +63 -16
  29. package/cjs/components/use-form/use-form.type.d.ts +6 -2
  30. package/cjs/components/use-form/use-form.type.d.ts.map +1 -1
  31. package/cjs/components/use-input/use-input-format.d.ts +1 -1
  32. package/cjs/components/use-input/use-input-format.d.ts.map +1 -1
  33. package/cjs/components/use-input/use-input-format.js +12 -4
  34. package/cjs/components/use-input/use-input-number.d.ts +1 -1
  35. package/cjs/components/use-table/index.d.ts +2 -1
  36. package/cjs/components/use-table/index.d.ts.map +1 -1
  37. package/cjs/components/use-table/index.js +7 -0
  38. package/cjs/components/use-table/use-table-filter.d.ts +19 -0
  39. package/cjs/components/use-table/use-table-filter.d.ts.map +1 -0
  40. package/cjs/components/use-table/use-table-filter.js +95 -0
  41. package/cjs/components/use-table/use-table-sort.d.ts +5 -0
  42. package/cjs/components/use-table/use-table-sort.d.ts.map +1 -1
  43. package/cjs/components/use-table/use-table-sort.js +5 -1
  44. package/cjs/components/use-table/use-table-tree.d.ts +13 -0
  45. package/cjs/components/use-table/use-table-tree.d.ts.map +1 -1
  46. package/cjs/components/use-table/use-table-tree.js +68 -1
  47. package/cjs/components/use-table/use-table-virtual.d.ts.map +1 -1
  48. package/cjs/components/use-table/use-table-virtual.js +6 -4
  49. package/cjs/components/use-table/use-table.type.d.ts +93 -0
  50. package/cjs/components/use-table/use-table.type.d.ts.map +1 -1
  51. package/cjs/components/use-tabs/context.d.ts +1 -1
  52. package/cjs/components/use-tabs/context.d.ts.map +1 -1
  53. package/cjs/components/use-tabs/use-tabs.d.ts +1 -1
  54. package/cjs/components/use-tree/index.d.ts +3 -2
  55. package/cjs/components/use-tree/index.d.ts.map +1 -1
  56. package/cjs/components/use-tree/index.js +18 -2
  57. package/cjs/components/use-tree/use-tree-node.d.ts.map +1 -1
  58. package/cjs/components/use-tree/use-tree-node.js +1 -5
  59. package/cjs/components/use-tree/use-tree-node.type.d.ts +18 -0
  60. package/cjs/components/use-tree/use-tree-node.type.d.ts.map +1 -1
  61. package/cjs/components/use-tree/use-tree-virtual-node.d.ts +13 -0
  62. package/cjs/components/use-tree/use-tree-virtual-node.d.ts.map +1 -0
  63. package/cjs/components/use-tree/use-tree-virtual-node.js +92 -0
  64. package/cjs/components/use-tree/use-tree.d.ts.map +1 -1
  65. package/cjs/components/use-tree/use-tree.js +213 -6
  66. package/cjs/components/use-tree/use-tree.type.d.ts +35 -1
  67. package/cjs/components/use-tree/use-tree.type.d.ts.map +1 -1
  68. package/cjs/components/use-treeselect/use-tiled.d.ts +1 -1
  69. package/cjs/utils/dom/element.d.ts +1 -1
  70. package/cjs/utils/dom/element.d.ts.map +1 -1
  71. package/cjs/utils/dom/element.js +5 -3
  72. package/cjs/utils/is.d.ts +2 -0
  73. package/cjs/utils/is.d.ts.map +1 -1
  74. package/cjs/utils/is.js +5 -2
  75. package/cjs/utils/lazyload.d.ts.map +1 -1
  76. package/cjs/utils/lazyload.js +2 -2
  77. package/cjs/utils/object.d.ts +12 -0
  78. package/cjs/utils/object.d.ts.map +1 -1
  79. package/cjs/utils/object.js +34 -1
  80. package/cjs/utils/warning.js +5 -5
  81. package/esm/common/use-filter/use-filter.d.ts.map +1 -1
  82. package/esm/common/use-position-style/check-border.d.ts +6 -0
  83. package/esm/common/use-position-style/check-border.d.ts.map +1 -0
  84. package/esm/common/use-position-style/check-border.js +29 -0
  85. package/esm/common/use-position-style/get-position-style.d.ts +1 -0
  86. package/esm/common/use-position-style/get-position-style.d.ts.map +1 -1
  87. package/esm/common/use-position-style/get-position-style.js +14 -8
  88. package/esm/common/use-position-style/index.d.ts +1 -0
  89. package/esm/common/use-position-style/index.d.ts.map +1 -1
  90. package/esm/common/use-position-style/index.js +16 -7
  91. package/esm/components/use-cascader/use-cascader.d.ts.map +1 -1
  92. package/esm/components/use-cascader/use-cascader.type.d.ts +2 -1
  93. package/esm/components/use-cascader/use-cascader.type.d.ts.map +1 -1
  94. package/esm/components/use-check/use-check.d.ts +1 -1
  95. package/esm/components/use-check/use-check.d.ts.map +1 -1
  96. package/esm/components/use-check/use-check.js +10 -3
  97. package/esm/components/use-form/Provider.d.ts +1 -2
  98. package/esm/components/use-form/Provider.d.ts.map +1 -1
  99. package/esm/components/use-form/use-form-control/use-form-control.d.ts.map +1 -1
  100. package/esm/components/use-form/use-form-fieldset/fieldset-context.d.ts +1 -1
  101. package/esm/components/use-form/use-form-fieldset/fieldset-context.d.ts.map +1 -1
  102. package/esm/components/use-form/use-form-fieldset/fieldset-context.js +2 -1
  103. package/esm/components/use-form/use-form-fieldset/index.d.ts +1 -0
  104. package/esm/components/use-form/use-form-fieldset/index.d.ts.map +1 -1
  105. package/esm/components/use-form/use-form-fieldset/index.js +2 -1
  106. package/esm/components/use-form/use-form.d.ts +3 -4
  107. package/esm/components/use-form/use-form.d.ts.map +1 -1
  108. package/esm/components/use-form/use-form.js +64 -17
  109. package/esm/components/use-form/use-form.type.d.ts +6 -2
  110. package/esm/components/use-form/use-form.type.d.ts.map +1 -1
  111. package/esm/components/use-input/use-input-format.d.ts +1 -1
  112. package/esm/components/use-input/use-input-format.d.ts.map +1 -1
  113. package/esm/components/use-input/use-input-format.js +12 -4
  114. package/esm/components/use-input/use-input-number.d.ts +1 -1
  115. package/esm/components/use-table/index.d.ts +2 -1
  116. package/esm/components/use-table/index.d.ts.map +1 -1
  117. package/esm/components/use-table/index.js +1 -0
  118. package/esm/components/use-table/use-table-filter.d.ts +19 -0
  119. package/esm/components/use-table/use-table-filter.d.ts.map +1 -0
  120. package/esm/components/use-table/use-table-filter.js +88 -0
  121. package/esm/components/use-table/use-table-sort.d.ts +5 -0
  122. package/esm/components/use-table/use-table-sort.d.ts.map +1 -1
  123. package/esm/components/use-table/use-table-sort.js +5 -1
  124. package/esm/components/use-table/use-table-tree.d.ts +13 -0
  125. package/esm/components/use-table/use-table-tree.d.ts.map +1 -1
  126. package/esm/components/use-table/use-table-tree.js +67 -0
  127. package/esm/components/use-table/use-table-virtual.d.ts.map +1 -1
  128. package/esm/components/use-table/use-table-virtual.js +6 -4
  129. package/esm/components/use-table/use-table.type.d.ts +93 -0
  130. package/esm/components/use-table/use-table.type.d.ts.map +1 -1
  131. package/esm/components/use-tabs/context.d.ts +1 -1
  132. package/esm/components/use-tabs/context.d.ts.map +1 -1
  133. package/esm/components/use-tabs/use-tabs.d.ts +1 -1
  134. package/esm/components/use-tree/index.d.ts +3 -2
  135. package/esm/components/use-tree/index.d.ts.map +1 -1
  136. package/esm/components/use-tree/index.js +3 -2
  137. package/esm/components/use-tree/use-tree-node.d.ts.map +1 -1
  138. package/esm/components/use-tree/use-tree-node.js +1 -5
  139. package/esm/components/use-tree/use-tree-node.type.d.ts +18 -0
  140. package/esm/components/use-tree/use-tree-node.type.d.ts.map +1 -1
  141. package/esm/components/use-tree/use-tree-virtual-node.d.ts +13 -0
  142. package/esm/components/use-tree/use-tree-virtual-node.d.ts.map +1 -0
  143. package/esm/components/use-tree/use-tree-virtual-node.js +85 -0
  144. package/esm/components/use-tree/use-tree.d.ts.map +1 -1
  145. package/esm/components/use-tree/use-tree.js +215 -8
  146. package/esm/components/use-tree/use-tree.type.d.ts +35 -1
  147. package/esm/components/use-tree/use-tree.type.d.ts.map +1 -1
  148. package/esm/components/use-treeselect/use-tiled.d.ts +1 -1
  149. package/esm/utils/dom/element.d.ts +1 -1
  150. package/esm/utils/dom/element.d.ts.map +1 -1
  151. package/esm/utils/dom/element.js +4 -2
  152. package/esm/utils/is.d.ts +2 -0
  153. package/esm/utils/is.d.ts.map +1 -1
  154. package/esm/utils/is.js +4 -1
  155. package/esm/utils/lazyload.d.ts.map +1 -1
  156. package/esm/utils/lazyload.js +3 -3
  157. package/esm/utils/object.d.ts +12 -0
  158. package/esm/utils/object.d.ts.map +1 -1
  159. package/esm/utils/object.js +34 -1
  160. package/esm/utils/warning.js +5 -5
  161. package/package.json +1 -1
@@ -1,3 +1,4 @@
1
1
  "use client";
2
2
  export { default as useFormFieldSet, default } from "./use-form-fieldset";
3
- export { useFieldSetConsumer } from "./fieldset-context";
3
+ export { useFieldSetConsumer } from "./fieldset-context";
4
+ export { FieldsetContext } from "./fieldset-context";
@@ -1,9 +1,8 @@
1
- /// <reference types="react" />
2
1
  import { ProviderProps, UseFormProps, UseFormSlotProps, ValidateFnConfig } from './use-form.type';
3
2
  import { ObjectType } from '../../common/type';
4
3
  declare const useForm: <T extends ObjectType>(props: UseFormProps<T>) => {
5
4
  getFormProps: <TOther extends ObjectType = ObjectType>(externalProps?: TOther) => UseFormSlotProps<TOther>;
6
- Provider: (props: ProviderProps) => JSX.Element;
5
+ Provider: (props: ProviderProps) => import("react/jsx-runtime").JSX.Element;
7
6
  ProviderProps: {
8
7
  formValue: import("./use-form.type").FormContextValueType;
9
8
  formConfig: import("./use-form.type").FormCommonConfig;
@@ -21,7 +20,7 @@ declare const useForm: <T extends ObjectType>(props: UseFormProps<T>) => {
21
20
  getErrors: () => ObjectType<Error | undefined>;
22
21
  clearValidate: (names?: string[]) => void;
23
22
  validateFields: (fields?: string | string[], config?: ValidateFnConfig) => Promise<T>;
24
- validateFieldset: (name: string) => void;
23
+ validateFieldset: (name: string, config?: ValidateFnConfig) => void;
25
24
  insertError: (name: string, index: number, error?: Error) => void;
26
25
  spliceError: (name: string, index: number) => void;
27
26
  scrollToField: (name: string, scrollIntoViewOptions?: ScrollIntoViewOptions) => void;
@@ -41,7 +40,7 @@ declare const useForm: <T extends ObjectType>(props: UseFormProps<T>) => {
41
40
  getErrors: () => ObjectType<Error | undefined>;
42
41
  clearValidate: (names?: string[]) => void;
43
42
  validateFields: (fields?: string | string[], config?: ValidateFnConfig) => Promise<T>;
44
- validateFieldset: (name: string) => void;
43
+ validateFieldset: (name: string, config?: ValidateFnConfig) => void;
45
44
  insertError: (name: string, index: number, error?: Error) => void;
46
45
  spliceError: (name: string, index: number) => void;
47
46
  scrollToField: (name: string, scrollIntoViewOptions?: ScrollIntoViewOptions) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AA8BA,OAAO,EAEL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAGhB,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;wBAsPC;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;aAAE;8BAnId,MAAM;oCAsMD,OAAO;;6BAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCAjKxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;qCAmOvB,MAAM;gCA/CE,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;kCAzHpD,MAAM,0BAAyB,qBAAqB;;;;;;oBA2DjD;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE;0BAnId,MAAM;gCAsMD,OAAO;;yBAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCAjKxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;iCAmOvB,MAAM;4BA/CE,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;8BAzHpD,MAAM,0BAAyB,qBAAqB;;CAqY9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":"AA+BA,OAAO,EAEL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAGhB,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;wBAyRC;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;aAAE;8BA9Jd,MAAM;oCAiOD,OAAO;;6BAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCA5LxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;qCA8PvB,MAAM,WAAW,gBAAgB;gCA/CzB,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;kCAnIpD,MAAM,0BAAyB,qBAAqB;;;;;;oBAqEjD;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE;0BA9Jd,MAAM;gCAiOD,OAAO;;yBAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCA5LxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;iCA8PvB,MAAM,WAAW,gBAAgB;4BA/CzB,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;8BAnIpD,MAAM,0BAAyB,qBAAqB;;CAma9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -16,7 +16,7 @@ import { insertValue, spliceValue } from "../../utils/flat";
16
16
  import { usePrevious } from "../../common/use-default-value";
17
17
  var globalKey = '__global__&&@@';
18
18
  import { current, produce } from "../../utils/immer";
19
- import { deepGet, deepRemove, deepSet, docScroll, extractEventHandlers, isArray, isObject, shallowEqual, wrapFormError, deepClone, getAllKeyPaths, devUseWarning, getFieldId, getClosestScrollContainer } from "../../utils";
19
+ import { deepGet, deepRemove, deepSet, docScroll, extractEventHandlers, isArray, isObject, shallowEqual, wrapFormError, deepClone, getAllKeyPaths, getCompleteFieldKeys, devUseWarning, getFieldId, getClosestScrollContainer } from "../../utils";
20
20
  var emptyObj = {};
21
21
  var useForm = function useForm(props) {
22
22
  var _props$defaultValue = props.defaultValue,
@@ -44,10 +44,10 @@ var useForm = function useForm(props) {
44
44
  forceSet: true
45
45
  };
46
46
  var preValue = usePrevious(props.value);
47
- var formDomRef = React.useRef();
48
47
  var _React$useRef = React.useRef({
49
48
  defaultValues: {},
50
49
  validateMap: {},
50
+ ignoreValidateFields: [],
51
51
  updateMap: {},
52
52
  flowMap: {},
53
53
  removeArr: new Set(),
@@ -80,10 +80,21 @@ var useForm = function useForm(props) {
80
80
  } else {
81
81
  var names = isArray(name) ? name : [name];
82
82
  names.forEach(function (key) {
83
- var _context$updateMap$ke2, _context$flowMap$key;
84
- (_context$updateMap$ke2 = context.updateMap[key]) === null || _context$updateMap$ke2 === void 0 || _context$updateMap$ke2.forEach(function (update) {
85
- update(context.value, context.errors, context.serverErrors);
86
- });
83
+ var _context$flowMap$key;
84
+ // 外部直接设置user.name这种格式的,但是又没有显性的声明user.name绑定的表单元素;
85
+ // 这里需要手动触发,否则会导致Input输入过程中光标跳到末尾的异常
86
+ if (!context.updateMap[key]) {
87
+ var _context$updateMap$pa;
88
+ var parentKey = key.split('.')[0];
89
+ (_context$updateMap$pa = context.updateMap[parentKey]) === null || _context$updateMap$pa === void 0 || _context$updateMap$pa.forEach(function (update) {
90
+ update(context.value, context.errors, context.serverErrors);
91
+ });
92
+ } else {
93
+ var _context$updateMap$ke2;
94
+ (_context$updateMap$ke2 = context.updateMap[key]) === null || _context$updateMap$ke2 === void 0 || _context$updateMap$ke2.forEach(function (update) {
95
+ update(context.value, context.errors, context.serverErrors);
96
+ });
97
+ }
87
98
  (_context$flowMap$key = context.flowMap[key]) === null || _context$flowMap$key === void 0 || _context$flowMap$key.forEach(function (update) {
88
99
  update();
89
100
  });
@@ -106,9 +117,9 @@ var useForm = function useForm(props) {
106
117
  onError === null || onError === void 0 || onError(err);
107
118
  if (!props.scrollToError) return;
108
119
  setTimeout(function () {
109
- var _formDomRef$current;
120
+ var _props$formElRef$curr;
110
121
  var selector = "[".concat(getDataAttributeName('status'), "=\"error\"]");
111
- var el = (_formDomRef$current = formDomRef.current) === null || _formDomRef$current === void 0 ? void 0 : _formDomRef$current.querySelector(selector);
122
+ var el = (_props$formElRef$curr = props.formElRef.current) === null || _props$formElRef$curr === void 0 ? void 0 : _props$formElRef$curr.querySelector(selector);
112
123
  if (el) {
113
124
  el.scrollIntoView();
114
125
  var focusableSelectors = 'textarea, input,[tabindex]:not([tabindex="-1"])';
@@ -140,11 +151,28 @@ var useForm = function useForm(props) {
140
151
  var validateFields = usePersistFn(function (fields) {
141
152
  var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
142
153
  return new Promise(function (resolve, reject) {
143
- var finalFields = fields ? (isArray(fields) ? fields : [fields]).filter(function (key) {
144
- return context.validateMap[key];
145
- }) : Object.keys(context.validateMap);
154
+ var finalFields = Object.keys(context.validateMap);
155
+ if (fields) {
156
+ if (config.ignoreChildren || config.ignoreBind) {
157
+ // 旧行为:仅校验当前字段
158
+ finalFields = (isArray(fields) ? fields : [fields]).filter(function (key) {
159
+ return context.validateMap[key];
160
+ });
161
+ } else {
162
+ // 新行为:校验当前字段及其所有子字段
163
+ // 假设进去的是['user'],那么最终的finalFields是['user', 'user.name', 'user.age']
164
+ // 假设进去的是['users'],那么最终的finalFields是['users', 'users[0].name', 'users[0].age', 'users[1].name', 'users[1].age']
165
+ finalFields = getCompleteFieldKeys(fields, finalFields);
166
+ }
167
+ }
168
+ if (context.ignoreValidateFields.length > 0) {
169
+ finalFields = finalFields.filter(function (key) {
170
+ return !context.ignoreValidateFields.includes(key);
171
+ });
172
+ }
146
173
  var validates = finalFields.map(function (key) {
147
174
  var validateField = context.validateMap[key];
175
+ if (!validateField) return [];
148
176
  return Array.from(validateField).map(function (validate) {
149
177
  return validate(key, deepGet(context.value, key), context.value, config);
150
178
  });
@@ -215,10 +243,20 @@ var useForm = function useForm(props) {
215
243
  var isVisibleX = elementRect.left >= parentRect.left && elementRect.right <= parentRect.right;
216
244
  if (!isVisibleY || !isVisibleX) {
217
245
  // 计算元素相对于父元素的偏移量
218
- var offsetTop = element.offsetTop - parentEl.offsetTop;
219
- var offsetLeft = element.offsetLeft - parentEl.offsetLeft;
220
- parentEl.scrollTop = offsetTop;
221
- parentEl.scrollLeft = offsetLeft;
246
+ var offsetTop = elementRect.top - parentRect.top;
247
+ var offsetLeft = elementRect.left - parentRect.left;
248
+ // 如果是往上滚动,那么只有当元素的偏移量小于0时才需要滚动
249
+ if (offsetTop < 0) {
250
+ parentEl.scrollTop = Math.max(parentEl.scrollTop + offsetTop, 0);
251
+ } else {
252
+ parentEl.scrollTop = Math.min(parentEl.scrollTop + offsetTop, parentEl.scrollHeight - parentEl.clientHeight);
253
+ }
254
+ // 如果是往左滚动,那么只有当元素的偏移量小于0时才需要滚动
255
+ if (offsetLeft < 0) {
256
+ parentEl.scrollLeft = Math.max(parentEl.scrollLeft + offsetLeft, 0);
257
+ } else {
258
+ parentEl.scrollLeft = Math.min(parentEl.scrollLeft + offsetLeft, parentEl.scrollWidth - parentEl.clientWidth);
259
+ }
222
260
  }
223
261
  } else {
224
262
  // 如果没有找到可滚动的父元素,使用默认行为
@@ -377,7 +415,7 @@ var useForm = function useForm(props) {
377
415
  }, 10);
378
416
  };
379
417
  };
380
- var validateFieldset = function validateFieldset(name) {
418
+ var validateFieldset = function validateFieldset(name, config) {
381
419
  var na = "".concat(name, "[");
382
420
  var no = "".concat(name, ".");
383
421
  var fields = [];
@@ -386,6 +424,15 @@ var useForm = function useForm(props) {
386
424
  fields.push(key);
387
425
  }
388
426
  });
427
+
428
+ // 用户声明了跳过校验子字段
429
+ if (config !== null && config !== void 0 && config.ignoreChildren) {
430
+ var parentName = name.split('[')[0];
431
+ context.ignoreValidateFields = getCompleteFieldKeys(parentName, Array.from(context.names));
432
+ setTimeout(function () {
433
+ context.ignoreValidateFields = [];
434
+ });
435
+ }
389
436
  validateFields(fields).catch(function () {});
390
437
  };
391
438
  var getDefaultValue = function getDefaultValue() {
@@ -413,7 +460,6 @@ var useForm = function useForm(props) {
413
460
  var externalProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
414
461
  var externalEventHandlers = extractEventHandlers(externalProps);
415
462
  return _objectSpread(_objectSpread(_objectSpread({}, externalProps), externalEventHandlers), {}, {
416
- ref: formDomRef,
417
463
  disabled: !!disabled,
418
464
  onSubmit: handleSubmit(externalEventHandlers),
419
465
  onReset: handleReset(externalEventHandlers)
@@ -459,6 +505,7 @@ var useForm = function useForm(props) {
459
505
  }
460
506
  if (validateFieldSet.size === 0 && updateFieldSet.size === 0) {
461
507
  context.names.delete(n);
508
+ delete context.errors[n];
462
509
  delete context.defaultValues[n];
463
510
  }
464
511
  var finalReserveAble = (_props$reserveAble = props.reserveAble) !== null && _props$reserveAble !== void 0 ? _props$reserveAble : reserveAble;
@@ -14,6 +14,7 @@ export interface ValidationError<T> {
14
14
  export type ValidateFnConfig = {
15
15
  type?: 'forcePass' | 'withValue';
16
16
  ignoreBind?: boolean;
17
+ ignoreChildren?: boolean;
17
18
  };
18
19
  export type ValidateFn = (name: string, value: any, formData: ObjectType, config?: ValidateFnConfig) => Promise<true | FormError>;
19
20
  export type UpdateFn = (formValue: ObjectType, errors: ObjectType<Error | undefined>, serverErrors: ObjectType<Error | undefined>) => void;
@@ -112,7 +113,7 @@ export interface FormFunc<T = any> {
112
113
  getErrors: () => ObjectType<Error | undefined>;
113
114
  clearValidate: (names?: string[]) => void;
114
115
  validateFields: (fields?: string | string[], config?: ValidateFnConfig) => Promise<Partial<T>>;
115
- validateFieldset: (name: string) => void;
116
+ validateFieldset: (name: string, config?: ValidateFnConfig) => void;
116
117
  insertError: (name: string, index: number, error?: Error) => void;
117
118
  spliceError: (name: string, index: number) => void;
118
119
  }
@@ -184,7 +185,9 @@ export interface BaseFormProps<T> extends Omit<FormCommonConfig, 'formName'> {
184
185
  */
185
186
  name?: string;
186
187
  }
187
- export type UseFormProps<T> = BaseFormProps<T>;
188
+ export type UseFormProps<T> = BaseFormProps<T> & {
189
+ formElRef: React.RefObject<HTMLFormElement>;
190
+ };
188
191
  export type FormContext = {
189
192
  defaultValues: ObjectType;
190
193
  validateMap: ObjectType<Set<(name: string, v: any, formValue: ObjectType, config?: {
@@ -204,6 +207,7 @@ export type FormContext = {
204
207
  serverErrors: ObjectType<Error | undefined>;
205
208
  unmounted: boolean;
206
209
  removeLock: boolean;
210
+ ignoreValidateFields: string[];
207
211
  };
208
212
  export type UseFormSlotOwnProps = {
209
213
  onSubmit: any;
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.type.d.ts","sourceRoot":"","sources":["use-form.type.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE/C,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC;IACV,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,EAAE,CAAC;CACL;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,CACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,gBAAgB,KACtB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;AAE9B,MAAM,MAAM,QAAQ,GAAG,CACrB,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,EACrC,YAAY,EAAE,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,KACxC,IAAI,CAAA;AAET,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAC,UAAU,EAAE,MAAM,CAAC,EAAC,QAAQ,KAAM,IAAI,CAAC;QAC5F,IAAI,EAAE,CACJ,CAAC,EAAE,MAAM,EACT,EAAE,EAAE,GAAG,EACP,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,QAAQ,KACb,IAAI,CAAC;QACV,YAAY,EAAE,CAAC,SAAS,EACtB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,KAC/B,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;QACjE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;KACpE,CAAC;IACF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,EAAE,oBAAoB,CAAC;IAChC,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IACtC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;IACjD;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,SAAS,CAAA;CAClC;AACD,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IAErC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,GAAG;IAC/B,QAAQ,EAAE,CACR,IAAI,EAAE;QACJ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,EACD,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,KACE,IAAI,CAAC;IACV,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC;IACjC,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC;IACvD,SAAS,EAAE,MAAM,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IAC/C,aAAa,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/F,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAClE,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAED,UAAU,cAAc,CAAC,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC;IAC1E,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IACxC;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IACnC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,EAAE,UAAU,CAAC;IAC1B,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAE5I,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IACtC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC;IAElC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IAEjB,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAEhJ,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACrC,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IACtC,YAAY,EAAE,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IAC5C,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,UAAU,CACzE,mBAAmB,EACnB,MAAM,CACP,CAAC"}
1
+ {"version":3,"file":"use-form.type.d.ts","sourceRoot":"","sources":["use-form.type.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ declare const useInputFormat: (props: InputFormatProps) => {
5
5
  onBlur: (e: React.FocusEvent) => void;
6
6
  onFocus: (e: React.FocusEvent) => void;
7
7
  value: string | undefined;
8
- type: "search" | "color" | "button" | "time" | "image" | "text" | "reset" | "submit" | "email" | "url" | "range" | "tel" | (string & {}) | "hidden" | "checkbox" | "radio" | "date" | "datetime-local" | "file" | "month" | "password" | "week" | undefined;
8
+ type: "search" | (string & {}) | "color" | "button" | "time" | "reset" | "submit" | "email" | "url" | "range" | "tel" | "hidden" | "checkbox" | "radio" | "text" | "date" | "datetime-local" | "file" | "image" | "month" | "password" | "week" | undefined;
9
9
  };
10
10
  export default useInputFormat;
11
11
  //# sourceMappingURL=use-input-format.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-input-format.d.ts","sourceRoot":"","sources":["use-input-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAM3D,QAAA,MAAM,cAAc,UAAW,gBAAgB;kBAsBP,MAAM,GAAG,SAAS;gBA4BpB,gBAAgB;iBAgDd,gBAAgB;;;CAwBvD,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"use-input-format.d.ts","sourceRoot":"","sources":["use-input-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAM3D,QAAA,MAAM,cAAc,UAAW,gBAAgB;kBAsBP,MAAM,GAAG,SAAS;gBAoCpB,gBAAgB;iBAgDd,gBAAgB;;;CAyBvD,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -21,7 +21,7 @@ var useInputFormat = function useInputFormat(props) {
21
21
  autoFix = props.autoFix,
22
22
  coin = props.coin,
23
23
  cancelBlurChange = props.cancelBlurChange;
24
- var _React$useState = React.useState(false),
24
+ var _React$useState = React.useState(coin),
25
25
  _React$useState2 = _slicedToArray(_React$useState, 2),
26
26
  showCoin = _React$useState2[0],
27
27
  setShowCoin = _React$useState2[1];
@@ -48,6 +48,13 @@ var useInputFormat = function useInputFormat(props) {
48
48
  var noNeg = numType === 'non-negative' || numType === 'positive';
49
49
  var regExp = new RegExp("^(".concat(noNeg ? '' : '-', ")?(\\d").concat(regLength(integerLimit), ")(").concat(digits !== 0 ? "\\.\\d".concat(regLength(digits)) : '', ")?.*$"), 'g');
50
50
  value = value.replace(regExp, '$1$2$3');
51
+
52
+ // 修正小数位数
53
+ var _value = v.split('.');
54
+ var __value = value.split('.');
55
+ if (_value[1] !== undefined && __value[1] === undefined && digits !== 0) {
56
+ value = "".concat(value, ".").concat(_value[1]);
57
+ }
51
58
  }
52
59
  onChange(value);
53
60
  });
@@ -105,14 +112,15 @@ var useInputFormat = function useInputFormat(props) {
105
112
  });
106
113
  function getValue(str) {
107
114
  if (type === 'number' && coin) {
108
- if (showCoin && str) {
109
- return "".concat(str).replace(/\d+/, function (n) {
115
+ var _str = str;
116
+ if (showCoin && _str) {
117
+ return "".concat(_str).replace(/\d+/, function (n) {
110
118
  return n.replace(/(\d)(?=(\d{3})+$)/g, function ($1) {
111
119
  return "".concat($1, ",");
112
120
  });
113
121
  });
114
122
  }
115
- return "".concat(str || '').replace(/,/g, '');
123
+ return "".concat(_str === 0 ? _str : _str || '').replace(/,/g, '');
116
124
  }
117
125
  return str;
118
126
  }
@@ -7,7 +7,7 @@ declare const useNumberFormat: (props: InputNumberProps) => {
7
7
  onBlur: (e: React.FocusEvent<Element, Element>) => void;
8
8
  onFocus: (e: React.FocusEvent<Element, Element>) => void;
9
9
  value: string | undefined;
10
- type: "search" | "color" | "button" | "time" | "image" | "text" | "reset" | "submit" | "email" | "url" | "range" | "tel" | (string & {}) | "hidden" | "checkbox" | "radio" | "date" | "datetime-local" | "file" | "month" | "password" | "week" | undefined;
10
+ type: "search" | (string & {}) | "color" | "button" | "time" | "reset" | "submit" | "email" | "url" | "range" | "tel" | "hidden" | "checkbox" | "radio" | "text" | "date" | "datetime-local" | "file" | "image" | "month" | "password" | "week" | undefined;
11
11
  };
12
12
  export default useNumberFormat;
13
13
  //# sourceMappingURL=use-input-number.d.ts.map
@@ -2,9 +2,10 @@ export { default, default as useTableLayout } from './use-table-layout';
2
2
  export { default as useTableColumns } from './use-table-columns';
3
3
  export { default as useTableGroup } from './use-table-group';
4
4
  export { default as useTableSort } from './use-table-sort';
5
+ export { default as useTableFilter } from './use-table-filter';
5
6
  export { default as useTableRow } from './use-table-row';
6
7
  export { default as useTableExpand } from './use-table-expand';
7
8
  export { default as useTableTree } from './use-table-tree';
8
9
  export { default as useTableVirtual } from './use-table-virtual';
9
- export type { TableFormatColumn, TableColumnItem, TableHeadColumn, TableGroupColumn, TableSorterInfo, BaseTableProps, } from './use-table.type';
10
+ export type { TableFormatColumn, TableColumnItem, TableHeadColumn, TableGroupColumn, TableSorterInfo, BaseTableProps, TableColumnFilter, TableFilterData, } from './use-table.type';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEjE,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEjE,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
@@ -3,6 +3,7 @@ export { default, default as useTableLayout } from "./use-table-layout";
3
3
  export { default as useTableColumns } from "./use-table-columns";
4
4
  export { default as useTableGroup } from "./use-table-group";
5
5
  export { default as useTableSort } from "./use-table-sort";
6
+ export { default as useTableFilter } from "./use-table-filter";
6
7
  export { default as useTableRow } from "./use-table-row";
7
8
  export { default as useTableExpand } from "./use-table-expand";
8
9
  export { default as useTableTree } from "./use-table-tree";
@@ -0,0 +1,19 @@
1
+ /// <reference types="react" />
2
+ import { TableColumnItem, BaseTableProps } from './use-table.type';
3
+ import { KeygenResult } from '../../common/type';
4
+ export interface UseTableSorterProps<Item = any> extends Pick<BaseTableProps<Item>, 'onSortCancel' | 'sorter' | 'data'> {
5
+ columns?: TableColumnItem<Item>[];
6
+ }
7
+ export interface FilterInfo<T> {
8
+ value?: any;
9
+ onFilter?: (value: any, row: T) => boolean;
10
+ }
11
+ export type FilterMap<T> = Map<KeygenResult, FilterInfo<T>>;
12
+ declare const useTableFilter: <Item = any>(props: UseTableSorterProps<Item>) => {
13
+ filterInfo: FilterMap<Item>;
14
+ setFilterInfo: import("react").Dispatch<import("react").SetStateAction<FilterMap<Item>>>;
15
+ filteredData: Item[] | undefined;
16
+ onFilterChange: (columnKey: KeygenResult, value: any) => void;
17
+ };
18
+ export default useTableFilter;
19
+ //# sourceMappingURL=use-table-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-table-filter.d.ts","sourceRoot":"","sources":["use-table-filter.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,mBAAmB,CAAC,IAAI,GAAG,GAAG,CAC7C,SAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtE,OAAO,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;CACnC;AACD,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,CAAC,EAAE,GAAG,CAAA;IACX,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;CAC5C;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,QAAA,MAAM,cAAc;;;;gCA6BH,YAAY,SAAS,GAAG;CAmDxC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,88 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ 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; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
+ 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."); }
9
+ 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); }
10
+ 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; }
11
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
12
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
+ import { useState, useMemo, useEffect } from 'react';
14
+ import usePersistFn from "../../common/use-persist-fn";
15
+ import { isFunc } from "../../utils/is";
16
+ var useTableFilter = function useTableFilter(props) {
17
+ var _useState = useState(new Map()),
18
+ _useState2 = _slicedToArray(_useState, 2),
19
+ filterInfo = _useState2[0],
20
+ setFilterInfo = _useState2[1];
21
+ var activeFilters = useMemo(function () {
22
+ return Array.from(filterInfo.keys()).filter(function (key) {
23
+ var _filterInfo$get;
24
+ return ((_filterInfo$get = filterInfo.get(key)) === null || _filterInfo$get === void 0 ? void 0 : _filterInfo$get.value) !== undefined;
25
+ });
26
+ }, [filterInfo]);
27
+ var filteredData = useMemo(function () {
28
+ var _props$data;
29
+ if (activeFilters.length === 0) return props.data;
30
+ return (_props$data = props.data) === null || _props$data === void 0 ? void 0 : _props$data.filter(function (item) {
31
+ return activeFilters.every(function (key) {
32
+ var filter = filterInfo.get(key);
33
+ if ((filter === null || filter === void 0 ? void 0 : filter.value) === undefined) return true;
34
+ if (Array.isArray(filter.value) && filter.value.length === 0) return true;
35
+ if (filter !== null && filter !== void 0 && filter.onFilter && isFunc(filter.onFilter)) {
36
+ return filter.onFilter(filter.value, item);
37
+ }
38
+ return true;
39
+ });
40
+ });
41
+ }, [activeFilters, props.data]);
42
+ var onFilterChange = usePersistFn(function (columnKey, value) {
43
+ if (columnKey === '__reset__') {
44
+ setFilterInfo(function (prev) {
45
+ var next = new Map(prev);
46
+ next.forEach(function (v, k) {
47
+ next.set(k, _objectSpread(_objectSpread({}, v), {}, {
48
+ value: undefined
49
+ }));
50
+ });
51
+ return next;
52
+ });
53
+ } else {
54
+ setFilterInfo(function (prev) {
55
+ var _prev$get;
56
+ var next = new Map(prev);
57
+ next.set(columnKey, {
58
+ value: value,
59
+ onFilter: (_prev$get = prev.get(columnKey)) === null || _prev$get === void 0 ? void 0 : _prev$get.onFilter
60
+ });
61
+ return next;
62
+ });
63
+ }
64
+ });
65
+
66
+ // 根据columns生成filterInfo
67
+ useEffect(function () {
68
+ var _props$columns;
69
+ var _filterInfo = props === null || props === void 0 || (_props$columns = props.columns) === null || _props$columns === void 0 ? void 0 : _props$columns.reduce(function (acc, column, index) {
70
+ var _column$filter;
71
+ if (!column.filter) return acc;
72
+ var columnKey = typeof column.render === 'string' ? column.render : String(index);
73
+ acc.set(columnKey, {
74
+ value: undefined,
75
+ onFilter: (_column$filter = column.filter) === null || _column$filter === void 0 ? void 0 : _column$filter.onFilter
76
+ });
77
+ return acc;
78
+ }, new Map());
79
+ if (_filterInfo) setFilterInfo(_filterInfo);
80
+ }, [props.columns]);
81
+ return {
82
+ filterInfo: filterInfo,
83
+ setFilterInfo: setFilterInfo,
84
+ filteredData: filteredData,
85
+ onFilterChange: onFilterChange
86
+ };
87
+ };
88
+ export default useTableFilter;
@@ -15,6 +15,11 @@ declare const useTableSort: <Item = any>(props: UseTableSorterProps<Item>) => {
15
15
  sortInfo: SortMap;
16
16
  onSorterChange: (columnKey: KeygenResult, direction: 'desc' | 'asc' | null, manual: boolean | undefined, columnSorter: string | import("./use-table.type").TableColumnSorter | ((order: import("./use-table.type").TableColumnOrder) => void | ((prevRowData: Item, nextRowData: Item) => number)) | undefined) => void;
17
17
  sortedData: Item[];
18
+ sortByColumn: (params: {
19
+ columnKey: KeygenResult;
20
+ direction: 'desc' | 'asc' | null;
21
+ columnSorter: string | import("./use-table.type").TableColumnSorter | ((order: import("./use-table.type").TableColumnOrder) => void | ((prevRowData: Item, nextRowData: Item) => number)) | undefined;
22
+ }) => void;
18
23
  };
19
24
  export default useTableSort;
20
25
  //# sourceMappingURL=use-table-sort.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-table-sort.d.ts","sourceRoot":"","sources":["use-table-sort.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEtF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,mBAAmB,CAAC,IAAI,GAAG,GAAG,CAC7C,SAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtE,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;CACpC;AACD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IACvD,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,QAAQ,CAAC,CAAC;AACrD,QAAA,MAAM,YAAY;;gCAoCD,YAAY,aAIZ,MAAM,GAAG,KAAK,GAAG,IAAI;;CAoGrC,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"use-table-sort.d.ts","sourceRoot":"","sources":["use-table-sort.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEtF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,mBAAmB,CAAC,IAAI,GAAG,GAAG,CAC7C,SAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtE,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;CACpC;AACD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IACvD,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,QAAQ,CAAC,CAAC;AACrD,QAAA,MAAM,YAAY;;gCAoCD,YAAY,aAIZ,MAAM,GAAG,KAAK,GAAG,IAAI;;;mBA4EmB,YAAY;mBAAa,MAAM,GAAG,KAAK,GAAG,IAAI;;;CA6BtG,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -135,6 +135,9 @@ var useTableSort = function useTableSort(props) {
135
135
  }
136
136
  }
137
137
  });
138
+ var sortByColumn = usePersistFn(function (params) {
139
+ onSorterChange(params.columnKey, params.direction, true, params.columnSorter);
140
+ });
138
141
  useEffect(function () {
139
142
  if (context.mounted) return;
140
143
  var hasSingleDefaultOrder = false;
@@ -156,7 +159,8 @@ var useTableSort = function useTableSort(props) {
156
159
  return {
157
160
  sortInfo: sortInfo,
158
161
  onSorterChange: onSorterChange,
159
- sortedData: sortedData
162
+ sortedData: sortedData,
163
+ sortByColumn: sortByColumn
160
164
  };
161
165
  };
162
166
  export default useTableSort;
@@ -1,5 +1,18 @@
1
1
  import type { BaseTableProps } from './use-table.type';
2
2
  import { OptionalToRequired } from '../../common/type';
3
+ type treeDataInfoType = {
4
+ id: string | number;
5
+ level: number;
6
+ data: any;
7
+ pid: null | string | number;
8
+ };
9
+ interface GetExpandDataVirtualResult {
10
+ treeData: any[];
11
+ treeExpandLevel: Map<any, number>;
12
+ unmatchExpandKeys: (string | number)[];
13
+ treeDataInfo: treeDataInfoType[];
14
+ }
15
+ export declare const getExpandVirtualData: (_treeData: any[], keys: (string | number)[], keygen: any, treeColumnsName?: string) => GetExpandDataVirtualResult;
3
16
  export interface UseTableTreeProps extends Pick<OptionalToRequired<BaseTableProps<any>>, 'onTreeExpand' | 'treeExpandKeys' | 'defaultTreeExpandKeys' | 'keygen'> {
4
17
  treeColumnsName: string | undefined;
5
18
  data: any[];
@@ -1 +1 @@
1
- {"version":3,"file":"use-table-tree.d.ts","sourceRoot":"","sources":["use-table-tree.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AA+CvD,MAAM,WAAW,iBACf,SAAQ,IAAI,CACV,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EACvC,cAAc,GAAG,gBAAgB,GAAG,uBAAuB,GAAG,QAAQ,CACvE;IACD,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,IAAI,EAAE,GAAG,EAAE,CAAC;CACb;AAED,eAAO,MAAM,YAAY,UAAW,iBAAiB;;;;;;+BA6BR,GAAG,SAAS,MAAM;iCAjBhB,GAAG,SAAS,MAAM;;CA4DhE,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"use-table-tree.d.ts","sourceRoot":"","sources":["use-table-tree.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIvD,KAAK,gBAAgB,GAAG;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,GAAG,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;CAC7B,CAAC;AAOF,UAAU,0BAA0B;IAClC,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,eAAe,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,iBAAiB,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACvC,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAwCD,eAAO,MAAM,oBAAoB,cACpB,GAAG,EAAE,QACV,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,UACjB,GAAG,oBACO,MAAM,KACvB,0BAyDF,CAAC;AAEF,MAAM,WAAW,iBACf,SAAQ,IAAI,CACV,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EACvC,cAAc,GAAG,gBAAgB,GAAG,uBAAuB,GAAG,QAAQ,CACvE;IACD,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,IAAI,EAAE,GAAG,EAAE,CAAC;CACb;AAED,eAAO,MAAM,YAAY,UAAW,iBAAiB;;;;;;+BA6BR,GAAG,SAAS,MAAM;iCAjBhB,GAAG,SAAS,MAAM;;CA4DhE,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -54,6 +54,73 @@ var getExpandData = function getExpandData(_treeData, keys, keygen, treeColumnsN
54
54
  unmatchExpandKeys: unmatchExpandKeys
55
55
  };
56
56
  };
57
+ export var getExpandVirtualData = function getExpandVirtualData(_treeData, keys, keygen, treeColumnsName) {
58
+ var expandKeys = keys;
59
+ var expandSet = new Set(expandKeys);
60
+ var unmatchExpandKeys = [];
61
+ var treeExpandLevel = new Map();
62
+ if (expandSet.size === 0 || !treeColumnsName) {
63
+ var _treeDataInfo = _treeData.map(function (item, index) {
64
+ return {
65
+ id: getKey(keygen, item, index),
66
+ level: 1,
67
+ data: item,
68
+ pid: null
69
+ };
70
+ });
71
+ return {
72
+ treeData: _treeData,
73
+ treeExpandLevel: treeExpandLevel,
74
+ unmatchExpandKeys: unmatchExpandKeys,
75
+ treeDataInfo: _treeDataInfo
76
+ };
77
+ }
78
+ var treeData = _toConsumableArray(_treeData || []);
79
+ var treeDataInfo = treeData.map(function (item) {
80
+ return {
81
+ id: getKey(keygen, item),
82
+ level: 1,
83
+ data: item,
84
+ pid: null
85
+ };
86
+ });
87
+ var _loop2 = function _loop2() {
88
+ if (expandSet.size === 0) return 1; // break
89
+ var item = treeData[i];
90
+ var key = getKey(keygen, item, i);
91
+ var parentLevel = treeExpandLevel.get(key) || 0;
92
+ var children = isObject(item) && item[treeColumnsName];
93
+ if (expandSet.has(key)) {
94
+ if (children && children.length > 0) {
95
+ var nodes = [];
96
+ children.forEach(function (child) {
97
+ var node = {
98
+ id: getKey(keygen, child),
99
+ level: parentLevel + 2,
100
+ data: child,
101
+ pid: key
102
+ };
103
+ nodes.push(node);
104
+ treeExpandLevel.set(getKey(keygen, child), parentLevel + 1);
105
+ });
106
+ treeData.splice.apply(treeData, [i + 1, 0].concat(_toConsumableArray(children)));
107
+ treeDataInfo.splice.apply(treeDataInfo, [i + 1, 0].concat(nodes));
108
+ expandSet.delete(key);
109
+ } else {
110
+ unmatchExpandKeys.push(key);
111
+ }
112
+ }
113
+ };
114
+ for (var i = 0; i < treeData.length; i++) {
115
+ if (_loop2()) break;
116
+ }
117
+ return {
118
+ treeData: treeData,
119
+ treeExpandLevel: treeExpandLevel,
120
+ unmatchExpandKeys: unmatchExpandKeys,
121
+ treeDataInfo: treeDataInfo
122
+ };
123
+ };
57
124
  export var useTableTree = function useTableTree(props) {
58
125
  var _useState = useState(props.defaultTreeExpandKeys || []),
59
126
  _useState2 = _slicedToArray(_useState, 2),
@@ -1 +1 @@
1
- {"version":3,"file":"use-table-virtual.d.ts","sourceRoot":"","sources":["use-table-virtual.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAWrD,UAAU,oBAAoB;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CAC3C;AACD,QAAA,MAAM,eAAe,UAAW,oBAAoB;;;;;;;oBAuMpC,MAAM;mBACP,MAAM;WACd,MAAM;gBACD,MAAM;kBACJ,OAAO;;0BAnGuB,MAAM,UAAU,MAAM;0BAxBtB,MAAM,QAAQ,MAAM;2BA+JnB,MAAM,aAAa,MAAM,IAAI;qCAoBnB,MAAM;mCAWR,MAAM,GAAG,MAAM;CAyFnE,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"use-table-virtual.d.ts","sourceRoot":"","sources":["use-table-virtual.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAWrD,UAAU,oBAAoB;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CAC3C;AACD,QAAA,MAAM,eAAe,UAAW,oBAAoB;;;;;;;oBAuMpC,MAAM;mBACP,MAAM;WACd,MAAM;gBACD,MAAM;kBACJ,OAAO;;0BAnGuB,MAAM,UAAU,MAAM;0BAxBtB,MAAM,QAAQ,MAAM;2BA+JnB,MAAM,aAAa,MAAM,IAAI;qCAoBnB,MAAM;mCAWR,MAAM,GAAG,MAAM;CA2FnE,CAAC;AAEF,eAAe,eAAe,CAAC"}