@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.
@@ -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
- /* effect must be called only on columnSizingInfo.isResizingColumn changes
165
- to reduce unnecessary recalculations */
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
  }
@@ -69,6 +69,9 @@
69
69
  -moz-user-select:none;
70
70
  user-select:none;
71
71
  }
72
+ .tableHeaderCell[data-align=right]{
73
+ justify-content:flex-end;
74
+ }
72
75
 
73
76
  .tableHeaderCellMain{
74
77
  overflow:auto;
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-e82f86de.0",
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-e82f86de.0",
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-e82f86de.0",
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-e82f86de.0",
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": "31a8e5230a8829ad3222c4bb9acb9b20e5345f4d"
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
- /* effect must be called only on columnSizingInfo.isResizingColumn changes
252
- to reduce unnecessary recalculations */
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'
@@ -92,6 +92,10 @@
92
92
  &[data-resizing] {
93
93
  user-select: none;
94
94
  }
95
+
96
+ &[data-align='right'] {
97
+ justify-content: flex-end;
98
+ }
95
99
  }
96
100
 
97
101
  .tableHeaderCellMain {
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
  /** Отключить паддинг у ячейки в теле таблицы */