@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 +11 -0
- package/dist/cjs/components/MobileTable/MobileTable.d.ts +1 -1
- package/dist/cjs/components/MobileTable/MobileTable.js +9 -5
- package/dist/cjs/components/MobileTable/types.d.ts +1 -1
- package/dist/esm/components/MobileTable/MobileTable.d.ts +1 -1
- package/dist/esm/components/MobileTable/MobileTable.js +10 -6
- package/dist/esm/components/MobileTable/types.d.ts +1 -1
- package/package.json +3 -3
- package/src/components/MobileTable/MobileTable.tsx +14 -5
- package/src/components/MobileTable/types.ts +1 -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
|
+
# 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:
|
|
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:
|
|
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.
|
|
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.
|
|
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": "
|
|
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={
|
|
342
|
-
indeterminate={
|
|
350
|
+
checked={checked}
|
|
351
|
+
indeterminate={indeterminate}
|
|
343
352
|
persist={
|
|
344
353
|
savedState?.id && savedState?.filterQueryKey
|
|
345
354
|
? {
|