@hashicorp/design-system-components 4.23.1 → 4.24.0-rc-20250923215537

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/declarations/components/hds/advanced-table/index.d.ts +13 -3
  2. package/declarations/components/hds/advanced-table/models/column.d.ts +9 -2
  3. package/declarations/components/hds/advanced-table/models/row.d.ts +5 -1
  4. package/declarations/components/hds/advanced-table/models/table.d.ts +13 -2
  5. package/declarations/components/hds/advanced-table/td.d.ts +1 -1
  6. package/declarations/components/hds/advanced-table/th-context-menu.d.ts +16 -7
  7. package/declarations/components/hds/advanced-table/th-reorder-drop-target.d.ts +32 -0
  8. package/declarations/components/hds/advanced-table/th-reorder-handle.d.ts +24 -0
  9. package/declarations/components/hds/advanced-table/th-resize-handle.d.ts +2 -1
  10. package/declarations/components/hds/advanced-table/th-sort.d.ts +11 -3
  11. package/declarations/components/hds/advanced-table/th.d.ts +11 -4
  12. package/declarations/components/hds/advanced-table/tr.d.ts +7 -1
  13. package/declarations/components/hds/advanced-table/types.d.ts +15 -0
  14. package/declarations/components/hds/advanced-table/utils.d.ts +5 -0
  15. package/declarations/components/hds/dropdown/toggle/icon.d.ts +1 -1
  16. package/declarations/components/hds/flyout/index.d.ts +4 -1
  17. package/declarations/components/hds/form/index.d.ts +1 -1
  18. package/declarations/components/hds/form/key-value-inputs/index.d.ts +4 -4
  19. package/declarations/components/hds/form/radio-card/index.d.ts +2 -2
  20. package/declarations/components/hds/modal/index.d.ts +4 -2
  21. package/declarations/components/hds/popover-primitive/index.d.ts +3 -0
  22. package/declarations/components/hds/separator/index.d.ts +1 -1
  23. package/declarations/components/hds/stepper/list/step.d.ts +1 -1
  24. package/declarations/components/hds/stepper/task/indicator.d.ts +1 -1
  25. package/declarations/components/hds/table/index.d.ts +5 -5
  26. package/declarations/components/hds/table/td.d.ts +1 -1
  27. package/declarations/components/hds/table/th-sort.d.ts +1 -1
  28. package/declarations/components/hds/table/th.d.ts +1 -1
  29. package/declarations/template-registry.d.ts +6 -0
  30. package/dist/_app_/components/hds/advanced-table/th-reorder-drop-target.js +1 -0
  31. package/dist/_app_/components/hds/advanced-table/th-reorder-handle.js +1 -0
  32. package/dist/_app_/components/hds/advanced-table/utils.js +1 -0
  33. package/dist/components/hds/advanced-table/index.js +77 -17
  34. package/dist/components/hds/advanced-table/index.js.map +1 -1
  35. package/dist/components/hds/advanced-table/models/column.js +58 -13
  36. package/dist/components/hds/advanced-table/models/column.js.map +1 -1
  37. package/dist/components/hds/advanced-table/models/row.js +38 -3
  38. package/dist/components/hds/advanced-table/models/row.js.map +1 -1
  39. package/dist/components/hds/advanced-table/models/table.js +146 -2
  40. package/dist/components/hds/advanced-table/models/table.js.map +1 -1
  41. package/dist/components/hds/advanced-table/td.js.map +1 -1
  42. package/dist/components/hds/advanced-table/th-context-menu.js +124 -50
  43. package/dist/components/hds/advanced-table/th-context-menu.js.map +1 -1
  44. package/dist/components/hds/advanced-table/th-reorder-drop-target.js +133 -0
  45. package/dist/components/hds/advanced-table/th-reorder-drop-target.js.map +1 -0
  46. package/dist/components/hds/advanced-table/th-reorder-handle.js +104 -0
  47. package/dist/components/hds/advanced-table/th-reorder-handle.js.map +1 -0
  48. package/dist/components/hds/advanced-table/th-resize-handle.js +44 -21
  49. package/dist/components/hds/advanced-table/th-resize-handle.js.map +1 -1
  50. package/dist/components/hds/advanced-table/th-sort.js +20 -8
  51. package/dist/components/hds/advanced-table/th-sort.js.map +1 -1
  52. package/dist/components/hds/advanced-table/th.js +19 -7
  53. package/dist/components/hds/advanced-table/th.js.map +1 -1
  54. package/dist/components/hds/advanced-table/tr.js +1 -1
  55. package/dist/components/hds/advanced-table/tr.js.map +1 -1
  56. package/dist/components/hds/advanced-table/types.js +6 -1
  57. package/dist/components/hds/advanced-table/types.js.map +1 -1
  58. package/dist/components/hds/advanced-table/utils.js +23 -0
  59. package/dist/components/hds/advanced-table/utils.js.map +1 -0
  60. package/dist/components/hds/dropdown/toggle/icon.js.map +1 -1
  61. package/dist/components/hds/flyout/index.js +29 -6
  62. package/dist/components/hds/flyout/index.js.map +1 -1
  63. package/dist/components/hds/form/index.js.map +1 -1
  64. package/dist/components/hds/form/key-value-inputs/index.js.map +1 -1
  65. package/dist/components/hds/form/radio-card/index.js.map +1 -1
  66. package/dist/components/hds/modal/index.js +51 -37
  67. package/dist/components/hds/modal/index.js.map +1 -1
  68. package/dist/components/hds/popover-primitive/index.js +51 -35
  69. package/dist/components/hds/popover-primitive/index.js.map +1 -1
  70. package/dist/components/hds/separator/index.js.map +1 -1
  71. package/dist/components/hds/stepper/list/step.js.map +1 -1
  72. package/dist/components/hds/table/index.js.map +1 -1
  73. package/dist/components/hds/table/td.js.map +1 -1
  74. package/dist/components/hds/table/th-sort.js.map +1 -1
  75. package/dist/components/hds/table/th.js.map +1 -1
  76. package/dist/components.js +1 -1
  77. package/dist/styles/@hashicorp/design-system-components.css +196 -62
  78. package/dist/styles/components/advanced-table.scss +155 -6
  79. package/dist/styles/mixins/_focus-ring.scss +43 -0
  80. package/package.json +5 -2
  81. package/translations/hds/components/advanced-table/en-us.yaml +1 -0
  82. package/translations/hds/components/advanced-table/th-context-menu/en-us.yaml +3 -0
  83. package/translations/hds/components/advanced-table/th-reorder-handle/en-us.yaml +2 -0
