@eui/eds 22.0.0-alpha.16 → 22.0.0-alpha.18

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/docs/changelog.html +28 -0
  2. package/docs/components/EdsLanguageSelectorDialog.html +1 -1
  3. package/docs/js/search/search_index.js +2 -2
  4. package/docs/json/documentation.json +42 -42
  5. package/docs/llms.txt +1 -1
  6. package/docs/properties.html +1 -1
  7. package/fesm2022/eui-eds-charts-eds-chart-legend.mjs +2 -2
  8. package/fesm2022/eui-eds-charts-eds-chart-legend.mjs.map +1 -1
  9. package/fesm2022/eui-eds-eds-accordion.mjs +2 -2
  10. package/fesm2022/eui-eds-eds-accordion.mjs.map +1 -1
  11. package/fesm2022/eui-eds-eds-alert.mjs +2 -2
  12. package/fesm2022/eui-eds-eds-alert.mjs.map +1 -1
  13. package/fesm2022/eui-eds-eds-autocomplete.mjs +2 -2
  14. package/fesm2022/eui-eds-eds-autocomplete.mjs.map +1 -1
  15. package/fesm2022/eui-eds-eds-avatar.mjs +4 -4
  16. package/fesm2022/eui-eds-eds-avatar.mjs.map +1 -1
  17. package/fesm2022/eui-eds-eds-blockquote.mjs +2 -2
  18. package/fesm2022/eui-eds-eds-blockquote.mjs.map +1 -1
  19. package/fesm2022/eui-eds-eds-calendar.mjs +4 -4
  20. package/fesm2022/eui-eds-eds-calendar.mjs.map +1 -1
  21. package/fesm2022/eui-eds-eds-card.mjs +2 -2
  22. package/fesm2022/eui-eds-eds-card.mjs.map +1 -1
  23. package/fesm2022/eui-eds-eds-date-block.mjs +2 -2
  24. package/fesm2022/eui-eds-eds-date-block.mjs.map +1 -1
  25. package/fesm2022/eui-eds-eds-datepicker.mjs +2 -2
  26. package/fesm2022/eui-eds-eds-datepicker.mjs.map +1 -1
  27. package/fesm2022/eui-eds-eds-discussion-thread.mjs +4 -4
  28. package/fesm2022/eui-eds-eds-discussion-thread.mjs.map +1 -1
  29. package/fesm2022/eui-eds-eds-empty-state.mjs +2 -2
  30. package/fesm2022/eui-eds-eds-empty-state.mjs.map +1 -1
  31. package/fesm2022/eui-eds-eds-fieldset.mjs +2 -2
  32. package/fesm2022/eui-eds-eds-fieldset.mjs.map +1 -1
  33. package/fesm2022/eui-eds-eds-file-upload.mjs +2 -2
  34. package/fesm2022/eui-eds-eds-file-upload.mjs.map +1 -1
  35. package/fesm2022/eui-eds-eds-growl.mjs +2 -2
  36. package/fesm2022/eui-eds-eds-growl.mjs.map +1 -1
  37. package/fesm2022/eui-eds-eds-language-selector.mjs +4 -4
  38. package/fesm2022/eui-eds-eds-language-selector.mjs.map +1 -1
  39. package/fesm2022/eui-eds-eds-list.mjs +2 -2
  40. package/fesm2022/eui-eds-eds-list.mjs.map +1 -1
  41. package/fesm2022/eui-eds-eds-menu.mjs +2 -2
  42. package/fesm2022/eui-eds-eds-menu.mjs.map +1 -1
  43. package/fesm2022/eui-eds-eds-multiselect.mjs +2 -2
  44. package/fesm2022/eui-eds-eds-multiselect.mjs.map +1 -1
  45. package/fesm2022/eui-eds-eds-page.mjs +2 -2
  46. package/fesm2022/eui-eds-eds-page.mjs.map +1 -1
  47. package/fesm2022/eui-eds-eds-popover.mjs +2 -2
  48. package/fesm2022/eui-eds-eds-popover.mjs.map +1 -1
  49. package/fesm2022/eui-eds-eds-progress-bar.mjs +2 -2
  50. package/fesm2022/eui-eds-eds-progress-bar.mjs.map +1 -1
  51. package/fesm2022/eui-eds-eds-progress-circle.mjs +2 -2
  52. package/fesm2022/eui-eds-eds-progress-circle.mjs.map +1 -1
  53. package/fesm2022/eui-eds-eds-select.mjs +2 -2
  54. package/fesm2022/eui-eds-eds-select.mjs.map +1 -1
  55. package/fesm2022/eui-eds-eds-shell.mjs +4 -4
  56. package/fesm2022/eui-eds-eds-shell.mjs.map +1 -1
  57. package/fesm2022/eui-eds-eds-table.mjs +2 -2
  58. package/fesm2022/eui-eds-eds-table.mjs.map +1 -1
  59. package/fesm2022/eui-eds-eds-tabs.mjs +2 -2
  60. package/fesm2022/eui-eds-eds-tabs.mjs.map +1 -1
  61. package/fesm2022/eui-eds-eds-timeline.mjs +2 -2
  62. package/fesm2022/eui-eds-eds-timeline.mjs.map +1 -1
  63. package/fesm2022/eui-eds-eds-timepicker.mjs +2 -2
  64. package/fesm2022/eui-eds-eds-timepicker.mjs.map +1 -1
  65. package/fesm2022/eui-eds-eds-user-profile.mjs +2 -2
  66. package/fesm2022/eui-eds-eds-user-profile.mjs.map +1 -1
  67. package/fesm2022/eui-eds-eds-wizard.mjs +2 -2
  68. package/fesm2022/eui-eds-utilities-eds-label.mjs +2 -2
  69. package/fesm2022/eui-eds-utilities-eds-label.mjs.map +1 -1
  70. package/fesm2022/eui-eds-utilities-eds-trend.mjs +2 -2
  71. package/fesm2022/eui-eds-utilities-eds-trend.mjs.map +1 -1
  72. package/package.json +1 -1
@@ -73,7 +73,7 @@ class EdsLanguageSelectorDialog {
73
73
  </div>
74
74
  }
75
75
  </div>
76
- `, isInline: true, styles: [".eds-language-dialog{padding:var(--eds-sp-m)}.eds-language-dialog__section-title{font:var(--eds-f-label-m-semi-bold);margin-bottom:var(--eds-sp-s)}.eds-language-dialog__section-title--additional{margin-top:var(--eds-sp-l)}.eds-language-dialog__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--eds-sp-s)}.eds-language-dialog__item{display:flex;align-items:center;gap:var(--eds-sp-xs)}.eds-language-dialog__code{font-weight:600;min-width:2rem}\n"], dependencies: [{ kind: "component", type: i1.EdsButton, selector: "button[edsButton]", inputs: ["e2eAttr", "id", "edsDisabled", "edsBlockButton", "edsIconButton", "edsAvatarButton", "edsLineWrap", "edsButtonPrimary", "edsButtonSecondary", "edsButtonTertiary", "edsButtonRounded", "edsTypeVariant", "isChecked"] }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
76
+ `, isInline: true, styles: [".eds-language-dialog{padding:var(--eds-sp-m)}.eds-language-dialog__section-title{font:var(--eds-f-label-m-semibold);margin-bottom:var(--eds-sp-s)}.eds-language-dialog__section-title--additional{margin-top:var(--eds-sp-l)}.eds-language-dialog__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--eds-sp-s)}.eds-language-dialog__item{display:flex;align-items:center;gap:var(--eds-sp-xs)}.eds-language-dialog__code{font-weight:600;min-width:2rem}\n"], dependencies: [{ kind: "component", type: i1.EdsButton, selector: "button[edsButton]", inputs: ["e2eAttr", "id", "edsDisabled", "edsBlockButton", "edsIconButton", "edsAvatarButton", "edsLineWrap", "edsButtonPrimary", "edsButtonSecondary", "edsButtonTertiary", "edsButtonRounded", "edsTypeVariant", "isChecked"] }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
77
77
  }
78
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsLanguageSelectorDialog, decorators: [{
79
79
  type: Component,
@@ -115,7 +115,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
115
115
  </div>
116
116
  }
117
117
  </div>
118
- `, imports: [UpperCasePipe, ...EDS_BUTTON], changeDetection: ChangeDetectionStrategy.OnPush, styles: [".eds-language-dialog{padding:var(--eds-sp-m)}.eds-language-dialog__section-title{font:var(--eds-f-label-m-semi-bold);margin-bottom:var(--eds-sp-s)}.eds-language-dialog__section-title--additional{margin-top:var(--eds-sp-l)}.eds-language-dialog__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--eds-sp-s)}.eds-language-dialog__item{display:flex;align-items:center;gap:var(--eds-sp-xs)}.eds-language-dialog__code{font-weight:600;min-width:2rem}\n"] }]
118
+ `, imports: [UpperCasePipe, ...EDS_BUTTON], changeDetection: ChangeDetectionStrategy.OnPush, styles: [".eds-language-dialog{padding:var(--eds-sp-m)}.eds-language-dialog__section-title{font:var(--eds-f-label-m-semibold);margin-bottom:var(--eds-sp-s)}.eds-language-dialog__section-title--additional{margin-top:var(--eds-sp-l)}.eds-language-dialog__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--eds-sp-s)}.eds-language-dialog__item{display:flex;align-items:center;gap:var(--eds-sp-xs)}.eds-language-dialog__code{font-weight:600;min-width:2rem}\n"] }]
119
119
  }] });
120
120
 
121
121
  /** Threshold: when languages exceed this count, a dialog is shown instead of a dropdown. */
@@ -306,7 +306,7 @@ class EdsLanguageSelector {
306
306
  }, this.injector);
307
307
  }
308
308
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsLanguageSelector, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
309
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: EdsLanguageSelector, isStandalone: true, selector: "eds-language-selector", inputs: { languages: { classPropertyName: "languages", publicName: "languages", isSignal: true, isRequired: false, transformFunction: null }, selectedLanguage: { classPropertyName: "selectedLanguage", publicName: "selectedLanguage", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, isRightAligned: { classPropertyName: "isRightAligned", publicName: "isRightAligned", isSignal: true, isRequired: false, transformFunction: null }, hasIconLayout: { classPropertyName: "hasIconLayout", publicName: "hasIconLayout", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { languageChange: "languageChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClasses()" } }, hostDirectives: [{ directive: i1$1.EdsColorDirective, inputs: ["edsBrand", "edsBrand", "edsNeutral", "edsNeutral", "edsColorVariant", "edsColorVariant"] }], ngImport: i0, template: "<button\n type=\"button\"\n class=\"language-toggle\"\n [class.language-toggle--icon-layout]=\"hasIconLayout()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n (keydown)=\"onToggleKeydown($event)\">\n @if (hasIconLayout()) {\n <eds-icon icon=\"globe\" size=\"s\" />\n <span class=\"language-code\">{{ currentLanguage().code | uppercase }}</span>\n } @else {\n <span class=\"language-code\">{{ currentLanguage().code | uppercase }}</span>\n <eds-icon [icon]=\"isOpen() ? 'caret-up' : 'caret-down'\" size=\"s\" />\n }\n</button>\n\n@if (isOpen()) {\n <ul\n class=\"language-dropdown\"\n [class.language-dropdown--align-right]=\"resolvedAlignRight()\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n (keydown)=\"onDropdownKeydown($event)\">\n @for (lang of languages(); track lang.code; let i = $index) {\n <li\n class=\"language-option\"\n [class.selected]=\"lang.code === selectedLanguage()\"\n [class.focused]=\"i === focusedIndex()\"\n role=\"option\"\n [id]=\"'eds-lang-option-' + lang.code\"\n [attr.aria-selected]=\"lang.code === selectedLanguage()\"\n [tabindex]=\"i === focusedIndex() ? 0 : -1\"\n (click)=\"selectLanguage(lang)\">\n <span class=\"option-code\">{{ lang.code | uppercase }}</span>\n <span class=\"option-label\">{{ lang.label }}</span>\n </li>\n }\n </ul>\n}\n", styles: [".eui-21 :host{display:inline-flex;position:relative}.eui-21 :host .language-toggle{display:flex;align-items:center;gap:var(--eds-sp-3xs);padding:var(--eds-sp-3xs) var(--eds-sp-xs);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral-subtle);border-radius:var(--eds-br-s);background:none;cursor:pointer;font:var(--eds-f-label-m-semi-bold);color:inherit;transition:background .15s ease,border-color .15s ease}.eui-21 :host .language-toggle:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:1px!important;border-radius:var(--eds-br-xs)!important}.eui-21 :host .language-toggle:hover{background:var(--eds-c-surface-elevation-sunken);border-color:var(--eds-c-border-neutral)}.eui-21 :host .language-toggle--icon-layout{border:none;padding:var(--eds-sp-3xs) var(--eds-sp-2xs);gap:var(--eds-sp-3xs);border-radius:var(--eds-br-s)}.eui-21 :host .language-toggle--icon-layout:hover{background:var(--eds-c-surface-elevation-sunken)}.eui-21 :host .language-code{font:var(--eds-f-label-m-semi-bold)}.eui-21 :host .chevron{font-size:var(--eds-f-s-xs);color:var(--eds-c-foreground-subtler)}.eui-21 :host .language-dropdown{position:absolute;top:100%;left:0;z-index:200;margin-top:var(--eds-sp-3xs);min-width:160px;list-style:none;padding:var(--eds-sp-3xs) var(--eds-sp-none);background:var(--eds-c-surface-elevation-overlay);border:var(--eds-bw-xs) solid var(--eds-c-border-divider);border-radius:var(--eds-br-m);box-shadow:var(--eds-sh-3)}.eui-21 :host .language-dropdown--align-right{left:auto;right:0}.eui-21 :host .language-option{display:flex;align-items:center;gap:var(--eds-sp-xs);padding:var(--eds-sp-xs) var(--eds-sp-m);cursor:pointer;font:var(--eds-f-paragraph-s);color:var(--eds-c-foreground);transition:background .15s ease;outline:none}.eui-21 :host .language-option:hover,.eui-21 :host .language-option.focused{background:var(--eds-c-surface-elevation-sunken)}.eui-21 :host .language-option.focused{outline:var(--eds-bw-xs) solid var(--eds-c-border-primary);outline-offset:-1px}.eui-21 :host .language-option.selected{color:var(--eds-c-foreground-primary);font-weight:var(--eds-f-w-semi-bold)}.eui-21 :host .option-code{font:var(--eds-f-label-m-semi-bold);min-width:2rem}.eui-21 :host .option-label{flex:1}.eui-21 :host.eds-language-selector--brand .language-toggle{color:var(--eds-c-on-surface-brand);border-color:transparent}.eui-21 :host.eds-language-selector--brand .language-toggle:hover{background:var(--eds-c-surface-brand--hover);color:var(--eds-c-on-surface-brand--hover)}.eui-21 :host.eds-language-selector--brand .language-toggle--icon-layout:hover{background:var(--eds-c-surface-brand--hover);color:var(--eds-c-on-surface-brand--hover)}.eui-21 :host.eds-language-selector--brand .language-toggle ::ng-deep .eds-icon{--_on-surface: var(--eds-c-on-surface-brand)}.eui-21 :host.eds-language-selector--brand .chevron{color:var(--eds-c-on-surface-brand)}\n"], dependencies: [{ kind: "component", type: i2.EdsIcon, selector: "eds-icon, span[edsIcon]", inputs: ["icon", "set", "color", "size", "ariaLabel", "ariaHidden", "rounded", "isLoading"] }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }] }); }
309
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: EdsLanguageSelector, isStandalone: true, selector: "eds-language-selector", inputs: { languages: { classPropertyName: "languages", publicName: "languages", isSignal: true, isRequired: false, transformFunction: null }, selectedLanguage: { classPropertyName: "selectedLanguage", publicName: "selectedLanguage", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, isRightAligned: { classPropertyName: "isRightAligned", publicName: "isRightAligned", isSignal: true, isRequired: false, transformFunction: null }, hasIconLayout: { classPropertyName: "hasIconLayout", publicName: "hasIconLayout", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { languageChange: "languageChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClasses()" } }, hostDirectives: [{ directive: i1$1.EdsColorDirective, inputs: ["edsBrand", "edsBrand", "edsNeutral", "edsNeutral", "edsColorVariant", "edsColorVariant"] }], ngImport: i0, template: "<button\n type=\"button\"\n class=\"language-toggle\"\n [class.language-toggle--icon-layout]=\"hasIconLayout()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n (keydown)=\"onToggleKeydown($event)\">\n @if (hasIconLayout()) {\n <eds-icon icon=\"globe\" size=\"s\" />\n <span class=\"language-code\">{{ currentLanguage().code | uppercase }}</span>\n } @else {\n <span class=\"language-code\">{{ currentLanguage().code | uppercase }}</span>\n <eds-icon [icon]=\"isOpen() ? 'caret-up' : 'caret-down'\" size=\"s\" />\n }\n</button>\n\n@if (isOpen()) {\n <ul\n class=\"language-dropdown\"\n [class.language-dropdown--align-right]=\"resolvedAlignRight()\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n (keydown)=\"onDropdownKeydown($event)\">\n @for (lang of languages(); track lang.code; let i = $index) {\n <li\n class=\"language-option\"\n [class.selected]=\"lang.code === selectedLanguage()\"\n [class.focused]=\"i === focusedIndex()\"\n role=\"option\"\n [id]=\"'eds-lang-option-' + lang.code\"\n [attr.aria-selected]=\"lang.code === selectedLanguage()\"\n [tabindex]=\"i === focusedIndex() ? 0 : -1\"\n (click)=\"selectLanguage(lang)\">\n <span class=\"option-code\">{{ lang.code | uppercase }}</span>\n <span class=\"option-label\">{{ lang.label }}</span>\n </li>\n }\n </ul>\n}\n", styles: [".eui-21 :host{display:inline-flex;position:relative}.eui-21 :host .language-toggle{display:flex;align-items:center;gap:var(--eds-sp-3xs);padding:var(--eds-sp-3xs) var(--eds-sp-xs);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral-subtle);border-radius:var(--eds-br-s);background:none;cursor:pointer;font:var(--eds-f-label-m-semibold);color:inherit;transition:background .15s ease,border-color .15s ease}.eui-21 :host .language-toggle:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:1px!important;border-radius:var(--eds-br-xs)!important}.eui-21 :host .language-toggle:hover{background:var(--eds-c-surface-elevation-sunken);border-color:var(--eds-c-border-neutral)}.eui-21 :host .language-toggle--icon-layout{border:none;padding:var(--eds-sp-3xs) var(--eds-sp-2xs);gap:var(--eds-sp-3xs);border-radius:var(--eds-br-s)}.eui-21 :host .language-toggle--icon-layout:hover{background:var(--eds-c-surface-elevation-sunken)}.eui-21 :host .language-code{font:var(--eds-f-label-m-semibold)}.eui-21 :host .chevron{font-size:var(--eds-f-s-xs);color:var(--eds-c-foreground-subtler)}.eui-21 :host .language-dropdown{position:absolute;top:100%;left:0;z-index:200;margin-top:var(--eds-sp-3xs);min-width:160px;list-style:none;padding:var(--eds-sp-3xs) var(--eds-sp-none);background:var(--eds-c-surface-elevation-overlay);border:var(--eds-bw-xs) solid var(--eds-c-border-divider);border-radius:var(--eds-br-m);box-shadow:var(--eds-sh-3)}.eui-21 :host .language-dropdown--align-right{left:auto;right:0}.eui-21 :host .language-option{display:flex;align-items:center;gap:var(--eds-sp-xs);padding:var(--eds-sp-xs) var(--eds-sp-m);cursor:pointer;font:var(--eds-f-paragraph-s);color:var(--eds-c-foreground);transition:background .15s ease;outline:none}.eui-21 :host .language-option:hover,.eui-21 :host .language-option.focused{background:var(--eds-c-surface-elevation-sunken)}.eui-21 :host .language-option.focused{outline:var(--eds-bw-xs) solid var(--eds-c-border-primary);outline-offset:-1px}.eui-21 :host .language-option.selected{color:var(--eds-c-foreground-primary);font-weight:var(--eds-f-w-semibold)}.eui-21 :host .option-code{font:var(--eds-f-label-m-semibold);min-width:2rem}.eui-21 :host .option-label{flex:1}.eui-21 :host.eds-language-selector--brand .language-toggle{color:var(--eds-c-on-surface-brand);border-color:transparent}.eui-21 :host.eds-language-selector--brand .language-toggle:hover{background:var(--eds-c-surface-brand--hover);color:var(--eds-c-on-surface-brand--hover)}.eui-21 :host.eds-language-selector--brand .language-toggle--icon-layout:hover{background:var(--eds-c-surface-brand--hover);color:var(--eds-c-on-surface-brand--hover)}.eui-21 :host.eds-language-selector--brand .language-toggle ::ng-deep .eds-icon{--_on-surface: var(--eds-c-on-surface-brand)}.eui-21 :host.eds-language-selector--brand .chevron{color:var(--eds-c-on-surface-brand)}\n"], dependencies: [{ kind: "component", type: i2.EdsIcon, selector: "eds-icon, span[edsIcon]", inputs: ["icon", "set", "color", "size", "ariaLabel", "ariaHidden", "rounded", "isLoading"] }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }] }); }
310
310
  }
