@sheinx/hooks 3.9.0-beta.19 → 3.9.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.
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { TableColumnItem, BaseTableProps } from './use-table.type';
3
3
  import { KeygenResult } from '../../common/type';
4
- export interface UseTableFilterProps<Item = any> extends Pick<BaseTableProps<Item>, 'onSortCancel' | 'sorter' | 'data'> {
4
+ export interface UseTableFilterProps<Item = any> extends Pick<BaseTableProps<Item>, 'onSortCancel' | 'sorter' | 'data' | 'keygen'> {
5
5
  columns?: TableColumnItem<Item>[];
6
6
  }
7
7
  export interface FilterInfo<T> {
@@ -12,7 +12,7 @@ export type FilterMap<T> = Map<KeygenResult, FilterInfo<T>>;
12
12
  declare const useTableFilter: <Item = any>(props: UseTableFilterProps<Item>) => {
13
13
  filterInfo: FilterMap<Item>;
14
14
  setFilterInfo: import("react").Dispatch<import("react").SetStateAction<FilterMap<Item>>>;
15
- filteredData: Item[] | undefined;
15
+ filteredData: Item[];
16
16
  onFilterChange: (columnKey: KeygenResult, value: any) => void;
17
17
  };
18
18
  export default useTableFilter;
@@ -1 +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;;;;gCA8BH,YAAY,SAAS,GAAG;CAyDxC,CAAC;AAEF,eAAe,cAAc,CAAC"}
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;AAGnE,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,GAAG,QAAQ,CAAC;IACjF,OAAO,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;CACnC;AACD,MAAM,WAAW,UAAU,CAAC,CAAC;IAE3B,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;;;;gCA+BH,YAAY,SAAS,GAAG;CAyDxC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -8,6 +8,7 @@ exports.default = void 0;
8
8
  var _react = require("react");
9
9
  var _usePersistFn = _interopRequireDefault(require("../../common/use-persist-fn"));
10
10
  var _is = require("../../utils/is");
11
+ var _utils = require("../../utils");
11
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
13
  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; }
13
14
  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; }
@@ -32,10 +33,13 @@ var useTableFilter = function useTableFilter(props) {
32
33
  });
33
34
  }, [filterInfo]);
34
35
  var filteredData = (0, _react.useMemo)(function () {
35
- var _props$data;
36
+ var _props$columns;
36
37
  // why use slice: props.data引用不改变会导致后续的useMemo无法重新计算
37
38
  if (activeFilters.length === 0) return (props.data || []).slice();
38
- return (_props$data = props.data) === null || _props$data === void 0 ? void 0 : _props$data.filter(function (item) {
39
+ var columnHasChildren = (_props$columns = props.columns) === null || _props$columns === void 0 ? void 0 : _props$columns.find(function (col) {
40
+ return col.treeColumnsName;
41
+ });
42
+ return (0, _utils.getFilterTree)(props.data, function (item) {
39
43
  return activeFilters.every(function (key) {
40
44
  var filter = filterInfo.get(key);
41
45
  if ((filter === null || filter === void 0 ? void 0 : filter.value) === undefined) return true;
@@ -45,7 +49,9 @@ var useTableFilter = function useTableFilter(props) {
45
49
  }
46
50
  return true;
47
51
  });
48
- });
52
+ }, undefined, function (node) {
53
+ return (0, _utils.getKey)(props.keygen, node);
54
+ }, columnHasChildren === null || columnHasChildren === void 0 ? void 0 : columnHasChildren.treeColumnsName, false);
49
55
  }, [activeFilters, props.data]);
