@cloud-ru/uikit-product-mobile-table 2.1.0 → 2.2.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.
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
+ # 2.2.0 (2026-02-13)
7
+
8
+
9
+ ### Features
10
+
11
+ * **EVODP-8477:** Added table toolbar checkbox selection options. ([b279016](https://github.com/cloud-ru-tech/uikit-product/commit/b279016a9a5427744ede9704579ca2db13293213))
12
+
13
+
14
+
15
+
16
+
6
17
  # 2.1.0 (2026-02-12)
7
18
 
8
19
 
@@ -1,6 +1,6 @@
1
1
  import { FiltersState } from '@cloud-ru/uikit-product-mobile-chips';
2
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;
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, toolbarCheckBoxMode, ...rest }: MobileTableProps<TData, TFilters>): import("react/jsx-runtime").JSX.Element;
4
4
  export declare namespace MobileTable {
5
5
  var getRowActionsColumnDef: typeof import("../../helperComponents").getRowActionsColumnDef;
6
6
  var getStatusColumnDef: typeof import("../../helperComponents").getStatusColumnDef;
@@ -30,7 +30,7 @@ const hooks_1 = require("./hooks");
30
30
  const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
31
31
  const utils_1 = require("./utils");
32
32
  function MobileTable(_a) {
33
- 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"]);
33
+ 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, toolbarCheckBoxMode } = _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", "toolbarCheckBoxMode"]);
34
34
  const defaultPaginationState = (0, react_1.useMemo)(() => ({ pageIndex: 0, pageSize: constants_1.DEFAULT_PAGE_SIZE }), []);
35
35
  const { state: sorting, onStateChange: onSortingChange } = (0, hooks_1.useStateControl)(sortingProp, []);
36
36
  const { state: globalFilter, onStateChange: onGlobalFilterChange } = (0, hooks_1.useStateControl)(search, '');
@@ -152,10 +152,11 @@ function MobileTable(_a) {
152
152
  const bulkActions = (0, react_1.useMemo)(() => enableSelection
153
153
  ? bulkActionsProp === null || bulkActionsProp === void 0 ? void 0 : bulkActionsProp.map(action => (Object.assign(Object.assign({}, action), { onClick: () => { var _a; return (_a = action.onClick) === null || _a === void 0 ? void 0 : _a.call(action, table.getState().rowSelection, table.resetRowSelection); } })))
154
154
  : undefined, [bulkActionsProp, enableSelection, table]);
155
+ const isAllRowsMode = toolbarCheckBoxMode === table_1.ToolbarCheckBoxMode.AllRows;
155
156
  const handleOnToolbarCheck = (0, react_1.useCallback)(() => {
156
157
  if (!loading && table.getTopRows().length) {
157
158
  const centerRows = table.getCenterRows();
158
- const isSomeRowsSelected = table.getIsSomePageRowsSelected();
159
+ const isSomeRowsSelected = isAllRowsMode ? table.getIsSomeRowsSelected() : table.getIsSomePageRowsSelected();
159
160
  const isAllCenterRowsSelected = centerRows.every(row => row.getIsSelected());
160
161
  if (isAllCenterRowsSelected) {
161
162
  table.resetRowSelection();
@@ -165,10 +166,10 @@ function MobileTable(_a) {
165
166
  return;
166
167
  }
167
168
  if (!loading && (rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.multiRow)) {
168
- table.toggleAllPageRowsSelected();
169
+ isAllRowsMode ? table.toggleAllRowsSelected() : table.toggleAllPageRowsSelected();
169
170
  return;
170
171
  }
171
- }, [loading, rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.multiRow, table]);
172
+ }, [isAllRowsMode, loading, rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.multiRow, table]);
172
173
  const selectionMode = (rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.multiRow)
173
174
  ? 'multiple'
174
175
  : 'single';
@@ -184,6 +185,9 @@ function MobileTable(_a) {
184
185
  onPaginationChange,
185
186
  autoResetPageIndex,
186
187
  });
188
+ const { checked, indeterminate } = isAllRowsMode
189
+ ? { checked: table.getIsAllRowsSelected(), indeterminate: table.getIsSomeRowsSelected() }
190
+ : { checked: table.getIsAllPageRowsSelected(), indeterminate: table.getIsSomePageRowsSelected() };
187
191
  return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: (0, classnames_1.default)(styles_module_scss_1.default.tableWrapper, className) }, (0, uikit_product_utils_1.extractSupportProps)(rest), { children: [(!suppressToolbar || columnFilters) && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.header, "data-background": headerBackground, children: (0, jsx_runtime_1.jsx)(uikit_product_mobile_toolbar_1.MobileToolbar, { search: suppressSearch
188
192
  ? undefined
189
193
  : {
@@ -191,7 +195,7 @@ function MobileTable(_a) {
191
195
  onChange: onGlobalFilterChange,
192
196
  loading: search === null || search === void 0 ? void 0 : search.loading,
193
197
  placeholder: (search === null || search === void 0 ? void 0 : search.placeholder) || t('searchPlaceholder'),
194
- }, 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)
198
+ }, 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: checked, indeterminate: indeterminate, persist: (savedState === null || savedState === void 0 ? void 0 : savedState.id) && (savedState === null || savedState === void 0 ? void 0 : savedState.filterQueryKey)
195
199
  ? {
196
200
  id: savedState.id,
197
201
  filterQueryKey: savedState.filterQueryKey,
@@ -1,7 +1,7 @@
1
1
  import { FiltersState, MobileChipChoiceRowProps } from '@cloud-ru/uikit-product-mobile-chips';
2
2
  import { WithSupportProps } from '@cloud-ru/uikit-product-utils';
3
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<{
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' | 'toolbarCheckBoxMode'> & WithSupportProps<{
5
5
  headlineId?: string;
6
6
  headerBackground?: 'default' | '1-level' | '2-level';
7
7
  /** Фильтры */
@@ -1,6 +1,6 @@
1
1
  import { FiltersState } from '@cloud-ru/uikit-product-mobile-chips';
2
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;
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, toolbarCheckBoxMode, ...rest }: MobileTableProps<TData, TFilters>): import("react/jsx-runtime").JSX.Element;
4
4
  export declare namespace MobileTable {
5
5
  var getRowActionsColumnDef: typeof import("../../helperComponents").getRowActionsColumnDef;
6
6
  var getStatusColumnDef: typeof import("../../helperComponents").getStatusColumnDef;
@@ -17,14 +17,14 @@ import { useLocale } from '@cloud-ru/uikit-product-locale';
17
17
  import { MobileToolbar } from '@cloud-ru/uikit-product-mobile-toolbar';
18
18
  import { extractSupportProps } from '@cloud-ru/uikit-product-utils';
19
19
  import { SkeletonContextProvider } from '@snack-uikit/skeleton';
20
- import { getPinnedGroups, useColumnOrderByDrag, useColumnSettings, usePageReset, } from '@snack-uikit/table';
20
+ import { getPinnedGroups, ToolbarCheckBoxMode, useColumnOrderByDrag, useColumnSettings, usePageReset, } from '@snack-uikit/table';
21
21
  import { DEFAULT_PAGE_SIZE } from '../../constants';
22
22
  import { ColumnsSettings, getRowActionsColumnDef, getStatusColumnDef, TableCard, TableEmptyState, TablePagination, TableSorting, useEmptyState, } from '../../helperComponents';
23
23
  import { useFilters, useLoadingTable, useStateControl } from './hooks';
24
24
  import styles from './styles.module.css';
25
25
  import { fuzzyFilter, getPersistedStateValidator, mapPaginationToRequestPayload, mapPaginationToTableState, mapSortToRequestPayload, mapSortToTableState, } from './utils';
26
26
  export function MobileTable(_a) {
27
- 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"]);
27
+ 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, toolbarCheckBoxMode } = _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", "toolbarCheckBoxMode"]);
28
28
  const defaultPaginationState = useMemo(() => ({ pageIndex: 0, pageSize: DEFAULT_PAGE_SIZE }), []);
29
29
  const { state: sorting, onStateChange: onSortingChange } = useStateControl(sortingProp, []);
30
30
  const { state: globalFilter, onStateChange: onGlobalFilterChange } = useStateControl(search, '');
@@ -146,10 +146,11 @@ export function MobileTable(_a) {
146
146
  const bulkActions = useMemo(() => enableSelection
147
147
  ? bulkActionsProp === null || bulkActionsProp === void 0 ? void 0 : bulkActionsProp.map(action => (Object.assign(Object.assign({}, action), { onClick: () => { var _a; return (_a = action.onClick) === null || _a === void 0 ? void 0 : _a.call(action, table.getState().rowSelection, table.resetRowSelection); } })))
148
148
  : undefined, [bulkActionsProp, enableSelection, table]);
149
+ const isAllRowsMode = toolbarCheckBoxMode === ToolbarCheckBoxMode.AllRows;
149
150
  const handleOnToolbarCheck = useCallback(() => {
150
151
  if (!loading && table.getTopRows().length) {
151
152
  const centerRows = table.getCenterRows();
152
- const isSomeRowsSelected = table.getIsSomePageRowsSelected();
153
+ const isSomeRowsSelected = isAllRowsMode ? table.getIsSomeRowsSelected() : table.getIsSomePageRowsSelected();
153
154
  const isAllCenterRowsSelected = centerRows.every(row => row.getIsSelected());
154
155
  if (isAllCenterRowsSelected) {
155
156
  table.resetRowSelection();
@@ -159,10 +160,10 @@ export function MobileTable(_a) {
159
160
  return;
160
161
  }
161
162
  if (!loading && (rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.multiRow)) {
162
- table.toggleAllPageRowsSelected();
163
+ isAllRowsMode ? table.toggleAllRowsSelected() : table.toggleAllPageRowsSelected();
163
164
  return;
164
165
  }
165
- }, [loading, rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.multiRow, table]);
166
+ }, [isAllRowsMode, loading, rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.multiRow, table]);
166
167
  const selectionMode = (rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.multiRow)
167
168
  ? 'multiple'
168
169
  : 'single';
@@ -178,6 +179,9 @@ export function MobileTable(_a) {
178
179
  onPaginationChange,
179
180
  autoResetPageIndex,
180
181
  });
182
+ const { checked, indeterminate } = isAllRowsMode
183
+ ? { checked: table.getIsAllRowsSelected(), indeterminate: table.getIsSomeRowsSelected() }
184
+ : { checked: table.getIsAllPageRowsSelected(), indeterminate: table.getIsSomePageRowsSelected() };
181
185
  return (_jsxs("div", Object.assign({ className: cn(styles.tableWrapper, className) }, extractSupportProps(rest), { children: [(!suppressToolbar || columnFilters) && (_jsx("div", { className: styles.header, "data-background": headerBackground, children: _jsx(MobileToolbar, { search: suppressSearch
182
186
  ? undefined
183
187
  : {
@@ -185,7 +189,7 @@ export function MobileTable(_a) {
185
189
  onChange: onGlobalFilterChange,
186
190
  loading: search === null || search === void 0 ? void 0 : search.loading,
187
191
  placeholder: (search === null || search === void 0 ? void 0 : search.placeholder) || t('searchPlaceholder'),
188
- }, onRefresh: onRefresh ? handleOnRefresh : undefined, outline: true, filterRow: patchedFilter, after: toolbarAfter || shouldShowSorting || (areColumnsSettingsEnabled && columnsSettings) ? (_jsxs(_Fragment, { children: [toolbarAfter, shouldShowSorting && (_jsx(TableSorting, { table: table, columnDefinitions: columnDefinitions, enabledColumns: areColumnsSettingsEnabled ? enabledColumns : undefined, areColumnsSettingsEnabled: areColumnsSettingsEnabled })), areColumnsSettingsEnabled && columnsSettings && (_jsx(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)
192
+ }, onRefresh: onRefresh ? handleOnRefresh : undefined, outline: true, filterRow: patchedFilter, after: toolbarAfter || shouldShowSorting || (areColumnsSettingsEnabled && columnsSettings) ? (_jsxs(_Fragment, { children: [toolbarAfter, shouldShowSorting && (_jsx(TableSorting, { table: table, columnDefinitions: columnDefinitions, enabledColumns: areColumnsSettingsEnabled ? enabledColumns : undefined, areColumnsSettingsEnabled: areColumnsSettingsEnabled })), areColumnsSettingsEnabled && columnsSettings && (_jsx(ColumnsSettings, { columnsSettings: columnsSettings, enabledColumns: enabledColumns, setEnabledColumns: setEnabledColumns }))] })) : undefined, moreActions: moreActions, bulkActions: bulkActions, selectedCount: table.getSelectedRowModel().rows.length, selectionMode: selectionMode, onCheck: enableSelection ? handleOnToolbarCheck : undefined, checked: checked, indeterminate: indeterminate, persist: (savedState === null || savedState === void 0 ? void 0 : savedState.id) && (savedState === null || savedState === void 0 ? void 0 : savedState.filterQueryKey)
189
193
  ? {
190
194
  id: savedState.id,
191
195
  filterQueryKey: savedState.filterQueryKey,
@@ -1,7 +1,7 @@
1
1
  import { FiltersState, MobileChipChoiceRowProps } from '@cloud-ru/uikit-product-mobile-chips';
2
2
  import { WithSupportProps } from '@cloud-ru/uikit-product-utils';
3
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<{
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' | 'toolbarCheckBoxMode'> & WithSupportProps<{
5
5
  headlineId?: string;
6
6
  headerBackground?: 'default' | '1-level' | '2-level';
7
7
  /** Фильтры */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloud-ru/uikit-product-mobile-table",
3
3
  "title": "Mobile Table",
4
- "version": "2.1.0",
4
+ "version": "2.2.0",
5
5
  "sideEffects": [
6
6
  "*.css",
7
7
  "*.woff",
@@ -51,7 +51,7 @@
51
51
  "@snack-uikit/pagination": "0.10.21",
52
52
  "@snack-uikit/skeleton": "0.6.9",
53
53
  "@snack-uikit/status": "0.10.7",
54
- "@snack-uikit/table": "0.37.25",
54
+ "@snack-uikit/table": "0.37.33",
55
55
  "@snack-uikit/toggles": "0.13.23",
56
56
  "@snack-uikit/toolbar": "0.14.15",
57
57
  "@snack-uikit/utils": "4.0.1",
@@ -67,5 +67,5 @@
67
67
  "devDependencies": {
68
68
  "@types/lodash.debounce": "4.0.9"
69
69
  },
70
- "gitHead": "bf40df9d8de45b5a9271b9ed306ee688589e151f"
70
+ "gitHead": "93283bb20fa7ba3249ff4a9bea109848b79bac63"
71
71
  }
@@ -19,6 +19,7 @@ import { SkeletonContextProvider } from '@snack-uikit/skeleton';
19
19
  import {
20
20
  getPinnedGroups,
21
21
  PaginationState,
22
+ ToolbarCheckBoxMode,
22
23
  useColumnOrderByDrag,
23
24
  useColumnSettings,
24
25
  usePageReset,
@@ -80,6 +81,7 @@ export function MobileTable<TData extends object, TFilters extends FiltersState
80
81
  bulkActions: bulkActionsProp,
81
82
  columnsSettings: columnsSettingsProp,
82
83
  savedState,
84
+ toolbarCheckBoxMode,
83
85
  ...rest
84
86
  }: MobileTableProps<TData, TFilters>) {
85
87
  const defaultPaginationState = useMemo(() => ({ pageIndex: 0, pageSize: DEFAULT_PAGE_SIZE }), []);
@@ -248,10 +250,13 @@ export function MobileTable<TData extends object, TFilters extends FiltersState
248
250
  : undefined,
249
251
  [bulkActionsProp, enableSelection, table],
250
252
  );
253
+
254
+ const isAllRowsMode = toolbarCheckBoxMode === ToolbarCheckBoxMode.AllRows;
255
+
251
256
  const handleOnToolbarCheck = useCallback(() => {
252
257
  if (!loading && table.getTopRows().length) {
253
258
  const centerRows = table.getCenterRows();
254
- const isSomeRowsSelected = table.getIsSomePageRowsSelected();
259
+ const isSomeRowsSelected = isAllRowsMode ? table.getIsSomeRowsSelected() : table.getIsSomePageRowsSelected();
255
260
  const isAllCenterRowsSelected = centerRows.every(row => row.getIsSelected());
256
261
 
257
262
  if (isAllCenterRowsSelected) {
@@ -264,10 +269,10 @@ export function MobileTable<TData extends object, TFilters extends FiltersState
264
269
  }
265
270
 
266
271
  if (!loading && rowSelectionProp?.multiRow) {
267
- table.toggleAllPageRowsSelected();
272
+ isAllRowsMode ? table.toggleAllRowsSelected() : table.toggleAllPageRowsSelected();
268
273
  return;
269
274
  }
270
- }, [loading, rowSelectionProp?.multiRow, table]);
275
+ }, [isAllRowsMode, loading, rowSelectionProp?.multiRow, table]);
271
276
 
272
277
  const selectionMode: MobileToolbarProps<TFilters>['selectionMode'] = rowSelectionProp?.multiRow
273
278
  ? 'multiple'
@@ -293,6 +298,10 @@ export function MobileTable<TData extends object, TFilters extends FiltersState
293
298
  autoResetPageIndex,
294
299
  });
295
300
 
301
+ const { checked, indeterminate } = isAllRowsMode
302
+ ? { checked: table.getIsAllRowsSelected(), indeterminate: table.getIsSomeRowsSelected() }
303
+ : { checked: table.getIsAllPageRowsSelected(), indeterminate: table.getIsSomePageRowsSelected() };
304
+
296
305
  return (
297
306
  <div className={cn(styles.tableWrapper, className)} {...extractSupportProps(rest)}>
298
307
  {(!suppressToolbar || columnFilters) && (
@@ -338,8 +347,8 @@ export function MobileTable<TData extends object, TFilters extends FiltersState
338
347
  selectedCount={table.getSelectedRowModel().rows.length}
339
348
  selectionMode={selectionMode}
340
349
  onCheck={enableSelection ? handleOnToolbarCheck : undefined}
341
- checked={table.getIsAllPageRowsSelected()}
342
- indeterminate={table.getIsSomePageRowsSelected()}
350
+ checked={checked}
351
+ indeterminate={indeterminate}
343
352
  persist={
344
353
  savedState?.id && savedState?.filterQueryKey
345
354
  ? {
@@ -33,6 +33,7 @@ export type MobileTableProps<TData extends object, TFilters extends FiltersState
33
33
  | 'savedState'
34
34
  | 'autoResetPageIndex'
35
35
  | 'toolbarAfter'
36
+ | 'toolbarCheckBoxMode'
36
37
  > &
37
38
  WithSupportProps<{
38
39
  headlineId?: string;