@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 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.15",
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": "fc6ef99551b60c7b9d2f8cacc87cfb0fd35030bf"
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 key={row.id} row={row} rowAutoHeight={rowAutoHeight} columnOrder={columnOrder} />
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>
@@ -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 {