@hashicorp/design-system-components 6.1.1-rc-20260408210649 → 6.1.1

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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- design-system-components - TEST
1
+ design-system-components
2
2
  ==============================================================================
3
3
 
4
4
  A package containing the components for the Helios Design System.
@@ -96,11 +96,12 @@ export default class HdsAdvancedTable extends Component<HdsAdvancedTableSignatur
96
96
  showScrollIndicatorTop: boolean;
97
97
  showScrollIndicatorBottom: boolean;
98
98
  stickyColumnOffset: string;
99
- sortBy?: string;
100
- sortOrder?: HdsAdvancedTableThSortOrder;
99
+ currentSortBy?: string;
100
+ currentSortOrder: HdsAdvancedTableThSortOrder;
101
101
  expandedRowIds: TrackedSet<string>;
102
102
  private _setUpScrollWrapper;
103
103
  private _setUpThead;
104
+ private _syncSortArgs;
104
105
  constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']);
105
106
  get childrenKey(): string;
106
107
  get hasRowsWithChildren(): boolean;
package/dist/README.md CHANGED
@@ -1,4 +1,4 @@
1
- design-system-components - TEST
1
+ design-system-components
2
2
  ==============================================================================
3
3
 
4
4
  A package containing the components for the Helios Design System.
@@ -11,7 +11,7 @@ import { precompileTemplate } from '@ember/template-compilation';
11
11
  import { g, i, n } from 'decorator-transforms/runtime';
12
12
  import { setComponentTemplate } from '@ember/component';
13
13
 
