@cloud-ru/uikit-product-mobile-table 0.16.2 → 0.17.0

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 (107) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cjs/components/AdaptiveServerTable/AdaptiveServerTable.js +7 -6
  3. package/dist/{esm/components → cjs/components/AdaptiveServerTable}/constants.d.ts +0 -1
  4. package/dist/cjs/components/{constants.js → AdaptiveServerTable/constants.js} +1 -2
  5. package/dist/cjs/components/{utils.d.ts → AdaptiveServerTable/utils.d.ts} +0 -2
  6. package/dist/cjs/components/{utils.js → AdaptiveServerTable/utils.js} +1 -11
  7. package/dist/cjs/components/MobileTable/MobileTable.d.ts +7 -0
  8. package/dist/cjs/components/{MobileTable.js → MobileTable/MobileTable.js} +33 -10
  9. package/dist/cjs/components/MobileTable/hooks/index.d.ts +2 -0
  10. package/dist/cjs/components/MobileTable/hooks/index.js +18 -0
  11. package/dist/cjs/components/MobileTable/hooks/useFilters/index.d.ts +1 -0
  12. package/dist/cjs/components/MobileTable/hooks/useFilters/index.js +17 -0
  13. package/dist/cjs/components/MobileTable/hooks/useFilters/useFilters.d.ts +78 -0
  14. package/dist/cjs/components/MobileTable/hooks/useFilters/useFilters.js +31 -0
  15. package/dist/cjs/components/MobileTable/hooks/useFilters/utils/getInitialColumnsFiltersOpenValue.d.ts +2 -0
  16. package/dist/cjs/components/MobileTable/hooks/useFilters/utils/getInitialColumnsFiltersOpenValue.js +11 -0
  17. package/dist/cjs/components/MobileTable/hooks/useFilters/utils/index.d.ts +1 -0
  18. package/dist/cjs/components/MobileTable/hooks/useFilters/utils/index.js +17 -0
  19. package/dist/cjs/components/{hooks.d.ts → MobileTable/hooks/useLoadingTable.d.ts} +0 -8
  20. package/dist/cjs/components/{hooks.js → MobileTable/hooks/useLoadingTable.js} +1 -15
  21. package/dist/cjs/components/MobileTable/index.d.ts +3 -0
  22. package/dist/cjs/components/MobileTable/index.js +21 -0
  23. package/dist/cjs/components/MobileTable/types.d.ts +11 -0
  24. package/dist/cjs/components/MobileTable/types.js +2 -0
  25. package/dist/cjs/components/MobileTable/utils/fuzzyFilter.d.ts +2 -0
  26. package/dist/cjs/components/MobileTable/utils/fuzzyFilter.js +13 -0
  27. package/dist/cjs/components/MobileTable/utils/index.d.ts +2 -0
  28. package/dist/cjs/components/MobileTable/utils/index.js +18 -0
  29. package/dist/cjs/components/MobileTable/utils/saveTableState/getPersistedStateValidator.d.ts +4 -0
  30. package/dist/cjs/components/MobileTable/utils/saveTableState/getPersistedStateValidator.js +13 -0
  31. package/dist/cjs/components/MobileTable/utils/saveTableState/index.d.ts +3 -0
  32. package/dist/cjs/components/MobileTable/utils/saveTableState/index.js +19 -0
  33. package/dist/cjs/components/MobileTable/utils/saveTableState/mappers.d.ts +18 -0
  34. package/dist/cjs/components/MobileTable/utils/saveTableState/mappers.js +45 -0
  35. package/dist/cjs/components/MobileTable/utils/saveTableState/validators.d.ts +5 -0
  36. package/dist/cjs/components/MobileTable/utils/saveTableState/validators.js +13 -0
  37. package/dist/cjs/constants.d.ts +1 -0
  38. package/dist/cjs/constants.js +2 -1
  39. package/dist/cjs/index.d.ts +1 -0
  40. package/dist/cjs/index.js +1 -0
  41. package/dist/esm/components/AdaptiveServerTable/AdaptiveServerTable.js +5 -4
  42. package/dist/{cjs/components → esm/components/AdaptiveServerTable}/constants.d.ts +0 -1
  43. package/dist/esm/components/{constants.js → AdaptiveServerTable/constants.js} +0 -1
  44. package/dist/esm/components/{utils.d.ts → AdaptiveServerTable/utils.d.ts} +0 -2
  45. package/dist/esm/components/AdaptiveServerTable/utils.js +5 -0
  46. package/dist/esm/components/MobileTable/MobileTable.d.ts +7 -0
  47. package/dist/esm/components/{MobileTable.js → MobileTable/MobileTable.js} +33 -10
  48. package/dist/esm/components/MobileTable/hooks/index.d.ts +2 -0
  49. package/dist/esm/components/MobileTable/hooks/index.js +2 -0
  50. package/dist/esm/components/MobileTable/hooks/useFilters/index.d.ts +1 -0
  51. package/dist/esm/components/MobileTable/hooks/useFilters/index.js +1 -0
  52. package/dist/esm/components/MobileTable/hooks/useFilters/useFilters.d.ts +78 -0
  53. package/dist/esm/components/MobileTable/hooks/useFilters/useFilters.js +28 -0
  54. package/dist/esm/components/MobileTable/hooks/useFilters/utils/getInitialColumnsFiltersOpenValue.d.ts +2 -0
  55. package/dist/esm/components/MobileTable/hooks/useFilters/utils/getInitialColumnsFiltersOpenValue.js +8 -0
  56. package/dist/esm/components/MobileTable/hooks/useFilters/utils/index.d.ts +1 -0
  57. package/dist/esm/components/MobileTable/hooks/useFilters/utils/index.js +1 -0
  58. package/dist/esm/components/{hooks.d.ts → MobileTable/hooks/useLoadingTable.d.ts} +0 -8
  59. package/dist/esm/components/MobileTable/hooks/useLoadingTable.js +17 -0
  60. package/dist/esm/components/MobileTable/index.d.ts +3 -0
  61. package/dist/esm/components/MobileTable/index.js +3 -0
  62. package/dist/esm/components/MobileTable/types.d.ts +11 -0
  63. package/dist/esm/components/MobileTable/types.js +1 -0
  64. package/dist/esm/components/MobileTable/utils/fuzzyFilter.d.ts +2 -0
  65. package/dist/esm/components/{utils.js → MobileTable/utils/fuzzyFilter.js} +0 -5
  66. package/dist/esm/components/MobileTable/utils/index.d.ts +2 -0
  67. package/dist/esm/components/MobileTable/utils/index.js +2 -0
  68. package/dist/esm/components/MobileTable/utils/saveTableState/getPersistedStateValidator.d.ts +4 -0
  69. package/dist/esm/components/MobileTable/utils/saveTableState/getPersistedStateValidator.js +9 -0
  70. package/dist/esm/components/MobileTable/utils/saveTableState/index.d.ts +3 -0
  71. package/dist/esm/components/MobileTable/utils/saveTableState/index.js +3 -0
  72. package/dist/esm/components/MobileTable/utils/saveTableState/mappers.d.ts +18 -0
  73. package/dist/esm/components/MobileTable/utils/saveTableState/mappers.js +37 -0
  74. package/dist/esm/components/MobileTable/utils/saveTableState/validators.d.ts +5 -0
  75. package/dist/esm/components/MobileTable/utils/saveTableState/validators.js +7 -0
  76. package/dist/esm/constants.d.ts +1 -0
  77. package/dist/esm/constants.js +1 -0
  78. package/dist/esm/index.d.ts +1 -0
  79. package/dist/esm/index.js +1 -0
  80. package/package.json +12 -9
  81. package/src/components/AdaptiveServerTable/AdaptiveServerTable.tsx +5 -4
  82. package/src/components/{constants.ts → AdaptiveServerTable/constants.ts} +0 -1
  83. package/src/components/AdaptiveServerTable/utils.ts +12 -0
  84. package/src/components/{MobileTable.tsx → MobileTable/MobileTable.tsx} +50 -55
  85. package/src/components/MobileTable/hooks/index.ts +2 -0
  86. package/src/components/MobileTable/hooks/useFilters/index.ts +1 -0
  87. package/src/components/MobileTable/hooks/useFilters/useFilters.ts +57 -0
  88. package/src/components/MobileTable/hooks/useFilters/utils/getInitialColumnsFiltersOpenValue.ts +13 -0
  89. package/src/components/MobileTable/hooks/useFilters/utils/index.ts +1 -0
  90. package/src/components/{hooks.tsx → MobileTable/hooks/useLoadingTable.tsx} +1 -22
  91. package/src/components/MobileTable/index.ts +3 -0
  92. package/src/components/MobileTable/types.ts +44 -0
  93. package/src/components/{utils.ts → MobileTable/utils/fuzzyFilter.ts} +0 -12
  94. package/src/components/MobileTable/utils/index.ts +2 -0
  95. package/src/components/MobileTable/utils/saveTableState/getPersistedStateValidator.ts +21 -0
  96. package/src/components/MobileTable/utils/saveTableState/index.ts +3 -0
  97. package/src/components/MobileTable/utils/saveTableState/mappers.ts +62 -0
  98. package/src/components/MobileTable/utils/saveTableState/validators.ts +21 -0
  99. package/src/constants.ts +2 -0
  100. package/src/helperComponents/ColumnsSettings/ColumnsSettings.tsx +1 -0
  101. package/src/index.ts +1 -0
  102. package/dist/cjs/components/MobileTable.d.ts +0 -13
  103. package/dist/esm/components/MobileTable.d.ts +0 -13
  104. package/dist/esm/components/hooks.js +0 -30
  105. /package/dist/cjs/components/{styles.module.css → MobileTable/styles.module.css} +0 -0
  106. /package/dist/esm/components/{styles.module.css → MobileTable/styles.module.css} +0 -0
  107. /package/src/components/{styles.module.scss → MobileTable/styles.module.scss} +0 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,30 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # 0.17.0 (2026-01-21)