50
56
  var onFilterChange = (0, _usePersistFn.default)(function (columnKey, value) {
51
57
  // TODO: 暂未开放reset全部筛选条件
@@ -75,8 +81,8 @@ var useTableFilter = function useTableFilter(props) {
75
81
  // 根据columns生成filterInfo
76
82
  (0, _react.useEffect)(function () {
77
83
  setFilterInfo(function (prev) {
78
- var _props$columns;
79
- 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) {
84
+ var _props$columns2;
85
+ var _filterInfo = props === null || props === void 0 || (_props$columns2 = props.columns) === null || _props$columns2 === void 0 ? void 0 : _props$columns2.reduce(function (acc, column, index) {
80
86
  var _prev$get2, _column$filter;
81
87
  if (!column.filter) return acc;
82
88
  var columnKey = typeof column.render === 'string' ? column.render : String(index);
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { TableColumnItem, BaseTableProps } from './use-table.type';
3
3
  import { KeygenResult } from '../../common/type';
4
- export interface UseTableFilterProps<Item = any> extends Pick<BaseTableProps<Item>, 'onSortCancel' | 'sorter' | 'data'> {
4
+ export interface UseTableFilterProps<Item = any> extends Pick<BaseTableProps<Item>, 'onSortCancel' | 'sorter' | 'data' | 'keygen'> {
5
5
  columns?: TableColumnItem<Item>[];
6
6
  }
7
7
  export interface FilterInfo<T> {
@@ -12,7 +12,7 @@ export type FilterMap<T> = Map<KeygenResult, FilterInfo<T>>;
12
12
  declare const useTableFilter: <Item = any>(props: UseTableFilterProps<Item>) => {
13
13
  filterInfo: FilterMap<Item>;
14
14
  setFilterInfo: import("react").Dispatch<import("react").SetStateAction<FilterMap<Item>>>;
15
- filteredData: Item[] | undefined;
15
+ filteredData: Item[];
16
16
  onFilterChange: (columnKey: KeygenResult, value: any) => void;
17
17
  };
18
18
  export default useTableFilter;
@@ -1 +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;;;;gCA8BH,YAAY,SAAS,GAAG;CAyDxC,CAAC;AAEF,eAAe,cAAc,CAAC"}
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;AAGnE,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,GAAG,QAAQ,CAAC;IACjF,OAAO,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;CACnC;AACD,MAAM,WAAW,UAAU,CAAC,CAAC;IAE3B,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;;;;gCA+BH,YAAY,SAAS,GAAG;CAyDxC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -13,6 +13,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
13
  import { useState, useMemo, useEffect } from 'react';
14
14
  import usePersistFn from "../../common/use-persist-fn";
15
15
  import { isFunc } from "../../utils/is";
16
+ import { getFilterTree, getKey } from "../../utils";
16
17
  var useTableFilter = function useTableFilter(props) {
17
18
  var _useState = useState(new Map()),
18
19
  _useState2 = _slicedToArray(_useState, 2),
@@ -25,10 +26,13 @@ var useTableFilter = function useTableFilter(props) {
25
26
  });
26
27
  }, [filterInfo]);
27
28
  var filteredData = useMemo(function () {
28
- var _props$data;
29
+ var _props$columns;
29
30
  // why use slice: props.data引用不改变会导致后续的useMemo无法重新计算
30
31
  if (activeFilters.length === 0) return (props.data || []).slice();
31
- return (_props$data = props.data) === null || _props$data === void 0 ? void 0 : _props$data.filter(function (item) {
32
+ var columnHasChildren = (_props$columns = props.columns) === null || _props$columns === void 0 ? void 0 : _props$columns.find(function (col) {
33
+ return col.treeColumnsName;
34
+ });
35
+ return getFilterTree(props.data, function (item) {
32
36
  return activeFilters.every(function (key) {
33
37
  var filter = filterInfo.get(key);
34
38
  if ((filter === null || filter === void 0 ? void 0 : filter.value) === undefined) return true;
@@ -38,7 +42,9 @@ var useTableFilter = function useTableFilter(props) {
38
42
  }
39
43
  return true;
40
44
  });
41
- });
45
+ }, undefined, function (node) {
46
+ return getKey(props.keygen, node);
47
+ }, columnHasChildren === null || columnHasChildren === void 0 ? void 0 : columnHasChildren.treeColumnsName, false);
42
48
  }, [activeFilters, props.data]);
43
49
  var onFilterChange = usePersistFn(function (columnKey, value) {
44
50
  // TODO: 暂未开放reset全部筛选条件
@@ -68,8 +74,8 @@ var useTableFilter = function useTableFilter(props) {
68
74
  // 根据columns生成filterInfo
69
75
  useEffect(function () {
70
76
  setFilterInfo(function (prev) {
71
- var _props$columns;
72
- 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) {
77
+ var _props$columns2;
78
+ var _filterInfo = props === null || props === void 0 || (_props$columns2 = props.columns) === null || _props$columns2 === void 0 ? void 0 : _props$columns2.reduce(function (acc, column, index) {
73
79
  var _prev$get2, _column$filter;
74
80
  if (!column.filter) return acc;
75
81
  var columnKey = typeof column.render === 'string' ? column.render : String(index);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheinx/hooks",
3
- "version": "3.9.0-beta.19",
3
+ "version": "3.9.0-beta.20",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",