@siemens/element-ng 51.4.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 (83) 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 +15 -28
  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 +1 -1
  10. package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
  11. package/fesm2022/siemens-element-ng-common.mjs +11 -1
  12. package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
  13. package/fesm2022/siemens-element-ng-datatable.mjs +1 -1
  14. package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
  15. package/fesm2022/siemens-element-ng-empty-state.mjs +2 -2
  16. package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
  17. package/fesm2022/siemens-element-ng-formly.mjs +1 -1
  18. package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
  19. package/fesm2022/siemens-element-ng-header-dropdown.mjs +2 -2
  20. package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
  21. package/fesm2022/siemens-element-ng-list-details.mjs +7 -4
  22. package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
  23. package/fesm2022/siemens-element-ng-loading-spinner.mjs +21 -7
  24. package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
  25. package/fesm2022/siemens-element-ng-maplibre.mjs +2 -2
  26. package/fesm2022/siemens-element-ng-maplibre.mjs.map +1 -1
  27. package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs +4 -1
  28. package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs.map +1 -1
  29. package/fesm2022/siemens-element-ng-markdown-extensions-mermaid.mjs +9 -0
  30. package/fesm2022/siemens-element-ng-markdown-extensions-mermaid.mjs.map +1 -1
  31. package/fesm2022/siemens-element-ng-markdown.mjs +6 -2
  32. package/fesm2022/siemens-element-ng-markdown.mjs.map +1 -1
  33. package/fesm2022/siemens-element-ng-menu.mjs +6 -6
  34. package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
  35. package/fesm2022/siemens-element-ng-modal.mjs +4 -3
  36. package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
  37. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +10 -4
  38. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
  39. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +12 -6
  40. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
  41. package/fesm2022/siemens-element-ng-pills-input.mjs +5 -4
  42. package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
  43. package/fesm2022/siemens-element-ng-popover-legacy.mjs +1 -1
  44. package/fesm2022/siemens-element-ng-popover-legacy.mjs.map +1 -1
  45. package/fesm2022/siemens-element-ng-popover.mjs +33 -6
  46. package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
  47. package/fesm2022/siemens-element-ng-result-details-list.mjs +1 -1
  48. package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
  49. package/fesm2022/siemens-element-ng-select.mjs +3 -3
  50. package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
  51. package/fesm2022/siemens-element-ng-side-panel.mjs +17 -7
  52. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
  53. package/fesm2022/siemens-element-ng-skip-links.mjs +18 -4
  54. package/fesm2022/siemens-element-ng-skip-links.mjs.map +1 -1
  55. package/fesm2022/siemens-element-ng-source-chip.mjs +1 -1
  56. package/fesm2022/siemens-element-ng-source-chip.mjs.map +1 -1
  57. package/fesm2022/siemens-element-ng-split.mjs +2 -2
  58. package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
  59. package/fesm2022/siemens-element-ng-status-bar.mjs +2 -2
  60. package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
  61. package/fesm2022/siemens-element-ng-tooltip.mjs +1 -1
  62. package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
  63. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  64. package/fesm2022/siemens-element-ng-tree-view.mjs +3 -4
  65. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  66. package/fesm2022/siemens-element-ng-typeahead.mjs +2 -2
  67. package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
  68. package/package.json +6 -6
  69. package/schematics/utils/ts-compiler-host.js +21 -0
  70. package/template-i18n.json +1 -0
  71. package/types/siemens-element-ng-ag-grid.d.ts +1 -0
  72. package/types/siemens-element-ng-breadcrumb.d.ts +3 -6
  73. package/types/siemens-element-ng-common.d.ts +23 -3
  74. package/types/siemens-element-ng-list-details.d.ts +2 -0
  75. package/types/siemens-element-ng-loading-spinner.d.ts +11 -4
  76. package/types/siemens-element-ng-markdown-extensions-katex.d.ts +4 -1
  77. package/types/siemens-element-ng-markdown-extensions-mermaid.d.ts +9 -0
  78. package/types/siemens-element-ng-navbar-vertical-next.d.ts +2 -1
  79. package/types/siemens-element-ng-navbar-vertical.d.ts +2 -2
  80. package/types/siemens-element-ng-popover.d.ts +18 -1
  81. package/types/siemens-element-ng-side-panel.d.ts +7 -2
  82. package/types/siemens-element-ng-skip-links.d.ts +4 -2
  83. package/types/siemens-element-ng-translate.d.ts +1 -0
@@ -139,7 +139,7 @@ class SiAboutComponent {
139
139
  }
140
140
  }