7
+
8
+
9
+ ### Features
10
+
11
+ * **FF-7319:** mobile table persistent filters state and structure refactoring ([80e26a3](https://gitverse.ru/cloud-ru-tech/uikit-product/commits/80e26a317a9b25eb8af327329a4b14d47e6b8b60))
12
+
13
+
14
+
15
+
16
+
17
+ ## 0.16.3 (2025-12-17)
18
+
19
+ ### Only dependencies have been changed
20
+ * [@cloud-ru/uikit-product-icons@16.1.1](https://gitverse.ru/cloud-ru-tech/uikit-product/-/blob/master/packages/icons/CHANGELOG.md)
21
+ * [@cloud-ru/uikit-product-mobile-chips@0.8.47](https://gitverse.ru/cloud-ru-tech/uikit-product/-/blob/master/packages/mobile-chips/CHANGELOG.md)
22
+ * [@cloud-ru/uikit-product-mobile-dropdown@0.9.31](https://gitverse.ru/cloud-ru-tech/uikit-product/-/blob/master/packages/mobile-dropdown/CHANGELOG.md)
23
+ * [@cloud-ru/uikit-product-mobile-toolbar@0.4.14](https://gitverse.ru/cloud-ru-tech/uikit-product/-/blob/master/packages/mobile-toolbar/CHANGELOG.md)
24
+ * [@cloud-ru/uikit-product-utils@8.1.0](https://gitverse.ru/cloud-ru-tech/uikit-product/-/blob/master/packages/utils/CHANGELOG.md)
25
+
26
+
27
+
28
+
29
+
6
30
  ## 0.16.2 (2025-12-12)
7
31
 
8
32
  ### Only dependencies have been changed
@@ -15,15 +15,16 @@ exports.AdaptiveServerTable = AdaptiveServerTable;
15
15
  const jsx_runtime_1 = require("react/jsx-runtime");
16
16
  const react_1 = require("react");
17
17
  const table_1 = require("@snack-uikit/table");
18
- const constants_1 = require("../constants");
19
- const hooks_1 = require("../hooks");
18
+ const utils_1 = require("@snack-uikit/utils");
19
+ const constants_1 = require("../../constants");
20
20
  const MobileTable_1 = require("../MobileTable");
21
- const utils_1 = require("../utils");
21
+ const constants_2 = require("./constants");
22
+ const utils_2 = require("./utils");
22
23
  function AdaptiveServerTable(_a) {
23
24
  var { layoutType } = _a, props = __rest(_a, ["layoutType"]);
24
25
  const isMobile = layoutType === 'mobile';
25
- const { onChangePage, search: searchProp, pagination, items, total = constants_1.DEFAULT_PAGINATION_LIMIT, limit = constants_1.DEFAULT_PAGINATION_LIMIT, offset = 0 } = props, rest = __rest(props, ["onChangePage", "search", "pagination", "items", "total", "limit", "offset"]);
26
- const { state: search, onStateChange: setSearch } = (0, hooks_1.useStateControl)(searchProp, '');
26
+ const { onChangePage, search: searchProp, pagination, items, total = constants_2.DEFAULT_PAGINATION_LIMIT, limit = constants_2.DEFAULT_PAGINATION_LIMIT, offset = 0 } = props, rest = __rest(props, ["onChangePage", "search", "pagination", "items", "total", "limit", "offset"]);
27
+ const [search, setSearch] = (0, utils_1.useValueControl)(searchProp !== null && searchProp !== void 0 ? searchProp : { defaultValue: '' });
27
28
  const [tempSearch, setTempSearch] = (0, react_1.useState)(search || '');
28
29
  (0, react_1.useEffect)(() => {
29
30
  var _a;
@@ -35,7 +36,7 @@ function AdaptiveServerTable(_a) {
35
36
  }, [searchProp === null || searchProp === void 0 ? void 0 : searchProp.state]);
36
37
  const handleSearch = (0, react_1.useCallback)((newValue) => {
37
38
  setTempSearch(newValue);
38
- (0, utils_1.onSearchDebounced)(newValue.trim(), setSearch);
39
+ (0, utils_2.onSearchDebounced)(newValue.trim(), setSearch);
39
40
  }, [setSearch]);
40
41
  const handlePageChange = (0, react_1.useCallback)(({ pageSize, pageIndex }) => onChangePage(pageIndex * pageSize, pageSize), [onChangePage]);
41
42
  const pageIndex = (0, react_1.useMemo)(() => Math.floor(offset / limit), [limit, offset]);
@@ -1,3 +1,2 @@
1
- export declare const DEFAULT_PAGE_SIZE = 5;
2
1
  export declare const SEARCH_DELAY = 500;
3
2
  export declare const DEFAULT_PAGINATION_LIMIT = 10;
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_PAGINATION_LIMIT = exports.SEARCH_DELAY = exports.DEFAULT_PAGE_SIZE = void 0;
4
- exports.DEFAULT_PAGE_SIZE = 5;
3
+ exports.DEFAULT_PAGINATION_LIMIT = exports.SEARCH_DELAY = void 0;
5
4
  exports.SEARCH_DELAY = 500;
6
5
  exports.DEFAULT_PAGINATION_LIMIT = 10;
@@ -1,5 +1,3 @@
1
- import { FilterFn } from '@tanstack/react-table';
2
- export declare const fuzzyFilter: FilterFn<any>;
3
1
  type OnSearchDebouncedType = (newValue: string, onChange: (newValue: string) => void) => void;
4
2
  export declare const onSearchDebounced: OnSearchDebouncedType;
5
3
  export {};
@@ -3,19 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.onSearchDebounced = exports.fuzzyFilter = void 0;
7
- const match_sorter_utils_1 = require("@tanstack/match-sorter-utils");
6
+ exports.onSearchDebounced = void 0;
8
7
  const lodash_debounce_1 = __importDefault(require("lodash.debounce"));
9
8
  const constants_1 = require("./constants");
10
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
- const fuzzyFilter = (row, columnId, value, addMeta) => {
12
- const itemRank = (0, match_sorter_utils_1.rankItem)(row.getValue(columnId), value);
13
- addMeta({
14
- itemRank,
15
- });
16
- return itemRank.passed;
17
- };
18
- exports.fuzzyFilter = fuzzyFilter;
19
9
  exports.onSearchDebounced = (0, lodash_debounce_1.default)((newValue, onChange) => {
20
10
  onChange(newValue);
21
11
  }, constants_1.SEARCH_DELAY);
@@ -0,0 +1,7 @@
1
+ import { FiltersState } from '@cloud-ru/uikit-product-mobile-chips';
2
+ import { MobileTableProps } from './types';
3
+ export declare function MobileTable<TData extends object, TFilters extends FiltersState = Record<string, unknown>>({ data, columnDefinitions, headlineId, suppressPagination, suppressToolbar, suppressSearch, enableFuzzySearch, search, onRefresh, toolbarAfter, moreActions, columnFilters, className, headerBackground, noDataState, noResultsState, errorDataState, loading, dataError, dataFiltered, pagination: paginationProp, pageCount, sorting: sortingProp, manualSorting, manualPagination, manualFiltering, autoResetPageIndex, getRowId, rowSelection: rowSelectionProp, bulkActions: bulkActionsProp, columnsSettings: columnsSettingsProp, savedState, ...rest }: MobileTableProps<TData, TFilters>): import("react/jsx-runtime").JSX.Element;
4
+ export declare namespace MobileTable {
5
+ var getRowActionsColumnDef: typeof import("../../helperComponents").getRowActionsColumnDef;
6
+ var getStatusColumnDef: typeof import("../../helperComponents").getStatusColumnDef;
7
+ }
@@ -24,19 +24,19 @@ const uikit_product_mobile_toolbar_1 = require("@cloud-ru/uikit-product-mobile-t
24
24
  const uikit_product_utils_1 = require("@cloud-ru/uikit-product-utils");
25
25
  const skeleton_1 = require("@snack-uikit/skeleton");
26
26
  const table_1 = require("@snack-uikit/table");
27
- const helperComponents_1 = require("../helperComponents");
28
- const ColumnsSettings_1 = require("../helperComponents/ColumnsSettings");
29
- const constants_1 = require("./constants");
27
+ const utils_1 = require("@snack-uikit/utils");
28
+ const constants_1 = require("../../constants");
29
+ const helperComponents_1 = require("../../helperComponents");
30
30
  const hooks_1 = require("./hooks");
31
31
  const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
32
- const utils_1 = require("./utils");
32
+ const utils_2 = require("./utils");
33
33
  function MobileTable(_a) {
34
34
  var { data, columnDefinitions, headlineId, suppressPagination = false, suppressToolbar = false, suppressSearch = false, enableFuzzySearch = false, search, onRefresh, toolbarAfter, moreActions, columnFilters, className, headerBackground = 'default', noDataState, noResultsState, errorDataState, loading, dataError, dataFiltered, pagination: paginationProp, pageCount, sorting: sortingProp, manualSorting = false, manualPagination = false, manualFiltering = false, autoResetPageIndex = false, getRowId, rowSelection: rowSelectionProp, bulkActions: bulkActionsProp, columnsSettings: columnsSettingsProp, savedState } = _a, rest = __rest(_a, ["data", "columnDefinitions", "headlineId", "suppressPagination", "suppressToolbar", "suppressSearch", "enableFuzzySearch", "search", "onRefresh", "toolbarAfter", "moreActions", "columnFilters", "className", "headerBackground", "noDataState", "noResultsState", "errorDataState", "loading", "dataError", "dataFiltered", "pagination", "pageCount", "sorting", "manualSorting", "manualPagination", "manualFiltering", "autoResetPageIndex", "getRowId", "rowSelection", "bulkActions", "columnsSettings", "savedState"]);
35
35
  const defaultPaginationState = (0, react_1.useMemo)(() => ({ pageIndex: 0, pageSize: constants_1.DEFAULT_PAGE_SIZE }), []);
36
- const { state: sorting, onStateChange: onSortingChange } = (0, hooks_1.useStateControl)(sortingProp, []);
37
- const { state: globalFilter, onStateChange: onGlobalFilterChange } = (0, hooks_1.useStateControl)(search, '');
38
- const { state: pagination, onStateChange: onPaginationChange } = (0, hooks_1.useStateControl)(paginationProp, defaultPaginationState);
39
- const { state: rowSelection, onStateChange: onRowSelectionChange } = (0, hooks_1.useStateControl)(rowSelectionProp, {});
36
+ const [sorting = [], onSortingChange] = (0, utils_1.useValueControl)(sortingProp !== null && sortingProp !== void 0 ? sortingProp : { defaultValue: [] });
37
+ const [globalFilter = '', onGlobalFilterChange] = (0, utils_1.useValueControl)(search !== null && search !== void 0 ? search : { defaultValue: '' });
38
+ const [pagination = defaultPaginationState, onPaginationChange] = (0, utils_1.useValueControl)(paginationProp !== null && paginationProp !== void 0 ? paginationProp : { defaultValue: defaultPaginationState });
39
+ const [rowSelection = {}, onRowSelectionChange] = (0, utils_1.useValueControl)(rowSelectionProp !== null && rowSelectionProp !== void 0 ? rowSelectionProp : { defaultValue: {} });
40
40
  const enableRowSelection = (0, react_1.useCallback)((row) => {
41
41
  const parent = row.getParentRow();
42
42
  const isParentSelected = parent ? parent.getCanSelect() : true;
@@ -122,7 +122,7 @@ function MobileTable(_a) {
122
122
  onPaginationChange,
123
123
  onSortingChange,
124
124
  onColumnOrderChange: enableColumnsOrderSortByDrag ? setColumnOrder : undefined,
125
- globalFilterFn: enableFuzzySearch ? utils_1.fuzzyFilter : 'includesString',
125
+ globalFilterFn: enableFuzzySearch ? utils_2.fuzzyFilter : 'includesString',
126
126
  enableFilters: true,
127
127
  manualSorting,
128
128
  manualPagination,
@@ -173,6 +173,8 @@ function MobileTable(_a) {
173
173
  const hasSortableColumns = (0, react_1.useMemo)(() => columnDefinitions.some(column => column.enableSorting !== false), [columnDefinitions]);
174
174
  const shouldShowSorting = (0, react_1.useMemo)(() => Boolean(sortingProp) || hasSortableColumns, [sortingProp, hasSortableColumns]);
175
175
  const tableFilteredRows = table.getFilteredRowModel().rows;
176
+ const { filter, patchedFilter, setFilter, setFilterVisibility } = (0, hooks_1.useFilters)({ columnFilters });
177
+ const validatePersistedState = (0, react_1.useMemo)(() => (0, utils_2.getPersistedStateValidator)(columnFilters), [columnFilters]);
176
178
  (0, table_1.usePageReset)({
177
179
  manualPagination,
178
180
  maximumAvailablePage: pageCount || tableFilteredRows.length / pagination.pageSize,
@@ -187,7 +189,28 @@ function MobileTable(_a) {
187
189
  onChange: onGlobalFilterChange,
188
190
  loading: search === null || search === void 0 ? void 0 : search.loading,
189
191
  placeholder: (search === null || search === void 0 ? void 0 : search.placeholder) || t('searchPlaceholder'),
190
- }, onRefresh: onRefresh ? handleOnRefresh : undefined, outline: true, filterRow: columnFilters, after: toolbarAfter || shouldShowSorting || (areColumnsSettingsEnabled && columnsSettings) ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [toolbarAfter, shouldShowSorting && ((0, jsx_runtime_1.jsx)(helperComponents_1.TableSorting, { table: table, columnDefinitions: columnDefinitions, enabledColumns: areColumnsSettingsEnabled ? enabledColumns : undefined, areColumnsSettingsEnabled: areColumnsSettingsEnabled })), areColumnsSettingsEnabled && columnsSettings && ((0, jsx_runtime_1.jsx)(ColumnsSettings_1.ColumnsSettings, { columnsSettings: columnsSettings, enabledColumns: enabledColumns, setEnabledColumns: setEnabledColumns }))] })) : undefined, moreActions: moreActions, bulkActions: bulkActions, selectedCount: table.getSelectedRowModel().rows.length, selectionMode: selectionMode, onCheck: enableSelection ? handleOnToolbarCheck : undefined, checked: table.getIsAllPageRowsSelected(), indeterminate: table.getIsSomePageRowsSelected() }) })), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.table, children: loading ? ((0, jsx_runtime_1.jsx)(skeleton_1.SkeletonContextProvider, { loading: true, children: loadingTableRows.map((row, index) => ((0, jsx_runtime_1.jsx)(helperComponents_1.TableCard, { headlineId: headlineId, row: row, table: loadingTable, selection: 'none' }, index))) })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [tableRows.map((row, index) => ((0, jsx_runtime_1.jsx)(helperComponents_1.TableCard, { headlineId: headlineId, row: row, table: table, selectionAppearance: rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.appearance, selection: enableSelection ? selectionMode : 'none' }, index))), (0, jsx_runtime_1.jsx)(helperComponents_1.TableEmptyState, { emptyStates: emptyStates, dataError: dataError, dataFiltered: dataFiltered || Boolean(table.getState().globalFilter), tableRowsLength: tableRows.length })] })) }), !suppressPagination && (0, jsx_runtime_1.jsx)(helperComponents_1.TablePagination, { table: table })] })));
192
+ }, onRefresh: onRefresh ? handleOnRefresh : undefined, outline: true, filterRow: patchedFilter, after: toolbarAfter || shouldShowSorting || (areColumnsSettingsEnabled && columnsSettings) ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [toolbarAfter, shouldShowSorting && ((0, jsx_runtime_1.jsx)(helperComponents_1.TableSorting, { table: table, columnDefinitions: columnDefinitions, enabledColumns: areColumnsSettingsEnabled ? enabledColumns : undefined, areColumnsSettingsEnabled: areColumnsSettingsEnabled })), areColumnsSettingsEnabled && columnsSettings && ((0, jsx_runtime_1.jsx)(helperComponents_1.ColumnsSettings, { columnsSettings: columnsSettings, enabledColumns: enabledColumns, setEnabledColumns: setEnabledColumns }))] })) : undefined, moreActions: moreActions, bulkActions: bulkActions, selectedCount: table.getSelectedRowModel().rows.length, selectionMode: selectionMode, onCheck: enableSelection ? handleOnToolbarCheck : undefined, checked: table.getIsAllPageRowsSelected(), indeterminate: table.getIsSomePageRowsSelected(), persist: (savedState === null || savedState === void 0 ? void 0 : savedState.id) && (savedState === null || savedState === void 0 ? void 0 : savedState.filterQueryKey)
193
+ ? {
194
+ id: savedState.id,
195
+ filterQueryKey: savedState.filterQueryKey,
196
+ validateData: data => validatePersistedState(data),
197
+ state: {
198
+ pagination: (0, utils_2.mapPaginationToRequestPayload)(pagination),
199
+ ordering: (0, utils_2.mapSortToRequestPayload)(sorting),
200
+ filter,
201
+ search: globalFilter || '',
202
+ },
203
+ onLoad: state => {
204
+ state.pagination && onPaginationChange((0, utils_2.mapPaginationToTableState)(state.pagination));
205
+ state.search && onGlobalFilterChange(state.search);
206
+ state.ordering && onSortingChange((0, utils_2.mapSortToTableState)(state.ordering));
207
+ if (state.filter) {
208
+ setFilter(state.filter);
209
+ setFilterVisibility(Object.keys(state.filter));
210
+ }
211
+ },
212
+ }
213
+ : undefined }) })), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.table, children: loading ? ((0, jsx_runtime_1.jsx)(skeleton_1.SkeletonContextProvider, { loading: true, children: loadingTableRows.map((row, index) => ((0, jsx_runtime_1.jsx)(helperComponents_1.TableCard, { headlineId: headlineId, row: row, table: loadingTable, selection: 'none' }, index))) })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [tableRows.map((row, index) => ((0, jsx_runtime_1.jsx)(helperComponents_1.TableCard, { headlineId: headlineId, row: row, table: table, selectionAppearance: rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.appearance, selection: enableSelection ? selectionMode : 'none' }, index))), (0, jsx_runtime_1.jsx)(helperComponents_1.TableEmptyState, { emptyStates: emptyStates, dataError: dataError, dataFiltered: dataFiltered || Boolean(table.getState().globalFilter), tableRowsLength: tableRows.length })] })) }), !suppressPagination && (0, jsx_runtime_1.jsx)(helperComponents_1.TablePagination, { table: table })] })));
191
214
  }
