@siemens/element-ng 49.11.0 → 49.12.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.
- package/carousel/package.json +4 -0
- package/fesm2022/siemens-element-ng-ag-grid.mjs +6 -5
- package/fesm2022/siemens-element-ng-ag-grid.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-application-header.mjs +17 -20
- package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs +3 -3
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb.mjs +3 -3
- package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-card.mjs +2 -2
- package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-carousel.mjs +541 -0
- package/fesm2022/siemens-element-ng-carousel.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-chat-messages.mjs +18 -21
- package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-content-action-bar.mjs +2 -2
- package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-dashboard.mjs +34 -35
- package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-date-range-filter.mjs +10 -8
- package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datepicker.mjs +10 -9
- package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-electron-titlebar.mjs +3 -3
- package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-empty-state.mjs +2 -2
- package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-file-uploader.mjs +49 -47
- package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filter-bar.mjs +5 -5
- package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +6 -5
- package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-footer.mjs +3 -3
- package/fesm2022/siemens-element-ng-footer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-form.mjs +5 -4
- package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-formly.mjs +24 -23
- package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-header-dropdown.mjs +26 -17
- package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-help-button.mjs +3 -3
- package/fesm2022/siemens-element-ng-help-button.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-inline-notification.mjs +3 -3
- package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-language-switcher.mjs +3 -3
- package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-renderer.mjs +4 -3
- package/fesm2022/siemens-element-ng-markdown-renderer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-menu.mjs +2 -2
- package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +8 -7
- package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs +13 -12
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar.mjs +6 -8
- package/fesm2022/siemens-element-ng-navbar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-notification-item.mjs +3 -3
- package/fesm2022/siemens-element-ng-notification-item.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-pagination.mjs +4 -1
- package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-password-toggle.mjs +3 -3
- package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-pills-input.mjs +4 -4
- package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover-legacy.mjs +3 -3
- package/fesm2022/siemens-element-ng-popover-legacy.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover.mjs +3 -3
- package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-result-details-list.mjs +3 -3
- package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-side-panel.mjs +5 -5
- package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-sort-bar.mjs +3 -3
- package/fesm2022/siemens-element-ng-sort-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-split.mjs +3 -3
- package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-bar.mjs +3 -3
- package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-threshold.mjs +5 -5
- package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-toast-notification.mjs +3 -3
- package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tooltip.mjs +3 -3
- package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tree-view.mjs +5 -5
- package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
- package/package.json +12 -8
- package/template-i18n.json +7 -0
- package/types/siemens-element-ng-application-header.d.ts +3 -4
- package/types/siemens-element-ng-carousel.d.ts +209 -0
- package/types/siemens-element-ng-chat-messages.d.ts +1 -2
- package/types/siemens-element-ng-dashboard.d.ts +4 -4
- package/types/siemens-element-ng-date-range-filter.d.ts +1 -1
- package/types/siemens-element-ng-file-uploader.d.ts +6 -8
- package/types/siemens-element-ng-header-dropdown.d.ts +3 -3
- package/types/siemens-element-ng-navbar.d.ts +1 -2
- package/types/siemens-element-ng-translate.d.ts +7 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, signal, computed, inject, ElementRef, booleanAttribute, numberAttribute, Input, Output, Component, NgZone, ChangeDetectorRef, DOCUMENT, ContentChildren,
|
|
2
|
+
import { EventEmitter, signal, computed, inject, ElementRef, booleanAttribute, numberAttribute, Input, Output, ChangeDetectionStrategy, Component, NgZone, ChangeDetectorRef, DOCUMENT, ContentChildren, NgModule } from '@angular/core';
|
|
3
3
|
import { NgTemplateOutlet } from '@angular/common';
|
|
4
4
|
import { SiIconComponent } from '@siemens/element-ng/icon';
|
|
5
5
|
import { SiTranslatePipe } from '@siemens/element-translate-ng/translate';
|
|
@@ -201,11 +201,11 @@ class SiSplitPartComponent {
|
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
203
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiSplitPartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
204
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiSplitPartComponent, isStandalone: true, selector: "si-split-part", inputs: { actions: "actions", collapseDirection: "collapseDirection", collapseIconClass: "collapseIconClass", collapseToMinSize: ["collapseToMinSize", "collapseToMinSize", booleanAttribute], headerTemplate: "headerTemplate", heading: "heading", minSize: ["minSize", "minSize", numberAttribute], removeContentOnCollapse: ["removeContentOnCollapse", "removeContentOnCollapse", booleanAttribute], scale: "scale", showCollapseButton: ["showCollapseButton", "showCollapseButton", booleanAttribute], showHeader: ["showHeader", "showHeader", booleanAttribute], collapseLabel: "collapseLabel", stateId: "stateId", size: ["size", "size", numberAttribute], collapseOthers: ["collapseOthers", "collapseOthers", booleanAttribute], expanded: ["expanded", "expanded", booleanAttribute] }, outputs: { collapseChanged: "collapseChanged", stateChange: "stateChange" }, host: { properties: { "class.is-collapsed": "collapsedState()", "class.collapse-start": "collapseDirection === \"start\"", "style.grid-area": "\"p-\" + this.index" } }, usesOnChanges: true, ngImport: i0, template: "@if (!headerTemplate && showHeader) {\n <div class=\"si-split-part-header\" [class.is-collapsed]=\"collapsedState()\">\n <div class=\"si-split-part-title text-truncate\">\n {{ heading | translate }}\n </div>\n @if (!collapsedState()) {\n <div class=\"si-split-part-actions\">\n @for (action of actions; track $index) {\n <button\n type=\"button\"\n class=\"si-split-button\"\n [title]=\"action.tooltip || ''\"\n [attr.aria-label]=\"action.tooltip\"\n (click)=\"action.click($event)\"\n >\n <si-icon [icon]=\"action.iconClass\" />\n </button>\n }\n </div>\n }\n @if (showCollapseButton) {\n <div class=\"si-split-part-collapse-button\">\n <button\n type=\"button\"\n class=\"si-split-button\"\n [attr.aria-label]=\"collapseLabel | translate\"\n (click)=\"toggleCollapse()\"\n >\n <si-icon class=\"collapse-icon\" [icon]=\"collapseIconClass\" />\n </button>\n </div>\n }\n </div>\n}\n\n@if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: headerContext\" />\n}\n\n<div\n class=\"si-split-part-content\"\n [class.d-none]=\"!removeContentOnCollapse && collapsedState() && !collapseToMinSize\"\n>\n @if (!removeContentOnCollapse || !collapsedState()) {\n <ng-content />\n }\n</div>\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden}.si-split-part-content{flex:1 1 auto;display:flex;overflow:hidden;flex-direction:column}.si-split-part-header{display:flex;flex-direction:row;flex:none;align-items:center;padding:6px;background:var(--element-base-0);block-size:40px}:host-context(.horizontal)>:host(.is-collapsed) .si-split-part-header{flex:auto;flex-direction:column;max-block-size:100%;padding:6px}:host-context(.horizontal)>:host(.is-collapsed) .si-split-part-header .si-split-part-title{inline-size:100%;writing-mode:vertical-rl;transform:rotate(180deg)}:host-context(.horizontal)>:host(.is-collapsed) .si-split-part-header .si-split-part-collapse-button{order:-1}.si-split-part-title{font-weight:600;flex:1}.si-split-part-actions{padding-inline:8px;flex:0 0 auto}.si-split-button{display:inline-block;padding:4px;color:var(--element-text-primary);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none;font-size:20px;line-height:1;vertical-align:middle;-webkit-user-select:none;user-select:none;background:none;border:0;cursor:pointer}.si-split-button:hover{background:var(--element-action-secondary-hover)}:host-context(.vertical)>:host .si-split-button{--orientation-rotate: rotate(90deg)}[dir=rtl] :host-context(.horizontal)>:host .si-split-button{--orientation-rtl: scaleX(-1)}:dir(rtl) :host-context(.horizontal)>:host .si-split-button{--orientation-rtl: scaleX(-1)}:host(.is-collapsed) .si-split-button{--collapse-rotate: rotate(180deg)}:host(.collapse-start) .si-split-button{--collapse-direction: rotate(180deg)}.si-split-button .collapse-icon{transform:var(--orientation-rotate, rotate(0)) var(--collapse-rotate, rotate(0)) var(--collapse-direction, rotate(0)) var(--orientation-rtl, scaleX(1))}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
|
|
204
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiSplitPartComponent, isStandalone: true, selector: "si-split-part", inputs: { actions: "actions", collapseDirection: "collapseDirection", collapseIconClass: "collapseIconClass", collapseToMinSize: ["collapseToMinSize", "collapseToMinSize", booleanAttribute], headerTemplate: "headerTemplate", heading: "heading", minSize: ["minSize", "minSize", numberAttribute], removeContentOnCollapse: ["removeContentOnCollapse", "removeContentOnCollapse", booleanAttribute], scale: "scale", showCollapseButton: ["showCollapseButton", "showCollapseButton", booleanAttribute], showHeader: ["showHeader", "showHeader", booleanAttribute], collapseLabel: "collapseLabel", stateId: "stateId", size: ["size", "size", numberAttribute], collapseOthers: ["collapseOthers", "collapseOthers", booleanAttribute], expanded: ["expanded", "expanded", booleanAttribute] }, outputs: { collapseChanged: "collapseChanged", stateChange: "stateChange" }, host: { properties: { "class.is-collapsed": "collapsedState()", "class.collapse-start": "collapseDirection === \"start\"", "style.grid-area": "\"p-\" + this.index" } }, usesOnChanges: true, ngImport: i0, template: "@if (!headerTemplate && showHeader) {\n <div class=\"si-split-part-header\" [class.is-collapsed]=\"collapsedState()\">\n <div class=\"si-split-part-title text-truncate\">\n {{ heading | translate }}\n </div>\n @if (!collapsedState()) {\n <div class=\"si-split-part-actions\">\n @for (action of actions; track $index) {\n <button\n type=\"button\"\n class=\"si-split-button\"\n [title]=\"action.tooltip || ''\"\n [attr.aria-label]=\"action.tooltip\"\n (click)=\"action.click($event)\"\n >\n <si-icon [icon]=\"action.iconClass\" />\n </button>\n }\n </div>\n }\n @if (showCollapseButton) {\n <div class=\"si-split-part-collapse-button\">\n <button\n type=\"button\"\n class=\"si-split-button\"\n [attr.aria-label]=\"collapseLabel | translate\"\n (click)=\"toggleCollapse()\"\n >\n <si-icon class=\"collapse-icon\" [icon]=\"collapseIconClass\" />\n </button>\n </div>\n }\n </div>\n}\n\n@if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: headerContext\" />\n}\n\n<div\n class=\"si-split-part-content\"\n [class.d-none]=\"!removeContentOnCollapse && collapsedState() && !collapseToMinSize\"\n>\n @if (!removeContentOnCollapse || !collapsedState()) {\n <ng-content />\n }\n</div>\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden}.si-split-part-content{flex:1 1 auto;display:flex;overflow:hidden;flex-direction:column}.si-split-part-header{display:flex;flex-direction:row;flex:none;align-items:center;padding:6px;background:var(--element-base-0);block-size:40px}:host-context(.horizontal)>:host(.is-collapsed) .si-split-part-header{flex:auto;flex-direction:column;max-block-size:100%;padding:6px}:host-context(.horizontal)>:host(.is-collapsed) .si-split-part-header .si-split-part-title{inline-size:100%;writing-mode:vertical-rl;transform:rotate(180deg)}:host-context(.horizontal)>:host(.is-collapsed) .si-split-part-header .si-split-part-collapse-button{order:-1}.si-split-part-title{font-weight:600;flex:1}.si-split-part-actions{padding-inline:8px;flex:0 0 auto}.si-split-button{display:inline-block;padding:4px;color:var(--element-text-primary);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none;font-size:20px;line-height:1;vertical-align:middle;-webkit-user-select:none;user-select:none;background:none;border:0;cursor:pointer}.si-split-button:hover{background:var(--element-action-secondary-hover)}:host-context(.vertical)>:host .si-split-button{--orientation-rotate: rotate(90deg)}[dir=rtl] :host-context(.horizontal)>:host .si-split-button{--orientation-rtl: scaleX(-1)}:dir(rtl) :host-context(.horizontal)>:host .si-split-button{--orientation-rtl: scaleX(-1)}:host(.is-collapsed) .si-split-button{--collapse-rotate: rotate(180deg)}:host(.collapse-start) .si-split-button{--collapse-direction: rotate(180deg)}.si-split-button .collapse-icon{transform:var(--orientation-rotate, rotate(0)) var(--collapse-rotate, rotate(0)) var(--collapse-direction, rotate(0)) var(--orientation-rtl, scaleX(1))}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
205
205
|
}
|
|
206
206
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiSplitPartComponent, decorators: [{
|
|
207
207
|
type: Component,
|
|
208
|
-
args: [{ selector: 'si-split-part', imports: [NgTemplateOutlet, SiIconComponent, SiTranslatePipe], host: {
|
|
208
|
+
args: [{ selector: 'si-split-part', imports: [NgTemplateOutlet, SiIconComponent, SiTranslatePipe], changeDetection: ChangeDetectionStrategy.Default, host: {
|
|
209
209
|
'[class.is-collapsed]': 'collapsedState()',
|
|
210
210
|
'[class.collapse-start]': 'collapseDirection === "start"',
|
|
211
211
|
'[style.grid-area]': '"p-" + this.index'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-split.mjs","sources":["../../../../projects/element-ng/split/si-split-part.component.ts","../../../../projects/element-ng/split/si-split-part.component.html","../../../../projects/element-ng/split/si-split.component.ts","../../../../projects/element-ng/split/si-split.component.html","../../../../projects/element-ng/split/si-split.module.ts","../../../../projects/element-ng/split/index.ts","../../../../projects/element-ng/split/siemens-element-ng-split.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n/* eslint-disable @angular-eslint/prefer-output-emitter-ref */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n Output,\n signal,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { Action, CollapseTo, PartState, Scale, SplitOrientation } from './si-split.interfaces';\n\n@Component({\n selector: 'si-split-part',\n imports: [NgTemplateOutlet, SiIconComponent, SiTranslatePipe],\n templateUrl: './si-split-part.component.html',\n styleUrl: './si-split-part.component.scss',\n // Signals cannot be used directly with @HostBinding. See: https://github.com/angular/angular/issues/53888#issuecomment-1888935225\n // Having every binding here for consistency.\n host: {\n '[class.is-collapsed]': 'collapsedState()',\n '[class.collapse-start]': 'collapseDirection === \"start\"',\n '[style.grid-area]': '\"p-\" + this.index'\n }\n})\nexport class SiSplitPartComponent implements OnChanges {\n /** @defaultValue [] */\n @Input() actions: Action[] = [];\n /**\n * @defaultValue 'start'\n */\n @Input() collapseDirection: CollapseTo = 'start';\n\n /**\n * Sets the icon class that is used in the buttons of split parts to\n * collapse and uncollapse the parts.\n *\n * @defaultValue 'element-double-right'\n */\n @Input() collapseIconClass = 'element-double-right';\n\n /**\n * Collapse only to the given min size.\n *\n * @defaultValue false\n */\n @Input({ transform: booleanAttribute }) collapseToMinSize = false;\n\n @Input() headerTemplate?: TemplateRef<any>;\n\n /**\n * Sets the title of the split part header.\n */\n @Input() heading!: TranslatableString;\n\n /**\n * Minimum size in px.\n *\n * @defaultValue 0\n */\n @Input({ transform: numberAttribute }) minSize = 0;\n\n /**\n * When a split part is collapsed, the content gets hidden but it will\n * still remain within the DOM. If you want to remove and destroy the component\n * in collapsed mode and recreate it on un-collapse, set this property to\n * true.\n *\n * @defaultValue false\n */\n @Input({ transform: booleanAttribute }) removeContentOnCollapse = false;\n\n /**\n * Defines the behavior of the split part during scaling.\n * E.g. when set to `none`, the spit part will keep its current size even when the parent container grows or shrinks.\n *\n * @defaultValue 'auto'\n */\n @Input() scale: Scale = 'auto';\n\n /**\n * Defines if the collapse button of a split part is displayed. Default value is true.\n *\n * @defaultValue true\n */\n @Input({ transform: booleanAttribute }) showCollapseButton = true;\n\n /**\n * Defines if the header of the split part is visible. Default is true.\n *\n * @defaultValue true\n */\n @Input({ transform: booleanAttribute }) showHeader = true;\n /**\n * Aria label for collapse button. Needed for a11y\n *\n * @defaultValue 'collapse'\n */\n @Input() collapseLabel: TranslatableString = 'collapse';\n /**\n * An optional stateId to uniquely identify a component instance.\n * Required for persistence of ui state.\n */\n @Input() stateId?: string;\n\n /**\n * Expanded size in px.\n */\n @Input({ transform: numberAttribute }) size?: number;\n\n /**\n * This toggles the behavior when collapsing this split part.\n * If enabled, all split parts between this one and the end of the split in the respective direction will be collapsed if this part is collapsed.\n * If disabled, only this split part will be collapsed.\n *\n * @defaultValue false\n */\n @Input({ transform: booleanAttribute }) collapseOthers = false;\n\n @Output() readonly collapseChanged = new EventEmitter<boolean>();\n @Output() readonly stateChange = new EventEmitter<PartState>();\n\n /** @internal */\n index = 0;\n /** @internal */\n before?: SiSplitPartComponent;\n /** @internal */\n after?: SiSplitPartComponent;\n\n /** @internal */\n readonly fractionalSize = signal<number | undefined>(undefined);\n\n /** @internal */\n readonly collapsedSize = signal(0);\n\n /** @internal */\n readonly collapsedState = signal(false);\n\n /**\n * Get collapsed state.\n * @returns True if the split part is collapsed, false is expanded.\n */\n get collapsed(): boolean {\n return this.collapsedState();\n }\n\n /** @internal */\n readonly expandedSize = signal<number | undefined>(undefined);\n\n /** @internal */\n readonly actualSize = computed(() => {\n if (this.collapsedState()) {\n return this.collapsedSize();\n }\n return this.expandedSize() ?? 0;\n });\n\n /** @internal */\n saveUIState!: () => void;\n\n /** @internal */\n readonly nextExpandedAfter = computed(() => {\n if (!this.collapsedState()) {\n return this as SiSplitPartComponent;\n }\n const nextExpanded: SiSplitPartComponent = this.after ? this.after.nextExpandedAfter() : this;\n\n return nextExpanded;\n });\n\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected headerContext: { $implicit: SiSplitPartComponent } = {\n $implicit: this\n };\n\n /** @defaultValue true */\n @Input({ transform: booleanAttribute }) set expanded(value: boolean) {\n this.collapsedState.set(!value);\n if (this.collapseOthers) {\n this.before?.refreshCollapseToStart();\n this.after?.refreshCollapsedToEnd();\n }\n }\n get expanded(): boolean {\n return !this.collapsedState();\n }\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (changes.collapseToMinSize && this.collapseToMinSize) {\n this.collapsedSize.set(this.minSize ?? 40);\n } else {\n this.collapsedSize.set(40); // 40px is default size of the header\n }\n\n if (changes.size) {\n this.expandedSize.set(this.size);\n }\n }\n\n /** @internal */\n refreshSizePx(orientation: SplitOrientation): void {\n if (!this.collapsedState()) {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n if (orientation === 'vertical') {\n this.expandedSize.set(rect.height);\n } else {\n this.expandedSize.set(rect.width);\n }\n }\n }\n\n /**\n * Toggles the collapsed or expanded state.\n */\n toggleCollapse(): void {\n this.collapsedState.update(v => !v);\n if (this.collapseOthers) {\n this.before?.refreshCollapseToStart();\n this.after?.refreshCollapsedToEnd();\n }\n this.collapseChanged.emit(this.collapsedState());\n this.stateChange.emit({ expanded: this.expanded, size: this.actualSize() });\n this.saveUIState();\n }\n\n private refreshCollapsedToEnd(): void {\n if (this.before?.collapsedState() && this.before.collapseDirection === 'end') {\n this.collapsedState.set(true);\n this.collapseDirection = 'end';\n this.after?.refreshCollapsedToEnd();\n }\n }\n\n private refreshCollapseToStart(): void {\n if (this.after?.collapsedState() && this.after.collapseDirection === 'start') {\n this.collapsedState.set(true);\n this.collapseDirection = 'start';\n this.before?.refreshCollapseToStart();\n }\n }\n}\n","@if (!headerTemplate && showHeader) {\n <div class=\"si-split-part-header\" [class.is-collapsed]=\"collapsedState()\">\n <div class=\"si-split-part-title text-truncate\">\n {{ heading | translate }}\n </div>\n @if (!collapsedState()) {\n <div class=\"si-split-part-actions\">\n @for (action of actions; track $index) {\n <button\n type=\"button\"\n class=\"si-split-button\"\n [title]=\"action.tooltip || ''\"\n [attr.aria-label]=\"action.tooltip\"\n (click)=\"action.click($event)\"\n >\n <si-icon [icon]=\"action.iconClass\" />\n </button>\n }\n </div>\n }\n @if (showCollapseButton) {\n <div class=\"si-split-part-collapse-button\">\n <button\n type=\"button\"\n class=\"si-split-button\"\n [attr.aria-label]=\"collapseLabel | translate\"\n (click)=\"toggleCollapse()\"\n >\n <si-icon class=\"collapse-icon\" [icon]=\"collapseIconClass\" />\n </button>\n </div>\n }\n </div>\n}\n\n@if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: headerContext\" />\n}\n\n<div\n class=\"si-split-part-content\"\n [class.d-none]=\"!removeContentOnCollapse && collapsedState() && !collapseToMinSize\"\n>\n @if (!removeContentOnCollapse || !collapsedState()) {\n <ng-content />\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n/* eslint-disable @angular-eslint/prefer-output-emitter-ref */\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChildren,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnChanges,\n Output,\n QueryList,\n signal,\n Signal,\n SimpleChanges,\n DOCUMENT\n} from '@angular/core';\nimport {\n isRTL,\n SI_UI_STATE_SERVICE,\n WebComponentContentChildren\n} from '@siemens/element-ng/common';\nimport { asapScheduler, fromEvent, merge } from 'rxjs';\nimport { observeOn, takeUntil } from 'rxjs/operators';\n\nimport { SiSplitPartComponent } from './si-split-part.component';\nimport { SplitOrientation } from './si-split.interfaces';\n\ninterface Gutter {\n before: SiSplitPartComponent;\n after: SiSplitPartComponent;\n visible: Signal<boolean>;\n}\n\ninterface SplitPartState {\n size: number;\n initialSize: number;\n expanded: boolean;\n}\n\n@Component({\n selector: 'si-split',\n templateUrl: './si-split.component.html',\n styleUrl: './si-split.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n // Signals cannot be used directly with @HostBinding. See: https://github.com/angular/angular/issues/53888#issuecomment-1888935225\n host: {\n '[class]': '_orientation()',\n '[style.grid-template-rows]': 'gridTemplateRows()',\n '[style.grid-template-columns]': 'gridTemplateColumns()',\n '[style.grid-template-areas]': 'gridTemplateAreas()'\n }\n})\nexport class SiSplitComponent implements AfterContentInit, OnChanges {\n /** @defaultValue 16 */\n @Input() gutterSize = 16;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n protected readonly _orientation = signal<SplitOrientation>('horizontal');\n\n get orientation(): SplitOrientation {\n return this._orientation();\n }\n\n @Input() set orientation(value: SplitOrientation) {\n this._orientation.set(value);\n }\n\n /** @defaultValue [] */\n @Input() sizes: number[] = [];\n\n /**\n * An optional stateId to uniquely identify a component instance.\n * Required for persistence of ui state.\n */\n @Input() stateId?: string;\n\n @Output() readonly sizesChange = new EventEmitter<number[]>();\n\n @WebComponentContentChildren(SiSplitPartComponent)\n @ContentChildren(SiSplitPartComponent)\n protected parts!: QueryList<SiSplitPartComponent>;\n protected gutters: Gutter[] = [];\n\n // eslint-disable-next-line\n protected gridTemplateRows: Signal<string> = signal('');\n // eslint-disable-next-line\n protected gridTemplateColumns: Signal<string> = signal('');\n // eslint-disable-next-line\n protected gridTemplateAreas: Signal<string> = signal('');\n\n private elementRef = inject(ElementRef<HTMLElement>);\n private ngZone = inject(NgZone);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private document = inject(DOCUMENT);\n private uiStateService = inject(SI_UI_STATE_SERVICE, { optional: true });\n // New parts won't be measured, so we need this to scale up their fractional size to the expanded size.\n // Using 10, as the sum of all fractional sizes is 1, so we need to scale them up as fr-values should be >= 1.\n private fractionalSizeToExpandedSizeFactor = 10;\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (changes.sizes && !changes.sizes.firstChange) {\n this.sizes.forEach((size, index) => {\n const part = this.parts.get(index);\n if (part) {\n part.fractionalSize.set(size);\n part.expandedSize.set(undefined);\n }\n });\n this.alignRelativeSizes();\n }\n }\n\n ngAfterContentInit(): void {\n this.parts.changes.pipe(observeOn(asapScheduler)).subscribe(() => {\n this.changeDetectorRef.markForCheck();\n this.gutters = [];\n\n for (let index = 0; index < this.parts.length; index++) {\n const component = this.parts.get(index)!;\n component.index = index;\n component.after = this.parts.get(index + 1);\n component.before = this.parts.get(index - 1);\n component.fractionalSize.set(this.sizes[index]);\n component.saveUIState = () => this.saveUIState();\n\n if (component.after) {\n this.gutters.push({\n before: component,\n after: this.parts.get(index + 1)!,\n visible: computed(() => {\n const afterPart = component.after!.nextExpandedAfter();\n return !afterPart.collapsedState() && !component.collapsedState();\n })\n });\n }\n }\n\n this.alignRelativeSizes();\n this.updateFractionalSizeToExpandSizeFactor();\n this.restoreFormUIState();\n\n const gridTemplate = computed(() =>\n this.parts\n .map(part =>\n part.collapsedState()\n ? part.collapseToMinSize\n ? `${part.minSize}px`\n : 'min-content'\n : part.actualSize()\n ? part.scale === 'auto'\n ? `minmax(${part.minSize}px, ${part.actualSize()}fr)`\n : `minmax(${part.minSize}px, ${part.actualSize()}px)`\n : `minmax(${part.minSize}px, ${\n part.fractionalSize()! * this.fractionalSizeToExpandedSizeFactor\n }fr)`\n )\n .join(' min-content ')\n );\n\n this.gridTemplateRows = computed(() =>\n this._orientation() === 'vertical' ? gridTemplate() : '1fr'\n );\n this.gridTemplateColumns = computed(() =>\n this._orientation() === 'horizontal' ? gridTemplate() : '1fr'\n );\n this.gridTemplateAreas = computed(() => {\n const areaNames = this.parts\n .map((part, index) => [`p-${index}`, part.after ? `g-${index}` : []])\n .flat(2) as string[];\n\n if (this._orientation() === 'horizontal') {\n return `\"${areaNames.join(' ')}\"`;\n } else {\n return `\"${areaNames.join('\" \"')}\"`;\n }\n });\n setTimeout(() => this.refreshAllPartSizes());\n });\n this.parts.notifyOnChanges();\n }\n\n private alignRelativeSizes(): void {\n const requestedNoSize = this.parts.filter(part => !part.size && !part.fractionalSize());\n const requestedRelSize = this.parts.filter(part => part.fractionalSize() && !part.size);\n\n if (requestedRelSize.length) {\n const totalRequestedRelSize = requestedRelSize.reduce((a, b) => a + b.fractionalSize()!, 0);\n const averageRelSize = totalRequestedRelSize / requestedRelSize.length;\n const totalAssignedRelSize = totalRequestedRelSize + requestedNoSize.length * averageRelSize;\n requestedNoSize.forEach(part =>\n part.fractionalSize.set(averageRelSize / totalAssignedRelSize)\n );\n requestedRelSize.forEach(part =>\n part.fractionalSize.set(part.fractionalSize()! / totalAssignedRelSize)\n );\n } else {\n requestedNoSize.forEach(part => part.fractionalSize.set(1 / requestedNoSize.length));\n }\n }\n\n private updateFractionalSizeToExpandSizeFactor(): void {\n let previousScalableFractionalSum = 0;\n let previousScalableExpandedSizeSum = 0;\n\n for (let index = 0; index < this.parts.length; index++) {\n const component = this.parts.get(index)!;\n if (component.scale === 'auto' && component.expandedSize() !== undefined) {\n previousScalableExpandedSizeSum += component.expandedSize()!;\n previousScalableFractionalSum += component.fractionalSize()!;\n }\n }\n\n this.fractionalSizeToExpandedSizeFactor = previousScalableFractionalSum\n ? previousScalableExpandedSizeSum / previousScalableFractionalSum\n : 10;\n }\n\n private refreshAllPartSizes(): void {\n const refParts = this.parts.filter(\n part =>\n !part.collapsedState() &&\n part.scale === 'auto' &&\n (part.expandedSize() || part.fractionalSize())\n );\n const beforeFrSum = refParts.reduce((a, b) => a + (b.expandedSize() ?? b.fractionalSize()!), 0);\n this.parts.forEach(part => part.refreshSizePx(this.orientation));\n const afterFrSum = refParts.reduce((a, b) => a + b.expandedSize()!, 0);\n const beforeToAfterFactor = afterFrSum / beforeFrSum;\n this.parts\n .filter(\n part =>\n part.collapsedState() && (part.scale === 'auto' || part.expandedSize() === undefined)\n )\n .forEach(part =>\n part.expandedSize.update(prev => (prev ?? part.fractionalSize()!) * beforeToAfterFactor)\n );\n }\n\n protected resizeStart(gutter: Gutter, event: Event): void {\n this.refreshAllPartSizes();\n this.changeDetectorRef.detectChanges();\n const afterPart = gutter.after.nextExpandedAfter();\n let beforeSize = gutter.before.expandedSize()!;\n let afterSize = afterPart.expandedSize()!;\n let appliedDelta = 0;\n const rtl = isRTL();\n const startPosition = this.getPosition(event);\n const minDelta = -1 * (beforeSize - gutter.before.minSize);\n const maxDelta = afterSize - afterPart.minSize;\n const containerSize = this.measureContainerSize();\n event.preventDefault(); // prevents text-selection\n\n this.ngZone.runOutsideAngular(() => {\n merge(fromEvent(this.document, 'mousemove'), fromEvent(this.document, 'touchmove'))\n .pipe(\n takeUntil(\n merge(fromEvent(this.document, 'mouseup'), fromEvent(this.document, 'touchend'))\n )\n )\n .subscribe({\n next: move => {\n let delta = this.getPosition(move) - startPosition;\n if (rtl && this.orientation === 'horizontal') {\n delta *= -1;\n }\n\n delta -= appliedDelta;\n if (maxDelta < appliedDelta + delta) {\n delta = maxDelta - appliedDelta;\n } else if (minDelta > appliedDelta + delta) {\n delta = minDelta - appliedDelta;\n }\n\n if (delta === 0) {\n return;\n }\n\n beforeSize += delta;\n afterSize -= delta;\n appliedDelta += delta;\n gutter.before.expandedSize.set(beforeSize);\n afterPart.expandedSize.set(afterSize);\n if (this.orientation === 'vertical') {\n this.elementRef.nativeElement.style.setProperty(\n 'grid-template-rows',\n this.gridTemplateRows()\n );\n } else {\n this.elementRef.nativeElement.style.setProperty(\n 'grid-template-columns',\n this.gridTemplateColumns()\n );\n }\n this.ngZone.run(() =>\n this.sizesChange.emit(\n this.parts.map(part => (part.actualSize() * 100) / containerSize)\n )\n );\n },\n complete: () => this.saveUIState()\n });\n });\n }\n\n private measureContainerSize(): number {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n if (this._orientation() === 'vertical') {\n return rect.height;\n } else {\n return rect.width;\n }\n }\n\n private getPosition(event: Event): number {\n const positionObject = (event as TouchEvent).touches?.[0] ?? (event as MouseEvent);\n return this.orientation === 'horizontal'\n ? (positionObject.clientX ?? 0)\n : (positionObject.clientY ?? 0);\n }\n\n private saveUIState(): void {\n if (!this.stateId || !this.uiStateService) {\n return;\n }\n\n const containerSize = this.measureContainerSize();\n const state = this.parts.reduce(\n (partState, part) => {\n if (part.stateId) {\n partState[part.stateId] = {\n size: ((part.expandedSize() ?? 0) * 100) / containerSize,\n initialSize: this.sizes[part.index],\n expanded: part.expanded\n };\n }\n return partState;\n },\n {} as Record<string, SplitPartState>\n );\n\n this.uiStateService.save(this.stateId, state);\n }\n\n private restoreFormUIState(): void {\n if (!this.stateId || !this.uiStateService) {\n return;\n }\n\n this.uiStateService.load<Record<string, SplitPartState>>(this.stateId).then(uiState => {\n if (!uiState) {\n return;\n }\n\n this.parts\n .filter(part => part.stateId)\n .map(part => ({ part, state: uiState[part.stateId!] }))\n .filter(({ part, state }) => this.sizes[part.index] === state?.initialSize)\n .forEach(({ part, state }) => {\n part.expandedSize.set(undefined);\n part.fractionalSize.set(state?.size);\n part.collapsedState.set(!(state?.expanded ?? true));\n });\n setTimeout(() => this.refreshAllPartSizes());\n });\n }\n}\n","<ng-content />\n\n@for (gutter of gutters; track $index) {\n @if ($index < parts.length - 1) {\n <div\n class=\"si-split-gutter\"\n [class.d-none]=\"!gutter.visible()\"\n [style.grid-area]=\"'g-' + $index\"\n [style.width.px]=\"orientation === 'horizontal' ? gutterSize : null\"\n [style.height.px]=\"orientation === 'vertical' ? gutterSize : null\"\n (mousedown)=\"resizeStart(gutter, $event)\"\n (touchstart)=\"resizeStart(gutter, $event)\"\n ></div>\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiSplitPartComponent } from './si-split-part.component';\nimport { SiSplitComponent } from './si-split.component';\n\n@NgModule({\n imports: [SiSplitComponent, SiSplitPartComponent],\n exports: [SiSplitComponent, SiSplitPartComponent]\n})\nexport class SiSplitModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-split.module';\nexport * from './si-split-part.component';\nexport * from './si-split.component';\nexport * from './si-split.interfaces';\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-split.mjs","sources":["../../../../projects/element-ng/split/si-split-part.component.ts","../../../../projects/element-ng/split/si-split-part.component.html","../../../../projects/element-ng/split/si-split.component.ts","../../../../projects/element-ng/split/si-split.component.html","../../../../projects/element-ng/split/si-split.module.ts","../../../../projects/element-ng/split/index.ts","../../../../projects/element-ng/split/siemens-element-ng-split.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n/* eslint-disable @angular-eslint/prefer-output-emitter-ref */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n Output,\n signal,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { Action, CollapseTo, PartState, Scale, SplitOrientation } from './si-split.interfaces';\n\n@Component({\n selector: 'si-split-part',\n imports: [NgTemplateOutlet, SiIconComponent, SiTranslatePipe],\n templateUrl: './si-split-part.component.html',\n styleUrl: './si-split-part.component.scss',\n changeDetection: ChangeDetectionStrategy.Default,\n // Signals cannot be used directly with @HostBinding. See: https://github.com/angular/angular/issues/53888#issuecomment-1888935225\n // Having every binding here for consistency.\n host: {\n '[class.is-collapsed]': 'collapsedState()',\n '[class.collapse-start]': 'collapseDirection === \"start\"',\n '[style.grid-area]': '\"p-\" + this.index'\n }\n})\nexport class SiSplitPartComponent implements OnChanges {\n /** @defaultValue [] */\n @Input() actions: Action[] = [];\n /**\n * @defaultValue 'start'\n */\n @Input() collapseDirection: CollapseTo = 'start';\n\n /**\n * Sets the icon class that is used in the buttons of split parts to\n * collapse and uncollapse the parts.\n *\n * @defaultValue 'element-double-right'\n */\n @Input() collapseIconClass = 'element-double-right';\n\n /**\n * Collapse only to the given min size.\n *\n * @defaultValue false\n */\n @Input({ transform: booleanAttribute }) collapseToMinSize = false;\n\n @Input() headerTemplate?: TemplateRef<any>;\n\n /**\n * Sets the title of the split part header.\n */\n @Input() heading!: TranslatableString;\n\n /**\n * Minimum size in px.\n *\n * @defaultValue 0\n */\n @Input({ transform: numberAttribute }) minSize = 0;\n\n /**\n * When a split part is collapsed, the content gets hidden but it will\n * still remain within the DOM. If you want to remove and destroy the component\n * in collapsed mode and recreate it on un-collapse, set this property to\n * true.\n *\n * @defaultValue false\n */\n @Input({ transform: booleanAttribute }) removeContentOnCollapse = false;\n\n /**\n * Defines the behavior of the split part during scaling.\n * E.g. when set to `none`, the spit part will keep its current size even when the parent container grows or shrinks.\n *\n * @defaultValue 'auto'\n */\n @Input() scale: Scale = 'auto';\n\n /**\n * Defines if the collapse button of a split part is displayed. Default value is true.\n *\n * @defaultValue true\n */\n @Input({ transform: booleanAttribute }) showCollapseButton = true;\n\n /**\n * Defines if the header of the split part is visible. Default is true.\n *\n * @defaultValue true\n */\n @Input({ transform: booleanAttribute }) showHeader = true;\n /**\n * Aria label for collapse button. Needed for a11y\n *\n * @defaultValue 'collapse'\n */\n @Input() collapseLabel: TranslatableString = 'collapse';\n /**\n * An optional stateId to uniquely identify a component instance.\n * Required for persistence of ui state.\n */\n @Input() stateId?: string;\n\n /**\n * Expanded size in px.\n */\n @Input({ transform: numberAttribute }) size?: number;\n\n /**\n * This toggles the behavior when collapsing this split part.\n * If enabled, all split parts between this one and the end of the split in the respective direction will be collapsed if this part is collapsed.\n * If disabled, only this split part will be collapsed.\n *\n * @defaultValue false\n */\n @Input({ transform: booleanAttribute }) collapseOthers = false;\n\n @Output() readonly collapseChanged = new EventEmitter<boolean>();\n @Output() readonly stateChange = new EventEmitter<PartState>();\n\n /** @internal */\n index = 0;\n /** @internal */\n before?: SiSplitPartComponent;\n /** @internal */\n after?: SiSplitPartComponent;\n\n /** @internal */\n readonly fractionalSize = signal<number | undefined>(undefined);\n\n /** @internal */\n readonly collapsedSize = signal(0);\n\n /** @internal */\n readonly collapsedState = signal(false);\n\n /**\n * Get collapsed state.\n * @returns True if the split part is collapsed, false is expanded.\n */\n get collapsed(): boolean {\n return this.collapsedState();\n }\n\n /** @internal */\n readonly expandedSize = signal<number | undefined>(undefined);\n\n /** @internal */\n readonly actualSize = computed(() => {\n if (this.collapsedState()) {\n return this.collapsedSize();\n }\n return this.expandedSize() ?? 0;\n });\n\n /** @internal */\n saveUIState!: () => void;\n\n /** @internal */\n readonly nextExpandedAfter = computed(() => {\n if (!this.collapsedState()) {\n return this as SiSplitPartComponent;\n }\n const nextExpanded: SiSplitPartComponent = this.after ? this.after.nextExpandedAfter() : this;\n\n return nextExpanded;\n });\n\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected headerContext: { $implicit: SiSplitPartComponent } = {\n $implicit: this\n };\n\n /** @defaultValue true */\n @Input({ transform: booleanAttribute }) set expanded(value: boolean) {\n this.collapsedState.set(!value);\n if (this.collapseOthers) {\n this.before?.refreshCollapseToStart();\n this.after?.refreshCollapsedToEnd();\n }\n }\n get expanded(): boolean {\n return !this.collapsedState();\n }\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (changes.collapseToMinSize && this.collapseToMinSize) {\n this.collapsedSize.set(this.minSize ?? 40);\n } else {\n this.collapsedSize.set(40); // 40px is default size of the header\n }\n\n if (changes.size) {\n this.expandedSize.set(this.size);\n }\n }\n\n /** @internal */\n refreshSizePx(orientation: SplitOrientation): void {\n if (!this.collapsedState()) {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n if (orientation === 'vertical') {\n this.expandedSize.set(rect.height);\n } else {\n this.expandedSize.set(rect.width);\n }\n }\n }\n\n /**\n * Toggles the collapsed or expanded state.\n */\n toggleCollapse(): void {\n this.collapsedState.update(v => !v);\n if (this.collapseOthers) {\n this.before?.refreshCollapseToStart();\n this.after?.refreshCollapsedToEnd();\n }\n this.collapseChanged.emit(this.collapsedState());\n this.stateChange.emit({ expanded: this.expanded, size: this.actualSize() });\n this.saveUIState();\n }\n\n private refreshCollapsedToEnd(): void {\n if (this.before?.collapsedState() && this.before.collapseDirection === 'end') {\n this.collapsedState.set(true);\n this.collapseDirection = 'end';\n this.after?.refreshCollapsedToEnd();\n }\n }\n\n private refreshCollapseToStart(): void {\n if (this.after?.collapsedState() && this.after.collapseDirection === 'start') {\n this.collapsedState.set(true);\n this.collapseDirection = 'start';\n this.before?.refreshCollapseToStart();\n }\n }\n}\n","@if (!headerTemplate && showHeader) {\n <div class=\"si-split-part-header\" [class.is-collapsed]=\"collapsedState()\">\n <div class=\"si-split-part-title text-truncate\">\n {{ heading | translate }}\n </div>\n @if (!collapsedState()) {\n <div class=\"si-split-part-actions\">\n @for (action of actions; track $index) {\n <button\n type=\"button\"\n class=\"si-split-button\"\n [title]=\"action.tooltip || ''\"\n [attr.aria-label]=\"action.tooltip\"\n (click)=\"action.click($event)\"\n >\n <si-icon [icon]=\"action.iconClass\" />\n </button>\n }\n </div>\n }\n @if (showCollapseButton) {\n <div class=\"si-split-part-collapse-button\">\n <button\n type=\"button\"\n class=\"si-split-button\"\n [attr.aria-label]=\"collapseLabel | translate\"\n (click)=\"toggleCollapse()\"\n >\n <si-icon class=\"collapse-icon\" [icon]=\"collapseIconClass\" />\n </button>\n </div>\n }\n </div>\n}\n\n@if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: headerContext\" />\n}\n\n<div\n class=\"si-split-part-content\"\n [class.d-none]=\"!removeContentOnCollapse && collapsedState() && !collapseToMinSize\"\n>\n @if (!removeContentOnCollapse || !collapsedState()) {\n <ng-content />\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n/* eslint-disable @angular-eslint/prefer-output-emitter-ref */\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChildren,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnChanges,\n Output,\n QueryList,\n signal,\n Signal,\n SimpleChanges,\n DOCUMENT\n} from '@angular/core';\nimport {\n isRTL,\n SI_UI_STATE_SERVICE,\n WebComponentContentChildren\n} from '@siemens/element-ng/common';\nimport { asapScheduler, fromEvent, merge } from 'rxjs';\nimport { observeOn, takeUntil } from 'rxjs/operators';\n\nimport { SiSplitPartComponent } from './si-split-part.component';\nimport { SplitOrientation } from './si-split.interfaces';\n\ninterface Gutter {\n before: SiSplitPartComponent;\n after: SiSplitPartComponent;\n visible: Signal<boolean>;\n}\n\ninterface SplitPartState {\n size: number;\n initialSize: number;\n expanded: boolean;\n}\n\n@Component({\n selector: 'si-split',\n templateUrl: './si-split.component.html',\n styleUrl: './si-split.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n // Signals cannot be used directly with @HostBinding. See: https://github.com/angular/angular/issues/53888#issuecomment-1888935225\n host: {\n '[class]': '_orientation()',\n '[style.grid-template-rows]': 'gridTemplateRows()',\n '[style.grid-template-columns]': 'gridTemplateColumns()',\n '[style.grid-template-areas]': 'gridTemplateAreas()'\n }\n})\nexport class SiSplitComponent implements AfterContentInit, OnChanges {\n /** @defaultValue 16 */\n @Input() gutterSize = 16;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n protected readonly _orientation = signal<SplitOrientation>('horizontal');\n\n get orientation(): SplitOrientation {\n return this._orientation();\n }\n\n @Input() set orientation(value: SplitOrientation) {\n this._orientation.set(value);\n }\n\n /** @defaultValue [] */\n @Input() sizes: number[] = [];\n\n /**\n * An optional stateId to uniquely identify a component instance.\n * Required for persistence of ui state.\n */\n @Input() stateId?: string;\n\n @Output() readonly sizesChange = new EventEmitter<number[]>();\n\n @WebComponentContentChildren(SiSplitPartComponent)\n @ContentChildren(SiSplitPartComponent)\n protected parts!: QueryList<SiSplitPartComponent>;\n protected gutters: Gutter[] = [];\n\n // eslint-disable-next-line\n protected gridTemplateRows: Signal<string> = signal('');\n // eslint-disable-next-line\n protected gridTemplateColumns: Signal<string> = signal('');\n // eslint-disable-next-line\n protected gridTemplateAreas: Signal<string> = signal('');\n\n private elementRef = inject(ElementRef<HTMLElement>);\n private ngZone = inject(NgZone);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private document = inject(DOCUMENT);\n private uiStateService = inject(SI_UI_STATE_SERVICE, { optional: true });\n // New parts won't be measured, so we need this to scale up their fractional size to the expanded size.\n // Using 10, as the sum of all fractional sizes is 1, so we need to scale them up as fr-values should be >= 1.\n private fractionalSizeToExpandedSizeFactor = 10;\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (changes.sizes && !changes.sizes.firstChange) {\n this.sizes.forEach((size, index) => {\n const part = this.parts.get(index);\n if (part) {\n part.fractionalSize.set(size);\n part.expandedSize.set(undefined);\n }\n });\n this.alignRelativeSizes();\n }\n }\n\n ngAfterContentInit(): void {\n this.parts.changes.pipe(observeOn(asapScheduler)).subscribe(() => {\n this.changeDetectorRef.markForCheck();\n this.gutters = [];\n\n for (let index = 0; index < this.parts.length; index++) {\n const component = this.parts.get(index)!;\n component.index = index;\n component.after = this.parts.get(index + 1);\n component.before = this.parts.get(index - 1);\n component.fractionalSize.set(this.sizes[index]);\n component.saveUIState = () => this.saveUIState();\n\n if (component.after) {\n this.gutters.push({\n before: component,\n after: this.parts.get(index + 1)!,\n visible: computed(() => {\n const afterPart = component.after!.nextExpandedAfter();\n return !afterPart.collapsedState() && !component.collapsedState();\n })\n });\n }\n }\n\n this.alignRelativeSizes();\n this.updateFractionalSizeToExpandSizeFactor();\n this.restoreFormUIState();\n\n const gridTemplate = computed(() =>\n this.parts\n .map(part =>\n part.collapsedState()\n ? part.collapseToMinSize\n ? `${part.minSize}px`\n : 'min-content'\n : part.actualSize()\n ? part.scale === 'auto'\n ? `minmax(${part.minSize}px, ${part.actualSize()}fr)`\n : `minmax(${part.minSize}px, ${part.actualSize()}px)`\n : `minmax(${part.minSize}px, ${\n part.fractionalSize()! * this.fractionalSizeToExpandedSizeFactor\n }fr)`\n )\n .join(' min-content ')\n );\n\n this.gridTemplateRows = computed(() =>\n this._orientation() === 'vertical' ? gridTemplate() : '1fr'\n );\n this.gridTemplateColumns = computed(() =>\n this._orientation() === 'horizontal' ? gridTemplate() : '1fr'\n );\n this.gridTemplateAreas = computed(() => {\n const areaNames = this.parts\n .map((part, index) => [`p-${index}`, part.after ? `g-${index}` : []])\n .flat(2) as string[];\n\n if (this._orientation() === 'horizontal') {\n return `\"${areaNames.join(' ')}\"`;\n } else {\n return `\"${areaNames.join('\" \"')}\"`;\n }\n });\n setTimeout(() => this.refreshAllPartSizes());\n });\n this.parts.notifyOnChanges();\n }\n\n private alignRelativeSizes(): void {\n const requestedNoSize = this.parts.filter(part => !part.size && !part.fractionalSize());\n const requestedRelSize = this.parts.filter(part => part.fractionalSize() && !part.size);\n\n if (requestedRelSize.length) {\n const totalRequestedRelSize = requestedRelSize.reduce((a, b) => a + b.fractionalSize()!, 0);\n const averageRelSize = totalRequestedRelSize / requestedRelSize.length;\n const totalAssignedRelSize = totalRequestedRelSize + requestedNoSize.length * averageRelSize;\n requestedNoSize.forEach(part =>\n part.fractionalSize.set(averageRelSize / totalAssignedRelSize)\n );\n requestedRelSize.forEach(part =>\n part.fractionalSize.set(part.fractionalSize()! / totalAssignedRelSize)\n );\n } else {\n requestedNoSize.forEach(part => part.fractionalSize.set(1 / requestedNoSize.length));\n }\n }\n\n private updateFractionalSizeToExpandSizeFactor(): void {\n let previousScalableFractionalSum = 0;\n let previousScalableExpandedSizeSum = 0;\n\n for (let index = 0; index < this.parts.length; index++) {\n const component = this.parts.get(index)!;\n if (component.scale === 'auto' && component.expandedSize() !== undefined) {\n previousScalableExpandedSizeSum += component.expandedSize()!;\n previousScalableFractionalSum += component.fractionalSize()!;\n }\n }\n\n this.fractionalSizeToExpandedSizeFactor = previousScalableFractionalSum\n ? previousScalableExpandedSizeSum / previousScalableFractionalSum\n : 10;\n }\n\n private refreshAllPartSizes(): void {\n const refParts = this.parts.filter(\n part =>\n !part.collapsedState() &&\n part.scale === 'auto' &&\n (part.expandedSize() || part.fractionalSize())\n );\n const beforeFrSum = refParts.reduce((a, b) => a + (b.expandedSize() ?? b.fractionalSize()!), 0);\n this.parts.forEach(part => part.refreshSizePx(this.orientation));\n const afterFrSum = refParts.reduce((a, b) => a + b.expandedSize()!, 0);\n const beforeToAfterFactor = afterFrSum / beforeFrSum;\n this.parts\n .filter(\n part =>\n part.collapsedState() && (part.scale === 'auto' || part.expandedSize() === undefined)\n )\n .forEach(part =>\n part.expandedSize.update(prev => (prev ?? part.fractionalSize()!) * beforeToAfterFactor)\n );\n }\n\n protected resizeStart(gutter: Gutter, event: Event): void {\n this.refreshAllPartSizes();\n this.changeDetectorRef.detectChanges();\n const afterPart = gutter.after.nextExpandedAfter();\n let beforeSize = gutter.before.expandedSize()!;\n let afterSize = afterPart.expandedSize()!;\n let appliedDelta = 0;\n const rtl = isRTL();\n const startPosition = this.getPosition(event);\n const minDelta = -1 * (beforeSize - gutter.before.minSize);\n const maxDelta = afterSize - afterPart.minSize;\n const containerSize = this.measureContainerSize();\n event.preventDefault(); // prevents text-selection\n\n this.ngZone.runOutsideAngular(() => {\n merge(fromEvent(this.document, 'mousemove'), fromEvent(this.document, 'touchmove'))\n .pipe(\n takeUntil(\n merge(fromEvent(this.document, 'mouseup'), fromEvent(this.document, 'touchend'))\n )\n )\n .subscribe({\n next: move => {\n let delta = this.getPosition(move) - startPosition;\n if (rtl && this.orientation === 'horizontal') {\n delta *= -1;\n }\n\n delta -= appliedDelta;\n if (maxDelta < appliedDelta + delta) {\n delta = maxDelta - appliedDelta;\n } else if (minDelta > appliedDelta + delta) {\n delta = minDelta - appliedDelta;\n }\n\n if (delta === 0) {\n return;\n }\n\n beforeSize += delta;\n afterSize -= delta;\n appliedDelta += delta;\n gutter.before.expandedSize.set(beforeSize);\n afterPart.expandedSize.set(afterSize);\n if (this.orientation === 'vertical') {\n this.elementRef.nativeElement.style.setProperty(\n 'grid-template-rows',\n this.gridTemplateRows()\n );\n } else {\n this.elementRef.nativeElement.style.setProperty(\n 'grid-template-columns',\n this.gridTemplateColumns()\n );\n }\n this.ngZone.run(() =>\n this.sizesChange.emit(\n this.parts.map(part => (part.actualSize() * 100) / containerSize)\n )\n );\n },\n complete: () => this.saveUIState()\n });\n });\n }\n\n private measureContainerSize(): number {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n if (this._orientation() === 'vertical') {\n return rect.height;\n } else {\n return rect.width;\n }\n }\n\n private getPosition(event: Event): number {\n const positionObject = (event as TouchEvent).touches?.[0] ?? (event as MouseEvent);\n return this.orientation === 'horizontal'\n ? (positionObject.clientX ?? 0)\n : (positionObject.clientY ?? 0);\n }\n\n private saveUIState(): void {\n if (!this.stateId || !this.uiStateService) {\n return;\n }\n\n const containerSize = this.measureContainerSize();\n const state = this.parts.reduce(\n (partState, part) => {\n if (part.stateId) {\n partState[part.stateId] = {\n size: ((part.expandedSize() ?? 0) * 100) / containerSize,\n initialSize: this.sizes[part.index],\n expanded: part.expanded\n };\n }\n return partState;\n },\n {} as Record<string, SplitPartState>\n );\n\n this.uiStateService.save(this.stateId, state);\n }\n\n private restoreFormUIState(): void {\n if (!this.stateId || !this.uiStateService) {\n return;\n }\n\n this.uiStateService.load<Record<string, SplitPartState>>(this.stateId).then(uiState => {\n if (!uiState) {\n return;\n }\n\n this.parts\n .filter(part => part.stateId)\n .map(part => ({ part, state: uiState[part.stateId!] }))\n .filter(({ part, state }) => this.sizes[part.index] === state?.initialSize)\n .forEach(({ part, state }) => {\n part.expandedSize.set(undefined);\n part.fractionalSize.set(state?.size);\n part.collapsedState.set(!(state?.expanded ?? true));\n });\n setTimeout(() => this.refreshAllPartSizes());\n });\n }\n}\n","<ng-content />\n\n@for (gutter of gutters; track $index) {\n @if ($index < parts.length - 1) {\n <div\n class=\"si-split-gutter\"\n [class.d-none]=\"!gutter.visible()\"\n [style.grid-area]=\"'g-' + $index\"\n [style.width.px]=\"orientation === 'horizontal' ? gutterSize : null\"\n [style.height.px]=\"orientation === 'vertical' ? gutterSize : null\"\n (mousedown)=\"resizeStart(gutter, $event)\"\n (touchstart)=\"resizeStart(gutter, $event)\"\n ></div>\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiSplitPartComponent } from './si-split-part.component';\nimport { SiSplitComponent } from './si-split.component';\n\n@NgModule({\n imports: [SiSplitComponent, SiSplitPartComponent],\n exports: [SiSplitComponent, SiSplitPartComponent]\n})\nexport class SiSplitModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-split.module';\nexport * from './si-split-part.component';\nexport * from './si-split.component';\nexport * from './si-split.interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NgTemplateOutlet } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { inject, input, booleanAttribute, output, viewChild, computed, Component, signal, ElementRef,
|
|
3
|
+
import { inject, input, booleanAttribute, output, viewChild, computed, ChangeDetectionStrategy, Component, signal, ElementRef, NgModule } from '@angular/core';
|
|
4
4
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { elementSoundOn, elementSoundMute, elementDown2 } from '@siemens/element-icons';
|
|
6
6
|
import { STATUS_ICON, BlinkService, TextMeasureService } from '@siemens/element-ng/common';
|
|
@@ -51,11 +51,11 @@ class SiStatusBarItemComponent {
|
|
|
51
51
|
return !!rgb && Math.round((rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000) <= 128;
|
|
52
52
|
}
|
|
53
53
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiStatusBarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiStatusBarItemComponent, isStandalone: true, selector: "si-status-bar-item", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, blink: { classPropertyName: "blink", publicName: "blink", isSignal: true, isRequired: false, transformFunction: null }, valueOnly: { classPropertyName: "valueOnly", publicName: "valueOnly", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { significanceChange: "significanceChange" }, host: { properties: { "class.clickable": "clickable()" } }, viewQueries: [{ propertyName: "bg", first: true, predicate: ["bg"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"status-item rounded-2 focus-inside d-flex align-items-center\"\n [class.text-muted]=\"!value()\"\n [class.blink]=\"blink() && value()\"\n [attr.tabindex]=\"clickable() ? '0' : ''\"\n [attr.aria-disabled]=\"!value()\"\n>\n <div\n #bg\n role=\"none\"\n class=\"bg focus-sub-inside\"\n [class]=\"background()\"\n [class.custom-color]=\"color()\"\n [class.contrast-fix]=\"contrastFix()\"\n [class.d-none]=\"!value()\"\n [style.background-color]=\"blink() && color() ? color() : null\"\n ></div>\n @let icon = statusIcon();\n @if (!icon) {\n <div\n class=\"color-bar me-3 mt-1 mb-1\"\n [style.background-color]=\"value() && color() ? color() : null\"\n ></div>\n } @else {\n <span class=\"indicator icon me-4 icon-stack\">\n <si-icon [class]=\"value() ? icon.color : 'indicator-disabled'\" [icon]=\"icon.icon\" />\n <si-icon [class]=\"value() ? icon.stackedColor : 'text-inverse'\" [icon]=\"icon.stacked\" />\n </span>\n }\n <div class=\"overflow-hidden status-item-content\">\n @if (value() !== undefined) {\n <div class=\"item-value si-h5 text-truncate\">{{ value().toString() | translate }}</div>\n }\n @if (!valueOnly()) {\n <div class=\"item-title text-truncate\">{{ heading() | translate }}</div>\n }\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:host{position:relative;padding-inline-end:4px}:host.compact .status-item{padding-block:2px}:host.clickable:hover .status-item{background-color:var(--element-base-0)!important}:host.clickable:hover .bg{display:none!important}:host ::ng-deep .indicator-disabled{color:var(--element-ui-3)}.status-item{position:relative;isolation:isolate;padding-block:8px;padding-inline:4px 8px;min-inline-size:var(--__si-status-bar-item-min-width, 7.1429em);color:var(--element-text-primary);white-space:nowrap}.status-item>*{pointer-events:none}.status-item-content{display:flex;flex-direction:column;justify-content:center;block-size:2lh}.bg{position:absolute;inset:0;z-index:-1;border-radius:var(--element-radius-2);pointer-events:none}.bg.custom-color{opacity:.5}.bg.custom-color.contrast-fix{opacity:.25}.item-title,.item-value{position:relative}.item-title:before,.item-value:before{content:\"\\200b\"}.color-bar{align-self:stretch;min-inline-size:4px;border-radius:2px;background:var(--element-ui-4)}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
|
|
54
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiStatusBarItemComponent, isStandalone: true, selector: "si-status-bar-item", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, blink: { classPropertyName: "blink", publicName: "blink", isSignal: true, isRequired: false, transformFunction: null }, valueOnly: { classPropertyName: "valueOnly", publicName: "valueOnly", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { significanceChange: "significanceChange" }, host: { properties: { "class.clickable": "clickable()" } }, viewQueries: [{ propertyName: "bg", first: true, predicate: ["bg"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"status-item rounded-2 focus-inside d-flex align-items-center\"\n [class.text-muted]=\"!value()\"\n [class.blink]=\"blink() && value()\"\n [attr.tabindex]=\"clickable() ? '0' : ''\"\n [attr.aria-disabled]=\"!value()\"\n>\n <div\n #bg\n role=\"none\"\n class=\"bg focus-sub-inside\"\n [class]=\"background()\"\n [class.custom-color]=\"color()\"\n [class.contrast-fix]=\"contrastFix()\"\n [class.d-none]=\"!value()\"\n [style.background-color]=\"blink() && color() ? color() : null\"\n ></div>\n @let icon = statusIcon();\n @if (!icon) {\n <div\n class=\"color-bar me-3 mt-1 mb-1\"\n [style.background-color]=\"value() && color() ? color() : null\"\n ></div>\n } @else {\n <span class=\"indicator icon me-4 icon-stack\">\n <si-icon [class]=\"value() ? icon.color : 'indicator-disabled'\" [icon]=\"icon.icon\" />\n <si-icon [class]=\"value() ? icon.stackedColor : 'text-inverse'\" [icon]=\"icon.stacked\" />\n </span>\n }\n <div class=\"overflow-hidden status-item-content\">\n @if (value() !== undefined) {\n <div class=\"item-value si-h5 text-truncate\">{{ value().toString() | translate }}</div>\n }\n @if (!valueOnly()) {\n <div class=\"item-title text-truncate\">{{ heading() | translate }}</div>\n }\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:host{position:relative;padding-inline-end:4px}:host.compact .status-item{padding-block:2px}:host.clickable:hover .status-item{background-color:var(--element-base-0)!important}:host.clickable:hover .bg{display:none!important}:host ::ng-deep .indicator-disabled{color:var(--element-ui-3)}.status-item{position:relative;isolation:isolate;padding-block:8px;padding-inline:4px 8px;min-inline-size:var(--__si-status-bar-item-min-width, 7.1429em);color:var(--element-text-primary);white-space:nowrap}.status-item>*{pointer-events:none}.status-item-content{display:flex;flex-direction:column;justify-content:center;block-size:2lh}.bg{position:absolute;inset:0;z-index:-1;border-radius:var(--element-radius-2);pointer-events:none}.bg.custom-color{opacity:.5}.bg.custom-color.contrast-fix{opacity:.25}.item-title,.item-value{position:relative}.item-title:before,.item-value:before{content:\"\\200b\"}.color-bar{align-self:stretch;min-inline-size:4px;border-radius:2px;background:var(--element-ui-4)}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
55
55
|
}
|
|
56
56
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiStatusBarItemComponent, decorators: [{
|
|
57
57
|
type: Component,
|
|
58
|
-
args: [{ selector: 'si-status-bar-item', imports: [SiIconComponent, SiTranslatePipe], host: {
|
|
58
|
+
args: [{ selector: 'si-status-bar-item', imports: [SiIconComponent, SiTranslatePipe], changeDetection: ChangeDetectionStrategy.Default, host: {
|
|
59
59
|
'[class.clickable]': 'clickable()'
|
|
60
60
|
}, template: "<div\n class=\"status-item rounded-2 focus-inside d-flex align-items-center\"\n [class.text-muted]=\"!value()\"\n [class.blink]=\"blink() && value()\"\n [attr.tabindex]=\"clickable() ? '0' : ''\"\n [attr.aria-disabled]=\"!value()\"\n>\n <div\n #bg\n role=\"none\"\n class=\"bg focus-sub-inside\"\n [class]=\"background()\"\n [class.custom-color]=\"color()\"\n [class.contrast-fix]=\"contrastFix()\"\n [class.d-none]=\"!value()\"\n [style.background-color]=\"blink() && color() ? color() : null\"\n ></div>\n @let icon = statusIcon();\n @if (!icon) {\n <div\n class=\"color-bar me-3 mt-1 mb-1\"\n [style.background-color]=\"value() && color() ? color() : null\"\n ></div>\n } @else {\n <span class=\"indicator icon me-4 icon-stack\">\n <si-icon [class]=\"value() ? icon.color : 'indicator-disabled'\" [icon]=\"icon.icon\" />\n <si-icon [class]=\"value() ? icon.stackedColor : 'text-inverse'\" [icon]=\"icon.stacked\" />\n </span>\n }\n <div class=\"overflow-hidden status-item-content\">\n @if (value() !== undefined) {\n <div class=\"item-value si-h5 text-truncate\">{{ value().toString() | translate }}</div>\n }\n @if (!valueOnly()) {\n <div class=\"item-title text-truncate\">{{ heading() | translate }}</div>\n }\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:host{position:relative;padding-inline-end:4px}:host.compact .status-item{padding-block:2px}:host.clickable:hover .status-item{background-color:var(--element-base-0)!important}:host.clickable:hover .bg{display:none!important}:host ::ng-deep .indicator-disabled{color:var(--element-ui-3)}.status-item{position:relative;isolation:isolate;padding-block:8px;padding-inline:4px 8px;min-inline-size:var(--__si-status-bar-item-min-width, 7.1429em);color:var(--element-text-primary);white-space:nowrap}.status-item>*{pointer-events:none}.status-item-content{display:flex;flex-direction:column;justify-content:center;block-size:2lh}.bg{position:absolute;inset:0;z-index:-1;border-radius:var(--element-radius-2);pointer-events:none}.bg.custom-color{opacity:.5}.bg.custom-color.contrast-fix{opacity:.25}.item-title,.item-value{position:relative}.item-title:before,.item-value:before{content:\"\\200b\"}.color-bar{align-self:stretch;min-inline-size:4px;border-radius:2px;background:var(--element-ui-4)}\n"] }]
|
|
61
61
|
}], propDecorators: { status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], heading: [{ type: i0.Input, args: [{ isSignal: true, alias: "heading", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], blink: [{ type: i0.Input, args: [{ isSignal: true, alias: "blink", required: false }] }], valueOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueOnly", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], significanceChange: [{ type: i0.Output, args: ["significanceChange"] }], bg: [{ type: i0.ViewChild, args: ['bg', { isSignal: true }] }] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-status-bar.mjs","sources":["../../../../projects/element-ng/status-bar/si-status-bar-item/si-status-bar-item.component.ts","../../../../projects/element-ng/status-bar/si-status-bar-item/si-status-bar-item.component.html","../../../../projects/element-ng/status-bar/si-status-bar.component.ts","../../../../projects/element-ng/status-bar/si-status-bar.component.html","../../../../projects/element-ng/status-bar/si-status-bar.module.ts","../../../../projects/element-ng/status-bar/si-status-bar-item/index.ts","../../../../projects/element-ng/status-bar/index.ts","../../../../projects/element-ng/status-bar/siemens-element-ng-status-bar.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnChanges,\n output,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { ExtendedStatusType } from '@siemens/element-ng/common';\nimport { SiIconComponent, STATUS_ICON_CONFIG } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\n@Component({\n selector: 'si-status-bar-item',\n imports: [SiIconComponent, SiTranslatePipe],\n templateUrl: './si-status-bar-item.component.html',\n styleUrl: './si-status-bar-item.component.scss',\n host: {\n '[class.clickable]': 'clickable()'\n }\n})\nexport class SiStatusBarItemComponent implements OnChanges {\n private readonly statusIcons = inject(STATUS_ICON_CONFIG);\n readonly status = input<ExtendedStatusType>();\n readonly value = input.required<TranslatableString | number>();\n readonly heading = input.required<TranslatableString>();\n readonly color = input<string>();\n /** @defaultValue false */\n readonly blink = input(false, { transform: booleanAttribute });\n /** @defaultValue false */\n readonly valueOnly = input<boolean | undefined, unknown>(false, { transform: booleanAttribute });\n /** @defaultValue false */\n readonly clickable = input(false, { transform: booleanAttribute });\n\n readonly significanceChange = output<void>();\n\n private readonly bg = viewChild.required<ElementRef>('bg');\n\n protected readonly contrastFix = computed(() => {\n return !!this.color() && this.blink() && this.calculateContrastFix();\n });\n protected readonly statusIcon = computed(() => {\n const status = this.status();\n return status ? this.statusIcons[status] : undefined;\n });\n protected readonly background = computed(() =>\n this.blink() && this.status() !== 'success' ? (this.statusIcon()?.background ?? '') : ''\n );\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (changes.value) {\n if (\n (changes.value.previousValue && !changes.value.currentValue) ||\n (!changes.value.previousValue && changes.value.currentValue)\n ) {\n this.significanceChange.emit();\n }\n }\n }\n\n private calculateContrastFix(): boolean {\n // see https://www.w3.org/TR/AERT/#color-contrast\n const rgb = getComputedStyle(this.bg().nativeElement)\n .backgroundColor?.match(/\\d+/g)\n ?.map(v => +v);\n return !!rgb && Math.round((rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000) <= 128;\n }\n}\n","<div\n class=\"status-item rounded-2 focus-inside d-flex align-items-center\"\n [class.text-muted]=\"!value()\"\n [class.blink]=\"blink() && value()\"\n [attr.tabindex]=\"clickable() ? '0' : ''\"\n [attr.aria-disabled]=\"!value()\"\n>\n <div\n #bg\n role=\"none\"\n class=\"bg focus-sub-inside\"\n [class]=\"background()\"\n [class.custom-color]=\"color()\"\n [class.contrast-fix]=\"contrastFix()\"\n [class.d-none]=\"!value()\"\n [style.background-color]=\"blink() && color() ? color() : null\"\n ></div>\n @let icon = statusIcon();\n @if (!icon) {\n <div\n class=\"color-bar me-3 mt-1 mb-1\"\n [style.background-color]=\"value() && color() ? color() : null\"\n ></div>\n } @else {\n <span class=\"indicator icon me-4 icon-stack\">\n <si-icon [class]=\"value() ? icon.color : 'indicator-disabled'\" [icon]=\"icon.icon\" />\n <si-icon [class]=\"value() ? icon.stackedColor : 'text-inverse'\" [icon]=\"icon.stacked\" />\n </span>\n }\n <div class=\"overflow-hidden status-item-content\">\n @if (value() !== undefined) {\n <div class=\"item-value si-h5 text-truncate\">{{ value().toString() | translate }}</div>\n }\n @if (!valueOnly()) {\n <div class=\"item-title text-truncate\">{{ heading() | translate }}</div>\n }\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n OnChanges,\n OnDestroy,\n output,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { elementDown2, elementSoundMute, elementSoundOn } from '@siemens/element-icons';\nimport { BlinkService, STATUS_ICON, TextMeasureService } from '@siemens/element-ng/common';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport {\n ResizeObserverService,\n SiResizeObserverDirective\n} from '@siemens/element-ng/resize-observer';\nimport {\n injectSiTranslateService,\n SiTranslatePipe,\n t\n} from '@siemens/element-translate-ng/translate';\nimport { Observable, Subscription } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { SiStatusBarItemComponent } from './si-status-bar-item/si-status-bar-item.component';\nimport { StatusBarItem } from './si-status-bar-item/si-status-bar-item.model';\n\ninterface ExtendedStatusBarItem extends StatusBarItem {\n isSpecial?: boolean;\n mutePadding?: boolean;\n}\n\n// this is a function because Angular compiler exports arrows for no good reason\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction itemSortFunction(a: StatusBarItem, b: StatusBarItem): number {\n return a.status && b.status ? STATUS_ICON[a.status].severity - STATUS_ICON[b.status].severity : 0;\n}\n\nlet idCounter = 1;\n\n/**\n * The status bar is the main component within an application to inform users at all times\n * about important status information.\n */\n@Component({\n selector: 'si-status-bar',\n imports: [\n NgTemplateOutlet,\n SiIconComponent,\n SiStatusBarItemComponent,\n SiResizeObserverDirective,\n SiTranslatePipe\n ],\n templateUrl: './si-status-bar.component.html',\n styleUrl: './si-status-bar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiStatusBarComponent implements OnDestroy, OnChanges {\n private static readonly minNumberOfItems = 2;\n private static readonly itemMinWidthEm = 7.1429;\n private static readonly itemMaxWidthEm = 10.8;\n private static readonly itemSpacing = 4;\n private static readonly itemPadding = 12; // ps-2 + pe-4\n private static readonly itemColorBarWidth = 4;\n private static readonly itemColorBarMargin = 6;\n private static readonly itemIconWidthEm = 20 / 14;\n private static readonly itemIconMargin = 8;\n private static readonly mainPadding = 12; // ps-4 + pe-2\n\n /**\n * Array of status bar items.\n */\n readonly items = input.required<StatusBarItem[]>();\n /**\n * When true, items with a value have a blinking background\n *\n * @defaultValue false\n */\n readonly blink = input(false, { transform: booleanAttribute });\n /**\n * State of the mute button. Set to `undefined` for no button.\n */\n readonly muteButton = input<boolean>();\n /**\n * Text/translation key on mute button for screen reader\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_STATUS_BAR.MUTE:Mute/unmute`)\n * ```\n */\n readonly muteButtonText = input(t(() => $localize`:@@SI_STATUS_BAR.MUTE:Mute/unmute`));\n /**\n * Text/translation key for \"All OK\" status in mobile\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_STATUS_BAR.ALL_OK:All OK`)\n * ```\n */\n readonly allOkText = input(t(() => $localize`:@@SI_STATUS_BAR.ALL_OK:All OK`));\n /**\n * compact mode\n *\n * @defaultValue false\n */\n readonly compact = input(false, { transform: booleanAttribute });\n /**\n * blink pulse generator for synchronized blinking with other components\n */\n readonly blinkPulse = input<Observable<boolean>>();\n /**\n * Text for the navbar expand button. Required for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_STATUS_BAR.EXPAND:Expand`)\n * ```\n */\n readonly expandButtonText = input(t(() => $localize`:@@SI_STATUS_BAR.EXPAND:Expand`));\n /**\n * Text for the navbar collapse button. Required for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_STATUS_BAR.COLLAPSE:Collapse`)\n * ```\n */\n readonly collapseButtonText = input(t(() => $localize`:@@SI_STATUS_BAR.COLLAPSE:Collapse`));\n\n /**\n * Emitted when the mute toggle button is clicked\n */\n readonly muteToggle = output();\n\n private readonly theBar = viewChild.required<ElementRef>('thebar');\n private readonly content = viewChild.required<ElementRef>('content');\n private readonly custom = viewChild.required<ElementRef>('custom');\n\n protected readonly responsiveItems = signal<ExtendedStatusBarItem[]>([]);\n protected responsiveMode = 0;\n protected readonly expanded = signal(0);\n protected readonly placeholderHeight = signal(0);\n protected readonly contentHeight = signal<number | undefined>(undefined);\n protected readonly blinkOnOff = signal<boolean | undefined>(undefined);\n protected readonly icons = addIcons({ elementDown2, elementSoundMute, elementSoundOn });\n protected statusId = `__si-status-bar-${idCounter++}`;\n\n private timer: any;\n private significanceUpdateTimer: any = 0;\n\n private blinkSubs?: Subscription;\n\n private readonly element = inject(ElementRef);\n private readonly blinkService = inject(BlinkService);\n private readonly translateService = injectSiTranslateService();\n private readonly resizeObserver = inject(ResizeObserverService);\n private readonly measureService = inject(TextMeasureService);\n\n constructor() {\n this.resizeObserver\n .observe(this.element.nativeElement, 100, true)\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.resizeHandler());\n this.translateService.translationChange\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.resizeHandler());\n }\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (this.blinkService && changes.blink) {\n this.blinkSubs?.unsubscribe();\n if (this.blink()) {\n const pulse = this.blinkPulse() ?? this.blinkService.pulse$;\n this.blinkSubs = pulse.subscribe(onOff => {\n this.blinkOnOff.set(onOff);\n });\n }\n }\n this.resizeHandler();\n }\n\n ngOnDestroy(): void {\n this.blinkSubs?.unsubscribe();\n clearTimeout(this.significanceUpdateTimer);\n }\n\n protected significanceChanged(): void {\n if (this.responsiveMode && !this.significanceUpdateTimer) {\n this.significanceUpdateTimer = setTimeout(() => {\n this.significanceUpdateTimer = 0;\n this.calcResponsiveItems();\n });\n }\n }\n\n protected onItemClicked(item: StatusBarItem): void {\n if (item.action) {\n item.action(item);\n }\n }\n\n protected toggleExpand(): void {\n clearTimeout(this.timer);\n if (!this.expanded()) {\n this.expanded.set(2);\n this.placeholderHeight.set(this.theBar().nativeElement.offsetHeight);\n this.contentHeight.set(0);\n\n this.timer = window.setTimeout(() => {\n this.contentHeight.set(this.content().nativeElement.scrollHeight);\n window.setTimeout(() => {\n this.contentHeight.set(undefined);\n }, 500);\n }, 10);\n } else {\n this.contentHeight.set(this.content().nativeElement.scrollHeight);\n this.expanded.set(1);\n\n window.setTimeout(() => {\n this.contentHeight.set(0);\n window.setTimeout(() => {\n this.placeholderHeight.set(0);\n this.expanded.set(0);\n }, 500);\n }, 10);\n }\n }\n\n protected resizeHandler(): void {\n const style = getComputedStyle(this.element.nativeElement);\n const fontSize = parseFloat(style.fontSize);\n const lineHeight = parseFloat(style.lineHeight);\n const size = this.element.nativeElement.clientWidth;\n const muteWidth = this.getMuteButtonWidth(lineHeight);\n const customWidth = this.custom().nativeElement.scrollWidth ?? 0;\n const minWidth =\n this.items().length *\n (SiStatusBarComponent.itemMinWidthEm * fontSize + SiStatusBarComponent.itemSpacing) +\n SiStatusBarComponent.itemSpacing +\n muteWidth +\n customWidth;\n if (size < minWidth) {\n this.setResponsiveMode(fontSize, true);\n } else if (this.items().length) {\n this.calculateRequiredWidth(fontSize, muteWidth, customWidth);\n }\n }\n\n private getMuteButtonWidth(lineHeight: number): number {\n if (this.muteButton() === undefined) {\n return 0;\n }\n // button size is line-height + px-4 + ms-5 + me-2\n return lineHeight + 32;\n }\n\n private setResponsiveMode(fontSize: number, responsive: boolean): void {\n if (responsive) {\n const size = this.element.nativeElement.clientWidth;\n const minSize =\n SiStatusBarComponent.itemMinWidthEm * fontSize * SiStatusBarComponent.minNumberOfItems;\n this.responsiveMode =\n size < minSize\n ? 1\n : Math.max(\n Math.floor(size / (SiStatusBarComponent.itemMaxWidthEm * fontSize)) - 1,\n SiStatusBarComponent.minNumberOfItems\n );\n } else {\n this.responsiveMode = 0;\n }\n\n if (this.responsiveMode) {\n this.contentHeight.set(this.expanded() ? this.content().nativeElement.scrollHeight : 0);\n this.significanceChanged();\n } else {\n this.expanded.set(0);\n this.placeholderHeight.set(0);\n this.contentHeight.set(undefined);\n }\n }\n\n private calcResponsiveItems(): void {\n const activeItems: ExtendedStatusBarItem[] = this.items()\n .filter(item => item.value)\n .sort(itemSortFunction);\n\n if (activeItems.length > this.responsiveMode) {\n activeItems[this.responsiveMode - 1] = {\n status: activeItems[this.responsiveMode - 1].status,\n color: activeItems[this.responsiveMode - 1].color,\n value: activeItems.length - this.responsiveMode + 1 + '+',\n title: '',\n action: () => this.toggleExpand(),\n isSpecial: true\n };\n activeItems.length = this.responsiveMode;\n } else if (!activeItems.length) {\n activeItems.push({\n status: 'success',\n title: '',\n value: this.allOkText(),\n isSpecial: true\n });\n }\n if (activeItems.length === this.responsiveMode) {\n activeItems[activeItems.length - 1].mutePadding = true;\n }\n this.responsiveItems.set(activeItems);\n }\n\n private calculateRequiredWidth(fontSize: number, muteWidth: number, customWidth: number): void {\n const keys: string[] = [];\n for (const item of this.items()) {\n keys.push(item.title, item.value.toString());\n }\n this.translateService\n .translateAsync(keys)\n .pipe(first())\n .subscribe(translations => {\n const size = this.element.nativeElement.clientWidth;\n\n const requiredWidth = this.items().reduce(\n (acc, item) => {\n const titleWidth = this.measureService.measureText(translations[item.title]);\n const valueWidth = this.measureService.measureText(\n translations[item.value],\n undefined,\n { fontWeight: 'bold' }\n );\n const textWidth = Math.max(titleWidth, valueWidth);\n const itemWidth =\n Math.max(\n SiStatusBarComponent.itemMinWidthEm * fontSize,\n this.getItemWidth(fontSize, textWidth, item)\n ) + SiStatusBarComponent.itemSpacing;\n return acc + itemWidth;\n },\n muteWidth +\n customWidth +\n SiStatusBarComponent.itemSpacing +\n SiStatusBarComponent.mainPadding\n );\n\n this.setResponsiveMode(fontSize, size < requiredWidth);\n });\n }\n\n private getItemWidth(fontSize: number, textWidth: number, item: StatusBarItem): number {\n const indicatorWidth = item.color\n ? SiStatusBarComponent.itemColorBarWidth + SiStatusBarComponent.itemColorBarMargin\n : SiStatusBarComponent.itemIconWidthEm * fontSize + SiStatusBarComponent.itemIconMargin;\n return textWidth + SiStatusBarComponent.itemPadding + indicatorWidth;\n }\n}\n","<div\n class=\"expand-placeholder\"\n [class.expanded]=\"expanded()\"\n [style.height.px]=\"placeholderHeight()\"\n></div>\n<div\n #thebar\n aria-busy=\"true\"\n [class]=\"responsiveMode ? `responsive-${responsiveMode}` : ''\"\n [class.responsive]=\"responsiveMode\"\n [class.expanded]=\"expanded()\"\n [class.compact]=\"responsiveMode || compact()\"\n [class.pulse-off]=\"blinkOnOff() === false\"\n [class.pulse-on]=\"blinkOnOff()\"\n>\n <div\n class=\"status-bar-wrapper rounded-2\"\n [class.elevation-2]=\"expanded()\"\n [class.pe-2]=\"muteButton() !== undefined\"\n >\n @if (responsiveMode) {\n <div class=\"align-items-center overflow-hidden\">\n <div class=\"d-flex flex-fill position-relative\">\n @let items = responsiveItems();\n @let responsiveCols = items.length < responsiveMode ? items.length : responsiveMode;\n @for (item of responsiveItems(); track $index) {\n <si-status-bar-item\n class=\"bar-item compact\"\n [value]=\"item.value\"\n [heading]=\"item.title\"\n [status]=\"item.status\"\n [color]=\"item.color\"\n [blink]=\"item.blink !== false && blink() && !expanded()\"\n [clickable]=\"!!item.action\"\n [class.mute-padding]=\"item.mutePadding && muteButton() !== undefined\"\n [style.flex-basis.%]=\"100 / responsiveCols\"\n [valueOnly]=\"item.isSpecial\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n />\n }\n </div>\n @if (muteButton() !== undefined) {\n <div class=\"mobile-mute\">\n <ng-container *ngTemplateOutlet=\"muteButtonTemplate\" />\n </div>\n }\n </div>\n }\n <div\n #content\n class=\"main-content align-items-center overflow-hidden\"\n [style.max-height.px]=\"contentHeight()\"\n >\n @if (responsiveMode) {\n <div class=\"mobile-spacer\"></div>\n }\n <div\n class=\"d-flex flex-fill position-relative\"\n [id]=\"statusId\"\n [class.d-none]=\"responsiveMode && !expanded()\"\n [class.flex-wrap]=\"responsiveMode\"\n >\n @for (item of items(); track $index) {\n <si-status-bar-item\n class=\"bar-item\"\n [class.compact]=\"responsiveMode || compact()\"\n [value]=\"item.value\"\n [heading]=\"item.title\"\n [status]=\"item.status\"\n [color]=\"item.color\"\n [blink]=\"item.blink !== false && blink()\"\n [clickable]=\"!!item.action\"\n [style.flex-basis.%]=\"responsiveMode ? 100 / responsiveMode : null\"\n (significanceChange)=\"significanceChanged()\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n />\n }\n </div>\n <div class=\"custom-content bar-item d-flex\">\n <div #custom [class.pb-2]=\"responsiveMode && expanded\" (siResizeObserver)=\"resizeHandler()\">\n <ng-content />\n </div>\n </div>\n @if (muteButton() !== undefined && !responsiveMode) {\n <ng-container *ngTemplateOutlet=\"muteButtonTemplate\" />\n }\n </div>\n </div>\n @if (responsiveMode) {\n <div class=\"d-flex align-items-center justify-content-center\">\n <button\n type=\"button\"\n class=\"collapse-expand text-center p-0 focus-force\"\n [attr.aria-label]=\"(expanded() ? collapseButtonText() : expandButtonText()) | translate\"\n [attr.aria-expanded]=\"!!expanded()\"\n [attr.aria-controls]=\"statusId\"\n [class.expanded]=\"expanded() === 2\"\n (click)=\"toggleExpand()\"\n >\n <si-icon class=\"icon\" [icon]=\"icons.elementDown2\" />\n </button>\n </div>\n }\n</div>\n\n<ng-template #muteButtonTemplate>\n <button\n type=\"button\"\n class=\"bar-item mute-button btn btn-icon btn-tertiary ms-5\"\n [attr.aria-label]=\"muteButtonText() | translate\"\n (click)=\"muteToggle.emit()\"\n >\n <si-icon class=\"icon\" [icon]=\"muteButton() ? icons.elementSoundOn : icons.elementSoundMute\" />\n </button>\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiStatusBarComponent } from './si-status-bar.component';\n\n@NgModule({\n imports: [SiStatusBarComponent],\n exports: [SiStatusBarComponent]\n})\nexport class SiStatusBarModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-status-bar-item.component';\nexport * from './si-status-bar-item.model';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-status-bar.component';\nexport * from './si-status-bar.module';\nexport * from './si-status-bar-item/index';\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-status-bar.mjs","sources":["../../../../projects/element-ng/status-bar/si-status-bar-item/si-status-bar-item.component.ts","../../../../projects/element-ng/status-bar/si-status-bar-item/si-status-bar-item.component.html","../../../../projects/element-ng/status-bar/si-status-bar.component.ts","../../../../projects/element-ng/status-bar/si-status-bar.component.html","../../../../projects/element-ng/status-bar/si-status-bar.module.ts","../../../../projects/element-ng/status-bar/si-status-bar-item/index.ts","../../../../projects/element-ng/status-bar/index.ts","../../../../projects/element-ng/status-bar/siemens-element-ng-status-bar.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnChanges,\n output,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { ExtendedStatusType } from '@siemens/element-ng/common';\nimport { SiIconComponent, STATUS_ICON_CONFIG } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\n@Component({\n selector: 'si-status-bar-item',\n imports: [SiIconComponent, SiTranslatePipe],\n templateUrl: './si-status-bar-item.component.html',\n styleUrl: './si-status-bar-item.component.scss',\n changeDetection: ChangeDetectionStrategy.Default,\n host: {\n '[class.clickable]': 'clickable()'\n }\n})\nexport class SiStatusBarItemComponent implements OnChanges {\n private readonly statusIcons = inject(STATUS_ICON_CONFIG);\n readonly status = input<ExtendedStatusType>();\n readonly value = input.required<TranslatableString | number>();\n readonly heading = input.required<TranslatableString>();\n readonly color = input<string>();\n /** @defaultValue false */\n readonly blink = input(false, { transform: booleanAttribute });\n /** @defaultValue false */\n readonly valueOnly = input<boolean | undefined, unknown>(false, { transform: booleanAttribute });\n /** @defaultValue false */\n readonly clickable = input(false, { transform: booleanAttribute });\n\n readonly significanceChange = output<void>();\n\n private readonly bg = viewChild.required<ElementRef>('bg');\n\n protected readonly contrastFix = computed(() => {\n return !!this.color() && this.blink() && this.calculateContrastFix();\n });\n protected readonly statusIcon = computed(() => {\n const status = this.status();\n return status ? this.statusIcons[status] : undefined;\n });\n protected readonly background = computed(() =>\n this.blink() && this.status() !== 'success' ? (this.statusIcon()?.background ?? '') : ''\n );\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (changes.value) {\n if (\n (changes.value.previousValue && !changes.value.currentValue) ||\n (!changes.value.previousValue && changes.value.currentValue)\n ) {\n this.significanceChange.emit();\n }\n }\n }\n\n private calculateContrastFix(): boolean {\n // see https://www.w3.org/TR/AERT/#color-contrast\n const rgb = getComputedStyle(this.bg().nativeElement)\n .backgroundColor?.match(/\\d+/g)\n ?.map(v => +v);\n return !!rgb && Math.round((rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000) <= 128;\n }\n}\n","<div\n class=\"status-item rounded-2 focus-inside d-flex align-items-center\"\n [class.text-muted]=\"!value()\"\n [class.blink]=\"blink() && value()\"\n [attr.tabindex]=\"clickable() ? '0' : ''\"\n [attr.aria-disabled]=\"!value()\"\n>\n <div\n #bg\n role=\"none\"\n class=\"bg focus-sub-inside\"\n [class]=\"background()\"\n [class.custom-color]=\"color()\"\n [class.contrast-fix]=\"contrastFix()\"\n [class.d-none]=\"!value()\"\n [style.background-color]=\"blink() && color() ? color() : null\"\n ></div>\n @let icon = statusIcon();\n @if (!icon) {\n <div\n class=\"color-bar me-3 mt-1 mb-1\"\n [style.background-color]=\"value() && color() ? color() : null\"\n ></div>\n } @else {\n <span class=\"indicator icon me-4 icon-stack\">\n <si-icon [class]=\"value() ? icon.color : 'indicator-disabled'\" [icon]=\"icon.icon\" />\n <si-icon [class]=\"value() ? icon.stackedColor : 'text-inverse'\" [icon]=\"icon.stacked\" />\n </span>\n }\n <div class=\"overflow-hidden status-item-content\">\n @if (value() !== undefined) {\n <div class=\"item-value si-h5 text-truncate\">{{ value().toString() | translate }}</div>\n }\n @if (!valueOnly()) {\n <div class=\"item-title text-truncate\">{{ heading() | translate }}</div>\n }\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n OnChanges,\n OnDestroy,\n output,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { elementDown2, elementSoundMute, elementSoundOn } from '@siemens/element-icons';\nimport { BlinkService, STATUS_ICON, TextMeasureService } from '@siemens/element-ng/common';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport {\n ResizeObserverService,\n SiResizeObserverDirective\n} from '@siemens/element-ng/resize-observer';\nimport {\n injectSiTranslateService,\n SiTranslatePipe,\n t\n} from '@siemens/element-translate-ng/translate';\nimport { Observable, Subscription } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { SiStatusBarItemComponent } from './si-status-bar-item/si-status-bar-item.component';\nimport { StatusBarItem } from './si-status-bar-item/si-status-bar-item.model';\n\ninterface ExtendedStatusBarItem extends StatusBarItem {\n isSpecial?: boolean;\n mutePadding?: boolean;\n}\n\n// this is a function because Angular compiler exports arrows for no good reason\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction itemSortFunction(a: StatusBarItem, b: StatusBarItem): number {\n return a.status && b.status ? STATUS_ICON[a.status].severity - STATUS_ICON[b.status].severity : 0;\n}\n\nlet idCounter = 1;\n\n/**\n * The status bar is the main component within an application to inform users at all times\n * about important status information.\n */\n@Component({\n selector: 'si-status-bar',\n imports: [\n NgTemplateOutlet,\n SiIconComponent,\n SiStatusBarItemComponent,\n SiResizeObserverDirective,\n SiTranslatePipe\n ],\n templateUrl: './si-status-bar.component.html',\n styleUrl: './si-status-bar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiStatusBarComponent implements OnDestroy, OnChanges {\n private static readonly minNumberOfItems = 2;\n private static readonly itemMinWidthEm = 7.1429;\n private static readonly itemMaxWidthEm = 10.8;\n private static readonly itemSpacing = 4;\n private static readonly itemPadding = 12; // ps-2 + pe-4\n private static readonly itemColorBarWidth = 4;\n private static readonly itemColorBarMargin = 6;\n private static readonly itemIconWidthEm = 20 / 14;\n private static readonly itemIconMargin = 8;\n private static readonly mainPadding = 12; // ps-4 + pe-2\n\n /**\n * Array of status bar items.\n */\n readonly items = input.required<StatusBarItem[]>();\n /**\n * When true, items with a value have a blinking background\n *\n * @defaultValue false\n */\n readonly blink = input(false, { transform: booleanAttribute });\n /**\n * State of the mute button. Set to `undefined` for no button.\n */\n readonly muteButton = input<boolean>();\n /**\n * Text/translation key on mute button for screen reader\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_STATUS_BAR.MUTE:Mute/unmute`)\n * ```\n */\n readonly muteButtonText = input(t(() => $localize`:@@SI_STATUS_BAR.MUTE:Mute/unmute`));\n /**\n * Text/translation key for \"All OK\" status in mobile\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_STATUS_BAR.ALL_OK:All OK`)\n * ```\n */\n readonly allOkText = input(t(() => $localize`:@@SI_STATUS_BAR.ALL_OK:All OK`));\n /**\n * compact mode\n *\n * @defaultValue false\n */\n readonly compact = input(false, { transform: booleanAttribute });\n /**\n * blink pulse generator for synchronized blinking with other components\n */\n readonly blinkPulse = input<Observable<boolean>>();\n /**\n * Text for the navbar expand button. Required for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_STATUS_BAR.EXPAND:Expand`)\n * ```\n */\n readonly expandButtonText = input(t(() => $localize`:@@SI_STATUS_BAR.EXPAND:Expand`));\n /**\n * Text for the navbar collapse button. Required for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_STATUS_BAR.COLLAPSE:Collapse`)\n * ```\n */\n readonly collapseButtonText = input(t(() => $localize`:@@SI_STATUS_BAR.COLLAPSE:Collapse`));\n\n /**\n * Emitted when the mute toggle button is clicked\n */\n readonly muteToggle = output();\n\n private readonly theBar = viewChild.required<ElementRef>('thebar');\n private readonly content = viewChild.required<ElementRef>('content');\n private readonly custom = viewChild.required<ElementRef>('custom');\n\n protected readonly responsiveItems = signal<ExtendedStatusBarItem[]>([]);\n protected responsiveMode = 0;\n protected readonly expanded = signal(0);\n protected readonly placeholderHeight = signal(0);\n protected readonly contentHeight = signal<number | undefined>(undefined);\n protected readonly blinkOnOff = signal<boolean | undefined>(undefined);\n protected readonly icons = addIcons({ elementDown2, elementSoundMute, elementSoundOn });\n protected statusId = `__si-status-bar-${idCounter++}`;\n\n private timer: any;\n private significanceUpdateTimer: any = 0;\n\n private blinkSubs?: Subscription;\n\n private readonly element = inject(ElementRef);\n private readonly blinkService = inject(BlinkService);\n private readonly translateService = injectSiTranslateService();\n private readonly resizeObserver = inject(ResizeObserverService);\n private readonly measureService = inject(TextMeasureService);\n\n constructor() {\n this.resizeObserver\n .observe(this.element.nativeElement, 100, true)\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.resizeHandler());\n this.translateService.translationChange\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.resizeHandler());\n }\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (this.blinkService && changes.blink) {\n this.blinkSubs?.unsubscribe();\n if (this.blink()) {\n const pulse = this.blinkPulse() ?? this.blinkService.pulse$;\n this.blinkSubs = pulse.subscribe(onOff => {\n this.blinkOnOff.set(onOff);\n });\n }\n }\n this.resizeHandler();\n }\n\n ngOnDestroy(): void {\n this.blinkSubs?.unsubscribe();\n clearTimeout(this.significanceUpdateTimer);\n }\n\n protected significanceChanged(): void {\n if (this.responsiveMode && !this.significanceUpdateTimer) {\n this.significanceUpdateTimer = setTimeout(() => {\n this.significanceUpdateTimer = 0;\n this.calcResponsiveItems();\n });\n }\n }\n\n protected onItemClicked(item: StatusBarItem): void {\n if (item.action) {\n item.action(item);\n }\n }\n\n protected toggleExpand(): void {\n clearTimeout(this.timer);\n if (!this.expanded()) {\n this.expanded.set(2);\n this.placeholderHeight.set(this.theBar().nativeElement.offsetHeight);\n this.contentHeight.set(0);\n\n this.timer = window.setTimeout(() => {\n this.contentHeight.set(this.content().nativeElement.scrollHeight);\n window.setTimeout(() => {\n this.contentHeight.set(undefined);\n }, 500);\n }, 10);\n } else {\n this.contentHeight.set(this.content().nativeElement.scrollHeight);\n this.expanded.set(1);\n\n window.setTimeout(() => {\n this.contentHeight.set(0);\n window.setTimeout(() => {\n this.placeholderHeight.set(0);\n this.expanded.set(0);\n }, 500);\n }, 10);\n }\n }\n\n protected resizeHandler(): void {\n const style = getComputedStyle(this.element.nativeElement);\n const fontSize = parseFloat(style.fontSize);\n const lineHeight = parseFloat(style.lineHeight);\n const size = this.element.nativeElement.clientWidth;\n const muteWidth = this.getMuteButtonWidth(lineHeight);\n const customWidth = this.custom().nativeElement.scrollWidth ?? 0;\n const minWidth =\n this.items().length *\n (SiStatusBarComponent.itemMinWidthEm * fontSize + SiStatusBarComponent.itemSpacing) +\n SiStatusBarComponent.itemSpacing +\n muteWidth +\n customWidth;\n if (size < minWidth) {\n this.setResponsiveMode(fontSize, true);\n } else if (this.items().length) {\n this.calculateRequiredWidth(fontSize, muteWidth, customWidth);\n }\n }\n\n private getMuteButtonWidth(lineHeight: number): number {\n if (this.muteButton() === undefined) {\n return 0;\n }\n // button size is line-height + px-4 + ms-5 + me-2\n return lineHeight + 32;\n }\n\n private setResponsiveMode(fontSize: number, responsive: boolean): void {\n if (responsive) {\n const size = this.element.nativeElement.clientWidth;\n const minSize =\n SiStatusBarComponent.itemMinWidthEm * fontSize * SiStatusBarComponent.minNumberOfItems;\n this.responsiveMode =\n size < minSize\n ? 1\n : Math.max(\n Math.floor(size / (SiStatusBarComponent.itemMaxWidthEm * fontSize)) - 1,\n SiStatusBarComponent.minNumberOfItems\n );\n } else {\n this.responsiveMode = 0;\n }\n\n if (this.responsiveMode) {\n this.contentHeight.set(this.expanded() ? this.content().nativeElement.scrollHeight : 0);\n this.significanceChanged();\n } else {\n this.expanded.set(0);\n this.placeholderHeight.set(0);\n this.contentHeight.set(undefined);\n }\n }\n\n private calcResponsiveItems(): void {\n const activeItems: ExtendedStatusBarItem[] = this.items()\n .filter(item => item.value)\n .sort(itemSortFunction);\n\n if (activeItems.length > this.responsiveMode) {\n activeItems[this.responsiveMode - 1] = {\n status: activeItems[this.responsiveMode - 1].status,\n color: activeItems[this.responsiveMode - 1].color,\n value: activeItems.length - this.responsiveMode + 1 + '+',\n title: '',\n action: () => this.toggleExpand(),\n isSpecial: true\n };\n activeItems.length = this.responsiveMode;\n } else if (!activeItems.length) {\n activeItems.push({\n status: 'success',\n title: '',\n value: this.allOkText(),\n isSpecial: true\n });\n }\n if (activeItems.length === this.responsiveMode) {\n activeItems[activeItems.length - 1].mutePadding = true;\n }\n this.responsiveItems.set(activeItems);\n }\n\n private calculateRequiredWidth(fontSize: number, muteWidth: number, customWidth: number): void {\n const keys: string[] = [];\n for (const item of this.items()) {\n keys.push(item.title, item.value.toString());\n }\n this.translateService\n .translateAsync(keys)\n .pipe(first())\n .subscribe(translations => {\n const size = this.element.nativeElement.clientWidth;\n\n const requiredWidth = this.items().reduce(\n (acc, item) => {\n const titleWidth = this.measureService.measureText(translations[item.title]);\n const valueWidth = this.measureService.measureText(\n translations[item.value],\n undefined,\n { fontWeight: 'bold' }\n );\n const textWidth = Math.max(titleWidth, valueWidth);\n const itemWidth =\n Math.max(\n SiStatusBarComponent.itemMinWidthEm * fontSize,\n this.getItemWidth(fontSize, textWidth, item)\n ) + SiStatusBarComponent.itemSpacing;\n return acc + itemWidth;\n },\n muteWidth +\n customWidth +\n SiStatusBarComponent.itemSpacing +\n SiStatusBarComponent.mainPadding\n );\n\n this.setResponsiveMode(fontSize, size < requiredWidth);\n });\n }\n\n private getItemWidth(fontSize: number, textWidth: number, item: StatusBarItem): number {\n const indicatorWidth = item.color\n ? SiStatusBarComponent.itemColorBarWidth + SiStatusBarComponent.itemColorBarMargin\n : SiStatusBarComponent.itemIconWidthEm * fontSize + SiStatusBarComponent.itemIconMargin;\n return textWidth + SiStatusBarComponent.itemPadding + indicatorWidth;\n }\n}\n","<div\n class=\"expand-placeholder\"\n [class.expanded]=\"expanded()\"\n [style.height.px]=\"placeholderHeight()\"\n></div>\n<div\n #thebar\n aria-busy=\"true\"\n [class]=\"responsiveMode ? `responsive-${responsiveMode}` : ''\"\n [class.responsive]=\"responsiveMode\"\n [class.expanded]=\"expanded()\"\n [class.compact]=\"responsiveMode || compact()\"\n [class.pulse-off]=\"blinkOnOff() === false\"\n [class.pulse-on]=\"blinkOnOff()\"\n>\n <div\n class=\"status-bar-wrapper rounded-2\"\n [class.elevation-2]=\"expanded()\"\n [class.pe-2]=\"muteButton() !== undefined\"\n >\n @if (responsiveMode) {\n <div class=\"align-items-center overflow-hidden\">\n <div class=\"d-flex flex-fill position-relative\">\n @let items = responsiveItems();\n @let responsiveCols = items.length < responsiveMode ? items.length : responsiveMode;\n @for (item of responsiveItems(); track $index) {\n <si-status-bar-item\n class=\"bar-item compact\"\n [value]=\"item.value\"\n [heading]=\"item.title\"\n [status]=\"item.status\"\n [color]=\"item.color\"\n [blink]=\"item.blink !== false && blink() && !expanded()\"\n [clickable]=\"!!item.action\"\n [class.mute-padding]=\"item.mutePadding && muteButton() !== undefined\"\n [style.flex-basis.%]=\"100 / responsiveCols\"\n [valueOnly]=\"item.isSpecial\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n />\n }\n </div>\n @if (muteButton() !== undefined) {\n <div class=\"mobile-mute\">\n <ng-container *ngTemplateOutlet=\"muteButtonTemplate\" />\n </div>\n }\n </div>\n }\n <div\n #content\n class=\"main-content align-items-center overflow-hidden\"\n [style.max-height.px]=\"contentHeight()\"\n >\n @if (responsiveMode) {\n <div class=\"mobile-spacer\"></div>\n }\n <div\n class=\"d-flex flex-fill position-relative\"\n [id]=\"statusId\"\n [class.d-none]=\"responsiveMode && !expanded()\"\n [class.flex-wrap]=\"responsiveMode\"\n >\n @for (item of items(); track $index) {\n <si-status-bar-item\n class=\"bar-item\"\n [class.compact]=\"responsiveMode || compact()\"\n [value]=\"item.value\"\n [heading]=\"item.title\"\n [status]=\"item.status\"\n [color]=\"item.color\"\n [blink]=\"item.blink !== false && blink()\"\n [clickable]=\"!!item.action\"\n [style.flex-basis.%]=\"responsiveMode ? 100 / responsiveMode : null\"\n (significanceChange)=\"significanceChanged()\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n />\n }\n </div>\n <div class=\"custom-content bar-item d-flex\">\n <div #custom [class.pb-2]=\"responsiveMode && expanded\" (siResizeObserver)=\"resizeHandler()\">\n <ng-content />\n </div>\n </div>\n @if (muteButton() !== undefined && !responsiveMode) {\n <ng-container *ngTemplateOutlet=\"muteButtonTemplate\" />\n }\n </div>\n </div>\n @if (responsiveMode) {\n <div class=\"d-flex align-items-center justify-content-center\">\n <button\n type=\"button\"\n class=\"collapse-expand text-center p-0 focus-force\"\n [attr.aria-label]=\"(expanded() ? collapseButtonText() : expandButtonText()) | translate\"\n [attr.aria-expanded]=\"!!expanded()\"\n [attr.aria-controls]=\"statusId\"\n [class.expanded]=\"expanded() === 2\"\n (click)=\"toggleExpand()\"\n >\n <si-icon class=\"icon\" [icon]=\"icons.elementDown2\" />\n </button>\n </div>\n }\n</div>\n\n<ng-template #muteButtonTemplate>\n <button\n type=\"button\"\n class=\"bar-item mute-button btn btn-icon btn-tertiary ms-5\"\n [attr.aria-label]=\"muteButtonText() | translate\"\n (click)=\"muteToggle.emit()\"\n >\n <si-icon class=\"icon\" [icon]=\"muteButton() ? icons.elementSoundOn : icons.elementSoundMute\" />\n </button>\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiStatusBarComponent } from './si-status-bar.component';\n\n@NgModule({\n imports: [SiStatusBarComponent],\n exports: [SiStatusBarComponent]\n})\nexport class SiStatusBarModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-status-bar-item.component';\nexport * from './si-status-bar-item.model';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-status-bar.component';\nexport * from './si-status-bar.module';\nexport * from './si-status-bar-item/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NgTemplateOutlet } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { input, computed, Component, model, booleanAttribute, output, viewChildren, NgModule } from '@angular/core';
|
|
3
|
+
import { input, computed, ChangeDetectionStrategy, Component, model, booleanAttribute, output, viewChildren, NgModule } from '@angular/core';
|
|
4
4
|
import * as i1 from '@angular/forms';
|
|
5
5
|
import { FormsModule } from '@angular/forms';
|
|
6
6
|
import { elementPlus, elementDelete } from '@siemens/element-icons';
|
|
@@ -39,7 +39,7 @@ class SiReadonlyThresholdOptionComponent {
|
|
|
39
39
|
}
|
|
40
40
|
</i>
|
|
41
41
|
}
|
|
42
|
-
<span class="text-truncate">{{ label() | translate }}</span>`, isInline: true, styles: [":host{block-size:2rem}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
|
|
42
|
+
<span class="text-truncate">{{ label() | translate }}</span>`, isInline: true, styles: [":host{block-size:2rem}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
43
43
|
}
|
|
44
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiReadonlyThresholdOptionComponent, decorators: [{
|
|
45
45
|
type: Component,
|
|
@@ -52,7 +52,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
52
52
|
}
|
|
53
53
|
</i>
|
|
54
54
|
}
|
|
55
|
-
<span class="text-truncate">{{ label() | translate }}</span>`, host: { class: 'd-flex align-items-center py-2 my-4 px-4 si-h5' }, styles: [":host{block-size:2rem}\n"] }]
|
|
55
|
+
<span class="text-truncate">{{ label() | translate }}</span>`, changeDetection: ChangeDetectionStrategy.Default, host: { class: 'd-flex align-items-center py-2 my-4 px-4 si-h5' }, styles: [":host{block-size:2rem}\n"] }]
|
|
56
56
|
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: true }] }] } });
|
|
57
57
|
|
|
58
58
|
/**
|
|
@@ -250,7 +250,7 @@ class SiThresholdComponent {
|
|
|
250
250
|
}
|
|
251
251
|
}
|
|
252
252
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiThresholdComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
253
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiThresholdComponent, isStandalone: true, selector: "si-threshold", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, thresholdSteps: { classPropertyName: "thresholdSteps", publicName: "thresholdSteps", isSignal: true, isRequired: false, transformFunction: null }, unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null }, minValue: { classPropertyName: "minValue", publicName: "minValue", isSignal: true, isRequired: false, transformFunction: null }, maxValue: { classPropertyName: "maxValue", publicName: "maxValue", isSignal: true, isRequired: false, transformFunction: null }, stepSize: { classPropertyName: "stepSize", publicName: "stepSize", isSignal: true, isRequired: false, transformFunction: null }, maxSteps: { classPropertyName: "maxSteps", publicName: "maxSteps", isSignal: true, isRequired: false, transformFunction: null }, validation: { classPropertyName: "validation", publicName: "validation", isSignal: true, isRequired: false, transformFunction: null }, canAddRemoveSteps: { classPropertyName: "canAddRemoveSteps", publicName: "canAddRemoveSteps", isSignal: true, isRequired: false, transformFunction: null }, horizontalLayout: { classPropertyName: "horizontalLayout", publicName: "horizontalLayout", isSignal: true, isRequired: false, transformFunction: null }, showDecIncButtons: { classPropertyName: "showDecIncButtons", publicName: "showDecIncButtons", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, readonlyConditions: { classPropertyName: "readonlyConditions", publicName: "readonlyConditions", isSignal: true, isRequired: false, transformFunction: null }, deleteAriaLabel: { classPropertyName: "deleteAriaLabel", publicName: "deleteAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, addAriaLabel: { classPropertyName: "addAriaLabel", publicName: "addAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, inputAriaLabel: { classPropertyName: "inputAriaLabel", publicName: "inputAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, statusAriaLabel: { classPropertyName: "statusAriaLabel", publicName: "statusAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, useAliasForStepValues: { classPropertyName: "useAliasForStepValues", publicName: "useAliasForStepValues", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thresholdSteps: "thresholdStepsChange", validChange: "validChange" }, host: { properties: { "class.add-remove": "canAddRemoveSteps()", "class.horizontal": "horizontalLayout()", "class.dec-inc-buttons": "showDecIncButtons()" } }, viewQueries: [{ propertyName: "numberInputs", predicate: SiNumberInputComponent, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "@for (step of thresholdSteps(); track step) {\n <div class=\"ths-step\">\n @if (!$first) {\n <div class=\"ths-value d-flex align-items-center\">\n @if (showAddRemoveButtons()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-tertiary-ghost m-4\"\n [attr.aria-label]=\"deleteAriaLabel() | translate\"\n (click)=\"deleteStep($index)\"\n >\n <si-icon [icon]=\"icons.elementDelete\" />\n </button>\n } @else {\n <div class=\"py-4 my-4\">​</div>\n }\n <div class=\"line\">\n <div class=\"segment\" [class]=\"colors()[$index - 1]\"></div>\n <div class=\"dot\"></div>\n <div class=\"segment\" [class]=\"colors()[$index]\"></div>\n </div>\n <div class=\"d-flex align-items-center text-nowrap m-4\">\n @if (useAliasForStepValues()) {\n <input\n type=\"text\"\n readonly\n class=\"form-control\"\n [value]=\"step.aliasLabel ?? '' | translate\"\n />\n } @else {\n <si-number-input\n #valueInput=\"ngModel\"\n class=\"form-control text-end\"\n [class.is-invalid]=\"step.valid === false\"\n [aria-label]=\"inputAriaLabel() | translate\"\n [readonly]=\"readonly()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [min]=\"minValue()\"\n [max]=\"maxValue()\"\n [step]=\"stepSize()\"\n [unit]=\"unit()\"\n [showButtons]=\"showDecIncButtons()\"\n [required]=\"true\"\n [(ngModel)]=\"step.value\"\n (ngModelChange)=\"stepChange()\"\n />\n }\n </div>\n </div>\n }\n @if ($first && horizontalLayout()) {\n <ng-container\n [ngTemplateOutlet]=\"startend\"\n [ngTemplateOutletContext]=\"{ color: colors()[$index] }\"\n />\n }\n <div class=\"ths-option d-flex align-items-center\">\n @if (showAddRemoveButtons()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-secondary m-4\"\n [disabled]=\"maxSteps() && $count >= maxSteps()\"\n [attr.aria-label]=\"addAriaLabel() | translate\"\n (click)=\"addStep($index)\"\n >\n <si-icon [icon]=\"icons.elementPlus\" />\n </button>\n } @else {\n <div class=\"py-4 my-4\">​</div>\n }\n <div class=\"line\" [class]=\"colors()[$index]\">\n <div class=\"segment\"></div>\n </div>\n @if (!readonly() && !readonlyConditions()) {\n <si-select\n class=\"my-4\"\n [ariaLabel]=\"statusAriaLabel() | translate\"\n [readonly]=\"readonly()\"\n [options]=\"options()\"\n [(value)]=\"step.optionValue\"\n (valueChange)=\"stepChange()\"\n />\n }\n @if (readonly() || readonlyConditions()) {\n <si-readonly-threshold-option [options]=\"options()\" [value]=\"step.optionValue\" />\n }\n </div>\n @if ($last && horizontalLayout()) {\n <ng-container\n [ngTemplateOutlet]=\"startend\"\n [ngTemplateOutletContext]=\"{ color: colors()[$index] }\"\n />\n }\n </div>\n}\n\n<ng-template #startend let-color=\"color\">\n <div class=\"ths-value d-flex align-items-center startend\">\n <div class=\"py-4 my-4\">​</div>\n <div class=\"line\">\n <div class=\"segment\" [class]=\"color\"></div>\n </div>\n </div>\n</ng-template>\n", styles: [":host{--direction-main: column;--direction-option: row;--direction-value: row;--input-width: calc(var(--input-base-width, 90px) + var(--buttons-width, 0px))}:host.horizontal{--direction-main: row;--direction-option: column;--direction-value: column-reverse;--value-margin: -24px;padding-inline:calc(var(--value-margin) * -1)}:host.dec-inc-buttons{--buttons-width: 48px}:host,.ths-step{display:flex;flex-direction:var(--direction-main)}.ths-option{flex-direction:var(--direction-option);min-inline-size:var(--option-width, 160px)}.ths-value{flex-direction:var(--direction-value);margin-inline:var(--value-margin)}si-select{border-radius:var(--element-button-radius);overflow:hidden}.form-control{inline-size:var(--input-width);block-size:calc(1rem + 16px);position:relative;z-index:1}.line{align-self:stretch;flex-basis:16px;display:flex;flex-direction:var(--direction-main);align-items:center;color:var(--element-ui-2);gap:4px}.segment{flex:1;border:1px solid currentColor}.dot{inline-size:6px;block-size:6px;border:1px solid var(--element-ui-2);border-radius:50%}.startend{inline-size:calc(var(--input-width) / 2)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "component", type: SiNumberInputComponent, selector: "si-number-input", inputs: ["min", "max", "step", "value", "unit", "showButtons", "aria-label", "inputId", "disabled", "readonly", "placeholder", "errormessageId"], outputs: ["valueChange"] }, { kind: "component", type: SiSelectComponent, selector: "si-select", inputs: ["id", "ariaLabel", "labelledby", "filterPlaceholder", "noResultsFoundLabel", "placeholder", "readonly", "errormessageId", "hasFilter"], outputs: ["openChange"] }, { kind: "directive", type: SiSelectSingleValueDirective, selector: "si-select:not([multi])" }, { kind: "directive", type: SiSelectSimpleOptionsDirective, selector: "si-select[options]", inputs: ["options", "optionEqualCheckFn"] }, { kind: "component", type: SiReadonlyThresholdOptionComponent, selector: "si-readonly-threshold-option", inputs: ["value", "options"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
|
|
253
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiThresholdComponent, isStandalone: true, selector: "si-threshold", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, thresholdSteps: { classPropertyName: "thresholdSteps", publicName: "thresholdSteps", isSignal: true, isRequired: false, transformFunction: null }, unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null }, minValue: { classPropertyName: "minValue", publicName: "minValue", isSignal: true, isRequired: false, transformFunction: null }, maxValue: { classPropertyName: "maxValue", publicName: "maxValue", isSignal: true, isRequired: false, transformFunction: null }, stepSize: { classPropertyName: "stepSize", publicName: "stepSize", isSignal: true, isRequired: false, transformFunction: null }, maxSteps: { classPropertyName: "maxSteps", publicName: "maxSteps", isSignal: true, isRequired: false, transformFunction: null }, validation: { classPropertyName: "validation", publicName: "validation", isSignal: true, isRequired: false, transformFunction: null }, canAddRemoveSteps: { classPropertyName: "canAddRemoveSteps", publicName: "canAddRemoveSteps", isSignal: true, isRequired: false, transformFunction: null }, horizontalLayout: { classPropertyName: "horizontalLayout", publicName: "horizontalLayout", isSignal: true, isRequired: false, transformFunction: null }, showDecIncButtons: { classPropertyName: "showDecIncButtons", publicName: "showDecIncButtons", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, readonlyConditions: { classPropertyName: "readonlyConditions", publicName: "readonlyConditions", isSignal: true, isRequired: false, transformFunction: null }, deleteAriaLabel: { classPropertyName: "deleteAriaLabel", publicName: "deleteAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, addAriaLabel: { classPropertyName: "addAriaLabel", publicName: "addAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, inputAriaLabel: { classPropertyName: "inputAriaLabel", publicName: "inputAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, statusAriaLabel: { classPropertyName: "statusAriaLabel", publicName: "statusAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, useAliasForStepValues: { classPropertyName: "useAliasForStepValues", publicName: "useAliasForStepValues", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thresholdSteps: "thresholdStepsChange", validChange: "validChange" }, host: { properties: { "class.add-remove": "canAddRemoveSteps()", "class.horizontal": "horizontalLayout()", "class.dec-inc-buttons": "showDecIncButtons()" } }, viewQueries: [{ propertyName: "numberInputs", predicate: SiNumberInputComponent, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "@for (step of thresholdSteps(); track step) {\n <div class=\"ths-step\">\n @if (!$first) {\n <div class=\"ths-value d-flex align-items-center\">\n @if (showAddRemoveButtons()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-tertiary-ghost m-4\"\n [attr.aria-label]=\"deleteAriaLabel() | translate\"\n (click)=\"deleteStep($index)\"\n >\n <si-icon [icon]=\"icons.elementDelete\" />\n </button>\n } @else {\n <div class=\"py-4 my-4\">​</div>\n }\n <div class=\"line\">\n <div class=\"segment\" [class]=\"colors()[$index - 1]\"></div>\n <div class=\"dot\"></div>\n <div class=\"segment\" [class]=\"colors()[$index]\"></div>\n </div>\n <div class=\"d-flex align-items-center text-nowrap m-4\">\n @if (useAliasForStepValues()) {\n <input\n type=\"text\"\n readonly\n class=\"form-control\"\n [value]=\"step.aliasLabel ?? '' | translate\"\n />\n } @else {\n <si-number-input\n #valueInput=\"ngModel\"\n class=\"form-control text-end\"\n [class.is-invalid]=\"step.valid === false\"\n [aria-label]=\"inputAriaLabel() | translate\"\n [readonly]=\"readonly()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [min]=\"minValue()\"\n [max]=\"maxValue()\"\n [step]=\"stepSize()\"\n [unit]=\"unit()\"\n [showButtons]=\"showDecIncButtons()\"\n [required]=\"true\"\n [(ngModel)]=\"step.value\"\n (ngModelChange)=\"stepChange()\"\n />\n }\n </div>\n </div>\n }\n @if ($first && horizontalLayout()) {\n <ng-container\n [ngTemplateOutlet]=\"startend\"\n [ngTemplateOutletContext]=\"{ color: colors()[$index] }\"\n />\n }\n <div class=\"ths-option d-flex align-items-center\">\n @if (showAddRemoveButtons()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-secondary m-4\"\n [disabled]=\"maxSteps() && $count >= maxSteps()\"\n [attr.aria-label]=\"addAriaLabel() | translate\"\n (click)=\"addStep($index)\"\n >\n <si-icon [icon]=\"icons.elementPlus\" />\n </button>\n } @else {\n <div class=\"py-4 my-4\">​</div>\n }\n <div class=\"line\" [class]=\"colors()[$index]\">\n <div class=\"segment\"></div>\n </div>\n @if (!readonly() && !readonlyConditions()) {\n <si-select\n class=\"my-4\"\n [ariaLabel]=\"statusAriaLabel() | translate\"\n [readonly]=\"readonly()\"\n [options]=\"options()\"\n [(value)]=\"step.optionValue\"\n (valueChange)=\"stepChange()\"\n />\n }\n @if (readonly() || readonlyConditions()) {\n <si-readonly-threshold-option [options]=\"options()\" [value]=\"step.optionValue\" />\n }\n </div>\n @if ($last && horizontalLayout()) {\n <ng-container\n [ngTemplateOutlet]=\"startend\"\n [ngTemplateOutletContext]=\"{ color: colors()[$index] }\"\n />\n }\n </div>\n}\n\n<ng-template #startend let-color=\"color\">\n <div class=\"ths-value d-flex align-items-center startend\">\n <div class=\"py-4 my-4\">​</div>\n <div class=\"line\">\n <div class=\"segment\" [class]=\"color\"></div>\n </div>\n </div>\n</ng-template>\n", styles: [":host{--direction-main: column;--direction-option: row;--direction-value: row;--input-width: calc(var(--input-base-width, 90px) + var(--buttons-width, 0px))}:host.horizontal{--direction-main: row;--direction-option: column;--direction-value: column-reverse;--value-margin: -24px;padding-inline:calc(var(--value-margin) * -1)}:host.dec-inc-buttons{--buttons-width: 48px}:host,.ths-step{display:flex;flex-direction:var(--direction-main)}.ths-option{flex-direction:var(--direction-option);min-inline-size:var(--option-width, 160px)}.ths-value{flex-direction:var(--direction-value);margin-inline:var(--value-margin)}si-select{border-radius:var(--element-button-radius);overflow:hidden}.form-control{inline-size:var(--input-width);block-size:calc(1rem + 16px);position:relative;z-index:1}.line{align-self:stretch;flex-basis:16px;display:flex;flex-direction:var(--direction-main);align-items:center;color:var(--element-ui-2);gap:4px}.segment{flex:1;border:1px solid currentColor}.dot{inline-size:6px;block-size:6px;border:1px solid var(--element-ui-2);border-radius:50%}.startend{inline-size:calc(var(--input-width) / 2)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "component", type: SiNumberInputComponent, selector: "si-number-input", inputs: ["min", "max", "step", "value", "unit", "showButtons", "aria-label", "inputId", "disabled", "readonly", "placeholder", "errormessageId"], outputs: ["valueChange"] }, { kind: "component", type: SiSelectComponent, selector: "si-select", inputs: ["id", "ariaLabel", "labelledby", "filterPlaceholder", "noResultsFoundLabel", "placeholder", "readonly", "errormessageId", "hasFilter"], outputs: ["openChange"] }, { kind: "directive", type: SiSelectSingleValueDirective, selector: "si-select:not([multi])" }, { kind: "directive", type: SiSelectSimpleOptionsDirective, selector: "si-select[options]", inputs: ["options", "optionEqualCheckFn"] }, { kind: "component", type: SiReadonlyThresholdOptionComponent, selector: "si-readonly-threshold-option", inputs: ["value", "options"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
254
254
|
}
|
|
255
255
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiThresholdComponent, decorators: [{
|
|
256
256
|
type: Component,
|
|
@@ -264,7 +264,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
264
264
|
SiSelectSimpleOptionsDirective,
|
|
265
265
|
SiTranslatePipe,
|
|
266
266
|
SiReadonlyThresholdOptionComponent
|
|
267
|
-
], host: {
|
|
267
|
+
], changeDetection: ChangeDetectionStrategy.Default, host: {
|
|
268
268
|
'[class.add-remove]': 'canAddRemoveSteps()',
|
|
269
269
|
'[class.horizontal]': 'horizontalLayout()',
|
|
270
270
|
'[class.dec-inc-buttons]': 'showDecIncButtons()'
|