14
- var TEMPLATE = precompileTemplate("{{!\n Copyright IBM Corp. 2021, 2025\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<div class=\"hds-advanced-table__actions-container-wrapper\">\n {{#if (has-block \"actions\")}}\n <div class=\"hds-advanced-table__actions\">\n {{yield (hash FilterBar=(component \"hds/filter-bar\")) to=\"actions\"}}\n </div>\n {{/if}}\n\n <div\n class=\"hds-advanced-table__container\n {{(if this.isStickyHeaderPinned \'hds-advanced-table__container--header-is-pinned\')}}\"\n ...attributes\n >\n {{! Caption }}\n <div id={{this._captionId}} class=\"sr-only hds-advanced-table__caption\" aria-live=\"polite\">\n {{@caption}}\n {{this.sortedMessageText}}\n {{this.reorderedMessageText}}\n </div>\n\n <Hds::AdvancedTable::ColumnManager\n @columns={{@columns}}\n @columnOrder={{@columnOrder}}\n @hasReorderableColumns={{@hasReorderableColumns}}\n @hasStickyFirstColumn={{@hasStickyFirstColumn}}\n @isSelectable={{@isSelectable}}\n @onColumnReorder={{this._onColumnReorder}}\n as |CM|\n >\n\n {{! Grid }}\n <div\n class={{this.classNames}}\n role=\"grid\"\n aria-describedby={{this._captionId}}\n {{style\n grid-template-columns=CM.gridTemplateColumns\n --hds-advanced-table-sticky-column-offset=this.stickyColumnOffset\n max-height=@maxHeight\n }}\n {{this._setUpScrollWrapper}}\n {{CM.syncColumnOrder CM.columns @columnOrder}}\n {{CM.syncWidthValues}}\n >\n {{! Header }}\n <div\n class={{this.theadClassNames}}\n role=\"rowgroup\"\n {{this._setUpThead}}\n {{on \"dragleave\" (fn CM.setReorderHoveredColumnKey null)}}\n >\n <Hds::AdvancedTable::Tr\n @selectionScope=\"col\"\n @onClickSortBySelected={{if @selectableColumnKey (fn this.setSortBy @selectableColumnKey)}}\n @sortBySelectedOrder={{if (eq this.sortBy @selectableColumnKey) this.sortOrder}}\n @isSelectable={{this.isSelectable}}\n @onSelectionChange={{this.onSelectionAllChange}}\n @didInsert={{this.didInsertSelectAllCheckbox}}\n @willDestroy={{this.willDestroySelectAllCheckbox}}\n @selectionAriaLabelSuffix=\"all rows\"\n @hasStickyColumn={{this.hasStickyFirstColumn}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n >\n {{#each CM.orderedColumns as |column|}}\n <Hds::AdvancedTable::Th\n @align={{column.align}}\n @column={{column}}\n @draggedColumnKey={{CM.draggedColumnKey}}\n @firstColumnKey={{CM.firstColumnKey}}\n @hasReorderableColumns={{@hasReorderableColumns}}\n @hasResizableColumns={{@hasResizableColumns}}\n @hasSelectableRows={{this.isSelectable}}\n @hasStickyFirstColumn={{this.hasStickyFirstColumn}}\n @isStickyColumn={{if\n (and (eq column.key CM.firstColumnKey) (not-eq this.hasStickyFirstColumn undefined))\n this.hasStickyFirstColumn\n undefined\n }}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n @lastColumnKey={{CM.lastColumnKey}}\n @reorderHoveredColumnKey={{CM.reorderHoveredColumnKey}}\n @draggedColumnSiblingColumnKeys={{if CM.draggedColumnKey (CM.getSiblingColumnKeys CM.draggedColumnKey)}}\n @siblingColumnKeys={{CM.getSiblingColumnKeys column.key}}\n @tableHeight={{this._tableHeight}}\n @tooltip={{column.tooltip}}\n @hasExpandAllButton={{this.hasRowsWithChildren}}\n @isExpanded={{this.isAllExpanded}}\n @isExpandable={{column.isExpandable}}\n @sortOrder={{if (eq column.key this.sortBy) this.sortOrder}}\n @onApplyTransientWidth={{CM.applyTransientWidth}}\n @onClickSort={{if column.isSortable (fn this.setSortBy column.key)}}\n @onClickToggle={{this.toggleExpandAll}}\n @onColumnResize={{@onColumnResize}}\n @onGetAppliedWidth={{CM.getAppliedWidth}}\n @onGetColumnByKey={{CM.getColumnByKey}}\n @onMoveColumnToTerminalPosition={{CM.moveColumnToTerminalPosition}}\n @onPinFirstColumn={{this._onPinFirstColumn}}\n @onReorderDrop={{CM.moveColumnToDropTarget}}\n @onRestoreColumnWidth={{CM.restoreColumnWidth}}\n @onResetTransientColumnWidths={{CM.resetTransientColumnWidths}}\n @onSetDraggedColumnKey={{CM.setDraggedColumnKey}}\n @onSetReorderHoveredColumnKey={{CM.setReorderHoveredColumnKey}}\n @onSetTransientColumnWidth={{CM.setTransientColumnWidth}}\n @onSetTransientColumnWidths={{CM.setTransientColumnWidths}}\n @onStepColumn={{CM.stepColumn}}\n @onUpdateResizeDebt={{CM.updateResizeDebt}}\n {{CM.syncThElements column.key}}\n >\n {{column.label}}\n </Hds::AdvancedTable::Th>\n {{/each}}\n </Hds::AdvancedTable::Tr>\n\n {{#if this.showScrollIndicatorTop}}\n <div class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-top\" />\n {{/if}}\n </div>\n\n {{! Body }}\n <Hds::AdvancedTable::Body\n @childrenKey={{this.childrenKey}}\n @expandedRowIds={{this.expandedRowIds}}\n {{! @glint-expect-error: [HDS-4380](https://hashicorp.atlassian.net/browse/HDS-4380) }}\n @sortedModel={{sort-by this.sortCriteria @model}}\n as |B|\n >\n {{#each B.rows key=\"id\" as |row index|}}\n {{#let (and (not this.hasRowsWithChildren) (not row.hasChildren)) as |isSelectionAllowed|}}\n {{yield\n (hash\n Tr=(component\n \"hds/advanced-table/tr\"\n columnOrder=CM.columnOrder\n data=row.source\n depth=row.depth\n isParentRow=row.hasChildren\n isLastRow=(and (eq row.id B.lastVisibleRowId) (not-eq B.lastVisibleRowId undefined))\n displayRow=row.isVisible\n selectionScope=(if isSelectionAllowed \"row\")\n isSelectable=(if isSelectionAllowed this.isSelectable)\n onSelectionChange=(if isSelectionAllowed this.onSelectionRowChange)\n didInsert=(if isSelectionAllowed this.didInsertRowCheckbox)\n willDestroy=(if isSelectionAllowed this.willDestroyRowCheckbox)\n hasStickyColumn=this.hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n )\n Th=(component\n \"hds/advanced-table/th\"\n isExpandable=row.hasChildren\n isExpanded=row.isExpanded\n onClickToggle=(fn this.toggleRow row.id)\n depth=row.depth\n scope=\"row\"\n newLabel=row.id\n isStickyColumn=this.hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n )\n Td=(component \"hds/advanced-table/td\" align=@align)\n data=row.source\n rowIndex=index\n isOpen=row.isExpanded\n )\n to=\"body\"\n }}\n {{/let}}\n {{/each}}\n </Hds::AdvancedTable::Body>\n </div>\n </Hds::AdvancedTable::ColumnManager>\n\n {{! Empty state }}\n {{#if this.isEmpty}}\n <div class=\"hds-advanced-table__empty-state\">\n {{#if (has-block \"emptyState\")}}\n {{yield to=\"emptyState\"}}\n {{else}}\n <Hds::ApplicationState as |A|>\n <A.Header @title={{hds-t \"hds.components.advanced-table.empty-state.title\" default=\"No data available\"}} />\n <A.Body\n @text={{hds-t\n \"hds.components.advanced-table.empty-state.description\"\n default=\"There is currently no data to display in the table.\"\n }}\n />\n </Hds::ApplicationState>\n {{/if}}\n </div>\n {{/if}}\n\n {{#if this.showScrollIndicatorLeft}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-left\"\n {{style height=this.scrollIndicatorDimensions.height left=this.scrollIndicatorDimensions.left}}\n />\n {{/if}}\n\n {{#if this.showScrollIndicatorRight}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-right\"\n {{style height=this.scrollIndicatorDimensions.height right=this.scrollIndicatorDimensions.right}}\n />\n {{/if}}\n\n {{#if (and this.showScrollIndicatorBottom (not this.isEmpty))}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-bottom\"\n {{style bottom=this.scrollIndicatorDimensions.bottom width=this.scrollIndicatorDimensions.width}}\n />\n {{/if}}\n </div>\n</div>");
14
+ var TEMPLATE = precompileTemplate("{{!\n Copyright IBM Corp. 2021, 2025\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<div class=\"hds-advanced-table__actions-container-wrapper\">\n {{#if (has-block \"actions\")}}\n <div class=\"hds-advanced-table__actions\">\n {{yield (hash FilterBar=(component \"hds/filter-bar\")) to=\"actions\"}}\n </div>\n {{/if}}\n\n <div\n class=\"hds-advanced-table__container\n {{(if this.isStickyHeaderPinned \'hds-advanced-table__container--header-is-pinned\')}}\"\n {{this._syncSortArgs}}\n ...attributes\n >\n {{! Caption }}\n <div id={{this._captionId}} class=\"sr-only hds-advanced-table__caption\" aria-live=\"polite\">\n {{@caption}}\n {{this.sortedMessageText}}\n {{this.reorderedMessageText}}\n </div>\n\n <Hds::AdvancedTable::ColumnManager\n @columns={{@columns}}\n @columnOrder={{@columnOrder}}\n @hasReorderableColumns={{@hasReorderableColumns}}\n @hasStickyFirstColumn={{@hasStickyFirstColumn}}\n @isSelectable={{@isSelectable}}\n @onColumnReorder={{this._onColumnReorder}}\n as |CM|\n >\n\n {{! Grid }}\n <div\n class={{this.classNames}}\n role=\"grid\"\n aria-describedby={{this._captionId}}\n {{style\n grid-template-columns=CM.gridTemplateColumns\n --hds-advanced-table-sticky-column-offset=this.stickyColumnOffset\n max-height=@maxHeight\n }}\n {{this._setUpScrollWrapper}}\n {{CM.syncColumnOrder CM.columns @columnOrder}}\n {{CM.syncWidthValues}}\n >\n {{! Header }}\n <div\n class={{this.theadClassNames}}\n role=\"rowgroup\"\n {{this._setUpThead}}\n {{on \"dragleave\" (fn CM.setReorderHoveredColumnKey null)}}\n >\n <Hds::AdvancedTable::Tr\n @selectionScope=\"col\"\n @onClickSortBySelected={{if @selectableColumnKey (fn this.setSortBy @selectableColumnKey)}}\n @sortBySelectedOrder={{if (eq this.currentSortBy @selectableColumnKey) this.currentSortOrder}}\n @isSelectable={{this.isSelectable}}\n @onSelectionChange={{this.onSelectionAllChange}}\n @didInsert={{this.didInsertSelectAllCheckbox}}\n @willDestroy={{this.willDestroySelectAllCheckbox}}\n @selectionAriaLabelSuffix=\"all rows\"\n @hasStickyColumn={{this.hasStickyFirstColumn}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n >\n {{#each CM.orderedColumns as |column|}}\n <Hds::AdvancedTable::Th\n @align={{column.align}}\n @column={{column}}\n @draggedColumnKey={{CM.draggedColumnKey}}\n @firstColumnKey={{CM.firstColumnKey}}\n @hasReorderableColumns={{@hasReorderableColumns}}\n @hasResizableColumns={{@hasResizableColumns}}\n @hasSelectableRows={{this.isSelectable}}\n @hasStickyFirstColumn={{this.hasStickyFirstColumn}}\n @isStickyColumn={{if\n (and (eq column.key CM.firstColumnKey) (not-eq this.hasStickyFirstColumn undefined))\n this.hasStickyFirstColumn\n undefined\n }}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n @lastColumnKey={{CM.lastColumnKey}}\n @reorderHoveredColumnKey={{CM.reorderHoveredColumnKey}}\n @draggedColumnSiblingColumnKeys={{if CM.draggedColumnKey (CM.getSiblingColumnKeys CM.draggedColumnKey)}}\n @siblingColumnKeys={{CM.getSiblingColumnKeys column.key}}\n @tableHeight={{this._tableHeight}}\n @tooltip={{column.tooltip}}\n @hasExpandAllButton={{this.hasRowsWithChildren}}\n @isExpanded={{this.isAllExpanded}}\n @isExpandable={{column.isExpandable}}\n @sortOrder={{if (eq column.key this.currentSortBy) this.currentSortOrder}}\n @onApplyTransientWidth={{CM.applyTransientWidth}}\n @onClickSort={{if column.isSortable (fn this.setSortBy column.key)}}\n @onClickToggle={{this.toggleExpandAll}}\n @onColumnResize={{@onColumnResize}}\n @onGetAppliedWidth={{CM.getAppliedWidth}}\n @onGetColumnByKey={{CM.getColumnByKey}}\n @onMoveColumnToTerminalPosition={{CM.moveColumnToTerminalPosition}}\n @onPinFirstColumn={{this._onPinFirstColumn}}\n @onReorderDrop={{CM.moveColumnToDropTarget}}\n @onRestoreColumnWidth={{CM.restoreColumnWidth}}\n @onResetTransientColumnWidths={{CM.resetTransientColumnWidths}}\n @onSetDraggedColumnKey={{CM.setDraggedColumnKey}}\n @onSetReorderHoveredColumnKey={{CM.setReorderHoveredColumnKey}}\n @onSetTransientColumnWidth={{CM.setTransientColumnWidth}}\n @onSetTransientColumnWidths={{CM.setTransientColumnWidths}}\n @onStepColumn={{CM.stepColumn}}\n @onUpdateResizeDebt={{CM.updateResizeDebt}}\n {{CM.syncThElements column.key}}\n >\n {{column.label}}\n </Hds::AdvancedTable::Th>\n {{/each}}\n </Hds::AdvancedTable::Tr>\n\n {{#if this.showScrollIndicatorTop}}\n <div class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-top\" />\n {{/if}}\n </div>\n\n {{! Body }}\n <Hds::AdvancedTable::Body\n @childrenKey={{this.childrenKey}}\n @expandedRowIds={{this.expandedRowIds}}\n {{! @glint-expect-error: [HDS-4380](https://hashicorp.atlassian.net/browse/HDS-4380) }}\n @sortedModel={{sort-by this.sortCriteria @model}}\n as |B|\n >\n {{#each B.rows key=\"id\" as |row index|}}\n {{#let (and (not this.hasRowsWithChildren) (not row.hasChildren)) as |isSelectionAllowed|}}\n {{yield\n (hash\n Tr=(component\n \"hds/advanced-table/tr\"\n columnOrder=CM.columnOrder\n data=row.source\n depth=row.depth\n isParentRow=row.hasChildren\n isLastRow=(and (eq row.id B.lastVisibleRowId) (not-eq B.lastVisibleRowId undefined))\n displayRow=row.isVisible\n selectionScope=(if isSelectionAllowed \"row\")\n isSelectable=(if isSelectionAllowed this.isSelectable)\n onSelectionChange=(if isSelectionAllowed this.onSelectionRowChange)\n didInsert=(if isSelectionAllowed this.didInsertRowCheckbox)\n willDestroy=(if isSelectionAllowed this.willDestroyRowCheckbox)\n hasStickyColumn=this.hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n )\n Th=(component\n \"hds/advanced-table/th\"\n isExpandable=row.hasChildren\n isExpanded=row.isExpanded\n onClickToggle=(fn this.toggleRow row.id)\n depth=row.depth\n scope=\"row\"\n newLabel=row.id\n isStickyColumn=this.hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n )\n Td=(component \"hds/advanced-table/td\" align=@align)\n data=row.source\n rowIndex=index\n isOpen=row.isExpanded\n )\n to=\"body\"\n }}\n {{/let}}\n {{/each}}\n </Hds::AdvancedTable::Body>\n </div>\n </Hds::AdvancedTable::ColumnManager>\n\n {{! Empty state }}\n {{#if this.isEmpty}}\n <div class=\"hds-advanced-table__empty-state\">\n {{#if (has-block \"emptyState\")}}\n {{yield to=\"emptyState\"}}\n {{else}}\n <Hds::ApplicationState as |A|>\n <A.Header @title={{hds-t \"hds.components.advanced-table.empty-state.title\" default=\"No data available\"}} />\n <A.Body\n @text={{hds-t\n \"hds.components.advanced-table.empty-state.description\"\n default=\"There is currently no data to display in the table.\"\n }}\n />\n </Hds::ApplicationState>\n {{/if}}\n </div>\n {{/if}}\n\n {{#if this.showScrollIndicatorLeft}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-left\"\n {{style height=this.scrollIndicatorDimensions.height left=this.scrollIndicatorDimensions.left}}\n />\n {{/if}}\n\n {{#if this.showScrollIndicatorRight}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-right\"\n {{style height=this.scrollIndicatorDimensions.height right=this.scrollIndicatorDimensions.right}}\n />\n {{/if}}\n\n {{#if (and this.showScrollIndicatorBottom (not this.isEmpty))}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-bottom\"\n {{style bottom=this.scrollIndicatorDimensions.bottom width=this.scrollIndicatorDimensions.width}}\n />\n {{/if}}\n </div>\n</div>");
15
15
 
