@siemens/element-ng 51.3.0 → 51.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/fesm2022/siemens-element-ng-about.mjs +2 -2
  2. package/fesm2022/siemens-element-ng-about.mjs.map +1 -1
  3. package/fesm2022/siemens-element-ng-ag-grid.mjs +5 -4
  4. package/fesm2022/siemens-element-ng-ag-grid.mjs.map +1 -1
  5. package/fesm2022/siemens-element-ng-breadcrumb.mjs +20 -71
  6. package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
  7. package/fesm2022/siemens-element-ng-carousel.mjs +6 -4
  8. package/fesm2022/siemens-element-ng-carousel.mjs.map +1 -1
  9. package/fesm2022/siemens-element-ng-chat-messages.mjs +3 -3
  10. package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
  11. package/fesm2022/siemens-element-ng-common.mjs +16 -1
  12. package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
  13. package/fesm2022/siemens-element-ng-dashboard.mjs +2 -3
  14. package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
  15. package/fesm2022/siemens-element-ng-datatable.mjs +1 -1
  16. package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
  17. package/fesm2022/siemens-element-ng-empty-state.mjs +2 -2
  18. package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
  19. package/fesm2022/siemens-element-ng-filtered-search.mjs +255 -160
  20. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
  21. package/fesm2022/siemens-element-ng-formly.mjs +13 -9
  22. package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
  23. package/fesm2022/siemens-element-ng-header-dropdown.mjs +2 -2
  24. package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
  25. package/fesm2022/siemens-element-ng-list-details.mjs +7 -4
  26. package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
  27. package/fesm2022/siemens-element-ng-loading-spinner.mjs +21 -7
  28. package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
  29. package/fesm2022/siemens-element-ng-maplibre.mjs +293 -10
  30. package/fesm2022/siemens-element-ng-maplibre.mjs.map +1 -1
  31. package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs +6 -3
  32. package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs.map +1 -1
  33. package/fesm2022/siemens-element-ng-markdown-extensions-mermaid.mjs +9 -0
  34. package/fesm2022/siemens-element-ng-markdown-extensions-mermaid.mjs.map +1 -1
  35. package/fesm2022/siemens-element-ng-markdown.mjs +6 -2
  36. package/fesm2022/siemens-element-ng-markdown.mjs.map +1 -1
  37. package/fesm2022/siemens-element-ng-menu.mjs +6 -6
  38. package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
  39. package/fesm2022/siemens-element-ng-modal.mjs +4 -3
  40. package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
  41. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +10 -4
  42. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
  43. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +12 -6
  44. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
  45. package/fesm2022/siemens-element-ng-pills-input.mjs +5 -4
  46. package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
  47. package/fesm2022/siemens-element-ng-popover-legacy.mjs +1 -1
  48. package/fesm2022/siemens-element-ng-popover-legacy.mjs.map +1 -1
  49. package/fesm2022/siemens-element-ng-popover.mjs +36 -7
  50. package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
  51. package/fesm2022/siemens-element-ng-result-details-list.mjs +1 -1
  52. package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
  53. package/fesm2022/siemens-element-ng-select.mjs +3 -3
  54. package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
  55. package/fesm2022/siemens-element-ng-shadow-root.mjs +54 -1
  56. package/fesm2022/siemens-element-ng-shadow-root.mjs.map +1 -1
  57. package/fesm2022/siemens-element-ng-side-panel.mjs +17 -7
  58. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
  59. package/fesm2022/siemens-element-ng-skip-links.mjs +18 -4
  60. package/fesm2022/siemens-element-ng-skip-links.mjs.map +1 -1
  61. package/fesm2022/siemens-element-ng-source-chip.mjs +1 -1
  62. package/fesm2022/siemens-element-ng-source-chip.mjs.map +1 -1
  63. package/fesm2022/siemens-element-ng-split.mjs +2 -2
  64. package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
  65. package/fesm2022/siemens-element-ng-status-bar.mjs +2 -2
  66. package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
  67. package/fesm2022/siemens-element-ng-theme.mjs +59 -23
  68. package/fesm2022/siemens-element-ng-theme.mjs.map +1 -1
  69. package/fesm2022/siemens-element-ng-tooltip.mjs +83 -11
  70. package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
  71. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  72. package/fesm2022/siemens-element-ng-tree-view.mjs +3 -4
  73. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  74. package/fesm2022/siemens-element-ng-typeahead.mjs +2 -2
  75. package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
  76. package/maplibre/styles/maplibre-gl.scss +4 -0
  77. package/package.json +7 -7
  78. package/schematics/utils/ts-compiler-host.js +21 -0
  79. package/template-i18n.json +7 -0
  80. package/types/siemens-element-ng-ag-grid.d.ts +1 -0
  81. package/types/siemens-element-ng-breadcrumb.d.ts +3 -6
  82. package/types/siemens-element-ng-common.d.ts +28 -3
  83. package/types/siemens-element-ng-dashboard.d.ts +0 -1
  84. package/types/siemens-element-ng-filtered-search.d.ts +26 -10
  85. package/types/siemens-element-ng-list-details.d.ts +2 -0
  86. package/types/siemens-element-ng-loading-spinner.d.ts +11 -4
  87. package/types/siemens-element-ng-maplibre.d.ts +112 -5
  88. package/types/siemens-element-ng-markdown-extensions-katex.d.ts +4 -1
  89. package/types/siemens-element-ng-markdown-extensions-mermaid.d.ts +9 -0
  90. package/types/siemens-element-ng-navbar-vertical-next.d.ts +2 -1
  91. package/types/siemens-element-ng-navbar-vertical.d.ts +2 -2
  92. package/types/siemens-element-ng-popover.d.ts +19 -1
  93. package/types/siemens-element-ng-shadow-root.d.ts +16 -1
  94. package/types/siemens-element-ng-side-panel.d.ts +7 -2
  95. package/types/siemens-element-ng-skip-links.d.ts +4 -2
  96. package/types/siemens-element-ng-theme.d.ts +35 -7
  97. package/types/siemens-element-ng-tooltip.d.ts +14 -1
  98. package/types/siemens-element-ng-translate.d.ts +7 -0
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-pills-input.mjs","sources":["../../../../projects/element-ng/pills-input/si-input-pill.component.ts","../../../../projects/element-ng/pills-input/si-input-pill.component.html","../../../../projects/element-ng/pills-input/si-pills-input-value-handler.ts","../../../../projects/element-ng/pills-input/si-pills-input.component.ts","../../../../projects/element-ng/pills-input/si-pills-input.component.html","../../../../projects/element-ng/pills-input/si-pills-input-pattern-base.ts","../../../../projects/element-ng/pills-input/si-pills-input-csv.directive.ts","../../../../projects/element-ng/pills-input/si-pills-input-email.directive.ts","../../../../projects/element-ng/pills-input/si-pills-input.module.ts","../../../../projects/element-ng/pills-input/index.ts","../../../../projects/element-ng/pills-input/siemens-element-ng-pills-input.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { elementCancel } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\n\n@Component({\n selector: 'si-input-pill',\n imports: [SiIconComponent],\n templateUrl: './si-input-pill.component.html',\n styles: '.btn { cursor: pointer; }',\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n class: 'pill pe-0',\n '[class.pe-4]': 'hideClose()'\n }\n})\nexport class SiInputPillComponent {\n /** Emits when the pill's close button is clicked. */\n readonly deletePill = output<void>();\n\n /**\n * Whether to hide the close button.\n *\n * @defaultValue false\n */\n readonly hideClose = input(false);\n\n protected readonly icons = addIcons({ elementCancel });\n}\n","<div class=\"text-truncate\">\n <ng-content />\n</div>\n@if (!hideClose()) {\n <span\n class=\"ms-2 btn btn-circle btn-sm btn-tertiary-ghost\"\n aria-hidden=\"true\"\n (click)=\"deletePill.emit()\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </span>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\n\nexport interface SiPillsInputValueParseResult {\n newValue: string;\n newPills: string[];\n}\n\nexport type SiPillsInputValueHandlerTrigger = 'input' | 'keydown.enter' | 'blur';\n\n@Directive()\nexport abstract class SiPillsInputValueHandlerDirective {\n /** @internal */\n abstract handle(\n value: string,\n trigger: SiPillsInputValueHandlerTrigger\n ): SiPillsInputValueParseResult | undefined;\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnInit,\n signal,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SI_FORM_ITEM_CONTROL, SiFormItemControl } from '@siemens/element-ng/form';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiInputPillComponent } from './si-input-pill.component';\nimport {\n SiPillsInputValueHandlerDirective,\n SiPillsInputValueHandlerTrigger\n} from './si-pills-input-value-handler';\n\n@Component({\n selector: 'si-pills-input',\n imports: [SiInputPillComponent, SiTranslatePipe],\n templateUrl: './si-pills-input.component.html',\n styleUrl: './si-pills-input.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SiPillsInputComponent,\n multi: true\n },\n {\n provide: SI_FORM_ITEM_CONTROL,\n useExisting: SiPillsInputComponent\n }\n ],\n host: {\n class: 'form-control',\n role: 'listbox',\n 'aria-orientation': 'horizontal',\n '[class.disabled]': 'disabled()',\n '[attr.aria-disabled]': 'disabled()',\n '[class.readonly]': 'readonly()',\n '[attr.aria-readonly]': 'readonly()',\n // using attr so that tabindex is removed if not defined\n '[attr.tabindex]': 'tabindex()',\n '[attr.aria-activedescendant]': 'activeDescendant()',\n '[attr.aria-labelledby]': 'labelledby()',\n '[attr.aria-describedby]': 'errormessageId()',\n '(click)': 'click()',\n '(keydown.arrowLeft)': 'arrowLeft()',\n '(keydown.arrowRight)': 'arrowRight()',\n '(keydown.backspace)': 'delete()',\n '(keydown.delete)': 'delete()'\n }\n})\nexport class SiPillsInputComponent implements OnInit, ControlValueAccessor, SiFormItemControl {\n private static idCounter = 0;\n\n /**\n * The identifier of the pills-input. Will be generated if not provided.\n *\n * @defaultValue\n * ```\n * `__si-pills-input-${SiPillsInputComponent.idCounter++}`\n * ```\n */\n readonly id = input(`__si-pills-input-${SiPillsInputComponent.idCounter++}`);\n\n /**\n * The aria-label for the inner input where users enter new items.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_PILLS_INPUT.INPUT_ELEMENT_ARIA_LABEL:Create item`)\n * ```\n */\n readonly inputElementAriaLabel = input(\n t(() => $localize`:@@SI_PILLS_INPUT.INPUT_ELEMENT_ARIA_LABEL:Create item`)\n );\n\n /**\n * Whether the pills-input is disabled.\n *\n * @defaultValue false\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\n\n /**\n * Whether the pills-input is readonly\n *\n * @defaultValue false\n */\n readonly readonly = input(false, { transform: booleanAttribute });\n\n /** The placeholder to be shown if no value is currently present. */\n readonly placeholder = input<TranslatableString>();\n\n /**\n * @defaultValue\n * ```\n * `${this.id()}-label`\n * ```\n */\n readonly labelledby = input(`${this.id()}-label`);\n\n /**\n * This ID will be bound to the `aria-describedby` attribute of the pills-input.\n * Use this to reference the element containing the error message(s) for the pills-input.\n * It will be picked by the {@link SiFormItemComponent} if the pills-input is used inside a form item.\n *\n * @defaultValue\n * ```\n * `${this.id()}-errormessage`\n * ```\n */\n readonly errormessageId = input(`${this.id()}-errormessage`);\n\n protected inputValue = '';\n protected onTouched: () => void = () => {};\n protected onChange: (val: any) => void = () => {};\n\n protected readonly pills = signal<string[]>([]);\n protected readonly activePillIndex = signal<number | undefined>(undefined);\n protected readonly inputId = computed(() => `${this.id()}-input`);\n protected readonly disabled = computed(() => this.disabledInput() || this.disabledNgControl());\n protected readonly activeDescendant = computed(() => {\n const activePillIndex = this.activePillIndex();\n return activePillIndex !== undefined ? `${this.id()}-pill-${activePillIndex}` : null;\n });\n\n protected readonly tabindex = computed(() =>\n this.disabled() ? undefined : this.readonly() ? 0 : -1\n );\n private readonly inputElement = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n private readonly disabledNgControl = signal(false);\n private siPillsInputValueHandlerDirective = inject(SiPillsInputValueHandlerDirective, {\n optional: true\n });\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n ngOnInit(): void {\n this.siPillsInputValueHandlerDirective ??= {\n handle: (value, trigger) => {\n if (trigger !== 'input') {\n return {\n newPills: [value],\n newValue: ''\n };\n }\n return undefined;\n }\n };\n }\n\n protected input(): void {\n this.inputValue = this.inputElement()!.nativeElement.value;\n this.rebuildValue(this.inputValue, 'input');\n }\n\n protected click(): void {\n this.inputElement()?.nativeElement.focus();\n }\n\n protected blur(): void {\n this.rebuildValue(this.inputValue, 'blur');\n this.activePillIndex.set(undefined);\n this.onTouched();\n }\n\n protected keydownEnter(event: Event): void {\n this.rebuildValue(this.inputValue, 'keydown.enter');\n event.preventDefault();\n }\n\n protected keydownBackspace(event: Event): void {\n const count = this.pills().length;\n if (!this.inputValue && count) {\n const lastChipValue = this.pills().at(-1)!;\n this.remove(count - 1, false);\n this.inputValue = lastChipValue;\n event.preventDefault();\n }\n }\n\n protected remove(index: number, focus = true): void {\n this.pills.update(pills => pills.filter((_, pillIndex) => index !== pillIndex));\n this.onTouched();\n this.onChange(this.pills());\n if (focus) {\n this.inputElement()!.nativeElement.focus();\n }\n }\n\n private rebuildValue(value: string, trigger: SiPillsInputValueHandlerTrigger): void {\n if (value) {\n const valueParseResult = this.siPillsInputValueHandlerDirective?.handle(value, trigger);\n if (valueParseResult) {\n this.pills.update(pills => [...pills, ...valueParseResult.newPills]);\n // Doesn't update when setting to empty string.\n // Not using setTimeout to avoid flickering.\n this.cdRef.detectChanges();\n this.inputValue = valueParseResult.newValue;\n this.cdRef.detectChanges();\n\n if (valueParseResult.newPills.length) {\n this.onTouched();\n this.onChange(this.pills());\n }\n }\n }\n }\n\n protected arrowLeft(): void {\n const activePillIndex = this.activePillIndex();\n const count = this.pills().length;\n if (activePillIndex !== undefined) {\n this.activePillIndex.set(Math.max(0, activePillIndex - 1));\n } else if (!this.inputValue.length && count) {\n this.elementRef.nativeElement.focus();\n this.activePillIndex.set(count - 1);\n }\n }\n\n protected arrowRight(): void {\n const activePillIndex = this.activePillIndex();\n if (activePillIndex !== undefined) {\n this.activePillIndex.set(activePillIndex + 1);\n\n if (this.activePillIndex()! >= this.pills().length) {\n this.inputElement()?.nativeElement.focus();\n this.activePillIndex.set(undefined);\n }\n }\n }\n\n protected delete(): void {\n const activePillIndex = this.activePillIndex();\n const count = this.pills().length;\n if (activePillIndex !== undefined && !this.readonly()) {\n const targetIndex = count > 1 ? Math.min(activePillIndex, count - 2) : undefined;\n this.remove(activePillIndex, targetIndex === undefined);\n this.activePillIndex.set(targetIndex);\n }\n }\n\n /** @internal */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /** @internal */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @internal */\n setDisabledState(isDisabled: boolean): void {\n this.disabledNgControl.set(isDisabled);\n }\n\n /** @internal */\n writeValue(value?: string[] | null): void {\n this.pills.set(value?.slice() ?? []);\n }\n}\n","<!-- aria-required-children is disabled here -->\n@for (chip of pills(); track $index) {\n <si-input-pill\n role=\"option\"\n [id]=\"id() + '-pill-' + $index\"\n [class.active]=\"$index === activePillIndex()\"\n [hideClose]=\"disabled() || readonly()\"\n (deletePill)=\"remove($index)\"\n >\n {{ chip }}\n </si-input-pill>\n}\n@if (!readonly() && !disabled()) {\n <div role=\"presentation\" class=\"flex-fill\">\n <input\n #inputElement\n class=\"focus-none\"\n [id]=\"inputId()\"\n [attr.aria-label]=\"inputElementAriaLabel() | translate\"\n [placeholder]=\"(!pills().length ? (placeholder() ?? '') : '') | translate\"\n [value]=\"inputValue\"\n (keydown.enter)=\"keydownEnter($event)\"\n (keydown.backspace)=\"keydownBackspace($event)\"\n (input)=\"input()\"\n (blur)=\"blur()\"\n />\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { signal, Signal } from '@angular/core';\n\nimport {\n SiPillsInputValueHandlerTrigger,\n SiPillsInputValueParseResult\n} from './si-pills-input-value-handler';\n\nexport const SEPARATOR_REGEX = /\\s*[;,]\\s*/g;\n\nexport abstract class SiPillsInputPatternBase {\n /**\n * Regex to split the input value into segments.\n *\n * @defaultValue SEPARATOR_REGEX\n */\n readonly separatorRegex = signal(SEPARATOR_REGEX);\n /** Regex to validate an input string item. */\n readonly validationRegex?: Signal<RegExp | undefined>;\n\n /** @internal */\n handle(\n value: string,\n trigger: SiPillsInputValueHandlerTrigger\n ): SiPillsInputValueParseResult | undefined {\n const segments = value.split(this.separatorRegex()).map(s => s.trim());\n const itemRegex = this.validationRegex?.();\n if (segments.length) {\n const newValue = trigger === 'input' ? segments.pop()! : '';\n if (\n segments.every(segment => {\n return segment && (!itemRegex || segment.match(itemRegex));\n })\n ) {\n return {\n newPills: segments,\n newValue\n };\n }\n }\n\n return {\n newPills: [],\n newValue: value\n };\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive, input } from '@angular/core';\n\nimport { SiPillsInputPatternBase } from './si-pills-input-pattern-base';\nimport { SiPillsInputValueHandlerDirective } from './si-pills-input-value-handler';\n\n@Directive({\n selector: '[siPillsInputCsv]',\n providers: [\n {\n provide: SiPillsInputValueHandlerDirective,\n useExisting: SiPillsInputCsvDirective\n }\n ]\n})\nexport class SiPillsInputCsvDirective extends SiPillsInputPatternBase {\n /** @defaultValue undefined */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n override readonly validationRegex = input<RegExp>(undefined, { alias: 'pillsInputCsvItemRegex' });\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive, signal } from '@angular/core';\n\nimport { SiPillsInputPatternBase } from './si-pills-input-pattern-base';\nimport { SiPillsInputValueHandlerDirective } from './si-pills-input-value-handler';\n\n// From Angular Email Validator\nconst EMAIL_REGEX =\n /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/g;\n\n@Directive({\n selector: '[siPillsInputEmail]',\n providers: [\n {\n provide: SiPillsInputValueHandlerDirective,\n useExisting: SiPillsInputEmailDirective\n }\n ]\n})\nexport class SiPillsInputEmailDirective extends SiPillsInputPatternBase {\n /**\n * @defaultValue signal(EMAIL_REGEX).asReadonly()\n */\n override readonly validationRegex = signal(EMAIL_REGEX).asReadonly();\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiPillsInputCsvDirective } from './si-pills-input-csv.directive';\nimport { SiPillsInputEmailDirective } from './si-pills-input-email.directive';\nimport { SiPillsInputComponent } from './si-pills-input.component';\n\n@NgModule({\n imports: [SiPillsInputComponent, SiPillsInputCsvDirective, SiPillsInputEmailDirective],\n exports: [SiPillsInputComponent, SiPillsInputCsvDirective, SiPillsInputEmailDirective]\n})\nexport class SiPillsInputModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-pills-input.component';\nexport * from './si-pills-input.module';\nexport * from './si-pills-input-csv.directive';\nexport * from './si-pills-input-email.directive';\nexport * from './si-pills-input-value-handler';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"siemens-element-ng-pills-input.mjs","sources":["../../../../projects/element-ng/pills-input/si-input-pill.component.ts","../../../../projects/element-ng/pills-input/si-input-pill.component.html","../../../../projects/element-ng/pills-input/si-pills-input-value-handler.ts","../../../../projects/element-ng/pills-input/si-pills-input.component.ts","../../../../projects/element-ng/pills-input/si-pills-input.component.html","../../../../projects/element-ng/pills-input/si-pills-input-pattern-base.ts","../../../../projects/element-ng/pills-input/si-pills-input-csv.directive.ts","../../../../projects/element-ng/pills-input/si-pills-input-email.directive.ts","../../../../projects/element-ng/pills-input/si-pills-input.module.ts","../../../../projects/element-ng/pills-input/index.ts","../../../../projects/element-ng/pills-input/siemens-element-ng-pills-input.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { elementCancel } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\n\n@Component({\n selector: 'si-input-pill',\n imports: [SiIconComponent],\n templateUrl: './si-input-pill.component.html',\n styles: '.btn { cursor: pointer; }',\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n class: 'pill pe-0',\n '[class.pe-4]': 'hideClose()'\n }\n})\nexport class SiInputPillComponent {\n /** Emits when the pill's close button is clicked. */\n readonly deletePill = output<void>();\n\n /**\n * Whether to hide the close button.\n *\n * @defaultValue false\n */\n readonly hideClose = input(false);\n\n protected readonly icons = addIcons({ elementCancel });\n}\n","<div class=\"text-truncate\">\n <ng-content />\n</div>\n@if (!hideClose()) {\n <span\n class=\"ms-2 btn btn-circle btn-sm btn-tertiary-ghost\"\n aria-hidden=\"true\"\n (click)=\"deletePill.emit()\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </span>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\n\nexport interface SiPillsInputValueParseResult {\n newValue: string;\n newPills: string[];\n}\n\nexport type SiPillsInputValueHandlerTrigger = 'input' | 'keydown.enter' | 'blur';\n\n@Directive()\nexport abstract class SiPillsInputValueHandlerDirective {\n /** @internal */\n abstract handle(\n value: string,\n trigger: SiPillsInputValueHandlerTrigger\n ): SiPillsInputValueParseResult | undefined;\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnInit,\n signal,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SI_FORM_ITEM_CONTROL, SiFormItemControl } from '@siemens/element-ng/form';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiInputPillComponent } from './si-input-pill.component';\nimport {\n SiPillsInputValueHandlerDirective,\n SiPillsInputValueHandlerTrigger\n} from './si-pills-input-value-handler';\n\n@Component({\n selector: 'si-pills-input',\n imports: [SiInputPillComponent, SiTranslatePipe],\n templateUrl: './si-pills-input.component.html',\n styleUrl: './si-pills-input.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SiPillsInputComponent,\n multi: true\n },\n {\n provide: SI_FORM_ITEM_CONTROL,\n useExisting: SiPillsInputComponent\n }\n ],\n host: {\n class: 'form-control',\n role: 'listbox',\n 'aria-orientation': 'horizontal',\n '[class.disabled]': 'disabled()',\n '[attr.aria-disabled]': 'disabled()',\n '[class.readonly]': 'readonly()',\n '[attr.aria-readonly]': 'readonly()',\n // using attr so that tabindex is removed if not defined\n '[attr.tabindex]': 'tabindex()',\n '[attr.aria-activedescendant]': 'activeDescendant()',\n '[attr.aria-labelledby]': 'labelledby()',\n '[attr.aria-describedby]': 'errormessageId()',\n '(click)': 'click()',\n '(keydown.arrowLeft)': 'arrowLeft()',\n '(keydown.arrowRight)': 'arrowRight()',\n '(keydown.backspace)': 'delete()',\n '(keydown.delete)': 'delete()'\n }\n})\nexport class SiPillsInputComponent implements OnInit, ControlValueAccessor, SiFormItemControl {\n private static idCounter = 0;\n\n /**\n * The identifier of the pills-input. Will be generated if not provided.\n *\n * @defaultValue\n * ```\n * `__si-pills-input-${SiPillsInputComponent.idCounter++}`\n * ```\n */\n readonly id = input(`__si-pills-input-${SiPillsInputComponent.idCounter++}`);\n\n /**\n * The aria-label for the inner input where users enter new items.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_PILLS_INPUT.INPUT_ELEMENT_ARIA_LABEL:Create item`)\n * ```\n */\n readonly inputElementAriaLabel = input(\n t(() => $localize`:@@SI_PILLS_INPUT.INPUT_ELEMENT_ARIA_LABEL:Create item`)\n );\n\n /**\n * Whether the pills-input is disabled.\n *\n * @defaultValue false\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\n\n /**\n * Whether the pills-input is readonly\n *\n * @defaultValue false\n */\n readonly readonly = input(false, { transform: booleanAttribute });\n\n /** The placeholder to be shown if no value is currently present. */\n readonly placeholder = input<TranslatableString>();\n\n /**\n * @defaultValue\n * ```\n * `${this.id()}-label`\n * ```\n */\n readonly labelledby = input(`${this.id()}-label`);\n\n /**\n * This ID will be bound to the `aria-describedby` attribute of the pills-input.\n * Use this to reference the element containing the error message(s) for the pills-input.\n * It will be picked by the {@link SiFormItemComponent} if the pills-input is used inside a form item.\n *\n * @defaultValue\n * ```\n * `${this.id()}-errormessage`\n * ```\n */\n readonly errormessageId = input(`${this.id()}-errormessage`);\n\n protected inputValue = '';\n protected onTouched: () => void = () => {};\n protected onChange: (val: any) => void = () => {};\n\n protected readonly pills = signal<string[]>([]);\n protected readonly activePillIndex = signal<number | undefined>(undefined);\n protected readonly inputId = computed(() => `${this.id()}-input`);\n protected readonly disabled = computed(() => this.disabledInput() || this.disabledNgControl());\n protected readonly activeDescendant = computed(() => {\n const activePillIndex = this.activePillIndex();\n return activePillIndex !== undefined ? `${this.id()}-pill-${activePillIndex}` : null;\n });\n\n protected readonly tabindex = computed(() =>\n this.disabled() ? undefined : this.readonly() ? 0 : -1\n );\n private readonly inputElement = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n private readonly disabledNgControl = signal(false);\n private siPillsInputValueHandlerDirective = inject(SiPillsInputValueHandlerDirective, {\n optional: true\n });\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n ngOnInit(): void {\n this.siPillsInputValueHandlerDirective ??= {\n handle: (value, trigger) => {\n if (trigger !== 'input') {\n return {\n newPills: [value],\n newValue: ''\n };\n }\n return undefined;\n }\n };\n }\n\n protected input(): void {\n this.inputValue = this.inputElement()!.nativeElement.value;\n this.rebuildValue(this.inputValue, 'input');\n }\n\n protected click(): void {\n this.inputElement()?.nativeElement.focus();\n }\n\n protected blur(): void {\n this.rebuildValue(this.inputValue, 'blur');\n this.activePillIndex.set(undefined);\n this.onTouched();\n }\n\n protected keydownEnter(event: Event): void {\n this.rebuildValue(this.inputValue, 'keydown.enter');\n event.preventDefault();\n }\n\n protected keydownBackspace(event: Event): void {\n const count = this.pills().length;\n if (!this.inputValue && count) {\n const lastChipValue = this.pills().at(-1)!;\n this.remove(count - 1, false);\n this.inputValue = lastChipValue;\n event.preventDefault();\n }\n }\n\n protected remove(index: number, focus = true): void {\n this.pills.update(pills => pills.filter((_, pillIndex) => index !== pillIndex));\n this.onTouched();\n this.onChange(this.pills());\n if (focus) {\n this.inputElement()!.nativeElement.focus();\n }\n }\n\n private rebuildValue(value: string, trigger: SiPillsInputValueHandlerTrigger): void {\n if (value.trim()) {\n const valueParseResult = this.siPillsInputValueHandlerDirective?.handle(value, trigger);\n if (valueParseResult) {\n this.pills.update(pills => [...pills, ...valueParseResult.newPills]);\n // Doesn't update when setting to empty string.\n // Not using setTimeout to avoid flickering.\n this.cdRef.detectChanges();\n this.inputValue = valueParseResult.newValue;\n this.cdRef.detectChanges();\n\n if (valueParseResult.newPills.length) {\n this.onTouched();\n this.onChange(this.pills());\n }\n }\n }\n }\n\n protected arrowLeft(): void {\n const activePillIndex = this.activePillIndex();\n const count = this.pills().length;\n if (activePillIndex !== undefined) {\n this.activePillIndex.set(Math.max(0, activePillIndex - 1));\n } else if (!this.inputValue.length && count) {\n this.elementRef.nativeElement.focus();\n this.activePillIndex.set(count - 1);\n }\n }\n\n protected arrowRight(): void {\n const activePillIndex = this.activePillIndex();\n if (activePillIndex !== undefined) {\n this.activePillIndex.set(activePillIndex + 1);\n\n if (this.activePillIndex()! >= this.pills().length) {\n this.inputElement()?.nativeElement.focus();\n this.activePillIndex.set(undefined);\n }\n }\n }\n\n protected delete(): void {\n const activePillIndex = this.activePillIndex();\n const count = this.pills().length;\n if (activePillIndex !== undefined && !this.readonly()) {\n const targetIndex = count > 1 ? Math.min(activePillIndex, count - 2) : undefined;\n this.remove(activePillIndex, targetIndex === undefined);\n this.activePillIndex.set(targetIndex);\n }\n }\n\n /** @internal */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /** @internal */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @internal */\n setDisabledState(isDisabled: boolean): void {\n this.disabledNgControl.set(isDisabled);\n }\n\n /** @internal */\n writeValue(value?: string[] | null): void {\n this.pills.set(value?.slice() ?? []);\n }\n}\n","<!-- aria-required-children is disabled here -->\n@for (chip of pills(); track $index) {\n <si-input-pill\n role=\"option\"\n [id]=\"id() + '-pill-' + $index\"\n [class.active]=\"$index === activePillIndex()\"\n [hideClose]=\"disabled() || readonly()\"\n (deletePill)=\"remove($index)\"\n >\n {{ chip }}\n </si-input-pill>\n}\n@if (!readonly() && !disabled()) {\n <div role=\"presentation\" class=\"flex-fill\">\n <input\n #inputElement\n class=\"focus-none\"\n [id]=\"inputId()\"\n [attr.aria-label]=\"inputElementAriaLabel() | translate\"\n [placeholder]=\"(!pills().length ? (placeholder() ?? '') : '') | translate\"\n [value]=\"inputValue\"\n (keydown.enter)=\"keydownEnter($event)\"\n (keydown.backspace)=\"keydownBackspace($event)\"\n (input)=\"input()\"\n (blur)=\"blur()\"\n />\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { signal, Signal } from '@angular/core';\n\nimport {\n SiPillsInputValueHandlerTrigger,\n SiPillsInputValueParseResult\n} from './si-pills-input-value-handler';\n\nexport const SEPARATOR_REGEX = /\\s*[;,]\\s*/g;\n\nexport abstract class SiPillsInputPatternBase {\n /**\n * Regex to split the input value into segments.\n *\n * @defaultValue SEPARATOR_REGEX\n */\n readonly separatorRegex = signal(SEPARATOR_REGEX);\n /** Regex to validate an input string item. */\n readonly validationRegex?: Signal<RegExp | undefined>;\n\n /** @internal */\n handle(\n value: string,\n trigger: SiPillsInputValueHandlerTrigger\n ): SiPillsInputValueParseResult | undefined {\n const segments = value.split(this.separatorRegex());\n const itemRegex = this.validationRegex?.();\n if (segments.length) {\n const newValue = trigger === 'input' ? segments.pop()! : '';\n const newPills = segments.map(segment => segment.trim());\n if (\n newPills.every(segment => {\n return segment && (!itemRegex || segment.match(itemRegex));\n })\n ) {\n return {\n newPills,\n newValue\n };\n }\n }\n\n return {\n newPills: [],\n newValue: value\n };\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive, input } from '@angular/core';\n\nimport { SiPillsInputPatternBase } from './si-pills-input-pattern-base';\nimport { SiPillsInputValueHandlerDirective } from './si-pills-input-value-handler';\n\n@Directive({\n selector: '[siPillsInputCsv]',\n providers: [\n {\n provide: SiPillsInputValueHandlerDirective,\n useExisting: SiPillsInputCsvDirective\n }\n ]\n})\nexport class SiPillsInputCsvDirective extends SiPillsInputPatternBase {\n /** @defaultValue undefined */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n override readonly validationRegex = input<RegExp>(undefined, { alias: 'pillsInputCsvItemRegex' });\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive, signal } from '@angular/core';\n\nimport { SiPillsInputPatternBase } from './si-pills-input-pattern-base';\nimport { SiPillsInputValueHandlerDirective } from './si-pills-input-value-handler';\n\n// From Angular Email Validator\nconst EMAIL_REGEX =\n /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/g;\n\n@Directive({\n selector: '[siPillsInputEmail]',\n providers: [\n {\n provide: SiPillsInputValueHandlerDirective,\n useExisting: SiPillsInputEmailDirective\n }\n ]\n})\nexport class SiPillsInputEmailDirective extends SiPillsInputPatternBase {\n /**\n * @defaultValue signal(EMAIL_REGEX).asReadonly()\n */\n override readonly validationRegex = signal(EMAIL_REGEX).asReadonly();\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiPillsInputCsvDirective } from './si-pills-input-csv.directive';\nimport { SiPillsInputEmailDirective } from './si-pills-input-email.directive';\nimport { SiPillsInputComponent } from './si-pills-input.component';\n\n@NgModule({\n imports: [SiPillsInputComponent, SiPillsInputCsvDirective, SiPillsInputEmailDirective],\n exports: [SiPillsInputComponent, SiPillsInputCsvDirective, SiPillsInputEmailDirective]\n})\nexport class SiPillsInputModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-pills-input.component';\nexport * from './si-pills-input.module';\nexport * from './si-pills-input-csv.directive';\nexport * from './si-pills-input-email.directive';\nexport * from './si-pills-input-value-handler';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import { NgTemplateOutlet } from '@angular/common';
8
8
  import { SiIconComponent } from '@siemens/element-ng/icon';
