@siemens/element-ng 51.0.0 → 51.0.1

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 (129) hide show
  1. package/fesm2022/siemens-element-ng-accordion.mjs +2 -2
  2. package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
  3. package/fesm2022/siemens-element-ng-ag-grid.mjs +125 -125
  4. package/fesm2022/siemens-element-ng-ag-grid.mjs.map +1 -1
  5. package/fesm2022/siemens-element-ng-application-header.mjs +4 -4
  6. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  7. package/fesm2022/siemens-element-ng-avatar.mjs +5 -5
  8. package/fesm2022/siemens-element-ng-avatar.mjs.map +1 -1
  9. package/fesm2022/siemens-element-ng-breadcrumb.mjs +2 -2
  10. package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
  11. package/fesm2022/siemens-element-ng-card.mjs +2 -2
  12. package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
  13. package/fesm2022/siemens-element-ng-carousel.mjs +2 -2
  14. package/fesm2022/siemens-element-ng-carousel.mjs.map +1 -1
  15. package/fesm2022/siemens-element-ng-chat-messages.mjs +18 -18
  16. package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
  17. package/fesm2022/siemens-element-ng-circle-status.mjs +2 -2
  18. package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
  19. package/fesm2022/siemens-element-ng-color-picker.mjs +18 -18
  20. package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -1
  21. package/fesm2022/siemens-element-ng-connection-strength.mjs +2 -2
  22. package/fesm2022/siemens-element-ng-connection-strength.mjs.map +1 -1
  23. package/fesm2022/siemens-element-ng-content-action-bar.mjs +2 -2
  24. package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
  25. package/fesm2022/siemens-element-ng-dashboard.mjs +8 -8
  26. package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
  27. package/fesm2022/siemens-element-ng-date-range-filter.mjs +2 -2
  28. package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
  29. package/fesm2022/siemens-element-ng-datepicker.mjs +8 -8
  30. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
  31. package/fesm2022/siemens-element-ng-electron-titlebar.mjs +2 -2
  32. package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
  33. package/fesm2022/siemens-element-ng-empty-state.mjs +2 -2
  34. package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
  35. package/fesm2022/siemens-element-ng-file-uploader.mjs +2 -2
  36. package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
  37. package/fesm2022/siemens-element-ng-filter-bar.mjs +4 -4
  38. package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
  39. package/fesm2022/siemens-element-ng-filtered-search.mjs +4 -4
  40. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
  41. package/fesm2022/siemens-element-ng-footer.mjs +2 -2
  42. package/fesm2022/siemens-element-ng-footer.mjs.map +1 -1
  43. package/fesm2022/siemens-element-ng-help-button.mjs +2 -2
  44. package/fesm2022/siemens-element-ng-help-button.mjs.map +1 -1
  45. package/fesm2022/siemens-element-ng-landing-page.mjs +2 -2
  46. package/fesm2022/siemens-element-ng-landing-page.mjs.map +1 -1
  47. package/fesm2022/siemens-element-ng-language-switcher.mjs +2 -2
  48. package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
  49. package/fesm2022/siemens-element-ng-list-details.mjs +2 -2
  50. package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
  51. package/fesm2022/siemens-element-ng-loading-spinner.mjs +4 -4
  52. package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
  53. package/fesm2022/siemens-element-ng-maplibre.mjs +21 -21
  54. package/fesm2022/siemens-element-ng-maplibre.mjs.map +1 -1
  55. package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs +2 -2
  56. package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs.map +1 -1
  57. package/fesm2022/siemens-element-ng-markdown-hightlighter-highlightjs.mjs +2 -2
  58. package/fesm2022/siemens-element-ng-markdown-hightlighter-highlightjs.mjs.map +1 -1
  59. package/fesm2022/siemens-element-ng-menu.mjs +6 -6
  60. package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
  61. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +6 -6
  62. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
  63. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +6 -6
  64. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
  65. package/fesm2022/siemens-element-ng-notification-item.mjs +2 -4
  66. package/fesm2022/siemens-element-ng-notification-item.mjs.map +1 -1
  67. package/fesm2022/siemens-element-ng-number-input.mjs +2 -2
  68. package/fesm2022/siemens-element-ng-number-input.mjs.map +1 -1
  69. package/fesm2022/siemens-element-ng-password-strength.mjs +2 -2
  70. package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -1
  71. package/fesm2022/siemens-element-ng-phone-number.mjs +2 -2
  72. package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
  73. package/fesm2022/siemens-element-ng-photo-upload.mjs +4 -4
  74. package/fesm2022/siemens-element-ng-photo-upload.mjs.map +1 -1
  75. package/fesm2022/siemens-element-ng-pills-input.mjs +2 -2
  76. package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
  77. package/fesm2022/siemens-element-ng-result-details-list.mjs +2 -2
  78. package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
  79. package/fesm2022/siemens-element-ng-search-bar.mjs +2 -2
  80. package/fesm2022/siemens-element-ng-search-bar.mjs.map +1 -1
  81. package/fesm2022/siemens-element-ng-select.mjs +4 -4
  82. package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
  83. package/fesm2022/siemens-element-ng-side-panel.mjs +6 -6
  84. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
  85. package/fesm2022/siemens-element-ng-skip-links.mjs +2 -2
  86. package/fesm2022/siemens-element-ng-skip-links.mjs.map +1 -1
  87. package/fesm2022/siemens-element-ng-slider.mjs +2 -2
  88. package/fesm2022/siemens-element-ng-slider.mjs.map +1 -1
  89. package/fesm2022/siemens-element-ng-source-chip.mjs +2 -2
  90. package/fesm2022/siemens-element-ng-source-chip.mjs.map +1 -1
  91. package/fesm2022/siemens-element-ng-split.mjs +4 -4
  92. package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
  93. package/fesm2022/siemens-element-ng-status-bar.mjs +4 -4
  94. package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
  95. package/fesm2022/siemens-element-ng-status-counter.mjs +2 -2
  96. package/fesm2022/siemens-element-ng-status-counter.mjs.map +1 -1
  97. package/fesm2022/siemens-element-ng-status-toggle.mjs +2 -2
  98. package/fesm2022/siemens-element-ng-status-toggle.mjs.map +1 -1
  99. package/fesm2022/siemens-element-ng-summary-chip.mjs +2 -2
  100. package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -1
  101. package/fesm2022/siemens-element-ng-summary-widget.mjs +2 -2
  102. package/fesm2022/siemens-element-ng-summary-widget.mjs.map +1 -1
  103. package/fesm2022/siemens-element-ng-system-banner.mjs +2 -2
  104. package/fesm2022/siemens-element-ng-system-banner.mjs.map +1 -1
  105. package/fesm2022/siemens-element-ng-tabs-legacy.mjs +2 -2
  106. package/fesm2022/siemens-element-ng-tabs-legacy.mjs.map +1 -1
  107. package/fesm2022/siemens-element-ng-tabs.mjs +2 -2
  108. package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
  109. package/fesm2022/siemens-element-ng-threshold.mjs +2 -2
  110. package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
  111. package/fesm2022/siemens-element-ng-toast-notification.mjs +2 -2
  112. package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
  113. package/fesm2022/siemens-element-ng-tour.mjs +4 -4
  114. package/fesm2022/siemens-element-ng-tour.mjs.map +1 -1
  115. package/fesm2022/siemens-element-ng-tree-view.mjs +4 -4
  116. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  117. package/fesm2022/siemens-element-ng-wizard.mjs +2 -2
  118. package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
  119. package/maplibre/styles/maplibre-gl.scss +22 -22
  120. package/package.json +4 -4
  121. package/schematics/migration.json +5 -0
  122. package/schematics/migrations/data/css-custom-properties.js +204 -12
  123. package/schematics/migrations/data/element-migration-data.js +13 -1
  124. package/schematics/migrations/data/index.js +1 -1
  125. package/schematics/ng-update/index.js +1 -0
  126. package/schematics/ng-update/migrate-to-v51-0-1.js +12 -0
  127. package/schematics/utils/testing.js +13 -1
  128. package/types/siemens-element-ng-avatar.d.ts +1 -1
  129. package/types/siemens-element-ng-notification-item.d.ts +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-markdown-extensions-katex.mjs","sources":["../../../../projects/element-ng/markdown/extensions/katex/si-markdown-katex.component.ts","../../../../projects/element-ng/markdown/extensions/katex/si-markdown-katex.extension.ts","../../../../projects/element-ng/markdown/extensions/katex/index.ts","../../../../projects/element-ng/markdown/extensions/katex/siemens-element-ng-markdown-extensions-katex.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { type SiMarkdownExtensionComponent } from '@siemens/element-ng/markdown';\nimport { type KatexOptions, render } from 'katex';\nimport { Literal, type Node, type Parent } from 'mdast';\n\n@Component({\n selector: 'si-markdown-katex',\n template: '',\n styleUrl: 'si-markdown-katex.component.scss',\n // this is necessary for the styles to work correctly\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'katex-container',\n '[attr.data-line]': 'node().position?.start?.line',\n '[class.d-block]': 'displayMode()'\n }\n})\nexport class SiMarkdownKatexComponent implements SiMarkdownExtensionComponent {\n private readonly elementRef = inject(ElementRef);\n\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<KatexOptions>();\n\n protected readonly displayMode = computed(() => this.node().type === 'math');\n private readonly expr = computed(() => (this.node() as Literal).value);\n\n constructor() {\n effect(() => this.render());\n }\n\n private render(): void {\n const expr = this.expr();\n const options = this.options() ?? {};\n render(expr, this.elementRef.nativeElement, {\n ...options,\n displayMode: this.displayMode(),\n throwOnError: false\n });\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type SiMarkdownExtension } from '@siemens/element-ng/markdown';\n/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type KatexOptions } from 'katex';\nimport remarkMath, { type Options } from 'remark-math';\n\nimport { SiMarkdownKatexComponent } from './si-markdown-katex.component';\n\n/**\n * An extension to render LaTeX math expressions using KaTeX. Uses `remark-math` to parse\n * the expressions inside the markdown document.\n * @param parseOptions - options passed to `remark-math`\n * @param katexOptions - options passed to `katex`\n * @returns extension for `SiMarkdownOption.installExtension()`\n */\nexport const siMarkdownMathKaTeX = (\n parseOptions?: Options,\n katexOptions?: KatexOptions\n): SiMarkdownExtension => {\n katexOptions ??= {\n output: 'html'\n };\n\n return {\n plugins: [{ plugin: remarkMath, options: parseOptions }],\n types: [\n { type: 'math', component: SiMarkdownKatexComponent, options: katexOptions },\n { type: 'inlineMath', component: SiMarkdownKatexComponent, options: katexOptions }\n ]\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-katex.extension';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;;;AAGG;MA2BU,wBAAwB,CAAA;AAClB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAEvC,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAQ;IAC7B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;AACjC,IAAA,OAAO,GAAG,KAAK;2FAAgB;AAErB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;oFAAC;IAC3D,IAAI,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,IAAI,EAAc,CAAC,KAAK;6EAAC;AAEtE,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7B;IAEQ,MAAM,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;QACpC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;AAC1C,YAAA,GAAG,OAAO;AACV,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;IACJ;uGAtBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,slBAXzB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,smj5CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAWD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAbpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,YACnB,EAAE,EAAA,aAAA,EAIG,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,kBAAkB,EAAE,8BAA8B;AAClD,wBAAA,iBAAiB,EAAE;AACpB,qBAAA,EAAA,MAAA,EAAA,CAAA,smj5CAAA,CAAA,EAAA;;;ACdH;;;;;;AAMG;MACU,mBAAmB,GAAG,CACjC,YAAsB,EACtB,YAA2B,KACJ;AACvB,IAAA,YAAY,KAAK;AACf,QAAA,MAAM,EAAE;KACT;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACxD,QAAA,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,wBAAwB,EAAE,OAAO,EAAE,YAAY,EAAE;YAC5E,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,wBAAwB,EAAE,OAAO,EAAE,YAAY;AACjF;KACF;AACH;;ACpCA;;;AAGG;;ACHH;;AAEG;;;;"}
1
+ {"version":3,"file":"siemens-element-ng-markdown-extensions-katex.mjs","sources":["../../../../projects/element-ng/markdown/extensions/katex/si-markdown-katex.component.ts","../../../../projects/element-ng/markdown/extensions/katex/si-markdown-katex.extension.ts","../../../../projects/element-ng/markdown/extensions/katex/index.ts","../../../../projects/element-ng/markdown/extensions/katex/siemens-element-ng-markdown-extensions-katex.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { type SiMarkdownExtensionComponent } from '@siemens/element-ng/markdown';\nimport { type KatexOptions, render } from 'katex';\nimport { Literal, type Node, type Parent } from 'mdast';\n\n@Component({\n selector: 'si-markdown-katex',\n template: '',\n styleUrl: 'si-markdown-katex.component.scss',\n // this is necessary for the styles to work correctly\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'katex-container',\n '[attr.data-line]': 'node().position?.start?.line',\n '[class.d-block]': 'displayMode()'\n }\n})\nexport class SiMarkdownKatexComponent implements SiMarkdownExtensionComponent {\n private readonly elementRef = inject(ElementRef);\n\n readonly node = input.required<Node>();\n readonly parent = input.required<Parent>();\n readonly options = input<KatexOptions>();\n\n protected readonly displayMode = computed(() => this.node().type === 'math');\n private readonly expr = computed(() => (this.node() as Literal).value);\n\n constructor() {\n effect(() => this.render());\n }\n\n private render(): void {\n const expr = this.expr();\n const options = this.options() ?? {};\n render(expr, this.elementRef.nativeElement, {\n ...options,\n displayMode: this.displayMode(),\n throwOnError: false\n });\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type SiMarkdownExtension } from '@siemens/element-ng/markdown';\n/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { type KatexOptions } from 'katex';\nimport remarkMath, { type Options } from 'remark-math';\n\nimport { SiMarkdownKatexComponent } from './si-markdown-katex.component';\n\n/**\n * An extension to render LaTeX math expressions using KaTeX. Uses `remark-math` to parse\n * the expressions inside the markdown document.\n * @param parseOptions - options passed to `remark-math`\n * @param katexOptions - options passed to `katex`\n * @returns extension for `SiMarkdownOption.installExtension()`\n */\nexport const siMarkdownMathKaTeX = (\n parseOptions?: Options,\n katexOptions?: KatexOptions\n): SiMarkdownExtension => {\n katexOptions ??= {\n output: 'html'\n };\n\n return {\n plugins: [{ plugin: remarkMath, options: parseOptions }],\n types: [\n { type: 'math', component: SiMarkdownKatexComponent, options: katexOptions },\n { type: 'inlineMath', component: SiMarkdownKatexComponent, options: katexOptions }\n ]\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-katex.extension';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;;;AAGG;MA2BU,wBAAwB,CAAA;AAClB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAEvC,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAQ;IAC7B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;AACjC,IAAA,OAAO,GAAG,KAAK;2FAAgB;AAErB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;oFAAC;IAC3D,IAAI,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,IAAI,EAAc,CAAC,KAAK;6EAAC;AAEtE,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7B;IAEQ,MAAM,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;QACpC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;AAC1C,YAAA,GAAG,OAAO;AACV,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;IACJ;uGAtBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,slBAXzB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4mj5CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAWD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAbpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,YACnB,EAAE,EAAA,aAAA,EAIG,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,kBAAkB,EAAE,8BAA8B;AAClD,wBAAA,iBAAiB,EAAE;AACpB,qBAAA,EAAA,MAAA,EAAA,CAAA,4mj5CAAA,CAAA,EAAA;;;ACdH;;;;;;AAMG;MACU,mBAAmB,GAAG,CACjC,YAAsB,EACtB,YAA2B,KACJ;AACvB,IAAA,YAAY,KAAK;AACf,QAAA,MAAM,EAAE;KACT;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACxD,QAAA,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,wBAAwB,EAAE,OAAO,EAAE,YAAY,EAAE;YAC5E,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,wBAAwB,EAAE,OAAO,EAAE,YAAY;AACjF;KACF;AACH;;ACpCA;;;AAGG;;ACHH;;AAEG;;;;"}
@@ -92,13 +92,13 @@ class SiMarkdownHightlightJsComponent {
92
92
  return highlighted ? this.sanitizer.bypassSecurityTrustHtml(highlighted) : '';
93
93
  }
94
94
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiMarkdownHightlightJsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
95
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SiMarkdownHightlightJsComponent, isStandalone: true, selector: "si-markdown-highlightjs", inputs: { code: { classPropertyName: "code", publicName: "code", isSignal: true, isRequired: true, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: true, transformFunction: null }, updateLanguage: { classPropertyName: "updateLanguage", publicName: "updateLanguage", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "d-block" }, ngImport: i0, template: "@let html = highlighted();\n@if (html) {\n <pre class=\"border-0 m-0 p-0\"><code [innerHTML]=\"html\"></code></pre>\n} @else {\n <pre class=\"border-0 m-0 p-0\"><code>{{ code() }} </code></pre>\n}\n", styles: [":host ::ng-deep .hljs{color:var(--si-sys-code-1)}:host ::ng-deep :is(.hljs-keyword,.hljs-literal,.hljs-operator){color:var(--si-sys-code-2)}:host ::ng-deep :is(.hljs-variable,.hljs-variable.language_,.hljs-params,.hljs-property){color:var(--si-sys-code-4)}:host ::ng-deep :is(.hljs-variable.constant_){color:var(--si-sys-code-3)}:host ::ng-deep :is(.hljs-title,.hljs-title.function_,.hljs-title.function_.invoke__,.hljs-built_in){color:var(--si-sys-code-5)}:host ::ng-deep :is(.hljs-string,.hljs-regexp,.hljs-char.escape_,.hljs-subst,.hljs-doctag){color:var(--si-sys-code-6)}:host ::ng-deep .hljs-number{color:var(--si-sys-code-7)}:host ::ng-deep :is(.hljs-symbol,.hljs-bullet){color:var(--si-sys-code-2)}:host ::ng-deep :is(.hljs-comment,.hljs-quote){color:var(--si-sys-code-8)}:host ::ng-deep .hljs-punctuation{color:var(--si-sys-code-9)}:host ::ng-deep :is(.hljs-tag,.hljs-name,.hljs-selector-tag,.hljs-selector-id,.hljs-selector-class,.hljs-selector-pseudo,.hljs-meta,.hljs-meta.keyword_,.hljs-template-tag,.hljs-template-variable){color:var(--si-sys-code-10)}:host ::ng-deep :is(.hljs-attr,.hljs-attribute,.hljs-selector-attr){color:var(--si-sys-code-3)}:host ::ng-deep :is(.hljs-type,.hljs-title.class_,.hljs-title.class_.inherited__){color:var(--si-sys-code-11)}:host ::ng-deep .hljs-deletion{color:var(--si-sys-code-11)}:host ::ng-deep .hljs-addition{color:var(--si-sys-code-12)}:host ::ng-deep .hljs-emphasis{font-style:italic}:host ::ng-deep .hljs-strong{font-weight:600}:host ::ng-deep :is(.hljs-code,.hljs-formula){color:var(--si-sys-code-1)}:host ::ng-deep :is(.hljs-section){color:var(--si-sys-code-1);font-weight:600}:host ::ng-deep .hljs-link{color:var(--si-sys-text-accent)}\n"] });
95
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SiMarkdownHightlightJsComponent, isStandalone: true, selector: "si-markdown-highlightjs", inputs: { code: { classPropertyName: "code", publicName: "code", isSignal: true, isRequired: true, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: true, transformFunction: null }, updateLanguage: { classPropertyName: "updateLanguage", publicName: "updateLanguage", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "d-block" }, ngImport: i0, template: "@let html = highlighted();\n@if (html) {\n <pre class=\"border-0 m-0 p-0\"><code [innerHTML]=\"html\"></code></pre>\n} @else {\n <pre class=\"border-0 m-0 p-0\"><code>{{ code() }} </code></pre>\n}\n", styles: [":host ::ng-deep .hljs{color:var(--si-sys-color-code-1)}:host ::ng-deep :is(.hljs-keyword,.hljs-literal,.hljs-operator){color:var(--si-sys-color-code-2)}:host ::ng-deep :is(.hljs-variable,.hljs-variable.language_,.hljs-params,.hljs-property){color:var(--si-sys-color-code-4)}:host ::ng-deep :is(.hljs-variable.constant_){color:var(--si-sys-color-code-3)}:host ::ng-deep :is(.hljs-title,.hljs-title.function_,.hljs-title.function_.invoke__,.hljs-built_in){color:var(--si-sys-color-code-5)}:host ::ng-deep :is(.hljs-string,.hljs-regexp,.hljs-char.escape_,.hljs-subst,.hljs-doctag){color:var(--si-sys-color-code-6)}:host ::ng-deep .hljs-number{color:var(--si-sys-color-code-7)}:host ::ng-deep :is(.hljs-symbol,.hljs-bullet){color:var(--si-sys-color-code-2)}:host ::ng-deep :is(.hljs-comment,.hljs-quote){color:var(--si-sys-color-code-8)}:host ::ng-deep .hljs-punctuation{color:var(--si-sys-color-code-9)}:host ::ng-deep :is(.hljs-tag,.hljs-name,.hljs-selector-tag,.hljs-selector-id,.hljs-selector-class,.hljs-selector-pseudo,.hljs-meta,.hljs-meta.keyword_,.hljs-template-tag,.hljs-template-variable){color:var(--si-sys-color-code-10)}:host ::ng-deep :is(.hljs-attr,.hljs-attribute,.hljs-selector-attr){color:var(--si-sys-color-code-3)}:host ::ng-deep :is(.hljs-type,.hljs-title.class_,.hljs-title.class_.inherited__){color:var(--si-sys-color-code-11)}:host ::ng-deep .hljs-deletion{color:var(--si-sys-color-code-11)}:host ::ng-deep .hljs-addition{color:var(--si-sys-color-code-12)}:host ::ng-deep .hljs-emphasis{font-style:italic}:host ::ng-deep .hljs-strong{font-weight:600}:host ::ng-deep :is(.hljs-code,.hljs-formula){color:var(--si-sys-color-code-1)}:host ::ng-deep :is(.hljs-section){color:var(--si-sys-color-code-1);font-weight:600}:host ::ng-deep .hljs-link{color:var(--si-sys-color-text-accent)}\n"] });
96
96
  }