311
311
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsLanguageSelector, decorators: [{
312
312
  type: Component,
@@ -321,7 +321,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
321
321
  'edsColorVariant',
322
322
  ],
323
323
  },
324
- ], template: "<button\n type=\"button\"\n class=\"language-toggle\"\n [class.language-toggle--icon-layout]=\"hasIconLayout()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n (keydown)=\"onToggleKeydown($event)\">\n @if (hasIconLayout()) {\n <eds-icon icon=\"globe\" size=\"s\" />\n <span class=\"language-code\">{{ currentLanguage().code | uppercase }}</span>\n } @else {\n <span class=\"language-code\">{{ currentLanguage().code | uppercase }}</span>\n <eds-icon [icon]=\"isOpen() ? 'caret-up' : 'caret-down'\" size=\"s\" />\n }\n</button>\n\n@if (isOpen()) {\n <ul\n class=\"language-dropdown\"\n [class.language-dropdown--align-right]=\"resolvedAlignRight()\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n (keydown)=\"onDropdownKeydown($event)\">\n @for (lang of languages(); track lang.code; let i = $index) {\n <li\n class=\"language-option\"\n [class.selected]=\"lang.code === selectedLanguage()\"\n [class.focused]=\"i === focusedIndex()\"\n role=\"option\"\n [id]=\"'eds-lang-option-' + lang.code\"\n [attr.aria-selected]=\"lang.code === selectedLanguage()\"\n [tabindex]=\"i === focusedIndex() ? 0 : -1\"\n (click)=\"selectLanguage(lang)\">\n <span class=\"option-code\">{{ lang.code | uppercase }}</span>\n <span class=\"option-label\">{{ lang.label }}</span>\n </li>\n }\n </ul>\n}\n", styles: [".eui-21 :host{display:inline-flex;position:relative}.eui-21 :host .language-toggle{display:flex;align-items:center;gap:var(--eds-sp-3xs);padding:var(--eds-sp-3xs) var(--eds-sp-xs);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral-subtle);border-radius:var(--eds-br-s);background:none;cursor:pointer;font:var(--eds-f-label-m-semi-bold);color:inherit;transition:background .15s ease,border-color .15s ease}.eui-21 :host .language-toggle:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:1px!important;border-radius:var(--eds-br-xs)!important}.eui-21 :host .language-toggle:hover{background:var(--eds-c-surface-elevation-sunken);border-color:var(--eds-c-border-neutral)}.eui-21 :host .language-toggle--icon-layout{border:none;padding:var(--eds-sp-3xs) var(--eds-sp-2xs);gap:var(--eds-sp-3xs);border-radius:var(--eds-br-s)}.eui-21 :host .language-toggle--icon-layout:hover{background:var(--eds-c-surface-elevation-sunken)}.eui-21 :host .language-code{font:var(--eds-f-label-m-semi-bold)}.eui-21 :host .chevron{font-size:var(--eds-f-s-xs);color:var(--eds-c-foreground-subtler)}.eui-21 :host .language-dropdown{position:absolute;top:100%;left:0;z-index:200;margin-top:var(--eds-sp-3xs);min-width:160px;list-style:none;padding:var(--eds-sp-3xs) var(--eds-sp-none);background:var(--eds-c-surface-elevation-overlay);border:var(--eds-bw-xs) solid var(--eds-c-border-divider);border-radius:var(--eds-br-m);box-shadow:var(--eds-sh-3)}.eui-21 :host .language-dropdown--align-right{left:auto;right:0}.eui-21 :host .language-option{display:flex;align-items:center;gap:var(--eds-sp-xs);padding:var(--eds-sp-xs) var(--eds-sp-m);cursor:pointer;font:var(--eds-f-paragraph-s);color:var(--eds-c-foreground);transition:background .15s ease;outline:none}.eui-21 :host .language-option:hover,.eui-21 :host .language-option.focused{background:var(--eds-c-surface-elevation-sunken)}.eui-21 :host .language-option.focused{outline:var(--eds-bw-xs) solid var(--eds-c-border-primary);outline-offset:-1px}.eui-21 :host .language-option.selected{color:var(--eds-c-foreground-primary);font-weight:var(--eds-f-w-semi-bold)}.eui-21 :host .option-code{font:var(--eds-f-label-m-semi-bold);min-width:2rem}.eui-21 :host .option-label{flex:1}.eui-21 :host.eds-language-selector--brand .language-toggle{color:var(--eds-c-on-surface-brand);border-color:transparent}.eui-21 :host.eds-language-selector--brand .language-toggle:hover{background:var(--eds-c-surface-brand--hover);color:var(--eds-c-on-surface-brand--hover)}.eui-21 :host.eds-language-selector--brand .language-toggle--icon-layout:hover{background:var(--eds-c-surface-brand--hover);color:var(--eds-c-on-surface-brand--hover)}.eui-21 :host.eds-language-selector--brand .language-toggle ::ng-deep .eds-icon{--_on-surface: var(--eds-c-on-surface-brand)}.eui-21 :host.eds-language-selector--brand .chevron{color:var(--eds-c-on-surface-brand)}\n"] }]
324
+ ], template: "<button\n type=\"button\"\n class=\"language-toggle\"\n [class.language-toggle--icon-layout]=\"hasIconLayout()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n (keydown)=\"onToggleKeydown($event)\">\n @if (hasIconLayout()) {\n <eds-icon icon=\"globe\" size=\"s\" />\n <span class=\"language-code\">{{ currentLanguage().code | uppercase }}</span>\n } @else {\n <span class=\"language-code\">{{ currentLanguage().code | uppercase }}</span>\n <eds-icon [icon]=\"isOpen() ? 'caret-up' : 'caret-down'\" size=\"s\" />\n }\n</button>\n\n@if (isOpen()) {\n <ul\n class=\"language-dropdown\"\n [class.language-dropdown--align-right]=\"resolvedAlignRight()\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n (keydown)=\"onDropdownKeydown($event)\">\n @for (lang of languages(); track lang.code; let i = $index) {\n <li\n class=\"language-option\"\n [class.selected]=\"lang.code === selectedLanguage()\"\n [class.focused]=\"i === focusedIndex()\"\n role=\"option\"\n [id]=\"'eds-lang-option-' + lang.code\"\n [attr.aria-selected]=\"lang.code === selectedLanguage()\"\n [tabindex]=\"i === focusedIndex() ? 0 : -1\"\n (click)=\"selectLanguage(lang)\">\n <span class=\"option-code\">{{ lang.code | uppercase }}</span>\n <span class=\"option-label\">{{ lang.label }}</span>\n </li>\n }\n </ul>\n}\n", styles: [".eui-21 :host{display:inline-flex;position:relative}.eui-21 :host .language-toggle{display:flex;align-items:center;gap:var(--eds-sp-3xs);padding:var(--eds-sp-3xs) var(--eds-sp-xs);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral-subtle);border-radius:var(--eds-br-s);background:none;cursor:pointer;font:var(--eds-f-label-m-semibold);color:inherit;transition:background .15s ease,border-color .15s ease}.eui-21 :host .language-toggle:focus-visible:not([readonly]){outline:var(--eds-bw-s) solid var(--eds-c-border-primary)!important;outline-offset:1px!important;border-radius:var(--eds-br-xs)!important}.eui-21 :host .language-toggle:hover{background:var(--eds-c-surface-elevation-sunken);border-color:var(--eds-c-border-neutral)}.eui-21 :host .language-toggle--icon-layout{border:none;padding:var(--eds-sp-3xs) var(--eds-sp-2xs);gap:var(--eds-sp-3xs);border-radius:var(--eds-br-s)}.eui-21 :host .language-toggle--icon-layout:hover{background:var(--eds-c-surface-elevation-sunken)}.eui-21 :host .language-code{font:var(--eds-f-label-m-semibold)}.eui-21 :host .chevron{font-size:var(--eds-f-s-xs);color:var(--eds-c-foreground-subtler)}.eui-21 :host .language-dropdown{position:absolute;top:100%;left:0;z-index:200;margin-top:var(--eds-sp-3xs);min-width:160px;list-style:none;padding:var(--eds-sp-3xs) var(--eds-sp-none);background:var(--eds-c-surface-elevation-overlay);border:var(--eds-bw-xs) solid var(--eds-c-border-divider);border-radius:var(--eds-br-m);box-shadow:var(--eds-sh-3)}.eui-21 :host .language-dropdown--align-right{left:auto;right:0}.eui-21 :host .language-option{display:flex;align-items:center;gap:var(--eds-sp-xs);padding:var(--eds-sp-xs) var(--eds-sp-m);cursor:pointer;font:var(--eds-f-paragraph-s);color:var(--eds-c-foreground);transition:background .15s ease;outline:none}.eui-21 :host .language-option:hover,.eui-21 :host .language-option.focused{background:var(--eds-c-surface-elevation-sunken)}.eui-21 :host .language-option.focused{outline:var(--eds-bw-xs) solid var(--eds-c-border-primary);outline-offset:-1px}.eui-21 :host .language-option.selected{color:var(--eds-c-foreground-primary);font-weight:var(--eds-f-w-semibold)}.eui-21 :host .option-code{font:var(--eds-f-label-m-semibold);min-width:2rem}.eui-21 :host .option-label{flex:1}.eui-21 :host.eds-language-selector--brand .language-toggle{color:var(--eds-c-on-surface-brand);border-color:transparent}.eui-21 :host.eds-language-selector--brand .language-toggle:hover{background:var(--eds-c-surface-brand--hover);color:var(--eds-c-on-surface-brand--hover)}.eui-21 :host.eds-language-selector--brand .language-toggle--icon-layout:hover{background:var(--eds-c-surface-brand--hover);color:var(--eds-c-on-surface-brand--hover)}.eui-21 :host.eds-language-selector--brand .language-toggle ::ng-deep .eds-icon{--_on-surface: var(--eds-c-on-surface-brand)}.eui-21 :host.eds-language-selector--brand .chevron{color:var(--eds-c-on-surface-brand)}\n"] }]
325
325
  }], propDecorators: { languages: [{ type: i0.Input, args: [{ isSignal: true, alias: "languages", required: false }] }], selectedLanguage: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedLanguage", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], isRightAligned: [{ type: i0.Input, args: [{ isSignal: true, alias: "isRightAligned", required: false }] }], hasIconLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasIconLayout", required: false }] }], languageChange: [{ type: i0.Output, args: ["languageChange"] }], onDocumentClick: [{
326
326
  type: HostListener,
327
327
  args: ['document:click', ['$event']]
@@ -1 +1 @@
1
- {"version":3,"file":"eui-eds-eds-language-selector.mjs","sources":["../../eds-language-selector/eds-language-selector-dialog.ts","../../eds-language-selector/eds-language-selector.ts","../../eds-language-selector/eds-language-selector.html","../../eds-language-selector/index.ts","../../eds-language-selector/eui-eds-eds-language-selector.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, inject, computed } from '@angular/core';\nimport { UpperCasePipe } from '@angular/common';\nimport { EDS_BUTTON } from '@eui/eds/eds-button';\nimport { EDS_DIALOG_COMPONENT_CONFIG } from '@eui/eds/eds-dialog';\nimport { EdsDialogService } from '@eui/eds/eds-dialog';\nimport { EdsLanguage } from './eds-language-selector';\n\n/** Official EU language codes. */\nconst EU_LANGUAGE_CODES = new Set([\n 'bg', 'cs', 'da', 'de', 'et', 'el', 'en', 'es', 'fr', 'ga',\n 'hr', 'it', 'lv', 'lt', 'hu', 'mt', 'nl', 'pl', 'pt', 'ro',\n 'sk', 'sl', 'fi', 'sv',\n]);\n\nexport interface EdsLanguageSelectorDialogConfig {\n /** All available languages. */\n languages: EdsLanguage[];\n /** Currently selected language code. */\n selectedLanguage: string;\n /** Callback when a language is selected. */\n onLanguageChange: (code: string) => void;\n}\n\n/**\n * Dialog content component for the language selector.\n * Displays EU and non-EU languages in separate grid sections.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'eds-language-selector-dialog',\n template: `\n <div class=\"eds-language-dialog\">\n @if (nonEuLanguages().length > 0) {\n <h4 class=\"eds-language-dialog__section-title\">EU Languages</h4>\n }\n <div class=\"eds-language-dialog__grid\">\n @for (lang of euLanguages(); track lang.code) {\n <div class=\"eds-language-dialog__item\">\n <span class=\"eds-language-dialog__code\">{{ lang.code | uppercase }}</span>\n <button\n edsButton\n [edsPrimary]=\"lang.code === config?.selectedLanguage\"\n [edsNeutral]=\"lang.code !== config?.selectedLanguage\"\n (click)=\"selectLanguage(lang)\">\n <span [attr.lang]=\"lang.code\">{{ lang.label }}</span>\n </button>\n </div>\n }\n </div>\n\n @if (nonEuLanguages().length > 0) {\n <h4 class=\"eds-language-dialog__section-title eds-language-dialog__section-title--additional\">Non-EU Languages</h4>\n <div class=\"eds-language-dialog__grid\">\n @for (lang of nonEuLanguages(); track lang.code) {\n <div class=\"eds-language-dialog__item\">\n <span class=\"eds-language-dialog__code\">{{ lang.code | uppercase }}</span>\n <button\n edsButton\n [edsPrimary]=\"lang.code === config?.selectedLanguage\"\n [edsNeutral]=\"lang.code !== config?.selectedLanguage\"\n (click)=\"selectLanguage(lang)\">\n <span [attr.lang]=\"lang.code\">{{ lang.label }}</span>\n </button>\n </div>\n }\n </div>\n }\n </div>\n `,\n styles: [`\n .eds-language-dialog {\n padding: var(--eds-sp-m);\n }\n .eds-language-dialog__section-title {\n font: var(--eds-f-label-m-semi-bold);\n margin-bottom: var(--eds-sp-s);\n }\n .eds-language-dialog__section-title--additional {\n margin-top: var(--eds-sp-l);\n }\n .eds-language-dialog__grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: var(--eds-sp-s);\n }\n .eds-language-dialog__item {\n display: flex;\n align-items: center;\n gap: var(--eds-sp-xs);\n }\n .eds-language-dialog__code {\n font-weight: 600;\n min-width: 2rem;\n }\n `],\n imports: [UpperCasePipe, ...EDS_BUTTON],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsLanguageSelectorDialog {\n config = inject<EdsLanguageSelectorDialogConfig>(EDS_DIALOG_COMPONENT_CONFIG, { optional: true });\n\n /** EU languages filtered from the provided list. */\n euLanguages = computed(() =>\n (this.config?.languages ?? []).filter(lang => EU_LANGUAGE_CODES.has(lang.code)),\n );\n\n /** Non-EU (additional) languages filtered from the provided list. */\n nonEuLanguages = computed(() =>\n (this.config?.languages ?? []).filter(lang => !EU_LANGUAGE_CODES.has(lang.code)),\n );\n\n private dialogService = inject(EdsDialogService);\n\n selectLanguage(lang: EdsLanguage): void {\n this.config?.onLanguageChange(lang.code);\n this.dialogService.closeDialog();\n }\n}\n","import { Component, input, output, signal, computed, ElementRef, inject, HostListener, Injector, booleanAttribute, afterNextRender } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { UpperCasePipe } from '@angular/common';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\nimport { EdsColorDirective } from '@eui/eds/shared';\nimport { EdsDialogService } from '@eui/eds/eds-dialog';\nimport { EdsLanguageSelectorDialog, EdsLanguageSelectorDialogConfig } from './eds-language-selector-dialog';\n\nexport interface EdsLanguage {\n /** Language code (e.g. 'en', 'fr', 'de'). */\n code: string;\n\n /** Display label (e.g. 'English', 'Français'). */\n label: string;\n}\n\n/** Threshold: when languages exceed this count, a dialog is shown instead of a dropdown. */\nconst DIALOG_THRESHOLD = 3;\n\n/** Minimum space (px) needed on the right for the dropdown to align left-to-right. */\nconst DROPDOWN_MIN_WIDTH = 160;\n\n@Component({\n selector: 'eds-language-selector',\n imports: [UpperCasePipe, ...EDS_ICON],\n templateUrl: './eds-language-selector.html',\n styleUrl: './eds-language-selector.scss',\n host: {\n '[class]': 'hostClasses()',\n },\n hostDirectives: [\n {\n directive: EdsColorDirective,\n inputs: [\n 'edsBrand',\n 'edsNeutral',\n 'edsColorVariant',\n ],\n },\n ],\n})\nexport class EdsLanguageSelector {\n private colorDirective = inject(EdsColorDirective);\n\n hostClasses = computed(() => {\n const color = this.colorDirective.getCssClass('eds-language-selector');\n return `eds-language-selector ${color}`.trim();\n });\n /** Available languages. */\n languages = input<EdsLanguage[]>([]);\n\n /** Currently selected language code. */\n selectedLanguage = input<string>('en');\n\n /** Aria label for accessibility. */\n ariaLabel = input<string>('');\n\n /** Whether the dropdown aligns to the right edge (opens towards left). Can be set explicitly or computed from viewport. */\n isRightAligned = input(false, { transform: booleanAttribute });\n\n /** When true, the trigger displays a globe icon with the language code in a borderless button layout. */\n hasIconLayout = input(false, { transform: booleanAttribute });\n\n /** Emits the selected language code when user picks a language. */\n languageChange = output<string>();\n\n isOpen = signal(false);\n\n /** Index of the currently focused item in the dropdown. */\n focusedIndex = signal(-1);\n\n /** Internal override for viewport-based alignment (only used when isRightAligned is not explicitly set). */\n protected dropdownAlignRight = signal(false);\n\n /** Resolved alignment: explicit input takes priority, then viewport-based. */\n protected resolvedAlignRight = computed(() => this.isRightAligned() || this.dropdownAlignRight());\n\n /** The id of the currently active descendant for aria-activedescendant. */\n protected activeDescendantId = computed(() => {\n const idx = this.focusedIndex();\n const langs = this.languages();\n if (idx >= 0 && idx < langs.length) {\n return 'eds-lang-option-' + langs[idx].code;\n }\n return null;\n });\n\n currentLanguage = computed(() => {\n const langs = this.languages();\n const selected = this.selectedLanguage();\n return langs.find(l => l.code === selected) ?? langs[0] ?? { code: 'en', label: 'EN' };\n });\n\n computedAriaLabel = computed(() => {\n if (this.ariaLabel()) return this.ariaLabel();\n return `Change Language - Current: ${this.currentLanguage().label}`;\n });\n\n /** Whether the language list should open in a dialog (more than 3 languages). */\n useDialog = computed(() => this.languages().length > DIALOG_THRESHOLD);\n\n private el = inject(ElementRef);\n private document = inject(DOCUMENT);\n private dialogService = inject(EdsDialogService);\n private injector = inject(Injector);\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (this.isOpen() && !this.el.nativeElement.contains(event.target)) {\n this.closeDropdown();\n }\n }\n\n toggle(): void {\n if (this.useDialog()) {\n this.openLanguageDialog();\n } else {\n if (!this.isOpen()) {\n this.openDropdown();\n } else {\n this.closeDropdown();\n }\n }\n }\n\n selectLanguage(lang: EdsLanguage): void {\n this.closeDropdown();\n this.languageChange.emit(lang.code);\n }\n\n /** Keyboard handler on the toggle button. */\n onToggleKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n if (!this.isOpen() && !this.useDialog()) {\n this.openDropdown();\n }\n }\n }\n\n /** Keyboard handler on the dropdown list. */\n onDropdownKeydown(event: KeyboardEvent): void {\n const langs = this.languages();\n const idx = this.focusedIndex();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.focusedIndex.set(idx < langs.length - 1 ? idx + 1 : 0);\n this.scrollFocusedIntoView();\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n this.focusedIndex.set(idx > 0 ? idx - 1 : langs.length - 1);\n this.scrollFocusedIntoView();\n break;\n\n case 'Home':\n event.preventDefault();\n this.focusedIndex.set(0);\n this.scrollFocusedIntoView();\n break;\n\n case 'End':\n event.preventDefault();\n this.focusedIndex.set(langs.length - 1);\n this.scrollFocusedIntoView();\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (idx >= 0 && idx < langs.length) {\n this.selectLanguage(langs[idx]);\n }\n break;\n\n case 'Escape':\n case 'Tab':\n this.closeDropdown();\n break;\n }\n }\n\n private openDropdown(): void {\n this.computeDropdownAlignment();\n // Set initial focus to the currently selected language, or first item\n const langs = this.languages();\n const selectedIdx = langs.findIndex(l => l.code === this.selectedLanguage());\n this.focusedIndex.set(selectedIdx >= 0 ? selectedIdx : 0);\n this.isOpen.set(true);\n // Focus the active option after render\n afterNextRender(() => {\n this.scrollFocusedIntoView();\n }, { injector: this.injector });\n }\n\n private closeDropdown(): void {\n this.isOpen.set(false);\n this.focusedIndex.set(-1);\n // Return focus to the toggle button\n const toggle = this.el.nativeElement.querySelector('.language-toggle') as HTMLElement;\n toggle?.focus();\n }\n\n private scrollFocusedIntoView(): void {\n const idx = this.focusedIndex();\n const langs = this.languages();\n if (idx >= 0 && idx < langs.length) {\n const optionEl = this.el.nativeElement.querySelector(`#eds-lang-option-${langs[idx].code}`) as HTMLElement;\n optionEl?.focus();\n }\n }\n\n private computeDropdownAlignment(): void {\n const hostRect = this.el.nativeElement.getBoundingClientRect();\n const viewportWidth = this.document.documentElement.clientWidth;\n const spaceOnRight = viewportWidth - hostRect.left;\n this.dropdownAlignRight.set(spaceOnRight < DROPDOWN_MIN_WIDTH);\n }\n\n private openLanguageDialog(): void {\n const config: EdsLanguageSelectorDialogConfig = {\n languages: this.languages(),\n selectedLanguage: this.selectedLanguage(),\n onLanguageChange: (code: string) => {\n this.languageChange.emit(code);\n },\n };\n\n this.dialogService.openDialog({\n title: 'Select Language',\n hasCloseButton: true,\n hasClosedOnEscape: true,\n hasClosedOnClickOutside: true,\n width: '480px',\n bodyComponent: { component: EdsLanguageSelectorDialog, config },\n }, this.injector);\n }\n}\n","<button\n type=\"button\"\n class=\"language-toggle\"\n [class.language-toggle--icon-layout]=\"hasIconLayout()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n (keydown)=\"onToggleKeydown($event)\">\n @if (hasIconLayout()) {\n <eds-icon icon=\"globe\" size=\"s\" />\n <span class=\"language-code\">{{ currentLanguage().code | uppercase }}</span>\n } @else {\n <span class=\"language-code\">{{ currentLanguage().code | uppercase }}</span>\n <eds-icon [icon]=\"isOpen() ? 'caret-up' : 'caret-down'\" size=\"s\" />\n }\n</button>\n\n@if (isOpen()) {\n <ul\n class=\"language-dropdown\"\n [class.language-dropdown--align-right]=\"resolvedAlignRight()\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n (keydown)=\"onDropdownKeydown($event)\">\n @for (lang of languages(); track lang.code; let i = $index) {\n <li\n class=\"language-option\"\n [class.selected]=\"lang.code === selectedLanguage()\"\n [class.focused]=\"i === focusedIndex()\"\n role=\"option\"\n [id]=\"'eds-lang-option-' + lang.code\"\n [attr.aria-selected]=\"lang.code === selectedLanguage()\"\n [tabindex]=\"i === focusedIndex() ? 0 : -1\"\n (click)=\"selectLanguage(lang)\">\n <span class=\"option-code\">{{ lang.code | uppercase }}</span>\n <span class=\"option-label\">{{ lang.label }}</span>\n </li>\n }\n </ul>\n}\n","import { EdsLanguageSelector } from './eds-language-selector';\nimport { EdsLanguageSelectorDialog } from './eds-language-selector-dialog';\n\nexport { EdsLanguageSelector };\nexport { EdsLanguageSelectorDialog, EdsLanguageSelectorDialogConfig } from './eds-language-selector-dialog';\nexport { EdsLanguage } from './eds-language-selector';\n\n/** Convenience array for importing eds-language-selector. */\nexport const EDS_LANGUAGE_SELECTOR = [EdsLanguageSelector, EdsLanguageSelectorDialog] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"eui-eds-eds-language-selector.mjs","sources":["../../eds-language-selector/eds-language-selector-dialog.ts","../../eds-language-selector/eds-language-selector.ts","../../eds-language-selector/eds-language-selector.html","../../eds-language-selector/index.ts","../../eds-language-selector/eui-eds-eds-language-selector.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, inject, computed } from '@angular/core';\nimport { UpperCasePipe } from '@angular/common';\nimport { EDS_BUTTON } from '@eui/eds/eds-button';\nimport { EDS_DIALOG_COMPONENT_CONFIG } from '@eui/eds/eds-dialog';\nimport { EdsDialogService } from '@eui/eds/eds-dialog';\nimport { EdsLanguage } from './eds-language-selector';\n\n/** Official EU language codes. */\nconst EU_LANGUAGE_CODES = new Set([\n 'bg', 'cs', 'da', 'de', 'et', 'el', 'en', 'es', 'fr', 'ga',\n 'hr', 'it', 'lv', 'lt', 'hu', 'mt', 'nl', 'pl', 'pt', 'ro',\n 'sk', 'sl', 'fi', 'sv',\n]);\n\nexport interface EdsLanguageSelectorDialogConfig {\n /** All available languages. */\n languages: EdsLanguage[];\n /** Currently selected language code. */\n selectedLanguage: string;\n /** Callback when a language is selected. */\n onLanguageChange: (code: string) => void;\n}\n\n/**\n * Dialog content component for the language selector.\n * Displays EU and non-EU languages in separate grid sections.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'eds-language-selector-dialog',\n template: `\n <div class=\"eds-language-dialog\">\n @if (nonEuLanguages().length > 0) {\n <h4 class=\"eds-language-dialog__section-title\">EU Languages</h4>\n }\n <div class=\"eds-language-dialog__grid\">\n @for (lang of euLanguages(); track lang.code) {\n <div class=\"eds-language-dialog__item\">\n <span class=\"eds-language-dialog__code\">{{ lang.code | uppercase }}</span>\n <button\n edsButton\n [edsPrimary]=\"lang.code === config?.selectedLanguage\"\n [edsNeutral]=\"lang.code !== config?.selectedLanguage\"\n (click)=\"selectLanguage(lang)\">\n <span [attr.lang]=\"lang.code\">{{ lang.label }}</span>\n </button>\n </div>\n }\n </div>\n\n @if (nonEuLanguages().length > 0) {\n <h4 class=\"eds-language-dialog__section-title eds-language-dialog__section-title--additional\">Non-EU Languages</h4>\n <div class=\"eds-language-dialog__grid\">\n @for (lang of nonEuLanguages(); track lang.code) {\n <div class=\"eds-language-dialog__item\">\n <span class=\"eds-language-dialog__code\">{{ lang.code | uppercase }}</span>\n <button\n edsButton\n [edsPrimary]=\"lang.code === config?.selectedLanguage\"\n [edsNeutral]=\"lang.code !== config?.selectedLanguage\"\n (click)=\"selectLanguage(lang)\">\n <span [attr.lang]=\"lang.code\">{{ lang.label }}</span>\n </button>\n </div>\n }\n </div>\n }\n </div>\n `,\n styles: [`\n .eds-language-dialog {\n padding: var(--eds-sp-m);\n }\n .eds-language-dialog__section-title {\n font: var(--eds-f-label-m-semibold);\n margin-bottom: var(--eds-sp-s);\n }\n .eds-language-dialog__section-title--additional {\n margin-top: var(--eds-sp-l);\n }\n .eds-language-dialog__grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: var(--eds-sp-s);\n }\n .eds-language-dialog__item {\n display: flex;\n align-items: center;\n gap: var(--eds-sp-xs);\n }\n .eds-language-dialog__code {\n font-weight: 600;\n min-width: 2rem;\n }\n `],\n imports: [UpperCasePipe, ...EDS_BUTTON],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsLanguageSelectorDialog {\n config = inject<EdsLanguageSelectorDialogConfig>(EDS_DIALOG_COMPONENT_CONFIG, { optional: true });\n\n /** EU languages filtered from the provided list. */\n euLanguages = computed(() =>\n (this.config?.languages ?? []).filter(lang => EU_LANGUAGE_CODES.has(lang.code)),\n );\n\n /** Non-EU (additional) languages filtered from the provided list. */\n nonEuLanguages = computed(() =>\n (this.config?.languages ?? []).filter(lang => !EU_LANGUAGE_CODES.has(lang.code)),\n );\n\n private dialogService = inject(EdsDialogService);\n\n selectLanguage(lang: EdsLanguage): void {\n this.config?.onLanguageChange(lang.code);\n this.dialogService.closeDialog();\n }\n}\n","import { Component, input, output, signal, computed, ElementRef, inject, HostListener, Injector, booleanAttribute, afterNextRender } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { UpperCasePipe } from '@angular/common';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\nimport { EdsColorDirective } from '@eui/eds/shared';\nimport { EdsDialogService } from '@eui/eds/eds-dialog';\nimport { EdsLanguageSelectorDialog, EdsLanguageSelectorDialogConfig } from './eds-language-selector-dialog';\n\nexport interface EdsLanguage {\n /** Language code (e.g. 'en', 'fr', 'de'). */\n code: string;\n\n /** Display label (e.g. 'English', 'Français'). */\n label: string;\n}\n\n/** Threshold: when languages exceed this count, a dialog is shown instead of a dropdown. */\nconst DIALOG_THRESHOLD = 3;\n\n/** Minimum space (px) needed on the right for the dropdown to align left-to-right. */\nconst DROPDOWN_MIN_WIDTH = 160;\n\n@Component({\n selector: 'eds-language-selector',\n imports: [UpperCasePipe, ...EDS_ICON],\n templateUrl: './eds-language-selector.html',\n styleUrl: './eds-language-selector.scss',\n host: {\n '[class]': 'hostClasses()',\n },\n hostDirectives: [\n {\n directive: EdsColorDirective,\n inputs: [\n 'edsBrand',\n 'edsNeutral',\n 'edsColorVariant',\n ],\n },\n ],\n})\nexport class EdsLanguageSelector {\n private colorDirective = inject(EdsColorDirective);\n\n hostClasses = computed(() => {\n const color = this.colorDirective.getCssClass('eds-language-selector');\n return `eds-language-selector ${color}`.trim();\n });\n /** Available languages. */\n languages = input<EdsLanguage[]>([]);\n\n /** Currently selected language code. */\n selectedLanguage = input<string>('en');\n\n /** Aria label for accessibility. */\n ariaLabel = input<string>('');\n\n /** Whether the dropdown aligns to the right edge (opens towards left). Can be set explicitly or computed from viewport. */\n isRightAligned = input(false, { transform: booleanAttribute });\n\n /** When true, the trigger displays a globe icon with the language code in a borderless button layout. */\n hasIconLayout = input(false, { transform: booleanAttribute });\n\n /** Emits the selected language code when user picks a language. */\n languageChange = output<string>();\n\n isOpen = signal(false);\n\n /** Index of the currently focused item in the dropdown. */\n focusedIndex = signal(-1);\n\n /** Internal override for viewport-based alignment (only used when isRightAligned is not explicitly set). */\n protected dropdownAlignRight = signal(false);\n\n /** Resolved alignment: explicit input takes priority, then viewport-based. */\n protected resolvedAlignRight = computed(() => this.isRightAligned() || this.dropdownAlignRight());\n\n /** The id of the currently active descendant for aria-activedescendant. */\n protected activeDescendantId = computed(() => {\n const idx = this.focusedIndex();\n const langs = this.languages();\n if (idx >= 0 && idx < langs.length) {\n return 'eds-lang-option-' + langs[idx].code;\n }\n return null;\n });\n\n currentLanguage = computed(() => {\n const langs = this.languages();\n const selected = this.selectedLanguage();\n return langs.find(l => l.code === selected) ?? langs[0] ?? { code: 'en', label: 'EN' };\n });\n\n computedAriaLabel = computed(() => {\n if (this.ariaLabel()) return this.ariaLabel();\n return `Change Language - Current: ${this.currentLanguage().label}`;\n });\n\n /** Whether the language list should open in a dialog (more than 3 languages). */\n useDialog = computed(() => this.languages().length > DIALOG_THRESHOLD);\n\n private el = inject(ElementRef);\n private document = inject(DOCUMENT);\n private dialogService = inject(EdsDialogService);\n private injector = inject(Injector);\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (this.isOpen() && !this.el.nativeElement.contains(event.target)) {\n this.closeDropdown();\n }\n }\n\n toggle(): void {\n if (this.useDialog()) {\n this.openLanguageDialog();\n } else {\n if (!this.isOpen()) {\n this.openDropdown();\n } else {\n this.closeDropdown();\n }\n }\n }\n\n selectLanguage(lang: EdsLanguage): void {\n this.closeDropdown();\n this.languageChange.emit(lang.code);\n }\n\n /** Keyboard handler on the toggle button. */\n onToggleKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n if (!this.isOpen() && !this.useDialog()) {\n this.openDropdown();\n }\n }\n }\n\n /** Keyboard handler on the dropdown list. */\n onDropdownKeydown(event: KeyboardEvent): void {\n const langs = this.languages();\n const idx = this.focusedIndex();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.focusedIndex.set(idx < langs.length - 1 ? idx + 1 : 0);\n this.scrollFocusedIntoView();\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n this.focusedIndex.set(idx > 0 ? idx - 1 : langs.length - 1);\n this.scrollFocusedIntoView();\n break;\n\n case 'Home':\n event.preventDefault();\n this.focusedIndex.set(0);\n this.scrollFocusedIntoView();\n break;\n\n case 'End':\n event.preventDefault();\n this.focusedIndex.set(langs.length - 1);\n this.scrollFocusedIntoView();\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (idx >= 0 && idx < langs.length) {\n this.selectLanguage(langs[idx]);\n }\n break;\n\n case 'Escape':\n case 'Tab':\n this.closeDropdown();\n break;\n }\n }\n\n private openDropdown(): void {\n this.computeDropdownAlignment();\n // Set initial focus to the currently selected language, or first item\n const langs = this.languages();\n const selectedIdx = langs.findIndex(l => l.code === this.selectedLanguage());\n this.focusedIndex.set(selectedIdx >= 0 ? selectedIdx : 0);\n this.isOpen.set(true);\n // Focus the active option after render\n afterNextRender(() => {\n this.scrollFocusedIntoView();\n }, { injector: this.injector });\n }\n\n private closeDropdown(): void {\n this.isOpen.set(false);\n this.focusedIndex.set(-1);\n // Return focus to the toggle button\n const toggle = this.el.nativeElement.querySelector('.language-toggle') as HTMLElement;\n toggle?.focus();\n }\n\n private scrollFocusedIntoView(): void {\n const idx = this.focusedIndex();\n const langs = this.languages();\n if (idx >= 0 && idx < langs.length) {\n const optionEl = this.el.nativeElement.querySelector(`#eds-lang-option-${langs[idx].code}`) as HTMLElement;\n optionEl?.focus();\n }\n }\n\n private computeDropdownAlignment(): void {\n const hostRect = this.el.nativeElement.getBoundingClientRect();\n const viewportWidth = this.document.documentElement.clientWidth;\n const spaceOnRight = viewportWidth - hostRect.left;\n this.dropdownAlignRight.set(spaceOnRight < DROPDOWN_MIN_WIDTH);\n }\n\n private openLanguageDialog(): void {\n const config: EdsLanguageSelectorDialogConfig = {\n languages: this.languages(),\n selectedLanguage: this.selectedLanguage(),\n onLanguageChange: (code: string) => {\n this.languageChange.emit(code);\n },\n };\n\n this.dialogService.openDialog({\n title: 'Select Language',\n hasCloseButton: true,\n hasClosedOnEscape: true,\n hasClosedOnClickOutside: true,\n width: '480px',\n bodyComponent: { component: EdsLanguageSelectorDialog, config },\n }, this.injector);\n }\n}\n","<button\n type=\"button\"\n class=\"language-toggle\"\n [class.language-toggle--icon-layout]=\"hasIconLayout()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n (keydown)=\"onToggleKeydown($event)\">\n @if (hasIconLayout()) {\n <eds-icon icon=\"globe\" size=\"s\" />\n <span class=\"language-code\">{{ currentLanguage().code | uppercase }}</span>\n } @else {\n <span class=\"language-code\">{{ currentLanguage().code | uppercase }}</span>\n <eds-icon [icon]=\"isOpen() ? 'caret-up' : 'caret-down'\" size=\"s\" />\n }\n</button>\n\n@if (isOpen()) {\n <ul\n class=\"language-dropdown\"\n [class.language-dropdown--align-right]=\"resolvedAlignRight()\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n (keydown)=\"onDropdownKeydown($event)\">\n @for (lang of languages(); track lang.code; let i = $index) {\n <li\n class=\"language-option\"\n [class.selected]=\"lang.code === selectedLanguage()\"\n [class.focused]=\"i === focusedIndex()\"\n role=\"option\"\n [id]=\"'eds-lang-option-' + lang.code\"\n [attr.aria-selected]=\"lang.code === selectedLanguage()\"\n [tabindex]=\"i === focusedIndex() ? 0 : -1\"\n (click)=\"selectLanguage(lang)\">\n <span class=\"option-code\">{{ lang.code | uppercase }}</span>\n <span class=\"option-label\">{{ lang.label }}</span>\n </li>\n }\n </ul>\n}\n","import { EdsLanguageSelector } from './eds-language-selector';\nimport { EdsLanguageSelectorDialog } from './eds-language-selector-dialog';\n\nexport { EdsLanguageSelector };\nexport { EdsLanguageSelectorDialog, EdsLanguageSelectorDialogConfig } from './eds-language-selector-dialog';\nexport { EdsLanguage } from './eds-language-selector';\n\n/** Convenience array for importing eds-language-selector. */\nexport const EDS_LANGUAGE_SELECTOR = [EdsLanguageSelector, EdsLanguageSelectorDialog] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -414,11 +414,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
414
414
  */
415
415
  class EdsListItemEnd {
416
416
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsListItemEnd, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
417
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.2", type: EdsListItemEnd, isStandalone: true, selector: "eds-list-item-end", host: { classAttribute: "eds-list-item-end" }, ngImport: i0, template: '<ng-content/>', isInline: true, styles: [".eui-21 :host{display:flex;align-items:center;flex-shrink:0;font:var(--eds-f-label-s-semi-bold);color:var(--eds-c-foreground-default);white-space:nowrap}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
417
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.2", type: EdsListItemEnd, isStandalone: true, selector: "eds-list-item-end", host: { classAttribute: "eds-list-item-end" }, ngImport: i0, template: '<ng-content/>', isInline: true, styles: [".eui-21 :host{display:flex;align-items:center;flex-shrink:0;font:var(--eds-f-label-s-semibold);color:var(--eds-c-foreground-default);white-space:nowrap}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
418
418
  }
419
419
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsListItemEnd, decorators: [{
420
420
  type: Component,
421
- args: [{ selector: 'eds-list-item-end', template: '<ng-content/>', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'eds-list-item-end' }, styles: [".eui-21 :host{display:flex;align-items:center;flex-shrink:0;font:var(--eds-f-label-s-semi-bold);color:var(--eds-c-foreground-default);white-space:nowrap}\n"] }]
421
+ args: [{ selector: 'eds-list-item-end', template: '<ng-content/>', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'eds-list-item-end' }, styles: [".eui-21 :host{display:flex;align-items:center;flex-shrink:0;font:var(--eds-f-label-s-semibold);color:var(--eds-c-foreground-default);white-space:nowrap}\n"] }]
422
422
  }] });
