@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.
@@ -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
- /* effect must be called only on columnSizingInfo.isResizingColumn changes
165
- to reduce unnecessary recalculations */
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]);
@@ -10,6 +10,9 @@
10
10
  .copyCell .copyButton{
11
11
  display:none;
12
12
  }
13
+ .copyCell:hover{
14
+ margin-right:calc(0px - (var(--dimension-4m, 32px) + var(--dimension-050m, 4px)));
15
+ }
13
16
  .copyCell:hover .copyButton{
14
17
  display:inline-flex;
15
18
  }
@@ -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-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-e82f86de.0",
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-e82f86de.0",
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-e82f86de.0",
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": "31a8e5230a8829ad3222c4bb9acb9b20e5345f4d"
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
- /* effect must be called only on columnSizingInfo.isResizingColumn changes
252
- to reduce unnecessary recalculations */
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;
@@ -10,11 +10,14 @@
10
10
  width: 100%;
11
11
  min-width: 0;
12
12
  max-width: 100%;
13
+
13
14
  .copyButton {
14
15
  display: none;
15
16
  }
16
17
 
17
18
  &:hover {
19
+ margin-right: calc(0px - calc($dimension-4m + $dimension-050m));
20
+
18
21
  .copyButton {
19
22
  display: inline-flex;
20
23
  }
@@ -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
  /** Отключить паддинг у ячейки в теле таблицы */