@hashicorp/design-system-components 5.2.0-rc-20260107211222 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/declarations/services/hds-intl.d.ts +4 -3
  2. package/dist/components/hds/advanced-table/index.js.map +1 -1
  3. package/dist/components/hds/advanced-table/models/column.js.map +1 -1
  4. package/dist/components/hds/advanced-table/models/row.js.map +1 -1
  5. package/dist/components/hds/advanced-table/models/table.js.map +1 -1
  6. package/dist/components/hds/advanced-table/td.js.map +1 -1
  7. package/dist/components/hds/advanced-table/th-context-menu.js.map +1 -1
  8. package/dist/components/hds/advanced-table/th-reorder-drop-target.js.map +1 -1
  9. package/dist/components/hds/advanced-table/th-resize-handle.js.map +1 -1
  10. package/dist/components/hds/advanced-table/th-selectable.js.map +1 -1
  11. package/dist/components/hds/advanced-table/th-sort.js.map +1 -1
  12. package/dist/components/hds/advanced-table/th.js.map +1 -1
  13. package/dist/components/hds/alert/index.js.map +1 -1
  14. package/dist/components/hds/app-header/index.js.map +1 -1
  15. package/dist/components/hds/app-side-nav/index.js.map +1 -1
  16. package/dist/components/hds/app-side-nav/list/index.js.map +1 -1
  17. package/dist/components/hds/app-side-nav/portal/target.js.map +1 -1
  18. package/dist/components/hds/breadcrumb/item.js.map +1 -1
  19. package/dist/components/hds/code-block/index.js.map +1 -1
  20. package/dist/components/hds/code-editor/index.js.map +1 -1
  21. package/dist/components/hds/copy/button/index.js.map +1 -1
  22. package/dist/components/hds/copy/snippet/index.js.map +1 -1
  23. package/dist/components/hds/disclosure-primitive/index.js.map +1 -1
  24. package/dist/components/hds/dismiss-button/index.js.map +1 -1
  25. package/dist/components/hds/dropdown/toggle/icon.js.map +1 -1
  26. package/dist/components/hds/flyout/index.js.map +1 -1
  27. package/dist/components/hds/form/key-value-inputs/index.js.map +1 -1
  28. package/dist/components/hds/form/masked-input/base.js.map +1 -1
  29. package/dist/components/hds/form/super-select/multiple/base.js.map +1 -1
  30. package/dist/components/hds/form/super-select/single/base.js.map +1 -1
  31. package/dist/components/hds/form/text-input/field.js.map +1 -1
  32. package/dist/components/hds/interactive/index.js.map +1 -1
  33. package/dist/components/hds/modal/index.js.map +1 -1
  34. package/dist/components/hds/pagination/compact/index.js.map +1 -1
  35. package/dist/components/hds/pagination/info/index.js.map +1 -1
  36. package/dist/components/hds/pagination/numbered/index.js.map +1 -1
  37. package/dist/components/hds/popover-primitive/index.js.map +1 -1
  38. package/dist/components/hds/side-nav/index.js.map +1 -1
  39. package/dist/components/hds/side-nav/list/index.js.map +1 -1
  40. package/dist/components/hds/side-nav/portal/target.js.map +1 -1
  41. package/dist/components/hds/stepper/list/index.js.map +1 -1
  42. package/dist/components/hds/stepper/nav/index.js.map +1 -1
  43. package/dist/components/hds/table/index.js.map +1 -1
  44. package/dist/components/hds/table/th-button-sort.js.map +1 -1
  45. package/dist/components/hds/table/th-selectable.js.map +1 -1
  46. package/dist/components/hds/tabs/index.js.map +1 -1
  47. package/dist/components/hds/tag/index.js.map +1 -1
  48. package/dist/components/hds/time/index.js.map +1 -1
  49. package/dist/components/hds/time/range.js.map +1 -1
  50. package/dist/helpers/hds-t.js.map +1 -1
  51. package/dist/modifiers/hds-code-editor.js.map +1 -1
  52. package/dist/services/hds-intl.js.map +1 -1
  53. package/dist/services/hds-time.js.map +1 -1
  54. package/dist/utils/hds-aria-described-by.js.map +1 -1
  55. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"th-context-menu.js","sources":["../../../../src/components/hds/advanced-table/th-context-menu.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { scheduleOnce } from '@ember/runloop';\nimport { modifier } from 'ember-modifier';\n\nimport type HdsAdvancedTableColumn from './models/column.ts';\nimport type { HdsDropdownSignature } from '../dropdown/index.ts';\nimport type { HdsDropdownToggleIconSignature } from '../dropdown/toggle/icon.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\nimport type { HdsAdvancedTableThReorderHandleSignature } from './th-reorder-handle.ts';\nimport type { HdsAdvancedTableThResizeHandleSignature } from './th-resize-handle.ts';\nimport type { HdsDropdownToggleButtonSignature } from '../dropdown/toggle/button.ts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\n\ninterface HdsAdvancedTableThContextMenuOption {\n key: string;\n icon?: HdsDropdownToggleIconSignature['Args']['icon'];\n label?: string;\n action?: (dropdownCloseCallback: () => void) => void;\n}\n\nexport interface HdsAdvancedTableThContextMenuSignature {\n Args: {\n column: HdsAdvancedTableColumn;\n hasResizableColumns?: boolean;\n hasReorderableColumns?: boolean;\n isStickyColumn?: boolean;\n reorderHandleElement?: HdsAdvancedTableThReorderHandleSignature['Element'];\n resizeHandleElement?: HdsAdvancedTableThResizeHandleSignature['Element'];\n onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];\n onPinFirstColumn?: () => void;\n };\n Element: HdsDropdownSignature['Element'];\n}\n\nexport default class HdsAdvancedTableThContextMenu extends Component<HdsAdvancedTableThContextMenuSignature> {\n @service hdsIntl!: HdsIntlService;\n\n @tracked private _element!: HdsDropdownSignature['Element'];\n\n get _resizeOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { column } = this.args;\n\n const translatedResetWidthLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.reset-width',\n { default: 'Reset column width' }\n );\n\n let resizeOptions: HdsAdvancedTableThContextMenuOption[] = [\n {\n key: 'reset-column-width',\n label: translatedResetWidthLabel,\n icon: 'rotate-ccw',\n action: this._resetColumnWidth.bind(this),\n },\n ];\n\n if (!column.isLast) {\n const translatedResizeLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.resize',\n { default: 'Resize column' }\n );\n\n resizeOptions = [\n {\n key: 'resize-column',\n label: translatedResizeLabel,\n icon: 'resize-column',\n action: this._resizeColumn.bind(this),\n },\n ...resizeOptions,\n ];\n }\n\n return resizeOptions;\n }\n\n get _reorderOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { column } = this.args;\n\n const translatedMoveColumnLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.move-column',\n { default: 'Move column' }\n );\n\n let reorderOptions: HdsAdvancedTableThContextMenuOption[] = [\n {\n key: 'reorder-column',\n label: translatedMoveColumnLabel,\n icon: 'move-horizontal',\n action: () => this._moveColumn(),\n },\n ];\n\n if (!column.isFirst) {\n const translatedMoveColumnToStartLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.move-column-to-start',\n { default: 'Move column to start' }\n );\n reorderOptions = [\n ...reorderOptions,\n {\n key: 'move-column-to-start',\n label: translatedMoveColumnToStartLabel,\n icon: 'start',\n action: (close) => this._moveColumnToPosition('start', close),\n },\n ];\n }\n\n if (!column.isLast) {\n const translatedMoveColumnToEndLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.move-column-to-end',\n { default: 'Move column to end' }\n );\n reorderOptions = [\n ...reorderOptions,\n {\n key: 'move-column-to-end',\n label: translatedMoveColumnToEndLabel,\n icon: 'end',\n action: (close) => this._moveColumnToPosition('end', close),\n },\n ];\n }\n\n return reorderOptions;\n }\n\n get _stickyColumnOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { isStickyColumn } = this.args;\n\n const translatedPinLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.pin',\n { default: 'Pin column' }\n );\n const translatedUnpinLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.unpin',\n { default: 'Unpin column' }\n );\n\n return [\n {\n key: 'pin-first-column',\n label: isStickyColumn ? translatedUnpinLabel : translatedPinLabel,\n icon: isStickyColumn ? 'pin-off' : 'pin',\n action: this._pinFirstColumn.bind(this),\n },\n ];\n }\n\n get _options(): HdsAdvancedTableThContextMenuOption[] {\n const {\n column,\n hasReorderableColumns,\n hasResizableColumns,\n isStickyColumn,\n } = this.args;\n\n let allGroups: HdsAdvancedTableThContextMenuOption[][] = [];\n\n if (hasResizableColumns) {\n allGroups = [...allGroups, this._resizeOptions];\n }\n\n if (hasReorderableColumns && isStickyColumn === undefined) {\n allGroups = [...allGroups, this._reorderOptions];\n }\n\n // we don't allow pinning/unpinning of the sticky column if columns are reorderable\n if (\n isStickyColumn !== undefined &&\n column.isFirst &&\n !hasReorderableColumns\n ) {\n allGroups = [...allGroups, this._stickyColumnOptions];\n }\n\n return allGroups.reduce<HdsAdvancedTableThContextMenuOption[]>(\n (options, group, index) => {\n // Add a separator before each group except the first\n if (index > 0) {\n return [...options, { key: 'separator' }, ...group];\n }\n return [...options, ...group];\n },\n []\n );\n }\n\n private _registerDropdownToggleElement = modifier(\n (element: HdsDropdownToggleButtonSignature['Element']) => {\n this.args.column.thContextMenuToggleElement = element;\n }\n );\n\n private _resizeColumn() {\n this.args.resizeHandleElement?.focus();\n }\n\n private _resetColumnWidth(dropdownCloseCallback: () => void): void {\n const { column, onColumnResize } = this.args;\n\n column.restoreWidth();\n\n if (typeof onColumnResize === 'function' && column.key !== undefined) {\n onColumnResize(column.key, column.width);\n }\n\n dropdownCloseCallback();\n }\n\n private _moveColumn() {\n // eslint-disable-next-line ember/no-runloop\n scheduleOnce(\n 'afterRender',\n this,\n this.args.column.focusReorderHandle.bind(this)\n );\n }\n\n private _moveColumnToPosition(\n position: 'start' | 'end',\n dropdownCloseCallback?: () => void\n ): void {\n const { column } = this.args;\n\n column.table.moveColumnToTerminalPosition(column, position);\n\n requestAnimationFrame(() => {\n dropdownCloseCallback?.();\n\n column.thContextMenuToggleElement?.focus();\n });\n }\n\n private _pinFirstColumn(dropdownCloseCallback: () => void): void {\n const { onPinFirstColumn } = this.args;\n\n if (typeof onPinFirstColumn === 'function') {\n onPinFirstColumn();\n }\n\n dropdownCloseCallback();\n }\n}\n"],"names":["HdsAdvancedTableThContextMenu","Component","g","prototype","service","i","tracked","_resizeOptions","column","args","translatedResetWidthLabel","hdsIntl","t","default","resizeOptions","key","label","icon","action","_resetColumnWidth","bind","isLast","translatedResizeLabel","_resizeColumn","_reorderOptions","translatedMoveColumnLabel","reorderOptions","_moveColumn","isFirst","translatedMoveColumnToStartLabel","close","_moveColumnToPosition","translatedMoveColumnToEndLabel","_stickyColumnOptions","isStickyColumn","translatedPinLabel","translatedUnpinLabel","_pinFirstColumn","_options","hasReorderableColumns","hasResizableColumns","allGroups","undefined","reduce","options","group","index","_registerDropdownToggleElement","modifier","element","thContextMenuToggleElement","resizeHandleElement","focus","dropdownCloseCallback","onColumnResize","restoreWidth","width","scheduleOnce","focusReorderHandle","position","table","moveColumnToTerminalPosition","requestAnimationFrame","onPinFirstColumn","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"th-context-menu.js","sources":["../../../../src/components/hds/advanced-table/th-context-menu.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { scheduleOnce } from '@ember/runloop';\nimport { modifier } from 'ember-modifier';\n\nimport type HdsAdvancedTableColumn from './models/column.ts';\nimport type { HdsDropdownSignature } from '../dropdown/index.ts';\nimport type { HdsDropdownToggleIconSignature } from '../dropdown/toggle/icon.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\nimport type { HdsAdvancedTableThReorderHandleSignature } from './th-reorder-handle.ts';\nimport type { HdsAdvancedTableThResizeHandleSignature } from './th-resize-handle.ts';\nimport type { HdsDropdownToggleButtonSignature } from '../dropdown/toggle/button.ts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\n\ninterface HdsAdvancedTableThContextMenuOption {\n key: string;\n icon?: HdsDropdownToggleIconSignature['Args']['icon'];\n label?: string;\n action?: (dropdownCloseCallback: () => void) => void;\n}\n\nexport interface HdsAdvancedTableThContextMenuSignature {\n Args: {\n column: HdsAdvancedTableColumn;\n hasResizableColumns?: boolean;\n hasReorderableColumns?: boolean;\n isStickyColumn?: boolean;\n reorderHandleElement?: HdsAdvancedTableThReorderHandleSignature['Element'];\n resizeHandleElement?: HdsAdvancedTableThResizeHandleSignature['Element'];\n onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];\n onPinFirstColumn?: () => void;\n };\n Element: HdsDropdownSignature['Element'];\n}\n\nexport default class HdsAdvancedTableThContextMenu extends Component<HdsAdvancedTableThContextMenuSignature> {\n @service hdsIntl!: HdsIntlService;\n\n @tracked private _element!: HdsDropdownSignature['Element'];\n\n get _resizeOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { column } = this.args;\n\n const translatedResetWidthLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.reset-width',\n { default: 'Reset column width' }\n );\n\n let resizeOptions: HdsAdvancedTableThContextMenuOption[] = [\n {\n key: 'reset-column-width',\n label: translatedResetWidthLabel,\n icon: 'rotate-ccw',\n action: this._resetColumnWidth.bind(this),\n },\n ];\n\n if (!column.isLast) {\n const translatedResizeLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.resize',\n { default: 'Resize column' }\n );\n\n resizeOptions = [\n {\n key: 'resize-column',\n label: translatedResizeLabel,\n icon: 'resize-column',\n action: this._resizeColumn.bind(this),\n },\n ...resizeOptions,\n ];\n }\n\n return resizeOptions;\n }\n\n get _reorderOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { column } = this.args;\n\n const translatedMoveColumnLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.move-column',\n { default: 'Move column' }\n );\n\n let reorderOptions: HdsAdvancedTableThContextMenuOption[] = [\n {\n key: 'reorder-column',\n label: translatedMoveColumnLabel,\n icon: 'move-horizontal',\n action: () => this._moveColumn(),\n },\n ];\n\n if (!column.isFirst) {\n const translatedMoveColumnToStartLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.move-column-to-start',\n { default: 'Move column to start' }\n );\n reorderOptions = [\n ...reorderOptions,\n {\n key: 'move-column-to-start',\n label: translatedMoveColumnToStartLabel,\n icon: 'start',\n action: (close) => this._moveColumnToPosition('start', close),\n },\n ];\n }\n\n if (!column.isLast) {\n const translatedMoveColumnToEndLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.move-column-to-end',\n { default: 'Move column to end' }\n );\n reorderOptions = [\n ...reorderOptions,\n {\n key: 'move-column-to-end',\n label: translatedMoveColumnToEndLabel,\n icon: 'end',\n action: (close) => this._moveColumnToPosition('end', close),\n },\n ];\n }\n\n return reorderOptions;\n }\n\n get _stickyColumnOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { isStickyColumn } = this.args;\n\n const translatedPinLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.pin',\n { default: 'Pin column' }\n );\n const translatedUnpinLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.unpin',\n { default: 'Unpin column' }\n );\n\n return [\n {\n key: 'pin-first-column',\n label: isStickyColumn ? translatedUnpinLabel : translatedPinLabel,\n icon: isStickyColumn ? 'pin-off' : 'pin',\n action: this._pinFirstColumn.bind(this),\n },\n ];\n }\n\n get _options(): HdsAdvancedTableThContextMenuOption[] {\n const {\n column,\n hasReorderableColumns,\n hasResizableColumns,\n isStickyColumn,\n } = this.args;\n\n let allGroups: HdsAdvancedTableThContextMenuOption[][] = [];\n\n if (hasResizableColumns) {\n allGroups = [...allGroups, this._resizeOptions];\n }\n\n if (hasReorderableColumns && isStickyColumn === undefined) {\n allGroups = [...allGroups, this._reorderOptions];\n }\n\n // we don't allow pinning/unpinning of the sticky column if columns are reorderable\n if (\n isStickyColumn !== undefined &&\n column.isFirst &&\n !hasReorderableColumns\n ) {\n allGroups = [...allGroups, this._stickyColumnOptions];\n }\n\n return allGroups.reduce<HdsAdvancedTableThContextMenuOption[]>(\n (options, group, index) => {\n // Add a separator before each group except the first\n if (index > 0) {\n return [...options, { key: 'separator' }, ...group];\n }\n return [...options, ...group];\n },\n []\n );\n }\n\n private _registerDropdownToggleElement = modifier(\n (element: HdsDropdownToggleButtonSignature['Element']) => {\n this.args.column.thContextMenuToggleElement = element;\n }\n );\n\n private _resizeColumn() {\n this.args.resizeHandleElement?.focus();\n }\n\n private _resetColumnWidth(dropdownCloseCallback: () => void): void {\n const { column, onColumnResize } = this.args;\n\n column.restoreWidth();\n\n if (typeof onColumnResize === 'function' && column.key !== undefined) {\n onColumnResize(column.key, column.width);\n }\n\n dropdownCloseCallback();\n }\n\n private _moveColumn() {\n // eslint-disable-next-line ember/no-runloop\n scheduleOnce(\n 'afterRender',\n this,\n this.args.column.focusReorderHandle.bind(this)\n );\n }\n\n private _moveColumnToPosition(\n position: 'start' | 'end',\n dropdownCloseCallback?: () => void\n ): void {\n const { column } = this.args;\n\n column.table.moveColumnToTerminalPosition(column, position);\n\n requestAnimationFrame(() => {\n dropdownCloseCallback?.();\n\n column.thContextMenuToggleElement?.focus();\n });\n }\n\n private _pinFirstColumn(dropdownCloseCallback: () => void): void {\n const { onPinFirstColumn } = this.args;\n\n if (typeof onPinFirstColumn === 'function') {\n onPinFirstColumn();\n }\n\n dropdownCloseCallback();\n }\n}\n"],"names":["HdsAdvancedTableThContextMenu","Component","g","prototype","service","i","void 0","tracked","_resizeOptions","column","args","translatedResetWidthLabel","hdsIntl","t","default","resizeOptions","key","label","icon","action","_resetColumnWidth","bind","isLast","translatedResizeLabel","_resizeColumn","_reorderOptions","translatedMoveColumnLabel","reorderOptions","_moveColumn","isFirst","translatedMoveColumnToStartLabel","close","_moveColumnToPosition","translatedMoveColumnToEndLabel","_stickyColumnOptions","isStickyColumn","translatedPinLabel","translatedUnpinLabel","_pinFirstColumn","_options","hasReorderableColumns","hasResizableColumns","allGroups","undefined","reduce","options","group","index","_registerDropdownToggleElement","modifier","element","thContextMenuToggleElement","resizeHandleElement","focus","dropdownCloseCallback","onColumnResize","restoreWidth","width","scheduleOnce","focusReorderHandle","position","table","moveColumnToTerminalPosition","requestAnimationFrame","onPinFirstColumn","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"th-reorder-drop-target.js","sources":["../../../../src/components/hds/advanced-table/th-reorder-drop-target.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\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 { BORDER_WIDTH } from './index.ts';\nimport { requestAnimationFrameWaiter } from './utils.ts';\nimport { HdsAdvancedTableColumnReorderSideValues } from './types.ts';\n\nimport type HdsAdvancedTableColumn from './models/column.ts';\nimport type { HdsAdvancedTableColumnReorderSide } from './types.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\n\nexport interface HdsAdvancedTableThReorderDropTargetSignature {\n Args: {\n column: HdsAdvancedTableColumn;\n hasSelectableRows?: HdsAdvancedTableSignature['Args']['isSelectable'];\n tableHeight?: number;\n onReorderDrop?: (\n column: HdsAdvancedTableColumn,\n side: HdsAdvancedTableColumnReorderSide\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 isDraggingOver(): boolean {\n const { table } = this.args.column;\n\n return table.reorderHoveredColumn?.key === this.args.column.key;\n }\n\n get classNames(): string {\n const { column } = this.args;\n\n const classes = ['hds-advanced-table__th-reorder-drop-target'];\n\n if (column.isFirst && !this.args.hasSelectableRows) {\n classes.push('hds-advanced-table__th-reorder-drop-target--is-first');\n } else if (column.isLast) {\n classes.push('hds-advanced-table__th-reorder-drop-target--is-last');\n }\n\n if (column.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 { column } = this.args;\n const { table } = column;\n\n if (table.reorderDraggedColumn !== null) {\n if (table.reorderDraggedColumn.key === column.key) {\n table.reorderHoveredColumn = null;\n } else {\n table.reorderHoveredColumn = column;\n\n const { next, previous } = table.reorderDraggedColumn.siblings;\n const dragSide = this._getDragSide(event);\n\n if (\n (column === previous &&\n dragSide === HdsAdvancedTableColumnReorderSideValues.Left) ||\n (column === next &&\n dragSide === HdsAdvancedTableColumnReorderSideValues.Right) ||\n (column !== previous && column !== 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 } = this.args;\n const { _dragSide } = this;\n\n if (\n column === undefined ||\n _dragSide === null ||\n typeof onReorderDrop !== 'function'\n ) {\n return;\n }\n\n onReorderDrop(column, _dragSide);\n\n this._dragSide = null;\n column.table.reorderHoveredColumn = null;\n }\n}\n"],"names":["HdsAdvancedTableThReorderDropTarget","Component","g","prototype","tracked","i","_element","_registerElement","modifier","element","_getDragSide","event","rect","getBoundingClientRect","mouseX","clientX","elementMiddleX","left","width","HdsAdvancedTableColumnReorderSideValues","Left","Right","isDraggingOver","table","args","column","reorderHoveredColumn","key","classNames","classes","isFirst","hasSelectableRows","push","isLast","isBeingDragged","_dragSide","join","height","tableHeight","undefined","BORDER_WIDTH","handleDragOver","preventDefault","_isUpdateQueued","requestAnimationFrameWaiter","reorderDraggedColumn","next","previous","siblings","dragSide","n","action","handleDrop","onReorderDrop","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"th-reorder-drop-target.js","sources":["../../../../src/components/hds/advanced-table/th-reorder-drop-target.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\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 { BORDER_WIDTH } from './index.ts';\nimport { requestAnimationFrameWaiter } from './utils.ts';\nimport { HdsAdvancedTableColumnReorderSideValues } from './types.ts';\n\nimport type HdsAdvancedTableColumn from './models/column.ts';\nimport type { HdsAdvancedTableColumnReorderSide } from './types.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\n\nexport interface HdsAdvancedTableThReorderDropTargetSignature {\n Args: {\n column: HdsAdvancedTableColumn;\n hasSelectableRows?: HdsAdvancedTableSignature['Args']['isSelectable'];\n tableHeight?: number;\n onReorderDrop?: (\n column: HdsAdvancedTableColumn,\n side: HdsAdvancedTableColumnReorderSide\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 isDraggingOver(): boolean {\n const { table } = this.args.column;\n\n return table.reorderHoveredColumn?.key === this.args.column.key;\n }\n\n get classNames(): string {\n const { column } = this.args;\n\n const classes = ['hds-advanced-table__th-reorder-drop-target'];\n\n if (column.isFirst && !this.args.hasSelectableRows) {\n classes.push('hds-advanced-table__th-reorder-drop-target--is-first');\n } else if (column.isLast) {\n classes.push('hds-advanced-table__th-reorder-drop-target--is-last');\n }\n\n if (column.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 { column } = this.args;\n const { table } = column;\n\n if (table.reorderDraggedColumn !== null) {\n if (table.reorderDraggedColumn.key === column.key) {\n table.reorderHoveredColumn = null;\n } else {\n table.reorderHoveredColumn = column;\n\n const { next, previous } = table.reorderDraggedColumn.siblings;\n const dragSide = this._getDragSide(event);\n\n if (\n (column === previous &&\n dragSide === HdsAdvancedTableColumnReorderSideValues.Left) ||\n (column === next &&\n dragSide === HdsAdvancedTableColumnReorderSideValues.Right) ||\n (column !== previous && column !== 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 } = this.args;\n const { _dragSide } = this;\n\n if (\n column === undefined ||\n _dragSide === null ||\n typeof onReorderDrop !== 'function'\n ) {\n return;\n }\n\n onReorderDrop(column, _dragSide);\n\n this._dragSide = null;\n column.table.reorderHoveredColumn = null;\n }\n}\n"],"names":["HdsAdvancedTableThReorderDropTarget","Component","g","prototype","tracked","i","void 0","_element","_registerElement","modifier","element","_getDragSide","event","rect","getBoundingClientRect","mouseX","clientX","elementMiddleX","left","width","HdsAdvancedTableColumnReorderSideValues","Left","Right","isDraggingOver","table","args","column","reorderHoveredColumn","key","classNames","classes","isFirst","hasSelectableRows","push","isLast","isBeingDragged","_dragSide","join","height","tableHeight","undefined","BORDER_WIDTH","handleDragOver","preventDefault","_isUpdateQueued","requestAnimationFrameWaiter","reorderDraggedColumn","next","previous","siblings","dragSide","n","action","handleDrop","onReorderDrop","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"th-resize-handle.js","sources":["../../../../src/components/hds/advanced-table/th-resize-handle.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\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 { requestAnimationFrameWaiter } from './utils.ts';\nimport { BORDER_WIDTH } from './index.ts';\nimport type Owner from '@ember/owner';\n\nimport type HdsAdvancedTableColumn from './models/column.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\n\nconst KEYBOARD_RESIZE_STEP = 10;\n\nfunction calculateEffectiveDelta(\n deltaX: number,\n col: HdsAdvancedTableColumn,\n startColW: number,\n nextCol: HdsAdvancedTableColumn,\n startNextColW: number\n): number {\n const colMin = col.pxMinWidth ?? 0;\n const colMax = col.pxMaxWidth ?? Infinity;\n const nextMin = nextCol.pxMinWidth ?? 0;\n const nextMax = nextCol.pxMaxWidth ?? 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: HdsAdvancedTableColumn;\n tableHeight?: number;\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 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 } = this.args;\n const { next: nextColumn } = column.siblings;\n\n column.width = column.appliedWidth;\n\n if (nextColumn !== undefined) {\n nextColumn.width = nextColumn.appliedWidth;\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 { column } = this.args;\n const { next: nextColumn } = column.siblings;\n\n if (nextColumn === undefined) {\n return;\n }\n\n column.table.setTransientColumnWidths({ roundValues: true });\n\n const startColumnPxWidth = Math.round(column.pxAppliedWidth ?? 0);\n const startNextColumnPxWidth = Math.round(nextColumn.pxAppliedWidth ?? 0);\n const deltaX =\n event.key === 'ArrowRight' ? KEYBOARD_RESIZE_STEP : -KEYBOARD_RESIZE_STEP;\n\n this._applyResizeDelta(\n deltaX,\n column,\n startColumnPxWidth,\n nextColumn,\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 // reset transient values\n this._setWidthDebts();\n this._applyTransientWidths();\n column.table.resetTransientColumnWidths();\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 { column } = this.args;\n const { next: nextColumn } = column.siblings;\n\n column.table.setTransientColumnWidths();\n\n this.resizing = {\n startX: event.clientX,\n startColumnPxWidth: Math.round(column.pxAppliedWidth ?? 0),\n startNextColumnPxWidth: Math.round(nextColumn?.pxAppliedWidth ?? 0),\n };\n\n window.addEventListener('pointermove', this._boundResize);\n window.addEventListener('pointerup', this._boundStopResize);\n }\n\n private _setColumnWidth(column: HdsAdvancedTableColumn, width: number): void {\n if (width > column.pxMaxWidth || width < column.pxMinWidth) {\n column.pxTransientWidth = width;\n } else {\n column.setPxTransientWidth(width);\n }\n }\n\n private _applyResizeDelta(\n deltaX: number,\n column: HdsAdvancedTableColumn,\n startColumnPxWidth: number,\n nextColumn?: HdsAdvancedTableColumn,\n startNextColumnPxWidth?: number\n ): void {\n const canResizeNeighbor =\n nextColumn !== undefined && startNextColumnPxWidth !== undefined;\n\n if (canResizeNeighbor) {\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 actualNewColumnWidth = column.pxAppliedWidth ?? 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 {\n column.setPxTransientWidth(Math.round(startColumnPxWidth + deltaX));\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 } = this.args;\n const { next: nextColumn } = column.siblings;\n const { startX, startColumnPxWidth, startNextColumnPxWidth } =\n this.resizing;\n const deltaX = event.clientX - startX;\n\n this._applyResizeDelta(\n deltaX,\n column,\n startColumnPxWidth, // Width at the start of the drag\n nextColumn,\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 { column } = this.args;\n\n window.removeEventListener('pointermove', this._boundResize);\n window.removeEventListener('pointerup', this._boundStopResize);\n\n this._setWidthDebts();\n\n this._applyTransientWidths();\n\n // reset the transient width\n column.table.resetTransientColumnWidths();\n\n // reset the resizing state\n this.resizing = null;\n this._transientDelta = 0;\n\n this.onColumnResize(column.key, column.appliedWidth);\n }\n\n private _addDebt(\n borrower: HdsAdvancedTableColumn,\n lenderKey: string,\n amount: number\n ): void {\n borrower.widthDebts = {\n ...borrower.widthDebts,\n [lenderKey]: (borrower.widthDebts[lenderKey] ?? 0) + amount,\n };\n }\n\n private _setWidthDebts(): void {\n const { column } = this.args;\n const { next: nextColumn } = column.siblings;\n const delta = this._transientDelta;\n\n if (\n delta === 0 ||\n nextColumn === undefined ||\n nextColumn.key === undefined ||\n column.key === undefined\n ) {\n return;\n }\n\n // Determine the borrower, lender, and the amount of width transferred\n const borrower = delta > 0 ? column : nextColumn;\n const lender = delta > 0 ? nextColumn : column;\n let amount = Math.abs(delta);\n\n if (borrower.key === undefined || lender.key === undefined) {\n return;\n }\n\n // Check if the lender already has a debt to the borrower.\n // If so, this transaction is a \"payment\" against that existing debt.\n const existingDebt = lender.widthDebts[borrower.key] ?? 0;\n\n if (existingDebt > 0) {\n const paymentAmount = Math.min(amount, existingDebt);\n\n // Reduce the lender's debt by the payment amount\n lender.widthDebts[borrower.key] = existingDebt - paymentAmount;\n\n if (lender.widthDebts[borrower.key]! <= 0) {\n delete lender.widthDebts[borrower.key];\n }\n\n // The amount of the new debt is reduced by the amount paid\n amount = amount - paymentAmount;\n }\n\n // If there is still a remaining amount, create a new debt for the borrower.\n if (amount > 0) {\n this._addDebt(borrower, lender.key, amount);\n }\n }\n}\n"],"names":["KEYBOARD_RESIZE_STEP","calculateEffectiveDelta","deltaX","col","startColW","nextCol","startNextColW","colMin","pxMinWidth","colMax","pxMaxWidth","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","height","tableHeight","undefined","BORDER_WIDTH","classNames","classes","resizing","push","join","_applyTransientWidths","column","next","nextColumn","siblings","width","appliedWidth","onColumnResize","key","n","action","handleKeydown","event","validKeys","includes","preventDefault","stopPropagation","table","setTransientColumnWidths","roundValues","startColumnPxWidth","round","pxAppliedWidth","startNextColumnPxWidth","_applyResizeDelta","scrollIntoView","behavior","block","inline","queueMicrotask","_setWidthDebts","resetTransientColumnWidths","_transientDelta","startResize","button","startX","clientX","window","addEventListener","_setColumnWidth","pxTransientWidth","setPxTransientWidth","canResizeNeighbor","actualNewColumnWidth","actualAppliedDelta","_lastPointerEvent","_isUpdateQueued","requestAnimationFrameWaiter","removeEventListener","_addDebt","borrower","lenderKey","amount","widthDebts","delta","lender","abs","existingDebt","paymentAmount","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"th-resize-handle.js","sources":["../../../../src/components/hds/advanced-table/th-resize-handle.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\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 { requestAnimationFrameWaiter } from './utils.ts';\nimport { BORDER_WIDTH } from './index.ts';\nimport type Owner from '@ember/owner';\n\nimport type HdsAdvancedTableColumn from './models/column.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\n\nconst KEYBOARD_RESIZE_STEP = 10;\n\nfunction calculateEffectiveDelta(\n deltaX: number,\n col: HdsAdvancedTableColumn,\n startColW: number,\n nextCol: HdsAdvancedTableColumn,\n startNextColW: number\n): number {\n const colMin = col.pxMinWidth ?? 0;\n const colMax = col.pxMaxWidth ?? Infinity;\n const nextMin = nextCol.pxMinWidth ?? 0;\n const nextMax = nextCol.pxMaxWidth ?? 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: HdsAdvancedTableColumn;\n tableHeight?: number;\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 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 } = this.args;\n const { next: nextColumn } = column.siblings;\n\n column.width = column.appliedWidth;\n\n if (nextColumn !== undefined) {\n nextColumn.width = nextColumn.appliedWidth;\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 { column } = this.args;\n const { next: nextColumn } = column.siblings;\n\n if (nextColumn === undefined) {\n return;\n }\n\n column.table.setTransientColumnWidths({ roundValues: true });\n\n const startColumnPxWidth = Math.round(column.pxAppliedWidth ?? 0);\n const startNextColumnPxWidth = Math.round(nextColumn.pxAppliedWidth ?? 0);\n const deltaX =\n event.key === 'ArrowRight' ? KEYBOARD_RESIZE_STEP : -KEYBOARD_RESIZE_STEP;\n\n this._applyResizeDelta(\n deltaX,\n column,\n startColumnPxWidth,\n nextColumn,\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 // reset transient values\n this._setWidthDebts();\n this._applyTransientWidths();\n column.table.resetTransientColumnWidths();\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 { column } = this.args;\n const { next: nextColumn } = column.siblings;\n\n column.table.setTransientColumnWidths();\n\n this.resizing = {\n startX: event.clientX,\n startColumnPxWidth: Math.round(column.pxAppliedWidth ?? 0),\n startNextColumnPxWidth: Math.round(nextColumn?.pxAppliedWidth ?? 0),\n };\n\n window.addEventListener('pointermove', this._boundResize);\n window.addEventListener('pointerup', this._boundStopResize);\n }\n\n private _setColumnWidth(column: HdsAdvancedTableColumn, width: number): void {\n if (width > column.pxMaxWidth || width < column.pxMinWidth) {\n column.pxTransientWidth = width;\n } else {\n column.setPxTransientWidth(width);\n }\n }\n\n private _applyResizeDelta(\n deltaX: number,\n column: HdsAdvancedTableColumn,\n startColumnPxWidth: number,\n nextColumn?: HdsAdvancedTableColumn,\n startNextColumnPxWidth?: number\n ): void {\n const canResizeNeighbor =\n nextColumn !== undefined && startNextColumnPxWidth !== undefined;\n\n if (canResizeNeighbor) {\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 actualNewColumnWidth = column.pxAppliedWidth ?? 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 {\n column.setPxTransientWidth(Math.round(startColumnPxWidth + deltaX));\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 } = this.args;\n const { next: nextColumn } = column.siblings;\n const { startX, startColumnPxWidth, startNextColumnPxWidth } =\n this.resizing;\n const deltaX = event.clientX - startX;\n\n this._applyResizeDelta(\n deltaX,\n column,\n startColumnPxWidth, // Width at the start of the drag\n nextColumn,\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 { column } = this.args;\n\n window.removeEventListener('pointermove', this._boundResize);\n window.removeEventListener('pointerup', this._boundStopResize);\n\n this._setWidthDebts();\n\n this._applyTransientWidths();\n\n // reset the transient width\n column.table.resetTransientColumnWidths();\n\n // reset the resizing state\n this.resizing = null;\n this._transientDelta = 0;\n\n this.onColumnResize(column.key, column.appliedWidth);\n }\n\n private _addDebt(\n borrower: HdsAdvancedTableColumn,\n lenderKey: string,\n amount: number\n ): void {\n borrower.widthDebts = {\n ...borrower.widthDebts,\n [lenderKey]: (borrower.widthDebts[lenderKey] ?? 0) + amount,\n };\n }\n\n private _setWidthDebts(): void {\n const { column } = this.args;\n const { next: nextColumn } = column.siblings;\n const delta = this._transientDelta;\n\n if (\n delta === 0 ||\n nextColumn === undefined ||\n nextColumn.key === undefined ||\n column.key === undefined\n ) {\n return;\n }\n\n // Determine the borrower, lender, and the amount of width transferred\n const borrower = delta > 0 ? column : nextColumn;\n const lender = delta > 0 ? nextColumn : column;\n let amount = Math.abs(delta);\n\n if (borrower.key === undefined || lender.key === undefined) {\n return;\n }\n\n // Check if the lender already has a debt to the borrower.\n // If so, this transaction is a \"payment\" against that existing debt.\n const existingDebt = lender.widthDebts[borrower.key] ?? 0;\n\n if (existingDebt > 0) {\n const paymentAmount = Math.min(amount, existingDebt);\n\n // Reduce the lender's debt by the payment amount\n lender.widthDebts[borrower.key] = existingDebt - paymentAmount;\n\n if (lender.widthDebts[borrower.key]! <= 0) {\n delete lender.widthDebts[borrower.key];\n }\n\n // The amount of the new debt is reduced by the amount paid\n amount = amount - paymentAmount;\n }\n\n // If there is still a remaining amount, create a new debt for the borrower.\n if (amount > 0) {\n this._addDebt(borrower, lender.key, amount);\n }\n }\n}\n"],"names":["KEYBOARD_RESIZE_STEP","calculateEffectiveDelta","deltaX","col","startColW","nextCol","startNextColW","colMin","pxMinWidth","colMax","pxMaxWidth","Infinity","nextMin","nextMax","effectiveDelta","maxCanExpandCol","maxCanShrinkNext","Math","min","max","absDeltaX","maxCanShrinkCol","maxCanExpandNext","HdsAdvancedTableThResizeHandle","Component","g","prototype","tracked","i","void 0","_handleElement","_boundResize","_boundStopResize","_registerHandleElement","modifier","element","constructor","owner","args","_resize","bind","_stopResize","height","tableHeight","undefined","BORDER_WIDTH","classNames","classes","resizing","push","join","_applyTransientWidths","column","next","nextColumn","siblings","width","appliedWidth","onColumnResize","key","n","action","handleKeydown","event","validKeys","includes","preventDefault","stopPropagation","table","setTransientColumnWidths","roundValues","startColumnPxWidth","round","pxAppliedWidth","startNextColumnPxWidth","_applyResizeDelta","scrollIntoView","behavior","block","inline","queueMicrotask","_setWidthDebts","resetTransientColumnWidths","_transientDelta","startResize","button","startX","clientX","window","addEventListener","_setColumnWidth","pxTransientWidth","setPxTransientWidth","canResizeNeighbor","actualNewColumnWidth","actualAppliedDelta","_lastPointerEvent","_isUpdateQueued","requestAnimationFrameWaiter","removeEventListener","_addDebt","borrower","lenderKey","amount","widthDebts","delta","lender","abs","existingDebt","paymentAmount","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"th-selectable.js","sources":["../../../../src/components/hds/advanced-table/th-selectable.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport { tracked } from '@glimmer/tracking';\nimport { modifier } from 'ember-modifier';\n\nimport {\n HdsAdvancedTableThSortOrderValues,\n HdsAdvancedTableThSortOrderLabelValues,\n} from './types.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base';\nimport type {\n HdsAdvancedTableScope,\n HdsAdvancedTableThSortOrder,\n HdsAdvancedTableThSortOrderLabels,\n} from './types.ts';\nimport type { HdsAdvancedTableThSignature } from './th.ts';\n\nexport interface HdsAdvancedTableThSelectableSignature {\n Args: {\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 @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 return `Select ${selectionAriaLabelSuffix}`;\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"],"names":["HdsAdvancedTableThSelectable","Component","g","prototype","tracked","args","isSelected","i","_guid","guidFor","_checkboxId","_labelId","isSortable","onClickSortBySelected","undefined","ariaLabel","selectionAriaLabelSuffix","ariaSort","sortBySelectedOrder","HdsAdvancedTableThSortOrderValues","Asc","HdsAdvancedTableThSortOrderLabelValues","Desc","None","_manageCheckbox","modifier","checkbox","didInsert","willDestroy","selectionKey","onSelectionChange","event","target","_isSelected","checked","n","action","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;;AA2Ce,MAAMA,4BAA4B,SAASC,SAAS,CAAwC;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,aAAA,EAAA,CACxGC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAuB,IAAI,CAACC,IAAI,CAACC,UAAU,IAAI,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,YAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,aAAA,CAAA,EAAA,MAAA;AAEpDC,EAAAA,KAAK,GAAGC,OAAO,CAAC,IAAI,CAAC;AACrBC,EAAAA,WAAW,GAAG,CAAA,SAAA,EAAY,IAAI,CAACF,KAAK,CAAA,CAAE;AACtCG,EAAAA,QAAQ,GAAG,CAAA,MAAA,EAAS,IAAI,CAACH,KAAK,CAAA,CAAE;EAExC,IAAII,UAAUA,GAAY;AACxB,IAAA,OAAO,IAAI,CAACP,IAAI,CAACQ,qBAAqB,KAAKC,SAAS;AACtD,EAAA;EAEA,IAAIC,SAASA,GAAW;IACtB,MAAM;AAAEC,MAAAA,wBAAwB,GAAG;KAAO,GAAG,IAAI,CAACX,IAAI;IACtD,OAAO,CAAA,OAAA,EAAUW,wBAAwB,CAAA,CAAE;AAC7C,EAAA;EAEA,IAAIC,QAAQA,GAAkD;AAC5D,IAAA,QAAQ,IAAI,CAACZ,IAAI,CAACa,mBAAmB;MACnC,KAAKC,iCAAiC,CAACC,GAAG;QACxC,OAAOC,sCAAsC,CAACD,GAAG;MACnD,KAAKD,iCAAiC,CAACG,IAAI;QACzC,OAAOD,sCAAsC,CAACC,IAAI;AACpD,MAAA;AACE;QACA,OAAOD,sCAAsC,CAACE,IAAI;AACtD;AACF,EAAA;AAEQC,EAAAA,eAAe,GAAGC,QAAQ,CAC/BC,QAAiD,IAAK;IACrD,MAAM;MAAEC,SAAS;AAAEC,MAAAA;KAAa,GAAG,IAAI,CAACvB,IAAI;AAC5C,IAAA,IAAI,OAAOsB,SAAS,KAAK,UAAU,EAAE;MACnCA,SAAS,CAACD,QAAQ,EAAE,IAAI,CAACrB,IAAI,CAACwB,YAAY,CAAC;AAC7C,IAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,OAAOD,WAAW,KAAK,UAAU,EAAE;AACrCA,QAAAA,WAAW,CAAC,IAAI,CAACvB,IAAI,CAACwB,YAAY,CAAC;AACrC,MAAA;IACF,CAAC;AACH,EAAA,CACF,CAAC;EAGDC,iBAAiBA,CAACC,KAAY,EAAQ;AACpC;AACA,IAAA,MAAMC,MAAM,GAAGD,KAAK,CAACC,MAAiD;AACtE,IAAA,IAAI,CAACC,WAAW,GAAGD,MAAM,CAACE,OAAO;IACjC,MAAM;AAAEJ,MAAAA;KAAmB,GAAG,IAAI,CAACzB,IAAI;AACvC,IAAA,IAAI,OAAOyB,iBAAiB,KAAK,UAAU,EAAE;MAC3CA,iBAAiB,CAACE,MAAM,EAAE,IAAI,CAAC3B,IAAI,CAACwB,YAAY,CAAC;AACnD,IAAA;AACF,EAAA;AAAC,EAAA;IAAAM,CAAA,CAAA,IAAA,CAAAhC,SAAA,EAAA,mBAAA,EAAA,CATAiC,MAAM,CAAA,CAAA;AAAA;AAUT;AAACC,oBAAA,CAAAC,QAAA,EArDoBtC,4BAA4B,CAAA;;;;"}
1
+ {"version":3,"file":"th-selectable.js","sources":["../../../../src/components/hds/advanced-table/th-selectable.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport { tracked } from '@glimmer/tracking';\nimport { modifier } from 'ember-modifier';\n\nimport {\n HdsAdvancedTableThSortOrderValues,\n HdsAdvancedTableThSortOrderLabelValues,\n} from './types.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base';\nimport type {\n HdsAdvancedTableScope,\n HdsAdvancedTableThSortOrder,\n HdsAdvancedTableThSortOrderLabels,\n} from './types.ts';\nimport type { HdsAdvancedTableThSignature } from './th.ts';\n\nexport interface HdsAdvancedTableThSelectableSignature {\n Args: {\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 @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 return `Select ${selectionAriaLabelSuffix}`;\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"],"names":["HdsAdvancedTableThSelectable","Component","g","prototype","tracked","args","isSelected","i","void 0","_guid","guidFor","_checkboxId","_labelId","isSortable","onClickSortBySelected","undefined","ariaLabel","selectionAriaLabelSuffix","ariaSort","sortBySelectedOrder","HdsAdvancedTableThSortOrderValues","Asc","HdsAdvancedTableThSortOrderLabelValues","Desc","None","_manageCheckbox","modifier","checkbox","didInsert","willDestroy","selectionKey","onSelectionChange","event","target","_isSelected","checked","n","action","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;;AA2Ce,MAAMA,4BAA4B,SAASC,SAAS,CAAwC;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,aAAA,EAAA,CACxGC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAuB,IAAI,CAACC,IAAI,CAACC,UAAU,IAAI,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,YAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,aAAA,CAAA,EAAAC,MAAA;AAEpDC,EAAAA,KAAK,GAAGC,OAAO,CAAC,IAAI,CAAC;AACrBC,EAAAA,WAAW,GAAG,CAAA,SAAA,EAAY,IAAI,CAACF,KAAK,CAAA,CAAE;AACtCG,EAAAA,QAAQ,GAAG,CAAA,MAAA,EAAS,IAAI,CAACH,KAAK,CAAA,CAAE;EAExC,IAAII,UAAUA,GAAY;AACxB,IAAA,OAAO,IAAI,CAACR,IAAI,CAACS,qBAAqB,KAAKC,SAAS;AACtD,EAAA;EAEA,IAAIC,SAASA,GAAW;IACtB,MAAM;AAAEC,MAAAA,wBAAwB,GAAG;KAAO,GAAG,IAAI,CAACZ,IAAI;IACtD,OAAO,CAAA,OAAA,EAAUY,wBAAwB,CAAA,CAAE;AAC7C,EAAA;EAEA,IAAIC,QAAQA,GAAkD;AAC5D,IAAA,QAAQ,IAAI,CAACb,IAAI,CAACc,mBAAmB;MACnC,KAAKC,iCAAiC,CAACC,GAAG;QACxC,OAAOC,sCAAsC,CAACD,GAAG;MACnD,KAAKD,iCAAiC,CAACG,IAAI;QACzC,OAAOD,sCAAsC,CAACC,IAAI;AACpD,MAAA;AACE;QACA,OAAOD,sCAAsC,CAACE,IAAI;AACtD;AACF,EAAA;AAEQC,EAAAA,eAAe,GAAGC,QAAQ,CAC/BC,QAAiD,IAAK;IACrD,MAAM;MAAEC,SAAS;AAAEC,MAAAA;KAAa,GAAG,IAAI,CAACxB,IAAI;AAC5C,IAAA,IAAI,OAAOuB,SAAS,KAAK,UAAU,EAAE;MACnCA,SAAS,CAACD,QAAQ,EAAE,IAAI,CAACtB,IAAI,CAACyB,YAAY,CAAC;AAC7C,IAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,OAAOD,WAAW,KAAK,UAAU,EAAE;AACrCA,QAAAA,WAAW,CAAC,IAAI,CAACxB,IAAI,CAACyB,YAAY,CAAC;AACrC,MAAA;IACF,CAAC;AACH,EAAA,CACF,CAAC;EAGDC,iBAAiBA,CAACC,KAAY,EAAQ;AACpC;AACA,IAAA,MAAMC,MAAM,GAAGD,KAAK,CAACC,MAAiD;AACtE,IAAA,IAAI,CAACC,WAAW,GAAGD,MAAM,CAACE,OAAO;IACjC,MAAM;AAAEJ,MAAAA;KAAmB,GAAG,IAAI,CAAC1B,IAAI;AACvC,IAAA,IAAI,OAAO0B,iBAAiB,KAAK,UAAU,EAAE;MAC3CA,iBAAiB,CAACE,MAAM,EAAE,IAAI,CAAC5B,IAAI,CAACyB,YAAY,CAAC;AACnD,IAAA;AACF,EAAA;AAAC,EAAA;IAAAM,CAAA,CAAA,IAAA,CAAAjC,SAAA,EAAA,mBAAA,EAAA,CATAkC,MAAM,CAAA,CAAA;AAAA;AAUT;AAACC,oBAAA,CAAAC,QAAA,EArDoBvC,4BAA4B,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"th-sort.js","sources":["../../../../src/components/hds/advanced-table/th-sort.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\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 { focusable, type FocusableElement } from 'tabbable';\nimport type Owner from '@ember/owner';\nimport { modifier } from 'ember-modifier';\n\nimport {\n HdsAdvancedTableHorizontalAlignmentValues,\n HdsAdvancedTableThSortOrderValues,\n HdsAdvancedTableThSortOrderLabelValues,\n} from './types.ts';\nimport type {\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableThSortOrder,\n HdsAdvancedTableThSortOrderLabels,\n HdsAdvancedTableColumnReorderSide,\n} from './types.ts';\nimport type { HdsAdvancedTableThReorderHandleSignature } from './th-reorder-handle.ts';\nimport type { HdsAdvancedTableThButtonSortSignature } from './th-button-sort.ts';\nimport { onFocusTrapDeactivate } from '../../../modifiers/hds-advanced-table-cell/dom-management.ts';\nimport type { HdsAdvancedTableThSignature } from './th.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\nimport type { HdsAdvancedTableThResizeHandleSignature } from './th-resize-handle.ts';\nimport type HdsAdvancedTableColumn from './models/column.ts';\n\nexport const ALIGNMENTS: HdsAdvancedTableHorizontalAlignment[] = Object.values(\n HdsAdvancedTableHorizontalAlignmentValues\n);\nexport const DEFAULT_ALIGN = HdsAdvancedTableHorizontalAlignmentValues.Left;\n\nexport interface HdsAdvancedTableThSortSignature {\n Args: {\n column?: HdsAdvancedTableThSignature['Args']['column'];\n align?: HdsAdvancedTableHorizontalAlignment;\n hasReorderableColumns?: HdsAdvancedTableSignature['Args']['hasReorderableColumns'];\n hasResizableColumns?: HdsAdvancedTableSignature['Args']['hasResizableColumns'];\n hasSelectableRows?: HdsAdvancedTableSignature['Args']['isSelectable'];\n onClickSort?: HdsAdvancedTableThButtonSortSignature['Args']['onClick'];\n sortOrder?: HdsAdvancedTableThSortOrder;\n tooltip?: string;\n rowspan?: number;\n colspan?: number;\n tableHeight?: number;\n isStickyColumn?: boolean;\n isStickyColumnPinned?: boolean;\n onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];\n onPinFirstColumn?: () => void;\n onReorderDragEnd?: () => void;\n onReorderDragStart?: (column: HdsAdvancedTableColumn) => void;\n onReorderDrop?: (\n column: HdsAdvancedTableColumn,\n side: HdsAdvancedTableColumnReorderSide\n ) => void;\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTableThSort extends Component<HdsAdvancedTableThSortSignature> {\n private _labelId = guidFor(this);\n private _element!: HTMLDivElement;\n\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: HdsAdvancedTableThSortSignature['Args']) {\n super(owner, args);\n\n const { 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\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\" must be one of the following: ${ALIGNMENTS.join(\n ', '\n )}; received: ${align}`,\n ALIGNMENTS.includes(align)\n );\n return align;\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table__th', 'hds-advanced-table__th--sort'];\n\n // add a class based on the @align argument\n if (this.align) {\n classes.push(`hds-advanced-table__th--align-${this.align}`);\n }\n\n if (this.args.isStickyColumn) {\n classes.push('hds-advanced-table__th--is-sticky-column');\n }\n\n if (this.args.isStickyColumn && this.args.isStickyColumnPinned) {\n classes.push('hds-advanced-table__th--is-sticky-column-pinned');\n }\n\n if (this.args.column?.isBeingDragged) {\n classes.push('hds-advanced-table__th--is-being-dragged');\n }\n\n return classes.join(' ');\n }\n\n @action\n handleDragStart(column: HdsAdvancedTableColumn): void {\n this.args.onReorderDragStart?.(column);\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 return cellFocusableElements[0];\n }\n\n @action setElement(element: HTMLDivElement): void {\n this._element = element;\n\n if (this.args.column !== undefined) {\n this.args.column.thElement = 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"],"names":["ALIGNMENTS","Object","values","HdsAdvancedTableHorizontalAlignmentValues","DEFAULT_ALIGN","Left","HdsAdvancedTableThSort","Component","_labelId","guidFor","_element","g","prototype","tracked","i","constructor","owner","args","rowspan","colspan","isStickyColumn","assert","undefined","ariaSort","sortOrder","HdsAdvancedTableThSortOrderValues","Asc","HdsAdvancedTableThSortOrderLabelValues","Desc","None","align","join","includes","classNames","classes","push","isStickyColumnPinned","column","isBeingDragged","handleDragStart","onReorderDragStart","n","action","onFocusTrapDeactivate","_shouldTrapFocus","enableFocusTrap","getInitialFocus","cellFocusableElements","focusable","setElement","element","thElement","_registerReorderHandleElement","modifier","_reorderHandleElement","_registerResizeHandleElement","_resizeHandleElement","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;;AA8BO,MAAMA,UAAiD,GAAGC,MAAM,CAACC,MAAM,CAC5EC,yCACF;AACO,MAAMC,aAAa,GAAGD,yCAAyC,CAACE;AAgCxD,MAAMC,sBAAsB,SAASC,SAAS,CAAkC;AACrFC,EAAAA,QAAQ,GAAGC,OAAO,CAAC,IAAI,CAAC;EACxBC,QAAQ;AAAkB,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,kBAAA,EAAA,CAEjCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA4B,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,iBAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,kBAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,uBAAA,EAAA,CACxCC,OAAO,CAAA,CAAA;AAAA;EAAA,sBAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,uBAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,sBAAA,EAAA,CAEPC,OAAO,CAAA,CAAA;AAAA;EAAA,qBAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,sBAAA,CAAA,EAAA,MAAA;AAGRC,EAAAA,WAAWA,CAACC,KAAY,EAAEC,IAA6C,EAAE;AACvE,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC;IAElB,MAAM;MAAEC,OAAO;MAAEC,OAAO;AAAEC,MAAAA;AAAe,KAAC,GAAGH,IAAI;AAEjD,IAAA,IAAIG,cAAc,EAAE;MAClBC,MAAM,CACJ,iEAAiE,EACjEH,OAAO,KAAKI,SAAS,IAAIH,OAAO,KAAKG,SACvC,CAAC;AACH,IAAA;AACF,EAAA;EAEA,IAAIC,QAAQA,GAAsC;AAChD,IAAA,QAAQ,IAAI,CAACN,IAAI,CAACO,SAAS;MACzB,KAAKC,iCAAiC,CAACC,GAAG;QACxC,OAAOC,sCAAsC,CAACD,GAAG;MACnD,KAAKD,iCAAiC,CAACG,IAAI;QACzC,OAAOD,sCAAsC,CAACC,IAAI;AACpD,MAAA;AACE;QACA,OAAOD,sCAAsC,CAACE,IAAI;AACtD;AACF,EAAA;EAEA,IAAIC,KAAKA,GAAwC;IAC/C,MAAM;AAAEA,MAAAA,KAAK,GAAG1B;KAAe,GAAG,IAAI,CAACa,IAAI;AAE3CI,IAAAA,MAAM,CACJ,CAAA,sDAAA,EAAyDrB,UAAU,CAAC+B,IAAI,CACtE,IACF,CAAC,CAAA,YAAA,EAAeD,KAAK,CAAA,CAAE,EACvB9B,UAAU,CAACgC,QAAQ,CAACF,KAAK,CAC3B,CAAC;AACD,IAAA,OAAOA,KAAK;AACd,EAAA;EAEA,IAAIG,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,wBAAwB,EAAE,8BAA8B,CAAC;;AAE1E;IACA,IAAI,IAAI,CAACJ,KAAK,EAAE;MACdI,OAAO,CAACC,IAAI,CAAC,CAAA,8BAAA,EAAiC,IAAI,CAACL,KAAK,EAAE,CAAC;AAC7D,IAAA;AAEA,IAAA,IAAI,IAAI,CAACb,IAAI,CAACG,cAAc,EAAE;AAC5Bc,MAAAA,OAAO,CAACC,IAAI,CAAC,0CAA0C,CAAC;AAC1D,IAAA;IAEA,IAAI,IAAI,CAAClB,IAAI,CAACG,cAAc,IAAI,IAAI,CAACH,IAAI,CAACmB,oBAAoB,EAAE;AAC9DF,MAAAA,OAAO,CAACC,IAAI,CAAC,iDAAiD,CAAC;AACjE,IAAA;AAEA,IAAA,IAAI,IAAI,CAAClB,IAAI,CAACoB,MAAM,EAAEC,cAAc,EAAE;AACpCJ,MAAAA,OAAO,CAACC,IAAI,CAAC,0CAA0C,CAAC;AAC1D,IAAA;AAEA,IAAA,OAAOD,OAAO,CAACH,IAAI,CAAC,GAAG,CAAC;AAC1B,EAAA;EAGAQ,eAAeA,CAACF,MAA8B,EAAQ;AACpD,IAAA,IAAI,CAACpB,IAAI,CAACuB,kBAAkB,GAAGH,MAAM,CAAC;AACxC,EAAA;AAAC,EAAA;IAAAI,CAAA,CAAA,IAAA,CAAA7B,SAAA,EAAA,iBAAA,EAAA,CAHA8B,MAAM,CAAA,CAAA;AAAA;AAKCC,EAAAA,qBAAqBA,GAAS;IACpC,IAAI,CAACC,gBAAgB,GAAG,KAAK;AAC7BD,IAAAA,qBAAqB,CAAC,IAAI,CAACjC,QAAQ,CAAC;AACtC,EAAA;AAAC,EAAA;IAAA+B,CAAA,CAAA,IAAA,CAAA7B,SAAA,EAAA,uBAAA,EAAA,CAHA8B,MAAM,CAAA,CAAA;AAAA;AAKCG,EAAAA,eAAeA,GAAS;IAC9B,IAAI,CAACD,gBAAgB,GAAG,IAAI;AAC9B,EAAA;AAAC,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAA7B,SAAA,EAAA,iBAAA,EAAA,CAFA8B,MAAM,CAAA,CAAA;AAAA;AAICI,EAAAA,eAAeA,GAAiC;AACtD,IAAA,MAAMC,qBAAqB,GAAGC,SAAS,CAAC,IAAI,CAACtC,QAAQ,CAAC;IACtD,OAAOqC,qBAAqB,CAAC,CAAC,CAAC;AACjC,EAAA;AAAC,EAAA;IAAAN,CAAA,CAAA,IAAA,CAAA7B,SAAA,EAAA,iBAAA,EAAA,CAHA8B,MAAM,CAAA,CAAA;AAAA;EAKCO,UAAUA,CAACC,OAAuB,EAAQ;IAChD,IAAI,CAACxC,QAAQ,GAAGwC,OAAO;AAEvB,IAAA,IAAI,IAAI,CAACjC,IAAI,CAACoB,MAAM,KAAKf,SAAS,EAAE;AAClC,MAAA,IAAI,CAACL,IAAI,CAACoB,MAAM,CAACc,SAAS,GAAGD,OAAO;AACtC,IAAA;AACF,EAAA;AAAC,EAAA;IAAAT,CAAA,CAAA,IAAA,CAAA7B,SAAA,EAAA,YAAA,EAAA,CANA8B,MAAM,CAAA,CAAA;AAAA;AAQCU,EAAAA,6BAA6B,GAAGC,QAAQ,CAC7CH,OAA4D,IAAK;IAChE,IAAI,CAACI,qBAAqB,GAAGJ,OAAO;AACtC,EAAA,CACF,CAAC;AAEOK,EAAAA,4BAA4B,GAAGF,QAAQ,CAC5CH,OAA2D,IAAK;IAC/D,IAAI,CAACM,oBAAoB,GAAGN,OAAO;AACrC,EAAA,CACF,CAAC;AACH;AAACO,oBAAA,CAAAC,QAAA,EA5GoBpD,sBAAsB,CAAA;;;;"}
1
+ {"version":3,"file":"th-sort.js","sources":["../../../../src/components/hds/advanced-table/th-sort.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\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 { focusable, type FocusableElement } from 'tabbable';\nimport type Owner from '@ember/owner';\nimport { modifier } from 'ember-modifier';\n\nimport {\n HdsAdvancedTableHorizontalAlignmentValues,\n HdsAdvancedTableThSortOrderValues,\n HdsAdvancedTableThSortOrderLabelValues,\n} from './types.ts';\nimport type {\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableThSortOrder,\n HdsAdvancedTableThSortOrderLabels,\n HdsAdvancedTableColumnReorderSide,\n} from './types.ts';\nimport type { HdsAdvancedTableThReorderHandleSignature } from './th-reorder-handle.ts';\nimport type { HdsAdvancedTableThButtonSortSignature } from './th-button-sort.ts';\nimport { onFocusTrapDeactivate } from '../../../modifiers/hds-advanced-table-cell/dom-management.ts';\nimport type { HdsAdvancedTableThSignature } from './th.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\nimport type { HdsAdvancedTableThResizeHandleSignature } from './th-resize-handle.ts';\nimport type HdsAdvancedTableColumn from './models/column.ts';\n\nexport const ALIGNMENTS: HdsAdvancedTableHorizontalAlignment[] = Object.values(\n HdsAdvancedTableHorizontalAlignmentValues\n);\nexport const DEFAULT_ALIGN = HdsAdvancedTableHorizontalAlignmentValues.Left;\n\nexport interface HdsAdvancedTableThSortSignature {\n Args: {\n column?: HdsAdvancedTableThSignature['Args']['column'];\n align?: HdsAdvancedTableHorizontalAlignment;\n hasReorderableColumns?: HdsAdvancedTableSignature['Args']['hasReorderableColumns'];\n hasResizableColumns?: HdsAdvancedTableSignature['Args']['hasResizableColumns'];\n hasSelectableRows?: HdsAdvancedTableSignature['Args']['isSelectable'];\n onClickSort?: HdsAdvancedTableThButtonSortSignature['Args']['onClick'];\n sortOrder?: HdsAdvancedTableThSortOrder;\n tooltip?: string;\n rowspan?: number;\n colspan?: number;\n tableHeight?: number;\n isStickyColumn?: boolean;\n isStickyColumnPinned?: boolean;\n onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];\n onPinFirstColumn?: () => void;\n onReorderDragEnd?: () => void;\n onReorderDragStart?: (column: HdsAdvancedTableColumn) => void;\n onReorderDrop?: (\n column: HdsAdvancedTableColumn,\n side: HdsAdvancedTableColumnReorderSide\n ) => void;\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTableThSort extends Component<HdsAdvancedTableThSortSignature> {\n private _labelId = guidFor(this);\n private _element!: HTMLDivElement;\n\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: HdsAdvancedTableThSortSignature['Args']) {\n super(owner, args);\n\n const { 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\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\" must be one of the following: ${ALIGNMENTS.join(\n ', '\n )}; received: ${align}`,\n ALIGNMENTS.includes(align)\n );\n return align;\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table__th', 'hds-advanced-table__th--sort'];\n\n // add a class based on the @align argument\n if (this.align) {\n classes.push(`hds-advanced-table__th--align-${this.align}`);\n }\n\n if (this.args.isStickyColumn) {\n classes.push('hds-advanced-table__th--is-sticky-column');\n }\n\n if (this.args.isStickyColumn && this.args.isStickyColumnPinned) {\n classes.push('hds-advanced-table__th--is-sticky-column-pinned');\n }\n\n if (this.args.column?.isBeingDragged) {\n classes.push('hds-advanced-table__th--is-being-dragged');\n }\n\n return classes.join(' ');\n }\n\n @action\n handleDragStart(column: HdsAdvancedTableColumn): void {\n this.args.onReorderDragStart?.(column);\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 return cellFocusableElements[0];\n }\n\n @action setElement(element: HTMLDivElement): void {\n this._element = element;\n\n if (this.args.column !== undefined) {\n this.args.column.thElement = 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"],"names":["ALIGNMENTS","Object","values","HdsAdvancedTableHorizontalAlignmentValues","DEFAULT_ALIGN","Left","HdsAdvancedTableThSort","Component","_labelId","guidFor","_element","g","prototype","tracked","i","void 0","constructor","owner","args","rowspan","colspan","isStickyColumn","assert","undefined","ariaSort","sortOrder","HdsAdvancedTableThSortOrderValues","Asc","HdsAdvancedTableThSortOrderLabelValues","Desc","None","align","join","includes","classNames","classes","push","isStickyColumnPinned","column","isBeingDragged","handleDragStart","onReorderDragStart","n","action","onFocusTrapDeactivate","_shouldTrapFocus","enableFocusTrap","getInitialFocus","cellFocusableElements","focusable","setElement","element","thElement","_registerReorderHandleElement","modifier","_reorderHandleElement","_registerResizeHandleElement","_resizeHandleElement","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;;AA8BO,MAAMA,UAAiD,GAAGC,MAAM,CAACC,MAAM,CAC5EC,yCACF;AACO,MAAMC,aAAa,GAAGD,yCAAyC,CAACE;AAgCxD,MAAMC,sBAAsB,SAASC,SAAS,CAAkC;AACrFC,EAAAA,QAAQ,GAAGC,OAAO,CAAC,IAAI,CAAC;EACxBC,QAAQ;AAAkB,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,kBAAA,EAAA,CAEjCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA4B,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,iBAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,kBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,uBAAA,EAAA,CACxCC,OAAO,CAAA,CAAA;AAAA;AAAA,EAAA,sBAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,uBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,sBAAA,EAAA,CAEPC,OAAO,CAAA,CAAA;AAAA;AAAA,EAAA,qBAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,sBAAA,CAAA,EAAAC,MAAA;AAGRC,EAAAA,WAAWA,CAACC,KAAY,EAAEC,IAA6C,EAAE;AACvE,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC;IAElB,MAAM;MAAEC,OAAO;MAAEC,OAAO;AAAEC,MAAAA;AAAe,KAAC,GAAGH,IAAI;AAEjD,IAAA,IAAIG,cAAc,EAAE;MAClBC,MAAM,CACJ,iEAAiE,EACjEH,OAAO,KAAKI,SAAS,IAAIH,OAAO,KAAKG,SACvC,CAAC;AACH,IAAA;AACF,EAAA;EAEA,IAAIC,QAAQA,GAAsC;AAChD,IAAA,QAAQ,IAAI,CAACN,IAAI,CAACO,SAAS;MACzB,KAAKC,iCAAiC,CAACC,GAAG;QACxC,OAAOC,sCAAsC,CAACD,GAAG;MACnD,KAAKD,iCAAiC,CAACG,IAAI;QACzC,OAAOD,sCAAsC,CAACC,IAAI;AACpD,MAAA;AACE;QACA,OAAOD,sCAAsC,CAACE,IAAI;AACtD;AACF,EAAA;EAEA,IAAIC,KAAKA,GAAwC;IAC/C,MAAM;AAAEA,MAAAA,KAAK,GAAG3B;KAAe,GAAG,IAAI,CAACc,IAAI;AAE3CI,IAAAA,MAAM,CACJ,CAAA,sDAAA,EAAyDtB,UAAU,CAACgC,IAAI,CACtE,IACF,CAAC,CAAA,YAAA,EAAeD,KAAK,CAAA,CAAE,EACvB/B,UAAU,CAACiC,QAAQ,CAACF,KAAK,CAC3B,CAAC;AACD,IAAA,OAAOA,KAAK;AACd,EAAA;EAEA,IAAIG,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,wBAAwB,EAAE,8BAA8B,CAAC;;AAE1E;IACA,IAAI,IAAI,CAACJ,KAAK,EAAE;MACdI,OAAO,CAACC,IAAI,CAAC,CAAA,8BAAA,EAAiC,IAAI,CAACL,KAAK,EAAE,CAAC;AAC7D,IAAA;AAEA,IAAA,IAAI,IAAI,CAACb,IAAI,CAACG,cAAc,EAAE;AAC5Bc,MAAAA,OAAO,CAACC,IAAI,CAAC,0CAA0C,CAAC;AAC1D,IAAA;IAEA,IAAI,IAAI,CAAClB,IAAI,CAACG,cAAc,IAAI,IAAI,CAACH,IAAI,CAACmB,oBAAoB,EAAE;AAC9DF,MAAAA,OAAO,CAACC,IAAI,CAAC,iDAAiD,CAAC;AACjE,IAAA;AAEA,IAAA,IAAI,IAAI,CAAClB,IAAI,CAACoB,MAAM,EAAEC,cAAc,EAAE;AACpCJ,MAAAA,OAAO,CAACC,IAAI,CAAC,0CAA0C,CAAC;AAC1D,IAAA;AAEA,IAAA,OAAOD,OAAO,CAACH,IAAI,CAAC,GAAG,CAAC;AAC1B,EAAA;EAGAQ,eAAeA,CAACF,MAA8B,EAAQ;AACpD,IAAA,IAAI,CAACpB,IAAI,CAACuB,kBAAkB,GAAGH,MAAM,CAAC;AACxC,EAAA;AAAC,EAAA;IAAAI,CAAA,CAAA,IAAA,CAAA9B,SAAA,EAAA,iBAAA,EAAA,CAHA+B,MAAM,CAAA,CAAA;AAAA;AAKCC,EAAAA,qBAAqBA,GAAS;IACpC,IAAI,CAACC,gBAAgB,GAAG,KAAK;AAC7BD,IAAAA,qBAAqB,CAAC,IAAI,CAAClC,QAAQ,CAAC;AACtC,EAAA;AAAC,EAAA;IAAAgC,CAAA,CAAA,IAAA,CAAA9B,SAAA,EAAA,uBAAA,EAAA,CAHA+B,MAAM,CAAA,CAAA;AAAA;AAKCG,EAAAA,eAAeA,GAAS;IAC9B,IAAI,CAACD,gBAAgB,GAAG,IAAI;AAC9B,EAAA;AAAC,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAA9B,SAAA,EAAA,iBAAA,EAAA,CAFA+B,MAAM,CAAA,CAAA;AAAA;AAICI,EAAAA,eAAeA,GAAiC;AACtD,IAAA,MAAMC,qBAAqB,GAAGC,SAAS,CAAC,IAAI,CAACvC,QAAQ,CAAC;IACtD,OAAOsC,qBAAqB,CAAC,CAAC,CAAC;AACjC,EAAA;AAAC,EAAA;IAAAN,CAAA,CAAA,IAAA,CAAA9B,SAAA,EAAA,iBAAA,EAAA,CAHA+B,MAAM,CAAA,CAAA;AAAA;EAKCO,UAAUA,CAACC,OAAuB,EAAQ;IAChD,IAAI,CAACzC,QAAQ,GAAGyC,OAAO;AAEvB,IAAA,IAAI,IAAI,CAACjC,IAAI,CAACoB,MAAM,KAAKf,SAAS,EAAE;AAClC,MAAA,IAAI,CAACL,IAAI,CAACoB,MAAM,CAACc,SAAS,GAAGD,OAAO;AACtC,IAAA;AACF,EAAA;AAAC,EAAA;IAAAT,CAAA,CAAA,IAAA,CAAA9B,SAAA,EAAA,YAAA,EAAA,CANA+B,MAAM,CAAA,CAAA;AAAA;AAQCU,EAAAA,6BAA6B,GAAGC,QAAQ,CAC7CH,OAA4D,IAAK;IAChE,IAAI,CAACI,qBAAqB,GAAGJ,OAAO;AACtC,EAAA,CACF,CAAC;AAEOK,EAAAA,4BAA4B,GAAGF,QAAQ,CAC5CH,OAA2D,IAAK;IAC/D,IAAI,CAACM,oBAAoB,GAAGN,OAAO;AACrC,EAAA,CACF,CAAC;AACH;AAACO,oBAAA,CAAAC,QAAA,EA5GoBrD,sBAAsB,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"th.js","sources":["../../../../src/components/hds/advanced-table/th.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\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 { focusable, type FocusableElement } from 'tabbable';\nimport { modifier } from 'ember-modifier';\nimport HdsAdvancedTableColumn from './models/column.ts';\nimport { onFocusTrapDeactivate } from '../../../modifiers/hds-advanced-table-cell/dom-management.ts';\nimport { HdsAdvancedTableHorizontalAlignmentValues } from './types.ts';\n\nimport type Owner from '@ember/owner';\nimport type {\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableScope,\n HdsAdvancedTableExpandState,\n HdsAdvancedTableColumnReorderSide,\n} from './types.ts';\nimport type { HdsAdvancedTableThReorderHandleSignature } from './th-reorder-handle.ts';\nimport type { HdsAdvancedTableThResizeHandleSignature } from './th-resize-handle.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\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?: HdsAdvancedTableColumn;\n colspan?: number;\n depth?: number;\n hasExpandAllButton?: boolean;\n hasReorderableColumns?: HdsAdvancedTableSignature['Args']['hasReorderableColumns'];\n hasResizableColumns?: HdsAdvancedTableSignature['Args']['hasResizableColumns'];\n hasSelectableRows?: HdsAdvancedTableSignature['Args']['isSelectable'];\n isExpanded?: HdsAdvancedTableExpandState;\n isExpandable?: boolean;\n isStickyColumn?: boolean;\n isStickyColumnPinned?: boolean;\n newLabel?: string;\n parentId?: string;\n rowspan?: number;\n scope?: HdsAdvancedTableScope;\n tooltip?: string;\n tableHeight?: number;\n didInsertExpandButton?: (button: HTMLButtonElement) => void;\n onClickToggle?: () => void;\n onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];\n onPinFirstColumn?: () => void;\n onReorderDragEnd?: () => void;\n onReorderDragStart?: (column: HdsAdvancedTableColumn) => void;\n onReorderDrop?: (\n column: HdsAdvancedTableColumn,\n side: HdsAdvancedTableColumnReorderSide\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 = this.args.newLabel ? this.args.newLabel : guidFor(this);\n private _element!: HTMLDivElement;\n\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 { 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\n get scope(): HdsAdvancedTableScope {\n const { scope = 'col' } = this.args;\n return scope;\n }\n\n get role(): string {\n if (this.scope === 'col') return 'columnheader';\n else return 'rowheader';\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 if (this.args.rowspan) {\n return `span ${this.args.rowspan}`;\n }\n return 'auto';\n }\n\n get colspan(): string | undefined {\n if (this.args.colspan) {\n return `span ${this.args.colspan}`;\n }\n return 'auto';\n }\n\n get paddingLeft(): string | undefined {\n if (this.args.depth) {\n return `calc(${this.args.depth} * 32px + 16px)`;\n }\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table__th'];\n\n // add a class based on the @align argument\n if (this.align) {\n classes.push(`hds-advanced-table__th--align-${this.align}`);\n }\n\n if (this.args.isStickyColumn) {\n classes.push('hds-advanced-table__th--is-sticky-column');\n }\n\n if (this.args.isStickyColumn && this.args.isStickyColumnPinned) {\n classes.push('hds-advanced-table__th--is-sticky-column-pinned');\n }\n\n if (this.args.column?.isBeingDragged) {\n classes.push('hds-advanced-table__th--is-being-dragged');\n }\n\n return classes.join(' ');\n }\n\n @action\n handleDragStart(column: HdsAdvancedTableColumn): void {\n this.args.onReorderDragStart?.(column);\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 return cellFocusableElements[0];\n }\n\n @action setElement(element: HTMLDivElement): void {\n this._element = element;\n\n if (this.args.column !== undefined) {\n this.args.column.thElement = 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 if (typeof didInsertExpandButton === 'function') {\n didInsertExpandButton(button);\n }\n\n return () => {\n if (typeof willDestroyExpandButton === 'function') {\n willDestroyExpandButton(button);\n }\n };\n });\n}\n"],"names":["ALIGNMENTS","Object","values","HdsAdvancedTableHorizontalAlignmentValues","DEFAULT_ALIGN","Left","HdsAdvancedTableTh","Component","_labelId","args","newLabel","guidFor","_element","g","prototype","tracked","i","constructor","owner","rowspan","colspan","isStickyColumn","assert","undefined","scope","role","align","join","includes","paddingLeft","depth","classNames","classes","push","isStickyColumnPinned","column","isBeingDragged","handleDragStart","onReorderDragStart","n","action","onFocusTrapDeactivate","_shouldTrapFocus","enableFocusTrap","getInitialFocus","cellFocusableElements","focusable","setElement","element","thElement","_registerReorderHandleElement","modifier","_reorderHandleElement","_registerResizeHandleElement","_resizeHandleElement","_manageExpandButton","button","didInsertExpandButton","willDestroyExpandButton","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"th.js","sources":["../../../../src/components/hds/advanced-table/th.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\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 { focusable, type FocusableElement } from 'tabbable';\nimport { modifier } from 'ember-modifier';\nimport HdsAdvancedTableColumn from './models/column.ts';\nimport { onFocusTrapDeactivate } from '../../../modifiers/hds-advanced-table-cell/dom-management.ts';\nimport { HdsAdvancedTableHorizontalAlignmentValues } from './types.ts';\n\nimport type Owner from '@ember/owner';\nimport type {\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableScope,\n HdsAdvancedTableExpandState,\n HdsAdvancedTableColumnReorderSide,\n} from './types.ts';\nimport type { HdsAdvancedTableThReorderHandleSignature } from './th-reorder-handle.ts';\nimport type { HdsAdvancedTableThResizeHandleSignature } from './th-resize-handle.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\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?: HdsAdvancedTableColumn;\n colspan?: number;\n depth?: number;\n hasExpandAllButton?: boolean;\n hasReorderableColumns?: HdsAdvancedTableSignature['Args']['hasReorderableColumns'];\n hasResizableColumns?: HdsAdvancedTableSignature['Args']['hasResizableColumns'];\n hasSelectableRows?: HdsAdvancedTableSignature['Args']['isSelectable'];\n isExpanded?: HdsAdvancedTableExpandState;\n isExpandable?: boolean;\n isStickyColumn?: boolean;\n isStickyColumnPinned?: boolean;\n newLabel?: string;\n parentId?: string;\n rowspan?: number;\n scope?: HdsAdvancedTableScope;\n tooltip?: string;\n tableHeight?: number;\n didInsertExpandButton?: (button: HTMLButtonElement) => void;\n onClickToggle?: () => void;\n onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];\n onPinFirstColumn?: () => void;\n onReorderDragEnd?: () => void;\n onReorderDragStart?: (column: HdsAdvancedTableColumn) => void;\n onReorderDrop?: (\n column: HdsAdvancedTableColumn,\n side: HdsAdvancedTableColumnReorderSide\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 = this.args.newLabel ? this.args.newLabel : guidFor(this);\n private _element!: HTMLDivElement;\n\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 { 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\n get scope(): HdsAdvancedTableScope {\n const { scope = 'col' } = this.args;\n return scope;\n }\n\n get role(): string {\n if (this.scope === 'col') return 'columnheader';\n else return 'rowheader';\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 if (this.args.rowspan) {\n return `span ${this.args.rowspan}`;\n }\n return 'auto';\n }\n\n get colspan(): string | undefined {\n if (this.args.colspan) {\n return `span ${this.args.colspan}`;\n }\n return 'auto';\n }\n\n get paddingLeft(): string | undefined {\n if (this.args.depth) {\n return `calc(${this.args.depth} * 32px + 16px)`;\n }\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table__th'];\n\n // add a class based on the @align argument\n if (this.align) {\n classes.push(`hds-advanced-table__th--align-${this.align}`);\n }\n\n if (this.args.isStickyColumn) {\n classes.push('hds-advanced-table__th--is-sticky-column');\n }\n\n if (this.args.isStickyColumn && this.args.isStickyColumnPinned) {\n classes.push('hds-advanced-table__th--is-sticky-column-pinned');\n }\n\n if (this.args.column?.isBeingDragged) {\n classes.push('hds-advanced-table__th--is-being-dragged');\n }\n\n return classes.join(' ');\n }\n\n @action\n handleDragStart(column: HdsAdvancedTableColumn): void {\n this.args.onReorderDragStart?.(column);\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 return cellFocusableElements[0];\n }\n\n @action setElement(element: HTMLDivElement): void {\n this._element = element;\n\n if (this.args.column !== undefined) {\n this.args.column.thElement = 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 if (typeof didInsertExpandButton === 'function') {\n didInsertExpandButton(button);\n }\n\n return () => {\n if (typeof willDestroyExpandButton === 'function') {\n willDestroyExpandButton(button);\n }\n };\n });\n}\n"],"names":["ALIGNMENTS","Object","values","HdsAdvancedTableHorizontalAlignmentValues","DEFAULT_ALIGN","Left","HdsAdvancedTableTh","Component","_labelId","args","newLabel","guidFor","_element","g","prototype","tracked","i","void 0","constructor","owner","rowspan","colspan","isStickyColumn","assert","undefined","scope","role","align","join","includes","paddingLeft","depth","classNames","classes","push","isStickyColumnPinned","column","isBeingDragged","handleDragStart","onReorderDragStart","n","action","onFocusTrapDeactivate","_shouldTrapFocus","enableFocusTrap","getInitialFocus","cellFocusableElements","focusable","setElement","element","thElement","_registerReorderHandleElement","modifier","_reorderHandleElement","_registerResizeHandleElement","_resizeHandleElement","_manageExpandButton","button","didInsertExpandButton","willDestroyExpandButton","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/alert/index.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { guidFor } from '@ember/object/internals';\nimport { tracked } from '@glimmer/tracking';\n\nimport { HdsAlertColorValues, HdsAlertTypeValues } from './types.ts';\n\nimport type { ComponentLike, WithBoundArgs } from '@glint/template';\nimport type HdsButtonComponent from '../button';\nimport type HdsLinkStandaloneComponent from '../link/standalone';\nimport type { HdsYieldSignature } from '../yield';\nimport type { HdsAlertColors, HdsAlertTypes } from './types.ts';\nimport type { HdsAlertTitleSignature } from './title.ts';\nimport type { HdsAlertDescriptionSignature } from './description.ts';\nimport type { HdsIconSignature } from '../icon';\nimport type Owner from '@ember/owner';\n\nexport const TYPES: HdsAlertTypes[] = Object.values(HdsAlertTypeValues);\nexport const DEFAULT_COLOR: HdsAlertColors = HdsAlertColorValues.Neutral;\nexport const COLORS: HdsAlertColors[] = Object.values(HdsAlertColorValues);\n\nexport const MAPPING_COLORS_TO_ICONS = {\n [HdsAlertColorValues.Neutral]: 'info',\n [HdsAlertColorValues.Highlight]: 'info',\n [HdsAlertColorValues.Success]: 'check-circle',\n [HdsAlertColorValues.Warning]: 'alert-triangle',\n [HdsAlertColorValues.Critical]: 'alert-diamond',\n} as const;\n\nconst CONTENT_ELEMENT_SELECTOR = '.hds-alert__content';\nconst TITLE_ELEMENT_SELECTOR = '.hds-alert__title';\nconst DESCRIPTION_ELEMENT_SELECTOR = '.hds-alert__description';\n\nexport interface HdsAlertSignature {\n Args: {\n type: HdsAlertTypes;\n color?: HdsAlertColors;\n icon?: HdsIconSignature['Args']['name'] | false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onDismiss?: (event: MouseEvent, ...args: any[]) => void;\n };\n Blocks: {\n default: [\n {\n Title?: ComponentLike<HdsAlertTitleSignature>;\n Description?: ComponentLike<HdsAlertDescriptionSignature>;\n Generic?: ComponentLike<HdsYieldSignature>;\n LinkStandalone?: WithBoundArgs<\n typeof HdsLinkStandaloneComponent,\n 'size'\n >;\n Button?: WithBoundArgs<typeof HdsButtonComponent, 'size'>;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAlert extends Component<HdsAlertSignature> {\n @tracked private _role?: string;\n @tracked private _ariaLabelledBy?: string;\n\n constructor(owner: Owner, args: HdsAlertSignature['Args']) {\n super(owner, args);\n\n assert(\n `@type for \"Hds::Alert\" must be one of the following: ${TYPES.join(\n ', '\n )}; received: ${this.args.type}`,\n TYPES.includes(this.args.type)\n );\n }\n\n // Determines the color scheme for the alert.\n get color(): HdsAlertColors {\n const { color = DEFAULT_COLOR } = this.args;\n\n assert(\n `@color for \"Hds::Alert\" must be one of the following: ${COLORS.join(\n ', '\n )}; received: ${color}`,\n COLORS.includes(color)\n );\n\n return color;\n }\n\n // The name of the icon to be used.\n get icon(): HdsIconSignature['Args']['name'] | false {\n const { icon } = this.args;\n\n // If `icon` isn't passed, use the pre-defined one from `color`\n if (icon === undefined) {\n if (this.args.type === 'compact') {\n // for the \"compact\" type by default we use filled icons\n return `${MAPPING_COLORS_TO_ICONS[this.color]}-fill`;\n } else {\n // for all the other types by default we use outlined icons\n return MAPPING_COLORS_TO_ICONS[this.color];\n }\n // If `icon` is set explicitly to false, user doesn't want any icon in the alert\n } else if (icon === false) {\n assert(\n `@icon for \"Hds::Alert\" with @type \"compact\" is required`,\n this.args.type !== 'compact'\n );\n\n return false;\n } else {\n // If a name for `icon` is passed, set HdsIcon to that name\n return icon;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get onDismiss(): ((event: MouseEvent, ...args: any[]) => void) | false {\n const { onDismiss } = this.args;\n\n if (typeof onDismiss === 'function') {\n return onDismiss;\n } else {\n return false;\n }\n }\n\n // Ensures that the correct icon size is used. Automatically calculated.\n get iconSize(): HdsIconSignature['Args']['size'] {\n if (this.args.type === 'compact') {\n return '16';\n } else {\n return '24';\n }\n }\n\n get classNames(): string {\n const classes = ['hds-alert'];\n\n // Add a class based on the @type argument\n classes.push(`hds-alert--type-${this.args.type}`);\n\n // Add a class based on the @color argument\n classes.push(`hds-alert--color-${this.color}`);\n\n return classes.join(' ');\n }\n\n @action\n didInsert(element: HTMLDivElement): void {\n const actions = element.querySelectorAll(\n `${CONTENT_ELEMENT_SELECTOR} button, ${CONTENT_ELEMENT_SELECTOR} a`\n );\n\n // an Alert which actually alerts users (has role=\"alert\" & aria-live=\"polite\") as opposed to an informational or promo \"alert\"\n const isSemanticAlert: boolean =\n this.color === 'warning' ||\n this.color === 'critical' ||\n this.color === 'success';\n\n if (isSemanticAlert && actions.length) {\n this._role = 'alertdialog';\n } else if (isSemanticAlert) {\n this._role = 'alert';\n }\n\n // `alertdialog` must have an accessible name so we use either the\n // title or the description as label for the alert\n const label =\n element.querySelector(TITLE_ELEMENT_SELECTOR) ||\n element.querySelector(DESCRIPTION_ELEMENT_SELECTOR);\n if (label) {\n const labelId = label.getAttribute('id') || guidFor(element);\n label.setAttribute('id', labelId);\n this._ariaLabelledBy = labelId;\n }\n }\n}\n"],"names":["TYPES","Object","values","HdsAlertTypeValues","DEFAULT_COLOR","HdsAlertColorValues","Neutral","COLORS","MAPPING_COLORS_TO_ICONS","Highlight","Success","Warning","Critical","CONTENT_ELEMENT_SELECTOR","TITLE_ELEMENT_SELECTOR","DESCRIPTION_ELEMENT_SELECTOR","HdsAlert","Component","g","prototype","tracked","i","constructor","owner","args","assert","join","type","includes","color","icon","undefined","onDismiss","iconSize","classNames","classes","push","didInsert","element","actions","querySelectorAll","isSemanticAlert","length","_role","label","querySelector","labelId","getAttribute","guidFor","setAttribute","_ariaLabelledBy","n","action","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/alert/index.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { guidFor } from '@ember/object/internals';\nimport { tracked } from '@glimmer/tracking';\n\nimport { HdsAlertColorValues, HdsAlertTypeValues } from './types.ts';\n\nimport type { ComponentLike, WithBoundArgs } from '@glint/template';\nimport type HdsButtonComponent from '../button';\nimport type HdsLinkStandaloneComponent from '../link/standalone';\nimport type { HdsYieldSignature } from '../yield';\nimport type { HdsAlertColors, HdsAlertTypes } from './types.ts';\nimport type { HdsAlertTitleSignature } from './title.ts';\nimport type { HdsAlertDescriptionSignature } from './description.ts';\nimport type { HdsIconSignature } from '../icon';\nimport type Owner from '@ember/owner';\n\nexport const TYPES: HdsAlertTypes[] = Object.values(HdsAlertTypeValues);\nexport const DEFAULT_COLOR: HdsAlertColors = HdsAlertColorValues.Neutral;\nexport const COLORS: HdsAlertColors[] = Object.values(HdsAlertColorValues);\n\nexport const MAPPING_COLORS_TO_ICONS = {\n [HdsAlertColorValues.Neutral]: 'info',\n [HdsAlertColorValues.Highlight]: 'info',\n [HdsAlertColorValues.Success]: 'check-circle',\n [HdsAlertColorValues.Warning]: 'alert-triangle',\n [HdsAlertColorValues.Critical]: 'alert-diamond',\n} as const;\n\nconst CONTENT_ELEMENT_SELECTOR = '.hds-alert__content';\nconst TITLE_ELEMENT_SELECTOR = '.hds-alert__title';\nconst DESCRIPTION_ELEMENT_SELECTOR = '.hds-alert__description';\n\nexport interface HdsAlertSignature {\n Args: {\n type: HdsAlertTypes;\n color?: HdsAlertColors;\n icon?: HdsIconSignature['Args']['name'] | false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onDismiss?: (event: MouseEvent, ...args: any[]) => void;\n };\n Blocks: {\n default: [\n {\n Title?: ComponentLike<HdsAlertTitleSignature>;\n Description?: ComponentLike<HdsAlertDescriptionSignature>;\n Generic?: ComponentLike<HdsYieldSignature>;\n LinkStandalone?: WithBoundArgs<\n typeof HdsLinkStandaloneComponent,\n 'size'\n >;\n Button?: WithBoundArgs<typeof HdsButtonComponent, 'size'>;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAlert extends Component<HdsAlertSignature> {\n @tracked private _role?: string;\n @tracked private _ariaLabelledBy?: string;\n\n constructor(owner: Owner, args: HdsAlertSignature['Args']) {\n super(owner, args);\n\n assert(\n `@type for \"Hds::Alert\" must be one of the following: ${TYPES.join(\n ', '\n )}; received: ${this.args.type}`,\n TYPES.includes(this.args.type)\n );\n }\n\n // Determines the color scheme for the alert.\n get color(): HdsAlertColors {\n const { color = DEFAULT_COLOR } = this.args;\n\n assert(\n `@color for \"Hds::Alert\" must be one of the following: ${COLORS.join(\n ', '\n )}; received: ${color}`,\n COLORS.includes(color)\n );\n\n return color;\n }\n\n // The name of the icon to be used.\n get icon(): HdsIconSignature['Args']['name'] | false {\n const { icon } = this.args;\n\n // If `icon` isn't passed, use the pre-defined one from `color`\n if (icon === undefined) {\n if (this.args.type === 'compact') {\n // for the \"compact\" type by default we use filled icons\n return `${MAPPING_COLORS_TO_ICONS[this.color]}-fill`;\n } else {\n // for all the other types by default we use outlined icons\n return MAPPING_COLORS_TO_ICONS[this.color];\n }\n // If `icon` is set explicitly to false, user doesn't want any icon in the alert\n } else if (icon === false) {\n assert(\n `@icon for \"Hds::Alert\" with @type \"compact\" is required`,\n this.args.type !== 'compact'\n );\n\n return false;\n } else {\n // If a name for `icon` is passed, set HdsIcon to that name\n return icon;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get onDismiss(): ((event: MouseEvent, ...args: any[]) => void) | false {\n const { onDismiss } = this.args;\n\n if (typeof onDismiss === 'function') {\n return onDismiss;\n } else {\n return false;\n }\n }\n\n // Ensures that the correct icon size is used. Automatically calculated.\n get iconSize(): HdsIconSignature['Args']['size'] {\n if (this.args.type === 'compact') {\n return '16';\n } else {\n return '24';\n }\n }\n\n get classNames(): string {\n const classes = ['hds-alert'];\n\n // Add a class based on the @type argument\n classes.push(`hds-alert--type-${this.args.type}`);\n\n // Add a class based on the @color argument\n classes.push(`hds-alert--color-${this.color}`);\n\n return classes.join(' ');\n }\n\n @action\n didInsert(element: HTMLDivElement): void {\n const actions = element.querySelectorAll(\n `${CONTENT_ELEMENT_SELECTOR} button, ${CONTENT_ELEMENT_SELECTOR} a`\n );\n\n // an Alert which actually alerts users (has role=\"alert\" & aria-live=\"polite\") as opposed to an informational or promo \"alert\"\n const isSemanticAlert: boolean =\n this.color === 'warning' ||\n this.color === 'critical' ||\n this.color === 'success';\n\n if (isSemanticAlert && actions.length) {\n this._role = 'alertdialog';\n } else if (isSemanticAlert) {\n this._role = 'alert';\n }\n\n // `alertdialog` must have an accessible name so we use either the\n // title or the description as label for the alert\n const label =\n element.querySelector(TITLE_ELEMENT_SELECTOR) ||\n element.querySelector(DESCRIPTION_ELEMENT_SELECTOR);\n if (label) {\n const labelId = label.getAttribute('id') || guidFor(element);\n label.setAttribute('id', labelId);\n this._ariaLabelledBy = labelId;\n }\n }\n}\n"],"names":["TYPES","Object","values","HdsAlertTypeValues","DEFAULT_COLOR","HdsAlertColorValues","Neutral","COLORS","MAPPING_COLORS_TO_ICONS","Highlight","Success","Warning","Critical","CONTENT_ELEMENT_SELECTOR","TITLE_ELEMENT_SELECTOR","DESCRIPTION_ELEMENT_SELECTOR","HdsAlert","Component","g","prototype","tracked","i","void 0","constructor","owner","args","assert","join","type","includes","color","icon","undefined","onDismiss","iconSize","classNames","classes","push","didInsert","element","actions","querySelectorAll","isSemanticAlert","length","_role","label","querySelector","labelId","getAttribute","guidFor","setAttribute","_ariaLabelledBy","n","action","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/app-header/index.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport { tracked } from '@glimmer/tracking';\nimport { registerDestructor } from '@ember/destroyable';\nimport type Owner from '@ember/owner';\nimport type { NavigationNarratorSignature } from 'ember-a11y-refocus/components/navigation-narrator';\n\nimport { hdsBreakpoints } from '../../../utils/hds-breakpoints.ts';\n\nexport interface HdsAppHeaderSignature {\n Args: {\n breakpoint?: string;\n hasA11yRefocus?: boolean;\n a11yRefocusSkipTo?: string;\n a11yRefocusSkipText?: string;\n a11yRefocusNavigationText?: string;\n a11yRefocusRouteChangeValidator?: NavigationNarratorSignature['Args']['routeChangeValidator'];\n a11yRefocusExcludeAllQueryParams?: boolean;\n };\n Blocks: {\n logo?: [\n {\n close: () => void;\n },\n ];\n globalActions?: [\n {\n close: () => void;\n },\n ];\n utilityActions?: [\n {\n close: () => void;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAppHeader extends Component<HdsAppHeaderSignature> {\n @tracked private _isOpen = false;\n @tracked private _isDesktop = true;\n @tracked private _hasOverflowContent = false;\n private _desktopMQ: MediaQueryList;\n hasA11yRefocus = this.args.hasA11yRefocus ?? true;\n a11yRefocusSkipTo = '#' + (this.args.a11yRefocusSkipTo ?? 'hds-main');\n\n // Generates a unique ID for the Menu Content\n private _menuContentId = 'hds-menu-content-' + guidFor(this);\n\n // we use the `md` breakpoint for `desktop` viewports, but consumers can override its value\n private _desktopMQVal = this.args.breakpoint ?? hdsBreakpoints['md'].px;\n\n constructor(owner: Owner, args: Record<string, never>) {\n super(owner, args);\n this._desktopMQ = window.matchMedia(`(min-width: ${this._desktopMQVal})`);\n this.addEventListeners();\n registerDestructor(this, (): void => {\n this.removeEventListeners();\n });\n }\n\n addEventListeners(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n document.addEventListener('keydown', this.escapePress, true);\n this._desktopMQ.addEventListener(\n 'change',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.updateDesktopVariable,\n true\n );\n\n // set initial state based on viewport using a \"synthetic\" event\n const syntheticEvent = new MediaQueryListEvent('change', {\n matches: this._desktopMQ.matches,\n media: this._desktopMQ.media,\n });\n this.updateDesktopVariable(syntheticEvent);\n }\n\n removeEventListeners(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n document.removeEventListener('keydown', this.escapePress, true);\n this._desktopMQ.removeEventListener(\n 'change',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.updateDesktopVariable,\n true\n );\n }\n\n // In mobile view when the menu is open, trap focus within the AppHeader\n get shouldTrapFocus(): boolean {\n return !this._isDesktop && this._isOpen;\n }\n\n // Get the class names to apply to the component.\n get classNames(): string {\n const classes = ['hds-app-header'];\n\n if (this._isDesktop) {\n classes.push('hds-app-header--is-desktop');\n } else {\n classes.push('hds-app-header--is-mobile');\n\n // open and closed menu states are only relevant on mobile\n if (this._isOpen) {\n classes.push('hds-app-header--menu-is-open');\n } else {\n classes.push('hds-app-header--menu-is-closed');\n }\n }\n\n return classes.join(' ');\n }\n\n @action\n escapePress(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this._isOpen && !this._isDesktop) {\n this._isOpen = false;\n }\n }\n\n @action\n onClickToggle(): void {\n this._isOpen = !this._isOpen;\n }\n\n @action close(): void {\n if (this._isOpen && !this._isDesktop) {\n this._isOpen = false;\n }\n }\n\n @action\n updateDesktopVariable(event: MediaQueryListEvent): void {\n this._isDesktop = event.matches;\n\n // Close the menu when switching to desktop view\n // (prevents menu from being open when resizing which causes Skip button to not render)\n if (this._isDesktop) {\n this._isOpen = false;\n }\n }\n}\n"],"names":["HdsAppHeader","Component","g","prototype","tracked","i","_desktopMQ","hasA11yRefocus","args","a11yRefocusSkipTo","_menuContentId","guidFor","_desktopMQVal","breakpoint","hdsBreakpoints","px","constructor","owner","window","matchMedia","addEventListeners","registerDestructor","removeEventListeners","document","addEventListener","escapePress","updateDesktopVariable","syntheticEvent","MediaQueryListEvent","matches","media","removeEventListener","shouldTrapFocus","_isDesktop","_isOpen","classNames","classes","push","join","event","key","n","action","onClickToggle","close","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;;AA0Ce,MAAMA,YAAY,SAASC,SAAS,CAAwB;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CACxEC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAmB,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,YAAA,EAAA,CAC/BC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAsB,IAAI;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,WAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,qBAAA,EAAA,CACjCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA+B,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,oBAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,qBAAA,CAAA,EAAA,MAAA;EACpCC,UAAU;AAClBC,EAAAA,cAAc,GAAG,IAAI,CAACC,IAAI,CAACD,cAAc,IAAI,IAAI;EACjDE,iBAAiB,GAAG,GAAG,IAAI,IAAI,CAACD,IAAI,CAACC,iBAAiB,IAAI,UAAU,CAAC;;AAErE;AACQC,EAAAA,cAAc,GAAG,mBAAmB,GAAGC,OAAO,CAAC,IAAI,CAAC;;AAE5D;AACQC,EAAAA,aAAa,GAAG,IAAI,CAACJ,IAAI,CAACK,UAAU,IAAIC,cAAc,CAAC,IAAI,CAAC,CAACC,EAAE;AAEvEC,EAAAA,WAAWA,CAACC,KAAY,EAAET,IAA2B,EAAE;AACrD,IAAA,KAAK,CAACS,KAAK,EAAET,IAAI,CAAC;AAClB,IAAA,IAAI,CAACF,UAAU,GAAGY,MAAM,CAACC,UAAU,CAAC,CAAA,YAAA,EAAe,IAAI,CAACP,aAAa,CAAA,CAAA,CAAG,CAAC;IACzE,IAAI,CAACQ,iBAAiB,EAAE;IACxBC,kBAAkB,CAAC,IAAI,EAAE,MAAY;MACnC,IAAI,CAACC,oBAAoB,EAAE;AAC7B,IAAA,CAAC,CAAC;AACJ,EAAA;AAEAF,EAAAA,iBAAiBA,GAAS;AACxB;IACAG,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACC,WAAW,EAAE,IAAI,CAAC;AAC5D,IAAA,IAAI,CAACnB,UAAU,CAACkB,gBAAgB,CAC9B,QAAQ;AACR;AACA,IAAA,IAAI,CAACE,qBAAqB,EAC1B,IACF,CAAC;;AAED;AACA,IAAA,MAAMC,cAAc,GAAG,IAAIC,mBAAmB,CAAC,QAAQ,EAAE;AACvDC,MAAAA,OAAO,EAAE,IAAI,CAACvB,UAAU,CAACuB,OAAO;AAChCC,MAAAA,KAAK,EAAE,IAAI,CAACxB,UAAU,CAACwB;AACzB,KAAC,CAAC;AACF,IAAA,IAAI,CAACJ,qBAAqB,CAACC,cAAc,CAAC;AAC5C,EAAA;AAEAL,EAAAA,oBAAoBA,GAAS;AAC3B;IACAC,QAAQ,CAACQ,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACN,WAAW,EAAE,IAAI,CAAC;AAC/D,IAAA,IAAI,CAACnB,UAAU,CAACyB,mBAAmB,CACjC,QAAQ;AACR;AACA,IAAA,IAAI,CAACL,qBAAqB,EAC1B,IACF,CAAC;AACH,EAAA;;AAEA;EACA,IAAIM,eAAeA,GAAY;AAC7B,IAAA,OAAO,CAAC,IAAI,CAACC,UAAU,IAAI,IAAI,CAACC,OAAO;AACzC,EAAA;;AAEA;EACA,IAAIC,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,gBAAgB,CAAC;IAElC,IAAI,IAAI,CAACH,UAAU,EAAE;AACnBG,MAAAA,OAAO,CAACC,IAAI,CAAC,4BAA4B,CAAC;AAC5C,IAAA,CAAC,MAAM;AACLD,MAAAA,OAAO,CAACC,IAAI,CAAC,2BAA2B,CAAC;;AAEzC;MACA,IAAI,IAAI,CAACH,OAAO,EAAE;AAChBE,QAAAA,OAAO,CAACC,IAAI,CAAC,8BAA8B,CAAC;AAC9C,MAAA,CAAC,MAAM;AACLD,QAAAA,OAAO,CAACC,IAAI,CAAC,gCAAgC,CAAC;AAChD,MAAA;AACF,IAAA;AAEA,IAAA,OAAOD,OAAO,CAACE,IAAI,CAAC,GAAG,CAAC;AAC1B,EAAA;EAGAb,WAAWA,CAACc,KAAoB,EAAQ;AACtC,IAAA,IAAIA,KAAK,CAACC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAACN,OAAO,IAAI,CAAC,IAAI,CAACD,UAAU,EAAE;MAC9D,IAAI,CAACC,OAAO,GAAG,KAAK;AACtB,IAAA;AACF,EAAA;AAAC,EAAA;IAAAO,CAAA,CAAA,IAAA,CAAAtC,SAAA,EAAA,aAAA,EAAA,CALAuC,MAAM,CAAA,CAAA;AAAA;AAQPC,EAAAA,aAAaA,GAAS;AACpB,IAAA,IAAI,CAACT,OAAO,GAAG,CAAC,IAAI,CAACA,OAAO;AAC9B,EAAA;AAAC,EAAA;IAAAO,CAAA,CAAA,IAAA,CAAAtC,SAAA,EAAA,eAAA,EAAA,CAHAuC,MAAM,CAAA,CAAA;AAAA;AAKCE,EAAAA,KAAKA,GAAS;IACpB,IAAI,IAAI,CAACV,OAAO,IAAI,CAAC,IAAI,CAACD,UAAU,EAAE;MACpC,IAAI,CAACC,OAAO,GAAG,KAAK;AACtB,IAAA;AACF,EAAA;AAAC,EAAA;IAAAO,CAAA,CAAA,IAAA,CAAAtC,SAAA,EAAA,OAAA,EAAA,CAJAuC,MAAM,CAAA,CAAA;AAAA;EAOPhB,qBAAqBA,CAACa,KAA0B,EAAQ;AACtD,IAAA,IAAI,CAACN,UAAU,GAAGM,KAAK,CAACV,OAAO;;AAE/B;AACA;IACA,IAAI,IAAI,CAACI,UAAU,EAAE;MACnB,IAAI,CAACC,OAAO,GAAG,KAAK;AACtB,IAAA;AACF,EAAA;AAAC,EAAA;IAAAO,CAAA,CAAA,IAAA,CAAAtC,SAAA,EAAA,uBAAA,EAAA,CATAuC,MAAM,CAAA,CAAA;AAAA;AAUT;AAACG,oBAAA,CAAAC,QAAA,EAzGoB9C,YAAY,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/app-header/index.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport { tracked } from '@glimmer/tracking';\nimport { registerDestructor } from '@ember/destroyable';\nimport type Owner from '@ember/owner';\nimport type { NavigationNarratorSignature } from 'ember-a11y-refocus/components/navigation-narrator';\n\nimport { hdsBreakpoints } from '../../../utils/hds-breakpoints.ts';\n\nexport interface HdsAppHeaderSignature {\n Args: {\n breakpoint?: string;\n hasA11yRefocus?: boolean;\n a11yRefocusSkipTo?: string;\n a11yRefocusSkipText?: string;\n a11yRefocusNavigationText?: string;\n a11yRefocusRouteChangeValidator?: NavigationNarratorSignature['Args']['routeChangeValidator'];\n a11yRefocusExcludeAllQueryParams?: boolean;\n };\n Blocks: {\n logo?: [\n {\n close: () => void;\n },\n ];\n globalActions?: [\n {\n close: () => void;\n },\n ];\n utilityActions?: [\n {\n close: () => void;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAppHeader extends Component<HdsAppHeaderSignature> {\n @tracked private _isOpen = false;\n @tracked private _isDesktop = true;\n @tracked private _hasOverflowContent = false;\n private _desktopMQ: MediaQueryList;\n hasA11yRefocus = this.args.hasA11yRefocus ?? true;\n a11yRefocusSkipTo = '#' + (this.args.a11yRefocusSkipTo ?? 'hds-main');\n\n // Generates a unique ID for the Menu Content\n private _menuContentId = 'hds-menu-content-' + guidFor(this);\n\n // we use the `md` breakpoint for `desktop` viewports, but consumers can override its value\n private _desktopMQVal = this.args.breakpoint ?? hdsBreakpoints['md'].px;\n\n constructor(owner: Owner, args: Record<string, never>) {\n super(owner, args);\n this._desktopMQ = window.matchMedia(`(min-width: ${this._desktopMQVal})`);\n this.addEventListeners();\n registerDestructor(this, (): void => {\n this.removeEventListeners();\n });\n }\n\n addEventListeners(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n document.addEventListener('keydown', this.escapePress, true);\n this._desktopMQ.addEventListener(\n 'change',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.updateDesktopVariable,\n true\n );\n\n // set initial state based on viewport using a \"synthetic\" event\n const syntheticEvent = new MediaQueryListEvent('change', {\n matches: this._desktopMQ.matches,\n media: this._desktopMQ.media,\n });\n this.updateDesktopVariable(syntheticEvent);\n }\n\n removeEventListeners(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n document.removeEventListener('keydown', this.escapePress, true);\n this._desktopMQ.removeEventListener(\n 'change',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.updateDesktopVariable,\n true\n );\n }\n\n // In mobile view when the menu is open, trap focus within the AppHeader\n get shouldTrapFocus(): boolean {\n return !this._isDesktop && this._isOpen;\n }\n\n // Get the class names to apply to the component.\n get classNames(): string {\n const classes = ['hds-app-header'];\n\n if (this._isDesktop) {\n classes.push('hds-app-header--is-desktop');\n } else {\n classes.push('hds-app-header--is-mobile');\n\n // open and closed menu states are only relevant on mobile\n if (this._isOpen) {\n classes.push('hds-app-header--menu-is-open');\n } else {\n classes.push('hds-app-header--menu-is-closed');\n }\n }\n\n return classes.join(' ');\n }\n\n @action\n escapePress(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this._isOpen && !this._isDesktop) {\n this._isOpen = false;\n }\n }\n\n @action\n onClickToggle(): void {\n this._isOpen = !this._isOpen;\n }\n\n @action close(): void {\n if (this._isOpen && !this._isDesktop) {\n this._isOpen = false;\n }\n }\n\n @action\n updateDesktopVariable(event: MediaQueryListEvent): void {\n this._isDesktop = event.matches;\n\n // Close the menu when switching to desktop view\n // (prevents menu from being open when resizing which causes Skip button to not render)\n if (this._isDesktop) {\n this._isOpen = false;\n }\n }\n}\n"],"names":["HdsAppHeader","Component","g","prototype","tracked","i","void 0","_desktopMQ","hasA11yRefocus","args","a11yRefocusSkipTo","_menuContentId","guidFor","_desktopMQVal","breakpoint","hdsBreakpoints","px","constructor","owner","window","matchMedia","addEventListeners","registerDestructor","removeEventListeners","document","addEventListener","escapePress","updateDesktopVariable","syntheticEvent","MediaQueryListEvent","matches","media","removeEventListener","shouldTrapFocus","_isDesktop","_isOpen","classNames","classes","push","join","event","key","n","action","onClickToggle","close","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/app-side-nav/index.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\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 { registerDestructor } from '@ember/destroyable';\nimport type Owner from '@ember/owner';\nimport { modifier } from 'ember-modifier';\n\nimport { hdsBreakpoints } from '../../../utils/hds-breakpoints.ts';\n\nexport interface HdsAppSideNavSignature {\n Args: {\n isResponsive?: boolean;\n isCollapsible?: boolean;\n isMinimized?: boolean;\n breakpoint?: string;\n onToggleMinimizedStatus?: (arg: boolean) => void;\n onDesktopViewportChange?: (arg: boolean) => void;\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAppSideNav extends Component<HdsAppSideNavSignature> {\n @tracked private _isMinimized;\n @tracked private _isAnimating = false;\n @tracked private _isDesktop = true;\n\n private _body!: HTMLElement;\n private _bodyInitialOverflowValue = '';\n private _desktopMQ: MediaQueryList;\n private _navWrapperBody!: HTMLElement;\n\n // we use the `lg` breakpoint for `desktop` viewports, but consumers can override its value\n private _desktopMQVal = this.args.breakpoint ?? hdsBreakpoints['lg'].px;\n\n constructor(owner: Owner, args: HdsAppSideNavSignature['Args']) {\n super(owner, args);\n this._isMinimized = this.args.isMinimized ?? false; // sets the default state on 'desktop' viewports\n this._desktopMQ = window.matchMedia(`(min-width:${this._desktopMQVal})`);\n this.addEventListeners();\n registerDestructor(this, (): void => {\n this.removeEventListeners();\n });\n }\n\n private _setUpBodyElement = modifier((): void => {\n this._body = document.body;\n // Store the initial `overflow` value of `<body>` so we can reset to it\n this._bodyInitialOverflowValue =\n this._body.style.getPropertyValue('overflow');\n });\n\n private _setUpNavWrapperBody = modifier((element: HTMLElement) => {\n this._navWrapperBody = element;\n });\n\n addEventListeners(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n document.addEventListener('keydown', this.escapePress, true);\n this._desktopMQ.addEventListener(\n 'change',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.updateDesktopVariable,\n true\n );\n // if not instantiated as minimized via arguments\n if (!this.args.isMinimized) {\n // set initial state based on viewport using a \"synthetic\" event\n const syntheticEvent = new MediaQueryListEvent('change', {\n matches: this._desktopMQ.matches,\n media: this._desktopMQ.media,\n });\n this.updateDesktopVariable(syntheticEvent);\n }\n }\n\n removeEventListeners(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n document.removeEventListener('keydown', this.escapePress, true);\n this._desktopMQ.removeEventListener(\n 'change',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.updateDesktopVariable,\n true\n );\n }\n\n // controls if the component reacts to viewport changes\n get isResponsive(): boolean {\n return this.args.isResponsive ?? true;\n }\n\n // controls if users can collapse the appsidenav on 'desktop' viewports\n get isCollapsible(): boolean {\n return this.args.isCollapsible ?? false;\n }\n\n // traps focus if isResponsive is enabled and it's in mobile view with side nav expanded (overlaying content)\n get shouldTrapFocus(): boolean {\n return this.isResponsive && !this._isDesktop && !this._isMinimized;\n }\n\n get showToggleButton(): boolean {\n return (this.isResponsive && !this._isDesktop) || this.isCollapsible;\n }\n\n get classNames(): string {\n const classes = [`hds-app-side-nav`];\n\n // add specific class names for the different possible states\n if (this.isResponsive) {\n classes.push('hds-app-side-nav--is-responsive');\n }\n if (!this._isDesktop && this.isResponsive) {\n classes.push('hds-app-side-nav--is-mobile');\n } else {\n classes.push('hds-app-side-nav--is-desktop');\n }\n if (this._isMinimized && this.isResponsive) {\n classes.push('hds-app-side-nav--is-minimized');\n } else {\n classes.push('hds-app-side-nav--is-not-minimized');\n }\n if (this._isAnimating) {\n classes.push('hds-app-side-nav--is-animating');\n }\n\n return classes.join(' ');\n }\n\n synchronizeInert(): void {\n if (this._isMinimized) {\n this._navWrapperBody?.setAttribute('inert', '');\n } else {\n this._navWrapperBody?.removeAttribute('inert');\n }\n }\n\n lockBodyScroll(): void {\n if (this._body) {\n // Prevent page from scrolling when the dialog is open\n this._body.style.setProperty('overflow', 'hidden');\n }\n }\n\n unlockBodyScroll(): void {\n // Reset page `overflow` property\n if (this._body) {\n this._body.style.removeProperty('overflow');\n if (this._bodyInitialOverflowValue === '') {\n if (this._body.style.length === 0) {\n this._body.removeAttribute('style');\n }\n } else {\n this._body.style.setProperty(\n 'overflow',\n this._bodyInitialOverflowValue\n );\n }\n }\n }\n\n @action\n escapePress(event: KeyboardEvent): void {\n if (event.key === 'Escape' && !this._isMinimized && !this._isDesktop) {\n this._isMinimized = true;\n this.synchronizeInert();\n this.unlockBodyScroll();\n }\n }\n\n @action\n toggleMinimizedStatus(): void {\n this._isMinimized = !this._isMinimized;\n this.synchronizeInert();\n\n const { onToggleMinimizedStatus } = this.args;\n\n if (typeof onToggleMinimizedStatus === 'function') {\n onToggleMinimizedStatus(this._isMinimized);\n }\n\n if (!this._isDesktop) {\n if (this._isMinimized) {\n this.unlockBodyScroll();\n } else {\n this.lockBodyScroll();\n }\n }\n }\n\n @action\n setTransition(phase: string, event: TransitionEvent): void {\n // we only want to respond to `width` animation/transitions\n if (event.propertyName !== 'width') {\n return;\n }\n if (phase === 'start') {\n this._isAnimating = true;\n } else {\n this._isAnimating = false;\n }\n }\n\n @action\n updateDesktopVariable(event: MediaQueryListEvent): void {\n this._isDesktop = event.matches;\n\n // automatically minimize on narrow viewports (when not in desktop mode)\n this._isMinimized = !this._isDesktop;\n\n this.synchronizeInert();\n\n if (this._isDesktop) {\n // make sure scrolling is enabled if the user resizes the window from mobile to desktop\n this.unlockBodyScroll();\n }\n\n const { onDesktopViewportChange } = this.args;\n\n if (typeof onDesktopViewportChange === 'function') {\n onDesktopViewportChange(this._isDesktop);\n }\n }\n}\n"],"names":["HdsAppSideNav","Component","g","prototype","tracked","i","_body","_bodyInitialOverflowValue","_desktopMQ","_navWrapperBody","_desktopMQVal","args","breakpoint","hdsBreakpoints","px","constructor","owner","_isMinimized","isMinimized","window","matchMedia","addEventListeners","registerDestructor","removeEventListeners","_setUpBodyElement","modifier","document","body","style","getPropertyValue","_setUpNavWrapperBody","element","addEventListener","escapePress","updateDesktopVariable","syntheticEvent","MediaQueryListEvent","matches","media","removeEventListener","isResponsive","isCollapsible","shouldTrapFocus","_isDesktop","showToggleButton","classNames","classes","push","_isAnimating","join","synchronizeInert","setAttribute","removeAttribute","lockBodyScroll","setProperty","unlockBodyScroll","removeProperty","length","event","key","n","action","toggleMinimizedStatus","onToggleMinimizedStatus","setTransition","phase","propertyName","onDesktopViewportChange","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/app-side-nav/index.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\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 { registerDestructor } from '@ember/destroyable';\nimport type Owner from '@ember/owner';\nimport { modifier } from 'ember-modifier';\n\nimport { hdsBreakpoints } from '../../../utils/hds-breakpoints.ts';\n\nexport interface HdsAppSideNavSignature {\n Args: {\n isResponsive?: boolean;\n isCollapsible?: boolean;\n isMinimized?: boolean;\n breakpoint?: string;\n onToggleMinimizedStatus?: (arg: boolean) => void;\n onDesktopViewportChange?: (arg: boolean) => void;\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAppSideNav extends Component<HdsAppSideNavSignature> {\n @tracked private _isMinimized;\n @tracked private _isAnimating = false;\n @tracked private _isDesktop = true;\n\n private _body!: HTMLElement;\n private _bodyInitialOverflowValue = '';\n private _desktopMQ: MediaQueryList;\n private _navWrapperBody!: HTMLElement;\n\n // we use the `lg` breakpoint for `desktop` viewports, but consumers can override its value\n private _desktopMQVal = this.args.breakpoint ?? hdsBreakpoints['lg'].px;\n\n constructor(owner: Owner, args: HdsAppSideNavSignature['Args']) {\n super(owner, args);\n this._isMinimized = this.args.isMinimized ?? false; // sets the default state on 'desktop' viewports\n this._desktopMQ = window.matchMedia(`(min-width:${this._desktopMQVal})`);\n this.addEventListeners();\n registerDestructor(this, (): void => {\n this.removeEventListeners();\n });\n }\n\n private _setUpBodyElement = modifier((): void => {\n this._body = document.body;\n // Store the initial `overflow` value of `<body>` so we can reset to it\n this._bodyInitialOverflowValue =\n this._body.style.getPropertyValue('overflow');\n });\n\n private _setUpNavWrapperBody = modifier((element: HTMLElement) => {\n this._navWrapperBody = element;\n });\n\n addEventListeners(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n document.addEventListener('keydown', this.escapePress, true);\n this._desktopMQ.addEventListener(\n 'change',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.updateDesktopVariable,\n true\n );\n // if not instantiated as minimized via arguments\n if (!this.args.isMinimized) {\n // set initial state based on viewport using a \"synthetic\" event\n const syntheticEvent = new MediaQueryListEvent('change', {\n matches: this._desktopMQ.matches,\n media: this._desktopMQ.media,\n });\n this.updateDesktopVariable(syntheticEvent);\n }\n }\n\n removeEventListeners(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n document.removeEventListener('keydown', this.escapePress, true);\n this._desktopMQ.removeEventListener(\n 'change',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.updateDesktopVariable,\n true\n );\n }\n\n // controls if the component reacts to viewport changes\n get isResponsive(): boolean {\n return this.args.isResponsive ?? true;\n }\n\n // controls if users can collapse the appsidenav on 'desktop' viewports\n get isCollapsible(): boolean {\n return this.args.isCollapsible ?? false;\n }\n\n // traps focus if isResponsive is enabled and it's in mobile view with side nav expanded (overlaying content)\n get shouldTrapFocus(): boolean {\n return this.isResponsive && !this._isDesktop && !this._isMinimized;\n }\n\n get showToggleButton(): boolean {\n return (this.isResponsive && !this._isDesktop) || this.isCollapsible;\n }\n\n get classNames(): string {\n const classes = [`hds-app-side-nav`];\n\n // add specific class names for the different possible states\n if (this.isResponsive) {\n classes.push('hds-app-side-nav--is-responsive');\n }\n if (!this._isDesktop && this.isResponsive) {\n classes.push('hds-app-side-nav--is-mobile');\n } else {\n classes.push('hds-app-side-nav--is-desktop');\n }\n if (this._isMinimized && this.isResponsive) {\n classes.push('hds-app-side-nav--is-minimized');\n } else {\n classes.push('hds-app-side-nav--is-not-minimized');\n }\n if (this._isAnimating) {\n classes.push('hds-app-side-nav--is-animating');\n }\n\n return classes.join(' ');\n }\n\n synchronizeInert(): void {\n if (this._isMinimized) {\n this._navWrapperBody?.setAttribute('inert', '');\n } else {\n this._navWrapperBody?.removeAttribute('inert');\n }\n }\n\n lockBodyScroll(): void {\n if (this._body) {\n // Prevent page from scrolling when the dialog is open\n this._body.style.setProperty('overflow', 'hidden');\n }\n }\n\n unlockBodyScroll(): void {\n // Reset page `overflow` property\n if (this._body) {\n this._body.style.removeProperty('overflow');\n if (this._bodyInitialOverflowValue === '') {\n if (this._body.style.length === 0) {\n this._body.removeAttribute('style');\n }\n } else {\n this._body.style.setProperty(\n 'overflow',\n this._bodyInitialOverflowValue\n );\n }\n }\n }\n\n @action\n escapePress(event: KeyboardEvent): void {\n if (event.key === 'Escape' && !this._isMinimized && !this._isDesktop) {\n this._isMinimized = true;\n this.synchronizeInert();\n this.unlockBodyScroll();\n }\n }\n\n @action\n toggleMinimizedStatus(): void {\n this._isMinimized = !this._isMinimized;\n this.synchronizeInert();\n\n const { onToggleMinimizedStatus } = this.args;\n\n if (typeof onToggleMinimizedStatus === 'function') {\n onToggleMinimizedStatus(this._isMinimized);\n }\n\n if (!this._isDesktop) {\n if (this._isMinimized) {\n this.unlockBodyScroll();\n } else {\n this.lockBodyScroll();\n }\n }\n }\n\n @action\n setTransition(phase: string, event: TransitionEvent): void {\n // we only want to respond to `width` animation/transitions\n if (event.propertyName !== 'width') {\n return;\n }\n if (phase === 'start') {\n this._isAnimating = true;\n } else {\n this._isAnimating = false;\n }\n }\n\n @action\n updateDesktopVariable(event: MediaQueryListEvent): void {\n this._isDesktop = event.matches;\n\n // automatically minimize on narrow viewports (when not in desktop mode)\n this._isMinimized = !this._isDesktop;\n\n this.synchronizeInert();\n\n if (this._isDesktop) {\n // make sure scrolling is enabled if the user resizes the window from mobile to desktop\n this.unlockBodyScroll();\n }\n\n const { onDesktopViewportChange } = this.args;\n\n if (typeof onDesktopViewportChange === 'function') {\n onDesktopViewportChange(this._isDesktop);\n }\n }\n}\n"],"names":["HdsAppSideNav","Component","g","prototype","tracked","i","void 0","_body","_bodyInitialOverflowValue","_desktopMQ","_navWrapperBody","_desktopMQVal","args","breakpoint","hdsBreakpoints","px","constructor","owner","_isMinimized","isMinimized","window","matchMedia","addEventListeners","registerDestructor","removeEventListeners","_setUpBodyElement","modifier","document","body","style","getPropertyValue","_setUpNavWrapperBody","element","addEventListener","escapePress","updateDesktopVariable","syntheticEvent","MediaQueryListEvent","matches","media","removeEventListener","isResponsive","isCollapsible","shouldTrapFocus","_isDesktop","showToggleButton","classNames","classes","push","_isAnimating","join","synchronizeInert","setAttribute","removeAttribute","lockBodyScroll","setProperty","unlockBodyScroll","removeProperty","length","event","key","n","action","toggleMinimizedStatus","onToggleMinimizedStatus","setTransition","phase","propertyName","onDesktopViewportChange","setComponentTemplate","TEMPLATE"],"mappings":"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"}