@cloud-ru/uikit-product-mobile-table 0.16.3 → 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 +11 -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 +8 -5
  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,17 @@
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
+
6
17
  ## 0.16.3 (2025-12-17)
7
18
 
8
19
  ### 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
+ };