97
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiMarkdownHightlightJsComponent, decorators: [{
98
98
  type: Component,
99
99
  args: [{ selector: 'si-markdown-highlightjs', host: {
100
100
  class: 'd-block'
101
- }, template: "@let html = highlighted();\n@if (html) {\n <pre class=\"border-0 m-0 p-0\"><code [innerHTML]=\"html\"></code></pre>\n} @else {\n <pre class=\"border-0 m-0 p-0\"><code>{{ code() }} </code></pre>\n}\n", styles: [":host ::ng-deep .hljs{color:var(--si-sys-code-1)}:host ::ng-deep :is(.hljs-keyword,.hljs-literal,.hljs-operator){color:var(--si-sys-code-2)}:host ::ng-deep :is(.hljs-variable,.hljs-variable.language_,.hljs-params,.hljs-property){color:var(--si-sys-code-4)}:host ::ng-deep :is(.hljs-variable.constant_){color:var(--si-sys-code-3)}:host ::ng-deep :is(.hljs-title,.hljs-title.function_,.hljs-title.function_.invoke__,.hljs-built_in){color:var(--si-sys-code-5)}:host ::ng-deep :is(.hljs-string,.hljs-regexp,.hljs-char.escape_,.hljs-subst,.hljs-doctag){color:var(--si-sys-code-6)}:host ::ng-deep .hljs-number{color:var(--si-sys-code-7)}:host ::ng-deep :is(.hljs-symbol,.hljs-bullet){color:var(--si-sys-code-2)}:host ::ng-deep :is(.hljs-comment,.hljs-quote){color:var(--si-sys-code-8)}:host ::ng-deep .hljs-punctuation{color:var(--si-sys-code-9)}:host ::ng-deep :is(.hljs-tag,.hljs-name,.hljs-selector-tag,.hljs-selector-id,.hljs-selector-class,.hljs-selector-pseudo,.hljs-meta,.hljs-meta.keyword_,.hljs-template-tag,.hljs-template-variable){color:var(--si-sys-code-10)}:host ::ng-deep :is(.hljs-attr,.hljs-attribute,.hljs-selector-attr){color:var(--si-sys-code-3)}:host ::ng-deep :is(.hljs-type,.hljs-title.class_,.hljs-title.class_.inherited__){color:var(--si-sys-code-11)}:host ::ng-deep .hljs-deletion{color:var(--si-sys-code-11)}:host ::ng-deep .hljs-addition{color:var(--si-sys-code-12)}:host ::ng-deep .hljs-emphasis{font-style:italic}:host ::ng-deep .hljs-strong{font-weight:600}:host ::ng-deep :is(.hljs-code,.hljs-formula){color:var(--si-sys-code-1)}:host ::ng-deep :is(.hljs-section){color:var(--si-sys-code-1);font-weight:600}:host ::ng-deep .hljs-link{color:var(--si-sys-text-accent)}\n"] }]
101
+ }, template: "@let html = highlighted();\n@if (html) {\n <pre class=\"border-0 m-0 p-0\"><code [innerHTML]=\"html\"></code></pre>\n} @else {\n <pre class=\"border-0 m-0 p-0\"><code>{{ code() }} </code></pre>\n}\n", styles: [":host ::ng-deep .hljs{color:var(--si-sys-color-code-1)}:host ::ng-deep :is(.hljs-keyword,.hljs-literal,.hljs-operator){color:var(--si-sys-color-code-2)}:host ::ng-deep :is(.hljs-variable,.hljs-variable.language_,.hljs-params,.hljs-property){color:var(--si-sys-color-code-4)}:host ::ng-deep :is(.hljs-variable.constant_){color:var(--si-sys-color-code-3)}:host ::ng-deep :is(.hljs-title,.hljs-title.function_,.hljs-title.function_.invoke__,.hljs-built_in){color:var(--si-sys-color-code-5)}:host ::ng-deep :is(.hljs-string,.hljs-regexp,.hljs-char.escape_,.hljs-subst,.hljs-doctag){color:var(--si-sys-color-code-6)}:host ::ng-deep .hljs-number{color:var(--si-sys-color-code-7)}:host ::ng-deep :is(.hljs-symbol,.hljs-bullet){color:var(--si-sys-color-code-2)}:host ::ng-deep :is(.hljs-comment,.hljs-quote){color:var(--si-sys-color-code-8)}:host ::ng-deep .hljs-punctuation{color:var(--si-sys-color-code-9)}:host ::ng-deep :is(.hljs-tag,.hljs-name,.hljs-selector-tag,.hljs-selector-id,.hljs-selector-class,.hljs-selector-pseudo,.hljs-meta,.hljs-meta.keyword_,.hljs-template-tag,.hljs-template-variable){color:var(--si-sys-color-code-10)}:host ::ng-deep :is(.hljs-attr,.hljs-attribute,.hljs-selector-attr){color:var(--si-sys-color-code-3)}:host ::ng-deep :is(.hljs-type,.hljs-title.class_,.hljs-title.class_.inherited__){color:var(--si-sys-color-code-11)}:host ::ng-deep .hljs-deletion{color:var(--si-sys-color-code-11)}:host ::ng-deep .hljs-addition{color:var(--si-sys-color-code-12)}:host ::ng-deep .hljs-emphasis{font-style:italic}:host ::ng-deep .hljs-strong{font-weight:600}:host ::ng-deep :is(.hljs-code,.hljs-formula){color:var(--si-sys-color-code-1)}:host ::ng-deep :is(.hljs-section){color:var(--si-sys-color-code-1);font-weight:600}:host ::ng-deep .hljs-link{color:var(--si-sys-color-text-accent)}\n"] }]
102
102
  }], propDecorators: { code: [{ type: i0.Input, args: [{ isSignal: true, alias: "code", required: true }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: true }] }], updateLanguage: [{ type: i0.Input, args: [{ isSignal: true, alias: "updateLanguage", required: true }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }] } });
