@siemens/element-ng 47.1.0 → 47.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/accordion/index.d.ts +9 -0
  2. package/accordion/package.json +3 -0
  3. package/accordion/si-accordion-hcollapse.service.d.ts +17 -0
  4. package/accordion/si-accordion.component.d.ts +37 -0
  5. package/accordion/si-accordion.module.d.ts +8 -0
  6. package/accordion/si-accordion.service.d.ts +17 -0
  7. package/accordion/si-collapsible-panel.component.d.ts +89 -0
  8. package/action-modal/index.d.ts +6 -0
  9. package/action-modal/package.json +3 -0
  10. package/action-modal/si-action-dialog.service.d.ts +49 -0
  11. package/action-modal/si-action-dialog.types.d.ts +92 -0
  12. package/action-modal/si-alert-dialog/si-alert-dialog.component.d.ts +32 -0
  13. package/action-modal/si-confirmation-dialog/si-confirmation-dialog.component.d.ts +40 -0
  14. package/action-modal/si-delete-confirmation-dialog/si-delete-confirmation-dialog.component.d.ts +45 -0
  15. package/action-modal/si-edit-discard-dialog/si-edit-discard-dialog.component.d.ts +68 -0
  16. package/auto-collapsable-list/index.d.ts +10 -0
  17. package/auto-collapsable-list/package.json +3 -0
  18. package/auto-collapsable-list/si-auto-collapsable-list-additional-content.directive.d.ts +6 -0
  19. package/auto-collapsable-list/si-auto-collapsable-list-item.directive.d.ts +29 -0
  20. package/auto-collapsable-list/si-auto-collapsable-list-measurable.class.d.ts +16 -0
  21. package/auto-collapsable-list/si-auto-collapsable-list-overflow-item.directive.d.ts +12 -0
  22. package/auto-collapsable-list/si-auto-collapsable-list.directive.d.ts +47 -0
  23. package/auto-collapsable-list/si-auto-collapsable-list.module.d.ts +10 -0
  24. package/color-picker/index.d.ts +5 -0
  25. package/color-picker/package.json +3 -0
  26. package/color-picker/si-color-picker.component.d.ts +61 -0
  27. package/common/models/menu.model.d.ts +2 -2
  28. package/connection-strength/index.d.ts +6 -0
  29. package/connection-strength/package.json +3 -0
  30. package/connection-strength/si-connection-strength.component.d.ts +19 -0
  31. package/connection-strength/si-connection-strength.module.d.ts +7 -0
  32. package/copyright-notice/index.d.ts +7 -0
  33. package/copyright-notice/package.json +3 -0
  34. package/copyright-notice/si-copyright-notice.component.d.ts +18 -0
  35. package/copyright-notice/si-copyright-notice.d.ts +23 -0
  36. package/copyright-notice/si-copyright-notice.module.d.ts +7 -0
  37. package/empty-state/index.d.ts +6 -0
  38. package/empty-state/package.json +3 -0
  39. package/empty-state/si-empty-state.component.d.ts +18 -0
  40. package/empty-state/si-empty-state.module.d.ts +7 -0
  41. package/fesm2022/siemens-element-ng-accordion.mjs +314 -0
  42. package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -0
  43. package/fesm2022/siemens-element-ng-action-modal.mjs +363 -0
  44. package/fesm2022/siemens-element-ng-action-modal.mjs.map +1 -0
  45. package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs +312 -0
  46. package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs.map +1 -0
  47. package/fesm2022/siemens-element-ng-color-picker.mjs +176 -0
  48. package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -0
  49. package/fesm2022/siemens-element-ng-connection-strength.mjs +58 -0
  50. package/fesm2022/siemens-element-ng-connection-strength.mjs.map +1 -0
  51. package/fesm2022/siemens-element-ng-copyright-notice.mjs +71 -0
  52. package/fesm2022/siemens-element-ng-copyright-notice.mjs.map +1 -0
  53. package/fesm2022/siemens-element-ng-empty-state.mjs +59 -0
  54. package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -0
  55. package/fesm2022/siemens-element-ng-footer.mjs +55 -0
  56. package/fesm2022/siemens-element-ng-footer.mjs.map +1 -0
  57. package/fesm2022/siemens-element-ng-icon.mjs +8 -1
  58. package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
  59. package/fesm2022/siemens-element-ng-inline-notification.mjs +82 -0
  60. package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -0
  61. package/fesm2022/siemens-element-ng-loading-spinner.mjs +248 -0
  62. package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -0
  63. package/fesm2022/siemens-element-ng-menu.mjs +350 -0
  64. package/fesm2022/siemens-element-ng-menu.mjs.map +1 -0
  65. package/fesm2022/siemens-element-ng-modal.mjs +345 -0
  66. package/fesm2022/siemens-element-ng-modal.mjs.map +1 -0
  67. package/fesm2022/siemens-element-ng-pagination.mjs +145 -0
  68. package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -0
  69. package/fesm2022/siemens-element-ng-password-toggle.mjs +88 -0
  70. package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -0
  71. package/fesm2022/siemens-element-ng-summary-chip.mjs +77 -0
  72. package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -0
  73. package/fesm2022/siemens-element-ng-tooltip.mjs +233 -0
  74. package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -0
  75. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  76. package/footer/index.d.ts +6 -0
  77. package/footer/package.json +3 -0
  78. package/footer/si-footer.component.d.ts +14 -0
  79. package/footer/si-footer.module.d.ts +7 -0
  80. package/icon/element-icons.d.ts +7 -0
  81. package/inline-notification/index.d.ts +6 -0
  82. package/inline-notification/package.json +3 -0
  83. package/inline-notification/si-inline-notification.component.d.ts +42 -0
  84. package/inline-notification/si-inline-notification.module.d.ts +7 -0
  85. package/loading-spinner/index.d.ts +9 -0
  86. package/loading-spinner/package.json +3 -0
  87. package/loading-spinner/si-loading-button.component.d.ts +31 -0
  88. package/loading-spinner/si-loading-spinner.component.d.ts +32 -0
  89. package/loading-spinner/si-loading-spinner.directive.d.ts +36 -0
  90. package/loading-spinner/si-loading-spinner.module.d.ts +8 -0
  91. package/loading-spinner/si-loading-spinner.service.d.ts +18 -0
  92. package/menu/index.d.ts +15 -0
  93. package/menu/package.json +3 -0
  94. package/menu/si-menu-action.service.d.ts +13 -0
  95. package/menu/si-menu-bar.directive.d.ts +12 -0
  96. package/menu/si-menu-divider.directive.d.ts +5 -0
  97. package/menu/si-menu-factory-item-guard.directive.d.ts +11 -0
  98. package/menu/si-menu-factory.component.d.ts +15 -0
  99. package/menu/si-menu-header.directive.d.ts +5 -0
  100. package/menu/si-menu-item-base.directive.d.ts +16 -0
  101. package/menu/si-menu-item-checkbox.component.d.ts +10 -0
  102. package/menu/si-menu-item-radio.component.d.ts +10 -0
  103. package/menu/si-menu-item.component.d.ts +10 -0
  104. package/menu/si-menu-model.d.ts +91 -0
  105. package/menu/si-menu.directive.d.ts +6 -0
  106. package/menu/si-menu.module.d.ts +14 -0
  107. package/modal/index.d.ts +7 -0
  108. package/modal/modal.helpers.d.ts +8 -0
  109. package/modal/modalref.d.ts +64 -0
  110. package/modal/package.json +3 -0
  111. package/modal/si-modal.component.d.ts +32 -0
  112. package/modal/si-modal.service.d.ts +57 -0
  113. package/package.json +67 -3
  114. package/pagination/index.d.ts +6 -0
  115. package/pagination/package.json +3 -0
  116. package/pagination/si-pagination.component.d.ts +65 -0
  117. package/pagination/si-pagination.module.d.ts +7 -0
  118. package/password-toggle/index.d.ts +6 -0
  119. package/password-toggle/package.json +3 -0
  120. package/password-toggle/si-password-toggle.component.d.ts +39 -0
  121. package/password-toggle/si-password-toggle.module.d.ts +7 -0
  122. package/summary-chip/index.d.ts +5 -0
  123. package/summary-chip/package.json +3 -0
  124. package/summary-chip/si-summary-chip.component.d.ts +44 -0
  125. package/template-i18n.json +19 -1
  126. package/tooltip/index.d.ts +7 -0
  127. package/tooltip/package.json +3 -0
  128. package/tooltip/si-tooltip.component.d.ts +25 -0
  129. package/tooltip/si-tooltip.directive.d.ts +45 -0
  130. package/tooltip/si-tooltip.module.d.ts +7 -0
  131. package/tooltip/si-tooltip.service.d.ts +44 -0
  132. package/translate/si-translatable-keys.interface.d.ts +18 -0