192
215
  MobileTable.getRowActionsColumnDef = helperComponents_1.getRowActionsColumnDef;
193
216
  MobileTable.getStatusColumnDef = helperComponents_1.getStatusColumnDef;
@@ -0,0 +1,2 @@
1
+ export * from './useLoadingTable';
2
+ export * from './useFilters';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./useLoadingTable"), exports);
18
+ __exportStar(require("./useFilters"), exports);
@@ -0,0 +1 @@
1
+ export * from './useFilters';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./useFilters"), exports);
@@ -0,0 +1,78 @@
1
+ import { FiltersState } from '@cloud-ru/uikit-product-mobile-chips';
2
+ import { MobileTableProps } from '../../types';
3
+ type useFiltersProps<TData extends object, TFilters extends FiltersState = Record<string, unknown>> = Pick<MobileTableProps<TData, TFilters>, 'columnFilters'>;
4
+ export declare function useFilters<TData extends object, TFilters extends FiltersState = Record<string, unknown>>({ columnFilters, }: useFiltersProps<TData, TFilters>): {
5
+ filter: TFilters | undefined;
6
+ setFilter: (value: any, ...args: any[]) => any;
7
+ patchedFilter: {
8
+ value: TFilters | undefined;
9
+ onChange: (filter: TFilters) => void;
10
+ visibleFilters: string[];
11
+ onVisibleFiltersChange: (value: any, ...args: any[]) => any;
12
+ 'data-test-id'?: string;
13
+ "aria-activedescendant"?: string | undefined;
14
+ "aria-atomic"?: (boolean | "true" | "false") | undefined;
15
+ "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
16
+ "aria-braillelabel"?: string | undefined;
17
+ "aria-brailleroledescription"?: string | undefined;
18
+ "aria-busy"?: (boolean | "true" | "false") | undefined;
19
+ "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined;
20
+ "aria-colcount"?: number | undefined;
21
+ "aria-colindex"?: number | undefined;
22
+ "aria-colindextext"?: string | undefined;
23
+ "aria-colspan"?: number | undefined;
24
+ "aria-controls"?: string | undefined;
25
+ "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined;
26
+ "aria-describedby"?: string | undefined;
27
+ "aria-description"?: string | undefined;
28
+ "aria-details"?: string | undefined;
29
+ "aria-disabled"?: (boolean | "true" | "false") | undefined;
30
+ "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
31
+ "aria-errormessage"?: string | undefined;
32
+ "aria-expanded"?: (boolean | "true" | "false") | undefined;
33
+ "aria-flowto"?: string | undefined;
34
+ "aria-grabbed"?: (boolean | "true" | "false") | undefined;
35
+ "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
36
+ "aria-hidden"?: (boolean | "true" | "false") | undefined;
37
+ "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
38
+ "aria-keyshortcuts"?: string | undefined;
39
+ "aria-label"?: string | undefined;
40
+ "aria-labelledby"?: string | undefined;
41
+ "aria-level"?: number | undefined;
42
+ "aria-live"?: "off" | "assertive" | "polite" | undefined;
43
+ "aria-modal"?: (boolean | "true" | "false") | undefined;
44
+ "aria-multiline"?: (boolean | "true" | "false") | undefined;
45
+ "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
46
+ "aria-orientation"?: "horizontal" | "vertical" | undefined;
47
+ "aria-owns"?: string | undefined;
48
+ "aria-placeholder"?: string | undefined;
49
+ "aria-posinset"?: number | undefined;
50
+ "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined;
51
+ "aria-readonly"?: (boolean | "true" | "false") | undefined;
52
+ "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
53
+ "aria-required"?: (boolean | "true" | "false") | undefined;
54
+ "aria-roledescription"?: string | undefined;
55
+ "aria-rowcount"?: number | undefined;
56
+ "aria-rowindex"?: number | undefined;
57
+ "aria-rowindextext"?: string | undefined;
58
+ "aria-rowspan"?: number | undefined;
59
+ "aria-selected"?: (boolean | "true" | "false") | undefined;
60
+ "aria-setsize"?: number | undefined;
61
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
62
+ "aria-valuemax"?: number | undefined;
63
+ "aria-valuemin"?: number | undefined;
64
+ "aria-valuenow"?: number | undefined;
65
+ "aria-valuetext"?: string | undefined;
66
+ defaultValue?: Partial<TFilters> | undefined;
67
+ filters: import("@cloud-ru/uikit-product-mobile-chips").MobileChipChoiceRowFilter[];
68
+ size?: import("@cloud-ru/uikit-product-mobile-chips/dist/esm/components/MobileChipChoiceRow/types").ChipChoiceRowSize;
69
+ className?: string;
70
+ showClearButton?: boolean;
71
+ showAddButton?: boolean;
72
+ initialOpen?: boolean;
73
+ open: boolean;
74
+ onOpenChange: import("react").Dispatch<import("react").SetStateAction<boolean>>;
75
+ } | undefined;
76
+ setFilterVisibility: (value: any, ...args: any[]) => any;
77
+ };
78
+ export {};
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useFilters = useFilters;
4
+ const react_1 = require("react");
5
+ const utils_1 = require("@snack-uikit/utils");
6
+ const utils_2 = require("./utils");
7
+ function useFilters({ columnFilters, }) {
8
+ const [areColumnFiltersOpen, setAreColumnFiltersOpen] = (0, react_1.useState)(() => (0, utils_2.getInitialColumnsFiltersOpenValue)(columnFilters));
9
+ const [filter, setFilter] = (0, utils_1.useValueControl)({
10
+ value: columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.value,
11
+ defaultValue: columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.defaultValue,
12
+ onChange: columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.onChange,
13
+ });
14
+ const [filterVisibility = [], setFilterVisibility] = (0, utils_1.useValueControl)({
15
+ value: columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.visibleFilters,
16
+ defaultValue: [],
17
+ onChange: columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.onVisibleFiltersChange,
18
+ });
19
+ const patchedFilter = (0, react_1.useMemo)(() => {
20
+ if (!columnFilters) {
21
+ return undefined;
22
+ }
23
+ return Object.assign(Object.assign({ open: areColumnFiltersOpen, onOpenChange: setAreColumnFiltersOpen }, columnFilters), { value: filter, onChange: setFilter, visibleFilters: filterVisibility, onVisibleFiltersChange: setFilterVisibility });
24
+ }, [columnFilters, areColumnFiltersOpen, filter, setFilter, filterVisibility, setFilterVisibility]);
25
+ return {
26
+ filter,
27
+ setFilter,
28
+ patchedFilter,
29
+ setFilterVisibility,
30
+ };
31
+ }
@@ -0,0 +1,2 @@
1
+ import { MobileTableProps } from '../../../types';
2
+ export declare function getInitialColumnsFiltersOpenValue<TData extends object>(columnFilters: MobileTableProps<TData>['columnFilters']): boolean;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getInitialColumnsFiltersOpenValue = getInitialColumnsFiltersOpenValue;
4
+ function getInitialColumnsFiltersOpenValue(columnFilters) {
5
+ if (!columnFilters) {
6
+ return false;
7
+ }
8
+ return 'initialOpen' in columnFilters && typeof columnFilters.initialOpen === 'boolean'
9
+ ? columnFilters.initialOpen
10
+ : true;
11
+ }
@@ -0,0 +1 @@
1
+ export * from './getInitialColumnsFiltersOpenValue';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./getInitialColumnsFiltersOpenValue"), exports);
@@ -1,13 +1,5 @@
1
1
  import { FiltersState } from '@cloud-ru/uikit-product-mobile-chips';