@@ -1 +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 { WithBoundArgs } 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 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 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 top: hasStickyHeader ? `${theadElement.offsetHeight}px` : '0px',\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 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 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 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 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 { columns } = 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 < columns.length; i++) {\n style += ` ${columns[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.clientHeight;\n\n const hasFirstColumnPxWidth =\n this._tableModel.columns[0]?.pxWidth !== undefined;\n\n this.scrollIndicatorDimensions = getScrollIndicatorDimensions(\n element,\n this._theadElement,\n this.hasStickyHeader,\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 _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 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","DEFAULT_SCROLL_DIMENSIONS","bottom","height","left","right","top","width","getScrollIndicatorDimensions","scrollWrapper","theadElement","hasStickyHeader","hasStickyFirstColumn","hasFirstColumnPxWidth","isStickyColumnPinned","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","_scrollWrapperElement","constructor","owner","args","model","columns","childrenKey","hasResizableColumns","sortBy","sortOrder","onSort","HdsAdvancedTableTableModel","hasRowsWithChildren","sortableColumns","filter","column","isSortable","sortableColumnLabels","map","label","assert","toString","hasPinnedFirstColumn","identityKey","hasScrollIndicator","sortedMessageText","isSelectable","isStriped","density","join","includes","maxHeight","valign","gridTemplateColumns","style","appliedWidth","classNames","classes","push","theadClassNames","isStickyHeaderPinned","_registerGridElement","modifier","element","gridElement","_registerThElement","thElement","_setUpScrollWrapper","updateHorizontalScrollIndicators","showScrollIndicatorRight","scrollWidth","_updateScrollIndicators","addEventListener","updateMeasurements","_tableHeight","pxWidth","scrollIndicatorDimensions","stickyColumnOffset","ResizeObserver","entries","observe","scrollHeight","showScrollIndicatorBottom","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","SCROLL_BUFFER","scrollLeft","showScrollIndicatorLeft","rightEdge","scrollTop","showScrollIndicatorTop","bottomEdge","_onPinFirstColumn","_isStickyColumn","isFirst","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;;AAkCO,MAAMA,SAAsC,GAAGC,MAAM,CAACC,MAAM,CACjEC,6BACF;AACO,MAAMC,eAAe,GAAGD,6BAA6B,CAACE;AAEtD,MAAMC,WAAgD,GAAGL,MAAM,CAACC,MAAM,CAC3EK,uCACF;AACO,MAAMC,cAAc,GAAGD,uCAAuC,CAACE;AAEtE,MAAMC,yBAAyB,GAAG;AAChCC,EAAAA,MAAM,EAAE,KAAK;AACbC,EAAAA,MAAM,EAAE,KAAK;AACbC,EAAAA,IAAI,EAAE,KAAK;AACXC,EAAAA,KAAK,EAAE,KAAK;AACZC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,KAAK,EAAE;AACT,CAAC;AAED,MAAMC,4BAA4B,GAAGA,CACnCC,aAA6B,EAC7BC,YAA4B,EAC5BC,eAAwB,EACxBC,oBAA6B,EAC7BC,qBAA8B,EAC9BC,oBAA6B,KAC1B;EACH,MAAMC,yBAAyB,GAC7BN,aAAa,CAACO,YAAY,GAAGP,aAAa,CAACQ,YAAY;EACzD,MAAMC,sBAAsB,GAC1BT,aAAa,CAACU,WAAW,GAAGV,aAAa,CAACW,WAAW;EAEvD,IAAIC,UAAU,GAAG,CAAC;AAElB,EAAA,IAAIT,oBAAoB,EAAE;AACxB,IAAA,MAAMU,mBAAmB,GAAGZ,YAAY,CAACa,gBAAgB,CACvD,2CACF,CAAC;AAEDD,IAAAA,mBAAmB,EAAEE,OAAO,CAAEC,EAAE,IAAK;AACnC;AACA;MACA,MAAMC,eAAe,GAAGD,EAAiB;MACzCJ,UAAU,IAAIK,eAAe,CAACP,WAAW;AAC3C,IAAA,CAAC,CAAC;;AAEF;AACA,IAAA,IAAIG,mBAAmB,CAACK,MAAM,GAAG,CAAC,IAAId,qBAAqB,EAAE;AAC3DQ,MAAAA,UAAU,IAAI,CAAC;AACjB,IAAA;;AAEA;AACA,IAAA,IAAIP,oBAAoB,EAAE;AACxBO,MAAAA,UAAU,IAAI,CAAC;AACjB,IAAA;AACF,EAAA;EAEA,OAAO;IACLnB,MAAM,EAAE,CAAA,EAAGa,yBAAyB,CAAA,EAAA,CAAI;AACxCZ,IAAAA,MAAM,EAAE,CAAA,EAAGM,aAAa,CAACO,YAAY,GAAGD,yBAAyB,CAAA,EAAA,CAAI;IACrEX,IAAI,EAAE,CAAA,EAAGiB,UAAU,CAAA,EAAA,CAAI;IACvBhB,KAAK,EAAE,CAAA,EAAGa,sBAAsB,CAAA,EAAA,CAAI;IACpCZ,GAAG,EAAEK,eAAe,GAAG,CAAA,EAAGD,YAAY,CAACM,YAAY,CAAA,EAAA,CAAI,GAAG,KAAK;AAC/DT,IAAAA,KAAK,EAAE,CAAA,EAAGE,aAAa,CAACU,WAAW,GAAGD,sBAAsB,CAAA,EAAA;GAC7D;AACH,CAAC;AAED,MAAMU,yBAAyB,GAAGA,CAChClB,YAA4B,EAC5BmB,eAAwB,EACxBf,oBAA6B,KAC1B;AACH;AACA,EAAA,IAAI,CAACe,eAAe,EAAE,OAAO,KAAK;AAElC,EAAA,MAAMC,cAAc,GAAGpB,YAAY,CAACqB,aAAa,CAC/C,wCACF,CAAgB;AAEhB,EAAA,IAAIV,UAAU,GAAGS,cAAc,EAAEX,WAAW,IAAI,CAAC;;AAEjD;AACA,EAAA,IAAIL,oBAAoB,IAAIO,UAAU,GAAG,CAAC,EAAE;AAC1CA,IAAAA,UAAU,IAAI,CAAC;AACjB,EAAA;EAEA,OAAO,CAAA,EAAGA,UAAU,CAAA,EAAA,CAAI;AAC1B,CAAC;AAqEc,MAAMW,gBAAgB,SAASC,SAAS,CAA4B;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,oBAAA,EAAA,CAChFC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAENC,SAAS;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,mBAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,oBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAL,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,8BAAA,EAAA,CACVC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAkDC,SAAS;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,6BAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,8BAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAL,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,cAAA,EAAA,CAClEC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwB,CAAC;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,aAAA,IAAAE,CAAA,CAAA,IAAA,EAAA,cAAA,CAAA,EAAAC,MAAA;AACzBC,EAAAA,eAAe,GAAoC,EAAE;AACrDC,EAAAA,UAAU,GAAG,UAAU,GAAGC,OAAO,CAAC,IAAI,CAAC;EACvCC,WAAW;EACXC,cAAc;EACdC,eAAe;EACfC,aAAa;EACbC,qBAAqB;AAAkB,EAAA;IAAAb,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,2BAAA,EAAA,CAE9CC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6BnC,yBAAyB;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,0BAAA,IAAAqC,CAAA,CAAA,IAAA,EAAA,2BAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAL,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,sBAAA,EAAA,CAC7DC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwB,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,qBAAA,IAAAE,CAAA,CAAA,IAAA,EAAA,sBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAL,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,sBAAA,EAAA,CACpCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwB,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,qBAAA,IAAAE,CAAA,CAAA,IAAA,EAAA,sBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAL,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,sBAAA,EAAA,CACpCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6CC,SAAS;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,qBAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,sBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAL,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,yBAAA,EAAA,CAC7DC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA2B,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,wBAAA,IAAAE,CAAA,CAAA,IAAA,EAAA,yBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAL,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,0BAAA,EAAA,CACvCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA4B,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,yBAAA,IAAAE,CAAA,CAAA,IAAA,EAAA,0BAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAL,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,wBAAA,EAAA,CACxCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA0B,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,uBAAA,IAAAE,CAAA,CAAA,IAAA,EAAA,wBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAL,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,2BAAA,EAAA,CACtCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6B,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,0BAAA,IAAAE,CAAA,CAAA,IAAA,EAAA,2BAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAL,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,oBAAA,EAAA,CACzCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAsB,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,mBAAA,IAAAE,CAAA,CAAA,IAAA,EAAA,oBAAA,CAAA,EAAAC,MAAA;AAEnCS,EAAAA,WAAWA,CAACC,KAAY,EAAEC,IAAuC,EAAE;AACjE,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC;IAElB,MAAM;MACJC,KAAK;MACLC,OAAO;MACPC,WAAW;MACXC,mBAAmB;MACnBC,MAAM;MACNC,SAAS;MACT5C,oBAAoB;AACpB6C,MAAAA;AACF,KAAC,GAAGP,IAAI;AAER,IAAA,IAAI,CAACP,WAAW,GAAG,IAAIe,0BAA0B,CAAC;MAChDP,KAAK;MACLC,OAAO;MACPC,WAAW;MACXC,mBAAmB;MACnBC,MAAM;MACNC,SAAS;AACTC,MAAAA;AACF,KAAC,CAAC;AAEF,IAAA,IAAI,IAAI,CAACd,WAAW,CAACgB,mBAAmB,EAAE;MACxC,MAAMC,eAAe,GAAGR,OAAO,CAACS,MAAM,CAAEC,MAAM,IAAKA,MAAM,CAACC,UAAU,CAAC;MACrE,MAAMC,oBAAoB,GAAGJ,eAAe,CAACK,GAAG,CAC7CH,MAAM,IAAKA,MAAM,CAACI,KACrB,CAAC;AAEDC,MAAAA,MAAM,CACJ,CAAA,4EAAA,EAA+EH,oBAAoB,CAACI,QAAQ,EAAE,CAAA,CAAE,EAChHR,eAAe,CAACjC,MAAM,KAAK,CAC7B,CAAC;AAEDwC,MAAAA,MAAM,CACJ,6DAA6D,EAC7D,CAACvD,oBACH,CAAC;AAEDuD,MAAAA,MAAM,CACJ,CAAA,uDAAA,CAAyD,EACzD,CAACb,mBACH,CAAC;AACH,IAAA;AAEA,IAAA,IAAI1C,oBAAoB,EAAE;MACxB,IAAI,CAACyD,oBAAoB,GAAG,IAAI;AAClC,IAAA;AACF,EAAA;EAEA,IAAIC,WAAWA,GAAuB;AACpC;AACA,IAAA,IAAI,IAAI,CAACpB,IAAI,CAACoB,WAAW,KAAK,MAAM,EAAE;AACpC,MAAA,OAAOjC,SAAS;AAClB,IAAA,CAAC,MAAM;AACL,MAAA,OAAO,IAAI,CAACa,IAAI,CAACoB,WAAW,IAAI,WAAW;AAC7C,IAAA;AACF,EAAA;EAEA,IAAIjB,WAAWA,GAAW;IACxB,MAAM;AAAEA,MAAAA,WAAW,GAAG;KAAY,GAAG,IAAI,CAACH,IAAI;AAE9C,IAAA,OAAOG,WAAW;AACpB,EAAA;EAEA,IAAIzC,oBAAoBA,GAAwB;AAC9C;AACA,IAAA,IAAI,IAAI,CAACyD,oBAAoB,KAAKhC,SAAS,EAAE;MAC3C,OAAO,IAAI,CAACgC,oBAAoB;IAClC,CAAC,MAAM,IAAI,IAAI,CAACnB,IAAI,CAACtC,oBAAoB,KAAK,KAAK,EAAE;AACnD,MAAA,OAAO,IAAI,CAACsC,IAAI,CAACtC,oBAAoB;AACvC,IAAA;AAEA,IAAA,OAAOyB,SAAS;AAClB,EAAA;EAEA,IAAIkC,kBAAkBA,GAAY;IAChC,IAAI,IAAI,CAAC3D,oBAAoB,EAAE;AAC7B,MAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,OAAO,KAAK;AACd,EAAA;EAEA,IAAI4D,iBAAiBA,GAAW;IAC9B,MAAM;AAAEA,MAAAA;KAAmB,GAAG,IAAI,CAACtB,IAAI;IACvC,MAAM;MAAEK,MAAM;AAAEC,MAAAA;KAAW,GAAG,IAAI,CAACb,WAAW;IAE9C,IAAI6B,iBAAiB,KAAKnC,SAAS,EAAE;AACnC,MAAA,OAAOmC,iBAAiB;IAC1B,CAAC,MAAM,IAAIjB,MAAM,KAAKlB,SAAS,IAAImB,SAAS,KAAKnB,SAAS,EAAE;AAC1D;AACA,MAAA,OAAO,CAAA,UAAA,EAAakB,MAAM,CAAA,CAAA,EAAIC,SAAS,CAAA,MAAA,CAAQ;AACjD,IAAA,CAAC,MAAM;AACL,MAAA,OAAO,EAAE;AACX,IAAA;AACF,EAAA;EAEA,IAAIiB,YAAYA,GAAY;IAC1B,MAAM;AAAEA,MAAAA,YAAY,GAAG;KAAO,GAAG,IAAI,CAACvB,IAAI;AAE1C,IAAA,IAAI,IAAI,CAACP,WAAW,CAACgB,mBAAmB,EAAE;AACxCQ,MAAAA,MAAM,CACJ,0DAA0D,EAC1D,CAACM,YACH,CAAC;AACD,MAAA,OAAOA,YAAY;AACrB,IAAA;AAEA,IAAA,OAAOA,YAAY;AACrB,EAAA;EAEA,IAAIC,SAASA,GAAY;IACvB,MAAM;AAAEA,MAAAA,SAAS,GAAG;KAAO,GAAG,IAAI,CAACxB,IAAI;AAEvC,IAAA,IAAI,IAAI,CAACP,WAAW,CAACgB,mBAAmB,EAAE;AACxCQ,MAAAA,MAAM,CACJ,uDAAuD,EACvD,CAACO,SACH,CAAC;AACD,MAAA,OAAOA,SAAS;AAClB,IAAA;AAEA,IAAA,OAAOA,SAAS;AAClB,EAAA;EAEA,IAAIC,OAAOA,GAA8B;IACvC,MAAM;AAAEA,MAAAA,OAAO,GAAGhF;KAAiB,GAAG,IAAI,CAACuD,IAAI;AAE/CiB,IAAAA,MAAM,CACJ,CAAA,wDAAA,EAA2D5E,SAAS,CAACqF,IAAI,CACvE,IACF,CAAC,CAAA,YAAA,EAAeD,OAAO,CAAA,CAAE,EACzBpF,SAAS,CAACsF,QAAQ,CAACF,OAAO,CAC5B,CAAC;AAED,IAAA,OAAOA,OAAO;AAChB,EAAA;EAEA,IAAIhE,eAAeA,GAAY;AAC7B,IAAA,IAAI,IAAI,CAACuC,IAAI,CAAC4B,SAAS,IAAI,IAAI,CAAC5B,IAAI,CAACvC,eAAe,KAAK,KAAK,EAAE;AAC9D,MAAA,OAAO,IAAI;AACb,IAAA,CAAC,MAAM,IAAI,IAAI,CAACuC,IAAI,CAACvC,eAAe,IAAI,CAAC,IAAI,CAACuC,IAAI,CAAC4B,SAAS,EAAE;AAC5DX,MAAAA,MAAM,CAAC,8CAA8C,EAAE,KAAK,CAAC;AAC/D,IAAA;AAEA,IAAA,OAAO,KAAK;AACd,EAAA;EAEA,IAAIY,MAAMA,GAAsC;IAC9C,MAAM;AAAEA,MAAAA,MAAM,GAAGhF;KAAgB,GAAG,IAAI,CAACmD,IAAI;AAE7CiB,IAAAA,MAAM,CACJ,CAAA,uDAAA,EAA0DtE,WAAW,CAAC+E,IAAI,CACxE,IACF,CAAC,CAAA,YAAA,EAAeG,MAAM,CAAA,CAAE,EACxBlF,WAAW,CAACgF,QAAQ,CAACE,MAAM,CAC7B,CAAC;AAED,IAAA,OAAOA,MAAM;AACf,EAAA;;AAEA;EACA,IAAIC,mBAAmBA,GAAW;IAChC,MAAM;AAAEP,MAAAA;KAAc,GAAG,IAAI,CAACvB,IAAI;IAClC,MAAM;AAAEE,MAAAA;KAAS,GAAG,IAAI,CAACT,WAAW;;AAEpC;AACA,IAAA,IAAIsC,KAAK,GAAGR,YAAY,GAAG,cAAc,GAAG,EAAE;AAE9C,IAAA,KAAK,IAAInC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGc,OAAO,CAACzB,MAAM,EAAEW,CAAC,EAAE,EAAE;MACvC2C,KAAK,IAAI,IAAI7B,OAAO,CAACd,CAAC,CAAC,CAAE4C,YAAY,CAAA,CAAE;AACzC,IAAA;AAEA,IAAA,OAAOD,KAAK;AACd,EAAA;EAEA,IAAIE,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,oBAAoB,CAAC;IAEtC,IAAI,IAAI,CAACV,SAAS,EAAE;AAClBU,MAAAA,OAAO,CAACC,IAAI,CAAC,6BAA6B,CAAC;AAC7C,IAAA;IAEA,IAAI,IAAI,CAACV,OAAO,EAAE;MAChBS,OAAO,CAACC,IAAI,CAAC,CAAA,4BAAA,EAA+B,IAAI,CAACV,OAAO,EAAE,CAAC;AAC7D,IAAA;IAEA,IAAI,IAAI,CAACI,MAAM,EAAE;MACfK,OAAO,CAACC,IAAI,CAAC,CAAA,2BAAA,EAA8B,IAAI,CAACN,MAAM,EAAE,CAAC;AAC3D,IAAA;AAEA,IAAA,IAAI,IAAI,CAACpC,WAAW,CAACgB,mBAAmB,EAAE;AACxCyB,MAAAA,OAAO,CAACC,IAAI,CAAC,CAAA,0BAAA,CAA4B,CAAC;AAC5C,IAAA;AAEA,IAAA,OAAOD,OAAO,CAACR,IAAI,CAAC,GAAG,CAAC;AAC1B,EAAA;EAEA,IAAIU,eAAeA,GAAW;AAC5B,IAAA,MAAMF,OAAO,GAAG,CAAC,2BAA2B,CAAC;IAE7C,IAAI,IAAI,CAACzE,eAAe,EAAE;AACxByE,MAAAA,OAAO,CAACC,IAAI,CAAC,mCAAmC,CAAC;AACnD,IAAA;IAEA,IAAI,IAAI,CAACE,oBAAoB,EAAE;AAC7BH,MAAAA,OAAO,CAACC,IAAI,CAAC,sCAAsC,CAAC;AACtD,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC1C,WAAW,CAACW,mBAAmB,EAAE;AACxC8B,MAAAA,OAAO,CAACC,IAAI,CAAC,kDAAkD,CAAC;AAClE,IAAA;AAEA,IAAA,OAAOD,OAAO,CAACR,IAAI,CAAC,GAAG,CAAC;AAC1B,EAAA;AAEQY,EAAAA,oBAAoB,GAAGC,QAAQ,CAAEC,OAAuB,IAAK;AACnE,IAAA,IAAI,CAAC/C,WAAW,CAACgD,WAAW,GAAGD,OAAO;AACxC,EAAA,CAAC,CAAC;EAEME,kBAAkB,GAAGH,QAAQ,CACnC,CAACC,OAAuB,EAAE,CAAC5B,MAAM,CAA+B,KAAK;IACnE,IAAIA,MAAM,KAAKzB,SAAS,EAAE;AACxB,MAAA;AACF,IAAA;IAEAyB,MAAM,CAAC+B,SAAS,GAAGH,OAAO;AAC5B,EAAA,CACF,CAAC;AAEOI,EAAAA,mBAAmB,GAAGL,QAAQ,CAAEC,OAAuB,IAAK;IAClE,IAAI,CAAC3C,qBAAqB,GAAG2C,OAAO;IAEpC,MAAMK,gCAAgC,GAAGA,MAAM;MAC7C,IAAI,CAACC,wBAAwB,GAAGN,OAAO,CAACtE,WAAW,GAAGsE,OAAO,CAACO,WAAW;IAC3E,CAAC;IAED,IAAI,CAACrD,cAAc,GAAG,MAAM;AAC1B,MAAA,IAAI,CAACsD,uBAAuB,CAACR,OAAO,CAAC;IACvC,CAAC;IAEDA,OAAO,CAACS,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAACvD,cAAc,CAAC;IAEvD,MAAMwD,kBAAkB,GAAGA,MAAM;AAC/B,MAAA,IAAI,CAACC,YAAY,GAAGX,OAAO,CAACzE,YAAY;AAExC,MAAA,MAAMJ,qBAAqB,GACzB,IAAI,CAAC8B,WAAW,CAACS,OAAO,CAAC,CAAC,CAAC,EAAEkD,OAAO,KAAKjE,SAAS;AAEpD,MAAA,IAAI,CAACkE,yBAAyB,GAAG/F,4BAA4B,CAC3DkF,OAAO,EACP,IAAI,CAAC5C,aAAa,EAClB,IAAI,CAACnC,eAAe,EACpB,IAAI,CAACC,oBAAoB,GAAG,IAAI,GAAG,KAAK,EACxCC,qBAAqB,EACrB,IAAI,CAACC,oBACP,CAAC;MAED,IAAI,IAAI,CAACF,oBAAoB,EAAE;AAC7B,QAAA,IAAI,CAAC4F,kBAAkB,GAAG5E,yBAAyB,CACjD,IAAI,CAACkB,aAAa,EAClB2B,YAAY,EACZ,IAAI,CAAC3D,oBACP,CAAC;AACH,MAAA;IACF,CAAC;IAED,MAAM;AAAE2D,MAAAA,YAAY,GAAG;KAAO,GAAG,IAAI,CAACvB,IAAI;AAE1C,IAAA,IAAI,CAACL,eAAe,GAAG,IAAI4D,cAAc,CAAEC,OAAO,IAAK;MACrDA,OAAO,CAAClF,OAAO,CAAC,MAAM;AACpB4E,QAAAA,kBAAkB,EAAE;AACpBL,QAAAA,gCAAgC,EAAE;AACpC,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,IAAI,CAAClD,eAAe,CAAC8D,OAAO,CAACjB,OAAO,CAAC;AAErCU,IAAAA,kBAAkB,EAAE;;AAEpB;AACAL,IAAAA,gCAAgC,EAAE;;AAElC;AACA,IAAA,IAAIL,OAAO,CAACzE,YAAY,GAAGyE,OAAO,CAACkB,YAAY,EAAE;MAC/C,IAAI,CAACC,yBAAyB,GAAG,IAAI;AACvC,IAAA;AAEA,IAAA,OAAO,MAAM;MACXnB,OAAO,CAACoB,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAClE,cAAc,CAAC;AAC1D,MAAA,IAAI,CAACC,eAAe,CAACkE,UAAU,EAAE;IACnC,CAAC;AACH,EAAA,CAAC,CAAC;AAEMC,EAAAA,WAAW,GAAGvB,QAAQ,CAAEC,OAAuB,IAAK;IAC1D,IAAI,CAAC5C,aAAa,GAAG4C,OAAO;AAC9B,EAAA,CAAC,CAAC;AAEFuB,EAAAA,yBAAyBA,CACvBC,QAAkD,EAClDC,YAAqB,EACf;IACN,MAAM;AAAEC,MAAAA;KAAmB,GAAG,IAAI,CAAClE,IAAI;AAEvC,IAAA,IAAI,OAAOkE,iBAAiB,KAAK,UAAU,EAAE;AAE7CA,IAAAA,iBAAiB,CAAC;AAChBD,MAAAA,YAAY,EAAEA,YAAY;AAC1BE,MAAAA,wBAAwB,EAAEH,QAAQ;MAClCI,gBAAgB,EAAE,IAAI,CAAC9E,eAAe,CAAC+E,MAAM,CAAW,CAACC,GAAG,EAAEC,GAAG,KAAK;AACpE,QAAA,IAAIA,GAAG,CAACP,QAAQ,CAACQ,OAAO,EAAE;AACxBF,UAAAA,GAAG,CAACnC,IAAI,CAACoC,GAAG,CAACN,YAAY,CAAC;AAC5B,QAAA;AACA,QAAA,OAAOK,GAAG;MACZ,CAAC,EAAE,EAAE,CAAC;MACNG,oBAAoB,EAAE,IAAI,CAACnF,eAAe,CAAC+E,MAAM,CAC/C,CACEC,GAAgE,EAChEC,GAAG,KACA;QACHD,GAAG,CAACnC,IAAI,CAAC;UACP8B,YAAY,EAAEM,GAAG,CAACN,YAAY;AAC9BS,UAAAA,UAAU,EAAEH,GAAG,CAACP,QAAQ,CAACQ;AAC3B,SAAC,CAAC;AACF,QAAA,OAAOF,GAAG;AACZ,MAAA,CAAC,EACD,EACF;AACF,KAAC,CAAC;AACJ,EAAA;AAGAK,EAAAA,mBAAmBA,GAAS;IAC1B,MAAM;MAAEzE,OAAO;MAAED,KAAK;MAAEI,MAAM;AAAEC,MAAAA;KAAW,GAAG,IAAI,CAACN,IAAI;AAEvD,IAAA,IAAI,CAACP,WAAW,CAACmF,SAAS,CAAC;MAAE1E,OAAO;MAAED,KAAK;MAAEI,MAAM;AAAEC,MAAAA;AAAU,KAAC,CAAC;AACnE,EAAA;AAAC,EAAA;IAAAuE,CAAA,CAAA,IAAA,CAAA5F,SAAA,EAAA,qBAAA,EAAA,CALA6F,MAAM,CAAA,CAAA;AAAA;AAQPC,EAAAA,oBAAoBA,GAAS;AAC3B,IAAA,IAAI,CAACzF,eAAe,CAAChB,OAAO,CAAEiG,GAAG,IAAK;MACpCA,GAAG,CAACP,QAAQ,CAACQ,OAAO,GAAG,IAAI,CAACQ,kBAAkB,EAAER,OAAO,IAAI,KAAK;AAClE,IAAA,CAAC,CAAC;IACF,IAAI,CAACS,4BAA4B,GAC/B,IAAI,CAACD,kBAAkB,EAAER,OAAO,IAAI,KAAK;IAC3C,IAAI,CAACT,yBAAyB,CAAC,IAAI,CAACiB,kBAAkB,EAAE,KAAK,CAAC;AAChE,EAAA;AAAC,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAA5F,SAAA,EAAA,sBAAA,EAAA,CARA6F,MAAM,CAAA,CAAA;AAAA;AAWPI,EAAAA,oBAAoBA,CAClBlB,QAAkD,EAClDC,YAAqB,EACf;IACN,IAAI,CAACkB,iBAAiB,EAAE;AACxB,IAAA,IAAI,CAACpB,yBAAyB,CAACC,QAAQ,EAAEC,YAAY,CAAC;AACxD,EAAA;AAAC,EAAA;IAAAY,CAAA,CAAA,IAAA,CAAA5F,SAAA,EAAA,sBAAA,EAAA,CAPA6F,MAAM,CAAA,CAAA;AAAA;EAUPM,0BAA0BA,CACxBpB,QAAiD,EAC3C;IACN,IAAI,CAACgB,kBAAkB,GAAGhB,QAAQ;AACpC,EAAA;AAAC,EAAA;IAAAa,CAAA,CAAA,IAAA,CAAA5F,SAAA,EAAA,4BAAA,EAAA,CALA6F,MAAM,CAAA,CAAA;AAAA;AAQPO,EAAAA,4BAA4BA,GAAS;IACnC,IAAI,CAACL,kBAAkB,GAAG7F,SAAS;AACrC,EAAA;AAAC,EAAA;IAAA0F,CAAA,CAAA,IAAA,CAAA5F,SAAA,EAAA,8BAAA,EAAA,CAHA6F,MAAM,CAAA,CAAA;AAAA;AAMPQ,EAAAA,oBAAoBA,CAClBtB,QAAiD,EACjDC,YAAqB,EACf;AACN,IAAA,IAAIA,YAAY,EAAE;AAChB,MAAA,IAAI,CAAC3E,eAAe,CAAC6C,IAAI,CAAC;QAAE8B,YAAY;AAAED,QAAAA;AAAS,OAAC,CAAC;AACvD,IAAA;IACA,IAAI,CAACmB,iBAAiB,EAAE;AAC1B,EAAA;AAAC,EAAA;IAAAN,CAAA,CAAA,IAAA,CAAA5F,SAAA,EAAA,sBAAA,EAAA,CATA6F,MAAM,CAAA,CAAA;AAAA;EAYPS,sBAAsBA,CAACtB,YAAqB,EAAQ;AAClD,IAAA,IAAI,CAAC3E,eAAe,GAAG,IAAI,CAACA,eAAe,CAACqB,MAAM,CAC/C4D,GAAG,IAAKA,GAAG,CAACN,YAAY,KAAKA,YAChC,CAAC;IACD,IAAI,CAACkB,iBAAiB,EAAE;AAC1B,EAAA;AAAC,EAAA;IAAAN,CAAA,CAAA,IAAA,CAAA5F,SAAA,EAAA,wBAAA,EAAA,CANA6F,MAAM,CAAA,CAAA;AAAA;AASPK,EAAAA,iBAAiBA,GAAS;IACxB,IAAI,IAAI,CAACH,kBAAkB,EAAE;AAC3B,MAAA,MAAMQ,mBAAmB,GAAG,IAAI,CAAClG,eAAe,CAACb,MAAM;AACvD,MAAA,MAAMgH,iBAAiB,GAAG,IAAI,CAACnG,eAAe,CAACqB,MAAM,CAClD4D,GAAG,IAAKA,GAAG,CAACP,QAAQ,CAACQ,OACxB,CAAC,CAAC/F,MAAM;AAER,MAAA,IAAI,CAACuG,kBAAkB,CAACR,OAAO,GAC7BiB,iBAAiB,KAAKD,mBAAmB;MAC3C,IAAI,CAACR,kBAAkB,CAACU,aAAa,GACnCD,iBAAiB,GAAG,CAAC,IAAIA,iBAAiB,GAAGD,mBAAmB;AAClE,MAAA,IAAI,CAACP,4BAA4B,GAAG,IAAI,CAACD,kBAAkB,CAACR,OAAO;AACrE,IAAA;AACF,EAAA;AAAC,EAAA;IAAAK,CAAA,CAAA,IAAA,CAAA5F,SAAA,EAAA,mBAAA,EAAA,CAdA6F,MAAM,CAAA,CAAA;AAAA;EAgBC9B,uBAAuBA,CAACR,OAAoB,EAAQ;AAC1D;IACA,MAAMmD,aAAa,GAAG,CAAC;;AAEvB;AACA,IAAA,IAAInD,OAAO,CAACoD,UAAU,GAAGD,aAAa,EAAE;MACtC,IAAI,IAAI,CAACjI,oBAAoB,EAAE;QAC7B,IAAI,CAACE,oBAAoB,GAAG,IAAI;AAClC,MAAA;AACA,MAAA,IAAI,CAAC,IAAI,CAACiI,uBAAuB,EAAE;QACjC,IAAI,CAACA,uBAAuB,GAAG,IAAI;AACrC,MAAA;IACF,CAAC,MAAM,IAAIrD,OAAO,CAACoD,UAAU,KAAK,CAAC,IAAI,IAAI,CAACC,uBAAuB,EAAE;MACnE,IAAI,CAACjI,oBAAoB,GAAG,KAAK;MACjC,IAAI,CAACiI,uBAAuB,GAAG,KAAK;AACtC,IAAA;;AAEA;IACA,MAAMC,SAAS,GAAGtD,OAAO,CAACO,WAAW,GAAGP,OAAO,CAACtE,WAAW,GAAGyH,aAAa;;AAE3E;AACA,IAAA,IAAInD,OAAO,CAACoD,UAAU,GAAGE,SAAS,EAAE;MAClC,IAAI,CAAChD,wBAAwB,GAAG,IAAI;AACtC,IAAA,CAAC,MAAM;MACL,IAAI,CAACA,wBAAwB,GAAG,KAAK;AACvC,IAAA;;AAEA;AACA,IAAA,IAAIN,OAAO,CAACuD,SAAS,GAAG,CAAC,EAAE;MACzB,IAAI,IAAI,CAACtI,eAAe,EAAE;QACxB,IAAI,CAAC4E,oBAAoB,GAAG,IAAI;AAClC,MAAA;MACA,IAAI,CAAC2D,sBAAsB,GAAG,IAAI;AACpC,IAAA,CAAC,MAAM;MACL,IAAI,IAAI,CAACvI,eAAe,EAAE;QACxB,IAAI,CAAC4E,oBAAoB,GAAG,KAAK;AACnC,MAAA;MACA,IAAI,CAAC2D,sBAAsB,GAAG,KAAK;AACrC,IAAA;;AAEA;IACA,MAAMC,UAAU,GACdzD,OAAO,CAACkB,YAAY,GAAGlB,OAAO,CAACzE,YAAY,GAAG4H,aAAa;;AAE7D;AACA,IAAA,IAAInD,OAAO,CAACuD,SAAS,GAAGE,UAAU,EAAE;MAClC,IAAI,CAACtC,yBAAyB,GAAG,IAAI;AACvC,IAAA,CAAC,MAAM;MACL,IAAI,CAACA,yBAAyB,GAAG,KAAK;AACxC,IAAA;AACF,EAAA;EAEQuC,iBAAiB,GAAGA,MAAY;IACtC,IAAI,CAAC/E,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,GAAG,KAAK,GAAG,IAAI;AACpE;AACA,IAAA,IAAI,CAAC6B,uBAAuB,CAAC,IAAI,CAACnD,qBAAqB,CAAC;EAC1D,CAAC;EAEOsG,eAAe,GACrBvF,MAAkC,IACV;IACxB,IAAIA,MAAM,CAACwF,OAAO,IAAI,IAAI,CAAC1I,oBAAoB,KAAKyB,SAAS,EAAE;MAC7D,OAAO,IAAI,CAACzB,oBAAoB;AAClC,IAAA;AACA,IAAA,OAAOyB,SAAS;EAClB,CAAC;AACH;AAACkH,oBAAA,CAAAC,QAAA,EAhfoBxH,gBAAgB,CAAA;;;;"}
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 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 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","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","hasReorderableColumns","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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"}
@@ -33,6 +33,12 @@ class HdsAdvancedTableColumn {
33
33
  });
34
34
  }
35
35
  #align = (i(this, "align"), void 0);
36
+ static {
37
+ g(this.prototype, "isBeingDragged", [tracked], function () {
38
+ return false;
39
+ });
40
+ }
41
+ #isBeingDragged = (i(this, "isBeingDragged"), void 0);
36
42
  static {
37
43
  g(this.prototype, "isExpandable", [tracked], function () {
38
44
  return false;
@@ -61,12 +67,30 @@ class HdsAdvancedTableColumn {
61
67
  });
62
68
  }
63
69
  #tooltip = (i(this, "tooltip"), void 0);
70
+ static {
71
+ g(this.prototype, "sortingFunction", [tracked], function () {
72
+ return undefined;
73
+ });
74
+ }
75
+ #sortingFunction = (i(this, "sortingFunction"), void 0);
64
76
  static {
65
77
  g(this.prototype, "thElement", [tracked], function () {
66
78
  return undefined;
67
79
  });
68
80
  }
69
- #thElement = (i(this, "thElement"), void 0);
81
+ #thElement = (i(this, "thElement"), void 0); // elements
82
+ static {
83
+ g(this.prototype, "reorderHandleElement", [tracked], function () {
84
+ return undefined;
85
+ });
86
+ }
87
+ #reorderHandleElement = (i(this, "reorderHandleElement"), void 0);
88
+ static {
89
+ g(this.prototype, "thContextMenuToggleElement", [tracked], function () {
90
+ return undefined;
91
+ });
92
+ }
93
+ #thContextMenuToggleElement = (i(this, "thContextMenuToggleElement"), void 0);
70
94
  static {
71
95
  g(this.prototype, "transientWidth", [tracked], function () {
72
96
  return undefined;
@@ -103,13 +127,15 @@ class HdsAdvancedTableColumn {
103
127
  });
104
128
  }
105
129
  #widthDebts = (i(this, "widthDebts"), void 0); // used to restore the width when resetting
106
- static {
107
- g(this.prototype, "sortingFunction", [tracked], function () {
108
- return undefined;
130
+ // used to track width changes imposed by other columns
131
+
132
+ table;
133
+ get cells() {
134
+ return this.table.flattenedVisibleRows.map(row => {
135
+ const cell = row.cells.find(cell => cell.columnKey === this.key);
136
+ return cell;
109
137
  });
110
138
  }
111
- #sortingFunction = (i(this, "sortingFunction"), void 0); // used to track width changes imposed by other columns
112
- table;
113
139
  get appliedWidth() {
114
140
  return this.transientWidth ?? this.width;
115
141
  }
@@ -148,12 +174,12 @@ class HdsAdvancedTableColumn {
148
174
  }
149
175
  get index() {
150
176
  const {
151
- columns
177
+ orderedColumns
152
178
  } = this.table;
153
- if (columns.length === 0) {
179
+ if (orderedColumns.length === 0) {
154
180
  return -1;
155
181
  }
156
- return columns.findIndex(column => column.key === this.key);
182
+ return orderedColumns.findIndex(column => column.key === this.key);
157
183
  }
158
184
  get isFirst() {
159
185
  return this.index === 0;
@@ -167,14 +193,14 @@ class HdsAdvancedTableColumn {
167
193
  table
168
194
  } = this;
169
195
  const {
170
- columns
196
+ orderedColumns
171
197
  } = table;
172
198
  if (index === -1) {
173
199
  return {};
174
200
  }
175
201
  return {
176
- previous: this.isFirst ? undefined : columns[index - 1],
177
- next: this.isLast ? undefined : columns[index + 1]
202
+ previous: this.isFirst ? undefined : orderedColumns[index - 1],
203
+ next: this.isLast ? undefined : orderedColumns[index + 1]
178
204
  };
179
205
  }
180
206
  constructor(args) {
@@ -287,8 +313,27 @@ class HdsAdvancedTableColumn {
287
313
  this.minWidth = minWidth ?? DEFAULT_MIN_WIDTH;
288
314
  this.maxWidth = maxWidth ?? DEFAULT_MAX_WIDTH;
289
315
  }
316
+ focusReorderHandle() {
317
+ if (this.thElement === undefined) {
318
+ return;
319
+ }
320
+
321
+ // focus the th element first (parent) to ensure the handle is visible
322
+ this.thElement.focus({
323
+ preventScroll: true
324
+ });
325
+ if (this.reorderHandleElement === undefined) {
326
+ return;
327
+ }
328
+
329
+ // then focus the reorder handle element
330
+ this.reorderHandleElement.focus();
331
+ }
290
332
 
291
333
  // Sets the column width in pixels, ensuring it respects the min and max width constraints.
334
+ static {
335
+ n(this.prototype, "focusReorderHandle", [action]);
336
+ }
292
337
  setPxTransientWidth(newPxWidth) {
293
338
  const pxMinWidth = this.pxMinWidth ?? 1;
294
339
  const minLimitedPxWidth = Math.max(newPxWidth, pxMinWidth);
@@ -299,7 +344,7 @@ class HdsAdvancedTableColumn {
299
344
  }
300
345
  restoreWidth() {
301
346
  this.settleWidthDebts();
302
- this.width = this.originalWidth ?? this.width;
347
+ this.width = this.originalWidth;
303
348
  }
304
349
  static {
305
350
  n(this.prototype, "restoreWidth", [action]);
@@ -1 +1 @@
1
- {"version":3,"file":"column.js","sources":["../../../../../src/components/hds/advanced-table/models/column.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport type HdsAdvancedTableModel from './table.ts';\nimport type {\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableColumn as HdsAdvancedTableColumnType,\n} from '../types';\n\nexport const DEFAULT_WIDTH = '1fr'; // default to '1fr' to allow flexible width\nexport const DEFAULT_MIN_WIDTH = '150px';\nexport const DEFAULT_MAX_WIDTH = '800px';\n\nfunction isPxSize(value?: string): boolean {\n if (value === undefined) {\n return false;\n }\n\n return /^-?\\d+(\\.\\d+)?px$/.test(value);\n}\n\nfunction pxToNumber(pxString: string): number {\n return parseFloat(pxString.slice(0, -2));\n}\n\nexport default class HdsAdvancedTableColumn {\n @tracked label: string = '';\n @tracked align?: HdsAdvancedTableHorizontalAlignment = 'left';\n @tracked isExpandable?: boolean = false;\n @tracked isSortable?: boolean = false;\n @tracked isVisuallyHidden?: boolean = false;\n @tracked key: string;\n @tracked tooltip?: string = undefined;\n @tracked thElement?: HTMLDivElement = undefined;\n\n // width properties\n @tracked transientWidth?: `${number}px` = undefined; // used for transient width changes\n @tracked width: string = DEFAULT_WIDTH;\n @tracked minWidth: `${number}px` = DEFAULT_MIN_WIDTH;\n @tracked maxWidth: `${number}px` = DEFAULT_MAX_WIDTH;\n @tracked originalWidth: string = this.width; // used to restore the width when resetting\n @tracked widthDebts: Record<string, number> = {}; // used to track width changes imposed by other columns\n\n @tracked sortingFunction?: (a: unknown, b: unknown) => number = undefined;\n\n table: HdsAdvancedTableModel;\n\n get appliedWidth(): string {\n return this.transientWidth ?? this.width;\n }\n get pxAppliedWidth(): number | undefined {\n if (isPxSize(this.appliedWidth)) {\n return pxToNumber(this.appliedWidth);\n }\n }\n\n get pxTransientWidth(): number | undefined {\n if (this.transientWidth !== undefined) {\n return pxToNumber(this.transientWidth);\n }\n }\n set pxTransientWidth(value: number | undefined) {\n if (value !== undefined && value >= 0) {\n this.transientWidth = `${value}px`;\n } else {\n this.transientWidth = undefined;\n }\n }\n\n get pxWidth(): number {\n if (isPxSize(this.width)) {\n return pxToNumber(this.width);\n } else {\n return this.thElement?.offsetWidth ?? 0;\n }\n }\n set pxWidth(value: number) {\n this.width = `${value}px`;\n }\n\n get pxMinWidth(): number {\n return isPxSize(this.minWidth) ? pxToNumber(this.minWidth) : 0;\n }\n\n get pxMaxWidth(): number {\n return isPxSize(this.maxWidth) ? pxToNumber(this.maxWidth) : Infinity;\n }\n\n get index(): number {\n const { columns } = this.table;\n\n if (columns.length === 0) {\n return -1;\n }\n\n return columns.findIndex((column) => column.key === this.key);\n }\n\n get isFirst(): boolean {\n return this.index === 0;\n }\n\n get isLast(): boolean {\n return this.index !== -1 && this.index === this.table.columns.length - 1;\n }\n\n get siblings(): {\n previous?: HdsAdvancedTableColumn;\n next?: HdsAdvancedTableColumn;\n } {\n const { index, table } = this;\n const { columns } = table;\n\n if (index === -1) {\n return {};\n }\n\n return {\n previous: this.isFirst ? undefined : columns[index - 1],\n next: this.isLast ? undefined : columns[index + 1],\n };\n }\n\n constructor(args: {\n column: HdsAdvancedTableColumnType;\n table: HdsAdvancedTableModel;\n }) {\n const { column, table } = args;\n\n // set reference to table model\n this.table = table;\n\n // set column properties\n this.label = column.label;\n this.align = column.align ?? 'left';\n this.isExpandable = 'isExpandable' in column ? column.isExpandable : false;\n this.isSortable = column.isSortable ?? false;\n this.isVisuallyHidden = column.isVisuallyHidden ?? false;\n this.key = column.key ?? guidFor(this);\n this.tooltip = column.tooltip;\n this._setWidthValues(column);\n this.sortingFunction = column.sortingFunction;\n }\n\n // main collection function\n private collectWidthDebts(): void {\n this.table.columns.forEach((debtor) => {\n const debtToCollect = debtor.widthDebts[this.key] ?? 0;\n\n if (debtToCollect <= 0) {\n return;\n }\n\n const amountPaid = debtor._sourceFundsForPayment(debtToCollect);\n\n if (amountPaid > 0) {\n this.pxWidth = (this.pxWidth ?? 0) + amountPaid;\n\n const remainingDebt = debtToCollect - amountPaid;\n\n if (remainingDebt > 0) {\n debtor.widthDebts[this.key] = remainingDebt;\n } else {\n delete debtor.widthDebts[this.key];\n }\n }\n });\n }\n\n // function for recursively recovering width debts without ending up in a deficit\n private _sourceFundsForPayment(amountNeeded: number): number {\n let fundsSourced = 0;\n\n // preferentially source width from our own surplus first\n const surplus = Math.max(0, (this.pxWidth ?? 0) - this.pxMinWidth);\n const paymentFromSurplus = Math.min(amountNeeded, surplus);\n\n if (paymentFromSurplus > 0) {\n this.pxWidth = (this.pxWidth ?? 0) - paymentFromSurplus;\n\n fundsSourced = fundsSourced + paymentFromSurplus;\n }\n\n // if we dont have enough to cover, source from debtors recursively\n const shortfall = amountNeeded - fundsSourced;\n\n if (shortfall > 0) {\n const ourDebtors = this.table.columns.filter(\n (column) => column.widthDebts[this.key]\n );\n\n for (const subDebtor of ourDebtors) {\n const amountStillNeeded = amountNeeded - fundsSourced;\n\n if (amountStillNeeded <= 0) {\n break;\n }\n\n const subDebtOwed = subDebtor.widthDebts[this.key] ?? 0;\n const amountToRequest = Math.min(amountStillNeeded, subDebtOwed);\n\n const collectedFromSubDebtor =\n subDebtor._sourceFundsForPayment(amountToRequest);\n\n if (collectedFromSubDebtor > 0) {\n fundsSourced = fundsSourced + collectedFromSubDebtor;\n\n // Update the sub-debtor's ledger.\n const remainingSubDebt = subDebtOwed - collectedFromSubDebtor;\n\n if (remainingSubDebt > 0) {\n subDebtor.widthDebts[this.key] = remainingSubDebt;\n } else {\n delete subDebtor.widthDebts[this.key];\n }\n }\n }\n }\n\n return fundsSourced;\n }\n\n private payWidthDebts(): void {\n Object.entries(this.widthDebts).forEach(([lenderKey, amount]) => {\n const lender = this.table.getColumnByKey(lenderKey);\n\n if (lender !== undefined) {\n // Give the width back to the column that lent it to us\n lender.pxWidth = (lender.pxWidth ?? 0) + amount;\n }\n });\n\n // Clear our own debt ledger, as we've paid everyone back\n this.widthDebts = {};\n }\n\n private settleWidthDebts(): void {\n this.collectWidthDebts();\n this.payWidthDebts();\n }\n\n // set initial width values\n private _setWidthValues({\n width,\n minWidth,\n maxWidth,\n }: HdsAdvancedTableColumnType): void {\n this.width = width ?? DEFAULT_WIDTH;\n\n // capture the width at the time of instantiation so it can be restored\n this.originalWidth = this.width;\n\n this.minWidth = minWidth ?? DEFAULT_MIN_WIDTH;\n this.maxWidth = maxWidth ?? DEFAULT_MAX_WIDTH;\n }\n\n // Sets the column width in pixels, ensuring it respects the min and max width constraints.\n setPxTransientWidth(newPxWidth: number): void {\n const pxMinWidth = this.pxMinWidth ?? 1;\n const minLimitedPxWidth = Math.max(newPxWidth, pxMinWidth);\n\n this.pxTransientWidth =\n this.pxMaxWidth !== undefined\n ? Math.min(minLimitedPxWidth, this.pxMaxWidth)\n : minLimitedPxWidth;\n\n if (this.key === undefined) {\n return;\n }\n }\n\n @action\n restoreWidth(): void {\n this.settleWidthDebts();\n\n this.width = this.originalWidth ?? this.width;\n }\n}\n"],"names":["DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","isPxSize","value","undefined","test","pxToNumber","pxString","parseFloat","slice","HdsAdvancedTableColumn","g","prototype","tracked","i","void 0","width","table","appliedWidth","transientWidth","pxAppliedWidth","pxTransientWidth","pxWidth","thElement","offsetWidth","pxMinWidth","minWidth","pxMaxWidth","maxWidth","Infinity","index","columns","length","findIndex","column","key","isFirst","isLast","siblings","previous","next","constructor","args","label","align","isExpandable","isSortable","isVisuallyHidden","guidFor","tooltip","_setWidthValues","sortingFunction","collectWidthDebts","forEach","debtor","debtToCollect","widthDebts","amountPaid","_sourceFundsForPayment","remainingDebt","amountNeeded","fundsSourced","surplus","Math","max","paymentFromSurplus","min","shortfall","ourDebtors","filter","subDebtor","amountStillNeeded","subDebtOwed","amountToRequest","collectedFromSubDebtor","remainingSubDebt","payWidthDebts","Object","entries","lenderKey","amount","lender","getColumnByKey","settleWidthDebts","originalWidth","setPxTransientWidth","newPxWidth","minLimitedPxWidth","restoreWidth","n","action"],"mappings":"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"}
1
+ {"version":3,"file":"column.js","sources":["../../../../../src/components/hds/advanced-table/models/column.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport type { HdsAdvancedTableThReorderHandleSignature } from '../th-reorder-handle.ts';\nimport type HdsAdvancedTableModel from './table.ts';\nimport type { HdsDropdownToggleButtonSignature } from '../../dropdown/toggle/button.ts';\nimport type {\n HdsAdvancedTableCell,\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableColumn as HdsAdvancedTableColumnType,\n} from '../types';\n\nexport const DEFAULT_WIDTH = '1fr'; // default to '1fr' to allow flexible width\nexport const DEFAULT_MIN_WIDTH = '150px';\nexport const DEFAULT_MAX_WIDTH = '800px';\n\nfunction isPxSize(value?: string): boolean {\n if (value === undefined) {\n return false;\n }\n\n return /^-?\\d+(\\.\\d+)?px$/.test(value);\n}\n\nfunction pxToNumber(pxString: string): number {\n return parseFloat(pxString.slice(0, -2));\n}\n\nexport default class HdsAdvancedTableColumn {\n @tracked label: string = '';\n @tracked align?: HdsAdvancedTableHorizontalAlignment = 'left';\n @tracked isBeingDragged: boolean = false;\n @tracked isExpandable?: boolean = false;\n @tracked isSortable?: boolean = false;\n @tracked isVisuallyHidden?: boolean = false;\n @tracked key: string;\n @tracked tooltip?: string = undefined;\n @tracked sortingFunction?: (a: unknown, b: unknown) => number = undefined;\n\n // elements\n @tracked thElement?: HTMLDivElement = undefined;\n @tracked\n reorderHandleElement?: HdsAdvancedTableThReorderHandleSignature['Element'] =\n undefined;\n @tracked\n thContextMenuToggleElement?: HdsDropdownToggleButtonSignature['Element'] =\n undefined;\n\n // width properties\n @tracked transientWidth?: `${number}px` = undefined; // used for transient width changes\n @tracked width: string = DEFAULT_WIDTH;\n @tracked minWidth: `${number}px` = DEFAULT_MIN_WIDTH;\n @tracked maxWidth: `${number}px` = DEFAULT_MAX_WIDTH;\n @tracked originalWidth: string = this.width; // used to restore the width when resetting\n @tracked widthDebts: Record<string, number> = {}; // used to track width changes imposed by other columns\n\n table: HdsAdvancedTableModel;\n\n get cells(): HdsAdvancedTableCell[] {\n return this.table.flattenedVisibleRows.map((row) => {\n const cell = row.cells.find((cell) => cell.columnKey === this.key);\n\n return cell!;\n });\n }\n\n get appliedWidth(): string {\n return this.transientWidth ?? this.width;\n }\n get pxAppliedWidth(): number | undefined {\n if (isPxSize(this.appliedWidth)) {\n return pxToNumber(this.appliedWidth);\n }\n }\n\n get pxTransientWidth(): number | undefined {\n if (this.transientWidth !== undefined) {\n return pxToNumber(this.transientWidth);\n }\n }\n set pxTransientWidth(value: number | undefined) {\n if (value !== undefined && value >= 0) {\n this.transientWidth = `${value}px`;\n } else {\n this.transientWidth = undefined;\n }\n }\n\n get pxWidth(): number {\n if (isPxSize(this.width)) {\n return pxToNumber(this.width);\n } else {\n return this.thElement?.offsetWidth ?? 0;\n }\n }\n set pxWidth(value: number) {\n this.width = `${value}px`;\n }\n\n get pxMinWidth(): number {\n return isPxSize(this.minWidth) ? pxToNumber(this.minWidth) : 0;\n }\n\n get pxMaxWidth(): number {\n return isPxSize(this.maxWidth) ? pxToNumber(this.maxWidth) : Infinity;\n }\n\n get index(): number {\n const { orderedColumns } = this.table;\n\n if (orderedColumns.length === 0) {\n return -1;\n }\n\n return orderedColumns.findIndex((column) => column.key === this.key);\n }\n\n get isFirst(): boolean {\n return this.index === 0;\n }\n\n get isLast(): boolean {\n return this.index !== -1 && this.index === this.table.columns.length - 1;\n }\n\n get siblings(): {\n previous?: HdsAdvancedTableColumn;\n next?: HdsAdvancedTableColumn;\n } {\n const { index, table } = this;\n const { orderedColumns } = table;\n\n if (index === -1) {\n return {};\n }\n\n return {\n previous: this.isFirst ? undefined : orderedColumns[index - 1],\n next: this.isLast ? undefined : orderedColumns[index + 1],\n };\n }\n\n constructor(args: {\n column: HdsAdvancedTableColumnType;\n table: HdsAdvancedTableModel;\n }) {\n const { column, table } = args;\n\n // set reference to table model\n this.table = table;\n\n // set column properties\n this.label = column.label;\n this.align = column.align ?? 'left';\n this.isExpandable = 'isExpandable' in column ? column.isExpandable : false;\n this.isSortable = column.isSortable ?? false;\n this.isVisuallyHidden = column.isVisuallyHidden ?? false;\n this.key = column.key ?? guidFor(this);\n this.tooltip = column.tooltip;\n this._setWidthValues(column);\n this.sortingFunction = column.sortingFunction;\n }\n\n // main collection function\n private collectWidthDebts(): void {\n this.table.columns.forEach((debtor) => {\n const debtToCollect = debtor.widthDebts[this.key] ?? 0;\n\n if (debtToCollect <= 0) {\n return;\n }\n\n const amountPaid = debtor._sourceFundsForPayment(debtToCollect);\n\n if (amountPaid > 0) {\n this.pxWidth = (this.pxWidth ?? 0) + amountPaid;\n\n const remainingDebt = debtToCollect - amountPaid;\n\n if (remainingDebt > 0) {\n debtor.widthDebts[this.key] = remainingDebt;\n } else {\n delete debtor.widthDebts[this.key];\n }\n }\n });\n }\n\n // function for recursively recovering width debts without ending up in a deficit\n private _sourceFundsForPayment(amountNeeded: number): number {\n let fundsSourced = 0;\n\n // preferentially source width from our own surplus first\n const surplus = Math.max(0, (this.pxWidth ?? 0) - this.pxMinWidth);\n const paymentFromSurplus = Math.min(amountNeeded, surplus);\n\n if (paymentFromSurplus > 0) {\n this.pxWidth = (this.pxWidth ?? 0) - paymentFromSurplus;\n\n fundsSourced = fundsSourced + paymentFromSurplus;\n }\n\n // if we dont have enough to cover, source from debtors recursively\n const shortfall = amountNeeded - fundsSourced;\n\n if (shortfall > 0) {\n const ourDebtors = this.table.columns.filter(\n (column) => column.widthDebts[this.key]\n );\n\n for (const subDebtor of ourDebtors) {\n const amountStillNeeded = amountNeeded - fundsSourced;\n\n if (amountStillNeeded <= 0) {\n break;\n }\n\n const subDebtOwed = subDebtor.widthDebts[this.key] ?? 0;\n const amountToRequest = Math.min(amountStillNeeded, subDebtOwed);\n\n const collectedFromSubDebtor =\n subDebtor._sourceFundsForPayment(amountToRequest);\n\n if (collectedFromSubDebtor > 0) {\n fundsSourced = fundsSourced + collectedFromSubDebtor;\n\n // Update the sub-debtor's ledger.\n const remainingSubDebt = subDebtOwed - collectedFromSubDebtor;\n\n if (remainingSubDebt > 0) {\n subDebtor.widthDebts[this.key] = remainingSubDebt;\n } else {\n delete subDebtor.widthDebts[this.key];\n }\n }\n }\n }\n\n return fundsSourced;\n }\n\n private payWidthDebts(): void {\n Object.entries(this.widthDebts).forEach(([lenderKey, amount]) => {\n const lender = this.table.getColumnByKey(lenderKey);\n\n if (lender !== undefined) {\n // Give the width back to the column that lent it to us\n lender.pxWidth = (lender.pxWidth ?? 0) + amount;\n }\n });\n\n // Clear our own debt ledger, as we've paid everyone back\n this.widthDebts = {};\n }\n\n private settleWidthDebts(): void {\n this.collectWidthDebts();\n this.payWidthDebts();\n }\n\n // set initial width values\n private _setWidthValues({\n width,\n minWidth,\n maxWidth,\n }: HdsAdvancedTableColumnType): void {\n this.width = width ?? DEFAULT_WIDTH;\n\n // capture the width at the time of instantiation so it can be restored\n this.originalWidth = this.width;\n\n this.minWidth = minWidth ?? DEFAULT_MIN_WIDTH;\n this.maxWidth = maxWidth ?? DEFAULT_MAX_WIDTH;\n }\n\n @action focusReorderHandle(): void {\n if (this.thElement === undefined) {\n return;\n }\n\n // focus the th element first (parent) to ensure the handle is visible\n this.thElement.focus({ preventScroll: true });\n\n if (this.reorderHandleElement === undefined) {\n return;\n }\n\n // then focus the reorder handle element\n this.reorderHandleElement.focus();\n }\n\n // Sets the column width in pixels, ensuring it respects the min and max width constraints.\n setPxTransientWidth(newPxWidth: number): void {\n const pxMinWidth = this.pxMinWidth ?? 1;\n const minLimitedPxWidth = Math.max(newPxWidth, pxMinWidth);\n\n this.pxTransientWidth =\n this.pxMaxWidth !== undefined\n ? Math.min(minLimitedPxWidth, this.pxMaxWidth)\n : minLimitedPxWidth;\n\n if (this.key === undefined) {\n return;\n }\n }\n\n @action\n restoreWidth(): void {\n this.settleWidthDebts();\n\n this.width = this.originalWidth;\n }\n}\n"],"names":["DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","isPxSize","value","undefined","test","pxToNumber","pxString","parseFloat","slice","HdsAdvancedTableColumn","g","prototype","tracked","i","void 0","width","table","cells","flattenedVisibleRows","map","row","cell","find","columnKey","key","appliedWidth","transientWidth","pxAppliedWidth","pxTransientWidth","pxWidth","thElement","offsetWidth","pxMinWidth","minWidth","pxMaxWidth","maxWidth","Infinity","index","orderedColumns","length","findIndex","column","isFirst","isLast","columns","siblings","previous","next","constructor","args","label","align","isExpandable","isSortable","isVisuallyHidden","guidFor","tooltip","_setWidthValues","sortingFunction","collectWidthDebts","forEach","debtor","debtToCollect","widthDebts","amountPaid","_sourceFundsForPayment","remainingDebt","amountNeeded","fundsSourced","surplus","Math","max","paymentFromSurplus","min","shortfall","ourDebtors","filter","subDebtor","amountStillNeeded","subDebtOwed","amountToRequest","collectedFromSubDebtor","remainingSubDebt","payWidthDebts","Object","entries","lenderKey","amount","lender","getColumnByKey","settleWidthDebts","originalWidth","focusReorderHandle","focus","preventScroll","reorderHandleElement","n","action","setPxTransientWidth","newPxWidth","minLimitedPxWidth","restoreWidth"],"mappings":"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"}
@@ -18,6 +18,18 @@ class HdsAdvancedTableRow {
18
18
  });
19
19
  }
20
20
  #isOpen = (i(this, "isOpen"), void 0);
21
+ static {
22
+ g(this.prototype, "cells", [tracked], function () {
23
+ return [];
24
+ });
25
+ }
26
+ #cells = (i(this, "cells"), void 0);
27
+ static {
28
+ g(this.prototype, "columnOrder", [tracked], function () {
29
+ return [];
30
+ });
31
+ }
32
+ #columnOrder = (i(this, "columnOrder"), void 0);
21
33
  children = [];
22
34
  childrenKey;
23
35
  get hasChildren() {
@@ -26,15 +38,38 @@ class HdsAdvancedTableRow {
26
38
  get showChildren() {
27
39
  return this.isOpen && this.hasChildren;
28
40
  }
41
+ get orderedCells() {
42
+ return this.columnOrder.map(key => {
43
+ const cell = this.cells.find(cell => cell.columnKey === key);
44
+ if (cell === undefined) {
45
+ throw new Error(`Cell in the column with key ${key} not found for the row.`);
46
+ }
47
+ return cell;
48
+ });
49
+ }
29
50
  constructor(args) {
51
+ const {
52
+ columns
53
+ } = args;
54
+ this.cells = columns.map(column => {
55
+ const cell = args[column.key ?? ''];
56
+ return {
57
+ columnKey: column.key ?? '',
58
+ content: cell
59
+ };
60
+ });
61
+ this.columnOrder = args.columnOrder ?? this.cells.map(cell => cell.columnKey);
62
+
30
63
  // set row data
31
64
  Object.assign(this, args);
32
65
  this.childrenKey = args.childrenKey ?? 'children';
33
66
  const childModels = args[this.childrenKey];
34
67
  if (Array.isArray(childModels)) {
35
- this.children = childModels.map(
36
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
37
- child => new HdsAdvancedTableRow(child));
68
+ this.children = childModels.map(child => new HdsAdvancedTableRow({
69
+ ...child,
70
+ columns: args.columns,
71
+ childrenKey: this.childrenKey
72
+ }));
38
73
  }
39
74
  }
40
75
  openAll() {
@@ -1 +1 @@
1
- {"version":3,"file":"row.js","sources":["../../../../../src/components/hds/advanced-table/models/row.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport type { HdsAdvancedTableColumn } from '../types';\n\ninterface HdsAdvancedTableRowArgs {\n [key: string]: unknown;\n columns: HdsAdvancedTableColumn[];\n id?: string;\n childrenKey?: string;\n}\n\nexport default class HdsAdvancedTableRow {\n id = guidFor(this);\n\n // row data\n [key: string]: unknown;\n\n @tracked isOpen: boolean = false;\n\n children: HdsAdvancedTableRow[] = [];\n childrenKey: string;\n\n get hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n get showChildren(): boolean {\n return this.isOpen && this.hasChildren;\n }\n\n constructor(args: HdsAdvancedTableRowArgs) {\n // set row data\n Object.assign(this, args);\n\n this.childrenKey = args.childrenKey ?? 'children';\n\n const childModels = args[this.childrenKey];\n\n if (Array.isArray(childModels)) {\n this.children = childModels.map(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (child) => new HdsAdvancedTableRow(child)\n );\n }\n }\n\n @action\n openAll() {\n this.isOpen = true;\n this.children.forEach((child) => child.openAll());\n }\n\n @action\n collapseAll() {\n this.isOpen = false;\n this.children.forEach((child) => child.collapseAll());\n }\n\n @action\n onClickToggle() {\n this.isOpen = !this.isOpen;\n }\n}\n"],"names":["HdsAdvancedTableRow","id","guidFor","g","prototype","tracked","i","void 0","children","childrenKey","hasChildren","length","showChildren","isOpen","constructor","args","Object","assign","childModels","Array","isArray","map","child","openAll","forEach","n","action","collapseAll","onClickToggle"],"mappings":";;;;;AAAA;AACA;AACA;AACA;;AAee,MAAMA,mBAAmB,CAAC;AACvCC,EAAAA,EAAE,GAAGC,OAAO,CAAC,IAAI,CAAC;;AAElB;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,QAAA,EAAA,CAGCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAmB,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,OAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAAC,MAAA;AAEhCC,EAAAA,QAAQ,GAA0B,EAAE;EACpCC,WAAW;EAEX,IAAIC,WAAWA,GAAY;AACzB,IAAA,OAAO,IAAI,CAACF,QAAQ,CAACG,MAAM,GAAG,CAAC;AACjC,EAAA;EAEA,IAAIC,YAAYA,GAAY;AAC1B,IAAA,OAAO,IAAI,CAACC,MAAM,IAAI,IAAI,CAACH,WAAW;AACxC,EAAA;EAEAI,WAAWA,CAACC,IAA6B,EAAE;AACzC;AACAC,IAAAA,MAAM,CAACC,MAAM,CAAC,IAAI,EAAEF,IAAI,CAAC;AAEzB,IAAA,IAAI,CAACN,WAAW,GAAGM,IAAI,CAACN,WAAW,IAAI,UAAU;AAEjD,IAAA,MAAMS,WAAW,GAAGH,IAAI,CAAC,IAAI,CAACN,WAAW,CAAC;AAE1C,IAAA,IAAIU,KAAK,CAACC,OAAO,CAACF,WAAW,CAAC,EAAE;AAC9B,MAAA,IAAI,CAACV,QAAQ,GAAGU,WAAW,CAACG,GAAG;AAC7B;AACCC,MAAAA,KAAK,IAAK,IAAItB,mBAAmB,CAACsB,KAAK,CAC1C,CAAC;AACH,IAAA;AACF,EAAA;AAGAC,EAAAA,OAAOA,GAAG;IACR,IAAI,CAACV,MAAM,GAAG,IAAI;AAClB,IAAA,IAAI,CAACL,QAAQ,CAACgB,OAAO,CAAEF,KAAK,IAAKA,KAAK,CAACC,OAAO,EAAE,CAAC;AACnD,EAAA;AAAC,EAAA;IAAAE,CAAA,CAAA,IAAA,CAAArB,SAAA,EAAA,SAAA,EAAA,CAJAsB,MAAM,CAAA,CAAA;AAAA;AAOPC,EAAAA,WAAWA,GAAG;IACZ,IAAI,CAACd,MAAM,GAAG,KAAK;AACnB,IAAA,IAAI,CAACL,QAAQ,CAACgB,OAAO,CAAEF,KAAK,IAAKA,KAAK,CAACK,WAAW,EAAE,CAAC;AACvD,EAAA;AAAC,EAAA;IAAAF,CAAA,CAAA,IAAA,CAAArB,SAAA,EAAA,aAAA,EAAA,CAJAsB,MAAM,CAAA,CAAA;AAAA;AAOPE,EAAAA,aAAaA,GAAG;AACd,IAAA,IAAI,CAACf,MAAM,GAAG,CAAC,IAAI,CAACA,MAAM;AAC5B,EAAA;AAAC,EAAA;IAAAY,CAAA,CAAA,IAAA,CAAArB,SAAA,EAAA,eAAA,EAAA,CAHAsB,MAAM,CAAA,CAAA;AAAA;AAIT;;;;"}
1
+ {"version":3,"file":"row.js","sources":["../../../../../src/components/hds/advanced-table/models/row.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport type { HdsAdvancedTableColumn, HdsAdvancedTableCell } from '../types';\n\ninterface HdsAdvancedTableRowArgs {\n [key: string]: unknown;\n columns: HdsAdvancedTableColumn[];\n id?: string;\n childrenKey?: string;\n columnOrder?: string[];\n}\n\nexport default class HdsAdvancedTableRow {\n id = guidFor(this);\n\n // row data\n [key: string]: unknown;\n\n @tracked isOpen: boolean = false;\n @tracked cells: HdsAdvancedTableCell[] = [];\n @tracked columnOrder: string[] = [];\n\n children: HdsAdvancedTableRow[] = [];\n childrenKey: string;\n\n get hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n get showChildren(): boolean {\n return this.isOpen && this.hasChildren;\n }\n\n get orderedCells(): HdsAdvancedTableCell[] {\n return this.columnOrder.map((key) => {\n const cell = this.cells.find((cell) => cell.columnKey === key);\n\n if (cell === undefined) {\n throw new Error(\n `Cell in the column with key ${key} not found for the row.`\n );\n }\n\n return cell;\n });\n }\n\n constructor(args: HdsAdvancedTableRowArgs) {\n const { columns } = args;\n\n this.cells = columns.map((column) => {\n const cell = args[column.key ?? ''];\n\n return {\n columnKey: column.key ?? '',\n content: cell,\n };\n });\n\n this.columnOrder =\n args.columnOrder ?? this.cells.map((cell) => cell.columnKey);\n\n // set row data\n Object.assign(this, args);\n\n this.childrenKey = args.childrenKey ?? 'children';\n\n const childModels = args[this.childrenKey];\n\n if (Array.isArray(childModels)) {\n this.children = childModels.map(\n (child) =>\n new HdsAdvancedTableRow({\n ...(child as HdsAdvancedTableRowArgs),\n columns: args.columns,\n childrenKey: this.childrenKey,\n })\n );\n }\n }\n\n @action\n openAll() {\n this.isOpen = true;\n this.children.forEach((child) => child.openAll());\n }\n\n @action\n collapseAll() {\n this.isOpen = false;\n this.children.forEach((child) => child.collapseAll());\n }\n\n @action\n onClickToggle() {\n this.isOpen = !this.isOpen;\n }\n}\n"],"names":["HdsAdvancedTableRow","id","guidFor","g","prototype","tracked","i","void 0","children","childrenKey","hasChildren","length","showChildren","isOpen","orderedCells","columnOrder","map","key","cell","cells","find","columnKey","undefined","Error","constructor","args","columns","column","content","Object","assign","childModels","Array","isArray","child","openAll","forEach","n","action","collapseAll","onClickToggle"],"mappings":"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"}