@@ -0,0 +1,82 @@
1
+ import { NgClass } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { inject, input, booleanAttribute, computed, Component, NgModule } from '@angular/core';
4
+ import { STATUS_ICON_CONFIG, SiIconNextComponent } from '@siemens/element-ng/icon';
5
+ import { SiLinkDirective } from '@siemens/element-ng/link';
6
+ import * as i1 from '@siemens/element-translate-ng/translate';
7
+ import { SiTranslateModule } from '@siemens/element-translate-ng/translate';
8
+
9
+ /**
10
+ * Copyright Siemens 2016 - 2025.
11
+ * SPDX-License-Identifier: MIT
12
+ */
13
+ class SiInlineNotificationComponent {
14
+ statusIcons = inject(STATUS_ICON_CONFIG);
15
+ /**
16
+ * Status of inline notification.
17
+ */
18
+ severity = input.required();
19
+ /**
20
+ * Heading of the message.
21
+ */
22
+ heading = input();
23
+ /**
24
+ * Main message of this inline notification.
25
+ */
26
+ message = input.required();
27
+ /**
28
+ * Optional link action for inline notification events.
29
+ */
30
+ action = input();
31
+ /**
32
+ * Params passed to the translation pipe
33
+ *
34
+ * @defaultValue
35
+ * ```
36
+ * {}
37
+ * ```
38
+ */
39
+ translationParams = input({});
40
+ /**
41
+ * Displays in embedded style, w/o radius and indicator bar
42
+ *
43
+ * @defaultValue false
44
+ */
45
+ embedded = input(false, { transform: booleanAttribute });
46
+ icon = computed(() => this.statusIcons[this.severity()] ?? this.statusIcons.info);
47
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiInlineNotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiInlineNotificationComponent, isStandalone: true, selector: "si-inline-notification", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: true, transformFunction: null }, heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: false, transformFunction: null }, translationParams: { classPropertyName: "translationParams", publicName: "translationParams", isSignal: true, isRequired: false, transformFunction: null }, embedded: { classPropertyName: "embedded", publicName: "embedded", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"alert d-flex align-items-start\"\n role=\"alert\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n [ngClass]=\"'alert-' + severity()\"\n [hidden]=\"!severity()\"\n>\n @let iconValue = icon();\n <span class=\"icon icon-stack me-4 flex-shrink-0\">\n <si-icon-next [ngClass]=\"iconValue.color\" [icon]=\"iconValue.icon\" />\n <si-icon-next [ngClass]=\"iconValue.stackedColor\" [icon]=\"iconValue.stacked\" />\n </span>\n <div class=\"d-flex flex-grow-1 flex-wrap mt-1\">\n @if (heading()) {\n <strong class=\"pe-2\">{{ heading() | translate: translationParams() }}: </strong>\n }\n <span>{{ message() | translate: translationParams() }}</span>\n </div>\n @if (action() && action()?.title) {\n <a class=\"alert-link ms-4 flex-shrink-0 mt-1\" [siLink]=\"action()\">\n {{ action()?.title | translate: translationParams() }}\n </a>\n }\n</div>\n", styles: [":host{display:block;overflow:hidden;flex-shrink:0;border-radius:var(--element-button-radius)}.alert :is(div,a){padding-block-start:1px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }, { kind: "ngmodule", type: SiTranslateModule }, { kind: "pipe", type: i1.SiTranslatePipe, name: "translate" }] });
49
+ }
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiInlineNotificationComponent, decorators: [{
51
+ type: Component,
52
+ args: [{ selector: 'si-inline-notification', imports: [NgClass, SiLinkDirective, SiIconNextComponent, SiTranslateModule], template: "<div\n class=\"alert d-flex align-items-start\"\n role=\"alert\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n [ngClass]=\"'alert-' + severity()\"\n [hidden]=\"!severity()\"\n>\n @let iconValue = icon();\n <span class=\"icon icon-stack me-4 flex-shrink-0\">\n <si-icon-next [ngClass]=\"iconValue.color\" [icon]=\"iconValue.icon\" />\n <si-icon-next [ngClass]=\"iconValue.stackedColor\" [icon]=\"iconValue.stacked\" />\n </span>\n <div class=\"d-flex flex-grow-1 flex-wrap mt-1\">\n @if (heading()) {\n <strong class=\"pe-2\">{{ heading() | translate: translationParams() }}: </strong>\n }\n <span>{{ message() | translate: translationParams() }}</span>\n </div>\n @if (action() && action()?.title) {\n <a class=\"alert-link ms-4 flex-shrink-0 mt-1\" [siLink]=\"action()\">\n {{ action()?.title | translate: translationParams() }}\n </a>\n }\n</div>\n", styles: [":host{display:block;overflow:hidden;flex-shrink:0;border-radius:var(--element-button-radius)}.alert :is(div,a){padding-block-start:1px}\n"] }]
53
+ }] });
54
+
55
+ /**
56
+ * Copyright Siemens 2016 - 2025.
57
+ * SPDX-License-Identifier: MIT
58
+ */
59
+ class SiInlineNotificationModule {
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiInlineNotificationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
61
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SiInlineNotificationModule, imports: [SiInlineNotificationComponent], exports: [SiInlineNotificationComponent] });
62
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiInlineNotificationModule, imports: [SiInlineNotificationComponent] });
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiInlineNotificationModule, decorators: [{
65
+ type: NgModule,
66
+ args: [{
67
+ imports: [SiInlineNotificationComponent],
68
+ exports: [SiInlineNotificationComponent]
69
+ }]
70
+ }] });
71
+
72
+ /**
73
+ * Copyright Siemens 2016 - 2025.
74
+ * SPDX-License-Identifier: MIT
75
+ */
76
+
77
+ /**
78
+ * Generated bundle index. Do not edit.
79
+ */
80
+
81
+ export { SiInlineNotificationComponent, SiInlineNotificationModule };
82
+ //# sourceMappingURL=siemens-element-ng-inline-notification.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siemens-element-ng-inline-notification.mjs","sources":["../../../../projects/element-ng/inline-notification/si-inline-notification.component.ts","../../../../projects/element-ng/inline-notification/si-inline-notification.component.html","../../../../projects/element-ng/inline-notification/si-inline-notification.module.ts","../../../../projects/element-ng/inline-notification/index.ts","../../../../projects/element-ng/inline-notification/siemens-element-ng-inline-notification.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport { booleanAttribute, Component, computed, inject, input } from '@angular/core';\nimport { StatusType } from '@siemens/element-ng/common';\nimport { SiIconNextComponent, STATUS_ICON_CONFIG } from '@siemens/element-ng/icon';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\n\n@Component({\n selector: 'si-inline-notification',\n templateUrl: './si-inline-notification.component.html',\n styleUrl: './si-inline-notification.component.scss',\n imports: [NgClass, SiLinkDirective, SiIconNextComponent, SiTranslateModule]\n})\nexport class SiInlineNotificationComponent {\n private readonly statusIcons = inject(STATUS_ICON_CONFIG);\n /**\n * Status of inline notification.\n */\n readonly severity = input.required<StatusType>();\n\n /**\n * Heading of the message.\n */\n readonly heading = input<string>();\n\n /**\n * Main message of this inline notification.\n */\n readonly message = input.required<string>();\n\n /**\n * Optional link action for inline notification events.\n */\n readonly action = input<Link>();\n\n /**\n * Params passed to the translation pipe\n *\n * @defaultValue\n * ```\n * {}\n * ```\n */\n readonly translationParams = input<{ [key: string]: any } | undefined>({});\n\n /**\n * Displays in embedded style, w/o radius and indicator bar\n *\n * @defaultValue false\n */\n readonly embedded = input(false, { transform: booleanAttribute });\n\n protected readonly icon = computed(\n () => this.statusIcons[this.severity()] ?? this.statusIcons.info\n );\n}\n","<div\n class=\"alert d-flex align-items-start\"\n role=\"alert\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n [ngClass]=\"'alert-' + severity()\"\n [hidden]=\"!severity()\"\n>\n @let iconValue = icon();\n <span class=\"icon icon-stack me-4 flex-shrink-0\">\n <si-icon-next [ngClass]=\"iconValue.color\" [icon]=\"iconValue.icon\" />\n <si-icon-next [ngClass]=\"iconValue.stackedColor\" [icon]=\"iconValue.stacked\" />\n </span>\n <div class=\"d-flex flex-grow-1 flex-wrap mt-1\">\n @if (heading()) {\n <strong class=\"pe-2\">{{ heading() | translate: translationParams() }}: </strong>\n }\n <span>{{ message() | translate: translationParams() }}</span>\n </div>\n @if (action() && action()?.title) {\n <a class=\"alert-link ms-4 flex-shrink-0 mt-1\" [siLink]=\"action()\">\n {{ action()?.title | translate: translationParams() }}\n </a>\n }\n</div>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiInlineNotificationComponent } from './si-inline-notification.component';\n\n@NgModule({\n imports: [SiInlineNotificationComponent],\n exports: [SiInlineNotificationComponent]\n})\nexport class SiInlineNotificationModule {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-inline-notification.component';\nexport * from './si-inline-notification.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,248 @@
1
+ import { NgClass } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { InjectionToken, input, inject, HostBinding, ChangeDetectionStrategy, Component, booleanAttribute, ElementRef, ApplicationRef, computed, Injector, Directive, Injectable, NgModule } from '@angular/core';
4
+ import * as i1 from '@siemens/element-translate-ng/translate';
5
+ import { SiTranslateModule } from '@siemens/element-translate-ng/translate';
6
+ import { trigger, transition, style, animate } from '@angular/animations';
7
+ import { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';
8
+ import { BehaviorSubject, merge, timer, combineLatest } from 'rxjs';
9
+ import { filter, switchMap, map, takeUntil } from 'rxjs/operators';
10
+
11
+ /**
12
+ * Copyright Siemens 2016 - 2025.
13
+ * SPDX-License-Identifier: MIT
14
+ */
15
+ const LOADING_SPINNER_BLOCKING = new InjectionToken('isBlockingSpinner');
16
+ const LOADING_SPINNER_OVERLAY = new InjectionToken('isSpinnerOverlay');
17
+ class SiLoadingSpinnerComponent {
18
+ fadeAnimation = '';
19
+ /**
20
+ * @defaultValue
21
+ * ```
22
+ * inject(LOADING_SPINNER_BLOCKING, { optional: true })
23
+ * ```
24
+ */
25
+ isBlockingSpinner = input(inject(LOADING_SPINNER_BLOCKING, { optional: true }));
26
+ /**
27
+ * @defaultValue
28
+ * ```
29
+ * inject(LOADING_SPINNER_OVERLAY, { optional: true })
30
+ * ```
31
+ */
32
+ isSpinnerOverlay = input(inject(LOADING_SPINNER_OVERLAY, { optional: true }));
33
+ /**
34
+ * Needed for a11y
35
+ *
36
+ * @defaultValue
37
+ * ```
38
+ * $localize`:@@SI_LOADING_SPINNER.LABEL:Loading`
39
+ * ```
40
+ */
41
+ ariaLabel = input($localize `:@@SI_LOADING_SPINNER.LABEL:Loading`);
42
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiLoadingSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
43
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.6", type: SiLoadingSpinnerComponent, isStandalone: true, selector: "si-loading-spinner", inputs: { isBlockingSpinner: { classPropertyName: "isBlockingSpinner", publicName: "isBlockingSpinner", isSignal: true, isRequired: false, transformFunction: null }, isSpinnerOverlay: { classPropertyName: "isSpinnerOverlay", publicName: "isSpinnerOverlay", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "@fadeAnimation": "this.fadeAnimation" } }, ngImport: i0, template: "<div\n class=\"loading\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n [class.blocking-spinner]=\"isBlockingSpinner()\"\n [class.spinner-overlay]=\"isSpinnerOverlay()\"\n>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <title>{{ ariaLabel() | translate }}</title>\n <g>\n <path d=\"M256,156a16,16,0,0,1-16-16V80a16,16,0,0,1,32,0v60A16,16,0,0,1,256,156Z\" />\n <path\n d=\"M314.78,175.1a16,16,0,0,1-3.54-22.35l35.27-48.54A16,16,0,1,1,372.39,123l-35.26,48.54A16,16,0,0,1,314.78,175.1Z\"\n />\n <path\n d=\"M351.11,225.1a16,16,0,0,1,10.27-20.16l57.06-18.54a16,16,0,1,1,9.89,30.43l-57.06,18.54A16,16,0,0,1,351.11,225.1Z\"\n />\n <path\n d=\"M351.11,286.9a16,16,0,0,1,20.16-10.27l57.06,18.54a16,16,0,1,1-9.89,30.43l-57.06-18.54A16,16,0,0,1,351.11,286.9Z\"\n />\n <path\n d=\"M314.78,336.9a16,16,0,0,1,22.35,3.54L372.39,389a16,16,0,1,1-25.88,18.81l-35.27-48.54A16,16,0,0,1,314.78,336.9Z\"\n />\n <path d=\"M256,356a16,16,0,0,1,16,16v60a16,16,0,0,1-32,0V372A16,16,0,0,1,256,356Z\" />\n <path\n d=\"M197.22,336.9a16,16,0,0,1,3.54,22.35l-35.27,48.54A16,16,0,1,1,139.61,389l35.26-48.54A16,16,0,0,1,197.22,336.9Z\"\n />\n <path\n d=\"M160.89,286.9a16,16,0,0,1-10.27,20.16L93.56,325.6a16,16,0,0,1-9.89-30.43l57.06-18.54A16,16,0,0,1,160.89,286.9Z\"\n />\n <path\n d=\"M160.89,225.1a16,16,0,0,1-20.16,10.27L83.67,216.83a16,16,0,1,1,9.89-30.43l57.06,18.54A16,16,0,0,1,160.89,225.1Z\"\n />\n <path\n d=\"M197.22,175.1a16,16,0,0,1-22.35-3.54L139.61,123a16,16,0,1,1,25.88-18.81l35.27,48.54A16,16,0,0,1,197.22,175.1Z\"\n />\n </g>\n </svg>\n</div>\n", styles: ["@keyframes spinner-fade{0%{opacity:1}to{opacity:.05}}.loading{display:block;text-align:center}.blocking-spinner{background:var(--element-base-translucent-1)}.spinner-overlay{position:absolute;inset:0;z-index:1090;display:flex;justify-content:center;align-items:center}svg{inline-size:var(--loading-spinner-size, 64px);block-size:var(--loading-spinner-size, 64px)}path{fill:var(--loading-spinner-color, var(--element-ui-2));animation:spinner-fade calc(1s * var(--element-animations-enabled, 1)) infinite linear}path:nth-child(1){animation-delay:0s;opacity:1}path:nth-child(2){animation-delay:.1s;opacity:.9}path:nth-child(3){animation-delay:.2s;opacity:.8}path:nth-child(4){animation-delay:.3s;opacity:.7}path:nth-child(5){animation-delay:.4s;opacity:.6}path:nth-child(6){animation-delay:.5s;opacity:.5}path:nth-child(7){animation-delay:.6s;opacity:.4}path:nth-child(8){animation-delay:.7s;opacity:.3}path:nth-child(9){animation-delay:.8s;opacity:.2}path:nth-child(10){animation-delay:.9s;opacity:.1}\n"], dependencies: [{ kind: "ngmodule", type: SiTranslateModule }, { kind: "pipe", type: i1.SiTranslatePipe, name: "translate" }], animations: [
44
+ trigger('fadeAnimation', [
45
+ transition(':enter', [style({ opacity: 0 }), animate('200ms ease-in')]),
46
+ transition(':leave', animate('200ms ease-out', style({ opacity: 0 })))
47
+ ])
48
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
49
+ }
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiLoadingSpinnerComponent, decorators: [{
51
+ type: Component,
52
+ args: [{ selector: 'si-loading-spinner', changeDetection: ChangeDetectionStrategy.OnPush, animations: [
53
+ trigger('fadeAnimation', [
54
+ transition(':enter', [style({ opacity: 0 }), animate('200ms ease-in')]),
55
+ transition(':leave', animate('200ms ease-out', style({ opacity: 0 })))
56
+ ])
57
+ ], imports: [SiTranslateModule], template: "<div\n class=\"loading\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n [class.blocking-spinner]=\"isBlockingSpinner()\"\n [class.spinner-overlay]=\"isSpinnerOverlay()\"\n>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <title>{{ ariaLabel() | translate }}</title>\n <g>\n <path d=\"M256,156a16,16,0,0,1-16-16V80a16,16,0,0,1,32,0v60A16,16,0,0,1,256,156Z\" />\n <path\n d=\"M314.78,175.1a16,16,0,0,1-3.54-22.35l35.27-48.54A16,16,0,1,1,372.39,123l-35.26,48.54A16,16,0,0,1,314.78,175.1Z\"\n />\n <path\n d=\"M351.11,225.1a16,16,0,0,1,10.27-20.16l57.06-18.54a16,16,0,1,1,9.89,30.43l-57.06,18.54A16,16,0,0,1,351.11,225.1Z\"\n />\n <path\n d=\"M351.11,286.9a16,16,0,0,1,20.16-10.27l57.06,18.54a16,16,0,1,1-9.89,30.43l-57.06-18.54A16,16,0,0,1,351.11,286.9Z\"\n />\n <path\n d=\"M314.78,336.9a16,16,0,0,1,22.35,3.54L372.39,389a16,16,0,1,1-25.88,18.81l-35.27-48.54A16,16,0,0,1,314.78,336.9Z\"\n />\n <path d=\"M256,356a16,16,0,0,1,16,16v60a16,16,0,0,1-32,0V372A16,16,0,0,1,256,356Z\" />\n <path\n d=\"M197.22,336.9a16,16,0,0,1,3.54,22.35l-35.27,48.54A16,16,0,1,1,139.61,389l35.26-48.54A16,16,0,0,1,197.22,336.9Z\"\n />\n <path\n d=\"M160.89,286.9a16,16,0,0,1-10.27,20.16L93.56,325.6a16,16,0,0,1-9.89-30.43l57.06-18.54A16,16,0,0,1,160.89,286.9Z\"\n />\n <path\n d=\"M160.89,225.1a16,16,0,0,1-20.16,10.27L83.67,216.83a16,16,0,1,1,9.89-30.43l57.06,18.54A16,16,0,0,1,160.89,225.1Z\"\n />\n <path\n d=\"M197.22,175.1a16,16,0,0,1-22.35-3.54L139.61,123a16,16,0,1,1,25.88-18.81l35.27,48.54A16,16,0,0,1,197.22,175.1Z\"\n />\n </g>\n </svg>\n</div>\n", styles: ["@keyframes spinner-fade{0%{opacity:1}to{opacity:.05}}.loading{display:block;text-align:center}.blocking-spinner{background:var(--element-base-translucent-1)}.spinner-overlay{position:absolute;inset:0;z-index:1090;display:flex;justify-content:center;align-items:center}svg{inline-size:var(--loading-spinner-size, 64px);block-size:var(--loading-spinner-size, 64px)}path{fill:var(--loading-spinner-color, var(--element-ui-2));animation:spinner-fade calc(1s * var(--element-animations-enabled, 1)) infinite linear}path:nth-child(1){animation-delay:0s;opacity:1}path:nth-child(2){animation-delay:.1s;opacity:.9}path:nth-child(3){animation-delay:.2s;opacity:.8}path:nth-child(4){animation-delay:.3s;opacity:.7}path:nth-child(5){animation-delay:.4s;opacity:.6}path:nth-child(6){animation-delay:.5s;opacity:.5}path:nth-child(7){animation-delay:.6s;opacity:.4}path:nth-child(8){animation-delay:.7s;opacity:.3}path:nth-child(9){animation-delay:.8s;opacity:.2}path:nth-child(10){animation-delay:.9s;opacity:.1}\n"] }]
58
+ }], propDecorators: { fadeAnimation: [{
59
+ type: HostBinding,
60
+ args: ['@fadeAnimation']
61
+ }] } });
62
+
63
+ /**
64
+ * Copyright Siemens 2016 - 2025.
65
+ * SPDX-License-Identifier: MIT
66
+ */
67
+ class SiLoadingButtonComponent {
68
+ /**
69
+ * Whether the button is disabled.
70
+ * @defaultValue false
71
+ */
72
+ disabled = input(false, { transform: booleanAttribute });
73
+ /**
74
+ * Whether the loading state should be displayed.
75
+ * @defaultValue false
76
+ */
77
+ loading = input(false, { transform: booleanAttribute });
78
+ /**
79
+ * Type of the button.
80
+ * @defaultValue 'button'
81
+ **/
82
+ type = input('button');
83
+ /** aria-label for the button */
84
+ ariaLabel = input();
85
+ /** aria-labelledby for the button */
86
+ ariaLabelledBy = input();
87
+ /**
88
+ * CSS class for the button.
89
+ * @defaultValue ''
90
+ */
91
+ buttonClass = input('');
92
+ handleClick(event) {
93
+ if (this.disabled() || this.loading()) {
94
+ event.stopPropagation();
95
+ }
96
+ }
97
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiLoadingButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
98
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiLoadingButtonComponent, isStandalone: true, selector: "si-loading-button", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: true, isRequired: false, transformFunction: null }, buttonClass: { classPropertyName: "buttonClass", publicName: "buttonClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.pe-none": "disabled()" } }, ngImport: i0, template: "<button\n [type]=\"type()\"\n [ngClass]=\"buttonClass()\"\n [class.loading]=\"loading()\"\n [class.disabled]=\"loading()\"\n [disabled]=\"disabled()\"\n [attr.aria-disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"ariaLabel() | translate\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.tabindex]=\"loading() ? '-1' : null\"\n (click)=\"handleClick($event)\"\n>\n <div class=\"button-wrapper\">\n <ng-content />\n </div>\n</button>\n@if (loading()) {\n <div class=\"spinner-wrapper\" (click)=\"$event.stopPropagation()\">\n <si-loading-spinner />\n </div>\n}\n", styles: [":host{position:relative;display:inline-flex;align-items:center;justify-content:center}button{inline-size:100%}button.loading .button-wrapper,button.loading:before{opacity:0}.button-wrapper,.spinner-wrapper{display:flex;align-items:center;justify-content:center}.spinner-wrapper{--loading-spinner-size: 24px;--loading-spinner-color: var(--element-ui-6);position:absolute;inset:0}:is(.btn-secondary,.btn-tertiary)+.spinner-wrapper{--loading-spinner-color: var(--element-action-secondary-text)}.btn-danger+.spinner-wrapper{--loading-spinner-color: var(--element-action-danger-text)}.btn-warning+.spinner-wrapper{--loading-spinner-color: var(--element-action-warning-text)}.btn-ghost+.spinner-wrapper{--loading-spinner-color: var(--element-ui-2)}:is(.btn-secondary-warning,.btn-tertiary-warning)+.spinner-wrapper{--loading-spinner-color: var(--element-action-secondary-warning)}:is(.btn-secondary-danger,.btn-tertiary-danger)+.spinner-wrapper{--loading-spinner-color: var(--element-action-secondary-danger)}\n"], dependencies: [{ kind: "component", type: SiLoadingSpinnerComponent, selector: "si-loading-spinner", inputs: ["isBlockingSpinner", "isSpinnerOverlay", "ariaLabel"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: SiTranslateModule }, { kind: "pipe", type: i1.SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
99
+ }
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiLoadingButtonComponent, decorators: [{
101
+ type: Component,
102
+ args: [{ selector: 'si-loading-button', imports: [SiLoadingSpinnerComponent, NgClass, SiTranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, host: {
103
+ '[class.pe-none]': 'disabled()'
104
+ }, template: "<button\n [type]=\"type()\"\n [ngClass]=\"buttonClass()\"\n [class.loading]=\"loading()\"\n [class.disabled]=\"loading()\"\n [disabled]=\"disabled()\"\n [attr.aria-disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"ariaLabel() | translate\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.tabindex]=\"loading() ? '-1' : null\"\n (click)=\"handleClick($event)\"\n>\n <div class=\"button-wrapper\">\n <ng-content />\n </div>\n</button>\n@if (loading()) {\n <div class=\"spinner-wrapper\" (click)=\"$event.stopPropagation()\">\n <si-loading-spinner />\n </div>\n}\n", styles: [":host{position:relative;display:inline-flex;align-items:center;justify-content:center}button{inline-size:100%}button.loading .button-wrapper,button.loading:before{opacity:0}.button-wrapper,.spinner-wrapper{display:flex;align-items:center;justify-content:center}.spinner-wrapper{--loading-spinner-size: 24px;--loading-spinner-color: var(--element-ui-6);position:absolute;inset:0}:is(.btn-secondary,.btn-tertiary)+.spinner-wrapper{--loading-spinner-color: var(--element-action-secondary-text)}.btn-danger+.spinner-wrapper{--loading-spinner-color: var(--element-action-danger-text)}.btn-warning+.spinner-wrapper{--loading-spinner-color: var(--element-action-warning-text)}.btn-ghost+.spinner-wrapper{--loading-spinner-color: var(--element-ui-2)}:is(.btn-secondary-warning,.btn-tertiary-warning)+.spinner-wrapper{--loading-spinner-color: var(--element-action-secondary-warning)}:is(.btn-secondary-danger,.btn-tertiary-danger)+.spinner-wrapper{--loading-spinner-color: var(--element-action-secondary-danger)}\n"] }]
105
+ }] });
106
+
107
+ /**
108
+ * Copyright Siemens 2016 - 2025.
109
+ * SPDX-License-Identifier: MIT
110
+ */
111
+ class SiLoadingSpinnerDirective {
112
+ /**
113
+ * Displays the loading spinner when the value is either true or non-zero.
114
+ */
115
+ siLoading = input.required();
116
+ /**
117
+ * Displays semi-transparent backdrop for the spinner, default is false.
118
+ *
119
+ * @defaultValue false
120
+ */
121
+ blocking = input(false, { transform: booleanAttribute });
122
+ /**
123
+ * Specifies if the spinner should be displayed after a delay, default is true.
124
+ *
125
+ * @defaultValue true
126
+ */
127
+ initialDelay = input(true, { transform: booleanAttribute });
128
+ el = inject(ElementRef);
129
+ appRef = inject(ApplicationRef);
130
+ sub;
131
+ progressSubject = new BehaviorSubject(false);
132
+ off$ = this.progressSubject.pipe(filter(val => !val));
133
+ on$ = this.progressSubject.pipe(filter(val => val));
134
+ initialWaitTime = computed(() => (this.initialDelay() ? 500 : 0));
135
+ minSpinTime = 500;
136
+ compPortal = new ComponentPortal(SiLoadingSpinnerComponent);
137
+ // this makes sure the spinner only displays with a delay of 500ms and stays for 500ms so
138
+ // that it doesn't flicker
139
+ spinner$ = this.on$.pipe(switchMap(() => merge(timer(this.initialWaitTime()).pipe(map(() => true), takeUntil(this.off$)), combineLatest([this.off$, timer(this.initialWaitTime() + this.minSpinTime)]).pipe(map(() => false)))));
140
+ createPortal() {
141
+ const providers = [
142
+ { provide: LOADING_SPINNER_BLOCKING, useValue: this.blocking() },
143
+ {
144
+ provide: LOADING_SPINNER_OVERLAY,
145
+ useValue: true
146
+ }
147
+ ];
148
+ const outlet = new DomPortalOutlet(this.el.nativeElement, undefined, this.appRef, Injector.create({ providers }));
149
+ this.compPortal.attach(outlet);
150
+ }
151
+ ngOnInit() {
152
+ this.sub = this.spinner$.subscribe(val => {
153
+ if (val) {
154
+ if (!this.compPortal.isAttached) {
155
+ this.createPortal();
156
+ }
157
+ }
158
+ else if (this.compPortal.isAttached) {
159
+ this.compPortal.detach();
160
+ }
161
+ });
162
+ }
163
+ ngOnChanges() {
164
+ const newState = !!this.siLoading();
165
+ if (newState !== this.progressSubject.value) {
166
+ this.progressSubject.next(newState);
167
+ }
168
+ }
169
+ ngOnDestroy() {
170
+ this.sub?.unsubscribe();
171
+ if (this.compPortal.isAttached) {
172
+ this.compPortal.detach();
173
+ }
174
+ }
175
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiLoadingSpinnerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
176
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: SiLoadingSpinnerDirective, isStandalone: true, selector: "[siLoading]", inputs: { siLoading: { classPropertyName: "siLoading", publicName: "siLoading", isSignal: true, isRequired: true, transformFunction: null }, blocking: { classPropertyName: "blocking", publicName: "blocking", isSignal: true, isRequired: false, transformFunction: null }, initialDelay: { classPropertyName: "initialDelay", publicName: "initialDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "position-relative" }, usesOnChanges: true, ngImport: i0 });
177
+ }
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiLoadingSpinnerDirective, decorators: [{
179
+ type: Directive,
180
+ args: [{
181
+ selector: '[siLoading]',
182
+ host: {
183
+ class: 'position-relative'
184
+ }
185
+ }]
186
+ }] });
187
+
188
+ /**
189
+ * Copyright Siemens 2016 - 2025.
190
+ * SPDX-License-Identifier: MIT
191
+ */
192
+ class SiLoadingService {
193
+ /**
194
+ * Counts the number of loads active, is `0` when all loading is finished (or hasn't started).
195
+ */
196
+ counter = new BehaviorSubject(0);
197
+ /**
198
+ * Start the loading.
199
+ */
200
+ startLoad() {
201
+ this.counter.next(this.counter.value + 1);
202
+ }
203
+ /**
204
+ * Stop the loading.
205
+ */
206
+ stopLoad() {
207
+ if (this.counter.value > 0) {
208
+ this.counter.next(this.counter.value - 1);
209
+ }
210
+ }
211
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiLoadingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
212
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiLoadingService, providedIn: 'root' });
213
+ }
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiLoadingService, decorators: [{
215
+ type: Injectable,
216
+ args: [{
217
+ providedIn: 'root'
218
+ }]
219
+ }] });
220
+
221
+ /**
222
+ * Copyright Siemens 2016 - 2025.
223
+ * SPDX-License-Identifier: MIT
224
+ */
225
+ class SiLoadingSpinnerModule {
226
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiLoadingSpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
227
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SiLoadingSpinnerModule, imports: [SiLoadingSpinnerComponent, SiLoadingSpinnerDirective], exports: [SiLoadingSpinnerComponent, SiLoadingSpinnerDirective] });
228
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiLoadingSpinnerModule, imports: [SiLoadingSpinnerComponent] });
229
+ }
230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiLoadingSpinnerModule, decorators: [{
231
+ type: NgModule,
232
+ args: [{
233
+ imports: [SiLoadingSpinnerComponent, SiLoadingSpinnerDirective],
234
+ exports: [SiLoadingSpinnerComponent, SiLoadingSpinnerDirective]
235
+ }]
236
+ }] });
237
+
238
+ /**
239
+ * Copyright Siemens 2016 - 2025.
240
+ * SPDX-License-Identifier: MIT
241
+ */
242
+
243
+ /**
244
+ * Generated bundle index. Do not edit.
245
+ */
246
+
247
+ export { LOADING_SPINNER_BLOCKING, LOADING_SPINNER_OVERLAY, SiLoadingButtonComponent, SiLoadingService, SiLoadingSpinnerComponent, SiLoadingSpinnerDirective, SiLoadingSpinnerModule };
248
+ //# sourceMappingURL=siemens-element-ng-loading-spinner.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siemens-element-ng-loading-spinner.mjs","sources":["../../../../projects/element-ng/loading-spinner/si-loading-spinner.component.ts","../../../../projects/element-ng/loading-spinner/si-loading-spinner.component.html","../../../../projects/element-ng/loading-spinner/si-loading-button.component.ts","../../../../projects/element-ng/loading-spinner/si-loading-button.component.html","../../../../projects/element-ng/loading-spinner/si-loading-spinner.directive.ts","../../../../projects/element-ng/loading-spinner/si-loading-spinner.service.ts","../../../../projects/element-ng/loading-spinner/si-loading-spinner.module.ts","../../../../projects/element-ng/loading-spinner/index.ts","../../../../projects/element-ng/loading-spinner/siemens-element-ng-loading-spinner.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n inject,\n InjectionToken,\n input\n} from '@angular/core';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\nexport const LOADING_SPINNER_BLOCKING = new InjectionToken<boolean>('isBlockingSpinner');\nexport const LOADING_SPINNER_OVERLAY = new InjectionToken<boolean>('isSpinnerOverlay');\n\n@Component({\n selector: 'si-loading-spinner',\n templateUrl: './si-loading-spinner.component.html',\n styleUrl: './si-loading-spinner.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('fadeAnimation', [\n transition(':enter', [style({ opacity: 0 }), animate('200ms ease-in')]),\n transition(':leave', animate('200ms ease-out', style({ opacity: 0 })))\n ])\n ],\n imports: [SiTranslateModule]\n})\nexport class SiLoadingSpinnerComponent {\n @HostBinding('@fadeAnimation') protected fadeAnimation = '';\n /**\n * @defaultValue\n * ```\n * inject(LOADING_SPINNER_BLOCKING, { optional: true })\n * ```\n */\n readonly isBlockingSpinner = input(inject(LOADING_SPINNER_BLOCKING, { optional: true }));\n /**\n * @defaultValue\n * ```\n * inject(LOADING_SPINNER_OVERLAY, { optional: true })\n * ```\n */\n readonly isSpinnerOverlay = input(inject(LOADING_SPINNER_OVERLAY, { optional: true }));\n /**\n * Needed for a11y\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_LOADING_SPINNER.LABEL:Loading`\n * ```\n */\n readonly ariaLabel = input($localize`:@@SI_LOADING_SPINNER.LABEL:Loading`);\n}\n","<div\n class=\"loading\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n [class.blocking-spinner]=\"isBlockingSpinner()\"\n [class.spinner-overlay]=\"isSpinnerOverlay()\"\n>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <title>{{ ariaLabel() | translate }}</title>\n <g>\n <path d=\"M256,156a16,16,0,0,1-16-16V80a16,16,0,0,1,32,0v60A16,16,0,0,1,256,156Z\" />\n <path\n d=\"M314.78,175.1a16,16,0,0,1-3.54-22.35l35.27-48.54A16,16,0,1,1,372.39,123l-35.26,48.54A16,16,0,0,1,314.78,175.1Z\"\n />\n <path\n d=\"M351.11,225.1a16,16,0,0,1,10.27-20.16l57.06-18.54a16,16,0,1,1,9.89,30.43l-57.06,18.54A16,16,0,0,1,351.11,225.1Z\"\n />\n <path\n d=\"M351.11,286.9a16,16,0,0,1,20.16-10.27l57.06,18.54a16,16,0,1,1-9.89,30.43l-57.06-18.54A16,16,0,0,1,351.11,286.9Z\"\n />\n <path\n d=\"M314.78,336.9a16,16,0,0,1,22.35,3.54L372.39,389a16,16,0,1,1-25.88,18.81l-35.27-48.54A16,16,0,0,1,314.78,336.9Z\"\n />\n <path d=\"M256,356a16,16,0,0,1,16,16v60a16,16,0,0,1-32,0V372A16,16,0,0,1,256,356Z\" />\n <path\n d=\"M197.22,336.9a16,16,0,0,1,3.54,22.35l-35.27,48.54A16,16,0,1,1,139.61,389l35.26-48.54A16,16,0,0,1,197.22,336.9Z\"\n />\n <path\n d=\"M160.89,286.9a16,16,0,0,1-10.27,20.16L93.56,325.6a16,16,0,0,1-9.89-30.43l57.06-18.54A16,16,0,0,1,160.89,286.9Z\"\n />\n <path\n d=\"M160.89,225.1a16,16,0,0,1-20.16,10.27L83.67,216.83a16,16,0,1,1,9.89-30.43l57.06,18.54A16,16,0,0,1,160.89,225.1Z\"\n />\n <path\n d=\"M197.22,175.1a16,16,0,0,1-22.35-3.54L139.61,123a16,16,0,1,1,25.88-18.81l35.27,48.54A16,16,0,0,1,197.22,175.1Z\"\n />\n </g>\n </svg>\n</div>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { SiTranslateModule, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiLoadingSpinnerComponent } from './si-loading-spinner.component';\n\n@Component({\n selector: 'si-loading-button',\n templateUrl: './si-loading-button.component.html',\n styleUrl: './si-loading-button.component.scss',\n imports: [SiLoadingSpinnerComponent, NgClass, SiTranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.pe-none]': 'disabled()'\n }\n})\nexport class SiLoadingButtonComponent {\n /**\n * Whether the button is disabled.\n * @defaultValue false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * Whether the loading state should be displayed.\n * @defaultValue false\n */\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * Type of the button.\n * @defaultValue 'button'\n **/\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n /** aria-label for the button */\n readonly ariaLabel = input<TranslatableString>();\n /** aria-labelledby for the button */\n readonly ariaLabelledBy = input<string>();\n /**\n * CSS class for the button.\n * @defaultValue ''\n */\n readonly buttonClass = input('');\n\n protected handleClick(event: Event): void {\n if (this.disabled() || this.loading()) {\n event.stopPropagation();\n }\n }\n}\n","<button\n [type]=\"type()\"\n [ngClass]=\"buttonClass()\"\n [class.loading]=\"loading()\"\n [class.disabled]=\"loading()\"\n [disabled]=\"disabled()\"\n [attr.aria-disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"ariaLabel() | translate\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.tabindex]=\"loading() ? '-1' : null\"\n (click)=\"handleClick($event)\"\n>\n <div class=\"button-wrapper\">\n <ng-content />\n </div>\n</button>\n@if (loading()) {\n <div class=\"spinner-wrapper\" (click)=\"$event.stopPropagation()\">\n <si-loading-spinner />\n </div>\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport {\n ApplicationRef,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n Injector,\n input,\n OnChanges,\n OnDestroy,\n OnInit,\n StaticProvider\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, merge, Subscription, timer } from 'rxjs';\nimport { filter, map, switchMap, takeUntil } from 'rxjs/operators';\n\nimport {\n LOADING_SPINNER_BLOCKING,\n LOADING_SPINNER_OVERLAY,\n SiLoadingSpinnerComponent\n} from './si-loading-spinner.component';\n@Directive({\n selector: '[siLoading]',\n host: {\n class: 'position-relative'\n }\n})\nexport class SiLoadingSpinnerDirective implements OnInit, OnChanges, OnDestroy {\n /**\n * Displays the loading spinner when the value is either true or non-zero.\n */\n readonly siLoading = input.required<boolean | number>();\n\n /**\n * Displays semi-transparent backdrop for the spinner, default is false.\n *\n * @defaultValue false\n */\n readonly blocking = input(false, { transform: booleanAttribute });\n\n /**\n * Specifies if the spinner should be displayed after a delay, default is true.\n *\n * @defaultValue true\n */\n readonly initialDelay = input(true, { transform: booleanAttribute });\n\n private el = inject(ElementRef);\n private appRef = inject(ApplicationRef);\n\n private sub?: Subscription;\n private progressSubject = new BehaviorSubject(false);\n private off$ = this.progressSubject.pipe(filter(val => !val));\n private on$ = this.progressSubject.pipe(filter(val => val));\n private readonly initialWaitTime = computed(() => (this.initialDelay() ? 500 : 0));\n private minSpinTime = 500;\n private compPortal = new ComponentPortal(SiLoadingSpinnerComponent);\n\n // this makes sure the spinner only displays with a delay of 500ms and stays for 500ms so\n // that it doesn't flicker\n protected readonly spinner$ = this.on$.pipe(\n switchMap(() =>\n merge(\n timer(this.initialWaitTime()).pipe(\n map(() => true),\n takeUntil(this.off$)\n ),\n combineLatest([this.off$, timer(this.initialWaitTime() + this.minSpinTime)]).pipe(\n map(() => false)\n )\n )\n )\n );\n\n private createPortal(): void {\n const providers: StaticProvider[] = [\n { provide: LOADING_SPINNER_BLOCKING, useValue: this.blocking() },\n {\n provide: LOADING_SPINNER_OVERLAY,\n useValue: true\n }\n ];\n const outlet = new DomPortalOutlet(\n this.el.nativeElement,\n undefined,\n this.appRef,\n Injector.create({ providers })\n );\n this.compPortal.attach(outlet);\n }\n\n ngOnInit(): void {\n this.sub = this.spinner$.subscribe(val => {\n if (val) {\n if (!this.compPortal.isAttached) {\n this.createPortal();\n }\n } else if (this.compPortal.isAttached) {\n this.compPortal.detach();\n }\n });\n }\n\n ngOnChanges(): void {\n const newState = !!this.siLoading();\n if (newState !== this.progressSubject.value) {\n this.progressSubject.next(newState);\n }\n }\n\n ngOnDestroy(): void {\n this.sub?.unsubscribe();\n if (this.compPortal.isAttached) {\n this.compPortal.detach();\n }\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SiLoadingService {\n /**\n * Counts the number of loads active, is `0` when all loading is finished (or hasn't started).\n */\n readonly counter: BehaviorSubject<number> = new BehaviorSubject<number>(0);\n\n /**\n * Start the loading.\n */\n startLoad(): void {\n this.counter.next(this.counter.value + 1);\n }\n\n /**\n * Stop the loading.\n */\n stopLoad(): void {\n if (this.counter.value > 0) {\n this.counter.next(this.counter.value - 1);\n }\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiLoadingSpinnerComponent } from './si-loading-spinner.component';\nimport { SiLoadingSpinnerDirective } from './si-loading-spinner.directive';\n\n@NgModule({\n imports: [SiLoadingSpinnerComponent, SiLoadingSpinnerDirective],\n exports: [SiLoadingSpinnerComponent, SiLoadingSpinnerDirective]\n})\nexport class SiLoadingSpinnerModule {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-loading-button.component';\nexport * from './si-loading-spinner.component';\nexport * from './si-loading-spinner.directive';\nexport * from './si-loading-spinner.service';\nexport * from './si-loading-spinner.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}