@hashicorp/design-system-components 6.4.0 → 6.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/component-catalog.json +13139 -0
  2. package/declarations/components/hds/advanced-table/column-manager/index.d.ts +5 -7
  3. package/declarations/components/hds/advanced-table/column-manager/width.d.ts +17 -20
  4. package/declarations/components/hds/advanced-table/index.d.ts +3 -2
  5. package/declarations/components/hds/advanced-table/th-context-menu.d.ts +2 -1
  6. package/declarations/components/hds/advanced-table/th-resize-handle.d.ts +8 -19
  7. package/declarations/components/hds/advanced-table/th.d.ts +5 -19
  8. package/declarations/components/hds/advanced-table/tr.d.ts +3 -0
  9. package/declarations/components/hds/advanced-table/types.d.ts +1 -1
  10. package/declarations/components/hds/advanced-table/utils.d.ts +1 -0
  11. package/declarations/components/hds/composite/index.d.ts +1 -0
  12. package/declarations/components/hds/icon/index.d.ts +1 -1
  13. package/declarations/components/hds/segmented-group/index.d.ts +13 -3
  14. package/declarations/components/hds/stepper/task/indicator.d.ts +1 -1
  15. package/declarations/components/hds/table/index.d.ts +1 -0
  16. package/declarations/components/hds/table/tr.d.ts +4 -0
  17. package/dist/components/hds/advanced-table/column-manager/index.js +1 -1
  18. package/dist/components/hds/advanced-table/column-manager/index.js.map +1 -1
  19. package/dist/components/hds/advanced-table/column-manager/order.js +2 -1
  20. package/dist/components/hds/advanced-table/column-manager/order.js.map +1 -1
  21. package/dist/components/hds/advanced-table/column-manager/width.js +96 -183
  22. package/dist/components/hds/advanced-table/column-manager/width.js.map +1 -1
  23. package/dist/components/hds/advanced-table/index.js +1 -1
  24. package/dist/components/hds/advanced-table/th-context-menu.js +14 -7
  25. package/dist/components/hds/advanced-table/th-context-menu.js.map +1 -1
  26. package/dist/components/hds/advanced-table/th-reorder-drop-target.js +1 -1
  27. package/dist/components/hds/advanced-table/th-resize-handle.js +1 -1
  28. package/dist/components/hds/advanced-table/th-selectable.js +1 -1
  29. package/dist/components/hds/advanced-table/th.js +1 -1
  30. package/dist/components/hds/advanced-table/tr.js +3 -1
  31. package/dist/components/hds/advanced-table/tr.js.map +1 -1
  32. package/dist/components/hds/advanced-table/types.js.map +1 -1
  33. package/dist/components/hds/advanced-table/utils.js +8 -1
  34. package/dist/components/hds/advanced-table/utils.js.map +1 -1
  35. package/dist/components/hds/composite/index.js +6 -0
  36. package/dist/components/hds/composite/index.js.map +1 -1
  37. package/dist/components/hds/filter-bar/index.js +1 -1
  38. package/dist/components/hds/filter-bar/index.js.map +1 -1
  39. package/dist/components/hds/segmented-group/index.js +36 -13
  40. package/dist/components/hds/segmented-group/index.js.map +1 -1
  41. package/dist/components/hds/stepper/list/step.js +6 -2
  42. package/dist/components/hds/stepper/list/step.js.map +1 -1
  43. package/dist/components/hds/stepper/nav/step.js +6 -2
  44. package/dist/components/hds/stepper/nav/step.js.map +1 -1
  45. package/dist/components/hds/table/index.js +9 -0
  46. package/dist/components/hds/table/index.js.map +1 -1
  47. package/dist/components/hds/table/tr.js +27 -15
  48. package/dist/components/hds/table/tr.js.map +1 -1
  49. package/dist/components.js +1 -1
  50. package/dist/{index-DtMB-P9m.js → index-Cx64Nvu4.js} +111 -226
  51. package/dist/index-Cx64Nvu4.js.map +1 -0
  52. package/dist/modifiers/hds-scroll-into-view-on-focus.js +4 -0
  53. package/dist/modifiers/hds-scroll-into-view-on-focus.js.map +1 -1
  54. package/dist/styles/@hashicorp/design-system-components.css +86 -22
  55. package/dist/styles/@hashicorp/design-system-components.css.map +1 -1
  56. package/dist/styles/components/advanced-table.scss +4 -1
  57. package/dist/styles/components/badge-count.scss +1 -1
  58. package/dist/styles/components/badge.scss +1 -1
  59. package/dist/styles/components/filter-bar.scss +10 -2
  60. package/dist/styles/components/form/character-count.scss +1 -1
  61. package/dist/styles/components/form/error.scss +1 -1
  62. package/dist/styles/components/form/helper-text.scss +1 -1
  63. package/dist/styles/components/form/indicator.scss +1 -1
  64. package/dist/styles/components/form/label.scss +1 -1
  65. package/dist/styles/components/form/legend.scss +1 -1
  66. package/dist/styles/components/icon-tile.scss +1 -1
  67. package/dist/styles/components/link/standalone.scss +1 -1
  68. package/dist/styles/components/segmented-group.scss +43 -6
  69. package/dist/styles/components/tag.scss +1 -1
  70. package/package.json +7 -4
  71. package/translations/hds/components/stepper/en-us.yaml +1 -0
  72. package/dist/index-DtMB-P9m.js.map +0 -1
@@ -1,29 +1,52 @@
1
+ import Component from '@glimmer/component';
1
2
  import { hash } from '@ember/helper';
3
+ import style from 'ember-style-modifier';
2
4
  import HdsButton from '../button/index.js';
3
5
  import HdsDropdown from '../dropdown/index.js';
4
6
  import HdsFormSelectBase from '../form/select/base.js';
5
7
  import HdsFormTextInputBase from '../form/text-input/base.js';
8
+ import HdsFormSuperSelectSingleBase from '../form/super-select/single/base.js';
9
+ import HdsFormSuperSelectMultipleBase from '../form/super-select/multiple/base.js';
6
10
  import HdsYield from '../yield/index.js';
7
11
  import { precompileTemplate } from '@ember/template-compilation';
8
12
  import { setComponentTemplate } from '@ember/component';
9
- import templateOnly from '@ember/component/template-only';
10
13
 
11
14
  /**
12
15
  * Copyright IBM Corp. 2021, 2026
13
16
  * SPDX-License-Identifier: MPL-2.0
14
17
  */
15
-
16
- const HdsSegmentedGroup = setComponentTemplate(precompileTemplate("<div class=\"hds-segmented-group\" ...attributes>\n {{yield (hash Button=HdsButton Dropdown=HdsDropdown Select=HdsFormSelectBase TextInput=HdsFormTextInputBase Generic=HdsYield)}}\n</div>", {
17
- strictMode: true,
18
- scope: () => ({
19
- hash,
20
- HdsButton,
21
- HdsDropdown,
22
- HdsFormSelectBase,
23
- HdsFormTextInputBase,
24
- HdsYield
25
- })
26
- }), templateOnly());
18
+ class HdsSegmentedGroup extends Component {
19
+ get classNames() {
20
+ const classes = ['hds-segmented-group'];
21
+ if (this.args.isFullWidth) {
22
+ classes.push('hds-segmented-group--is-full-width');
23
+ }
24
+ return classes.join(' ');
25
+ }
26
+ get styles() {
27
+ const styles = {};
28
+ if (this.args.maxWidth) {
29
+ styles['--hds-segmented-group-max-width'] = this.args.maxWidth;
30
+ }
31
+ return styles;
32
+ }
33
+ static {
34
+ setComponentTemplate(precompileTemplate("<div class={{this.classNames}} {{style this.styles}} ...attributes>\n {{yield (hash Button=HdsButton Dropdown=HdsDropdown Select=HdsFormSelectBase TextInput=HdsFormTextInputBase SuperSelectSingle=HdsFormSuperSelectSingleBase SuperSelectMultiple=HdsFormSuperSelectMultipleBase Generic=HdsYield)}}\n</div>", {
35
+ strictMode: true,
36
+ scope: () => ({
37
+ style,
38
+ hash,
39
+ HdsButton,
40
+ HdsDropdown,
41
+ HdsFormSelectBase,
42
+ HdsFormTextInputBase,
43
+ HdsFormSuperSelectSingleBase,
44
+ HdsFormSuperSelectMultipleBase,
45
+ HdsYield
46
+ })
47
+ }), this);
48
+ }
49
+ }
27
50
 
28
51
  export { HdsSegmentedGroup as default };
