@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.
Files changed (83) hide show
  1. package/declarations/components/hds/advanced-table/index.d.ts +13 -3
  2. package/declarations/components/hds/advanced-table/models/column.d.ts +9 -2
  3. package/declarations/components/hds/advanced-table/models/row.d.ts +5 -1
  4. package/declarations/components/hds/advanced-table/models/table.d.ts +13 -2
  5. package/declarations/components/hds/advanced-table/td.d.ts +1 -1
  6. package/declarations/components/hds/advanced-table/th-context-menu.d.ts +16 -7
  7. package/declarations/components/hds/advanced-table/th-reorder-drop-target.d.ts +32 -0
  8. package/declarations/components/hds/advanced-table/th-reorder-handle.d.ts +24 -0
  9. package/declarations/components/hds/advanced-table/th-resize-handle.d.ts +2 -1
  10. package/declarations/components/hds/advanced-table/th-sort.d.ts +11 -3
  11. package/declarations/components/hds/advanced-table/th.d.ts +11 -4
  12. package/declarations/components/hds/advanced-table/tr.d.ts +7 -1
  13. package/declarations/components/hds/advanced-table/types.d.ts +15 -0
  14. package/declarations/components/hds/advanced-table/utils.d.ts +5 -0
  15. package/declarations/components/hds/dropdown/toggle/icon.d.ts +1 -1
  16. package/declarations/components/hds/flyout/index.d.ts +4 -1
  17. package/declarations/components/hds/form/index.d.ts +1 -1
  18. package/declarations/components/hds/form/key-value-inputs/index.d.ts +4 -4
  19. package/declarations/components/hds/form/radio-card/index.d.ts +2 -2
  20. package/declarations/components/hds/modal/index.d.ts +4 -2
  21. package/declarations/components/hds/popover-primitive/index.d.ts +3 -0
  22. package/declarations/components/hds/separator/index.d.ts +1 -1
  23. package/declarations/components/hds/stepper/list/step.d.ts +1 -1
  24. package/declarations/components/hds/stepper/task/indicator.d.ts +1 -1
  25. package/declarations/components/hds/table/index.d.ts +5 -5
  26. package/declarations/components/hds/table/td.d.ts +1 -1
  27. package/declarations/components/hds/table/th-sort.d.ts +1 -1
  28. package/declarations/components/hds/table/th.d.ts +1 -1
  29. package/declarations/template-registry.d.ts +6 -0
  30. package/dist/_app_/components/hds/advanced-table/th-reorder-drop-target.js +1 -0
  31. package/dist/_app_/components/hds/advanced-table/th-reorder-handle.js +1 -0
  32. package/dist/_app_/components/hds/advanced-table/utils.js +1 -0
  33. package/dist/components/hds/advanced-table/index.js +77 -17
  34. package/dist/components/hds/advanced-table/index.js.map +1 -1
  35. package/dist/components/hds/advanced-table/models/column.js +58 -13
  36. package/dist/components/hds/advanced-table/models/column.js.map +1 -1
  37. package/dist/components/hds/advanced-table/models/row.js +38 -3
  38. package/dist/components/hds/advanced-table/models/row.js.map +1 -1
  39. package/dist/components/hds/advanced-table/models/table.js +146 -2
  40. package/dist/components/hds/advanced-table/models/table.js.map +1 -1
  41. package/dist/components/hds/advanced-table/td.js.map +1 -1
  42. package/dist/components/hds/advanced-table/th-context-menu.js +124 -50
  43. package/dist/components/hds/advanced-table/th-context-menu.js.map +1 -1
  44. package/dist/components/hds/advanced-table/th-reorder-drop-target.js +133 -0
  45. package/dist/components/hds/advanced-table/th-reorder-drop-target.js.map +1 -0
  46. package/dist/components/hds/advanced-table/th-reorder-handle.js +104 -0
  47. package/dist/components/hds/advanced-table/th-reorder-handle.js.map +1 -0
  48. package/dist/components/hds/advanced-table/th-resize-handle.js +44 -21
  49. package/dist/components/hds/advanced-table/th-resize-handle.js.map +1 -1
  50. package/dist/components/hds/advanced-table/th-sort.js +20 -8
  51. package/dist/components/hds/advanced-table/th-sort.js.map +1 -1
  52. package/dist/components/hds/advanced-table/th.js +19 -7
  53. package/dist/components/hds/advanced-table/th.js.map +1 -1
  54. package/dist/components/hds/advanced-table/tr.js +1 -1
  55. package/dist/components/hds/advanced-table/tr.js.map +1 -1
  56. package/dist/components/hds/advanced-table/types.js +6 -1
  57. package/dist/components/hds/advanced-table/types.js.map +1 -1
  58. package/dist/components/hds/advanced-table/utils.js +23 -0
  59. package/dist/components/hds/advanced-table/utils.js.map +1 -0
  60. package/dist/components/hds/dropdown/toggle/icon.js.map +1 -1
  61. package/dist/components/hds/flyout/index.js +29 -6
  62. package/dist/components/hds/flyout/index.js.map +1 -1
  63. package/dist/components/hds/form/index.js.map +1 -1
  64. package/dist/components/hds/form/key-value-inputs/index.js.map +1 -1
  65. package/dist/components/hds/form/radio-card/index.js.map +1 -1
  66. package/dist/components/hds/modal/index.js +51 -37
  67. package/dist/components/hds/modal/index.js.map +1 -1
  68. package/dist/components/hds/popover-primitive/index.js +51 -35
  69. package/dist/components/hds/popover-primitive/index.js.map +1 -1
  70. package/dist/components/hds/separator/index.js.map +1 -1
  71. package/dist/components/hds/stepper/list/step.js.map +1 -1
  72. package/dist/components/hds/table/index.js.map +1 -1
  73. package/dist/components/hds/table/td.js.map +1 -1
  74. package/dist/components/hds/table/th-sort.js.map +1 -1
  75. package/dist/components/hds/table/th.js.map +1 -1
  76. package/dist/components.js +1 -1
  77. package/dist/styles/@hashicorp/design-system-components.css +196 -62
  78. package/dist/styles/components/advanced-table.scss +155 -6
  79. package/dist/styles/mixins/_focus-ring.scss +43 -0
  80. package/package.json +5 -2
  81. package/translations/hds/components/advanced-table/en-us.yaml +1 -0
  82. package/translations/hds/components/advanced-table/th-context-menu/en-us.yaml +3 -0
  83. 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: string[] = 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