423
423
 
424
424
  /** Convenience array for importing all eds-list components. */
@@ -1 +1 @@
1
- {"version":3,"file":"eui-eds-eds-list.mjs","sources":["../../eds-list/eds-list-item.ts","../../eds-list/eds-list.ts","../../eds-list/eds-list-item-start.ts","../../eds-list/eds-list-item-label.ts","../../eds-list/eds-list-item-content.ts","../../eds-list/eds-list-item-end.ts","../../eds-list/index.ts","../../eds-list/eui-eds-eds-list.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n linkedSignal,\n computed,\n ElementRef,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { FocusableOption, Highlightable } from '@angular/cdk/a11y';\n\nimport { EdsColorDirective } from '@eui/eds/shared';\nimport { EdsList } from './eds-list';\n\n/**\n * A single row item in an eds-list.\n *\n * In presentational mode (default): content is projected in order via named slots\n * (start → label → content → end).\n *\n * In interactive mode (when parent eds-list has edsRole set): implements\n * FocusableOption and Highlightable for keyboard navigation. Gains focus, active/disabled\n * states, color variants, and computed ARIA roles.\n *\n * @usageNotes\n * ### Presentational\n * ```html\n * <eds-list-item>\n * <eds-list-item-start><eds-icon icon=\"globe\" edsSizeS /></eds-list-item-start>\n * <eds-list-item-label>Google</eds-list-item-label>\n * <eds-list-item-content><eds-progress-bar edsSizeXS [progress]=\"79\" /></eds-list-item-content>\n * <eds-list-item-end>4.7K</eds-list-item-end>\n * </eds-list-item>\n * ```\n *\n * ### Interactive\n * ```html\n * <eds-list-item [isActive]=\"true\" edsInfo (click)=\"onSelect()\">\n * Active item with color\n * </eds-list-item>\n * ```\n */\n@Component({\n selector: 'eds-list-item',\n template: `\n <ng-content select=\"eds-list-item-start\" />\n <ng-content select=\"eds-list-item-label\" />\n <ng-content select=\"eds-list-item-content\" />\n <ng-content select=\"eds-list-item-end\" />\n <ng-content />\n `,\n styleUrl: './eds-list-item.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: EdsColorDirective,\n inputs: [\n 'edsNeutral',\n 'edsInfo',\n 'edsSuccess',\n 'edsWarning',\n 'edsCritical',\n 'edsColorVariant',\n ],\n },\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'itemRole()',\n '[attr.aria-selected]': 'ariaSelected()',\n '[attr.aria-disabled]': 'edsDisabled() || null',\n '[attr.data-e2e]': '\"eds-list-item\"',\n '[attr.tabindex]': 'computedTabindex()',\n },\n})\nexport class EdsListItem implements FocusableOption, Highlightable {\n /**\n * Whether the list item is visually marked as active/selected.\n * In interactive mode, managed by FocusKeyManager.\n * @default false\n */\n isActive = input(false, { transform: booleanAttribute });\n\n /**\n * Internal active state linked to the input.\n * Used by FocusKeyManager to programmatically set/unset active styling.\n */\n isActiveState = linkedSignal(() => this.isActive());\n\n /**\n * Whether the list item is disabled.\n * @default false\n */\n edsDisabled = input(false, { transform: booleanAttribute });\n\n /**\n * Implements FocusableOption.disabled.\n */\n get disabled(): boolean {\n return this.edsDisabled();\n }\n\n elementRef = inject(ElementRef);\n\n protected colorDirective = inject(EdsColorDirective);\n private parentList = inject(EdsList, { optional: true });\n\n /** Focusable elements within this item for arrow-key rich content navigation. */\n focusableElements = computed(() => {\n const el = this.elementRef.nativeElement;\n return Array.from<Element>(el.querySelectorAll('a, button, [tabindex]:not([tabindex=\"-1\"])'));\n });\n\n /**\n * Whether the parent list is in interactive mode.\n */\n private isInteractive = computed(() => this.parentList?.isInteractiveMode?.() ?? false);\n\n /**\n * Derives the ARIA role from the parent list's role.\n * Returns null for presentational mode.\n */\n itemRole = computed(() => {\n const parentRole = this.parentList?.edsRole?.();\n if (!parentRole) return null;\n switch (parentRole) {\n case 'listbox': return 'option';\n case 'menu': return 'menuitem';\n case 'list': return 'listitem';\n default: return null;\n }\n });\n\n /**\n * aria-selected for listbox items.\n * APG requires aria-selected=\"false\" on non-selected options, not null.\n */\n ariaSelected = computed(() => {\n if (this.itemRole() === 'option') {\n return String(this.isActiveState());\n }\n return null;\n });\n\n /**\n * Tabindex: -1 in interactive mode (managed by FocusKeyManager), null in presentational mode.\n */\n computedTabindex = computed(() => {\n return this.isInteractive() ? '-1' : null;\n });\n\n /**\n * Computed host CSS classes.\n */\n hostClasses = computed(() => {\n const colorClass = this.colorDirective.getCssClass('eds-list-item');\n return [\n 'eds-list-item',\n colorClass,\n this.isInteractive() ? 'eds-list-item--interactive' : '',\n this.isActiveState() ? 'eds-list-item--active' : '',\n this.edsDisabled() ? 'eds-list-item--disabled' : '',\n ].join(' ').trim();\n });\n\n /**\n * Sets focus on the list item element.\n */\n public focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Programmatically triggers a click event.\n */\n public click(): void {\n this.elementRef.nativeElement.click();\n }\n\n /**\n * Applies active styling (called by FocusKeyManager).\n */\n public setActiveStyles(): void {\n this.isActiveState.set(true);\n }\n\n /**\n * Removes active styling (called by FocusKeyManager).\n */\n public setInactiveStyles(): void {\n this.isActiveState.set(false);\n }\n\n /**\n * Returns the text label of the item for type-ahead matching (FocusKeyManager).\n */\n public getLabel(): string {\n return this.elementRef.nativeElement.textContent?.trim() ?? '';\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n AfterContentInit,\n contentChildren,\n forwardRef,\n signal,\n input,\n computed,\n booleanAttribute,\n} from '@angular/core';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\n\nimport { EdsListItem } from './eds-list-item';\n\n/** Supported ARIA roles for interactive list mode. */\nexport type EdsListRole = 'listbox' | 'menu' | 'list';\n\n/**\n * Vertical list container. Contains `eds-list-item` children separated by dividers.\n *\n * Operates in two modes:\n * - **Presentational** (default): A visual list layout with no ARIA roles or keyboard navigation.\n * Ideal for dashboard metric lists, KPI cards, or simple data display.\n * - **Interactive** (when `edsRole` is set): Adds WAI-ARIA list semantics and FocusKeyManager\n * keyboard navigation. Items gain focus, active/disabled states, and color variants.\n *\n * @usageNotes\n * ### Presentational (default)\n * ```html\n * <eds-list>\n * <eds-list-item>\n * <eds-list-item-start><eds-icon icon=\"globe\" edsSizeS /></eds-list-item-start>\n * <eds-list-item-label>Google</eds-list-item-label>\n * <eds-list-item-end>4.7K</eds-list-item-end>\n * </eds-list-item>\n * </eds-list>\n * ```\n *\n * ### Interactive (listbox mode)\n * ```html\n * <eds-list edsRole=\"listbox\" ariaLabel=\"Options\">\n * <eds-list-item (click)=\"onSelect('a')\">Option A</eds-list-item>\n * <eds-list-item [isActive]=\"true\">Option B (active)</eds-list-item>\n * <eds-list-item edsDisabled>Option C (disabled)</eds-list-item>\n * </eds-list>\n * ```\n */\n@Component({\n selector: 'eds-list',\n template: '<ng-content/>',\n styleUrl: './eds-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': '\"eds-list\"',\n '[attr.role]': 'edsRole() || null',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.aria-orientation]': 'edsRole() ? \"vertical\" : null',\n '[attr.tabindex]': 'tabIndex()',\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class EdsList implements AfterContentInit {\n /**\n * ARIA role for the list container. When set, enables interactive mode\n * with keyboard navigation and focus management.\n * - 'listbox': interactive list with selectable options\n * - 'menu': action menu with menu items\n * - 'list': static semantic list (no keyboard navigation)\n * - undefined (default): presentational mode, no ARIA role\n */\n edsRole = input<EdsListRole | undefined>(undefined);\n\n /**\n * Accessible label for the list (used in interactive mode).\n */\n ariaLabel = input<string | undefined>(undefined);\n\n /**\n * Whether the list is in interactive mode (has keyboard navigation).\n * @default false\n */\n isInteractive = input(false, { transform: booleanAttribute });\n\n /**\n * Tabindex for the host element in interactive mode.\n */\n tabIndex = signal<string | null>(null);\n\n /**\n * Collection of all list item components that are children of this list.\n */\n items = contentChildren(forwardRef(() => EdsListItem));\n\n hostClasses = computed(() => {\n return [\n 'eds-list',\n this.isInteractiveMode() ? 'eds-list--interactive' : '',\n ].join(' ').trim();\n });\n\n /** Whether interactive mode is active (via edsRole or isInteractive input). */\n isInteractiveMode = computed(() => !!this.edsRole() || this.isInteractive());\n\n private focusKeyManager: FocusKeyManager<EdsListItem> | null = null;\n\n ngAfterContentInit(): void {\n if (this.isInteractiveMode()) {\n this.initFocusKeyManager();\n }\n }\n\n /**\n * Handles keyboard events for navigating the list (interactive mode only).\n * Implements WAI-ARIA APG Listbox keyboard interaction pattern.\n */\n protected onKeydown(event: KeyboardEvent): void {\n if (!this.focusKeyManager || !this.isInteractiveMode()) {\n return;\n }\n\n switch (event.key) {\n case 'Enter':\n case ' ': {\n event.preventDefault();\n if (this.focusKeyManager.activeItem) {\n this.focusKeyManager.activeItem.click();\n }\n break;\n }\n case 'Home': {\n event.preventDefault();\n this.focusKeyManager.setFirstItemActive();\n break;\n }\n case 'End': {\n event.preventDefault();\n this.focusKeyManager.setLastItemActive();\n break;\n }\n case 'ArrowRight':\n case 'ArrowLeft': {\n event.stopPropagation();\n const items = this.items();\n const activeItem = items.find(item =>\n item.elementRef.nativeElement.contains(document.activeElement),\n );\n if (activeItem?.focusableElements()?.length) {\n event.preventDefault();\n const directFocusables = activeItem.focusableElements();\n if (!directFocusables.length) break;\n const activeIndex = directFocusables\n .findIndex(el => el.contains(document.activeElement));\n this.focusKeyManager.setActiveItem(activeItem);\n this.navigateRichContent(event.key as 'ArrowRight' | 'ArrowLeft', activeIndex, directFocusables);\n }\n break;\n }\n default: {\n this.focusKeyManager.onKeydown(event);\n break;\n }\n }\n }\n\n private initFocusKeyManager(): void {\n const items = this.items();\n if (items.length > 0) {\n this.focusKeyManager = new FocusKeyManager(items)\n .withWrap()\n .withTypeAhead();\n this.tabIndex.set('0');\n\n // APG: When listbox receives focus, set focus on the selected or first option\n const selectedIndex = items.findIndex(item => item.isActiveState());\n if (selectedIndex >= 0) {\n this.focusKeyManager.setActiveItem(selectedIndex);\n }\n }\n }\n\n private navigateRichContent(direction: 'ArrowRight' | 'ArrowLeft', activeIndex: number, elements: Element[]): void {\n if (direction === 'ArrowRight') {\n const nextIndex = activeIndex + 1;\n if (nextIndex < elements.length) {\n (elements[nextIndex] as HTMLElement).focus();\n } else {\n this.focusKeyManager?.activeItem?.focus();\n }\n } else {\n if (activeIndex <= 0) {\n if (activeIndex === -1) {\n (elements[elements.length - 1] as HTMLElement).focus();\n } else {\n this.focusKeyManager?.activeItem?.focus();\n }\n } else {\n (elements[activeIndex - 1] as HTMLElement).focus();\n }\n }\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Leading slot for a list item. Typically contains an icon, avatar, or checkbox.\n */\n@Component({\n selector: 'eds-list-item-start',\n template: '<ng-content/>',\n styleUrl: './eds-list-item-start.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-list-item-start' },\n})\nexport class EdsListItemStart {}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Primary label slot for a list item. Displays the main text (flex: 1, truncatable).\n */\n@Component({\n selector: 'eds-list-item-label',\n template: '<ng-content/>',\n styleUrl: './eds-list-item-label.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-list-item-label' },\n})\nexport class EdsListItemLabel {}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Generic content slot for a list item. Use for additional content between the label and end slots\n * (e.g. progress bars, descriptions, badges).\n */\n@Component({\n selector: 'eds-list-item-content',\n template: '<ng-content/>',\n styleUrl: './eds-list-item-content.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-list-item-content' },\n})\nexport class EdsListItemContent {}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Trailing slot for a list item. Typically contains a value, badge, or action button.\n */\n@Component({\n selector: 'eds-list-item-end',\n template: '<ng-content/>',\n styleUrl: './eds-list-item-end.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-list-item-end' },\n})\nexport class EdsListItemEnd {}\n","import { EdsList } from './eds-list';\nimport { EdsListItem } from './eds-list-item';\nimport { EdsListItemStart } from './eds-list-item-start';\nimport { EdsListItemLabel } from './eds-list-item-label';\nimport { EdsListItemContent } from './eds-list-item-content';\nimport { EdsListItemEnd } from './eds-list-item-end';\n\nexport {\n EdsList,\n EdsListItem,\n EdsListItemStart,\n EdsListItemLabel,\n EdsListItemContent,\n EdsListItemEnd,\n};\n\nexport { EdsListRole } from './eds-list';\n\n/** Convenience array for importing all eds-list components. */\nexport const EDS_LIST = [\n EdsList,\n EdsListItem,\n EdsListItemStart,\n EdsListItemLabel,\n EdsListItemContent,\n EdsListItemEnd,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;MAkCU,WAAW,CAAA;AAjCxB,IAAA,WAAA,GAAA;AAkCI;;;;AAIG;QACH,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAExD;;;AAGG;QACH,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE;0FAAC;AAEnD;;;AAGG;QACH,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAS3D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAC5C,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGxD,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;YACxC,OAAO,KAAK,CAAC,IAAI,CAAU,EAAE,CAAC,gBAAgB,CAAC,4CAA4C,CAAC,CAAC;QACjG,CAAC;8FAAC;AAEF;;AAEG;AACK,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,iBAAiB,IAAI,IAAI,KAAK;0FAAC;AAEvF;;;AAGG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YACrB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI;AAC/C,YAAA,IAAI,CAAC,UAAU;AAAE,gBAAA,OAAO,IAAI;YAC5B,QAAQ,UAAU;AACd,gBAAA,KAAK,SAAS,EAAE,OAAO,QAAQ;AAC/B,gBAAA,KAAK,MAAM,EAAE,OAAO,UAAU;AAC9B,gBAAA,KAAK,MAAM,EAAE,OAAO,UAAU;AAC9B,gBAAA,SAAS,OAAO,IAAI;;QAE5B,CAAC;qFAAC;AAEF;;;AAGG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACzB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;AAC9B,gBAAA,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC;AACA,YAAA,OAAO,IAAI;QACf,CAAC;yFAAC;AAEF;;AAEG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,OAAO,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,GAAG,IAAI;QAC7C,CAAC;6FAAC;AAEF;;AAEG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;YACxB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,eAAe,CAAC;YACnE,OAAO;gBACH,eAAe;gBACf,UAAU;gBACV,IAAI,CAAC,aAAa,EAAE,GAAG,4BAA4B,GAAG,EAAE;gBACxD,IAAI,CAAC,aAAa,EAAE,GAAG,uBAAuB,GAAG,EAAE;gBACnD,IAAI,CAAC,WAAW,EAAE,GAAG,yBAAyB,GAAG,EAAE;AACtD,aAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;QACtB,CAAC;wFAAC;AAoCL,IAAA;AAxGG;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;IAC7B;AAiEA;;AAEG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;IACzC;AAEA;;AAEG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;IACzC;AAEA;;AAEG;IACI,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC;AAEA;;AAEG;IACI,iBAAiB,GAAA;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;IACjC;AAEA;;AAEG;IACI,QAAQ,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;IAClE;8GA3HS,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,WAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/BV;;;;;;AAMT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yyDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAyBQ,WAAW,EAAA,UAAA,EAAA,CAAA;kBAjCvB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,QAAA,EACf;;;;;;KAMT,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,cAAA,EAC/B;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,iBAAiB;AAC5B,4BAAA,MAAM,EAAE;gCACJ,YAAY;gCACZ,SAAS;gCACT,YAAY;gCACZ,YAAY;gCACZ,aAAa;gCACb,iBAAiB;AACpB,6BAAA;AACJ,yBAAA;qBACJ,EAAA,IAAA,EACK;AACF,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,aAAa,EAAE,YAAY;AAC3B,wBAAA,sBAAsB,EAAE,gBAAgB;AACxC,wBAAA,sBAAsB,EAAE,uBAAuB;AAC/C,wBAAA,iBAAiB,EAAE,iBAAiB;AACpC,wBAAA,iBAAiB,EAAE,oBAAoB;AAC1C,qBAAA,EAAA,MAAA,EAAA,CAAA,yyDAAA,CAAA,EAAA;;;ACxDL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;MAgBU,OAAO,CAAA;AAfpB,IAAA,WAAA,GAAA;AAgBI;;;;;;;AAOG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAA0B,SAAS;oFAAC;AAEnD;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAqB,SAAS;sFAAC;AAEhD;;;AAGG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,KAAK,qFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE7D;;AAEG;QACH,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAgB,IAAI;qFAAC;AAEtC;;AAEG;QACH,IAAA,CAAA,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,WAAW,CAAC;kFAAC;AAEtD,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;YACxB,OAAO;gBACH,UAAU;gBACV,IAAI,CAAC,iBAAiB,EAAE,GAAG,uBAAuB,GAAG,EAAE;AAC1D,aAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;QACtB,CAAC;wFAAC;;AAGF,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;8FAAC;QAEpE,IAAA,CAAA,eAAe,GAAwC,IAAI;AAiGtE,IAAA;IA/FG,kBAAkB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC1B,IAAI,CAAC,mBAAmB,EAAE;QAC9B;IACJ;AAEA;;;AAGG;AACO,IAAA,SAAS,CAAC,KAAoB,EAAA;QACpC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YACpD;QACJ;AAEA,QAAA,QAAQ,KAAK,CAAC,GAAG;AACb,YAAA,KAAK,OAAO;YACZ,KAAK,GAAG,EAAE;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;AACjC,oBAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE;gBAC3C;gBACA;YACJ;YACA,KAAK,MAAM,EAAE;gBACT,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE;gBACzC;YACJ;YACA,KAAK,KAAK,EAAE;gBACR,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE;gBACxC;YACJ;AACA,YAAA,KAAK,YAAY;YACjB,KAAK,WAAW,EAAE;gBACd,KAAK,CAAC,eAAe,EAAE;AACvB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;gBAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAC9B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CACjE;AACD,gBAAA,IAAI,UAAU,EAAE,iBAAiB,EAAE,EAAE,MAAM,EAAE;oBACzC,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,iBAAiB,EAAE;oBACvD,IAAI,CAAC,gBAAgB,CAAC,MAAM;wBAAE;oBAC9B,MAAM,WAAW,GAAG;AACf,yBAAA,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACzD,oBAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,UAAU,CAAC;oBAC9C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAiC,EAAE,WAAW,EAAE,gBAAgB,CAAC;gBACpG;gBACA;YACJ;YACA,SAAS;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC;gBACrC;YACJ;;IAER;IAEQ,mBAAmB,GAAA;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAClB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,KAAK;AAC3C,iBAAA,QAAQ;AACR,iBAAA,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;;AAGtB,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACnE,YAAA,IAAI,aAAa,IAAI,CAAC,EAAE;AACpB,gBAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC;YACrD;QACJ;IACJ;AAEQ,IAAA,mBAAmB,CAAC,SAAqC,EAAE,WAAmB,EAAE,QAAmB,EAAA;AACvG,QAAA,IAAI,SAAS,KAAK,YAAY,EAAE;AAC5B,YAAA,MAAM,SAAS,GAAG,WAAW,GAAG,CAAC;AACjC,YAAA,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE;AAC5B,gBAAA,QAAQ,CAAC,SAAS,CAAiB,CAAC,KAAK,EAAE;YAChD;iBAAO;AACH,gBAAA,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE;YAC7C;QACJ;aAAO;AACH,YAAA,IAAI,WAAW,IAAI,CAAC,EAAE;AAClB,gBAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;oBACnB,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAiB,CAAC,KAAK,EAAE;gBAC1D;qBAAO;AACH,oBAAA,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE;gBAC7C;YACJ;iBAAO;gBACF,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAiB,CAAC,KAAK,EAAE;YACtD;QACJ;IACJ;8GA1IS,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MA8ByB,WAAW,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3C1C,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kWAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAahB,OAAO,EAAA,UAAA,EAAA,CAAA;kBAfnB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,YACV,eAAe,EAAA,eAAA,EAER,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,iBAAiB,EAAE,YAAY;AAC/B,wBAAA,aAAa,EAAE,mBAAmB;AAClC,wBAAA,mBAAmB,EAAE,qBAAqB;AAC1C,wBAAA,yBAAyB,EAAE,+BAA+B;AAC1D,wBAAA,iBAAiB,EAAE,YAAY;AAC/B,wBAAA,WAAW,EAAE,mBAAmB;AACnC,qBAAA,EAAA,MAAA,EAAA,CAAA,kWAAA,CAAA,EAAA;AAgCuB,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,WAAW,CAAC,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC3FzD;;AAEG;MAQU,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,gIALf,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACI,qBAAqB,EAAA,QAAA,EACrB,eAAe,EAAA,eAAA,EAER,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAA,MAAA,EAAA,CAAA,uFAAA,CAAA,EAAA;;;ACR1C;;AAEG;MAQU,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,gIALf,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4IAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACI,qBAAqB,EAAA,QAAA,EACrB,eAAe,EAAA,eAAA,EAER,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAA,MAAA,EAAA,CAAA,4IAAA,CAAA,EAAA;;;ACR1C;;;AAGG;MAQU,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,oIALjB,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKhB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;+BACI,uBAAuB,EAAA,QAAA,EACvB,eAAe,EAAA,eAAA,EAER,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAA,MAAA,EAAA,CAAA,qEAAA,CAAA,EAAA;;;ACT5C;;AAEG;MAQU,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,4HALb,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6JAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKhB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;+BACI,mBAAmB,EAAA,QAAA,EACnB,eAAe,EAAA,eAAA,EAER,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAA,MAAA,EAAA,CAAA,6JAAA,CAAA,EAAA;;;ACQxC;AACO,MAAM,QAAQ,GAAG;IACpB,OAAO;IACP,WAAW;IACX,gBAAgB;IAChB,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;;;ACzBlB;;AAEG;;;;"}
1
+ {"version":3,"file":"eui-eds-eds-list.mjs","sources":["../../eds-list/eds-list-item.ts","../../eds-list/eds-list.ts","../../eds-list/eds-list-item-start.ts","../../eds-list/eds-list-item-label.ts","../../eds-list/eds-list-item-content.ts","../../eds-list/eds-list-item-end.ts","../../eds-list/index.ts","../../eds-list/eui-eds-eds-list.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n linkedSignal,\n computed,\n ElementRef,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { FocusableOption, Highlightable } from '@angular/cdk/a11y';\n\nimport { EdsColorDirective } from '@eui/eds/shared';\nimport { EdsList } from './eds-list';\n\n/**\n * A single row item in an eds-list.\n *\n * In presentational mode (default): content is projected in order via named slots\n * (start → label → content → end).\n *\n * In interactive mode (when parent eds-list has edsRole set): implements\n * FocusableOption and Highlightable for keyboard navigation. Gains focus, active/disabled\n * states, color variants, and computed ARIA roles.\n *\n * @usageNotes\n * ### Presentational\n * ```html\n * <eds-list-item>\n * <eds-list-item-start><eds-icon icon=\"globe\" edsSizeS /></eds-list-item-start>\n * <eds-list-item-label>Google</eds-list-item-label>\n * <eds-list-item-content><eds-progress-bar edsSizeXS [progress]=\"79\" /></eds-list-item-content>\n * <eds-list-item-end>4.7K</eds-list-item-end>\n * </eds-list-item>\n * ```\n *\n * ### Interactive\n * ```html\n * <eds-list-item [isActive]=\"true\" edsInfo (click)=\"onSelect()\">\n * Active item with color\n * </eds-list-item>\n * ```\n */\n@Component({\n selector: 'eds-list-item',\n template: `\n <ng-content select=\"eds-list-item-start\" />\n <ng-content select=\"eds-list-item-label\" />\n <ng-content select=\"eds-list-item-content\" />\n <ng-content select=\"eds-list-item-end\" />\n <ng-content />\n `,\n styleUrl: './eds-list-item.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: EdsColorDirective,\n inputs: [\n 'edsNeutral',\n 'edsInfo',\n 'edsSuccess',\n 'edsWarning',\n 'edsCritical',\n 'edsColorVariant',\n ],\n },\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'itemRole()',\n '[attr.aria-selected]': 'ariaSelected()',\n '[attr.aria-disabled]': 'edsDisabled() || null',\n '[attr.data-e2e]': '\"eds-list-item\"',\n '[attr.tabindex]': 'computedTabindex()',\n },\n})\nexport class EdsListItem implements FocusableOption, Highlightable {\n /**\n * Whether the list item is visually marked as active/selected.\n * In interactive mode, managed by FocusKeyManager.\n * @default false\n */\n isActive = input(false, { transform: booleanAttribute });\n\n /**\n * Internal active state linked to the input.\n * Used by FocusKeyManager to programmatically set/unset active styling.\n */\n isActiveState = linkedSignal(() => this.isActive());\n\n /**\n * Whether the list item is disabled.\n * @default false\n */\n edsDisabled = input(false, { transform: booleanAttribute });\n\n /**\n * Implements FocusableOption.disabled.\n */\n get disabled(): boolean {\n return this.edsDisabled();\n }\n\n elementRef = inject(ElementRef);\n\n protected colorDirective = inject(EdsColorDirective);\n private parentList = inject(EdsList, { optional: true });\n\n /** Focusable elements within this item for arrow-key rich content navigation. */\n focusableElements = computed(() => {\n const el = this.elementRef.nativeElement;\n return Array.from<Element>(el.querySelectorAll('a, button, [tabindex]:not([tabindex=\"-1\"])'));\n });\n\n /**\n * Whether the parent list is in interactive mode.\n */\n private isInteractive = computed(() => this.parentList?.isInteractiveMode?.() ?? false);\n\n /**\n * Derives the ARIA role from the parent list's role.\n * Returns null for presentational mode.\n */\n itemRole = computed(() => {\n const parentRole = this.parentList?.edsRole?.();\n if (!parentRole) return null;\n switch (parentRole) {\n case 'listbox': return 'option';\n case 'menu': return 'menuitem';\n case 'list': return 'listitem';\n default: return null;\n }\n });\n\n /**\n * aria-selected for listbox items.\n * APG requires aria-selected=\"false\" on non-selected options, not null.\n */\n ariaSelected = computed(() => {\n if (this.itemRole() === 'option') {\n return String(this.isActiveState());\n }\n return null;\n });\n\n /**\n * Tabindex: -1 in interactive mode (managed by FocusKeyManager), null in presentational mode.\n */\n computedTabindex = computed(() => {\n return this.isInteractive() ? '-1' : null;\n });\n\n /**\n * Computed host CSS classes.\n */\n hostClasses = computed(() => {\n const colorClass = this.colorDirective.getCssClass('eds-list-item');\n return [\n 'eds-list-item',\n colorClass,\n this.isInteractive() ? 'eds-list-item--interactive' : '',\n this.isActiveState() ? 'eds-list-item--active' : '',\n this.edsDisabled() ? 'eds-list-item--disabled' : '',\n ].join(' ').trim();\n });\n\n /**\n * Sets focus on the list item element.\n */\n public focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Programmatically triggers a click event.\n */\n public click(): void {\n this.elementRef.nativeElement.click();\n }\n\n /**\n * Applies active styling (called by FocusKeyManager).\n */\n public setActiveStyles(): void {\n this.isActiveState.set(true);\n }\n\n /**\n * Removes active styling (called by FocusKeyManager).\n */\n public setInactiveStyles(): void {\n this.isActiveState.set(false);\n }\n\n /**\n * Returns the text label of the item for type-ahead matching (FocusKeyManager).\n */\n public getLabel(): string {\n return this.elementRef.nativeElement.textContent?.trim() ?? '';\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n AfterContentInit,\n contentChildren,\n forwardRef,\n signal,\n input,\n computed,\n booleanAttribute,\n} from '@angular/core';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\n\nimport { EdsListItem } from './eds-list-item';\n\n/** Supported ARIA roles for interactive list mode. */\nexport type EdsListRole = 'listbox' | 'menu' | 'list';\n\n/**\n * Vertical list container. Contains `eds-list-item` children separated by dividers.\n *\n * Operates in two modes:\n * - **Presentational** (default): A visual list layout with no ARIA roles or keyboard navigation.\n * Ideal for dashboard metric lists, KPI cards, or simple data display.\n * - **Interactive** (when `edsRole` is set): Adds WAI-ARIA list semantics and FocusKeyManager\n * keyboard navigation. Items gain focus, active/disabled states, and color variants.\n *\n * @usageNotes\n * ### Presentational (default)\n * ```html\n * <eds-list>\n * <eds-list-item>\n * <eds-list-item-start><eds-icon icon=\"globe\" edsSizeS /></eds-list-item-start>\n * <eds-list-item-label>Google</eds-list-item-label>\n * <eds-list-item-end>4.7K</eds-list-item-end>\n * </eds-list-item>\n * </eds-list>\n * ```\n *\n * ### Interactive (listbox mode)\n * ```html\n * <eds-list edsRole=\"listbox\" ariaLabel=\"Options\">\n * <eds-list-item (click)=\"onSelect('a')\">Option A</eds-list-item>\n * <eds-list-item [isActive]=\"true\">Option B (active)</eds-list-item>\n * <eds-list-item edsDisabled>Option C (disabled)</eds-list-item>\n * </eds-list>\n * ```\n */\n@Component({\n selector: 'eds-list',\n template: '<ng-content/>',\n styleUrl: './eds-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': '\"eds-list\"',\n '[attr.role]': 'edsRole() || null',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.aria-orientation]': 'edsRole() ? \"vertical\" : null',\n '[attr.tabindex]': 'tabIndex()',\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class EdsList implements AfterContentInit {\n /**\n * ARIA role for the list container. When set, enables interactive mode\n * with keyboard navigation and focus management.\n * - 'listbox': interactive list with selectable options\n * - 'menu': action menu with menu items\n * - 'list': static semantic list (no keyboard navigation)\n * - undefined (default): presentational mode, no ARIA role\n */\n edsRole = input<EdsListRole | undefined>(undefined);\n\n /**\n * Accessible label for the list (used in interactive mode).\n */\n ariaLabel = input<string | undefined>(undefined);\n\n /**\n * Whether the list is in interactive mode (has keyboard navigation).\n * @default false\n */\n isInteractive = input(false, { transform: booleanAttribute });\n\n /**\n * Tabindex for the host element in interactive mode.\n */\n tabIndex = signal<string | null>(null);\n\n /**\n * Collection of all list item components that are children of this list.\n */\n items = contentChildren(forwardRef(() => EdsListItem));\n\n hostClasses = computed(() => {\n return [\n 'eds-list',\n this.isInteractiveMode() ? 'eds-list--interactive' : '',\n ].join(' ').trim();\n });\n\n /** Whether interactive mode is active (via edsRole or isInteractive input). */\n isInteractiveMode = computed(() => !!this.edsRole() || this.isInteractive());\n\n private focusKeyManager: FocusKeyManager<EdsListItem> | null = null;\n\n ngAfterContentInit(): void {\n if (this.isInteractiveMode()) {\n this.initFocusKeyManager();\n }\n }\n\n /**\n * Handles keyboard events for navigating the list (interactive mode only).\n * Implements WAI-ARIA APG Listbox keyboard interaction pattern.\n */\n protected onKeydown(event: KeyboardEvent): void {\n if (!this.focusKeyManager || !this.isInteractiveMode()) {\n return;\n }\n\n switch (event.key) {\n case 'Enter':\n case ' ': {\n event.preventDefault();\n if (this.focusKeyManager.activeItem) {\n this.focusKeyManager.activeItem.click();\n }\n break;\n }\n case 'Home': {\n event.preventDefault();\n this.focusKeyManager.setFirstItemActive();\n break;\n }\n case 'End': {\n event.preventDefault();\n this.focusKeyManager.setLastItemActive();\n break;\n }\n case 'ArrowRight':\n case 'ArrowLeft': {\n event.stopPropagation();\n const items = this.items();\n const activeItem = items.find(item =>\n item.elementRef.nativeElement.contains(document.activeElement),\n );\n if (activeItem?.focusableElements()?.length) {\n event.preventDefault();\n const directFocusables = activeItem.focusableElements();\n if (!directFocusables.length) break;\n const activeIndex = directFocusables\n .findIndex(el => el.contains(document.activeElement));\n this.focusKeyManager.setActiveItem(activeItem);\n this.navigateRichContent(event.key as 'ArrowRight' | 'ArrowLeft', activeIndex, directFocusables);\n }\n break;\n }\n default: {\n this.focusKeyManager.onKeydown(event);\n break;\n }\n }\n }\n\n private initFocusKeyManager(): void {\n const items = this.items();\n if (items.length > 0) {\n this.focusKeyManager = new FocusKeyManager(items)\n .withWrap()\n .withTypeAhead();\n this.tabIndex.set('0');\n\n // APG: When listbox receives focus, set focus on the selected or first option\n const selectedIndex = items.findIndex(item => item.isActiveState());\n if (selectedIndex >= 0) {\n this.focusKeyManager.setActiveItem(selectedIndex);\n }\n }\n }\n\n private navigateRichContent(direction: 'ArrowRight' | 'ArrowLeft', activeIndex: number, elements: Element[]): void {\n if (direction === 'ArrowRight') {\n const nextIndex = activeIndex + 1;\n if (nextIndex < elements.length) {\n (elements[nextIndex] as HTMLElement).focus();\n } else {\n this.focusKeyManager?.activeItem?.focus();\n }\n } else {\n if (activeIndex <= 0) {\n if (activeIndex === -1) {\n (elements[elements.length - 1] as HTMLElement).focus();\n } else {\n this.focusKeyManager?.activeItem?.focus();\n }\n } else {\n (elements[activeIndex - 1] as HTMLElement).focus();\n }\n }\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Leading slot for a list item. Typically contains an icon, avatar, or checkbox.\n */\n@Component({\n selector: 'eds-list-item-start',\n template: '<ng-content/>',\n styleUrl: './eds-list-item-start.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-list-item-start' },\n})\nexport class EdsListItemStart {}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Primary label slot for a list item. Displays the main text (flex: 1, truncatable).\n */\n@Component({\n selector: 'eds-list-item-label',\n template: '<ng-content/>',\n styleUrl: './eds-list-item-label.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-list-item-label' },\n})\nexport class EdsListItemLabel {}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Generic content slot for a list item. Use for additional content between the label and end slots\n * (e.g. progress bars, descriptions, badges).\n */\n@Component({\n selector: 'eds-list-item-content',\n template: '<ng-content/>',\n styleUrl: './eds-list-item-content.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-list-item-content' },\n})\nexport class EdsListItemContent {}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Trailing slot for a list item. Typically contains a value, badge, or action button.\n */\n@Component({\n selector: 'eds-list-item-end',\n template: '<ng-content/>',\n styleUrl: './eds-list-item-end.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'eds-list-item-end' },\n})\nexport class EdsListItemEnd {}\n","import { EdsList } from './eds-list';\nimport { EdsListItem } from './eds-list-item';\nimport { EdsListItemStart } from './eds-list-item-start';\nimport { EdsListItemLabel } from './eds-list-item-label';\nimport { EdsListItemContent } from './eds-list-item-content';\nimport { EdsListItemEnd } from './eds-list-item-end';\n\nexport {\n EdsList,\n EdsListItem,\n EdsListItemStart,\n EdsListItemLabel,\n EdsListItemContent,\n EdsListItemEnd,\n};\n\nexport { EdsListRole } from './eds-list';\n\n/** Convenience array for importing all eds-list components. */\nexport const EDS_LIST = [\n EdsList,\n EdsListItem,\n EdsListItemStart,\n EdsListItemLabel,\n EdsListItemContent,\n EdsListItemEnd,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -103,7 +103,7 @@ class EdsMenuItemComponent {
103
103
  this.item().actionIcon?.action?.(event);
104
104
  }
105
105
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
106
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: EdsMenuItemComponent, isStandalone: true, selector: "eds-menu-item", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, hasIcon: { classPropertyName: "hasIcon", publicName: "hasIcon", isSignal: true, isRequired: false, transformFunction: null }, hasIconLabel: { classPropertyName: "hasIconLabel", publicName: "hasIconLabel", isSignal: true, isRequired: false, transformFunction: null }, hasTooltip: { classPropertyName: "hasTooltip", publicName: "hasTooltip", isSignal: true, isRequired: false, transformFunction: null }, hasTooltipOnExpanded: { classPropertyName: "hasTooltipOnExpanded", publicName: "hasTooltipOnExpanded", isSignal: true, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null }, hasCollapsedInitials: { classPropertyName: "hasCollapsedInitials", publicName: "hasCollapsedInitials", isSignal: true, isRequired: false, transformFunction: null }, hasBoldRootLevel: { classPropertyName: "hasBoldRootLevel", publicName: "hasBoldRootLevel", isSignal: true, isRequired: false, transformFunction: null }, hasExpandIcon: { classPropertyName: "hasExpandIcon", publicName: "hasExpandIcon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", expandToggle: "expandToggle" }, host: { properties: { "class": "hostClasses()", "attr.data-e2e": "item()?.e2eAttr || \"eds-menu-item\"", "attr.role": "\"treeitem\"", "attr.tabindex": "\"-1\"", "attr.aria-haspopup": "item()?.children?.length ? true : undefined", "attr.aria-expanded": "item()?.children ? !!item()?.expanded : undefined", "attr.aria-disabled": "item()?.disabled || undefined" } }, ngImport: i0, template: "@if (isLabelItem()) {\n <!-- Category / label-only item (non-navigable) -->\n <li role=\"none\" class=\"eds-menu-item__content eds-menu-item__content--category\"\n [class.eds-menu-item--disabled]=\"item().disabled\"\n [attr.title]=\"tooltipText()\">\n <span class=\"eds-menu-item__link eds-menu-item__link--category\" (click)=\"onClick($event)\">\n <span class=\"eds-menu-item__link-start-block\">\n <ng-container *ngTemplateOutlet=\"iconBlock\"></ng-container>\n </span>\n <span class=\"eds-menu-item__link-content-block\">\n <span class=\"eds-menu-item__link-label eds-menu-item__link-label--category\">{{ item().label }}</span>\n </span>\n </span>\n </li>\n} @else {\n <!-- Navigable / expandable item -->\n <li role=\"none\" class=\"eds-menu-item__content\"\n [class.eds-menu-item--disabled]=\"item().disabled\"\n [class.eds-menu-item--expanded]=\"item().expanded\"\n [class.eds-menu-item--active]=\"item().active\">\n\n @if (item().url && !item().urlExternal) {\n <!-- Internal router link -->\n <a class=\"eds-menu-item__link\"\n [class.eds-menu-item__link--active]=\"item().active\"\n [class.eds-menu-item__link--disabled]=\"item().disabled\"\n [class.eds-menu-item__link--has-sub]=\"item().children?.length\"\n [routerLink]=\"item().url\"\n [queryParams]=\"item().queryParams\"\n routerLinkActive=\"eds-menu-item__link--active\"\n [attr.title]=\"tooltipText()\"\n (click)=\"onClick($event)\">\n <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n </a>\n } @else {\n <!-- External link / command / expandable -->\n <a class=\"eds-menu-item__link\"\n [class.eds-menu-item__link--active]=\"item().active\"\n [class.eds-menu-item__link--disabled]=\"item().disabled\"\n [class.eds-menu-item__link--has-sub]=\"item().children?.length\"\n href=\"javascript:void(0)\"\n [attr.title]=\"tooltipText()\"\n (click)=\"onClick($event)\">\n <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n </a>\n }\n\n <!-- Projected child list -->\n <ng-content />\n </li>\n}\n\n<!-- LINK CONTENT TEMPLATE -->\n<ng-template #linkContent>\n <span class=\"eds-menu-item__link-start-block\">\n <ng-container *ngTemplateOutlet=\"iconBlock\"></ng-container>\n @if (isCollapsed() && item().tagLabel) {\n <eds-badge class=\"eds-menu-item__badge--dot\" [color]=\"$any(item().tagTypeClass || '')\" iconOnly />\n }\n </span>\n\n <span class=\"eds-menu-item__link-content-block\">\n <span class=\"eds-menu-item__link-label\">{{ item().label }}</span>\n @if (item().urlExternal && item().urlExternalTarget === '_blank') {\n <eds-icon class=\"eds-menu-item__link-external-icon\" icon=\"arrow-square-out:core\" size=\"xs\" />\n }\n </span>\n\n <span class=\"eds-menu-item__link-end-block\">\n @if (item().tagLabel && !isCollapsed()) {\n <eds-badge [color]=\"$any(item().tagTypeClass || '')\" size=\"s\">{{ item().tagLabel }}</eds-badge>\n }\n\n @if (item().actionIcon) {\n <button edsIconButton\n class=\"eds-menu-item__action-icon\"\n [icon]=\"item().actionIcon!.icon\"\n [ariaLabel]=\"item().actionIcon!.label || 'Action'\"\n size=\"xs\"\n (click)=\"onActionIconClick($event)\">\n </button>\n }\n\n @if (hasExpandIcon() && item().children?.length) {\n <button edsIconButton\n class=\"eds-menu-item__expand-toggle\"\n [icon]=\"item().expanded ? 'caret-up' : 'caret-down'\"\n [ariaLabel]=\"item().expanded ? 'Collapse' : 'Expand'\"\n size=\"xs\"\n rounded\n (click)=\"onExpandToggle($event)\">\n </button>\n }\n </span>\n</ng-template>\n\n<!-- ICON BLOCK TEMPLATE -->\n<ng-template #iconBlock>\n @if (!isCollapsed()) {\n @if (hasIcon()) {\n @if (item().icon) {\n <eds-icon class=\"eds-menu-item__icon\" [icon]=\"item().icon!\" size=\"s\" />\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n }\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n }\n } @else {\n <!-- Collapsed mode -->\n @if (hasCollapsedInitials() && item().initials) {\n <span class=\"eds-menu-item__initials\">{{ item().initials }}</span>\n } @else if (hasIcon() && item().icon) {\n <eds-icon class=\"eds-menu-item__icon\" [icon]=\"item().icon!\" size=\"s\" />\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n } @else {\n <span class=\"eds-menu-item__initials\">{{ item().label?.charAt(0) }}</span>\n }\n\n @if (hasIconLabel()) {\n <span class=\"eds-menu-item__icon-label\">{{ item().label }}</span>\n }\n }\n</ng-template>\n\n", styles: [".eui-21 :host{display:block;width:100%}.eui-21 :host:focus-visible:not([readonly]){outline:2px solid var(--eds-c-border-primary)!important;outline-offset:-2px!important;transition:none}.eui-21 :host .eds-menu-item__content{display:flex;flex-direction:column;position:relative;width:100%}.eui-21 :host .eds-menu-item__link{display:flex;align-items:center;gap:var(--eds-sp-xs);padding:var(--eds-sp-xs) var(--eds-sp-l);font:var(--eds-f-paragraph-s);color:var(--eds-c-foreground-default);text-decoration:none;cursor:pointer;border:none;background:none;width:100%;min-height:40px;border-left:3px solid transparent;transition:background .15s ease,color .15s ease,border-color .15s ease}.eui-21 :host .eds-menu-item__link:hover:not(.eds-menu-item__link--disabled):not(.eds-menu-item__link--category){background:var(--eds-c-surface-elevation-sunken);color:var(--eds-c-foreground-primary)}.eui-21 :host .eds-menu-item__link--active:not(.eds-menu-item--disabled){background:var(--eds-c-surface-primary-subtle);color:var(--eds-c-foreground-primary);font-weight:var(--eds-f-w-semi-bold);border-left-color:var(--eds-c-border-primary)}.eui-21 :host .eds-menu-item__link--disabled{opacity:var(--eds-op-40);pointer-events:none}.eui-21 :host .eds-menu-item__link--category{cursor:default;font:var(--eds-f-label-s-semi-bold);color:var(--eds-c-foreground-subtler);text-transform:uppercase;letter-spacing:.02em;padding:var(--eds-sp-m) var(--eds-sp-l) var(--eds-sp-xs);min-height:auto;border-left-color:transparent}.eui-21 :host .eds-menu-item__link--category:hover{background:none}.eui-21 :host .eds-menu-item__link-start-block{display:flex;align-items:center;gap:var(--eds-sp-xs);flex-shrink:0;position:relative}.eui-21 :host .eds-menu-item__link-start-block:empty{display:none}.eui-21 :host .eds-menu-item__link-content-block{display:flex;align-items:center;gap:var(--eds-sp-xs);flex:1;min-width:0}.eui-21 :host .eds-menu-item__link-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.eui-21 :host .eds-menu-item__link-label--category{font:var(--eds-f-label-s-semi-bold);color:var(--eds-c-foreground-subtler)}.eui-21 :host .eds-menu-item__link-end-block{display:flex;align-items:center;gap:var(--eds-sp-xs);flex-shrink:0;margin-left:auto}.eui-21 :host .eds-menu-item__link-external-icon{flex-shrink:0;color:var(--eds-c-foreground-subtler)}.eui-21 :host .eds-menu-item__icon{flex-shrink:0}.eui-21 :host .eds-menu-item__marker{flex-shrink:0}.eui-21 :host .eds-menu-item__initials{display:flex;align-items:center;justify-content:center;font:var(--eds-f-label-m-semi-bold);width:32px;height:32px;border-radius:var(--eds-br-s);background:var(--eds-c-surface-elevation-sunken);border:1px solid var(--eds-c-border-divider);flex-shrink:0}.eui-21 :host .eds-menu-item__icon-label{font:var(--eds-f-microcopy-2xs);color:var(--eds-c-foreground-subtler);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;text-align:center}.eui-21 :host .eds-menu-item__badge--dot{position:absolute;top:-2px;right:-2px;pointer-events:none}.eui-21 :host .eds-menu-item__action-icon{opacity:0;transition:opacity .15s ease}.eui-21 :host .eds-menu-item__content:hover .eds-menu-item__action-icon{opacity:1}.eui-21 :host .eds-menu-item__expand-toggle{flex-shrink:0}.eui-21 :host .eds-menu-item--disabled{opacity:var(--eds-op-40);pointer-events:none}.eui-21 :host .eds-menu-item--expanded>.eds-menu-item__link{font-weight:var(--eds-f-w-medium)}.eui-21 :host .eds-menu-item--active>.eds-menu-item__link{background:var(--eds-c-surface-primary-subtle);color:var(--eds-c-foreground-primary);font-weight:var(--eds-f-w-semi-bold);border-left-color:var(--eds-c-border-primary)}.eui-21 :host.eds-menu-item--bold>.eds-menu-item__content>.eds-menu-item__link{font-weight:var(--eds-f-w-semi-bold)}.eui-21 :host.eds-menu-item--icon-label .eds-menu-item__link{flex-direction:column;align-items:center;justify-content:center;padding:var(--eds-sp-xs);gap:var(--eds-sp-4xs);border-left:none;border-radius:var(--eds-br-s)}.eui-21 :host.eds-menu-item--icon-label .eds-menu-item__link-content-block{display:none}.eui-21 :host.eds-menu-item--icon-label .eds-menu-item__link-end-block{display:none}.eui-21 .eds-menu--collapsed :host .eds-menu-item__content{position:relative}.eui-21 .eds-menu--collapsed :host .eds-menu-item__link{justify-content:center;padding:var(--eds-sp-xs) var(--eds-sp-s);border-left:none;border-radius:var(--eds-br-s);margin:var(--eds-sp-4xs) 0}.eui-21 .eds-menu--collapsed :host .eds-menu-item__link-content-block{display:none}.eui-21 .eds-menu--collapsed :host .eds-menu-item__link-end-block{display:none}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i1.EdsIcon, selector: "eds-icon, span[edsIcon]", inputs: ["icon", "set", "color", "size", "ariaLabel", "ariaHidden", "rounded", "isLoading"] }, { kind: "component", type: i2.EdsIconButton, selector: "button[edsIconButton]", inputs: ["icon", "color", "size", "ariaLabel", "rounded", "disabled"], outputs: ["buttonClick"] }, { kind: "component", type: i3.EdsBadge, selector: "eds-badge, span[edsBadge]", inputs: ["color", "variant", "size", "iconOnly", "maxCharCount", "charReplacement", "e2eAttr", "ariaLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
106
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: EdsMenuItemComponent, isStandalone: true, selector: "eds-menu-item", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, hasIcon: { classPropertyName: "hasIcon", publicName: "hasIcon", isSignal: true, isRequired: false, transformFunction: null }, hasIconLabel: { classPropertyName: "hasIconLabel", publicName: "hasIconLabel", isSignal: true, isRequired: false, transformFunction: null }, hasTooltip: { classPropertyName: "hasTooltip", publicName: "hasTooltip", isSignal: true, isRequired: false, transformFunction: null }, hasTooltipOnExpanded: { classPropertyName: "hasTooltipOnExpanded", publicName: "hasTooltipOnExpanded", isSignal: true, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null }, hasCollapsedInitials: { classPropertyName: "hasCollapsedInitials", publicName: "hasCollapsedInitials", isSignal: true, isRequired: false, transformFunction: null }, hasBoldRootLevel: { classPropertyName: "hasBoldRootLevel", publicName: "hasBoldRootLevel", isSignal: true, isRequired: false, transformFunction: null }, hasExpandIcon: { classPropertyName: "hasExpandIcon", publicName: "hasExpandIcon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", expandToggle: "expandToggle" }, host: { properties: { "class": "hostClasses()", "attr.data-e2e": "item()?.e2eAttr || \"eds-menu-item\"", "attr.role": "\"treeitem\"", "attr.tabindex": "\"-1\"", "attr.aria-haspopup": "item()?.children?.length ? true : undefined", "attr.aria-expanded": "item()?.children ? !!item()?.expanded : undefined", "attr.aria-disabled": "item()?.disabled || undefined" } }, ngImport: i0, template: "@if (isLabelItem()) {\n <!-- Category / label-only item (non-navigable) -->\n <li role=\"none\" class=\"eds-menu-item__content eds-menu-item__content--category\"\n [class.eds-menu-item--disabled]=\"item().disabled\"\n [attr.title]=\"tooltipText()\">\n <span class=\"eds-menu-item__link eds-menu-item__link--category\" (click)=\"onClick($event)\">\n <span class=\"eds-menu-item__link-start-block\">\n <ng-container *ngTemplateOutlet=\"iconBlock\"></ng-container>\n </span>\n <span class=\"eds-menu-item__link-content-block\">\n <span class=\"eds-menu-item__link-label eds-menu-item__link-label--category\">{{ item().label }}</span>\n </span>\n </span>\n </li>\n} @else {\n <!-- Navigable / expandable item -->\n <li role=\"none\" class=\"eds-menu-item__content\"\n [class.eds-menu-item--disabled]=\"item().disabled\"\n [class.eds-menu-item--expanded]=\"item().expanded\"\n [class.eds-menu-item--active]=\"item().active\">\n\n @if (item().url && !item().urlExternal) {\n <!-- Internal router link -->\n <a class=\"eds-menu-item__link\"\n [class.eds-menu-item__link--active]=\"item().active\"\n [class.eds-menu-item__link--disabled]=\"item().disabled\"\n [class.eds-menu-item__link--has-sub]=\"item().children?.length\"\n [routerLink]=\"item().url\"\n [queryParams]=\"item().queryParams\"\n routerLinkActive=\"eds-menu-item__link--active\"\n [attr.title]=\"tooltipText()\"\n (click)=\"onClick($event)\">\n <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n </a>\n } @else {\n <!-- External link / command / expandable -->\n <a class=\"eds-menu-item__link\"\n [class.eds-menu-item__link--active]=\"item().active\"\n [class.eds-menu-item__link--disabled]=\"item().disabled\"\n [class.eds-menu-item__link--has-sub]=\"item().children?.length\"\n href=\"javascript:void(0)\"\n [attr.title]=\"tooltipText()\"\n (click)=\"onClick($event)\">\n <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n </a>\n }\n\n <!-- Projected child list -->\n <ng-content />\n </li>\n}\n\n<!-- LINK CONTENT TEMPLATE -->\n<ng-template #linkContent>\n <span class=\"eds-menu-item__link-start-block\">\n <ng-container *ngTemplateOutlet=\"iconBlock\"></ng-container>\n @if (isCollapsed() && item().tagLabel) {\n <eds-badge class=\"eds-menu-item__badge--dot\" [color]=\"$any(item().tagTypeClass || '')\" iconOnly />\n }\n </span>\n\n <span class=\"eds-menu-item__link-content-block\">\n <span class=\"eds-menu-item__link-label\">{{ item().label }}</span>\n @if (item().urlExternal && item().urlExternalTarget === '_blank') {\n <eds-icon class=\"eds-menu-item__link-external-icon\" icon=\"arrow-square-out:core\" size=\"xs\" />\n }\n </span>\n\n <span class=\"eds-menu-item__link-end-block\">\n @if (item().tagLabel && !isCollapsed()) {\n <eds-badge [color]=\"$any(item().tagTypeClass || '')\" size=\"s\">{{ item().tagLabel }}</eds-badge>\n }\n\n @if (item().actionIcon) {\n <button edsIconButton\n class=\"eds-menu-item__action-icon\"\n [icon]=\"item().actionIcon!.icon\"\n [ariaLabel]=\"item().actionIcon!.label || 'Action'\"\n size=\"xs\"\n (click)=\"onActionIconClick($event)\">\n </button>\n }\n\n @if (hasExpandIcon() && item().children?.length) {\n <button edsIconButton\n class=\"eds-menu-item__expand-toggle\"\n [icon]=\"item().expanded ? 'caret-up' : 'caret-down'\"\n [ariaLabel]=\"item().expanded ? 'Collapse' : 'Expand'\"\n size=\"xs\"\n rounded\n (click)=\"onExpandToggle($event)\">\n </button>\n }\n </span>\n</ng-template>\n\n<!-- ICON BLOCK TEMPLATE -->\n<ng-template #iconBlock>\n @if (!isCollapsed()) {\n @if (hasIcon()) {\n @if (item().icon) {\n <eds-icon class=\"eds-menu-item__icon\" [icon]=\"item().icon!\" size=\"s\" />\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n }\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n }\n } @else {\n <!-- Collapsed mode -->\n @if (hasCollapsedInitials() && item().initials) {\n <span class=\"eds-menu-item__initials\">{{ item().initials }}</span>\n } @else if (hasIcon() && item().icon) {\n <eds-icon class=\"eds-menu-item__icon\" [icon]=\"item().icon!\" size=\"s\" />\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n } @else {\n <span class=\"eds-menu-item__initials\">{{ item().label?.charAt(0) }}</span>\n }\n\n @if (hasIconLabel()) {\n <span class=\"eds-menu-item__icon-label\">{{ item().label }}</span>\n }\n }\n</ng-template>\n\n", styles: [".eui-21 :host{display:block;width:100%}.eui-21 :host:focus-visible:not([readonly]){outline:2px solid var(--eds-c-border-primary)!important;outline-offset:-2px!important;transition:none}.eui-21 :host .eds-menu-item__content{display:flex;flex-direction:column;position:relative;width:100%}.eui-21 :host .eds-menu-item__link{display:flex;align-items:center;gap:var(--eds-sp-xs);padding:var(--eds-sp-xs) var(--eds-sp-l);font:var(--eds-f-paragraph-s);color:var(--eds-c-foreground-default);text-decoration:none;cursor:pointer;border:none;background:none;width:100%;min-height:40px;border-left:3px solid transparent;transition:background .15s ease,color .15s ease,border-color .15s ease}.eui-21 :host .eds-menu-item__link:hover:not(.eds-menu-item__link--disabled):not(.eds-menu-item__link--category){background:var(--eds-c-surface-elevation-sunken);color:var(--eds-c-foreground-primary)}.eui-21 :host .eds-menu-item__link--active:not(.eds-menu-item--disabled){background:var(--eds-c-surface-primary-subtle);color:var(--eds-c-foreground-primary);font-weight:var(--eds-f-w-semibold);border-left-color:var(--eds-c-border-primary)}.eui-21 :host .eds-menu-item__link--disabled{opacity:var(--eds-op-40);pointer-events:none}.eui-21 :host .eds-menu-item__link--category{cursor:default;font:var(--eds-f-label-s-semibold);color:var(--eds-c-foreground-subtler);text-transform:uppercase;letter-spacing:.02em;padding:var(--eds-sp-m) var(--eds-sp-l) var(--eds-sp-xs);min-height:auto;border-left-color:transparent}.eui-21 :host .eds-menu-item__link--category:hover{background:none}.eui-21 :host .eds-menu-item__link-start-block{display:flex;align-items:center;gap:var(--eds-sp-xs);flex-shrink:0;position:relative}.eui-21 :host .eds-menu-item__link-start-block:empty{display:none}.eui-21 :host .eds-menu-item__link-content-block{display:flex;align-items:center;gap:var(--eds-sp-xs);flex:1;min-width:0}.eui-21 :host .eds-menu-item__link-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.eui-21 :host .eds-menu-item__link-label--category{font:var(--eds-f-label-s-semibold);color:var(--eds-c-foreground-subtler)}.eui-21 :host .eds-menu-item__link-end-block{display:flex;align-items:center;gap:var(--eds-sp-xs);flex-shrink:0;margin-left:auto}.eui-21 :host .eds-menu-item__link-external-icon{flex-shrink:0;color:var(--eds-c-foreground-subtler)}.eui-21 :host .eds-menu-item__icon{flex-shrink:0}.eui-21 :host .eds-menu-item__marker{flex-shrink:0;width:var(--eds-sp-xs);height:var(--eds-sp-xs);border-radius:50%;background:currentColor}.eui-21 :host .eds-menu-item__marker ::ng-deep .eds-icon-svg{display:none}.eui-21 :host .eds-menu-item__initials{display:flex;align-items:center;justify-content:center;font:var(--eds-f-label-m-semibold);width:32px;height:32px;border-radius:var(--eds-br-s);background:var(--eds-c-surface-elevation-sunken);border:1px solid var(--eds-c-border-divider);flex-shrink:0}.eui-21 :host .eds-menu-item__icon-label{font:var(--eds-f-microcopy-2xs);color:var(--eds-c-foreground-subtler);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;text-align:center}.eui-21 :host .eds-menu-item__badge--dot{position:absolute;top:-2px;right:-2px;pointer-events:none}.eui-21 :host .eds-menu-item__action-icon{opacity:0;transition:opacity .15s ease}.eui-21 :host .eds-menu-item__content:hover .eds-menu-item__action-icon{opacity:1}.eui-21 :host .eds-menu-item__expand-toggle{flex-shrink:0}.eui-21 :host .eds-menu-item--disabled{opacity:var(--eds-op-40);pointer-events:none}.eui-21 :host .eds-menu-item--expanded>.eds-menu-item__link{font-weight:var(--eds-f-w-medium)}.eui-21 :host .eds-menu-item--active>.eds-menu-item__link{background:var(--eds-c-surface-primary-subtle);color:var(--eds-c-foreground-primary);font-weight:var(--eds-f-w-semibold);border-left-color:var(--eds-c-border-primary)}.eui-21 :host.eds-menu-item--bold>.eds-menu-item__content>.eds-menu-item__link{font-weight:var(--eds-f-w-semibold)}.eui-21 :host.eds-menu-item--icon-label .eds-menu-item__link{flex-direction:column;align-items:center;justify-content:center;padding:var(--eds-sp-xs);gap:var(--eds-sp-4xs);border-left:none;border-radius:var(--eds-br-s)}.eui-21 :host.eds-menu-item--icon-label .eds-menu-item__link-content-block{display:none}.eui-21 :host.eds-menu-item--icon-label .eds-menu-item__link-end-block{display:none}.eui-21 .eds-menu--collapsed :host .eds-menu-item__content{position:relative}.eui-21 .eds-menu--collapsed :host .eds-menu-item__link{justify-content:center;padding:var(--eds-sp-xs) var(--eds-sp-s);border-left:none;border-radius:var(--eds-br-s);margin:var(--eds-sp-4xs) 0}.eui-21 .eds-menu--collapsed :host .eds-menu-item__link-content-block{display:none}.eui-21 .eds-menu--collapsed :host .eds-menu-item__link-end-block{display:none}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i1.EdsIcon, selector: "eds-icon, span[edsIcon]", inputs: ["icon", "set", "color", "size", "ariaLabel", "ariaHidden", "rounded", "isLoading"] }, { kind: "component", type: i2.EdsIconButton, selector: "button[edsIconButton]", inputs: ["icon", "color", "size", "ariaLabel", "rounded", "disabled"], outputs: ["buttonClick"] }, { kind: "component", type: i3.EdsBadge, selector: "eds-badge, span[edsBadge]", inputs: ["color", "variant", "size", "iconOnly", "maxCharCount", "charReplacement", "e2eAttr", "ariaLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
107
107
  }
108
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsMenuItemComponent, decorators: [{
109
109
  type: Component,
@@ -115,7 +115,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
115
115
  '[attr.aria-haspopup]': 'item()?.children?.length ? true : undefined',
116
116
  '[attr.aria-expanded]': 'item()?.children ? !!item()?.expanded : undefined',
117
117
  '[attr.aria-disabled]': 'item()?.disabled || undefined',
118
- }, template: "@if (isLabelItem()) {\n <!-- Category / label-only item (non-navigable) -->\n <li role=\"none\" class=\"eds-menu-item__content eds-menu-item__content--category\"\n [class.eds-menu-item--disabled]=\"item().disabled\"\n [attr.title]=\"tooltipText()\">\n <span class=\"eds-menu-item__link eds-menu-item__link--category\" (click)=\"onClick($event)\">\n <span class=\"eds-menu-item__link-start-block\">\n <ng-container *ngTemplateOutlet=\"iconBlock\"></ng-container>\n </span>\n <span class=\"eds-menu-item__link-content-block\">\n <span class=\"eds-menu-item__link-label eds-menu-item__link-label--category\">{{ item().label }}</span>\n </span>\n </span>\n </li>\n} @else {\n <!-- Navigable / expandable item -->\n <li role=\"none\" class=\"eds-menu-item__content\"\n [class.eds-menu-item--disabled]=\"item().disabled\"\n [class.eds-menu-item--expanded]=\"item().expanded\"\n [class.eds-menu-item--active]=\"item().active\">\n\n @if (item().url && !item().urlExternal) {\n <!-- Internal router link -->\n <a class=\"eds-menu-item__link\"\n [class.eds-menu-item__link--active]=\"item().active\"\n [class.eds-menu-item__link--disabled]=\"item().disabled\"\n [class.eds-menu-item__link--has-sub]=\"item().children?.length\"\n [routerLink]=\"item().url\"\n [queryParams]=\"item().queryParams\"\n routerLinkActive=\"eds-menu-item__link--active\"\n [attr.title]=\"tooltipText()\"\n (click)=\"onClick($event)\">\n <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n </a>\n } @else {\n <!-- External link / command / expandable -->\n <a class=\"eds-menu-item__link\"\n [class.eds-menu-item__link--active]=\"item().active\"\n [class.eds-menu-item__link--disabled]=\"item().disabled\"\n [class.eds-menu-item__link--has-sub]=\"item().children?.length\"\n href=\"javascript:void(0)\"\n [attr.title]=\"tooltipText()\"\n (click)=\"onClick($event)\">\n <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n </a>\n }\n\n <!-- Projected child list -->\n <ng-content />\n </li>\n}\n\n<!-- LINK CONTENT TEMPLATE -->\n<ng-template #linkContent>\n <span class=\"eds-menu-item__link-start-block\">\n <ng-container *ngTemplateOutlet=\"iconBlock\"></ng-container>\n @if (isCollapsed() && item().tagLabel) {\n <eds-badge class=\"eds-menu-item__badge--dot\" [color]=\"$any(item().tagTypeClass || '')\" iconOnly />\n }\n </span>\n\n <span class=\"eds-menu-item__link-content-block\">\n <span class=\"eds-menu-item__link-label\">{{ item().label }}</span>\n @if (item().urlExternal && item().urlExternalTarget === '_blank') {\n <eds-icon class=\"eds-menu-item__link-external-icon\" icon=\"arrow-square-out:core\" size=\"xs\" />\n }\n </span>\n\n <span class=\"eds-menu-item__link-end-block\">\n @if (item().tagLabel && !isCollapsed()) {\n <eds-badge [color]=\"$any(item().tagTypeClass || '')\" size=\"s\">{{ item().tagLabel }}</eds-badge>\n }\n\n @if (item().actionIcon) {\n <button edsIconButton\n class=\"eds-menu-item__action-icon\"\n [icon]=\"item().actionIcon!.icon\"\n [ariaLabel]=\"item().actionIcon!.label || 'Action'\"\n size=\"xs\"\n (click)=\"onActionIconClick($event)\">\n </button>\n }\n\n @if (hasExpandIcon() && item().children?.length) {\n <button edsIconButton\n class=\"eds-menu-item__expand-toggle\"\n [icon]=\"item().expanded ? 'caret-up' : 'caret-down'\"\n [ariaLabel]=\"item().expanded ? 'Collapse' : 'Expand'\"\n size=\"xs\"\n rounded\n (click)=\"onExpandToggle($event)\">\n </button>\n }\n </span>\n</ng-template>\n\n<!-- ICON BLOCK TEMPLATE -->\n<ng-template #iconBlock>\n @if (!isCollapsed()) {\n @if (hasIcon()) {\n @if (item().icon) {\n <eds-icon class=\"eds-menu-item__icon\" [icon]=\"item().icon!\" size=\"s\" />\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n }\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n }\n } @else {\n <!-- Collapsed mode -->\n @if (hasCollapsedInitials() && item().initials) {\n <span class=\"eds-menu-item__initials\">{{ item().initials }}</span>\n } @else if (hasIcon() && item().icon) {\n <eds-icon class=\"eds-menu-item__icon\" [icon]=\"item().icon!\" size=\"s\" />\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n } @else {\n <span class=\"eds-menu-item__initials\">{{ item().label?.charAt(0) }}</span>\n }\n\n @if (hasIconLabel()) {\n <span class=\"eds-menu-item__icon-label\">{{ item().label }}</span>\n }\n }\n</ng-template>\n\n", styles: [".eui-21 :host{display:block;width:100%}.eui-21 :host:focus-visible:not([readonly]){outline:2px solid var(--eds-c-border-primary)!important;outline-offset:-2px!important;transition:none}.eui-21 :host .eds-menu-item__content{display:flex;flex-direction:column;position:relative;width:100%}.eui-21 :host .eds-menu-item__link{display:flex;align-items:center;gap:var(--eds-sp-xs);padding:var(--eds-sp-xs) var(--eds-sp-l);font:var(--eds-f-paragraph-s);color:var(--eds-c-foreground-default);text-decoration:none;cursor:pointer;border:none;background:none;width:100%;min-height:40px;border-left:3px solid transparent;transition:background .15s ease,color .15s ease,border-color .15s ease}.eui-21 :host .eds-menu-item__link:hover:not(.eds-menu-item__link--disabled):not(.eds-menu-item__link--category){background:var(--eds-c-surface-elevation-sunken);color:var(--eds-c-foreground-primary)}.eui-21 :host .eds-menu-item__link--active:not(.eds-menu-item--disabled){background:var(--eds-c-surface-primary-subtle);color:var(--eds-c-foreground-primary);font-weight:var(--eds-f-w-semi-bold);border-left-color:var(--eds-c-border-primary)}.eui-21 :host .eds-menu-item__link--disabled{opacity:var(--eds-op-40);pointer-events:none}.eui-21 :host .eds-menu-item__link--category{cursor:default;font:var(--eds-f-label-s-semi-bold);color:var(--eds-c-foreground-subtler);text-transform:uppercase;letter-spacing:.02em;padding:var(--eds-sp-m) var(--eds-sp-l) var(--eds-sp-xs);min-height:auto;border-left-color:transparent}.eui-21 :host .eds-menu-item__link--category:hover{background:none}.eui-21 :host .eds-menu-item__link-start-block{display:flex;align-items:center;gap:var(--eds-sp-xs);flex-shrink:0;position:relative}.eui-21 :host .eds-menu-item__link-start-block:empty{display:none}.eui-21 :host .eds-menu-item__link-content-block{display:flex;align-items:center;gap:var(--eds-sp-xs);flex:1;min-width:0}.eui-21 :host .eds-menu-item__link-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.eui-21 :host .eds-menu-item__link-label--category{font:var(--eds-f-label-s-semi-bold);color:var(--eds-c-foreground-subtler)}.eui-21 :host .eds-menu-item__link-end-block{display:flex;align-items:center;gap:var(--eds-sp-xs);flex-shrink:0;margin-left:auto}.eui-21 :host .eds-menu-item__link-external-icon{flex-shrink:0;color:var(--eds-c-foreground-subtler)}.eui-21 :host .eds-menu-item__icon{flex-shrink:0}.eui-21 :host .eds-menu-item__marker{flex-shrink:0}.eui-21 :host .eds-menu-item__initials{display:flex;align-items:center;justify-content:center;font:var(--eds-f-label-m-semi-bold);width:32px;height:32px;border-radius:var(--eds-br-s);background:var(--eds-c-surface-elevation-sunken);border:1px solid var(--eds-c-border-divider);flex-shrink:0}.eui-21 :host .eds-menu-item__icon-label{font:var(--eds-f-microcopy-2xs);color:var(--eds-c-foreground-subtler);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;text-align:center}.eui-21 :host .eds-menu-item__badge--dot{position:absolute;top:-2px;right:-2px;pointer-events:none}.eui-21 :host .eds-menu-item__action-icon{opacity:0;transition:opacity .15s ease}.eui-21 :host .eds-menu-item__content:hover .eds-menu-item__action-icon{opacity:1}.eui-21 :host .eds-menu-item__expand-toggle{flex-shrink:0}.eui-21 :host .eds-menu-item--disabled{opacity:var(--eds-op-40);pointer-events:none}.eui-21 :host .eds-menu-item--expanded>.eds-menu-item__link{font-weight:var(--eds-f-w-medium)}.eui-21 :host .eds-menu-item--active>.eds-menu-item__link{background:var(--eds-c-surface-primary-subtle);color:var(--eds-c-foreground-primary);font-weight:var(--eds-f-w-semi-bold);border-left-color:var(--eds-c-border-primary)}.eui-21 :host.eds-menu-item--bold>.eds-menu-item__content>.eds-menu-item__link{font-weight:var(--eds-f-w-semi-bold)}.eui-21 :host.eds-menu-item--icon-label .eds-menu-item__link{flex-direction:column;align-items:center;justify-content:center;padding:var(--eds-sp-xs);gap:var(--eds-sp-4xs);border-left:none;border-radius:var(--eds-br-s)}.eui-21 :host.eds-menu-item--icon-label .eds-menu-item__link-content-block{display:none}.eui-21 :host.eds-menu-item--icon-label .eds-menu-item__link-end-block{display:none}.eui-21 .eds-menu--collapsed :host .eds-menu-item__content{position:relative}.eui-21 .eds-menu--collapsed :host .eds-menu-item__link{justify-content:center;padding:var(--eds-sp-xs) var(--eds-sp-s);border-left:none;border-radius:var(--eds-br-s);margin:var(--eds-sp-4xs) 0}.eui-21 .eds-menu--collapsed :host .eds-menu-item__link-content-block{display:none}.eui-21 .eds-menu--collapsed :host .eds-menu-item__link-end-block{display:none}\n"] }]
118
+ }, template: "@if (isLabelItem()) {\n <!-- Category / label-only item (non-navigable) -->\n <li role=\"none\" class=\"eds-menu-item__content eds-menu-item__content--category\"\n [class.eds-menu-item--disabled]=\"item().disabled\"\n [attr.title]=\"tooltipText()\">\n <span class=\"eds-menu-item__link eds-menu-item__link--category\" (click)=\"onClick($event)\">\n <span class=\"eds-menu-item__link-start-block\">\n <ng-container *ngTemplateOutlet=\"iconBlock\"></ng-container>\n </span>\n <span class=\"eds-menu-item__link-content-block\">\n <span class=\"eds-menu-item__link-label eds-menu-item__link-label--category\">{{ item().label }}</span>\n </span>\n </span>\n </li>\n} @else {\n <!-- Navigable / expandable item -->\n <li role=\"none\" class=\"eds-menu-item__content\"\n [class.eds-menu-item--disabled]=\"item().disabled\"\n [class.eds-menu-item--expanded]=\"item().expanded\"\n [class.eds-menu-item--active]=\"item().active\">\n\n @if (item().url && !item().urlExternal) {\n <!-- Internal router link -->\n <a class=\"eds-menu-item__link\"\n [class.eds-menu-item__link--active]=\"item().active\"\n [class.eds-menu-item__link--disabled]=\"item().disabled\"\n [class.eds-menu-item__link--has-sub]=\"item().children?.length\"\n [routerLink]=\"item().url\"\n [queryParams]=\"item().queryParams\"\n routerLinkActive=\"eds-menu-item__link--active\"\n [attr.title]=\"tooltipText()\"\n (click)=\"onClick($event)\">\n <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n </a>\n } @else {\n <!-- External link / command / expandable -->\n <a class=\"eds-menu-item__link\"\n [class.eds-menu-item__link--active]=\"item().active\"\n [class.eds-menu-item__link--disabled]=\"item().disabled\"\n [class.eds-menu-item__link--has-sub]=\"item().children?.length\"\n href=\"javascript:void(0)\"\n [attr.title]=\"tooltipText()\"\n (click)=\"onClick($event)\">\n <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n </a>\n }\n\n <!-- Projected child list -->\n <ng-content />\n </li>\n}\n\n<!-- LINK CONTENT TEMPLATE -->\n<ng-template #linkContent>\n <span class=\"eds-menu-item__link-start-block\">\n <ng-container *ngTemplateOutlet=\"iconBlock\"></ng-container>\n @if (isCollapsed() && item().tagLabel) {\n <eds-badge class=\"eds-menu-item__badge--dot\" [color]=\"$any(item().tagTypeClass || '')\" iconOnly />\n }\n </span>\n\n <span class=\"eds-menu-item__link-content-block\">\n <span class=\"eds-menu-item__link-label\">{{ item().label }}</span>\n @if (item().urlExternal && item().urlExternalTarget === '_blank') {\n <eds-icon class=\"eds-menu-item__link-external-icon\" icon=\"arrow-square-out:core\" size=\"xs\" />\n }\n </span>\n\n <span class=\"eds-menu-item__link-end-block\">\n @if (item().tagLabel && !isCollapsed()) {\n <eds-badge [color]=\"$any(item().tagTypeClass || '')\" size=\"s\">{{ item().tagLabel }}</eds-badge>\n }\n\n @if (item().actionIcon) {\n <button edsIconButton\n class=\"eds-menu-item__action-icon\"\n [icon]=\"item().actionIcon!.icon\"\n [ariaLabel]=\"item().actionIcon!.label || 'Action'\"\n size=\"xs\"\n (click)=\"onActionIconClick($event)\">\n </button>\n }\n\n @if (hasExpandIcon() && item().children?.length) {\n <button edsIconButton\n class=\"eds-menu-item__expand-toggle\"\n [icon]=\"item().expanded ? 'caret-up' : 'caret-down'\"\n [ariaLabel]=\"item().expanded ? 'Collapse' : 'Expand'\"\n size=\"xs\"\n rounded\n (click)=\"onExpandToggle($event)\">\n </button>\n }\n </span>\n</ng-template>\n\n<!-- ICON BLOCK TEMPLATE -->\n<ng-template #iconBlock>\n @if (!isCollapsed()) {\n @if (hasIcon()) {\n @if (item().icon) {\n <eds-icon class=\"eds-menu-item__icon\" [icon]=\"item().icon!\" size=\"s\" />\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n }\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n }\n } @else {\n <!-- Collapsed mode -->\n @if (hasCollapsedInitials() && item().initials) {\n <span class=\"eds-menu-item__initials\">{{ item().initials }}</span>\n } @else if (hasIcon() && item().icon) {\n <eds-icon class=\"eds-menu-item__icon\" [icon]=\"item().icon!\" size=\"s\" />\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n } @else {\n <span class=\"eds-menu-item__initials\">{{ item().label?.charAt(0) }}</span>\n }\n\n @if (hasIconLabel()) {\n <span class=\"eds-menu-item__icon-label\">{{ item().label }}</span>\n }\n }\n</ng-template>\n\n", styles: [".eui-21 :host{display:block;width:100%}.eui-21 :host:focus-visible:not([readonly]){outline:2px solid var(--eds-c-border-primary)!important;outline-offset:-2px!important;transition:none}.eui-21 :host .eds-menu-item__content{display:flex;flex-direction:column;position:relative;width:100%}.eui-21 :host .eds-menu-item__link{display:flex;align-items:center;gap:var(--eds-sp-xs);padding:var(--eds-sp-xs) var(--eds-sp-l);font:var(--eds-f-paragraph-s);color:var(--eds-c-foreground-default);text-decoration:none;cursor:pointer;border:none;background:none;width:100%;min-height:40px;border-left:3px solid transparent;transition:background .15s ease,color .15s ease,border-color .15s ease}.eui-21 :host .eds-menu-item__link:hover:not(.eds-menu-item__link--disabled):not(.eds-menu-item__link--category){background:var(--eds-c-surface-elevation-sunken);color:var(--eds-c-foreground-primary)}.eui-21 :host .eds-menu-item__link--active:not(.eds-menu-item--disabled){background:var(--eds-c-surface-primary-subtle);color:var(--eds-c-foreground-primary);font-weight:var(--eds-f-w-semibold);border-left-color:var(--eds-c-border-primary)}.eui-21 :host .eds-menu-item__link--disabled{opacity:var(--eds-op-40);pointer-events:none}.eui-21 :host .eds-menu-item__link--category{cursor:default;font:var(--eds-f-label-s-semibold);color:var(--eds-c-foreground-subtler);text-transform:uppercase;letter-spacing:.02em;padding:var(--eds-sp-m) var(--eds-sp-l) var(--eds-sp-xs);min-height:auto;border-left-color:transparent}.eui-21 :host .eds-menu-item__link--category:hover{background:none}.eui-21 :host .eds-menu-item__link-start-block{display:flex;align-items:center;gap:var(--eds-sp-xs);flex-shrink:0;position:relative}.eui-21 :host .eds-menu-item__link-start-block:empty{display:none}.eui-21 :host .eds-menu-item__link-content-block{display:flex;align-items:center;gap:var(--eds-sp-xs);flex:1;min-width:0}.eui-21 :host .eds-menu-item__link-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.eui-21 :host .eds-menu-item__link-label--category{font:var(--eds-f-label-s-semibold);color:var(--eds-c-foreground-subtler)}.eui-21 :host .eds-menu-item__link-end-block{display:flex;align-items:center;gap:var(--eds-sp-xs);flex-shrink:0;margin-left:auto}.eui-21 :host .eds-menu-item__link-external-icon{flex-shrink:0;color:var(--eds-c-foreground-subtler)}.eui-21 :host .eds-menu-item__icon{flex-shrink:0}.eui-21 :host .eds-menu-item__marker{flex-shrink:0;width:var(--eds-sp-xs);height:var(--eds-sp-xs);border-radius:50%;background:currentColor}.eui-21 :host .eds-menu-item__marker ::ng-deep .eds-icon-svg{display:none}.eui-21 :host .eds-menu-item__initials{display:flex;align-items:center;justify-content:center;font:var(--eds-f-label-m-semibold);width:32px;height:32px;border-radius:var(--eds-br-s);background:var(--eds-c-surface-elevation-sunken);border:1px solid var(--eds-c-border-divider);flex-shrink:0}.eui-21 :host .eds-menu-item__icon-label{font:var(--eds-f-microcopy-2xs);color:var(--eds-c-foreground-subtler);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;text-align:center}.eui-21 :host .eds-menu-item__badge--dot{position:absolute;top:-2px;right:-2px;pointer-events:none}.eui-21 :host .eds-menu-item__action-icon{opacity:0;transition:opacity .15s ease}.eui-21 :host .eds-menu-item__content:hover .eds-menu-item__action-icon{opacity:1}.eui-21 :host .eds-menu-item__expand-toggle{flex-shrink:0}.eui-21 :host .eds-menu-item--disabled{opacity:var(--eds-op-40);pointer-events:none}.eui-21 :host .eds-menu-item--expanded>.eds-menu-item__link{font-weight:var(--eds-f-w-medium)}.eui-21 :host .eds-menu-item--active>.eds-menu-item__link{background:var(--eds-c-surface-primary-subtle);color:var(--eds-c-foreground-primary);font-weight:var(--eds-f-w-semibold);border-left-color:var(--eds-c-border-primary)}.eui-21 :host.eds-menu-item--bold>.eds-menu-item__content>.eds-menu-item__link{font-weight:var(--eds-f-w-semibold)}.eui-21 :host.eds-menu-item--icon-label .eds-menu-item__link{flex-direction:column;align-items:center;justify-content:center;padding:var(--eds-sp-xs);gap:var(--eds-sp-4xs);border-left:none;border-radius:var(--eds-br-s)}.eui-21 :host.eds-menu-item--icon-label .eds-menu-item__link-content-block{display:none}.eui-21 :host.eds-menu-item--icon-label .eds-menu-item__link-end-block{display:none}.eui-21 .eds-menu--collapsed :host .eds-menu-item__content{position:relative}.eui-21 .eds-menu--collapsed :host .eds-menu-item__link{justify-content:center;padding:var(--eds-sp-xs) var(--eds-sp-s);border-left:none;border-radius:var(--eds-br-s);margin:var(--eds-sp-4xs) 0}.eui-21 .eds-menu--collapsed :host .eds-menu-item__link-content-block{display:none}.eui-21 .eds-menu--collapsed :host .eds-menu-item__link-end-block{display:none}\n"] }]
119
119
  }], propDecorators: { item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: true }] }], hasIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasIcon", required: false }] }], hasIconLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasIconLabel", required: false }] }], hasTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasTooltip", required: false }] }], hasTooltipOnExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasTooltipOnExpanded", required: false }] }], isCollapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCollapsed", required: false }] }], hasCollapsedInitials: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasCollapsedInitials", required: false }] }], hasBoldRootLevel: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBoldRootLevel", required: false }] }], hasExpandIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasExpandIcon", required: false }] }], itemClick: [{ type: i0.Output, args: ["itemClick"] }], expandToggle: [{ type: i0.Output, args: ["expandToggle"] }] } });
120
120
 
121
121
  class EdsMenu {