2
2
  import { TableProps } from '@snack-uikit/table';
3
- export declare function useStateControl<TState>(control: {
4
- initialState?: TState;
5
- state?: TState;
6
- onChange?(state: TState): void;
7
- } | undefined, defaultState: TState): {
8
- state: TState;
9
- onStateChange: import("uncontrollable").Handler;
10
- };
11
3
  type UseLoadingTableProps<TData extends object, TFilters extends FiltersState> = {
12
4
  columnDefinitions: TableProps<TData, TFilters>['columnDefinitions'];
13
5
  pageSize: number;
@@ -1,25 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useStateControl = useStateControl;
4
3
  exports.useLoadingTable = useLoadingTable;
5
4
  const jsx_runtime_1 = require("react/jsx-runtime");
6
5
  const react_table_1 = require("@tanstack/react-table");
7
6
  const react_1 = require("react");
8
- const uncontrollable_1 = require("uncontrollable");
9
7
  const skeleton_1 = require("@snack-uikit/skeleton");
10
- const constants_1 = require("../constants");
11
- function useStateControl(control, defaultState) {
12
- var _a, _b;
13
- const [state, onStateChange] = (0, uncontrollable_1.useUncontrolledProp)(control === null || control === void 0 ? void 0 : control.state, (_b = (_a = control === null || control === void 0 ? void 0 : control.state) !== null && _a !== void 0 ? _a : control === null || control === void 0 ? void 0 : control.initialState) !== null && _b !== void 0 ? _b : defaultState, (controlState) => {
14
- var _a;
15
- const newState = typeof controlState === 'function' ? controlState(state) : controlState;
16
- (_a = control === null || control === void 0 ? void 0 : control.onChange) === null || _a === void 0 ? void 0 : _a.call(control, newState);
17
- });
18
- return {
19
- state,
20
- onStateChange,
21
- };
22
- }
8
+ const constants_1 = require("../../../constants");
23
9
  function useLoadingTable({ pageSize, columnDefinitions, }) {
24
10
  const data = (0, react_1.useMemo)(() => (Array.from({ length: pageSize }).map(() => ({})) || []), [pageSize]);
25
11
  const columns = (0, react_1.useMemo)(() => columnDefinitions
@@ -0,0 +1,3 @@
1
+ export * from './MobileTable';
2
+ export * from './types';
3
+ export { formatTableStateToRequestPayload } from './utils/saveTableState/mappers';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.formatTableStateToRequestPayload = void 0;
18
+ __exportStar(require("./MobileTable"), exports);
19
+ __exportStar(require("./types"), exports);
20
+ var mappers_1 = require("./utils/saveTableState/mappers");
21
+ Object.defineProperty(exports, "formatTableStateToRequestPayload", { enumerable: true, get: function () { return mappers_1.formatTableStateToRequestPayload; } });
@@ -0,0 +1,11 @@
1
+ import { FiltersState, MobileChipChoiceRowProps } from '@cloud-ru/uikit-product-mobile-chips';
2
+ import { WithSupportProps } from '@cloud-ru/uikit-product-utils';
3
+ import { TableProps } from '@snack-uikit/table';
4
+ export type MobileTableProps<TData extends object, TFilters extends FiltersState = Record<string, unknown>> = Pick<TableProps<TData, TFilters>, 'data' | 'columnDefinitions' | 'suppressPagination' | 'suppressToolbar' | 'suppressSearch' | 'search' | 'onRefresh' | 'moreActions' | 'className' | 'enableFuzzySearch' | 'loading' | 'dataError' | 'dataFiltered' | 'noDataState' | 'noResultsState' | 'errorDataState' | 'sorting' | 'pagination' | 'pageCount' | 'manualFiltering' | 'manualPagination' | 'manualSorting' | 'getRowId' | 'rowSelection' | 'bulkActions' | 'columnsSettings' | 'savedState' | 'autoResetPageIndex' | 'toolbarAfter'> & WithSupportProps<{
5
+ headlineId?: string;
6
+ headerBackground?: 'default' | '1-level' | '2-level';
7
+ /** Фильтры */
8
+ columnFilters?: MobileChipChoiceRowProps<TFilters> & {
9
+ initialOpen?: boolean;
10
+ };
11
+ }>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ import { FilterFn } from '@tanstack/react-table';
2
+ export declare const fuzzyFilter: FilterFn<any>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fuzzyFilter = void 0;
4
+ const match_sorter_utils_1 = require("@tanstack/match-sorter-utils");
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ const fuzzyFilter = (row, columnId, value, addMeta) => {
7
+ const itemRank = (0, match_sorter_utils_1.rankItem)(row.getValue(columnId), value);
8
+ addMeta({
9
+ itemRank,
10
+ });
11
+ return itemRank.passed;
12
+ };
13
+ exports.fuzzyFilter = fuzzyFilter;
@@ -0,0 +1,2 @@
1
+ export * from './fuzzyFilter';
2
+ export * from './saveTableState';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./fuzzyFilter"), exports);
18
+ __exportStar(require("./saveTableState"), exports);
@@ -0,0 +1,4 @@
1
+ import { FiltersState } from '@snack-uikit/chips';
2
+ import { PersistedFilterState } from '@snack-uikit/toolbar';
3
+ import { MobileTableProps } from '../../types';
4
+ export declare const getPersistedStateValidator: <TData extends object, TFilters extends FiltersState = Record<string, unknown>>(columnFilters: MobileTableProps<TData, TFilters>["columnFilters"]) => (data: unknown) => data is PersistedFilterState<TFilters>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPersistedStateValidator = void 0;
4
+ const validators_1 = require("./validators");
5
+ const getPersistedStateValidator = (columnFilters) => (data) => {
6
+ const dataAsSettings = data;
7
+ const isPaginationValid = (0, validators_1.validatePaging)(dataAsSettings === null || dataAsSettings === void 0 ? void 0 : dataAsSettings.pagination);
8
+ const isSortingValid = (0, validators_1.validateSorting)(dataAsSettings === null || dataAsSettings === void 0 ? void 0 : dataAsSettings.ordering);
9
+ const isSearchValid = !(dataAsSettings === null || dataAsSettings === void 0 ? void 0 : dataAsSettings.search) || typeof (dataAsSettings === null || dataAsSettings === void 0 ? void 0 : dataAsSettings.search) === 'string';
10
+ const isFilterValid = Boolean((columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.filters) && (0, validators_1.validateFilter)(dataAsSettings.filter, columnFilters.filters));
11
+ return isPaginationValid && isSortingValid && isSearchValid && isFilterValid;
12
+ };
13
+ exports.getPersistedStateValidator = getPersistedStateValidator;
@@ -0,0 +1,3 @@
1
+ export * from './validators';
2
+ export * from './mappers';
3
+ export * from './getPersistedStateValidator';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./validators"), exports);
18
+ __exportStar(require("./mappers"), exports);
19
+ __exportStar(require("./getPersistedStateValidator"), exports);
@@ -0,0 +1,18 @@
1
+ import { RequestPayloadParams } from '@cloud-ru/ft-request-payload-transform';
2
+ import { PaginationState, SortingState } from '@tanstack/react-table';
3
+ import { FiltersState } from '@snack-uikit/chips';
4
+ import { PersistedFilterState } from '@snack-uikit/toolbar';
5
+ export declare const mapPaginationToTableState: (value?: RequestPayloadParams["pagination"]) => PaginationState;
6
+ export declare const mapSortToTableState: (value?: RequestPayloadParams["ordering"]) => SortingState;
7
+ export declare const mapPaginationToRequestPayload: (value?: PaginationState | RequestPayloadParams["pagination"]) => RequestPayloadParams["pagination"];
8
+ export declare const mapSortToRequestPayload: (value?: SortingState) => RequestPayloadParams["ordering"];
9
+ /** Вспомогательная функция для преобразования состояния таблицы к формату RequestPayloadParams */
10
+ export declare const formatTableStateToRequestPayload: <T extends FiltersState>({ pagination, sorting, search, filter, }: Omit<PersistedFilterState<T>, "pagination" | "sorting"> & {
11
+ pagination?: PaginationState | RequestPayloadParams["pagination"];
12
+ sorting?: SortingState;
13
+ }) => {
14
+ toObject(): Partial<RequestPayloadParams>;
15
+ toString(params?: {
16
+ encode?: boolean;
17
+ }): string;
18
+ };