16
16
  /**
17
17
  * Copyright IBM Corp. 2021, 2025
@@ -163,13 +163,15 @@ class HdsAdvancedTable extends Component {
163
163
  }
164
164
  #stickyColumnOffset = (i(this, "stickyColumnOffset"), void 0);
165
165
  static {
166
- g(this.prototype, "sortBy", [tracked]);
166
+ g(this.prototype, "currentSortBy", [tracked]);
167
167
  }
168
- #sortBy = (i(this, "sortBy"), void 0); // sorting properties
168
+ #currentSortBy = (i(this, "currentSortBy"), void 0); // sorting properties
169
169
  static {
170
- g(this.prototype, "sortOrder", [tracked]);
170
+ g(this.prototype, "currentSortOrder", [tracked], function () {
171
+ return HdsAdvancedTableThSortOrderValues.Asc;
172
+ });
171
173
  }
172
- #sortOrder = (i(this, "sortOrder"), void 0);
174
+ #currentSortOrder = (i(this, "currentSortOrder"), void 0);
173
175
  // row expansion properties
174
176
  expandedRowIds = new TrackedSet();
175
177
  _setUpScrollWrapper = modifier(element => {
@@ -230,16 +232,24 @@ class HdsAdvancedTable extends Component {
230
232
  _setUpThead = modifier(element => {
231
233
  this._theadElement = element;
232
234
  });
235
+ _syncSortArgs = modifier(() => {
236
+ const {
237
+ sortBy,
238
+ sortOrder
239
+ } = this.args;
240
+ if (sortBy !== undefined) {
241
+ this.currentSortBy = sortBy;
242
+ }
243
+ if (sortOrder !== undefined) {
244
+ this.currentSortOrder = sortOrder;
245
+ }
246
+ });
233
247
  constructor(owner, args) {
234
248
  super(owner, args);
235
249
  const {
236
250
  hasStickyFirstColumn,
237
- model,
238
- sortBy,
239
- sortOrder
251
+ model
240
252
  } = args;
241
- this.sortBy = sortBy;
242
- this.sortOrder = sortOrder ?? HdsAdvancedTableThSortOrderValues.Asc;
243
253
  this._runAssertions();
244
254
  this._initializeExpandedRows(model);
245
255
  if (hasStickyFirstColumn) {
@@ -288,11 +298,11 @@ class HdsAdvancedTable extends Component {
288
298
  const {
289
299
  columns
290
300
  } = this.args;
291
- const currentColumn = columns.find(column => column.key === this.sortBy);
301
+ const currentColumn = columns.find(column => column.key === this.currentSortBy);
292
302
  if (currentColumn?.sortingFunction && typeof currentColumn.sortingFunction === 'function') {
293
303
  return currentColumn.sortingFunction;
294
304
  } else {
295
- return `${this.sortBy}:${this.sortOrder}`;
305
+ return `${this.currentSortBy}:${this.currentSortOrder}`;
296
306
  }
297
307
  }
298
308
  get isEmpty() {
@@ -324,9 +334,9 @@ class HdsAdvancedTable extends Component {
324
334
  } = this.args;
325
335
  if (sortedMessageText !== undefined) {
326
336
  return sortedMessageText;
327
- } else if (this.sortBy !== undefined && this.sortOrder !== undefined) {
337
+ } else if (this.currentSortBy !== undefined) {
328
338
  // we should allow the user to define a custom value here (e.g., for i18n) - tracked with HDS-965
329
- return `Sorted by ${this.sortBy} ${this.sortOrder}ending`;
339
+ return `Sorted by ${this.currentSortBy} ${this.currentSortOrder}ending`;
330
340
  } else {
331
341
  return '';
332
342
  }
@@ -585,16 +595,14 @@ class HdsAdvancedTable extends Component {
585
595
  if (columnKey === undefined) {
586
596
  return;
587
597
  }
588
- if (this.sortBy === columnKey) {
589
- // check to see if the column is already sorted and invert the sort order if so
590
- this.sortOrder = this.sortOrder === HdsAdvancedTableThSortOrderValues.Asc ? HdsAdvancedTableThSortOrderValues.Desc : HdsAdvancedTableThSortOrderValues.Asc;
591
- } else {
592
- // otherwise, set the sort order to ascending
593
- this.sortBy = columnKey;
594
- this.sortOrder = HdsAdvancedTableThSortOrderValues.Asc;
598
+ let newSortOrder = HdsAdvancedTableThSortOrderValues.Asc;
599
+ if (this.currentSortBy === columnKey) {
600
+ newSortOrder = this.currentSortOrder === HdsAdvancedTableThSortOrderValues.Asc ? HdsAdvancedTableThSortOrderValues.Desc : HdsAdvancedTableThSortOrderValues.Asc;
595
601
  }
602
+ this.currentSortBy = columnKey;
603
+ this.currentSortOrder = newSortOrder;
596
604
  if (typeof onSort === 'function') {
597
- onSort(this.sortBy, this.sortOrder);
605
+ onSort(columnKey, newSortOrder);
598
606
  }
599
607
  }
600
608
  static {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/advanced-table/index.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { guidFor } from '@ember/object/internals';\nimport { service } from '@ember/service';\nimport { modifier } from 'ember-modifier';\nimport { TrackedSet } from 'tracked-built-ins';\nimport { HdsAdvancedTableThSortOrderValues } from './types.ts';\n\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\nimport type { ComponentLike } from '@glint/template';\nimport {\n HdsAdvancedTableDensityValues,\n HdsAdvancedTableVerticalAlignmentValues,\n} from './types.ts';\nimport type {\n HdsAdvancedTableColumn,\n HdsAdvancedTableDensities,\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableOnSelectionChangeSignature,\n HdsAdvancedTableSelectableRow,\n HdsAdvancedTableSortingFunction,\n HdsAdvancedTableThSortOrder,\n HdsAdvancedTableVerticalAlignment,\n HdsAdvancedTableModel,\n HdsAdvancedTableExpandState,\n HdsAdvancedTableColumnReorderCallback,\n} from './types.ts';\n\nimport type { HdsFilterBarSignature } from '../filter-bar/index.gts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.gts';\nimport type HdsAdvancedTableTd from './td.ts';\nimport type HdsAdvancedTableTh from './th.ts';\nimport type HdsAdvancedTableTr from './tr.ts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\n\nexport const DENSITIES: HdsAdvancedTableDensities[] = Object.values(\n HdsAdvancedTableDensityValues\n);\nexport const DEFAULT_DENSITY = HdsAdvancedTableDensityValues.Medium;\n\nexport const VALIGNMENTS: HdsAdvancedTableVerticalAlignment[] = Object.values(\n HdsAdvancedTableVerticalAlignmentValues\n);\nexport const DEFAULT_VALIGN = HdsAdvancedTableVerticalAlignmentValues.Top;\n\nexport const BORDER_WIDTH = 1;\n\nconst DEFAULT_SCROLL_DIMENSIONS = {\n bottom: '0px',\n height: '0px',\n left: '0px',\n right: '0px',\n width: '0px',\n};\n\nconst getScrollIndicatorDimensions = (\n scrollWrapper: HTMLDivElement,\n theadElement: HTMLDivElement,\n hasStickyFirstColumn: boolean,\n isStickyColumnPinned: boolean\n) => {\n const horizontalScrollBarHeight =\n scrollWrapper.offsetHeight - scrollWrapper.clientHeight;\n const verticalScrollBarWidth =\n scrollWrapper.offsetWidth - scrollWrapper.clientWidth;\n\n let leftOffset = 0;\n\n if (hasStickyFirstColumn) {\n const stickyColumnHeaders = theadElement.querySelectorAll(\n '.hds-advanced-table__th--is-sticky-column'\n );\n\n stickyColumnHeaders?.forEach((el) => {\n // querySelectorAll returns Elements, which don't have offsetWidth\n // need to use offsetWidth to account for the cell borders\n const elAsHTMLElement = el as HTMLElement;\n leftOffset += elAsHTMLElement.offsetWidth;\n });\n\n // offsets the left: -1px position if there are multiple sticky columns or the first column has a fixed pixel width\n if (stickyColumnHeaders.length > 1) {\n leftOffset -= 1;\n }\n\n // offsets the left: -1px position if the sticky column is already pinned when the scroll indicator is calculated\n if (isStickyColumnPinned) {\n leftOffset -= 1;\n }\n }\n\n return {\n bottom: `${horizontalScrollBarHeight}px`,\n height: `${scrollWrapper.offsetHeight - horizontalScrollBarHeight}px`,\n left: `${leftOffset}px`,\n right: `${verticalScrollBarWidth}px`,\n width: `${scrollWrapper.offsetWidth - verticalScrollBarWidth}px`,\n };\n};\n\nconst getStickyColumnLeftOffset = (\n theadElement: HTMLDivElement,\n hasRowSelection: boolean,\n isStickyColumnPinned: boolean\n) => {\n // if there is no select checkbox column, the sticky column is all the way to the left\n if (!hasRowSelection) return '0px';\n\n const selectableCell = theadElement.querySelector(\n '.hds-advanced-table__th--is-selectable'\n ) as HTMLElement;\n\n let leftOffset = selectableCell?.offsetWidth ?? 0;\n\n // if the sticky column is pinned when the offset is calculated, we need to account for the increased width of the border\n if (isStickyColumnPinned && leftOffset > 0) {\n leftOffset -= 2;\n }\n\n return `${leftOffset}px`;\n};\n\nexport interface HdsAdvancedTableSignature {\n Args: {\n align?: HdsAdvancedTableHorizontalAlignment;\n caption?: string;\n columns: HdsAdvancedTableColumn[];\n columnOrder?: string[];\n density?: HdsAdvancedTableDensities;\n identityKey?: string;\n isSelectable?: boolean;\n isStriped?: boolean;\n model: HdsAdvancedTableModel;\n reorderedMessageText?: string;\n selectionAriaLabelSuffix?: string;\n sortBy?: string;\n selectableColumnKey?: string;\n sortedMessageText?: string;\n sortOrder?: HdsAdvancedTableThSortOrder;\n valign?: HdsAdvancedTableVerticalAlignment;\n hasReorderableColumns?: boolean;\n hasResizableColumns?: boolean;\n hasStickyHeader?: boolean;\n hasStickyFirstColumn?: boolean;\n childrenKey?: string;\n maxHeight?: string;\n onColumnReorder?: HdsAdvancedTableColumnReorderCallback;\n onColumnResize?: (columnKey: string, newWidth?: string) => void;\n onSelectionChange?: (\n selection: HdsAdvancedTableOnSelectionChangeSignature\n ) => void;\n onSort?: (sortBy: string, sortOrder: HdsAdvancedTableThSortOrder) => void;\n };\n Blocks: {\n actions?: [\n {\n FilterBar?: ComponentLike<HdsFilterBarSignature>;\n },\n ];\n body?: [\n {\n Td?: WithBoundArgs<typeof HdsAdvancedTableTd, 'align'>;\n Tr?: WithBoundArgs<\n typeof HdsAdvancedTableTr,\n | 'selectionScope'\n | 'isLastRow'\n | 'isSelectable'\n | 'onSelectionChange'\n | 'didInsert'\n | 'willDestroy'\n | 'selectionAriaLabelSuffix'\n | 'hasStickyColumn'\n | 'isStickyColumnPinned'\n | 'isParentRow'\n | 'depth'\n | 'displayRow'\n >;\n Th?: WithBoundArgs<\n typeof HdsAdvancedTableTh,\n | 'depth'\n | 'isExpandable'\n | 'isExpanded'\n | 'newLabel'\n | 'parentId'\n | 'scope'\n | 'isStickyColumnPinned'\n | 'onClickToggle'\n >;\n data?: Record<string, unknown>;\n rowIndex?: number | string;\n isOpen?: HdsAdvancedTableExpandState;\n },\n ];\n emptyState?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTable extends Component<HdsAdvancedTableSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n @tracked\n private _selectAllCheckbox?: HdsFormCheckboxBaseSignature['Element'] =\n undefined;\n @tracked private _isSelectAllCheckboxSelected?: boolean = undefined;\n @tracked private _tableHeight = 0;\n private _selectableRows: HdsAdvancedTableSelectableRow[] = [];\n private _captionId = 'caption-' + guidFor(this);\n private _scrollHandler!: (event: Event) => void;\n private _resizeObserver!: ResizeObserver;\n private _theadElement!: HTMLDivElement;\n private _scrollWrapperElement!: HTMLDivElement;\n\n @tracked scrollIndicatorDimensions = DEFAULT_SCROLL_DIMENSIONS;\n @tracked isStickyColumnPinned = false;\n @tracked isStickyHeaderPinned = false;\n @tracked hasPinnedFirstColumn: boolean | undefined = undefined;\n @tracked reorderedMessageText = '';\n @tracked showScrollIndicatorLeft = false;\n @tracked showScrollIndicatorRight = false;\n @tracked showScrollIndicatorTop = false;\n @tracked showScrollIndicatorBottom = false;\n @tracked stickyColumnOffset = '0px';\n\n // sorting properties\n @tracked sortBy?: string;\n @tracked sortOrder?: HdsAdvancedTableThSortOrder;\n\n // row expansion properties\n expandedRowIds = new TrackedSet<string>();\n\n private _setUpScrollWrapper = modifier((element: HTMLDivElement) => {\n this._scrollWrapperElement = element;\n\n const updateHorizontalScrollIndicators = () => {\n this.showScrollIndicatorRight = element.clientWidth < element.scrollWidth;\n };\n\n this._scrollHandler = () => {\n this._updateScrollIndicators(element);\n };\n\n element.addEventListener('scroll', this._scrollHandler);\n\n const updateMeasurements = () => {\n const { isSelectable = false } = this.args;\n\n const newTableHeight = element.offsetHeight;\n\n const newDimensions = getScrollIndicatorDimensions(\n element,\n this._theadElement,\n this.hasStickyFirstColumn ? true : false,\n this.isStickyColumnPinned\n );\n\n const setUpdatedMeasurements = () => {\n if (this.isDestroying || this.isDestroyed) {\n return;\n }\n\n const isSameBottom =\n this.scrollIndicatorDimensions.bottom === newDimensions.bottom;\n const isSameHeight =\n this.scrollIndicatorDimensions.height === newDimensions.height;\n const isSameLeft =\n this.scrollIndicatorDimensions.left === newDimensions.left;\n const isSameRight =\n this.scrollIndicatorDimensions.right === newDimensions.right;\n\n if (\n isSameBottom &&\n isSameHeight &&\n isSameLeft &&\n isSameRight &&\n this._tableHeight === newTableHeight\n ) {\n return;\n }\n\n this._tableHeight = newTableHeight;\n this.scrollIndicatorDimensions = newDimensions;\n\n if (this.hasStickyFirstColumn) {\n this.stickyColumnOffset = getStickyColumnLeftOffset(\n this._theadElement,\n isSelectable,\n this.isStickyColumnPinned\n );\n }\n };\n\n window.requestAnimationFrame(setUpdatedMeasurements);\n };\n\n this._resizeObserver = new ResizeObserver((entries) => {\n entries.forEach(() => {\n updateMeasurements();\n updateHorizontalScrollIndicators();\n });\n });\n\n this._resizeObserver.observe(element);\n\n updateMeasurements();\n\n // on render check if should show right scroll indicator\n updateHorizontalScrollIndicators();\n\n // on render check if should show bottom scroll indicator\n if (element.clientHeight < element.scrollHeight) {\n this.showScrollIndicatorBottom = true;\n }\n\n return () => {\n element.removeEventListener('scroll', this._scrollHandler);\n this._resizeObserver.disconnect();\n };\n });\n\n private _setUpThead = modifier((element: HTMLDivElement) => {\n this._theadElement = element;\n });\n\n constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']) {\n super(owner, args);\n\n const { hasStickyFirstColumn, model, sortBy, sortOrder } = args;\n\n this.sortBy = sortBy;\n this.sortOrder = sortOrder ?? HdsAdvancedTableThSortOrderValues.Asc;\n\n this._runAssertions();\n\n this._initializeExpandedRows(model);\n\n if (hasStickyFirstColumn) {\n this.hasPinnedFirstColumn = true;\n }\n }\n\n get childrenKey(): string {\n return this.args.childrenKey ?? 'children';\n }\n\n get hasRowsWithChildren(): boolean {\n const { model } = this.args;\n\n return model.some((record) => {\n const children = record[this.childrenKey] as\n | Record<string, unknown>[]\n | undefined;\n\n return Array.isArray(children) && children.length > 0;\n });\n }\n\n @cached\n get expandableRowIds(): string[] {\n const { model } = this.args;\n\n const ids: string[] = [];\n\n const collect = (items: Record<string, unknown>[]) => {\n items.forEach((item) => {\n const children = item[this.childrenKey] as\n | Record<string, unknown>\n | undefined;\n\n if (Array.isArray(children) && children.length > 0) {\n ids.push(guidFor(item));\n\n collect(children);\n }\n });\n };\n\n collect(model);\n\n return ids;\n }\n\n get isAllExpanded(): boolean {\n if (this.expandableRowIds.length === 0) {\n return false;\n }\n\n return this.expandableRowIds.every((id) => this.expandedRowIds.has(id));\n }\n\n get sortCriteria(): string | HdsAdvancedTableSortingFunction<unknown> {\n const { columns } = this.args;\n\n const currentColumn = columns.find((column) => column.key === this.sortBy);\n\n if (\n currentColumn?.sortingFunction &&\n typeof currentColumn.sortingFunction === 'function'\n ) {\n return currentColumn.sortingFunction;\n } else {\n return `${this.sortBy}:${this.sortOrder}`;\n }\n }\n\n get isEmpty(): boolean {\n const { model } = this.args;\n\n return model.length === 0;\n }\n\n get identityKey(): string | undefined {\n // we have to provide a way for the consumer to pass undefined because Ember tries to interpret undefined as missing an arg and therefore falls back to the default\n if (this.args.identityKey === 'none') {\n return undefined;\n } else {\n return this.args.identityKey ?? '@identity';\n }\n }\n\n get hasStickyFirstColumn(): boolean | undefined {\n // The user-controlled `hasPinnedFirstColumn` variable takes precedence over the model's `hasStickyFirstColumn` property.\n if (this.hasPinnedFirstColumn !== undefined) {\n return this.hasPinnedFirstColumn;\n } else if (this.args.hasStickyFirstColumn === false) {\n return this.args.hasStickyFirstColumn;\n }\n\n return undefined;\n }\n\n get sortedMessageText(): string {\n const { sortedMessageText } = this.args;\n\n if (sortedMessageText !== undefined) {\n return sortedMessageText;\n } else if (this.sortBy !== undefined && this.sortOrder !== undefined) {\n // we should allow the user to define a custom value here (e.g., for i18n) - tracked with HDS-965\n return `Sorted by ${this.sortBy} ${this.sortOrder}ending`;\n } else {\n return '';\n }\n }\n\n get isSelectable(): boolean {\n const { isSelectable = false } = this.args;\n\n if (this.hasRowsWithChildren) {\n assert(\n '@isSelectable must not be true if there are nested rows.',\n !isSelectable\n );\n return isSelectable;\n }\n\n return isSelectable;\n }\n\n get isStriped(): boolean {\n const { isStriped = false } = this.args;\n\n if (this.hasRowsWithChildren) {\n assert(\n '@isStriped must not be true if there are nested rows.',\n !isStriped\n );\n return isStriped;\n }\n\n return isStriped;\n }\n\n get density(): HdsAdvancedTableDensities {\n const { density = DEFAULT_DENSITY } = this.args;\n\n assert(\n `@density for \"Hds::Table\" must be one of the following: ${DENSITIES.join(\n ', '\n )}; received: ${density}`,\n DENSITIES.includes(density)\n );\n\n return density;\n }\n\n get hasStickyHeader(): boolean {\n if (this.args.maxHeight && this.args.hasStickyHeader !== false) {\n return true;\n } else if (this.args.hasStickyHeader && !this.args.maxHeight) {\n assert('Must set @maxHeight to use @hasStickyHeader.', false);\n }\n\n return false;\n }\n\n get valign(): HdsAdvancedTableVerticalAlignment {\n const { valign = DEFAULT_VALIGN } = this.args;\n\n assert(\n `@valign for \"Hds::Table\" must be one of the following: ${VALIGNMENTS.join(\n ', '\n )}; received: ${valign}`,\n VALIGNMENTS.includes(valign)\n );\n\n return valign;\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table'];\n\n if (this.isStriped) {\n classes.push('hds-advanced-table--striped');\n }\n\n if (this.density) {\n classes.push(`hds-advanced-table--density-${this.density}`);\n }\n\n if (this.valign) {\n classes.push(`hds-advanced-table--valign-${this.valign}`);\n }\n\n if (this.hasRowsWithChildren) {\n classes.push(`hds-advanced-table--nested`);\n }\n\n return classes.join(' ');\n }\n\n get theadClassNames(): string {\n const { hasResizableColumns } = this.args;\n\n const classes = ['hds-advanced-table__thead'];\n\n if (this.hasStickyHeader) {\n classes.push('hds-advanced-table__thead--sticky');\n }\n\n if (this.isStickyHeaderPinned) {\n classes.push('hds-advanced-table__thead--is-pinned');\n }\n\n if (hasResizableColumns) {\n classes.push('hds-advanced-table__thead--has-resizable-columns');\n }\n\n return classes.join(' ');\n }\n\n private _initializeExpandedRows(\n model: HdsAdvancedTableSignature['Args']['model']\n ) {\n const traverse = (items: Record<string, unknown>[]) => {\n items.forEach((item) => {\n if (item['isOpen'] === true) {\n this.expandedRowIds.add(guidFor(item));\n }\n\n const children = item[this.childrenKey] as\n | Record<string, unknown>[]\n | undefined;\n\n if (Array.isArray(children) && children.length > 0) {\n traverse(children);\n }\n });\n };\n\n traverse(model);\n }\n\n private _runAssertions() {\n const {\n columns,\n hasReorderableColumns,\n hasResizableColumns,\n hasStickyFirstColumn,\n } = this.args;\n\n if (this.hasRowsWithChildren) {\n const sortableColumns = columns.filter((column) => column.isSortable);\n const sortableColumnLabels = sortableColumns.map(\n (column) => column.label\n );\n\n assert(\n 'Cannot have reorderable columns if there are nested rows.',\n !hasReorderableColumns\n );\n\n assert(\n `Cannot have sortable columns if there are nested rows. Sortable columns are ${sortableColumnLabels.toString()}`,\n sortableColumns.length === 0\n );\n\n assert(\n 'Cannot have a sticky first column if there are nested rows.',\n hasStickyFirstColumn === undefined\n );\n\n assert(\n `Cannot have resizable columns if there are nested rows.`,\n !hasResizableColumns\n );\n }\n\n if (hasReorderableColumns) {\n assert(\n 'Cannot have both reorderable columns and a sticky first column.',\n hasStickyFirstColumn === undefined\n );\n }\n }\n\n private _onColumnReorder: HdsAdvancedTableColumnReorderCallback = ({\n column,\n newOrder,\n insertedAt,\n }) => {\n // Guard against accessing hdsIntl service after component destruction\n if (this.isDestroying || this.isDestroyed) return;\n\n const { reorderedMessageText } = this.args;\n\n if (reorderedMessageText !== undefined) {\n this.reorderedMessageText = reorderedMessageText;\n } else {\n const newPosition = insertedAt + 1;\n const translatedReorderedMessageText = this.hdsIntl.t(\n 'hds.advanced-table.reordered-message',\n {\n default: `Moved ${column.label} column to position ${newPosition}`,\n columnLabel: column.label,\n newPosition,\n }\n );\n\n this.reorderedMessageText = translatedReorderedMessageText;\n }\n\n this.args.onColumnReorder?.({\n column,\n newOrder,\n insertedAt,\n });\n };\n\n onSelectionChangeCallback(\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n const { onSelectionChange } = this.args;\n\n if (typeof onSelectionChange !== 'function') return;\n\n onSelectionChange({\n selectionKey: selectionKey,\n selectionCheckboxElement: checkbox,\n selectedRowsKeys: this._selectableRows.reduce<string[]>((acc, row) => {\n if (row.checkbox.checked) {\n acc.push(row.selectionKey);\n }\n return acc;\n }, []),\n selectableRowsStates: this._selectableRows.reduce(\n (\n acc: { selectionKey: string; isSelected: boolean | undefined }[],\n row\n ) => {\n acc.push({\n selectionKey: row.selectionKey,\n isSelected: row.checkbox.checked,\n });\n return acc;\n },\n []\n ),\n });\n }\n\n @action\n toggleExpandAll() {\n const allIds = this.expandableRowIds;\n const isAllExpanded = allIds.every((id) => this.expandedRowIds.has(id));\n\n if (isAllExpanded) {\n this.expandedRowIds.clear();\n } else {\n // Add all IDs efficiently\n allIds.forEach((id) => this.expandedRowIds.add(id));\n }\n }\n\n @action\n toggleRow(rowId: string) {\n if (this.expandedRowIds.has(rowId)) {\n this.expandedRowIds.delete(rowId);\n } else {\n this.expandedRowIds.add(rowId);\n }\n }\n\n @action\n onSelectionAllChange(): void {\n this._selectableRows.forEach((row) => {\n row.checkbox.checked = this._selectAllCheckbox?.checked ?? false;\n });\n this._isSelectAllCheckboxSelected =\n this._selectAllCheckbox?.checked ?? false;\n this.onSelectionChangeCallback(this._selectAllCheckbox, 'all');\n }\n\n @action\n onSelectionRowChange(\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n this.setSelectAllState();\n this.onSelectionChangeCallback(checkbox, selectionKey);\n }\n\n @action\n didInsertSelectAllCheckbox(\n checkbox: HdsFormCheckboxBaseSignature['Element']\n ): void {\n this._selectAllCheckbox = checkbox;\n }\n\n @action\n willDestroySelectAllCheckbox(): void {\n this._selectAllCheckbox = undefined;\n }\n\n @action\n didInsertRowCheckbox(\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n if (selectionKey) {\n this._selectableRows.push({ selectionKey, checkbox });\n }\n this.setSelectAllState();\n }\n\n @action\n willDestroyRowCheckbox(selectionKey?: string): void {\n if (selectionKey === undefined) {\n return;\n }\n\n const index = this._selectableRows.findIndex(\n (row) => row.selectionKey === selectionKey\n );\n\n if (index === -1) {\n return;\n }\n\n this._selectableRows.splice(index, 1);\n\n this.setSelectAllState();\n }\n\n @action\n setSelectAllState(): void {\n if (this._selectAllCheckbox) {\n const selectableRowsCount = this._selectableRows.length;\n const selectedRowsCount = this._selectableRows.filter(\n (row) => row.checkbox.checked\n ).length;\n\n this._selectAllCheckbox.checked =\n selectedRowsCount === selectableRowsCount;\n this._selectAllCheckbox.indeterminate =\n selectedRowsCount > 0 && selectedRowsCount < selectableRowsCount;\n this._isSelectAllCheckboxSelected = this._selectAllCheckbox.checked;\n }\n }\n\n @action\n setSortBy(columnKey: HdsAdvancedTableColumn['key']): void {\n const { onSort } = this.args;\n\n if (columnKey === undefined) {\n return;\n }\n\n if (this.sortBy === columnKey) {\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 = columnKey;\n this.sortOrder = HdsAdvancedTableThSortOrderValues.Asc;\n }\n\n if (typeof onSort === 'function') {\n onSort(this.sortBy, this.sortOrder);\n }\n }\n\n private _updateScrollIndicators(element: HTMLElement): void {\n // 6px as a buffer so the shadow doesn't appear over the border radius on the edge of the table\n const SCROLL_BUFFER = 6;\n\n // left scroll indicator and sticky column styles\n if (element.scrollLeft > SCROLL_BUFFER) {\n if (this.hasStickyFirstColumn) {\n this.isStickyColumnPinned = true;\n }\n if (!this.showScrollIndicatorLeft) {\n this.showScrollIndicatorLeft = true;\n }\n } else if (element.scrollLeft === 0 && this.showScrollIndicatorLeft) {\n this.isStickyColumnPinned = false;\n this.showScrollIndicatorLeft = false;\n }\n\n // the right edge is how far the user can scroll, which is the full width of the table - the visible section of the table (also subtract the buffer)\n const rightEdge = element.scrollWidth - element.clientWidth - SCROLL_BUFFER;\n\n // right scroll indicator\n if (element.scrollLeft < rightEdge) {\n this.showScrollIndicatorRight = true;\n } else {\n this.showScrollIndicatorRight = false;\n }\n\n // sticky header\n if (element.scrollTop > 0) {\n if (this.hasStickyHeader) {\n this.isStickyHeaderPinned = true;\n }\n this.showScrollIndicatorTop = true;\n } else {\n if (this.hasStickyHeader) {\n this.isStickyHeaderPinned = false;\n }\n this.showScrollIndicatorTop = false;\n }\n\n // the bottom edge is how far the user can scroll, which is the full height of the table - the visible section of the table (also subtract the buffer)\n const bottomEdge =\n element.scrollHeight - element.clientHeight - SCROLL_BUFFER;\n\n // bottom scroll indicator\n if (element.scrollTop < bottomEdge) {\n this.showScrollIndicatorBottom = true;\n } else {\n this.showScrollIndicatorBottom = false;\n }\n }\n\n private _onPinFirstColumn = (): void => {\n this.hasPinnedFirstColumn = this.hasPinnedFirstColumn ? false : true;\n // we need to retrigger the scroll indicator updates if the pinned state is changed when the table is already scrolled\n this._updateScrollIndicators(this._scrollWrapperElement);\n };\n}\n"],"names":["DENSITIES","Object","values","HdsAdvancedTableDensityValues","DEFAULT_DENSITY","Medium","VALIGNMENTS","HdsAdvancedTableVerticalAlignmentValues","DEFAULT_VALIGN","Top","BORDER_WIDTH","DEFAULT_SCROLL_DIMENSIONS","bottom","height","left","right","width","getScrollIndicatorDimensions","scrollWrapper","theadElement","hasStickyFirstColumn","isStickyColumnPinned","horizontalScrollBarHeight","offsetHeight","clientHeight","verticalScrollBarWidth","offsetWidth","clientWidth","leftOffset","stickyColumnHeaders","querySelectorAll","forEach","el","elAsHTMLElement","length","getStickyColumnLeftOffset","hasRowSelection","selectableCell","querySelector","HdsAdvancedTable","Component","g","prototype","service","i","tracked","undefined","_selectableRows","_captionId","guidFor","_scrollHandler","_resizeObserver","_theadElement","_scrollWrapperElement","expandedRowIds","TrackedSet","_setUpScrollWrapper","modifier","element","updateHorizontalScrollIndicators","showScrollIndicatorRight","scrollWidth","_updateScrollIndicators","addEventListener","updateMeasurements","isSelectable","args","newTableHeight","newDimensions","setUpdatedMeasurements","isDestroying","isDestroyed","isSameBottom","scrollIndicatorDimensions","isSameHeight","isSameLeft","isSameRight","_tableHeight","stickyColumnOffset","window","requestAnimationFrame","ResizeObserver","entries","observe","scrollHeight","showScrollIndicatorBottom","removeEventListener","disconnect","_setUpThead","constructor","owner","model","sortBy","sortOrder","HdsAdvancedTableThSortOrderValues","Asc","_runAssertions","_initializeExpandedRows","hasPinnedFirstColumn","childrenKey","hasRowsWithChildren","some","record","children","Array","isArray","expandableRowIds","ids","collect","items","item","push","n","cached","isAllExpanded","every","id","has","sortCriteria","columns","currentColumn","find","column","key","sortingFunction","isEmpty","identityKey","sortedMessageText","assert","isStriped","density","join","includes","hasStickyHeader","maxHeight","valign","classNames","classes","theadClassNames","hasResizableColumns","isStickyHeaderPinned","traverse","add","hasReorderableColumns","sortableColumns","filter","isSortable","sortableColumnLabels","map","label","toString","_onColumnReorder","newOrder","insertedAt","reorderedMessageText","newPosition","translatedReorderedMessageText","hdsIntl","t","default","columnLabel","onColumnReorder","onSelectionChangeCallback","checkbox","selectionKey","onSelectionChange","selectionCheckboxElement","selectedRowsKeys","reduce","acc","row","checked","selectableRowsStates","isSelected","toggleExpandAll","allIds","clear","action","toggleRow","rowId","delete","onSelectionAllChange","_selectAllCheckbox","_isSelectAllCheckboxSelected","onSelectionRowChange","setSelectAllState","didInsertSelectAllCheckbox","willDestroySelectAllCheckbox","didInsertRowCheckbox","willDestroyRowCheckbox","index","findIndex","splice","selectableRowsCount","selectedRowsCount","indeterminate","setSortBy","columnKey","onSort","Desc","SCROLL_BUFFER","scrollLeft","showScrollIndicatorLeft","rightEdge","scrollTop","showScrollIndicatorTop","bottomEdge","_onPinFirstColumn","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/advanced-table/index.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { guidFor } from '@ember/object/internals';\nimport { service } from '@ember/service';\nimport { modifier } from 'ember-modifier';\nimport { TrackedSet } from 'tracked-built-ins';\nimport { HdsAdvancedTableThSortOrderValues } from './types.ts';\n\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\nimport type { ComponentLike } from '@glint/template';\nimport {\n HdsAdvancedTableDensityValues,\n HdsAdvancedTableVerticalAlignmentValues,\n} from './types.ts';\nimport type {\n HdsAdvancedTableColumn,\n HdsAdvancedTableDensities,\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableOnSelectionChangeSignature,\n HdsAdvancedTableSelectableRow,\n HdsAdvancedTableSortingFunction,\n HdsAdvancedTableThSortOrder,\n HdsAdvancedTableVerticalAlignment,\n HdsAdvancedTableModel,\n HdsAdvancedTableExpandState,\n HdsAdvancedTableColumnReorderCallback,\n} from './types.ts';\n\nimport type { HdsFilterBarSignature } from '../filter-bar/index.gts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.gts';\nimport type HdsAdvancedTableTd from './td.ts';\nimport type HdsAdvancedTableTh from './th.ts';\nimport type HdsAdvancedTableTr from './tr.ts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\n\nexport const DENSITIES: HdsAdvancedTableDensities[] = Object.values(\n HdsAdvancedTableDensityValues\n);\nexport const DEFAULT_DENSITY = HdsAdvancedTableDensityValues.Medium;\n\nexport const VALIGNMENTS: HdsAdvancedTableVerticalAlignment[] = Object.values(\n HdsAdvancedTableVerticalAlignmentValues\n);\nexport const DEFAULT_VALIGN = HdsAdvancedTableVerticalAlignmentValues.Top;\n\nexport const BORDER_WIDTH = 1;\n\nconst DEFAULT_SCROLL_DIMENSIONS = {\n bottom: '0px',\n height: '0px',\n left: '0px',\n right: '0px',\n width: '0px',\n};\n\nconst getScrollIndicatorDimensions = (\n scrollWrapper: HTMLDivElement,\n theadElement: HTMLDivElement,\n hasStickyFirstColumn: boolean,\n isStickyColumnPinned: boolean\n) => {\n const horizontalScrollBarHeight =\n scrollWrapper.offsetHeight - scrollWrapper.clientHeight;\n const verticalScrollBarWidth =\n scrollWrapper.offsetWidth - scrollWrapper.clientWidth;\n\n let leftOffset = 0;\n\n if (hasStickyFirstColumn) {\n const stickyColumnHeaders = theadElement.querySelectorAll(\n '.hds-advanced-table__th--is-sticky-column'\n );\n\n stickyColumnHeaders?.forEach((el) => {\n // querySelectorAll returns Elements, which don't have offsetWidth\n // need to use offsetWidth to account for the cell borders\n const elAsHTMLElement = el as HTMLElement;\n leftOffset += elAsHTMLElement.offsetWidth;\n });\n\n // offsets the left: -1px position if there are multiple sticky columns or the first column has a fixed pixel width\n if (stickyColumnHeaders.length > 1) {\n leftOffset -= 1;\n }\n\n // offsets the left: -1px position if the sticky column is already pinned when the scroll indicator is calculated\n if (isStickyColumnPinned) {\n leftOffset -= 1;\n }\n }\n\n return {\n bottom: `${horizontalScrollBarHeight}px`,\n height: `${scrollWrapper.offsetHeight - horizontalScrollBarHeight}px`,\n left: `${leftOffset}px`,\n right: `${verticalScrollBarWidth}px`,\n width: `${scrollWrapper.offsetWidth - verticalScrollBarWidth}px`,\n };\n};\n\nconst getStickyColumnLeftOffset = (\n theadElement: HTMLDivElement,\n hasRowSelection: boolean,\n isStickyColumnPinned: boolean\n) => {\n // if there is no select checkbox column, the sticky column is all the way to the left\n if (!hasRowSelection) return '0px';\n\n const selectableCell = theadElement.querySelector(\n '.hds-advanced-table__th--is-selectable'\n ) as HTMLElement;\n\n let leftOffset = selectableCell?.offsetWidth ?? 0;\n\n // if the sticky column is pinned when the offset is calculated, we need to account for the increased width of the border\n if (isStickyColumnPinned && leftOffset > 0) {\n leftOffset -= 2;\n }\n\n return `${leftOffset}px`;\n};\n\nexport interface HdsAdvancedTableSignature {\n Args: {\n align?: HdsAdvancedTableHorizontalAlignment;\n caption?: string;\n columns: HdsAdvancedTableColumn[];\n columnOrder?: string[];\n density?: HdsAdvancedTableDensities;\n identityKey?: string;\n isSelectable?: boolean;\n isStriped?: boolean;\n model: HdsAdvancedTableModel;\n reorderedMessageText?: string;\n selectionAriaLabelSuffix?: string;\n sortBy?: string;\n selectableColumnKey?: string;\n sortedMessageText?: string;\n sortOrder?: HdsAdvancedTableThSortOrder;\n valign?: HdsAdvancedTableVerticalAlignment;\n hasReorderableColumns?: boolean;\n hasResizableColumns?: boolean;\n hasStickyHeader?: boolean;\n hasStickyFirstColumn?: boolean;\n childrenKey?: string;\n maxHeight?: string;\n onColumnReorder?: HdsAdvancedTableColumnReorderCallback;\n onColumnResize?: (columnKey: string, newWidth?: string) => void;\n onSelectionChange?: (\n selection: HdsAdvancedTableOnSelectionChangeSignature\n ) => void;\n onSort?: (sortBy: string, sortOrder: HdsAdvancedTableThSortOrder) => void;\n };\n Blocks: {\n actions?: [\n {\n FilterBar?: ComponentLike<HdsFilterBarSignature>;\n },\n ];\n body?: [\n {\n Td?: WithBoundArgs<typeof HdsAdvancedTableTd, 'align'>;\n Tr?: WithBoundArgs<\n typeof HdsAdvancedTableTr,\n | 'selectionScope'\n | 'isLastRow'\n | 'isSelectable'\n | 'onSelectionChange'\n | 'didInsert'\n | 'willDestroy'\n | 'selectionAriaLabelSuffix'\n | 'hasStickyColumn'\n | 'isStickyColumnPinned'\n | 'isParentRow'\n | 'depth'\n | 'displayRow'\n >;\n Th?: WithBoundArgs<\n typeof HdsAdvancedTableTh,\n | 'depth'\n | 'isExpandable'\n | 'isExpanded'\n | 'newLabel'\n | 'parentId'\n | 'scope'\n | 'isStickyColumnPinned'\n | 'onClickToggle'\n >;\n data?: Record<string, unknown>;\n rowIndex?: number | string;\n isOpen?: HdsAdvancedTableExpandState;\n },\n ];\n emptyState?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTable extends Component<HdsAdvancedTableSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n @tracked\n private _selectAllCheckbox?: HdsFormCheckboxBaseSignature['Element'] =\n undefined;\n @tracked private _isSelectAllCheckboxSelected?: boolean = undefined;\n @tracked private _tableHeight = 0;\n private _selectableRows: HdsAdvancedTableSelectableRow[] = [];\n private _captionId = 'caption-' + guidFor(this);\n private _scrollHandler!: (event: Event) => void;\n private _resizeObserver!: ResizeObserver;\n private _theadElement!: HTMLDivElement;\n private _scrollWrapperElement!: HTMLDivElement;\n\n @tracked scrollIndicatorDimensions = DEFAULT_SCROLL_DIMENSIONS;\n @tracked isStickyColumnPinned = false;\n @tracked isStickyHeaderPinned = false;\n @tracked hasPinnedFirstColumn: boolean | undefined = undefined;\n @tracked reorderedMessageText = '';\n @tracked showScrollIndicatorLeft = false;\n @tracked showScrollIndicatorRight = false;\n @tracked showScrollIndicatorTop = false;\n @tracked showScrollIndicatorBottom = false;\n @tracked stickyColumnOffset = '0px';\n\n // sorting properties\n @tracked currentSortBy?: string;\n @tracked currentSortOrder: HdsAdvancedTableThSortOrder =\n HdsAdvancedTableThSortOrderValues.Asc;\n\n // row expansion properties\n expandedRowIds = new TrackedSet<string>();\n\n private _setUpScrollWrapper = modifier((element: HTMLDivElement) => {\n this._scrollWrapperElement = element;\n\n const updateHorizontalScrollIndicators = () => {\n this.showScrollIndicatorRight = element.clientWidth < element.scrollWidth;\n };\n\n this._scrollHandler = () => {\n this._updateScrollIndicators(element);\n };\n\n element.addEventListener('scroll', this._scrollHandler);\n\n const updateMeasurements = () => {\n const { isSelectable = false } = this.args;\n\n const newTableHeight = element.offsetHeight;\n\n const newDimensions = getScrollIndicatorDimensions(\n element,\n this._theadElement,\n this.hasStickyFirstColumn ? true : false,\n this.isStickyColumnPinned\n );\n\n const setUpdatedMeasurements = () => {\n if (this.isDestroying || this.isDestroyed) {\n return;\n }\n\n const isSameBottom =\n this.scrollIndicatorDimensions.bottom === newDimensions.bottom;\n const isSameHeight =\n this.scrollIndicatorDimensions.height === newDimensions.height;\n const isSameLeft =\n this.scrollIndicatorDimensions.left === newDimensions.left;\n const isSameRight =\n this.scrollIndicatorDimensions.right === newDimensions.right;\n\n if (\n isSameBottom &&\n isSameHeight &&\n isSameLeft &&\n isSameRight &&\n this._tableHeight === newTableHeight\n ) {\n return;\n }\n\n this._tableHeight = newTableHeight;\n this.scrollIndicatorDimensions = newDimensions;\n\n if (this.hasStickyFirstColumn) {\n this.stickyColumnOffset = getStickyColumnLeftOffset(\n this._theadElement,\n isSelectable,\n this.isStickyColumnPinned\n );\n }\n };\n\n window.requestAnimationFrame(setUpdatedMeasurements);\n };\n\n this._resizeObserver = new ResizeObserver((entries) => {\n entries.forEach(() => {\n updateMeasurements();\n updateHorizontalScrollIndicators();\n });\n });\n\n this._resizeObserver.observe(element);\n\n updateMeasurements();\n\n // on render check if should show right scroll indicator\n updateHorizontalScrollIndicators();\n\n // on render check if should show bottom scroll indicator\n if (element.clientHeight < element.scrollHeight) {\n this.showScrollIndicatorBottom = true;\n }\n\n return () => {\n element.removeEventListener('scroll', this._scrollHandler);\n this._resizeObserver.disconnect();\n };\n });\n\n private _setUpThead = modifier((element: HTMLDivElement) => {\n this._theadElement = element;\n });\n\n private _syncSortArgs = modifier(() => {\n const { sortBy, sortOrder } = this.args;\n\n if (sortBy !== undefined) {\n this.currentSortBy = sortBy;\n }\n\n if (sortOrder !== undefined) {\n this.currentSortOrder = sortOrder;\n }\n });\n\n constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']) {\n super(owner, args);\n\n const { hasStickyFirstColumn, model } = args;\n\n this._runAssertions();\n\n this._initializeExpandedRows(model);\n\n if (hasStickyFirstColumn) {\n this.hasPinnedFirstColumn = true;\n }\n }\n\n get childrenKey(): string {\n return this.args.childrenKey ?? 'children';\n }\n\n get hasRowsWithChildren(): boolean {\n const { model } = this.args;\n\n return model.some((record) => {\n const children = record[this.childrenKey] as\n | Record<string, unknown>[]\n | undefined;\n\n return Array.isArray(children) && children.length > 0;\n });\n }\n\n @cached\n get expandableRowIds(): string[] {\n const { model } = this.args;\n\n const ids: string[] = [];\n\n const collect = (items: Record<string, unknown>[]) => {\n items.forEach((item) => {\n const children = item[this.childrenKey] as\n | Record<string, unknown>\n | undefined;\n\n if (Array.isArray(children) && children.length > 0) {\n ids.push(guidFor(item));\n\n collect(children);\n }\n });\n };\n\n collect(model);\n\n return ids;\n }\n\n get isAllExpanded(): boolean {\n if (this.expandableRowIds.length === 0) {\n return false;\n }\n\n return this.expandableRowIds.every((id) => this.expandedRowIds.has(id));\n }\n\n get sortCriteria(): string | HdsAdvancedTableSortingFunction<unknown> {\n const { columns } = this.args;\n\n const currentColumn = columns.find(\n (column) => column.key === this.currentSortBy\n );\n\n if (\n currentColumn?.sortingFunction &&\n typeof currentColumn.sortingFunction === 'function'\n ) {\n return currentColumn.sortingFunction;\n } else {\n return `${this.currentSortBy}:${this.currentSortOrder}`;\n }\n }\n\n get isEmpty(): boolean {\n const { model } = this.args;\n\n return model.length === 0;\n }\n\n get identityKey(): string | undefined {\n // we have to provide a way for the consumer to pass undefined because Ember tries to interpret undefined as missing an arg and therefore falls back to the default\n if (this.args.identityKey === 'none') {\n return undefined;\n } else {\n return this.args.identityKey ?? '@identity';\n }\n }\n\n get hasStickyFirstColumn(): boolean | undefined {\n // The user-controlled `hasPinnedFirstColumn` variable takes precedence over the model's `hasStickyFirstColumn` property.\n if (this.hasPinnedFirstColumn !== undefined) {\n return this.hasPinnedFirstColumn;\n } else if (this.args.hasStickyFirstColumn === false) {\n return this.args.hasStickyFirstColumn;\n }\n\n return undefined;\n }\n\n get sortedMessageText(): string {\n const { sortedMessageText } = this.args;\n\n if (sortedMessageText !== undefined) {\n return sortedMessageText;\n } else if (this.currentSortBy !== undefined) {\n // we should allow the user to define a custom value here (e.g., for i18n) - tracked with HDS-965\n return `Sorted by ${this.currentSortBy} ${this.currentSortOrder}ending`;\n } else {\n return '';\n }\n }\n\n get isSelectable(): boolean {\n const { isSelectable = false } = this.args;\n\n if (this.hasRowsWithChildren) {\n assert(\n '@isSelectable must not be true if there are nested rows.',\n !isSelectable\n );\n return isSelectable;\n }\n\n return isSelectable;\n }\n\n get isStriped(): boolean {\n const { isStriped = false } = this.args;\n\n if (this.hasRowsWithChildren) {\n assert(\n '@isStriped must not be true if there are nested rows.',\n !isStriped\n );\n return isStriped;\n }\n\n return isStriped;\n }\n\n get density(): HdsAdvancedTableDensities {\n const { density = DEFAULT_DENSITY } = this.args;\n\n assert(\n `@density for \"Hds::Table\" must be one of the following: ${DENSITIES.join(\n ', '\n )}; received: ${density}`,\n DENSITIES.includes(density)\n );\n\n return density;\n }\n\n get hasStickyHeader(): boolean {\n if (this.args.maxHeight && this.args.hasStickyHeader !== false) {\n return true;\n } else if (this.args.hasStickyHeader && !this.args.maxHeight) {\n assert('Must set @maxHeight to use @hasStickyHeader.', false);\n }\n\n return false;\n }\n\n get valign(): HdsAdvancedTableVerticalAlignment {\n const { valign = DEFAULT_VALIGN } = this.args;\n\n assert(\n `@valign for \"Hds::Table\" must be one of the following: ${VALIGNMENTS.join(\n ', '\n )}; received: ${valign}`,\n VALIGNMENTS.includes(valign)\n );\n\n return valign;\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table'];\n\n if (this.isStriped) {\n classes.push('hds-advanced-table--striped');\n }\n\n if (this.density) {\n classes.push(`hds-advanced-table--density-${this.density}`);\n }\n\n if (this.valign) {\n classes.push(`hds-advanced-table--valign-${this.valign}`);\n }\n\n if (this.hasRowsWithChildren) {\n classes.push(`hds-advanced-table--nested`);\n }\n\n return classes.join(' ');\n }\n\n get theadClassNames(): string {\n const { hasResizableColumns } = this.args;\n\n const classes = ['hds-advanced-table__thead'];\n\n if (this.hasStickyHeader) {\n classes.push('hds-advanced-table__thead--sticky');\n }\n\n if (this.isStickyHeaderPinned) {\n classes.push('hds-advanced-table__thead--is-pinned');\n }\n\n if (hasResizableColumns) {\n classes.push('hds-advanced-table__thead--has-resizable-columns');\n }\n\n return classes.join(' ');\n }\n\n private _initializeExpandedRows(\n model: HdsAdvancedTableSignature['Args']['model']\n ) {\n const traverse = (items: Record<string, unknown>[]) => {\n items.forEach((item) => {\n if (item['isOpen'] === true) {\n this.expandedRowIds.add(guidFor(item));\n }\n\n const children = item[this.childrenKey] as\n | Record<string, unknown>[]\n | undefined;\n\n if (Array.isArray(children) && children.length > 0) {\n traverse(children);\n }\n });\n };\n\n traverse(model);\n }\n\n private _runAssertions() {\n const {\n columns,\n hasReorderableColumns,\n hasResizableColumns,\n hasStickyFirstColumn,\n } = this.args;\n\n if (this.hasRowsWithChildren) {\n const sortableColumns = columns.filter((column) => column.isSortable);\n const sortableColumnLabels = sortableColumns.map(\n (column) => column.label\n );\n\n assert(\n 'Cannot have reorderable columns if there are nested rows.',\n !hasReorderableColumns\n );\n\n assert(\n `Cannot have sortable columns if there are nested rows. Sortable columns are ${sortableColumnLabels.toString()}`,\n sortableColumns.length === 0\n );\n\n assert(\n 'Cannot have a sticky first column if there are nested rows.',\n hasStickyFirstColumn === undefined\n );\n\n assert(\n `Cannot have resizable columns if there are nested rows.`,\n !hasResizableColumns\n );\n }\n\n if (hasReorderableColumns) {\n assert(\n 'Cannot have both reorderable columns and a sticky first column.',\n hasStickyFirstColumn === undefined\n );\n }\n }\n\n private _onColumnReorder: HdsAdvancedTableColumnReorderCallback = ({\n column,\n newOrder,\n insertedAt,\n }) => {\n // Guard against accessing hdsIntl service after component destruction\n if (this.isDestroying || this.isDestroyed) return;\n\n const { reorderedMessageText } = this.args;\n\n if (reorderedMessageText !== undefined) {\n this.reorderedMessageText = reorderedMessageText;\n } else {\n const newPosition = insertedAt + 1;\n const translatedReorderedMessageText = this.hdsIntl.t(\n 'hds.advanced-table.reordered-message',\n {\n default: `Moved ${column.label} column to position ${newPosition}`,\n columnLabel: column.label,\n newPosition,\n }\n );\n\n this.reorderedMessageText = translatedReorderedMessageText;\n }\n\n this.args.onColumnReorder?.({\n column,\n newOrder,\n insertedAt,\n });\n };\n\n onSelectionChangeCallback(\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n const { onSelectionChange } = this.args;\n\n if (typeof onSelectionChange !== 'function') return;\n\n onSelectionChange({\n selectionKey: selectionKey,\n selectionCheckboxElement: checkbox,\n selectedRowsKeys: this._selectableRows.reduce<string[]>((acc, row) => {\n if (row.checkbox.checked) {\n acc.push(row.selectionKey);\n }\n return acc;\n }, []),\n selectableRowsStates: this._selectableRows.reduce(\n (\n acc: { selectionKey: string; isSelected: boolean | undefined }[],\n row\n ) => {\n acc.push({\n selectionKey: row.selectionKey,\n isSelected: row.checkbox.checked,\n });\n return acc;\n },\n []\n ),\n });\n }\n\n @action\n toggleExpandAll() {\n const allIds = this.expandableRowIds;\n const isAllExpanded = allIds.every((id) => this.expandedRowIds.has(id));\n\n if (isAllExpanded) {\n this.expandedRowIds.clear();\n } else {\n // Add all IDs efficiently\n allIds.forEach((id) => this.expandedRowIds.add(id));\n }\n }\n\n @action\n toggleRow(rowId: string) {\n if (this.expandedRowIds.has(rowId)) {\n this.expandedRowIds.delete(rowId);\n } else {\n this.expandedRowIds.add(rowId);\n }\n }\n\n @action\n onSelectionAllChange(): void {\n this._selectableRows.forEach((row) => {\n row.checkbox.checked = this._selectAllCheckbox?.checked ?? false;\n });\n this._isSelectAllCheckboxSelected =\n this._selectAllCheckbox?.checked ?? false;\n this.onSelectionChangeCallback(this._selectAllCheckbox, 'all');\n }\n\n @action\n onSelectionRowChange(\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n this.setSelectAllState();\n this.onSelectionChangeCallback(checkbox, selectionKey);\n }\n\n @action\n didInsertSelectAllCheckbox(\n checkbox: HdsFormCheckboxBaseSignature['Element']\n ): void {\n this._selectAllCheckbox = checkbox;\n }\n\n @action\n willDestroySelectAllCheckbox(): void {\n this._selectAllCheckbox = undefined;\n }\n\n @action\n didInsertRowCheckbox(\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n if (selectionKey) {\n this._selectableRows.push({ selectionKey, checkbox });\n }\n this.setSelectAllState();\n }\n\n @action\n willDestroyRowCheckbox(selectionKey?: string): void {\n if (selectionKey === undefined) {\n return;\n }\n\n const index = this._selectableRows.findIndex(\n (row) => row.selectionKey === selectionKey\n );\n\n if (index === -1) {\n return;\n }\n\n this._selectableRows.splice(index, 1);\n\n this.setSelectAllState();\n }\n\n @action\n setSelectAllState(): void {\n if (this._selectAllCheckbox) {\n const selectableRowsCount = this._selectableRows.length;\n const selectedRowsCount = this._selectableRows.filter(\n (row) => row.checkbox.checked\n ).length;\n\n this._selectAllCheckbox.checked =\n selectedRowsCount === selectableRowsCount;\n this._selectAllCheckbox.indeterminate =\n selectedRowsCount > 0 && selectedRowsCount < selectableRowsCount;\n this._isSelectAllCheckboxSelected = this._selectAllCheckbox.checked;\n }\n }\n\n @action\n setSortBy(columnKey: HdsAdvancedTableColumn['key']): void {\n const { onSort } = this.args;\n\n if (columnKey === undefined) {\n return;\n }\n\n let newSortOrder = HdsAdvancedTableThSortOrderValues.Asc;\n\n if (this.currentSortBy === columnKey) {\n newSortOrder =\n this.currentSortOrder === HdsAdvancedTableThSortOrderValues.Asc\n ? HdsAdvancedTableThSortOrderValues.Desc\n : HdsAdvancedTableThSortOrderValues.Asc;\n }\n\n this.currentSortBy = columnKey;\n this.currentSortOrder = newSortOrder;\n\n if (typeof onSort === 'function') {\n onSort(columnKey, newSortOrder);\n }\n }\n\n private _updateScrollIndicators(element: HTMLElement): void {\n // 6px as a buffer so the shadow doesn't appear over the border radius on the edge of the table\n const SCROLL_BUFFER = 6;\n\n // left scroll indicator and sticky column styles\n if (element.scrollLeft > SCROLL_BUFFER) {\n if (this.hasStickyFirstColumn) {\n this.isStickyColumnPinned = true;\n }\n if (!this.showScrollIndicatorLeft) {\n this.showScrollIndicatorLeft = true;\n }\n } else if (element.scrollLeft === 0 && this.showScrollIndicatorLeft) {\n this.isStickyColumnPinned = false;\n this.showScrollIndicatorLeft = false;\n }\n\n // the right edge is how far the user can scroll, which is the full width of the table - the visible section of the table (also subtract the buffer)\n const rightEdge = element.scrollWidth - element.clientWidth - SCROLL_BUFFER;\n\n // right scroll indicator\n if (element.scrollLeft < rightEdge) {\n this.showScrollIndicatorRight = true;\n } else {\n this.showScrollIndicatorRight = false;\n }\n\n // sticky header\n if (element.scrollTop > 0) {\n if (this.hasStickyHeader) {\n this.isStickyHeaderPinned = true;\n }\n this.showScrollIndicatorTop = true;\n } else {\n if (this.hasStickyHeader) {\n this.isStickyHeaderPinned = false;\n }\n this.showScrollIndicatorTop = false;\n }\n\n // the bottom edge is how far the user can scroll, which is the full height of the table - the visible section of the table (also subtract the buffer)\n const bottomEdge =\n element.scrollHeight - element.clientHeight - SCROLL_BUFFER;\n\n // bottom scroll indicator\n if (element.scrollTop < bottomEdge) {\n this.showScrollIndicatorBottom = true;\n } else {\n this.showScrollIndicatorBottom = false;\n }\n }\n\n private _onPinFirstColumn = (): void => {\n this.hasPinnedFirstColumn = this.hasPinnedFirstColumn ? false : true;\n // we need to retrigger the scroll indicator updates if the pinned state is changed when the table is already scrolled\n this._updateScrollIndicators(this._scrollWrapperElement);\n };\n}\n"],"names":["DENSITIES","Object","values","HdsAdvancedTableDensityValues","DEFAULT_DENSITY","Medium","VALIGNMENTS","HdsAdvancedTableVerticalAlignmentValues","DEFAULT_VALIGN","Top","BORDER_WIDTH","DEFAULT_SCROLL_DIMENSIONS","bottom","height","left","right","width","getScrollIndicatorDimensions","scrollWrapper","theadElement","hasStickyFirstColumn","isStickyColumnPinned","horizontalScrollBarHeight","offsetHeight","clientHeight","verticalScrollBarWidth","offsetWidth","clientWidth","leftOffset","stickyColumnHeaders","querySelectorAll","forEach","el","elAsHTMLElement","length","getStickyColumnLeftOffset","hasRowSelection","selectableCell","querySelector","HdsAdvancedTable","Component","g","prototype","service","i","tracked","undefined","_selectableRows","_captionId","guidFor","_scrollHandler","_resizeObserver","_theadElement","_scrollWrapperElement","HdsAdvancedTableThSortOrderValues","Asc","expandedRowIds","TrackedSet","_setUpScrollWrapper","modifier","element","updateHorizontalScrollIndicators","showScrollIndicatorRight","scrollWidth","_updateScrollIndicators","addEventListener","updateMeasurements","isSelectable","args","newTableHeight","newDimensions","setUpdatedMeasurements","isDestroying","isDestroyed","isSameBottom","scrollIndicatorDimensions","isSameHeight","isSameLeft","isSameRight","_tableHeight","stickyColumnOffset","window","requestAnimationFrame","ResizeObserver","entries","observe","scrollHeight","showScrollIndicatorBottom","removeEventListener","disconnect","_setUpThead","_syncSortArgs","sortBy","sortOrder","currentSortBy","currentSortOrder","constructor","owner","model","_runAssertions","_initializeExpandedRows","hasPinnedFirstColumn","childrenKey","hasRowsWithChildren","some","record","children","Array","isArray","expandableRowIds","ids","collect","items","item","push","n","cached","isAllExpanded","every","id","has","sortCriteria","columns","currentColumn","find","column","key","sortingFunction","isEmpty","identityKey","sortedMessageText","assert","isStriped","density","join","includes","hasStickyHeader","maxHeight","valign","classNames","classes","theadClassNames","hasResizableColumns","isStickyHeaderPinned","traverse","add","hasReorderableColumns","sortableColumns","filter","isSortable","sortableColumnLabels","map","label","toString","_onColumnReorder","newOrder","insertedAt","reorderedMessageText","newPosition","translatedReorderedMessageText","hdsIntl","t","default","columnLabel","onColumnReorder","onSelectionChangeCallback","checkbox","selectionKey","onSelectionChange","selectionCheckboxElement","selectedRowsKeys","reduce","acc","row","checked","selectableRowsStates","isSelected","toggleExpandAll","allIds","clear","action","toggleRow","rowId","delete","onSelectionAllChange","_selectAllCheckbox","_isSelectAllCheckboxSelected","onSelectionRowChange","setSelectAllState","didInsertSelectAllCheckbox","willDestroySelectAllCheckbox","didInsertRowCheckbox","willDestroyRowCheckbox","index","findIndex","splice","selectableRowsCount","selectedRowsCount","indeterminate","setSortBy","columnKey","onSort","newSortOrder","Desc","SCROLL_BUFFER","scrollLeft","showScrollIndicatorLeft","rightEdge","scrollTop","showScrollIndicatorTop","bottomEdge","_onPinFirstColumn","setComponentTemplate","TEMPLATE"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hashicorp/design-system-components",
3
- "version": "6.1.1-rc-20260408210649",
3
+ "version": "6.1.1",
4
4
  "description": "Helios Design System Components",
5
5
  "keywords": [
6
6
  "hashicorp",
@@ -36,8 +36,8 @@
36
36
  "@embroider/macros": "^1.18.1",
37
37
  "@embroider/util": "^1.13.4",
38
38
  "@floating-ui/dom": "^1.6.12",
39
- "@hashicorp/design-system-tokens": "5.0.0-rc-20260408210649",
40
- "@hashicorp/flight-icons": "5.0.0-rc-20260408210649",
39
+ "@hashicorp/design-system-tokens": "^5.0.0",
40
+ "@hashicorp/flight-icons": "^5.0.0",
41
41
  "@lezer/highlight": "^1.2.1",
42
42
  "@nullvoxpopuli/ember-composable-helpers": "^5.2.11",
43
43
  "clipboard-polyfill": "^4.1.1",