@hashicorp/design-system-components 4.20.2 → 4.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/declarations/components/hds/advanced-table/index.d.ts +15 -16
  2. package/declarations/components/hds/advanced-table/models/column.d.ts +38 -0
  3. package/declarations/components/hds/advanced-table/models/row.d.ts +2 -0
  4. package/declarations/components/hds/advanced-table/models/table.d.ts +15 -7
  5. package/declarations/components/hds/advanced-table/th-context-menu.d.ts +34 -0
  6. package/declarations/components/hds/advanced-table/th-resize-handle.d.ts +42 -0
  7. package/declarations/components/hds/advanced-table/th-sort.d.ts +13 -0
  8. package/declarations/components/hds/advanced-table/th.d.ts +24 -12
  9. package/declarations/components/hds/advanced-table/types.d.ts +2 -0
  10. package/declarations/components/hds/app-header/home-link.d.ts +5 -2
  11. package/declarations/components/hds/form/file-input/base.d.ts +4 -0
  12. package/declarations/components/hds/form/footer/index.d.ts +23 -0
  13. package/declarations/components/hds/form/header/description.d.ts +13 -0
  14. package/declarations/components/hds/form/header/index.d.ts +25 -0
  15. package/declarations/components/hds/form/header/title.d.ts +26 -0
  16. package/declarations/components/hds/form/index.d.ts +50 -0
  17. package/declarations/components/hds/form/key-value-inputs/add-row-button.d.ts +17 -0
  18. package/declarations/components/hds/form/key-value-inputs/delete-row-button.d.ts +23 -0
  19. package/declarations/components/hds/form/key-value-inputs/field.d.ts +54 -0
  20. package/declarations/components/hds/form/key-value-inputs/generic.d.ts +18 -0
  21. package/declarations/components/hds/form/key-value-inputs/index.d.ts +60 -0
  22. package/declarations/components/hds/form/label/index.d.ts +1 -0
  23. package/declarations/components/hds/form/legend/index.d.ts +2 -1
  24. package/declarations/components/hds/form/masked-input/base.d.ts +1 -0
  25. package/declarations/components/hds/form/section/header.d.ts +20 -0
  26. package/declarations/components/hds/form/section/index.d.ts +32 -0
  27. package/declarations/components/hds/form/section/multi-field-group/index.d.ts +18 -0
  28. package/declarations/components/hds/form/section/multi-field-group/item.d.ts +17 -0
  29. package/declarations/components/hds/form/select/base.d.ts +2 -0
  30. package/declarations/components/hds/form/separator/index.d.ts +14 -0
  31. package/declarations/components/hds/form/text-input/base.d.ts +2 -0
  32. package/declarations/components/hds/form/textarea/base.d.ts +2 -0
  33. package/declarations/components/hds/form/types.d.ts +24 -0
  34. package/declarations/components/hds/icon/index.d.ts +1 -1
  35. package/declarations/components/hds/layout/grid/index.d.ts +1 -0
  36. package/declarations/components/hds/stepper/task/indicator.d.ts +1 -1
  37. package/declarations/components.d.ts +16 -0
  38. package/declarations/template-registry.d.ts +51 -0
  39. package/declarations/utils/hds-aria-described-by.d.ts +3 -1
  40. package/dist/_app_/components/hds/advanced-table/models/column.js +1 -0
  41. package/dist/_app_/components/hds/advanced-table/th-context-menu.js +1 -0
  42. package/dist/_app_/components/hds/advanced-table/th-resize-handle.js +1 -0
  43. package/dist/_app_/components/hds/form/footer/index.js +1 -0
  44. package/dist/_app_/components/hds/form/header/description.js +1 -0
  45. package/dist/_app_/components/hds/form/header/index.js +1 -0
  46. package/dist/_app_/components/hds/form/header/title.js +1 -0
  47. package/dist/_app_/components/hds/form/index.js +1 -0
  48. package/dist/_app_/components/hds/form/key-value-inputs/add-row-button.js +1 -0
  49. package/dist/_app_/components/hds/form/key-value-inputs/delete-row-button.js +1 -0
  50. package/dist/_app_/components/hds/form/key-value-inputs/field.js +1 -0
  51. package/dist/_app_/components/hds/form/key-value-inputs/generic.js +1 -0
  52. package/dist/_app_/components/hds/form/key-value-inputs/index.js +1 -0
  53. package/dist/_app_/components/hds/form/section/header.js +1 -0
  54. package/dist/_app_/components/hds/form/section/index.js +1 -0
  55. package/dist/_app_/components/hds/form/section/multi-field-group/index.js +1 -0
  56. package/dist/_app_/components/hds/form/section/multi-field-group/item.js +1 -0
  57. package/dist/_app_/components/hds/form/separator/index.js +1 -0
  58. package/dist/components/hds/advanced-table/index.js +74 -78
  59. package/dist/components/hds/advanced-table/index.js.map +1 -1
  60. package/dist/components/hds/advanced-table/models/column.js +204 -0
  61. package/dist/components/hds/advanced-table/models/column.js.map +1 -0
  62. package/dist/components/hds/advanced-table/models/row.js.map +1 -1
  63. package/dist/components/hds/advanced-table/models/table.js +118 -7
  64. package/dist/components/hds/advanced-table/models/table.js.map +1 -1
  65. package/dist/components/hds/advanced-table/th-context-menu.js +65 -0
  66. package/dist/components/hds/advanced-table/th-context-menu.js.map +1 -0
  67. package/dist/components/hds/advanced-table/th-resize-handle.js +202 -0
  68. package/dist/components/hds/advanced-table/th-resize-handle.js.map +1 -0
  69. package/dist/components/hds/advanced-table/th-sort.js +16 -1
  70. package/dist/components/hds/advanced-table/th-sort.js.map +1 -1
  71. package/dist/components/hds/advanced-table/th.js +16 -2
  72. package/dist/components/hds/advanced-table/th.js.map +1 -1
  73. package/dist/components/hds/advanced-table/types.js.map +1 -1
  74. package/dist/components/hds/app-header/home-link.js +15 -5
  75. package/dist/components/hds/app-header/home-link.js.map +1 -1
  76. package/dist/components/hds/form/file-input/base.js +1 -1
  77. package/dist/components/hds/form/file-input/base.js.map +1 -1
  78. package/dist/components/hds/form/footer/index.js +26 -0
  79. package/dist/components/hds/form/footer/index.js.map +1 -0
  80. package/dist/components/hds/form/header/description.js +16 -0
  81. package/dist/components/hds/form/header/description.js.map +1 -0
  82. package/dist/components/hds/form/header/index.js +26 -0
  83. package/dist/components/hds/form/header/index.js.map +1 -0
  84. package/dist/components/hds/form/header/title.js +33 -0
  85. package/dist/components/hds/form/header/title.js.map +1 -0
  86. package/dist/components/hds/form/index.js +35 -0
  87. package/dist/components/hds/form/index.js.map +1 -0
  88. package/dist/components/hds/form/key-value-inputs/add-row-button.js +32 -0
  89. package/dist/components/hds/form/key-value-inputs/add-row-button.js.map +1 -0
  90. package/dist/components/hds/form/key-value-inputs/delete-row-button.js +49 -0
  91. package/dist/components/hds/form/key-value-inputs/delete-row-button.js.map +1 -0
  92. package/dist/components/hds/form/key-value-inputs/field.js +63 -0
  93. package/dist/components/hds/form/key-value-inputs/field.js.map +1 -0
  94. package/dist/components/hds/form/key-value-inputs/generic.js +28 -0
  95. package/dist/components/hds/form/key-value-inputs/generic.js.map +1 -0
  96. package/dist/components/hds/form/key-value-inputs/index.js +124 -0
  97. package/dist/components/hds/form/key-value-inputs/index.js.map +1 -0
  98. package/dist/components/hds/form/label/index.js +1 -1
  99. package/dist/components/hds/form/label/index.js.map +1 -1
  100. package/dist/components/hds/form/legend/index.js +1 -1
  101. package/dist/components/hds/form/legend/index.js.map +1 -1
  102. package/dist/components/hds/form/masked-input/base.js +1 -1
  103. package/dist/components/hds/form/masked-input/base.js.map +1 -1
  104. package/dist/components/hds/form/section/header.js +16 -0
  105. package/dist/components/hds/form/section/header.js.map +1 -0
  106. package/dist/components/hds/form/section/index.js +26 -0
  107. package/dist/components/hds/form/section/index.js.map +1 -0
  108. package/dist/components/hds/form/section/multi-field-group/index.js +16 -0
  109. package/dist/components/hds/form/section/multi-field-group/index.js.map +1 -0
  110. package/dist/components/hds/form/section/multi-field-group/item.js +24 -0
  111. package/dist/components/hds/form/section/multi-field-group/item.js.map +1 -0
  112. package/dist/components/hds/form/select/base.js +1 -1
  113. package/dist/components/hds/form/select/base.js.map +1 -1
  114. package/dist/components/hds/form/separator/index.js +26 -0
  115. package/dist/components/hds/form/separator/index.js.map +1 -0
  116. package/dist/components/hds/form/text-input/base.js +1 -1
  117. package/dist/components/hds/form/text-input/base.js.map +1 -1
  118. package/dist/components/hds/form/textarea/base.js +1 -1
  119. package/dist/components/hds/form/textarea/base.js.map +1 -1
  120. package/dist/components/hds/form/types.js +27 -0
  121. package/dist/components/hds/form/types.js.map +1 -0
  122. package/dist/components/hds/layout/grid/index.js +18 -0
  123. package/dist/components/hds/layout/grid/index.js.map +1 -1
  124. package/dist/components/hds/table/index.js +1 -1
  125. package/dist/components.js +16 -0
  126. package/dist/components.js.map +1 -1
  127. package/dist/styles/@hashicorp/design-system-components.css +299 -3
  128. package/dist/styles/@hashicorp/design-system-components.scss +2 -10
  129. package/dist/styles/components/advanced-table.scss +96 -2
  130. package/dist/styles/components/app-header.scss +4 -4
  131. package/dist/styles/components/form/index.scss +2 -0
  132. package/dist/styles/components/form/key-value-inputs.scss +134 -0
  133. package/dist/styles/components/form/layout.scss +81 -0
  134. package/dist/styles/components/form/super-select.scss +15 -0
  135. package/dist/styles/components/layout/grid.scss +1 -1
  136. package/dist/styles/mixins/_screen-reader-only.scss +17 -0
  137. package/dist/utils/hds-aria-described-by.js.map +1 -1
  138. package/package.json +22 -3
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/advanced-table/th-context-menu";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/advanced-table/th-resize-handle";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/footer/index";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/header/description";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/header/index";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/header/title";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/index";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/key-value-inputs/add-row-button";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/key-value-inputs/delete-row-button";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/key-value-inputs/field";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/key-value-inputs/generic";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/key-value-inputs/index";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/section/header";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/section/index";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/section/multi-field-group/index";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/section/multi-field-group/item";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/form/separator/index";
@@ -4,13 +4,14 @@ import { assert } from '@ember/debug';
4
4
  import { tracked } from '@glimmer/tracking';
