@snack-uikit/table 0.16.8-preview-e82f86de.0 → 0.16.8-preview-dff5750f.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 +8 -4
- 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 +9 -4
- 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,7 @@ 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();
|
|
126
127
|
const columnSizeVars = useMemo(() => {
|
|
127
128
|
var _a;
|
|
128
129
|
const sizeKey = (id) => `--table-column-${id}-size`;
|
|
@@ -138,7 +139,6 @@ export function Table(_a) {
|
|
|
138
139
|
return 0;
|
|
139
140
|
};
|
|
140
141
|
const originalColumnDefs = table._getColumnDefs();
|
|
141
|
-
const headers = table.getFlatHeaders();
|
|
142
142
|
const colSizes = {};
|
|
143
143
|
for (let i = 0; i < headers.length; i++) {
|
|
144
144
|
const header = headers[i];
|
|
@@ -161,10 +161,14 @@ export function Table(_a) {
|
|
|
161
161
|
colSizes[flexKey(header.id)] = size === '100%' ? 'unset' : '0';
|
|
162
162
|
}
|
|
163
163
|
return colSizes;
|
|
164
|
-
/*
|
|
165
|
-
|
|
164
|
+
/*
|
|
165
|
+
effect must be called only on columnSizingInfo.isResizingColumn changes
|
|
166
|
+
to reduce unnecessary recalculations
|
|
167
|
+
|
|
168
|
+
headers ids can also change, so they also should present here
|
|
169
|
+
*/
|
|
166
170
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
167
|
-
}, [table.getState().columnSizingInfo.isResizingColumn]);
|
|
171
|
+
}, [table.getState().columnSizingInfo.isResizingColumn, headers]);
|
|
168
172
|
useEffect(() => {
|
|
169
173
|
columnSizeVarsRef.current = columnSizeVars;
|
|
170
174
|
}, [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-dff5750f.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-dff5750f.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-dff5750f.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-dff5750f.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": "d01a41cec9d3731763b661f14a4cfed67f4a36ea"
|
|
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,7 @@ 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();
|
|
199
201
|
|
|
200
202
|
const columnSizeVars = useMemo(() => {
|
|
201
203
|
const sizeKey = (id: string) => `--table-column-${id}-size`;
|
|
@@ -217,7 +219,6 @@ export function Table<TData extends object>({
|
|
|
217
219
|
};
|
|
218
220
|
|
|
219
221
|
const originalColumnDefs = table._getColumnDefs();
|
|
220
|
-
const headers = table.getFlatHeaders();
|
|
221
222
|
const colSizes: Record<string, string> = {};
|
|
222
223
|
|
|
223
224
|
for (let i = 0; i < headers.length; i++) {
|
|
@@ -248,10 +249,14 @@ export function Table<TData extends object>({
|
|
|
248
249
|
}
|
|
249
250
|
|
|
250
251
|
return colSizes;
|
|
251
|
-
/*
|
|
252
|
-
|
|
252
|
+
/*
|
|
253
|
+
effect must be called only on columnSizingInfo.isResizingColumn changes
|
|
254
|
+
to reduce unnecessary recalculations
|
|
255
|
+
|
|
256
|
+
headers ids can also change, so they also should present here
|
|
257
|
+
*/
|
|
253
258
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
254
|
-
}, [table.getState().columnSizingInfo.isResizingColumn]);
|
|
259
|
+
}, [table.getState().columnSizingInfo.isResizingColumn, headers]);
|
|
255
260
|
|
|
256
261
|
useEffect(() => {
|
|
257
262
|
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
|
/** Отключить паддинг у ячейки в теле таблицы */
|