141
141
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiAboutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
142
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SiAboutComponent, isStandalone: true, selector: "si-about", inputs: { logoAlt: { classPropertyName: "logoAlt", publicName: "logoAlt", isSignal: true, isRequired: false, transformFunction: null }, aboutTitle: { classPropertyName: "aboutTitle", publicName: "aboutTitle", isSignal: true, isRequired: true, transformFunction: null }, licenseInfo: { classPropertyName: "licenseInfo", publicName: "licenseInfo", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: true, isRequired: false, transformFunction: null }, appName: { classPropertyName: "appName", publicName: "appName", isSignal: true, isRequired: true, transformFunction: null }, subheading: { classPropertyName: "subheading", publicName: "subheading", isSignal: true, isRequired: false, transformFunction: null }, acceptableUsePolicyLink: { classPropertyName: "acceptableUsePolicyLink", publicName: "acceptableUsePolicyLink", isSignal: true, isRequired: false, transformFunction: null }, imprintLink: { classPropertyName: "imprintLink", publicName: "imprintLink", isSignal: true, isRequired: false, transformFunction: null }, privacyLink: { classPropertyName: "privacyLink", publicName: "privacyLink", isSignal: true, isRequired: false, transformFunction: null }, cookieNoticeLink: { classPropertyName: "cookieNoticeLink", publicName: "cookieNoticeLink", isSignal: true, isRequired: false, transformFunction: null }, termsLink: { classPropertyName: "termsLink", publicName: "termsLink", isSignal: true, isRequired: false, transformFunction: null }, links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, copyrightDetails: { classPropertyName: "copyrightDetails", publicName: "copyrightDetails", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"row mx-6 mt-6\">\n <div class=\"col-md-6 mb-6\">\n <div class=\"card overflow-hidden\">\n <div class=\"card-header text-truncate\">\n {{ aboutTitle() }}\n </div>\n\n <div class=\"list-group\">\n <div class=\"list-group-item text-center\">\n @let appIcon = iconName();\n @if (icon()) {\n <img\n class=\"rounded-circle\"\n height=\"150\"\n [src]=\"icon()\"\n [alt]=\"logoAlt() | translate: { appName: appName() }\"\n />\n } @else if (appIcon) {\n <si-icon class=\"app-icon\" [icon]=\"appIcon\" />\n }\n <h3>{{ appName() }}</h3>\n @for (item of subheading(); track $index) {\n <p>{{ item }}</p>\n }\n <si-copyright-notice [copyright]=\"copyrightDetails()\" />\n </div>\n\n @if (imprintLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: imprintLink() }\"\n />\n }\n @if (privacyLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: privacyLink() }\"\n />\n }\n @if (cookieNoticeLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: cookieNoticeLink() }\"\n />\n }\n @if (termsLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: termsLink() }\"\n />\n }\n @if (acceptableUsePolicyLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: acceptableUsePolicyLink() }\"\n />\n }\n @for (item of links(); track $index) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: item }\"\n />\n }\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6 mb-6\">\n <div class=\"card overflow-hidden\" [class.h-100]=\"licenseInfo().iframe\">\n <div class=\"card-header text-truncate\">\n {{ licenseInfo().title }}\n </div>\n\n <div class=\"h-100\">\n @if (licenseInfo().text) {\n <pre class=\"border-0 border-bottom my-0 px-6 py-4\">{{ licenseInfo().text }}</pre>\n }\n\n @if (sanitizedUrl()) {\n <iframe class=\"w-100 h-100\" [src]=\"sanitizedUrl()\" [title]=\"licenseInfo().title\"></iframe>\n }\n\n @if (licenseInfo().api) {\n @for (api of licenseApi(); track $index) {\n <si-collapsible-panel\n colorVariant=\"base-0\"\n class=\"license-api\"\n [heading]=\"api.name\"\n (panelToggle)=\"toggleLoadLicenseApi(api)\"\n >\n @for (file of api.files; track $index) {\n <si-collapsible-panel\n colorVariant=\"base-0\"\n class=\"license-api-file\"\n [icon]=\"licenseInfo().icon ? licenseInfo().icon : icons.elementDocument\"\n [heading]=\"file.name\"\n (panelToggle)=\"toggleLoadLicenseContent(file)\"\n >\n <pre class=\"license-api-file-content px-6 py-6 my-0 border-0\">{{\n file.content\n }}</pre>\n </si-collapsible-panel>\n }\n </si-collapsible-panel>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #linkTemplate let-link=\"link\">\n <a\n class=\"list-group-item si-h5 text-primary focus-inside\"\n siLinkDefaultTarget=\"_blank\"\n [siLink]=\"link\"\n >\n {{ link.title | translate }}\n </a>\n</ng-template>\n", styles: [".list-group-item{border-width:0 0 1px;padding-inline:var(--si-sys-sizing-spacing-x-60)}.list-group-item.with-border:first-child{border-block-start-width:1px}.list-group-item:last-child{border-block-end-width:0}.app-icon{font-size:150px}iframe{border-style:none;min-block-size:500px;margin-block-end:-5px}pre{word-break:break-word;white-space:pre-wrap}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiCollapsiblePanelComponent, selector: "si-collapsible-panel", inputs: ["heading", "headerCssClasses", "contentBgClasses", "contentCssClasses", "opened", "icon", "disabled", "colorVariant", "badge", "badgeColor"], outputs: ["openedChange", "panelToggle"] }, { kind: "component", type: SiCopyrightNoticeComponent, selector: "si-copyright-notice", inputs: ["copyright"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
142
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SiAboutComponent, isStandalone: true, selector: "si-about", inputs: { logoAlt: { classPropertyName: "logoAlt", publicName: "logoAlt", isSignal: true, isRequired: false, transformFunction: null }, aboutTitle: { classPropertyName: "aboutTitle", publicName: "aboutTitle", isSignal: true, isRequired: true, transformFunction: null }, licenseInfo: { classPropertyName: "licenseInfo", publicName: "licenseInfo", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: true, isRequired: false, transformFunction: null }, appName: { classPropertyName: "appName", publicName: "appName", isSignal: true, isRequired: true, transformFunction: null }, subheading: { classPropertyName: "subheading", publicName: "subheading", isSignal: true, isRequired: false, transformFunction: null }, acceptableUsePolicyLink: { classPropertyName: "acceptableUsePolicyLink", publicName: "acceptableUsePolicyLink", isSignal: true, isRequired: false, transformFunction: null }, imprintLink: { classPropertyName: "imprintLink", publicName: "imprintLink", isSignal: true, isRequired: false, transformFunction: null }, privacyLink: { classPropertyName: "privacyLink", publicName: "privacyLink", isSignal: true, isRequired: false, transformFunction: null }, cookieNoticeLink: { classPropertyName: "cookieNoticeLink", publicName: "cookieNoticeLink", isSignal: true, isRequired: false, transformFunction: null }, termsLink: { classPropertyName: "termsLink", publicName: "termsLink", isSignal: true, isRequired: false, transformFunction: null }, links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, copyrightDetails: { classPropertyName: "copyrightDetails", publicName: "copyrightDetails", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"row mx-6 mt-6\">\n <div class=\"col-md-6 mb-6\">\n <div class=\"card overflow-hidden\">\n <div class=\"card-header text-truncate\">\n {{ aboutTitle() }}\n </div>\n\n <div class=\"list list-divider\">\n <div class=\"list-item d-block text-center\">\n @let appIcon = iconName();\n @if (icon()) {\n <img\n class=\"rounded-circle\"\n height=\"150\"\n [src]=\"icon()\"\n [alt]=\"logoAlt() | translate: { appName: appName() }\"\n />\n } @else if (appIcon) {\n <si-icon class=\"app-icon\" [icon]=\"appIcon\" />\n }\n <h3>{{ appName() }}</h3>\n @for (item of subheading(); track $index) {\n <p>{{ item }}</p>\n }\n <si-copyright-notice [copyright]=\"copyrightDetails()\" />\n </div>\n\n @if (imprintLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: imprintLink() }\"\n />\n }\n @if (privacyLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: privacyLink() }\"\n />\n }\n @if (cookieNoticeLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: cookieNoticeLink() }\"\n />\n }\n @if (termsLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: termsLink() }\"\n />\n }\n @if (acceptableUsePolicyLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: acceptableUsePolicyLink() }\"\n />\n }\n @for (item of links(); track $index) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: item }\"\n />\n }\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6 mb-6\">\n <div class=\"card overflow-hidden\" [class.h-100]=\"licenseInfo().iframe\">\n <div class=\"card-header text-truncate\">\n {{ licenseInfo().title }}\n </div>\n\n <div class=\"h-100\">\n @if (licenseInfo().text) {\n <pre class=\"border-0 border-bottom my-0 px-6 py-4\">{{ licenseInfo().text }}</pre>\n }\n\n @if (sanitizedUrl()) {\n <iframe class=\"w-100 h-100\" [src]=\"sanitizedUrl()\" [title]=\"licenseInfo().title\"></iframe>\n }\n\n @if (licenseInfo().api) {\n @for (api of licenseApi(); track $index) {\n <si-collapsible-panel\n colorVariant=\"base-0\"\n class=\"license-api\"\n [heading]=\"api.name\"\n (panelToggle)=\"toggleLoadLicenseApi(api)\"\n >\n @for (file of api.files; track $index) {\n <si-collapsible-panel\n colorVariant=\"base-0\"\n class=\"license-api-file\"\n [icon]=\"licenseInfo().icon ? licenseInfo().icon : icons.elementDocument\"\n [heading]=\"file.name\"\n (panelToggle)=\"toggleLoadLicenseContent(file)\"\n >\n <pre class=\"license-api-file-content px-6 py-6 my-0 border-0\">{{\n file.content\n }}</pre>\n </si-collapsible-panel>\n }\n </si-collapsible-panel>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #linkTemplate let-link=\"link\">\n <a\n class=\"list-item list-item-action text-primary focus-inside\"\n siLinkDefaultTarget=\"_blank\"\n [siLink]=\"link\"\n >\n <span class=\"list-item-title\">{{ link.title | translate }}</span>\n </a>\n</ng-template>\n", styles: [".app-icon{font-size:150px}iframe{border-style:none;min-block-size:500px;margin-block-end:-5px}pre{word-break:break-word;white-space:pre-wrap}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiCollapsiblePanelComponent, selector: "si-collapsible-panel", inputs: ["heading", "headerCssClasses", "contentBgClasses", "contentCssClasses", "opened", "icon", "disabled", "colorVariant", "badge", "badgeColor"], outputs: ["openedChange", "panelToggle"] }, { kind: "component", type: SiCopyrightNoticeComponent, selector: "si-copyright-notice", inputs: ["copyright"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
143
143
  }
144
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiAboutComponent, decorators: [{
145
145
  type: Component,
@@ -150,7 +150,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
150
150
  SiIconComponent,
151
151
  SiLinkDirective,
152
152
  SiTranslatePipe
153
- ], template: "<div class=\"row mx-6 mt-6\">\n <div class=\"col-md-6 mb-6\">\n <div class=\"card overflow-hidden\">\n <div class=\"card-header text-truncate\">\n {{ aboutTitle() }}\n </div>\n\n <div class=\"list-group\">\n <div class=\"list-group-item text-center\">\n @let appIcon = iconName();\n @if (icon()) {\n <img\n class=\"rounded-circle\"\n height=\"150\"\n [src]=\"icon()\"\n [alt]=\"logoAlt() | translate: { appName: appName() }\"\n />\n } @else if (appIcon) {\n <si-icon class=\"app-icon\" [icon]=\"appIcon\" />\n }\n <h3>{{ appName() }}</h3>\n @for (item of subheading(); track $index) {\n <p>{{ item }}</p>\n }\n <si-copyright-notice [copyright]=\"copyrightDetails()\" />\n </div>\n\n @if (imprintLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: imprintLink() }\"\n />\n }\n @if (privacyLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: privacyLink() }\"\n />\n }\n @if (cookieNoticeLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: cookieNoticeLink() }\"\n />\n }\n @if (termsLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: termsLink() }\"\n />\n }\n @if (acceptableUsePolicyLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: acceptableUsePolicyLink() }\"\n />\n }\n @for (item of links(); track $index) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: item }\"\n />\n }\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6 mb-6\">\n <div class=\"card overflow-hidden\" [class.h-100]=\"licenseInfo().iframe\">\n <div class=\"card-header text-truncate\">\n {{ licenseInfo().title }}\n </div>\n\n <div class=\"h-100\">\n @if (licenseInfo().text) {\n <pre class=\"border-0 border-bottom my-0 px-6 py-4\">{{ licenseInfo().text }}</pre>\n }\n\n @if (sanitizedUrl()) {\n <iframe class=\"w-100 h-100\" [src]=\"sanitizedUrl()\" [title]=\"licenseInfo().title\"></iframe>\n }\n\n @if (licenseInfo().api) {\n @for (api of licenseApi(); track $index) {\n <si-collapsible-panel\n colorVariant=\"base-0\"\n class=\"license-api\"\n [heading]=\"api.name\"\n (panelToggle)=\"toggleLoadLicenseApi(api)\"\n >\n @for (file of api.files; track $index) {\n <si-collapsible-panel\n colorVariant=\"base-0\"\n class=\"license-api-file\"\n [icon]=\"licenseInfo().icon ? licenseInfo().icon : icons.elementDocument\"\n [heading]=\"file.name\"\n (panelToggle)=\"toggleLoadLicenseContent(file)\"\n >\n <pre class=\"license-api-file-content px-6 py-6 my-0 border-0\">{{\n file.content\n }}</pre>\n </si-collapsible-panel>\n }\n </si-collapsible-panel>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #linkTemplate let-link=\"link\">\n <a\n class=\"list-group-item si-h5 text-primary focus-inside\"\n siLinkDefaultTarget=\"_blank\"\n [siLink]=\"link\"\n >\n {{ link.title | translate }}\n </a>\n</ng-template>\n", styles: [".list-group-item{border-width:0 0 1px;padding-inline:var(--si-sys-sizing-spacing-x-60)}.list-group-item.with-border:first-child{border-block-start-width:1px}.list-group-item:last-child{border-block-end-width:0}.app-icon{font-size:150px}iframe{border-style:none;min-block-size:500px;margin-block-end:-5px}pre{word-break:break-word;white-space:pre-wrap}\n"] }]
153
+ ], template: "<div class=\"row mx-6 mt-6\">\n <div class=\"col-md-6 mb-6\">\n <div class=\"card overflow-hidden\">\n <div class=\"card-header text-truncate\">\n {{ aboutTitle() }}\n </div>\n\n <div class=\"list list-divider\">\n <div class=\"list-item d-block text-center\">\n @let appIcon = iconName();\n @if (icon()) {\n <img\n class=\"rounded-circle\"\n height=\"150\"\n [src]=\"icon()\"\n [alt]=\"logoAlt() | translate: { appName: appName() }\"\n />\n } @else if (appIcon) {\n <si-icon class=\"app-icon\" [icon]=\"appIcon\" />\n }\n <h3>{{ appName() }}</h3>\n @for (item of subheading(); track $index) {\n <p>{{ item }}</p>\n }\n <si-copyright-notice [copyright]=\"copyrightDetails()\" />\n </div>\n\n @if (imprintLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: imprintLink() }\"\n />\n }\n @if (privacyLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: privacyLink() }\"\n />\n }\n @if (cookieNoticeLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: cookieNoticeLink() }\"\n />\n }\n @if (termsLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: termsLink() }\"\n />\n }\n @if (acceptableUsePolicyLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: acceptableUsePolicyLink() }\"\n />\n }\n @for (item of links(); track $index) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: item }\"\n />\n }\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6 mb-6\">\n <div class=\"card overflow-hidden\" [class.h-100]=\"licenseInfo().iframe\">\n <div class=\"card-header text-truncate\">\n {{ licenseInfo().title }}\n </div>\n\n <div class=\"h-100\">\n @if (licenseInfo().text) {\n <pre class=\"border-0 border-bottom my-0 px-6 py-4\">{{ licenseInfo().text }}</pre>\n }\n\n @if (sanitizedUrl()) {\n <iframe class=\"w-100 h-100\" [src]=\"sanitizedUrl()\" [title]=\"licenseInfo().title\"></iframe>\n }\n\n @if (licenseInfo().api) {\n @for (api of licenseApi(); track $index) {\n <si-collapsible-panel\n colorVariant=\"base-0\"\n class=\"license-api\"\n [heading]=\"api.name\"\n (panelToggle)=\"toggleLoadLicenseApi(api)\"\n >\n @for (file of api.files; track $index) {\n <si-collapsible-panel\n colorVariant=\"base-0\"\n class=\"license-api-file\"\n [icon]=\"licenseInfo().icon ? licenseInfo().icon : icons.elementDocument\"\n [heading]=\"file.name\"\n (panelToggle)=\"toggleLoadLicenseContent(file)\"\n >\n <pre class=\"license-api-file-content px-6 py-6 my-0 border-0\">{{\n file.content\n }}</pre>\n </si-collapsible-panel>\n }\n </si-collapsible-panel>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #linkTemplate let-link=\"link\">\n <a\n class=\"list-item list-item-action text-primary focus-inside\"\n siLinkDefaultTarget=\"_blank\"\n [siLink]=\"link\"\n >\n <span class=\"list-item-title\">{{ link.title | translate }}</span>\n </a>\n</ng-template>\n", styles: [".app-icon{font-size:150px}iframe{border-style:none;min-block-size:500px;margin-block-end:-5px}pre{word-break:break-word;white-space:pre-wrap}\n"] }]
154
154
  }], propDecorators: { logoAlt: [{ type: i0.Input, args: [{ isSignal: true, alias: "logoAlt", required: false }] }], aboutTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "aboutTitle", required: true }] }], licenseInfo: [{ type: i0.Input, args: [{ isSignal: true, alias: "licenseInfo", required: true }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconName: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconName", required: false }] }], appName: [{ type: i0.Input, args: [{ isSignal: true, alias: "appName", required: true }] }], subheading: [{ type: i0.Input, args: [{ isSignal: true, alias: "subheading", required: false }] }], acceptableUsePolicyLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "acceptableUsePolicyLink", required: false }] }], imprintLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "imprintLink", required: false }] }], privacyLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "privacyLink", required: false }] }], cookieNoticeLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "cookieNoticeLink", required: false }] }], termsLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "termsLink", required: false }] }], links: [{ type: i0.Input, args: [{ isSignal: true, alias: "links", required: false }] }], copyrightDetails: [{ type: i0.Input, args: [{ isSignal: true, alias: "copyrightDetails", required: false }] }] } });
155
155
 
156
156
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-about.mjs","sources":["../../../../projects/element-ng/about/si-about.component.ts","../../../../projects/element-ng/about/si-about.component.html","../../../../projects/element-ng/about/si-about.module.ts","../../../../projects/element-ng/about/index.ts","../../../../projects/element-ng/about/siemens-element-ng-about.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Component, computed, inject, input, OnInit, signal } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { elementDocument } from '@siemens/element-icons';\nimport { SiCollapsiblePanelComponent } from '@siemens/element-ng/accordion';\nimport { CopyrightDetails, SiCopyrightNoticeComponent } from '@siemens/element-ng/copyright-notice';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\nimport { ApiInfo, LicenseInfo } from './si-about-data.model';\n\n@Component({\n selector: 'si-about',\n imports: [\n NgTemplateOutlet,\n SiCollapsiblePanelComponent,\n SiCopyrightNoticeComponent,\n SiIconComponent,\n SiLinkDirective,\n SiTranslatePipe\n ],\n templateUrl: './si-about.component.html',\n styleUrl: './si-about.component.scss'\n})\nexport class SiAboutComponent implements OnInit {\n private http = inject(HttpClient);\n private sanitizer = inject(DomSanitizer);\n\n /**\n * Alt text for the application logo. Supports `{{appName}}` placeholder for interpolation.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_ABOUT.LOGO_ALT:{{appName}} logo`)\n * ```\n */\n readonly logoAlt = input(t(() => $localize`:@@SI_ABOUT.LOGO_ALT:{{appName}} logo`));\n\n /**\n * Title shown above the about information.\n */\n readonly aboutTitle = input.required<string>();\n /**\n * Define mode to display the licenses. See {@link LicenseInfo}\n */\n readonly licenseInfo = input.required<LicenseInfo>();\n /**\n * Path to the application logo. Use for image\n */\n readonly icon = input<string>();\n /**\n * Name of element icon. Use as alternative to image\n */\n readonly iconName = input<string>();\n /**\n * Title of this application.\n */\n readonly appName = input.required<string>();\n /**\n * Sub titles of the application. Shown as a list below the application name. (Optional)\n */\n readonly subheading = input<string[]>();\n /**\n * Link to `Acceptable Use Policy`.\n */\n readonly acceptableUsePolicyLink = input<Link>();\n /**\n * Link to `Corporate Information`.\n */\n readonly imprintLink = input<Link>();\n /**\n * Link to `Privacy Notice`.\n */\n readonly privacyLink = input<Link>();\n /**\n * Link to `Cookie Notice`.\n */\n readonly cookieNoticeLink = input<Link>();\n /**\n * Link to `Terms of Use`.\n */\n readonly termsLink = input<Link>();\n /**\n * Additional links listed in the about section.\n *\n * @defaultValue []\n */\n readonly links = input<Link[]>([]);\n /**\n * Copyright information to be displayed. Alternatively, you can use the {@link SI_COPYRIGHT_DETAILS} global inject.\n */\n readonly copyrightDetails = input<CopyrightDetails>();\n\n protected readonly sanitizedUrl = computed(() => {\n const licenseInfo = this.licenseInfo();\n return licenseInfo.iframe != null\n ? this.sanitizer.bypassSecurityTrustResourceUrl(licenseInfo.iframe)\n : undefined;\n });\n\n protected readonly licenseApi = signal<ApiInfo[]>([]);\n protected readonly icons = addIcons({ elementDocument });\n\n ngOnInit(): void {\n const licenseInfo = this.licenseInfo();\n if (licenseInfo.api) {\n this.http.get<ApiInfo[]>(licenseInfo.api, { responseType: 'json' }).subscribe(data => {\n this.licenseApi.set(data);\n if (this.licenseApi().length === 1) {\n data[0].isOpen = false;\n this.licenseApi.set([...data]);\n this.toggleLoadLicenseApi(this.licenseApi()[0]);\n }\n });\n }\n }\n\n protected toggleLoadLicenseApi(apiInfo: ApiInfo): void {\n const licenseApi = this.licenseApi();\n if (!apiInfo.isOpen && !apiInfo.files) {\n this.http.get<ApiInfo[]>(apiInfo.href, { responseType: 'json' }).subscribe(files => {\n apiInfo.files = files;\n this.licenseApi.set([...licenseApi]);\n });\n }\n apiInfo.isOpen = !apiInfo.isOpen;\n this.licenseApi.set([...licenseApi]);\n }\n\n protected toggleLoadLicenseContent(apiInfo: ApiInfo): void {\n const licenseApi = this.licenseApi();\n apiInfo.isOpen = !apiInfo.isOpen;\n if (!apiInfo.content) {\n this.http.get(apiInfo.href, { responseType: 'text' }).subscribe((content: string) => {\n apiInfo.content = content;\n this.licenseApi.set([...licenseApi]);\n });\n }\n }\n}\n","<div class=\"row mx-6 mt-6\">\n <div class=\"col-md-6 mb-6\">\n <div class=\"card overflow-hidden\">\n <div class=\"card-header text-truncate\">\n {{ aboutTitle() }}\n </div>\n\n <div class=\"list-group\">\n <div class=\"list-group-item text-center\">\n @let appIcon = iconName();\n @if (icon()) {\n <img\n class=\"rounded-circle\"\n height=\"150\"\n [src]=\"icon()\"\n [alt]=\"logoAlt() | translate: { appName: appName() }\"\n />\n } @else if (appIcon) {\n <si-icon class=\"app-icon\" [icon]=\"appIcon\" />\n }\n <h3>{{ appName() }}</h3>\n @for (item of subheading(); track $index) {\n <p>{{ item }}</p>\n }\n <si-copyright-notice [copyright]=\"copyrightDetails()\" />\n </div>\n\n @if (imprintLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: imprintLink() }\"\n />\n }\n @if (privacyLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: privacyLink() }\"\n />\n }\n @if (cookieNoticeLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: cookieNoticeLink() }\"\n />\n }\n @if (termsLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: termsLink() }\"\n />\n }\n @if (acceptableUsePolicyLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: acceptableUsePolicyLink() }\"\n />\n }\n @for (item of links(); track $index) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: item }\"\n />\n }\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6 mb-6\">\n <div class=\"card overflow-hidden\" [class.h-100]=\"licenseInfo().iframe\">\n <div class=\"card-header text-truncate\">\n {{ licenseInfo().title }}\n </div>\n\n <div class=\"h-100\">\n @if (licenseInfo().text) {\n <pre class=\"border-0 border-bottom my-0 px-6 py-4\">{{ licenseInfo().text }}</pre>\n }\n\n @if (sanitizedUrl()) {\n <iframe class=\"w-100 h-100\" [src]=\"sanitizedUrl()\" [title]=\"licenseInfo().title\"></iframe>\n }\n\n @if (licenseInfo().api) {\n @for (api of licenseApi(); track $index) {\n <si-collapsible-panel\n colorVariant=\"base-0\"\n class=\"license-api\"\n [heading]=\"api.name\"\n (panelToggle)=\"toggleLoadLicenseApi(api)\"\n >\n @for (file of api.files; track $index) {\n <si-collapsible-panel\n colorVariant=\"base-0\"\n class=\"license-api-file\"\n [icon]=\"licenseInfo().icon ? licenseInfo().icon : icons.elementDocument\"\n [heading]=\"file.name\"\n (panelToggle)=\"toggleLoadLicenseContent(file)\"\n >\n <pre class=\"license-api-file-content px-6 py-6 my-0 border-0\">{{\n file.content\n }}</pre>\n </si-collapsible-panel>\n }\n </si-collapsible-panel>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #linkTemplate let-link=\"link\">\n <a\n class=\"list-group-item si-h5 text-primary focus-inside\"\n siLinkDefaultTarget=\"_blank\"\n [siLink]=\"link\"\n >\n {{ link.title | translate }}\n </a>\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiAboutComponent } from './si-about.component';\n\n@NgModule({\n imports: [SiAboutComponent],\n exports: [SiAboutComponent]\n})\nexport class SiAboutModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-about.component';\nexport * from './si-about.module';\nexport * from './si-about-data.model';\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-about.mjs","sources":["../../../../projects/element-ng/about/si-about.component.ts","../../../../projects/element-ng/about/si-about.component.html","../../../../projects/element-ng/about/si-about.module.ts","../../../../projects/element-ng/about/index.ts","../../../../projects/element-ng/about/siemens-element-ng-about.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Component, computed, inject, input, OnInit, signal } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { elementDocument } from '@siemens/element-icons';\nimport { SiCollapsiblePanelComponent } from '@siemens/element-ng/accordion';\nimport { CopyrightDetails, SiCopyrightNoticeComponent } from '@siemens/element-ng/copyright-notice';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\nimport { ApiInfo, LicenseInfo } from './si-about-data.model';\n\n@Component({\n selector: 'si-about',\n imports: [\n NgTemplateOutlet,\n SiCollapsiblePanelComponent,\n SiCopyrightNoticeComponent,\n SiIconComponent,\n SiLinkDirective,\n SiTranslatePipe\n ],\n templateUrl: './si-about.component.html',\n styleUrl: './si-about.component.scss'\n})\nexport class SiAboutComponent implements OnInit {\n private http = inject(HttpClient);\n private sanitizer = inject(DomSanitizer);\n\n /**\n * Alt text for the application logo. Supports `{{appName}}` placeholder for interpolation.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_ABOUT.LOGO_ALT:{{appName}} logo`)\n * ```\n */\n readonly logoAlt = input(t(() => $localize`:@@SI_ABOUT.LOGO_ALT:{{appName}} logo`));\n\n /**\n * Title shown above the about information.\n */\n readonly aboutTitle = input.required<string>();\n /**\n * Define mode to display the licenses. See {@link LicenseInfo}\n */\n readonly licenseInfo = input.required<LicenseInfo>();\n /**\n * Path to the application logo. Use for image\n */\n readonly icon = input<string>();\n /**\n * Name of element icon. Use as alternative to image\n */\n readonly iconName = input<string>();\n /**\n * Title of this application.\n */\n readonly appName = input.required<string>();\n /**\n * Sub titles of the application. Shown as a list below the application name. (Optional)\n */\n readonly subheading = input<string[]>();\n /**\n * Link to `Acceptable Use Policy`.\n */\n readonly acceptableUsePolicyLink = input<Link>();\n /**\n * Link to `Corporate Information`.\n */\n readonly imprintLink = input<Link>();\n /**\n * Link to `Privacy Notice`.\n */\n readonly privacyLink = input<Link>();\n /**\n * Link to `Cookie Notice`.\n */\n readonly cookieNoticeLink = input<Link>();\n /**\n * Link to `Terms of Use`.\n */\n readonly termsLink = input<Link>();\n /**\n * Additional links listed in the about section.\n *\n * @defaultValue []\n */\n readonly links = input<Link[]>([]);\n /**\n * Copyright information to be displayed. Alternatively, you can use the {@link SI_COPYRIGHT_DETAILS} global inject.\n */\n readonly copyrightDetails = input<CopyrightDetails>();\n\n protected readonly sanitizedUrl = computed(() => {\n const licenseInfo = this.licenseInfo();\n return licenseInfo.iframe != null\n ? this.sanitizer.bypassSecurityTrustResourceUrl(licenseInfo.iframe)\n : undefined;\n });\n\n protected readonly licenseApi = signal<ApiInfo[]>([]);\n protected readonly icons = addIcons({ elementDocument });\n\n ngOnInit(): void {\n const licenseInfo = this.licenseInfo();\n if (licenseInfo.api) {\n this.http.get<ApiInfo[]>(licenseInfo.api, { responseType: 'json' }).subscribe(data => {\n this.licenseApi.set(data);\n if (this.licenseApi().length === 1) {\n data[0].isOpen = false;\n this.licenseApi.set([...data]);\n this.toggleLoadLicenseApi(this.licenseApi()[0]);\n }\n });\n }\n }\n\n protected toggleLoadLicenseApi(apiInfo: ApiInfo): void {\n const licenseApi = this.licenseApi();\n if (!apiInfo.isOpen && !apiInfo.files) {\n this.http.get<ApiInfo[]>(apiInfo.href, { responseType: 'json' }).subscribe(files => {\n apiInfo.files = files;\n this.licenseApi.set([...licenseApi]);\n });\n }\n apiInfo.isOpen = !apiInfo.isOpen;\n this.licenseApi.set([...licenseApi]);\n }\n\n protected toggleLoadLicenseContent(apiInfo: ApiInfo): void {\n const licenseApi = this.licenseApi();\n apiInfo.isOpen = !apiInfo.isOpen;\n if (!apiInfo.content) {\n this.http.get(apiInfo.href, { responseType: 'text' }).subscribe((content: string) => {\n apiInfo.content = content;\n this.licenseApi.set([...licenseApi]);\n });\n }\n }\n}\n","<div class=\"row mx-6 mt-6\">\n <div class=\"col-md-6 mb-6\">\n <div class=\"card overflow-hidden\">\n <div class=\"card-header text-truncate\">\n {{ aboutTitle() }}\n </div>\n\n <div class=\"list list-divider\">\n <div class=\"list-item d-block text-center\">\n @let appIcon = iconName();\n @if (icon()) {\n <img\n class=\"rounded-circle\"\n height=\"150\"\n [src]=\"icon()\"\n [alt]=\"logoAlt() | translate: { appName: appName() }\"\n />\n } @else if (appIcon) {\n <si-icon class=\"app-icon\" [icon]=\"appIcon\" />\n }\n <h3>{{ appName() }}</h3>\n @for (item of subheading(); track $index) {\n <p>{{ item }}</p>\n }\n <si-copyright-notice [copyright]=\"copyrightDetails()\" />\n </div>\n\n @if (imprintLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: imprintLink() }\"\n />\n }\n @if (privacyLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: privacyLink() }\"\n />\n }\n @if (cookieNoticeLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: cookieNoticeLink() }\"\n />\n }\n @if (termsLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: termsLink() }\"\n />\n }\n @if (acceptableUsePolicyLink()) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: acceptableUsePolicyLink() }\"\n />\n }\n @for (item of links(); track $index) {\n <ng-container\n [ngTemplateOutlet]=\"linkTemplate\"\n [ngTemplateOutletContext]=\"{ link: item }\"\n />\n }\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6 mb-6\">\n <div class=\"card overflow-hidden\" [class.h-100]=\"licenseInfo().iframe\">\n <div class=\"card-header text-truncate\">\n {{ licenseInfo().title }}\n </div>\n\n <div class=\"h-100\">\n @if (licenseInfo().text) {\n <pre class=\"border-0 border-bottom my-0 px-6 py-4\">{{ licenseInfo().text }}</pre>\n }\n\n @if (sanitizedUrl()) {\n <iframe class=\"w-100 h-100\" [src]=\"sanitizedUrl()\" [title]=\"licenseInfo().title\"></iframe>\n }\n\n @if (licenseInfo().api) {\n @for (api of licenseApi(); track $index) {\n <si-collapsible-panel\n colorVariant=\"base-0\"\n class=\"license-api\"\n [heading]=\"api.name\"\n (panelToggle)=\"toggleLoadLicenseApi(api)\"\n >\n @for (file of api.files; track $index) {\n <si-collapsible-panel\n colorVariant=\"base-0\"\n class=\"license-api-file\"\n [icon]=\"licenseInfo().icon ? licenseInfo().icon : icons.elementDocument\"\n [heading]=\"file.name\"\n (panelToggle)=\"toggleLoadLicenseContent(file)\"\n >\n <pre class=\"license-api-file-content px-6 py-6 my-0 border-0\">{{\n file.content\n }}</pre>\n </si-collapsible-panel>\n }\n </si-collapsible-panel>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #linkTemplate let-link=\"link\">\n <a\n class=\"list-item list-item-action text-primary focus-inside\"\n siLinkDefaultTarget=\"_blank\"\n [siLink]=\"link\"\n >\n <span class=\"list-item-title\">{{ link.title | translate }}</span>\n </a>\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiAboutComponent } from './si-about.component';\n\n@NgModule({\n imports: [SiAboutComponent],\n exports: [SiAboutComponent]\n})\nexport class SiAboutModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-about.component';\nexport * from './si-about.module';\nexport * from './si-about-data.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, ChangeDetectionStrategy, Component, signal, makeEnvironmentProviders } from '@angular/core';
2
+ import { inject, ElementRef, DOCUMENT, ChangeDetectionStrategy, Component, signal, makeEnvironmentProviders } from '@angular/core';
3
3
  import * as i1 from '@angular/forms';
4
4
  import { FormsModule } from '@angular/forms';
5
5
  import { SiDatepickerDirective, SiCalendarButtonComponent } from '@siemens/element-ng/datepicker';
@@ -18,6 +18,7 @@ import { elementMenu, elementSortUp, elementLinkBroken, elementDown2, elementMin
18
18
  */
19
19
  class AgDateInputComponent {
20
20
  elementRef = inject(ElementRef);
21
+ document = inject(DOCUMENT);
21
22
  /**
22
23
  * The selected date value.
23
24
  */
@@ -48,7 +49,7 @@ class AgDateInputComponent {
48
49
  afterGuiAttached() {
49
50
  // Remove any existing listener to prevent duplicates
50
51
  if (this.documentClickListener) {
51
- document.removeEventListener('mousedown', this.documentClickListener, true);
52
+ this.document.removeEventListener('mousedown', this.documentClickListener, true);
52
53
  }
53
54
  // Intercept document click events to keep the filter open when clicking the calendar
54
55
  this.documentClickListener = (event) => {
@@ -58,11 +59,11 @@ class AgDateInputComponent {
58
59
  event.stopPropagation();
59
60
  }
60
61
  };
61
- document.addEventListener('mousedown', this.documentClickListener, true);
62
+ this.document.addEventListener('mousedown', this.documentClickListener, true);
62
63
  }
63
64
  ngOnDestroy() {
64
65
  if (this.documentClickListener) {
65
- document.removeEventListener('mousedown', this.documentClickListener, true);
66
+ this.document.removeEventListener('mousedown', this.documentClickListener, true);
66
67
  }
67
68
  }
68
69
  agInit(params) {
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-ag-grid.mjs","sources":["../../../../projects/element-ng/ag-grid/components/ag-date-input.component.ts","../../../../projects/element-ng/ag-grid/components/ag-no-rows-overlay.component.ts","../../../../projects/element-ng/ag-grid/components/index.ts","../../../../projects/element-ng/ag-grid/parts/checkbox-style.part.ts","../../../../projects/element-ng/ag-grid/parts/color-scheme.part.ts","../../../../projects/element-ng/ag-grid/parts/icon-overrides.part.ts","../../../../projects/element-ng/ag-grid/parts/pagination-style.part.ts","../../../../projects/element-ng/ag-grid/parts/pinning-style.part.ts","../../../../projects/element-ng/ag-grid/parts/radio-style.part.ts","../../../../projects/element-ng/ag-grid/parts/skeleton-style.part.ts","../../../../projects/element-ng/ag-grid/parts/text-filter-style.part.ts","../../../../projects/element-ng/ag-grid/parts/toggle-style.part.ts","../../../../projects/element-ng/ag-grid/parts/index.ts","../../../../projects/element-ng/ag-grid/themes.ts","../../../../projects/element-ng/ag-grid/provider.ts","../../../../projects/element-ng/ag-grid/index.ts","../../../../projects/element-ng/ag-grid/siemens-element-ng-ag-grid.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SiCalendarButtonComponent, SiDatepickerDirective } from '@siemens/element-ng/datepicker';\nimport { IDateComp, IDateParams } from 'ag-grid-community';\n\n/**\n * Custom AG Grid date component using Element datepicker.\n * This component replaces the native HTML date input with the Element design system datepicker.\n */\n@Component({\n selector: 'si-ag-date-input',\n imports: [FormsModule, SiDatepickerDirective, SiCalendarButtonComponent],\n template: `\n <si-calendar-button class=\"w-100\">\n <input\n type=\"text\"\n class=\"form-control\"\n siDatepicker\n [autoClose]=\"true\"\n [(ngModel)]=\"date\"\n (ngModelChange)=\"onDateChange()\"\n />\n </si-calendar-button>\n `,\n changeDetection: ChangeDetectionStrategy.Eager\n})\nexport class AgDateInputComponent implements IDateComp, OnDestroy {\n private elementRef = inject(ElementRef);\n\n /**\n * The selected date value.\n */\n public date: Date | undefined = undefined;\n\n /**\n * AG Grid date filter parameters.\n * @internal\n */\n private params!: IDateParams;\n\n /**\n * Document click event listener for calendar overlay.\n * @internal\n */\n private documentClickListener?: (event: MouseEvent) => void;\n\n /**\n * Notifies AG Grid when the date value changes.\n * @internal\n */\n onDateChange(): void {\n if (this.params) {\n this.params.onDateChanged();\n }\n }\n\n /**\n * Lifecycle hook called after the component GUI is attached.\n * Sets up event listeners to prevent filter popup from closing when interacting with calendar.\n */\n afterGuiAttached(): void {\n // Remove any existing listener to prevent duplicates\n if (this.documentClickListener) {\n document.removeEventListener('mousedown', this.documentClickListener, true);\n }\n\n // Intercept document click events to keep the filter open when clicking the calendar\n this.documentClickListener = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const calendarOverlay = target.closest('si-datepicker, .cdk-overlay-pane');\n\n if (calendarOverlay) {\n event.stopPropagation();\n }\n };\n document.addEventListener('mousedown', this.documentClickListener, true);\n }\n\n ngOnDestroy(): void {\n if (this.documentClickListener) {\n document.removeEventListener('mousedown', this.documentClickListener, true);\n }\n }\n\n agInit(params: IDateParams): void {\n this.params = params;\n }\n\n getDate(): Date | null {\n return this.date ?? null;\n }\n\n getGui(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n setDate(date: Date | null): void {\n this.date = date ?? undefined;\n if (this.params) {\n this.params.onDateChanged();\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { SiEmptyStateComponent } from '@siemens/element-ng/empty-state';\nimport { INoRowsOverlayParams } from 'ag-grid-community';\n\n/**\n * Custom AG Grid no rows overlay component using Element Empty State.\n * This component is displayed when the grid has no data to show.\n *\n * @example\n * Using with custom parameters\n * ```typescript\n * <ag-grid-angular\n * [noRowsOverlayComponent]=\"AgNoRowsOverlayComponent\"\n * [noRowsOverlayComponentParams]=\"{\n * icon: 'element-technical-search',\n * heading: 'No results found',\n * content: 'Try adjusting your filters.'\n * }\"\n * />\n * ```\n */\n@Component({\n selector: 'si-ag-no-rows-overlay',\n imports: [SiEmptyStateComponent],\n template: ` <si-empty-state [icon]=\"icon()\" [heading]=\"heading()\" [content]=\"content()\" /> `,\n styles: `\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n }\n `,\n changeDetection: ChangeDetectionStrategy.Eager\n})\nexport class AgNoRowsOverlayComponent {\n /**\n * Icon to display in the empty state.\n *\n */\n protected readonly icon = signal<string>('');\n\n /**\n * Heading text for the empty state.\n *\n */\n protected readonly heading = signal<string>('');\n\n /**\n * Description text for the empty state.\n *\n */\n protected readonly content = signal<string | undefined>(undefined);\n\n agInit(params: INoRowsOverlayParams & { icon: string; heading: string; content?: string }): void {\n this.icon.set(params.icon);\n this.heading.set(params.heading);\n this.content.set(params.content);\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './ag-date-input.component';\nexport * from './ag-no-rows-overlay.component';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a checkbox style part for the Element AG Grid theme.\n * This part overrides the unchecked checkbox hover state to match Element design system.\n *\n * @returns A part that defines checkbox styling for the Element AG Grid theme.\n */\nexport const elementCheckboxStyle: Part = createPart({\n css: `\n.ag-checkbox-input-wrapper:not(.ag-checked):not(.ag-indeterminate):hover {\n border-color: var(--si-sys-color-border-accent-hover);\n background: var(--si-sys-color-background-accent-secondary-hover);\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { elementCheckedImageShape } from '@siemens/element-ng/icon';\nimport { Part, ThemeDefaultParams, createPart } from 'ag-grid-community';\n\n/**\n * Creates a comprehensive color scheme part for the Element AG Grid theme.\n *\n * This part applies Element design system colors and styling to all AG Grid components,\n * including:\n * - Typography (fonts, weights, sizes)\n * - Base colors (backgrounds, borders, foreground)\n * - Interactive elements (buttons, inputs, icons)\n * - Cell and row styling (hover, selection, borders)\n * - Header components\n * - Checkboxes and form controls\n * - Menus, dialogs, and overlays\n * - Tooltips and tabs\n * - Charts and visualizations\n *\n * All colors are mapped to CSS custom properties from the Element design system,\n * ensuring consistency with other Element components and automatic theme support.\n *\n * @returns A part that defines the complete color scheme for the Element AG Grid theme.\n */\nexport const elementColorScheme: Part = createPart({\n feature: 'colorScheme',\n css: `\n .ag-header-cell:focus-visible,\n .ag-header-group-cell:focus-visible {\n outline: var(--element-button-focus-width) solid var(--element-focus-default);\n outline-offset: calc(-1 * var(--element-button-focus-width));\n }\n `,\n params: {\n // Typography\n buttonFontWeight: '600',\n cellFontFamily: 'var(--element-body-font-family)',\n fontFamily: 'var(--element-body-font-family)',\n fontSize: '14px',\n headerFontWeight: '600',\n\n // Base colors:\n accentColor: 'var(--si-sys-color-effects-focus)',\n backgroundColor: 'var(--si-sys-color-background-1)',\n borderColor: 'var(--si-sys-color-border-4)',\n foregroundColor: 'var(--si-sys-color-text-primary)',\n invalidColor: 'var(--si-sys-color-background-danger)',\n subtleTextColor: 'var(--si-sys-color-text-secondary)',\n\n // Button styles\n buttonActiveBackgroundColor: 'var(--si-sys-color-background-accent-secondary-hover)',\n buttonActiveBorder: {\n color: 'var(--si-sys-color-background-accent-secondary-hover)'\n },\n buttonActiveTextColor: 'var(--si-sys-color-text-accent-hover)',\n buttonBackgroundColor: 'var(--si-sys-color-background-accent-secondary)',\n buttonBorder: {\n color: 'var(--si-sys-color-border-accent)'\n },\n buttonTextColor: 'var(--si-sys-color-text-accent)',\n\n buttonHoverBackgroundColor: 'var(--si-sys-color-background-accent-secondary-hover)',\n buttonHoverBorder: {\n color: 'var(--si-sys-color-border-accent-hover)'\n },\n buttonHoverTextColor: 'var(--si-sys-color-text-accent-hover)',\n\n buttonDisabledBackgroundColor: 'var(--si-sys-color-background-accent-secondary)',\n buttonDisabledTextColor: 'var(--si-sys-color-text-disabled)',\n buttonDisabledBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n\n // Advanced filter builder styles\n advancedFilterBuilderButtonBarBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n advancedFilterBuilderJoinPillColor: 'var(--si-sys-color-background-danger-subtle)',\n advancedFilterBuilderColumnPillColor: 'var(--si-sys-color-background-success-subtle)',\n advancedFilterBuilderOptionPillColor: 'var(--si-sys-color-background-warning-subtle)',\n advancedFilterBuilderValuePillColor: 'var(--si-sys-color-background-information-subtle)',\n\n // Cell styles\n cellEditingBorder: {\n color: 'var(--si-sys-color-background-accent)'\n },\n cellTextColor: 'var(--si-sys-color-text-primary)',\n\n // Column styles\n columnBorder: {\n color: 'var(--si-sys-color-background-accent-secondary)'\n },\n columnDropCellBackgroundColor: 'var(--si-sys-color-background-1)',\n columnDropCellBorder: {\n color: 'var(--si-sys-color-background-accent-secondary)'\n },\n columnDropCellDragHandleColor: 'var(--si-sys-color-text-primary)',\n columnDropCellTextColor: 'var(--si-sys-color-text-primary)',\n columnHoverColor: 'var(--si-sys-color-background-hover)',\n\n // Row styles\n oddRowBackgroundColor: 'var(--si-sys-color-background-1)',\n rowBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n rowHoverColor: 'var(--si-sys-color-background-hover)',\n rowLoadingSkeletonEffectColor: 'var(--si-sys-color-background-1)',\n selectedRowBackgroundColor: 'var(--si-sys-color-background-active)',\n\n // Dialog and footer styles\n footerRowBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n dialogBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n\n // Checkbox styles\n checkboxBorderRadius: '2px',\n checkboxBorderWidth: '1px',\n checkboxCheckedBackgroundColor: 'var(--si-sys-color-background-accent)',\n checkboxCheckedBorderColor: 'var(--si-sys-color-background-accent)',\n checkboxCheckedShapeColor: 'var(--si-sys-color-text-on-accent)',\n checkboxCheckedShapeImage: {\n url: elementCheckedImageShape\n },\n checkboxIndeterminateBackgroundColor: 'var(--si-sys-color-background-accent)',\n checkboxIndeterminateBorderColor: 'var(--si-sys-color-background-accent)',\n checkboxIndeterminateShapeColor: 'var(--si-sys-color-background-1)',\n checkboxUncheckedBackgroundColor: 'var(--si-sys-color-background-1)',\n checkboxUncheckedBorderColor: 'var(--si-sys-color-border-1)',\n\n // Header styles\n headerBackgroundColor: 'var(--si-sys-color-background-1)',\n headerCellHoverBackgroundColor: 'var(--si-sys-color-background-hover)',\n headerColumnBorder: {\n color: 'var(--si-sys-color-background-accent-secondary)'\n },\n headerColumnResizeHandleColor: 'var(--si-sys-color-border-4)',\n headerRowBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n\n // Input styles\n inputBackgroundColor: 'var(--si-sys-color-background-1)',\n inputBorder: {\n color: 'var(--si-sys-color-border-2)'\n },\n inputBorderRadius: '2px',\n inputDisabledBackgroundColor: 'var(--si-sys-color-background-1)',\n inputDisabledBorder: {\n color: 'var(--si-sys-color-border-3)'\n },\n inputDisabledTextColor: 'var(--si-sys-color-text-disabled)',\n inputFocusBorder: {\n color: 'var(--si-sys-color-effects-focus)'\n },\n inputFocusShadow: false,\n inputIconColor: 'var(--si-sys-color-border-1)',\n inputInvalidBorder: {\n color: 'var(--si-sys-color-background-danger)'\n },\n inputTextColor: 'var(--si-sys-color-text-primary)',\n\n // Icon styles\n iconButtonActiveBackgroundColor: 'var(--si-sys-color-background-active)',\n iconButtonActiveColor: 'var(--si-sys-color-background-accent-hover)',\n iconButtonActiveIndicatorColor: 'var(--si-sys-color-background-accent-hover)',\n iconButtonBackgroundColor: 'var(--si-sys-color-background-accent-secondary)',\n iconButtonColor: 'var(--si-sys-color-text-primary)',\n iconButtonHoverBackgroundColor: 'var(--si-sys-color-background-hover)',\n iconButtonHoverColor: 'var(--si-sys-color-text-primary)',\n iconColor: 'var(--si-sys-color-text-primary)',\n iconSize: '18px',\n\n // Menu styles\n menuBackgroundColor: 'var(--si-sys-color-background-1)',\n menuBorder: false,\n menuShadow: 'var(--si-sys-color-effects-shadow-2)',\n\n // Pinning styles\n pinnedColumnBorder: {\n color: 'var(--si-sys-color-background-active)'\n },\n pinnedRowBorder: {\n color: 'var(--si-sys-color-background-active)'\n },\n\n // Drag and drop styles\n dragAndDropImageBackgroundColor: 'var(--si-sys-color-background-3)',\n dragAndDropImageBorder: false,\n dragAndDropImageShadow: 'var(--si-sys-color-effects-shadow-2)',\n dragHandleColor: 'var(--si-sys-color-text-primary)',\n\n // Range selection styles\n rangeHeaderHighlightColor: 'var(--si-sys-color-background-1)',\n rangeSelectionBackgroundColor: 'var(--si-sys-color-background-active)',\n rangeSelectionBorderColor: 'var(--si-sys-color-background-accent-hover)',\n rangeSelectionHighlightColor: 'var(--si-sys-color-background-active)',\n\n // Sidebar styles\n sideBarBackgroundColor: 'var(--si-sys-color-background-1)',\n sidePanelBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n\n // Side button styles\n sideButtonBackgroundColor: 'var(--si-sys-color-background-accent-secondary)',\n sideButtonBarBackgroundColor: 'var(--si-sys-color-background-1)',\n sideButtonHoverBackgroundColor: 'var(--si-sys-color-background-hover)',\n sideButtonSelectedBackgroundColor: 'var(--si-sys-color-background-active)',\n sideButtonSelectedBorder: 'var(--si-sys-color-border-accent)',\n sideButtonSelectedUnderlineColor: 'var(--si-sys-color-background-active)',\n\n // Status bar styles\n statusBarLabelColor: 'var(--si-sys-color-text-primary)',\n statusBarValueColor: 'var(--si-sys-color-text-primary)',\n\n // Select cell styles\n selectCellBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n\n // Toggle button styles - matching Element switch design\n toggleButtonHeight: '20px',\n toggleButtonOffBackgroundColor: 'var(--si-sys-color-background-neutral)',\n toggleButtonOnBackgroundColor: 'var(--si-sys-color-background-accent)',\n toggleButtonSwitchBackgroundColor: 'var(--si-sys-color-background-inverse)',\n toggleButtonSwitchInset: '4px',\n toggleButtonWidth: '40px',\n\n // Value change styles\n valueChangeDeltaDownColor: 'var(--si-sys-color-background-danger)',\n valueChangeDeltaUpColor: 'var(--si-sys-color-background-success)',\n valueChangeValueHighlightBackgroundColor: 'var(--si-sys-color-background-active)',\n\n // Tooltip styles\n tooltipBackgroundColor: 'var(--si-sys-color-background-inverse)',\n tooltipBorder: false,\n tooltipTextColor: 'var(--si-sys-color-text-inverse)',\n\n // Tab styles\n tabBackgroundColor: 'var(--si-sys-color-background-accent-secondary)',\n tabBarBackgroundColor: 'var(--si-sys-color-background-1)',\n tabBarBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n tabHoverBackgroundColor: 'var(--si-sys-color-background-accent-secondary)',\n tabSelectedTextColor: 'var(--si-sys-color-background-accent)',\n tabSelectedUnderlineColor: 'var(--si-sys-color-background-accent-secondary)',\n\n // Chart styles\n chartMenuLabelColor: 'var(--si-sys-color-text-primary)',\n\n // Misc styles\n focusShadow: false,\n wrapperBorder: false\n } satisfies Partial<ThemeDefaultParams>\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n elementBusy,\n elementCancel,\n elementCopy,\n elementCut,\n elementDown2,\n elementDownload,\n elementEdit,\n elementFilter,\n elementHide,\n elementJumpToListItem,\n elementLayoutPane3Alt,\n elementLeft2,\n elementLeft4,\n elementLink,\n elementLinkBroken,\n elementMenu,\n elementMinus,\n elementMove,\n elementOk,\n elementOptionsVertical,\n elementOutOfService,\n elementPalette,\n elementPaste,\n elementPin,\n elementPinch,\n elementPlus,\n elementReport,\n elementRight2,\n elementRight4,\n elementShow,\n elementSortDown,\n elementSortUp,\n elementSum,\n elementUp2,\n elementZoom\n} from '@siemens/element-icons';\nimport { iconOverrides } from 'ag-grid-community';\n\n/**\n * Utility function to convert data URI icon map to AG Grid icon format.\n * Extracts base64 SVG data from data URIs.\n *\n * @param icons - Record of icon names to data URI strings\n * @returns Record of icon names to AG Grid icon objects with SVG data\n */\nconst createIconMap = (icons: Record<string, string>): Record<string, { svg: string }> =>\n Object.fromEntries(\n Object.entries(icons).map(([key, dataUri]) => [key, { svg: dataUri.split(',')[1] }])\n );\n\n/**\n * Creates an icon overrides part for the Element AG Grid theme.\n * This part allows customization of AG Grid icons with Element design system icons.\n * Icons can be added to the icons map as needed.\n *\n * @returns A part that defines icon overrides for the Element AG Grid theme.\n */\nexport const elementIconOverrides = iconOverrides({\n type: 'image',\n mask: true,\n icons: createIconMap({\n aggregation: elementSum,\n arrows: elementMove,\n asc: elementSortUp,\n cancel: elementCancel,\n chart: elementReport,\n 'chevron-down': elementDown2,\n 'chevron-left': elementLeft2,\n 'chevron-right': elementRight2,\n 'chevron-up': elementUp2,\n 'color-picker': elementPalette,\n columns: elementLayoutPane3Alt,\n contracted: elementRight2,\n copy: elementCopy,\n cross: elementCancel,\n cut: elementCut,\n desc: elementSortDown,\n edit: elementEdit,\n expanded: elementLeft2,\n 'eye-slash': elementHide,\n eye: elementShow,\n filter: elementFilter,\n group: elementJumpToListItem,\n left: elementLeft4,\n linked: elementLink,\n loading: elementBusy,\n maximize: elementZoom,\n menu: elementOptionsVertical,\n 'menu-alt': elementOptionsVertical,\n minimize: elementPinch,\n minus: elementMinus,\n next: elementRight2,\n 'not-allowed': elementOutOfService,\n paste: elementPaste,\n pin: elementPin,\n plus: elementPlus,\n previous: elementLeft2,\n right: elementRight4,\n save: elementDownload,\n 'small-down': elementDown2,\n 'small-left': elementLeft2,\n 'small-right': elementRight2,\n 'small-up': elementUp2,\n tick: elementOk,\n 'tree-closed': elementRight2,\n 'tree-indeterminate': elementMinus,\n 'tree-open': elementDown2,\n unlinked: elementLinkBroken,\n up: elementSortUp,\n grip: elementMenu\n })\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a pagination style part for the Element AG Grid theme.\n * This part applies font weight styling to pagination summary numbers.\n *\n * @returns A part that defines pagination styling for the Element AG Grid theme.\n */\nexport const elementPaginationStyle: Part = createPart({\n css: `\n .ag-paging-row-summary-panel-number {\n font-weight: 600;\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a pinning style part for the Element AG Grid theme.\n * This part applies box shadow styling to pinned top and bottom rows.\n *\n * @returns A part that defines pinning styles for the Element AG Grid theme.\n */\nexport const elementPinningStyle: Part = createPart({\n css: `\n .ag-grid-pinned-top-rows-container {\n box-shadow: var(--si-sys-color-effects-shadow-2);\n }\n\n .ag-grid-pinned-bottom-rows-container {\n box-shadow: var(--si-sys-color-effects-shadow-2);\n }\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a radio button style part for the Element AG Grid theme.\n * This part applies Element design system styling to radio buttons including colors,\n * hover states, checked states, and disabled states.\n *\n * @returns A part that defines radio button styling for the Element AG Grid theme.\n */\nexport const elementRadioStyle: Part = createPart({\n css: `\n .ag-radio-button-input-wrapper {\n background-color: var(--element-ui-5);\n border: 1px solid var(--si-sys-color-border-1);\n}\n\n.ag-radio-button-input-wrapper:hover {\n border-color: var(--si-sys-color-border-accent-hover);\n background: var(--si-sys-color-background-accent-secondary-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-checked {\n border-color: var(--si-sys-color-border-accent);\n background-color: var(--element-ui-5);\n}\n\n.ag-radio-button-input-wrapper.ag-checked::after {\n background-color: var(--si-sys-color-background-accent);\n mask-image: none;\n inset: 4px;\n border-radius: 50%;\n}\n\n.ag-radio-button-input-wrapper.ag-checked:hover {\n border-color: var(--si-sys-color-border-accent-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-checked:hover::after {\n background-color: var(--si-sys-color-background-accent-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-disabled {\n border-color: var(--si-sys-color-border-3);\n background-color: var(--element-ui-5);\n opacity: 1;\n}\n\n.ag-radio-button-input-wrapper.ag-checked.ag-disabled {\n border-color: var(--si-sys-color-border-3);\n}\n\n.ag-radio-button-input-wrapper.ag-checked.ag-disabled::after {\n background-color: var(--si-sys-color-border-3);\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a skeleton style part for the Element AG Grid theme.\n * This part applies Element design system shimmer animation to skeleton loading effects\n * to match the Element skeleton component design.\n *\n * @returns A part that defines skeleton loading styles for the Element AG Grid theme.\n */\nexport const elementSkeletonStyle: Part = createPart({\n css: `\n @keyframes shimmer {\n to {\n background-position-x: -100%;\n }\n }\n\n .ag-skeleton-effect {\n background: linear-gradient(\n 90deg,\n var(--si-sys-color-background-hover) 0%,\n var(--si-sys-color-background-active) 25%,\n var(--si-sys-color-background-hover) 50%\n );\n background-size: 200% 100%;\n background-position-x: 100%;\n animation: shimmer calc(1.6s * var(--element-animations-enabled, 1)) ease-in-out infinite;\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a text filter style part for the Element AG Grid theme.\n * This part applies Element design system styling to text filter search inputs,\n * including border width and background color customization.\n *\n * @returns A part that defines text filter search input styling for the Element AG Grid theme.\n */\nexport const elementTextFilterStyle: Part = createPart({\n css: `\n .ag-column-select-header-filter-wrapper,\n.ag-filter-toolpanel-search,\n.ag-mini-filter,\n.ag-filter-filter,\n.ag-filter-add-select {\n .ag-text-field-input[type='text'] {\n border-width: 0;\n background-color: var(--si-sys-color-background-4);\n }\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a toggle button style part for the Element AG Grid theme.\n * This part applies Element design system switch styling including hover states,\n * transitions, and proper knob positioning to match the Element switch component.\n *\n * @returns A part that defines toggle button styling for the Element AG Grid theme.\n */\nexport const elementToggleStyle: Part = createPart({\n css: `\n .ag-toggle-button-input-wrapper {\n transition: background-color 0.4s;\n }\n\n .ag-toggle-button-input-wrapper::before {\n transition: left 0.4s;\n }\n\n .ag-toggle-button-input-wrapper:not(.ag-checked):hover {\n background-color: var(--si-sys-color-background-neutral);\n }\n\n .ag-toggle-button-input-wrapper.ag-checked:hover {\n background-color: var(--si-sys-color-background-accent-hover);\n }\n\n .ag-toggle-button-input-wrapper.ag-checked::before {\n background-color: var(--element-ui-5);\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './checkbox-style.part';\nexport * from './color-scheme.part';\nexport * from './icon-overrides.part';\nexport * from './pagination-style.part';\nexport * from './pinning-style.part';\nexport * from './radio-style.part';\nexport * from './skeleton-style.part';\nexport * from './text-filter-style.part';\nexport * from './toggle-style.part';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { iconSetAlpine, Theme, themeAlpine } from 'ag-grid-community';\n\nimport {\n elementCheckboxStyle,\n elementColorScheme,\n elementIconOverrides,\n elementPaginationStyle,\n elementPinningStyle,\n elementRadioStyle,\n elementSkeletonStyle,\n elementTextFilterStyle,\n elementToggleStyle\n} from './parts';\n\n/**\n * Base theme combining all Element design system parts with AG Grid Alpine theme.\n * This theme includes custom styling for checkboxes, radios, toggles, pagination,\n * pinning, skeleton loaders, text filters, icons, and color scheme.\n * @internal\n */\nconst elementBaseTheme: Theme = themeAlpine\n .withPart(iconSetAlpine)\n .withPart(elementCheckboxStyle)\n .withPart(elementRadioStyle)\n .withPart(elementToggleStyle)\n .withPart(elementPaginationStyle)\n .withPart(elementPinningStyle)\n .withPart(elementSkeletonStyle)\n .withPart(elementTextFilterStyle)\n .withPart(elementIconOverrides)\n .withPart(elementColorScheme);\n\n/**\n * Standard density Element AG Grid theme.\n * Provides balanced spacing suitable for most use cases.\n * - Row height: 42px\n * - Header height: 48px\n * - Spacing: 8px\n */\nexport const elementTheme: Theme = elementBaseTheme.withParams({\n rowHeight: '42px',\n headerHeight: '48px',\n spacing: '8px'\n});\n\n/**\n * Compact density Element AG Grid theme.\n * Optimized for displaying more data in limited space.\n * - Row height: 28px\n * - Header height: 32px\n * - Spacing: 4px\n */\nexport const elementThemeCompact: Theme = elementBaseTheme.withParams({\n rowHeight: '28px',\n headerHeight: '32px',\n spacing: '4px'\n});\n\n/**\n * Comfort density Element AG Grid theme.\n * Provides generous spacing for enhanced readability and touch interactions.\n * - Row height: 84px\n * - Header height: 96px\n * - Spacing: 12px\n */\nexport const elementThemeComfort: Theme = elementBaseTheme.withParams({\n rowHeight: '84px',\n headerHeight: '96px',\n spacing: '12px'\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { GridOptions, provideGlobalGridOptions, Theme } from 'ag-grid-community';\n\nimport { AgDateInputComponent, AgNoRowsOverlayComponent } from './components';\nimport { elementTheme, elementThemeCompact, elementThemeComfort } from './themes';\n\n/**\n * Default AG Grid options for Element theme.\n * Includes custom components for date input and empty state overlay.\n * @internal\n */\nconst ELEMENT_AG_GRID_OPTIONS: GridOptions = {\n tooltipShowDelay: 200,\n components: {\n agDateInput: AgDateInputComponent,\n agNoRowsOverlay: AgNoRowsOverlayComponent\n }\n};\n\n/**\n * Theme mapping by density variant.\n * @internal\n */\nconst THEME_BY_DENSITY = new Map<string, Theme>([\n ['compact', elementThemeCompact],\n ['comfort', elementThemeComfort],\n ['standard', elementTheme]\n]);\n\n/**\n * Provides AG Grid global configuration with Element design system theme.\n *\n * This provider configures AG Grid with the Element theme, custom components,\n * and density-specific styling. Use it in your application providers.\n *\n * @param density - The density variant to use. Options:\n * - 'compact': Minimal spacing (28px row height, 32px header height, 4px spacing)\n * - 'standard': Default spacing (42px row height, 48px header height, 8px spacing)\n * - 'comfort': Generous spacing (84px row height, 96px header height, 12px spacing)\n * @param gridOptions - Optional AG Grid options to merge with Element defaults.\n * These options will override Element defaults if specified.\n * @returns Environment providers for dependency injection\n *\n * @example\n * ```typescript\n * // In app.config.ts\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideSiAgGridConfig()\n * ]\n * };\n *\n * // With custom options\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideSiAgGridConfig('compact', {\n * rowHeight: 30,\n * suppressMenuHide: true\n * })\n * ]\n * };\n * ```\n */\nexport const provideSiAgGridConfig = (\n density: 'compact' | 'comfort' | 'standard' = 'standard',\n gridOptions?: GridOptions\n): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: 'ag-grid-options',\n useValue: provideGlobalGridOptions({\n ...ELEMENT_AG_GRID_OPTIONS,\n ...gridOptions,\n theme: THEME_BY_DENSITY.get(density)\n })\n }\n ]);\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nexport * from './components';\nexport * from './provider';\nexport * from './themes';\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-ag-grid.mjs","sources":["../../../../projects/element-ng/ag-grid/components/ag-date-input.component.ts","../../../../projects/element-ng/ag-grid/components/ag-no-rows-overlay.component.ts","../../../../projects/element-ng/ag-grid/components/index.ts","../../../../projects/element-ng/ag-grid/parts/checkbox-style.part.ts","../../../../projects/element-ng/ag-grid/parts/color-scheme.part.ts","../../../../projects/element-ng/ag-grid/parts/icon-overrides.part.ts","../../../../projects/element-ng/ag-grid/parts/pagination-style.part.ts","../../../../projects/element-ng/ag-grid/parts/pinning-style.part.ts","../../../../projects/element-ng/ag-grid/parts/radio-style.part.ts","../../../../projects/element-ng/ag-grid/parts/skeleton-style.part.ts","../../../../projects/element-ng/ag-grid/parts/text-filter-style.part.ts","../../../../projects/element-ng/ag-grid/parts/toggle-style.part.ts","../../../../projects/element-ng/ag-grid/parts/index.ts","../../../../projects/element-ng/ag-grid/themes.ts","../../../../projects/element-ng/ag-grid/provider.ts","../../../../projects/element-ng/ag-grid/index.ts","../../../../projects/element-ng/ag-grid/siemens-element-ng-ag-grid.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n DOCUMENT,\n ElementRef,\n OnDestroy,\n inject\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SiCalendarButtonComponent, SiDatepickerDirective } from '@siemens/element-ng/datepicker';\nimport { IDateComp, IDateParams } from 'ag-grid-community';\n\n/**\n * Custom AG Grid date component using Element datepicker.\n * This component replaces the native HTML date input with the Element design system datepicker.\n */\n@Component({\n selector: 'si-ag-date-input',\n imports: [FormsModule, SiDatepickerDirective, SiCalendarButtonComponent],\n template: `\n <si-calendar-button class=\"w-100\">\n <input\n type=\"text\"\n class=\"form-control\"\n siDatepicker\n [autoClose]=\"true\"\n [(ngModel)]=\"date\"\n (ngModelChange)=\"onDateChange()\"\n />\n </si-calendar-button>\n `,\n changeDetection: ChangeDetectionStrategy.Eager\n})\nexport class AgDateInputComponent implements IDateComp, OnDestroy {\n private elementRef = inject(ElementRef);\n private document = inject(DOCUMENT);\n\n /**\n * The selected date value.\n */\n public date: Date | undefined = undefined;\n\n /**\n * AG Grid date filter parameters.\n * @internal\n */\n private params!: IDateParams;\n\n /**\n * Document click event listener for calendar overlay.\n * @internal\n */\n private documentClickListener?: (event: MouseEvent) => void;\n\n /**\n * Notifies AG Grid when the date value changes.\n * @internal\n */\n onDateChange(): void {\n if (this.params) {\n this.params.onDateChanged();\n }\n }\n\n /**\n * Lifecycle hook called after the component GUI is attached.\n * Sets up event listeners to prevent filter popup from closing when interacting with calendar.\n */\n afterGuiAttached(): void {\n // Remove any existing listener to prevent duplicates\n if (this.documentClickListener) {\n this.document.removeEventListener('mousedown', this.documentClickListener, true);\n }\n\n // Intercept document click events to keep the filter open when clicking the calendar\n this.documentClickListener = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const calendarOverlay = target.closest('si-datepicker, .cdk-overlay-pane');\n\n if (calendarOverlay) {\n event.stopPropagation();\n }\n };\n this.document.addEventListener('mousedown', this.documentClickListener, true);\n }\n\n ngOnDestroy(): void {\n if (this.documentClickListener) {\n this.document.removeEventListener('mousedown', this.documentClickListener, true);\n }\n }\n\n agInit(params: IDateParams): void {\n this.params = params;\n }\n\n getDate(): Date | null {\n return this.date ?? null;\n }\n\n getGui(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n setDate(date: Date | null): void {\n this.date = date ?? undefined;\n if (this.params) {\n this.params.onDateChanged();\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { SiEmptyStateComponent } from '@siemens/element-ng/empty-state';\nimport { INoRowsOverlayParams } from 'ag-grid-community';\n\n/**\n * Custom AG Grid no rows overlay component using Element Empty State.\n * This component is displayed when the grid has no data to show.\n *\n * @example\n * Using with custom parameters\n * ```typescript\n * <ag-grid-angular\n * [noRowsOverlayComponent]=\"AgNoRowsOverlayComponent\"\n * [noRowsOverlayComponentParams]=\"{\n * icon: 'element-technical-search',\n * heading: 'No results found',\n * content: 'Try adjusting your filters.'\n * }\"\n * />\n * ```\n */\n@Component({\n selector: 'si-ag-no-rows-overlay',\n imports: [SiEmptyStateComponent],\n template: ` <si-empty-state [icon]=\"icon()\" [heading]=\"heading()\" [content]=\"content()\" /> `,\n styles: `\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n }\n `,\n changeDetection: ChangeDetectionStrategy.Eager\n})\nexport class AgNoRowsOverlayComponent {\n /**\n * Icon to display in the empty state.\n *\n */\n protected readonly icon = signal<string>('');\n\n /**\n * Heading text for the empty state.\n *\n */\n protected readonly heading = signal<string>('');\n\n /**\n * Description text for the empty state.\n *\n */\n protected readonly content = signal<string | undefined>(undefined);\n\n agInit(params: INoRowsOverlayParams & { icon: string; heading: string; content?: string }): void {\n this.icon.set(params.icon);\n this.heading.set(params.heading);\n this.content.set(params.content);\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './ag-date-input.component';\nexport * from './ag-no-rows-overlay.component';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a checkbox style part for the Element AG Grid theme.\n * This part overrides the unchecked checkbox hover state to match Element design system.\n *\n * @returns A part that defines checkbox styling for the Element AG Grid theme.\n */\nexport const elementCheckboxStyle: Part = createPart({\n css: `\n.ag-checkbox-input-wrapper:not(.ag-checked):not(.ag-indeterminate):hover {\n border-color: var(--si-sys-color-border-accent-hover);\n background: var(--si-sys-color-background-accent-secondary-hover);\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { elementCheckedImageShape } from '@siemens/element-ng/icon';\nimport { Part, ThemeDefaultParams, createPart } from 'ag-grid-community';\n\n/**\n * Creates a comprehensive color scheme part for the Element AG Grid theme.\n *\n * This part applies Element design system colors and styling to all AG Grid components,\n * including:\n * - Typography (fonts, weights, sizes)\n * - Base colors (backgrounds, borders, foreground)\n * - Interactive elements (buttons, inputs, icons)\n * - Cell and row styling (hover, selection, borders)\n * - Header components\n * - Checkboxes and form controls\n * - Menus, dialogs, and overlays\n * - Tooltips and tabs\n * - Charts and visualizations\n *\n * All colors are mapped to CSS custom properties from the Element design system,\n * ensuring consistency with other Element components and automatic theme support.\n *\n * @returns A part that defines the complete color scheme for the Element AG Grid theme.\n */\nexport const elementColorScheme: Part = createPart({\n feature: 'colorScheme',\n css: `\n .ag-header-cell:focus-visible,\n .ag-header-group-cell:focus-visible {\n outline: var(--element-button-focus-width) solid var(--element-focus-default);\n outline-offset: calc(-1 * var(--element-button-focus-width));\n }\n `,\n params: {\n // Typography\n buttonFontWeight: '600',\n cellFontFamily: 'var(--element-body-font-family)',\n fontFamily: 'var(--element-body-font-family)',\n fontSize: '14px',\n headerFontWeight: '600',\n\n // Base colors:\n accentColor: 'var(--si-sys-color-effects-focus)',\n backgroundColor: 'var(--si-sys-color-background-1)',\n borderColor: 'var(--si-sys-color-border-4)',\n foregroundColor: 'var(--si-sys-color-text-primary)',\n invalidColor: 'var(--si-sys-color-background-danger)',\n subtleTextColor: 'var(--si-sys-color-text-secondary)',\n\n // Button styles\n buttonActiveBackgroundColor: 'var(--si-sys-color-background-accent-secondary-hover)',\n buttonActiveBorder: {\n color: 'var(--si-sys-color-background-accent-secondary-hover)'\n },\n buttonActiveTextColor: 'var(--si-sys-color-text-accent-hover)',\n buttonBackgroundColor: 'var(--si-sys-color-background-accent-secondary)',\n buttonBorder: {\n color: 'var(--si-sys-color-border-accent)'\n },\n buttonTextColor: 'var(--si-sys-color-text-accent)',\n\n buttonHoverBackgroundColor: 'var(--si-sys-color-background-accent-secondary-hover)',\n buttonHoverBorder: {\n color: 'var(--si-sys-color-border-accent-hover)'\n },\n buttonHoverTextColor: 'var(--si-sys-color-text-accent-hover)',\n\n buttonDisabledBackgroundColor: 'var(--si-sys-color-background-accent-secondary)',\n buttonDisabledTextColor: 'var(--si-sys-color-text-disabled)',\n buttonDisabledBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n\n // Advanced filter builder styles\n advancedFilterBuilderButtonBarBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n advancedFilterBuilderJoinPillColor: 'var(--si-sys-color-background-danger-subtle)',\n advancedFilterBuilderColumnPillColor: 'var(--si-sys-color-background-success-subtle)',\n advancedFilterBuilderOptionPillColor: 'var(--si-sys-color-background-warning-subtle)',\n advancedFilterBuilderValuePillColor: 'var(--si-sys-color-background-information-subtle)',\n\n // Cell styles\n cellEditingBorder: {\n color: 'var(--si-sys-color-background-accent)'\n },\n cellTextColor: 'var(--si-sys-color-text-primary)',\n\n // Column styles\n columnBorder: {\n color: 'var(--si-sys-color-background-accent-secondary)'\n },\n columnDropCellBackgroundColor: 'var(--si-sys-color-background-1)',\n columnDropCellBorder: {\n color: 'var(--si-sys-color-background-accent-secondary)'\n },\n columnDropCellDragHandleColor: 'var(--si-sys-color-text-primary)',\n columnDropCellTextColor: 'var(--si-sys-color-text-primary)',\n columnHoverColor: 'var(--si-sys-color-background-hover)',\n\n // Row styles\n oddRowBackgroundColor: 'var(--si-sys-color-background-1)',\n rowBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n rowHoverColor: 'var(--si-sys-color-background-hover)',\n rowLoadingSkeletonEffectColor: 'var(--si-sys-color-background-1)',\n selectedRowBackgroundColor: 'var(--si-sys-color-background-active)',\n\n // Dialog and footer styles\n footerRowBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n dialogBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n\n // Checkbox styles\n checkboxBorderRadius: '2px',\n checkboxBorderWidth: '1px',\n checkboxCheckedBackgroundColor: 'var(--si-sys-color-background-accent)',\n checkboxCheckedBorderColor: 'var(--si-sys-color-background-accent)',\n checkboxCheckedShapeColor: 'var(--si-sys-color-text-on-accent)',\n checkboxCheckedShapeImage: {\n url: elementCheckedImageShape\n },\n checkboxIndeterminateBackgroundColor: 'var(--si-sys-color-background-accent)',\n checkboxIndeterminateBorderColor: 'var(--si-sys-color-background-accent)',\n checkboxIndeterminateShapeColor: 'var(--si-sys-color-background-1)',\n checkboxUncheckedBackgroundColor: 'var(--si-sys-color-background-1)',\n checkboxUncheckedBorderColor: 'var(--si-sys-color-border-1)',\n\n // Header styles\n headerBackgroundColor: 'var(--si-sys-color-background-1)',\n headerCellHoverBackgroundColor: 'var(--si-sys-color-background-hover)',\n headerColumnBorder: {\n color: 'var(--si-sys-color-background-accent-secondary)'\n },\n headerColumnResizeHandleColor: 'var(--si-sys-color-border-4)',\n headerRowBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n\n // Input styles\n inputBackgroundColor: 'var(--si-sys-color-background-1)',\n inputBorder: {\n color: 'var(--si-sys-color-border-2)'\n },\n inputBorderRadius: '2px',\n inputDisabledBackgroundColor: 'var(--si-sys-color-background-1)',\n inputDisabledBorder: {\n color: 'var(--si-sys-color-border-3)'\n },\n inputDisabledTextColor: 'var(--si-sys-color-text-disabled)',\n inputFocusBorder: {\n color: 'var(--si-sys-color-effects-focus)'\n },\n inputFocusShadow: false,\n inputIconColor: 'var(--si-sys-color-border-1)',\n inputInvalidBorder: {\n color: 'var(--si-sys-color-background-danger)'\n },\n inputTextColor: 'var(--si-sys-color-text-primary)',\n\n // Icon styles\n iconButtonActiveBackgroundColor: 'var(--si-sys-color-background-active)',\n iconButtonActiveColor: 'var(--si-sys-color-background-accent-hover)',\n iconButtonActiveIndicatorColor: 'var(--si-sys-color-background-accent-hover)',\n iconButtonBackgroundColor: 'var(--si-sys-color-background-accent-secondary)',\n iconButtonColor: 'var(--si-sys-color-text-primary)',\n iconButtonHoverBackgroundColor: 'var(--si-sys-color-background-hover)',\n iconButtonHoverColor: 'var(--si-sys-color-text-primary)',\n iconColor: 'var(--si-sys-color-text-primary)',\n iconSize: '18px',\n\n // Menu styles\n menuBackgroundColor: 'var(--si-sys-color-background-1)',\n menuBorder: false,\n menuShadow: 'var(--si-sys-color-effects-shadow-2)',\n\n // Pinning styles\n pinnedColumnBorder: {\n color: 'var(--si-sys-color-background-active)'\n },\n pinnedRowBorder: {\n color: 'var(--si-sys-color-background-active)'\n },\n\n // Drag and drop styles\n dragAndDropImageBackgroundColor: 'var(--si-sys-color-background-3)',\n dragAndDropImageBorder: false,\n dragAndDropImageShadow: 'var(--si-sys-color-effects-shadow-2)',\n dragHandleColor: 'var(--si-sys-color-text-primary)',\n\n // Range selection styles\n rangeHeaderHighlightColor: 'var(--si-sys-color-background-1)',\n rangeSelectionBackgroundColor: 'var(--si-sys-color-background-active)',\n rangeSelectionBorderColor: 'var(--si-sys-color-background-accent-hover)',\n rangeSelectionHighlightColor: 'var(--si-sys-color-background-active)',\n\n // Sidebar styles\n sideBarBackgroundColor: 'var(--si-sys-color-background-1)',\n sidePanelBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n\n // Side button styles\n sideButtonBackgroundColor: 'var(--si-sys-color-background-accent-secondary)',\n sideButtonBarBackgroundColor: 'var(--si-sys-color-background-1)',\n sideButtonHoverBackgroundColor: 'var(--si-sys-color-background-hover)',\n sideButtonSelectedBackgroundColor: 'var(--si-sys-color-background-active)',\n sideButtonSelectedBorder: 'var(--si-sys-color-border-accent)',\n sideButtonSelectedUnderlineColor: 'var(--si-sys-color-background-active)',\n\n // Status bar styles\n statusBarLabelColor: 'var(--si-sys-color-text-primary)',\n statusBarValueColor: 'var(--si-sys-color-text-primary)',\n\n // Select cell styles\n selectCellBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n\n // Toggle button styles - matching Element switch design\n toggleButtonHeight: '20px',\n toggleButtonOffBackgroundColor: 'var(--si-sys-color-background-neutral)',\n toggleButtonOnBackgroundColor: 'var(--si-sys-color-background-accent)',\n toggleButtonSwitchBackgroundColor: 'var(--si-sys-color-background-inverse)',\n toggleButtonSwitchInset: '4px',\n toggleButtonWidth: '40px',\n\n // Value change styles\n valueChangeDeltaDownColor: 'var(--si-sys-color-background-danger)',\n valueChangeDeltaUpColor: 'var(--si-sys-color-background-success)',\n valueChangeValueHighlightBackgroundColor: 'var(--si-sys-color-background-active)',\n\n // Tooltip styles\n tooltipBackgroundColor: 'var(--si-sys-color-background-inverse)',\n tooltipBorder: false,\n tooltipTextColor: 'var(--si-sys-color-text-inverse)',\n\n // Tab styles\n tabBackgroundColor: 'var(--si-sys-color-background-accent-secondary)',\n tabBarBackgroundColor: 'var(--si-sys-color-background-1)',\n tabBarBorder: {\n color: 'var(--si-sys-color-border-4)'\n },\n tabHoverBackgroundColor: 'var(--si-sys-color-background-accent-secondary)',\n tabSelectedTextColor: 'var(--si-sys-color-background-accent)',\n tabSelectedUnderlineColor: 'var(--si-sys-color-background-accent-secondary)',\n\n // Chart styles\n chartMenuLabelColor: 'var(--si-sys-color-text-primary)',\n\n // Misc styles\n focusShadow: false,\n wrapperBorder: false\n } satisfies Partial<ThemeDefaultParams>\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n elementBusy,\n elementCancel,\n elementCopy,\n elementCut,\n elementDown2,\n elementDownload,\n elementEdit,\n elementFilter,\n elementHide,\n elementJumpToListItem,\n elementLayoutPane3Alt,\n elementLeft2,\n elementLeft4,\n elementLink,\n elementLinkBroken,\n elementMenu,\n elementMinus,\n elementMove,\n elementOk,\n elementOptionsVertical,\n elementOutOfService,\n elementPalette,\n elementPaste,\n elementPin,\n elementPinch,\n elementPlus,\n elementReport,\n elementRight2,\n elementRight4,\n elementShow,\n elementSortDown,\n elementSortUp,\n elementSum,\n elementUp2,\n elementZoom\n} from '@siemens/element-icons';\nimport { iconOverrides } from 'ag-grid-community';\n\n/**\n * Utility function to convert data URI icon map to AG Grid icon format.\n * Extracts base64 SVG data from data URIs.\n *\n * @param icons - Record of icon names to data URI strings\n * @returns Record of icon names to AG Grid icon objects with SVG data\n */\nconst createIconMap = (icons: Record<string, string>): Record<string, { svg: string }> =>\n Object.fromEntries(\n Object.entries(icons).map(([key, dataUri]) => [key, { svg: dataUri.split(',')[1] }])\n );\n\n/**\n * Creates an icon overrides part for the Element AG Grid theme.\n * This part allows customization of AG Grid icons with Element design system icons.\n * Icons can be added to the icons map as needed.\n *\n * @returns A part that defines icon overrides for the Element AG Grid theme.\n */\nexport const elementIconOverrides = iconOverrides({\n type: 'image',\n mask: true,\n icons: createIconMap({\n aggregation: elementSum,\n arrows: elementMove,\n asc: elementSortUp,\n cancel: elementCancel,\n chart: elementReport,\n 'chevron-down': elementDown2,\n 'chevron-left': elementLeft2,\n 'chevron-right': elementRight2,\n 'chevron-up': elementUp2,\n 'color-picker': elementPalette,\n columns: elementLayoutPane3Alt,\n contracted: elementRight2,\n copy: elementCopy,\n cross: elementCancel,\n cut: elementCut,\n desc: elementSortDown,\n edit: elementEdit,\n expanded: elementLeft2,\n 'eye-slash': elementHide,\n eye: elementShow,\n filter: elementFilter,\n group: elementJumpToListItem,\n left: elementLeft4,\n linked: elementLink,\n loading: elementBusy,\n maximize: elementZoom,\n menu: elementOptionsVertical,\n 'menu-alt': elementOptionsVertical,\n minimize: elementPinch,\n minus: elementMinus,\n next: elementRight2,\n 'not-allowed': elementOutOfService,\n paste: elementPaste,\n pin: elementPin,\n plus: elementPlus,\n previous: elementLeft2,\n right: elementRight4,\n save: elementDownload,\n 'small-down': elementDown2,\n 'small-left': elementLeft2,\n 'small-right': elementRight2,\n 'small-up': elementUp2,\n tick: elementOk,\n 'tree-closed': elementRight2,\n 'tree-indeterminate': elementMinus,\n 'tree-open': elementDown2,\n unlinked: elementLinkBroken,\n up: elementSortUp,\n grip: elementMenu\n })\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a pagination style part for the Element AG Grid theme.\n * This part applies font weight styling to pagination summary numbers.\n *\n * @returns A part that defines pagination styling for the Element AG Grid theme.\n */\nexport const elementPaginationStyle: Part = createPart({\n css: `\n .ag-paging-row-summary-panel-number {\n font-weight: 600;\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a pinning style part for the Element AG Grid theme.\n * This part applies box shadow styling to pinned top and bottom rows.\n *\n * @returns A part that defines pinning styles for the Element AG Grid theme.\n */\nexport const elementPinningStyle: Part = createPart({\n css: `\n .ag-grid-pinned-top-rows-container {\n box-shadow: var(--si-sys-color-effects-shadow-2);\n }\n\n .ag-grid-pinned-bottom-rows-container {\n box-shadow: var(--si-sys-color-effects-shadow-2);\n }\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a radio button style part for the Element AG Grid theme.\n * This part applies Element design system styling to radio buttons including colors,\n * hover states, checked states, and disabled states.\n *\n * @returns A part that defines radio button styling for the Element AG Grid theme.\n */\nexport const elementRadioStyle: Part = createPart({\n css: `\n .ag-radio-button-input-wrapper {\n background-color: var(--element-ui-5);\n border: 1px solid var(--si-sys-color-border-1);\n}\n\n.ag-radio-button-input-wrapper:hover {\n border-color: var(--si-sys-color-border-accent-hover);\n background: var(--si-sys-color-background-accent-secondary-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-checked {\n border-color: var(--si-sys-color-border-accent);\n background-color: var(--element-ui-5);\n}\n\n.ag-radio-button-input-wrapper.ag-checked::after {\n background-color: var(--si-sys-color-background-accent);\n mask-image: none;\n inset: 4px;\n border-radius: 50%;\n}\n\n.ag-radio-button-input-wrapper.ag-checked:hover {\n border-color: var(--si-sys-color-border-accent-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-checked:hover::after {\n background-color: var(--si-sys-color-background-accent-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-disabled {\n border-color: var(--si-sys-color-border-3);\n background-color: var(--element-ui-5);\n opacity: 1;\n}\n\n.ag-radio-button-input-wrapper.ag-checked.ag-disabled {\n border-color: var(--si-sys-color-border-3);\n}\n\n.ag-radio-button-input-wrapper.ag-checked.ag-disabled::after {\n background-color: var(--si-sys-color-border-3);\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a skeleton style part for the Element AG Grid theme.\n * This part applies Element design system shimmer animation to skeleton loading effects\n * to match the Element skeleton component design.\n *\n * @returns A part that defines skeleton loading styles for the Element AG Grid theme.\n */\nexport const elementSkeletonStyle: Part = createPart({\n css: `\n @keyframes shimmer {\n to {\n background-position-x: -100%;\n }\n }\n\n .ag-skeleton-effect {\n background: linear-gradient(\n 90deg,\n var(--si-sys-color-background-hover) 0%,\n var(--si-sys-color-background-active) 25%,\n var(--si-sys-color-background-hover) 50%\n );\n background-size: 200% 100%;\n background-position-x: 100%;\n animation: shimmer calc(1.6s * var(--element-animations-enabled, 1)) ease-in-out infinite;\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a text filter style part for the Element AG Grid theme.\n * This part applies Element design system styling to text filter search inputs,\n * including border width and background color customization.\n *\n * @returns A part that defines text filter search input styling for the Element AG Grid theme.\n */\nexport const elementTextFilterStyle: Part = createPart({\n css: `\n .ag-column-select-header-filter-wrapper,\n.ag-filter-toolpanel-search,\n.ag-mini-filter,\n.ag-filter-filter,\n.ag-filter-add-select {\n .ag-text-field-input[type='text'] {\n border-width: 0;\n background-color: var(--si-sys-color-background-4);\n }\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a toggle button style part for the Element AG Grid theme.\n * This part applies Element design system switch styling including hover states,\n * transitions, and proper knob positioning to match the Element switch component.\n *\n * @returns A part that defines toggle button styling for the Element AG Grid theme.\n */\nexport const elementToggleStyle: Part = createPart({\n css: `\n .ag-toggle-button-input-wrapper {\n transition: background-color 0.4s;\n }\n\n .ag-toggle-button-input-wrapper::before {\n transition: left 0.4s;\n }\n\n .ag-toggle-button-input-wrapper:not(.ag-checked):hover {\n background-color: var(--si-sys-color-background-neutral);\n }\n\n .ag-toggle-button-input-wrapper.ag-checked:hover {\n background-color: var(--si-sys-color-background-accent-hover);\n }\n\n .ag-toggle-button-input-wrapper.ag-checked::before {\n background-color: var(--element-ui-5);\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './checkbox-style.part';\nexport * from './color-scheme.part';\nexport * from './icon-overrides.part';\nexport * from './pagination-style.part';\nexport * from './pinning-style.part';\nexport * from './radio-style.part';\nexport * from './skeleton-style.part';\nexport * from './text-filter-style.part';\nexport * from './toggle-style.part';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { iconSetAlpine, Theme, themeAlpine } from 'ag-grid-community';\n\nimport {\n elementCheckboxStyle,\n elementColorScheme,\n elementIconOverrides,\n elementPaginationStyle,\n elementPinningStyle,\n elementRadioStyle,\n elementSkeletonStyle,\n elementTextFilterStyle,\n elementToggleStyle\n} from './parts';\n\n/**\n * Base theme combining all Element design system parts with AG Grid Alpine theme.\n * This theme includes custom styling for checkboxes, radios, toggles, pagination,\n * pinning, skeleton loaders, text filters, icons, and color scheme.\n * @internal\n */\nconst elementBaseTheme: Theme = themeAlpine\n .withPart(iconSetAlpine)\n .withPart(elementCheckboxStyle)\n .withPart(elementRadioStyle)\n .withPart(elementToggleStyle)\n .withPart(elementPaginationStyle)\n .withPart(elementPinningStyle)\n .withPart(elementSkeletonStyle)\n .withPart(elementTextFilterStyle)\n .withPart(elementIconOverrides)\n .withPart(elementColorScheme);\n\n/**\n * Standard density Element AG Grid theme.\n * Provides balanced spacing suitable for most use cases.\n * - Row height: 42px\n * - Header height: 48px\n * - Spacing: 8px\n */\nexport const elementTheme: Theme = elementBaseTheme.withParams({\n rowHeight: '42px',\n headerHeight: '48px',\n spacing: '8px'\n});\n\n/**\n * Compact density Element AG Grid theme.\n * Optimized for displaying more data in limited space.\n * - Row height: 28px\n * - Header height: 32px\n * - Spacing: 4px\n */\nexport const elementThemeCompact: Theme = elementBaseTheme.withParams({\n rowHeight: '28px',\n headerHeight: '32px',\n spacing: '4px'\n});\n\n/**\n * Comfort density Element AG Grid theme.\n * Provides generous spacing for enhanced readability and touch interactions.\n * - Row height: 84px\n * - Header height: 96px\n * - Spacing: 12px\n */\nexport const elementThemeComfort: Theme = elementBaseTheme.withParams({\n rowHeight: '84px',\n headerHeight: '96px',\n spacing: '12px'\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { GridOptions, provideGlobalGridOptions, Theme } from 'ag-grid-community';\n\nimport { AgDateInputComponent, AgNoRowsOverlayComponent } from './components';\nimport { elementTheme, elementThemeCompact, elementThemeComfort } from './themes';\n\n/**\n * Default AG Grid options for Element theme.\n * Includes custom components for date input and empty state overlay.\n * @internal\n */\nconst ELEMENT_AG_GRID_OPTIONS: GridOptions = {\n tooltipShowDelay: 200,\n components: {\n agDateInput: AgDateInputComponent,\n agNoRowsOverlay: AgNoRowsOverlayComponent\n }\n};\n\n/**\n * Theme mapping by density variant.\n * @internal\n */\nconst THEME_BY_DENSITY = new Map<string, Theme>([\n ['compact', elementThemeCompact],\n ['comfort', elementThemeComfort],\n ['standard', elementTheme]\n]);\n\n/**\n * Provides AG Grid global configuration with Element design system theme.\n *\n * This provider configures AG Grid with the Element theme, custom components,\n * and density-specific styling. Use it in your application providers.\n *\n * @param density - The density variant to use. Options:\n * - 'compact': Minimal spacing (28px row height, 32px header height, 4px spacing)\n * - 'standard': Default spacing (42px row height, 48px header height, 8px spacing)\n * - 'comfort': Generous spacing (84px row height, 96px header height, 12px spacing)\n * @param gridOptions - Optional AG Grid options to merge with Element defaults.\n * These options will override Element defaults if specified.\n * @returns Environment providers for dependency injection\n *\n * @example\n * ```typescript\n * // In app.config.ts\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideSiAgGridConfig()\n * ]\n * };\n *\n * // With custom options\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideSiAgGridConfig('compact', {\n * rowHeight: 30,\n * suppressMenuHide: true\n * })\n * ]\n * };\n * ```\n */\nexport const provideSiAgGridConfig = (\n density: 'compact' | 'comfort' | 'standard' = 'standard',\n gridOptions?: GridOptions\n): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: 'ag-grid-options',\n useValue: provideGlobalGridOptions({\n ...ELEMENT_AG_GRID_OPTIONS,\n ...gridOptions,\n theme: THEME_BY_DENSITY.get(density)\n })\n }\n ]);\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nexport * from './components';\nexport * from './provider';\nexport * from './themes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
+ import { CdkMenuTrigger } from '@angular/cdk/menu';
1
2
  import { NgTemplateOutlet } from '@angular/common';
2
3
  import * as i0 from '@angular/core';
3
- import { Directive, input, booleanAttribute, viewChild, viewChildren, inject, ChangeDetectorRef, HostListener, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
4
+ import { Directive, input, booleanAttribute, viewChild, viewChildren, inject, ChangeDetectorRef, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
4
5
  import { elementRight2, elementBreadcrumbRoot } from '@siemens/element-icons';
5
6
  import { addIcons, SiIconComponent } from '@siemens/element-ng/icon';
6
7
  import { SiLinkDirective } from '@siemens/element-ng/link';
8
+ import { SiMenuDirective, SiMenuItemComponent } from '@siemens/element-ng/menu';
7
9
  import { SiResizeObserverDirective } from '@siemens/element-ng/resize-observer';
8
10
  import { SiTooltipOverflowDirective } from '@siemens/element-ng/tooltip';
9
11
  import { t, injectSiTranslateService, SiTranslatePipe } from '@siemens/element-translate-ng/translate';
@@ -38,7 +40,6 @@ const NUMBER_OF_SHOWN_ITEMS_AT_END = 2;
38
40
  * Defines the width of the root icon in pixels.
39
41
  */
40
42
  const ROOT_ICON_WIDTH = 24;
41
- let controlIdCounter = 1;
42
43
  class SiBreadcrumbComponent {
43
44
  /** Array of breadcrumb items. */
44
45
  items = input.required(/* @ts-ignore */
@@ -66,14 +67,14 @@ class SiBreadcrumbComponent {
66
67
  itemsHidden = [];
67
68
  breadcrumbShortened = false;
68
69
  ellipsesLevel = 0;
69
- // Record to allow for -1 (root).
70
- breadcrumbDropdownOpen = undefined;
71
- controlId = `__si-breadcrumb-${controlIdCounter++}-`;
70
+ hiddenItemsLabel = t(() => $localize `:@@SI_BREADCRUMB.HIDDEN_ITEMS:Hidden breadcrumb items`);
72
71
  icons = addIcons({ elementBreadcrumbRoot, elementRight2 });
73
72
  breadcrumbElement = viewChild.required('breadcrumb', /* @ts-ignore */
74
73
  ...(ngDevMode ? [{ debugName: "breadcrumbElement" }] : /* istanbul ignore next */ []));
75
74
  breadcrumbElements = viewChildren('breadcrumbItem', /* @ts-ignore */
76
75
  ...(ngDevMode ? [{ debugName: "breadcrumbElements" }] : /* istanbul ignore next */ []));
76
+ breadcrumbMenu = viewChild(CdkMenuTrigger, /* @ts-ignore */
77
+ ...(ngDevMode ? [{ debugName: "breadcrumbMenu" }] : /* istanbul ignore next */ []));
77
78
  changeDetector = inject(ChangeDetectorRef);
78
79
  translate = injectSiTranslateService();
79
80
  ngOnChanges() {
@@ -109,7 +110,6 @@ class SiBreadcrumbComponent {
109
110
  this.itemsShown = enumeratedItems;
110
111
  this.itemsHidden = [];
111
112
  this.breadcrumbShortened = false;
112
- this.breadcrumbDropdownOpen = undefined;
113
113
  this.itemsProcessed = true;
114
114
  this.resetBreadcrumb();
115
115
  });
@@ -118,32 +118,19 @@ class SiBreadcrumbComponent {
118
118
  this.itemsShown = [];
119
119
  this.itemsHidden = [];
120
120
  this.breadcrumbShortened = false;
121
- this.breadcrumbDropdownOpen = undefined;
122
121
  this.itemsProcessed = true;
123
122
  this.resetBreadcrumb();
124
123
  }
125
124
  }
126
- /** Toggle the ellipses dropdown to show the hidden breadcrumb levels. */
127
- toggleBreadcrumbDropdown(itemLevel) {
128
- this.breadcrumbDropdownOpen = this.breadcrumbDropdownOpen === itemLevel ? undefined : itemLevel;
129
- }
130
- // Close dropdown on click anywhere else
131
- documentClick(targetElement) {
132
- if (this.breadcrumbDropdownOpen) {
133
- if (!this.breadcrumbElement().nativeElement.contains(targetElement)) {
134
- // Close all dropdowns.
135
- this.breadcrumbDropdownOpen = undefined;
136
- }
137
- }
138
- }
139
125
  resetBreadcrumb() {
126
+ this.breadcrumbMenu()?.close();
140
127
  if (this.itemsProcessed) {
141
128
  this.numberOfItems = this.items().length;
142
129
  // Add an additional the ellipses item to the end of the shownItems (breadcrumb items).
143
130
  const ellipsesItem = { title: '...', level: this.numberOfItems };
144
131
  this.itemsShown.push(ellipsesItem);
145
132
  if (this.breadcrumbShortened) {
146
- // If the breadcrumb was shortened before, remove the ellipses and add back itemsHidden (breadcrumb dropdown items).
133
+ // If the breadcrumb was shortened before, remove the ellipses and add back itemsHidden (breadcrumb menu items).
147
134
  this.breadcrumbShortened = false;
148
135
  this.itemsShown.splice(this.ellipsesLevel, 1, ...this.itemsHidden);
149
136
  this.itemsHidden = [];
@@ -209,7 +196,7 @@ class SiBreadcrumbComponent {
209
196
  }
210
197
  }
211
198
  });
212
- // If breadcrumbShortened is true, move the items that do not fit to itemsHidden (breadcrumb dropdown items) and add ellipses item.
199
+ // If breadcrumbShortened is true, move the items that do not fit to itemsHidden (breadcrumb menu items) and add ellipses item.
213
200
  if (this.breadcrumbShortened) {
214
201
  this.ellipsesLevel = counter;
215
202
  this.itemsHidden = this.itemsShown.slice(this.ellipsesLevel, reverseCounter);
@@ -220,23 +207,23 @@ class SiBreadcrumbComponent {
220
207
  this.changeDetector.detectChanges();
221
208
  }
222
209
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiBreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
223
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SiBreadcrumbComponent, isStandalone: true, selector: "si-breadcrumb", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, showRootAsText: { classPropertyName: "showRootAsText", publicName: "showRootAsText", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:click": "documentClick($event.target)" } }, viewQueries: [{ propertyName: "breadcrumbElement", first: true, predicate: ["breadcrumb"], descendants: true, isSignal: true }, { propertyName: "breadcrumbElements", predicate: ["breadcrumbItem"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<nav class=\"py-2\" [attr.aria-label]=\"ariaLabel() | translate\">\n <ol #breadcrumb class=\"breadcrumb\" (siResizeObserver)=\"resetBreadcrumb()\">\n @for (item of itemsShown; track $index; let isFirst = $first) {\n @if (!breadcrumbShortened || item.level !== ellipsesLevel) {\n <li #breadcrumbItem class=\"item\" [class.current-item]=\"item.lastItem\">\n @if (!isFirst) {\n <si-icon class=\"d-block icon-sm separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { item: item }\" />\n </li>\n }\n @if (breadcrumbShortened && item.level === ellipsesLevel) {\n <li class=\"item breadcrumb-ellipses-item\">\n @if (!isFirst) {\n <si-icon class=\"d-block icon-sm separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <div class=\"breadcrumb-dropdown-wrapper\">\n <ng-container *ngTemplateOutlet=\"toggleTemplate; context: { item: item }\" />\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n [id]=\"controlId + item.level\"\n [class.show]=\"breadcrumbDropdownOpen === item.level\"\n >\n @for (item of itemsHidden; track $index) {\n <ng-container *ngTemplateOutlet=\"dropdownTemplate; context: { item: item }\" />\n }\n </div>\n </div>\n </li>\n }\n }\n </ol>\n</nav>\n\n<ng-template #itemTemplate let-item=\"item\" siBreadcrumbItemTemplate>\n <a\n class=\"breadcrumb-link text-nowrap\"\n activeClass=\"active\"\n ariaCurrent=\"page\"\n siTooltipOverflow\n [class.disable-router-link]=\"!item.link && !item.action && !item.href\"\n [class.text-secondary]=\"item.lastItem\"\n [siLink]=\"item\"\n [exactMatch]=\"true\"\n [attr.aria-label]=\"item.title\"\n [attr.aria-disabled]=\"!item.link && !item.href && !item.action\"\n >\n @if (item.level === 0) {\n <si-icon class=\"d-block icon-sm flip-rtl\" [icon]=\"icons.elementBreadcrumbRoot\" />\n } @else {\n <span>{{ item.title }}</span>\n }\n </a>\n</ng-template>\n\n<ng-template #toggleTemplate let-item=\"item\" siBreadcrumbItemTemplate>\n <button\n type=\"button\"\n class=\"btn btn-link\"\n aria-haspopup=\"true\"\n [attr.aria-controls]=\"controlId + item.level\"\n [attr.aria-expanded]=\"breadcrumbDropdownOpen === item.level\"\n (click)=\"toggleBreadcrumbDropdown(item.level)\"\n >...</button\n >\n</ng-template>\n\n<ng-template #dropdownTemplate let-item=\"item\" siBreadcrumbItemTemplate>\n <a\n class=\"dropdown-item breadcrumb-link focus-inside\"\n activeClass=\"active\"\n ariaCurrent=\"page\"\n role=\"menuitem\"\n [class.disable-router-link]=\"!item.link && !item.action && !item.href\"\n [siLink]=\"item\"\n [exactMatch]=\"true\"\n [attr.aria-disabled]=\"!item.link && !item.action && !item.href\"\n >{{ item.title }}</a\n >\n</ng-template>\n", styles: [".breadcrumb{flex-wrap:nowrap}.item{display:flex;align-items:center;flex-shrink:0}.item:not(.current-item) .breadcrumb-link{max-inline-size:24ch}.separator{color:var(--si-sys-color-text-secondary);margin-block:0;margin-inline:0}.disable-router-link,.disable-router-link:hover{pointer-events:none;color:var(--si-sys-color-text-disabled)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "directive", type: SiResizeObserverDirective, selector: "[siResizeObserver]", inputs: ["resizeThrottle", "emitInitial"], outputs: ["siResizeObserver"] }, { kind: "directive", type: SiTooltipOverflowDirective, selector: "[siTooltipOverflow]" }, { kind: "directive", type: SiBreadcrumbItemTemplateDirective, selector: "[siBreadcrumbItemTemplate]" }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager });
210
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SiBreadcrumbComponent, isStandalone: true, selector: "si-breadcrumb", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, showRootAsText: { classPropertyName: "showRootAsText", publicName: "showRootAsText", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "breadcrumbElement", first: true, predicate: ["breadcrumb"], descendants: true, isSignal: true }, { propertyName: "breadcrumbElements", predicate: ["breadcrumbItem"], descendants: true, isSignal: true }, { propertyName: "breadcrumbMenu", first: true, predicate: CdkMenuTrigger, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<nav class=\"py-2\" [attr.aria-label]=\"ariaLabel() | translate\">\n <ol #breadcrumb class=\"breadcrumb\" (siResizeObserver)=\"resetBreadcrumb()\">\n @for (item of itemsShown; track $index) {\n @if (!breadcrumbShortened || item.level !== ellipsesLevel) {\n <li #breadcrumbItem class=\"item\" [class.current-item]=\"item.lastItem\">\n @if (!$first) {\n <si-icon class=\"d-block icon-sm separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { item: item }\" />\n </li>\n }\n @if (breadcrumbShortened && item.level === ellipsesLevel) {\n <li class=\"item breadcrumb-ellipses-item\">\n @if (!$first) {\n <si-icon class=\"d-block icon-sm separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <button\n type=\"button\"\n class=\"btn btn-link\"\n [attr.aria-label]=\"hiddenItemsLabel | translate\"\n [cdkMenuTriggerFor]=\"hiddenItemsTemplate\"\n >...</button\n >\n </li>\n }\n }\n </ol>\n</nav>\n\n<ng-template #itemTemplate let-item=\"item\" siBreadcrumbItemTemplate>\n <a\n class=\"breadcrumb-link text-nowrap\"\n activeClass=\"active\"\n ariaCurrent=\"page\"\n siTooltipOverflow\n [class.disable-router-link]=\"!item.link && !item.action && !item.href\"\n [class.text-secondary]=\"item.lastItem\"\n [siLink]=\"item\"\n [exactMatch]=\"true\"\n [attr.aria-label]=\"item.title\"\n [attr.aria-disabled]=\"!item.link && !item.href && !item.action\"\n >\n @if (item.level === 0) {\n <si-icon class=\"d-block icon-sm flip-rtl\" [icon]=\"icons.elementBreadcrumbRoot\" />\n } @else {\n <span>{{ item.title }}</span>\n }\n </a>\n</ng-template>\n\n<ng-template #hiddenItemsTemplate>\n <si-menu [attr.aria-label]=\"hiddenItemsLabel | translate\">\n @for (item of itemsHidden; track $index) {\n <a\n si-menu-item\n activeClass=\"active\"\n ariaCurrent=\"page\"\n [disabled]=\"!item.link && !item.action && !item.href\"\n [siLink]=\"item\"\n [exactMatch]=\"true\"\n >\n {{ item.title }}\n </a>\n }\n </si-menu>\n</ng-template>\n", styles: [".breadcrumb{flex-wrap:nowrap}.item{display:flex;align-items:center;flex-shrink:0}.item:not(.current-item) .breadcrumb-link{max-inline-size:24ch}.separator{color:var(--si-sys-color-text-secondary);margin-block:0;margin-inline:0}.disable-router-link,.disable-router-link:hover{pointer-events:none;color:var(--si-sys-color-text-disabled)}\n"], dependencies: [{ kind: "directive", type: CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition", "cdkMenuTriggerData", "cdkMenuTriggerTransformOriginOn"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "directive", type: SiMenuDirective, selector: "si-menu" }, { kind: "component", type: SiMenuItemComponent, selector: "si-menu-item, a[si-menu-item], button[si-menu-item]" }, { kind: "directive", type: SiResizeObserverDirective, selector: "[siResizeObserver]", inputs: ["resizeThrottle", "emitInitial"], outputs: ["siResizeObserver"] }, { kind: "directive", type: SiTooltipOverflowDirective, selector: "[siTooltipOverflow]" }, { kind: "directive", type: SiBreadcrumbItemTemplateDirective, selector: "[siBreadcrumbItemTemplate]" }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager });
224
211
  }
225
212
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiBreadcrumbComponent, decorators: [{
226
213
  type: Component,
227
214
  args: [{ selector: 'si-breadcrumb', imports: [
215
+ CdkMenuTrigger,
228
216
  NgTemplateOutlet,
229
217
  SiIconComponent,
230
218
  SiLinkDirective,
219
+ SiMenuDirective,
220
+ SiMenuItemComponent,
231
221
  SiResizeObserverDirective,
232
222
  SiTooltipOverflowDirective,
233
223
  SiTranslatePipe,
234
224
  SiBreadcrumbItemTemplateDirective
235
- ], changeDetection: ChangeDetectionStrategy.Eager, template: "<nav class=\"py-2\" [attr.aria-label]=\"ariaLabel() | translate\">\n <ol #breadcrumb class=\"breadcrumb\" (siResizeObserver)=\"resetBreadcrumb()\">\n @for (item of itemsShown; track $index; let isFirst = $first) {\n @if (!breadcrumbShortened || item.level !== ellipsesLevel) {\n <li #breadcrumbItem class=\"item\" [class.current-item]=\"item.lastItem\">\n @if (!isFirst) {\n <si-icon class=\"d-block icon-sm separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { item: item }\" />\n </li>\n }\n @if (breadcrumbShortened && item.level === ellipsesLevel) {\n <li class=\"item breadcrumb-ellipses-item\">\n @if (!isFirst) {\n <si-icon class=\"d-block icon-sm separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <div class=\"breadcrumb-dropdown-wrapper\">\n <ng-container *ngTemplateOutlet=\"toggleTemplate; context: { item: item }\" />\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n [id]=\"controlId + item.level\"\n [class.show]=\"breadcrumbDropdownOpen === item.level\"\n >\n @for (item of itemsHidden; track $index) {\n <ng-container *ngTemplateOutlet=\"dropdownTemplate; context: { item: item }\" />\n }\n </div>\n </div>\n </li>\n }\n }\n </ol>\n</nav>\n\n<ng-template #itemTemplate let-item=\"item\" siBreadcrumbItemTemplate>\n <a\n class=\"breadcrumb-link text-nowrap\"\n activeClass=\"active\"\n ariaCurrent=\"page\"\n siTooltipOverflow\n [class.disable-router-link]=\"!item.link && !item.action && !item.href\"\n [class.text-secondary]=\"item.lastItem\"\n [siLink]=\"item\"\n [exactMatch]=\"true\"\n [attr.aria-label]=\"item.title\"\n [attr.aria-disabled]=\"!item.link && !item.href && !item.action\"\n >\n @if (item.level === 0) {\n <si-icon class=\"d-block icon-sm flip-rtl\" [icon]=\"icons.elementBreadcrumbRoot\" />\n } @else {\n <span>{{ item.title }}</span>\n }\n </a>\n</ng-template>\n\n<ng-template #toggleTemplate let-item=\"item\" siBreadcrumbItemTemplate>\n <button\n type=\"button\"\n class=\"btn btn-link\"\n aria-haspopup=\"true\"\n [attr.aria-controls]=\"controlId + item.level\"\n [attr.aria-expanded]=\"breadcrumbDropdownOpen === item.level\"\n (click)=\"toggleBreadcrumbDropdown(item.level)\"\n >...</button\n >\n</ng-template>\n\n<ng-template #dropdownTemplate let-item=\"item\" siBreadcrumbItemTemplate>\n <a\n class=\"dropdown-item breadcrumb-link focus-inside\"\n activeClass=\"active\"\n ariaCurrent=\"page\"\n role=\"menuitem\"\n [class.disable-router-link]=\"!item.link && !item.action && !item.href\"\n [siLink]=\"item\"\n [exactMatch]=\"true\"\n [attr.aria-disabled]=\"!item.link && !item.action && !item.href\"\n >{{ item.title }}</a\n >\n</ng-template>\n", styles: [".breadcrumb{flex-wrap:nowrap}.item{display:flex;align-items:center;flex-shrink:0}.item:not(.current-item) .breadcrumb-link{max-inline-size:24ch}.separator{color:var(--si-sys-color-text-secondary);margin-block:0;margin-inline:0}.disable-router-link,.disable-router-link:hover{pointer-events:none;color:var(--si-sys-color-text-disabled)}\n"] }]
236
- }], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: true }] }], showRootAsText: [{ type: i0.Input, args: [{ isSignal: true, alias: "showRootAsText", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], breadcrumbElement: [{ type: i0.ViewChild, args: ['breadcrumb', { isSignal: true }] }], breadcrumbElements: [{ type: i0.ViewChildren, args: ['breadcrumbItem', { isSignal: true }] }], documentClick: [{
237
- type: HostListener,
238
- args: ['document:click', ['$event.target']]
239
- }] } });
225
+ ], changeDetection: ChangeDetectionStrategy.Eager, template: "<nav class=\"py-2\" [attr.aria-label]=\"ariaLabel() | translate\">\n <ol #breadcrumb class=\"breadcrumb\" (siResizeObserver)=\"resetBreadcrumb()\">\n @for (item of itemsShown; track $index) {\n @if (!breadcrumbShortened || item.level !== ellipsesLevel) {\n <li #breadcrumbItem class=\"item\" [class.current-item]=\"item.lastItem\">\n @if (!$first) {\n <si-icon class=\"d-block icon-sm separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { item: item }\" />\n </li>\n }\n @if (breadcrumbShortened && item.level === ellipsesLevel) {\n <li class=\"item breadcrumb-ellipses-item\">\n @if (!$first) {\n <si-icon class=\"d-block icon-sm separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <button\n type=\"button\"\n class=\"btn btn-link\"\n [attr.aria-label]=\"hiddenItemsLabel | translate\"\n [cdkMenuTriggerFor]=\"hiddenItemsTemplate\"\n >...</button\n >\n </li>\n }\n }\n </ol>\n</nav>\n\n<ng-template #itemTemplate let-item=\"item\" siBreadcrumbItemTemplate>\n <a\n class=\"breadcrumb-link text-nowrap\"\n activeClass=\"active\"\n ariaCurrent=\"page\"\n siTooltipOverflow\n [class.disable-router-link]=\"!item.link && !item.action && !item.href\"\n [class.text-secondary]=\"item.lastItem\"\n [siLink]=\"item\"\n [exactMatch]=\"true\"\n [attr.aria-label]=\"item.title\"\n [attr.aria-disabled]=\"!item.link && !item.href && !item.action\"\n >\n @if (item.level === 0) {\n <si-icon class=\"d-block icon-sm flip-rtl\" [icon]=\"icons.elementBreadcrumbRoot\" />\n } @else {\n <span>{{ item.title }}</span>\n }\n </a>\n</ng-template>\n\n<ng-template #hiddenItemsTemplate>\n <si-menu [attr.aria-label]=\"hiddenItemsLabel | translate\">\n @for (item of itemsHidden; track $index) {\n <a\n si-menu-item\n activeClass=\"active\"\n ariaCurrent=\"page\"\n [disabled]=\"!item.link && !item.action && !item.href\"\n [siLink]=\"item\"\n [exactMatch]=\"true\"\n >\n {{ item.title }}\n </a>\n }\n </si-menu>\n</ng-template>\n", styles: [".breadcrumb{flex-wrap:nowrap}.item{display:flex;align-items:center;flex-shrink:0}.item:not(.current-item) .breadcrumb-link{max-inline-size:24ch}.separator{color:var(--si-sys-color-text-secondary);margin-block:0;margin-inline:0}.disable-router-link,.disable-router-link:hover{pointer-events:none;color:var(--si-sys-color-text-disabled)}\n"] }]
226
+ }], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: true }] }], showRootAsText: [{ type: i0.Input, args: [{ isSignal: true, alias: "showRootAsText", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], breadcrumbElement: [{ type: i0.ViewChild, args: ['breadcrumb', { isSignal: true }] }], breadcrumbElements: [{ type: i0.ViewChildren, args: ['breadcrumbItem', { isSignal: true }] }], breadcrumbMenu: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkMenuTrigger), { isSignal: true }] }] } });
240
227
 
241
228
  /**
242
229
  * Copyright (c) Siemens 2016 - 2026