5
5
  import { guidFor } from '@ember/object/internals';
6
6
  import { modifier } from 'ember-modifier';
7
+ import { schedule } from '@ember/runloop';
7
8
  import HdsAdvancedTableTableModel from './models/table.js';
8
- import { HdsAdvancedTableThSortOrderValues, HdsAdvancedTableDensityValues, HdsAdvancedTableVerticalAlignmentValues } from './types.js';
9
+ import { HdsAdvancedTableDensityValues, HdsAdvancedTableVerticalAlignmentValues } from './types.js';
9
10
  import { precompileTemplate } from '@ember/template-compilation';
10
11
  import { g, i, n } from 'decorator-transforms/runtime';
11
12
  import { setComponentTemplate } from '@ember/component';
12
13
 
13
- var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<div\n class=\"hds-advanced-table__container\n {{(if this.isStickyHeaderPinned \'hds-advanced-table__container--header-is-pinned\')}}\"\n {{this._didUpdateModel}}\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 </div>\n\n {{! Grid }}\n <div\n class={{this.classNames}}\n role=\"grid\"\n aria-describedby={{this._captionId}}\n {{style\n grid-template-columns=this.gridTemplateColumns\n --hds-advanced-table-sticky-column-offset=this.stickyColumnOffset\n max-height=@maxHeight\n }}\n {{this._setUpScrollWrapper}}\n >\n {{! Header }}\n <div class={{this.theadClassNames}} role=\"rowgroup\" {{this._setUpThead}}>\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={{@hasStickyFirstColumn}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n >\n {{#each @columns as |column index|}}\n {{#if column.isSortable}}\n <Hds::AdvancedTable::ThSort\n @sortOrder={{if (eq column.key this._sortBy) this._sortOrder}}\n @onClickSort={{fn this.setSortBy column.key}}\n @align={{column.align}}\n @tooltip={{column.tooltip}}\n @isStickyColumn={{if (and (eq index 0) @hasStickyFirstColumn) true}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n >\n {{column.label}}\n </Hds::AdvancedTable::ThSort>\n {{else}}\n <Hds::AdvancedTable::Th\n @align={{column.align}}\n @tooltip={{column.tooltip}}\n @isVisuallyHidden={{column.isVisuallyHidden}}\n @isExpandable={{column.isExpandable}}\n @onClickToggle={{this._tableModel.toggleAll}}\n @isExpanded={{this._tableModel.expandState}}\n @hasExpandAllButton={{this._tableModel.hasRowsWithChildren}}\n @isStickyColumn={{if (and (eq index 0) @hasStickyFirstColumn) true}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n >\n {{column.label}}\n </Hds::AdvancedTable::Th>\n {{/if}}\n {{/each}}\n </Hds::AdvancedTable::Tr>\n </div>\n\n {{! Body }}\n <div class=\"hds-advanced-table__tbody\" role=\"rowgroup\">\n {{! ----------------------------------------------------------------------------------------\n IMPORTANT: we loop on the `model` array and for each record\n we yield the Tr/Td/Th elements _and_ the record itself as `data`\n this means the consumer will *have to* use the `data` key to access it in their template\n -------------------------------------------------------------------------------------------- }}\n {{#each (sort-by this.getSortCriteria this._tableModel.rows) key=this.identityKey as |record index|}}\n {{#if this._tableModel.hasRowsWithChildren}}\n <Hds::AdvancedTable::ExpandableTrGroup\n @record={{record}}\n @rowIndex={{index}}\n @onClickToggle={{record.onClickToggle}}\n as |T|\n >\n {{yield\n (hash\n Tr=(component\n \"hds/advanced-table/tr\"\n isLastRow=(eq this._tableModel.lastVisibleRow.id T.data.id)\n isParentRow=T.isExpandable\n depth=T.depth\n displayRow=T.shouldDisplayChildRows\n )\n Th=(component\n \"hds/advanced-table/th\"\n depth=T.depth\n isExpandable=T.isExpandable\n isExpanded=T.isExpanded\n newLabel=T.id\n parentId=T.parentId\n scope=\"row\"\n onClickToggle=T.onClickToggle\n )\n Td=(component \"hds/advanced-table/td\" align=@align)\n data=T.data\n isOpen=T.isExpanded\n rowIndex=T.rowIndex\n )\n to=\"body\"\n }}\n </Hds::AdvancedTable::ExpandableTrGroup>\n {{else}}\n {{yield\n (hash\n Tr=(component\n \"hds/advanced-table/tr\"\n selectionScope=\"row\"\n isLastRow=(eq this._tableModel.lastVisibleRow.id record.id)\n isSelectable=this.isSelectable\n onSelectionChange=this.onSelectionRowChange\n didInsert=this.didInsertRowCheckbox\n willDestroy=this.willDestroyRowCheckbox\n selectionAriaLabelSuffix=@selectionAriaLabelSuffix\n hasStickyColumn=@hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n )\n Th=(component\n \"hds/advanced-table/th\"\n scope=\"row\"\n isStickyColumn=@hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n )\n Td=(component \"hds/advanced-table/td\" align=@align)\n data=record\n rowIndex=index\n )\n to=\"body\"\n }}\n {{/if}}\n {{/each}}\n </div>\n </div>\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 this.showScrollIndicatorTop}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-top\"\n {{style top=this.scrollIndicatorDimensions.top width=this.scrollIndicatorDimensions.width}}\n />\n {{/if}}\n\n {{#if this.showScrollIndicatorBottom}}\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>");
14
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<div\n class=\"hds-advanced-table__container\n {{(if this.isStickyHeaderPinned \'hds-advanced-table__container--header-is-pinned\')}}\"\n {{did-update this.setupTableModelData @columns @model @sortBy @sortOrder}}\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 </div>\n\n {{! Grid }}\n <div\n class={{this.classNames}}\n role=\"grid\"\n aria-describedby={{this._captionId}}\n {{style\n grid-template-columns=this.gridTemplateColumns\n --hds-advanced-table-sticky-column-offset=this.stickyColumnOffset\n max-height=@maxHeight\n }}\n {{this._setUpScrollWrapper}}\n >\n {{! Header }}\n <div class={{this.theadClassNames}} role=\"rowgroup\" {{this._setUpThead}}>\n <Hds::AdvancedTable::Tr\n @selectionScope=\"col\"\n @onClickSortBySelected={{if @selectableColumnKey (fn this._tableModel.setSortBy @selectableColumnKey)}}\n @sortBySelectedOrder={{if (eq this._tableModel.sortBy @selectableColumnKey) this._tableModel.sortOrder}}\n @isSelectable={{this.isSelectable}}\n @onSelectionChange={{this.onSelectionAllChange}}\n @didInsert={{this.didInsertSelectAllCheckbox}}\n @willDestroy={{this.willDestroySelectAllCheckbox}}\n @selectionAriaLabelSuffix=\"all rows\"\n @hasStickyColumn={{@hasStickyFirstColumn}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n >\n {{#each this._tableModel.columns as |column index|}}\n {{#if column.isSortable}}\n <Hds::AdvancedTable::ThSort\n @column={{column}}\n @sortOrder={{if (eq column.key this._tableModel.sortBy) this._tableModel.sortOrder}}\n @onClickSort={{if column.key (fn this._tableModel.setSortBy column.key)}}\n @align={{column.align}}\n @tooltip={{column.tooltip}}\n @hasResizableColumns={{@hasResizableColumns}}\n @isLastColumn={{eq index (sub this._tableModel.columns.length 1)}}\n @isStickyColumn={{if (and (eq index 0) @hasStickyFirstColumn) true}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n @previousColumn={{get this._tableModel.columns (sub index 1)}}\n @nextColumn={{get this._tableModel.columns (add index 1)}}\n @tableHeight={{this._tableHeight}}\n @onColumnResize={{@onColumnResize}}\n {{this._setColumnWidth column}}\n >\n {{column.label}}\n </Hds::AdvancedTable::ThSort>\n {{else}}\n <Hds::AdvancedTable::Th\n @align={{column.align}}\n @column={{column}}\n @hasExpandAllButton={{this._tableModel.hasRowsWithChildren}}\n @hasResizableColumns={{@hasResizableColumns}}\n @isExpanded={{this._tableModel.expandState}}\n @isExpandable={{column.isExpandable}}\n @isLastColumn={{eq index (sub this._tableModel.columns.length 1)}}\n @isStickyColumn={{if (and (eq index 0) @hasStickyFirstColumn) true}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n @isVisuallyHidden={{column.isVisuallyHidden}}\n @previousColumn={{get this._tableModel.columns (sub index 1)}}\n @nextColumn={{get this._tableModel.columns (add index 1)}}\n @tableHeight={{this._tableHeight}}\n @tooltip={{column.tooltip}}\n @onClickToggle={{this._tableModel.toggleAll}}\n @onColumnResize={{@onColumnResize}}\n {{this._setColumnWidth column}}\n >\n {{column.label}}\n </Hds::AdvancedTable::Th>\n {{/if}}\n {{/each}}\n </Hds::AdvancedTable::Tr>\n </div>\n\n {{! Body }}\n <div class=\"hds-advanced-table__tbody\" role=\"rowgroup\">\n {{! ----------------------------------------------------------------------------------------\n IMPORTANT: we loop on the `model` array and for each record\n we yield the Tr/Td/Th elements _and_ the record itself as `data`\n this means the consumer will *have to* use the `data` key to access it in their template\n -------------------------------------------------------------------------------------------- }}\n {{#each this._tableModel.sortedRows key=this.identityKey as |record index|}}\n {{#if this._tableModel.hasRowsWithChildren}}\n <Hds::AdvancedTable::ExpandableTrGroup\n @record={{record}}\n @rowIndex={{index}}\n @onClickToggle={{record.onClickToggle}}\n as |T|\n >\n {{yield\n (hash\n Tr=(component\n \"hds/advanced-table/tr\"\n isLastRow=(eq this._tableModel.lastVisibleRow.id T.data.id)\n isParentRow=T.isExpandable\n depth=T.depth\n displayRow=T.shouldDisplayChildRows\n )\n Th=(component\n \"hds/advanced-table/th\"\n depth=T.depth\n isExpandable=T.isExpandable\n isExpanded=T.isExpanded\n newLabel=T.id\n parentId=T.parentId\n scope=\"row\"\n onClickToggle=T.onClickToggle\n )\n Td=(component \"hds/advanced-table/td\" align=@align)\n data=T.data\n isOpen=T.isExpanded\n rowIndex=T.rowIndex\n )\n to=\"body\"\n }}\n </Hds::AdvancedTable::ExpandableTrGroup>\n {{else}}\n {{yield\n (hash\n Tr=(component\n \"hds/advanced-table/tr\"\n selectionScope=\"row\"\n isLastRow=(eq this._tableModel.lastVisibleRow.id record.id)\n isSelectable=this.isSelectable\n onSelectionChange=this.onSelectionRowChange\n didInsert=this.didInsertRowCheckbox\n willDestroy=this.willDestroyRowCheckbox\n selectionAriaLabelSuffix=@selectionAriaLabelSuffix\n hasStickyColumn=@hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n )\n Th=(component\n \"hds/advanced-table/th\"\n scope=\"row\"\n isStickyColumn=@hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n )\n Td=(component \"hds/advanced-table/td\" align=@align)\n data=record\n rowIndex=index\n )\n to=\"body\"\n }}\n {{/if}}\n {{/each}}\n </div>\n </div>\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 this.showScrollIndicatorTop}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-top\"\n {{style top=this.scrollIndicatorDimensions.top width=this.scrollIndicatorDimensions.width}}\n />\n {{/if}}\n\n {{#if this.showScrollIndicatorBottom}}\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>");
14
15
 