103
103
 
104
104
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-markdown-hightlighter-highlightjs.mjs","sources":["../../../../projects/element-ng/markdown/hightlighter/highlightjs/si-markdown-highlightjs.component.ts","../../../../projects/element-ng/markdown/hightlighter/highlightjs/si-markdown-highlightjs.component.html","../../../../projects/element-ng/markdown/hightlighter/highlightjs/si-markdown-highlightjs.highlighter.ts","../../../../projects/element-ng/markdown/hightlighter/highlightjs/index.ts","../../../../projects/element-ng/markdown/hightlighter/highlightjs/siemens-element-ng-markdown-hightlighter-highlightjs.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, inject, input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { computedAsync, type SiMarkdownHighlighterComponent } from '@siemens/element-ng/markdown';\nimport { type Language } from 'highlight.js';\nimport hljs from 'highlight.js/lib/core';\nimport langBash from 'highlight.js/lib/languages/bash';\nimport langCss from 'highlight.js/lib/languages/css';\nimport langJs from 'highlight.js/lib/languages/javascript';\nimport langJson from 'highlight.js/lib/languages/json';\nimport langMarkdown from 'highlight.js/lib/languages/markdown';\nimport langPython from 'highlight.js/lib/languages/python';\nimport langScss from 'highlight.js/lib/languages/scss';\nimport langTs from 'highlight.js/lib/languages/typescript';\nimport langXml from 'highlight.js/lib/languages/xml';\n\nimport {\n HighlightJSLanguageLoader,\n SiMarkdownHighlightJsOptions\n} from './si-markdown-highlightjs.types';\n\n// some common languages are built-in for initial loading speed\nhljs.registerLanguage('javascript', langJs);\nhljs.registerLanguage('typescript', langTs);\nhljs.registerLanguage('json', langJson);\nhljs.registerLanguage('css', langCss);\nhljs.registerLanguage('scss', langScss);\nhljs.registerLanguage('bash', langBash);\nhljs.registerLanguage('python', langPython);\nhljs.registerLanguage('xml', langXml);\nhljs.registerLanguage('markdown', langMarkdown);\n\nconst getHljsLang = async (\n lang: string,\n loader?: HighlightJSLanguageLoader\n): Promise<Language | undefined> => {\n const loadedLang = hljs.getLanguage(lang);\n if (loadedLang) {\n return loadedLang;\n }\n\n if (loader) {\n const importLang = await loader(lang);\n if (importLang) {\n hljs.registerLanguage(lang, importLang.default);\n return hljs.getLanguage(lang);\n }\n }\n return undefined;\n};\n\n@Component({\n selector: 'si-markdown-highlightjs',\n templateUrl: './si-markdown-highlightjs.component.html',\n styleUrl: './si-markdown-highlightjs.component.scss',\n host: {\n class: 'd-block'\n }\n})\nexport class SiMarkdownHightlightJsComponent implements SiMarkdownHighlighterComponent {\n private readonly sanitizer = inject(DomSanitizer);\n readonly code = input.required<string>();\n readonly language = input.required<string>();\n readonly updateLanguage = input.required<(lang?: string) => void>();\n readonly options = input<SiMarkdownHighlightJsOptions>();\n\n protected readonly highlighted = computedAsync({\n params: () => ({ code: this.code(), language: this.language(), options: this.options() }),\n computation: params => this.highlight(params.code, params.language, params.options),\n initial: undefined\n });\n\n private async highlight(\n code: string,\n language: string,\n options: SiMarkdownHighlightJsOptions = {}\n ): Promise<SafeHtml> {\n let highlighted = '';\n if (!language && options?.autoDetectLanguage) {\n try {\n const res = hljs.highlightAuto(code, undefined);\n highlighted = res.value;\n if (res.language) {\n const lang = hljs.getLanguage(res.language);\n this.updateLanguage()(lang?.name);\n } else {\n this.updateLanguage()(language);\n }\n } catch {\n // ignored\n }\n } else {\n const hljsLang = await getHljsLang(language, options.languageLoader);\n if (hljsLang) {\n this.updateLanguage()(hljsLang.name);\n try {\n highlighted = hljs.highlight(code, { ...options, language }).value;\n } catch {\n // ignored\n }\n } else {\n this.updateLanguage()(language);\n }\n }\n return highlighted ? this.sanitizer.bypassSecurityTrustHtml(highlighted) : '';\n }\n}\n","@let html = highlighted();\n@if (html) {\n <pre class=\"border-0 m-0 p-0\"><code [innerHTML]=\"html\"></code></pre>\n} @else {\n <pre class=\"border-0 m-0 p-0\"><code>{{ code() }} </code></pre>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { type SiMarkdownHighlighter } from '@siemens/element-ng/markdown';\n\nimport { SiMarkdownHightlightJsComponent } from './si-markdown-highlightjs.component';\nimport { SiMarkdownHighlightJsOptions } from './si-markdown-highlightjs.types';\n\n/**\n * Code highlighter using Highlight.js\n * @param options - Options passed to highlight.js\n * @returns highlighter configuration for `SiMarkdownOptions.setCodeHighlighter()`\n */\nexport const siMarkdownHighlightJs = (\n options?: SiMarkdownHighlightJsOptions\n): SiMarkdownHighlighter => {\n return {\n component: SiMarkdownHightlightJsComponent,\n options\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-highlightjs.types';\nexport * from './si-markdown-highlightjs.highlighter';\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-markdown-hightlighter-highlightjs.mjs","sources":["../../../../projects/element-ng/markdown/hightlighter/highlightjs/si-markdown-highlightjs.component.ts","../../../../projects/element-ng/markdown/hightlighter/highlightjs/si-markdown-highlightjs.component.html","../../../../projects/element-ng/markdown/hightlighter/highlightjs/si-markdown-highlightjs.highlighter.ts","../../../../projects/element-ng/markdown/hightlighter/highlightjs/index.ts","../../../../projects/element-ng/markdown/hightlighter/highlightjs/siemens-element-ng-markdown-hightlighter-highlightjs.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, inject, input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { computedAsync, type SiMarkdownHighlighterComponent } from '@siemens/element-ng/markdown';\nimport { type Language } from 'highlight.js';\nimport hljs from 'highlight.js/lib/core';\nimport langBash from 'highlight.js/lib/languages/bash';\nimport langCss from 'highlight.js/lib/languages/css';\nimport langJs from 'highlight.js/lib/languages/javascript';\nimport langJson from 'highlight.js/lib/languages/json';\nimport langMarkdown from 'highlight.js/lib/languages/markdown';\nimport langPython from 'highlight.js/lib/languages/python';\nimport langScss from 'highlight.js/lib/languages/scss';\nimport langTs from 'highlight.js/lib/languages/typescript';\nimport langXml from 'highlight.js/lib/languages/xml';\n\nimport {\n HighlightJSLanguageLoader,\n SiMarkdownHighlightJsOptions\n} from './si-markdown-highlightjs.types';\n\n// some common languages are built-in for initial loading speed\nhljs.registerLanguage('javascript', langJs);\nhljs.registerLanguage('typescript', langTs);\nhljs.registerLanguage('json', langJson);\nhljs.registerLanguage('css', langCss);\nhljs.registerLanguage('scss', langScss);\nhljs.registerLanguage('bash', langBash);\nhljs.registerLanguage('python', langPython);\nhljs.registerLanguage('xml', langXml);\nhljs.registerLanguage('markdown', langMarkdown);\n\nconst getHljsLang = async (\n lang: string,\n loader?: HighlightJSLanguageLoader\n): Promise<Language | undefined> => {\n const loadedLang = hljs.getLanguage(lang);\n if (loadedLang) {\n return loadedLang;\n }\n\n if (loader) {\n const importLang = await loader(lang);\n if (importLang) {\n hljs.registerLanguage(lang, importLang.default);\n return hljs.getLanguage(lang);\n }\n }\n return undefined;\n};\n\n@Component({\n selector: 'si-markdown-highlightjs',\n templateUrl: './si-markdown-highlightjs.component.html',\n styleUrl: './si-markdown-highlightjs.component.scss',\n host: {\n class: 'd-block'\n }\n})\nexport class SiMarkdownHightlightJsComponent implements SiMarkdownHighlighterComponent {\n private readonly sanitizer = inject(DomSanitizer);\n readonly code = input.required<string>();\n readonly language = input.required<string>();\n readonly updateLanguage = input.required<(lang?: string) => void>();\n readonly options = input<SiMarkdownHighlightJsOptions>();\n\n protected readonly highlighted = computedAsync({\n params: () => ({ code: this.code(), language: this.language(), options: this.options() }),\n computation: params => this.highlight(params.code, params.language, params.options),\n initial: undefined\n });\n\n private async highlight(\n code: string,\n language: string,\n options: SiMarkdownHighlightJsOptions = {}\n ): Promise<SafeHtml> {\n let highlighted = '';\n if (!language && options?.autoDetectLanguage) {\n try {\n const res = hljs.highlightAuto(code, undefined);\n highlighted = res.value;\n if (res.language) {\n const lang = hljs.getLanguage(res.language);\n this.updateLanguage()(lang?.name);\n } else {\n this.updateLanguage()(language);\n }\n } catch {\n // ignored\n }\n } else {\n const hljsLang = await getHljsLang(language, options.languageLoader);\n if (hljsLang) {\n this.updateLanguage()(hljsLang.name);\n try {\n highlighted = hljs.highlight(code, { ...options, language }).value;\n } catch {\n // ignored\n }\n } else {\n this.updateLanguage()(language);\n }\n }\n return highlighted ? this.sanitizer.bypassSecurityTrustHtml(highlighted) : '';\n }\n}\n","@let html = highlighted();\n@if (html) {\n <pre class=\"border-0 m-0 p-0\"><code [innerHTML]=\"html\"></code></pre>\n} @else {\n <pre class=\"border-0 m-0 p-0\"><code>{{ code() }} </code></pre>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { type SiMarkdownHighlighter } from '@siemens/element-ng/markdown';\n\nimport { SiMarkdownHightlightJsComponent } from './si-markdown-highlightjs.component';\nimport { SiMarkdownHighlightJsOptions } from './si-markdown-highlightjs.types';\n\n/**\n * Code highlighter using Highlight.js\n * @param options - Options passed to highlight.js\n * @returns highlighter configuration for `SiMarkdownOptions.setCodeHighlighter()`\n */\nexport const siMarkdownHighlightJs = (\n options?: SiMarkdownHighlightJsOptions\n): SiMarkdownHighlighter => {\n return {\n component: SiMarkdownHightlightJsComponent,\n options\n };\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-highlightjs.types';\nexport * from './si-markdown-highlightjs.highlighter';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -166,7 +166,7 @@ class SiMenuItemCheckboxComponent extends SiMenuItemBase {
166
166
  return this.cdkMenuItemCheckbox.checked;
