@snack-uikit/table 0.37.15 → 0.37.16-preview-7979881e.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 +8 -4
- package/dist/cjs/components/types.d.ts +2 -0
- package/dist/cjs/helperComponents/Rows/BodyRow.d.ts +2 -1
- package/dist/cjs/helperComponents/Rows/BodyRow.js +3 -1
- package/dist/cjs/helperComponents/Rows/styles.module.css +3 -1
- package/dist/esm/components/Table/Table.js +1 -1
- package/dist/esm/components/types.d.ts +2 -0
- package/dist/esm/helperComponents/Rows/BodyRow.d.ts +2 -1
- package/dist/esm/helperComponents/Rows/BodyRow.js +2 -2
- package/dist/esm/helperComponents/Rows/styles.module.css +3 -1
- package/package.json +2 -2
- package/src/components/Table/Table.tsx +10 -1
- package/src/components/types.ts +2 -0
- package/src/helperComponents/Rows/BodyRow.tsx +3 -0
- package/src/helperComponents/Rows/styles.module.scss +3 -1
package/README.md
CHANGED
|
@@ -126,7 +126,7 @@ const columnDefinitions: ColumnDefinition<TableData>[] = [
|
|
|
126
126
|
| sorting | `{ initialState?: SortingState; state?: SortingState; onChange?(state: SortingState): void; }` | - | Параметры отвечают за возможность сортировки, их стоит использовать если нужно отслеживать состояние <br> <strong>initialState</strong>: Начальное состояние сортировки <br> <strong>state</strong>: Состояние сортировки, жестко устанавливаемое снаружи <br> <strong>onChange</strong>: Колбэк на изменение сортировки |
|
|
127
127
|
| columnsSettings | `{ enableDrag?: boolean; enableSettingsMenu?: boolean; }` | - | Параметры отвечают за настройки колонок <br> <strong>enableDrag</strong>: Включение сортировки порядка столбцов вручную перетаскиванием <br> <strong>enableSettingsMenu</strong>: Включение настроек показа колонок <br> |
|
|
128
128
|
| expanding | `{ getSubRows: (element: TData) => TData[]; expandingColumnDefinition: TreeColumnDefinitionProps<TData>; state?: ExpandedState; onChange?(state: ExpandedState): void; }` | - | Параметр отвечает за общие настройки раскрывающихся строк <br> <strong>getSubRows</strong>: Метод отвечает за получение дочерних строк <br> <strong>expandingColumnDefinition</strong>: Описание колонок для дочерних строк <br> <strong>state</strong>: Состояние открытых строк <br> <strong>onExpandedChange</strong>: Колбэк на раскрытие строк <br> |
|
|
129
|
-
| 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>: Колбэк на выбор строк |
|
|
129
|
+
| rowSelection | `{ initialState?: RowSelectionState; state?: RowSelectionState; enable?: boolean \| ((row: Row<TData>) => boolean); multiRow?: boolean; onChange?(state: RowSelectionState): void; appearance?: "disabled" \| "hide-check"; }` | - | Параметры отвечают за возможность выбора строк <br> <strong>initialState</strong>: Начальное состояние выбора строк <br> <strong>state</strong>: Состояние выбора строк, жестко устанавливаемое снаружи <br> <strong>enable</strong>: Колбэк определяющий можно ли выбрать строку <br> <strong>appearance</strong>: Внешний вид недоступной для выбора строки (по дефолту = disabled) <br> <strong>multiRow</strong>: Мульти-выбор строк (включен по-умолчанию, когда включается выбор) <br> <strong>onChange</strong>: Колбэк на выбор строк |
|
|
130
130
|
| 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 строки поиска |
|
|
131
131
|
| enableFuzzySearch | `boolean` | - | Включить нечеткий поиск |
|
|
132
132
|
| rowAutoHeight | `boolean` | - | |
|
|
@@ -200,7 +200,7 @@ const columnDefinitions: ColumnDefinition<TableData>[] = [
|
|
|
200
200
|
| enableSelectPinned | `boolean` | - | Параметр отвечает за чекбокс выбора закрепленных строк |
|
|
201
201
|
| columnsSettings | `{ enableDrag?: boolean; enableSettingsMenu?: boolean; }` | - | Параметры отвечают за настройки колонок <br> <strong>enableDrag</strong>: Включение сортировки порядка столбцов вручную перетаскиванием <br> <strong>enableSettingsMenu</strong>: Включение настроек показа колонок <br> |
|
|
202
202
|
| expanding | `{ getSubRows: (element: TData) => TData[]; expandingColumnDefinition: TreeColumnDefinitionProps<TData>; state?: ExpandedState; onChange?(state: ExpandedState): void; }` | - | Параметр отвечает за общие настройки раскрывающихся строк <br> <strong>getSubRows</strong>: Метод отвечает за получение дочерних строк <br> <strong>expandingColumnDefinition</strong>: Описание колонок для дочерних строк <br> <strong>state</strong>: Состояние открытых строк <br> <strong>onExpandedChange</strong>: Колбэк на раскрытие строк <br> |
|
|
203
|
-
| 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>: Колбэк на выбор строк |
|
|
203
|
+
| rowSelection | `{ initialState?: RowSelectionState; state?: RowSelectionState; enable?: boolean \| ((row: Row<TData>) => boolean); multiRow?: boolean; onChange?(state: RowSelectionState): void; appearance?: "disabled" \| "hide-check"; }` | - | Параметры отвечают за возможность выбора строк <br> <strong>initialState</strong>: Начальное состояние выбора строк <br> <strong>state</strong>: Состояние выбора строк, жестко устанавливаемое снаружи <br> <strong>enable</strong>: Колбэк определяющий можно ли выбрать строку <br> <strong>appearance</strong>: Внешний вид недоступной для выбора строки (по дефолту = disabled) <br> <strong>multiRow</strong>: Мульти-выбор строк (включен по-умолчанию, когда включается выбор) <br> <strong>onChange</strong>: Колбэк на выбор строк |
|
|
204
204
|
| enableFuzzySearch | `boolean` | - | Включить нечеткий поиск |
|
|
205
205
|
| rowAutoHeight | `boolean` | - | |
|
|
206
206
|
| onRowClick | `RowClickHandler<TData>` | - | Колбэк клика по строке |
|
|
@@ -457,7 +457,8 @@ function Table(_a) {
|
|
|
457
457
|
}), loadingTableRows.map(row => (0, jsx_runtime_1.jsx)(helperComponents_1.BodyRow, {
|
|
458
458
|
row: row,
|
|
459
459
|
rowAutoHeight: rowAutoHeight,
|
|
460
|
-
columnOrder: columnOrder
|
|
460
|
+
columnOrder: columnOrder,
|
|
461
|
+
disabledRowAppearance: rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.appearance
|
|
461
462
|
}, row.id))]
|
|
462
463
|
}) : (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, {
|
|
463
464
|
children: [centerRows.length || filteredTopRows.length ? (0, jsx_runtime_1.jsx)(helperComponents_1.HeaderRow, {
|
|
@@ -471,20 +472,23 @@ function Table(_a) {
|
|
|
471
472
|
onRowClick: onRowClick,
|
|
472
473
|
rowAutoHeight: rowAutoHeight,
|
|
473
474
|
columnOrder: columnOrder,
|
|
474
|
-
enableColumnsOrderSortByDrag: enableColumnsOrderSortByDrag
|
|
475
|
+
enableColumnsOrderSortByDrag: enableColumnsOrderSortByDrag,
|
|
476
|
+
disabledRowAppearance: rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.appearance
|
|
475
477
|
}, row.id))
|
|
476
478
|
}) : null, centerRows.map(row => (0, jsx_runtime_1.jsx)(helperComponents_1.BodyRow, {
|
|
477
479
|
row: row,
|
|
478
480
|
onRowClick: onRowClick,
|
|
479
481
|
rowAutoHeight: rowAutoHeight,
|
|
480
482
|
columnOrder: columnOrder,
|
|
481
|
-
enableColumnsOrderSortByDrag: enableColumnsOrderSortByDrag
|
|
483
|
+
enableColumnsOrderSortByDrag: enableColumnsOrderSortByDrag,
|
|
484
|
+
disabledRowAppearance: rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.appearance
|
|
482
485
|
}, row.id)), data.length > 0 && infiniteLoading && loading && !dataError && (0, jsx_runtime_1.jsx)(skeleton_1.SkeletonContextProvider, {
|
|
483
486
|
loading: true,
|
|
484
487
|
children: loadingTableRows.slice(0, 3).map(row => (0, jsx_runtime_1.jsx)(helperComponents_1.BodyRow, {
|
|
485
488
|
row: row,
|
|
486
489
|
columnOrder: columnOrder,
|
|
487
|
-
enableColumnsOrderSortByDrag: enableColumnsOrderSortByDrag
|
|
490
|
+
enableColumnsOrderSortByDrag: enableColumnsOrderSortByDrag,
|
|
491
|
+
disabledRowAppearance: rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.appearance
|
|
488
492
|
}, row.id))
|
|
489
493
|
}), (0, jsx_runtime_1.jsx)(helperComponents_1.TableEmptyState, {
|
|
490
494
|
emptyStates: emptyStates,
|
|
@@ -55,6 +55,7 @@ type BaseTableProps<TData extends object, TFilters extends FiltersState = Record
|
|
|
55
55
|
* <strong>initialState</strong>: Начальное состояние выбора строк <br>
|
|
56
56
|
* <strong>state</strong>: Состояние выбора строк, жестко устанавливаемое снаружи <br>
|
|
57
57
|
* <strong>enable</strong>: Колбэк определяющий можно ли выбрать строку <br>
|
|
58
|
+
* <strong>appearance</strong>: Внешний вид недоступной для выбора строки (по дефолту = disabled) <br>
|
|
58
59
|
* <strong>multiRow</strong>: Мульти-выбор строк (включен по-умолчанию, когда включается выбор) <br>
|
|
59
60
|
* <strong>onChange</strong>: Колбэк на выбор строк
|
|
60
61
|
* */
|
|
@@ -64,6 +65,7 @@ type BaseTableProps<TData extends object, TFilters extends FiltersState = Record
|
|
|
64
65
|
enable?: RowSelectionOptions<TData>['enableRowSelection'];
|
|
65
66
|
multiRow?: boolean;
|
|
66
67
|
onChange?(state: RowSelectionState): void;
|
|
68
|
+
appearance?: 'disabled' | 'hide-check';
|
|
67
69
|
};
|
|
68
70
|
/** Параметры отвечают за глобальный поиск в таблице <br>
|
|
69
71
|
* <strong>initialState</strong>: Начальное состояние строки поиска <br>
|
|
@@ -14,5 +14,6 @@ export type BodyRowProps<TData> = Pick<RowProps, 'rowAutoHeight'> & {
|
|
|
14
14
|
onRowClick?: RowClickHandler<TData>;
|
|
15
15
|
columnOrder: ColumnOrder;
|
|
16
16
|
enableColumnsOrderSortByDrag?: boolean;
|
|
17
|
+
disabledRowAppearance?: 'disabled' | 'hide-check';
|
|
17
18
|
};
|
|
18
|
-
export declare function BodyRow<TData>({ row, onRowClick, rowAutoHeight, columnOrder, enableColumnsOrderSortByDrag, }: BodyRowProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export declare function BodyRow<TData>({ row, onRowClick, rowAutoHeight, columnOrder, enableColumnsOrderSortByDrag, disabledRowAppearance, }: BodyRowProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -25,7 +25,8 @@ function BodyRow(_ref) {
|
|
|
25
25
|
onRowClick,
|
|
26
26
|
rowAutoHeight,
|
|
27
27
|
columnOrder,
|
|
28
|
-
enableColumnsOrderSortByDrag
|
|
28
|
+
enableColumnsOrderSortByDrag,
|
|
29
|
+
disabledRowAppearance = 'disabled'
|
|
29
30
|
} = _ref;
|
|
30
31
|
const {
|
|
31
32
|
leftPinned,
|
|
@@ -57,6 +58,7 @@ function BodyRow(_ref) {
|
|
|
57
58
|
onClick: handleRowClick,
|
|
58
59
|
"data-clickable": Boolean(onRowClick) || undefined,
|
|
59
60
|
"data-disabled": disabled || undefined,
|
|
61
|
+
"data-disabled-row-appearance": disabled ? disabledRowAppearance : undefined,
|
|
60
62
|
"data-selected": isSelected || undefined,
|
|
61
63
|
"data-actions-opened": dropListOpened || undefined,
|
|
62
64
|
"data-test-id": constants_1.TEST_IDS.bodyRow,
|
|
@@ -84,9 +84,11 @@
|
|
|
84
84
|
}
|
|
85
85
|
.bodyRow[data-disabled]{
|
|
86
86
|
cursor:not-allowed;
|
|
87
|
+
}
|
|
88
|
+
.bodyRow[data-disabled-row-appearance=disabled]{
|
|
87
89
|
background-color:var(--sys-neutral-background, #eeeff3);
|
|
88
90
|
}
|
|
89
|
-
.bodyRow[data-disabled] .rowPinnedCells{
|
|
91
|
+
.bodyRow[data-disabled-row-appearance=disabled] .rowPinnedCells{
|
|
90
92
|
background-color:var(--sys-neutral-background, #eeeff3);
|
|
91
93
|
}
|
|
92
94
|
.bodyRow[data-selected]{
|
|
@@ -299,7 +299,7 @@ export function Table(_a) {
|
|
|
299
299
|
}
|
|
300
300
|
},
|
|
301
301
|
}
|
|
302
|
-
: undefined, bulkActions: bulkActions, selectionMode: (rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.multiRow) ? 'multiple' : 'single', checked: table.getIsAllPageRowsSelected(), indeterminate: table.getIsSomePageRowsSelected(), onCheck: enableSelection ? handleOnToolbarCheck : undefined, outline: outline, after: toolbarAfter || exportSettings || areColumnsSettingsEnabled ? (_jsxs(_Fragment, { children: [toolbarAfter, exportSettings && (_jsx(ExportButton, { settings: exportSettings, columnDefinitions: columnDefinitions, data: data, topRows: filteredTopRows, centerRows: centerRows })), areColumnsSettingsEnabled && (_jsx(ColumnsSettings, { columnsSettings: columnsSettings, enabledColumns: enabledColumns, setEnabledColumns: setEnabledColumns }))] })) : undefined, moreActions: moreActions, filterRow: patchedFilter, "data-test-id": TEST_IDS.toolbar }) })), _jsxs(Scroll, { size: 's', className: styles.table, ref: scrollContainerRef, "data-outline": outline || undefined, children: [_jsx("div", { className: styles.tableContent, style: columnSizes.vars, children: _jsx(CellAutoResizeContext.Provider, { value: { updateCellMap }, children: _jsx(DndContext, Object.assign({}, dndContextProps, { children: _jsx(TableContext.Provider, { value: { table, getRowBackgroundColor }, children: (!infiniteLoading || !data.length) && loading ? (_jsxs(SkeletonContextProvider, { loading: true, children: [_jsx(HeaderRow, { rowAutoHeight: rowAutoHeight, columnOrder: columnOrder }), loadingTableRows.map(row => (_jsx(BodyRow, { row: row, rowAutoHeight: rowAutoHeight, columnOrder: columnOrder }, row.id)))] })) : (_jsxs(_Fragment, { children: [centerRows.length || filteredTopRows.length ? (_jsx(HeaderRow, { rowAutoHeight: rowAutoHeight, columnOrder: columnOrder, enableColumnsOrderSortByDrag: enableColumnsOrderSortByDrag })) : null, filteredTopRows.length ? (_jsx("div", { className: styles.topRowWrapper, children: filteredTopRows.map(row => (_jsx(BodyRow, { row: row, onRowClick: onRowClick, rowAutoHeight: rowAutoHeight, columnOrder: columnOrder, enableColumnsOrderSortByDrag: enableColumnsOrderSortByDrag }, row.id))) })) : null, centerRows.map(row => (_jsx(BodyRow, { row: row, onRowClick: onRowClick, rowAutoHeight: rowAutoHeight, columnOrder: columnOrder, enableColumnsOrderSortByDrag: enableColumnsOrderSortByDrag }, row.id))), data.length > 0 && infiniteLoading && loading && !dataError && (_jsx(SkeletonContextProvider, { loading: true, children: loadingTableRows.slice(0, 3).map(row => (_jsx(BodyRow, { row: row, columnOrder: columnOrder, enableColumnsOrderSortByDrag: enableColumnsOrderSortByDrag }, row.id))) })), _jsx(TableEmptyState, { emptyStates: emptyStates, dataError: dataError, dataFiltered: dataFiltered || Boolean(table.getState().globalFilter), tableRowsLength: tableRows.length + filteredTopRows.length })] })) }) })) }) }), _jsx("div", { className: styles.scrollStub, ref: scrollRef })] }), !infiniteLoading && !suppressPagination && (_jsx(TablePagination, { table: table, options: paginationProp === null || paginationProp === void 0 ? void 0 : paginationProp.options, optionsLabel: paginationProp === null || paginationProp === void 0 ? void 0 : paginationProp.optionsLabel, pageCount: pageCount, optionsRender: paginationProp === null || paginationProp === void 0 ? void 0 : paginationProp.optionsRender }))] })));
|
|
302
|
+
: undefined, bulkActions: bulkActions, selectionMode: (rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.multiRow) ? 'multiple' : 'single', checked: table.getIsAllPageRowsSelected(), indeterminate: table.getIsSomePageRowsSelected(), onCheck: enableSelection ? handleOnToolbarCheck : undefined, outline: outline, after: toolbarAfter || exportSettings || areColumnsSettingsEnabled ? (_jsxs(_Fragment, { children: [toolbarAfter, exportSettings && (_jsx(ExportButton, { settings: exportSettings, columnDefinitions: columnDefinitions, data: data, topRows: filteredTopRows, centerRows: centerRows })), areColumnsSettingsEnabled && (_jsx(ColumnsSettings, { columnsSettings: columnsSettings, enabledColumns: enabledColumns, setEnabledColumns: setEnabledColumns }))] })) : undefined, moreActions: moreActions, filterRow: patchedFilter, "data-test-id": TEST_IDS.toolbar }) })), _jsxs(Scroll, { size: 's', className: styles.table, ref: scrollContainerRef, "data-outline": outline || undefined, children: [_jsx("div", { className: styles.tableContent, style: columnSizes.vars, children: _jsx(CellAutoResizeContext.Provider, { value: { updateCellMap }, children: _jsx(DndContext, Object.assign({}, dndContextProps, { children: _jsx(TableContext.Provider, { value: { table, getRowBackgroundColor }, children: (!infiniteLoading || !data.length) && loading ? (_jsxs(SkeletonContextProvider, { loading: true, children: [_jsx(HeaderRow, { rowAutoHeight: rowAutoHeight, columnOrder: columnOrder }), loadingTableRows.map(row => (_jsx(BodyRow, { row: row, rowAutoHeight: rowAutoHeight, columnOrder: columnOrder, disabledRowAppearance: rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.appearance }, row.id)))] })) : (_jsxs(_Fragment, { children: [centerRows.length || filteredTopRows.length ? (_jsx(HeaderRow, { rowAutoHeight: rowAutoHeight, columnOrder: columnOrder, enableColumnsOrderSortByDrag: enableColumnsOrderSortByDrag })) : null, filteredTopRows.length ? (_jsx("div", { className: styles.topRowWrapper, children: filteredTopRows.map(row => (_jsx(BodyRow, { row: row, onRowClick: onRowClick, rowAutoHeight: rowAutoHeight, columnOrder: columnOrder, enableColumnsOrderSortByDrag: enableColumnsOrderSortByDrag, disabledRowAppearance: rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.appearance }, row.id))) })) : null, centerRows.map(row => (_jsx(BodyRow, { row: row, onRowClick: onRowClick, rowAutoHeight: rowAutoHeight, columnOrder: columnOrder, enableColumnsOrderSortByDrag: enableColumnsOrderSortByDrag, disabledRowAppearance: rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.appearance }, row.id))), data.length > 0 && infiniteLoading && loading && !dataError && (_jsx(SkeletonContextProvider, { loading: true, children: loadingTableRows.slice(0, 3).map(row => (_jsx(BodyRow, { row: row, columnOrder: columnOrder, enableColumnsOrderSortByDrag: enableColumnsOrderSortByDrag, disabledRowAppearance: rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.appearance }, row.id))) })), _jsx(TableEmptyState, { emptyStates: emptyStates, dataError: dataError, dataFiltered: dataFiltered || Boolean(table.getState().globalFilter), tableRowsLength: tableRows.length + filteredTopRows.length })] })) }) })) }) }), _jsx("div", { className: styles.scrollStub, ref: scrollRef })] }), !infiniteLoading && !suppressPagination && (_jsx(TablePagination, { table: table, options: paginationProp === null || paginationProp === void 0 ? void 0 : paginationProp.options, optionsLabel: paginationProp === null || paginationProp === void 0 ? void 0 : paginationProp.optionsLabel, pageCount: pageCount, optionsRender: paginationProp === null || paginationProp === void 0 ? void 0 : paginationProp.optionsRender }))] })));
|
|
303
303
|
}
|
|
304
304
|
Table.getStatusColumnDef = getStatusColumnDef;
|
|
305
305
|
Table.statusAppearances = STATUS_APPEARANCE;
|
|
@@ -55,6 +55,7 @@ type BaseTableProps<TData extends object, TFilters extends FiltersState = Record
|
|
|
55
55
|
* <strong>initialState</strong>: Начальное состояние выбора строк <br>
|
|
56
56
|
* <strong>state</strong>: Состояние выбора строк, жестко устанавливаемое снаружи <br>
|
|
57
57
|
* <strong>enable</strong>: Колбэк определяющий можно ли выбрать строку <br>
|
|
58
|
+
* <strong>appearance</strong>: Внешний вид недоступной для выбора строки (по дефолту = disabled) <br>
|
|
58
59
|
* <strong>multiRow</strong>: Мульти-выбор строк (включен по-умолчанию, когда включается выбор) <br>
|
|
59
60
|
* <strong>onChange</strong>: Колбэк на выбор строк
|
|
60
61
|
* */
|
|
@@ -64,6 +65,7 @@ type BaseTableProps<TData extends object, TFilters extends FiltersState = Record
|
|
|
64
65
|
enable?: RowSelectionOptions<TData>['enableRowSelection'];
|
|
65
66
|
multiRow?: boolean;
|
|
66
67
|
onChange?(state: RowSelectionState): void;
|
|
68
|
+
appearance?: 'disabled' | 'hide-check';
|
|
67
69
|
};
|
|
68
70
|
/** Параметры отвечают за глобальный поиск в таблице <br>
|
|
69
71
|
* <strong>initialState</strong>: Начальное состояние строки поиска <br>
|
|
@@ -14,5 +14,6 @@ export type BodyRowProps<TData> = Pick<RowProps, 'rowAutoHeight'> & {
|
|
|
14
14
|
onRowClick?: RowClickHandler<TData>;
|
|
15
15
|
columnOrder: ColumnOrder;
|
|
16
16
|
enableColumnsOrderSortByDrag?: boolean;
|
|
17
|
+
disabledRowAppearance?: 'disabled' | 'hide-check';
|
|
17
18
|
};
|
|
18
|
-
export declare function BodyRow<TData>({ row, onRowClick, rowAutoHeight, columnOrder, enableColumnsOrderSortByDrag, }: BodyRowProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export declare function BodyRow<TData>({ row, onRowClick, rowAutoHeight, columnOrder, enableColumnsOrderSortByDrag, disabledRowAppearance, }: BodyRowProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -8,7 +8,7 @@ import { useRowCells } from '../hooks';
|
|
|
8
8
|
import { PinnedCells } from './PinnedCells';
|
|
9
9
|
import { Row } from './Row';
|
|
10
10
|
import styles from './styles.module.css';
|
|
11
|
-
export function BodyRow({ row, onRowClick, rowAutoHeight, columnOrder, enableColumnsOrderSortByDrag, }) {
|
|
11
|
+
export function BodyRow({ row, onRowClick, rowAutoHeight, columnOrder, enableColumnsOrderSortByDrag, disabledRowAppearance = 'disabled', }) {
|
|
12
12
|
const { leftPinned, rightPinned, unpinned } = useRowCells(row);
|
|
13
13
|
const [dropListOpened, setDropListOpen] = useState(false);
|
|
14
14
|
const disabled = !row.getCanSelect();
|
|
@@ -25,5 +25,5 @@ export function BodyRow({ row, onRowClick, rowAutoHeight, columnOrder, enableCol
|
|
|
25
25
|
};
|
|
26
26
|
const isSelected = row.getIsSelected() || (row.getIsSomeSelected() && !row.getCanMultiSelect() && !row.getIsExpanded());
|
|
27
27
|
const rowBackgroundColor = getRowBackgroundColor === null || getRowBackgroundColor === void 0 ? void 0 : getRowBackgroundColor(row.original);
|
|
28
|
-
return (_jsx(RowContext.Provider, { value: { dropListOpened, setDropListOpen }, children: _jsxs(Row, { onClick: handleRowClick, "data-clickable": Boolean(onRowClick) || undefined, "data-disabled": disabled || undefined, "data-selected": isSelected || undefined, "data-actions-opened": dropListOpened || undefined, "data-test-id": TEST_IDS.bodyRow, "data-row-id": row.id, "data-row-bg-appearance": rowBackgroundColor && !disabled && !isSelected ? rowBackgroundColor : undefined, className: styles.bodyRow, rowAutoHeight: rowAutoHeight, children: [leftPinned && (_jsx(PinnedCells, { position: COLUMN_PIN_POSITION.Left, children: leftPinned.map(cell => (_jsx(BodyCell, { cell: cell, rowAutoHeight: rowAutoHeight }, cell.id))) })), unpinned.map(cell => (_jsx(SortableContext, { items: columnOrder, strategy: horizontalListSortingStrategy, children: _jsx(BodyCell, { cell: cell, rowAutoHeight: rowAutoHeight, isDraggable: enableColumnsOrderSortByDrag }, cell.id) }, cell.id))), rightPinned && (_jsx(PinnedCells, { position: COLUMN_PIN_POSITION.Right, children: rightPinned.map(cell => (_jsx(BodyCell, { cell: cell, rowAutoHeight: rowAutoHeight, isDraggable: enableColumnsOrderSortByDrag }, cell.id))) }))] }) }));
|
|
28
|
+
return (_jsx(RowContext.Provider, { value: { dropListOpened, setDropListOpen }, children: _jsxs(Row, { onClick: handleRowClick, "data-clickable": Boolean(onRowClick) || undefined, "data-disabled": disabled || undefined, "data-disabled-row-appearance": disabled ? disabledRowAppearance : undefined, "data-selected": isSelected || undefined, "data-actions-opened": dropListOpened || undefined, "data-test-id": TEST_IDS.bodyRow, "data-row-id": row.id, "data-row-bg-appearance": rowBackgroundColor && !disabled && !isSelected ? rowBackgroundColor : undefined, className: styles.bodyRow, rowAutoHeight: rowAutoHeight, children: [leftPinned && (_jsx(PinnedCells, { position: COLUMN_PIN_POSITION.Left, children: leftPinned.map(cell => (_jsx(BodyCell, { cell: cell, rowAutoHeight: rowAutoHeight }, cell.id))) })), unpinned.map(cell => (_jsx(SortableContext, { items: columnOrder, strategy: horizontalListSortingStrategy, children: _jsx(BodyCell, { cell: cell, rowAutoHeight: rowAutoHeight, isDraggable: enableColumnsOrderSortByDrag }, cell.id) }, cell.id))), rightPinned && (_jsx(PinnedCells, { position: COLUMN_PIN_POSITION.Right, children: rightPinned.map(cell => (_jsx(BodyCell, { cell: cell, rowAutoHeight: rowAutoHeight, isDraggable: enableColumnsOrderSortByDrag }, cell.id))) }))] }) }));
|
|
29
29
|
}
|
|
@@ -84,9 +84,11 @@
|
|
|
84
84
|
}
|
|
85
85
|
.bodyRow[data-disabled]{
|
|
86
86
|
cursor:not-allowed;
|
|
87
|
+
}
|
|
88
|
+
.bodyRow[data-disabled-row-appearance=disabled]{
|
|
87
89
|
background-color:var(--sys-neutral-background, #eeeff3);
|
|
88
90
|
}
|
|
89
|
-
.bodyRow[data-disabled] .rowPinnedCells{
|
|
91
|
+
.bodyRow[data-disabled-row-appearance=disabled] .rowPinnedCells{
|
|
90
92
|
background-color:var(--sys-neutral-background, #eeeff3);
|
|
91
93
|
}
|
|
92
94
|
.bodyRow[data-selected]{
|
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.16-preview-7979881e.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": "c6486b320e4fb2a2f2cbc22f615007b4c76c57a5"
|
|
70
70
|
}
|
|
@@ -530,7 +530,13 @@ export function Table<TData extends object, TFilters extends FiltersState = Reco
|
|
|
530
530
|
<SkeletonContextProvider loading>
|
|
531
531
|
<HeaderRow rowAutoHeight={rowAutoHeight} columnOrder={columnOrder} />
|
|
532
532
|
{loadingTableRows.map(row => (
|
|
533
|
-
<BodyRow
|
|
533
|
+
<BodyRow
|
|
534
|
+
key={row.id}
|
|
535
|
+
row={row}
|
|
536
|
+
rowAutoHeight={rowAutoHeight}
|
|
537
|
+
columnOrder={columnOrder}
|
|
538
|
+
disabledRowAppearance={rowSelectionProp?.appearance}
|
|
539
|
+
/>
|
|
534
540
|
))}
|
|
535
541
|
</SkeletonContextProvider>
|
|
536
542
|
) : (
|
|
@@ -553,6 +559,7 @@ export function Table<TData extends object, TFilters extends FiltersState = Reco
|
|
|
553
559
|
rowAutoHeight={rowAutoHeight}
|
|
554
560
|
columnOrder={columnOrder}
|
|
555
561
|
enableColumnsOrderSortByDrag={enableColumnsOrderSortByDrag}
|
|
562
|
+
disabledRowAppearance={rowSelectionProp?.appearance}
|
|
556
563
|
/>
|
|
557
564
|
))}
|
|
558
565
|
</div>
|
|
@@ -566,6 +573,7 @@ export function Table<TData extends object, TFilters extends FiltersState = Reco
|
|
|
566
573
|
rowAutoHeight={rowAutoHeight}
|
|
567
574
|
columnOrder={columnOrder}
|
|
568
575
|
enableColumnsOrderSortByDrag={enableColumnsOrderSortByDrag}
|
|
576
|
+
disabledRowAppearance={rowSelectionProp?.appearance}
|
|
569
577
|
/>
|
|
570
578
|
))}
|
|
571
579
|
|
|
@@ -577,6 +585,7 @@ export function Table<TData extends object, TFilters extends FiltersState = Reco
|
|
|
577
585
|
row={row}
|
|
578
586
|
columnOrder={columnOrder}
|
|
579
587
|
enableColumnsOrderSortByDrag={enableColumnsOrderSortByDrag}
|
|
588
|
+
disabledRowAppearance={rowSelectionProp?.appearance}
|
|
580
589
|
/>
|
|
581
590
|
))}
|
|
582
591
|
</SkeletonContextProvider>
|
package/src/components/types.ts
CHANGED
|
@@ -69,6 +69,7 @@ type BaseTableProps<TData extends object, TFilters extends FiltersState = Record
|
|
|
69
69
|
* <strong>initialState</strong>: Начальное состояние выбора строк <br>
|
|
70
70
|
* <strong>state</strong>: Состояние выбора строк, жестко устанавливаемое снаружи <br>
|
|
71
71
|
* <strong>enable</strong>: Колбэк определяющий можно ли выбрать строку <br>
|
|
72
|
+
* <strong>appearance</strong>: Внешний вид недоступной для выбора строки (по дефолту = disabled) <br>
|
|
72
73
|
* <strong>multiRow</strong>: Мульти-выбор строк (включен по-умолчанию, когда включается выбор) <br>
|
|
73
74
|
* <strong>onChange</strong>: Колбэк на выбор строк
|
|
74
75
|
* */
|
|
@@ -78,6 +79,7 @@ type BaseTableProps<TData extends object, TFilters extends FiltersState = Record
|
|
|
78
79
|
enable?: RowSelectionOptions<TData>['enableRowSelection'];
|
|
79
80
|
multiRow?: boolean;
|
|
80
81
|
onChange?(state: RowSelectionState): void;
|
|
82
|
+
appearance?: 'disabled' | 'hide-check';
|
|
81
83
|
};
|
|
82
84
|
/** Параметры отвечают за глобальный поиск в таблице <br>
|
|
83
85
|
* <strong>initialState</strong>: Начальное состояние строки поиска <br>
|
|
@@ -25,6 +25,7 @@ export type BodyRowProps<TData> = Pick<RowProps, 'rowAutoHeight'> & {
|
|
|
25
25
|
onRowClick?: RowClickHandler<TData>;
|
|
26
26
|
columnOrder: ColumnOrder;
|
|
27
27
|
enableColumnsOrderSortByDrag?: boolean;
|
|
28
|
+
disabledRowAppearance?: 'disabled' | 'hide-check';
|
|
28
29
|
};
|
|
29
30
|
|
|
30
31
|
export function BodyRow<TData>({
|
|
@@ -33,6 +34,7 @@ export function BodyRow<TData>({
|
|
|
33
34
|
rowAutoHeight,
|
|
34
35
|
columnOrder,
|
|
35
36
|
enableColumnsOrderSortByDrag,
|
|
37
|
+
disabledRowAppearance = 'disabled',
|
|
36
38
|
}: BodyRowProps<TData>) {
|
|
37
39
|
const { leftPinned, rightPinned, unpinned } = useRowCells(row);
|
|
38
40
|
|
|
@@ -64,6 +66,7 @@ export function BodyRow<TData>({
|
|
|
64
66
|
onClick={handleRowClick}
|
|
65
67
|
data-clickable={Boolean(onRowClick) || undefined}
|
|
66
68
|
data-disabled={disabled || undefined}
|
|
69
|
+
data-disabled-row-appearance={disabled ? disabledRowAppearance : undefined}
|
|
67
70
|
data-selected={isSelected || undefined}
|
|
68
71
|
data-actions-opened={dropListOpened || undefined}
|
|
69
72
|
data-test-id={TEST_IDS.bodyRow}
|
|
@@ -108,9 +108,11 @@ $snack-ui-table-row-background: var(--snack-ui-table-row-background);
|
|
|
108
108
|
)};
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
|
|
112
111
|
&[data-disabled] {
|
|
113
112
|
cursor: not-allowed;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
&[data-disabled-row-appearance='disabled'] {
|
|
114
116
|
background-color: styles-tokens-table.$sys-neutral-background;
|
|
115
117
|
|
|
116
118
|
.rowPinnedCells {
|