29
52
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/segmented-group/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\nimport { hash } from '@ember/helper';\n\nimport HdsButton from '../button/index.gts';\nimport HdsDropdown from '../dropdown/index.gts';\nimport HdsFormSelectBase from '../form/select/base.gts';\nimport HdsFormTextInputBase from '../form/text-input/base.gts';\nimport HdsYield from '../yield/index.gts';\n\nexport interface HdsSegmentedGroupSignature {\n Blocks: {\n default: [\n {\n Button?: typeof HdsButton;\n Dropdown?: typeof HdsDropdown;\n Select?: typeof HdsFormSelectBase;\n TextInput?: typeof HdsFormTextInputBase;\n Generic?: typeof HdsYield;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nconst HdsSegmentedGroup: TemplateOnlyComponent<HdsSegmentedGroupSignature> =\n <template>\n <div class=\"hds-segmented-group\" ...attributes>\n {{yield\n (hash\n Button=HdsButton\n Dropdown=HdsDropdown\n Select=HdsFormSelectBase\n TextInput=HdsFormTextInputBase\n Generic=HdsYield\n )\n }}\n </div>\n </template>;\n\nexport default HdsSegmentedGroup;\n"],"names":["HdsSegmentedGroup","setComponentTemplate","precompileTemplate","strictMode","scope","hash","HdsButton","HdsDropdown","HdsFormSelectBase","HdsFormTextInputBase","HdsYield","templateOnly"],"mappings":";;;;;;;;;;AAAA;;;AAGC;;AA0BD,MAAMA,iBAAyC,GAAAC,oBAAA,CAC7CC,kBAAA,CAAA,8LAAA,EAYA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,IAAA;IAAAC,SAAA;IAAAC,WAAA;IAAAC,iBAAA;IAAAC,oBAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/segmented-group/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\nimport style from 'ember-style-modifier';\n\nimport HdsButton from '../button/index.gts';\nimport HdsDropdown from '../dropdown/index.gts';\nimport HdsFormSelectBase from '../form/select/base.gts';\nimport HdsFormTextInputBase from '../form/text-input/base.gts';\nimport HdsFormSuperSelectSingleBase from '../form/super-select/single/base.gts';\nimport HdsFormSuperSelectMultipleBase from '../form/super-select/multiple/base.gts';\nimport HdsYield from '../yield/index.gts';\n\nexport interface HdsSegmentedGroupSignature {\n Args: {\n isFullWidth?: boolean;\n maxWidth?: string;\n };\n Blocks: {\n default: [\n {\n Button?: typeof HdsButton;\n Dropdown?: typeof HdsDropdown;\n Select?: typeof HdsFormSelectBase;\n TextInput?: typeof HdsFormTextInputBase;\n SuperSelectSingle?: typeof HdsFormSuperSelectSingleBase;\n SuperSelectMultiple?: typeof HdsFormSuperSelectMultipleBase;\n Generic?: typeof HdsYield;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsSegmentedGroup extends Component<HdsSegmentedGroupSignature> {\n get classNames() {\n const classes = ['hds-segmented-group'];\n\n if (this.args.isFullWidth) {\n classes.push('hds-segmented-group--is-full-width');\n }\n\n return classes.join(' ');\n }\n\n get styles(): Record<string, string> {\n const styles: { [key: string]: string } = {};\n if (this.args.maxWidth) {\n styles['--hds-segmented-group-max-width'] = this.args.maxWidth;\n }\n\n return styles;\n }\n\n <template>\n <div class={{this.classNames}} {{style this.styles}} ...attributes>\n {{yield\n (hash\n Button=HdsButton\n Dropdown=HdsDropdown\n Select=HdsFormSelectBase\n TextInput=HdsFormTextInputBase\n SuperSelectSingle=HdsFormSuperSelectSingleBase\n SuperSelectMultiple=HdsFormSuperSelectMultipleBase\n Generic=HdsYield\n )\n }}\n </div>\n </template>\n}\n"],"names":["HdsSegmentedGroup","Component","classNames","classes","args","isFullWidth","push","join","styles","maxWidth","setComponentTemplate","precompileTemplate","strictMode","scope","style","hash","HdsButton","HdsDropdown","HdsFormSelectBase","HdsFormTextInputBase","HdsFormSuperSelectSingleBase","HdsFormSuperSelectMultipleBase","HdsYield"],"mappings":";;;;;;;;;;;;;AAAA;;;AAGC;AAmCc,MAAMA,0BAA0BC,SAAA,CAAU;EACvD,IAAIC,UAAAA,GAAa;AACf,IAAA,MAAMC,OAAA,GAAU,CAAC,qBAAA,CAAsB;AAEvC,IAAA,IAAI,IAAI,CAACC,IAAI,CAACC,WAAW,EAAE;AACzBF,MAAAA,OAAA,CAAQG,IAAI,CAAC,oCAAA,CAAA;AACf,IAAA;AAEA,IAAA,OAAOH,OAAA,CAAQI,IAAI,CAAC,GAAA,CAAA;AACtB,EAAA;EAEA,IAAIC,MAAAA,GAAiC;IACnC,MAAMA,SAAoC,EAAC;AAC3C,IAAA,IAAI,IAAI,CAACJ,IAAI,CAACK,QAAQ,EAAE;MACtBD,MAAM,CAAC,iCAAA,CAAkC,GAAG,IAAI,CAACJ,IAAI,CAACK,QAAQ;AAChE,IAAA;AAEA,IAAA,OAAOD,MAAA;AACT,EAAA;AAEA,EAAA;IAAAE,oBAAA,CAAAC,kBAAA,CAAA,kTAAA,EAcA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,KAAA;QAAAC,IAAA;QAAAC,SAAA;QAAAC,WAAA;QAAAC,iBAAA;QAAAC,oBAAA;QAAAC,4BAAA;QAAAC,8BAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -3,9 +3,11 @@ import { assert } from '@ember/debug';
3
3
  import { guidFor } from '@ember/object/internals';
4
4
  import { modifier } from 'ember-modifier';
5
5
  import { service } from '@ember/service';
6
+ import { concat } from '@ember/helper';
6
7
  import { HdsStepperStatusToSrOnlyText, HdsStepperStatusesValues, HdsStepperTitleTagValues } from '../types.js';
7
8
  import HdsTextBody from '../../text/body.js';
8
9
  import HdsStepperStepIndicator from '../step/indicator.js';
10
+ import HdsTHelper from '../../../../helpers/hds-t.js';
9
11
  import { precompileTemplate } from '@ember/template-compilation';
10
12
  import { setComponentTemplate } from '@ember/component';
11
13
  import { g, i } from 'decorator-transforms/runtime';
@@ -61,11 +63,13 @@ class HdsStepperListStep extends Component {
61
63
  return classes.join(' ');
62
64
  }
63
65
  static {
64
- setComponentTemplate(precompileTemplate("<li class={{this.classNames}} ...attributes id={{this._stepId}} {{this._setUpStep @didInsertNode @willDestroyNode}}>\n <div class=\"hds-stepper-list__step-progress\">\n <HdsStepperStepIndicator @text=\"{{this.stepNumber}}\" @status={{this.status}} @isInteractive={{false}} class=\"hds-stepper-list__step-indicator\" />\n </div>\n <div class=\"hds-stepper-list__step-text\">\n <HdsTextBody class=\"hds-stepper-list__step-title\" @tag={{this.titleTag}} @size=\"200\" @weight=\"semibold\" @color=\"strong\">\n {{yield to=\"title\"}}\n <span class=\"sr-only\">{{this.statusSrOnlyText}}</span>\n </HdsTextBody>\n {{!-- we use :empty in CSS so we have to add squishes here to avoid whitespaces --}}\n {{#if (has-block \"description\")}}\n <HdsTextBody class=\"hds-stepper-list__step-description\" @tag=\"div\" @size=\"100\" @weight=\"regular\" @color=\"primary\">\n {{~yield to=\"description\"~}}\n </HdsTextBody>\n {{/if}}\n {{#if (has-block \"content\")}}\n <div class=\"hds-stepper-list__step-content\">\n {{~yield to=\"content\"~}}\n </div>\n {{/if}}\n </div>\n</li>", {
66
+ setComponentTemplate(precompileTemplate("<li class={{this.classNames}} ...attributes id={{this._stepId}} {{this._setUpStep @didInsertNode @willDestroyNode}}>\n <div class=\"hds-stepper-list__step-progress\">\n <HdsStepperStepIndicator @text=\"{{this.stepNumber}}\" @status={{this.status}} @isInteractive={{false}} aria-hidden=\"true\" class=\"hds-stepper-list__step-indicator\" />\n </div>\n <div class=\"hds-stepper-list__step-text\">\n <HdsTextBody class=\"hds-stepper-list__step-title\" @tag={{this.titleTag}} @size=\"200\" @weight=\"semibold\" @color=\"strong\">\n <span class=\"sr-only\">\n {{hdsT \"hds.components.stepper.step-number\" default=(concat \"Step \" this.stepNumber) stepNumber=this.stepNumber}}\n </span>\n {{yield to=\"title\"}}\n <span class=\"sr-only\">{{this.statusSrOnlyText}}</span>\n </HdsTextBody>\n {{!-- we use :empty in CSS so we have to add squishes here to avoid whitespaces --}}\n {{#if (has-block \"description\")}}\n <HdsTextBody class=\"hds-stepper-list__step-description\" @tag=\"div\" @size=\"100\" @weight=\"regular\" @color=\"primary\">\n {{~yield to=\"description\"~}}\n </HdsTextBody>\n {{/if}}\n {{#if (has-block \"content\")}}\n <div class=\"hds-stepper-list__step-content\">\n {{~yield to=\"content\"~}}\n </div>\n {{/if}}\n </div>\n</li>", {
65
67
  strictMode: true,
66
68
  scope: () => ({
67
69
  HdsStepperStepIndicator,
68
- HdsTextBody
70
+ HdsTextBody,
71
+ hdsT: HdsTHelper,
72
+ concat
69
73
  })
70
74
  }), this);
71
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"step.js","sources":["../../../../../src/components/hds/stepper/list/step.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { guidFor } from '@ember/object/internals';\nimport { modifier } from 'ember-modifier';\nimport { service } from '@ember/service';\nimport type HdsIntlService from '../../../../services/hds-intl';\nimport type Owner from '@ember/owner';\n\nimport {\n HdsStepperStatusesValues,\n HdsStepperStatusToSrOnlyText,\n HdsStepperTitleTagValues,\n} from '../types.ts';\nimport HdsTextBody from '../../text/body.gts';\nimport HdsStepperStepIndicator from '../step/indicator.gts';\n\nimport type {\n HdsStepperListStepIds,\n HdsStepperStatuses,\n HdsStepperTitleTags,\n} from '../types.ts';\n\nexport const DEFAULT_STATUS = HdsStepperStatusesValues.Incomplete;\nexport const STATUSES: HdsStepperStatuses[] = Object.values(\n HdsStepperStatusesValues\n);\n\nexport interface HdsStepperListStepSignature {\n Args: {\n status?: HdsStepperStatuses;\n titleTag?: HdsStepperTitleTags;\n stepIds?: HdsStepperListStepIds;\n didInsertNode?: (element: HTMLElement) => void;\n willDestroyNode?: (element: HTMLElement) => void;\n };\n Blocks: {\n title: [];\n description?: [];\n content?: [];\n };\n Element: HTMLElement;\n}\n\nexport default class HdsStepperListStep extends Component<HdsStepperListStepSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n private _statusSrOnlyTextMap?: Record<HdsStepperStatusesValues, string>;\n private _stepId = 'step-' + guidFor(this);\n\n private _setUpStep = modifier(\n (\n element: HTMLElement,\n [insertCallbackFunction, destroyCallbackFunction]\n ) => {\n if (typeof insertCallbackFunction === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n insertCallbackFunction(element);\n }\n\n return () => {\n if (typeof destroyCallbackFunction === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n destroyCallbackFunction(element);\n }\n };\n }\n );\n\n constructor(owner: Owner, args: HdsStepperListStepSignature['Args']) {\n super(owner, args);\n\n this._statusSrOnlyTextMap = HdsStepperStatusToSrOnlyText(this.hdsIntl);\n }\n\n get stepNumber(): number | undefined {\n return this.args.stepIds\n ? this.args.stepIds.indexOf(this._stepId) + 1\n : undefined;\n }\n\n get status(): HdsStepperStatuses {\n const { status = DEFAULT_STATUS } = this.args;\n\n assert(\n `@status for \"Hds::Stepper::List::Step\" must be one of the following: ${STATUSES.join(\n ', '\n )}; received: ${status}`,\n STATUSES.includes(status)\n );\n\n return status;\n }\n\n get statusSrOnlyText(): string {\n return this._statusSrOnlyTextMap![this.status];\n }\n\n get titleTag(): HdsStepperTitleTags {\n return this.args.titleTag ?? HdsStepperTitleTagValues.Div;\n }\n\n get classNames(): string {\n const classes = ['hds-stepper-list__step'];\n\n classes.push(`hds-stepper-list__step--${this.status}`);\n\n return classes.join(' ');\n }\n\n <template>\n <li\n class={{this.classNames}}\n ...attributes\n id={{this._stepId}}\n {{this._setUpStep @didInsertNode @willDestroyNode}}\n >\n <div class=\"hds-stepper-list__step-progress\">\n <HdsStepperStepIndicator\n @text=\"{{this.stepNumber}}\"\n @status={{this.status}}\n @isInteractive={{false}}\n class=\"hds-stepper-list__step-indicator\"\n />\n </div>\n <div class=\"hds-stepper-list__step-text\">\n <HdsTextBody\n class=\"hds-stepper-list__step-title\"\n @tag={{this.titleTag}}\n @size=\"200\"\n @weight=\"semibold\"\n @color=\"strong\"\n >\n {{yield to=\"title\"}}\n <span class=\"sr-only\">{{this.statusSrOnlyText}}</span>\n </HdsTextBody>\n {{! we use :empty in CSS so we have to add squishes here to avoid whitespaces }}\n {{#if (has-block \"description\")}}\n <HdsTextBody\n class=\"hds-stepper-list__step-description\"\n @tag=\"div\"\n @size=\"100\"\n @weight=\"regular\"\n @color=\"primary\"\n >\n {{~yield to=\"description\"~}}\n </HdsTextBody>\n {{/if}}\n {{#if (has-block \"content\")}}\n <div class=\"hds-stepper-list__step-content\">\n {{~yield to=\"content\"~}}\n </div>\n {{/if}}\n </div>\n </li>\n </template>\n}\n"],"names":["DEFAULT_STATUS","HdsStepperStatusesValues","Incomplete","STATUSES","Object","values","HdsStepperListStep","Component","g","prototype","service","i","_statusSrOnlyTextMap","_stepId","guidFor","_setUpStep","modifier","element","insertCallbackFunction","destroyCallbackFunction","constructor","owner","args","HdsStepperStatusToSrOnlyText","hdsIntl","stepNumber","stepIds","indexOf","undefined","status","assert","join","includes","statusSrOnlyText","titleTag","HdsStepperTitleTagValues","Div","classNames","classes","push","setComponentTemplate","precompileTemplate","strictMode","scope","HdsStepperStepIndicator","HdsTextBody"],"mappings":";;;;;;;;;;;;AAAA;;;AAGC;AAwBM,MAAMA,cAAA,GAAiBC,wBAAA,CAAyBC;AAChD,MAAMC,QAAU,GAAuBC,MAAA,CAAOC,MAAM,CACzDJ,wBAAA;AAmBa,MAAMK,2BAA2BC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CACvDC,OAAA,CAAA,CAAA;AAAA;EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,MAAA;EAEOC,oBAAA;AACAC,EAAAA,OAAA,GAAU,OAAA,GAAUC,OAAA,CAAQ,IAAI,CAAA;EAEhCC,aAAaC,QAAA,CACnB,CACEC,OAAS,EACT,CAACC,wBAAwBC,uBAAA,CAAwB,KAAA;AAEjD,IAAA,IAAI,OAAOD,2BAA2B,UAAA,EAAY;AAChD;MACAA,sBAAA,CAAuBD,OAAA,CAAA;AACzB,IAAA;AAEA,IAAA,OAAO,MAAA;AACL,MAAA,IAAI,OAAOE,4BAA4B,UAAA,EAAY;AACjD;QACAA,uBAAA,CAAwBF,OAAA,CAAA;AAC1B,MAAA;IACF,CAAA;AACF,EAAA,CAAA,CAAA;AAGFG,EAAAA,WAAAA,CAAYC,KAAY,EAAEC,IAAyC,EAAE;AACnE,IAAA,KAAK,CAACD,KAAA,EAAOC,IAAA,CAAA;IAEb,IAAI,CAACV,oBAAoB,GAAGW,4BAAA,CAA6B,IAAI,CAACC,OAAO,CAAA;AACvE,EAAA;EAEA,IAAIC,UAAAA,GAAiC;IACnC,OAAO,IAAI,CAACH,IAAI,CAACI,OAAO,GACpB,IAAI,CAACJ,IAAI,CAACI,OAAO,CAACC,OAAO,CAAC,IAAI,CAACd,OAAO,IAAI,CAAA,GAC1Ce,SAAA;AACN,EAAA;EAEA,IAAIC,SAA6B;IAC/B,MAAM;AAAEA,MAAAA,MAAA,GAAS7B;KAAgB,GAAG,IAAI,CAACsB,IAAI;AAE7CQ,IAAAA,MAAA,CACE,CAAA,qEAAA,EAAwE3B,QAAA,CAAS4B,IAAI,CACnF,IAAA,CAAA,CAAA,YAAA,EACcF,MAAA,CAAA,CAAQ,EACxB1B,QAAA,CAAS6B,QAAQ,CAACH,MAAA,CAAA,CAAA;AAGpB,IAAA,OAAOA,MAAA;AACT,EAAA;EAEA,IAAII,gBAAAA,GAA2B;AAC7B,IAAA,OAAO,IAAI,CAACrB,oBAAoB,CAAE,IAAI,CAACiB,MAAM,CAAC;AAChD,EAAA;EAEA,IAAIK,WAAgC;IAClC,OAAO,IAAI,CAACZ,IAAI,CAACY,QAAQ,IAAIC,yBAAyBC,GAAG;AAC3D,EAAA;EAEA,IAAIC,UAAAA,GAAqB;AACvB,IAAA,MAAMC,OAAA,GAAU,CAAC,wBAAA,CAAyB;IAE1CA,OAAA,CAAQC,IAAI,CAAC,CAAA,wBAAA,EAA2B,IAAI,CAACV,MAAM,EAAE,CAAA;AAErD,IAAA,OAAOS,OAAA,CAAQP,IAAI,CAAC,GAAA,CAAA;AACtB,EAAA;AAEA,EAAA;IAAAS,oBAAA,CAAAC,kBAAA,CAAA,knCAAA,EA6CA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,uBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
1
+ {"version":3,"file":"step.js","sources":["../../../../../src/components/hds/stepper/list/step.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { guidFor } from '@ember/object/internals';\nimport { modifier } from 'ember-modifier';\nimport { service } from '@ember/service';\nimport { concat } from '@ember/helper';\nimport type HdsIntlService from '../../../../services/hds-intl';\nimport type Owner from '@ember/owner';\n\nimport {\n HdsStepperStatusesValues,\n HdsStepperStatusToSrOnlyText,\n HdsStepperTitleTagValues,\n} from '../types.ts';\nimport HdsTextBody from '../../text/body.gts';\nimport HdsStepperStepIndicator from '../step/indicator.gts';\nimport hdsT from '../../../../helpers/hds-t.ts';\n\nimport type {\n HdsStepperListStepIds,\n HdsStepperStatuses,\n HdsStepperTitleTags,\n} from '../types.ts';\n\nexport const DEFAULT_STATUS = HdsStepperStatusesValues.Incomplete;\nexport const STATUSES: HdsStepperStatuses[] = Object.values(\n HdsStepperStatusesValues\n);\n\nexport interface HdsStepperListStepSignature {\n Args: {\n status?: HdsStepperStatuses;\n titleTag?: HdsStepperTitleTags;\n stepIds?: HdsStepperListStepIds;\n didInsertNode?: (element: HTMLElement) => void;\n willDestroyNode?: (element: HTMLElement) => void;\n };\n Blocks: {\n title: [];\n description?: [];\n content?: [];\n };\n Element: HTMLElement;\n}\n\nexport default class HdsStepperListStep extends Component<HdsStepperListStepSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n private _statusSrOnlyTextMap?: Record<HdsStepperStatusesValues, string>;\n private _stepId = 'step-' + guidFor(this);\n\n private _setUpStep = modifier(\n (\n element: HTMLElement,\n [insertCallbackFunction, destroyCallbackFunction]\n ) => {\n if (typeof insertCallbackFunction === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n insertCallbackFunction(element);\n }\n\n return () => {\n if (typeof destroyCallbackFunction === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n destroyCallbackFunction(element);\n }\n };\n }\n );\n\n constructor(owner: Owner, args: HdsStepperListStepSignature['Args']) {\n super(owner, args);\n\n this._statusSrOnlyTextMap = HdsStepperStatusToSrOnlyText(this.hdsIntl);\n }\n\n get stepNumber(): number | undefined {\n return this.args.stepIds\n ? this.args.stepIds.indexOf(this._stepId) + 1\n : undefined;\n }\n\n get status(): HdsStepperStatuses {\n const { status = DEFAULT_STATUS } = this.args;\n\n assert(\n `@status for \"Hds::Stepper::List::Step\" must be one of the following: ${STATUSES.join(\n ', '\n )}; received: ${status}`,\n STATUSES.includes(status)\n );\n\n return status;\n }\n\n get statusSrOnlyText(): string {\n return this._statusSrOnlyTextMap![this.status];\n }\n\n get titleTag(): HdsStepperTitleTags {\n return this.args.titleTag ?? HdsStepperTitleTagValues.Div;\n }\n\n get classNames(): string {\n const classes = ['hds-stepper-list__step'];\n\n classes.push(`hds-stepper-list__step--${this.status}`);\n\n return classes.join(' ');\n }\n\n <template>\n <li\n class={{this.classNames}}\n ...attributes\n id={{this._stepId}}\n {{this._setUpStep @didInsertNode @willDestroyNode}}\n >\n <div class=\"hds-stepper-list__step-progress\">\n <HdsStepperStepIndicator\n @text=\"{{this.stepNumber}}\"\n @status={{this.status}}\n @isInteractive={{false}}\n aria-hidden=\"true\"\n class=\"hds-stepper-list__step-indicator\"\n />\n </div>\n <div class=\"hds-stepper-list__step-text\">\n <HdsTextBody\n class=\"hds-stepper-list__step-title\"\n @tag={{this.titleTag}}\n @size=\"200\"\n @weight=\"semibold\"\n @color=\"strong\"\n >\n <span class=\"sr-only\">\n {{hdsT\n \"hds.components.stepper.step-number\"\n default=(concat \"Step \" this.stepNumber)\n stepNumber=this.stepNumber\n }}\n </span>\n {{yield to=\"title\"}}\n <span class=\"sr-only\">{{this.statusSrOnlyText}}</span>\n </HdsTextBody>\n {{! we use :empty in CSS so we have to add squishes here to avoid whitespaces }}\n {{#if (has-block \"description\")}}\n <HdsTextBody\n class=\"hds-stepper-list__step-description\"\n @tag=\"div\"\n @size=\"100\"\n @weight=\"regular\"\n @color=\"primary\"\n >\n {{~yield to=\"description\"~}}\n </HdsTextBody>\n {{/if}}\n {{#if (has-block \"content\")}}\n <div class=\"hds-stepper-list__step-content\">\n {{~yield to=\"content\"~}}\n </div>\n {{/if}}\n </div>\n </li>\n </template>\n}\n"],"names":["DEFAULT_STATUS","HdsStepperStatusesValues","Incomplete","STATUSES","Object","values","HdsStepperListStep","Component","g","prototype","service","i","_statusSrOnlyTextMap","_stepId","guidFor","_setUpStep","modifier","element","insertCallbackFunction","destroyCallbackFunction","constructor","owner","args","HdsStepperStatusToSrOnlyText","hdsIntl","stepNumber","stepIds","indexOf","undefined","status","assert","join","includes","statusSrOnlyText","titleTag","HdsStepperTitleTagValues","Div","classNames","classes","push","setComponentTemplate","precompileTemplate","strictMode","scope","HdsStepperStepIndicator","HdsTextBody","hdsT","concat"],"mappings":";;;;;;;;;;;;;;AAAA;;;AAGC;AA0BM,MAAMA,cAAA,GAAiBC,wBAAA,CAAyBC;AAChD,MAAMC,QAAU,GAAuBC,MAAA,CAAOC,MAAM,CACzDJ,wBAAA;AAmBa,MAAMK,2BAA2BC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CACvDC,OAAA,CAAA,CAAA;AAAA;EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,MAAA;EAEOC,oBAAA;AACAC,EAAAA,OAAA,GAAU,OAAA,GAAUC,OAAA,CAAQ,IAAI,CAAA;EAEhCC,aAAaC,QAAA,CACnB,CACEC,OAAS,EACT,CAACC,wBAAwBC,uBAAA,CAAwB,KAAA;AAEjD,IAAA,IAAI,OAAOD,2BAA2B,UAAA,EAAY;AAChD;MACAA,sBAAA,CAAuBD,OAAA,CAAA;AACzB,IAAA;AAEA,IAAA,OAAO,MAAA;AACL,MAAA,IAAI,OAAOE,4BAA4B,UAAA,EAAY;AACjD;QACAA,uBAAA,CAAwBF,OAAA,CAAA;AAC1B,MAAA;IACF,CAAA;AACF,EAAA,CAAA,CAAA;AAGFG,EAAAA,WAAAA,CAAYC,KAAY,EAAEC,IAAyC,EAAE;AACnE,IAAA,KAAK,CAACD,KAAA,EAAOC,IAAA,CAAA;IAEb,IAAI,CAACV,oBAAoB,GAAGW,4BAAA,CAA6B,IAAI,CAACC,OAAO,CAAA;AACvE,EAAA;EAEA,IAAIC,UAAAA,GAAiC;IACnC,OAAO,IAAI,CAACH,IAAI,CAACI,OAAO,GACpB,IAAI,CAACJ,IAAI,CAACI,OAAO,CAACC,OAAO,CAAC,IAAI,CAACd,OAAO,IAAI,CAAA,GAC1Ce,SAAA;AACN,EAAA;EAEA,IAAIC,SAA6B;IAC/B,MAAM;AAAEA,MAAAA,MAAA,GAAS7B;KAAgB,GAAG,IAAI,CAACsB,IAAI;AAE7CQ,IAAAA,MAAA,CACE,CAAA,qEAAA,EAAwE3B,QAAA,CAAS4B,IAAI,CACnF,IAAA,CAAA,CAAA,YAAA,EACcF,MAAA,CAAA,CAAQ,EACxB1B,QAAA,CAAS6B,QAAQ,CAACH,MAAA,CAAA,CAAA;AAGpB,IAAA,OAAOA,MAAA;AACT,EAAA;EAEA,IAAII,gBAAAA,GAA2B;AAC7B,IAAA,OAAO,IAAI,CAACrB,oBAAoB,CAAE,IAAI,CAACiB,MAAM,CAAC;AAChD,EAAA;EAEA,IAAIK,WAAgC;IAClC,OAAO,IAAI,CAACZ,IAAI,CAACY,QAAQ,IAAIC,yBAAyBC,GAAG;AAC3D,EAAA;EAEA,IAAIC,UAAAA,GAAqB;AACvB,IAAA,MAAMC,OAAA,GAAU,CAAC,wBAAA,CAAyB;IAE1CA,OAAA,CAAQC,IAAI,CAAC,CAAA,wBAAA,EAA2B,IAAI,CAACV,MAAM,EAAE,CAAA;AAErD,IAAA,OAAOS,OAAA,CAAQP,IAAI,CAAC,GAAA,CAAA;AACtB,EAAA;AAEA,EAAA;IAAAS,oBAAA,CAAAC,kBAAA,CAAA,qzCAAA,EAqDA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,uBAAA;QAAAC,WAAA;cAAAC,UAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -3,10 +3,12 @@ import { guidFor } from '@ember/object/internals';
3
3
  import { modifier } from 'ember-modifier';
4
4
  import { eq } from 'ember-truth-helpers';
5
5
  import { on } from '@ember/modifier';
6
+ import { concat } from '@ember/helper';
6
7
  import { service } from '@ember/service';
7
8
  import { HdsStepperNavStatusToSrOnlyText, HdsStepperTitleTagValues, HdsStepperNavStatusesValues, HdsStepperNavStatusToIndicatorStatus } from '../types.js';
8
9
  import HdsStepperStepIndicator from '../step/indicator.js';
9
10
  import HdsTextBody from '../../text/body.js';
11
+ import HdsTHelper from '../../../../helpers/hds-t.js';
10
12
  import { precompileTemplate } from '@ember/template-compilation';
11
13
  import { setComponentTemplate } from '@ember/component';
12
14
  import { g, i } from 'decorator-transforms/runtime';
@@ -118,13 +120,15 @@ class HdsStepperNavStep extends Component {
118
120
  return classes.join(' ');
119
121
  }
120
122
  static {
121
- setComponentTemplate(precompileTemplate("{{!-- template-lint-disable require-context-role no-invalid-role --}}\n{{!-- template-lint-disable require-presentational-children --}}\n{{#if this.isNavInteractive}}\n <li class={{this.classNames}} ...attributes role={{if this.isNavInteractive \"presentation\"}}>\n <button class=\"hds-stepper-nav__step-content hds-stepper-nav__step-button\" id={{this._stepId}} tabindex={{unless (eq this.status \"active\") \"-1\"}} type=\"button\" role=\"tab\" aria-controls={{this.coupledPanelId}} aria-selected={{if (eq this.status \"active\") \"true\" \"false\"}} aria-disabled={{if (eq this.status \"incomplete\") \"true\" \"false\"}} {{on \"click\" this.onStepChange}} {{on \"keyup\" this.onKeyUp}} {{this._setUpStep this.didInsertNode this.willDestroyNode}}>\n <div class=\"hds-stepper-nav__step-progress\">\n <HdsStepperStepIndicator @text=\"{{this.stepNumber}}\" @status={{this.stepIndicatorStatus}} @isInteractive={{true}} class=\"hds-stepper-nav__step-indicator\" />\n </div>\n <div class=\"hds-stepper-nav__step-text\">\n <HdsTextBody class=\"hds-stepper-nav__step-title\" @tag={{this.titleTag}} @size=\"200\" @weight=\"semibold\">\n {{yield to=\"title\"}}\n <span class=\"sr-only\">{{this.statusSrOnlyText}}</span>\n </HdsTextBody>\n {{#if (has-block \"description\")}}\n <HdsTextBody class=\"hds-stepper-nav__step-description\" @tag=\"div\" @size=\"100\" @weight=\"regular\">\n {{yield to=\"description\"}}\n </HdsTextBody>\n {{/if}}\n </div>\n </button>\n </li>\n{{else}}\n <li class={{this.classNames}} ...attributes role={{if this.isNavInteractive \"presentation\"}} aria-current={{if (eq this.status \"active\") \"step\" \"false\"}}>\n <div class=\"hds-stepper-nav__step-content\" id={{this._stepId}} {{this._setUpStep this.didInsertNode this.willDestroyNode}}>\n <div class=\"hds-stepper-nav__step-progress\">\n <HdsStepperStepIndicator @text=\"{{this.stepNumber}}\" @status={{this.stepIndicatorStatus}} @isInteractive={{false}} aria-hidden=\"true\" class=\"hds-stepper-nav__step-indicator\" />\n </div>\n <div class=\"hds-stepper-nav__step-text\">\n <HdsTextBody class=\"hds-stepper-nav__step-title\" @tag={{this.titleTag}} @size=\"200\" @weight=\"semibold\">\n {{yield to=\"title\"}}\n <span class=\"sr-only\">{{this.statusSrOnlyText}}</span>\n </HdsTextBody>\n {{#if (has-block \"description\")}}\n <HdsTextBody class=\"hds-stepper-nav__step-description\" @tag=\"div\" @size=\"100\" @weight=\"regular\">\n {{yield to=\"description\"}}\n </HdsTextBody>\n {{/if}}\n </div>\n </div>\n </li>\n{{/if}}\n{{!-- template-lint-enable require-presentational-children --}}\n{{!-- template-lint-enable require-context-role no-invalid-role --}}", {
123
+ setComponentTemplate(precompileTemplate("{{!-- template-lint-disable require-context-role no-invalid-role --}}\n{{!-- template-lint-disable require-presentational-children --}}\n{{#if this.isNavInteractive}}\n <li class={{this.classNames}} ...attributes role={{if this.isNavInteractive \"presentation\"}}>\n <button class=\"hds-stepper-nav__step-content hds-stepper-nav__step-button\" id={{this._stepId}} tabindex={{unless (eq this.status \"active\") \"-1\"}} type=\"button\" role=\"tab\" aria-controls={{this.coupledPanelId}} aria-selected={{if (eq this.status \"active\") \"true\" \"false\"}} aria-disabled={{if (eq this.status \"incomplete\") \"true\" \"false\"}} {{on \"click\" this.onStepChange}} {{on \"keyup\" this.onKeyUp}} {{this._setUpStep this.didInsertNode this.willDestroyNode}}>\n <div class=\"hds-stepper-nav__step-progress\">\n <HdsStepperStepIndicator @text=\"{{this.stepNumber}}\" @status={{this.stepIndicatorStatus}} @isInteractive={{true}} aria-hidden=\"true\" class=\"hds-stepper-nav__step-indicator\" />\n </div>\n <div class=\"hds-stepper-nav__step-text\">\n <HdsTextBody class=\"hds-stepper-nav__step-title\" @tag={{this.titleTag}} @size=\"200\" @weight=\"semibold\">\n <span class=\"sr-only\">\n {{hdsT \"hds.components.stepper.step-number\" default=(concat \"Step \" this.stepNumber) stepNumber=this.stepNumber}}\n </span>\n {{yield to=\"title\"}}\n <span class=\"sr-only\">{{this.statusSrOnlyText}}</span>\n </HdsTextBody>\n {{#if (has-block \"description\")}}\n <HdsTextBody class=\"hds-stepper-nav__step-description\" @tag=\"div\" @size=\"100\" @weight=\"regular\">\n {{yield to=\"description\"}}\n </HdsTextBody>\n {{/if}}\n </div>\n </button>\n </li>\n{{else}}\n <li class={{this.classNames}} ...attributes role={{if this.isNavInteractive \"presentation\"}} aria-current={{if (eq this.status \"active\") \"step\" \"false\"}}>\n <div class=\"hds-stepper-nav__step-content\" id={{this._stepId}} {{this._setUpStep this.didInsertNode this.willDestroyNode}}>\n <div class=\"hds-stepper-nav__step-progress\">\n <HdsStepperStepIndicator @text=\"{{this.stepNumber}}\" @status={{this.stepIndicatorStatus}} @isInteractive={{false}} aria-hidden=\"true\" class=\"hds-stepper-nav__step-indicator\" />\n </div>\n <div class=\"hds-stepper-nav__step-text\">\n <HdsTextBody class=\"hds-stepper-nav__step-title\" @tag={{this.titleTag}} @size=\"200\" @weight=\"semibold\">\n {{yield to=\"title\"}}\n <span class=\"sr-only\">{{this.statusSrOnlyText}}</span>\n </HdsTextBody>\n {{#if (has-block \"description\")}}\n <HdsTextBody class=\"hds-stepper-nav__step-description\" @tag=\"div\" @size=\"100\" @weight=\"regular\">\n {{yield to=\"description\"}}\n </HdsTextBody>\n {{/if}}\n </div>\n </div>\n </li>\n{{/if}}\n{{!-- template-lint-enable require-presentational-children --}}\n{{!-- template-lint-enable require-context-role no-invalid-role --}}", {
122
124
  strictMode: true,
123
125
  scope: () => ({
124
126
  eq,
125
127
  on,
126
128
  HdsStepperStepIndicator,
127
- HdsTextBody
129
+ HdsTextBody,
130
+ hdsT: HdsTHelper,
131
+ concat
128
132
  })
129
133
  }), this);
130
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"step.js","sources":["../../../../../src/components/hds/stepper/nav/step.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { guidFor } from '@ember/object/internals';\nimport { modifier } from 'ember-modifier';\nimport { eq } from 'ember-truth-helpers';\nimport { on } from '@ember/modifier';\n\nimport { service } from '@ember/service';\nimport type HdsIntlService from '../../../../services/hds-intl';\nimport type Owner from '@ember/owner';\n\nimport {\n HdsStepperNavStatusesValues,\n HdsStepperNavStatusToIndicatorStatus,\n HdsStepperNavStatusToSrOnlyText,\n HdsStepperTitleTagValues,\n} from '../types.ts';\nimport HdsStepperStepIndicator from '../step/indicator.gts';\nimport HdsTextBody from '../../text/body.gts';\n\nimport type {\n HdsStepperNavPanelIds,\n HdsStepperNavStatuses,\n HdsStepperNavStepIds,\n HdsStepperStatuses,\n HdsStepperTitleTags,\n} from '../types.ts';\n\nexport const MAPPING_STATUS_TO_INDICATOR_STATUS =\n HdsStepperNavStatusToIndicatorStatus;\n\nexport interface HdsStepperNavStepSignature {\n Args: {\n currentStep: number;\n isNavInteractive?: boolean;\n titleTag?: HdsStepperTitleTags;\n stepIds?: HdsStepperNavStepIds;\n panelIds?: HdsStepperNavPanelIds;\n didInsertNode?: () => void;\n willDestroyNode?: (element: HTMLButtonElement) => void;\n onStepChange?: (event: MouseEvent, nodeIndex: number) => void;\n onKeyUp?: (nodeIndex: number, event: KeyboardEvent) => void;\n };\n Blocks: {\n title: [];\n description?: [];\n };\n Element: HTMLElement;\n}\n\nexport default class HdsStepperNavStep extends Component<HdsStepperNavStepSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n private _statusSrOnlyTextMap?: Record<HdsStepperNavStatuses, string>;\n private _stepId = 'step-' + guidFor(this);\n private _elementId?: string;\n\n private _setUpStep = modifier(\n (\n element: HTMLElement,\n [insertCallbackFunction, destroyCallbackFunction]\n ) => {\n if (typeof insertCallbackFunction === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n insertCallbackFunction(element);\n }\n\n return () => {\n if (typeof destroyCallbackFunction === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n destroyCallbackFunction(element);\n }\n };\n }\n );\n\n constructor(owner: Owner, args: HdsStepperNavStepSignature['Args']) {\n super(owner, args);\n\n this._statusSrOnlyTextMap = HdsStepperNavStatusToSrOnlyText(this.hdsIntl);\n }\n\n get titleTag(): HdsStepperTitleTags {\n return this.args.titleTag ?? HdsStepperTitleTagValues.Div;\n }\n\n get isNavInteractive(): boolean {\n return this.args.isNavInteractive != undefined\n ? this.args.isNavInteractive\n : true;\n }\n\n get nodeIndex(): number | undefined {\n return this.args.stepIds?.indexOf(this._stepId);\n }\n\n get stepNumber(): number | undefined {\n return this.args.stepIds\n ? this.args.stepIds.indexOf(this._stepId) + 1\n : undefined;\n }\n\n get coupledPanelId(): string | undefined {\n return this.nodeIndex !== undefined\n ? this.args.panelIds?.[this.nodeIndex]\n : undefined;\n }\n\n get status(): HdsStepperNavStatuses {\n if (this.nodeIndex != undefined && this.nodeIndex >= 0) {\n if (this.nodeIndex === this.args.currentStep) {\n return HdsStepperNavStatusesValues.Active;\n } else if (this.nodeIndex < this.args.currentStep) {\n return HdsStepperNavStatusesValues.Complete;\n } else {\n return HdsStepperNavStatusesValues.Incomplete;\n }\n } else {\n return HdsStepperNavStatusesValues.Incomplete;\n }\n }\n\n get stepIndicatorStatus(): HdsStepperStatuses {\n return MAPPING_STATUS_TO_INDICATOR_STATUS[this.status];\n }\n\n get statusSrOnlyText(): string {\n return this._statusSrOnlyTextMap![this.status];\n }\n\n get isInteractive(): boolean {\n return (\n this.isNavInteractive &&\n this.status === HdsStepperNavStatusesValues.Complete\n );\n }\n\n didInsertNode = (element: HTMLButtonElement): void => {\n const { didInsertNode } = this.args;\n\n if (typeof didInsertNode === 'function') {\n this._elementId = element.id;\n didInsertNode();\n }\n };\n\n willDestroyNode = (element: HTMLButtonElement): void => {\n const { willDestroyNode } = this.args;\n\n if (typeof willDestroyNode === 'function') {\n willDestroyNode(element);\n }\n };\n\n onStepChange = (event: MouseEvent): false | undefined => {\n const { onStepChange } = this.args;\n\n if (\n this.isInteractive &&\n this.nodeIndex !== undefined &&\n typeof onStepChange === 'function'\n ) {\n onStepChange(event, this.nodeIndex);\n } else {\n return false;\n }\n };\n\n onKeyUp = (event: KeyboardEvent): void => {\n const { onKeyUp } = this.args;\n\n if (\n !(this.status === HdsStepperNavStatusesValues.Incomplete) &&\n this.nodeIndex !== undefined &&\n typeof onKeyUp === 'function'\n ) {\n onKeyUp(this.nodeIndex, event);\n }\n };\n\n get classNames(): string {\n const classes = ['hds-stepper-nav__step'];\n\n classes.push(`hds-stepper-nav__step--${this.status}`);\n\n return classes.join(' ');\n }\n\n <template>\n {{! template-lint-disable require-context-role no-invalid-role }}\n {{! template-lint-disable require-presentational-children }}\n {{#if this.isNavInteractive}}\n <li\n class={{this.classNames}}\n ...attributes\n role={{if this.isNavInteractive \"presentation\"}}\n >\n <button\n class=\"hds-stepper-nav__step-content hds-stepper-nav__step-button\"\n id={{this._stepId}}\n tabindex={{unless (eq this.status \"active\") \"-1\"}}\n type=\"button\"\n role=\"tab\"\n aria-controls={{this.coupledPanelId}}\n aria-selected={{if (eq this.status \"active\") \"true\" \"false\"}}\n aria-disabled={{if (eq this.status \"incomplete\") \"true\" \"false\"}}\n {{on \"click\" this.onStepChange}}\n {{on \"keyup\" this.onKeyUp}}\n {{this._setUpStep this.didInsertNode this.willDestroyNode}}\n >\n <div class=\"hds-stepper-nav__step-progress\">\n <HdsStepperStepIndicator\n @text=\"{{this.stepNumber}}\"\n @status={{this.stepIndicatorStatus}}\n @isInteractive={{true}}\n class=\"hds-stepper-nav__step-indicator\"\n />\n </div>\n <div class=\"hds-stepper-nav__step-text\">\n <HdsTextBody\n class=\"hds-stepper-nav__step-title\"\n @tag={{this.titleTag}}\n @size=\"200\"\n @weight=\"semibold\"\n >\n {{yield to=\"title\"}}\n <span class=\"sr-only\">{{this.statusSrOnlyText}}</span>\n </HdsTextBody>\n {{#if (has-block \"description\")}}\n <HdsTextBody\n class=\"hds-stepper-nav__step-description\"\n @tag=\"div\"\n @size=\"100\"\n @weight=\"regular\"\n >\n {{yield to=\"description\"}}\n </HdsTextBody>\n {{/if}}\n </div>\n </button>\n </li>\n {{else}}\n <li\n class={{this.classNames}}\n ...attributes\n role={{if this.isNavInteractive \"presentation\"}}\n aria-current={{if (eq this.status \"active\") \"step\" \"false\"}}\n >\n <div\n class=\"hds-stepper-nav__step-content\"\n id={{this._stepId}}\n {{this._setUpStep this.didInsertNode this.willDestroyNode}}\n >\n <div class=\"hds-stepper-nav__step-progress\">\n <HdsStepperStepIndicator\n @text=\"{{this.stepNumber}}\"\n @status={{this.stepIndicatorStatus}}\n @isInteractive={{false}}\n aria-hidden=\"true\"\n class=\"hds-stepper-nav__step-indicator\"\n />\n </div>\n <div class=\"hds-stepper-nav__step-text\">\n <HdsTextBody\n class=\"hds-stepper-nav__step-title\"\n @tag={{this.titleTag}}\n @size=\"200\"\n @weight=\"semibold\"\n >\n {{yield to=\"title\"}}\n <span class=\"sr-only\">{{this.statusSrOnlyText}}</span>\n </HdsTextBody>\n {{#if (has-block \"description\")}}\n <HdsTextBody\n class=\"hds-stepper-nav__step-description\"\n @tag=\"div\"\n @size=\"100\"\n @weight=\"regular\"\n >\n {{yield to=\"description\"}}\n </HdsTextBody>\n {{/if}}\n </div>\n </div>\n </li>\n {{/if}}\n {{! template-lint-enable require-presentational-children }}\n {{! template-lint-enable require-context-role no-invalid-role }}\n </template>\n}\n"],"names":["MAPPING_STATUS_TO_INDICATOR_STATUS","HdsStepperNavStatusToIndicatorStatus","HdsStepperNavStep","Component","g","prototype","service","i","_statusSrOnlyTextMap","_stepId","guidFor","_elementId","_setUpStep","modifier","element","insertCallbackFunction","destroyCallbackFunction","constructor","owner","args","HdsStepperNavStatusToSrOnlyText","hdsIntl","titleTag","HdsStepperTitleTagValues","Div","isNavInteractive","undefined","nodeIndex","stepIds","indexOf","stepNumber","coupledPanelId","panelIds","status","currentStep","HdsStepperNavStatusesValues","Active","Complete","Incomplete","stepIndicatorStatus","statusSrOnlyText","isInteractive","didInsertNode","id","willDestroyNode","onStepChange","event","onKeyUp","classNames","classes","push","join","setComponentTemplate","precompileTemplate","strictMode","scope","eq","on","HdsStepperStepIndicator","HdsTextBody"],"mappings":";;;;;;;;;;;;;AAAA;;;AAGC;AA6BM,MAAMA,qCACXC;AAqBa,MAAMC,0BAA0BC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CACtDC,OAAA,CAAA,CAAA;AAAA;EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,MAAA;EAEOC,oBAAA;AACAC,EAAAA,OAAA,GAAU,OAAA,GAAUC,OAAA,CAAQ,IAAI,CAAA;EAChCC,UAAA;EAEAC,aAAaC,QAAA,CACnB,CACEC,OAAS,EACT,CAACC,wBAAwBC,uBAAA,CAAwB,KAAA;AAEjD,IAAA,IAAI,OAAOD,2BAA2B,UAAA,EAAY;AAChD;MACAA,sBAAA,CAAuBD,OAAA,CAAA;AACzB,IAAA;AAEA,IAAA,OAAO,MAAA;AACL,MAAA,IAAI,OAAOE,4BAA4B,UAAA,EAAY;AACjD;QACAA,uBAAA,CAAwBF,OAAA,CAAA;AAC1B,MAAA;IACF,CAAA;AACF,EAAA,CAAA,CAAA;AAGFG,EAAAA,WAAAA,CAAYC,KAAY,EAAEC,IAAwC,EAAE;AAClE,IAAA,KAAK,CAACD,KAAA,EAAOC,IAAA,CAAA;IAEb,IAAI,CAACX,oBAAoB,GAAGY,+BAAA,CAAgC,IAAI,CAACC,OAAO,CAAA;AAC1E,EAAA;EAEA,IAAIC,WAAgC;IAClC,OAAO,IAAI,CAACH,IAAI,CAACG,QAAQ,IAAIC,yBAAyBC,GAAG;AAC3D,EAAA;EAEA,IAAIC,gBAAAA,GAA4B;AAC9B,IAAA,OAAO,IAAI,CAACN,IAAI,CAACM,gBAAgB,IAAIC,SAAA,GACjC,IAAI,CAACP,IAAI,CAACM,gBAAgB,GAC1B,IAAA;AACN,EAAA;EAEA,IAAIE,SAAAA,GAAgC;IAClC,OAAO,IAAI,CAACR,IAAI,CAACS,OAAO,EAAEC,OAAA,CAAQ,IAAI,CAACpB,OAAO,CAAA;AAChD,EAAA;EAEA,IAAIqB,UAAAA,GAAiC;IACnC,OAAO,IAAI,CAACX,IAAI,CAACS,OAAO,GACpB,IAAI,CAACT,IAAI,CAACS,OAAO,CAACC,OAAO,CAAC,IAAI,CAACpB,OAAO,IAAI,CAAA,GAC1CiB,SAAA;AACN,EAAA;EAEA,IAAIK,cAAAA,GAAqC;AACvC,IAAA,OAAO,IAAI,CAACJ,SAAS,KAAKD,SAAA,GACtB,IAAI,CAACP,IAAI,CAACa,QAAQ,GAAG,IAAI,CAACL,SAAS,CAAC,GACpCD,SAAA;AACN,EAAA;EAEA,IAAIO,SAAgC;IAClC,IAAI,IAAI,CAACN,SAAS,IAAID,aAAa,IAAI,CAACC,SAAS,IAAI,CAAA,EAAG;MACtD,IAAI,IAAI,CAACA,SAAS,KAAK,IAAI,CAACR,IAAI,CAACe,WAAW,EAAE;QAC5C,OAAOC,4BAA4BC,MAAM;MAC3C,CAAA,MAAO,IAAI,IAAI,CAACT,SAAS,GAAG,IAAI,CAACR,IAAI,CAACe,WAAW,EAAE;QACjD,OAAOC,4BAA4BE,QAAQ;AAC7C,MAAA,CAAA,MAAO;QACL,OAAOF,4BAA4BG,UAAU;AAC/C,MAAA;AACF,IAAA,CAAA,MAAO;MACL,OAAOH,4BAA4BG,UAAU;AAC/C,IAAA;AACF,EAAA;EAEA,IAAIC,sBAA0C;AAC5C,IAAA,OAAOvC,kCAAkC,CAAC,IAAI,CAACiC,MAAM,CAAC;AACxD,EAAA;EAEA,IAAIO,gBAAAA,GAA2B;AAC7B,IAAA,OAAO,IAAI,CAAChC,oBAAoB,CAAE,IAAI,CAACyB,MAAM,CAAC;AAChD,EAAA;EAEA,IAAIQ,aAAAA,GAAyB;IAC3B,OACE,IAAI,CAAChB,gBAAgB,IACrB,IAAI,CAACQ,MAAM,KAAKE,2BAAA,CAA4BE,QAAQ;AAExD,EAAA;EAEAK,aAAA,GAAiB5B,OAAS,IAAwB;IAChD,MAAM;AAAE4B,MAAAA;KAAe,GAAG,IAAI,CAACvB,IAAI;AAEnC,IAAA,IAAI,OAAOuB,kBAAkB,UAAA,EAAY;AACvC,MAAA,IAAI,CAAC/B,UAAU,GAAGG,OAAA,CAAQ6B,EAAE;AAC5BD,MAAAA,aAAA,EAAA;AACF,IAAA;EACF,CAAA;EAEAE,eAAA,GAAmB9B,OAAS,IAAwB;IAClD,MAAM;AAAE8B,MAAAA;KAAiB,GAAG,IAAI,CAACzB,IAAI;AAErC,IAAA,IAAI,OAAOyB,oBAAoB,UAAA,EAAY;MACzCA,eAAA,CAAgB9B,OAAA,CAAA;AAClB,IAAA;EACF,CAAA;EAEA+B,YAAA,GAAgBC,KAAO,IAA8B;IACnD,MAAM;AAAED,MAAAA;KAAc,GAAG,IAAI,CAAC1B,IAAI;AAElC,IAAA,IACE,IAAI,CAACsB,aAAa,IAClB,IAAI,CAACd,SAAS,KAAKD,SAAA,IACnB,OAAOmB,YAAA,KAAiB,UAAA,EACxB;AACAA,MAAAA,YAAA,CAAaC,KAAA,EAAO,IAAI,CAACnB,SAAS,CAAA;AACpC,IAAA,CAAA,MAAO;AACL,MAAA,OAAO,KAAA;AACT,IAAA;EACF,CAAA;EAEAoB,OAAA,GAAWD,KAAO,IAAoB;IACpC,MAAM;AAAEC,MAAAA;KAAS,GAAG,IAAI,CAAC5B,IAAI;IAE7B,IACE,EAAE,IAAI,CAACc,MAAM,KAAKE,2BAAA,CAA4BG,UAAU,CAAA,IACxD,IAAI,CAACX,SAAS,KAAKD,SAAA,IACnB,OAAOqB,YAAY,UAAA,EACnB;AACAA,MAAAA,OAAA,CAAQ,IAAI,CAACpB,SAAS,EAAEmB,KAAA,CAAA;AAC1B,IAAA;EACF,CAAA;EAEA,IAAIE,UAAAA,GAAqB;AACvB,IAAA,MAAMC,OAAA,GAAU,CAAC,uBAAA,CAAwB;IAEzCA,OAAA,CAAQC,IAAI,CAAC,CAAA,uBAAA,EAA0B,IAAI,CAACjB,MAAM,EAAE,CAAA;AAEpD,IAAA,OAAOgB,OAAA,CAAQE,IAAI,CAAC,GAAA,CAAA;AACtB,EAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,6yFAAA,EAoGA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,EAAA;QAAAC,EAAA;QAAAC,uBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
1
+ {"version":3,"file":"step.js","sources":["../../../../../src/components/hds/stepper/nav/step.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { guidFor } from '@ember/object/internals';\nimport { modifier } from 'ember-modifier';\nimport { eq } from 'ember-truth-helpers';\nimport { on } from '@ember/modifier';\nimport { concat } from '@ember/helper';\n\nimport { service } from '@ember/service';\nimport type HdsIntlService from '../../../../services/hds-intl';\nimport type Owner from '@ember/owner';\n\nimport {\n HdsStepperNavStatusesValues,\n HdsStepperNavStatusToIndicatorStatus,\n HdsStepperNavStatusToSrOnlyText,\n HdsStepperTitleTagValues,\n} from '../types.ts';\nimport HdsStepperStepIndicator from '../step/indicator.gts';\nimport HdsTextBody from '../../text/body.gts';\nimport hdsT from '../../../../helpers/hds-t.ts';\n\nimport type {\n HdsStepperNavPanelIds,\n HdsStepperNavStatuses,\n HdsStepperNavStepIds,\n HdsStepperStatuses,\n HdsStepperTitleTags,\n} from '../types.ts';\n\nexport const MAPPING_STATUS_TO_INDICATOR_STATUS =\n HdsStepperNavStatusToIndicatorStatus;\n\nexport interface HdsStepperNavStepSignature {\n Args: {\n currentStep: number;\n isNavInteractive?: boolean;\n titleTag?: HdsStepperTitleTags;\n stepIds?: HdsStepperNavStepIds;\n panelIds?: HdsStepperNavPanelIds;\n didInsertNode?: () => void;\n willDestroyNode?: (element: HTMLButtonElement) => void;\n onStepChange?: (event: MouseEvent, nodeIndex: number) => void;\n onKeyUp?: (nodeIndex: number, event: KeyboardEvent) => void;\n };\n Blocks: {\n title: [];\n description?: [];\n };\n Element: HTMLElement;\n}\n\nexport default class HdsStepperNavStep extends Component<HdsStepperNavStepSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n private _statusSrOnlyTextMap?: Record<HdsStepperNavStatuses, string>;\n private _stepId = 'step-' + guidFor(this);\n private _elementId?: string;\n\n private _setUpStep = modifier(\n (\n element: HTMLElement,\n [insertCallbackFunction, destroyCallbackFunction]\n ) => {\n if (typeof insertCallbackFunction === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n insertCallbackFunction(element);\n }\n\n return () => {\n if (typeof destroyCallbackFunction === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n destroyCallbackFunction(element);\n }\n };\n }\n );\n\n constructor(owner: Owner, args: HdsStepperNavStepSignature['Args']) {\n super(owner, args);\n\n this._statusSrOnlyTextMap = HdsStepperNavStatusToSrOnlyText(this.hdsIntl);\n }\n\n get titleTag(): HdsStepperTitleTags {\n return this.args.titleTag ?? HdsStepperTitleTagValues.Div;\n }\n\n get isNavInteractive(): boolean {\n return this.args.isNavInteractive != undefined\n ? this.args.isNavInteractive\n : true;\n }\n\n get nodeIndex(): number | undefined {\n return this.args.stepIds?.indexOf(this._stepId);\n }\n\n get stepNumber(): number | undefined {\n return this.args.stepIds\n ? this.args.stepIds.indexOf(this._stepId) + 1\n : undefined;\n }\n\n get coupledPanelId(): string | undefined {\n return this.nodeIndex !== undefined\n ? this.args.panelIds?.[this.nodeIndex]\n : undefined;\n }\n\n get status(): HdsStepperNavStatuses {\n if (this.nodeIndex != undefined && this.nodeIndex >= 0) {\n if (this.nodeIndex === this.args.currentStep) {\n return HdsStepperNavStatusesValues.Active;\n } else if (this.nodeIndex < this.args.currentStep) {\n return HdsStepperNavStatusesValues.Complete;\n } else {\n return HdsStepperNavStatusesValues.Incomplete;\n }\n } else {\n return HdsStepperNavStatusesValues.Incomplete;\n }\n }\n\n get stepIndicatorStatus(): HdsStepperStatuses {\n return MAPPING_STATUS_TO_INDICATOR_STATUS[this.status];\n }\n\n get statusSrOnlyText(): string {\n return this._statusSrOnlyTextMap![this.status];\n }\n\n get isInteractive(): boolean {\n return (\n this.isNavInteractive &&\n this.status === HdsStepperNavStatusesValues.Complete\n );\n }\n\n didInsertNode = (element: HTMLButtonElement): void => {\n const { didInsertNode } = this.args;\n\n if (typeof didInsertNode === 'function') {\n this._elementId = element.id;\n didInsertNode();\n }\n };\n\n willDestroyNode = (element: HTMLButtonElement): void => {\n const { willDestroyNode } = this.args;\n\n if (typeof willDestroyNode === 'function') {\n willDestroyNode(element);\n }\n };\n\n onStepChange = (event: MouseEvent): false | undefined => {\n const { onStepChange } = this.args;\n\n if (\n this.isInteractive &&\n this.nodeIndex !== undefined &&\n typeof onStepChange === 'function'\n ) {\n onStepChange(event, this.nodeIndex);\n } else {\n return false;\n }\n };\n\n onKeyUp = (event: KeyboardEvent): void => {\n const { onKeyUp } = this.args;\n\n if (\n !(this.status === HdsStepperNavStatusesValues.Incomplete) &&\n this.nodeIndex !== undefined &&\n typeof onKeyUp === 'function'\n ) {\n onKeyUp(this.nodeIndex, event);\n }\n };\n\n get classNames(): string {\n const classes = ['hds-stepper-nav__step'];\n\n classes.push(`hds-stepper-nav__step--${this.status}`);\n\n return classes.join(' ');\n }\n\n <template>\n {{! template-lint-disable require-context-role no-invalid-role }}\n {{! template-lint-disable require-presentational-children }}\n {{#if this.isNavInteractive}}\n <li\n class={{this.classNames}}\n ...attributes\n role={{if this.isNavInteractive \"presentation\"}}\n >\n <button\n class=\"hds-stepper-nav__step-content hds-stepper-nav__step-button\"\n id={{this._stepId}}\n tabindex={{unless (eq this.status \"active\") \"-1\"}}\n type=\"button\"\n role=\"tab\"\n aria-controls={{this.coupledPanelId}}\n aria-selected={{if (eq this.status \"active\") \"true\" \"false\"}}\n aria-disabled={{if (eq this.status \"incomplete\") \"true\" \"false\"}}\n {{on \"click\" this.onStepChange}}\n {{on \"keyup\" this.onKeyUp}}\n {{this._setUpStep this.didInsertNode this.willDestroyNode}}\n >\n <div class=\"hds-stepper-nav__step-progress\">\n <HdsStepperStepIndicator\n @text=\"{{this.stepNumber}}\"\n @status={{this.stepIndicatorStatus}}\n @isInteractive={{true}}\n aria-hidden=\"true\"\n class=\"hds-stepper-nav__step-indicator\"\n />\n </div>\n <div class=\"hds-stepper-nav__step-text\">\n <HdsTextBody\n class=\"hds-stepper-nav__step-title\"\n @tag={{this.titleTag}}\n @size=\"200\"\n @weight=\"semibold\"\n >\n <span class=\"sr-only\">\n {{hdsT\n \"hds.components.stepper.step-number\"\n default=(concat \"Step \" this.stepNumber)\n stepNumber=this.stepNumber\n }}\n </span>\n {{yield to=\"title\"}}\n <span class=\"sr-only\">{{this.statusSrOnlyText}}</span>\n </HdsTextBody>\n {{#if (has-block \"description\")}}\n <HdsTextBody\n class=\"hds-stepper-nav__step-description\"\n @tag=\"div\"\n @size=\"100\"\n @weight=\"regular\"\n >\n {{yield to=\"description\"}}\n </HdsTextBody>\n {{/if}}\n </div>\n </button>\n </li>\n {{else}}\n <li\n class={{this.classNames}}\n ...attributes\n role={{if this.isNavInteractive \"presentation\"}}\n aria-current={{if (eq this.status \"active\") \"step\" \"false\"}}\n >\n <div\n class=\"hds-stepper-nav__step-content\"\n id={{this._stepId}}\n {{this._setUpStep this.didInsertNode this.willDestroyNode}}\n >\n <div class=\"hds-stepper-nav__step-progress\">\n <HdsStepperStepIndicator\n @text=\"{{this.stepNumber}}\"\n @status={{this.stepIndicatorStatus}}\n @isInteractive={{false}}\n aria-hidden=\"true\"\n class=\"hds-stepper-nav__step-indicator\"\n />\n </div>\n <div class=\"hds-stepper-nav__step-text\">\n <HdsTextBody\n class=\"hds-stepper-nav__step-title\"\n @tag={{this.titleTag}}\n @size=\"200\"\n @weight=\"semibold\"\n >\n {{yield to=\"title\"}}\n <span class=\"sr-only\">{{this.statusSrOnlyText}}</span>\n </HdsTextBody>\n {{#if (has-block \"description\")}}\n <HdsTextBody\n class=\"hds-stepper-nav__step-description\"\n @tag=\"div\"\n @size=\"100\"\n @weight=\"regular\"\n >\n {{yield to=\"description\"}}\n </HdsTextBody>\n {{/if}}\n </div>\n </div>\n </li>\n {{/if}}\n {{! template-lint-enable require-presentational-children }}\n {{! template-lint-enable require-context-role no-invalid-role }}\n </template>\n}\n"],"names":["MAPPING_STATUS_TO_INDICATOR_STATUS","HdsStepperNavStatusToIndicatorStatus","HdsStepperNavStep","Component","g","prototype","service","i","_statusSrOnlyTextMap","_stepId","guidFor","_elementId","_setUpStep","modifier","element","insertCallbackFunction","destroyCallbackFunction","constructor","owner","args","HdsStepperNavStatusToSrOnlyText","hdsIntl","titleTag","HdsStepperTitleTagValues","Div","isNavInteractive","undefined","nodeIndex","stepIds","indexOf","stepNumber","coupledPanelId","panelIds","status","currentStep","HdsStepperNavStatusesValues","Active","Complete","Incomplete","stepIndicatorStatus","statusSrOnlyText","isInteractive","didInsertNode","id","willDestroyNode","onStepChange","event","onKeyUp","classNames","classes","push","join","setComponentTemplate","precompileTemplate","strictMode","scope","eq","on","HdsStepperStepIndicator","HdsTextBody","hdsT","concat"],"mappings":"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"}
@@ -48,6 +48,7 @@ class HdsTable extends Component {
48
48
  });
49
49
  }
50
50
  #_isSelectAllCheckboxSelected = (i(this, "_isSelectAllCheckboxSelected"), void 0);
51
+ _isBulkSelectionChange = false;
51
52
  constructor(owner, args) {
52
53
  super(owner, args);
53
54
  this.sortBy = this.args.sortBy ?? undefined;
@@ -177,13 +178,21 @@ class HdsTable extends Component {
177
178
  }
178
179
  };
179
180
  onSelectionAllChange = () => {
181
+ this._isBulkSelectionChange = true;
180
182
  this._selectableRows.forEach(row => {
181
183
  row.checkbox.checked = this._selectAllCheckbox?.checked ?? false;
184
+ row.checkbox.dispatchEvent(new Event('change', {
185
+ bubbles: true
186
+ }));
182
187
  });
188
+ this._isBulkSelectionChange = false;
183
189
  this._isSelectAllCheckboxSelected = this._selectAllCheckbox?.checked ?? false;
184
190
  this.onSelectionChangeCallback(this._selectAllCheckbox, 'all');
185
191
  };
186
192
  onSelectionRowChange = (checkbox, selectionKey) => {
193
+ if (this._isBulkSelectionChange) {
194
+ return;
195
+ }
187
196
  this.setSelectAllState();
188
197
  this.onSelectionChangeCallback(checkbox, selectionKey);
189
198
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/table/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { fn, hash } from '@ember/helper';\nimport { eq } from 'ember-truth-helpers';\nimport { sortBy } from '@nullvoxpopuli/ember-composable-helpers';\n\nimport type { WithBoundArgs } from '@glint/template';\nimport type Owner from '@ember/owner';\n\nimport {\n HdsTableDensityValues,\n HdsTableThSortOrderValues,\n HdsTableVerticalAlignmentValues,\n} from './types.ts';\nimport HdsTableTr from './tr.gts';\nimport HdsTableTh from './th.gts';\nimport HdsTableThSort from './th-sort.gts';\nimport HdsTableTd from './td.gts';\n\nimport type {\n HdsTableColumn,\n HdsTableDensities,\n HdsTableHorizontalAlignment,\n HdsTableOnSelectionChangeSignature,\n HdsTableSelectableRow,\n HdsTableSortingFunction,\n HdsTableThSortOrder,\n HdsTableVerticalAlignment,\n HdsTableModel,\n} from './types.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.gts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\n\nexport const DENSITIES: HdsTableDensities[] = Object.values(\n HdsTableDensityValues\n);\nexport const DEFAULT_DENSITY = HdsTableDensityValues.Medium;\n\nexport const VALIGNMENTS: HdsTableVerticalAlignment[] = Object.values(\n HdsTableVerticalAlignmentValues\n);\nexport const DEFAULT_VALIGN = HdsTableVerticalAlignmentValues.Top;\n\nexport interface HdsTableSignature<T = HdsTableModel> {\n Args: {\n align?: HdsTableHorizontalAlignment;\n caption?: string;\n columns?: HdsTableColumn[];\n density?: HdsTableDensities;\n identityKey?: string;\n isFixedLayout?: boolean;\n isSelectable?: boolean;\n isStriped?: boolean;\n model?: T[];\n onSelectionChange?: (selection: HdsTableOnSelectionChangeSignature) => void;\n onSort?: (sortBy: string, sortOrder: HdsTableThSortOrder) => void;\n selectionAriaLabelSuffix?: string;\n sortBy?: string;\n selectableColumnKey?: string;\n sortedMessageText?: string;\n sortOrder?: HdsTableThSortOrder;\n valign?: HdsTableVerticalAlignment;\n };\n Blocks: {\n head?: [\n {\n Tr?: WithBoundArgs<\n typeof HdsTableTr,\n | 'selectionScope'\n | 'isSelectable'\n | 'onSelectionChange'\n | 'didInsert'\n | 'willDestroy'\n | 'selectionAriaLabelSuffix'\n | 'onClickSortBySelected'\n | 'sortBySelectedOrder'\n >;\n Th?: typeof HdsTableTh;\n ThSort?: typeof HdsTableThSort;\n sortBy?: string;\n sortOrder?: HdsTableThSortOrder;\n setSortBy?: (column: string) => void;\n },\n ];\n body?: [\n {\n Td?: WithBoundArgs<typeof HdsTableTd, 'align'>;\n Tr?: WithBoundArgs<\n typeof HdsTableTr,\n | 'selectionScope'\n | 'isSelectable'\n | 'onSelectionChange'\n | 'didInsert'\n | 'willDestroy'\n | 'selectionAriaLabelSuffix'\n >;\n Th?: WithBoundArgs<typeof HdsTableTh, 'scope'>;\n data?: T;\n rowIndex?: number;\n sortBy?: string;\n sortOrder?: HdsTableThSortOrder;\n },\n ];\n };\n Element: HTMLTableElement;\n}\n\nexport default class HdsTable<T = HdsTableModel> extends Component<\n HdsTableSignature<T>\n> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n @tracked sortBy;\n @tracked sortOrder;\n @tracked\n private _selectAllCheckbox?: HdsFormCheckboxBaseSignature['Element'] =\n undefined;\n private _selectableRows: HdsTableSelectableRow[] = [];\n @tracked private _isSelectAllCheckboxSelected?: boolean = undefined;\n\n constructor(owner: Owner, args: HdsTableSignature<T>['Args']) {\n super(owner, args);\n this.sortBy = this.args.sortBy ?? undefined;\n this.sortOrder = this.args.sortOrder ?? HdsTableThSortOrderValues.Asc;\n }\n\n get getSortCriteria(): string | HdsTableSortingFunction<unknown> {\n // get the current column\n const currentColumn = this.args?.columns?.find(\n (column) => column.key === this.sortBy\n );\n if (\n // check if there is a custom sorting function associated with the current `sortBy` column (we assume the column has `isSortable`)\n currentColumn?.sortingFunction &&\n typeof currentColumn.sortingFunction === 'function'\n ) {\n return currentColumn.sortingFunction;\n } else {\n // otherwise fallback to the default format \"sortBy:sortOrder\"\n return `${this.sortBy}:${this.sortOrder}`;\n }\n }\n\n get identityKey(): string | undefined {\n // we have to provide a way for the consumer to pass undefined because Ember tries to interpret undefined as missing an arg and therefore falls back to the default\n if (this.args.identityKey === 'none') {\n return undefined;\n } else {\n return this.args.identityKey ?? '@identity';\n }\n }\n\n get sortedMessageText(): string {\n if (this.args.sortedMessageText) {\n return this.args.sortedMessageText;\n } else if (this.sortBy && this.sortOrder) {\n // we should allow the user to define a custom value here (e.g., for i18n) - tracked with HDS-965\n const translatedSortOrder = {\n [HdsTableThSortOrderValues.Asc]: this.hdsIntl.t(\n 'hds.components.common.ascending',\n { default: 'ascending' }\n ),\n [HdsTableThSortOrderValues.Desc]: this.hdsIntl.t(\n 'hds.components.common.descending',\n { default: 'descending' }\n ),\n }[this.sortOrder];\n const lowerCaseTranslatedSortOrder = translatedSortOrder.toLowerCase();\n\n return this.hdsIntl.t('hds.components.table.sorted-message-text', {\n sortBy: this.sortBy,\n sortOrder: lowerCaseTranslatedSortOrder,\n default: `Sorted by ${this.sortBy} ${lowerCaseTranslatedSortOrder}`,\n });\n } else {\n return '';\n }\n }\n\n get isStriped(): boolean {\n return this.args.isStriped ?? false;\n }\n\n get isFixedLayout(): boolean {\n return this.args.isFixedLayout ?? false;\n }\n\n get density(): HdsTableDensities {\n const { density = DEFAULT_DENSITY } = this.args;\n\n assert(\n `@density for \"Hds::Table\" must be one of the following: ${DENSITIES.join(\n ', '\n )}; received: ${density}`,\n DENSITIES.includes(density)\n );\n\n return density;\n }\n\n get valign(): HdsTableVerticalAlignment {\n const { valign = DEFAULT_VALIGN } = this.args;\n\n assert(\n `@valign for \"Hds::Table\" must be one of the following: ${VALIGNMENTS.join(\n ', '\n )}; received: ${valign}`,\n VALIGNMENTS.includes(valign)\n );\n\n return valign;\n }\n\n get classNames(): string {\n const classes = ['hds-table'];\n\n // add a class based on the @isStriped argument\n if (this.isStriped) {\n classes.push('hds-table--striped');\n }\n\n // add a class based on the @isFixedLayout argument\n if (this.isFixedLayout) {\n classes.push('hds-table--layout-fixed');\n }\n\n // add a class based on the @density argument\n if (this.density) {\n classes.push(`hds-table--density-${this.density}`);\n }\n\n // add a class based on the @valign argument\n if (this.valign) {\n classes.push(`hds-table--valign-${this.valign}`);\n }\n\n return classes.join(' ');\n }\n\n setSortBy = (column: string): void => {\n if (this.sortBy === column) {\n // check to see if the column is already sorted and invert the sort order if so\n this.sortOrder =\n this.sortOrder === HdsTableThSortOrderValues.Asc\n ? HdsTableThSortOrderValues.Desc\n : HdsTableThSortOrderValues.Asc;\n } else {\n // otherwise, set the sort order to ascending\n this.sortBy = column;\n this.sortOrder = HdsTableThSortOrderValues.Asc;\n }\n\n const { onSort } = this.args;\n\n if (typeof onSort === 'function') {\n onSort(this.sortBy, this.sortOrder);\n }\n };\n\n onSelectionChangeCallback = (\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void => {\n const { onSelectionChange } = this.args;\n if (typeof onSelectionChange === 'function') {\n onSelectionChange({\n selectionKey: selectionKey,\n selectionCheckboxElement: checkbox,\n selectedRowsKeys: this._selectableRows.reduce<string[]>((acc, row) => {\n if (row.checkbox.checked) {\n acc.push(row.selectionKey);\n }\n return acc;\n }, []),\n selectableRowsStates: this._selectableRows.reduce(\n (\n acc: { selectionKey: string; isSelected: boolean | undefined }[],\n row\n ) => {\n acc.push({\n selectionKey: row.selectionKey,\n isSelected: row.checkbox.checked,\n });\n return acc;\n },\n []\n ),\n });\n }\n };\n\n onSelectionAllChange = (): void => {\n this._selectableRows.forEach((row) => {\n row.checkbox.checked = this._selectAllCheckbox?.checked ?? false;\n });\n this._isSelectAllCheckboxSelected =\n this._selectAllCheckbox?.checked ?? false;\n this.onSelectionChangeCallback(this._selectAllCheckbox, 'all');\n };\n\n onSelectionRowChange = (\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void => {\n this.setSelectAllState();\n this.onSelectionChangeCallback(checkbox, selectionKey);\n };\n\n didInsertSelectAllCheckbox = (\n checkbox: HdsFormCheckboxBaseSignature['Element']\n ): void => {\n this._selectAllCheckbox = checkbox;\n };\n\n willDestroySelectAllCheckbox = (): void => {\n this._selectAllCheckbox = undefined;\n };\n\n didInsertRowCheckbox = (\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void => {\n if (selectionKey) {\n this._selectableRows.push({ selectionKey, checkbox });\n }\n this.setSelectAllState();\n };\n\n willDestroyRowCheckbox = (selectionKey?: string): void => {\n if (selectionKey === undefined) {\n return;\n }\n\n const index = this._selectableRows.findIndex(\n (row): boolean => row.selectionKey === selectionKey\n );\n\n if (index === -1) {\n return;\n }\n\n this._selectableRows.splice(index, 1);\n\n this.setSelectAllState();\n };\n\n setSelectAllState = (): void => {\n if (this._selectAllCheckbox) {\n const selectableRowsCount = this._selectableRows.length;\n const selectedRowsCount = this._selectableRows.filter(\n (row) => row.checkbox.checked\n ).length;\n\n this._selectAllCheckbox.checked =\n selectedRowsCount === selectableRowsCount;\n this._selectAllCheckbox.indeterminate =\n selectedRowsCount > 0 && selectedRowsCount < selectableRowsCount;\n this._isSelectAllCheckboxSelected = this._selectAllCheckbox.checked;\n }\n };\n\n <template>\n <table class={{this.classNames}} ...attributes>\n {{#if @columns}}\n <caption class=\"sr-only\" aria-live=\"polite\">{{@caption}}\n {{this.sortedMessageText}}</caption>\n {{else if @caption}}\n <caption class=\"sr-only\">{{@caption}}</caption>\n {{/if}}\n\n <thead class=\"hds-table__thead\">\n {{#if @columns}}\n <HdsTableTr\n @selectionScope=\"col\"\n @onClickSortBySelected={{if\n @selectableColumnKey\n (fn this.setSortBy @selectableColumnKey)\n }}\n @sortBySelectedOrder={{if\n (eq this.sortBy @selectableColumnKey)\n this.sortOrder\n }}\n @isSelectable={{@isSelectable}}\n @onSelectionChange={{this.onSelectionAllChange}}\n @didInsert={{this.didInsertSelectAllCheckbox}}\n @willDestroy={{this.willDestroySelectAllCheckbox}}\n @selectionAriaLabelSuffix=\"all rows\"\n >\n {{#each @columns as |column|}}\n {{#if column.isSortable}}\n <HdsTableThSort\n @sortOrder={{if (eq column.key this.sortBy) this.sortOrder}}\n @onClickSort={{fn this.setSortBy column.key}}\n @align={{column.align}}\n @width={{column.width}}\n @tooltip={{column.tooltip}}\n >\n {{column.label}}\n </HdsTableThSort>\n {{else}}\n <HdsTableTh\n @align={{column.align}}\n @width={{column.width}}\n @tooltip={{column.tooltip}}\n @isVisuallyHidden={{column.isVisuallyHidden}}\n >{{column.label}}</HdsTableTh>\n {{/if}}\n {{/each}}\n </HdsTableTr>\n {{else}}\n {{yield\n (hash\n Tr=(component\n HdsTableTr\n selectionScope=\"col\"\n isSelectable=@isSelectable\n onSelectionChange=this.onSelectionAllChange\n didInsert=this.didInsertSelectAllCheckbox\n willDestroy=this.willDestroySelectAllCheckbox\n selectionAriaLabelSuffix=\"all rows\"\n onClickSortBySelected=(if\n @selectableColumnKey (fn this.setSortBy @selectableColumnKey)\n )\n sortBySelectedOrder=(if\n (eq this.sortBy @selectableColumnKey) this.sortOrder\n )\n )\n Th=HdsTableTh\n ThSort=HdsTableThSort\n sortBy=this.sortBy\n sortOrder=this.sortOrder\n setSortBy=this.setSortBy\n )\n to=\"head\"\n }}\n {{/if}}\n </thead>\n\n <tbody class=\"hds-table__tbody\">\n {{#if @columns}}\n {{! -----------------------------------------------------------------\n IMPORTANT: we loop on the model array and for each record\n we yield the Tr/Td/Th elements _and_ the record itself as data\n this means the consumer will *have to* use the data key to access it in their template\n ----------------------------------------------------------------- }}\n {{! @glint-expect-error: [HDS-4380](https://hashicorp.atlassian.net/browse/HDS-4380) }}\n {{#let (sortBy this.getSortCriteria @model) as |sortedModel|}}\n {{#each sortedModel key=this.identityKey as |record index|}}\n {{yield\n (hash\n Tr=(component\n HdsTableTr\n selectionScope=\"row\"\n isSelectable=@isSelectable\n onSelectionChange=this.onSelectionRowChange\n didInsert=this.didInsertRowCheckbox\n willDestroy=this.willDestroyRowCheckbox\n selectionAriaLabelSuffix=@selectionAriaLabelSuffix\n )\n Th=(component HdsTableTh scope=\"row\")\n Td=(component HdsTableTd align=@align)\n data=record\n rowIndex=index\n )\n to=\"body\"\n }}\n {{/each}}\n {{/let}}\n {{else}}\n {{yield\n (hash\n Tr=(component\n HdsTableTr\n selectionScope=\"row\"\n isSelectable=@isSelectable\n onSelectionChange=this.onSelectionRowChange\n didInsert=this.didInsertRowCheckbox\n willDestroy=this.willDestroyRowCheckbox\n selectionAriaLabelSuffix=@selectionAriaLabelSuffix\n )\n Th=(component HdsTableTh scope=\"row\")\n Td=(component HdsTableTd align=@align)\n sortBy=this.sortBy\n sortOrder=this.sortOrder\n )\n to=\"body\"\n }}\n {{/if}}\n </tbody>\n </table>\n </template>\n}\n"],"names":["DENSITIES","Object","values","HdsTableDensityValues","DEFAULT_DENSITY","Medium","VALIGNMENTS","HdsTableVerticalAlignmentValues","DEFAULT_VALIGN","Top","HdsTable","Component","g","prototype","service","i","tracked","undefined","_selectableRows","constructor","owner","args","sortBy","sortOrder","HdsTableThSortOrderValues","Asc","getSortCriteria","currentColumn","columns","find","column","key","sortingFunction","identityKey","sortedMessageText","translatedSortOrder","hdsIntl","t","default","Desc","lowerCaseTranslatedSortOrder","toLowerCase","isStriped","isFixedLayout","density","assert","join","includes","valign","classNames","classes","push","setSortBy","onSort","onSelectionChangeCallback","checkbox","selectionKey","onSelectionChange","selectionCheckboxElement","selectedRowsKeys","reduce","acc","row","checked","selectableRowsStates","isSelected","onSelectionAllChange","forEach","_selectAllCheckbox","_isSelectAllCheckboxSelected","onSelectionRowChange","setSelectAllState","didInsertSelectAllCheckbox","willDestroySelectAllCheckbox","didInsertRowCheckbox","willDestroyRowCheckbox","index","findIndex","splice","selectableRowsCount","length","selectedRowsCount","filter","indeterminate","setComponentTemplate","precompileTemplate","strictMode","scope","HdsTableTr","fn","eq","HdsTableThSort","HdsTableTh","hash","HdsTableTd"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/table/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { fn, hash } from '@ember/helper';\nimport { eq } from 'ember-truth-helpers';\nimport { sortBy } from '@nullvoxpopuli/ember-composable-helpers';\n\nimport type { WithBoundArgs } from '@glint/template';\nimport type Owner from '@ember/owner';\n\nimport {\n HdsTableDensityValues,\n HdsTableThSortOrderValues,\n HdsTableVerticalAlignmentValues,\n} from './types.ts';\nimport HdsTableTr from './tr.gts';\nimport HdsTableTh from './th.gts';\nimport HdsTableThSort from './th-sort.gts';\nimport HdsTableTd from './td.gts';\n\nimport type {\n HdsTableColumn,\n HdsTableDensities,\n HdsTableHorizontalAlignment,\n HdsTableOnSelectionChangeSignature,\n HdsTableSelectableRow,\n HdsTableSortingFunction,\n HdsTableThSortOrder,\n HdsTableVerticalAlignment,\n HdsTableModel,\n} from './types.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.gts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\n\nexport const DENSITIES: HdsTableDensities[] = Object.values(\n HdsTableDensityValues\n);\nexport const DEFAULT_DENSITY = HdsTableDensityValues.Medium;\n\nexport const VALIGNMENTS: HdsTableVerticalAlignment[] = Object.values(\n HdsTableVerticalAlignmentValues\n);\nexport const DEFAULT_VALIGN = HdsTableVerticalAlignmentValues.Top;\n\nexport interface HdsTableSignature<T = HdsTableModel> {\n Args: {\n align?: HdsTableHorizontalAlignment;\n caption?: string;\n columns?: HdsTableColumn[];\n density?: HdsTableDensities;\n identityKey?: string;\n isFixedLayout?: boolean;\n isSelectable?: boolean;\n isStriped?: boolean;\n model?: T[];\n onSelectionChange?: (selection: HdsTableOnSelectionChangeSignature) => void;\n onSort?: (sortBy: string, sortOrder: HdsTableThSortOrder) => void;\n selectionAriaLabelSuffix?: string;\n sortBy?: string;\n selectableColumnKey?: string;\n sortedMessageText?: string;\n sortOrder?: HdsTableThSortOrder;\n valign?: HdsTableVerticalAlignment;\n };\n Blocks: {\n head?: [\n {\n Tr?: WithBoundArgs<\n typeof HdsTableTr,\n | 'selectionScope'\n | 'isSelectable'\n | 'onSelectionChange'\n | 'didInsert'\n | 'willDestroy'\n | 'selectionAriaLabelSuffix'\n | 'onClickSortBySelected'\n | 'sortBySelectedOrder'\n >;\n Th?: typeof HdsTableTh;\n ThSort?: typeof HdsTableThSort;\n sortBy?: string;\n sortOrder?: HdsTableThSortOrder;\n setSortBy?: (column: string) => void;\n },\n ];\n body?: [\n {\n Td?: WithBoundArgs<typeof HdsTableTd, 'align'>;\n Tr?: WithBoundArgs<\n typeof HdsTableTr,\n | 'selectionScope'\n | 'isSelectable'\n | 'onSelectionChange'\n | 'didInsert'\n | 'willDestroy'\n | 'selectionAriaLabelSuffix'\n >;\n Th?: WithBoundArgs<typeof HdsTableTh, 'scope'>;\n data?: T;\n rowIndex?: number;\n sortBy?: string;\n sortOrder?: HdsTableThSortOrder;\n },\n ];\n };\n Element: HTMLTableElement;\n}\n\nexport default class HdsTable<T = HdsTableModel> extends Component<\n HdsTableSignature<T>\n> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n @tracked sortBy;\n @tracked sortOrder;\n @tracked\n private _selectAllCheckbox?: HdsFormCheckboxBaseSignature['Element'] =\n undefined;\n private _selectableRows: HdsTableSelectableRow[] = [];\n @tracked private _isSelectAllCheckboxSelected?: boolean = undefined;\n private _isBulkSelectionChange = false;\n\n constructor(owner: Owner, args: HdsTableSignature<T>['Args']) {\n super(owner, args);\n this.sortBy = this.args.sortBy ?? undefined;\n this.sortOrder = this.args.sortOrder ?? HdsTableThSortOrderValues.Asc;\n }\n\n get getSortCriteria(): string | HdsTableSortingFunction<unknown> {\n // get the current column\n const currentColumn = this.args?.columns?.find(\n (column) => column.key === this.sortBy\n );\n if (\n // check if there is a custom sorting function associated with the current `sortBy` column (we assume the column has `isSortable`)\n currentColumn?.sortingFunction &&\n typeof currentColumn.sortingFunction === 'function'\n ) {\n return currentColumn.sortingFunction;\n } else {\n // otherwise fallback to the default format \"sortBy:sortOrder\"\n return `${this.sortBy}:${this.sortOrder}`;\n }\n }\n\n get identityKey(): string | undefined {\n // we have to provide a way for the consumer to pass undefined because Ember tries to interpret undefined as missing an arg and therefore falls back to the default\n if (this.args.identityKey === 'none') {\n return undefined;\n } else {\n return this.args.identityKey ?? '@identity';\n }\n }\n\n get sortedMessageText(): string {\n if (this.args.sortedMessageText) {\n return this.args.sortedMessageText;\n } else if (this.sortBy && this.sortOrder) {\n // we should allow the user to define a custom value here (e.g., for i18n) - tracked with HDS-965\n const translatedSortOrder = {\n [HdsTableThSortOrderValues.Asc]: this.hdsIntl.t(\n 'hds.components.common.ascending',\n { default: 'ascending' }\n ),\n [HdsTableThSortOrderValues.Desc]: this.hdsIntl.t(\n 'hds.components.common.descending',\n { default: 'descending' }\n ),\n }[this.sortOrder];\n const lowerCaseTranslatedSortOrder = translatedSortOrder.toLowerCase();\n\n return this.hdsIntl.t('hds.components.table.sorted-message-text', {\n sortBy: this.sortBy,\n sortOrder: lowerCaseTranslatedSortOrder,\n default: `Sorted by ${this.sortBy} ${lowerCaseTranslatedSortOrder}`,\n });\n } else {\n return '';\n }\n }\n\n get isStriped(): boolean {\n return this.args.isStriped ?? false;\n }\n\n get isFixedLayout(): boolean {\n return this.args.isFixedLayout ?? false;\n }\n\n get density(): HdsTableDensities {\n const { density = DEFAULT_DENSITY } = this.args;\n\n assert(\n `@density for \"Hds::Table\" must be one of the following: ${DENSITIES.join(\n ', '\n )}; received: ${density}`,\n DENSITIES.includes(density)\n );\n\n return density;\n }\n\n get valign(): HdsTableVerticalAlignment {\n const { valign = DEFAULT_VALIGN } = this.args;\n\n assert(\n `@valign for \"Hds::Table\" must be one of the following: ${VALIGNMENTS.join(\n ', '\n )}; received: ${valign}`,\n VALIGNMENTS.includes(valign)\n );\n\n return valign;\n }\n\n get classNames(): string {\n const classes = ['hds-table'];\n\n // add a class based on the @isStriped argument\n if (this.isStriped) {\n classes.push('hds-table--striped');\n }\n\n // add a class based on the @isFixedLayout argument\n if (this.isFixedLayout) {\n classes.push('hds-table--layout-fixed');\n }\n\n // add a class based on the @density argument\n if (this.density) {\n classes.push(`hds-table--density-${this.density}`);\n }\n\n // add a class based on the @valign argument\n if (this.valign) {\n classes.push(`hds-table--valign-${this.valign}`);\n }\n\n return classes.join(' ');\n }\n\n setSortBy = (column: string): void => {\n if (this.sortBy === column) {\n // check to see if the column is already sorted and invert the sort order if so\n this.sortOrder =\n this.sortOrder === HdsTableThSortOrderValues.Asc\n ? HdsTableThSortOrderValues.Desc\n : HdsTableThSortOrderValues.Asc;\n } else {\n // otherwise, set the sort order to ascending\n this.sortBy = column;\n this.sortOrder = HdsTableThSortOrderValues.Asc;\n }\n\n const { onSort } = this.args;\n\n if (typeof onSort === 'function') {\n onSort(this.sortBy, this.sortOrder);\n }\n };\n\n onSelectionChangeCallback = (\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void => {\n const { onSelectionChange } = this.args;\n if (typeof onSelectionChange === 'function') {\n onSelectionChange({\n selectionKey: selectionKey,\n selectionCheckboxElement: checkbox,\n selectedRowsKeys: this._selectableRows.reduce<string[]>((acc, row) => {\n if (row.checkbox.checked) {\n acc.push(row.selectionKey);\n }\n return acc;\n }, []),\n selectableRowsStates: this._selectableRows.reduce(\n (\n acc: { selectionKey: string; isSelected: boolean | undefined }[],\n row\n ) => {\n acc.push({\n selectionKey: row.selectionKey,\n isSelected: row.checkbox.checked,\n });\n return acc;\n },\n []\n ),\n });\n }\n };\n\n onSelectionAllChange = (): void => {\n this._isBulkSelectionChange = true;\n\n this._selectableRows.forEach((row) => {\n row.checkbox.checked = this._selectAllCheckbox?.checked ?? false;\n row.checkbox.dispatchEvent(new Event('change', { bubbles: true }));\n });\n\n this._isBulkSelectionChange = false;\n this._isSelectAllCheckboxSelected =\n this._selectAllCheckbox?.checked ?? false;\n this.onSelectionChangeCallback(this._selectAllCheckbox, 'all');\n };\n\n onSelectionRowChange = (\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void => {\n if (this._isBulkSelectionChange) {\n return;\n }\n\n this.setSelectAllState();\n this.onSelectionChangeCallback(checkbox, selectionKey);\n };\n\n didInsertSelectAllCheckbox = (\n checkbox: HdsFormCheckboxBaseSignature['Element']\n ): void => {\n this._selectAllCheckbox = checkbox;\n };\n\n willDestroySelectAllCheckbox = (): void => {\n this._selectAllCheckbox = undefined;\n };\n\n didInsertRowCheckbox = (\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void => {\n if (selectionKey) {\n this._selectableRows.push({ selectionKey, checkbox });\n }\n this.setSelectAllState();\n };\n\n willDestroyRowCheckbox = (selectionKey?: string): void => {\n if (selectionKey === undefined) {\n return;\n }\n\n const index = this._selectableRows.findIndex(\n (row): boolean => row.selectionKey === selectionKey\n );\n\n if (index === -1) {\n return;\n }\n\n this._selectableRows.splice(index, 1);\n\n this.setSelectAllState();\n };\n\n setSelectAllState = (): void => {\n if (this._selectAllCheckbox) {\n const selectableRowsCount = this._selectableRows.length;\n const selectedRowsCount = this._selectableRows.filter(\n (row) => row.checkbox.checked\n ).length;\n\n this._selectAllCheckbox.checked =\n selectedRowsCount === selectableRowsCount;\n this._selectAllCheckbox.indeterminate =\n selectedRowsCount > 0 && selectedRowsCount < selectableRowsCount;\n this._isSelectAllCheckboxSelected = this._selectAllCheckbox.checked;\n }\n };\n\n <template>\n <table class={{this.classNames}} ...attributes>\n {{#if @columns}}\n <caption class=\"sr-only\" aria-live=\"polite\">{{@caption}}\n {{this.sortedMessageText}}</caption>\n {{else if @caption}}\n <caption class=\"sr-only\">{{@caption}}</caption>\n {{/if}}\n\n <thead class=\"hds-table__thead\">\n {{#if @columns}}\n <HdsTableTr\n @selectionScope=\"col\"\n @onClickSortBySelected={{if\n @selectableColumnKey\n (fn this.setSortBy @selectableColumnKey)\n }}\n @sortBySelectedOrder={{if\n (eq this.sortBy @selectableColumnKey)\n this.sortOrder\n }}\n @isSelectable={{@isSelectable}}\n @onSelectionChange={{this.onSelectionAllChange}}\n @didInsert={{this.didInsertSelectAllCheckbox}}\n @willDestroy={{this.willDestroySelectAllCheckbox}}\n @selectionAriaLabelSuffix=\"all rows\"\n >\n {{#each @columns as |column|}}\n {{#if column.isSortable}}\n <HdsTableThSort\n @sortOrder={{if (eq column.key this.sortBy) this.sortOrder}}\n @onClickSort={{fn this.setSortBy column.key}}\n @align={{column.align}}\n @width={{column.width}}\n @tooltip={{column.tooltip}}\n >\n {{column.label}}\n </HdsTableThSort>\n {{else}}\n <HdsTableTh\n @align={{column.align}}\n @width={{column.width}}\n @tooltip={{column.tooltip}}\n @isVisuallyHidden={{column.isVisuallyHidden}}\n >{{column.label}}</HdsTableTh>\n {{/if}}\n {{/each}}\n </HdsTableTr>\n {{else}}\n {{yield\n (hash\n Tr=(component\n HdsTableTr\n selectionScope=\"col\"\n isSelectable=@isSelectable\n onSelectionChange=this.onSelectionAllChange\n didInsert=this.didInsertSelectAllCheckbox\n willDestroy=this.willDestroySelectAllCheckbox\n selectionAriaLabelSuffix=\"all rows\"\n onClickSortBySelected=(if\n @selectableColumnKey (fn this.setSortBy @selectableColumnKey)\n )\n sortBySelectedOrder=(if\n (eq this.sortBy @selectableColumnKey) this.sortOrder\n )\n )\n Th=HdsTableTh\n ThSort=HdsTableThSort\n sortBy=this.sortBy\n sortOrder=this.sortOrder\n setSortBy=this.setSortBy\n )\n to=\"head\"\n }}\n {{/if}}\n </thead>\n\n <tbody class=\"hds-table__tbody\">\n {{#if @columns}}\n {{! -----------------------------------------------------------------\n IMPORTANT: we loop on the model array and for each record\n we yield the Tr/Td/Th elements _and_ the record itself as data\n this means the consumer will *have to* use the data key to access it in their template\n ----------------------------------------------------------------- }}\n {{! @glint-expect-error: [HDS-4380](https://hashicorp.atlassian.net/browse/HDS-4380) }}\n {{#let (sortBy this.getSortCriteria @model) as |sortedModel|}}\n {{#each sortedModel key=this.identityKey as |record index|}}\n {{yield\n (hash\n Tr=(component\n HdsTableTr\n selectionScope=\"row\"\n isSelectable=@isSelectable\n onSelectionChange=this.onSelectionRowChange\n didInsert=this.didInsertRowCheckbox\n willDestroy=this.willDestroyRowCheckbox\n selectionAriaLabelSuffix=@selectionAriaLabelSuffix\n )\n Th=(component HdsTableTh scope=\"row\")\n Td=(component HdsTableTd align=@align)\n data=record\n rowIndex=index\n )\n to=\"body\"\n }}\n {{/each}}\n {{/let}}\n {{else}}\n {{yield\n (hash\n Tr=(component\n HdsTableTr\n selectionScope=\"row\"\n isSelectable=@isSelectable\n onSelectionChange=this.onSelectionRowChange\n didInsert=this.didInsertRowCheckbox\n willDestroy=this.willDestroyRowCheckbox\n selectionAriaLabelSuffix=@selectionAriaLabelSuffix\n )\n Th=(component HdsTableTh scope=\"row\")\n Td=(component HdsTableTd align=@align)\n sortBy=this.sortBy\n sortOrder=this.sortOrder\n )\n to=\"body\"\n }}\n {{/if}}\n </tbody>\n </table>\n </template>\n}\n"],"names":["DENSITIES","Object","values","HdsTableDensityValues","DEFAULT_DENSITY","Medium","VALIGNMENTS","HdsTableVerticalAlignmentValues","DEFAULT_VALIGN","Top","HdsTable","Component","g","prototype","service","i","tracked","undefined","_selectableRows","_isBulkSelectionChange","constructor","owner","args","sortBy","sortOrder","HdsTableThSortOrderValues","Asc","getSortCriteria","currentColumn","columns","find","column","key","sortingFunction","identityKey","sortedMessageText","translatedSortOrder","hdsIntl","t","default","Desc","lowerCaseTranslatedSortOrder","toLowerCase","isStriped","isFixedLayout","density","assert","join","includes","valign","classNames","classes","push","setSortBy","onSort","onSelectionChangeCallback","checkbox","selectionKey","onSelectionChange","selectionCheckboxElement","selectedRowsKeys","reduce","acc","row","checked","selectableRowsStates","isSelected","onSelectionAllChange","forEach","_selectAllCheckbox","dispatchEvent","Event","bubbles","_isSelectAllCheckboxSelected","onSelectionRowChange","setSelectAllState","didInsertSelectAllCheckbox","willDestroySelectAllCheckbox","didInsertRowCheckbox","willDestroyRowCheckbox","index","findIndex","splice","selectableRowsCount","length","selectedRowsCount","filter","indeterminate","setComponentTemplate","precompileTemplate","strictMode","scope","HdsTableTr","fn","eq","HdsTableThSort","HdsTableTh","hash","HdsTableTd"],"mappings":"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"}
@@ -1,29 +1,21 @@
1
1
  import Component from '@glimmer/component';
2
2
  import { assert } from '@ember/debug';
3
+ import { tracked } from '@glimmer/tracking';
3
4
  import HdsTableThSelectable from './th-selectable.js';
4
5
  import { precompileTemplate } from '@ember/template-compilation';
5
6
  import { setComponentTemplate } from '@ember/component';
7
+ import { g, i } from 'decorator-transforms/runtime';
6
8
 
7
9
  /**
8
10
  * Copyright IBM Corp. 2021, 2026
9
11
  * SPDX-License-Identifier: MPL-2.0
10
12
  */
11
- /*
12
- * NOTE: There is currently an issue with `WithBoundArgs` or Glint that causes a typing error where @selectionKey is set as always required.
13
- *
14
- * Until this is fixed, we are holding off on doing a union with the SelectableHdsTableTrArgs
15
- */
16
- // Extended interface for selectable rows
17
- // export interface SelectableHdsTableTrArgs extends BaseHdsTableTrSignature {
18
- // Args: BaseHdsTableTrSignature['Args'] & {
19
- // isSelectable: true;
20
- // selectionScope?: HdsTableScopeValues.Row;
21
- // selectionKey: string; // Now required for selectable rows
22
- // };
23
- // }
24
- // Union type to combine both possible states
25
13
  // | SelectableHdsTableTrArgs;
26
14
  class HdsTableTr extends Component {
15
+ static {
16
+ g(this.prototype, "isSelectedOverride", [tracked]);
17
+ }
18
+ #isSelectedOverride = (i(this, "isSelectedOverride"), void 0);
27
19
  get selectionKey() {
28
20
  if (this.args.isSelectable && this.args.selectionScope === 'row') {
29
21
  assert(`@selectionKey must be defined on Table::Tr or B.Tr when @isSelectable is true`, this.args.selectionKey);
@@ -31,8 +23,28 @@ class HdsTableTr extends Component {
31
23
  }
32
24
  return undefined;
33
25
  }
26
+ // Carbon applies styles to the entire row when it is selected, so we need a state to track the selection state to toggle the appropriate class.
27
+ get isSelected() {
28
+ return this.isSelectedOverride ?? this.args.isSelected ?? false;
29
+ }
30
+ get classNames() {
31
+ const classes = ['hds-table__tr'];
32
+ if (this.isSelected) {
33
+ classes.push(`hds-table__tr--is-selected`);
34
+ }
35
+ return classes.join(' ');
36
+ }
37
+ onSelectionChange = (checkbox, selectionKey) => {
38
+ this.isSelectedOverride = checkbox?.checked ?? false;
39
+ const {
40
+ onSelectionChange
41
+ } = this.args;
42
+ if (typeof onSelectionChange === 'function') {
43
+ onSelectionChange(checkbox, selectionKey);
44
+ }
45
+ };
34
46
  static {
35
- setComponentTemplate(precompileTemplate("<tr class=\"hds-table__tr\" ...attributes>\n {{#if @isSelectable}}\n <HdsTableThSelectable @isSelected={{@isSelected}} @selectionScope={{@selectionScope}} @selectionKey={{this.selectionKey}} @selectionAriaLabelSuffix={{@selectionAriaLabelSuffix}} @sortBySelectedOrder={{@sortBySelectedOrder}} @didInsert={{@didInsert}} @willDestroy={{@willDestroy}} @onClickSortBySelected={{@onClickSortBySelected}} @onSelectionChange={{@onSelectionChange}} />\n {{/if}}\n\n {{yield}}\n</tr>", {
47
+ setComponentTemplate(precompileTemplate("<tr class={{this.classNames}} ...attributes>\n {{#if @isSelectable}}\n <HdsTableThSelectable @isSelected={{this.isSelected}} @selectionScope={{@selectionScope}} @selectionKey={{this.selectionKey}} @selectionAriaLabelSuffix={{@selectionAriaLabelSuffix}} @sortBySelectedOrder={{@sortBySelectedOrder}} @didInsert={{@didInsert}} @willDestroy={{@willDestroy}} @onClickSortBySelected={{@onClickSortBySelected}} @onSelectionChange={{this.onSelectionChange}} />\n {{/if}}\n\n {{yield}}\n</tr>", {
36
48
  strictMode: true,
37
49
  scope: () => ({
38
50
  HdsTableThSelectable
@@ -1 +1 @@
1
- {"version":3,"file":"tr.js","sources":["../../../../src/components/hds/table/tr.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\n\n// import { HdsTableScopeValues } from './types.ts';\nimport HdsTableThSelectable from './th-selectable.gts';\n\nimport type { HdsTableScope, HdsTableThSortOrder } from './types.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.gts';\nimport type { HdsTableSignature } from './index.gts';\nimport type { HdsTableThSelectableSignature } from './th-selectable.gts';\n\nexport interface BaseHdsTableTrSignature {\n Args: {\n selectableColumnKey?: HdsTableSignature['Args']['selectableColumnKey'];\n isSelectable?: boolean;\n isSelected?: boolean;\n selectionAriaLabelSuffix?: string;\n selectionKey?: string;\n selectionScope?: HdsTableScope;\n sortBySelectedOrder?: HdsTableThSortOrder;\n didInsert?: (\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ) => void;\n onSelectionChange?: (\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ) => void;\n willDestroy?: () => void;\n onClickSortBySelected?: HdsTableThSelectableSignature['Args']['onClickSortBySelected'];\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLTableRowElement;\n}\n\n/*\n * NOTE: There is currently an issue with `WithBoundArgs` or Glint that causes a typing error where @selectionKey is set as always required.\n *\n * Until this is fixed, we are holding off on doing a union with the SelectableHdsTableTrArgs\n */\n\n// Extended interface for selectable rows\n// export interface SelectableHdsTableTrArgs extends BaseHdsTableTrSignature {\n// Args: BaseHdsTableTrSignature['Args'] & {\n// isSelectable: true;\n// selectionScope?: HdsTableScopeValues.Row;\n// selectionKey: string; // Now required for selectable rows\n// };\n// }\n\n// Union type to combine both possible states\nexport type HdsTableTrSignature = BaseHdsTableTrSignature;\n// | SelectableHdsTableTrArgs;\n\nexport default class HdsTableTr extends Component<HdsTableTrSignature> {\n get selectionKey(): string | undefined {\n if (this.args.isSelectable && this.args.selectionScope === 'row') {\n assert(\n `@selectionKey must be defined on Table::Tr or B.Tr when @isSelectable is true`,\n this.args.selectionKey\n );\n return this.args.selectionKey;\n }\n return undefined;\n }\n\n <template>\n <tr class=\"hds-table__tr\" ...attributes>\n {{#if @isSelectable}}\n <HdsTableThSelectable\n @isSelected={{@isSelected}}\n @selectionScope={{@selectionScope}}\n @selectionKey={{this.selectionKey}}\n @selectionAriaLabelSuffix={{@selectionAriaLabelSuffix}}\n @sortBySelectedOrder={{@sortBySelectedOrder}}\n @didInsert={{@didInsert}}\n @willDestroy={{@willDestroy}}\n @onClickSortBySelected={{@onClickSortBySelected}}\n @onSelectionChange={{@onSelectionChange}}\n />\n {{/if}}\n\n {{yield}}\n </tr>\n </template>\n}\n"],"names":["HdsTableTr","Component","selectionKey","args","isSelectable","selectionScope","assert","undefined","setComponentTemplate","precompileTemplate","strictMode","scope","HdsTableThSelectable"],"mappings":";;;;;;AAAA;;;AAGC;AAuCD;;;;AAIC;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEe,MAAMA,mBAAmBC,SAAA,CAAU;EAChD,IAAIC,YAAAA,GAAmC;AACrC,IAAA,IAAI,IAAI,CAACC,IAAI,CAACC,YAAY,IAAI,IAAI,CAACD,IAAI,CAACE,cAAc,KAAK,KAAA,EAAO;MAChEC,MAAA,CACE,+EAA+E,EAC/E,IAAI,CAACH,IAAI,CAACD,YAAY,CAAA;AAExB,MAAA,OAAO,IAAI,CAACC,IAAI,CAACD,YAAY;AAC/B,IAAA;AACA,IAAA,OAAOK,SAAA;AACT,EAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,keAAA,EAkBA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
1
+ {"version":3,"file":"tr.js","sources":["../../../../src/components/hds/table/tr.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\n\n// import { HdsTableScopeValues } from './types.ts';\nimport HdsTableThSelectable from './th-selectable.gts';\n\nimport type { HdsTableScope, HdsTableThSortOrder } from './types.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.gts';\nimport type { HdsTableSignature } from './index.gts';\nimport type { HdsTableThSelectableSignature } from './th-selectable.gts';\n\nexport interface BaseHdsTableTrSignature {\n Args: {\n selectableColumnKey?: HdsTableSignature['Args']['selectableColumnKey'];\n isSelectable?: boolean;\n isSelected?: boolean;\n selectionAriaLabelSuffix?: string;\n selectionKey?: string;\n selectionScope?: HdsTableScope;\n sortBySelectedOrder?: HdsTableThSortOrder;\n didInsert?: (\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ) => void;\n onSelectionChange?: (\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ) => void;\n willDestroy?: () => void;\n onClickSortBySelected?: HdsTableThSelectableSignature['Args']['onClickSortBySelected'];\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLTableRowElement;\n}\n\n/*\n * NOTE: There is currently an issue with `WithBoundArgs` or Glint that causes a typing error where @selectionKey is set as always required.\n *\n * Until this is fixed, we are holding off on doing a union with the SelectableHdsTableTrArgs\n */\n\n// Extended interface for selectable rows\n// export interface SelectableHdsTableTrArgs extends BaseHdsTableTrSignature {\n// Args: BaseHdsTableTrSignature['Args'] & {\n// isSelectable: true;\n// selectionScope?: HdsTableScopeValues.Row;\n// selectionKey: string; // Now required for selectable rows\n// };\n// }\n\n// Union type to combine both possible states\nexport type HdsTableTrSignature = BaseHdsTableTrSignature;\n// | SelectableHdsTableTrArgs;\n\nexport default class HdsTableTr extends Component<HdsTableTrSignature> {\n @tracked private isSelectedOverride?: boolean;\n\n get selectionKey(): string | undefined {\n if (this.args.isSelectable && this.args.selectionScope === 'row') {\n assert(\n `@selectionKey must be defined on Table::Tr or B.Tr when @isSelectable is true`,\n this.args.selectionKey\n );\n return this.args.selectionKey;\n }\n return undefined;\n }\n\n // Carbon applies styles to the entire row when it is selected, so we need a state to track the selection state to toggle the appropriate class.\n get isSelected(): boolean {\n return this.isSelectedOverride ?? this.args.isSelected ?? false;\n }\n\n get classNames(): string {\n const classes = ['hds-table__tr'];\n\n if (this.isSelected) {\n classes.push(`hds-table__tr--is-selected`);\n }\n\n return classes.join(' ');\n }\n\n onSelectionChange = (\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void => {\n this.isSelectedOverride = checkbox?.checked ?? false;\n\n const { onSelectionChange } = this.args;\n if (typeof onSelectionChange === 'function') {\n onSelectionChange(checkbox, selectionKey);\n }\n };\n\n <template>\n <tr class={{this.classNames}} ...attributes>\n {{#if @isSelectable}}\n <HdsTableThSelectable\n @isSelected={{this.isSelected}}\n @selectionScope={{@selectionScope}}\n @selectionKey={{this.selectionKey}}\n @selectionAriaLabelSuffix={{@selectionAriaLabelSuffix}}\n @sortBySelectedOrder={{@sortBySelectedOrder}}\n @didInsert={{@didInsert}}\n @willDestroy={{@willDestroy}}\n @onClickSortBySelected={{@onClickSortBySelected}}\n @onSelectionChange={{this.onSelectionChange}}\n />\n {{/if}}\n\n {{yield}}\n </tr>\n </template>\n}\n"],"names":["HdsTableTr","Component","g","prototype","tracked","i","selectionKey","args","isSelectable","selectionScope","assert","undefined","isSelected","isSelectedOverride","classNames","classes","push","join","onSelectionChange","checkbox","checked","setComponentTemplate","precompileTemplate","strictMode","scope","HdsTableThSelectable"],"mappings":";;;;;;;;AAAA;;;AAGC;AAyDD;AAEe,MAAMA,mBAAmBC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,oBAAA,EAAA,CAC/CC,OAAA,CAAA,CAAA;AAAA;EAAA,mBAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,oBAAA,CAAA,EAAA,MAAA;EAED,IAAIC,YAAAA,GAAmC;AACrC,IAAA,IAAI,IAAI,CAACC,IAAI,CAACC,YAAY,IAAI,IAAI,CAACD,IAAI,CAACE,cAAc,KAAK,KAAA,EAAO;MAChEC,MAAA,CACE,+EAA+E,EAC/E,IAAI,CAACH,IAAI,CAACD,YAAY,CAAA;AAExB,MAAA,OAAO,IAAI,CAACC,IAAI,CAACD,YAAY;AAC/B,IAAA;AACA,IAAA,OAAOK,SAAA;AACT,EAAA;AAEA;EACA,IAAIC,UAAAA,GAAsB;IACxB,OAAO,IAAI,CAACC,kBAAkB,IAAI,IAAI,CAACN,IAAI,CAACK,UAAU,IAAI,KAAA;AAC5D,EAAA;EAEA,IAAIE,UAAAA,GAAqB;AACvB,IAAA,MAAMC,OAAA,GAAU,CAAC,eAAA,CAAgB;IAEjC,IAAI,IAAI,CAACH,UAAU,EAAE;AACnBG,MAAAA,OAAA,CAAQC,IAAI,CAAC,CAAA,0BAAA,CAA4B,CAAA;AAC3C,IAAA;AAEA,IAAA,OAAOD,OAAA,CAAQE,IAAI,CAAC,GAAA,CAAA;AACtB,EAAA;AAEAC,EAAAA,iBAAA,GAAoBA,CAClBC,UACAb,YAAqB,KAChB;AACL,IAAA,IAAI,CAACO,kBAAkB,GAAGM,QAAA,EAAUC,OAAA,IAAW,KAAA;IAE/C,MAAM;AAAEF,MAAAA;KAAmB,GAAG,IAAI,CAACX,IAAI;AACvC,IAAA,IAAI,OAAOW,sBAAsB,UAAA,EAAY;AAC3CA,MAAAA,iBAAA,CAAkBC,QAAA,EAAUb,YAAA,CAAA;AAC9B,IAAA;EACF,CAAA;AAEA,EAAA;IAAAe,oBAAA,CAAAC,kBAAA,CAAA,4eAAA,EAkBA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -1,7 +1,7 @@
1
1
  export { default as HdsAccordion } from './components/hds/accordion/index.js';
2
2
  export { default as HdsAccordionItem } from './components/hds/accordion/item/index.js';
3
3
  export { HdsAccordionForceStateValues, HdsAccordionItemTitleTagValues, HdsAccordionSizeValues, HdsAccordionTypeValues } from './components/hds/accordion/types.js';
4
- export { H as HdsAdvancedTable, a as HdsAdvancedTableTh, b as HdsAdvancedTableThSelectable, c as HdsAdvancedTableTr } from './index-DtMB-P9m.js';
4
+ export { H as HdsAdvancedTable, a as HdsAdvancedTableTh, b as HdsAdvancedTableThSelectable, c as HdsAdvancedTableTr } from './index-Cx64Nvu4.js';
5
5
  export { default as HdsAdvancedTableTd } from './components/hds/advanced-table/td.js';
6
6
  export { default as HdsAdvancedTableThButtonSort } from './components/hds/advanced-table/th-button-sort.js';
7
7
  export { default as HdsAdvancedTableThButtonTooltip } from './components/hds/advanced-table/th-button-tooltip.js';