@hashicorp/design-system-components 4.23.1 → 4.24.0-rc-20250923215537
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/declarations/components/hds/advanced-table/index.d.ts +13 -3
- package/declarations/components/hds/advanced-table/models/column.d.ts +9 -2
- package/declarations/components/hds/advanced-table/models/row.d.ts +5 -1
- package/declarations/components/hds/advanced-table/models/table.d.ts +13 -2
- package/declarations/components/hds/advanced-table/td.d.ts +1 -1
- package/declarations/components/hds/advanced-table/th-context-menu.d.ts +16 -7
- package/declarations/components/hds/advanced-table/th-reorder-drop-target.d.ts +32 -0
- package/declarations/components/hds/advanced-table/th-reorder-handle.d.ts +24 -0
- package/declarations/components/hds/advanced-table/th-resize-handle.d.ts +2 -1
- package/declarations/components/hds/advanced-table/th-sort.d.ts +11 -3
- package/declarations/components/hds/advanced-table/th.d.ts +11 -4
- package/declarations/components/hds/advanced-table/tr.d.ts +7 -1
- package/declarations/components/hds/advanced-table/types.d.ts +15 -0
- package/declarations/components/hds/advanced-table/utils.d.ts +5 -0
- package/declarations/components/hds/dropdown/toggle/icon.d.ts +1 -1
- package/declarations/components/hds/flyout/index.d.ts +4 -1
- package/declarations/components/hds/form/index.d.ts +1 -1
- package/declarations/components/hds/form/key-value-inputs/index.d.ts +4 -4
- package/declarations/components/hds/form/radio-card/index.d.ts +2 -2
- package/declarations/components/hds/modal/index.d.ts +4 -2
- package/declarations/components/hds/popover-primitive/index.d.ts +3 -0
- package/declarations/components/hds/separator/index.d.ts +1 -1
- package/declarations/components/hds/stepper/list/step.d.ts +1 -1
- package/declarations/components/hds/stepper/task/indicator.d.ts +1 -1
- package/declarations/components/hds/table/index.d.ts +5 -5
- package/declarations/components/hds/table/td.d.ts +1 -1
- package/declarations/components/hds/table/th-sort.d.ts +1 -1
- package/declarations/components/hds/table/th.d.ts +1 -1
- package/declarations/template-registry.d.ts +6 -0
- package/dist/_app_/components/hds/advanced-table/th-reorder-drop-target.js +1 -0
- package/dist/_app_/components/hds/advanced-table/th-reorder-handle.js +1 -0
- package/dist/_app_/components/hds/advanced-table/utils.js +1 -0
- package/dist/components/hds/advanced-table/index.js +77 -17
- package/dist/components/hds/advanced-table/index.js.map +1 -1
- package/dist/components/hds/advanced-table/models/column.js +58 -13
- package/dist/components/hds/advanced-table/models/column.js.map +1 -1
- package/dist/components/hds/advanced-table/models/row.js +38 -3
- package/dist/components/hds/advanced-table/models/row.js.map +1 -1
- package/dist/components/hds/advanced-table/models/table.js +146 -2
- package/dist/components/hds/advanced-table/models/table.js.map +1 -1
- package/dist/components/hds/advanced-table/td.js.map +1 -1
- package/dist/components/hds/advanced-table/th-context-menu.js +124 -50
- package/dist/components/hds/advanced-table/th-context-menu.js.map +1 -1
- package/dist/components/hds/advanced-table/th-reorder-drop-target.js +133 -0
- package/dist/components/hds/advanced-table/th-reorder-drop-target.js.map +1 -0
- package/dist/components/hds/advanced-table/th-reorder-handle.js +104 -0
- package/dist/components/hds/advanced-table/th-reorder-handle.js.map +1 -0
- package/dist/components/hds/advanced-table/th-resize-handle.js +44 -21
- package/dist/components/hds/advanced-table/th-resize-handle.js.map +1 -1
- package/dist/components/hds/advanced-table/th-sort.js +20 -8
- package/dist/components/hds/advanced-table/th-sort.js.map +1 -1
- package/dist/components/hds/advanced-table/th.js +19 -7
- package/dist/components/hds/advanced-table/th.js.map +1 -1
- package/dist/components/hds/advanced-table/tr.js +1 -1
- package/dist/components/hds/advanced-table/tr.js.map +1 -1
- package/dist/components/hds/advanced-table/types.js +6 -1
- package/dist/components/hds/advanced-table/types.js.map +1 -1
- package/dist/components/hds/advanced-table/utils.js +23 -0
- package/dist/components/hds/advanced-table/utils.js.map +1 -0
- package/dist/components/hds/dropdown/toggle/icon.js.map +1 -1
- package/dist/components/hds/flyout/index.js +29 -6
- package/dist/components/hds/flyout/index.js.map +1 -1
- package/dist/components/hds/form/index.js.map +1 -1
- package/dist/components/hds/form/key-value-inputs/index.js.map +1 -1
- package/dist/components/hds/form/radio-card/index.js.map +1 -1
- package/dist/components/hds/modal/index.js +51 -37
- package/dist/components/hds/modal/index.js.map +1 -1
- package/dist/components/hds/popover-primitive/index.js +51 -35
- package/dist/components/hds/popover-primitive/index.js.map +1 -1
- package/dist/components/hds/separator/index.js.map +1 -1
- package/dist/components/hds/stepper/list/step.js.map +1 -1
- package/dist/components/hds/table/index.js.map +1 -1
- package/dist/components/hds/table/td.js.map +1 -1
- package/dist/components/hds/table/th-sort.js.map +1 -1
- package/dist/components/hds/table/th.js.map +1 -1
- package/dist/components.js +1 -1
- package/dist/styles/@hashicorp/design-system-components.css +196 -62
- package/dist/styles/components/advanced-table.scss +155 -6
- package/dist/styles/mixins/_focus-ring.scss +43 -0
- package/package.json +5 -2
- package/translations/hds/components/advanced-table/en-us.yaml +1 -0
- package/translations/hds/components/advanced-table/th-context-menu/en-us.yaml +3 -0
- package/translations/hds/components/advanced-table/th-reorder-handle/en-us.yaml +2 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import HdsAdvancedTableRow from './row.js';
|
|
2
2
|
import { action } from '@ember/object';
|
|
3
3
|
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { isEmpty } from '@ember/utils';
|
|
4
5
|
import HdsAdvancedTableColumn from './column.js';
|
|
5
|
-
import { HdsAdvancedTableThSortOrderValues } from '../types.js';
|
|
6
|
+
import { HdsAdvancedTableThSortOrderValues, HdsAdvancedTableColumnReorderSideValues } from '../types.js';
|
|
6
7
|
import { g, i, n } from 'decorator-transforms/runtime';
|
|
7
8
|
|
|
8
9
|
/**
|
|
@@ -20,7 +21,7 @@ function getVisibleRows(rows) {
|
|
|
20
21
|
}, []);
|
|
21
22
|
}
|
|
22
23
|
function getChildrenCount(rows) {
|
|
23
|
-
return rows.reduce((acc, row) => acc + 1 + getChildrenCount(row.children), 0);
|
|
24
|
+
return rows.reduce((acc, row) => acc + 1 + getChildrenCount(row.children ?? []), 0);
|
|
24
25
|
}
|
|
25
26
|
class HdsAdvancedTableTableModel {
|
|
26
27
|
static {
|
|
@@ -29,6 +30,24 @@ class HdsAdvancedTableTableModel {
|
|
|
29
30
|
});
|
|
30
31
|
}
|
|
31
32
|
#columns = (i(this, "columns"), void 0);
|
|
33
|
+
static {
|
|
34
|
+
g(this.prototype, "columnOrder", [tracked], function () {
|
|
35
|
+
return [];
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
#columnOrder = (i(this, "columnOrder"), void 0);
|
|
39
|
+
static {
|
|
40
|
+
g(this.prototype, "reorderDraggedColumn", [tracked], function () {
|
|
41
|
+
return null;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
#reorderDraggedColumn = (i(this, "reorderDraggedColumn"), void 0);
|
|
45
|
+
static {
|
|
46
|
+
g(this.prototype, "reorderHoveredColumn", [tracked], function () {
|
|
47
|
+
return null;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
#reorderHoveredColumn = (i(this, "reorderHoveredColumn"), void 0);
|
|
32
51
|
static {
|
|
33
52
|
g(this.prototype, "rows", [tracked], function () {
|
|
34
53
|
return [];
|
|
@@ -55,15 +74,18 @@ class HdsAdvancedTableTableModel {
|
|
|
55
74
|
#gridElement = (i(this, "gridElement"), void 0);
|
|
56
75
|
childrenKey;
|
|
57
76
|
hasResizableColumns;
|
|
77
|
+
onColumnReorder;
|
|
58
78
|
onSort;
|
|
59
79
|
constructor(args) {
|
|
60
80
|
const {
|
|
61
81
|
model,
|
|
62
82
|
columns,
|
|
83
|
+
columnOrder,
|
|
63
84
|
childrenKey,
|
|
64
85
|
hasResizableColumns,
|
|
65
86
|
sortBy,
|
|
66
87
|
sortOrder,
|
|
88
|
+
onColumnReorder,
|
|
67
89
|
onSort
|
|
68
90
|
} = args;
|
|
69
91
|
this.childrenKey = childrenKey;
|
|
@@ -75,6 +97,35 @@ class HdsAdvancedTableTableModel {
|
|
|
75
97
|
sortBy,
|
|
76
98
|
sortOrder
|
|
77
99
|
});
|
|
100
|
+
|
|
101
|
+
// set initial column order
|
|
102
|
+
this.columnOrder = isEmpty(columnOrder) ? this.columns.map(column => column.key) : columnOrder; // ensured non-empty
|
|
103
|
+
|
|
104
|
+
this.onColumnReorder = onColumnReorder;
|
|
105
|
+
}
|
|
106
|
+
get hasColumnBeingDragged() {
|
|
107
|
+
return this.reorderDraggedColumn !== null;
|
|
108
|
+
}
|
|
109
|
+
get reorderDraggedColumnCells() {
|
|
110
|
+
if (this.reorderDraggedColumn === null) {
|
|
111
|
+
return [];
|
|
112
|
+
}
|
|
113
|
+
const {
|
|
114
|
+
key
|
|
115
|
+
} = this.reorderDraggedColumn;
|
|
116
|
+
return this.flattenedVisibleRows.map(row => {
|
|
117
|
+
const cell = row.cells.find(cell => cell.columnKey === key);
|
|
118
|
+
return cell;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
get orderedColumns() {
|
|
122
|
+
return this.columnOrder.map(key => {
|
|
123
|
+
const column = this.columns.find(column => column.key === key);
|
|
124
|
+
if (!column) {
|
|
125
|
+
throw new Error(`Column with key ${key} not found`);
|
|
126
|
+
}
|
|
127
|
+
return column;
|
|
128
|
+
});
|
|
78
129
|
}
|
|
79
130
|
get sortCriteria() {
|
|
80
131
|
// get the current column
|
|
@@ -222,6 +273,99 @@ class HdsAdvancedTableTableModel {
|
|
|
222
273
|
static {
|
|
223
274
|
n(this.prototype, "toggleAll", [action]);
|
|
224
275
|
}
|
|
276
|
+
stepColumn(column, step) {
|
|
277
|
+
const {
|
|
278
|
+
table
|
|
279
|
+
} = column;
|
|
280
|
+
const oldIndex = table.orderedColumns.indexOf(column);
|
|
281
|
+
const newIndex = oldIndex + step;
|
|
282
|
+
|
|
283
|
+
// Check if the new position is within the array bounds.
|
|
284
|
+
if (newIndex < 0 || newIndex >= table.orderedColumns.length) {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
const targetColumn = table.orderedColumns[newIndex];
|
|
288
|
+
if (targetColumn === undefined) {
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// Determine the side based on the step direction.
|
|
293
|
+
const side = step > 0 ? HdsAdvancedTableColumnReorderSideValues.Right : HdsAdvancedTableColumnReorderSideValues.Left;
|
|
294
|
+
table.moveColumnToTarget(column, targetColumn, side);
|
|
295
|
+
}
|
|
296
|
+
static {
|
|
297
|
+
n(this.prototype, "stepColumn", [action]);
|
|
298
|
+
}
|
|
299
|
+
moveColumnToTerminalPosition(column, position) {
|
|
300
|
+
const firstColumn = this.orderedColumns.find(column => column.isFirst);
|
|
301
|
+
const {
|
|
302
|
+
targetColumn,
|
|
303
|
+
side
|
|
304
|
+
} = position === 'start' ? {
|
|
305
|
+
targetColumn: firstColumn,
|
|
306
|
+
side: HdsAdvancedTableColumnReorderSideValues.Left
|
|
307
|
+
} : {
|
|
308
|
+
targetColumn: this.orderedColumns[this.orderedColumns.length - 1],
|
|
309
|
+
side: HdsAdvancedTableColumnReorderSideValues.Right
|
|
310
|
+
};
|
|
311
|
+
if (targetColumn === undefined) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// Move the column to the target position
|
|
316
|
+
this.moveColumnToTarget(column, targetColumn, side);
|
|
317
|
+
}
|
|
318
|
+
static {
|
|
319
|
+
n(this.prototype, "moveColumnToTerminalPosition", [action]);
|
|
320
|
+
}
|
|
321
|
+
moveColumnToTarget(sourceColumn, targetColumn, side) {
|
|
322
|
+
const oldIndex = this.orderedColumns.indexOf(sourceColumn);
|
|
323
|
+
const newIndex = this.orderedColumns.indexOf(targetColumn);
|
|
324
|
+
if (oldIndex !== -1 && newIndex !== -1) {
|
|
325
|
+
const updated = [...this.columnOrder];
|
|
326
|
+
updated.splice(oldIndex, 1); // Remove from old position
|
|
327
|
+
|
|
328
|
+
// Calculate the insertion index based on the side
|
|
329
|
+
// If dropping to the right of the target, insert after the target
|
|
330
|
+
// If dropping to the left of the target, insert before the target
|
|
331
|
+
// Adjust for the shift in indices caused by removing the source column
|
|
332
|
+
const adjustedIndex = side === HdsAdvancedTableColumnReorderSideValues.Right ? newIndex > oldIndex ? newIndex : newIndex + 1 : newIndex > oldIndex ? newIndex - 1 : newIndex;
|
|
333
|
+
updated.splice(adjustedIndex, 0, sourceColumn.key); // Insert at new position
|
|
334
|
+
|
|
335
|
+
this.columnOrder = updated;
|
|
336
|
+
for (const row of this.rows) {
|
|
337
|
+
row.columnOrder = updated;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
// we need to wait until the reposition has finished
|
|
341
|
+
requestAnimationFrame(() => {
|
|
342
|
+
sourceColumn.thElement?.scrollIntoView({
|
|
343
|
+
behavior: 'smooth',
|
|
344
|
+
block: 'nearest',
|
|
345
|
+
inline: 'center'
|
|
346
|
+
});
|
|
347
|
+
sourceColumn.isBeingDragged = false;
|
|
348
|
+
this.onColumnReorder?.({
|
|
349
|
+
column: sourceColumn,
|
|
350
|
+
newOrder: updated,
|
|
351
|
+
insertedAt: updated.indexOf(sourceColumn.key)
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
static {
|
|
357
|
+
n(this.prototype, "moveColumnToTarget", [action]);
|
|
358
|
+
}
|
|
359
|
+
moveColumnToDropTarget(targetColumn, side) {
|
|
360
|
+
const sourceColumn = this.reorderDraggedColumn;
|
|
361
|
+
if (sourceColumn == null || sourceColumn === targetColumn) {
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
this.moveColumnToTarget(sourceColumn, targetColumn, side);
|
|
365
|
+
}
|
|
366
|
+
static {
|
|
367
|
+
n(this.prototype, "moveColumnToDropTarget", [action]);
|
|
368
|
+
}
|
|
225
369
|
}
|
|
226
370
|
|
|
227
371
|
export { HdsAdvancedTableTableModel as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../../../../src/components/hds/advanced-table/models/table.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport HdsAdvancedTableRow from './row.ts';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport HdsAdvancedTableColumn from './column.ts';\nimport { HdsAdvancedTableThSortOrderValues } from '../types.ts';\n\nimport type { HdsAdvancedTableSignature } from '../index.ts';\nimport type {\n HdsAdvancedTableExpandState,\n HdsAdvancedTableSortingFunction,\n} from '../types';\n\ntype HdsAdvancedTableTableArgs = Pick<\n HdsAdvancedTableSignature['Args'],\n | 'model'\n | 'columns'\n | 'childrenKey'\n | 'hasResizableColumns'\n | 'sortBy'\n | 'sortOrder'\n | 'onSort'\n>;\n\nfunction getVisibleRows(rows: HdsAdvancedTableRow[]): HdsAdvancedTableRow[] {\n return rows.reduce((acc, row) => {\n acc.push(row);\n\n if (row.isOpen && row.children) {\n acc.push(...getVisibleRows(row.children));\n }\n\n return acc;\n }, [] as HdsAdvancedTableRow[]);\n}\n\nfunction getChildrenCount(rows: HdsAdvancedTableRow[]): number {\n return rows.reduce((acc, row) => acc + 1 + getChildrenCount(row.children), 0);\n}\n\nexport default class HdsAdvancedTableTableModel {\n @tracked columns: HdsAdvancedTableColumn[] = [];\n @tracked rows: HdsAdvancedTableRow[] = [];\n @tracked sortBy: HdsAdvancedTableTableArgs['sortBy'] = undefined;\n @tracked sortOrder: HdsAdvancedTableTableArgs['sortOrder'] =\n HdsAdvancedTableThSortOrderValues.Asc;\n @tracked gridElement?: HTMLDivElement = undefined;\n\n childrenKey?: HdsAdvancedTableTableArgs['childrenKey'];\n hasResizableColumns?: HdsAdvancedTableTableArgs['hasResizableColumns'];\n onSort?: HdsAdvancedTableSignature['Args']['onSort'];\n\n constructor(args: HdsAdvancedTableTableArgs) {\n const {\n model,\n columns,\n childrenKey,\n hasResizableColumns,\n sortBy,\n sortOrder,\n onSort,\n } = args;\n\n this.childrenKey = childrenKey;\n this.hasResizableColumns = hasResizableColumns;\n this.onSort = onSort;\n\n this.setupData({ model, columns, sortBy, sortOrder });\n }\n\n get sortCriteria(): string | HdsAdvancedTableSortingFunction<unknown> {\n // get the current column\n const currentColumn = this.columns.find(\n (column) => column.key === this.sortBy\n );\n\n if (\n // check if there is a custom sorting function associated with the current `sortBy` column (we assume the column has `isSortable`)\n currentColumn?.sortingFunction &&\n typeof currentColumn.sortingFunction === 'function'\n ) {\n return currentColumn.sortingFunction;\n } else {\n // otherwise fallback to the default format \"sortBy:sortOrder\"\n return `${this.sortBy}:${this.sortOrder}`;\n }\n }\n\n get sortedRows(): HdsAdvancedTableRow[] {\n const criteria = this.sortCriteria;\n const rows = this.rows;\n\n if (rows.length <= 1 || criteria === undefined) {\n return rows;\n }\n\n if (typeof criteria === 'function') {\n // Use custom sort function\n return [...rows].sort(criteria);\n } else {\n // Parse the criteria string format \"sortBy:sortOrder\"\n const [sortBy, sortOrder] = criteria.split(':');\n\n if (!sortBy) {\n return rows;\n }\n\n return [...rows].sort((a, b) => {\n const valueA = a[sortBy] as string | number | boolean;\n const valueB = b[sortBy] as string | number | boolean;\n\n if (valueA < valueB) {\n return sortOrder === 'asc' ? -1 : 1;\n }\n if (valueA > valueB) {\n return sortOrder === 'asc' ? 1 : -1;\n }\n\n return 0;\n });\n }\n }\n\n get totalRowCount(): number {\n return getChildrenCount(this.sortedRows);\n }\n\n get flattenedVisibleRows(): HdsAdvancedTableRow[] {\n return getVisibleRows(this.sortedRows);\n }\n\n get lastVisibleRow(): HdsAdvancedTableRow | undefined {\n return this.flattenedVisibleRows[this.flattenedVisibleRows.length - 1];\n }\n\n get hasRowsWithChildren(): boolean {\n return this.rows.some((row) => row.hasChildren);\n }\n\n get allRowsAreOpen(): boolean {\n return this.flattenedVisibleRows.length === this.totalRowCount;\n }\n\n get expandState(): HdsAdvancedTableExpandState {\n if (this.allRowsAreOpen) {\n return true;\n } else {\n return false;\n }\n }\n\n setTransientColumnWidths(options: { roundValues?: boolean } = {}): void {\n const roundValues = options.roundValues ?? false;\n\n this.columns.forEach((column) => {\n column.pxTransientWidth = roundValues\n ? Math.round(column.pxWidth)\n : column.pxWidth;\n });\n }\n\n resetTransientColumnWidths(): void {\n this.columns.forEach((column) => {\n column.pxTransientWidth = undefined;\n });\n }\n\n getColumnByKey(key: string): HdsAdvancedTableColumn | undefined {\n return this.columns.find((column) => column.key === key);\n }\n\n @action\n setupData(\n args: Pick<\n HdsAdvancedTableTableArgs,\n 'model' | 'columns' | 'sortBy' | 'sortOrder'\n >\n ) {\n const { model, columns, sortBy, sortOrder } = args;\n\n this.sortBy = sortBy;\n this.sortOrder = sortOrder ?? HdsAdvancedTableThSortOrderValues.Asc;\n\n this.columns = columns.map(\n (column) =>\n new HdsAdvancedTableColumn({\n column,\n table: this,\n })\n );\n\n this.rows = model.map((row) => {\n return new HdsAdvancedTableRow({\n ...row,\n childrenKey: this.childrenKey,\n columns,\n });\n });\n }\n\n @action\n restoreColumnWidths(): void {\n this.columns.forEach((column) => {\n column.width = column.originalWidth;\n });\n }\n\n @action\n setSortBy(column: string): void {\n if (this.sortBy === column) {\n // check to see if the column is already sorted and invert the sort order if so\n this.sortOrder =\n this.sortOrder === HdsAdvancedTableThSortOrderValues.Asc\n ? HdsAdvancedTableThSortOrderValues.Desc\n : HdsAdvancedTableThSortOrderValues.Asc;\n } else {\n // otherwise, set the sort order to ascending\n this.sortBy = column;\n this.sortOrder = HdsAdvancedTableThSortOrderValues.Asc;\n }\n\n if (typeof this.onSort === 'function') {\n this.onSort(this.sortBy, this.sortOrder);\n }\n }\n\n @action\n openAll() {\n this.rows.forEach((row) => row.openAll());\n }\n\n @action\n collapseAll() {\n this.rows.forEach((row) => row.collapseAll());\n }\n\n @action\n toggleAll() {\n if (this.allRowsAreOpen) {\n this.collapseAll();\n } else {\n this.openAll();\n }\n }\n}\n"],"names":["getVisibleRows","rows","reduce","acc","row","push","isOpen","children","getChildrenCount","HdsAdvancedTableTableModel","g","prototype","tracked","i","void 0","undefined","HdsAdvancedTableThSortOrderValues","Asc","childrenKey","hasResizableColumns","onSort","constructor","args","model","columns","sortBy","sortOrder","setupData","sortCriteria","currentColumn","find","column","key","sortingFunction","sortedRows","criteria","length","sort","split","a","b","valueA","valueB","totalRowCount","flattenedVisibleRows","lastVisibleRow","hasRowsWithChildren","some","hasChildren","allRowsAreOpen","expandState","setTransientColumnWidths","options","roundValues","forEach","pxTransientWidth","Math","round","pxWidth","resetTransientColumnWidths","getColumnByKey","map","HdsAdvancedTableColumn","table","HdsAdvancedTableRow","n","action","restoreColumnWidths","width","originalWidth","setSortBy","Desc","openAll","collapseAll","toggleAll"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.js","sources":["../../../../../src/components/hds/advanced-table/models/table.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport HdsAdvancedTableRow from './row.ts';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { isEmpty } from '@ember/utils';\nimport HdsAdvancedTableColumn from './column.ts';\nimport {\n HdsAdvancedTableColumnReorderSideValues,\n HdsAdvancedTableThSortOrderValues,\n} from '../types.ts';\n\nimport type { HdsAdvancedTableSignature } from '../index.ts';\nimport type {\n HdsAdvancedTableExpandState,\n HdsAdvancedTableCell,\n HdsAdvancedTableColumnReorderCallback,\n HdsAdvancedTableColumnReorderSide,\n HdsAdvancedTableSortingFunction,\n} from '../types';\n\ntype HdsAdvancedTableTableArgs = Pick<\n HdsAdvancedTableSignature['Args'],\n | 'model'\n | 'columns'\n | 'columnOrder'\n | 'childrenKey'\n | 'hasResizableColumns'\n | 'sortBy'\n | 'sortOrder'\n | 'onSort'\n | 'onColumnReorder'\n | 'onColumnResize'\n>;\n\nfunction getVisibleRows(rows: HdsAdvancedTableRow[]): HdsAdvancedTableRow[] {\n return rows.reduce((acc, row) => {\n acc.push(row);\n\n if (row.isOpen && row.children) {\n acc.push(...getVisibleRows(row.children));\n }\n\n return acc;\n }, [] as HdsAdvancedTableRow[]);\n}\n\nfunction getChildrenCount(rows: HdsAdvancedTableRow[]): number {\n return rows.reduce(\n (acc, row) => acc + 1 + getChildrenCount(row.children ?? []),\n 0\n );\n}\n\nexport default class HdsAdvancedTableTableModel {\n @tracked columns: HdsAdvancedTableColumn[] = [];\n @tracked columnOrder: string[] = [];\n @tracked reorderDraggedColumn: HdsAdvancedTableColumn | null = null;\n @tracked reorderHoveredColumn: HdsAdvancedTableColumn | null = null;\n @tracked rows: HdsAdvancedTableRow[] = [];\n @tracked sortBy: HdsAdvancedTableTableArgs['sortBy'] = undefined;\n @tracked sortOrder: HdsAdvancedTableTableArgs['sortOrder'] =\n HdsAdvancedTableThSortOrderValues.Asc;\n @tracked gridElement?: HTMLDivElement = undefined;\n\n childrenKey?: HdsAdvancedTableTableArgs['childrenKey'];\n hasResizableColumns?: HdsAdvancedTableTableArgs['hasResizableColumns'];\n onColumnReorder?: HdsAdvancedTableColumnReorderCallback;\n onSort?: HdsAdvancedTableSignature['Args']['onSort'];\n\n constructor(args: HdsAdvancedTableTableArgs) {\n const {\n model,\n columns,\n columnOrder,\n childrenKey,\n hasResizableColumns,\n sortBy,\n sortOrder,\n onColumnReorder,\n onSort,\n } = args;\n\n this.childrenKey = childrenKey;\n this.hasResizableColumns = hasResizableColumns;\n this.onSort = onSort;\n\n this.setupData({ model, columns, sortBy, sortOrder });\n\n // set initial column order\n this.columnOrder = isEmpty(columnOrder)\n ? this.columns.map((column) => column.key)\n : columnOrder!; // ensured non-empty\n\n this.onColumnReorder = onColumnReorder;\n }\n\n get hasColumnBeingDragged(): boolean {\n return this.reorderDraggedColumn !== null;\n }\n\n get reorderDraggedColumnCells(): HdsAdvancedTableCell[] {\n if (this.reorderDraggedColumn === null) {\n return [];\n }\n\n const { key } = this.reorderDraggedColumn;\n\n return this.flattenedVisibleRows.map((row) => {\n const cell = row.cells.find((cell) => cell.columnKey === key);\n\n return cell!;\n });\n }\n\n get orderedColumns(): HdsAdvancedTableColumn[] {\n return this.columnOrder.map((key) => {\n const column = this.columns.find((column) => column.key === key);\n\n if (!column) {\n throw new Error(`Column with key ${key} not found`);\n }\n\n return column;\n });\n }\n\n get sortCriteria(): string | HdsAdvancedTableSortingFunction<unknown> {\n // get the current column\n const currentColumn = this.columns.find(\n (column) => column.key === this.sortBy\n );\n\n if (\n // check if there is a custom sorting function associated with the current `sortBy` column (we assume the column has `isSortable`)\n currentColumn?.sortingFunction &&\n typeof currentColumn.sortingFunction === 'function'\n ) {\n return currentColumn.sortingFunction;\n } else {\n // otherwise fallback to the default format \"sortBy:sortOrder\"\n return `${this.sortBy}:${this.sortOrder}`;\n }\n }\n\n get sortedRows(): HdsAdvancedTableRow[] {\n const criteria = this.sortCriteria;\n const rows = this.rows;\n\n if (rows.length <= 1 || criteria === undefined) {\n return rows;\n }\n\n if (typeof criteria === 'function') {\n // Use custom sort function\n return [...rows].sort(criteria);\n } else {\n // Parse the criteria string format \"sortBy:sortOrder\"\n const [sortBy, sortOrder] = criteria.split(':');\n\n if (!sortBy) {\n return rows;\n }\n\n return [...rows].sort((a, b) => {\n const valueA = a[sortBy] as string | number | boolean;\n const valueB = b[sortBy] as string | number | boolean;\n\n if (valueA < valueB) {\n return sortOrder === 'asc' ? -1 : 1;\n }\n if (valueA > valueB) {\n return sortOrder === 'asc' ? 1 : -1;\n }\n\n return 0;\n });\n }\n }\n\n get totalRowCount(): number {\n return getChildrenCount(this.sortedRows);\n }\n\n get flattenedVisibleRows(): HdsAdvancedTableRow[] {\n return getVisibleRows(this.sortedRows);\n }\n\n get lastVisibleRow(): HdsAdvancedTableRow | undefined {\n return this.flattenedVisibleRows[this.flattenedVisibleRows.length - 1];\n }\n\n get hasRowsWithChildren(): boolean {\n return this.rows.some((row) => row.hasChildren);\n }\n\n get allRowsAreOpen(): boolean {\n return this.flattenedVisibleRows.length === this.totalRowCount;\n }\n\n get expandState(): HdsAdvancedTableExpandState {\n if (this.allRowsAreOpen) {\n return true;\n } else {\n return false;\n }\n }\n\n setTransientColumnWidths(options: { roundValues?: boolean } = {}): void {\n const roundValues = options.roundValues ?? false;\n\n this.columns.forEach((column) => {\n column.pxTransientWidth = roundValues\n ? Math.round(column.pxWidth)\n : column.pxWidth;\n });\n }\n\n resetTransientColumnWidths(): void {\n this.columns.forEach((column) => {\n column.pxTransientWidth = undefined;\n });\n }\n\n getColumnByKey(key: string): HdsAdvancedTableColumn | undefined {\n return this.columns.find((column) => column.key === key);\n }\n\n @action\n setupData(\n args: Pick<\n HdsAdvancedTableTableArgs,\n 'model' | 'columns' | 'sortBy' | 'sortOrder'\n >\n ) {\n const { model, columns, sortBy, sortOrder } = args;\n\n this.sortBy = sortBy;\n this.sortOrder = sortOrder ?? HdsAdvancedTableThSortOrderValues.Asc;\n\n this.columns = columns.map(\n (column) =>\n new HdsAdvancedTableColumn({\n column,\n table: this,\n })\n );\n\n this.rows = model.map((row) => {\n return new HdsAdvancedTableRow({\n ...row,\n childrenKey: this.childrenKey,\n columns,\n });\n });\n }\n\n @action\n restoreColumnWidths(): void {\n this.columns.forEach((column) => {\n column.width = column.originalWidth;\n });\n }\n\n @action\n setSortBy(column: string): void {\n if (this.sortBy === column) {\n // check to see if the column is already sorted and invert the sort order if so\n this.sortOrder =\n this.sortOrder === HdsAdvancedTableThSortOrderValues.Asc\n ? HdsAdvancedTableThSortOrderValues.Desc\n : HdsAdvancedTableThSortOrderValues.Asc;\n } else {\n // otherwise, set the sort order to ascending\n this.sortBy = column;\n this.sortOrder = HdsAdvancedTableThSortOrderValues.Asc;\n }\n\n if (typeof this.onSort === 'function') {\n this.onSort(this.sortBy, this.sortOrder);\n }\n }\n\n @action\n openAll() {\n this.rows.forEach((row) => row.openAll());\n }\n\n @action\n collapseAll() {\n this.rows.forEach((row) => row.collapseAll());\n }\n\n @action\n toggleAll() {\n if (this.allRowsAreOpen) {\n this.collapseAll();\n } else {\n this.openAll();\n }\n }\n\n @action\n stepColumn(column: HdsAdvancedTableColumn, step: number): void {\n const { table } = column;\n const oldIndex = table.orderedColumns.indexOf(column);\n const newIndex = oldIndex + step;\n\n // Check if the new position is within the array bounds.\n if (newIndex < 0 || newIndex >= table.orderedColumns.length) {\n return;\n }\n\n const targetColumn = table.orderedColumns[newIndex];\n\n if (targetColumn === undefined) {\n return;\n }\n\n // Determine the side based on the step direction.\n const side: HdsAdvancedTableColumnReorderSide =\n step > 0\n ? HdsAdvancedTableColumnReorderSideValues.Right\n : HdsAdvancedTableColumnReorderSideValues.Left;\n\n table.moveColumnToTarget(column, targetColumn, side);\n }\n\n @action\n moveColumnToTerminalPosition(\n column: HdsAdvancedTableColumn,\n position: 'start' | 'end'\n ): void {\n const firstColumn = this.orderedColumns.find((column) => column.isFirst);\n\n const {\n targetColumn,\n side,\n }: {\n targetColumn?: HdsAdvancedTableColumn;\n side: HdsAdvancedTableColumnReorderSide;\n } =\n position === 'start'\n ? {\n targetColumn: firstColumn,\n side: HdsAdvancedTableColumnReorderSideValues.Left,\n }\n : {\n targetColumn: this.orderedColumns[this.orderedColumns.length - 1],\n side: HdsAdvancedTableColumnReorderSideValues.Right,\n };\n\n if (targetColumn === undefined) {\n return;\n }\n\n // Move the column to the target position\n this.moveColumnToTarget(column, targetColumn, side);\n }\n\n @action\n moveColumnToTarget(\n sourceColumn: HdsAdvancedTableColumn,\n targetColumn: HdsAdvancedTableColumn,\n side: HdsAdvancedTableColumnReorderSide\n ): void {\n const oldIndex = this.orderedColumns.indexOf(sourceColumn);\n const newIndex = this.orderedColumns.indexOf(targetColumn);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n const updated = [...this.columnOrder];\n\n updated.splice(oldIndex, 1); // Remove from old position\n\n // Calculate the insertion index based on the side\n // If dropping to the right of the target, insert after the target\n // If dropping to the left of the target, insert before the target\n // Adjust for the shift in indices caused by removing the source column\n const adjustedIndex =\n side === HdsAdvancedTableColumnReorderSideValues.Right\n ? newIndex > oldIndex\n ? newIndex\n : newIndex + 1\n : newIndex > oldIndex\n ? newIndex - 1\n : newIndex;\n\n updated.splice(adjustedIndex, 0, sourceColumn.key); // Insert at new position\n\n this.columnOrder = updated;\n\n for (const row of this.rows) {\n row.columnOrder = updated;\n }\n\n // we need to wait until the reposition has finished\n requestAnimationFrame(() => {\n sourceColumn.thElement?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center',\n });\n\n sourceColumn.isBeingDragged = false;\n\n this.onColumnReorder?.({\n column: sourceColumn,\n newOrder: updated,\n insertedAt: updated.indexOf(sourceColumn.key),\n });\n });\n }\n }\n\n @action\n moveColumnToDropTarget(\n targetColumn: HdsAdvancedTableColumn,\n side: HdsAdvancedTableColumnReorderSide\n ) {\n const sourceColumn = this.reorderDraggedColumn;\n\n if (sourceColumn == null || sourceColumn === targetColumn) {\n return;\n }\n\n this.moveColumnToTarget(sourceColumn, targetColumn, side);\n }\n}\n"],"names":["getVisibleRows","rows","reduce","acc","row","push","isOpen","children","getChildrenCount","HdsAdvancedTableTableModel","g","prototype","tracked","i","void 0","undefined","HdsAdvancedTableThSortOrderValues","Asc","childrenKey","hasResizableColumns","onColumnReorder","onSort","constructor","args","model","columns","columnOrder","sortBy","sortOrder","setupData","isEmpty","map","column","key","hasColumnBeingDragged","reorderDraggedColumn","reorderDraggedColumnCells","flattenedVisibleRows","cell","cells","find","columnKey","orderedColumns","Error","sortCriteria","currentColumn","sortingFunction","sortedRows","criteria","length","sort","split","a","b","valueA","valueB","totalRowCount","lastVisibleRow","hasRowsWithChildren","some","hasChildren","allRowsAreOpen","expandState","setTransientColumnWidths","options","roundValues","forEach","pxTransientWidth","Math","round","pxWidth","resetTransientColumnWidths","getColumnByKey","HdsAdvancedTableColumn","table","HdsAdvancedTableRow","n","action","restoreColumnWidths","width","originalWidth","setSortBy","Desc","openAll","collapseAll","toggleAll","stepColumn","step","oldIndex","indexOf","newIndex","targetColumn","side","HdsAdvancedTableColumnReorderSideValues","Right","Left","moveColumnToTarget","moveColumnToTerminalPosition","position","firstColumn","isFirst","sourceColumn","updated","splice","adjustedIndex","requestAnimationFrame","thElement","scrollIntoView","behavior","block","inline","isBeingDragged","newOrder","insertedAt","moveColumnToDropTarget"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"td.js","sources":["../../../../src/components/hds/advanced-table/td.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { focusable, type FocusableElement } from 'tabbable';\n\nimport type { HdsAdvancedTableHorizontalAlignment } from './types.ts';\nimport { HdsAdvancedTableHorizontalAlignmentValues } from './types.ts';\nimport { onFocusTrapDeactivate } from '../../../modifiers/hds-advanced-table-cell/dom-management.ts';\n\nexport const ALIGNMENTS:
|
|
1
|
+
{"version":3,"file":"td.js","sources":["../../../../src/components/hds/advanced-table/td.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { focusable, type FocusableElement } from 'tabbable';\n\nimport type { HdsAdvancedTableHorizontalAlignment } from './types.ts';\nimport { HdsAdvancedTableHorizontalAlignmentValues } from './types.ts';\nimport { onFocusTrapDeactivate } from '../../../modifiers/hds-advanced-table-cell/dom-management.ts';\n\nexport const ALIGNMENTS: HdsAdvancedTableHorizontalAlignment[] = Object.values(\n HdsAdvancedTableHorizontalAlignmentValues\n);\nexport const DEFAULT_ALIGN = HdsAdvancedTableHorizontalAlignmentValues.Left;\n\nexport interface HdsAdvancedTableTdSignature {\n Args: {\n align?: HdsAdvancedTableHorizontalAlignment;\n rowspan?: number;\n colspan?: number;\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLDivElement;\n}\nexport default class HdsAdvancedTableTd extends Component<HdsAdvancedTableTdSignature> {\n @tracked private _shouldTrapFocus = false;\n private _element!: HTMLDivElement;\n\n // rowspan and colspan have to return 'auto' if not defined because otherwise the style modifier sets grid-area: undefined on the cell, which breaks the grid styles\n get rowspan(): string {\n if (this.args.rowspan) {\n return `span ${this.args.rowspan}`;\n }\n return 'auto';\n }\n\n get colspan(): string | undefined {\n if (this.args.colspan) {\n return `span ${this.args.colspan}`;\n }\n return 'auto';\n }\n\n get align(): HdsAdvancedTableHorizontalAlignment {\n const { align = DEFAULT_ALIGN } = this.args;\n\n assert(\n `@align for \"Hds::AdvancedTable::Td\" must be one of the following: ${ALIGNMENTS.join(\n ', '\n )}; received: ${align}`,\n ALIGNMENTS.includes(align)\n );\n return align;\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table__td'];\n\n // add a class based on the @align argument\n if (this.align) {\n classes.push(`hds-advanced-table__td--align-${this.align}`);\n }\n\n return classes.join(' ');\n }\n\n @action onFocusTrapDeactivate(): void {\n this._shouldTrapFocus = false;\n onFocusTrapDeactivate(this._element);\n }\n\n @action enableFocusTrap(): void {\n this._shouldTrapFocus = true;\n }\n\n @action getInitialFocus(): FocusableElement | undefined {\n const cellFocusableElements = focusable(this._element);\n return cellFocusableElements[0];\n }\n\n @action setElement(element: HTMLDivElement): void {\n this._element = element;\n }\n}\n"],"names":["ALIGNMENTS","Object","values","HdsAdvancedTableHorizontalAlignmentValues","DEFAULT_ALIGN","Left","HdsAdvancedTableTd","Component","g","prototype","tracked","i","void 0","_element","rowspan","args","colspan","align","assert","join","includes","classNames","classes","push","onFocusTrapDeactivate","_shouldTrapFocus","n","action","enableFocusTrap","getInitialFocus","cellFocusableElements","focusable","setElement","element","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
|
-
import { action } from '@ember/object';
|
|
3
2
|
import { service } from '@ember/service';
|
|
4
3
|
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { scheduleOnce } from '@ember/runloop';
|
|
5
|
+
import { modifier } from 'ember-modifier';
|
|
5
6
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
6
|
-
import { g, i
|
|
7
|
+
import { g, i } from 'decorator-transforms/runtime';
|
|
7
8
|
import { setComponentTemplate } from '@ember/component';
|
|
8
9
|
|
|
9
|
-
var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<Hds::Dropdown class=\"hds-advanced-table__th-context-menu\" @enableCollisionDetection={{true}} ...attributes as |D|>\n
|
|
10
|
+
var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n{{#if (gt this._options.length 0)}}\n <Hds::Dropdown class=\"hds-advanced-table__th-context-menu\" @enableCollisionDetection={{true}} ...attributes as |D|>\n <D.ToggleIcon\n @icon=\"more-vertical\"\n @text=\"Additional actions for {{@column.label}}\"\n @hasChevron={{false}}\n @size=\"small\"\n {{this._registerDropdownToggleElement}}\n />\n\n {{#each this._options as |option|}}\n {{#if (eq option.key \"separator\")}}\n <D.Separator />\n {{else if option.action}}\n <D.Interactive\n @icon={{option.icon}}\n data-test-context-option-key={{option.key}}\n {{on \"click\" (fn option.action D.close)}}\n >\n {{option.label}}\n </D.Interactive>\n {{/if}}\n {{/each}}\n </Hds::Dropdown>\n{{/if}}");
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Copyright (c) HashiCorp, Inc.
|
|
@@ -22,59 +23,124 @@ class HdsAdvancedTableThContextMenu extends Component {
|
|
|
22
23
|
g(this.prototype, "_element", [tracked]);
|
|
23
24
|
}
|
|
24
25
|
#_element = (i(this, "_element"), void 0);
|
|
25
|
-
get
|
|
26
|
+
get _resizeOptions() {
|
|
26
27
|
const {
|
|
27
|
-
column
|
|
28
|
-
isStickyColumn,
|
|
29
|
-
hasResizableColumns
|
|
28
|
+
column
|
|
30
29
|
} = this.args;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
const translatedResetWidthLabel = this.hdsIntl.t('hds.advanced-table.th-context-menu.reset-width', {
|
|
45
|
-
default: 'Reset column width'
|
|
30
|
+
const translatedResetWidthLabel = this.hdsIntl.t('hds.advanced-table.th-context-menu.reset-width', {
|
|
31
|
+
default: 'Reset column width'
|
|
32
|
+
});
|
|
33
|
+
let resizeOptions = [{
|
|
34
|
+
key: 'reset-column-width',
|
|
35
|
+
label: translatedResetWidthLabel,
|
|
36
|
+
icon: 'rotate-ccw',
|
|
37
|
+
action: this._resetColumnWidth.bind(this)
|
|
38
|
+
}];
|
|
39
|
+
if (!column.isLast) {
|
|
40
|
+
const translatedResizeLabel = this.hdsIntl.t('hds.advanced-table.th-context-menu.resize', {
|
|
41
|
+
default: 'Resize column'
|
|
46
42
|
});
|
|
47
|
-
|
|
48
|
-
key: '
|
|
49
|
-
label:
|
|
50
|
-
icon: '
|
|
51
|
-
action: this.
|
|
52
|
-
}];
|
|
43
|
+
resizeOptions = [{
|
|
44
|
+
key: 'resize-column',
|
|
45
|
+
label: translatedResizeLabel,
|
|
46
|
+
icon: 'resize-column',
|
|
47
|
+
action: this._resizeColumn.bind(this)
|
|
48
|
+
}, ...resizeOptions];
|
|
53
49
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
return resizeOptions;
|
|
51
|
+
}
|
|
52
|
+
get _reorderOptions() {
|
|
53
|
+
const {
|
|
54
|
+
column
|
|
55
|
+
} = this.args;
|
|
56
|
+
const translatedMoveColumnLabel = this.hdsIntl.t('hds.advanced-table.th-context-menu.move-column', {
|
|
57
|
+
default: 'Move column'
|
|
58
|
+
});
|
|
59
|
+
let reorderOptions = [{
|
|
60
|
+
key: 'reorder-column',
|
|
61
|
+
label: translatedMoveColumnLabel,
|
|
62
|
+
icon: 'move-horizontal',
|
|
63
|
+
action: () => this._moveColumn()
|
|
64
|
+
}];
|
|
65
|
+
if (!column.isFirst) {
|
|
66
|
+
const translatedMoveColumnToStartLabel = this.hdsIntl.t('hds.advanced-table.th-context-menu.move-column-to-start', {
|
|
67
|
+
default: 'Move column to start'
|
|
57
68
|
});
|
|
58
|
-
|
|
59
|
-
|
|
69
|
+
reorderOptions = [...reorderOptions, {
|
|
70
|
+
key: 'move-column-to-start',
|
|
71
|
+
label: translatedMoveColumnToStartLabel,
|
|
72
|
+
icon: 'start',
|
|
73
|
+
action: close => this._moveColumnToPosition('start', close)
|
|
74
|
+
}];
|
|
75
|
+
}
|
|
76
|
+
if (!column.isLast) {
|
|
77
|
+
const translatedMoveColumnToEndLabel = this.hdsIntl.t('hds.advanced-table.th-context-menu.move-column-to-end', {
|
|
78
|
+
default: 'Move column to end'
|
|
60
79
|
});
|
|
61
|
-
|
|
62
|
-
key: '
|
|
63
|
-
label:
|
|
64
|
-
icon:
|
|
65
|
-
action: this.
|
|
80
|
+
reorderOptions = [...reorderOptions, {
|
|
81
|
+
key: 'move-column-to-end',
|
|
82
|
+
label: translatedMoveColumnToEndLabel,
|
|
83
|
+
icon: 'end',
|
|
84
|
+
action: close => this._moveColumnToPosition('end', close)
|
|
66
85
|
}];
|
|
67
86
|
}
|
|
68
|
-
return
|
|
87
|
+
return reorderOptions;
|
|
69
88
|
}
|
|
70
|
-
|
|
71
|
-
|
|
89
|
+
get _stickyColumnOptions() {
|
|
90
|
+
const {
|
|
91
|
+
isStickyColumn
|
|
92
|
+
} = this.args;
|
|
93
|
+
const translatedPinLabel = this.hdsIntl.t('hds.advanced-table.th-context-menu.pin', {
|
|
94
|
+
default: 'Pin column'
|
|
95
|
+
});
|
|
96
|
+
const translatedUnpinLabel = this.hdsIntl.t('hds.advanced-table.th-context-menu.unpin', {
|
|
97
|
+
default: 'Unpin column'
|
|
98
|
+
});
|
|
99
|
+
return [{
|
|
100
|
+
key: 'pin-first-column',
|
|
101
|
+
label: isStickyColumn ? translatedUnpinLabel : translatedPinLabel,
|
|
102
|
+
icon: isStickyColumn ? 'pin-off' : 'pin',
|
|
103
|
+
action: this._pinFirstColumn.bind(this)
|
|
104
|
+
}];
|
|
72
105
|
}
|
|
73
|
-
|
|
74
|
-
|
|
106
|
+
get _options() {
|
|
107
|
+
const {
|
|
108
|
+
column,
|
|
109
|
+
hasReorderableColumns,
|
|
110
|
+
hasResizableColumns,
|
|
111
|
+
isStickyColumn
|
|
112
|
+
} = this.args;
|
|
113
|
+
let allGroups = [];
|
|
114
|
+
if (hasResizableColumns) {
|
|
115
|
+
allGroups = [...allGroups, this._resizeOptions];
|
|
116
|
+
}
|
|
117
|
+
if (hasReorderableColumns && isStickyColumn === undefined) {
|
|
118
|
+
allGroups = [...allGroups, this._reorderOptions];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// we don't allow pinning/unpinning of the sticky column if columns are reorderable
|
|
122
|
+
if (isStickyColumn !== undefined && column.isFirst && !hasReorderableColumns) {
|
|
123
|
+
allGroups = [...allGroups, this._stickyColumnOptions];
|
|
124
|
+
}
|
|
125
|
+
return allGroups.reduce((options, group, index) => {
|
|
126
|
+
// Add a separator before each group except the first
|
|
127
|
+
if (index > 0) {
|
|
128
|
+
return [...options, {
|
|
129
|
+
key: 'separator'
|
|
130
|
+
}, ...group];
|
|
131
|
+
}
|
|
132
|
+
return [...options, ...group];
|
|
133
|
+
}, []);
|
|
134
|
+
}
|
|
135
|
+
_registerDropdownToggleElement = modifier(element => {
|
|
136
|
+
this.args.column.thContextMenuToggleElement = element;
|
|
137
|
+
});
|
|
138
|
+
_resizeColumn() {
|
|
139
|
+
this.args.resizeHandleElement?.focus();
|
|
75
140
|
}
|
|
76
|
-
|
|
141
|
+
_resetColumnWidth(dropdownCloseCallback) {
|
|
77
142
|
const {
|
|
143
|
+
column,
|
|
78
144
|
onColumnResize
|
|
79
145
|
} = this.args;
|
|
80
146
|
column.restoreWidth();
|
|
@@ -83,10 +149,21 @@ class HdsAdvancedTableThContextMenu extends Component {
|
|
|
83
149
|
}
|
|
84
150
|
dropdownCloseCallback();
|
|
85
151
|
}
|
|
86
|
-
|
|
87
|
-
|
|
152
|
+
_moveColumn() {
|
|
153
|
+
// eslint-disable-next-line ember/no-runloop
|
|
154
|
+
scheduleOnce('afterRender', this, this.args.column.focusReorderHandle.bind(this));
|
|
155
|
+
}
|
|
156
|
+
_moveColumnToPosition(position, dropdownCloseCallback) {
|
|
157
|
+
const {
|
|
158
|
+
column
|
|
159
|
+
} = this.args;
|
|
160
|
+
column.table.moveColumnToTerminalPosition(column, position);
|
|
161
|
+
requestAnimationFrame(() => {
|
|
162
|
+
dropdownCloseCallback?.();
|
|
163
|
+
column.thContextMenuToggleElement?.focus();
|
|
164
|
+
});
|
|
88
165
|
}
|
|
89
|
-
|
|
166
|
+
_pinFirstColumn(dropdownCloseCallback) {
|
|
90
167
|
const {
|
|
91
168
|
onPinFirstColumn
|
|
92
169
|
} = this.args;
|
|
@@ -95,9 +172,6 @@ class HdsAdvancedTableThContextMenu extends Component {
|
|
|
95
172
|
}
|
|
96
173
|
dropdownCloseCallback();
|
|
97
174
|
}
|
|
98
|
-
static {
|
|
99
|
-
n(this.prototype, "pinFirstColumn", [action]);
|
|
100
|
-
}
|
|
101
175
|
}
|
|
102
176
|
setComponentTemplate(TEMPLATE, HdsAdvancedTableThContextMenu);
|
|
103
177
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"th-context-menu.js","sources":["../../../../src/components/hds/advanced-table/th-context-menu.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { service } from '@ember/service';\n\nimport type HdsAdvancedTableColumn from './models/column.ts';\nimport type { HdsDropdownSignature } from '../dropdown/index.ts';\nimport type { HdsDropdownToggleIconSignature } from '../dropdown/toggle/icon.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\nimport { tracked } from '@glimmer/tracking';\nimport type { HdsAdvancedTableThResizeHandleSignature } from './th-resize-handle.ts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\n\ninterface HdsAdvancedTableThContextMenuOption {\n key: string;\n label: string;\n icon: HdsDropdownToggleIconSignature['Args']['icon'];\n action: (\n column: HdsAdvancedTableColumn,\n dropdownCloseCallback: () => void\n ) => void;\n}\n\nexport interface HdsAdvancedTableThContextMenuSignature {\n Args: {\n column: HdsAdvancedTableColumn;\n isStickyColumn?: boolean;\n hasResizableColumns?: boolean;\n resizeHandleElement?: HdsAdvancedTableThResizeHandleSignature['Element'];\n onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];\n onPinFirstColumn?: () => void;\n };\n Element: HdsDropdownSignature['Element'];\n}\n\nexport default class HdsAdvancedTableThContextMenu extends Component<HdsAdvancedTableThContextMenuSignature> {\n @service hdsIntl!: HdsIntlService;\n\n @tracked private _element!: HdsDropdownSignature['Element'];\n\n get _options(): HdsAdvancedTableThContextMenuOption[] {\n const { column, isStickyColumn, hasResizableColumns } = this.args;\n\n let options: HdsAdvancedTableThContextMenuOption[] = [];\n\n if (hasResizableColumns) {\n if (!column.isLast) {\n const translatedResizeLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.resize',\n { default: 'Resize column' }\n );\n options = [\n ...options,\n {\n key: 'resize-column',\n label: translatedResizeLabel,\n icon: 'resize-column',\n action: this.resizeColumn.bind(this),\n },\n ];\n }\n\n const translatedResetWidthLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.reset-width',\n { default: 'Reset column width' }\n );\n options = [\n ...options,\n {\n key: 'reset-column-width',\n label: translatedResetWidthLabel,\n icon: 'rotate-ccw',\n action: this.resetColumnWidth.bind(this),\n },\n ];\n }\n\n if (isStickyColumn !== undefined && column.isFirst) {\n const translatedPinLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.pin',\n { default: 'Pin column' }\n );\n const translatedUnpinLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.unpin',\n { default: 'Unpin column' }\n );\n options = [\n ...options,\n {\n key: 'pin-first-column',\n label: isStickyColumn ? translatedUnpinLabel : translatedPinLabel,\n icon: isStickyColumn ? 'pin-off' : 'pin',\n action: this.pinFirstColumn.bind(this),\n },\n ];\n }\n\n return options;\n }\n\n @action\n resizeColumn() {\n this.args.resizeHandleElement?.focus();\n }\n\n @action\n resetColumnWidth(\n column: HdsAdvancedTableColumn,\n dropdownCloseCallback: () => void\n ): void {\n const { onColumnResize } = this.args;\n\n column.restoreWidth();\n\n if (typeof onColumnResize === 'function' && column.key !== undefined) {\n onColumnResize(column.key, column.width);\n }\n\n dropdownCloseCallback();\n }\n\n @action\n pinFirstColumn(\n column: HdsAdvancedTableColumn,\n dropdownCloseCallback: () => void\n ): void {\n const { onPinFirstColumn } = this.args;\n\n if (typeof onPinFirstColumn === 'function') {\n onPinFirstColumn();\n }\n\n dropdownCloseCallback();\n }\n}\n"],"names":["HdsAdvancedTableThContextMenu","Component","g","prototype","service","i","void 0","tracked","_options","column","isStickyColumn","hasResizableColumns","args","options","isLast","translatedResizeLabel","hdsIntl","t","default","key","label","icon","action","resizeColumn","bind","translatedResetWidthLabel","resetColumnWidth","undefined","isFirst","translatedPinLabel","translatedUnpinLabel","pinFirstColumn","resizeHandleElement","focus","n","dropdownCloseCallback","onColumnResize","restoreWidth","width","onPinFirstColumn","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;;AAoCe,MAAMA,6BAA6B,SAASC,SAAS,CAAyC;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAC1GC,OAAO,CAAA,CAAA;AAAA;AAAA,EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,UAAA,EAAA,CAEPI,OAAO,CAAA,CAAA;AAAA;AAAA,EAAA,SAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAAC,MAAA;EAER,IAAIE,QAAQA,GAA0C;IACpD,MAAM;MAAEC,MAAM;MAAEC,cAAc;AAAEC,MAAAA;KAAqB,GAAG,IAAI,CAACC,IAAI;IAEjE,IAAIC,OAA8C,GAAG,EAAE;AAEvD,IAAA,IAAIF,mBAAmB,EAAE;AACvB,MAAA,IAAI,CAACF,MAAM,CAACK,MAAM,EAAE;QAClB,MAAMC,qBAAqB,GAAG,IAAI,CAACC,OAAO,CAACC,CAAC,CAC1C,2CAA2C,EAC3C;AAAEC,UAAAA,OAAO,EAAE;AAAgB,SAC7B,CAAC;AACDL,QAAAA,OAAO,GAAG,CACR,GAAGA,OAAO,EACV;AACEM,UAAAA,GAAG,EAAE,eAAe;AACpBC,UAAAA,KAAK,EAAEL,qBAAqB;AAC5BM,UAAAA,IAAI,EAAE,eAAe;AACrBC,UAAAA,MAAM,EAAE,IAAI,CAACC,YAAY,CAACC,IAAI,CAAC,IAAI;AACrC,SAAC,CACF;AACH,MAAA;MAEA,MAAMC,yBAAyB,GAAG,IAAI,CAACT,OAAO,CAACC,CAAC,CAC9C,gDAAgD,EAChD;AAAEC,QAAAA,OAAO,EAAE;AAAqB,OAClC,CAAC;AACDL,MAAAA,OAAO,GAAG,CACR,GAAGA,OAAO,EACV;AACEM,QAAAA,GAAG,EAAE,oBAAoB;AACzBC,QAAAA,KAAK,EAAEK,yBAAyB;AAChCJ,QAAAA,IAAI,EAAE,YAAY;AAClBC,QAAAA,MAAM,EAAE,IAAI,CAACI,gBAAgB,CAACF,IAAI,CAAC,IAAI;AACzC,OAAC,CACF;AACH,IAAA;AAEA,IAAA,IAAId,cAAc,KAAKiB,SAAS,IAAIlB,MAAM,CAACmB,OAAO,EAAE;MAClD,MAAMC,kBAAkB,GAAG,IAAI,CAACb,OAAO,CAACC,CAAC,CACvC,wCAAwC,EACxC;AAAEC,QAAAA,OAAO,EAAE;AAAa,OAC1B,CAAC;MACD,MAAMY,oBAAoB,GAAG,IAAI,CAACd,OAAO,CAACC,CAAC,CACzC,0CAA0C,EAC1C;AAAEC,QAAAA,OAAO,EAAE;AAAe,OAC5B,CAAC;AACDL,MAAAA,OAAO,GAAG,CACR,GAAGA,OAAO,EACV;AACEM,QAAAA,GAAG,EAAE,kBAAkB;AACvBC,QAAAA,KAAK,EAAEV,cAAc,GAAGoB,oBAAoB,GAAGD,kBAAkB;AACjER,QAAAA,IAAI,EAAEX,cAAc,GAAG,SAAS,GAAG,KAAK;AACxCY,QAAAA,MAAM,EAAE,IAAI,CAACS,cAAc,CAACP,IAAI,CAAC,IAAI;AACvC,OAAC,CACF;AACH,IAAA;AAEA,IAAA,OAAOX,OAAO;AAChB,EAAA;AAGAU,EAAAA,YAAYA,GAAG;AACb,IAAA,IAAI,CAACX,IAAI,CAACoB,mBAAmB,EAAEC,KAAK,EAAE;AACxC,EAAA;AAAC,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAA/B,SAAA,EAAA,cAAA,EAAA,CAHAmB,MAAM,CAAA,CAAA;AAAA;AAMPI,EAAAA,gBAAgBA,CACdjB,MAA8B,EAC9B0B,qBAAiC,EAC3B;IACN,MAAM;AAAEC,MAAAA;KAAgB,GAAG,IAAI,CAACxB,IAAI;IAEpCH,MAAM,CAAC4B,YAAY,EAAE;IAErB,IAAI,OAAOD,cAAc,KAAK,UAAU,IAAI3B,MAAM,CAACU,GAAG,KAAKQ,SAAS,EAAE;MACpES,cAAc,CAAC3B,MAAM,CAACU,GAAG,EAAEV,MAAM,CAAC6B,KAAK,CAAC;AAC1C,IAAA;AAEAH,IAAAA,qBAAqB,EAAE;AACzB,EAAA;AAAC,EAAA;IAAAD,CAAA,CAAA,IAAA,CAAA/B,SAAA,EAAA,kBAAA,EAAA,CAdAmB,MAAM,CAAA,CAAA;AAAA;AAiBPS,EAAAA,cAAcA,CACZtB,MAA8B,EAC9B0B,qBAAiC,EAC3B;IACN,MAAM;AAAEI,MAAAA;KAAkB,GAAG,IAAI,CAAC3B,IAAI;AAEtC,IAAA,IAAI,OAAO2B,gBAAgB,KAAK,UAAU,EAAE;AAC1CA,MAAAA,gBAAgB,EAAE;AACpB,IAAA;AAEAJ,IAAAA,qBAAqB,EAAE;AACzB,EAAA;AAAC,EAAA;IAAAD,CAAA,CAAA,IAAA,CAAA/B,SAAA,EAAA,gBAAA,EAAA,CAZAmB,MAAM,CAAA,CAAA;AAAA;AAaT;AAACkB,oBAAA,CAAAC,QAAA,EAnGoBzC,6BAA6B,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"th-context-menu.js","sources":["../../../../src/components/hds/advanced-table/th-context-menu.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { scheduleOnce } from '@ember/runloop';\nimport { modifier } from 'ember-modifier';\n\nimport type HdsAdvancedTableColumn from './models/column.ts';\nimport type { HdsDropdownSignature } from '../dropdown/index.ts';\nimport type { HdsDropdownToggleIconSignature } from '../dropdown/toggle/icon.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\nimport type { HdsAdvancedTableThReorderHandleSignature } from './th-reorder-handle.ts';\nimport type { HdsAdvancedTableThResizeHandleSignature } from './th-resize-handle.ts';\nimport type { HdsDropdownToggleButtonSignature } from '../dropdown/toggle/button.ts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\n\ninterface HdsAdvancedTableThContextMenuOption {\n key: string;\n icon?: HdsDropdownToggleIconSignature['Args']['icon'];\n label?: string;\n action?: (dropdownCloseCallback: () => void) => void;\n}\n\nexport interface HdsAdvancedTableThContextMenuSignature {\n Args: {\n column: HdsAdvancedTableColumn;\n hasResizableColumns?: boolean;\n hasReorderableColumns?: boolean;\n isStickyColumn?: boolean;\n reorderHandleElement?: HdsAdvancedTableThReorderHandleSignature['Element'];\n resizeHandleElement?: HdsAdvancedTableThResizeHandleSignature['Element'];\n onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];\n onPinFirstColumn?: () => void;\n };\n Element: HdsDropdownSignature['Element'];\n}\n\nexport default class HdsAdvancedTableThContextMenu extends Component<HdsAdvancedTableThContextMenuSignature> {\n @service hdsIntl!: HdsIntlService;\n\n @tracked private _element!: HdsDropdownSignature['Element'];\n\n get _resizeOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { column } = this.args;\n\n const translatedResetWidthLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.reset-width',\n { default: 'Reset column width' }\n );\n\n let resizeOptions: HdsAdvancedTableThContextMenuOption[] = [\n {\n key: 'reset-column-width',\n label: translatedResetWidthLabel,\n icon: 'rotate-ccw',\n action: this._resetColumnWidth.bind(this),\n },\n ];\n\n if (!column.isLast) {\n const translatedResizeLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.resize',\n { default: 'Resize column' }\n );\n\n resizeOptions = [\n {\n key: 'resize-column',\n label: translatedResizeLabel,\n icon: 'resize-column',\n action: this._resizeColumn.bind(this),\n },\n ...resizeOptions,\n ];\n }\n\n return resizeOptions;\n }\n\n get _reorderOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { column } = this.args;\n\n const translatedMoveColumnLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.move-column',\n { default: 'Move column' }\n );\n\n let reorderOptions: HdsAdvancedTableThContextMenuOption[] = [\n {\n key: 'reorder-column',\n label: translatedMoveColumnLabel,\n icon: 'move-horizontal',\n action: () => this._moveColumn(),\n },\n ];\n\n if (!column.isFirst) {\n const translatedMoveColumnToStartLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.move-column-to-start',\n { default: 'Move column to start' }\n );\n reorderOptions = [\n ...reorderOptions,\n {\n key: 'move-column-to-start',\n label: translatedMoveColumnToStartLabel,\n icon: 'start',\n action: (close) => this._moveColumnToPosition('start', close),\n },\n ];\n }\n\n if (!column.isLast) {\n const translatedMoveColumnToEndLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.move-column-to-end',\n { default: 'Move column to end' }\n );\n reorderOptions = [\n ...reorderOptions,\n {\n key: 'move-column-to-end',\n label: translatedMoveColumnToEndLabel,\n icon: 'end',\n action: (close) => this._moveColumnToPosition('end', close),\n },\n ];\n }\n\n return reorderOptions;\n }\n\n get _stickyColumnOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { isStickyColumn } = this.args;\n\n const translatedPinLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.pin',\n { default: 'Pin column' }\n );\n const translatedUnpinLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.unpin',\n { default: 'Unpin column' }\n );\n\n return [\n {\n key: 'pin-first-column',\n label: isStickyColumn ? translatedUnpinLabel : translatedPinLabel,\n icon: isStickyColumn ? 'pin-off' : 'pin',\n action: this._pinFirstColumn.bind(this),\n },\n ];\n }\n\n get _options(): HdsAdvancedTableThContextMenuOption[] {\n const {\n column,\n hasReorderableColumns,\n hasResizableColumns,\n isStickyColumn,\n } = this.args;\n\n let allGroups: HdsAdvancedTableThContextMenuOption[][] = [];\n\n if (hasResizableColumns) {\n allGroups = [...allGroups, this._resizeOptions];\n }\n\n if (hasReorderableColumns && isStickyColumn === undefined) {\n allGroups = [...allGroups, this._reorderOptions];\n }\n\n // we don't allow pinning/unpinning of the sticky column if columns are reorderable\n if (\n isStickyColumn !== undefined &&\n column.isFirst &&\n !hasReorderableColumns\n ) {\n allGroups = [...allGroups, this._stickyColumnOptions];\n }\n\n return allGroups.reduce<HdsAdvancedTableThContextMenuOption[]>(\n (options, group, index) => {\n // Add a separator before each group except the first\n if (index > 0) {\n return [...options, { key: 'separator' }, ...group];\n }\n return [...options, ...group];\n },\n []\n );\n }\n\n private _registerDropdownToggleElement = modifier(\n (element: HdsDropdownToggleButtonSignature['Element']) => {\n this.args.column.thContextMenuToggleElement = element;\n }\n );\n\n private _resizeColumn() {\n this.args.resizeHandleElement?.focus();\n }\n\n private _resetColumnWidth(dropdownCloseCallback: () => void): void {\n const { column, onColumnResize } = this.args;\n\n column.restoreWidth();\n\n if (typeof onColumnResize === 'function' && column.key !== undefined) {\n onColumnResize(column.key, column.width);\n }\n\n dropdownCloseCallback();\n }\n\n private _moveColumn() {\n // eslint-disable-next-line ember/no-runloop\n scheduleOnce(\n 'afterRender',\n this,\n this.args.column.focusReorderHandle.bind(this)\n );\n }\n\n private _moveColumnToPosition(\n position: 'start' | 'end',\n dropdownCloseCallback?: () => void\n ): void {\n const { column } = this.args;\n\n column.table.moveColumnToTerminalPosition(column, position);\n\n requestAnimationFrame(() => {\n dropdownCloseCallback?.();\n\n column.thContextMenuToggleElement?.focus();\n });\n }\n\n private _pinFirstColumn(dropdownCloseCallback: () => void): void {\n const { onPinFirstColumn } = this.args;\n\n if (typeof onPinFirstColumn === 'function') {\n onPinFirstColumn();\n }\n\n dropdownCloseCallback();\n }\n}\n"],"names":["HdsAdvancedTableThContextMenu","Component","g","prototype","service","i","void 0","tracked","_resizeOptions","column","args","translatedResetWidthLabel","hdsIntl","t","default","resizeOptions","key","label","icon","action","_resetColumnWidth","bind","isLast","translatedResizeLabel","_resizeColumn","_reorderOptions","translatedMoveColumnLabel","reorderOptions","_moveColumn","isFirst","translatedMoveColumnToStartLabel","close","_moveColumnToPosition","translatedMoveColumnToEndLabel","_stickyColumnOptions","isStickyColumn","translatedPinLabel","translatedUnpinLabel","_pinFirstColumn","_options","hasReorderableColumns","hasResizableColumns","allGroups","undefined","reduce","options","group","index","_registerDropdownToggleElement","modifier","element","thContextMenuToggleElement","resizeHandleElement","focus","dropdownCloseCallback","onColumnResize","restoreWidth","width","scheduleOnce","focusReorderHandle","position","table","moveColumnToTerminalPosition","requestAnimationFrame","onPinFirstColumn","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|