@hashicorp/design-system-components 5.0.0 → 5.1.0-rc-20251125151324

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 (76) hide show
  1. package/declarations/components/hds/advanced-table/index.d.ts +10 -0
  2. package/declarations/components/hds/dropdown/list-item/checkbox.d.ts +1 -0
  3. package/declarations/components/hds/dropdown/list-item/radio.d.ts +1 -0
  4. package/declarations/components/hds/filter-bar/dropdown.d.ts +38 -0
  5. package/declarations/components/hds/filter-bar/filter-group/checkbox.d.ts +21 -0
  6. package/declarations/components/hds/filter-bar/filter-group/date.d.ts +47 -0
  7. package/declarations/components/hds/filter-bar/filter-group/generic.d.ts +24 -0
  8. package/declarations/components/hds/filter-bar/filter-group/index.d.ts +51 -0
  9. package/declarations/components/hds/filter-bar/filter-group/numerical.d.ts +45 -0
  10. package/declarations/components/hds/filter-bar/filter-group/radio.d.ts +21 -0
  11. package/declarations/components/hds/filter-bar/index.d.ts +48 -0
  12. package/declarations/components/hds/filter-bar/tabs/index.d.ts +43 -0
  13. package/declarations/components/hds/filter-bar/tabs/panel.d.ts +28 -0
  14. package/declarations/components/hds/filter-bar/tabs/tab.d.ts +34 -0
  15. package/declarations/components/hds/filter-bar/types.d.ts +86 -0
  16. package/declarations/components/hds/form/text-input/field.d.ts +1 -1
  17. package/declarations/components.d.ts +12 -0
  18. package/declarations/template-registry.d.ts +33 -0
  19. package/dist/_app_/components/hds/filter-bar/dropdown.js +1 -0
  20. package/dist/_app_/components/hds/filter-bar/filter-group/checkbox.js +1 -0
  21. package/dist/_app_/components/hds/filter-bar/filter-group/date.js +1 -0
  22. package/dist/_app_/components/hds/filter-bar/filter-group/generic.js +1 -0
  23. package/dist/_app_/components/hds/filter-bar/filter-group/numerical.js +1 -0
  24. package/dist/_app_/components/hds/filter-bar/filter-group/radio.js +1 -0
  25. package/dist/_app_/components/hds/filter-bar/filter-group.js +1 -0
  26. package/dist/_app_/components/hds/filter-bar/tabs/panel.js +1 -0
  27. package/dist/_app_/components/hds/filter-bar/tabs/tab.js +1 -0
  28. package/dist/_app_/components/hds/filter-bar/tabs.js +1 -0
  29. package/dist/_app_/components/hds/filter-bar.js +1 -0
  30. package/dist/components/hds/advanced-table/index.js +10 -1
  31. package/dist/components/hds/advanced-table/index.js.map +1 -1
  32. package/dist/components/hds/dropdown/list-item/checkbox.js.map +1 -1
  33. package/dist/components/hds/dropdown/list-item/radio.js.map +1 -1
  34. package/dist/components/hds/filter-bar/dropdown.js +120 -0
  35. package/dist/components/hds/filter-bar/dropdown.js.map +1 -0
  36. package/dist/components/hds/filter-bar/filter-group/checkbox.js +40 -0
  37. package/dist/components/hds/filter-bar/filter-group/checkbox.js.map +1 -0
  38. package/dist/components/hds/filter-bar/filter-group/date.js +164 -0
  39. package/dist/components/hds/filter-bar/filter-group/date.js.map +1 -0
  40. package/dist/components/hds/filter-bar/filter-group/generic.js +43 -0
  41. package/dist/components/hds/filter-bar/filter-group/generic.js.map +1 -0
  42. package/dist/components/hds/filter-bar/filter-group/index.js +226 -0
  43. package/dist/components/hds/filter-bar/filter-group/index.js.map +1 -0
  44. package/dist/components/hds/filter-bar/filter-group/numerical.js +163 -0
  45. package/dist/components/hds/filter-bar/filter-group/numerical.js.map +1 -0
  46. package/dist/components/hds/filter-bar/filter-group/radio.js +40 -0
  47. package/dist/components/hds/filter-bar/filter-group/radio.js.map +1 -0
  48. package/dist/components/hds/filter-bar/index.js +237 -0
  49. package/dist/components/hds/filter-bar/index.js.map +1 -0
  50. package/dist/components/hds/filter-bar/tabs/index.js +181 -0
  51. package/dist/components/hds/filter-bar/tabs/index.js.map +1 -0
  52. package/dist/components/hds/filter-bar/tabs/panel.js +67 -0
  53. package/dist/components/hds/filter-bar/tabs/panel.js.map +1 -0
  54. package/dist/components/hds/filter-bar/tabs/tab.js +98 -0
  55. package/dist/components/hds/filter-bar/tabs/tab.js.map +1 -0
  56. package/dist/components/hds/filter-bar/types.js +35 -0
  57. package/dist/components/hds/filter-bar/types.js.map +1 -0
  58. package/dist/components.js +12 -0
  59. package/dist/components.js.map +1 -1
  60. package/dist/helpers/hds-link-to-query.js +0 -1
  61. package/dist/helpers/hds-link-to-query.js.map +1 -1
  62. package/dist/styles/@hashicorp/design-system-components.css +319 -1555
  63. package/dist/styles/@hashicorp/design-system-components.scss +1 -0
  64. package/dist/styles/components/advanced-table.scss +67 -1
  65. package/dist/styles/components/app-header.scss +6 -9
  66. package/dist/styles/components/filter-bar.scss +164 -0
  67. package/dist/styles/components/side-nav/header.scss +4 -12
  68. package/dist/styles/mixins/_interactive-dark-theme.scss +7 -4
  69. package/package.json +12 -1
  70. package/translations/hds/components/advanced-table/en-us.yaml +3 -0
  71. package/translations/hds/components/filter-bar/date/en-us.yaml +18 -0
  72. package/translations/hds/components/filter-bar/en-us.yaml +9 -0
  73. package/translations/hds/components/filter-bar/filter-group/en-us.yaml +1 -0
  74. package/translations/hds/components/filter-bar/filter-group/numerical/en-us.yaml +15 -0
  75. package/translations/hds/components/filter-bar/filter-options/en-us.yaml +1 -0
  76. package/translations/hds/components/filter-bar/filters-dropdown/en-us.yaml +7 -0
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/filter-group/radio";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/filter-group/index";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/tabs/panel";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/tabs/tab";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/tabs/index";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/filter-bar/index";
@@ -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 (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\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 {{did-update this.updateTableModelColumnOrder @columnOrder}}\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 {{! 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._registerGridElement}}\n {{this._setUpScrollWrapper}}\n >\n {{! Header }}\n <div\n class={{this.theadClassNames}}\n role=\"rowgroup\"\n {{this._setUpThead}}\n {{on \"dragleave\" (fn (mut this._tableModel.reorderHoveredColumn) null)}}\n >\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={{this.hasStickyFirstColumn}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n >\n {{#each this._tableModel.orderedColumns as |column|}}\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 @hasReorderableColumns={{@hasReorderableColumns}}\n @hasResizableColumns={{@hasResizableColumns}}\n @hasSelectableRows={{this.isSelectable}}\n @isStickyColumn={{this._isStickyColumn column}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n @tableHeight={{this._tableHeight}}\n @onColumnResize={{@onColumnResize}}\n @onPinFirstColumn={{this._onPinFirstColumn}}\n @onReorderDragEnd={{fn (mut this._tableModel.reorderDraggedColumn) null}}\n @onReorderDragStart={{fn (mut this._tableModel.reorderDraggedColumn)}}\n @onReorderDrop={{this._tableModel.moveColumnToDropTarget}}\n {{this._registerThElement 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 @hasReorderableColumns={{@hasReorderableColumns}}\n @hasResizableColumns={{@hasResizableColumns}}\n @hasSelectableRows={{this.isSelectable}}\n @isExpanded={{this._tableModel.expandState}}\n @isExpandable={{column.isExpandable}}\n @isStickyColumn={{this._isStickyColumn column}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n @tableHeight={{this._tableHeight}}\n @tooltip={{column.tooltip}}\n @onClickToggle={{this._tableModel.toggleAll}}\n @onColumnResize={{@onColumnResize}}\n @onPinFirstColumn={{this._onPinFirstColumn}}\n @onReorderDragEnd={{fn (mut this._tableModel.reorderDraggedColumn) null}}\n @onReorderDragStart={{fn (mut this._tableModel.reorderDraggedColumn)}}\n @onReorderDrop={{this._tableModel.moveColumnToDropTarget}}\n {{this._registerThElement column}}\n >\n {{column.label}}\n </Hds::AdvancedTable::Th>\n {{/if}}\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 <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 data=T.data\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=this.hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n data=record\n )\n Th=(component\n \"hds/advanced-table/th\"\n scope=\"row\"\n isStickyColumn=this.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.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\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<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 {{did-update this.updateTableModelColumnOrder @columnOrder}}\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 {{! 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._registerGridElement}}\n {{this._setUpScrollWrapper}}\n >\n {{! Header }}\n <div\n class={{this.theadClassNames}}\n role=\"rowgroup\"\n {{this._setUpThead}}\n {{on \"dragleave\" (fn (mut this._tableModel.reorderHoveredColumn) null)}}\n >\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={{this.hasStickyFirstColumn}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n >\n {{#each this._tableModel.orderedColumns as |column|}}\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 @hasReorderableColumns={{@hasReorderableColumns}}\n @hasResizableColumns={{@hasResizableColumns}}\n @hasSelectableRows={{this.isSelectable}}\n @isStickyColumn={{this._isStickyColumn column}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n @tableHeight={{this._tableHeight}}\n @onColumnResize={{@onColumnResize}}\n @onPinFirstColumn={{this._onPinFirstColumn}}\n @onReorderDragEnd={{fn (mut this._tableModel.reorderDraggedColumn) null}}\n @onReorderDragStart={{fn (mut this._tableModel.reorderDraggedColumn)}}\n @onReorderDrop={{this._tableModel.moveColumnToDropTarget}}\n {{this._registerThElement 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 @hasReorderableColumns={{@hasReorderableColumns}}\n @hasResizableColumns={{@hasResizableColumns}}\n @hasSelectableRows={{this.isSelectable}}\n @isExpanded={{this._tableModel.expandState}}\n @isExpandable={{column.isExpandable}}\n @isStickyColumn={{this._isStickyColumn column}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n @tableHeight={{this._tableHeight}}\n @tooltip={{column.tooltip}}\n @onClickToggle={{this._tableModel.toggleAll}}\n @onColumnResize={{@onColumnResize}}\n @onPinFirstColumn={{this._onPinFirstColumn}}\n @onReorderDragEnd={{fn (mut this._tableModel.reorderDraggedColumn) null}}\n @onReorderDragStart={{fn (mut this._tableModel.reorderDraggedColumn)}}\n @onReorderDrop={{this._tableModel.moveColumnToDropTarget}}\n {{this._registerThElement column}}\n >\n {{column.label}}\n </Hds::AdvancedTable::Th>\n {{/if}}\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 {{#unless this.isEmpty}}\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 data=T.data\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=this.hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n data=record\n )\n Th=(component\n \"hds/advanced-table/th\"\n scope=\"row\"\n isStickyColumn=this.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 {{/unless}}\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 {{#unless this.isEmpty}}\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 {{/unless}}\n\n {{#if this.isEmpty}}\n <div class=\"hds-advanced-table__empty-state\">\n <div class=\"hds-advanced-table__empty-state__content\">\n {{#if (has-block \"emptyState\")}}\n {{yield to=\"emptyState\"}}\n {{else}}\n <Hds::Layout::Flex @direction=\"column\" @gap=\"8\">\n <Hds::Text::Display @tag=\"h3\" @size=\"300\">{{hds-t\n \"hds.components.advanced-table.empty-state.title\"\n default=\"No data available\"\n }}</Hds::Text::Display>\n <Hds::Text::Body>\n {{hds-t\n \"hds.components.advanced-table.empty-state.description\"\n default=\"There is currently no data to display in the table.\"\n }}\n </Hds::Text::Body>\n </Hds::Layout::Flex>\n {{/if}}\n </div>\n </div>\n {{/if}}\n</div>");
15
15
 