167
167
  }
168
168
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiMenuItemCheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
169
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SiMenuItemCheckboxComponent, isStandalone: true, selector: "si-menu-item-checkbox, button[si-menu-item-checkbox]", usesInheritance: true, hostDirectives: [{ directive: i1.CdkMenuItemCheckbox, inputs: ["cdkMenuItemChecked", "checked", "cdkMenuItemDisabled", "disabled"], outputs: ["cdkMenuItemTriggered", "triggered"] }, { directive: i1.CdkMenuTrigger }], ngImport: i0, template: "<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n @if (checked && !hideCheckmark) {\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:var(--si-sys-sizing-icon-md)}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar) :host{--btn-bg: var(--si-sys-background-1);--btn-font-weight: 400;min-inline-size:auto!important}:host-context(si-menu-bar,si-content-action-bar) .btn+:host{margin-inline-start:1px!important}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:0;margin-block:calc(var(--si-sys-sizing-spacing-y-10) * -1)}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:0!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end{display:none!important}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:var(--si-sys-sizing-spacing-x-20)}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar).active .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:var(--si-sys-sizing-spacing-y-20)!important}:host-context(.card-outline){background-color:transparent}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }] });
169
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SiMenuItemCheckboxComponent, isStandalone: true, selector: "si-menu-item-checkbox, button[si-menu-item-checkbox]", usesInheritance: true, hostDirectives: [{ directive: i1.CdkMenuItemCheckbox, inputs: ["cdkMenuItemChecked", "checked", "cdkMenuItemDisabled", "disabled"], outputs: ["cdkMenuItemTriggered", "triggered"] }, { directive: i1.CdkMenuTrigger }], ngImport: i0, template: "<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n @if (checked && !hideCheckmark) {\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:var(--si-sys-sizing-icon-md)}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar) :host{--btn-bg: var(--si-sys-color-background-1);--btn-font-weight: 400;min-inline-size:auto!important}:host-context(si-menu-bar,si-content-action-bar) .btn+:host{margin-inline-start:1px!important}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:0;margin-block:calc(var(--si-sys-sizing-spacing-y-10) * -1)}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:0!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end{display:none!important}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:var(--si-sys-sizing-spacing-x-20)}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar).active .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:var(--si-sys-sizing-spacing-y-20)!important}:host-context(.card-outline){background-color:transparent}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }] });
170
170
  }
171
171
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiMenuItemCheckboxComponent, decorators: [{
172
172
  type: Component,
@@ -177,7 +177,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
177
177
  outputs: ['cdkMenuItemTriggered: triggered']
178
178
  },
179
179
  CdkMenuTrigger
180
- ], template: "<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n @if (checked && !hideCheckmark) {\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:var(--si-sys-sizing-icon-md)}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar) :host{--btn-bg: var(--si-sys-background-1);--btn-font-weight: 400;min-inline-size:auto!important}:host-context(si-menu-bar,si-content-action-bar) .btn+:host{margin-inline-start:1px!important}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:0;margin-block:calc(var(--si-sys-sizing-spacing-y-10) * -1)}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:0!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end{display:none!important}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:var(--si-sys-sizing-spacing-x-20)}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar).active .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:var(--si-sys-sizing-spacing-y-20)!important}:host-context(.card-outline){background-color:transparent}\n"] }]
180
+ ], template: "<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n @if (checked && !hideCheckmark) {\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:var(--si-sys-sizing-icon-md)}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar) :host{--btn-bg: var(--si-sys-color-background-1);--btn-font-weight: 400;min-inline-size:auto!important}:host-context(si-menu-bar,si-content-action-bar) .btn+:host{margin-inline-start:1px!important}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:0;margin-block:calc(var(--si-sys-sizing-spacing-y-10) * -1)}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:0!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end{display:none!important}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:var(--si-sys-sizing-spacing-x-20)}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar).active .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:var(--si-sys-sizing-spacing-y-20)!important}:host-context(.card-outline){background-color:transparent}\n"] }]
181
181
  }] });
182
182
 