15
16
  /**
16
17
  * Copyright (c) HashiCorp, Inc.
@@ -63,18 +64,6 @@ const getStickyColumnLeftOffset = (theadElement, hasRowSelection) => {
63
64
  return `${selectableCell?.offsetWidth}px`;
64
65
  };
65
66
  class HdsAdvancedTable extends Component {
66
- static {
67
- g(this.prototype, "_sortBy", [tracked], function () {
68
- return this.args.sortBy ?? undefined;
69
- });
70
- }
71
- #_sortBy = (i(this, "_sortBy"), void 0);
72
- static {
73
- g(this.prototype, "_sortOrder", [tracked], function () {
74
- return this.args.sortOrder || HdsAdvancedTableThSortOrderValues.Asc;
75
- });
76
- }
77
- #_sortOrder = (i(this, "_sortOrder"), void 0);
78
67
  static {
79
68
  g(this.prototype, "_selectAllCheckbox", [tracked], function () {
80
69
  return undefined;
@@ -87,6 +76,12 @@ class HdsAdvancedTable extends Component {
87
76
  });
88
77
  }
89
78
  #_isSelectAllCheckboxSelected = (i(this, "_isSelectAllCheckboxSelected"), void 0);
79
+ static {
80
+ g(this.prototype, "_tableHeight", [tracked], function () {
81
+ return 0;
82
+ });
83
+ }
84
+ #_tableHeight = (i(this, "_tableHeight"), void 0);
90
85
  _selectableRows = [];
91
86
  _captionId = 'caption-' + guidFor(this);
92
87
  _tableModel;
@@ -145,49 +140,31 @@ class HdsAdvancedTable extends Component {
145
140
  super(owner, args);
146
141
  const {
147
142
  model,
148
- childrenKey,
149
143
  columns,
150
- hasStickyFirstColumn
144
+ childrenKey,
145
+ hasResizableColumns,
146
+ sortBy,
147
+ sortOrder,
148
+ hasStickyFirstColumn,
149
+ onSort
151
150
  } = args;
152
151
  this._tableModel = new HdsAdvancedTableTableModel({
153
152
  model,
154
- childrenKey
153
+ columns,
154
+ childrenKey,
155
+ hasResizableColumns,
156
+ sortBy,
157
+ sortOrder,
158
+ onSort
155
159
  });
156
160
  if (this._tableModel.hasRowsWithChildren) {
157
161
  const sortableColumns = columns.filter(column => column.isSortable);
158
162
  const sortableColumnLabels = sortableColumns.map(column => column.label);
159
163
  assert(`Cannot have sortable columns if there are nested rows. Sortable columns are ${sortableColumnLabels.toString()}`, sortableColumns.length === 0);
160
164
  assert('Cannot have a sticky first column if there are nested rows.', !hasStickyFirstColumn);
165
+ assert(`Cannot have resizable columns if there are nested rows.`, !hasResizableColumns);
161
166
  }
162
167
  }
163
- get getSortCriteria() {
164
- // get the current column
165
- const currentColumn = this.args?.columns?.find(column => column.key === this._sortBy);
166
- if (
167
- // check if there is a custom sorting function associated with the current `sortBy` column (we assume the column has `isSortable`)
168
- currentColumn?.sortingFunction && typeof currentColumn.sortingFunction === 'function') {
169
- return currentColumn.sortingFunction;
170
- } else {
171
- // otherwise fallback to the default format "sortBy:sortOrder"
172
- return `${this._sortBy}:${this._sortOrder}`;
173
- }
174
- }
175
- get columnWidths() {
176
- const {
177
- columns
178
- } = this.args;
179
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
180
- const widths = new Array(columns.length);
181
- let hasCustomColumnWidth = false;
182
- for (let i = 0; i < columns.length; i++) {
183
- const column = columns[i];
184
- if (column?.['width']) {
185
- widths[i] = column.width;
186
- if (!hasCustomColumnWidth) hasCustomColumnWidth = true;
187
- }
188
- }
189
- return hasCustomColumnWidth ? widths : undefined;
190
- }
191
168
  get identityKey() {
192
169
  // 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
193
170
  if (this.args.identityKey === 'none') {
@@ -209,11 +186,18 @@ class HdsAdvancedTable extends Component {
209
186
  return false;
210
187
  }
211
188
  get sortedMessageText() {
212
- if (this.args.sortedMessageText) {
213
- return this.args.sortedMessageText;
214
- } else if (this._sortBy && this._sortOrder) {
189
+ const {
190
+ sortedMessageText
191
+ } = this.args;
192
+ const {
193
+ sortBy,
194
+ sortOrder
195
+ } = this._tableModel;
196
+ if (sortedMessageText !== undefined) {
197
+ return sortedMessageText;
198
+ } else if (sortBy !== undefined && sortOrder !== undefined) {
215
199
  // we should allow the user to define a custom value here (e.g., for i18n) - tracked with HDS-965
216
- return `Sorted by ${this._sortBy} ${this._sortOrder}ending`;
200
+ return `Sorted by ${sortBy} ${sortOrder}ending`;
217
201
  } else {
218
202
  return '';
219
203
  }
@@ -264,21 +248,24 @@ class HdsAdvancedTable extends Component {
264
248
  // returns the grid-template-columns CSS attribute for the grid
265
249
  get gridTemplateColumns() {
266
250
  const {
267
- isSelectable,
268
- columns
251
+ isSelectable
269
252
  } = this.args;
253
+ const {
254
+ columns
255
+ } = this._tableModel;
270
256
  const DEFAULT_COLUMN_WIDTH = '1fr';
271
257
 
272
258
  // if there is a select checkbox, the first column has a 'min-content' width to hug the checkbox content
273
259
  let style = isSelectable ? 'min-content ' : '';
274
- if (!this.columnWidths) {
275
- // if there are no custom column widths, each column is the same width and they take up the available space
276
- style += `repeat(${columns.length}, ${DEFAULT_COLUMN_WIDTH})`;
277
- } else {
260
+ const hasCustomColumnWidths = columns.some(column => column.width !== undefined);
261
+ if (hasCustomColumnWidths) {
278
262
  // check the custom column widths, if the current column has a custom width use the custom width. otherwise take the available space.
279
- for (let i = 0; i < this.columnWidths.length; i++) {
280
- style += ` ${this.columnWidths[i] ? this.columnWidths[i] : DEFAULT_COLUMN_WIDTH}`;
263
+ for (let i = 0; i < columns.length; i++) {
264
+ style += ` ${columns[i].width ?? DEFAULT_COLUMN_WIDTH}`;
281
265
  }
266
+ } else {
267
+ // if there are no custom column widths, each column is the same width and they take up the available space
268
+ style += `repeat(${columns.length}, ${DEFAULT_COLUMN_WIDTH})`;
282
269
  }
283
270
  return style;
284
271
  }
@@ -306,10 +293,20 @@ class HdsAdvancedTable extends Component {
306
293
  if (this.isStickyHeaderPinned) {
307
294
  classes.push('hds-advanced-table__thead--is-pinned');
308
295
  }
296
+ if (this._tableModel.hasResizableColumns) {
297
+ classes.push('hds-advanced-table__thead--has-resizable-columns');
298
+ }
309
299
  return classes.join(' ');
310
300
  }
311
- _didUpdateModel = modifier(() => {
312
- this._tableModel.updateModel(this.args.model);
301
+ _setColumnWidth = modifier((element, [column]) => {
302
+ // eslint-disable-next-line ember/no-runloop
303
+ schedule('afterRender', () => {
304
+ const width = element.offsetWidth;
305
+ if (column.width === undefined) {
306
+ column.setPxWidth(width);
307
+ column.originalWidth = `${width}px`;
308
+ }
309
+ });
313
310
  });
314
311
  _setUpScrollWrapper = modifier(element => {
315
312
  this._scrollHandler = () => {
@@ -362,6 +359,7 @@ class HdsAdvancedTable extends Component {
362
359
  };
363
360
  element.addEventListener('scroll', this._scrollHandler);
364
361
  const updateMeasurements = () => {
362
+ this._tableHeight = element.clientHeight;
365
363
  this.scrollIndicatorDimensions = getScrollIndicatorDimensions(element, this._theadElement, this.hasStickyHeader, hasStickyFirstColumn);
366
364
  if (hasStickyFirstColumn) {
367
365
  this.stickyColumnOffset = getStickyColumnLeftOffset(this._theadElement, isSelectable);
@@ -396,25 +394,6 @@ class HdsAdvancedTable extends Component {
396
394
  _setUpThead = modifier(element => {
397
395
  this._theadElement = element;
398
396
  });
399
- setSortBy(column) {
400
- if (this._sortBy === column) {
401
- // check to see if the column is already sorted and invert the sort order if so
402
- this._sortOrder = this._sortOrder === HdsAdvancedTableThSortOrderValues.Asc ? HdsAdvancedTableThSortOrderValues.Desc : HdsAdvancedTableThSortOrderValues.Asc;
403
- } else {
404
- // otherwise, set the sort order to ascending
405
- this._sortBy = column;
406
- this._sortOrder = HdsAdvancedTableThSortOrderValues.Asc;
407
- }
408
- const {
409
- onSort
410
- } = this.args;
411
- if (typeof onSort === 'function') {
412
- onSort(this._sortBy, this._sortOrder);
413
- }
414
- }
415
- static {
416
- n(this.prototype, "setSortBy", [action]);
417
- }
418
397
  onSelectionChangeCallback(checkbox, selectionKey) {
419
398
  const {
420
399
  onSelectionChange
@@ -438,6 +417,23 @@ class HdsAdvancedTable extends Component {
438
417
  }, [])
439
418
  });
440
419
  }
420
+ setupTableModelData() {
421
+ const {
422
+ columns,
423
+ model,
424
+ sortBy,
425
+ sortOrder
426
+ } = this.args;
427
+ this._tableModel.setupData({
428
+ columns,
429
+ model,
430
+ sortBy,
431
+ sortOrder
432
+ });
433
+ }
434
+ static {
435
+ n(this.prototype, "setupTableModelData", [action]);
436
+ }
441
437
  onSelectionAllChange() {
442
438
  this._selectableRows.forEach(row => {
443
439
  row.checkbox.checked = this._selectAllCheckbox?.checked ?? false;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/advanced-table/index.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 { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\nimport type { ComponentLike } from '@glint/template';\nimport { guidFor } from '@ember/object/internals';\nimport { modifier } from 'ember-modifier';\nimport type Owner from '@ember/owner';\n\nimport HdsAdvancedTableTableModel from './models/table.ts';\n\nimport {\n HdsAdvancedTableDensityValues,\n HdsAdvancedTableThSortOrderValues,\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} from './types.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.ts';\nimport type { HdsAdvancedTableTdSignature } from './td.ts';\nimport type { HdsAdvancedTableThSignature } from './th.ts';\nimport type { HdsAdvancedTableTrSignature } from './tr.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\nconst DEFAULT_SCROLL_DIMENSIONS = {\n bottom: '0px',\n height: '0px',\n left: '0px',\n right: '0px',\n top: '0px',\n width: '0px',\n};\n\nconst getScrollIndicatorDimensions = (\n scrollWrapper: HTMLDivElement,\n theadElement: HTMLDivElement,\n hasStickyHeader: boolean,\n hasStickyFirstColumn: 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\n if (stickyColumnHeaders.length > 1) {\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 top: hasStickyHeader ? `${theadElement.offsetHeight}px` : '0px',\n width: `${scrollWrapper.offsetWidth - verticalScrollBarWidth}px`,\n };\n};\n\nconst getStickyColumnLeftOffset = (\n theadElement: HTMLDivElement,\n hasRowSelection: 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 return `${selectableCell?.offsetWidth}px`;\n};\n\nexport interface HdsAdvancedTableSignature {\n Args: {\n align?: HdsAdvancedTableHorizontalAlignment;\n caption?: string;\n columns: HdsAdvancedTableColumn[];\n density?: HdsAdvancedTableDensities;\n identityKey?: string;\n isSelectable?: boolean;\n isStriped?: boolean;\n model: HdsAdvancedTableModel;\n onSelectionChange?: (\n selection: HdsAdvancedTableOnSelectionChangeSignature\n ) => void;\n onSort?: (sortBy: string, sortOrder: HdsAdvancedTableThSortOrder) => void;\n selectionAriaLabelSuffix?: string;\n sortBy?: string;\n selectableColumnKey?: string;\n sortedMessageText?: string;\n sortOrder?: HdsAdvancedTableThSortOrder;\n valign?: HdsAdvancedTableVerticalAlignment;\n hasStickyHeader?: boolean;\n hasStickyFirstColumn?: boolean;\n childrenKey?: string;\n maxHeight?: string;\n };\n Blocks: {\n body?: [\n {\n Td?: ComponentLike<HdsAdvancedTableTdSignature>;\n Tr?: ComponentLike<HdsAdvancedTableTrSignature>;\n Th?: ComponentLike<HdsAdvancedTableThSignature>;\n data?: Record<string, unknown>;\n rowIndex?: number | string;\n isOpen?: HdsAdvancedTableExpandState;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTable extends Component<HdsAdvancedTableSignature> {\n @tracked private _sortBy = this.args.sortBy ?? undefined;\n @tracked private _sortOrder =\n this.args.sortOrder || HdsAdvancedTableThSortOrderValues.Asc;\n @tracked\n private _selectAllCheckbox?: HdsFormCheckboxBaseSignature['Element'] =\n undefined;\n @tracked private _isSelectAllCheckboxSelected?: boolean = undefined;\n\n private _selectableRows: HdsAdvancedTableSelectableRow[] = [];\n private _captionId = 'caption-' + guidFor(this);\n private _tableModel!: HdsAdvancedTableTableModel;\n private _scrollHandler!: (event: Event) => void;\n private _resizeObserver!: ResizeObserver;\n private _theadElement!: HTMLDivElement;\n\n @tracked scrollIndicatorDimensions = DEFAULT_SCROLL_DIMENSIONS;\n @tracked isStickyColumnPinned = false;\n @tracked isStickyHeaderPinned = false;\n @tracked showScrollIndicatorLeft = false;\n @tracked showScrollIndicatorRight = false;\n @tracked showScrollIndicatorTop = false;\n @tracked showScrollIndicatorBottom = false;\n @tracked stickyColumnOffset = '0px';\n\n constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']) {\n super(owner, args);\n\n const { model, childrenKey, columns, hasStickyFirstColumn } = args;\n\n this._tableModel = new HdsAdvancedTableTableModel({\n model,\n childrenKey,\n });\n\n if (this._tableModel.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 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\n );\n }\n }\n\n get getSortCriteria(): string | HdsAdvancedTableSortingFunction<unknown> {\n // get the current column\n const currentColumn = this.args?.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 columnWidths(): string[] | undefined {\n const { columns } = this.args;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const widths: string[] = new Array(columns.length);\n let hasCustomColumnWidth = false;\n\n for (let i = 0; i < columns.length; i++) {\n const column = columns[i];\n\n if (column?.['width']) {\n widths[i] = column.width;\n if (!hasCustomColumnWidth) hasCustomColumnWidth = true;\n }\n }\n\n return hasCustomColumnWidth ? widths : undefined;\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 childrenKey(): string {\n const { childrenKey = 'children' } = this.args;\n\n return childrenKey;\n }\n\n get hasScrollIndicator(): boolean {\n if (this.args.hasStickyFirstColumn) {\n return true;\n }\n\n return false;\n }\n\n get sortedMessageText(): string {\n if (this.args.sortedMessageText) {\n return this.args.sortedMessageText;\n } else if (this._sortBy && this._sortOrder) {\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._tableModel.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._tableModel.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 // returns the grid-template-columns CSS attribute for the grid\n get gridTemplateColumns(): string {\n const { isSelectable, columns } = this.args;\n\n const DEFAULT_COLUMN_WIDTH = '1fr';\n\n // if there is a select checkbox, the first column has a 'min-content' width to hug the checkbox content\n let style = isSelectable ? 'min-content ' : '';\n\n if (!this.columnWidths) {\n // if there are no custom column widths, each column is the same width and they take up the available space\n style += `repeat(${columns.length}, ${DEFAULT_COLUMN_WIDTH})`;\n } else {\n // check the custom column widths, if the current column has a custom width use the custom width. otherwise take the available space.\n for (let i = 0; i < this.columnWidths.length; i++) {\n style += ` ${this.columnWidths[i] ? this.columnWidths[i] : DEFAULT_COLUMN_WIDTH}`;\n }\n }\n\n return style;\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._tableModel.hasRowsWithChildren) {\n classes.push(`hds-advanced-table--nested`);\n }\n\n return classes.join(' ');\n }\n\n get theadClassNames(): string {\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 return classes.join(' ');\n }\n\n private _didUpdateModel = modifier(() => {\n this._tableModel.updateModel(this.args.model);\n });\n\n private _setUpScrollWrapper = modifier((element: HTMLDivElement) => {\n this._scrollHandler = () => {\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 && !this.showScrollIndicatorLeft) {\n if (this.args.hasStickyFirstColumn) {\n this.isStickyColumnPinned = true;\n }\n this.showScrollIndicatorLeft = true;\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 =\n 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 element.addEventListener('scroll', this._scrollHandler);\n\n const updateMeasurements = () => {\n this.scrollIndicatorDimensions = getScrollIndicatorDimensions(\n element,\n this._theadElement,\n this.hasStickyHeader,\n hasStickyFirstColumn\n );\n\n if (hasStickyFirstColumn) {\n this.stickyColumnOffset = getStickyColumnLeftOffset(\n this._theadElement,\n isSelectable\n );\n }\n };\n\n const { hasStickyFirstColumn = false, isSelectable = false } = this.args;\n\n this._resizeObserver = new ResizeObserver((entries) => {\n entries.forEach(() => {\n updateMeasurements();\n });\n });\n\n this._resizeObserver.observe(element);\n\n updateMeasurements();\n\n // on render check if should show right scroll indicator\n if (element.clientWidth < element.scrollWidth) {\n this.showScrollIndicatorRight = true;\n }\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 @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 const { onSort } = this.args;\n\n if (typeof onSort === 'function') {\n onSort(this._sortBy, this._sortOrder);\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 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 this._selectableRows = this._selectableRows.filter(\n (row) => row.selectionKey !== selectionKey\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"],"names":["DENSITIES","Object","values","HdsAdvancedTableDensityValues","DEFAULT_DENSITY","Medium","VALIGNMENTS","HdsAdvancedTableVerticalAlignmentValues","DEFAULT_VALIGN","Top","DEFAULT_SCROLL_DIMENSIONS","bottom","height","left","right","top","width","getScrollIndicatorDimensions","scrollWrapper","theadElement","hasStickyHeader","hasStickyFirstColumn","horizontalScrollBarHeight","offsetHeight","clientHeight","verticalScrollBarWidth","offsetWidth","clientWidth","leftOffset","stickyColumnHeaders","querySelectorAll","forEach","el","elAsHTMLElement","length","getStickyColumnLeftOffset","hasRowSelection","selectableCell","querySelector","HdsAdvancedTable","Component","g","prototype","tracked","args","sortBy","undefined","i","void 0","sortOrder","HdsAdvancedTableThSortOrderValues","Asc","_selectableRows","_captionId","guidFor","_tableModel","_scrollHandler","_resizeObserver","_theadElement","constructor","owner","model","childrenKey","columns","HdsAdvancedTableTableModel","hasRowsWithChildren","sortableColumns","filter","column","isSortable","sortableColumnLabels","map","label","assert","toString","getSortCriteria","currentColumn","find","key","_sortBy","sortingFunction","_sortOrder","columnWidths","widths","Array","hasCustomColumnWidth","identityKey","hasScrollIndicator","sortedMessageText","isSelectable","isStriped","density","join","includes","maxHeight","valign","gridTemplateColumns","DEFAULT_COLUMN_WIDTH","style","classNames","classes","push","theadClassNames","isStickyHeaderPinned","_didUpdateModel","modifier","updateModel","_setUpScrollWrapper","element","SCROLL_BUFFER","scrollLeft","showScrollIndicatorLeft","isStickyColumnPinned","rightEdge","scrollWidth","showScrollIndicatorRight","scrollTop","showScrollIndicatorTop","bottomEdge","scrollHeight","showScrollIndicatorBottom","addEventListener","updateMeasurements","scrollIndicatorDimensions","stickyColumnOffset","ResizeObserver","entries","observe","removeEventListener","disconnect","_setUpThead","setSortBy","Desc","onSort","n","action","onSelectionChangeCallback","checkbox","selectionKey","onSelectionChange","selectionCheckboxElement","selectedRowsKeys","reduce","acc","row","checked","selectableRowsStates","isSelected","onSelectionAllChange","_selectAllCheckbox","_isSelectAllCheckboxSelected","onSelectionRowChange","setSelectAllState","didInsertSelectAllCheckbox","willDestroySelectAllCheckbox","didInsertRowCheckbox","willDestroyRowCheckbox","selectableRowsCount","selectedRowsCount","indeterminate","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/advanced-table/index.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 { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\nimport type { WithBoundArgs } from '@glint/template';\nimport { guidFor } from '@ember/object/internals';\nimport { modifier } from 'ember-modifier';\nimport type Owner from '@ember/owner';\nimport { schedule } from '@ember/runloop';\n\nimport HdsAdvancedTableTableModel from './models/table.ts';\n\nimport {\n HdsAdvancedTableDensityValues,\n HdsAdvancedTableVerticalAlignmentValues,\n} from './types.ts';\nimport type {\n HdsAdvancedTableColumn,\n HdsAdvancedTableDensities,\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableOnSelectionChangeSignature,\n HdsAdvancedTableSelectableRow,\n HdsAdvancedTableThSortOrder,\n HdsAdvancedTableVerticalAlignment,\n HdsAdvancedTableModel,\n HdsAdvancedTableExpandState,\n} from './types.ts';\nimport type HdsAdvancedTableColumnType from './models/column.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.ts';\nimport type HdsAdvancedTableTd from './td.ts';\nimport type HdsAdvancedTableTh from './th.ts';\nimport type HdsAdvancedTableTr from './tr.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\nconst DEFAULT_SCROLL_DIMENSIONS = {\n bottom: '0px',\n height: '0px',\n left: '0px',\n right: '0px',\n top: '0px',\n width: '0px',\n};\n\nconst getScrollIndicatorDimensions = (\n scrollWrapper: HTMLDivElement,\n theadElement: HTMLDivElement,\n hasStickyHeader: boolean,\n hasStickyFirstColumn: 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\n if (stickyColumnHeaders.length > 1) {\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 top: hasStickyHeader ? `${theadElement.offsetHeight}px` : '0px',\n width: `${scrollWrapper.offsetWidth - verticalScrollBarWidth}px`,\n };\n};\n\nconst getStickyColumnLeftOffset = (\n theadElement: HTMLDivElement,\n hasRowSelection: 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 return `${selectableCell?.offsetWidth}px`;\n};\n\nexport interface HdsAdvancedTableSignature {\n Args: {\n align?: HdsAdvancedTableHorizontalAlignment;\n caption?: string;\n columns: HdsAdvancedTableColumn[];\n density?: HdsAdvancedTableDensities;\n identityKey?: string;\n isSelectable?: boolean;\n isStriped?: boolean;\n model: HdsAdvancedTableModel;\n selectionAriaLabelSuffix?: string;\n sortBy?: string;\n selectableColumnKey?: string;\n sortedMessageText?: string;\n sortOrder?: HdsAdvancedTableThSortOrder;\n valign?: HdsAdvancedTableVerticalAlignment;\n hasResizableColumns?: boolean;\n hasStickyHeader?: boolean;\n hasStickyFirstColumn?: boolean;\n childrenKey?: string;\n maxHeight?: string;\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 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 | 'isStickyColumn'\n | 'isStickyColumnPinned'\n | 'onClickToggle'\n >;\n data?: Record<string, unknown>;\n rowIndex?: number | string;\n isOpen?: HdsAdvancedTableExpandState;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTable extends Component<HdsAdvancedTableSignature> {\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 _tableModel!: HdsAdvancedTableTableModel;\n private _scrollHandler!: (event: Event) => void;\n private _resizeObserver!: ResizeObserver;\n private _theadElement!: HTMLDivElement;\n\n @tracked scrollIndicatorDimensions = DEFAULT_SCROLL_DIMENSIONS;\n @tracked isStickyColumnPinned = false;\n @tracked isStickyHeaderPinned = false;\n @tracked showScrollIndicatorLeft = false;\n @tracked showScrollIndicatorRight = false;\n @tracked showScrollIndicatorTop = false;\n @tracked showScrollIndicatorBottom = false;\n @tracked stickyColumnOffset = '0px';\n\n constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']) {\n super(owner, args);\n\n const {\n model,\n columns,\n childrenKey,\n hasResizableColumns,\n sortBy,\n sortOrder,\n hasStickyFirstColumn,\n onSort,\n } = args;\n\n this._tableModel = new HdsAdvancedTableTableModel({\n model,\n columns,\n childrenKey,\n hasResizableColumns,\n sortBy,\n sortOrder,\n onSort,\n });\n\n if (this._tableModel.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 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\n );\n\n assert(\n `Cannot have resizable columns if there are nested rows.`,\n !hasResizableColumns\n );\n }\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 childrenKey(): string {\n const { childrenKey = 'children' } = this.args;\n\n return childrenKey;\n }\n\n get hasScrollIndicator(): boolean {\n if (this.args.hasStickyFirstColumn) {\n return true;\n }\n\n return false;\n }\n\n get sortedMessageText(): string {\n const { sortedMessageText } = this.args;\n const { sortBy, sortOrder } = this._tableModel;\n\n if (sortedMessageText !== undefined) {\n return sortedMessageText;\n } else if (sortBy !== undefined && 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 ${sortBy} ${sortOrder}ending`;\n } else {\n return '';\n }\n }\n\n get isSelectable(): boolean {\n const { isSelectable = false } = this.args;\n\n if (this._tableModel.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._tableModel.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 // returns the grid-template-columns CSS attribute for the grid\n get gridTemplateColumns(): string {\n const { isSelectable } = this.args;\n const { columns } = this._tableModel;\n\n const DEFAULT_COLUMN_WIDTH = '1fr';\n\n // if there is a select checkbox, the first column has a 'min-content' width to hug the checkbox content\n let style = isSelectable ? 'min-content ' : '';\n\n const hasCustomColumnWidths = columns.some(\n (column) => column.width !== undefined\n );\n\n if (hasCustomColumnWidths) {\n // check the custom column widths, if the current column has a custom width use the custom width. otherwise take the available space.\n for (let i = 0; i < columns.length; i++) {\n style += ` ${columns[i]!.width ?? DEFAULT_COLUMN_WIDTH}`;\n }\n } else {\n // if there are no custom column widths, each column is the same width and they take up the available space\n style += `repeat(${columns.length}, ${DEFAULT_COLUMN_WIDTH})`;\n }\n\n return style;\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._tableModel.hasRowsWithChildren) {\n classes.push(`hds-advanced-table--nested`);\n }\n\n return classes.join(' ');\n }\n\n get theadClassNames(): string {\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 (this._tableModel.hasResizableColumns) {\n classes.push('hds-advanced-table__thead--has-resizable-columns');\n }\n\n return classes.join(' ');\n }\n\n private _setColumnWidth = modifier(\n (element: HTMLDivElement, [column]: [HdsAdvancedTableColumnType]) => {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', () => {\n const width = element.offsetWidth;\n\n if (column.width === undefined) {\n column.setPxWidth(width);\n column.originalWidth = `${width}px`;\n }\n });\n }\n );\n\n private _setUpScrollWrapper = modifier((element: HTMLDivElement) => {\n this._scrollHandler = () => {\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 && !this.showScrollIndicatorLeft) {\n if (this.args.hasStickyFirstColumn) {\n this.isStickyColumnPinned = true;\n }\n this.showScrollIndicatorLeft = true;\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 =\n 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 element.addEventListener('scroll', this._scrollHandler);\n\n const updateMeasurements = () => {\n this._tableHeight = element.clientHeight;\n\n this.scrollIndicatorDimensions = getScrollIndicatorDimensions(\n element,\n this._theadElement,\n this.hasStickyHeader,\n hasStickyFirstColumn\n );\n\n if (hasStickyFirstColumn) {\n this.stickyColumnOffset = getStickyColumnLeftOffset(\n this._theadElement,\n isSelectable\n );\n }\n };\n\n const { hasStickyFirstColumn = false, isSelectable = false } = this.args;\n\n this._resizeObserver = new ResizeObserver((entries) => {\n entries.forEach(() => {\n updateMeasurements();\n });\n });\n\n this._resizeObserver.observe(element);\n\n updateMeasurements();\n\n // on render check if should show right scroll indicator\n if (element.clientWidth < element.scrollWidth) {\n this.showScrollIndicatorRight = true;\n }\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 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 setupTableModelData(): void {\n const { columns, model, sortBy, sortOrder } = this.args;\n\n this._tableModel.setupData({ columns, model, sortBy, sortOrder });\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 this._selectableRows = this._selectableRows.filter(\n (row) => row.selectionKey !== selectionKey\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"],"names":["DENSITIES","Object","values","HdsAdvancedTableDensityValues","DEFAULT_DENSITY","Medium","VALIGNMENTS","HdsAdvancedTableVerticalAlignmentValues","DEFAULT_VALIGN","Top","DEFAULT_SCROLL_DIMENSIONS","bottom","height","left","right","top","width","getScrollIndicatorDimensions","scrollWrapper","theadElement","hasStickyHeader","hasStickyFirstColumn","horizontalScrollBarHeight","offsetHeight","clientHeight","verticalScrollBarWidth","offsetWidth","clientWidth","leftOffset","stickyColumnHeaders","querySelectorAll","forEach","el","elAsHTMLElement","length","getStickyColumnLeftOffset","hasRowSelection","selectableCell","querySelector","HdsAdvancedTable","Component","g","prototype","tracked","undefined","i","void 0","_selectableRows","_captionId","guidFor","_tableModel","_scrollHandler","_resizeObserver","_theadElement","constructor","owner","args","model","columns","childrenKey","hasResizableColumns","sortBy","sortOrder","onSort","HdsAdvancedTableTableModel","hasRowsWithChildren","sortableColumns","filter","column","isSortable","sortableColumnLabels","map","label","assert","toString","identityKey","hasScrollIndicator","sortedMessageText","isSelectable","isStriped","density","join","includes","maxHeight","valign","gridTemplateColumns","DEFAULT_COLUMN_WIDTH","style","hasCustomColumnWidths","some","classNames","classes","push","theadClassNames","isStickyHeaderPinned","_setColumnWidth","modifier","element","schedule","setPxWidth","originalWidth","_setUpScrollWrapper","SCROLL_BUFFER","scrollLeft","showScrollIndicatorLeft","isStickyColumnPinned","rightEdge","scrollWidth","showScrollIndicatorRight","scrollTop","showScrollIndicatorTop","bottomEdge","scrollHeight","showScrollIndicatorBottom","addEventListener","updateMeasurements","_tableHeight","scrollIndicatorDimensions","stickyColumnOffset","ResizeObserver","entries","observe","removeEventListener","disconnect","_setUpThead","onSelectionChangeCallback","checkbox","selectionKey","onSelectionChange","selectionCheckboxElement","selectedRowsKeys","reduce","acc","row","checked","selectableRowsStates","isSelected","setupTableModelData","setupData","n","action","onSelectionAllChange","_selectAllCheckbox","_isSelectAllCheckboxSelected","onSelectionRowChange","setSelectAllState","didInsertSelectAllCheckbox","willDestroySelectAllCheckbox","didInsertRowCheckbox","willDestroyRowCheckbox","selectableRowsCount","selectedRowsCount","indeterminate","setComponentTemplate","TEMPLATE"],"mappings":"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"}