9
9
 
10
10
  class PopoverComponent {
11
- /** Text or template content displayed in the popover. */
11
+ /** Text or template content displayed in the popover. Strings are rendered as HTML and sanitized by Angular. */
12
12
  popover = input(/* @ts-ignore */
13
13
  ...(ngDevMode ? [undefined, { debugName: "popover" }] : /* istanbul ignore next */ []));
14
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-popover-legacy.mjs","sources":["../../../../projects/element-ng/popover-legacy/si-popover.component.ts","../../../../projects/element-ng/popover-legacy/si-popover.component.html","../../../../projects/element-ng/popover-legacy/si-popover-legacy.directive.ts","../../../../projects/element-ng/popover-legacy/si-popover-legacy.module.ts","../../../../projects/element-ng/popover-legacy/index.ts","../../../../projects/element-ng/popover-legacy/siemens-element-ng-popover-legacy.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n OnInit,\n signal,\n TemplateRef\n} from '@angular/core';\nimport { calculateOverlayArrowPosition, OverlayArrowPosition } from '@siemens/element-ng/common';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\n\n@Component({\n selector: 'si-popover',\n imports: [NgTemplateOutlet, SiIconComponent],\n templateUrl: './si-popover.component.html',\n changeDetection: ChangeDetectionStrategy.Eager\n})\nexport class PopoverComponent implements OnInit {\n /** Text or template content displayed in the popover. */\n readonly popover = input<string | TemplateRef<any>>();\n /**\n * Title displayed at the top of the popover.\n *\n * @defaultValue ''\n */\n readonly popoverTitle = input('');\n /**\n * CSS class applied to the popover container.\n *\n * @defaultValue ''\n */\n readonly containerClass = input('');\n /** Icon displayed beside the popover title. */\n readonly icon = input<string>();\n /** Context provided to the popover template. */\n readonly popoverContext = input<unknown>();\n\n protected readonly positionClass = signal('');\n protected readonly arrowPos = signal<OverlayArrowPosition | undefined>(undefined);\n protected popoverTemplate: TemplateRef<any> | null = null;\n\n private elementRef = inject(ElementRef);\n\n ngOnInit(): void {\n const popover = this.popover();\n if (popover instanceof TemplateRef) {\n this.popoverTemplate = popover;\n }\n }\n\n /** @internal */\n updateArrow(change: ConnectedOverlayPositionChange, anchor?: ElementRef): void {\n const positionClass = `popover-${change.connectionPair.overlayX}-${change.connectionPair.overlayY}`;\n // need two updates as class changes affect the position\n this.positionClass.set(positionClass);\n const arrowPos = calculateOverlayArrowPosition(change, this.elementRef, anchor);\n this.arrowPos.set(arrowPos);\n }\n}\n","<div\n class=\"popover position-relative focus-outline-padding\"\n [class]=\"[containerClass(), positionClass()]\"\n>\n <div\n class=\"popover-arrow\"\n [style.left.px]=\"arrowPos()?.left\"\n [style.right.px]=\"arrowPos()?.right\"\n ></div>\n @if (popoverTitle()) {\n <div class=\"popover-header\">\n @let iconValue = icon();\n @if (iconValue) {\n <si-icon class=\"icon me-2\" [icon]=\"iconValue\" />\n }\n <span class=\"si-h5\">{{ popoverTitle() }}</span>\n </div>\n }\n <div class=\"popover-body\">\n @if (!popoverTemplate) {\n <div class=\"si-body\" [innerHTML]=\"popover()\"></div>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate\"\n [ngTemplateOutletContext]=\"popoverContext()\"\n />\n }\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n booleanAttribute,\n ComponentRef,\n computed,\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n TemplateRef\n} from '@angular/core';\nimport { getOverlay, getPositionStrategy, hasTrigger, positions } from '@siemens/element-ng/common';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { PopoverComponent } from './si-popover.component';\n\n/**\n * @deprecated Use {@link SiPopoverDirective} instead.\n */\n@Directive({\n selector: '[siPopoverLegacy]',\n exportAs: 'si-popover'\n})\nexport class SiPopoverLegacyDirective implements OnInit, OnDestroy {\n /**\n * The popover text to be displayed\n */\n readonly siPopoverLegacy = input<string | TemplateRef<any>>();\n\n /**\n * The placement of the popover. One of 'top', 'start', end', 'bottom'\n *\n * @defaultValue 'auto'\n */\n readonly placement = input<keyof typeof positions>('auto');\n\n readonly placementInternal = computed(() => {\n if (\n this.placement() !== 'top' &&\n this.placement() !== 'bottom' &&\n this.placement() !== 'start' &&\n this.placement() !== 'end'\n ) {\n return 'auto';\n } else {\n return this.placement();\n }\n });\n\n /**\n * The trigger event(s) on which the popover shall be displayed.\n * Applications can pass multiple triggers separated by space.\n * Supported events are 'click', 'hover' and 'focus'.\n *\n * **Limitations:**\n * Safari browsers do not raise a 'focus' event on host element click and 'focus'\n * on tab key has to be enabled in the advanced browser settings.\n *\n * @defaultValue 'click'\n */\n readonly triggers = input('click');\n\n /**\n * The title to be displayed on top for the popover\n *\n * @defaultValue ''\n */\n readonly popoverTitle = input('');\n\n /**\n * The class that will be applied to container of the popover\n *\n * @defaultValue ''\n */\n readonly containerClass = input('');\n\n /**\n * The flag determines whether to close popover on clicking outside\n *\n * @defaultValue true\n */\n readonly outsideClick = input(true, { transform: booleanAttribute });\n\n /**\n * The icon to be displayed besides popover title\n */\n readonly icon = input<string>();\n\n /**\n * Specify whether or not the popover is currently shown\n *\n * @defaultValue false\n */\n readonly isOpen = input<boolean | undefined, unknown>(false, { transform: booleanAttribute });\n\n /**\n * The context for the attached template\n */\n readonly popoverContext = input<unknown>();\n\n /**\n * Emits an event when the popover is shown\n */\n readonly shown = output<void>();\n\n /**\n * Emits an event when the popover is hidden\n */\n readonly hidden = output<void>();\n\n private overlayref?: OverlayRef;\n private overlay = inject(Overlay);\n private elementRef = inject(ElementRef);\n private destroyer = new Subject<void>();\n\n ngOnInit(): void {\n if (this.isOpen()) {\n this.show();\n }\n }\n\n ngOnDestroy(): void {\n this.overlayref?.dispose();\n this.destroyer.next();\n this.destroyer.complete();\n }\n\n /**\n * Displays popover and emits 'shown' event.\n */\n show(): void {\n if (!this.overlayref?.hasAttached()) {\n const triggers = this.triggers();\n const backdrop =\n this.outsideClick() && !hasTrigger('focus', triggers) && !hasTrigger('hover', triggers);\n this.overlayref = getOverlay(\n this.elementRef,\n this.overlay,\n backdrop,\n this.placementInternal()\n );\n if (backdrop) {\n this.overlayref\n .backdropClick()\n .pipe(takeUntil(this.destroyer))\n .subscribe(() => this.hide());\n }\n }\n\n if (this.overlayref.hasAttached()) {\n return;\n }\n const popoverPortal = new ComponentPortal(PopoverComponent);\n const popoverRef: ComponentRef<PopoverComponent> = this.overlayref.attach(popoverPortal);\n\n popoverRef.setInput('popover', this.siPopoverLegacy());\n popoverRef.setInput('popoverTitle', this.popoverTitle());\n popoverRef.setInput('icon', this.icon());\n popoverRef.setInput('containerClass', this.containerClass());\n popoverRef.setInput('popoverContext', this.popoverContext());\n\n const positionStrategy = getPositionStrategy(this.overlayref);\n positionStrategy?.positionChanges\n .pipe(takeUntil(this.destroyer))\n .subscribe(change => popoverRef.instance.updateArrow(change, this.elementRef));\n\n this.shown.emit();\n }\n\n /**\n * Hides the popover and emits 'hidden' event.\n */\n hide(): void {\n if (this.overlayref?.hasAttached()) {\n this.overlayref?.detach();\n this.hidden.emit();\n this.destroyer.next();\n }\n }\n\n /**\n * Updates the position of the popover based on the position strategy.\n */\n updatePosition(): void {\n this.overlayref?.updatePosition();\n }\n\n @HostListener('mouseenter', ['\"hover\"'])\n @HostListener('mouseleave', ['\"hover\"'])\n @HostListener('focus', ['\"focus\"'])\n @HostListener('click', ['\"click\"'])\n protected onTrigger(trigger: string): void {\n if (hasTrigger(trigger, this.triggers())) {\n if (this.overlayref?.hasAttached()) {\n this.hide();\n } else {\n this.show();\n }\n }\n }\n\n @HostListener('touchstart')\n @HostListener('focusout')\n protected focusOut(): void {\n if (hasTrigger('focus', this.triggers())) {\n if (this.outsideClick()) {\n this.hide();\n }\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiPopoverLegacyDirective } from './si-popover-legacy.directive';\n\n/**\n * @deprecated Use {@link SiPopoverDirective} instead.\n */\n@NgModule({\n imports: [SiPopoverLegacyDirective],\n exports: [SiPopoverLegacyDirective]\n})\nexport class SiPopoverLegacyModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-popover-legacy.directive';\nexport * from './si-popover-legacy.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"siemens-element-ng-popover-legacy.mjs","sources":["../../../../projects/element-ng/popover-legacy/si-popover.component.ts","../../../../projects/element-ng/popover-legacy/si-popover.component.html","../../../../projects/element-ng/popover-legacy/si-popover-legacy.directive.ts","../../../../projects/element-ng/popover-legacy/si-popover-legacy.module.ts","../../../../projects/element-ng/popover-legacy/index.ts","../../../../projects/element-ng/popover-legacy/siemens-element-ng-popover-legacy.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n OnInit,\n signal,\n TemplateRef\n} from '@angular/core';\nimport { calculateOverlayArrowPosition, OverlayArrowPosition } from '@siemens/element-ng/common';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\n\n@Component({\n selector: 'si-popover',\n imports: [NgTemplateOutlet, SiIconComponent],\n templateUrl: './si-popover.component.html',\n changeDetection: ChangeDetectionStrategy.Eager\n})\nexport class PopoverComponent implements OnInit {\n /** Text or template content displayed in the popover. Strings are rendered as HTML and sanitized by Angular. */\n readonly popover = input<string | TemplateRef<any>>();\n /**\n * Title displayed at the top of the popover.\n *\n * @defaultValue ''\n */\n readonly popoverTitle = input('');\n /**\n * CSS class applied to the popover container.\n *\n * @defaultValue ''\n */\n readonly containerClass = input('');\n /** Icon displayed beside the popover title. */\n readonly icon = input<string>();\n /** Context provided to the popover template. */\n readonly popoverContext = input<unknown>();\n\n protected readonly positionClass = signal('');\n protected readonly arrowPos = signal<OverlayArrowPosition | undefined>(undefined);\n protected popoverTemplate: TemplateRef<any> | null = null;\n\n private elementRef = inject(ElementRef);\n\n ngOnInit(): void {\n const popover = this.popover();\n if (popover instanceof TemplateRef) {\n this.popoverTemplate = popover;\n }\n }\n\n /** @internal */\n updateArrow(change: ConnectedOverlayPositionChange, anchor?: ElementRef): void {\n const positionClass = `popover-${change.connectionPair.overlayX}-${change.connectionPair.overlayY}`;\n // need two updates as class changes affect the position\n this.positionClass.set(positionClass);\n const arrowPos = calculateOverlayArrowPosition(change, this.elementRef, anchor);\n this.arrowPos.set(arrowPos);\n }\n}\n","<div\n class=\"popover position-relative focus-outline-padding\"\n [class]=\"[containerClass(), positionClass()]\"\n>\n <div\n class=\"popover-arrow\"\n [style.left.px]=\"arrowPos()?.left\"\n [style.right.px]=\"arrowPos()?.right\"\n ></div>\n @if (popoverTitle()) {\n <div class=\"popover-header\">\n @let iconValue = icon();\n @if (iconValue) {\n <si-icon class=\"icon me-2\" [icon]=\"iconValue\" />\n }\n <span class=\"si-h5\">{{ popoverTitle() }}</span>\n </div>\n }\n <div class=\"popover-body\">\n @if (!popoverTemplate) {\n <div class=\"si-body\" [innerHTML]=\"popover()\"></div>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate\"\n [ngTemplateOutletContext]=\"popoverContext()\"\n />\n }\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n booleanAttribute,\n ComponentRef,\n computed,\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n TemplateRef\n} from '@angular/core';\nimport { getOverlay, getPositionStrategy, hasTrigger, positions } from '@siemens/element-ng/common';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { PopoverComponent } from './si-popover.component';\n\n/**\n * @deprecated Use {@link SiPopoverDirective} instead.\n */\n@Directive({\n selector: '[siPopoverLegacy]',\n exportAs: 'si-popover'\n})\nexport class SiPopoverLegacyDirective implements OnInit, OnDestroy {\n /**\n * The popover text to be displayed\n */\n readonly siPopoverLegacy = input<string | TemplateRef<any>>();\n\n /**\n * The placement of the popover. One of 'top', 'start', end', 'bottom'\n *\n * @defaultValue 'auto'\n */\n readonly placement = input<keyof typeof positions>('auto');\n\n readonly placementInternal = computed(() => {\n if (\n this.placement() !== 'top' &&\n this.placement() !== 'bottom' &&\n this.placement() !== 'start' &&\n this.placement() !== 'end'\n ) {\n return 'auto';\n } else {\n return this.placement();\n }\n });\n\n /**\n * The trigger event(s) on which the popover shall be displayed.\n * Applications can pass multiple triggers separated by space.\n * Supported events are 'click', 'hover' and 'focus'.\n *\n * **Limitations:**\n * Safari browsers do not raise a 'focus' event on host element click and 'focus'\n * on tab key has to be enabled in the advanced browser settings.\n *\n * @defaultValue 'click'\n */\n readonly triggers = input('click');\n\n /**\n * The title to be displayed on top for the popover\n *\n * @defaultValue ''\n */\n readonly popoverTitle = input('');\n\n /**\n * The class that will be applied to container of the popover\n *\n * @defaultValue ''\n */\n readonly containerClass = input('');\n\n /**\n * The flag determines whether to close popover on clicking outside\n *\n * @defaultValue true\n */\n readonly outsideClick = input(true, { transform: booleanAttribute });\n\n /**\n * The icon to be displayed besides popover title\n */\n readonly icon = input<string>();\n\n /**\n * Specify whether or not the popover is currently shown\n *\n * @defaultValue false\n */\n readonly isOpen = input<boolean | undefined, unknown>(false, { transform: booleanAttribute });\n\n /**\n * The context for the attached template\n */\n readonly popoverContext = input<unknown>();\n\n /**\n * Emits an event when the popover is shown\n */\n readonly shown = output<void>();\n\n /**\n * Emits an event when the popover is hidden\n */\n readonly hidden = output<void>();\n\n private overlayref?: OverlayRef;\n private overlay = inject(Overlay);\n private elementRef = inject(ElementRef);\n private destroyer = new Subject<void>();\n\n ngOnInit(): void {\n if (this.isOpen()) {\n this.show();\n }\n }\n\n ngOnDestroy(): void {\n this.overlayref?.dispose();\n this.destroyer.next();\n this.destroyer.complete();\n }\n\n /**\n * Displays popover and emits 'shown' event.\n */\n show(): void {\n if (!this.overlayref?.hasAttached()) {\n const triggers = this.triggers();\n const backdrop =\n this.outsideClick() && !hasTrigger('focus', triggers) && !hasTrigger('hover', triggers);\n this.overlayref = getOverlay(\n this.elementRef,\n this.overlay,\n backdrop,\n this.placementInternal()\n );\n if (backdrop) {\n this.overlayref\n .backdropClick()\n .pipe(takeUntil(this.destroyer))\n .subscribe(() => this.hide());\n }\n }\n\n if (this.overlayref.hasAttached()) {\n return;\n }\n const popoverPortal = new ComponentPortal(PopoverComponent);\n const popoverRef: ComponentRef<PopoverComponent> = this.overlayref.attach(popoverPortal);\n\n popoverRef.setInput('popover', this.siPopoverLegacy());\n popoverRef.setInput('popoverTitle', this.popoverTitle());\n popoverRef.setInput('icon', this.icon());\n popoverRef.setInput('containerClass', this.containerClass());\n popoverRef.setInput('popoverContext', this.popoverContext());\n\n const positionStrategy = getPositionStrategy(this.overlayref);\n positionStrategy?.positionChanges\n .pipe(takeUntil(this.destroyer))\n .subscribe(change => popoverRef.instance.updateArrow(change, this.elementRef));\n\n this.shown.emit();\n }\n\n /**\n * Hides the popover and emits 'hidden' event.\n */\n hide(): void {\n if (this.overlayref?.hasAttached()) {\n this.overlayref?.detach();\n this.hidden.emit();\n this.destroyer.next();\n }\n }\n\n /**\n * Updates the position of the popover based on the position strategy.\n */\n updatePosition(): void {\n this.overlayref?.updatePosition();\n }\n\n @HostListener('mouseenter', ['\"hover\"'])\n @HostListener('mouseleave', ['\"hover\"'])\n @HostListener('focus', ['\"focus\"'])\n @HostListener('click', ['\"click\"'])\n protected onTrigger(trigger: string): void {\n if (hasTrigger(trigger, this.triggers())) {\n if (this.overlayref?.hasAttached()) {\n this.hide();\n } else {\n this.show();\n }\n }\n }\n\n @HostListener('touchstart')\n @HostListener('focusout')\n protected focusOut(): void {\n if (hasTrigger('focus', this.triggers())) {\n if (this.outsideClick()) {\n this.hide();\n }\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiPopoverLegacyDirective } from './si-popover-legacy.directive';\n\n/**\n * @deprecated Use {@link SiPopoverDirective} instead.\n */\n@NgModule({\n imports: [SiPopoverLegacyDirective],\n exports: [SiPopoverLegacyDirective]\n})\nexport class SiPopoverLegacyModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-popover-legacy.directive';\nexport * from './si-popover-legacy.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Overlay } from '@angular/cdk/overlay';
2
2
  import { ComponentPortal } from '@angular/cdk/portal';
3
3
  import * as i0 from '@angular/core';
4
- import { input, viewChild, signal, computed, TemplateRef, inject, Injector, ElementRef, DOCUMENT, ChangeDetectionStrategy, Component, output, Directive } from '@angular/core';
4
+ import { input, viewChild, signal, computed, TemplateRef, inject, Injector, ElementRef, DOCUMENT, ChangeDetectionStrategy, Component, output, Directive, DestroyRef } from '@angular/core';
5
5
  import { calculateOverlayArrowPosition, defaultConnectedOverlayScrollStrategy, positions, isRTL } from '@siemens/element-ng/common';
6
6
  import { Subject, takeUntil } from 'rxjs';
7
7
  import { ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';
@@ -21,10 +21,21 @@ class PopoverComponent {
21
21
  ...(ngDevMode ? [{ debugName: "popoverWrapper" }] : /* istanbul ignore next */ []));
22
22
  /** @internal */
23
23
  labelledBy;
24
+ /**
25
+ * This property is set by the {@link SiPopoverTitleDirective} if present.
26
+ *
27
+ * @internal
28
+ */
29
+ hasTemplateTitle = signal(false, /* @ts-ignore */
30
+ ...(ngDevMode ? [{ debugName: "hasTemplateTitle" }] : /* istanbul ignore next */ []));
24
31
  /** @internal */
25
32
  describedBy;
26
33
  positionClass = signal('', /* @ts-ignore */
27
34
  ...(ngDevMode ? [{ debugName: "positionClass" }] : /* istanbul ignore next */ []));
35
+ ariaLabelledBy = computed(() => this.popoverDirective().title() || this.hasTemplateTitle()
36
+ ? this.labelledBy
37
+ : this.popoverDirective().id(), /* @ts-ignore */
38
+ ...(ngDevMode ? [{ debugName: "ariaLabelledBy" }] : /* istanbul ignore next */ []));
28
39
  arrowPos = signal(undefined, /* @ts-ignore */
29
40
  ...(ngDevMode ? [{ debugName: "arrowPos" }] : /* istanbul ignore next */ []));
30
41
  description = computed(() => {
@@ -37,6 +48,7 @@ class PopoverComponent {
37
48
  elementRef = inject(ElementRef);
38
49
  focusTrapFactory = inject(ConfigurableFocusTrapFactory);
39
50
  focusTrap;
51
+ focusTimeoutId;
40
52
  previouslyActiveElement = inject(DOCUMENT).activeElement;
41
53
  ngOnInit() {
42
54
  const popoverDirective = this.popoverDirective();
@@ -49,6 +61,7 @@ class PopoverComponent {
49
61
  this.applyFocus();
50
62
  }
51
63
  ngOnDestroy() {
64
+ clearTimeout(this.focusTimeoutId);
52
65
  this.focusTrap?.destroy();
53
66
  if (this.previouslyActiveElement &&
54
67
  'focus' in this.previouslyActiveElement &&
@@ -69,7 +82,7 @@ class PopoverComponent {
69
82
  }
70
83
  applyFocus() {
71
84
  // Using setTimeout ensures that SR first read `expanded` before we move the focus.
72
- setTimeout(async () => {
85
+ this.focusTimeoutId = setTimeout(async () => {
73
86
  const popoverWrapperEl = this.popoverWrapper().nativeElement;
74
87
  this.focusTrap = this.focusTrapFactory.create(this.popoverWrapper().nativeElement);
75
88
  const moved = await this.focusTrap.focusFirstTabbableElementWhenReady();
@@ -80,13 +93,13 @@ class PopoverComponent {
80
93
  });
81
94
  }
82
95
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: PopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
83
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: PopoverComponent, isStandalone: true, selector: "si-popover", inputs: { popoverDirective: { classPropertyName: "popoverDirective", publicName: "popoverDirective", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "id": "this.popoverDirective().popoverId" } }, viewQueries: [{ propertyName: "popoverWrapper", first: true, predicate: ["popoverWrapper"], descendants: true, isSignal: true }], ngImport: i0, template: "@let popover = popoverDirective();\n<div\n #popoverWrapper\n role=\"dialog\"\n [class]=\"[\n 'popover',\n 'position-relative',\n 'focus-inside',\n positionClass(),\n popover.containerClass()\n ]\"\n [attr.aria-labelledby]=\"labelledBy\"\n [attr.aria-describedby]=\"describedBy\"\n (keydown.escape)=\"hide()\"\n>\n <div\n class=\"popover-arrow\"\n [style.left.px]=\"arrowPos()?.left\"\n [style.right.px]=\"arrowPos()?.right\"\n ></div>\n @if (popover.title()) {\n <div class=\"popover-header\">\n @let iconValue = popover.icon();\n @if (iconValue) {\n <si-icon class=\"icon me-1\" [icon]=\"iconValue\" />\n }\n <span class=\"si-h5\" [id]=\"labelledBy\">{{ popover.title() | translate }}</span>\n </div>\n }\n @if (!popoverTemplate) {\n <div class=\"popover-body\">\n <div class=\"si-body\" [id]=\"describedBy\">{{ description() | translate }}</div>\n </div>\n } @else {\n <!-- If title is already provided, we wrap the template with the `popover-body` class\n since the template may not be in the popover body directive. Also used by SiHelpButtonComponent -->\n @if (popover.title()) {\n <div class=\"popover-body\">\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate\"\n [ngTemplateOutletContext]=\"popover.context()\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n </div>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate\"\n [ngTemplateOutletContext]=\"popover.context()\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n }\n }\n</div>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager });
96
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: PopoverComponent, isStandalone: true, selector: "si-popover", inputs: { popoverDirective: { classPropertyName: "popoverDirective", publicName: "popoverDirective", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "id": "this.popoverDirective().popoverId" } }, viewQueries: [{ propertyName: "popoverWrapper", first: true, predicate: ["popoverWrapper"], descendants: true, isSignal: true }], ngImport: i0, template: "@let popover = popoverDirective();\n<div\n #popoverWrapper\n role=\"dialog\"\n [class]=\"[\n 'popover',\n 'position-relative',\n 'focus-inside',\n positionClass(),\n popover.containerClass()\n ]\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"describedBy\"\n (keydown.escape)=\"hide()\"\n>\n <div\n class=\"popover-arrow\"\n [style.left.px]=\"arrowPos()?.left\"\n [style.right.px]=\"arrowPos()?.right\"\n ></div>\n @if (popover.title()) {\n <div class=\"popover-header\">\n @let iconValue = popover.icon();\n @if (iconValue) {\n <si-icon class=\"icon me-1\" [icon]=\"iconValue\" />\n }\n <span class=\"si-h5\" [id]=\"labelledBy\">{{ popover.title() | translate }}</span>\n </div>\n }\n @if (!popoverTemplate) {\n <div class=\"popover-body\">\n <div class=\"si-body\" [id]=\"describedBy\">{{ description() | translate }}</div>\n </div>\n } @else {\n <!-- If title is already provided, we wrap the template with the `popover-body` class\n since the template may not be in the popover body directive. Also used by SiHelpButtonComponent -->\n @if (popover.title()) {\n <div class=\"popover-body\">\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate\"\n [ngTemplateOutletContext]=\"popover.context()\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n </div>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate\"\n [ngTemplateOutletContext]=\"popover.context()\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n }\n }\n</div>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager });
84
97
  }
85
98
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: PopoverComponent, decorators: [{
86
99
  type: Component,
87
100
  args: [{ selector: 'si-popover', imports: [NgTemplateOutlet, SiIconComponent, SiTranslatePipe], changeDetection: ChangeDetectionStrategy.Eager, host: {
88
101
  '[id]': 'this.popoverDirective().popoverId'
89
- }, template: "@let popover = popoverDirective();\n<div\n #popoverWrapper\n role=\"dialog\"\n [class]=\"[\n 'popover',\n 'position-relative',\n 'focus-inside',\n positionClass(),\n popover.containerClass()\n ]\"\n [attr.aria-labelledby]=\"labelledBy\"\n [attr.aria-describedby]=\"describedBy\"\n (keydown.escape)=\"hide()\"\n>\n <div\n class=\"popover-arrow\"\n [style.left.px]=\"arrowPos()?.left\"\n [style.right.px]=\"arrowPos()?.right\"\n ></div>\n @if (popover.title()) {\n <div class=\"popover-header\">\n @let iconValue = popover.icon();\n @if (iconValue) {\n <si-icon class=\"icon me-1\" [icon]=\"iconValue\" />\n }\n <span class=\"si-h5\" [id]=\"labelledBy\">{{ popover.title() | translate }}</span>\n </div>\n }\n @if (!popoverTemplate) {\n <div class=\"popover-body\">\n <div class=\"si-body\" [id]=\"describedBy\">{{ description() | translate }}</div>\n </div>\n } @else {\n <!-- If title is already provided, we wrap the template with the `popover-body` class\n since the template may not be in the popover body directive. Also used by SiHelpButtonComponent -->\n @if (popover.title()) {\n <div class=\"popover-body\">\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate\"\n [ngTemplateOutletContext]=\"popover.context()\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n </div>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate\"\n [ngTemplateOutletContext]=\"popover.context()\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n }\n }\n</div>\n" }]
102
+ }, template: "@let popover = popoverDirective();\n<div\n #popoverWrapper\n role=\"dialog\"\n [class]=\"[\n 'popover',\n 'position-relative',\n 'focus-inside',\n positionClass(),\n popover.containerClass()\n ]\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"describedBy\"\n (keydown.escape)=\"hide()\"\n>\n <div\n class=\"popover-arrow\"\n [style.left.px]=\"arrowPos()?.left\"\n [style.right.px]=\"arrowPos()?.right\"\n ></div>\n @if (popover.title()) {\n <div class=\"popover-header\">\n @let iconValue = popover.icon();\n @if (iconValue) {\n <si-icon class=\"icon me-1\" [icon]=\"iconValue\" />\n }\n <span class=\"si-h5\" [id]=\"labelledBy\">{{ popover.title() | translate }}</span>\n </div>\n }\n @if (!popoverTemplate) {\n <div class=\"popover-body\">\n <div class=\"si-body\" [id]=\"describedBy\">{{ description() | translate }}</div>\n </div>\n } @else {\n <!-- If title is already provided, we wrap the template with the `popover-body` class\n since the template may not be in the popover body directive. Also used by SiHelpButtonComponent -->\n @if (popover.title()) {\n <div class=\"popover-body\">\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate\"\n [ngTemplateOutletContext]=\"popover.context()\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n </div>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate\"\n [ngTemplateOutletContext]=\"popover.context()\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n }\n }\n</div>\n" }]
90
103
  }], propDecorators: { popoverDirective: [{ type: i0.Input, args: [{ isSignal: true, alias: "popoverDirective", required: true }] }], popoverWrapper: [{ type: i0.ViewChild, args: ['popoverWrapper', { isSignal: true }] }] } });
91
104
 
92
105
  /**
@@ -156,6 +169,16 @@ class SiPopoverDirective {
156
169
  popoverCounter = SiPopoverDirective.idCounter++;
157
170
  /** @internal */
158
171
  popoverId = `__popover_${this.popoverCounter}`;
172
+ /**
173
+ * The ID of the trigger element.
174
+ *
175
+ * @defaultValue
176
+ * ```
177
+ * `__popover-trigger_${this.popoverCounter}`
178
+ * ```
179
+ */
180
+ id = input(`__popover-trigger_${this.popoverCounter}`, /* @ts-ignore */
181
+ ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
159
182
  /** @internal */
160
183
  isOpen = signal(false, /* @ts-ignore */
161
184
  ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
@@ -240,20 +263,22 @@ class SiPopoverDirective {
240
263
  return overlayRef;
241
264
  }
242
265
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiPopoverDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
243
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.8", type: SiPopoverDirective, isStandalone: true, selector: "[siPopover]", inputs: { siPopover: { classPropertyName: "siPopover", publicName: "siPopover", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "siPopoverPlacement", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "siPopoverTitle", isSignal: true, isRequired: false, transformFunction: null }, containerClass: { classPropertyName: "containerClass", publicName: "siPopoverContainerClass", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "siPopoverIcon", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "siPopoverContext", isSignal: true, isRequired: false, transformFunction: null }, scrollStrategy: { classPropertyName: "scrollStrategy", publicName: "siPopoverScrollStrategy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibilityChange: "siPopoverVisibilityChange" }, host: { listeners: { "click": "onClick()" }, properties: { "attr.aria-expanded": "isOpen()", "attr.aria-controls": "popoverId" } }, exportAs: ["si-popover"], ngImport: i0 });
266
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.8", type: SiPopoverDirective, isStandalone: true, selector: "[siPopover]", inputs: { siPopover: { classPropertyName: "siPopover", publicName: "siPopover", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "siPopoverPlacement", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "siPopoverTitle", isSignal: true, isRequired: false, transformFunction: null }, containerClass: { classPropertyName: "containerClass", publicName: "siPopoverContainerClass", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "siPopoverIcon", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "siPopoverContext", isSignal: true, isRequired: false, transformFunction: null }, scrollStrategy: { classPropertyName: "scrollStrategy", publicName: "siPopoverScrollStrategy", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibilityChange: "siPopoverVisibilityChange" }, host: { attributes: { "aria-haspopup": "dialog" }, listeners: { "click": "onClick()" }, properties: { "id": "id()", "attr.aria-expanded": "isOpen()", "attr.aria-controls": "popoverId" } }, exportAs: ["si-popover"], ngImport: i0 });
244
267
  }
245
268
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiPopoverDirective, decorators: [{
246
269
  type: Directive,
247
270
  args: [{
248
271
  selector: '[siPopover]',
249
272
  host: {
273
+ '[id]': 'id()',
274
+ 'aria-haspopup': 'dialog',
250
275
  '[attr.aria-expanded]': 'isOpen()',
251
276
  '[attr.aria-controls]': 'popoverId',
252
277
  '(click)': 'onClick()'
253
278
  },
254
279
  exportAs: 'si-popover'
255
280
  }]
256
- }], propDecorators: { siPopover: [{ type: i0.Input, args: [{ isSignal: true, alias: "siPopover", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "siPopoverPlacement", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "siPopoverTitle", required: false }] }], containerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "siPopoverContainerClass", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "siPopoverIcon", required: false }] }], context: [{ type: i0.Input, args: [{ isSignal: true, alias: "siPopoverContext", required: false }] }], scrollStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "siPopoverScrollStrategy", required: false }] }], visibilityChange: [{ type: i0.Output, args: ["siPopoverVisibilityChange"] }] } });
281
+ }], propDecorators: { siPopover: [{ type: i0.Input, args: [{ isSignal: true, alias: "siPopover", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "siPopoverPlacement", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "siPopoverTitle", required: false }] }], containerClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "siPopoverContainerClass", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "siPopoverIcon", required: false }] }], context: [{ type: i0.Input, args: [{ isSignal: true, alias: "siPopoverContext", required: false }] }], scrollStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "siPopoverScrollStrategy", required: false }] }], visibilityChange: [{ type: i0.Output, args: ["siPopoverVisibilityChange"] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }] } });
257
282
 