183
183
  /**
@@ -191,7 +191,7 @@ class SiMenuItemRadioComponent extends SiMenuItemBase {
191
191
  return this.cdkMenuItemRadio.checked;
192
192
  }
193
193
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiMenuItemRadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
194
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SiMenuItemRadioComponent, isStandalone: true, selector: "si-menu-item-radio", usesInheritance: true, hostDirectives: [{ directive: i1.CdkMenuItemRadio, inputs: ["cdkMenuItemChecked", "checked", "cdkMenuItemDisabled", "disabled"], outputs: ["cdkMenuItemTriggered", "triggered"] }, { directive: i1.CdkMenuTrigger }], ngImport: i0, template: "<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n @if (checked) {\n <si-icon class=\"icon-sm me-1\" [icon]=\"icons.elementRecordFilled\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:var(--si-sys-sizing-icon-md)}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar) :host{--btn-bg: var(--si-sys-background-1);--btn-font-weight: 400;min-inline-size:auto!important}:host-context(si-menu-bar,si-content-action-bar) .btn+:host{margin-inline-start:1px!important}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:0;margin-block:calc(var(--si-sys-sizing-spacing-y-10) * -1)}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:0!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end{display:none!important}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:var(--si-sys-sizing-spacing-x-20)}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar).active .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:var(--si-sys-sizing-spacing-y-20)!important}:host-context(.card-outline){background-color:transparent}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }] });
194
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SiMenuItemRadioComponent, isStandalone: true, selector: "si-menu-item-radio", usesInheritance: true, hostDirectives: [{ directive: i1.CdkMenuItemRadio, inputs: ["cdkMenuItemChecked", "checked", "cdkMenuItemDisabled", "disabled"], outputs: ["cdkMenuItemTriggered", "triggered"] }, { directive: i1.CdkMenuTrigger }], ngImport: i0, template: "<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n @if (checked) {\n <si-icon class=\"icon-sm me-1\" [icon]=\"icons.elementRecordFilled\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:var(--si-sys-sizing-icon-md)}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar) :host{--btn-bg: var(--si-sys-color-background-1);--btn-font-weight: 400;min-inline-size:auto!important}:host-context(si-menu-bar,si-content-action-bar) .btn+:host{margin-inline-start:1px!important}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:0;margin-block:calc(var(--si-sys-sizing-spacing-y-10) * -1)}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:0!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end{display:none!important}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:var(--si-sys-sizing-spacing-x-20)}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar).active .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:var(--si-sys-sizing-spacing-y-20)!important}:host-context(.card-outline){background-color:transparent}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }] });
195
195
  }
196
196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiMenuItemRadioComponent, decorators: [{
197
197
  type: Component,
@@ -202,7 +202,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
202
202
  outputs: ['cdkMenuItemTriggered: triggered']
203
203
  },
204
204
  CdkMenuTrigger
205
- ], template: "<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n @if (checked) {\n <si-icon class=\"icon-sm me-1\" [icon]=\"icons.elementRecordFilled\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:var(--si-sys-sizing-icon-md)}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar) :host{--btn-bg: var(--si-sys-background-1);--btn-font-weight: 400;min-inline-size:auto!important}:host-context(si-menu-bar,si-content-action-bar) .btn+:host{margin-inline-start:1px!important}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:0;margin-block:calc(var(--si-sys-sizing-spacing-y-10) * -1)}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:0!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end{display:none!important}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:var(--si-sys-sizing-spacing-x-20)}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar).active .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:var(--si-sys-sizing-spacing-y-20)!important}:host-context(.card-outline){background-color:transparent}\n"] }]
205
+ ], template: "<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n @if (checked) {\n <si-icon class=\"icon-sm me-1\" [icon]=\"icons.elementRecordFilled\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:var(--si-sys-sizing-icon-md)}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar) :host{--btn-bg: var(--si-sys-color-background-1);--btn-font-weight: 400;min-inline-size:auto!important}:host-context(si-menu-bar,si-content-action-bar) .btn+:host{margin-inline-start:1px!important}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:0;margin-block:calc(var(--si-sys-sizing-spacing-y-10) * -1)}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:0!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end{display:none!important}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:var(--si-sys-sizing-spacing-x-20)}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar).active .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:var(--si-sys-sizing-spacing-y-20)!important}:host-context(.card-outline){background-color:transparent}\n"] }]
206
206
  }] });
207
207
 
208
208
  /**
@@ -219,7 +219,7 @@ class SiMenuItemComponent extends SiMenuItemBase {
219
219
  return this.menuTrigger?.isOpen();
220
220
  }
221
221
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiMenuItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
222
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SiMenuItemComponent, isStandalone: true, selector: "si-menu-item, a[si-menu-item], button[si-menu-item]", host: { properties: { "class.active": "hasSubmenu && isExpanded" } }, usesInheritance: true, hostDirectives: [{ directive: i1.CdkMenuItem, inputs: ["cdkMenuItemDisabled", "disabled"], outputs: ["cdkMenuItemTriggered", "triggered"] }], ngImport: i0, template: "<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n <ng-content select=\".end\" />\n @if (hasSubmenu) {\n <si-icon class=\"icon submenu\" [icon]=\"icons.elementRight2\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:var(--si-sys-sizing-icon-md)}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar) :host{--btn-bg: var(--si-sys-background-1);--btn-font-weight: 400;min-inline-size:auto!important}:host-context(si-menu-bar,si-content-action-bar) .btn+:host{margin-inline-start:1px!important}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:0;margin-block:calc(var(--si-sys-sizing-spacing-y-10) * -1)}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:0!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end{display:none!important}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:var(--si-sys-sizing-spacing-x-20)}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar).active .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:var(--si-sys-sizing-spacing-y-20)!important}:host-context(.card-outline){background-color:transparent}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }] });
222
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SiMenuItemComponent, isStandalone: true, selector: "si-menu-item, a[si-menu-item], button[si-menu-item]", host: { properties: { "class.active": "hasSubmenu && isExpanded" } }, usesInheritance: true, hostDirectives: [{ directive: i1.CdkMenuItem, inputs: ["cdkMenuItemDisabled", "disabled"], outputs: ["cdkMenuItemTriggered", "triggered"] }], ngImport: i0, template: "<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n <ng-content select=\".end\" />\n @if (hasSubmenu) {\n <si-icon class=\"icon submenu\" [icon]=\"icons.elementRight2\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:var(--si-sys-sizing-icon-md)}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar) :host{--btn-bg: var(--si-sys-color-background-1);--btn-font-weight: 400;min-inline-size:auto!important}:host-context(si-menu-bar,si-content-action-bar) .btn+:host{margin-inline-start:1px!important}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:0;margin-block:calc(var(--si-sys-sizing-spacing-y-10) * -1)}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:0!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end{display:none!important}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:var(--si-sys-sizing-spacing-x-20)}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar).active .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:var(--si-sys-sizing-spacing-y-20)!important}:host-context(.card-outline){background-color:transparent}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }] });
223
223
  }
224
224
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SiMenuItemComponent, decorators: [{
225
225
  type: Component,
@@ -231,7 +231,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
231
231
  inputs: ['cdkMenuItemDisabled: disabled'],
232
232
  outputs: ['cdkMenuItemTriggered: triggered']
233
233
  }
234
- ], template: "<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n <ng-content select=\".end\" />\n @if (hasSubmenu) {\n <si-icon class=\"icon submenu\" [icon]=\"icons.elementRight2\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:var(--si-sys-sizing-icon-md)}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar) :host{--btn-bg: var(--si-sys-background-1);--btn-font-weight: 400;min-inline-size:auto!important}:host-context(si-menu-bar,si-content-action-bar) .btn+:host{margin-inline-start:1px!important}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:0;margin-block:calc(var(--si-sys-sizing-spacing-y-10) * -1)}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:0!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end{display:none!important}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:var(--si-sys-sizing-spacing-x-20)}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar).active .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:var(--si-sys-sizing-spacing-y-20)!important}:host-context(.card-outline){background-color:transparent}\n"] }]
234
+ ], template: "<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n <ng-content select=\".end\" />\n @if (hasSubmenu) {\n <si-icon class=\"icon submenu\" [icon]=\"icons.elementRight2\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:var(--si-sys-sizing-icon-md)}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar) :host{--btn-bg: var(--si-sys-color-background-1);--btn-font-weight: 400;min-inline-size:auto!important}:host-context(si-menu-bar,si-content-action-bar) .btn+:host{margin-inline-start:1px!important}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:0;margin-block:calc(var(--si-sys-sizing-spacing-y-10) * -1)}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:0!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end{display:none!important}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:var(--si-sys-sizing-spacing-x-20)}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar).active .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:var(--si-sys-sizing-spacing-y-20)!important}:host-context(.card-outline){background-color:transparent}\n"] }]
235
235
  }] });
236
236
 
237
237
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-menu.mjs","sources":["../../../../projects/element-ng/menu/si-menu-bar.directive.ts","../../../../projects/element-ng/menu/si-menu-divider.directive.ts","../../../../projects/element-ng/menu/si-menu-action.service.ts","../../../../projects/element-ng/menu/si-menu-factory-item-guard.directive.ts","../../../../projects/element-ng/menu/si-menu-header.directive.ts","../../../../projects/element-ng/menu/si-menu-item-base.directive.ts","../../../../projects/element-ng/menu/si-menu-item-checkbox.component.ts","../../../../projects/element-ng/menu/si-menu-item-checkbox.component.html","../../../../projects/element-ng/menu/si-menu-item-radio.component.ts","../../../../projects/element-ng/menu/si-menu-item-radio.component.html","../../../../projects/element-ng/menu/si-menu-item.component.ts","../../../../projects/element-ng/menu/si-menu-item.component.html","../../../../projects/element-ng/menu/si-menu.directive.ts","../../../../projects/element-ng/menu/si-menu-factory.component.ts","../../../../projects/element-ng/menu/si-menu-factory.component.html","../../../../projects/element-ng/menu/si-menu.module.ts","../../../../projects/element-ng/menu/index.ts","../../../../projects/element-ng/menu/siemens-element-ng-menu.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuBar, CdkTargetMenuAim } from '@angular/cdk/menu';\nimport { Directive, inject, input } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-menu-bar',\n host: {\n class: 'd-inline-flex btn-group',\n '[tabindex]': 'tabIndex'\n },\n hostDirectives: [CdkMenuBar, CdkTargetMenuAim]\n})\nexport class SiMenuBarDirective {\n private menuBar = inject(CdkMenuBar, { self: true });\n\n protected get tabIndex(): 0 | -1 | null {\n return this.disabled() ? -1 : this.menuBar._getTabIndex();\n }\n\n /**\n * Sets the menu-bar disabled, i.e. sets tabindex=\"-1\"\n */\n readonly disabled = input<boolean>();\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\n\n@Directive({\n // violating eslint rule, to a have clean API\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-menu-divider',\n host: {\n class: 'd-block dropdown-divider'\n }\n})\nexport class SiMenuDividerDirective {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { MenuItemAction, MenuItemCheckbox, MenuItemRadio } from './si-menu-model';\n\n/**\n * Implement and provide this to an {@link SiMenuFactoryComponent}\n * to receive trigger events.\n */\nexport abstract class SiMenuActionService {\n /** Will be called by {@link SiMenuFactoryComponent} if an action is defined with a string instead of a function. */\n abstract actionTriggered(\n item: MenuItemAction | MenuItemRadio | MenuItemCheckbox,\n actionParam?: any\n ): void;\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\nimport { MenuItem as MenuItemLegacy } from '@siemens/element-ng/common';\n\nimport { MenuItem } from './si-menu-model';\n\n/** Required to have compiler checks on the factory template */\n@Directive({ selector: '[siMenuFactoryItemGuard]' })\nexport class SiMenuFactoryItemGuardDirective {\n static ngTemplateContextGuard(\n dir: SiMenuFactoryItemGuardDirective,\n ctx: any\n ): ctx is { $implicit: MenuItemLegacy | MenuItem } {\n return true;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\n\n@Directive({\n // violating eslint rule, to a have clean API\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-menu-header',\n host: {\n class: 'dropdown-item-text dropdown-header'\n }\n})\nexport class SiMenuHeaderDirective {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CDK_MENU } from '@angular/cdk/menu';\nimport { booleanAttribute, computed, Directive, inject, input } from '@angular/core';\n\n@Directive({\n host: {\n class: 'focus-inside',\n '[class.disabled]': 'disabled()',\n '[class]': 'isInBar ? \"btn btn-tertiary\" : \"dropdown-item\"'\n }\n})\nexport abstract class SiMenuItemBase {\n /** Content displayed in the menu item's badge. */\n readonly badge = input<string | number>();\n /**\n * Color variant of the menu item's badge.\n *\n * @defaultValue 'secondary'\n */\n readonly badgeColor = input('secondary');\n /** Icon displayed before the menu item label. */\n readonly icon = input<string>();\n\n /**\n * Whether to show a dot badge on the icon. A string or number is shown as dot content.\n *\n * @defaultValue false\n */\n readonly iconBadgeDot = input<boolean | string | number | undefined>(false);\n\n /**\n * Whether the menu item is disabled.\n *\n * @defaultValue false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n protected readonly isInBar = inject(CDK_MENU, { optional: true })?.orientation === 'horizontal';\n\n protected readonly badgeDotHasContent = computed(() => {\n return typeof this.iconBadgeDot() === 'string' || typeof this.iconBadgeDot() === 'number';\n });\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CDK_MENU, CdkMenuItemCheckbox, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { Component, inject } from '@angular/core';\nimport { elementOk } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\n\nimport { SiMenuItemBase } from './si-menu-item-base.directive';\n\n@Component({\n selector: 'si-menu-item-checkbox, button[si-menu-item-checkbox]',\n imports: [SiIconComponent],\n templateUrl: './si-menu-item-checkbox.component.html',\n styleUrl: './si-menu-item.component.scss',\n hostDirectives: [\n {\n directive: CdkMenuItemCheckbox,\n inputs: ['cdkMenuItemChecked: checked', 'cdkMenuItemDisabled: disabled'],\n outputs: ['cdkMenuItemTriggered: triggered']\n },\n CdkMenuTrigger\n ]\n})\nexport class SiMenuItemCheckboxComponent extends SiMenuItemBase {\n private cdkMenuItemCheckbox = inject(CdkMenuItemCheckbox);\n protected readonly icons = addIcons({ elementOk });\n protected readonly hideCheckmark = inject(CDK_MENU).orientation === 'horizontal';\n\n protected get checked(): boolean {\n return this.cdkMenuItemCheckbox.checked;\n }\n}\n","<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n @if (checked && !hideCheckmark) {\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n }\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuItemRadio, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { Component, inject } from '@angular/core';\nimport { elementRecordFilled } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\n\nimport { SiMenuItemBase } from './si-menu-item-base.directive';\n\n@Component({\n selector: 'si-menu-item-radio',\n imports: [SiIconComponent],\n templateUrl: './si-menu-item-radio.component.html',\n styleUrl: './si-menu-item.component.scss',\n hostDirectives: [\n {\n directive: CdkMenuItemRadio,\n inputs: ['cdkMenuItemChecked: checked', 'cdkMenuItemDisabled: disabled'],\n outputs: ['cdkMenuItemTriggered: triggered']\n },\n CdkMenuTrigger\n ]\n})\nexport class SiMenuItemRadioComponent extends SiMenuItemBase {\n private cdkMenuItemRadio = inject(CdkMenuItemRadio);\n protected readonly icons = addIcons({ elementRecordFilled });\n protected get checked(): boolean {\n return this.cdkMenuItemRadio.checked;\n }\n}\n","<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n @if (checked) {\n <si-icon class=\"icon-sm me-1\" [icon]=\"icons.elementRecordFilled\" />\n }\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuItem, MENU_TRIGGER } from '@angular/cdk/menu';\nimport { Component, inject } from '@angular/core';\nimport { elementRight2 } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\n\nimport { SiMenuItemBase } from './si-menu-item-base.directive';\n\n@Component({\n selector: 'si-menu-item, a[si-menu-item], button[si-menu-item]',\n imports: [SiIconComponent],\n templateUrl: './si-menu-item.component.html',\n styleUrl: './si-menu-item.component.scss',\n host: {\n '[class.active]': 'hasSubmenu && isExpanded'\n },\n hostDirectives: [\n {\n directive: CdkMenuItem,\n inputs: ['cdkMenuItemDisabled: disabled'],\n outputs: ['cdkMenuItemTriggered: triggered']\n }\n ]\n})\nexport class SiMenuItemComponent extends SiMenuItemBase {\n private menuTrigger = inject(MENU_TRIGGER, { optional: true, self: true });\n protected readonly icons = addIcons({ elementRight2 });\n protected get hasSubmenu(): boolean {\n return !!this.menuTrigger?.menuTemplateRef;\n }\n\n protected get isExpanded(): boolean | undefined {\n return this.menuTrigger?.isOpen();\n }\n}\n","<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n <ng-content select=\".end\" />\n @if (hasSubmenu) {\n <si-icon class=\"icon submenu\" [icon]=\"icons.elementRight2\" />\n }\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenu, CdkTargetMenuAim } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n // violating eslint rule, to a have clean API\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-menu',\n host: {\n class: 'd-block dropdown-menu position-static'\n },\n hostDirectives: [CdkMenu, CdkTargetMenuAim]\n})\nexport class SiMenuDirective {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuGroup, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { MenuItem as MenuItemLegacy } from '@siemens/element-ng/common';\nimport { SiLinkActionService, SiLinkModule } from '@siemens/element-ng/link';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { SiMenuActionService } from './si-menu-action.service';\nimport { SiMenuDividerDirective } from './si-menu-divider.directive';\nimport { SiMenuFactoryItemGuardDirective } from './si-menu-factory-item-guard.directive';\nimport { SiMenuHeaderDirective } from './si-menu-header.directive';\nimport { SiMenuItemCheckboxComponent } from './si-menu-item-checkbox.component';\nimport { SiMenuItemRadioComponent } from './si-menu-item-radio.component';\nimport { SiMenuItemComponent } from './si-menu-item.component';\nimport { MenuItem, MenuItemAction, MenuItemCheckbox, MenuItemRadio } from './si-menu-model';\nimport { SiMenuDirective } from './si-menu.directive';\n\n@Component({\n selector: 'si-menu-factory',\n imports: [\n SiMenuDirective,\n SiMenuItemComponent,\n SiMenuItemRadioComponent,\n SiMenuItemCheckboxComponent,\n SiMenuHeaderDirective,\n SiMenuDividerDirective,\n SiLinkModule,\n CdkMenuTrigger,\n SiTranslatePipe,\n CdkMenuGroup,\n NgTemplateOutlet,\n RouterLink,\n SiMenuFactoryItemGuardDirective\n ],\n templateUrl: './si-menu-factory.component.html',\n changeDetection: ChangeDetectionStrategy.Eager\n})\nexport class SiMenuFactoryComponent {\n /** Menu items to render. Supports legacy and current menu item models. */\n readonly items = input<readonly (MenuItemLegacy | MenuItem)[]>();\n /** Parameter passed to triggered menu item actions. */\n readonly actionParam = input();\n\n private linkActionService = inject(SiLinkActionService, { optional: true });\n private menuActionService = inject(SiMenuActionService, { optional: true });\n\n protected trackItem(index: number, item: MenuItemLegacy | MenuItem): string | number {\n if ('id' in item && item.id) {\n return item.id;\n }\n if ('label' in item && item.label) {\n return item.label;\n }\n if ('title' in item && item.title) {\n return item.title;\n }\n return index;\n }\n\n protected isNewItemStyle(item: MenuItemLegacy | MenuItem): item is MenuItem {\n return 'label' in item || item.type === 'divider' || item.type === 'radio-group';\n }\n\n protected isLegacyItemStyle(item: MenuItemLegacy | MenuItem): item is MenuItemLegacy {\n return !this.isNewItemStyle(item);\n }\n\n protected radioOrCheckboxTriggered(item: MenuItemLegacy): void {\n if (typeof item.action === 'function') {\n item.action(this.actionParam());\n } else {\n this.linkActionService?.emit(item, this.actionParam());\n }\n }\n\n protected runAction(item: MenuItemAction | MenuItemRadio | MenuItemCheckbox): void {\n if (typeof item.action === 'function') {\n item.action(this.actionParam(), item as any); // typescript cannot level down the item type properly\n }\n\n if (typeof item.action === 'string') {\n this.menuActionService?.actionTriggered(item, this.actionParam());\n }\n }\n}\n","<si-menu>\n @for (item of items(); track trackItem($index, item)) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\" />\n }\n <ng-template #itemTemplate let-item siMenuFactoryItemGuard>\n @if (isNewItemStyle(item)) {\n @switch (item.type) {\n @case ('group') {\n <si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [cdkMenuTriggerFor]=\"submenu\"\n [cdkMenuTriggerData]=\"{ $implicit: item.children }\"\n >{{ item.label | translate }}\n </si-menu-item>\n <ng-template #submenu>\n <si-menu-factory [items]=\"item.children\" [actionParam]=\"actionParam()\" />\n </ng-template>\n }\n @case ('action') {\n <si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item>\n }\n @case ('router-link') {\n <a\n si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.extras?.queryParams\"\n [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n [fragment]=\"item.extras?.fragment\"\n [state]=\"item.extras?.state\"\n [relativeTo]=\"item.extras?.relativeTo\"\n [preserveFragment]=\"item.extras?.preserveFragment\"\n [skipLocationChange]=\"item.extras?.skipLocationChange\"\n [replaceUrl]=\"item.extras?.replaceUrl\"\n >{{ item.label | translate }}\n </a>\n }\n @case ('link') {\n <a\n si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [href]=\"item.href\"\n [target]=\"item.target\"\n >{{ item.label | translate }}\n </a>\n }\n @case ('radio-group') {\n <div cdkMenuGroup>\n @for (radioItem of item.children; track radioItem) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: radioItem }\" />\n }\n </div>\n }\n @case ('radio') {\n <si-menu-item-radio\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [checked]=\"item.checked\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item-radio>\n }\n @case ('checkbox') {\n <si-menu-item-checkbox\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [checked]=\"item.checked\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item-checkbox>\n }\n @case ('header') {\n <si-menu-header>{{ item.label | translate }}</si-menu-header>\n }\n @case ('divider') {\n <si-menu-divider />\n }\n }\n } @else if (isLegacyItemStyle(item)) {\n @switch (item.type) {\n @case ('radio') {\n <si-menu-item-radio\n [attr.data-id]=\"item.id\"\n [checked]=\"item.selectionState === 'radio'\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [iconBadgeDot]=\"item.badgeDot\"\n (triggered)=\"radioOrCheckboxTriggered(item)\"\n >\n {{ item.title | translate }}\n </si-menu-item-radio>\n }\n @case ('check') {\n <si-menu-item-checkbox\n [attr.data-id]=\"item.id\"\n [checked]=\"item.selectionState === 'check'\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [iconBadgeDot]=\"item.badgeDot\"\n (triggered)=\"radioOrCheckboxTriggered(item)\"\n >\n {{ item.title | translate }}\n </si-menu-item-checkbox>\n }\n @default {\n @if (item.isHeading) {\n <div class=\"dropdown-item-text dropdown-header\">\n {{ item.title | translate }}\n </div>\n } @else {\n @if (item.title !== '-') {\n <a\n si-menu-item\n activeClass=\"active\"\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [siLink]=\"item\"\n [iconBadgeDot]=\"item.badgeDot\"\n [actionParam]=\"actionParam()\"\n [cdkMenuTriggerFor]=\"item.items ? submenu : null\"\n [cdkMenuTriggerData]=\"item\"\n >\n {{ item.title | translate }}\n </a>\n <ng-template #submenu>\n <si-menu-factory [items]=\"item.items!\" [actionParam]=\"actionParam()\" />\n </ng-template>\n } @else {\n <div class=\"dropdown-divider\"></div>\n }\n }\n }\n }\n }\n </ng-template>\n</si-menu>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiMenuBarDirective } from './si-menu-bar.directive';\nimport { SiMenuDividerDirective } from './si-menu-divider.directive';\nimport { SiMenuFactoryComponent } from './si-menu-factory.component';\nimport { SiMenuHeaderDirective } from './si-menu-header.directive';\nimport { SiMenuItemCheckboxComponent } from './si-menu-item-checkbox.component';\nimport { SiMenuItemRadioComponent } from './si-menu-item-radio.component';\nimport { SiMenuItemComponent } from './si-menu-item.component';\nimport { SiMenuDirective } from './si-menu.directive';\n\n@NgModule({\n imports: [\n SiMenuBarDirective,\n SiMenuDirective,\n SiMenuDividerDirective,\n SiMenuFactoryComponent,\n SiMenuHeaderDirective,\n SiMenuItemCheckboxComponent,\n SiMenuItemComponent,\n SiMenuItemRadioComponent\n ],\n exports: [\n SiMenuBarDirective,\n SiMenuDirective,\n SiMenuDividerDirective,\n SiMenuFactoryComponent,\n SiMenuHeaderDirective,\n SiMenuItemCheckboxComponent,\n SiMenuItemComponent,\n SiMenuItemRadioComponent\n ]\n})\nexport class SiMenuModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-menu.module';\nexport * from './si-menu-item.component';\nexport * from './si-menu-item-checkbox.component';\nexport * from './si-menu-item-radio.component';\nexport * from './si-menu.directive';\nexport * from './si-menu-bar.directive';\nexport * from './si-menu-header.directive';\nexport * from './si-menu-divider.directive';\nexport * from './si-menu-factory.component';\nexport * from './si-menu-model';\nexport * from './si-menu-action.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"siemens-element-ng-menu.mjs","sources":["../../../../projects/element-ng/menu/si-menu-bar.directive.ts","../../../../projects/element-ng/menu/si-menu-divider.directive.ts","../../../../projects/element-ng/menu/si-menu-action.service.ts","../../../../projects/element-ng/menu/si-menu-factory-item-guard.directive.ts","../../../../projects/element-ng/menu/si-menu-header.directive.ts","../../../../projects/element-ng/menu/si-menu-item-base.directive.ts","../../../../projects/element-ng/menu/si-menu-item-checkbox.component.ts","../../../../projects/element-ng/menu/si-menu-item-checkbox.component.html","../../../../projects/element-ng/menu/si-menu-item-radio.component.ts","../../../../projects/element-ng/menu/si-menu-item-radio.component.html","../../../../projects/element-ng/menu/si-menu-item.component.ts","../../../../projects/element-ng/menu/si-menu-item.component.html","../../../../projects/element-ng/menu/si-menu.directive.ts","../../../../projects/element-ng/menu/si-menu-factory.component.ts","../../../../projects/element-ng/menu/si-menu-factory.component.html","../../../../projects/element-ng/menu/si-menu.module.ts","../../../../projects/element-ng/menu/index.ts","../../../../projects/element-ng/menu/siemens-element-ng-menu.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuBar, CdkTargetMenuAim } from '@angular/cdk/menu';\nimport { Directive, inject, input } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-menu-bar',\n host: {\n class: 'd-inline-flex btn-group',\n '[tabindex]': 'tabIndex'\n },\n hostDirectives: [CdkMenuBar, CdkTargetMenuAim]\n})\nexport class SiMenuBarDirective {\n private menuBar = inject(CdkMenuBar, { self: true });\n\n protected get tabIndex(): 0 | -1 | null {\n return this.disabled() ? -1 : this.menuBar._getTabIndex();\n }\n\n /**\n * Sets the menu-bar disabled, i.e. sets tabindex=\"-1\"\n */\n readonly disabled = input<boolean>();\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\n\n@Directive({\n // violating eslint rule, to a have clean API\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-menu-divider',\n host: {\n class: 'd-block dropdown-divider'\n }\n})\nexport class SiMenuDividerDirective {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { MenuItemAction, MenuItemCheckbox, MenuItemRadio } from './si-menu-model';\n\n/**\n * Implement and provide this to an {@link SiMenuFactoryComponent}\n * to receive trigger events.\n */\nexport abstract class SiMenuActionService {\n /** Will be called by {@link SiMenuFactoryComponent} if an action is defined with a string instead of a function. */\n abstract actionTriggered(\n item: MenuItemAction | MenuItemRadio | MenuItemCheckbox,\n actionParam?: any\n ): void;\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\nimport { MenuItem as MenuItemLegacy } from '@siemens/element-ng/common';\n\nimport { MenuItem } from './si-menu-model';\n\n/** Required to have compiler checks on the factory template */\n@Directive({ selector: '[siMenuFactoryItemGuard]' })\nexport class SiMenuFactoryItemGuardDirective {\n static ngTemplateContextGuard(\n dir: SiMenuFactoryItemGuardDirective,\n ctx: any\n ): ctx is { $implicit: MenuItemLegacy | MenuItem } {\n return true;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\n\n@Directive({\n // violating eslint rule, to a have clean API\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-menu-header',\n host: {\n class: 'dropdown-item-text dropdown-header'\n }\n})\nexport class SiMenuHeaderDirective {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CDK_MENU } from '@angular/cdk/menu';\nimport { booleanAttribute, computed, Directive, inject, input } from '@angular/core';\n\n@Directive({\n host: {\n class: 'focus-inside',\n '[class.disabled]': 'disabled()',\n '[class]': 'isInBar ? \"btn btn-tertiary\" : \"dropdown-item\"'\n }\n})\nexport abstract class SiMenuItemBase {\n /** Content displayed in the menu item's badge. */\n readonly badge = input<string | number>();\n /**\n * Color variant of the menu item's badge.\n *\n * @defaultValue 'secondary'\n */\n readonly badgeColor = input('secondary');\n /** Icon displayed before the menu item label. */\n readonly icon = input<string>();\n\n /**\n * Whether to show a dot badge on the icon. A string or number is shown as dot content.\n *\n * @defaultValue false\n */\n readonly iconBadgeDot = input<boolean | string | number | undefined>(false);\n\n /**\n * Whether the menu item is disabled.\n *\n * @defaultValue false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n protected readonly isInBar = inject(CDK_MENU, { optional: true })?.orientation === 'horizontal';\n\n protected readonly badgeDotHasContent = computed(() => {\n return typeof this.iconBadgeDot() === 'string' || typeof this.iconBadgeDot() === 'number';\n });\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CDK_MENU, CdkMenuItemCheckbox, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { Component, inject } from '@angular/core';\nimport { elementOk } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\n\nimport { SiMenuItemBase } from './si-menu-item-base.directive';\n\n@Component({\n selector: 'si-menu-item-checkbox, button[si-menu-item-checkbox]',\n imports: [SiIconComponent],\n templateUrl: './si-menu-item-checkbox.component.html',\n styleUrl: './si-menu-item.component.scss',\n hostDirectives: [\n {\n directive: CdkMenuItemCheckbox,\n inputs: ['cdkMenuItemChecked: checked', 'cdkMenuItemDisabled: disabled'],\n outputs: ['cdkMenuItemTriggered: triggered']\n },\n CdkMenuTrigger\n ]\n})\nexport class SiMenuItemCheckboxComponent extends SiMenuItemBase {\n private cdkMenuItemCheckbox = inject(CdkMenuItemCheckbox);\n protected readonly icons = addIcons({ elementOk });\n protected readonly hideCheckmark = inject(CDK_MENU).orientation === 'horizontal';\n\n protected get checked(): boolean {\n return this.cdkMenuItemCheckbox.checked;\n }\n}\n","<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n @if (checked && !hideCheckmark) {\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n }\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuItemRadio, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { Component, inject } from '@angular/core';\nimport { elementRecordFilled } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\n\nimport { SiMenuItemBase } from './si-menu-item-base.directive';\n\n@Component({\n selector: 'si-menu-item-radio',\n imports: [SiIconComponent],\n templateUrl: './si-menu-item-radio.component.html',\n styleUrl: './si-menu-item.component.scss',\n hostDirectives: [\n {\n directive: CdkMenuItemRadio,\n inputs: ['cdkMenuItemChecked: checked', 'cdkMenuItemDisabled: disabled'],\n outputs: ['cdkMenuItemTriggered: triggered']\n },\n CdkMenuTrigger\n ]\n})\nexport class SiMenuItemRadioComponent extends SiMenuItemBase {\n private cdkMenuItemRadio = inject(CdkMenuItemRadio);\n protected readonly icons = addIcons({ elementRecordFilled });\n protected get checked(): boolean {\n return this.cdkMenuItemRadio.checked;\n }\n}\n","<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n @if (checked) {\n <si-icon class=\"icon-sm me-1\" [icon]=\"icons.elementRecordFilled\" />\n }\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuItem, MENU_TRIGGER } from '@angular/cdk/menu';\nimport { Component, inject } from '@angular/core';\nimport { elementRight2 } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\n\nimport { SiMenuItemBase } from './si-menu-item-base.directive';\n\n@Component({\n selector: 'si-menu-item, a[si-menu-item], button[si-menu-item]',\n imports: [SiIconComponent],\n templateUrl: './si-menu-item.component.html',\n styleUrl: './si-menu-item.component.scss',\n host: {\n '[class.active]': 'hasSubmenu && isExpanded'\n },\n hostDirectives: [\n {\n directive: CdkMenuItem,\n inputs: ['cdkMenuItemDisabled: disabled'],\n outputs: ['cdkMenuItemTriggered: triggered']\n }\n ]\n})\nexport class SiMenuItemComponent extends SiMenuItemBase {\n private menuTrigger = inject(MENU_TRIGGER, { optional: true, self: true });\n protected readonly icons = addIcons({ elementRight2 });\n protected get hasSubmenu(): boolean {\n return !!this.menuTrigger?.menuTemplateRef;\n }\n\n protected get isExpanded(): boolean | undefined {\n return this.menuTrigger?.isOpen();\n }\n}\n","<div class=\"item-wrapper text-nowrap\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [class]=\"`bg-${badgeColor()}`\">{{ badge() }}</span>\n }\n <ng-content select=\".end\" />\n @if (hasSubmenu) {\n <si-icon class=\"icon submenu\" [icon]=\"icons.elementRight2\" />\n }\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenu, CdkTargetMenuAim } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n // violating eslint rule, to a have clean API\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-menu',\n host: {\n class: 'd-block dropdown-menu position-static'\n },\n hostDirectives: [CdkMenu, CdkTargetMenuAim]\n})\nexport class SiMenuDirective {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuGroup, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { MenuItem as MenuItemLegacy } from '@siemens/element-ng/common';\nimport { SiLinkActionService, SiLinkModule } from '@siemens/element-ng/link';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { SiMenuActionService } from './si-menu-action.service';\nimport { SiMenuDividerDirective } from './si-menu-divider.directive';\nimport { SiMenuFactoryItemGuardDirective } from './si-menu-factory-item-guard.directive';\nimport { SiMenuHeaderDirective } from './si-menu-header.directive';\nimport { SiMenuItemCheckboxComponent } from './si-menu-item-checkbox.component';\nimport { SiMenuItemRadioComponent } from './si-menu-item-radio.component';\nimport { SiMenuItemComponent } from './si-menu-item.component';\nimport { MenuItem, MenuItemAction, MenuItemCheckbox, MenuItemRadio } from './si-menu-model';\nimport { SiMenuDirective } from './si-menu.directive';\n\n@Component({\n selector: 'si-menu-factory',\n imports: [\n SiMenuDirective,\n SiMenuItemComponent,\n SiMenuItemRadioComponent,\n SiMenuItemCheckboxComponent,\n SiMenuHeaderDirective,\n SiMenuDividerDirective,\n SiLinkModule,\n CdkMenuTrigger,\n SiTranslatePipe,\n CdkMenuGroup,\n NgTemplateOutlet,\n RouterLink,\n SiMenuFactoryItemGuardDirective\n ],\n templateUrl: './si-menu-factory.component.html',\n changeDetection: ChangeDetectionStrategy.Eager\n})\nexport class SiMenuFactoryComponent {\n /** Menu items to render. Supports legacy and current menu item models. */\n readonly items = input<readonly (MenuItemLegacy | MenuItem)[]>();\n /** Parameter passed to triggered menu item actions. */\n readonly actionParam = input();\n\n private linkActionService = inject(SiLinkActionService, { optional: true });\n private menuActionService = inject(SiMenuActionService, { optional: true });\n\n protected trackItem(index: number, item: MenuItemLegacy | MenuItem): string | number {\n if ('id' in item && item.id) {\n return item.id;\n }\n if ('label' in item && item.label) {\n return item.label;\n }\n if ('title' in item && item.title) {\n return item.title;\n }\n return index;\n }\n\n protected isNewItemStyle(item: MenuItemLegacy | MenuItem): item is MenuItem {\n return 'label' in item || item.type === 'divider' || item.type === 'radio-group';\n }\n\n protected isLegacyItemStyle(item: MenuItemLegacy | MenuItem): item is MenuItemLegacy {\n return !this.isNewItemStyle(item);\n }\n\n protected radioOrCheckboxTriggered(item: MenuItemLegacy): void {\n if (typeof item.action === 'function') {\n item.action(this.actionParam());\n } else {\n this.linkActionService?.emit(item, this.actionParam());\n }\n }\n\n protected runAction(item: MenuItemAction | MenuItemRadio | MenuItemCheckbox): void {\n if (typeof item.action === 'function') {\n item.action(this.actionParam(), item as any); // typescript cannot level down the item type properly\n }\n\n if (typeof item.action === 'string') {\n this.menuActionService?.actionTriggered(item, this.actionParam());\n }\n }\n}\n","<si-menu>\n @for (item of items(); track trackItem($index, item)) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\" />\n }\n <ng-template #itemTemplate let-item siMenuFactoryItemGuard>\n @if (isNewItemStyle(item)) {\n @switch (item.type) {\n @case ('group') {\n <si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [cdkMenuTriggerFor]=\"submenu\"\n [cdkMenuTriggerData]=\"{ $implicit: item.children }\"\n >{{ item.label | translate }}\n </si-menu-item>\n <ng-template #submenu>\n <si-menu-factory [items]=\"item.children\" [actionParam]=\"actionParam()\" />\n </ng-template>\n }\n @case ('action') {\n <si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item>\n }\n @case ('router-link') {\n <a\n si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.extras?.queryParams\"\n [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n [fragment]=\"item.extras?.fragment\"\n [state]=\"item.extras?.state\"\n [relativeTo]=\"item.extras?.relativeTo\"\n [preserveFragment]=\"item.extras?.preserveFragment\"\n [skipLocationChange]=\"item.extras?.skipLocationChange\"\n [replaceUrl]=\"item.extras?.replaceUrl\"\n >{{ item.label | translate }}\n </a>\n }\n @case ('link') {\n <a\n si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [href]=\"item.href\"\n [target]=\"item.target\"\n >{{ item.label | translate }}\n </a>\n }\n @case ('radio-group') {\n <div cdkMenuGroup>\n @for (radioItem of item.children; track radioItem) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: radioItem }\" />\n }\n </div>\n }\n @case ('radio') {\n <si-menu-item-radio\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [checked]=\"item.checked\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item-radio>\n }\n @case ('checkbox') {\n <si-menu-item-checkbox\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [checked]=\"item.checked\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item-checkbox>\n }\n @case ('header') {\n <si-menu-header>{{ item.label | translate }}</si-menu-header>\n }\n @case ('divider') {\n <si-menu-divider />\n }\n }\n } @else if (isLegacyItemStyle(item)) {\n @switch (item.type) {\n @case ('radio') {\n <si-menu-item-radio\n [attr.data-id]=\"item.id\"\n [checked]=\"item.selectionState === 'radio'\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [iconBadgeDot]=\"item.badgeDot\"\n (triggered)=\"radioOrCheckboxTriggered(item)\"\n >\n {{ item.title | translate }}\n </si-menu-item-radio>\n }\n @case ('check') {\n <si-menu-item-checkbox\n [attr.data-id]=\"item.id\"\n [checked]=\"item.selectionState === 'check'\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [iconBadgeDot]=\"item.badgeDot\"\n (triggered)=\"radioOrCheckboxTriggered(item)\"\n >\n {{ item.title | translate }}\n </si-menu-item-checkbox>\n }\n @default {\n @if (item.isHeading) {\n <div class=\"dropdown-item-text dropdown-header\">\n {{ item.title | translate }}\n </div>\n } @else {\n @if (item.title !== '-') {\n <a\n si-menu-item\n activeClass=\"active\"\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [siLink]=\"item\"\n [iconBadgeDot]=\"item.badgeDot\"\n [actionParam]=\"actionParam()\"\n [cdkMenuTriggerFor]=\"item.items ? submenu : null\"\n [cdkMenuTriggerData]=\"item\"\n >\n {{ item.title | translate }}\n </a>\n <ng-template #submenu>\n <si-menu-factory [items]=\"item.items!\" [actionParam]=\"actionParam()\" />\n </ng-template>\n } @else {\n <div class=\"dropdown-divider\"></div>\n }\n }\n }\n }\n }\n </ng-template>\n</si-menu>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiMenuBarDirective } from './si-menu-bar.directive';\nimport { SiMenuDividerDirective } from './si-menu-divider.directive';\nimport { SiMenuFactoryComponent } from './si-menu-factory.component';\nimport { SiMenuHeaderDirective } from './si-menu-header.directive';\nimport { SiMenuItemCheckboxComponent } from './si-menu-item-checkbox.component';\nimport { SiMenuItemRadioComponent } from './si-menu-item-radio.component';\nimport { SiMenuItemComponent } from './si-menu-item.component';\nimport { SiMenuDirective } from './si-menu.directive';\n\n@NgModule({\n imports: [\n SiMenuBarDirective,\n SiMenuDirective,\n SiMenuDividerDirective,\n SiMenuFactoryComponent,\n SiMenuHeaderDirective,\n SiMenuItemCheckboxComponent,\n SiMenuItemComponent,\n SiMenuItemRadioComponent\n ],\n exports: [\n SiMenuBarDirective,\n SiMenuDirective,\n SiMenuDividerDirective,\n SiMenuFactoryComponent,\n SiMenuHeaderDirective,\n SiMenuItemCheckboxComponent,\n SiMenuItemComponent,\n SiMenuItemRadioComponent\n ]\n})\nexport class SiMenuModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-menu.module';\nexport * from './si-menu-item.component';\nexport * from './si-menu-item-checkbox.component';\nexport * from './si-menu-item-radio.component';\nexport * from './si-menu.directive';\nexport * from './si-menu-bar.directive';\nexport * from './si-menu-header.directive';\nexport * from './si-menu-divider.directive';\nexport * from './si-menu-factory.component';\nexport * from './si-menu-model';\nexport * from './si-menu-action.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}