@evergis/react 4.0.146 → 4.0.147
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/dist/components/Dashboard/elements/ElementTable/hooks/useColumnResize.d.ts +11 -7
- package/dist/components/Dashboard/elements/ElementTable/hooks/useTableView.d.ts +1 -1
- package/dist/components/Dashboard/elements/ElementTable/styled.d.ts +9 -5
- package/dist/components/Dashboard/elements/ElementTable/types.d.ts +3 -3
- package/dist/components/Dashboard/elements/ElementTable/utils/columnStyle.d.ts +10 -8
- package/dist/index.js +76 -58
- package/dist/index.js.map +1 -1
- package/dist/react.esm.js +76 -58
- package/dist/react.esm.js.map +1 -1
- package/package.json +2 -2
|
@@ -2,18 +2,22 @@ import { ResizeDrag } from '../../../hooks/useResizeDrag';
|
|
|
2
2
|
interface UseColumnResizeParams {
|
|
3
3
|
/** Позиция колонки: по ней собрано имя переменной, которой колонка задаёт свою ширину. */
|
|
4
4
|
index: number;
|
|
5
|
-
|
|
5
|
+
/** Итог жеста — ширины ВСЕХ колонок по их позициям. */
|
|
6
|
+
onResize: (widths: number[]) => void;
|
|
6
7
|
}
|
|
7
8
|
/**
|
|
8
9
|
* Перетаскивание правой границы колонки.
|
|
9
10
|
*
|
|
10
11
|
* Жест — общий {@link useResizeDrag}, тот же, что двигает границы ячеек сетки дашборда. Здесь
|
|
11
|
-
* остаётся только табличное: во время жеста
|
|
12
|
-
* состояние
|
|
13
|
-
* а не перерисовывает таблицу целиком.
|
|
12
|
+
* остаётся только табличное: во время жеста ширины рисуются переменными на самой таблице, а в
|
|
13
|
+
* состояние уходят один раз, на отпускание мыши.
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* Снимок берётся по ВСЕМ колонкам, и все они на время жеста фиксируются — так же, как сетка
|
|
16
|
+
* фиксирует все треки. Иначе автоматическая раскладка перераспределяла бы соседние колонки на
|
|
17
|
+
* первом же шаге, и таблицу дёргало бы в самом начале перетаскивания. По той же причине в
|
|
18
|
+
* состояние уходят ширины всех колонок: без этого соседи прыгнули бы обратно на отпускании.
|
|
19
|
+
*
|
|
20
|
+
* Ширины снимаются с ячеек шапки: колонка одна на всю таблицу, а строк в ней сколько угодно.
|
|
17
21
|
*/
|
|
18
|
-
export declare const useColumnResize: ({ index,
|
|
22
|
+
export declare const useColumnResize: ({ index, onResize }: UseColumnResizeParams) => ResizeDrag;
|
|
19
23
|
export {};
|
|
@@ -26,5 +26,5 @@ export declare const useTableView: (elementConfig?: ElementTableConfig) => {
|
|
|
26
26
|
contentWidth: boolean;
|
|
27
27
|
columnWidths: Record<string, number>;
|
|
28
28
|
onSortToggle: (attributeName: string) => void;
|
|
29
|
-
onColumnResize: (
|
|
29
|
+
onColumnResize: (next: number[]) => void;
|
|
30
30
|
};
|
|
@@ -31,14 +31,18 @@ export declare const TableWrapper: import('styled-components').StyledComponent<"
|
|
|
31
31
|
* (см. TableBody и useHeadOverlap).
|
|
32
32
|
*/
|
|
33
33
|
export declare const TableHead: import('styled-components').StyledComponent<"thead", any, {}, never>;
|
|
34
|
-
export declare const TableHeadCell: import('styled-components').StyledComponent<"th", any, {
|
|
35
|
-
$sortable?: boolean;
|
|
36
|
-
}, never>;
|
|
37
34
|
/**
|
|
38
|
-
* Содержимое
|
|
39
|
-
*
|
|
35
|
+
* Содержимое заголовка: псевдоним и место под значок сортировки.
|
|
36
|
+
*
|
|
37
|
+
* Само по себе не сжимается и ничего не обрезает — иначе перестало бы задавать минимальную
|
|
38
|
+
* ширину колонки, и раскладка считала бы её по одному лишь телу таблицы. Обрезку включает
|
|
39
|
+
* заголовок, и только когда ширина колонки задана явно (см. `TableHeadCell`).
|
|
40
40
|
*/
|
|
41
41
|
export declare const TableHeadContent: import('styled-components').StyledComponent<"span", any, {}, never>;
|
|
42
|
+
export declare const TableHeadCell: import('styled-components').StyledComponent<"th", any, {
|
|
43
|
+
$sortable?: boolean;
|
|
44
|
+
$fixedWidth?: boolean;
|
|
45
|
+
}, never>;
|
|
42
46
|
/**
|
|
43
47
|
* Место под значок сортировки. Занято всегда, пока сортировка включена, а сам значок только
|
|
44
48
|
* прячется: появляясь и исчезая, он менял бы ширину колонки — и таблицу дёргало бы на каждый
|
|
@@ -21,8 +21,8 @@ export interface TableCellProps {
|
|
|
21
21
|
export interface TableColumnResizerProps {
|
|
22
22
|
/** Позиция колонки: по ней собрано имя переменной, которой колонка задаёт свою ширину. */
|
|
23
23
|
index: number;
|
|
24
|
-
|
|
25
|
-
onResize: (
|
|
24
|
+
/** Итог жеста — ширины всех колонок по их позициям. */
|
|
25
|
+
onResize: (widths: number[]) => void;
|
|
26
26
|
}
|
|
27
27
|
export interface TableHeadRowProps {
|
|
28
28
|
columns: StructuredDataAttribute[];
|
|
@@ -33,5 +33,5 @@ export interface TableHeadRowProps {
|
|
|
33
33
|
/** У таблицы есть колонка действий — шапке нужна пустая ячейка над ней. */
|
|
34
34
|
withActionsColumn: boolean;
|
|
35
35
|
onSortToggle: (attributeName: string) => void;
|
|
36
|
-
onColumnResize: (
|
|
36
|
+
onColumnResize: (widths: number[]) => void;
|
|
37
37
|
}
|
|
@@ -3,17 +3,19 @@ import { CSSProperties } from 'react';
|
|
|
3
3
|
* Имя переменной ширины колонки.
|
|
4
4
|
*
|
|
5
5
|
* Через неё идёт и предпросмотр перетаскивания, и итоговая ширина: пока переменная не задана,
|
|
6
|
-
* работает запасное
|
|
7
|
-
*
|
|
6
|
+
* работает запасное значение, а жест на время перетаскивания объявляет её на самой таблице —
|
|
7
|
+
* одним свойством на один узел, как сетка меняет свой шаблон треков.
|
|
8
8
|
*/
|
|
9
9
|
export declare const getColumnWidthVariable: (index: number) => string;
|
|
10
10
|
/**
|
|
11
|
-
* Инлайн-размер ячейки
|
|
11
|
+
* Инлайн-размер ячейки колонки.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* Ставится всем колонкам, а не только тем, у кого ширина задана: жест фиксирует на время
|
|
14
|
+
* перетаскивания ВСЕ колонки, иначе соседние перераспределялись бы на первом же шаге и таблицу
|
|
15
|
+
* дёргало бы. Пока переменной нет, каждый предел падает на своё запасное значение и колонка
|
|
16
|
+
* ведёт себя ровно так, как вела бы без инлайн-стиля вовсе.
|
|
16
17
|
*
|
|
17
|
-
*
|
|
18
|
+
* Раскладка таблицы автоматическая (ширину колонок выбирает содержимое), и одной `width` ей мало —
|
|
19
|
+
* она для неё лишь пожелание. Жёстко колонку держат все три предела сразу.
|
|
18
20
|
*/
|
|
19
|
-
export declare const getColumnStyle: (index: number, width?: number,
|
|
21
|
+
export declare const getColumnStyle: (index: number, width?: number, isHead?: boolean) => CSSProperties;
|
package/dist/index.js
CHANGED
|
@@ -15554,7 +15554,19 @@ const TableHead = styled.thead.withConfig({ displayName: "TableHead", componentI
|
|
|
15554
15554
|
top: 0;
|
|
15555
15555
|
z-index: 1;
|
|
15556
15556
|
`;
|
|
15557
|
-
|
|
15557
|
+
/**
|
|
15558
|
+
* Содержимое заголовка: псевдоним и место под значок сортировки.
|
|
15559
|
+
*
|
|
15560
|
+
* Само по себе не сжимается и ничего не обрезает — иначе перестало бы задавать минимальную
|
|
15561
|
+
* ширину колонки, и раскладка считала бы её по одному лишь телу таблицы. Обрезку включает
|
|
15562
|
+
* заголовок, и только когда ширина колонки задана явно (см. `TableHeadCell`).
|
|
15563
|
+
*/
|
|
15564
|
+
const TableHeadContent = styled.span.withConfig({ displayName: "TableHeadContent", componentId: "sc-19t325s" }) `
|
|
15565
|
+
display: flex;
|
|
15566
|
+
align-items: center;
|
|
15567
|
+
gap: 0.25rem;
|
|
15568
|
+
`;
|
|
15569
|
+
const TableHeadCell = styled.th.withConfig({ displayName: "TableHeadCell", componentId: "sc-19bpg7s" }) `
|
|
15558
15570
|
/* Относительное позиционирование держит захват границы колонки. */
|
|
15559
15571
|
position: relative;
|
|
15560
15572
|
box-sizing: border-box;
|
|
@@ -15562,7 +15574,6 @@ const TableHeadCell = styled.th.withConfig({ displayName: "TableHeadCell", compo
|
|
|
15562
15574
|
text-align: left;
|
|
15563
15575
|
font-weight: 600;
|
|
15564
15576
|
white-space: nowrap;
|
|
15565
|
-
overflow: hidden;
|
|
15566
15577
|
color: ${({ theme }) => theme.palette.textSecondary};
|
|
15567
15578
|
/* Рамка принадлежит ячейке (рамки раздельные), поэтому едет вместе с липкой шапкой. */
|
|
15568
15579
|
border-bottom: 1px solid ${({ theme }) => theme.palette.elementDeep};
|
|
@@ -15572,18 +15583,22 @@ const TableHeadCell = styled.th.withConfig({ displayName: "TableHeadCell", compo
|
|
|
15572
15583
|
cursor: pointer;
|
|
15573
15584
|
user-select: none;
|
|
15574
15585
|
`}
|
|
15575
|
-
|
|
15576
|
-
|
|
15577
|
-
|
|
15578
|
-
|
|
15579
|
-
|
|
15580
|
-
|
|
15581
|
-
|
|
15582
|
-
|
|
15583
|
-
|
|
15584
|
-
|
|
15585
|
-
|
|
15586
|
-
|
|
15586
|
+
|
|
15587
|
+
/*
|
|
15588
|
+
* Обрезка только у колонки с заданной шириной: там длинный псевдоним иначе выдавил бы значок
|
|
15589
|
+
* сортировки за край. У колонки без ширины обрезать нечего — её ширину и задаёт заголовок,
|
|
15590
|
+
* а сжатое содержимое отдало бы этот расчёт телу таблицы, и заголовок схлопнулся бы в ноль.
|
|
15591
|
+
*/
|
|
15592
|
+
${({ $fixedWidth }) => $fixedWidth &&
|
|
15593
|
+
styled.css `
|
|
15594
|
+
overflow: hidden;
|
|
15595
|
+
|
|
15596
|
+
${TableHeadContent} {
|
|
15597
|
+
min-width: 0;
|
|
15598
|
+
overflow: hidden;
|
|
15599
|
+
text-overflow: ellipsis;
|
|
15600
|
+
}
|
|
15601
|
+
`}
|
|
15587
15602
|
`;
|
|
15588
15603
|
/**
|
|
15589
15604
|
* Место под значок сортировки. Занято всегда, пока сортировка включена, а сам значок только
|
|
@@ -15956,30 +15971,30 @@ const TableCell = React.memo(({ attribute, row, canEdit, onChange }) => {
|
|
|
15956
15971
|
* Имя переменной ширины колонки.
|
|
15957
15972
|
*
|
|
15958
15973
|
* Через неё идёт и предпросмотр перетаскивания, и итоговая ширина: пока переменная не задана,
|
|
15959
|
-
* работает запасное
|
|
15960
|
-
*
|
|
15974
|
+
* работает запасное значение, а жест на время перетаскивания объявляет её на самой таблице —
|
|
15975
|
+
* одним свойством на один узел, как сетка меняет свой шаблон треков.
|
|
15961
15976
|
*/
|
|
15962
15977
|
const getColumnWidthVariable = (index) => `--table-col-${index}`;
|
|
15963
15978
|
/**
|
|
15964
|
-
* Инлайн-размер ячейки
|
|
15979
|
+
* Инлайн-размер ячейки колонки.
|
|
15965
15980
|
*
|
|
15966
|
-
*
|
|
15967
|
-
*
|
|
15968
|
-
*
|
|
15981
|
+
* Ставится всем колонкам, а не только тем, у кого ширина задана: жест фиксирует на время
|
|
15982
|
+
* перетаскивания ВСЕ колонки, иначе соседние перераспределялись бы на первом же шаге и таблицу
|
|
15983
|
+
* дёргало бы. Пока переменной нет, каждый предел падает на своё запасное значение и колонка
|
|
15984
|
+
* ведёт себя ровно так, как вела бы без инлайн-стиля вовсе.
|
|
15969
15985
|
*
|
|
15970
|
-
*
|
|
15986
|
+
* Раскладка таблицы автоматическая (ширину колонок выбирает содержимое), и одной `width` ей мало —
|
|
15987
|
+
* она для неё лишь пожелание. Жёстко колонку держат все три предела сразу.
|
|
15971
15988
|
*/
|
|
15972
|
-
const getColumnStyle = (index, width,
|
|
15973
|
-
if (width == null && !resizable) {
|
|
15974
|
-
return undefined;
|
|
15975
|
-
}
|
|
15989
|
+
const getColumnStyle = (index, width, isHead) => {
|
|
15976
15990
|
const variable = getColumnWidthVariable(index);
|
|
15977
15991
|
const fixed = width == null ? null : `${width}px`;
|
|
15978
15992
|
return {
|
|
15979
15993
|
width: `var(${variable}, ${fixed ?? "auto"})`,
|
|
15980
15994
|
minWidth: `var(${variable}, ${fixed ?? "0"})`,
|
|
15981
|
-
// Без заданной ширины предел остаётся
|
|
15982
|
-
|
|
15995
|
+
// Без заданной ширины предел остаётся тем, что задан стилем: у ячейки тела — общий предел
|
|
15996
|
+
// таблицы, у заголовка его нет вовсе.
|
|
15997
|
+
maxWidth: `var(${variable}, ${fixed ?? (isHead ? "none" : "var(--table-cell-max-width, 20rem)")})`,
|
|
15983
15998
|
};
|
|
15984
15999
|
};
|
|
15985
16000
|
|
|
@@ -15987,39 +16002,41 @@ const getColumnStyle = (index, width, resizable) => {
|
|
|
15987
16002
|
* Перетаскивание правой границы колонки.
|
|
15988
16003
|
*
|
|
15989
16004
|
* Жест — общий {@link useResizeDrag}, тот же, что двигает границы ячеек сетки дашборда. Здесь
|
|
15990
|
-
* остаётся только табличное: во время жеста
|
|
15991
|
-
* состояние
|
|
15992
|
-
*
|
|
16005
|
+
* остаётся только табличное: во время жеста ширины рисуются переменными на самой таблице, а в
|
|
16006
|
+
* состояние уходят один раз, на отпускание мыши.
|
|
16007
|
+
*
|
|
16008
|
+
* Снимок берётся по ВСЕМ колонкам, и все они на время жеста фиксируются — так же, как сетка
|
|
16009
|
+
* фиксирует все треки. Иначе автоматическая раскладка перераспределяла бы соседние колонки на
|
|
16010
|
+
* первом же шаге, и таблицу дёргало бы в самом начале перетаскивания. По той же причине в
|
|
16011
|
+
* состояние уходят ширины всех колонок: без этого соседи прыгнули бы обратно на отпускании.
|
|
15993
16012
|
*
|
|
15994
|
-
*
|
|
15995
|
-
* выбрала раскладка таблицы, и тянуть надо от того, что видно.
|
|
16013
|
+
* Ширины снимаются с ячеек шапки: колонка одна на всю таблицу, а строк в ней сколько угодно.
|
|
15996
16014
|
*/
|
|
15997
|
-
const useColumnResize = ({ index,
|
|
15998
|
-
const variable = getColumnWidthVariable(index);
|
|
16015
|
+
const useColumnResize = ({ index, onResize }) => {
|
|
15999
16016
|
const onStart = React.useCallback((event) => {
|
|
16000
|
-
// Обработчик нажатия висит на самой ручке, поэтому
|
|
16001
|
-
//
|
|
16002
|
-
const
|
|
16003
|
-
|
|
16017
|
+
// Обработчик нажатия висит на самой ручке, поэтому таблица достаётся отсюда — отдельный
|
|
16018
|
+
// ref на неё не нужен.
|
|
16019
|
+
const table = event.currentTarget?.closest("table");
|
|
16020
|
+
const head = table?.querySelector("thead tr");
|
|
16021
|
+
if (!head) {
|
|
16004
16022
|
return null;
|
|
16005
16023
|
}
|
|
16006
|
-
|
|
16007
|
-
|
|
16008
|
-
|
|
16009
|
-
|
|
16010
|
-
|
|
16011
|
-
|
|
16012
|
-
const
|
|
16013
|
-
const onMove = React.useCallback((state, event) => state.table?.style.setProperty(variable, `${getNextWidth(state, event)}px`), [getNextWidth, variable]);
|
|
16024
|
+
const widths = Array.from(head.children).map(cell => cell.getBoundingClientRect().width);
|
|
16025
|
+
return widths[index] === undefined ? null : { start: event.clientX, widths, table };
|
|
16026
|
+
}, [index]);
|
|
16027
|
+
const getNextWidths = React.useCallback((state, event) => state.widths.map((width, position) => position === index
|
|
16028
|
+
? Math.max(MIN_COLUMN_WIDTH, Math.round(width + event.clientX - state.start))
|
|
16029
|
+
: Math.round(width)), [index]);
|
|
16030
|
+
const onMove = React.useCallback((state, event) => getNextWidths(state, event).forEach((width, position) => state.table?.style.setProperty(getColumnWidthVariable(position), `${width}px`)), [getNextWidths]);
|
|
16014
16031
|
const onEnd = React.useCallback((state, event) => {
|
|
16015
|
-
state.table?.style.removeProperty(
|
|
16016
|
-
const
|
|
16032
|
+
state.widths.forEach((_width, position) => state.table?.style.removeProperty(getColumnWidthVariable(position)));
|
|
16033
|
+
const widths = getNextWidths(state, event);
|
|
16017
16034
|
// Клик по границе без перетаскивания ширину менять не должен.
|
|
16018
|
-
if (
|
|
16035
|
+
if (widths[index] === Math.round(state.widths[index])) {
|
|
16019
16036
|
return;
|
|
16020
16037
|
}
|
|
16021
|
-
|
|
16022
|
-
}, [
|
|
16038
|
+
onResize(widths);
|
|
16039
|
+
}, [getNextWidths, index, onResize]);
|
|
16023
16040
|
return useResizeDrag({ onStart, onMove, onEnd });
|
|
16024
16041
|
};
|
|
16025
16042
|
|
|
@@ -16030,9 +16047,8 @@ const useColumnResize = ({ index, onCommit }) => {
|
|
|
16030
16047
|
* и то же действие, и выглядеть оно обязано одинаково. Поэтому и стоит она у КАЖДОЙ ячейки
|
|
16031
16048
|
* колонки, как в сетке, — тянуть границу можно на любой строке, а не только в шапке.
|
|
16032
16049
|
*/
|
|
16033
|
-
const TableColumnResizer = React.memo(({ index,
|
|
16034
|
-
const
|
|
16035
|
-
const { setHandle, dragging } = useColumnResize({ index, onCommit });
|
|
16050
|
+
const TableColumnResizer = React.memo(({ index, onResize }) => {
|
|
16051
|
+
const { setHandle, dragging } = useColumnResize({ index, onResize });
|
|
16036
16052
|
// Ручка лежит внутри ячейки, и без остановки всплытия перетаскивание границы заканчивалось бы
|
|
16037
16053
|
// кликом по ней — то есть переключало бы сортировку в шапке и открывало бы правку в теле.
|
|
16038
16054
|
const stopPropagation = React.useCallback((event) => event.stopPropagation(), []);
|
|
@@ -16047,7 +16063,7 @@ const TableColumnResizer = React.memo(({ index, attributeName, onResize }) => {
|
|
|
16047
16063
|
*/
|
|
16048
16064
|
const TableHeadRow = ({ columns, sort, sortEnabled, columnWidths, withActionsColumn, onSortToggle, onColumnResize, }) => (jsxRuntime.jsxs("tr", { children: [columns.map(({ attributeName, alias, description, resizable }, index) => {
|
|
16049
16065
|
const sorted = sort?.attributeName === attributeName;
|
|
16050
|
-
return (jsxRuntime.jsxs(TableHeadCell, { title: description || alias, style: getColumnStyle(index, columnWidths[attributeName],
|
|
16066
|
+
return (jsxRuntime.jsxs(TableHeadCell, { title: description || alias, style: getColumnStyle(index, columnWidths[attributeName], true), "$sortable": sortEnabled, "$fixedWidth": columnWidths[attributeName] != null, onClick: sortEnabled ? () => onSortToggle(attributeName) : undefined, children: [jsxRuntime.jsxs(TableHeadContent, { children: [alias, sortEnabled && (jsxRuntime.jsx(TableSortSlot, { "$active": sorted, children: jsxRuntime.jsx(uilibGl.Icon, { kind: sorted && sort?.direction === "desc" ? "sorting_des" : "sorting_asc" }) }))] }), resizable && jsxRuntime.jsx(TableColumnResizer, { index: index, onResize: onColumnResize })] }, attributeName));
|
|
16051
16067
|
}), withActionsColumn && jsxRuntime.jsx(TableHeadCell, {})] }));
|
|
16052
16068
|
|
|
16053
16069
|
const ContainerLoading = () => (jsxRuntime.jsx(uilibGl.Flex, { alignContent: "center", justifyContent: "center", width: "100%", children: jsxRuntime.jsx(uilibGl.CircularProgress, { diameter: 1.5, mono: true }) }));
|
|
@@ -16182,7 +16198,9 @@ const useTableView = (elementConfig) => {
|
|
|
16182
16198
|
// Растянутая мышью ширина живёт только в рантайме и перебивает конфигурационную: последнее
|
|
16183
16199
|
// слово за тем, кто тянул. Обратно в конфиг она не пишется.
|
|
16184
16200
|
const columnWidths = React.useMemo(() => columns.reduce((acc, attribute) => ({ ...acc, [attribute.attributeName]: widths[attribute.attributeName] ?? attribute.width }), {}), [columns, widths]);
|
|
16185
|
-
|
|
16201
|
+
// Жест отдаёт ширины всех колонок разом: соседние он тоже фиксировал, и вернуть их к
|
|
16202
|
+
// автоподбору значило бы дёрнуть таблицу сразу после отпускания.
|
|
16203
|
+
const onColumnResize = React.useCallback((next) => setWidths(columns.reduce((acc, { attributeName }, position) => next[position] === undefined ? acc : { ...acc, [attributeName]: next[position] }, {})), [columns]);
|
|
16186
16204
|
const onSortToggle = React.useCallback((attributeName) => setSort(current => getNextSort(current, attributeName)), []);
|
|
16187
16205
|
return {
|
|
16188
16206
|
context,
|
|
@@ -16227,9 +16245,9 @@ const ElementTable = React.memo(({ elementConfig }) => {
|
|
|
16227
16245
|
// Стиль колонки из конфига идёт последним: шрифт задан для значений, и ширину
|
|
16228
16246
|
// он не трогает — своих размеров у него нет.
|
|
16229
16247
|
style: {
|
|
16230
|
-
...getColumnStyle(columnIndex, columnWidths[attribute.attributeName]
|
|
16248
|
+
...getColumnStyle(columnIndex, columnWidths[attribute.attributeName]),
|
|
16231
16249
|
...attribute.style,
|
|
16232
|
-
}, children: [jsxRuntime.jsx(TableCell, { attribute: attribute, row: row, canEdit: context.canEdit, onChange: context.onCellChange }), attribute.resizable && (jsxRuntime.jsx(TableColumnResizer, { index: columnIndex,
|
|
16250
|
+
}, children: [jsxRuntime.jsx(TableCell, { attribute: attribute, row: row, canEdit: context.canEdit, onChange: context.onCellChange }), attribute.resizable && (jsxRuntime.jsx(TableColumnResizer, { index: columnIndex, onResize: onColumnResize }))] }, attribute.attributeName))), context.canDelete && (jsxRuntime.jsx(TableActionsCell, { children: jsxRuntime.jsx(uilibGl.IconButton, { kind: "delete", title: t("actions.delete", { ns: "common", defaultValue: "Удалить" }), onClick: () => context.onRowDelete(row.key) }) }))] }, row.key))) })] }) }));
|
|
16233
16251
|
});
|
|
16234
16252
|
|
|
16235
16253
|
const TooltipIcon = styled(uilibGl.Icon).withConfig({ displayName: "TooltipIcon", componentId: "sc-1lkxudm" }) `
|