258
283
  /**
259
284
  * Copyright (c) Siemens 2016 - 2026
@@ -261,6 +286,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
261
286
  */
262
287
  class SiPopoverTitleDirective {
263
288
  popover = inject(PopoverComponent);
289
+ constructor() {
290
+ this.popover.hasTemplateTitle.set(true);
291
+ inject(DestroyRef).onDestroy(() => this.popover.hasTemplateTitle.set(false));
292
+ }
264
293
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiPopoverTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
265
294
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: SiPopoverTitleDirective, isStandalone: true, selector: "si-popover-title", host: { properties: { "id": "this.popover.labelledBy" }, classAttribute: "popover-header" }, ngImport: i0 });
266
295
  }
@@ -274,7 +303,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
274
303
  'class': 'popover-header'
275
304
  }
276
305
  }]
277
- }] });
306
+ }], ctorParameters: () => [] });
278
307
 
279
308
  /**
280
309
  * Copyright (c) Siemens 2016 - 2026
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-popover.mjs","sources":["../../../../projects/element-ng/popover/si-popover.component.ts","../../../../projects/element-ng/popover/si-popover.component.html","../../../../projects/element-ng/popover/si-popover.directive.ts","../../../../projects/element-ng/popover/si-popover-title.directive.ts","../../../../projects/element-ng/popover/si-popover-body.directive.ts","../../../../projects/element-ng/popover/index.ts","../../../../projects/element-ng/popover/siemens-element-ng-popover.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ElementRef,\n inject,\n Injector,\n input,\n OnDestroy,\n OnInit,\n signal,\n TemplateRef,\n viewChild,\n DOCUMENT,\n computed,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { calculateOverlayArrowPosition, OverlayArrowPosition } from '@siemens/element-ng/common';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { SiPopoverDirective } from './si-popover.directive';\n\n@Component({\n selector: 'si-popover',\n imports: [NgTemplateOutlet, SiIconComponent, SiTranslatePipe],\n templateUrl: './si-popover.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n '[id]': 'this.popoverDirective().popoverId'\n }\n})\nexport class PopoverComponent implements OnInit, OnDestroy {\n /** The directive that supplies and controls the popover content. */\n readonly popoverDirective = input.required<SiPopoverDirective>();\n readonly popoverWrapper = viewChild.required<ElementRef>('popoverWrapper');\n\n /** @internal */\n labelledBy: string | undefined;\n /** @internal */\n describedBy: string | undefined;\n protected readonly positionClass = signal('');\n protected readonly arrowPos = signal<OverlayArrowPosition | undefined>(undefined);\n protected readonly description = computed(() => {\n const description = this.popoverDirective().siPopover();\n return !(description instanceof TemplateRef) ? description : undefined;\n });\n protected popoverTemplate: TemplateRef<any> | null = null;\n protected injector = inject(Injector);\n\n private elementRef = inject(ElementRef);\n private focusTrapFactory = inject(ConfigurableFocusTrapFactory);\n private focusTrap?: ConfigurableFocusTrap;\n private readonly previouslyActiveElement = inject(DOCUMENT).activeElement;\n\n ngOnInit(): void {\n const popoverDirective = this.popoverDirective();\n const popover = popoverDirective.siPopover();\n if (popover instanceof TemplateRef) {\n this.popoverTemplate = popover;\n }\n this.labelledBy = `__popover-title_${popoverDirective.popoverCounter}`;\n this.describedBy = `__popover-body_${popoverDirective.popoverCounter}`;\n\n this.applyFocus();\n }\n\n ngOnDestroy(): void {\n this.focusTrap?.destroy();\n if (\n this.previouslyActiveElement &&\n 'focus' in this.previouslyActiveElement &&\n typeof this.previouslyActiveElement.focus === 'function'\n ) {\n this.previouslyActiveElement.focus();\n }\n }\n\n /** @internal */\n updateArrow(change: ConnectedOverlayPositionChange, anchor?: ElementRef): void {\n const positionClass = `popover-${change.connectionPair.overlayX}-${change.connectionPair.overlayY}`;\n // need two updates as class changes affect the position\n this.positionClass.set(positionClass);\n const arrowPos = calculateOverlayArrowPosition(change, this.elementRef, anchor);\n this.arrowPos.set(arrowPos);\n }\n\n hide(): void {\n this.popoverDirective().hide();\n }\n\n private applyFocus(): void {\n // Using setTimeout ensures that SR first read `expanded` before we move the focus.\n setTimeout(async () => {\n const popoverWrapperEl = this.popoverWrapper().nativeElement;\n this.focusTrap = this.focusTrapFactory.create(this.popoverWrapper().nativeElement);\n const moved = await this.focusTrap.focusFirstTabbableElementWhenReady();\n if (!moved) {\n popoverWrapperEl.tabIndex = 0;\n popoverWrapperEl.focus();\n }\n });\n }\n}\n","@let popover = popoverDirective();\n<div\n #popoverWrapper\n role=\"dialog\"\n [class]=\"[\n 'popover',\n 'position-relative',\n 'focus-inside',\n positionClass(),\n popover.containerClass()\n ]\"\n [attr.aria-labelledby]=\"labelledBy\"\n [attr.aria-describedby]=\"describedBy\"\n (keydown.escape)=\"hide()\"\n>\n <div\n class=\"popover-arrow\"\n [style.left.px]=\"arrowPos()?.left\"\n [style.right.px]=\"arrowPos()?.right\"\n ></div>\n @if (popover.title()) {\n <div class=\"popover-header\">\n @let iconValue = popover.icon();\n @if (iconValue) {\n <si-icon class=\"icon me-1\" [icon]=\"iconValue\" />\n }\n <span class=\"si-h5\" [id]=\"labelledBy\">{{ popover.title() | translate }}</span>\n </div>\n }\n @if (!popoverTemplate) {\n <div class=\"popover-body\">\n <div class=\"si-body\" [id]=\"describedBy\">{{ description() | translate }}</div>\n </div>\n } @else {\n <!-- If title is already provided, we wrap the template with the `popover-body` class\n since the template may not be in the popover body directive. Also used by SiHelpButtonComponent -->\n @if (popover.title()) {\n <div class=\"popover-body\">\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate\"\n [ngTemplateOutletContext]=\"popover.context()\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n </div>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate\"\n [ngTemplateOutletContext]=\"popover.context()\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n }\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n TemplateRef\n} from '@angular/core';\nimport {\n defaultConnectedOverlayScrollStrategy,\n isRTL,\n positions\n} from '@siemens/element-ng/common';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate-types';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { PopoverComponent } from './si-popover.component';\n\n@Directive({\n selector: '[siPopover]',\n host: {\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-controls]': 'popoverId',\n '(click)': 'onClick()'\n },\n exportAs: 'si-popover'\n})\nexport class SiPopoverDirective implements OnDestroy {\n private static idCounter = 0;\n\n /**\n * The popover text to be displayed\n */\n readonly siPopover = input<TranslatableString | TemplateRef<unknown>>();\n\n /**\n * The placement of the popover. One of 'top', 'start', 'end', 'bottom'\n *\n * @defaultValue 'auto'\n */\n readonly placement = input<keyof typeof positions>('auto', { alias: 'siPopoverPlacement' });\n\n readonly placementInternal = computed(() => {\n if (\n this.placement() !== 'top' &&\n this.placement() !== 'bottom' &&\n this.placement() !== 'start' &&\n this.placement() !== 'end'\n ) {\n return 'auto';\n } else {\n return this.placement();\n }\n });\n\n /**\n * The title to be displayed on top for the popover\n *\n * @defaultValue undefined\n */\n readonly title = input<TranslatableString>(undefined, { alias: 'siPopoverTitle' });\n\n /**\n * The class that will be applied to container of the popover\n *\n * @defaultValue ''\n */\n readonly containerClass = input('', { alias: 'siPopoverContainerClass' });\n\n /**\n * The icon to be displayed besides popover title\n *\n * @defaultValue undefined\n */\n readonly icon = input<string>(undefined, { alias: 'siPopoverIcon' });\n\n /**\n * The context for the attached template\n *\n * @defaultValue undefined\n */\n readonly context = input<unknown>(undefined, { alias: 'siPopoverContext' });\n\n /**\n * CDK scroll strategy used for the popover overlay.\n *\n * @defaultValue defaultConnectedOverlayScrollStrategy()\n */\n readonly scrollStrategy = input(defaultConnectedOverlayScrollStrategy(), {\n alias: 'siPopoverScrollStrategy'\n });\n\n /**\n * Emits `true` when the popover is shown, `false` when the popover is hidden.\n */\n readonly visibilityChange = output<boolean>({ alias: 'siPopoverVisibilityChange' });\n\n /** @internal */\n readonly popoverCounter = SiPopoverDirective.idCounter++;\n /** @internal */\n readonly popoverId = `__popover_${this.popoverCounter}`;\n\n /** @internal */\n protected readonly isOpen = signal<boolean>(false);\n\n private overlayref?: OverlayRef;\n private popoverRef?: ComponentRef<PopoverComponent>;\n private overlay = inject(Overlay);\n private elementRef = inject(ElementRef);\n private destroyer = new Subject<void>();\n\n ngOnDestroy(): void {\n this.overlayref?.dispose();\n this.destroyer.next();\n this.destroyer.complete();\n }\n\n /**\n * Displays popover and emits 'shown' event.\n */\n show(): void {\n if (this.overlayref?.hasAttached()) {\n return;\n }\n\n this.overlayref ??= this.createOverlay();\n\n const popoverPortal = new ComponentPortal(PopoverComponent);\n this.popoverRef = this.overlayref.attach(popoverPortal);\n\n this.popoverRef.setInput('popoverDirective', this);\n\n this.isOpen.set(true);\n this.visibilityChange.emit(true);\n }\n\n /**\n * Hides the popover and emits 'hidden' event.\n */\n hide(): void {\n this.overlayref?.detach();\n }\n\n /**\n * Updates the position of the popover based on the position strategy.\n */\n updatePosition(): void {\n this.overlayref?.updatePosition();\n }\n\n protected onClick(): void {\n if (this.overlayref?.hasAttached()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private createOverlay(): OverlayRef {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPush(false)\n .withGrowAfterOpen(true)\n .withFlexibleDimensions(false)\n .withPositions(positions[this.placementInternal()]);\n const overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.scrollStrategy(),\n direction: isRTL() ? 'rtl' : 'ltr'\n });\n overlayRef\n .detachments()\n .pipe(takeUntil(this.destroyer))\n .subscribe(() => {\n this.popoverRef = undefined;\n if (this.isOpen()) {\n this.isOpen.set(false);\n this.visibilityChange.emit(false);\n }\n });\n overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.destroyer))\n .subscribe(({ target }) => {\n if (target !== this.elementRef.nativeElement) {\n this.hide();\n }\n });\n positionStrategy.positionChanges\n .pipe(takeUntil(this.destroyer))\n .subscribe(change => this.popoverRef?.instance.updateArrow(change, this.elementRef));\n return overlayRef;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive, inject } from '@angular/core';\n\nimport { PopoverComponent } from './si-popover.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-popover-title',\n host: {\n '[id]': 'this.popover.labelledBy',\n 'class': 'popover-header'\n }\n})\nexport class SiPopoverTitleDirective {\n readonly popover = inject(PopoverComponent);\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive, inject } from '@angular/core';\n\nimport { PopoverComponent } from './si-popover.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-popover-body',\n host: {\n '[id]': 'this.popover.describedBy',\n 'class': 'popover-body d-block'\n }\n})\nexport class SiPopoverBodyDirective {\n readonly popover = inject(PopoverComponent);\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-popover.directive';\nexport * from './si-popover-title.directive';\nexport * from './si-popover-body.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"siemens-element-ng-popover.mjs","sources":["../../../../projects/element-ng/popover/si-popover.component.ts","../../../../projects/element-ng/popover/si-popover.component.html","../../../../projects/element-ng/popover/si-popover.directive.ts","../../../../projects/element-ng/popover/si-popover-title.directive.ts","../../../../projects/element-ng/popover/si-popover-body.directive.ts","../../../../projects/element-ng/popover/index.ts","../../../../projects/element-ng/popover/siemens-element-ng-popover.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ElementRef,\n inject,\n Injector,\n input,\n OnDestroy,\n OnInit,\n signal,\n TemplateRef,\n viewChild,\n DOCUMENT,\n computed,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { calculateOverlayArrowPosition, OverlayArrowPosition } from '@siemens/element-ng/common';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { SiPopoverDirective } from './si-popover.directive';\n\n@Component({\n selector: 'si-popover',\n imports: [NgTemplateOutlet, SiIconComponent, SiTranslatePipe],\n templateUrl: './si-popover.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n '[id]': 'this.popoverDirective().popoverId'\n }\n})\nexport class PopoverComponent implements OnInit, OnDestroy {\n /** The directive that supplies and controls the popover content. */\n readonly popoverDirective = input.required<SiPopoverDirective>();\n readonly popoverWrapper = viewChild.required<ElementRef>('popoverWrapper');\n\n /** @internal */\n labelledBy: string | undefined;\n /**\n * This property is set by the {@link SiPopoverTitleDirective} if present.\n *\n * @internal\n */\n readonly hasTemplateTitle = signal(false);\n /** @internal */\n describedBy: string | undefined;\n protected readonly positionClass = signal('');\n protected readonly ariaLabelledBy = computed(() =>\n this.popoverDirective().title() || this.hasTemplateTitle()\n ? this.labelledBy\n : this.popoverDirective().id()\n );\n protected readonly arrowPos = signal<OverlayArrowPosition | undefined>(undefined);\n protected readonly description = computed(() => {\n const description = this.popoverDirective().siPopover();\n return !(description instanceof TemplateRef) ? description : undefined;\n });\n protected popoverTemplate: TemplateRef<any> | null = null;\n protected injector = inject(Injector);\n\n private elementRef = inject(ElementRef);\n private focusTrapFactory = inject(ConfigurableFocusTrapFactory);\n private focusTrap?: ConfigurableFocusTrap;\n private focusTimeoutId?: ReturnType<typeof setTimeout>;\n private readonly previouslyActiveElement = inject(DOCUMENT).activeElement;\n\n ngOnInit(): void {\n const popoverDirective = this.popoverDirective();\n const popover = popoverDirective.siPopover();\n if (popover instanceof TemplateRef) {\n this.popoverTemplate = popover;\n }\n this.labelledBy = `__popover-title_${popoverDirective.popoverCounter}`;\n this.describedBy = `__popover-body_${popoverDirective.popoverCounter}`;\n\n this.applyFocus();\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.focusTimeoutId);\n this.focusTrap?.destroy();\n if (\n this.previouslyActiveElement &&\n 'focus' in this.previouslyActiveElement &&\n typeof this.previouslyActiveElement.focus === 'function'\n ) {\n this.previouslyActiveElement.focus();\n }\n }\n\n /** @internal */\n updateArrow(change: ConnectedOverlayPositionChange, anchor?: ElementRef): void {\n const positionClass = `popover-${change.connectionPair.overlayX}-${change.connectionPair.overlayY}`;\n // need two updates as class changes affect the position\n this.positionClass.set(positionClass);\n const arrowPos = calculateOverlayArrowPosition(change, this.elementRef, anchor);\n this.arrowPos.set(arrowPos);\n }\n\n hide(): void {\n this.popoverDirective().hide();\n }\n\n private applyFocus(): void {\n // Using setTimeout ensures that SR first read `expanded` before we move the focus.\n this.focusTimeoutId = setTimeout(async () => {\n const popoverWrapperEl = this.popoverWrapper().nativeElement;\n this.focusTrap = this.focusTrapFactory.create(this.popoverWrapper().nativeElement);\n const moved = await this.focusTrap.focusFirstTabbableElementWhenReady();\n if (!moved) {\n popoverWrapperEl.tabIndex = 0;\n popoverWrapperEl.focus();\n }\n });\n }\n}\n","@let popover = popoverDirective();\n<div\n #popoverWrapper\n role=\"dialog\"\n [class]=\"[\n 'popover',\n 'position-relative',\n 'focus-inside',\n positionClass(),\n popover.containerClass()\n ]\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"describedBy\"\n (keydown.escape)=\"hide()\"\n>\n <div\n class=\"popover-arrow\"\n [style.left.px]=\"arrowPos()?.left\"\n [style.right.px]=\"arrowPos()?.right\"\n ></div>\n @if (popover.title()) {\n <div class=\"popover-header\">\n @let iconValue = popover.icon();\n @if (iconValue) {\n <si-icon class=\"icon me-1\" [icon]=\"iconValue\" />\n }\n <span class=\"si-h5\" [id]=\"labelledBy\">{{ popover.title() | translate }}</span>\n </div>\n }\n @if (!popoverTemplate) {\n <div class=\"popover-body\">\n <div class=\"si-body\" [id]=\"describedBy\">{{ description() | translate }}</div>\n </div>\n } @else {\n <!-- If title is already provided, we wrap the template with the `popover-body` class\n since the template may not be in the popover body directive. Also used by SiHelpButtonComponent -->\n @if (popover.title()) {\n <div class=\"popover-body\">\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate\"\n [ngTemplateOutletContext]=\"popover.context()\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n </div>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"popoverTemplate\"\n [ngTemplateOutletContext]=\"popover.context()\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n }\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n TemplateRef\n} from '@angular/core';\nimport {\n defaultConnectedOverlayScrollStrategy,\n isRTL,\n positions\n} from '@siemens/element-ng/common';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate-types';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { PopoverComponent } from './si-popover.component';\n\n@Directive({\n selector: '[siPopover]',\n host: {\n '[id]': 'id()',\n 'aria-haspopup': 'dialog',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-controls]': 'popoverId',\n '(click)': 'onClick()'\n },\n exportAs: 'si-popover'\n})\nexport class SiPopoverDirective implements OnDestroy {\n private static idCounter = 0;\n\n /**\n * The popover text to be displayed\n */\n readonly siPopover = input<TranslatableString | TemplateRef<unknown>>();\n\n /**\n * The placement of the popover. One of 'top', 'start', 'end', 'bottom'\n *\n * @defaultValue 'auto'\n */\n readonly placement = input<keyof typeof positions>('auto', { alias: 'siPopoverPlacement' });\n\n readonly placementInternal = computed(() => {\n if (\n this.placement() !== 'top' &&\n this.placement() !== 'bottom' &&\n this.placement() !== 'start' &&\n this.placement() !== 'end'\n ) {\n return 'auto';\n } else {\n return this.placement();\n }\n });\n\n /**\n * The title to be displayed on top for the popover\n *\n * @defaultValue undefined\n */\n readonly title = input<TranslatableString>(undefined, { alias: 'siPopoverTitle' });\n\n /**\n * The class that will be applied to container of the popover\n *\n * @defaultValue ''\n */\n readonly containerClass = input('', { alias: 'siPopoverContainerClass' });\n\n /**\n * The icon to be displayed besides popover title\n *\n * @defaultValue undefined\n */\n readonly icon = input<string>(undefined, { alias: 'siPopoverIcon' });\n\n /**\n * The context for the attached template\n *\n * @defaultValue undefined\n */\n readonly context = input<unknown>(undefined, { alias: 'siPopoverContext' });\n\n /**\n * CDK scroll strategy used for the popover overlay.\n *\n * @defaultValue defaultConnectedOverlayScrollStrategy()\n */\n readonly scrollStrategy = input(defaultConnectedOverlayScrollStrategy(), {\n alias: 'siPopoverScrollStrategy'\n });\n\n /**\n * Emits `true` when the popover is shown, `false` when the popover is hidden.\n */\n readonly visibilityChange = output<boolean>({ alias: 'siPopoverVisibilityChange' });\n\n /** @internal */\n readonly popoverCounter = SiPopoverDirective.idCounter++;\n /** @internal */\n readonly popoverId = `__popover_${this.popoverCounter}`;\n\n /**\n * The ID of the trigger element.\n *\n * @defaultValue\n * ```\n * `__popover-trigger_${this.popoverCounter}`\n * ```\n */\n readonly id = input(`__popover-trigger_${this.popoverCounter}`);\n\n /** @internal */\n protected readonly isOpen = signal<boolean>(false);\n\n private overlayref?: OverlayRef;\n private popoverRef?: ComponentRef<PopoverComponent>;\n private overlay = inject(Overlay);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private destroyer = new Subject<void>();\n\n ngOnDestroy(): void {\n this.overlayref?.dispose();\n this.destroyer.next();\n this.destroyer.complete();\n }\n\n /**\n * Displays popover and emits 'shown' event.\n */\n show(): void {\n if (this.overlayref?.hasAttached()) {\n return;\n }\n\n this.overlayref ??= this.createOverlay();\n\n const popoverPortal = new ComponentPortal(PopoverComponent);\n this.popoverRef = this.overlayref.attach(popoverPortal);\n\n this.popoverRef.setInput('popoverDirective', this);\n\n this.isOpen.set(true);\n this.visibilityChange.emit(true);\n }\n\n /**\n * Hides the popover and emits 'hidden' event.\n */\n hide(): void {\n this.overlayref?.detach();\n }\n\n /**\n * Updates the position of the popover based on the position strategy.\n */\n updatePosition(): void {\n this.overlayref?.updatePosition();\n }\n\n protected onClick(): void {\n if (this.overlayref?.hasAttached()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private createOverlay(): OverlayRef {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPush(false)\n .withGrowAfterOpen(true)\n .withFlexibleDimensions(false)\n .withPositions(positions[this.placementInternal()]);\n const overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.scrollStrategy(),\n direction: isRTL() ? 'rtl' : 'ltr'\n });\n overlayRef\n .detachments()\n .pipe(takeUntil(this.destroyer))\n .subscribe(() => {\n this.popoverRef = undefined;\n if (this.isOpen()) {\n this.isOpen.set(false);\n this.visibilityChange.emit(false);\n }\n });\n overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.destroyer))\n .subscribe(({ target }) => {\n if (target !== this.elementRef.nativeElement) {\n this.hide();\n }\n });\n positionStrategy.positionChanges\n .pipe(takeUntil(this.destroyer))\n .subscribe(change => this.popoverRef?.instance.updateArrow(change, this.elementRef));\n return overlayRef;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { DestroyRef, Directive, inject } from '@angular/core';\n\nimport { PopoverComponent } from './si-popover.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-popover-title',\n host: {\n '[id]': 'this.popover.labelledBy',\n 'class': 'popover-header'\n }\n})\nexport class SiPopoverTitleDirective {\n readonly popover = inject(PopoverComponent);\n\n constructor() {\n this.popover.hasTemplateTitle.set(true);\n inject(DestroyRef).onDestroy(() => this.popover.hasTemplateTitle.set(false));\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive, inject } from '@angular/core';\n\nimport { PopoverComponent } from './si-popover.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-popover-body',\n host: {\n '[id]': 'this.popover.describedBy',\n 'class': 'popover-body d-block'\n }\n})\nexport class SiPopoverBodyDirective {\n readonly popover = inject(PopoverComponent);\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-popover.directive';\nexport * from './si-popover-title.directive';\nexport * from './si-popover-body.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ class SiResultDetailsListComponent {
27
27
  elementStateTick
28
28
  });
