@snack-uikit/table 0.37.2 → 0.37.3-preview-20442bcb.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/README.md +2 -2
- package/dist/cjs/components/Table/Table.js +4 -1
- package/dist/cjs/components/types.d.ts +9 -3
- package/dist/cjs/constants.d.ts +1 -0
- package/dist/cjs/constants.js +2 -1
- package/dist/cjs/types.d.ts +2 -2
- package/dist/esm/components/Table/Table.js +4 -1
- package/dist/esm/components/types.d.ts +9 -3
- package/dist/esm/constants.d.ts +1 -0
- package/dist/esm/constants.js +1 -0
- package/dist/esm/types.d.ts +2 -2
- package/package.json +2 -2
- package/src/components/Table/Table.tsx +13 -1
- package/src/components/types.ts +9 -3
- package/src/constants.ts +1 -0
- package/src/types.ts +2 -0
package/README.md
CHANGED
|
@@ -123,7 +123,7 @@ const columnDefinitions: ColumnDefinition<TableData>[] = [
|
|
|
123
123
|
| enableSelectPinned | `boolean` | - | Параметр отвечает за чекбокс выбора закрепленных строк |
|
|
124
124
|
| sorting | `{ initialState?: SortingState; state?: SortingState; onChange?(state: SortingState): void; }` | - | Параметры отвечают за возможность сортировки, их стоит использовать если нужно отслеживать состояние <br> <strong>initialState</strong>: Начальное состояние сортировки <br> <strong>state</strong>: Состояние сортировки, жестко устанавливаемое снаружи <br> <strong>onChange</strong>: Колбэк на изменение сортировки |
|
|
125
125
|
| columnsSettings | `{ enableDrag?: boolean; enableSettingsMenu?: boolean; }` | - | Параметры отвечают за настройки колонок <br> <strong>enableDrag</strong>: Включение сортировки порядка столбцов вручную перетаскиванием <br> <strong>enableSettingsMenu</strong>: Включение настроек показа колонок <br> |
|
|
126
|
-
| expanding | `{ getSubRows: (element: TData) => TData[]; expandingColumnDefinition: TreeColumnDefinitionProps<TData>; }` | - | Параметр отвечает за общие настройки раскрывающихся строк |
|
|
126
|
+
| expanding | `{ getSubRows: (element: TData) => TData[]; expandingColumnDefinition: TreeColumnDefinitionProps<TData>; state?: ExpandedState; onExpandedChange?(state: ExpandedState): void; }` | - | Параметр отвечает за общие настройки раскрывающихся строк <br> <strong>getSubRows</strong>: Метод отвечает за получение дочерних строк <br> <strong>expandingColumnDefinition</strong>: Описание колонок для дочерних строк <br> <strong>state</strong>: Состояние открытых строк <br> <strong>onExpandedChange</strong>: Колбэк на раскрытие строк <br> |
|
|
127
127
|
| rowSelection | `{ initialState?: RowSelectionState; state?: RowSelectionState; enable?: boolean \| ((row: Row<TData>) => boolean); multiRow?: boolean; onChange?(state: RowSelectionState): void; }` | - | Параметры отвечают за возможность выбора строк <br> <strong>initialState</strong>: Начальное состояние выбора строк <br> <strong>state</strong>: Состояние выбора строк, жестко устанавливаемое снаружи <br> <strong>enable</strong>: Колбэк определяющий можно ли выбрать строку <br> <strong>multiRow</strong>: Мульти-выбор строк (включен по-умолчанию, когда включается выбор) <br> <strong>onChange</strong>: Колбэк на выбор строк |
|
|
128
128
|
| search | `{ initialState?: string; state?: string; placeholder?: string; loading?: boolean; onChange?(value: string): void; }` | 'Search'<br> <strong>loading</strong>: Состояние загрузки в строке поиска <br> <strong>onChange</strong>: Колбэк на изменение данных в строке поиска | Параметры отвечают за глобальный поиск в таблице <br> <strong>initialState</strong>: Начальное состояние строки поиска <br> <strong>state</strong>: Состояние строки поиска, жестко устанавливаемое снаружи <br> <strong>placeholder</strong>: Placeholder строки поиска |
|
|
129
129
|
| enableFuzzySearch | `boolean` | - | Включить нечеткий поиск |
|
|
@@ -196,7 +196,7 @@ const columnDefinitions: ColumnDefinition<TableData>[] = [
|
|
|
196
196
|
| copyPinnedRows | `boolean` | false | Параметр отвечает за сохранение закрепленных строк в теле таблицы |
|
|
197
197
|
| enableSelectPinned | `boolean` | - | Параметр отвечает за чекбокс выбора закрепленных строк |
|
|
198
198
|
| columnsSettings | `{ enableDrag?: boolean; enableSettingsMenu?: boolean; }` | - | Параметры отвечают за настройки колонок <br> <strong>enableDrag</strong>: Включение сортировки порядка столбцов вручную перетаскиванием <br> <strong>enableSettingsMenu</strong>: Включение настроек показа колонок <br> |
|
|
199
|
-
| expanding | `{ getSubRows: (element: TData) => TData[]; expandingColumnDefinition: TreeColumnDefinitionProps<TData>; }` | - | Параметр отвечает за общие настройки раскрывающихся строк |
|
|
199
|
+
| expanding | `{ getSubRows: (element: TData) => TData[]; expandingColumnDefinition: TreeColumnDefinitionProps<TData>; state?: ExpandedState; onExpandedChange?(state: ExpandedState): void; }` | - | Параметр отвечает за общие настройки раскрывающихся строк <br> <strong>getSubRows</strong>: Метод отвечает за получение дочерних строк <br> <strong>expandingColumnDefinition</strong>: Описание колонок для дочерних строк <br> <strong>state</strong>: Состояние открытых строк <br> <strong>onExpandedChange</strong>: Колбэк на раскрытие строк <br> |
|
|
200
200
|
| rowSelection | `{ initialState?: RowSelectionState; state?: RowSelectionState; enable?: boolean \| ((row: Row<TData>) => boolean); multiRow?: boolean; onChange?(state: RowSelectionState): void; }` | - | Параметры отвечают за возможность выбора строк <br> <strong>initialState</strong>: Начальное состояние выбора строк <br> <strong>state</strong>: Состояние выбора строк, жестко устанавливаемое снаружи <br> <strong>enable</strong>: Колбэк определяющий можно ли выбрать строку <br> <strong>multiRow</strong>: Мульти-выбор строк (включен по-умолчанию, когда включается выбор) <br> <strong>onChange</strong>: Колбэк на выбор строк |
|
|
201
201
|
| enableFuzzySearch | `boolean` | - | Включить нечеткий поиск |
|
|
202
202
|
| rowAutoHeight | `boolean` | - | |
|
|
@@ -94,6 +94,7 @@ function Table(_a) {
|
|
|
94
94
|
pageSize
|
|
95
95
|
}), [pageSize]);
|
|
96
96
|
const [sorting, onSortingChange] = (0, hooks_1.useStateControl)(sortingProp, constants_1.DEFAULT_SORTING);
|
|
97
|
+
const [expanded, onExpandedChange] = (0, hooks_1.useStateControl)(expanding, constants_1.DEFAULT_EXPANDED);
|
|
97
98
|
const [pagination, onPaginationChange] = (0, hooks_1.useStateControl)(paginationProp, defaultPaginationState);
|
|
98
99
|
const {
|
|
99
100
|
filter,
|
|
@@ -184,7 +185,8 @@ function Table(_a) {
|
|
|
184
185
|
pagination,
|
|
185
186
|
rowPinning: expanding ? {
|
|
186
187
|
top: []
|
|
187
|
-
} : rowPinning
|
|
188
|
+
} : rowPinning,
|
|
189
|
+
expanded
|
|
188
190
|
},
|
|
189
191
|
pageCount,
|
|
190
192
|
defaultColumn: {
|
|
@@ -216,6 +218,7 @@ function Table(_a) {
|
|
|
216
218
|
getSubRows: expanding === null || expanding === void 0 ? void 0 : expanding.getSubRows,
|
|
217
219
|
filterFromLeafRows: Boolean(expanding),
|
|
218
220
|
enableSubRowSelection: true,
|
|
221
|
+
onExpandedChange,
|
|
219
222
|
getFilteredRowModel: (0, react_table_1.getFilteredRowModel)(),
|
|
220
223
|
getExpandedRowModel: (0, react_table_1.getExpandedRowModel)(),
|
|
221
224
|
enableColumnResizing: true,
|
|
@@ -4,7 +4,7 @@ import { FiltersState } from '@snack-uikit/chips';
|
|
|
4
4
|
import { FilterRow, ToolbarProps } from '@snack-uikit/toolbar';
|
|
5
5
|
import { WithSupportProps } from '@snack-uikit/utils';
|
|
6
6
|
import { EmptyStateProps, ExportButtonProps, RowClickHandler, TreeColumnDefinitionProps } from '../helperComponents';
|
|
7
|
-
import { ColumnDefinition } from '../types';
|
|
7
|
+
import { ColumnDefinition, ExpandedState } from '../types';
|
|
8
8
|
type BulkAction = Omit<NonNullable<ToolbarProps<Record<string, string>>['bulkActions']>[number], 'onClick'> & {
|
|
9
9
|
onClick?(selectionState: RowSelectionState, resetRowSelection: (defaultState?: boolean) => void): void;
|
|
10
10
|
};
|
|
@@ -37,11 +37,17 @@ type BaseTableProps<TData extends object, TFilters extends FiltersState = Record
|
|
|
37
37
|
enableDrag?: boolean;
|
|
38
38
|
enableSettingsMenu?: boolean;
|
|
39
39
|
};
|
|
40
|
-
/** Параметр отвечает за общие настройки раскрывающихся
|
|
40
|
+
/** Параметр отвечает за общие настройки раскрывающихся строк <br>
|
|
41
|
+
* <strong>getSubRows</strong>: Метод отвечает за получение дочерних строк <br>
|
|
42
|
+
* <strong>expandingColumnDefinition</strong>: Описание колонок для дочерних строк <br>
|
|
43
|
+
* <strong>state</strong>: Состояние открытых строк <br>
|
|
44
|
+
* <strong>onExpandedChange</strong>: Колбэк на раскрытие строк <br>
|
|
45
|
+
* */
|
|
41
46
|
expanding?: {
|
|
42
|
-
/** Метод отвечает за получение дочерних строк*/
|
|
43
47
|
getSubRows: (element: TData) => TData[] | undefined;
|
|
44
48
|
expandingColumnDefinition: TreeColumnDefinitionProps<TData>;
|
|
49
|
+
state?: ExpandedState;
|
|
50
|
+
onExpandedChange?(state: ExpandedState): void;
|
|
45
51
|
};
|
|
46
52
|
/** Параметры отвечают за возможность выбора строк <br>
|
|
47
53
|
* <strong>initialState</strong>: Начальное состояние выбора строк <br>
|
package/dist/cjs/constants.d.ts
CHANGED
|
@@ -43,6 +43,7 @@ export declare const DEFAULT_PAGE_SIZE = 10;
|
|
|
43
43
|
export declare const DEFAULT_SORTING: never[];
|
|
44
44
|
export declare const DEFAULT_FILTER_VISIBILITY: never[];
|
|
45
45
|
export declare const DEFAULT_ROW_SELECTION: {};
|
|
46
|
+
export declare const DEFAULT_EXPANDED: {};
|
|
46
47
|
export declare enum DefaultColumns {
|
|
47
48
|
Status = "snack_predefined_statusColumn",
|
|
48
49
|
Selection = "selectionCell",
|
package/dist/cjs/constants.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.DEFAULT_COLUMNS = exports.DefaultColumns = exports.DEFAULT_ROW_SELECTION = exports.DEFAULT_FILTER_VISIBILITY = exports.DEFAULT_SORTING = exports.DEFAULT_PAGE_SIZE = exports.SORT_FN = exports.TEST_IDS = exports.COLUMN_SETTINGS_MODE = exports.COLUMN_ALIGN = exports.COLUMN_PIN_POSITION = void 0;
|
|
6
|
+
exports.DEFAULT_COLUMNS = exports.DefaultColumns = exports.DEFAULT_EXPANDED = exports.DEFAULT_ROW_SELECTION = exports.DEFAULT_FILTER_VISIBILITY = exports.DEFAULT_SORTING = exports.DEFAULT_PAGE_SIZE = exports.SORT_FN = exports.TEST_IDS = exports.COLUMN_SETTINGS_MODE = exports.COLUMN_ALIGN = exports.COLUMN_PIN_POSITION = void 0;
|
|
7
7
|
exports.COLUMN_PIN_POSITION = {
|
|
8
8
|
Left: 'left',
|
|
9
9
|
Right: 'right'
|
|
@@ -50,6 +50,7 @@ exports.DEFAULT_PAGE_SIZE = 10;
|
|
|
50
50
|
exports.DEFAULT_SORTING = [];
|
|
51
51
|
exports.DEFAULT_FILTER_VISIBILITY = [];
|
|
52
52
|
exports.DEFAULT_ROW_SELECTION = {};
|
|
53
|
+
exports.DEFAULT_EXPANDED = {};
|
|
53
54
|
var DefaultColumns;
|
|
54
55
|
(function (DefaultColumns) {
|
|
55
56
|
DefaultColumns["Status"] = "snack_predefined_statusColumn";
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CellContext, ColumnDef, ColumnMeta, HeaderContext, PaginationState, RowSelectionOptions, RowSelectionState, SortingState } from '@tanstack/react-table';
|
|
1
|
+
import { CellContext, ColumnDef, ColumnMeta, ExpandedState, HeaderContext, PaginationState, RowSelectionOptions, RowSelectionState, SortingState } from '@tanstack/react-table';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { ToolbarProps } from '@snack-uikit/toolbar';
|
|
4
4
|
import { ValueOf } from '@snack-uikit/utils';
|
|
@@ -56,4 +56,4 @@ export type FilterableColumnDefinition<TData> = FilterableNormalColumnDefinition
|
|
|
56
56
|
export type ColumnDefinition<TData> = NormalColumnDefinition<TData> | PinnedColumnDefinition<TData> | FilterableColumnDefinition<TData>;
|
|
57
57
|
export type ColumnOrder = string[];
|
|
58
58
|
export type { RowActionsColumnDefProps, StatusColumnDefinitionProps, RowInfo, RowClickHandler, ActionsGenerator, CopyCellProps, MapStatusToAppearanceFnType, } from './helperComponents';
|
|
59
|
-
export type { ColumnPinPosition, PaginationState, SortingState, RowSelectionState, RowSelectionOptions, EmptyStateProps, ToolbarProps, HeaderContext, CellContext, };
|
|
59
|
+
export type { ColumnPinPosition, PaginationState, SortingState, RowSelectionState, RowSelectionOptions, EmptyStateProps, ToolbarProps, HeaderContext, CellContext, ExpandedState, };
|
|
@@ -20,7 +20,7 @@ import { SkeletonContextProvider } from '@snack-uikit/skeleton';
|
|
|
20
20
|
import { Toolbar } from '@snack-uikit/toolbar';
|
|
21
21
|
import { TruncateString } from '@snack-uikit/truncate-string';
|
|
22
22
|
import { extractSupportProps } from '@snack-uikit/utils';
|
|
23
|
-
import { DEFAULT_PAGE_SIZE, DEFAULT_ROW_SELECTION, DEFAULT_SORTING, DefaultColumns, TEST_IDS } from '../../constants';
|
|
23
|
+
import { DEFAULT_EXPANDED, DEFAULT_PAGE_SIZE, DEFAULT_ROW_SELECTION, DEFAULT_SORTING, DefaultColumns, TEST_IDS, } from '../../constants';
|
|
24
24
|
import { CellAutoResizeContext, useCellAutoResizeController } from '../../contexts';
|
|
25
25
|
import { BodyRow, ColumnsSettings, ExportButton, getColumnId, getRowActionsColumnDef, getStatusColumnDef, HeaderRow, STATUS_APPEARANCE, TableContext, TableEmptyState, TablePagination, useEmptyState, } from '../../helperComponents';
|
|
26
26
|
import { fuzzyFilter } from '../../utils';
|
|
@@ -41,6 +41,7 @@ export function Table(_a) {
|
|
|
41
41
|
pageSize,
|
|
42
42
|
}), [pageSize]);
|
|
43
43
|
const [sorting, onSortingChange] = useStateControl(sortingProp, DEFAULT_SORTING);
|
|
44
|
+
const [expanded, onExpandedChange] = useStateControl(expanding, DEFAULT_EXPANDED);
|
|
44
45
|
const [pagination, onPaginationChange] = useStateControl(paginationProp, defaultPaginationState);
|
|
45
46
|
const { filter, patchedFilter, setFilter, setFilterVisibility } = useFilters({ columnFilters });
|
|
46
47
|
const validatePersistedState = useMemo(() => (data) => {
|
|
@@ -110,6 +111,7 @@ export function Table(_a) {
|
|
|
110
111
|
sorting,
|
|
111
112
|
pagination,
|
|
112
113
|
rowPinning: expanding ? { top: [] } : rowPinning,
|
|
114
|
+
expanded,
|
|
113
115
|
},
|
|
114
116
|
pageCount,
|
|
115
117
|
defaultColumn: {
|
|
@@ -138,6 +140,7 @@ export function Table(_a) {
|
|
|
138
140
|
getSubRows: expanding === null || expanding === void 0 ? void 0 : expanding.getSubRows,
|
|
139
141
|
filterFromLeafRows: Boolean(expanding),
|
|
140
142
|
enableSubRowSelection: true,
|
|
143
|
+
onExpandedChange,
|
|
141
144
|
getFilteredRowModel: getFilteredRowModel(),
|
|
142
145
|
getExpandedRowModel: getExpandedRowModel(),
|
|
143
146
|
enableColumnResizing: true,
|
|
@@ -4,7 +4,7 @@ import { FiltersState } from '@snack-uikit/chips';
|
|
|
4
4
|
import { FilterRow, ToolbarProps } from '@snack-uikit/toolbar';
|
|
5
5
|
import { WithSupportProps } from '@snack-uikit/utils';
|
|
6
6
|
import { EmptyStateProps, ExportButtonProps, RowClickHandler, TreeColumnDefinitionProps } from '../helperComponents';
|
|
7
|
-
import { ColumnDefinition } from '../types';
|
|
7
|
+
import { ColumnDefinition, ExpandedState } from '../types';
|
|
8
8
|
type BulkAction = Omit<NonNullable<ToolbarProps<Record<string, string>>['bulkActions']>[number], 'onClick'> & {
|
|
9
9
|
onClick?(selectionState: RowSelectionState, resetRowSelection: (defaultState?: boolean) => void): void;
|
|
10
10
|
};
|
|
@@ -37,11 +37,17 @@ type BaseTableProps<TData extends object, TFilters extends FiltersState = Record
|
|
|
37
37
|
enableDrag?: boolean;
|
|
38
38
|
enableSettingsMenu?: boolean;
|
|
39
39
|
};
|
|
40
|
-
/** Параметр отвечает за общие настройки раскрывающихся
|
|
40
|
+
/** Параметр отвечает за общие настройки раскрывающихся строк <br>
|
|
41
|
+
* <strong>getSubRows</strong>: Метод отвечает за получение дочерних строк <br>
|
|
42
|
+
* <strong>expandingColumnDefinition</strong>: Описание колонок для дочерних строк <br>
|
|
43
|
+
* <strong>state</strong>: Состояние открытых строк <br>
|
|
44
|
+
* <strong>onExpandedChange</strong>: Колбэк на раскрытие строк <br>
|
|
45
|
+
* */
|
|
41
46
|
expanding?: {
|
|
42
|
-
/** Метод отвечает за получение дочерних строк*/
|
|
43
47
|
getSubRows: (element: TData) => TData[] | undefined;
|
|
44
48
|
expandingColumnDefinition: TreeColumnDefinitionProps<TData>;
|
|
49
|
+
state?: ExpandedState;
|
|
50
|
+
onExpandedChange?(state: ExpandedState): void;
|
|
45
51
|
};
|
|
46
52
|
/** Параметры отвечают за возможность выбора строк <br>
|
|
47
53
|
* <strong>initialState</strong>: Начальное состояние выбора строк <br>
|
package/dist/esm/constants.d.ts
CHANGED
|
@@ -43,6 +43,7 @@ export declare const DEFAULT_PAGE_SIZE = 10;
|
|
|
43
43
|
export declare const DEFAULT_SORTING: never[];
|
|
44
44
|
export declare const DEFAULT_FILTER_VISIBILITY: never[];
|
|
45
45
|
export declare const DEFAULT_ROW_SELECTION: {};
|
|
46
|
+
export declare const DEFAULT_EXPANDED: {};
|
|
46
47
|
export declare enum DefaultColumns {
|
|
47
48
|
Status = "snack_predefined_statusColumn",
|
|
48
49
|
Selection = "selectionCell",
|
package/dist/esm/constants.js
CHANGED
|
@@ -44,6 +44,7 @@ export const DEFAULT_PAGE_SIZE = 10;
|
|
|
44
44
|
export const DEFAULT_SORTING = [];
|
|
45
45
|
export const DEFAULT_FILTER_VISIBILITY = [];
|
|
46
46
|
export const DEFAULT_ROW_SELECTION = {};
|
|
47
|
+
export const DEFAULT_EXPANDED = {};
|
|
47
48
|
export var DefaultColumns;
|
|
48
49
|
(function (DefaultColumns) {
|
|
49
50
|
DefaultColumns["Status"] = "snack_predefined_statusColumn";
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CellContext, ColumnDef, ColumnMeta, HeaderContext, PaginationState, RowSelectionOptions, RowSelectionState, SortingState } from '@tanstack/react-table';
|
|
1
|
+
import { CellContext, ColumnDef, ColumnMeta, ExpandedState, HeaderContext, PaginationState, RowSelectionOptions, RowSelectionState, SortingState } from '@tanstack/react-table';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { ToolbarProps } from '@snack-uikit/toolbar';
|
|
4
4
|
import { ValueOf } from '@snack-uikit/utils';
|
|
@@ -56,4 +56,4 @@ export type FilterableColumnDefinition<TData> = FilterableNormalColumnDefinition
|
|
|
56
56
|
export type ColumnDefinition<TData> = NormalColumnDefinition<TData> | PinnedColumnDefinition<TData> | FilterableColumnDefinition<TData>;
|
|
57
57
|
export type ColumnOrder = string[];
|
|
58
58
|
export type { RowActionsColumnDefProps, StatusColumnDefinitionProps, RowInfo, RowClickHandler, ActionsGenerator, CopyCellProps, MapStatusToAppearanceFnType, } from './helperComponents';
|
|
59
|
-
export type { ColumnPinPosition, PaginationState, SortingState, RowSelectionState, RowSelectionOptions, EmptyStateProps, ToolbarProps, HeaderContext, CellContext, };
|
|
59
|
+
export type { ColumnPinPosition, PaginationState, SortingState, RowSelectionState, RowSelectionOptions, EmptyStateProps, ToolbarProps, HeaderContext, CellContext, ExpandedState, };
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"title": "Table",
|
|
7
|
-
"version": "0.37.
|
|
7
|
+
"version": "0.37.3-preview-20442bcb.0",
|
|
8
8
|
"sideEffects": [
|
|
9
9
|
"*.css",
|
|
10
10
|
"*.woff",
|
|
@@ -66,5 +66,5 @@
|
|
|
66
66
|
"peerDependencies": {
|
|
67
67
|
"@snack-uikit/locale": "*"
|
|
68
68
|
},
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "cb7321ae85233da3b8da83934e39fbbcbb6b0295"
|
|
70
70
|
}
|
|
@@ -2,6 +2,7 @@ import { DndContext } from '@dnd-kit/core';
|
|
|
2
2
|
import {
|
|
3
3
|
CellContext,
|
|
4
4
|
ColumnPinningState,
|
|
5
|
+
ExpandedState,
|
|
5
6
|
getCoreRowModel,
|
|
6
7
|
getExpandedRowModel,
|
|
7
8
|
getFilteredRowModel,
|
|
@@ -24,7 +25,14 @@ import { type PersistedFilterState, Toolbar, ToolbarProps } from '@snack-uikit/t
|
|
|
24
25
|
import { TruncateString } from '@snack-uikit/truncate-string';
|
|
25
26
|
import { extractSupportProps } from '@snack-uikit/utils';
|
|
26
27
|
|
|
27
|
-
import {
|
|
28
|
+
import {
|
|
29
|
+
DEFAULT_EXPANDED,
|
|
30
|
+
DEFAULT_PAGE_SIZE,
|
|
31
|
+
DEFAULT_ROW_SELECTION,
|
|
32
|
+
DEFAULT_SORTING,
|
|
33
|
+
DefaultColumns,
|
|
34
|
+
TEST_IDS,
|
|
35
|
+
} from '../../constants';
|
|
28
36
|
import { CellAutoResizeContext, useCellAutoResizeController } from '../../contexts';
|
|
29
37
|
import {
|
|
30
38
|
BodyRow,
|
|
@@ -134,6 +142,8 @@ export function Table<TData extends object, TFilters extends FiltersState = Reco
|
|
|
134
142
|
|
|
135
143
|
const [sorting, onSortingChange] = useStateControl<SortingState>(sortingProp, DEFAULT_SORTING);
|
|
136
144
|
|
|
145
|
+
const [expanded, onExpandedChange] = useStateControl<ExpandedState>(expanding, DEFAULT_EXPANDED);
|
|
146
|
+
|
|
137
147
|
const [pagination, onPaginationChange] = useStateControl<PaginationState>(paginationProp, defaultPaginationState);
|
|
138
148
|
|
|
139
149
|
const { filter, patchedFilter, setFilter, setFilterVisibility } = useFilters({ columnFilters });
|
|
@@ -235,6 +245,7 @@ export function Table<TData extends object, TFilters extends FiltersState = Reco
|
|
|
235
245
|
sorting,
|
|
236
246
|
pagination,
|
|
237
247
|
rowPinning: expanding ? { top: [] } : rowPinning,
|
|
248
|
+
expanded,
|
|
238
249
|
},
|
|
239
250
|
pageCount,
|
|
240
251
|
defaultColumn: {
|
|
@@ -266,6 +277,7 @@ export function Table<TData extends object, TFilters extends FiltersState = Reco
|
|
|
266
277
|
getSubRows: expanding?.getSubRows,
|
|
267
278
|
filterFromLeafRows: Boolean(expanding),
|
|
268
279
|
enableSubRowSelection: true,
|
|
280
|
+
onExpandedChange,
|
|
269
281
|
getFilteredRowModel: getFilteredRowModel(),
|
|
270
282
|
getExpandedRowModel: getExpandedRowModel(),
|
|
271
283
|
enableColumnResizing: true,
|
package/src/components/types.ts
CHANGED
|
@@ -13,7 +13,7 @@ import { FilterRow, ToolbarProps } from '@snack-uikit/toolbar';
|
|
|
13
13
|
import { WithSupportProps } from '@snack-uikit/utils';
|
|
14
14
|
|
|
15
15
|
import { EmptyStateProps, ExportButtonProps, RowClickHandler, TreeColumnDefinitionProps } from '../helperComponents';
|
|
16
|
-
import { ColumnDefinition } from '../types';
|
|
16
|
+
import { ColumnDefinition, ExpandedState } from '../types';
|
|
17
17
|
|
|
18
18
|
type BulkAction = Omit<NonNullable<ToolbarProps<Record<string, string>>['bulkActions']>[number], 'onClick'> & {
|
|
19
19
|
onClick?(selectionState: RowSelectionState, resetRowSelection: (defaultState?: boolean) => void): void;
|
|
@@ -50,11 +50,17 @@ type BaseTableProps<TData extends object, TFilters extends FiltersState = Record
|
|
|
50
50
|
enableSettingsMenu?: boolean;
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
-
/** Параметр отвечает за общие настройки раскрывающихся
|
|
53
|
+
/** Параметр отвечает за общие настройки раскрывающихся строк <br>
|
|
54
|
+
* <strong>getSubRows</strong>: Метод отвечает за получение дочерних строк <br>
|
|
55
|
+
* <strong>expandingColumnDefinition</strong>: Описание колонок для дочерних строк <br>
|
|
56
|
+
* <strong>state</strong>: Состояние открытых строк <br>
|
|
57
|
+
* <strong>onExpandedChange</strong>: Колбэк на раскрытие строк <br>
|
|
58
|
+
* */
|
|
54
59
|
expanding?: {
|
|
55
|
-
/** Метод отвечает за получение дочерних строк*/
|
|
56
60
|
getSubRows: (element: TData) => TData[] | undefined;
|
|
57
61
|
expandingColumnDefinition: TreeColumnDefinitionProps<TData>;
|
|
62
|
+
state?: ExpandedState;
|
|
63
|
+
onExpandedChange?(state: ExpandedState): void;
|
|
58
64
|
};
|
|
59
65
|
/** Параметры отвечают за возможность выбора строк <br>
|
|
60
66
|
* <strong>initialState</strong>: Начальное состояние выбора строк <br>
|
package/src/constants.ts
CHANGED
|
@@ -49,6 +49,7 @@ export const DEFAULT_PAGE_SIZE = 10;
|
|
|
49
49
|
export const DEFAULT_SORTING = [];
|
|
50
50
|
export const DEFAULT_FILTER_VISIBILITY = [];
|
|
51
51
|
export const DEFAULT_ROW_SELECTION = {};
|
|
52
|
+
export const DEFAULT_EXPANDED = {};
|
|
52
53
|
|
|
53
54
|
export enum DefaultColumns {
|
|
54
55
|
Status = 'snack_predefined_statusColumn',
|
package/src/types.ts
CHANGED