16
16
  /**
17
17
  * Copyright (c) HashiCorp, Inc.
@@ -194,6 +194,15 @@ class HdsAdvancedTable extends Component {
194
194
  this.hasPinnedFirstColumn = true;
195
195
  }
196
196
  }
197
+ get isEmpty() {
198
+ const {
199
+ isEmpty
200
+ } = this.args;
201
+ if (isEmpty !== undefined) {
202
+ return isEmpty;
203
+ }
204
+ return false;
205
+ }
197
206
  get identityKey() {
198
207
  // 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
199
208
  if (this.args.identityKey === 'none') {
@@ -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 { guidFor } from '@ember/object/internals';\nimport { service } from '@ember/service';\nimport { modifier } from 'ember-modifier';\nimport HdsAdvancedTableTableModel from './models/table.ts';\n\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } 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 HdsAdvancedTableThSortOrder,\n HdsAdvancedTableVerticalAlignment,\n HdsAdvancedTableModel,\n HdsAdvancedTableExpandState,\n HdsAdvancedTableColumnReorderCallback,\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';\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 hasFirstColumnPxWidth: 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 || hasFirstColumnPxWidth) {\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 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 @service 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 _tableModel!: HdsAdvancedTableTableModel;\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 constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']) {\n super(owner, args);\n\n const {\n model,\n columns,\n columnOrder,\n childrenKey,\n hasReorderableColumns,\n hasResizableColumns,\n sortBy,\n sortOrder,\n hasStickyFirstColumn,\n onSort,\n } = args;\n\n this._tableModel = new HdsAdvancedTableTableModel({\n model,\n columns,\n columnOrder,\n childrenKey,\n hasReorderableColumns,\n hasResizableColumns,\n sortBy,\n sortOrder,\n onColumnReorder: this._onColumnReorder.bind(this),\n onSort,\n });\n\n this._runAssertions();\n\n if (hasStickyFirstColumn) {\n this.hasPinnedFirstColumn = true;\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 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 hasScrollIndicator(): boolean {\n if (this.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 { orderedColumns } = this._tableModel;\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 for (let i = 0; i < orderedColumns.length; i++) {\n style += ` ${orderedColumns[i]!.appliedWidth}`;\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 _registerGridElement = modifier((element: HTMLDivElement) => {\n this._tableModel.gridElement = element;\n });\n\n private _registerThElement = modifier(\n (element: HTMLDivElement, [column]: [HdsAdvancedTableColumnType]) => {\n if (column === undefined) {\n return;\n }\n\n column.thElement = element;\n }\n );\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 this._tableHeight = element.offsetHeight;\n\n const hasFirstColumnPxWidth =\n this._tableModel.columns[0]?.pxWidth !== undefined;\n\n this.scrollIndicatorDimensions = getScrollIndicatorDimensions(\n element,\n this._theadElement,\n this.hasStickyFirstColumn ? true : false,\n hasFirstColumnPxWidth,\n this.isStickyColumnPinned\n );\n\n if (this.hasStickyFirstColumn) {\n this.stickyColumnOffset = getStickyColumnLeftOffset(\n this._theadElement,\n isSelectable,\n this.isStickyColumnPinned\n );\n }\n };\n\n const { isSelectable = false } = this.args;\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 _runAssertions() {\n const {\n columns,\n hasReorderableColumns,\n hasResizableColumns,\n hasStickyFirstColumn,\n } = this.args;\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 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 _setUpThead = modifier((element: HTMLDivElement) => {\n this._theadElement = element;\n });\n\n private _onColumnReorder: HdsAdvancedTableColumnReorderCallback = ({\n column,\n newOrder,\n insertedAt,\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 setupTableModelData(): void {\n const { columns, model, sortBy, sortOrder } = this.args;\n\n this._tableModel.setupData({\n columns,\n model,\n sortBy,\n sortOrder,\n });\n }\n\n @action\n updateTableModelColumnOrder(): void {\n if (this.args.columnOrder === undefined) {\n return;\n }\n\n this._tableModel.columnOrder = this.args.columnOrder;\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 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 private _isStickyColumn = (\n column: HdsAdvancedTableColumnType\n ): boolean | undefined => {\n if (column.isFirst && this.hasStickyFirstColumn !== undefined) {\n return this.hasStickyFirstColumn;\n }\n return undefined;\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","hasFirstColumnPxWidth","isStickyColumnPinned","horizontalScrollBarHeight","offsetHeight","clientHeight","verticalScrollBarWidth","offsetWidth","clientWidth","leftOffset","stickyColumnHeaders","querySelectorAll","forEach","el","elAsHTMLElement","length","getStickyColumnLeftOffset","hasRowSelection","selectableCell","querySelector","HdsAdvancedTable","Component","g","prototype","service","i","void 0","tracked","undefined","_selectableRows","_captionId","guidFor","_tableModel","_scrollHandler","_resizeObserver","_theadElement","_scrollWrapperElement","constructor","owner","args","model","columns","columnOrder","childrenKey","hasReorderableColumns","hasResizableColumns","sortBy","sortOrder","onSort","HdsAdvancedTableTableModel","onColumnReorder","_onColumnReorder","bind","_runAssertions","hasPinnedFirstColumn","identityKey","hasScrollIndicator","sortedMessageText","isSelectable","hasRowsWithChildren","assert","isStriped","density","join","includes","hasStickyHeader","maxHeight","valign","gridTemplateColumns","orderedColumns","style","appliedWidth","classNames","classes","push","theadClassNames","isStickyHeaderPinned","_registerGridElement","modifier","element","gridElement","_registerThElement","column","thElement","_setUpScrollWrapper","updateHorizontalScrollIndicators","showScrollIndicatorRight","scrollWidth","_updateScrollIndicators","addEventListener","updateMeasurements","_tableHeight","pxWidth","scrollIndicatorDimensions","stickyColumnOffset","ResizeObserver","entries","observe","scrollHeight","showScrollIndicatorBottom","removeEventListener","disconnect","sortableColumns","filter","isSortable","sortableColumnLabels","map","label","toString","_setUpThead","newOrder","insertedAt","reorderedMessageText","newPosition","translatedReorderedMessageText","hdsIntl","t","default","columnLabel","onSelectionChangeCallback","checkbox","selectionKey","onSelectionChange","selectionCheckboxElement","selectedRowsKeys","reduce","acc","row","checked","selectableRowsStates","isSelected","setupTableModelData","setupData","n","action","updateTableModelColumnOrder","onSelectionAllChange","_selectAllCheckbox","_isSelectAllCheckboxSelected","onSelectionRowChange","setSelectAllState","didInsertSelectAllCheckbox","willDestroySelectAllCheckbox","didInsertRowCheckbox","willDestroyRowCheckbox","selectableRowsCount","selectedRowsCount","indeterminate","SCROLL_BUFFER","scrollLeft","showScrollIndicatorLeft","rightEdge","scrollTop","showScrollIndicatorTop","bottomEdge","_onPinFirstColumn","_isStickyColumn","isFirst","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 { guidFor } from '@ember/object/internals';\nimport { service } from '@ember/service';\nimport { modifier } from 'ember-modifier';\nimport HdsAdvancedTableTableModel from './models/table.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 HdsAdvancedTableThSortOrder,\n HdsAdvancedTableVerticalAlignment,\n HdsAdvancedTableModel,\n HdsAdvancedTableExpandState,\n HdsAdvancedTableColumnReorderCallback,\n} from './types.ts';\nimport type { HdsFilterBarSignature } from '../filter-bar/index.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';\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 hasFirstColumnPxWidth: 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 || hasFirstColumnPxWidth) {\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 isEmpty?: boolean;\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 | 'isStickyColumn'\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 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 _tableModel!: HdsAdvancedTableTableModel;\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 constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']) {\n super(owner, args);\n\n const {\n model,\n columns,\n columnOrder,\n childrenKey,\n hasReorderableColumns,\n hasResizableColumns,\n sortBy,\n sortOrder,\n hasStickyFirstColumn,\n onSort,\n } = args;\n\n this._tableModel = new HdsAdvancedTableTableModel({\n model,\n columns,\n columnOrder,\n childrenKey,\n hasReorderableColumns,\n hasResizableColumns,\n sortBy,\n sortOrder,\n onColumnReorder: this._onColumnReorder.bind(this),\n onSort,\n });\n\n this._runAssertions();\n\n if (hasStickyFirstColumn) {\n this.hasPinnedFirstColumn = true;\n }\n }\n\n get isEmpty(): boolean {\n const { isEmpty } = this.args;\n if (isEmpty !== undefined) {\n return isEmpty;\n }\n return false;\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 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 hasScrollIndicator(): boolean {\n if (this.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 { orderedColumns } = this._tableModel;\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 for (let i = 0; i < orderedColumns.length; i++) {\n style += ` ${orderedColumns[i]!.appliedWidth}`;\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 _registerGridElement = modifier((element: HTMLDivElement) => {\n this._tableModel.gridElement = element;\n });\n\n private _registerThElement = modifier(\n (element: HTMLDivElement, [column]: [HdsAdvancedTableColumnType]) => {\n if (column === undefined) {\n return;\n }\n\n column.thElement = element;\n }\n );\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 this._tableHeight = element.offsetHeight;\n\n const hasFirstColumnPxWidth =\n this._tableModel.columns[0]?.pxWidth !== undefined;\n\n this.scrollIndicatorDimensions = getScrollIndicatorDimensions(\n element,\n this._theadElement,\n this.hasStickyFirstColumn ? true : false,\n hasFirstColumnPxWidth,\n this.isStickyColumnPinned\n );\n\n if (this.hasStickyFirstColumn) {\n this.stickyColumnOffset = getStickyColumnLeftOffset(\n this._theadElement,\n isSelectable,\n this.isStickyColumnPinned\n );\n }\n };\n\n const { isSelectable = false } = this.args;\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 _runAssertions() {\n const {\n columns,\n hasReorderableColumns,\n hasResizableColumns,\n hasStickyFirstColumn,\n } = this.args;\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 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 _setUpThead = modifier((element: HTMLDivElement) => {\n this._theadElement = element;\n });\n\n private _onColumnReorder: HdsAdvancedTableColumnReorderCallback = ({\n column,\n newOrder,\n insertedAt,\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 setupTableModelData(): void {\n const { columns, model, sortBy, sortOrder } = this.args;\n\n this._tableModel.setupData({\n columns,\n model,\n sortBy,\n sortOrder,\n });\n }\n\n @action\n updateTableModelColumnOrder(): void {\n if (this.args.columnOrder === undefined) {\n return;\n }\n\n this._tableModel.columnOrder = this.args.columnOrder;\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 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 private _isStickyColumn = (\n column: HdsAdvancedTableColumnType\n ): boolean | undefined => {\n if (column.isFirst && this.hasStickyFirstColumn !== undefined) {\n return this.hasStickyFirstColumn;\n }\n return undefined;\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","hasFirstColumnPxWidth","isStickyColumnPinned","horizontalScrollBarHeight","offsetHeight","clientHeight","verticalScrollBarWidth","offsetWidth","clientWidth","leftOffset","stickyColumnHeaders","querySelectorAll","forEach","el","elAsHTMLElement","length","getStickyColumnLeftOffset","hasRowSelection","selectableCell","querySelector","HdsAdvancedTable","Component","g","prototype","service","i","void 0","tracked","undefined","_selectableRows","_captionId","guidFor","_tableModel","_scrollHandler","_resizeObserver","_theadElement","_scrollWrapperElement","constructor","owner","args","model","columns","columnOrder","childrenKey","hasReorderableColumns","hasResizableColumns","sortBy","sortOrder","onSort","HdsAdvancedTableTableModel","onColumnReorder","_onColumnReorder","bind","_runAssertions","hasPinnedFirstColumn","isEmpty","identityKey","hasScrollIndicator","sortedMessageText","isSelectable","hasRowsWithChildren","assert","isStriped","density","join","includes","hasStickyHeader","maxHeight","valign","gridTemplateColumns","orderedColumns","style","appliedWidth","classNames","classes","push","theadClassNames","isStickyHeaderPinned","_registerGridElement","modifier","element","gridElement","_registerThElement","column","thElement","_setUpScrollWrapper","updateHorizontalScrollIndicators","showScrollIndicatorRight","scrollWidth","_updateScrollIndicators","addEventListener","updateMeasurements","_tableHeight","pxWidth","scrollIndicatorDimensions","stickyColumnOffset","ResizeObserver","entries","observe","scrollHeight","showScrollIndicatorBottom","removeEventListener","disconnect","sortableColumns","filter","isSortable","sortableColumnLabels","map","label","toString","_setUpThead","newOrder","insertedAt","reorderedMessageText","newPosition","translatedReorderedMessageText","hdsIntl","t","default","columnLabel","onSelectionChangeCallback","checkbox","selectionKey","onSelectionChange","selectionCheckboxElement","selectedRowsKeys","reduce","acc","row","checked","selectableRowsStates","isSelected","setupTableModelData","setupData","n","action","updateTableModelColumnOrder","onSelectionAllChange","_selectAllCheckbox","_isSelectAllCheckboxSelected","onSelectionRowChange","setSelectAllState","didInsertSelectAllCheckbox","willDestroySelectAllCheckbox","didInsertRowCheckbox","willDestroyRowCheckbox","selectableRowsCount","selectedRowsCount","indeterminate","SCROLL_BUFFER","scrollLeft","showScrollIndicatorLeft","rightEdge","scrollTop","showScrollIndicatorTop","bottomEdge","_onPinFirstColumn","_isStickyColumn","isFirst","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","sources":["../../../../../src/components/hds/dropdown/list-item/checkbox.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { getElementId } from '../../../../utils/hds-get-element-id.ts';\nimport type { HdsIconSignature } from '../../icon';\nimport type { HdsFormCheckboxBaseSignature } from '../../form/checkbox/base.ts';\n\nexport interface HdsDropdownListItemCheckboxSignature {\n Args: HdsFormCheckboxBaseSignature['Args'] & {\n count?: string | number;\n icon?: HdsIconSignature['Args']['name'];\n };\n Blocks: {\n default: [];\n };\n Element: HdsFormCheckboxBaseSignature['Element'];\n}\n\nexport default class HdsDropdownListItemCheckbox extends Component<HdsDropdownListItemCheckboxSignature> {\n /**\n * Determines the unique ID to assign to the checkbox control\n */\n get id(): string {\n return getElementId(this);\n }\n}\n"],"names":["HdsDropdownListItemCheckbox","Component","id","getElementId","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;;AAkBe,MAAMA,2BAA2B,SAASC,SAAS,CAAuC;AACvG;AACF;AACA;EACE,IAAIC,EAAEA,GAAW;IACf,OAAOC,YAAY,CAAC,IAAI,CAAC;AAC3B,EAAA;AACF;AAACC,oBAAA,CAAAC,QAAA,EAPoBL,2BAA2B,CAAA;;;;"}
1
+ {"version":3,"file":"checkbox.js","sources":["../../../../../src/components/hds/dropdown/list-item/checkbox.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { getElementId } from '../../../../utils/hds-get-element-id.ts';\nimport type { HdsIconSignature } from '../../icon';\nimport type { HdsFormCheckboxBaseSignature } from '../../form/checkbox/base.ts';\n\nexport interface HdsDropdownListItemCheckboxSignature {\n Args: HdsFormCheckboxBaseSignature['Args'] & {\n count?: string | number;\n icon?: HdsIconSignature['Args']['name'];\n id?: string;\n };\n Blocks: {\n default: [];\n };\n Element: HdsFormCheckboxBaseSignature['Element'];\n}\n\nexport default class HdsDropdownListItemCheckbox extends Component<HdsDropdownListItemCheckboxSignature> {\n /**\n * Determines the unique ID to assign to the checkbox control\n */\n get id(): string {\n return getElementId(this);\n }\n}\n"],"names":["HdsDropdownListItemCheckbox","Component","id","getElementId","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;;AAmBe,MAAMA,2BAA2B,SAASC,SAAS,CAAuC;AACvG;AACF;AACA;EACE,IAAIC,EAAEA,GAAW;IACf,OAAOC,YAAY,CAAC,IAAI,CAAC;AAC3B,EAAA;AACF;AAACC,oBAAA,CAAAC,QAAA,EAPoBL,2BAA2B,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"radio.js","sources":["../../../../../src/components/hds/dropdown/list-item/radio.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { getElementId } from '../../../../utils/hds-get-element-id.ts';\nimport type { HdsIconSignature } from '../../icon';\nimport type { HdsFormRadioBaseSignature } from '../../form/radio/base.ts';\n\nexport interface HdsDropdownListItemRadioSignature {\n Args: HdsFormRadioBaseSignature['Args'] & {\n count?: string | number;\n icon?: HdsIconSignature['Args']['name'];\n };\n Blocks: {\n default: [];\n };\n Element: HdsFormRadioBaseSignature['Element'];\n}\n\nexport default class HdsDropdownListItemRadio extends Component<HdsDropdownListItemRadioSignature> {\n /**\n * Determines the unique ID to assign to the radio control\n */\n get id(): string {\n return getElementId(this);\n }\n}\n"],"names":["HdsDropdownListItemRadio","Component","id","getElementId","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;;AAkBe,MAAMA,wBAAwB,SAASC,SAAS,CAAoC;AACjG;AACF;AACA;EACE,IAAIC,EAAEA,GAAW;IACf,OAAOC,YAAY,CAAC,IAAI,CAAC;AAC3B,EAAA;AACF;AAACC,oBAAA,CAAAC,QAAA,EAPoBL,wBAAwB,CAAA;;;;"}
1
+ {"version":3,"file":"radio.js","sources":["../../../../../src/components/hds/dropdown/list-item/radio.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { getElementId } from '../../../../utils/hds-get-element-id.ts';\nimport type { HdsIconSignature } from '../../icon';\nimport type { HdsFormRadioBaseSignature } from '../../form/radio/base.ts';\n\nexport interface HdsDropdownListItemRadioSignature {\n Args: HdsFormRadioBaseSignature['Args'] & {\n count?: string | number;\n icon?: HdsIconSignature['Args']['name'];\n id?: string;\n };\n Blocks: {\n default: [];\n };\n Element: HdsFormRadioBaseSignature['Element'];\n}\n\nexport default class HdsDropdownListItemRadio extends Component<HdsDropdownListItemRadioSignature> {\n /**\n * Determines the unique ID to assign to the radio control\n */\n get id(): string {\n return getElementId(this);\n }\n}\n"],"names":["HdsDropdownListItemRadio","Component","id","getElementId","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;;AAmBe,MAAMA,wBAAwB,SAASC,SAAS,CAAoC;AACjG;AACF;AACA;EACE,IAAIC,EAAEA,GAAW;IACf,OAAOC,YAAY,CAAC,IAAI,CAAC;AAC3B,EAAA;AACF;AAACC,oBAAA,CAAAC,QAAA,EAPoBL,wBAAwB,CAAA;;;;"}
@@ -0,0 +1,120 @@
1
+ import Component from '@glimmer/component';
2
+ import { action } from '@ember/object';
3
+ import { tracked } from '@glimmer/tracking';
4
+ import { modifier } from 'ember-modifier';
5
+ import './filter-group/index.js';
6
+ import { precompileTemplate } from '@ember/template-compilation';
7
+ import { g, i, n } from 'decorator-transforms/runtime';
8
+ import { setComponentTemplate } from '@ember/component';
9
+
10
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<Hds::Dropdown\n @listPosition=\"bottom-left\"\n @height=\"600px\"\n @width=\"600px\"\n class={{this.classNames}}\n @onClose={{this._onClose}}\n {{this._syncFilters @filters}}\n as |D|\n>\n <D.ToggleButton\n @icon=\"filter\"\n @text={{hds-t \"hds.components.filter-bar.dropdown.toggle-button\" default=\"Filters\"}}\n @color=\"secondary\"\n @size=\"small\"\n />\n <D.Generic>\n <Hds::FilterBar::Tabs @ariaLabel=\"Filter bar tabs\" as |T|>\n {{yield\n (hash\n FilterGroup=(component\n \"hds/filter-bar/filter-group\" tab=T.Tab panel=T.Panel onChange=this.onFilter filters=this.internalFilters\n )\n close=D.close\n )\n }}\n </Hds::FilterBar::Tabs>\n </D.Generic>\n <D.Footer @hasDivider={{true}}>\n <Hds::ButtonSet>\n {{#unless this.isLiveFilter}}\n <Hds::Button\n @text={{hds-t \"hds.components.filter-bar.dropdown.apply\" default=\"Apply filters\"}}\n @size=\"small\"\n {{on \"click\" (fn this.onApply D.close)}}\n />\n {{/unless}}\n <Hds::Button\n @text={{hds-t \"hds.components.filter-bar.dropdown.clear\" default=\"Clear all filters\"}}\n @color=\"secondary\"\n @size=\"small\"\n {{on \"click\" (fn this.onClear D.close)}}\n />\n </Hds::ButtonSet>\n </D.Footer>\n</Hds::Dropdown>");
11
+
12
+ /**
13
+ * Copyright (c) HashiCorp, Inc.
14
+ * SPDX-License-Identifier: MPL-2.0
15
+ */
16
+
17
+ class HdsFilterBarDropdown extends Component {
18
+ static {
19
+ g(this.prototype, "internalFilters", [tracked], function () {
20
+ return {};
21
+ });
22
+ }
23
+ #internalFilters = (i(this, "internalFilters"), void 0);
24
+ constructor(owner, args) {
25
+ super(owner, args);
26
+ const {
27
+ filters
28
+ } = this.args;
29
+ if (filters) {
30
+ this.internalFilters = {
31
+ ...filters
32
+ };
33
+ }
34
+ }
35
+ _syncFilters = modifier((_element, [_filters]) => {
36
+ if (_filters) {
37
+ this.internalFilters = _filters;
38
+ }
39
+ });
40
+ get isLiveFilter() {
41
+ return this.args.isLiveFilter || false;
42
+ }
43
+ onFilter(key, keyFilter) {
44
+ this.internalFilters = this._updateFilter(key, keyFilter);
45
+ if (this.isLiveFilter) {
46
+ this._applyFilters();
47
+ }
48
+ }
49
+ static {
50
+ n(this.prototype, "onFilter", [action]);
51
+ }
52
+ onApply(closeDropdown) {
53
+ this._applyFilters(closeDropdown);
54
+ }
55
+ static {
56
+ n(this.prototype, "onApply", [action]);
57
+ }
58
+ onClear(closeDropdown) {
59
+ const {
60
+ onFilter
61
+ } = this.args;
62
+ this.internalFilters = {};
63
+ if (onFilter && typeof onFilter === 'function') {
64
+ onFilter(this.internalFilters);
65
+ }
66
+ if (closeDropdown && typeof closeDropdown === 'function') {
67
+ closeDropdown();
68
+ }
69
+ }
70
+ static {
71
+ n(this.prototype, "onClear", [action]);
72
+ }
73
+ get classNames() {
74
+ const classes = ['hds-filter-bar__dropdown'];
75
+ return classes.join(' ');
76
+ }
77
+ _updateFilter(key, keyFilter) {
78
+ const newFilters = {};
79
+ Object.keys(this.internalFilters).forEach(k => {
80
+ newFilters[k] = JSON.parse(JSON.stringify(this.internalFilters[k]));
81
+ });
82
+ if (keyFilter === undefined || Array.isArray(keyFilter) && keyFilter.length === 0) {
83
+ delete newFilters[key];
84
+ } else {
85
+ Object.assign(newFilters, {
86
+ [key]: keyFilter
87
+ });
88
+ }
89
+ return {
90
+ ...newFilters
91
+ };
92
+ }
93
+ _applyFilters = closeDropdown => {
94
+ const {
95
+ onFilter
96
+ } = this.args;
97
+ if (onFilter && typeof onFilter === 'function') {
98
+ onFilter(this.internalFilters);
99
+ }
100
+ if (closeDropdown && typeof closeDropdown === 'function') {
101
+ closeDropdown();
102
+ }
103
+ };
104
+ _onClose = () => {
105
+ const {
106
+ filters
107
+ } = this.args;
108
+ if (filters) {
109
+ this.internalFilters = {
110
+ ...filters
111
+ };
112
+ } else {
113
+ this.internalFilters = {};
114
+ }
115
+ };
116
+ }
117
+ setComponentTemplate(TEMPLATE, HdsFilterBarDropdown);
118
+
119
+ export { HdsFilterBarDropdown as default };
120
+ //# sourceMappingURL=dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown.js","sources":["../../../../src/components/hds/filter-bar/dropdown.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 { tracked } from '@glimmer/tracking';\nimport { modifier } from 'ember-modifier';\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\n\nimport HdsFilterBarFilterGroup from './filter-group/index.ts';\nimport type { HdsFilterBarFilters, HdsFilterBarFilter } from './types.ts';\n\nimport type { HdsDropdownSignature } from '../dropdown/index.ts';\n\nexport interface HdsFilterBarDropdownSignature {\n Args: HdsDropdownSignature['Args'] & {\n filters: HdsFilterBarFilters;\n isLiveFilter: boolean;\n onFilter?: (filters: HdsFilterBarFilters) => void;\n };\n Blocks: {\n default: [\n {\n FilterGroup?: WithBoundArgs<\n typeof HdsFilterBarFilterGroup,\n 'tab' | 'panel' | 'filters' | 'onChange'\n >;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsFilterBarDropdown extends Component<\n HdsDropdownSignature & HdsFilterBarDropdownSignature\n> {\n @tracked internalFilters: HdsFilterBarFilters = {};\n\n constructor(owner: Owner, args: HdsFilterBarDropdownSignature['Args']) {\n super(owner, args);\n\n const { filters } = this.args;\n\n if (filters) {\n this.internalFilters = { ...filters };\n }\n }\n\n private _syncFilters = modifier(\n (_element, [_filters]: [HdsFilterBarFilters | undefined]) => {\n if (_filters) {\n this.internalFilters = _filters;\n }\n }\n );\n\n get isLiveFilter(): boolean {\n return this.args.isLiveFilter || false;\n }\n\n @action\n onFilter(key: string, keyFilter?: HdsFilterBarFilter): void {\n this.internalFilters = this._updateFilter(key, keyFilter);\n\n if (this.isLiveFilter) {\n this._applyFilters();\n }\n }\n\n @action\n onApply(closeDropdown?: () => void): void {\n this._applyFilters(closeDropdown);\n }\n\n @action\n onClear(closeDropdown?: () => void): void {\n const { onFilter } = this.args;\n this.internalFilters = {};\n\n if (onFilter && typeof onFilter === 'function') {\n onFilter(this.internalFilters);\n }\n\n if (closeDropdown && typeof closeDropdown === 'function') {\n closeDropdown();\n }\n }\n\n get classNames(): string {\n const classes = ['hds-filter-bar__dropdown'];\n\n return classes.join(' ');\n }\n\n private _updateFilter(\n key: string,\n keyFilter?: HdsFilterBarFilter\n ): HdsFilterBarFilters {\n const newFilters = {} as HdsFilterBarFilters;\n\n Object.keys(this.internalFilters).forEach((k) => {\n newFilters[k] = JSON.parse(\n JSON.stringify(this.internalFilters[k])\n ) as HdsFilterBarFilter;\n });\n if (\n keyFilter === undefined ||\n (Array.isArray(keyFilter) && keyFilter.length === 0)\n ) {\n delete newFilters[key];\n } else {\n Object.assign(newFilters, { [key]: keyFilter });\n }\n\n return { ...newFilters };\n }\n\n private _applyFilters = (closeDropdown?: () => void): void => {\n const { onFilter } = this.args;\n if (onFilter && typeof onFilter === 'function') {\n onFilter(this.internalFilters);\n }\n\n if (closeDropdown && typeof closeDropdown === 'function') {\n closeDropdown();\n }\n };\n\n private _onClose = (): void => {\n const { filters } = this.args;\n if (filters) {\n this.internalFilters = { ...filters };\n } else {\n this.internalFilters = {};\n }\n };\n}\n"],"names":["HdsFilterBarDropdown","Component","g","prototype","tracked","i","void 0","constructor","owner","args","filters","internalFilters","_syncFilters","modifier","_element","_filters","isLiveFilter","onFilter","key","keyFilter","_updateFilter","_applyFilters","n","action","onApply","closeDropdown","onClear","classNames","classes","join","newFilters","Object","keys","forEach","k","JSON","parse","stringify","undefined","Array","isArray","length","assign","_onClose","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import Component from '@glimmer/component';
2
+ import { action } from '@ember/object';
3
+ import { precompileTemplate } from '@ember/template-compilation';
4
+ import { n } from 'decorator-transforms/runtime';
5
+ import { setComponentTemplate } from '@ember/component';
6
+
7
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<li class=\"hds-filter-bar__filter-group__selection-option\">\n <Hds::Form::Checkbox::Field checked={{this.isChecked}} @value={{@value}} {{on \"change\" this.onChange}} as |F|>\n <F.Label>{{yield}}</F.Label>\n </Hds::Form::Checkbox::Field>\n</li>");
8
+
9
+ /**
10
+ * Copyright (c) HashiCorp, Inc.
11
+ * SPDX-License-Identifier: MPL-2.0
12
+ */
13
+
14
+ class HdsFilterBarFilterGroupCheckbox extends Component {
15
+ onChange(event) {
16
+ const {
17
+ onChange
18
+ } = this.args;
19
+ if (onChange && typeof onChange === 'function') {
20
+ onChange(event);
21
+ }
22
+ }
23
+ static {
24
+ n(this.prototype, "onChange", [action]);
25
+ }
26
+ get isChecked() {
27
+ const {
28
+ keyFilter,
29
+ value
30
+ } = this.args;
31
+ if (keyFilter && Array.isArray(keyFilter.data)) {
32
+ return keyFilter.data.some(filter => filter.value === value);
33
+ }
34
+ return false;
35
+ }
36
+ }
37
+ setComponentTemplate(TEMPLATE, HdsFilterBarFilterGroupCheckbox);
38
+
39
+ export { HdsFilterBarFilterGroupCheckbox as default };
40
+ //# sourceMappingURL=checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.js","sources":["../../../../../src/components/hds/filter-bar/filter-group/checkbox.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';\n\nimport type { HdsFilterBarFilter } from '../types.ts';\n\nexport interface HdsFilterBarFilterGroupCheckboxSignature {\n Args: {\n value?: string;\n keyFilter: HdsFilterBarFilter | undefined;\n onChange?: (event: Event) => void;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsFilterBarFilterGroupCheckbox extends Component<HdsFilterBarFilterGroupCheckboxSignature> {\n @action\n onChange(event: Event): void {\n const { onChange } = this.args;\n if (onChange && typeof onChange === 'function') {\n onChange(event);\n }\n }\n\n get isChecked(): boolean {\n const { keyFilter, value } = this.args;\n if (keyFilter && Array.isArray(keyFilter.data)) {\n return keyFilter.data.some((filter) => filter.value === value);\n }\n return false;\n }\n}\n"],"names":["HdsFilterBarFilterGroupCheckbox","Component","onChange","event","args","n","prototype","action","isChecked","keyFilter","value","Array","isArray","data","some","filter","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;;AAmBe,MAAMA,+BAA+B,SAASC,SAAS,CAA2C;EAE/GC,QAAQA,CAACC,KAAY,EAAQ;IAC3B,MAAM;AAAED,MAAAA;KAAU,GAAG,IAAI,CAACE,IAAI;AAC9B,IAAA,IAAIF,QAAQ,IAAI,OAAOA,QAAQ,KAAK,UAAU,EAAE;MAC9CA,QAAQ,CAACC,KAAK,CAAC;AACjB,IAAA;AACF,EAAA;AAAC,EAAA;IAAAE,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,UAAA,EAAA,CANAC,MAAM,CAAA,CAAA;AAAA;EAQP,IAAIC,SAASA,GAAY;IACvB,MAAM;MAAEC,SAAS;AAAEC,MAAAA;KAAO,GAAG,IAAI,CAACN,IAAI;IACtC,IAAIK,SAAS,IAAIE,KAAK,CAACC,OAAO,CAACH,SAAS,CAACI,IAAI,CAAC,EAAE;AAC9C,MAAA,OAAOJ,SAAS,CAACI,IAAI,CAACC,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAACL,KAAK,KAAKA,KAAK,CAAC;AAChE,IAAA;AACA,IAAA,OAAO,KAAK;AACd,EAAA;AACF;AAACM,oBAAA,CAAAC,QAAA,EAhBoBjB,+BAA+B,CAAA;;;;"}