29
29
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiResultDetailsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SiResultDetailsListComponent, isStandalone: true, selector: "si-result-details-list", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ul class=\"list-unstyled d-flex flex-column mb-0\">\n @for (step of steps(); track $index) {\n <li\n class=\"position-relative d-flex align-items-center timeline px-6 py-5\"\n [class.text-accent]=\"step.state === 'running'\"\n >\n <div class=\"icon-stack icon me-4\">\n @if (step.state === 'running') {\n <si-loading-spinner />\n } @else {\n @if (step.icon) {\n <si-icon [icon]=\"step.icon\" />\n } @else {\n @switch (step.state) {\n @case ('passed') {\n <si-icon class=\"status-success\" [icon]=\"icons.elementCircleFilled\" />\n <si-icon class=\"status-critical-contrast\" [icon]=\"icons.elementStateTick\" />\n }\n @case ('failed') {\n <si-icon class=\"status-danger\" [icon]=\"icons.elementCircleFilled\" />\n <si-icon\n class=\"status-critical-contrast\"\n [icon]=\"icons.elementStateExclamationMark\"\n />\n }\n @case ('not-started') {\n <si-icon [icon]=\"icons.elementNotChecked\" />\n }\n @default {\n <si-icon [icon]=\"icons.elementOutOfService\" />\n }\n }\n }\n }\n </div>\n\n <div class=\"d-flex flex-column justify-content-center w-100 overflow-hidden\">\n <div class=\"d-flex\">\n <div class=\"result-description\">\n <span class=\"si-h5\">{{ step.description | translate: step.translationParams }}</span>\n @if (step.detail) {\n <div class=\"si-body text-secondary result-detail\">{{\n step.detail | translate: step.translationParams\n }}</div>\n }\n @if (step.errorMessage) {\n <div class=\"si-h5 text-danger\">{{\n step.errorMessage | translate: step.translationParams\n }}</div>\n }\n </div>\n @if (step.value) {\n <span class=\"result-value\">{{ step.value }}</span>\n } @else if (stepHasValue()) {\n <!-- empty placeholder to align step description with other steps-->\n <span class=\"result-value\"></span>\n }\n </div>\n </div>\n </li>\n }\n</ul>\n", styles: ["si-loading-spinner{--loading-spinner-size: var(--si-sys-sizing-icon-md);--loading-spinner-color: var(--si-sys-color-text-accent);line-height:0}.result-description{flex:2 1;align-self:center;overflow:hidden}.result-value{flex:1 1;white-space:nowrap;align-self:top}.result-detail{letter-spacing:.15px;display:block;display:-webkit-box;max-block-size:calc(var(--si-sys-typography-font-size-body) * var(--si-sys-typography-line-height-body) * 2);word-wrap:break-word;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.timeline:not(:last-child):after,.timeline:not(:first-child):before{content:\"\";position:absolute;inline-size:1px;background-color:var(--si-sys-color-border-2);block-size:calc(50% - var(--si-sys-sizing-icon-md) / 2);margin-inline-start:calc(var(--si-sys-sizing-icon-md) / 2 - .5px)}si-icon{color:var(--si-sys-color-text-secondary)}.timeline:not(:first-child):before{inset-block-start:0}.timeline:not(:last-child):after{inset-block-end:0}\n"], dependencies: [{ kind: "component", type: SiLoadingSpinnerComponent, selector: "si-loading-spinner", inputs: ["isBlockingSpinner", "isSpinnerOverlay", "ariaLabel"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager });
30
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SiResultDetailsListComponent, isStandalone: true, selector: "si-result-details-list", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ul class=\"list-unstyled d-flex flex-column mb-0\">\n @for (step of steps(); track $index) {\n <li\n class=\"position-relative d-flex align-items-center timeline px-6 py-5\"\n [class.text-accent]=\"step.state === 'running'\"\n >\n <div class=\"icon-stack icon me-4\">\n @if (step.state === 'running') {\n <si-loading-spinner />\n } @else {\n @if (step.icon) {\n <si-icon [icon]=\"step.icon\" />\n } @else {\n @switch (step.state) {\n @case ('passed') {\n <si-icon class=\"status-success\" [icon]=\"icons.elementCircleFilled\" />\n <si-icon class=\"status-critical-contrast\" [icon]=\"icons.elementStateTick\" />\n }\n @case ('failed') {\n <si-icon class=\"status-danger\" [icon]=\"icons.elementCircleFilled\" />\n <si-icon\n class=\"status-critical-contrast\"\n [icon]=\"icons.elementStateExclamationMark\"\n />\n }\n @case ('not-started') {\n <si-icon [icon]=\"icons.elementNotChecked\" />\n }\n @default {\n <si-icon [icon]=\"icons.elementOutOfService\" />\n }\n }\n }\n }\n </div>\n\n <div class=\"d-flex flex-column justify-content-center w-100 overflow-hidden\">\n <div class=\"d-flex\">\n <div class=\"result-description\">\n <span class=\"si-h5\">{{ step.description | translate: step.translationParams }}</span>\n @if (step.detail) {\n <div class=\"si-body text-secondary result-detail\">{{\n step.detail | translate: step.translationParams\n }}</div>\n }\n @if (step.errorMessage) {\n <div class=\"si-h5 text-danger\">{{\n step.errorMessage | translate: step.translationParams\n }}</div>\n }\n </div>\n @if (step.value) {\n <span class=\"result-value\">{{ step.value }}</span>\n } @else if (stepHasValue()) {\n <!-- empty placeholder to align step description with other steps-->\n <span class=\"result-value\"></span>\n }\n </div>\n </div>\n </li>\n }\n</ul>\n", styles: ["si-loading-spinner{--loading-spinner-size: var(--si-sys-sizing-icon-md);--loading-spinner-color: var(--si-sys-color-text-accent);line-height:0}.result-description{flex:2 1;align-self:center;overflow:hidden}.result-value{flex:1 1;white-space:nowrap;align-self:top}.result-detail{letter-spacing:.15px;display:block;display:-webkit-box;max-block-size:calc(var(--si-sys-typography-font-size-body) * var(--si-sys-typography-line-height-body) * 2);word-wrap:break-word;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.timeline:not(:last-child):after,.timeline:not(:first-child):before{content:\"\";position:absolute;inline-size:1px;background-color:var(--si-sys-color-border-2);block-size:calc(50% - var(--si-sys-sizing-icon-md) / 2);margin-inline-start:calc(var(--si-sys-sizing-icon-md) / 2 - .5px)}si-icon{color:var(--si-sys-color-text-secondary)}.timeline:not(:first-child):before{inset-block-start:0}.timeline:not(:last-child):after{inset-block-end:0}\n"], dependencies: [{ kind: "component", type: SiLoadingSpinnerComponent, selector: "si-loading-spinner", inputs: ["isBlockingSpinner", "isSpinnerOverlay", "ariaLabel", "loadingText"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager });
31
31
  }
32
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiResultDetailsListComponent, decorators: [{
33
33
  type: Component,