@hashicorp/design-system-components 6.4.0 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/component-catalog.json +13139 -0
- package/declarations/components/hds/advanced-table/column-manager/index.d.ts +5 -7
- package/declarations/components/hds/advanced-table/column-manager/width.d.ts +17 -20
- package/declarations/components/hds/advanced-table/index.d.ts +3 -2
- package/declarations/components/hds/advanced-table/th-context-menu.d.ts +2 -1
- package/declarations/components/hds/advanced-table/th-resize-handle.d.ts +8 -19
- package/declarations/components/hds/advanced-table/th.d.ts +5 -19
- package/declarations/components/hds/advanced-table/tr.d.ts +3 -0
- package/declarations/components/hds/advanced-table/types.d.ts +1 -1
- package/declarations/components/hds/advanced-table/utils.d.ts +1 -0
- package/declarations/components/hds/composite/index.d.ts +1 -0
- package/declarations/components/hds/icon/index.d.ts +1 -1
- package/declarations/components/hds/segmented-group/index.d.ts +13 -3
- package/declarations/components/hds/stepper/task/indicator.d.ts +1 -1
- package/declarations/components/hds/table/index.d.ts +1 -0
- package/declarations/components/hds/table/tr.d.ts +4 -0
- package/dist/components/hds/advanced-table/column-manager/index.js +1 -1
- package/dist/components/hds/advanced-table/column-manager/index.js.map +1 -1
- package/dist/components/hds/advanced-table/column-manager/order.js +2 -1
- package/dist/components/hds/advanced-table/column-manager/order.js.map +1 -1
- package/dist/components/hds/advanced-table/column-manager/width.js +96 -183
- package/dist/components/hds/advanced-table/column-manager/width.js.map +1 -1
- package/dist/components/hds/advanced-table/index.js +1 -1
- package/dist/components/hds/advanced-table/th-context-menu.js +14 -7
- package/dist/components/hds/advanced-table/th-context-menu.js.map +1 -1
- package/dist/components/hds/advanced-table/th-reorder-drop-target.js +1 -1
- package/dist/components/hds/advanced-table/th-resize-handle.js +1 -1
- package/dist/components/hds/advanced-table/th-selectable.js +1 -1
- package/dist/components/hds/advanced-table/th.js +1 -1
- package/dist/components/hds/advanced-table/tr.js +3 -1
- package/dist/components/hds/advanced-table/tr.js.map +1 -1
- package/dist/components/hds/advanced-table/types.js.map +1 -1
- package/dist/components/hds/advanced-table/utils.js +8 -1
- package/dist/components/hds/advanced-table/utils.js.map +1 -1
- package/dist/components/hds/composite/index.js +6 -0
- package/dist/components/hds/composite/index.js.map +1 -1
- package/dist/components/hds/filter-bar/index.js +1 -1
- package/dist/components/hds/filter-bar/index.js.map +1 -1
- package/dist/components/hds/segmented-group/index.js +36 -13
- package/dist/components/hds/segmented-group/index.js.map +1 -1
- package/dist/components/hds/stepper/list/step.js +6 -2
- package/dist/components/hds/stepper/list/step.js.map +1 -1
- package/dist/components/hds/stepper/nav/step.js +6 -2
- package/dist/components/hds/stepper/nav/step.js.map +1 -1
- package/dist/components/hds/table/index.js +9 -0
- package/dist/components/hds/table/index.js.map +1 -1
- package/dist/components/hds/table/tr.js +27 -15
- package/dist/components/hds/table/tr.js.map +1 -1
- package/dist/components.js +1 -1
- package/dist/{index-DtMB-P9m.js → index-Cx64Nvu4.js} +111 -226
- package/dist/index-Cx64Nvu4.js.map +1 -0
- package/dist/modifiers/hds-scroll-into-view-on-focus.js +4 -0
- package/dist/modifiers/hds-scroll-into-view-on-focus.js.map +1 -1
- package/dist/styles/@hashicorp/design-system-components.css +86 -22
- package/dist/styles/@hashicorp/design-system-components.css.map +1 -1
- package/dist/styles/components/advanced-table.scss +4 -1
- package/dist/styles/components/badge-count.scss +1 -1
- package/dist/styles/components/badge.scss +1 -1
- package/dist/styles/components/filter-bar.scss +10 -2
- package/dist/styles/components/form/character-count.scss +1 -1
- package/dist/styles/components/form/error.scss +1 -1
- package/dist/styles/components/form/helper-text.scss +1 -1
- package/dist/styles/components/form/indicator.scss +1 -1
- package/dist/styles/components/form/label.scss +1 -1
- package/dist/styles/components/form/legend.scss +1 -1
- package/dist/styles/components/icon-tile.scss +1 -1
- package/dist/styles/components/link/standalone.scss +1 -1
- package/dist/styles/components/segmented-group.scss +43 -6
- package/dist/styles/components/tag.scss +1 -1
- package/package.json +7 -4
- package/translations/hds/components/stepper/en-us.yaml +1 -0
- package/dist/index-DtMB-P9m.js.map +0 -1
|
@@ -31,8 +31,16 @@
|
|
|
31
31
|
align-items: center;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
// Setting `margin-right: auto` on the last element of the toggle, filters dropdown,
|
|
35
|
+
// or search fills the leftover space and shoves the right-side items
|
|
36
|
+
// (ActionsGeneric, ActionsDropdown) to the end of the row. Using `margin-left:
|
|
37
|
+
// auto` on those right-side items instead would break row wrapping.
|
|
38
|
+
.hds-filter-bar__actions__left {
|
|
39
|
+
display: contents;
|
|
40
|
+
|
|
41
|
+
> :last-child {
|
|
42
|
+
margin-right: auto;
|
|
43
|
+
}
|
|
36
44
|
}
|
|
37
45
|
|
|
38
46
|
.hds-filter-bar__search.hds-form-text-input {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright IBM Corp. 2021,
|
|
2
|
+
* Copyright IBM Corp. 2021, 2026
|
|
3
3
|
* SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -9,11 +9,44 @@
|
|
|
9
9
|
|
|
10
10
|
.hds-segmented-group {
|
|
11
11
|
display: inline-flex;
|
|
12
|
+
max-width: var(--hds-segmented-group-max-width);
|
|
13
|
+
|
|
14
|
+
&.hds-segmented-group--is-full-width {
|
|
15
|
+
display: flex;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// SuperSelect uses `@renderInPlace={{true}}` inside SegmentedGroup, which causes the dropdown
|
|
19
|
+
// to use the `--in-place` class instead of the usual `--below` class. The normal 4px gap comes
|
|
20
|
+
// from `.ember-basic-dropdown-content--below { margin-top: 4px }` in HDS styles, but that rule
|
|
21
|
+
// doesn't apply to in-place dropdowns — so without this rule the dropdown sits flush against
|
|
22
|
+
// the trigger. This restores the same spacing for the in-place rendering mode.
|
|
23
|
+
> .hds-form-super-select .ember-basic-dropdown-content--in-place {
|
|
24
|
+
margin-top: 4px;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// When the SuperSelect dropdown opens, the super-select stylesheet resets the trigger's
|
|
28
|
+
// border-radius on the `--in-place` trigger. Override with explicit values so the segmented
|
|
29
|
+
// group's positional border-radius rules (first/middle/last child) are respected when open.
|
|
30
|
+
> .hds-form-super-select:first-child:not(:only-child) .ember-basic-dropdown-trigger--in-place[aria-expanded="true"] {
|
|
31
|
+
border-top-right-radius: 0;
|
|
32
|
+
border-bottom-right-radius: 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
> .hds-form-super-select:last-child:not(:only-child) .ember-basic-dropdown-trigger--in-place[aria-expanded="true"] {
|
|
36
|
+
border-top-left-radius: 0;
|
|
37
|
+
border-bottom-left-radius: 0;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
> .hds-form-super-select:not(:first-child, :last-child, :only-child)
|
|
41
|
+
.ember-basic-dropdown-trigger--in-place[aria-expanded="true"] {
|
|
42
|
+
border-radius: 0;
|
|
43
|
+
}
|
|
12
44
|
|
|
13
45
|
> .hds-button,
|
|
14
46
|
> .hds-dropdown,
|
|
15
47
|
> .hds-form-select,
|
|
16
|
-
> .hds-form-text-input
|
|
48
|
+
> .hds-form-text-input,
|
|
49
|
+
> .hds-form-super-select {
|
|
17
50
|
&:first-child:not(:only-child) {
|
|
18
51
|
border-top-right-radius: 0;
|
|
19
52
|
border-bottom-right-radius: 0;
|
|
@@ -22,7 +55,8 @@
|
|
|
22
55
|
.hds-dropdown-toggle-button,
|
|
23
56
|
.hds-dropdown-toggle-button::before,
|
|
24
57
|
.hds-dropdown-toggle-icon,
|
|
25
|
-
.hds-dropdown-toggle-icon::before
|
|
58
|
+
.hds-dropdown-toggle-icon::before,
|
|
59
|
+
.ember-power-select-trigger {
|
|
26
60
|
border-top-right-radius: inherit;
|
|
27
61
|
border-bottom-right-radius: inherit;
|
|
28
62
|
}
|
|
@@ -37,7 +71,8 @@
|
|
|
37
71
|
.hds-dropdown-toggle-button,
|
|
38
72
|
.hds-dropdown-toggle-button::before,
|
|
39
73
|
.hds-dropdown-toggle-icon,
|
|
40
|
-
.hds-dropdown-toggle-icon::before
|
|
74
|
+
.hds-dropdown-toggle-icon::before,
|
|
75
|
+
.ember-power-select-trigger {
|
|
41
76
|
border-top-left-radius: inherit;
|
|
42
77
|
border-bottom-left-radius: inherit;
|
|
43
78
|
}
|
|
@@ -51,7 +86,8 @@
|
|
|
51
86
|
.hds-dropdown-toggle-button,
|
|
52
87
|
.hds-dropdown-toggle-button::before,
|
|
53
88
|
.hds-dropdown-toggle-icon,
|
|
54
|
-
.hds-dropdown-toggle-icon::before
|
|
89
|
+
.hds-dropdown-toggle-icon::before,
|
|
90
|
+
.ember-power-select-trigger {
|
|
55
91
|
border-radius: inherit;
|
|
56
92
|
}
|
|
57
93
|
}
|
|
@@ -59,7 +95,8 @@
|
|
|
59
95
|
&:focus,
|
|
60
96
|
&.mock-focus,
|
|
61
97
|
.hds-dropdown-toggle-button:focus,
|
|
62
|
-
.hds-dropdown-toggle-icon:focus
|
|
98
|
+
.hds-dropdown-toggle-icon:focus,
|
|
99
|
+
.ember-power-select-trigger:focus {
|
|
63
100
|
z-index: 1;
|
|
64
101
|
}
|
|
65
102
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hashicorp/design-system-components",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.5.0",
|
|
4
4
|
"description": "Helios Design System Components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hashicorp",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"@embroider/util": "^1.13.4",
|
|
38
38
|
"@floating-ui/dom": "^1.6.12",
|
|
39
39
|
"@hashicorp/design-system-tokens": "^5.1.0",
|
|
40
|
-
"@hashicorp/flight-icons": "^5.
|
|
40
|
+
"@hashicorp/flight-icons": "^5.1.0",
|
|
41
41
|
"@lezer/highlight": "^1.2.1",
|
|
42
42
|
"@nullvoxpopuli/ember-composable-helpers": "^5.2.11",
|
|
43
43
|
"clipboard-polyfill": "^4.1.1",
|
|
@@ -383,7 +383,8 @@
|
|
|
383
383
|
"./codemirror": {
|
|
384
384
|
"types": "./declarations/re-exports/codemirror.d.ts",
|
|
385
385
|
"default": "./dist/re-exports/codemirror.js"
|
|
386
|
-
}
|
|
386
|
+
},
|
|
387
|
+
"./component-catalog.json": "./component-catalog.json"
|
|
387
388
|
},
|
|
388
389
|
"typesVersions": {
|
|
389
390
|
"*": {
|
|
@@ -394,6 +395,7 @@
|
|
|
394
395
|
},
|
|
395
396
|
"files": [
|
|
396
397
|
"addon-main.cjs",
|
|
398
|
+
"component-catalog.json",
|
|
397
399
|
"declarations",
|
|
398
400
|
"dist",
|
|
399
401
|
"translations"
|
|
@@ -402,7 +404,8 @@
|
|
|
402
404
|
"node": ">= 18"
|
|
403
405
|
},
|
|
404
406
|
"scripts": {
|
|
405
|
-
"build": "rollup --config",
|
|
407
|
+
"build": "rollup --config && pnpm catalog:components",
|
|
408
|
+
"catalog:components": "node ./scripts/build-component-catalog.mjs",
|
|
406
409
|
"format": "prettier . --cache --write",
|
|
407
410
|
"lint": "concurrently \"pnpm:lint:*(!fix)\" --names \"lint:\" --prefixColors auto",
|
|
408
411
|
"lint:fix": "concurrently \"pnpm:lint:*:fix\" --names \"fix:\" --prefixColors auto && pnpm run format",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DtMB-P9m.js","sources":["../src/components/hds/advanced-table/th-resize-handle.gts","../src/components/hds/advanced-table/th-reorder-drop-target.gts","../src/components/hds/advanced-table/th.gts","../src/components/hds/advanced-table/th-selectable.gts","../src/components/hds/advanced-table/tr.gts","../src/components/hds/advanced-table/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { modifier } from 'ember-modifier';\nimport { on } from '@ember/modifier';\nimport style from 'ember-style-modifier';\nimport { concat } from '@ember/helper';\n\nimport { parsePixel, requestAnimationFrameWaiter } from './utils.ts';\nimport { BORDER_WIDTH } from './index.gts';\nimport {\n DEFAULT_MIN_WIDTH,\n DEFAULT_MAX_WIDTH,\n} from './column-manager/width.gts';\nimport hdsT from '../../../helpers/hds-t.ts';\n\nimport type Owner from '@ember/owner';\nimport type { HdsAdvancedTableNormalizedColumn } from './types';\nimport type { HdsAdvancedTableSignature } from './index.gts';\n\nconst KEYBOARD_RESIZE_STEP = 10;\n\nfunction calculateEffectiveDelta(\n deltaX: number,\n col: HdsAdvancedTableNormalizedColumn,\n startColW: number,\n nextCol: HdsAdvancedTableNormalizedColumn,\n startNextColW: number\n): number {\n const colMin = parsePixel(col.minWidth ?? DEFAULT_MIN_WIDTH) ?? 0;\n const colMax = parsePixel(col.maxWidth ?? DEFAULT_MAX_WIDTH) ?? Infinity;\n const nextMin = parsePixel(nextCol.minWidth ?? DEFAULT_MIN_WIDTH) ?? 0;\n const nextMax = parsePixel(nextCol.maxWidth ?? DEFAULT_MAX_WIDTH) ?? Infinity;\n\n let effectiveDelta = 0;\n\n // expanding col, shrinking nextCol\n if (deltaX > 0) {\n const maxCanExpandCol = colMax - startColW;\n const maxCanShrinkNext = startNextColW - nextMin;\n\n effectiveDelta = Math.min(deltaX, maxCanExpandCol, maxCanShrinkNext);\n effectiveDelta = Math.max(0, effectiveDelta);\n }\n // shrinking col, expanding nextCol\n else if (deltaX < 0) {\n const absDeltaX = -deltaX;\n const maxCanShrinkCol = startColW - colMin;\n\n let maxCanExpandNext: number;\n if (startNextColW > nextMax) {\n maxCanExpandNext = Infinity;\n } else {\n maxCanExpandNext = nextMax - startNextColW;\n }\n\n effectiveDelta = -Math.min(absDeltaX, maxCanShrinkCol, maxCanExpandNext);\n effectiveDelta = Math.min(0, effectiveDelta);\n }\n\n return effectiveDelta;\n}\n\nexport interface HdsAdvancedTableThResizeHandleSignature {\n Args: {\n column?: HdsAdvancedTableNormalizedColumn;\n siblingColumnKeys?: {\n previous?: HdsAdvancedTableNormalizedColumn['key'];\n next?: HdsAdvancedTableNormalizedColumn['key'];\n };\n tableHeight?: number;\n onApplyTransientWidth?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key']\n ) => void;\n onGetAppliedWidth?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key']\n ) => HdsAdvancedTableNormalizedColumn['width'];\n onGetColumnByKey?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key']\n ) => HdsAdvancedTableNormalizedColumn | undefined;\n onSetTransientColumnWidth?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key'],\n width: `${number}px`\n ) => void;\n onSetTransientColumnWidths?: (options: { roundValues?: boolean }) => void;\n onResetTransientColumnWidths?: () => void;\n onUpdateResizeDebt?: (delta: number) => void;\n onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTableThResizeHandle extends Component<HdsAdvancedTableThResizeHandleSignature> {\n @tracked resizing: {\n startX: number;\n startColumnPxWidth: number;\n startNextColumnPxWidth?: number;\n } | null = null;\n // track the width change as it is changing, applied when resizing stops\n @tracked private _transientDelta: number = 0;\n @tracked private _isUpdateQueued: boolean = false;\n @tracked private _lastPointerEvent: PointerEvent | null = null;\n\n private _handleElement!: HdsAdvancedTableThResizeHandleSignature['Element'];\n private _boundResize: (event: PointerEvent) => void;\n private _boundStopResize: () => void;\n\n private _registerHandleElement = modifier(\n (element: HdsAdvancedTableThResizeHandleSignature['Element']) => {\n this._handleElement = element;\n }\n );\n\n constructor(\n owner: Owner,\n args: HdsAdvancedTableThResizeHandleSignature['Args']\n ) {\n super(owner, args);\n\n this._boundResize = this._resize.bind(this);\n this._boundStopResize = this._stopResize.bind(this);\n }\n\n get currentWidthInPixels(): number {\n const { column, onGetAppliedWidth } = this.args;\n\n if (column === undefined || onGetAppliedWidth === undefined) {\n return 0;\n }\n\n const appliedWidth = onGetAppliedWidth(column.key);\n\n return parsePixel(appliedWidth) ?? 0;\n }\n\n get minWidthInPixels(): number {\n return parsePixel(this.args.column?.minWidth ?? DEFAULT_MIN_WIDTH) ?? 0;\n }\n\n get maxWidthInPixels(): number {\n return (\n parsePixel(this.args.column?.maxWidth ?? DEFAULT_MAX_WIDTH) ?? Infinity\n );\n }\n\n get height(): string | undefined {\n const { tableHeight } = this.args;\n\n if (tableHeight === undefined) {\n return;\n }\n\n return `${tableHeight - BORDER_WIDTH * 2}px`;\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table__th-resize-handle'];\n\n if (this.resizing !== null) {\n classes.push('hds-advanced-table__th-resize-handle--resizing');\n }\n\n return classes.join(' ');\n }\n\n private _applyTransientWidths() {\n const { column, siblingColumnKeys, onApplyTransientWidth } = this.args;\n\n if (column === undefined || onApplyTransientWidth === undefined) {\n return;\n }\n\n const { next: nextColumnKey } = siblingColumnKeys ?? {};\n\n onApplyTransientWidth(column.key);\n\n if (nextColumnKey !== undefined) {\n onApplyTransientWidth(nextColumnKey);\n }\n }\n\n @action\n onColumnResize(key?: string, width?: string): void {\n const { onColumnResize } = this.args;\n\n if (typeof onColumnResize === 'function' && key !== undefined) {\n onColumnResize(key, width);\n }\n }\n\n @action\n handleKeydown(event: KeyboardEvent): void {\n const validKeys = ['ArrowLeft', 'ArrowRight'];\n\n if (!validKeys.includes(event.key)) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const {\n column,\n siblingColumnKeys,\n onApplyTransientWidth,\n onGetAppliedWidth,\n onSetTransientColumnWidths,\n onResetTransientColumnWidths,\n onUpdateResizeDebt,\n } = this.args;\n const { next: nextColumnKey } = siblingColumnKeys ?? {};\n\n if (\n column === undefined ||\n nextColumnKey === undefined ||\n onApplyTransientWidth === undefined ||\n onGetAppliedWidth === undefined ||\n onSetTransientColumnWidths === undefined ||\n onUpdateResizeDebt === undefined ||\n onResetTransientColumnWidths === undefined\n ) {\n return;\n }\n\n onSetTransientColumnWidths({ roundValues: true });\n\n const startColumnAppliedWidth = onGetAppliedWidth(column.key);\n const startNextColumnAppliedWidth = onGetAppliedWidth(nextColumnKey);\n\n const startColumnPxWidth = Math.round(\n parsePixel(startColumnAppliedWidth) ?? 0\n );\n const startNextColumnPxWidth = Math.round(\n parsePixel(startNextColumnAppliedWidth) ?? 0\n );\n const deltaX =\n event.key === 'ArrowRight' ? KEYBOARD_RESIZE_STEP : -KEYBOARD_RESIZE_STEP;\n\n this._applyResizeDelta(\n deltaX,\n startColumnPxWidth,\n column,\n nextColumnKey,\n startNextColumnPxWidth\n );\n\n // ensure the resize handle remains visible during keyboard navigation.\n this._handleElement.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n\n // use a microtask to commit the final state after the render pass.\n queueMicrotask(() => {\n if (this._transientDelta !== 0) {\n onUpdateResizeDebt(this._transientDelta);\n }\n // reset transient values\n onApplyTransientWidth(column.key);\n onApplyTransientWidth(nextColumnKey);\n\n onResetTransientColumnWidths();\n this._transientDelta = 0;\n\n this.onColumnResize(column.key, column.width);\n });\n }\n\n @action\n startResize(event: PointerEvent): void {\n if (event.button !== 0) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const {\n column,\n siblingColumnKeys,\n onGetAppliedWidth,\n onSetTransientColumnWidths,\n } = this.args;\n\n if (\n column === undefined ||\n onGetAppliedWidth === undefined ||\n onSetTransientColumnWidths === undefined\n ) {\n return;\n }\n\n const { next: nextColumnKey } = siblingColumnKeys ?? {};\n\n onSetTransientColumnWidths({});\n\n const startColumnAppliedWidth = onGetAppliedWidth(column.key);\n const startNextColumnAppliedWidth =\n nextColumnKey !== undefined\n ? onGetAppliedWidth(nextColumnKey)\n : undefined;\n\n const startColumnPxWidth = Math.round(\n parsePixel(startColumnAppliedWidth) ?? 0\n );\n const startNextColumnPxWidth = Math.round(\n parsePixel(startNextColumnAppliedWidth) ?? 0\n );\n\n this.resizing = {\n startX: event.clientX,\n startColumnPxWidth,\n startNextColumnPxWidth,\n };\n\n window.addEventListener('pointermove', this._boundResize);\n window.addEventListener('pointerup', this._boundStopResize);\n }\n\n private _setColumnWidth(\n column: HdsAdvancedTableNormalizedColumn,\n width: number\n ): void {\n const { onSetTransientColumnWidth } = this.args;\n\n if (column === undefined || onSetTransientColumnWidth === undefined) {\n return;\n }\n\n onSetTransientColumnWidth(column.key, `${width}px`);\n }\n\n private _applyResizeDelta(\n deltaX: number,\n startColumnPxWidth: number,\n column?: HdsAdvancedTableNormalizedColumn,\n nextColumnKey?: HdsAdvancedTableNormalizedColumn['key'],\n startNextColumnPxWidth?: number\n ): void {\n const { onGetAppliedWidth, onGetColumnByKey, onSetTransientColumnWidth } =\n this.args;\n\n if (\n column === undefined ||\n onGetAppliedWidth === undefined ||\n onGetColumnByKey === undefined\n ) {\n return;\n }\n\n const canResizeNeighbor =\n nextColumnKey !== undefined && startNextColumnPxWidth !== undefined;\n\n if (canResizeNeighbor) {\n const nextColumn = onGetColumnByKey(nextColumnKey);\n\n if (nextColumn === undefined) {\n return;\n }\n\n const effectiveDelta = calculateEffectiveDelta(\n deltaX,\n column,\n startColumnPxWidth,\n nextColumn,\n startNextColumnPxWidth\n );\n\n // set the width for the current column\n this._setColumnWidth(\n column,\n Math.round(startColumnPxWidth + effectiveDelta)\n );\n\n // the actual new column width may differ from the intended width due to min/max constraints.\n const columnAppliedWidth = onGetAppliedWidth(column.key);\n const actualNewColumnWidth =\n parsePixel(columnAppliedWidth) ?? startColumnPxWidth;\n const actualAppliedDelta = actualNewColumnWidth - startColumnPxWidth;\n\n // set the width for the next sibling column\n this._setColumnWidth(\n nextColumn,\n Math.round(startNextColumnPxWidth - actualAppliedDelta)\n );\n\n this._transientDelta = actualAppliedDelta;\n } else if (onSetTransientColumnWidth !== undefined) {\n onSetTransientColumnWidth(\n column.key,\n `${Math.round(startColumnPxWidth + deltaX)}px`\n );\n }\n }\n\n private _resize(event: PointerEvent): void {\n this._lastPointerEvent = event;\n\n if (this._isUpdateQueued) {\n return;\n }\n\n this._isUpdateQueued = true;\n\n requestAnimationFrameWaiter(() => {\n if (this.resizing === null || this._lastPointerEvent === null) {\n this._isUpdateQueued = false;\n\n return;\n }\n\n const event = this._lastPointerEvent;\n\n event.preventDefault();\n\n const { column, siblingColumnKeys } = this.args;\n const { next: nextColumnKey } = siblingColumnKeys ?? {};\n const { startX, startColumnPxWidth, startNextColumnPxWidth } =\n this.resizing;\n const deltaX = event.clientX - startX;\n\n this._applyResizeDelta(\n deltaX,\n startColumnPxWidth, // Width at the start of the drag\n column,\n nextColumnKey,\n startNextColumnPxWidth // Width of next col at the start of the drag\n );\n\n this._isUpdateQueued = false;\n });\n }\n\n private _stopResize(): void {\n const {\n column,\n onGetAppliedWidth,\n onResetTransientColumnWidths,\n onUpdateResizeDebt,\n } = this.args;\n\n if (\n column === undefined ||\n onGetAppliedWidth === undefined ||\n onResetTransientColumnWidths === undefined ||\n onUpdateResizeDebt === undefined\n ) {\n return;\n }\n\n window.removeEventListener('pointermove', this._boundResize);\n window.removeEventListener('pointerup', this._boundStopResize);\n\n if (this._transientDelta !== 0) {\n onUpdateResizeDebt(this._transientDelta);\n }\n\n this._applyTransientWidths();\n\n // reset the transient width\n onResetTransientColumnWidths();\n\n // reset the resizing state\n this.resizing = null;\n this._transientDelta = 0;\n\n const appliedWidth = onGetAppliedWidth(column.key);\n\n this.onColumnResize(column.key, appliedWidth);\n }\n\n <template>\n {{! template-lint-disable no-pointer-down-event-binding }}\n <div\n class={{this.classNames}}\n draggable=\"false\"\n role=\"slider\"\n aria-orientation=\"horizontal\"\n aria-valuenow={{this.currentWidthInPixels}}\n aria-valuemin={{this.minWidthInPixels}}\n aria-valuemax={{this.maxWidthInPixels}}\n tabindex=\"0\"\n aria-label={{hdsT\n \"hds.components.advanced-table.th-resize-handle.aria-label\"\n columnLabel=@column.label\n default=(concat \"Resize \" @column.label \" column\")\n }}\n {{this._registerHandleElement}}\n {{on \"pointerdown\" this.startResize}}\n {{on \"keydown\" this.handleKeydown}}\n {{style height=this.height}}\n ...attributes\n />\n </template>\n}\n","/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { modifier } from 'ember-modifier';\nimport { on } from '@ember/modifier';\nimport style from 'ember-style-modifier';\n\nimport { BORDER_WIDTH } from './index.gts';\nimport { requestAnimationFrameWaiter } from './utils.ts';\nimport { HdsAdvancedTableColumnReorderSideValues } from './types.ts';\n\nimport type {\n HdsAdvancedTableNormalizedColumn,\n HdsAdvancedTableColumnReorderSide,\n} from './types.ts';\nimport type { HdsAdvancedTableSignature } from './index.gts';\n\nexport interface HdsAdvancedTableThReorderDropTargetSignature {\n Args: {\n column?: HdsAdvancedTableNormalizedColumn;\n draggedColumnKey?: HdsAdvancedTableNormalizedColumn['key'] | null;\n isFirstColumn: boolean;\n isLastColumn: boolean;\n hasSelectableRows?: HdsAdvancedTableSignature['Args']['isSelectable'];\n reorderHoveredColumnKey?: HdsAdvancedTableNormalizedColumn['key'] | null;\n draggedColumnSiblingColumnKeys?: {\n previous?: HdsAdvancedTableNormalizedColumn['key'];\n next?: HdsAdvancedTableNormalizedColumn['key'];\n };\n tableHeight?: number;\n onReorderDrop?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key'],\n side: HdsAdvancedTableColumnReorderSide\n ) => void;\n onSetReorderHoveredColumnKey?: (\n key: HdsAdvancedTableNormalizedColumn['key'] | null\n ) => void;\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTableThReorderDropTarget extends Component<HdsAdvancedTableThReorderDropTargetSignature> {\n @tracked private _dragSide: HdsAdvancedTableColumnReorderSide | null = null;\n @tracked private _isUpdateQueued: boolean = false;\n\n private _element!: HdsAdvancedTableThReorderDropTargetSignature['Element'];\n\n private _registerElement = modifier(\n (element: HdsAdvancedTableThReorderDropTargetSignature['Element']) => {\n this._element = element;\n }\n );\n\n // determines whether the drag event is occurring on the left or right side of the element\n private _getDragSide(event: DragEvent): HdsAdvancedTableColumnReorderSide {\n const rect = this._element.getBoundingClientRect();\n const mouseX = event.clientX;\n const elementMiddleX = rect.left + rect.width / 2;\n\n return mouseX < elementMiddleX\n ? HdsAdvancedTableColumnReorderSideValues.Left\n : HdsAdvancedTableColumnReorderSideValues.Right;\n }\n\n get isBeingDragged(): boolean {\n const { column, draggedColumnKey } = this.args;\n\n return column !== undefined && column.key === draggedColumnKey;\n }\n\n get isDraggingOver(): boolean {\n const { column, reorderHoveredColumnKey } = this.args;\n\n return column !== undefined && column.key === reorderHoveredColumnKey;\n }\n\n get classNames(): string {\n const { isFirstColumn, isLastColumn } = this.args;\n\n const classes = ['hds-advanced-table__th-reorder-drop-target'];\n\n if (isFirstColumn && !this.args.hasSelectableRows) {\n classes.push('hds-advanced-table__th-reorder-drop-target--is-first');\n } else if (isLastColumn) {\n classes.push('hds-advanced-table__th-reorder-drop-target--is-last');\n }\n\n if (this.isBeingDragged) {\n classes.push(\n 'hds-advanced-table__th-reorder-drop-target--is-being-dragged'\n );\n } else if (this.isDraggingOver && this._dragSide !== null) {\n classes.push(\n ...[\n 'hds-advanced-table__th-reorder-drop-target--is-dragging-over',\n `hds-advanced-table__th-reorder-drop-target--is-dragging-over--${this._dragSide}`,\n ]\n );\n }\n\n return classes.join(' ');\n }\n\n get height(): string | undefined {\n const { tableHeight } = this.args;\n\n if (tableHeight === undefined) {\n return;\n }\n\n return `${tableHeight - BORDER_WIDTH * 2}px`;\n }\n\n @action\n handleDragOver(event: DragEvent): void {\n event.preventDefault();\n\n if (this._isUpdateQueued) {\n return;\n }\n\n this._isUpdateQueued = true;\n\n requestAnimationFrameWaiter(() => {\n const {\n column,\n draggedColumnKey,\n draggedColumnSiblingColumnKeys,\n onSetReorderHoveredColumnKey,\n } = this.args;\n\n if (column === undefined || onSetReorderHoveredColumnKey === undefined) {\n return;\n }\n\n if (draggedColumnKey !== null) {\n if (this.isBeingDragged) {\n onSetReorderHoveredColumnKey(null);\n } else {\n onSetReorderHoveredColumnKey(column.key);\n\n const { next, previous } = draggedColumnSiblingColumnKeys ?? {};\n const dragSide = this._getDragSide(event);\n\n if (\n (column.key === previous &&\n dragSide === HdsAdvancedTableColumnReorderSideValues.Left) ||\n (column.key === next &&\n dragSide === HdsAdvancedTableColumnReorderSideValues.Right) ||\n (column.key !== previous && column.key !== next)\n ) {\n this._dragSide = dragSide;\n }\n }\n }\n\n this._isUpdateQueued = false;\n });\n }\n\n @action\n handleDrop(event: DragEvent): void {\n event.preventDefault();\n\n const { column, onReorderDrop, onSetReorderHoveredColumnKey } = this.args;\n const { _dragSide } = this;\n\n if (\n column === undefined ||\n _dragSide === null ||\n typeof onReorderDrop !== 'function' ||\n typeof onSetReorderHoveredColumnKey !== 'function'\n ) {\n return;\n }\n\n onReorderDrop(column.key, _dragSide);\n\n this._dragSide = null;\n\n onSetReorderHoveredColumnKey(null);\n }\n\n <template>\n <div\n class={{this.classNames}}\n aria-hidden=\"true\"\n {{style height=this.height}}\n {{this._registerElement}}\n {{on \"dragover\" this.handleDragOver}}\n {{on \"drop\" this.handleDrop}}\n ...attributes\n />\n </template>\n}\n","/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { guidFor } from '@ember/object/internals';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { scheduleOnce } from '@ember/runloop';\nimport { focusable, type FocusableElement } from 'tabbable';\nimport { modifier } from 'ember-modifier';\nimport style from 'ember-style-modifier';\nimport { and, not } from 'ember-truth-helpers';\n\nimport hdsScrollIntoViewOnFocus from '../../../modifiers/hds-scroll-into-view-on-focus.ts';\nimport hdsAdvancedTableCell from '../../../modifiers/hds-advanced-table-cell.ts';\n// @ts-expect-error: missing types https://github.com/josemarluedke/ember-focus-trap/issues/86\nimport focusTrap from 'ember-focus-trap/modifiers/focus-trap';\nimport { hash } from '@ember/helper';\nimport HdsLayoutFlex from '../layout/flex/index.gts';\nimport HdsAdvancedTableThButtonExpand from './th-button-expand.gts';\nimport HdsAdvancedTableThButtonSort from './th-button-sort.gts';\nimport HdsAdvancedTableThButtonTooltip from './th-button-tooltip.gts';\nimport HdsAdvancedTableThContextMenu from './th-context-menu.gts';\nimport HdsAdvancedTableThReorderHandle from './th-reorder-handle.gts';\nimport HdsAdvancedTableThResizeHandle from './th-resize-handle.gts';\nimport HdsAdvancedTableThReorderDropTarget from './th-reorder-drop-target.gts';\n\nimport { onFocusTrapDeactivate } from '../../../modifiers/hds-advanced-table-cell/dom-management.ts';\nimport {\n HdsAdvancedTableHorizontalAlignmentValues,\n HdsAdvancedTableThSortOrderLabelValues,\n HdsAdvancedTableThSortOrderValues,\n} from './types.ts';\n\nimport type {\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableScope,\n HdsAdvancedTableExpandState,\n HdsAdvancedTableColumnReorderSide,\n HdsAdvancedTableNormalizedColumn,\n HdsAdvancedTableThSortOrderLabels,\n HdsAdvancedTableThSortOrder,\n} from './types.ts';\n\nimport type { HdsCompositeSignature } from '../composite/index.gts';\nimport type { HdsAdvancedTableThButtonSortSignature } from './th-button-sort.gts';\nimport type { HdsAdvancedTableThReorderHandleSignature } from './th-reorder-handle.gts';\nimport type { HdsAdvancedTableThResizeHandleSignature } from './th-resize-handle.gts';\nimport type { HdsAdvancedTableSignature } from './index.gts';\nimport type Owner from '@ember/owner';\n\nexport const ALIGNMENTS: HdsAdvancedTableHorizontalAlignment[] = Object.values(\n HdsAdvancedTableHorizontalAlignmentValues\n);\nexport const DEFAULT_ALIGN = HdsAdvancedTableHorizontalAlignmentValues.Left;\n\nexport interface HdsAdvancedTableThSignature {\n Args: {\n align?: HdsAdvancedTableHorizontalAlignment;\n column?: HdsAdvancedTableNormalizedColumn;\n colspan?: number;\n compositeItem?: HdsCompositeSignature['Blocks']['default'][0]['item'];\n isCompositeItemDisabled?: boolean;\n depth?: number;\n draggedColumnKey?: HdsAdvancedTableNormalizedColumn['key'] | null;\n firstColumnKey?: HdsAdvancedTableNormalizedColumn['key'];\n firstNonStickyColumnKey?: HdsAdvancedTableNormalizedColumn['key'];\n hasExpandAllButton?: boolean;\n hasReorderableColumns?: HdsAdvancedTableSignature['Args']['hasReorderableColumns'];\n hasResizableColumns?: HdsAdvancedTableSignature['Args']['hasResizableColumns'];\n hasSelectableRows?: HdsAdvancedTableSignature['Args']['isSelectable'];\n hasStickyFirstColumn?: HdsAdvancedTableSignature['Args']['hasStickyFirstColumn'];\n isExpandable?: boolean;\n isExpanded?: HdsAdvancedTableExpandState;\n isStickyColumn?: boolean;\n isStickyColumnPinned?: boolean;\n lastColumnKey?: HdsAdvancedTableNormalizedColumn['key'];\n newLabel?: string;\n parentId?: string;\n reorderHoveredColumnKey?: HdsAdvancedTableNormalizedColumn['key'] | null;\n rowspan?: number;\n scope?: HdsAdvancedTableScope;\n siblingColumnKeys?: {\n previous?: HdsAdvancedTableNormalizedColumn['key'];\n next?: HdsAdvancedTableNormalizedColumn['key'];\n };\n draggedColumnSiblingColumnKeys?: {\n previous?: HdsAdvancedTableNormalizedColumn['key'];\n next?: HdsAdvancedTableNormalizedColumn['key'];\n };\n sortOrder?: HdsAdvancedTableThSortOrder;\n tableHeight?: number;\n tooltip?: string;\n didInsertExpandButton?: (button: HTMLButtonElement) => void;\n onApplyTransientWidth?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key']\n ) => void;\n onClickSort?: HdsAdvancedTableThButtonSortSignature['Args']['onClick'];\n onClickToggle?: () => void;\n onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];\n onGetAppliedWidth?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key']\n ) => HdsAdvancedTableNormalizedColumn['width'];\n onGetColumnByKey?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key']\n ) => HdsAdvancedTableNormalizedColumn | undefined;\n onMoveColumnToTerminalPosition?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key'],\n position: 'start' | 'end'\n ) => void;\n onPinFirstColumn?: () => void;\n onReorderDrop?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key'],\n side: HdsAdvancedTableColumnReorderSide\n ) => void;\n onResetTransientColumnWidths?: () => void;\n onRestoreColumnWidth?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key']\n ) => void;\n onSetDraggedColumnKey?: (\n key: HdsAdvancedTableNormalizedColumn['key'] | null\n ) => void;\n onSetReorderHoveredColumnKey?: (\n key: HdsAdvancedTableNormalizedColumn['key'] | null\n ) => void;\n onSetTransientColumnWidth?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key'],\n width: `${number}px`\n ) => void;\n onSetTransientColumnWidths?: (options: { roundValues?: boolean }) => void;\n onStepColumn?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key'],\n step: number\n ) => void;\n onUpdateResizeDebt?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key'],\n delta: number\n ) => void;\n willDestroyExpandButton?: (button: HTMLButtonElement) => void;\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTableTh extends Component<HdsAdvancedTableThSignature> {\n private _labelId: string;\n\n @tracked private _element!: HTMLDivElement;\n @tracked private _shouldTrapFocus = false;\n @tracked\n private _reorderHandleElement?: HdsAdvancedTableThReorderHandleSignature['Element'];\n @tracked\n private _resizeHandleElement?: HdsAdvancedTableThResizeHandleSignature['Element'];\n\n constructor(owner: Owner, args: HdsAdvancedTableThSignature['Args']) {\n super(owner, args);\n\n const { newLabel, rowspan, colspan, isStickyColumn } = args;\n\n if (isStickyColumn) {\n assert(\n 'Cannot have custom rowspan or colspan if there are nested rows.',\n rowspan === undefined || colspan === undefined\n );\n }\n\n this._labelId = newLabel ?? guidFor(this);\n }\n\n get isSortable(): boolean {\n return this.args.column?.isSortable ?? false;\n }\n\n get isFirstColumn(): boolean {\n const { column, firstColumnKey } = this.args;\n\n return (\n firstColumnKey !== undefined &&\n column !== undefined &&\n firstColumnKey === column.key\n );\n }\n\n get isFirstNonStickyColumn(): boolean {\n const { column, firstNonStickyColumnKey } = this.args;\n\n return (\n firstNonStickyColumnKey !== undefined &&\n column !== undefined &&\n firstNonStickyColumnKey === column.key\n );\n }\n\n get isLastColumn(): boolean {\n const { column, lastColumnKey } = this.args;\n\n return (\n lastColumnKey !== undefined &&\n column !== undefined &&\n lastColumnKey === column.key\n );\n }\n\n get tableHasColumnBeingDragged(): boolean {\n const { draggedColumnKey } = this.args;\n\n return draggedColumnKey != null;\n }\n\n get isColumnBeingDragged(): boolean {\n const { column, draggedColumnKey } = this.args;\n\n return (\n draggedColumnKey != null &&\n column !== undefined &&\n draggedColumnKey === column.key\n );\n }\n\n get scope(): HdsAdvancedTableScope {\n return this.args.scope ?? 'col';\n }\n\n get role(): string {\n return this.scope === 'col' ? 'columnheader' : 'rowheader';\n }\n\n get ariaSort(): HdsAdvancedTableThSortOrderLabels {\n switch (this.args.sortOrder) {\n case HdsAdvancedTableThSortOrderValues.Asc:\n return HdsAdvancedTableThSortOrderLabelValues.Asc;\n case HdsAdvancedTableThSortOrderValues.Desc:\n return HdsAdvancedTableThSortOrderLabelValues.Desc;\n default:\n // none is the default per the spec.\n return HdsAdvancedTableThSortOrderLabelValues.None;\n }\n }\n\n get align(): HdsAdvancedTableHorizontalAlignment {\n const { align = DEFAULT_ALIGN } = this.args;\n\n assert(\n `@align for \"Hds::Table::Th\" must be one of the following: ${ALIGNMENTS.join(\n ', '\n )}; received: ${align}`,\n ALIGNMENTS.includes(align)\n );\n\n return align;\n }\n\n // rowspan and colspan have to return 'auto' if not defined because otherwise the style modifier sets grid-area: undefined on the cell, which breaks the grid styles\n get rowspan(): string {\n return this.args.rowspan !== undefined\n ? `span ${this.args.rowspan}`\n : 'auto';\n }\n\n get colspan(): string | undefined {\n return this.args.colspan !== undefined\n ? `span ${this.args.colspan}`\n : 'auto';\n }\n\n get paddingLeft(): string | undefined {\n return this.args.depth !== undefined\n ? `calc(${this.args.depth} * 32px + 16px)`\n : undefined;\n }\n\n get classNames(): string {\n const { isStickyColumn, isStickyColumnPinned } = this.args;\n\n const classes = ['hds-advanced-table__th'];\n\n if (this.isSortable) {\n classes.push('hds-advanced-table__th--sort');\n }\n\n if (this.align) {\n classes.push(`hds-advanced-table__th--align-${this.align}`);\n }\n\n if (isStickyColumn) {\n classes.push('hds-advanced-table__th--is-sticky-column');\n }\n\n if (isStickyColumn && isStickyColumnPinned) {\n classes.push('hds-advanced-table__th--is-sticky-column-pinned');\n }\n\n if (this.isColumnBeingDragged) {\n classes.push('hds-advanced-table__th--is-being-dragged');\n }\n\n return classes.join(' ');\n }\n\n get showDropTarget(): boolean {\n const { isStickyColumn } = this.args;\n\n return this.tableHasColumnBeingDragged === true && !isStickyColumn;\n }\n\n get showResizeHandle(): boolean {\n const { hasResizableColumns } = this.args;\n\n return (\n hasResizableColumns === true &&\n !this.isLastColumn &&\n !this.tableHasColumnBeingDragged\n );\n }\n\n @action onFocusTrapDeactivate(): void {\n this._shouldTrapFocus = false;\n onFocusTrapDeactivate(this._element);\n }\n\n @action enableFocusTrap(): void {\n this._shouldTrapFocus = true;\n }\n\n @action getInitialFocus(): FocusableElement | undefined {\n const cellFocusableElements = focusable(this._element);\n\n return cellFocusableElements[0];\n }\n\n @action focusReorderHandle(): void {\n if (this._element === undefined) {\n return;\n }\n\n // focus the th element first (parent) to ensure the handle is visible\n this._element.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 @action applyTransientWidth(\n columnKey: HdsAdvancedTableNormalizedColumn['key']\n ): void {\n this.args.onApplyTransientWidth?.(columnKey);\n }\n\n @action resetTransientColumnWidths(): void {\n this.args.onResetTransientColumnWidths?.();\n }\n\n @action getAppliedWidth(\n columnKey: HdsAdvancedTableNormalizedColumn['key']\n ): HdsAdvancedTableNormalizedColumn['width'] | undefined {\n return this.args.onGetAppliedWidth?.(columnKey);\n }\n\n @action getColumnByKey(\n columnKey: HdsAdvancedTableNormalizedColumn['key']\n ): HdsAdvancedTableNormalizedColumn | undefined {\n return this.args.onGetColumnByKey?.(columnKey);\n }\n\n @action setDraggedColumnKey(\n columnKey: HdsAdvancedTableNormalizedColumn['key'] | null\n ): void {\n this.args.onSetDraggedColumnKey?.(columnKey);\n }\n\n @action setTransientColumnWidth(\n columnKey: HdsAdvancedTableNormalizedColumn['key'],\n width: `${number}px`\n ): void {\n const { column, onSetTransientColumnWidth } = this.args;\n\n if (column !== undefined && onSetTransientColumnWidth !== undefined) {\n onSetTransientColumnWidth(columnKey, width);\n }\n }\n\n @action setTransientColumnWidths(options: { roundValues?: boolean }): void {\n this.args.onSetTransientColumnWidths?.(options);\n }\n\n @action stepColumn(step: number): void {\n const { column, onStepColumn } = this.args;\n\n if (column !== undefined && onStepColumn !== undefined) {\n onStepColumn(column.key, step);\n }\n }\n\n @action updateResizeDebt(delta: number): void {\n const { column, onUpdateResizeDebt } = this.args;\n\n if (column !== undefined && onUpdateResizeDebt !== undefined) {\n onUpdateResizeDebt(column.key, delta);\n }\n }\n\n @action setElement(element: HTMLDivElement): void {\n // eslint-disable-next-line ember/no-runloop, ember/no-incorrect-calls-with-inline-anonymous-functions\n scheduleOnce('afterRender', () => {\n this._element = element;\n });\n }\n\n private _registerReorderHandleElement = modifier(\n (element: HdsAdvancedTableThReorderHandleSignature['Element']) => {\n this._reorderHandleElement = element;\n }\n );\n\n private _registerResizeHandleElement = modifier(\n (element: HdsAdvancedTableThResizeHandleSignature['Element']) => {\n this._resizeHandleElement = element;\n }\n );\n\n private _manageExpandButton = modifier((button: HTMLButtonElement) => {\n const { didInsertExpandButton, willDestroyExpandButton } = this.args;\n\n if (typeof didInsertExpandButton === 'function') {\n didInsertExpandButton(button);\n }\n\n return () => {\n if (typeof willDestroyExpandButton === 'function') {\n willDestroyExpandButton(button);\n }\n };\n });\n\n <template>\n <div\n class={{this.classNames}}\n role={{this.role}}\n aria-sort={{this.ariaSort}}\n aria-rowspan={{@rowspan}}\n aria-colspan={{@colspan}}\n aria-describedby={{@parentId}}\n {{style\n grid-row=this.rowspan\n grid-column=this.colspan\n padding-left=this.paddingLeft\n }}\n {{hdsAdvancedTableCell\n handleEnableFocusTrap=this.enableFocusTrap\n shouldTrapFocus=this._shouldTrapFocus\n setCellElement=this.setElement\n }}\n {{focusTrap\n isActive=this._shouldTrapFocus\n focusTrapOptions=(hash\n onDeactivate=this.onFocusTrapDeactivate\n initialFocus=this.getInitialFocus\n clickOutsideDeactivates=true\n )\n }}\n {{@compositeItem disabled=@isCompositeItemDisabled}}\n {{hdsScrollIntoViewOnFocus options=(hash block=\"center\" inline=\"center\")}}\n ...attributes\n >\n <HdsLayoutFlex @justify=\"space-between\" @align=\"center\" @gap=\"8\">\n {{#if @column.isVisuallyHidden}}\n <span class=\"sr-only\">{{yield}}</span>\n {{else}}\n {{#if (and @isExpandable (not this.isSortable))}}\n <HdsAdvancedTableThButtonExpand\n @labelId={{this._labelId}}\n @onToggle={{@onClickToggle}}\n @isExpanded={{@isExpanded}}\n @isExpandAll={{@hasExpandAllButton}}\n {{this._manageExpandButton}}\n />\n {{/if}}\n <div class=\"hds-advanced-table__th-content\">\n <span\n id={{this._labelId}}\n class=\"hds-advanced-table__th-content-text hds-typography-body-200 hds-font-weight-semibold\"\n >\n {{yield}}\n </span>\n {{#if @tooltip}}\n <HdsAdvancedTableThButtonTooltip\n @tooltip={{@tooltip}}\n @labelId={{this._labelId}}\n />\n {{/if}}\n </div>\n {{#if this.isSortable}}\n <HdsAdvancedTableThButtonSort\n @sortOrder={{@sortOrder}}\n @onClick={{@onClickSort}}\n @labelId={{this._labelId}}\n />\n {{/if}}\n {{#if @column}}\n <HdsAdvancedTableThContextMenu\n @column={{@column}}\n @hasReorderableColumns={{@hasReorderableColumns}}\n @hasResizableColumns={{@hasResizableColumns}}\n @isFirstColumn={{this.isFirstColumn}}\n @isFirstNonStickyColumn={{this.isFirstNonStickyColumn}}\n @isLastColumn={{this.isLastColumn}}\n @isStickyColumn={{@isStickyColumn}}\n @reorderHandleElement={{this._reorderHandleElement}}\n @resizeHandleElement={{this._resizeHandleElement}}\n @onColumnResize={{@onColumnResize}}\n @onFocusReorderHandle={{this.focusReorderHandle}}\n @onMoveColumnToTerminalPosition={{@onMoveColumnToTerminalPosition}}\n @onPinFirstColumn={{@onPinFirstColumn}}\n @onRestoreColumnWidth={{@onRestoreColumnWidth}}\n />\n {{#if (and @hasReorderableColumns (not @isStickyColumn))}}\n <HdsAdvancedTableThReorderHandle\n @column={{@column}}\n @tableHeight={{@tableHeight}}\n @thElement={{this._element}}\n @onFocusReorderHandle={{this.focusReorderHandle}}\n @onSetDraggedColumnKey={{this.setDraggedColumnKey}}\n @onStepColumn={{this.stepColumn}}\n {{this._registerReorderHandleElement}}\n />\n {{/if}}\n {{#if this.showResizeHandle}}\n <HdsAdvancedTableThResizeHandle\n @column={{@column}}\n @siblingColumnKeys={{@siblingColumnKeys}}\n @tableHeight={{@tableHeight}}\n @onApplyTransientWidth={{this.applyTransientWidth}}\n @onColumnResize={{@onColumnResize}}\n @onGetAppliedWidth={{this.getAppliedWidth}}\n @onGetColumnByKey={{this.getColumnByKey}}\n @onSetTransientColumnWidth={{this.setTransientColumnWidth}}\n @onSetTransientColumnWidths={{this.setTransientColumnWidths}}\n @onResetTransientColumnWidths={{this.resetTransientColumnWidths}}\n @onUpdateResizeDebt={{this.updateResizeDebt}}\n {{this._registerResizeHandleElement}}\n />\n {{/if}}\n {{/if}}\n {{/if}}\n </HdsLayoutFlex>\n {{#if this.showDropTarget}}\n <HdsAdvancedTableThReorderDropTarget\n @column={{@column}}\n @draggedColumnKey={{@draggedColumnKey}}\n @hasSelectableRows={{@hasSelectableRows}}\n @isFirstColumn={{this.isFirstColumn}}\n @isLastColumn={{this.isLastColumn}}\n @reorderHoveredColumnKey={{@reorderHoveredColumnKey}}\n @draggedColumnSiblingColumnKeys={{@draggedColumnSiblingColumnKeys}}\n @tableHeight={{@tableHeight}}\n @onReorderDrop={{@onReorderDrop}}\n @onSetReorderHoveredColumnKey={{@onSetReorderHoveredColumnKey}}\n />\n {{/if}}\n </div>\n </template>\n}\n","/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport { tracked } from '@glimmer/tracking';\nimport { modifier } from 'ember-modifier';\nimport { service } from '@ember/service';\nimport { on } from '@ember/modifier';\n\nimport type HdsIntlService from '../../../services/hds-intl';\n\nimport {\n HdsAdvancedTableThSortOrderValues,\n HdsAdvancedTableThSortOrderLabelValues,\n} from './types.ts';\nimport HdsAdvancedTableTh from './th.gts';\nimport HdsFormCheckboxBase from '../form/checkbox/base.gts';\nimport HdsAdvancedTableThButtonSort from './th-button-sort.gts';\n\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.gts';\nimport type {\n HdsAdvancedTableScope,\n HdsAdvancedTableThSortOrder,\n HdsAdvancedTableThSortOrderLabels,\n} from './types.ts';\nimport type { HdsAdvancedTableThSignature } from './th.gts';\nimport type { HdsCompositeSignature } from '../composite/index.gts';\n\nexport interface HdsAdvancedTableThSelectableSignature {\n Args: {\n compositeItem?: HdsCompositeSignature['Blocks']['default'][0]['item'];\n isCompositeItemDisabled?: boolean;\n didInsert?: (\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ) => void;\n isSelected?: boolean;\n onClickSortBySelected?: () => void;\n onSelectionChange?: (\n target: HdsFormCheckboxBaseSignature['Element'],\n selectionKey: string | undefined\n ) => void;\n selectionAriaLabelSuffix?: string;\n selectionKey?: string;\n selectionScope?: HdsAdvancedTableScope;\n sortBySelectedOrder?: HdsAdvancedTableThSortOrder;\n willDestroy?: (selectionKey?: string) => void;\n isStickyColumn?: boolean;\n isStickyColumnPinned?: boolean;\n };\n Element: HdsAdvancedTableThSignature['Element'];\n}\n\nexport default class HdsAdvancedTableThSelectable extends Component<HdsAdvancedTableThSelectableSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n @tracked private _isSelected = this.args.isSelected ?? false;\n\n private _guid = guidFor(this);\n private _checkboxId = `checkbox-${this._guid}`;\n private _labelId = `label-${this._guid}`;\n\n get isSortable(): boolean {\n return this.args.onClickSortBySelected !== undefined;\n }\n\n get ariaLabel(): string {\n const { selectionAriaLabelSuffix = 'row' } = this.args;\n const defaultString = `Select ${selectionAriaLabelSuffix}`;\n return this.hdsIntl.t(\n 'hds.components.advanced-table.th-selectable.aria-label',\n {\n default: defaultString,\n suffix: selectionAriaLabelSuffix,\n }\n );\n }\n\n get ariaSort(): HdsAdvancedTableThSortOrderLabels | undefined {\n switch (this.args.sortBySelectedOrder) {\n case HdsAdvancedTableThSortOrderValues.Asc:\n return HdsAdvancedTableThSortOrderLabelValues.Asc;\n case HdsAdvancedTableThSortOrderValues.Desc:\n return HdsAdvancedTableThSortOrderLabelValues.Desc;\n default:\n // none is the default per the spec.\n return HdsAdvancedTableThSortOrderLabelValues.None;\n }\n }\n\n private _manageCheckbox = modifier(\n (checkbox: HdsFormCheckboxBaseSignature['Element']) => {\n const { didInsert, willDestroy } = this.args;\n if (typeof didInsert === 'function') {\n didInsert(checkbox, this.args.selectionKey);\n }\n\n return () => {\n if (typeof willDestroy === 'function') {\n willDestroy(this.args.selectionKey);\n }\n };\n }\n );\n\n @action\n onSelectionChange(event: Event): void {\n // Assert event.target as HdsFormCheckboxBaseSignature['Element'] to access the 'checked' property\n const target = event.target as HdsFormCheckboxBaseSignature['Element'];\n this._isSelected = target.checked;\n const { onSelectionChange } = this.args;\n if (typeof onSelectionChange === 'function') {\n onSelectionChange(target, this.args.selectionKey);\n }\n }\n\n <template>\n <HdsAdvancedTableTh\n class=\"hds-advanced-table__th--is-selectable\"\n aria-sort={{if this.isSortable this.ariaSort}}\n @scope={{@selectionScope}}\n @isStickyColumn={{@isStickyColumn}}\n @isStickyColumnPinned={{@isStickyColumnPinned}}\n @compositeItem={{@compositeItem}}\n @isCompositeItemDisabled={{@isCompositeItemDisabled}}\n ...attributes\n >\n <div class=\"hds-advanced-table__th-content\">\n <HdsFormCheckboxBase\n id={{this._checkboxId}}\n class=\"hds-advanced-table__checkbox\"\n checked={{@isSelected}}\n aria-label={{this.ariaLabel}}\n {{this._manageCheckbox}}\n {{on \"change\" this.onSelectionChange}}\n />\n {{#if this.isSortable}}\n <HdsAdvancedTableThButtonSort\n @sortOrder={{@sortBySelectedOrder}}\n @onClick={{@onClickSortBySelected}}\n @labelId={{this._labelId}}\n />\n {{/if}}\n </div>\n </HdsAdvancedTableTh>\n </template>\n}\n","/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { hash } from '@ember/helper';\nimport { eq } from 'ember-truth-helpers';\n\nimport HdsAdvancedTableThSelectable from './th-selectable.gts';\n\nimport type {\n HdsAdvancedTableCell,\n HdsAdvancedTableScope,\n HdsAdvancedTableThSortOrder,\n} from './types.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.gts';\nimport type { HdsAdvancedTableSignature } from './index.gts';\nimport type { HdsCompositeSignature } from '../composite/index.gts';\nimport type { HdsAdvancedTableThSelectableSignature } from './th-selectable.gts';\n\ntype HdsCompositeDefaultBlock = HdsCompositeSignature['Blocks']['default'][0];\n\nexport interface BaseHdsAdvancedTableTrSignature<T> {\n Args: {\n columnOrder?: HdsAdvancedTableSignature['Args']['columnOrder'];\n compositeGroup?: HdsCompositeDefaultBlock['group'];\n compositeItem?: HdsCompositeDefaultBlock['item'];\n displayRow?: boolean;\n selectableColumnKey?: HdsAdvancedTableSignature['Args']['selectableColumnKey'];\n isCompositeItemDisabled?: boolean;\n isLastRow?: boolean;\n isSelectable?: boolean;\n isSelected?: boolean;\n isParentRow?: boolean;\n hasReorderableColumns?: HdsAdvancedTableSignature['Args']['hasReorderableColumns'];\n data?: T;\n selectionAriaLabelSuffix?: string;\n selectionKey?: string;\n selectionScope?: HdsAdvancedTableScope;\n sortBySelectedOrder?: HdsAdvancedTableThSortOrder;\n depth?: number;\n didInsert?: (\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ) => void;\n onSelectionChange?: (\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ) => void;\n willDestroy?: () => void;\n onClickSortBySelected?: HdsAdvancedTableThSelectableSignature['Args']['onClickSortBySelected'];\n hasStickyColumn?: boolean;\n isStickyColumnPinned?: boolean;\n };\n Blocks: {\n default?: [\n {\n orderedCells?: HdsAdvancedTableCell<T>[];\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\n/*\n * NOTE: There is currently an issue with `WithBoundArgs` or Glint that causes a typing error where @selectionKey is set as always required.\n *\n * Until this is fixed, we are holding off on doing a union with the SelectableHdsAdvancedTableTrArgs\n */\n\n// Extended interface for selectable rows\n// export interface SelectableHdsAdvancedTableTrArgs\n// extends BaseHdsAdvancedTableTrSignature {\n// Args: BaseHdsAdvancedTableTrSignature['Args'] & {\n// isSelectable: true;\n// selectionScope?: HdsAdvancedTableScopeValues.Row;\n// selectionKey: string; // Now required for selectable rows\n// };\n// }\n\n// Union type to combine both possible states\nexport type HdsAdvancedTableTrSignature<T> = BaseHdsAdvancedTableTrSignature<T>;\n// | SelectableHdsAdvancedTableTrArgs;\n\nexport default class HdsAdvancedTableTr<T> extends Component<\n HdsAdvancedTableTrSignature<T>\n> {\n get selectionKey(): string | undefined {\n if (this.args.isSelectable && this.args.selectionScope === 'row') {\n assert(\n `@selectionKey must be defined on Table::Tr or B.Tr when @isSelectable is true`,\n this.args.selectionKey\n );\n return this.args.selectionKey;\n }\n return undefined;\n }\n\n get classNames(): string {\n const { depth, isLastRow, isParentRow, displayRow } = this.args;\n const classes = ['hds-advanced-table__tr'];\n\n if (depth && depth > 0) {\n classes.push('hds-advanced-table__tr--nested');\n }\n\n if (isParentRow) {\n classes.push('hds-advanced-table__tr--parent-row');\n }\n\n if (displayRow === false) {\n classes.push('hds-advanced-table__tr--hidden');\n }\n\n if (isLastRow) {\n classes.push('hds-advanced-table__tr--last-row');\n }\n\n return classes.join(' ');\n }\n\n get cells(): HdsAdvancedTableCell<T>[] {\n const { columnOrder, data } = this.args;\n\n if (columnOrder === undefined || data == null) {\n return [];\n }\n\n return columnOrder.map((columnKey) => ({\n columnKey,\n content: data[columnKey as keyof T] as HdsAdvancedTableCell<T>['content'],\n }));\n }\n\n get orderedCells(): HdsAdvancedTableCell<T>[] | undefined {\n const { columnOrder, data, hasReorderableColumns } = this.args;\n\n if (columnOrder === undefined || data === undefined) {\n return this.cells;\n }\n\n if (hasReorderableColumns) {\n return columnOrder.reduce<HdsAdvancedTableCell<T>[]>((acc, key) => {\n const cell = this.cells.find((cell) => cell.columnKey === key);\n\n if (cell !== undefined) {\n acc.push(cell);\n }\n\n return acc;\n }, []);\n } else {\n return this.cells;\n }\n }\n\n <template>\n <div class={{this.classNames}} role=\"row\" {{@compositeGroup}} ...attributes>\n {{#if @isSelectable}}\n <HdsAdvancedTableThSelectable\n role={{if (eq @selectionScope \"row\") \"gridcell\" \"columnheader\"}}\n @compositeItem={{@compositeItem}}\n @isCompositeItemDisabled={{@isCompositeItemDisabled}}\n @isSelected={{@isSelected}}\n @selectionScope={{@selectionScope}}\n @selectionKey={{this.selectionKey}}\n @selectionAriaLabelSuffix={{@selectionAriaLabelSuffix}}\n @sortBySelectedOrder={{@sortBySelectedOrder}}\n @didInsert={{@didInsert}}\n @willDestroy={{@willDestroy}}\n @onClickSortBySelected={{@onClickSortBySelected}}\n @onSelectionChange={{@onSelectionChange}}\n @isStickyColumn={{@hasStickyColumn}}\n @isStickyColumnPinned={{@isStickyColumnPinned}}\n />\n {{/if}}\n\n {{yield (hash orderedCells=this.orderedCells)}}\n </div>\n </template>\n}\n","/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { guidFor } from '@ember/object/internals';\nimport { service } from '@ember/service';\nimport { modifier } from 'ember-modifier';\nimport { TrackedSet } from 'tracked-built-ins';\nimport { fn, hash } from '@ember/helper';\nimport { and, eq, not, notEq } from 'ember-truth-helpers';\nimport style from 'ember-style-modifier';\nimport { on } from '@ember/modifier';\nimport { sortBy } from '@nullvoxpopuli/ember-composable-helpers';\n\nimport { HdsAdvancedTableThSortOrderValues } from './types.ts';\nimport {\n HdsAdvancedTableDensityValues,\n HdsAdvancedTableVerticalAlignmentValues,\n} from './types.ts';\nimport HdsFilterBar from '../filter-bar/index.gts';\nimport HdsApplicationState from '../application-state/index.gts';\nimport HdsComposite from '../composite/index.gts';\nimport HdsAdvancedTableColumnManager from './column-manager/index.gts';\nimport HdsAdvancedTableTr from './tr.gts';\nimport HdsAdvancedTableTh from './th.gts';\nimport HdsAdvancedTableBody from './body.gts';\nimport HdsAdvancedTableTd from './td.gts';\nimport hdsT from '../../../helpers/hds-t.ts';\n\nimport type Owner from '@ember/owner';\nimport type { ComponentLike, WithBoundArgs } from '@glint/template';\nimport type {\n HdsAdvancedTableColumn,\n HdsAdvancedTableDensities,\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableOnSelectionChangeSignature,\n HdsAdvancedTableSelectableRow,\n HdsAdvancedTableSortingFunction,\n HdsAdvancedTableThSortOrder,\n HdsAdvancedTableVerticalAlignment,\n HdsAdvancedTableExpandState,\n HdsAdvancedTableColumnReorderCallback,\n HdsAdvancedTableModel,\n} from './types.ts';\n\nimport type { HdsAdvancedTableThSelectableSignature } from './th-selectable.gts';\nimport type { HdsAdvancedTableTrSignature } from './tr.gts';\nimport type { HdsFilterBarSignature } from '../filter-bar/index.gts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.gts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\n\n// a flattened signature for the yielded `Tr` component\n// Replaces `WithBoundArgs` to prevent TS infinite recursion crashes\n// when processing deeply nested tree-grid data models.\nexport interface YieldedHdsAdvancedTableTr<T> {\n Args: {\n isSelected?: boolean;\n selectionKey?: string;\n selectionAriaLabelSuffix?: string;\n selectableColumnKey?: string;\n sortBySelectedOrder?: HdsAdvancedTableThSortOrder;\n onClickSortBySelected?: HdsAdvancedTableThSelectableSignature['Args']['onClickSortBySelected'];\n };\n Blocks: HdsAdvancedTableTrSignature<T>['Blocks'];\n Element: HdsAdvancedTableTrSignature<T>['Element'];\n}\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 REORDER_EDGE_SCROLL_TRIGGER_PX = 48;\nconst REORDER_EDGE_SCROLL_STEP_PX = 16;\n\nconst getScrollIndicatorDimensions = (\n scrollWrapper: HTMLDivElement,\n theadElement: HTMLDivElement,\n hasStickyFirstColumn: boolean,\n isStickyColumnPinned: boolean\n) => {\n const horizontalScrollBarHeight =\n scrollWrapper.offsetHeight - scrollWrapper.clientHeight;\n const verticalScrollBarWidth =\n scrollWrapper.offsetWidth - scrollWrapper.clientWidth;\n\n let leftOffset = 0;\n\n if (hasStickyFirstColumn) {\n const stickyColumnHeaders = theadElement.querySelectorAll(\n '.hds-advanced-table__th--is-sticky-column'\n );\n\n stickyColumnHeaders?.forEach((el) => {\n // querySelectorAll returns Elements, which don't have offsetWidth\n // need to use offsetWidth to account for the cell borders\n const elAsHTMLElement = el as HTMLElement;\n leftOffset += elAsHTMLElement.offsetWidth;\n });\n\n // offsets the left: -1px position if there are multiple sticky columns or the first column has a fixed pixel width\n if (stickyColumnHeaders.length > 1) {\n leftOffset -= 1;\n }\n\n // offsets the left: -1px position if the sticky column is already pinned when the scroll indicator is calculated\n if (isStickyColumnPinned) {\n leftOffset -= 1;\n }\n }\n\n return {\n bottom: `${horizontalScrollBarHeight}px`,\n height: `${scrollWrapper.offsetHeight - horizontalScrollBarHeight}px`,\n left: `${leftOffset}px`,\n right: `${verticalScrollBarWidth}px`,\n width: `${scrollWrapper.offsetWidth - verticalScrollBarWidth}px`,\n };\n};\n\nconst getStickyColumnLeftOffset = (\n theadElement: HTMLDivElement,\n hasRowSelection: boolean,\n isStickyColumnPinned: boolean\n) => {\n // if there is no select checkbox column, the sticky column is all the way to the left\n if (!hasRowSelection) return '0px';\n\n const selectableCell = theadElement.querySelector(\n '.hds-advanced-table__th--is-selectable'\n ) as HTMLElement;\n\n let leftOffset = selectableCell?.offsetWidth ?? 0;\n\n // if the sticky column is pinned when the offset is calculated, we need to account for the increased width of the border\n if (isStickyColumnPinned && leftOffset > 0) {\n leftOffset -= 2;\n }\n\n return `${leftOffset}px`;\n};\n\nexport interface HdsAdvancedTableSignature<T = HdsAdvancedTableModel> {\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: T[];\n reorderedMessageText?: string;\n selectionAriaLabelSuffix?: string;\n sortBy?: string;\n selectableColumnKey?: string;\n sortedMessageText?: string;\n sortOrder?: HdsAdvancedTableThSortOrder;\n valign?: HdsAdvancedTableVerticalAlignment;\n hasReorderableColumns?: boolean;\n hasResizableColumns?: boolean;\n hasStickyHeader?: boolean;\n hasStickyFirstColumn?: boolean;\n childrenKey?: string;\n maxHeight?: string;\n onColumnReorder?: HdsAdvancedTableColumnReorderCallback;\n onColumnResize?: (columnKey: string, newWidth?: string) => void;\n onSelectionChange?: (\n selection: HdsAdvancedTableOnSelectionChangeSignature\n ) => void;\n onSort?: (sortBy: string, sortOrder: HdsAdvancedTableThSortOrder) => void;\n };\n Blocks: {\n actions?: [\n {\n FilterBar?: ComponentLike<HdsFilterBarSignature>;\n },\n ];\n body?: [\n {\n Td?: WithBoundArgs<\n typeof HdsAdvancedTableTd,\n 'align' | 'compositeItem' | 'isCompositeItemDisabled'\n >;\n Tr?: ComponentLike<YieldedHdsAdvancedTableTr<T>>;\n Th?: WithBoundArgs<\n typeof HdsAdvancedTableTh,\n | 'compositeItem'\n | 'isCompositeItemDisabled'\n | 'depth'\n | 'isExpandable'\n | 'isExpanded'\n | 'isStickyColumnPinned'\n | 'newLabel'\n | 'onClickToggle'\n | 'parentId'\n | 'scope'\n >;\n data: T;\n rowIndex?: number | string;\n isOpen?: HdsAdvancedTableExpandState;\n },\n ];\n emptyState?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTable<\n T = HdsAdvancedTableModel,\n> extends Component<HdsAdvancedTableSignature<T>> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n @tracked\n private _selectAllCheckbox?: HdsFormCheckboxBaseSignature['Element'] =\n undefined;\n @tracked private _isSelectAllCheckboxSelected?: boolean = undefined;\n @tracked private _tableHeight = 0;\n private _selectableRows: HdsAdvancedTableSelectableRow[] = [];\n private _captionId = 'caption-' + guidFor(this);\n private _scrollHandler!: (event: Event) => void;\n private _dragOverHandler!: (event: DragEvent) => void;\n private _resizeObserver!: ResizeObserver;\n private _theadElement!: HTMLDivElement;\n private _scrollWrapperElement!: HTMLDivElement;\n\n @tracked scrollIndicatorDimensions = DEFAULT_SCROLL_DIMENSIONS;\n @tracked isStickyColumnPinned = false;\n @tracked isStickyHeaderPinned = false;\n @tracked hasPinnedFirstColumn: boolean | undefined = undefined;\n @tracked reorderedMessageText = '';\n @tracked showScrollIndicatorLeft = false;\n @tracked showScrollIndicatorRight = false;\n @tracked showScrollIndicatorTop = false;\n @tracked showScrollIndicatorBottom = false;\n @tracked stickyColumnOffset = '0px';\n\n // sorting properties\n @tracked currentSortBy?: string;\n @tracked currentSortOrder: HdsAdvancedTableThSortOrder =\n HdsAdvancedTableThSortOrderValues.Asc;\n\n // row expansion properties\n expandedRowIds = new TrackedSet<string>();\n\n private _setUpScrollWrapper = modifier((element: HTMLDivElement) => {\n this._scrollWrapperElement = element;\n\n const updateHorizontalScrollIndicators = () => {\n this.showScrollIndicatorRight = element.clientWidth < element.scrollWidth;\n };\n\n this._scrollHandler = () => {\n this._updateScrollIndicators(element);\n };\n\n this._dragOverHandler = (event: DragEvent) => {\n if (this.args.hasReorderableColumns !== true) {\n return;\n }\n\n const canScrollHorizontally = element.scrollWidth > element.clientWidth;\n\n if (!canScrollHorizontally) {\n return;\n }\n\n const firstReorderDropTarget = element.querySelector(\n '.hds-advanced-table__th-reorder-drop-target'\n );\n\n if (firstReorderDropTarget === null) {\n return;\n }\n\n const stickyColumnHeaders = element.querySelectorAll(\n '.hds-advanced-table__th--is-sticky-column'\n );\n const lastStickyColumnHeader = stickyColumnHeaders[\n stickyColumnHeaders.length - 1\n ] as HTMLDivElement | undefined;\n\n const leftVisibleEdge =\n lastStickyColumnHeader?.getBoundingClientRect().right ??\n firstReorderDropTarget.getBoundingClientRect().left;\n\n const leftScrollTrigger =\n lastStickyColumnHeader !== undefined\n ? leftVisibleEdge\n : leftVisibleEdge + REORDER_EDGE_SCROLL_TRIGGER_PX;\n\n const { right } = element.getBoundingClientRect();\n const rightScrollTrigger = right - REORDER_EDGE_SCROLL_TRIGGER_PX;\n\n if (event.clientX <= leftScrollTrigger) {\n element.scrollBy({ left: -REORDER_EDGE_SCROLL_STEP_PX });\n } else if (event.clientX >= rightScrollTrigger) {\n element.scrollBy({ left: REORDER_EDGE_SCROLL_STEP_PX });\n }\n };\n\n element.addEventListener('scroll', this._scrollHandler);\n element.addEventListener('dragover', this._dragOverHandler);\n\n const updateMeasurements = () => {\n const { isSelectable = false } = this.args;\n\n const newTableHeight = element.offsetHeight;\n\n const newDimensions = getScrollIndicatorDimensions(\n element,\n this._theadElement,\n this.hasStickyFirstColumn ? true : false,\n this.isStickyColumnPinned\n );\n\n const setUpdatedMeasurements = () => {\n if (this.isDestroying || this.isDestroyed) {\n return;\n }\n\n const isSameBottom =\n this.scrollIndicatorDimensions.bottom === newDimensions.bottom;\n const isSameHeight =\n this.scrollIndicatorDimensions.height === newDimensions.height;\n const isSameLeft =\n this.scrollIndicatorDimensions.left === newDimensions.left;\n const isSameRight =\n this.scrollIndicatorDimensions.right === newDimensions.right;\n\n if (\n isSameBottom &&\n isSameHeight &&\n isSameLeft &&\n isSameRight &&\n this._tableHeight === newTableHeight\n ) {\n return;\n }\n\n this._tableHeight = newTableHeight;\n this.scrollIndicatorDimensions = newDimensions;\n\n if (this.hasStickyFirstColumn) {\n this.stickyColumnOffset = getStickyColumnLeftOffset(\n this._theadElement,\n isSelectable,\n this.isStickyColumnPinned\n );\n }\n };\n\n window.requestAnimationFrame(setUpdatedMeasurements);\n };\n\n this._resizeObserver = new ResizeObserver((entries) => {\n entries.forEach(() => {\n updateMeasurements();\n updateHorizontalScrollIndicators();\n });\n });\n\n this._resizeObserver.observe(element);\n\n updateMeasurements();\n\n // on render check if should show right scroll indicator\n updateHorizontalScrollIndicators();\n\n // on render check if should show bottom scroll indicator\n if (element.clientHeight < element.scrollHeight) {\n this.showScrollIndicatorBottom = true;\n }\n\n return () => {\n element.removeEventListener('scroll', this._scrollHandler);\n element.removeEventListener('dragover', this._dragOverHandler);\n this._resizeObserver.disconnect();\n };\n });\n\n private _setUpThead = modifier((element: HTMLDivElement) => {\n this._theadElement = element;\n });\n\n private _syncSortArgs = modifier(() => {\n const { sortBy, sortOrder } = this.args;\n\n if (sortBy !== undefined) {\n this.currentSortBy = sortBy;\n }\n\n if (sortOrder !== undefined) {\n this.currentSortOrder = sortOrder;\n }\n });\n\n constructor(owner: Owner, args: HdsAdvancedTableSignature<T>['Args']) {\n super(owner, args);\n\n const { hasStickyFirstColumn, model } = args;\n\n this._runAssertions();\n\n this._initializeExpandedRows(model);\n\n if (hasStickyFirstColumn) {\n this.hasPinnedFirstColumn = true;\n }\n }\n\n get childrenKey(): string {\n return this.args.childrenKey ?? 'children';\n }\n\n get hasRowsWithChildren(): boolean {\n const { model } = this.args;\n\n return model.some((record) => {\n const children = (record as Record<string, unknown>)[this.childrenKey] as\n | Record<string, unknown>[]\n | undefined;\n\n return Array.isArray(children) && children.length > 0;\n });\n }\n\n @cached\n get expandableRowIds(): string[] {\n const { model } = this.args;\n\n const ids: string[] = [];\n\n const collect = (items: Record<string, unknown>[]) => {\n items.forEach((item) => {\n const children = item[this.childrenKey] as\n | Record<string, unknown>\n | undefined;\n\n if (Array.isArray(children) && children.length > 0) {\n ids.push(guidFor(item));\n\n collect(children);\n }\n });\n };\n\n collect(model as Record<string, unknown>[]);\n\n return ids;\n }\n\n get isAllExpanded(): boolean {\n if (this.expandableRowIds.length === 0) {\n return false;\n }\n\n return this.expandableRowIds.every((id) => this.expandedRowIds.has(id));\n }\n\n get sortCriteria(): string | HdsAdvancedTableSortingFunction<unknown> {\n const { columns } = this.args;\n\n const currentColumn = columns.find(\n (column) => column.key === this.currentSortBy\n );\n\n if (\n currentColumn?.sortingFunction &&\n typeof currentColumn.sortingFunction === 'function'\n ) {\n return currentColumn.sortingFunction;\n } else {\n return `${this.currentSortBy}:${this.currentSortOrder}`;\n }\n }\n\n get isEmpty(): boolean {\n const { model } = this.args;\n\n return model.length === 0;\n }\n\n get identityKey(): string | undefined {\n // we have to provide a way for the consumer to pass undefined because Ember tries to interpret undefined as missing an arg and therefore falls back to the default\n if (this.args.identityKey === 'none') {\n return undefined;\n } else {\n return this.args.identityKey ?? '@identity';\n }\n }\n\n get hasStickyFirstColumn(): boolean | undefined {\n // The user-controlled `hasPinnedFirstColumn` variable takes precedence over the model's `hasStickyFirstColumn` property.\n if (this.hasPinnedFirstColumn !== undefined) {\n return this.hasPinnedFirstColumn;\n } else if (this.args.hasStickyFirstColumn === false) {\n return this.args.hasStickyFirstColumn;\n }\n\n return undefined;\n }\n\n get sortedMessageText(): string {\n const { sortedMessageText } = this.args;\n\n if (sortedMessageText !== undefined) {\n return sortedMessageText;\n } else if (this.currentSortBy !== undefined) {\n // we should allow the user to define a custom value here (e.g., for i18n) - tracked with HDS-965\n return `Sorted by ${this.currentSortBy} ${this.currentSortOrder}ending`;\n } else {\n return '';\n }\n }\n\n get isSelectable(): boolean {\n const { isSelectable = false } = this.args;\n\n if (this.hasRowsWithChildren) {\n assert(\n '@isSelectable must not be true if there are nested rows.',\n !isSelectable\n );\n return isSelectable;\n }\n\n return isSelectable;\n }\n\n get isStriped(): boolean {\n const { isStriped = false } = this.args;\n\n if (this.hasRowsWithChildren) {\n assert(\n '@isStriped must not be true if there are nested rows.',\n !isStriped\n );\n return isStriped;\n }\n\n return isStriped;\n }\n\n get density(): HdsAdvancedTableDensities {\n const { density = DEFAULT_DENSITY } = this.args;\n\n assert(\n `@density for \"Hds::Table\" must be one of the following: ${DENSITIES.join(\n ', '\n )}; received: ${density}`,\n DENSITIES.includes(density)\n );\n\n return density;\n }\n\n get hasStickyHeader(): boolean {\n if (this.args.maxHeight && this.args.hasStickyHeader !== false) {\n return true;\n } else if (this.args.hasStickyHeader && !this.args.maxHeight) {\n assert('Must set @maxHeight to use @hasStickyHeader.', false);\n }\n\n return false;\n }\n\n get valign(): HdsAdvancedTableVerticalAlignment {\n const { valign = DEFAULT_VALIGN } = this.args;\n\n assert(\n `@valign for \"Hds::Table\" must be one of the following: ${VALIGNMENTS.join(\n ', '\n )}; received: ${valign}`,\n VALIGNMENTS.includes(valign)\n );\n\n return valign;\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table'];\n\n if (this.isStriped) {\n classes.push('hds-advanced-table--striped');\n }\n\n if (this.density) {\n classes.push(`hds-advanced-table--density-${this.density}`);\n }\n\n if (this.valign) {\n classes.push(`hds-advanced-table--valign-${this.valign}`);\n }\n\n if (this.hasRowsWithChildren) {\n classes.push(`hds-advanced-table--nested`);\n }\n\n if (this.hasStickyFirstColumn) {\n classes.push('hds-advanced-table--has-sticky-first-column');\n }\n\n if (this.hasStickyFirstColumn && this.isStickyColumnPinned) {\n classes.push('hds-advanced-table--sticky-first-column-pinned');\n }\n\n return classes.join(' ');\n }\n\n get theadClassNames(): string {\n const { hasResizableColumns } = this.args;\n\n const classes = ['hds-advanced-table__thead'];\n\n if (this.hasStickyHeader) {\n classes.push('hds-advanced-table__thead--sticky');\n }\n\n if (this.isStickyHeaderPinned) {\n classes.push('hds-advanced-table__thead--is-pinned');\n }\n\n if (hasResizableColumns) {\n classes.push('hds-advanced-table__thead--has-resizable-columns');\n }\n\n return classes.join(' ');\n }\n\n // these bridge the gap between strict TS and dynamic Glimmer templates\n asRowData = (source: Record<string, unknown>): T => source as unknown as T;\n asScope = (scope: string): 'col' | 'row' => scope as 'col' | 'row';\n // flattens the row interface to fix the potentially infinite nesting of rows with children\n asTr = (comp: unknown) => comp as ComponentLike<YieldedHdsAdvancedTableTr<T>>;\n\n private _initializeExpandedRows(model: T[]) {\n const traverse = (items: Record<string, unknown>[]) => {\n items.forEach((item) => {\n if (item['isOpen'] === true) {\n this.expandedRowIds.add(guidFor(item));\n }\n\n const children = item[this.childrenKey] as\n | Record<string, unknown>[]\n | undefined;\n\n if (Array.isArray(children) && children.length > 0) {\n traverse(children);\n }\n });\n };\n\n traverse(model as Record<string, unknown>[]);\n }\n\n private _runAssertions() {\n const {\n columns,\n hasReorderableColumns,\n hasResizableColumns,\n hasStickyFirstColumn,\n } = this.args;\n\n if (this.hasRowsWithChildren) {\n const sortableColumns = columns.filter((column) => column.isSortable);\n const sortableColumnLabels = sortableColumns.map(\n (column) => column.label\n );\n\n assert(\n 'Cannot have reorderable columns if there are nested rows.',\n !hasReorderableColumns\n );\n\n assert(\n `Cannot have sortable columns if there are nested rows. Sortable columns are ${sortableColumnLabels.toString()}`,\n sortableColumns.length === 0\n );\n\n assert(\n 'Cannot have a sticky first column if there are nested rows.',\n hasStickyFirstColumn === undefined\n );\n\n assert(\n `Cannot have resizable columns if there are nested rows.`,\n !hasResizableColumns\n );\n }\n }\n\n private _onColumnReorder: HdsAdvancedTableColumnReorderCallback = ({\n column,\n newOrder,\n insertedAt,\n }) => {\n // Guard against accessing hdsIntl service after component destruction\n if (this.isDestroying || this.isDestroyed) return;\n\n const { reorderedMessageText } = this.args;\n\n if (reorderedMessageText !== undefined) {\n this.reorderedMessageText = reorderedMessageText;\n } else {\n const newPosition = insertedAt + 1;\n const translatedReorderedMessageText = this.hdsIntl.t(\n 'hds.advanced-table.reordered-message',\n {\n default: `Moved ${column.label} column to position ${newPosition}`,\n columnLabel: column.label,\n newPosition,\n }\n );\n\n this.reorderedMessageText = translatedReorderedMessageText;\n }\n\n this.args.onColumnReorder?.({\n column,\n newOrder,\n insertedAt,\n });\n };\n\n onSelectionChangeCallback(\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n const { onSelectionChange } = this.args;\n\n if (typeof onSelectionChange !== 'function') return;\n\n onSelectionChange({\n selectionKey: selectionKey,\n selectionCheckboxElement: checkbox,\n selectedRowsKeys: this._selectableRows.reduce<string[]>((acc, row) => {\n if (row.checkbox.checked) {\n acc.push(row.selectionKey);\n }\n return acc;\n }, []),\n selectableRowsStates: this._selectableRows.reduce(\n (\n acc: { selectionKey: string; isSelected: boolean | undefined }[],\n row\n ) => {\n acc.push({\n selectionKey: row.selectionKey,\n isSelected: row.checkbox.checked,\n });\n return acc;\n },\n []\n ),\n });\n }\n\n @action\n toggleExpandAll() {\n const allIds = this.expandableRowIds;\n const isAllExpanded = allIds.every((id) => this.expandedRowIds.has(id));\n\n if (isAllExpanded) {\n this.expandedRowIds.clear();\n } else {\n // Add all IDs efficiently\n allIds.forEach((id) => this.expandedRowIds.add(id));\n }\n }\n\n @action\n toggleRow(rowId: string) {\n if (this.expandedRowIds.has(rowId)) {\n this.expandedRowIds.delete(rowId);\n } else {\n this.expandedRowIds.add(rowId);\n }\n }\n\n @action\n onSelectionAllChange(): void {\n this._selectableRows.forEach((row) => {\n row.checkbox.checked = this._selectAllCheckbox?.checked ?? false;\n });\n this._isSelectAllCheckboxSelected =\n this._selectAllCheckbox?.checked ?? false;\n this.onSelectionChangeCallback(this._selectAllCheckbox, 'all');\n }\n\n @action\n onSelectionRowChange(\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n this.setSelectAllState();\n this.onSelectionChangeCallback(checkbox, selectionKey);\n }\n\n @action\n didInsertSelectAllCheckbox(\n checkbox: HdsFormCheckboxBaseSignature['Element']\n ): void {\n this._selectAllCheckbox = checkbox;\n }\n\n @action\n willDestroySelectAllCheckbox(): void {\n this._selectAllCheckbox = undefined;\n }\n\n @action\n didInsertRowCheckbox(\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n if (selectionKey) {\n this._selectableRows.push({ selectionKey, checkbox });\n }\n this.setSelectAllState();\n }\n\n @action\n willDestroyRowCheckbox(selectionKey?: string): void {\n if (selectionKey === undefined) {\n return;\n }\n\n const index = this._selectableRows.findIndex(\n (row) => row.selectionKey === selectionKey\n );\n\n if (index === -1) {\n return;\n }\n\n this._selectableRows.splice(index, 1);\n\n this.setSelectAllState();\n }\n\n @action\n setSelectAllState(): void {\n if (this._selectAllCheckbox) {\n const selectableRowsCount = this._selectableRows.length;\n const selectedRowsCount = this._selectableRows.filter(\n (row) => row.checkbox.checked\n ).length;\n\n this._selectAllCheckbox.checked =\n selectedRowsCount === selectableRowsCount;\n this._selectAllCheckbox.indeterminate =\n selectedRowsCount > 0 && selectedRowsCount < selectableRowsCount;\n this._isSelectAllCheckboxSelected = this._selectAllCheckbox.checked;\n }\n }\n\n @action\n setSortBy(columnKey: HdsAdvancedTableColumn['key']): void {\n const { onSort } = this.args;\n\n if (columnKey === undefined) {\n return;\n }\n\n let newSortOrder = HdsAdvancedTableThSortOrderValues.Asc;\n\n if (this.currentSortBy === columnKey) {\n newSortOrder =\n this.currentSortOrder === HdsAdvancedTableThSortOrderValues.Asc\n ? HdsAdvancedTableThSortOrderValues.Desc\n : HdsAdvancedTableThSortOrderValues.Asc;\n }\n\n this.currentSortBy = columnKey;\n this.currentSortOrder = newSortOrder;\n\n if (typeof onSort === 'function') {\n onSort(columnKey, newSortOrder);\n }\n }\n\n private _updateScrollIndicators(element: HTMLElement): void {\n // 6px as a buffer so the shadow doesn't appear over the border radius on the edge of the table\n const SCROLL_BUFFER = 6;\n\n // left scroll indicator and sticky column styles\n if (element.scrollLeft > SCROLL_BUFFER) {\n if (this.hasStickyFirstColumn) {\n this.isStickyColumnPinned = true;\n }\n if (!this.showScrollIndicatorLeft) {\n this.showScrollIndicatorLeft = true;\n }\n } else if (element.scrollLeft === 0 && this.showScrollIndicatorLeft) {\n this.isStickyColumnPinned = false;\n this.showScrollIndicatorLeft = false;\n }\n\n // the right edge is how far the user can scroll, which is the full width of the table - the visible section of the table (also subtract the buffer)\n const rightEdge = element.scrollWidth - element.clientWidth - SCROLL_BUFFER;\n\n // right scroll indicator\n if (element.scrollLeft < rightEdge) {\n this.showScrollIndicatorRight = true;\n } else {\n this.showScrollIndicatorRight = false;\n }\n\n // sticky header\n if (element.scrollTop > 0) {\n if (this.hasStickyHeader) {\n this.isStickyHeaderPinned = true;\n }\n this.showScrollIndicatorTop = true;\n } else {\n if (this.hasStickyHeader) {\n this.isStickyHeaderPinned = false;\n }\n this.showScrollIndicatorTop = false;\n }\n\n // the bottom edge is how far the user can scroll, which is the full height of the table - the visible section of the table (also subtract the buffer)\n const bottomEdge =\n element.scrollHeight - element.clientHeight - SCROLL_BUFFER;\n\n // bottom scroll indicator\n if (element.scrollTop < bottomEdge) {\n this.showScrollIndicatorBottom = true;\n } else {\n this.showScrollIndicatorBottom = false;\n }\n }\n\n private _onPinFirstColumn = (): void => {\n this.hasPinnedFirstColumn = this.hasPinnedFirstColumn ? false : true;\n // we need to retrigger the scroll indicator updates if the pinned state is changed when the table is already scrolled\n this._updateScrollIndicators(this._scrollWrapperElement);\n };\n\n <template>\n <div class=\"hds-advanced-table__actions-container-wrapper\">\n {{#if (has-block \"actions\")}}\n <div class=\"hds-advanced-table__actions\">\n {{yield (hash FilterBar=(component HdsFilterBar)) to=\"actions\"}}\n </div>\n {{/if}}\n\n <div\n class=\"hds-advanced-table__container\n {{(if\n this.isStickyHeaderPinned\n 'hds-advanced-table__container--header-is-pinned'\n )}}\"\n {{this._syncSortArgs}}\n ...attributes\n >\n {{! Caption }}\n <div\n id={{this._captionId}}\n class=\"sr-only hds-advanced-table__caption\"\n aria-live=\"polite\"\n >\n {{@caption}}\n {{this.sortedMessageText}}\n {{this.reorderedMessageText}}\n </div>\n\n <HdsAdvancedTableColumnManager\n @columns={{@columns}}\n @columnOrder={{@columnOrder}}\n @hasReorderableColumns={{@hasReorderableColumns}}\n @hasStickyFirstColumn={{this.hasStickyFirstColumn}}\n @isSelectable={{@isSelectable}}\n @onColumnReorder={{this._onColumnReorder}}\n as |CM|\n >\n <HdsComposite as |C|>\n {{! Grid }}\n <div\n class={{this.classNames}}\n role=\"grid\"\n aria-describedby={{this._captionId}}\n {{style\n grid-template-columns=CM.gridTemplateColumns\n --hds-advanced-table-sticky-column-offset=this.stickyColumnOffset\n max-height=@maxHeight\n }}\n {{this._setUpScrollWrapper}}\n {{CM.syncColumnOrder CM.columns @columnOrder}}\n {{CM.syncWidthValues}}\n {{C.composite}}\n >\n {{! Header }}\n <div\n class={{this.theadClassNames}}\n role=\"rowgroup\"\n {{this._setUpThead}}\n {{on \"dragleave\" (fn CM.setReorderHoveredColumnKey null)}}\n >\n <HdsAdvancedTableTr\n @compositeGroup={{C.group}}\n @compositeItem={{C.item}}\n @selectionScope=\"col\"\n @onClickSortBySelected={{if\n @selectableColumnKey\n (fn this.setSortBy @selectableColumnKey)\n }}\n @sortBySelectedOrder={{if\n (eq this.currentSortBy @selectableColumnKey)\n this.currentSortOrder\n }}\n @isSelectable={{this.isSelectable}}\n @onSelectionChange={{this.onSelectionAllChange}}\n @didInsert={{this.didInsertSelectAllCheckbox}}\n @willDestroy={{this.willDestroySelectAllCheckbox}}\n @selectionAriaLabelSuffix=\"all rows\"\n @hasStickyColumn={{this.hasStickyFirstColumn}}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n >\n {{#each CM.orderedColumns as |column|}}\n <HdsAdvancedTableTh\n @align={{column.align}}\n @column={{column}}\n @compositeItem={{C.item}}\n @draggedColumnKey={{CM.draggedColumnKey}}\n @firstColumnKey={{CM.firstColumnKey}}\n @firstNonStickyColumnKey={{CM.firstNonStickyColumnKey}}\n @hasReorderableColumns={{@hasReorderableColumns}}\n @hasResizableColumns={{@hasResizableColumns}}\n @hasSelectableRows={{this.isSelectable}}\n @hasStickyFirstColumn={{this.hasStickyFirstColumn}}\n @isStickyColumn={{if\n (and\n (eq column.key CM.firstColumnKey)\n (notEq this.hasStickyFirstColumn undefined)\n )\n this.hasStickyFirstColumn\n undefined\n }}\n @isStickyColumnPinned={{this.isStickyColumnPinned}}\n @lastColumnKey={{CM.lastColumnKey}}\n @reorderHoveredColumnKey={{CM.reorderHoveredColumnKey}}\n @draggedColumnSiblingColumnKeys={{if\n CM.draggedColumnKey\n (CM.getSiblingColumnKeys CM.draggedColumnKey)\n }}\n @siblingColumnKeys={{CM.getSiblingColumnKeys column.key}}\n @tableHeight={{this._tableHeight}}\n @tooltip={{column.tooltip}}\n @hasExpandAllButton={{this.hasRowsWithChildren}}\n @isExpanded={{this.isAllExpanded}}\n @isExpandable={{column.isExpandable}}\n @sortOrder={{if\n (eq column.key this.currentSortBy)\n this.currentSortOrder\n }}\n @onApplyTransientWidth={{CM.applyTransientWidth}}\n @onClickSort={{if\n column.isSortable\n (fn this.setSortBy column.key)\n }}\n @onClickToggle={{this.toggleExpandAll}}\n @onColumnResize={{@onColumnResize}}\n @onGetAppliedWidth={{CM.getAppliedWidth}}\n @onGetColumnByKey={{CM.getColumnByKey}}\n @onMoveColumnToTerminalPosition={{CM.moveColumnToTerminalPosition}}\n @onPinFirstColumn={{this._onPinFirstColumn}}\n @onReorderDrop={{CM.moveColumnToDropTarget}}\n @onRestoreColumnWidth={{CM.restoreColumnWidth}}\n @onResetTransientColumnWidths={{CM.resetTransientColumnWidths}}\n @onSetDraggedColumnKey={{CM.setDraggedColumnKey}}\n @onSetReorderHoveredColumnKey={{CM.setReorderHoveredColumnKey}}\n @onSetTransientColumnWidth={{CM.setTransientColumnWidth}}\n @onSetTransientColumnWidths={{CM.setTransientColumnWidths}}\n @onStepColumn={{CM.stepColumn}}\n @onUpdateResizeDebt={{CM.updateResizeDebt}}\n {{CM.syncThElements column.key}}\n >\n {{column.label}}\n </HdsAdvancedTableTh>\n {{/each}}\n </HdsAdvancedTableTr>\n\n {{#if this.showScrollIndicatorTop}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-top\"\n />\n {{/if}}\n </div>\n\n {{! Body }}\n <HdsAdvancedTableBody\n @childrenKey={{this.childrenKey}}\n @expandedRowIds={{this.expandedRowIds}}\n {{! @glint-expect-error: [HDS-4380](https://hashicorp.atlassian.net/browse/HDS-4380) }}\n @sortedModel={{sortBy this.sortCriteria @model}}\n as |B|\n >\n {{#each B.rows key=\"id\" as |row index|}}\n {{#let\n (and (not this.hasRowsWithChildren) (not row.hasChildren))\n as |isSelectionAllowed|\n }}\n {{yield\n (hash\n Tr=(this.asTr\n (component\n HdsAdvancedTableTr\n columnOrder=CM.columnOrder\n compositeGroup=C.group\n compositeItem=C.item\n data=(this.asRowData row.source)\n depth=row.depth\n isCompositeItemDisabled=(not row.isVisible)\n isParentRow=row.hasChildren\n isLastRow=(and\n (eq row.id B.lastVisibleRowId)\n (notEq B.lastVisibleRowId undefined)\n )\n displayRow=row.isVisible\n selectionScope=(if\n isSelectionAllowed (this.asScope \"row\")\n )\n isSelectable=(if\n isSelectionAllowed this.isSelectable\n )\n onSelectionChange=(if\n isSelectionAllowed this.onSelectionRowChange\n )\n didInsert=(if\n isSelectionAllowed this.didInsertRowCheckbox\n )\n willDestroy=(if\n isSelectionAllowed this.willDestroyRowCheckbox\n )\n hasStickyColumn=this.hasStickyFirstColumn\n isStickyColumnPinned=this.isStickyColumnPinned\n )\n )\n Th=(component\n HdsAdvancedTableTh\n compositeItem=C.item\n isCompositeItemDisabled=(not row.isVisible)\n isExpandable=row.hasChildren\n isExpanded=row.isExpanded\n onClickToggle=(fn this.toggleRow row.id)\n depth=row.depth\n scope=\"row\"\n newLabel=row.id\n parentId=undefined\n isStickyColumnPinned=this.isStickyColumnPinned\n )\n Td=(component\n HdsAdvancedTableTd\n align=@align\n compositeItem=C.item\n isCompositeItemDisabled=(not row.isVisible)\n )\n data=(this.asRowData row.source)\n rowIndex=index\n isOpen=row.isExpanded\n )\n to=\"body\"\n }}\n {{/let}}\n {{/each}}\n </HdsAdvancedTableBody>\n </div>\n </HdsComposite>\n </HdsAdvancedTableColumnManager>\n\n {{! Empty state }}\n {{#if this.isEmpty}}\n <div class=\"hds-advanced-table__empty-state\">\n {{#if (has-block \"emptyState\")}}\n {{yield to=\"emptyState\"}}\n {{else}}\n <HdsApplicationState as |A|>\n <A.Header\n @title={{hdsT\n \"hds.components.advanced-table.empty-state.title\"\n default=\"No data available\"\n }}\n />\n <A.Body\n @text={{hdsT\n \"hds.components.advanced-table.empty-state.description\"\n default=\"There is currently no data to display in the table.\"\n }}\n />\n </HdsApplicationState>\n {{/if}}\n </div>\n {{/if}}\n\n {{#if this.showScrollIndicatorLeft}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-left\"\n {{style\n height=this.scrollIndicatorDimensions.height\n left=this.scrollIndicatorDimensions.left\n }}\n />\n {{/if}}\n\n {{#if this.showScrollIndicatorRight}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-right\"\n {{style\n height=this.scrollIndicatorDimensions.height\n right=this.scrollIndicatorDimensions.right\n }}\n />\n {{/if}}\n\n {{#if (and this.showScrollIndicatorBottom (not this.isEmpty))}}\n <div\n class=\"hds-advanced-table__scroll-indicator hds-advanced-table__scroll-indicator-bottom\"\n {{style\n bottom=this.scrollIndicatorDimensions.bottom\n width=this.scrollIndicatorDimensions.width\n }}\n />\n {{/if}}\n </div>\n </div>\n </template>\n}\n"],"names":["KEYBOARD_RESIZE_STEP","calculateEffectiveDelta","deltaX","col","startColW","nextCol","startNextColW","colMin","parsePixel","minWidth","DEFAULT_MIN_WIDTH","colMax","maxWidth","DEFAULT_MAX_WIDTH","Infinity","nextMin","nextMax","effectiveDelta","maxCanExpandCol","maxCanShrinkNext","Math","min","max","absDeltaX","maxCanShrinkCol","maxCanExpandNext","HdsAdvancedTableThResizeHandle","Component","g","prototype","tracked","i","_handleElement","_boundResize","_boundStopResize","_registerHandleElement","modifier","element","constructor","owner","args","_resize","bind","_stopResize","currentWidthInPixels","column","onGetAppliedWidth","undefined","appliedWidth","key","minWidthInPixels","maxWidthInPixels","height","tableHeight","BORDER_WIDTH","classNames","classes","resizing","push","join","_applyTransientWidths","siblingColumnKeys","onApplyTransientWidth","next","nextColumnKey","onColumnResize","width","n","action","handleKeydown","event","validKeys","includes","preventDefault","stopPropagation","onSetTransientColumnWidths","onResetTransientColumnWidths","onUpdateResizeDebt","roundValues","startColumnAppliedWidth","startNextColumnAppliedWidth","startColumnPxWidth","round","startNextColumnPxWidth","_applyResizeDelta","scrollIntoView","behavior","block","inline","queueMicrotask","_transientDelta","startResize","button","startX","clientX","window","addEventListener","_setColumnWidth","onSetTransientColumnWidth","onGetColumnByKey","canResizeNeighbor","nextColumn","columnAppliedWidth","actualNewColumnWidth","actualAppliedDelta","_lastPointerEvent","_isUpdateQueued","requestAnimationFrameWaiter","removeEventListener","setComponentTemplate","precompileTemplate","strictMode","scope","hdsT","concat","on","style","HdsAdvancedTableThReorderDropTarget","_element","_registerElement","_getDragSide","rect","getBoundingClientRect","mouseX","elementMiddleX","left","HdsAdvancedTableColumnReorderSideValues","Left","Right","isBeingDragged","draggedColumnKey","isDraggingOver","reorderHoveredColumnKey","isFirstColumn","isLastColumn","hasSelectableRows","_dragSide","handleDragOver","draggedColumnSiblingColumnKeys","onSetReorderHoveredColumnKey","previous","dragSide","handleDrop","onReorderDrop","ALIGNMENTS","Object","values","HdsAdvancedTableHorizontalAlignmentValues","DEFAULT_ALIGN","HdsAdvancedTableTh","_labelId","newLabel","rowspan","colspan","isStickyColumn","assert","guidFor","isSortable","firstColumnKey","isFirstNonStickyColumn","firstNonStickyColumnKey","lastColumnKey","tableHasColumnBeingDragged","isColumnBeingDragged","role","ariaSort","sortOrder","HdsAdvancedTableThSortOrderValues","Asc","HdsAdvancedTableThSortOrderLabelValues","Desc","None","align","paddingLeft","depth","isStickyColumnPinned","showDropTarget","showResizeHandle","hasResizableColumns","onFocusTrapDeactivate","_shouldTrapFocus","enableFocusTrap","getInitialFocus","cellFocusableElements","focusable","focusReorderHandle","focus","preventScroll","_reorderHandleElement","applyTransientWidth","columnKey","resetTransientColumnWidths","getAppliedWidth","getColumnByKey","setDraggedColumnKey","onSetDraggedColumnKey","setTransientColumnWidth","setTransientColumnWidths","options","stepColumn","step","onStepColumn","updateResizeDebt","delta","setElement","scheduleOnce","_registerReorderHandleElement","_registerResizeHandleElement","_resizeHandleElement","_manageExpandButton","didInsertExpandButton","willDestroyExpandButton","hdsAdvancedTableCell","focusTrap","hash","hdsScrollIntoViewOnFocus","HdsLayoutFlex","and","not","HdsAdvancedTableThButtonExpand","HdsAdvancedTableThButtonTooltip","HdsAdvancedTableThButtonSort","HdsAdvancedTableThContextMenu","HdsAdvancedTableThReorderHandle","HdsAdvancedTableThSelectable","service","isSelected","_guid","_checkboxId","onClickSortBySelected","ariaLabel","selectionAriaLabelSuffix","defaultString","hdsIntl","t","default","suffix","sortBySelectedOrder","_manageCheckbox","checkbox","didInsert","willDestroy","selectionKey","onSelectionChange","target","_isSelected","checked","HdsFormCheckboxBase","HdsAdvancedTableTr","isSelectable","selectionScope","isLastRow","isParentRow","displayRow","cells","columnOrder","data","map","content","orderedCells","hasReorderableColumns","reduce","acc","cell","find","eq","DENSITIES","HdsAdvancedTableDensityValues","DEFAULT_DENSITY","Medium","VALIGNMENTS","HdsAdvancedTableVerticalAlignmentValues","DEFAULT_VALIGN","Top","DEFAULT_SCROLL_DIMENSIONS","bottom","right","REORDER_EDGE_SCROLL_TRIGGER_PX","REORDER_EDGE_SCROLL_STEP_PX","getScrollIndicatorDimensions","scrollWrapper","theadElement","hasStickyFirstColumn","horizontalScrollBarHeight","offsetHeight","clientHeight","verticalScrollBarWidth","offsetWidth","clientWidth","leftOffset","stickyColumnHeaders","querySelectorAll","forEach","el","elAsHTMLElement","length","getStickyColumnLeftOffset","hasRowSelection","selectableCell","querySelector","HdsAdvancedTable","_selectableRows","_captionId","_scrollHandler","_dragOverHandler","_resizeObserver","_theadElement","_scrollWrapperElement","expandedRowIds","TrackedSet","_setUpScrollWrapper","updateHorizontalScrollIndicators","showScrollIndicatorRight","scrollWidth","_updateScrollIndicators","canScrollHorizontally","firstReorderDropTarget","lastStickyColumnHeader","leftVisibleEdge","leftScrollTrigger","rightScrollTrigger","scrollBy","updateMeasurements","newTableHeight","newDimensions","setUpdatedMeasurements","isDestroying","isDestroyed","isSameBottom","scrollIndicatorDimensions","isSameHeight","isSameLeft","isSameRight","_tableHeight","stickyColumnOffset","requestAnimationFrame","ResizeObserver","entries","observe","scrollHeight","showScrollIndicatorBottom","disconnect","_setUpThead","_syncSortArgs","sortBy","currentSortBy","currentSortOrder","model","_runAssertions","_initializeExpandedRows","hasPinnedFirstColumn","childrenKey","hasRowsWithChildren","some","record","children","Array","isArray","expandableRowIds","ids","collect","items","item","cached","isAllExpanded","every","id","has","sortCriteria","columns","currentColumn","sortingFunction","isEmpty","identityKey","sortedMessageText","isStriped","density","hasStickyHeader","maxHeight","valign","theadClassNames","isStickyHeaderPinned","asRowData","source","asScope","asTr","comp","traverse","add","sortableColumns","filter","sortableColumnLabels","label","toString","_onColumnReorder","newOrder","insertedAt","reorderedMessageText","newPosition","translatedReorderedMessageText","columnLabel","onColumnReorder","onSelectionChangeCallback","selectionCheckboxElement","selectedRowsKeys","row","selectableRowsStates","toggleExpandAll","allIds","clear","toggleRow","rowId","delete","onSelectionAllChange","_selectAllCheckbox","_isSelectAllCheckboxSelected","onSelectionRowChange","setSelectAllState","didInsertSelectAllCheckbox","willDestroySelectAllCheckbox","didInsertRowCheckbox","willDestroyRowCheckbox","index","findIndex","splice","selectableRowsCount","selectedRowsCount","indeterminate","setSortBy","onSort","newSortOrder","SCROLL_BUFFER","scrollLeft","showScrollIndicatorLeft","rightEdge","scrollTop","showScrollIndicatorTop","bottomEdge","_onPinFirstColumn","HdsFilterBar","HdsAdvancedTableColumnManager","HdsComposite","fn","notEq","HdsAdvancedTableBody","HdsAdvancedTableTd","HdsApplicationState"],"mappings":"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"}
|