+ {"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, n } from 'decorator-transforms/runtime';
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 <D.ToggleIcon\n @icon=\"more-vertical\"\n @text=\"Additional actions for {{@column.label}}\"\n @hasChevron={{false}}\n @size=\"small\"\n />\n\n {{#each this._options as |option|}}\n <D.Interactive\n @icon={{option.icon}}\n data-test-context-option-key={{option.key}}\n {{on \"click\" (fn option.action @column D.close)}}\n >\n {{option.label}}\n </D.Interactive>\n {{/each}}\n</Hds::Dropdown>");
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 _options() {
26
+ get _resizeOptions() {
26
27
  const {
27
- column,
28
- isStickyColumn,
29
- hasResizableColumns
28
+ column
30
29
  } = this.args;
31
- let options = [];
32
- if (hasResizableColumns) {
33
- if (!column.isLast) {
34
- const translatedResizeLabel = this.hdsIntl.t('hds.advanced-table.th-context-menu.resize', {
35
- default: 'Resize column'
36
- });
37
- options = [...options, {
38
- key: 'resize-column',
39
- label: translatedResizeLabel,
40
- icon: 'resize-column',
41
- action: this.resizeColumn.bind(this)
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
- options = [...options, {
48
- key: 'reset-column-width',
49
- label: translatedResetWidthLabel,
50
- icon: 'rotate-ccw',
51
- action: this.resetColumnWidth.bind(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
- if (isStickyColumn !== undefined && column.isFirst) {
55
- const translatedPinLabel = this.hdsIntl.t('hds.advanced-table.th-context-menu.pin', {
56
- default: 'Pin column'
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
- const translatedUnpinLabel = this.hdsIntl.t('hds.advanced-table.th-context-menu.unpin', {
59
- default: 'Unpin column'
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
- options = [...options, {
62
- key: 'pin-first-column',
63
- label: isStickyColumn ? translatedUnpinLabel : translatedPinLabel,
64
- icon: isStickyColumn ? 'pin-off' : 'pin',
65
- action: this.pinFirstColumn.bind(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 options;
87
+ return reorderOptions;
69
88
  }
70
- resizeColumn() {
71
- this.args.resizeHandleElement?.focus();
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
- static {
74
- n(this.prototype, "resizeColumn", [action]);
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
- resetColumnWidth(column, dropdownCloseCallback) {
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
- static {
87
- n(this.prototype, "resetColumnWidth", [action]);
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
- pinFirstColumn(column, dropdownCloseCallback) {
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":"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"}
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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"}