@snack-uikit/table 0.16.8-preview-e82f86de.0 → 0.16.8-preview-fa3ea861.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/dist/components/Table/Table.js +14 -4
- package/dist/helperComponents/Cells/CopyCell/styles.module.css +3 -0
- package/dist/helperComponents/Cells/HeaderCell/HeaderCell.js +1 -1
- package/dist/helperComponents/Cells/HeaderCell/styles.module.css +3 -0
- package/dist/types.d.ts +2 -0
- package/package.json +5 -5
- package/src/components/Table/Table.tsx +15 -4
- package/src/helperComponents/Cells/CopyCell/styles.module.scss +3 -0
- package/src/helperComponents/Cells/HeaderCell/HeaderCell.tsx +1 -0
- package/src/helperComponents/Cells/HeaderCell/styles.module.scss +4 -0
- package/src/types.ts +2 -0
|
@@ -123,6 +123,11 @@ export function Table(_a) {
|
|
|
123
123
|
}
|
|
124
124
|
}, [loading, rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.multiRow, table]);
|
|
125
125
|
const columnSizeVarsRef = useRef();
|
|
126
|
+
const headers = table.getFlatHeaders();
|
|
127
|
+
const columnSizesSnapshot = table
|
|
128
|
+
.getAllColumns()
|
|
129
|
+
.map(column => column.getSize())
|
|
130
|
+
.join('_');
|
|
126
131
|
const columnSizeVars = useMemo(() => {
|
|
127
132
|
var _a;
|
|
128
133
|
const sizeKey = (id) => `--table-column-${id}-size`;
|
|
@@ -138,7 +143,6 @@ export function Table(_a) {
|
|
|
138
143
|
return 0;
|
|
139
144
|
};
|
|
140
145
|
const originalColumnDefs = table._getColumnDefs();
|
|
141
|
-
const headers = table.getFlatHeaders();
|
|
142
146
|
const colSizes = {};
|
|
143
147
|
for (let i = 0; i < headers.length; i++) {
|
|
144
148
|
const header = headers[i];
|
|
@@ -161,10 +165,16 @@ export function Table(_a) {
|
|
|
161
165
|
colSizes[flexKey(header.id)] = size === '100%' ? 'unset' : '0';
|
|
162
166
|
}
|
|
163
167
|
return colSizes;
|
|
164
|
-
/*
|
|
165
|
-
|
|
168
|
+
/*
|
|
169
|
+
effect must be called only on columnSizingInfo.isResizingColumn changes
|
|
170
|
+
to reduce unnecessary recalculations
|
|
171
|
+
|
|
172
|
+
headers ids can also change, so they also should present here
|
|
173
|
+
|
|
174
|
+
columnSizesSnapshot will trigger re-render after double-click size reset
|
|
175
|
+
*/
|
|
166
176
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
167
|
-
}, [table.getState().columnSizingInfo.isResizingColumn]);
|
|
177
|
+
}, [table.getState().columnSizingInfo.isResizingColumn, headers, columnSizesSnapshot]);
|
|
168
178
|
useEffect(() => {
|
|
169
179
|
columnSizeVarsRef.current = columnSizeVars;
|
|
170
180
|
}, [columnSizeVars]);
|
|
@@ -26,5 +26,5 @@ export function HeaderCell({ header, className }) {
|
|
|
26
26
|
return;
|
|
27
27
|
return (_a = header.column.getToggleSortingHandler()) === null || _a === void 0 ? void 0 : _a(e);
|
|
28
28
|
};
|
|
29
|
-
return (_jsxs(Cell, { style: style, onMouseUp: sortingHandler, "data-sortable": isSortable || undefined, "data-no-padding": columnDef.noHeaderCellPadding || undefined, "data-no-offset": columnDef.noHeaderCellBorderOffset || undefined, "data-test-id": TEST_IDS.headerCell, "data-header-id": header.id, "data-resizing": isResizing || undefined, role: 'columnheader', className: cn(styles.tableHeaderCell, className, columnDef.headerClassName), ref: cellRef, children: [_jsxs("div", { className: styles.tableHeaderCellMain, children: [columnDef.header && (_jsx("div", { className: styles.tableHeaderCellName, children: _jsx(TruncateString, { text: flexRender(columnDef.header, header.getContext()) }) })), Boolean(sortIcon) && (_jsx("div", { className: styles.tableHeaderIcon, "data-sort-direction": sortDirection, "data-test-id": TEST_IDS.headerSortIndicator, children: sortIcon }))] }), Boolean(isResizable) && _jsx(ResizeHandle, { header: header, cellRef: cellRef })] }));
|
|
29
|
+
return (_jsxs(Cell, { style: style, onMouseUp: sortingHandler, "data-sortable": isSortable || undefined, "data-no-padding": columnDef.noHeaderCellPadding || undefined, "data-no-offset": columnDef.noHeaderCellBorderOffset || undefined, "data-test-id": TEST_IDS.headerCell, "data-align": columnDef.headerAlign || undefined, "data-header-id": header.id, "data-resizing": isResizing || undefined, role: 'columnheader', className: cn(styles.tableHeaderCell, className, columnDef.headerClassName), ref: cellRef, children: [_jsxs("div", { className: styles.tableHeaderCellMain, children: [columnDef.header && (_jsx("div", { className: styles.tableHeaderCellName, children: _jsx(TruncateString, { text: flexRender(columnDef.header, header.getContext()) }) })), Boolean(sortIcon) && (_jsx("div", { className: styles.tableHeaderIcon, "data-sort-direction": sortDirection, "data-test-id": TEST_IDS.headerSortIndicator, children: sortIcon }))] }), Boolean(isResizable) && _jsx(ResizeHandle, { header: header, cellRef: cellRef })] }));
|
|
30
30
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ type ColumnPinPosition = ValueOf<typeof COLUMN_PIN_POSITION>;
|
|
|
9
9
|
type BaseColumnDefinition<TData> = Except<ColumnDef<TData>, 'footer' | 'enablePinning' | 'enableGrouping' | 'enableColumnFilter' | 'filterFn' | 'enableGlobalFilter' | 'enableMultiSort' | 'enableHiding'> & {
|
|
10
10
|
/** Заголовок колонки */
|
|
11
11
|
header?: string | ((ctx: HeaderContext<TData, unknown>) => string);
|
|
12
|
+
/** Позиционирование заголовка колонки */
|
|
13
|
+
headerAlign?: ColumnAlign;
|
|
12
14
|
/** Позиционирование контента ячейки в теле таблицы */
|
|
13
15
|
align?: ColumnAlign;
|
|
14
16
|
/** Отключить паддинг у ячейки в теле таблицы */
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"title": "Table",
|
|
7
|
-
"version": "0.16.8-preview-
|
|
7
|
+
"version": "0.16.8-preview-fa3ea861.0",
|
|
8
8
|
"sideEffects": [
|
|
9
9
|
"*.css",
|
|
10
10
|
"*.woff",
|
|
@@ -33,16 +33,16 @@
|
|
|
33
33
|
"scripts": {},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@snack-uikit/button": "0.17.1",
|
|
36
|
-
"@snack-uikit/chips": "0.13.4-preview-
|
|
36
|
+
"@snack-uikit/chips": "0.13.4-preview-fa3ea861.0",
|
|
37
37
|
"@snack-uikit/icon-predefined": "0.5.1",
|
|
38
38
|
"@snack-uikit/icons": "0.20.1",
|
|
39
39
|
"@snack-uikit/info-block": "0.3.4",
|
|
40
|
-
"@snack-uikit/list": "0.11.5-preview-
|
|
40
|
+
"@snack-uikit/list": "0.11.5-preview-fa3ea861.0",
|
|
41
41
|
"@snack-uikit/pagination": "0.6.7",
|
|
42
42
|
"@snack-uikit/scroll": "0.5.3",
|
|
43
43
|
"@snack-uikit/skeleton": "0.3.4",
|
|
44
44
|
"@snack-uikit/toggles": "0.9.8",
|
|
45
|
-
"@snack-uikit/toolbar": "0.7.33-preview-
|
|
45
|
+
"@snack-uikit/toolbar": "0.7.33-preview-fa3ea861.0",
|
|
46
46
|
"@snack-uikit/truncate-string": "0.4.13",
|
|
47
47
|
"@snack-uikit/typography": "0.6.2",
|
|
48
48
|
"@snack-uikit/utils": "3.3.0",
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
"peerDependencies": {
|
|
58
58
|
"@snack-uikit/locale": "*"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "f43a4ee983d921d1e1c8bdccd05a950d278c43ed"
|
|
61
61
|
}
|
|
@@ -112,6 +112,7 @@ export function Table<TData extends object>({
|
|
|
112
112
|
}
|
|
113
113
|
return cols;
|
|
114
114
|
}, [columnDefinitions, enableSelection]);
|
|
115
|
+
|
|
115
116
|
const columnPinning = useMemo(() => {
|
|
116
117
|
const pinningState: Required<ColumnPinningState> = { left: [], right: [] };
|
|
117
118
|
for (const col of tableColumns) {
|
|
@@ -196,6 +197,11 @@ export function Table<TData extends object>({
|
|
|
196
197
|
}, [loading, rowSelectionProp?.multiRow, table]);
|
|
197
198
|
|
|
198
199
|
const columnSizeVarsRef = useRef<Record<string, string>>();
|
|
200
|
+
const headers = table.getFlatHeaders();
|
|
201
|
+
const columnSizesSnapshot = table
|
|
202
|
+
.getAllColumns()
|
|
203
|
+
.map(column => column.getSize())
|
|
204
|
+
.join('_');
|
|
199
205
|
|
|
200
206
|
const columnSizeVars = useMemo(() => {
|
|
201
207
|
const sizeKey = (id: string) => `--table-column-${id}-size`;
|
|
@@ -217,7 +223,6 @@ export function Table<TData extends object>({
|
|
|
217
223
|
};
|
|
218
224
|
|
|
219
225
|
const originalColumnDefs = table._getColumnDefs();
|
|
220
|
-
const headers = table.getFlatHeaders();
|
|
221
226
|
const colSizes: Record<string, string> = {};
|
|
222
227
|
|
|
223
228
|
for (let i = 0; i < headers.length; i++) {
|
|
@@ -248,10 +253,16 @@ export function Table<TData extends object>({
|
|
|
248
253
|
}
|
|
249
254
|
|
|
250
255
|
return colSizes;
|
|
251
|
-
/*
|
|
252
|
-
|
|
256
|
+
/*
|
|
257
|
+
effect must be called only on columnSizingInfo.isResizingColumn changes
|
|
258
|
+
to reduce unnecessary recalculations
|
|
259
|
+
|
|
260
|
+
headers ids can also change, so they also should present here
|
|
261
|
+
|
|
262
|
+
columnSizesSnapshot will trigger re-render after double-click size reset
|
|
263
|
+
*/
|
|
253
264
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
254
|
-
}, [table.getState().columnSizingInfo.isResizingColumn]);
|
|
265
|
+
}, [table.getState().columnSizingInfo.isResizingColumn, headers, columnSizesSnapshot]);
|
|
255
266
|
|
|
256
267
|
useEffect(() => {
|
|
257
268
|
columnSizeVarsRef.current = columnSizeVars;
|
|
@@ -46,6 +46,7 @@ export function HeaderCell<TData>({ header, className }: HeaderCellProps<TData>)
|
|
|
46
46
|
data-no-padding={columnDef.noHeaderCellPadding || undefined}
|
|
47
47
|
data-no-offset={columnDef.noHeaderCellBorderOffset || undefined}
|
|
48
48
|
data-test-id={TEST_IDS.headerCell}
|
|
49
|
+
data-align={columnDef.headerAlign || undefined}
|
|
49
50
|
data-header-id={header.id}
|
|
50
51
|
data-resizing={isResizing || undefined}
|
|
51
52
|
role='columnheader'
|
package/src/types.ts
CHANGED
|
@@ -33,6 +33,8 @@ type BaseColumnDefinition<TData> = Except<
|
|
|
33
33
|
> & {
|
|
34
34
|
/** Заголовок колонки */
|
|
35
35
|
header?: string | ((ctx: HeaderContext<TData, unknown>) => string);
|
|
36
|
+
/** Позиционирование заголовка колонки */
|
|
37
|
+
headerAlign?: ColumnAlign;
|
|
36
38
|
/** Позиционирование контента ячейки в теле таблицы */
|
|
37
39
|
align?: ColumnAlign;
|
|
38
40
|
/** Отключить паддинг у ячейки в теле таблицы */
|