@siemens/element-ng 49.8.0 → 49.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/fesm2022/siemens-element-ng-application-header.mjs +4 -4
  2. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  3. package/fesm2022/siemens-element-ng-avatar.mjs +2 -2
  4. package/fesm2022/siemens-element-ng-avatar.mjs.map +1 -1
  5. package/fesm2022/siemens-element-ng-breadcrumb-router.mjs +6 -2
  6. package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -1
  7. package/fesm2022/siemens-element-ng-chat-messages.mjs +43 -19
  8. package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
  9. package/fesm2022/siemens-element-ng-circle-status.mjs +2 -2
  10. package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
  11. package/fesm2022/siemens-element-ng-color-picker.mjs +9 -4
  12. package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -1
  13. package/fesm2022/siemens-element-ng-dashboard.mjs +467 -13
  14. package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
  15. package/fesm2022/siemens-element-ng-datatable.mjs +10 -19
  16. package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
  17. package/fesm2022/siemens-element-ng-date-range-filter.mjs +2 -2
  18. package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
  19. package/fesm2022/siemens-element-ng-datepicker.mjs +6 -6
  20. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
  21. package/fesm2022/siemens-element-ng-file-uploader.mjs +2 -2
  22. package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
  23. package/fesm2022/siemens-element-ng-form.mjs +8 -10
  24. package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
  25. package/fesm2022/siemens-element-ng-header-dropdown.mjs +19 -55
  26. package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
  27. package/fesm2022/siemens-element-ng-main-detail-container.mjs +2 -2
  28. package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -1
  29. package/fesm2022/siemens-element-ng-menu.mjs +5 -7
  30. package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
  31. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +110 -51
  32. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
  33. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +25 -29
  34. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
  35. package/fesm2022/siemens-element-ng-notification-item.mjs +2 -2
  36. package/fesm2022/siemens-element-ng-notification-item.mjs.map +1 -1
  37. package/fesm2022/siemens-element-ng-select.mjs +455 -48
  38. package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
  39. package/fesm2022/siemens-element-ng-side-panel.mjs +2 -2
  40. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
  41. package/fesm2022/siemens-element-ng-slider.mjs +2 -2
  42. package/fesm2022/siemens-element-ng-slider.mjs.map +1 -1
  43. package/fesm2022/siemens-element-ng-status-toggle.mjs +2 -2
  44. package/fesm2022/siemens-element-ng-status-toggle.mjs.map +1 -1
  45. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  46. package/fesm2022/siemens-element-ng-tree-view.mjs +52 -30
  47. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  48. package/package.json +3 -3
  49. package/template-i18n.json +5 -0
  50. package/types/siemens-element-ng-breadcrumb-router.d.ts +6 -2
  51. package/types/siemens-element-ng-chat-messages.d.ts +6 -3
  52. package/types/siemens-element-ng-color-picker.d.ts +7 -2
  53. package/types/siemens-element-ng-dashboard.d.ts +360 -5
  54. package/types/siemens-element-ng-datatable.d.ts +0 -1
  55. package/types/siemens-element-ng-form.d.ts +1 -1
  56. package/types/siemens-element-ng-header-dropdown.d.ts +0 -8
  57. package/types/siemens-element-ng-navbar-vertical-next.d.ts +39 -9
  58. package/types/siemens-element-ng-navbar-vertical.d.ts +2 -1
  59. package/types/siemens-element-ng-select.d.ts +241 -2
  60. package/types/siemens-element-ng-translate.d.ts +5 -0
  61. package/types/siemens-element-ng-tree-view.d.ts +4 -5
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-dashboard.mjs","sources":["../../../../projects/element-ng/dashboard/si-dashboard.service.ts","../../../../projects/element-ng/dashboard/si-dashboard-card.component.ts","../../../../projects/element-ng/dashboard/si-dashboard-card.component.html","../../../../projects/element-ng/dashboard/si-dashboard.component.ts","../../../../projects/element-ng/dashboard/si-dashboard.component.html","../../../../projects/element-ng/dashboard/si-dashboard.module.ts","../../../../projects/element-ng/dashboard/widgets/si-widget-base.directive.ts","../../../../projects/element-ng/dashboard/widgets/si-link-widget/si-link-widget.component.ts","../../../../projects/element-ng/dashboard/widgets/si-link-widget/si-link-widget.component.html","../../../../projects/element-ng/dashboard/widgets/si-list-widget/si-list-widget-item.component.ts","../../../../projects/element-ng/dashboard/widgets/si-list-widget/si-list-widget-item.component.html","../../../../projects/element-ng/dashboard/widgets/si-list-widget/si-list-widget-body.component.ts","../../../../projects/element-ng/dashboard/widgets/si-list-widget/si-list-widget-body.component.html","../../../../projects/element-ng/dashboard/widgets/si-list-widget/si-list-widget.component.ts","../../../../projects/element-ng/dashboard/widgets/si-list-widget/si-list-widget.component.html","../../../../projects/element-ng/dashboard/widgets/si-timeline-widget/si-timeline-widget-item.component.ts","../../../../projects/element-ng/dashboard/widgets/si-timeline-widget/si-timeline-widget-item.component.html","../../../../projects/element-ng/dashboard/widgets/si-timeline-widget/si-timeline-widget-body.component.ts","../../../../projects/element-ng/dashboard/widgets/si-timeline-widget/si-timeline-widget-body.component.html","../../../../projects/element-ng/dashboard/widgets/si-timeline-widget/si-timeline-widget.component.ts","../../../../projects/element-ng/dashboard/widgets/si-timeline-widget/si-timeline-widget.component.html","../../../../projects/element-ng/dashboard/widgets/si-value-widget/si-value-widget-body.component.ts","../../../../projects/element-ng/dashboard/widgets/si-value-widget/si-value-widget-body.component.html","../../../../projects/element-ng/dashboard/widgets/si-value-widget/si-value-widget.component.ts","../../../../projects/element-ng/dashboard/widgets/si-value-widget/si-value-widget.component.html","../../../../projects/element-ng/dashboard/index.ts","../../../../projects/element-ng/dashboard/siemens-element-ng-dashboard.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { SiDashboardCardComponent } from './si-dashboard-card.component';\n\n@Injectable()\nexport class SiDashboardService {\n private cards = new BehaviorSubject<SiDashboardCardComponent[]>([]);\n /**\n * Subject containing the current dashboard cards as a list.\n *\n * @defaultValue this.cards.asObservable()\n */\n readonly cards$ = this.cards.asObservable();\n\n /**\n * Registers a new dashboard card.\n */\n register(card: SiDashboardCardComponent): void {\n const nextCards = this.cards.value;\n nextCards.push(card);\n this.cards.next(nextCards);\n }\n\n /**\n * Removes a registered dashboard card.\n */\n unregister(card: SiDashboardCardComponent): void {\n const nextCards = this.cards.value;\n const index = nextCards.indexOf(card);\n if (index > -1) {\n nextCards.splice(index, 1);\n this.cards.next(nextCards);\n }\n }\n}\n","/**\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 OnDestroy,\n output,\n signal\n} from '@angular/core';\nimport { elementPinch, elementZoom } from '@siemens/element-icons';\nimport { SiCardComponent, SiCardHeaderComponent } from '@siemens/element-ng/card';\nimport { MenuItem } from '@siemens/element-ng/common';\nimport { ContentActionBarMainItem } from '@siemens/element-ng/content-action-bar';\nimport { addIcons } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\nimport { SiDashboardService } from './si-dashboard.service';\n\n@Component({\n selector: 'si-dashboard-card',\n imports: [SiCardHeaderComponent, SiTranslatePipe],\n templateUrl: './si-dashboard-card.component.html',\n styleUrl: './si-dashboard-card.component.scss',\n host: {\n '[class.elevation-2]': 'isExpanded()',\n '[class.expanded]': 'isExpanded()',\n '[class.d-none]': 'hide'\n }\n})\nexport class SiDashboardCardComponent extends SiCardComponent implements OnDestroy {\n /**\n * Description of cancel button & action.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DASHBOARD.RESTORE:Restore`)\n * ```\n */\n readonly restoreText = input(t(() => $localize`:@@SI_DASHBOARD.RESTORE:Restore`));\n /**\n * Description of expand button & action.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DASHBOARD.EXPAND:Expand`)\n * ```\n */\n readonly expandText = input(t(() => $localize`:@@SI_DASHBOARD.EXPAND:Expand`));\n /**\n * Option to enable and show the UI controls for card expand functionality.\n * `Expand` and `restore` action items will be added to the content action bar.\n * The expand resizing has to be implemented by the container of the card.\n *\n * @defaultValue false\n */\n readonly enableExpandInteraction = input(false, { transform: booleanAttribute });\n\n /**\n * Used in combination with si-dashboard to show filters when a card is expanded or not.\n *\n * @defaultValue true\n */\n readonly showMenubar = input(true, { transform: booleanAttribute });\n /**\n * Emitter for size state change\n */\n readonly expandChange = output<boolean>();\n\n /**\n * Whether the card is currently expanded.\n *\n * @defaultValue false\n */\n readonly isExpanded = signal(false);\n /** @internal */\n hide = false;\n /** @internal */\n readonly enableExpandInteractionInternal = signal(false);\n readonly enableExpandInteractionComputed = computed(\n () => this.enableExpandInteraction() || this.enableExpandInteractionInternal()\n );\n /** @internal */\n element = inject(ElementRef);\n\n override readonly displayContentActionBar = computed(\n () => this.primaryActionsComputed()?.length > 0 || this.secondaryActions()?.length > 0\n );\n\n protected readonly actionBarViewTypeComputed = computed(() => {\n if (!this.hasContentBarActions()) {\n if (this.enableExpandInteractionComputed()) {\n return 'expanded';\n } else {\n return this.actionBarViewType();\n }\n } else {\n return this.actionBarViewType();\n }\n });\n\n protected readonly actionBarTitleComputed = computed(() => {\n if (!this.hasContentBarActions()) {\n if (this.enableExpandInteractionComputed()) {\n return this.expandRestoreIconTooltip();\n } else {\n return this.actionBarTitle();\n }\n } else {\n return this.actionBarTitle();\n }\n });\n\n protected readonly primaryActionsComputed = computed<(ContentActionBarMainItem | MenuItem)[]>(\n () => {\n const expandRestoreButtonActions: ContentActionBarMainItem[] = [\n {\n type: 'action',\n label: this.isExpanded() ? this.restoreText() : this.expandText(),\n icon: this.isExpanded() ? this.icons.elementPinch : this.icons.elementZoom,\n iconOnly: true,\n action: () => this.expandCard(!this.isExpanded())\n }\n ];\n\n if (!this.hasContentBarActions()) {\n if (this.enableExpandInteractionComputed()) {\n return expandRestoreButtonActions;\n } else {\n return [];\n }\n } else {\n if (!this.enableExpandInteractionComputed()) {\n return this.primaryActions();\n } else {\n const action = this.isExpanded() ? this.restoreActionItem() : this.expandActionItem();\n if (this.primaryActions() && this.primaryActions().length > 0) {\n return [...this.primaryActions(), action];\n } else {\n return [action];\n }\n }\n }\n }\n );\n\n private readonly icons = addIcons({\n elementPinch,\n elementZoom\n });\n private readonly expandRestoreIconTooltip = computed(() => {\n return this.isExpanded() ? this.restoreText() : this.expandText();\n });\n private readonly expandActionItem = computed(() => {\n return {\n type: 'action',\n label: this.expandText(),\n icon: this.icons.elementZoom,\n iconOnly: true,\n action: () => this.expandCard(true)\n } as ContentActionBarMainItem;\n });\n private readonly restoreActionItem = computed(() => {\n return {\n type: 'action',\n label: this.restoreText(),\n icon: this.icons.elementPinch,\n iconOnly: true,\n action: () => this.expandCard(false)\n } as ContentActionBarMainItem;\n });\n private readonly hasContentBarActions = computed(() => {\n return this.primaryActions()?.length > 0 || this.secondaryActions()?.length > 0;\n });\n private dashboardService = inject(SiDashboardService, { optional: true });\n\n constructor() {\n super();\n this.dashboardService?.register(this);\n }\n\n ngOnDestroy(): void {\n this.dashboardService?.unregister(this);\n }\n\n /**\n * Expand the dashboard card.\n */\n expand(): void {\n this.expandCard(true);\n }\n\n /**\n * Restore the dashboard card to the original, non-expanded state.\n */\n restore(): void {\n this.expandCard(false);\n }\n\n private expandCard(expand: boolean): void {\n this.isExpanded.set(expand);\n this.expandChange.emit(expand);\n }\n}\n","@if (imgSrc()) {\n <img\n class=\"card-content-split\"\n [class.card-img-top]=\"imgDir() !== 'horizontal'\"\n [class.card-img-start]=\"imgDir() === 'horizontal'\"\n [attr.src]=\"imgSrc()\"\n [attr.alt]=\"imgAlt() | translate\"\n />\n}\n\n<div class=\"content-container\" [class.card-content-split]=\"imgSrc()\">\n @if (heading() || displayContentActionBar()) {\n <si-card-header\n [heading]=\"heading()\"\n [subHeading]=\"subHeading()\"\n [primaryActions]=\"primaryActionsComputed()\"\n [secondaryActions]=\"secondaryActions()\"\n [actionParam]=\"actionParam()\"\n [actionBarViewType]=\"actionBarViewTypeComputed()\"\n [actionBarTitle]=\"actionBarTitleComputed()\"\n >\n <ng-content select=\"[headerIcon]\" ngProjectAs=\"[headerIcon]\" />\n </si-card-header>\n }\n <ng-content #cardBody select=\"[body]\" />\n <ng-content #cardFooter select=\"[footer]\" />\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkPortalOutlet, DomPortal, PortalModule } from '@angular/cdk/portal';\nimport { ViewportScroller } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n DOCUMENT,\n ElementRef,\n inject,\n input,\n OnChanges,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ScrollbarHelper } from '@siemens/element-ng/common';\nimport {\n BOOTSTRAP_BREAKPOINTS,\n ElementDimensions,\n ResizeObserverService\n} from '@siemens/element-ng/resize-observer';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { SiDashboardCardComponent } from './si-dashboard-card.component';\nimport { SiDashboardService } from './si-dashboard.service';\n\nconst FIX_SCROLL_PADDING_RESIZE_OBSERVER_THROTTLE = 10;\n\n@Component({\n selector: 'si-dashboard',\n imports: [PortalModule, SiTranslatePipe],\n templateUrl: './si-dashboard.component.html',\n styleUrl: './si-dashboard.component.scss',\n providers: [SiDashboardService],\n host: { class: 'si-layout-fixed-height' }\n})\nexport class SiDashboardComponent implements OnChanges, AfterViewInit {\n private readonly destroyRef = inject(DestroyRef);\n /**\n * Heading for the dashboard page.\n */\n readonly heading = input<string>();\n\n /**\n * Opt-in to enable expand interaction for all cards.\n *\n * @defaultValue false\n */\n readonly enableExpandInteractions = input(false, { transform: booleanAttribute });\n\n /**\n * Option to turn off the sticky behavior of the heading and menu bar.\n *\n * @defaultValue true\n */\n readonly sticky = input(true, { transform: booleanAttribute });\n\n /**\n * Option to hide the menu bar.\n *\n * @defaultValue false\n */\n readonly hideMenubar = input(false, { transform: booleanAttribute });\n\n /**\n * Is `true` if a card is expanded.\n * @defaultref {@link _isExpanded}\n */\n get isExpanded(): boolean {\n return this._isExpanded;\n }\n\n protected dashboardFrameEndPadding: number | null = null;\n protected readonly hideMenubarComputed = computed(\n () => this.hideMenubar() || this.hideMenubarInternal()\n );\n\n private _isExpanded = false;\n private scrollPosition: [number, number] = [0, 0];\n\n private cards: SiDashboardCardComponent[] = [];\n private readonly expandedPortalOutlet = viewChild.required('expandedPortalOutlet', {\n read: CdkPortalOutlet\n });\n private readonly dashboardFrame = viewChild.required<ElementRef<HTMLElement>>('dashboardFrame');\n private readonly dashboard = viewChild.required<ElementRef<HTMLElement>>('dashboard');\n\n private dashboardFrameDimensions?: ElementDimensions;\n private dashboardDimensions?: ElementDimensions;\n\n private scroller = inject(ViewportScroller);\n private dashboardService = inject(SiDashboardService);\n private resizeObserver = inject(ResizeObserverService);\n private scrollbarHelper = inject(ScrollbarHelper);\n private cdRef = inject(ChangeDetectorRef);\n private document = inject(DOCUMENT);\n private readonly hideMenubarInternal = signal(false);\n\n constructor() {\n this.dashboardService.cards$\n .pipe(takeUntilDestroyed())\n .subscribe(cards => this.subscribeToCards(cards));\n }\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (changes.enableExpandInteractions) {\n this.initCards();\n }\n }\n\n ngAfterViewInit(): void {\n this.resizeObserver\n .observe(this.dashboard().nativeElement, FIX_SCROLL_PADDING_RESIZE_OBSERVER_THROTTLE)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(x => this.setDashboardFrameEndPadding(this.dashboardFrameDimensions, x));\n this.resizeObserver\n .observe(this.dashboardFrame().nativeElement, FIX_SCROLL_PADDING_RESIZE_OBSERVER_THROTTLE)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(dims => this.setDashboardFrameEndPadding(dims, this.dashboardDimensions));\n }\n\n private subscribeToCards(cards: SiDashboardCardComponent[]): void {\n this.cards = cards;\n this.initCards();\n }\n\n private initCards(): void {\n for (const card of this.cards) {\n // We only enforce expand if the dashboard value is true, otherwise we would remove the individual\n // card settings.\n const enableExpandInteractions = this.enableExpandInteractions();\n if (enableExpandInteractions) {\n card.enableExpandInteractionInternal.set(enableExpandInteractions);\n }\n\n card.expandChange.subscribe((expand: boolean) => {\n if (expand) {\n this.expand(card);\n } else {\n this.restoreDashboard();\n }\n this.cdRef.markForCheck();\n });\n }\n }\n\n /**\n * Expands the provided card to full size in the dashboard.\n * @param card - The card to be expanded.\n */\n public expand(card: SiDashboardCardComponent): void {\n if (this.isExpanded) {\n this.restoreDashboard();\n }\n if (this.sticky()) {\n this.scrollPosition = [\n this.dashboardFrame().nativeElement.scrollLeft,\n this.dashboardFrame().nativeElement.scrollTop\n ];\n } else {\n this.scrollPosition = this.scroller.getScrollPosition();\n }\n\n // Make sure card.expand() is called first and prevent recursions.\n if (!card.isExpanded()) {\n card.expand();\n } else {\n if (!card.showMenubar()) {\n this.hideMenubarInternal.set(true);\n }\n this._isExpanded = true;\n this.expandedPortalOutlet().detach();\n this.expandedPortalOutlet().attach(new DomPortal(card.element.nativeElement));\n }\n }\n\n /**\n * Restores the expanded card to it's previous position.\n */\n public restore(): void {\n // Restore all cards\n for (const card of this.cards) {\n if (card.isExpanded()) {\n card.restore();\n }\n }\n // Restore the dashboard and scroll to previous position\n this.restoreDashboard();\n // Subscribe to cards events again\n this.initCards();\n this.cdRef.markForCheck();\n }\n\n /**\n * Restored the UI state of the dashboard. This method is only part\n * of restoring a card and needs to be invoked after the card.restore()\n * method. In general this is achieved by listening to card events.\n */\n private restoreDashboard(): void {\n this.expandedPortalOutlet().detach();\n this.hideMenubarInternal.set(false);\n this.toggleCardsHide(false);\n const scrollBehavior = this.document.documentElement.style.scrollBehavior;\n this.document.documentElement.style.scrollBehavior = 'auto';\n setTimeout(() => {\n if (this.sticky()) {\n this.dashboardFrame().nativeElement.scrollTo({\n left: this.scrollPosition[0],\n top: this.scrollPosition[1],\n behavior: 'auto'\n });\n } else {\n this.scroller.scrollToPosition(this.scrollPosition);\n this.document.documentElement.style.scrollBehavior = scrollBehavior;\n }\n this.cdRef.markForCheck();\n });\n this._isExpanded = false;\n }\n\n private toggleCardsHide(expand: boolean): void {\n for (const card of this.cards) {\n card.hide = !card.isExpanded() && expand;\n }\n }\n\n private setDashboardFrameEndPadding(\n dashboardFrameDimensions?: ElementDimensions,\n dashboardDimensions?: ElementDimensions\n ): void {\n if (!this.sticky()) {\n return;\n }\n\n if (\n this.dashboardDimensions === dashboardDimensions &&\n this.dashboardFrameDimensions === dashboardFrameDimensions\n ) {\n return;\n }\n\n this.dashboardDimensions = dashboardDimensions;\n this.dashboardFrameDimensions = dashboardFrameDimensions;\n\n let padding = this.document.body.offsetWidth >= BOOTSTRAP_BREAKPOINTS.mdMinimum ? 32 : 16;\n if (\n dashboardDimensions &&\n dashboardFrameDimensions &&\n dashboardDimensions.height > dashboardFrameDimensions.height\n ) {\n padding = padding - this.scrollbarHelper.width;\n }\n this.dashboardFrameEndPadding = padding;\n this.cdRef.markForCheck();\n }\n}\n","<div\n class=\"si-layout-fixed-height si-dashboard si-layout-main-padding py-6\"\n [class.sticky]=\"sticky()\"\n>\n <div class=\"si-dashboard-header\" [class.sticky]=\"sticky()\">\n @if (heading()) {\n <div class=\"si-layout-header\">\n <h2 class=\"si-layout-title si-layout-top-element\">{{ heading() | translate }}</h2>\n </div>\n }\n @if (!hideMenubarComputed()) {\n <div class=\"mb-6\" [class.si-layout-top-element]=\"!heading()\">\n <ng-content select=\"[menubar]\" />\n </div>\n }\n </div>\n <div\n #dashboardFrame\n class=\"si-layout-fixed-height si-dashboard-content ps-2 pt-2 ms-n2 mt-n2\"\n [class.sticky]=\"sticky()\"\n [style.padding-inline-end.px]=\"dashboardFrameEndPadding\"\n >\n <div class=\"si-layout-fixed-height\" [class.d-none]=\"isExpanded\">\n <div #dashboard class=\"si-layout-fixed-height fix-si-layout-fixed-height\">\n <ng-content select=\"[dashboard]\" />\n </div>\n </div>\n <div class=\"position-relative flex-grow-1 flex-shrink-1 mb-6\" [class.d-none]=\"!isExpanded\">\n <ng-container #expandedPortalOutlet cdkPortalOutlet />\n </div>\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiDashboardCardComponent } from './si-dashboard-card.component';\nimport { SiDashboardComponent } from './si-dashboard.component';\n\n@NgModule({\n imports: [SiDashboardCardComponent, SiDashboardComponent],\n exports: [SiDashboardCardComponent, SiDashboardComponent]\n})\nexport class SiDashboardModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n computed,\n Directive,\n input,\n OnChanges,\n OnInit,\n signal,\n SimpleChanges\n} from '@angular/core';\n\n/**\n * The SiWidgetBaseDirective<T> implements the timing for the skeleton loading\n * indicator of widgets. It supports a generic value input property that represents\n * the main value to be displayed by a widget. When the value is not set, the `showLoadingIndicator`\n * changes after the `initialLoadingIndicatorDebounceTime` delay to `true` and subclasses\n * should show the skeleton loading indicator.\n */\n@Directive()\nexport abstract class SiWidgetBaseDirective<T> implements OnInit, OnChanges {\n /**\n * The main value to be displayed. If no value is set,\n * the skeleton indicates the loading of the value. Disable\n * the automatic loading mechanism by setting `SiWidgetBodyBaseComponent.disableAutoLoadingIndicator`.\n */\n readonly value = input.required<T | undefined>();\n /**\n * Option to disable automatic start of skeleton loading indication.\n *\n * @defaultValue false\n */\n readonly disableAutoLoadingIndicator = input(false, { transform: booleanAttribute });\n /**\n * Input to start and stop the skeleton loading indication.\n *\n * @defaultValue false\n */\n readonly showLoadingIndicatorInput = input(false, {\n // eslint-disable-next-line @angular-eslint/no-input-rename\n alias: 'showLoadingIndicator',\n transform: booleanAttribute\n });\n\n private readonly showLoadingIndicatorInternal = signal<boolean | undefined>(false);\n\n readonly showLoadingIndicator = computed(() => {\n return this.showLoadingIndicatorInternal() ?? this.showLoadingIndicatorInput();\n });\n\n /**\n * Initial delay time in milliseconds before enabling loading indicator.\n * Only used once initially during construction.\n *\n * @defaultValue 300\n */\n readonly initialLoadingIndicatorDebounceTime = input(300);\n\n protected loadingTimer?: ReturnType<typeof setTimeout>;\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (\n !this.disableAutoLoadingIndicator() &&\n !changes.value?.firstChange &&\n changes.value?.currentValue\n ) {\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\n }\n\n this.showLoadingIndicatorInternal.set(false);\n }\n }\n\n ngOnInit(): void {\n if (!this.disableAutoLoadingIndicator() && !this.value()) {\n this.loadingTimer = setTimeout(() => {\n this.showLoadingIndicatorInternal.set(!this.value());\n }, this.initialLoadingIndicatorDebounceTime());\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, Component, computed, input } from '@angular/core';\nimport { elementRight2 } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\n\n/**\n * The `<si-link-widget>` supports an easy composition of links and actions\n * with support for skeleton loading indicator.\n */\n@Component({\n selector: 'si-link-widget',\n imports: [SiIconComponent, SiLinkDirective, SiTranslatePipe],\n templateUrl: './si-link-widget.component.html',\n host: { class: 'si-link-widget' }\n})\nexport class SiLinkWidgetComponent extends SiWidgetBaseDirective<Link[]> {\n /**\n * Option to enable trailing link arrow icons for each link.\n *\n * @defaultValue false\n */\n readonly showLinkIcons = input(false, { transform: booleanAttribute });\n /**\n * The number of skeleton progress indication rows.\n *\n * @defaultValue 3\n */\n readonly numberOfLinks = input(3);\n\n protected readonly ghosts = computed(() => new Array(this.numberOfLinks() ?? 3));\n\n protected readonly icons = addIcons({ elementRight2 });\n}\n","@if (!showLoadingIndicator() && value()) {\n @for (link of value(); track link) {\n @if (link.action) {\n <button type=\"button\" class=\"btn btn-link\" [siLink]=\"link\">{{\n link.title | translate\n }}</button>\n } @else {\n <a [siLink]=\"link\">\n {{ link.title | translate }}\n @if (showLinkIcons()) {\n <si-icon class=\"link-icon link-end flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n </a>\n }\n }\n} @else {\n @for (some of ghosts(); track $index) {\n <div class=\"si-link-widget-skeleton\"></div>\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed } from '@angular/core';\nimport { elementRight2 } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\n\n/**\n * Interface for objects to configure the the list widget.\n */\nexport interface SiListWidgetItem {\n /** Label is either a translatable string or a link. */\n label: TranslatableString | Link;\n /** Optional translatable description. */\n description?: TranslatableString;\n /** Optional translatable string to be displayed in a badge. */\n badge?: TranslatableString;\n /**\n * Defines the badge color. Must be one of the element `bg-<color>` CSS classes,\n * like `bg-primary`, `bg-secondary`, 'bg-caution'. Use only the name without `bg`.\n */\n badgeColor?: string;\n /** Optional translatable text that is display to the right. */\n text?: TranslatableString;\n /** Optional right aligned action. */\n action?: Link;\n /** The action icon. */\n actionIcon?: string;\n}\n\n/**\n * The `<si-link-widget>` supports an easy composition of links and actions\n * with support for skeleton loading indicator.\n */\n@Component({\n selector: 'si-list-widget-item',\n imports: [SiIconComponent, SiLinkDirective, SiTranslatePipe],\n templateUrl: './si-list-widget-item.component.html',\n host: {\n class: 'list-group-item d-flex align-items-center',\n role: 'listitem'\n }\n})\nexport class SiListWidgetItemComponent extends SiWidgetBaseDirective<SiListWidgetItem> {\n protected readonly isLink = computed(() => {\n return typeof this.value()?.label === 'object';\n });\n protected readonly badgeColor = computed(() => {\n return this.value()?.badgeColor ? 'bg-' + this.value()?.badgeColor : 'bg-default';\n });\n protected readonly link = computed(() => {\n return this.value()?.label as Link;\n });\n protected readonly label = computed(() => {\n return this.value()?.label as string;\n });\n protected readonly icons = addIcons({ elementRight2 });\n}\n","@let valueObject = value();\n@if (!showLoadingIndicator() && valueObject) {\n @if (valueObject.badge) {\n <span class=\"mx-0 badge me-4\" [class]=\"badgeColor()\">{{ valueObject.badge | translate }}</span>\n }\n <span class=\"me-auto\">\n @if (!isLink()) {\n <span class=\"si-h5\">{{ label() | translate }}</span>\n } @else {\n <a class=\"\" [siLink]=\"link()\"\n >{{ link().title | translate\n }}<si-icon class=\"link-icon link-start flip-rtl\" [icon]=\"icons.elementRight2\" />\n </a>\n }\n @if (valueObject.description) {\n <div class=\"mt-1 si-body text-secondary\">{{ valueObject.description | translate }}</div>\n }\n </span>\n <span>{{ valueObject.text | translate }}</span>\n @if (valueObject.action) {\n @if (valueObject.action.action) {\n <button\n type=\"button\"\n class=\"btn btn-icon btn-tertiary ms-4 p-2\"\n [attr.aria-label]=\"valueObject.action.title | translate\"\n [siLink]=\"valueObject.action\"\n >\n @if (valueObject.actionIcon) {\n <si-icon class=\"icon\" [icon]=\"valueObject.actionIcon\" />\n }\n </button>\n } @else {\n <a\n class=\"ms-4 p-2\"\n [siLink]=\"valueObject.action\"\n [attr.aria-label]=\"valueObject.action.title | translate\"\n >\n @if (valueObject.actionIcon) {\n <si-icon class=\"icon\" [icon]=\"valueObject.actionIcon\" />\n }\n </a>\n }\n }\n} @else {\n <div class=\"si-link-widget-skeleton my-4\"></div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, Component, computed, input, model, OnChanges } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { Link } from '@siemens/element-ng/link';\nimport { SiSearchBarComponent } from '@siemens/element-ng/search-bar';\nimport {\n injectSiTranslateService,\n SiTranslatePipe,\n t,\n TranslatableString\n} from '@siemens/element-translate-ng/translate';\nimport { map, of, switchMap } from 'rxjs';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\nimport { SiListWidgetItem, SiListWidgetItemComponent } from './si-list-widget-item.component';\n\n/** Defines the sort order. */\nexport type SortOrder = 'ASC' | 'DSC';\n\n/**\n * The `<si-list-widget-body>` implements the body of the <si-list-widget> that can be\n * used for composition within other components.\n */\n@Component({\n selector: 'si-list-widget-body',\n imports: [SiListWidgetItemComponent, SiSearchBarComponent, SiTranslatePipe, FormsModule],\n templateUrl: './si-list-widget-body.component.html',\n styleUrl: './si-list-widget-body.component.scss',\n host: { class: '' }\n})\nexport class SiListWidgetBodyComponent\n extends SiWidgetBaseDirective<SiListWidgetItem[]>\n implements OnChanges\n{\n private readonly translateService = injectSiTranslateService();\n\n /** Optional footer link for the list widget */\n readonly link = input<Link>();\n\n /**\n * label for the \"search placeholder\" name\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LIST_WIDGET.SEARCH_PLACEHOLDER:Search...`)\n * ```\n */\n readonly searchPlaceholderLabel = input(\n t(() => $localize`:@@SI_LIST_WIDGET.SEARCH_PLACEHOLDER:Search...`)\n );\n\n /**\n * Enable ascending and descending SiListWidgetItem sorting. If enabled,\n * items are initially ascending sorted.\n */\n readonly sort = input<SortOrder>();\n\n /**\n * Enables the search functionality.\n *\n * @defaultValue false\n */\n readonly search = input(false, { transform: booleanAttribute });\n\n /**\n * Compare function of for two `SiListWidgetItem`s that is used to sort\n * the array of items. The default compares the item labels by using the\n * string `localeCompare()` function.\n *\n * @param a - first `SiListWidgetItem` of the comparison.\n *\n * @param b - second `SiListWidgetItem` of the comparison.\n *\n * @returns A value `< 0` if `a` is smaller, `> 0` if `b` is smaller, otherwise `0`.\n *\n * @defaultValue\n * ```\n * (\n * a: SiListWidgetItem,\n * b: SiListWidgetItem\n * ) => {\n * const aLabel = typeof a.label === 'object' ? a.label.title! : a.label;\n * const bLabel = typeof b.label === 'object' ? b.label.title! : b.label;\n * return aLabel.localeCompare(bLabel);\n * }\n * ```\n */\n readonly compareFn = input<(a: SiListWidgetItem, b: SiListWidgetItem) => number | undefined>(\n (a: SiListWidgetItem, b: SiListWidgetItem) => {\n const aLabel = typeof a.label === 'object' ? a.label.title! : a.label;\n const bLabel = typeof b.label === 'object' ? b.label.title! : b.label;\n return aLabel.localeCompare(bLabel);\n }\n );\n\n /**\n * Filter function that is used to filter down the list items when the user enters\n * a term in the search bar. Default function.\n *\n * @param item - The item be checked if it matches the searchTerm.\n *\n * @param searchTerm - The string the user typed in the search bar.\n *\n * @returns `true` if the `searchTerm` matches the `item` and the `item` shall be kept in the list.\n *\n * @defaultValue\n * ```\n * (\n * item: SiListWidgetItem,\n * searchTerm: string\n * ) => {\n * const aLabel = typeof item.label === 'object' ? item.label.title! : item.label;\n * return aLabel.toLowerCase().includes(searchTerm.toLowerCase());\n * }\n * ```\n */\n readonly filterFn = input<(item: SiListWidgetItem, searchTerm: string) => boolean | undefined>(\n (item: SiListWidgetItem, searchTerm: string) => {\n const aLabel = typeof item.label === 'object' ? item.label.title! : item.label;\n return aLabel.toLowerCase().includes(searchTerm.toLowerCase());\n }\n );\n\n /**\n * The number of skeleton progress indication rows.\n *\n * @defaultValue 6\n */\n readonly numberOfLinks = input(6);\n\n /** Used to display the defined number of ghost items */\n protected readonly ghosts = computed(() => new Array(this.numberOfLinks() ?? 6));\n\n /** Replica of value with pre-translated labels, recomputed when value or language changes. */\n private readonly translatedItems = toSignal(\n toObservable(this.value).pipe(\n switchMap(items => {\n if (!items) {\n return of(undefined);\n }\n const keys = items.map(item =>\n typeof item.label === 'object' ? (item.label.title ?? '') : item.label\n );\n return this.translateService.translateAsync(keys).pipe(\n map(translations =>\n items.map(item => {\n const key = typeof item.label === 'object' ? (item.label.title ?? '') : item.label;\n const translatedLabel = (translations[key] ?? key) as TranslatableString;\n return {\n ...item,\n label:\n typeof item.label === 'object'\n ? { ...item.label, title: translatedLabel }\n : translatedLabel\n };\n })\n )\n );\n })\n )\n );\n\n /** Holds the list items that are displayed. May be filtered and sorted. */\n protected readonly filteredListWidgetItems = computed(() => {\n const value = this.translatedItems();\n const sort = this.sort();\n const searchText = this.searchText();\n let filteredListWidgetItems: SiListWidgetItem[] | undefined;\n if (searchText.length > 0) {\n filteredListWidgetItems = value?.filter((item: SiListWidgetItem) =>\n this.filterFn()(item, searchText)\n );\n } else {\n filteredListWidgetItems = value ? [...value] : undefined;\n }\n\n if (sort) {\n const factor = sort === 'ASC' ? 1 : -1;\n filteredListWidgetItems = filteredListWidgetItems?.sort(\n (a: SiListWidgetItem, b: SiListWidgetItem) => (this.compareFn()(a, b) ?? 0) * factor\n );\n }\n\n return filteredListWidgetItems;\n });\n\n protected readonly searchText = model('');\n}\n","@if (search()) {\n <si-search-bar\n class=\"px-6 py-4\"\n showIcon\n colorVariant=\"base-0\"\n [debounceTime]=\"400\"\n [placeholder]=\"searchPlaceholderLabel() | translate\"\n [(ngModel)]=\"searchText\"\n />\n}\n@let filteredListWidgetItemsList = filteredListWidgetItems();\n@if (!showLoadingIndicator() && filteredListWidgetItemsList) {\n @if (filteredListWidgetItemsList.length > 0) {\n <div class=\"list-group list-group-lg\" role=\"list\">\n @for (item of filteredListWidgetItemsList; track $index) {\n <si-list-widget-item [value]=\"item\" />\n }\n </div>\n } @else {\n <ng-content select=\"[empty-state]\" />\n }\n} @else {\n <div class=\"list-group list-group-lg\" role=\"list\">\n @for (some of ghosts(); track $index) {\n <si-list-widget-item [value]=\"undefined\" />\n }\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, Component, computed, input, model, OnChanges } from '@angular/core';\nimport { elementRight2, elementSortDown, elementSortUp } from '@siemens/element-icons';\nimport { SiCardComponent } from '@siemens/element-ng/card';\nimport { AccentLineType } from '@siemens/element-ng/common';\nimport { ContentActionBarMainItem } from '@siemens/element-ng/content-action-bar';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\nimport { SiListWidgetBodyComponent, SortOrder } from './si-list-widget-body.component';\nimport { SiListWidgetItem } from './si-list-widget-item.component';\n\n/**\n * The `<si-list-widget>` supports an easy composition of links and actions\n * with support for skeleton loading indicator, wrapped in a card.\n */\n@Component({\n selector: 'si-list-widget',\n imports: [\n SiCardComponent,\n SiIconComponent,\n SiLinkDirective,\n SiListWidgetBodyComponent,\n SiTranslatePipe\n ],\n templateUrl: './si-list-widget.component.html',\n host: { class: 'si-list-widget' }\n})\nexport class SiListWidgetComponent\n extends SiWidgetBaseDirective<SiListWidgetItem[]>\n implements OnChanges\n{\n protected readonly icons = addIcons({ elementRight2, elementSortDown, elementSortUp });\n\n /** List widget heading. */\n readonly heading = input<TranslatableString>();\n\n /** Optional footer link for the list widget */\n readonly link = input<Link>();\n\n /**\n * label for the \"search placeholder\" name\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LIST_WIDGET.SEARCH_PLACEHOLDER:Search...`)\n * ```\n */\n readonly searchPlaceholderLabel = input(\n t(() => $localize`:@@SI_LIST_WIDGET.SEARCH_PLACEHOLDER:Search...`)\n );\n\n /**\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LIST_WIDGET.SORT_ASCENDING:Sort ascending`)\n * ```\n */\n readonly sortAscendingLabel = input(\n t(() => $localize`:@@SI_LIST_WIDGET.SORT_ASCENDING:Sort ascending`)\n );\n\n /**\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LIST_WIDGET.SORT_DESCENDING:Sort descending`)\n * ```\n */\n readonly sortDescendingLabel = input(\n t(() => $localize`:@@SI_LIST_WIDGET.SORT_DESCENDING:Sort descending`)\n );\n\n /**\n * Set `ASC` of ascending sorting, `DSC` for descending sorting and `undefined` for no sorting.\n */\n readonly sort = model<SortOrder>();\n\n /**\n * Enables the search functionality.\n *\n * @defaultValue false\n */\n readonly search = input(false, { transform: booleanAttribute });\n\n /**\n * Compare function of for two `SiListWidgetItem`s that is used to sort\n * the array of items. The default compares the item labels by using the\n * string `localeCompare()` function.\n *\n * @param a - first `SiListWidgetItem` of the comparison.\n *\n * @param b - second `SiListWidgetItem` of the comparison.\n *\n * @returns A value `< 0` if `a` is smaller, `> 0` if `b` is smaller, otherwise `0`.\n *\n * @defaultValue\n * ```\n * (\n * a: SiListWidgetItem,\n * b: SiListWidgetItem\n * ) => {\n * const aLabel = typeof a.label === 'object' ? a.label.title! : a.label;\n * const bLabel = typeof b.label === 'object' ? b.label.title! : b.label;\n * return aLabel.localeCompare(bLabel);\n * }\n * ```\n */\n readonly compareFn = input<(a: SiListWidgetItem, b: SiListWidgetItem) => number | undefined>(\n (a: SiListWidgetItem, b: SiListWidgetItem) => {\n const aLabel = typeof a.label === 'object' ? a.label.title! : a.label;\n const bLabel = typeof b.label === 'object' ? b.label.title! : b.label;\n return aLabel.localeCompare(bLabel);\n }\n );\n\n /**\n * Filter function that is used to filter down the list items when the user enters\n * a term in the search bar. Default function.\n *\n * @param item - The item be checked if it matches the searchTerm.\n *\n * @param searchTerm - The string the user typed in the search bar.\n *\n * @returns `true` if the `searchTerm` matches the `item` and the `item` shall be kept in the list.\n *\n * @defaultValue\n * ```\n * (\n * item: SiListWidgetItem,\n * searchTerm: string\n * ) => {\n * const aLabel = typeof item.label === 'object' ? item.label.title! : item.label;\n * return aLabel.toLowerCase().includes(searchTerm.toLowerCase());\n * }\n * ```\n */\n readonly filterFn = input<(item: SiListWidgetItem, searchTerm: string) => boolean | undefined>(\n (item: SiListWidgetItem, searchTerm: string) => {\n const aLabel = typeof item.label === 'object' ? item.label.title! : item.label;\n return aLabel.toLowerCase().includes(searchTerm.toLowerCase());\n }\n );\n\n /**\n * The number of skeleton progress indication rows.\n *\n * @defaultValue 6\n */\n readonly numberOfLinks = input(6);\n /**\n * Optional accent line\n */\n readonly accentLine = input<AccentLineType>();\n\n protected readonly accentClass = computed(() => {\n const accentLine = this.accentLine();\n return accentLine ? 'accent-' + accentLine : '';\n });\n\n /** The menu item array used to display the sort button. */\n protected readonly sortAction = computed(() => {\n const sortAction: ContentActionBarMainItem[] = [\n {\n label: this.sortDescendingLabel(),\n type: 'action',\n icon: this.icons.elementSortUp,\n iconOnly: true,\n action: () => this.doSort()\n }\n ];\n\n if (this.sort() === 'ASC') {\n sortAction[0].label = this.sortDescendingLabel();\n sortAction[0].icon = this.icons.elementSortUp;\n } else {\n sortAction[0].label = this.sortAscendingLabel();\n sortAction[0].icon = this.icons.elementSortDown;\n }\n return sortAction;\n });\n\n private doSort(): void {\n if (this.sort() === 'ASC') {\n this.sort.set('DSC');\n } else {\n this.sort.set('ASC');\n }\n }\n}\n","<si-card\n actionBarViewType=\"expanded\"\n class=\"h-100\"\n [class]=\"accentClass()\"\n [heading]=\"heading()\"\n [primaryActions]=\"sort() ? sortAction() : []\"\n>\n <si-list-widget-body\n body\n [compareFn]=\"compareFn()\"\n [filterFn]=\"filterFn()\"\n [numberOfLinks]=\"numberOfLinks()\"\n [searchPlaceholderLabel]=\"searchPlaceholderLabel()\"\n [search]=\"search()\"\n [sort]=\"sort()\"\n [value]=\"value()\"\n [showLoadingIndicator]=\"showLoadingIndicator()\"\n >\n <ng-content select=\"[empty-state]\" empty-state />\n </si-list-widget-body>\n\n @let linkValue = link();\n @if (linkValue) {\n <div class=\"card-footer\" footer>\n @if (!linkValue.action) {\n <a [siLink]=\"linkValue\">\n {{ linkValue.title | translate }}\n <si-icon class=\"link-icon link-end flip-rtl\" [icon]=\"icons.elementRight2\" />\n </a>\n } @else {\n <button type=\"button\" class=\"btn btn-link\" [siLink]=\"linkValue\"\n >{{ linkValue.title | translate }}\n </button>\n }\n </div>\n }\n</si-card>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CdkMenuTrigger } from '@angular/cdk/menu';\nimport { Component, inject, input, OnChanges, OnInit } from '@angular/core';\nimport { ActivatedRoute, NavigationExtras, RouterLink } from '@angular/router';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\nimport { MenuItem, SiMenuModule } from '@siemens/element-ng/menu';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\n\n/** Base for action items in the timeline widget. */\nexport interface TimelineWidgetActionBase {\n /** Label that is shown to the user. */\n label: TranslatableString;\n /** The web font icon class name (e.g. element-settings-outline). */\n icon?: string;\n /** Defines if only the icon is shown in the default navigation bar. */\n iconOnly?: boolean;\n}\n\n/** Interface representing an action item in the timeline widget. */\nexport interface TimelineWidgetActionButton extends TimelineWidgetActionBase {\n type: 'action';\n /** The class name to define the button style */\n customClass?: string;\n /** Action that called when the item action is triggered. */\n action: (source: this) => void;\n}\n\n/** Interface representing a router link item in the timeline widget. */\nexport interface TimeLineWidgetRouterLink extends TimelineWidgetActionBase {\n type: 'router-link';\n /** Link for the angular router. Accepts the same values as {@link RouterLink}. */\n routerLink: string | any[];\n /** Navigation extras that are passed to the {@link RouterLink}. */\n extras?: NavigationExtras;\n}\n\n/** Interface representing a link item in the timeline widget. */\nexport interface TimeLineWidgetLink extends TimelineWidgetActionBase {\n type: 'link';\n /** The href property of the anchor. */\n href: string;\n /** The target property of the anchor. */\n target?: string;\n}\n\n/** Interface representing a menu item in the timeline widget. */\nexport interface TimelineWidgetMenu {\n type: 'menu';\n menuItems: MenuItem[];\n}\n\n/** Union type for all possible action items in the timeline widget. */\nexport type TimelineWidgetItemAction =\n | TimelineWidgetActionButton\n | TimeLineWidgetLink\n | TimeLineWidgetRouterLink\n | TimelineWidgetMenu;\n\n/**\n * Represents an item in the timeline widget.\n * Each item may contain a timestamp, a title, an icon, an optional description and optional action elements.\n * Actions can be buttons, links, router links, or menus.\n */\nexport interface SiTimelineWidgetItem {\n /**\n * The timestamp of the item.\n */\n timeStamp: TranslatableString;\n /**\n * The title of the item.\n */\n title: TranslatableString;\n /**\n * Optional translatable description.\n */\n description?: TranslatableString;\n /**\n * The icon of the item.\n */\n icon: string;\n /**\n * The color of the icon.\n */\n iconColor?: string;\n /**\n * The stacked icon of the item.\n */\n stackedIcon?: string;\n /**\n * The color of the stacked icon.\n */\n stackedIconColor?: string;\n /**\n * The alt text of the icon\n */\n iconAlt?: TranslatableString;\n /**\n * The related action of the item\n */\n action?: TimelineWidgetItemAction;\n}\n\n/**\n * The items of the `<si-timeline-widget>`.\n */\n@Component({\n selector: 'si-timeline-widget-item',\n imports: [SiIconComponent, SiTranslatePipe, A11yModule, RouterLink, SiMenuModule, CdkMenuTrigger],\n templateUrl: './si-timeline-widget-item.component.html',\n styleUrl: './si-timeline-widget-item.component.scss',\n host: {\n role: 'listitem'\n }\n})\nexport class SiTimelineWidgetItemComponent\n extends SiWidgetBaseDirective<SiTimelineWidgetItem>\n implements OnInit, OnChanges\n{\n /**\n * Whether to show or hide the description row during skeleton progress indication.\n *\n * @defaultValue `true`\n */\n readonly showDescription = input(true);\n\n /**\n * Aria label text for actions button dropdown.\n */\n readonly ariaLabelDropdown = t(\n () => $localize`:@@SI_DASHBOARD.EXPAND_WIDGET_ACTIONS:Expand actions`\n );\n\n protected readonly activatedRoute = inject(ActivatedRoute, { optional: true });\n}\n","@let valueObject = value();\n@if (!showLoadingIndicator() && valueObject) {\n <div class=\"d-flex flex-row gap-4\" [class.pe-4]=\"!valueObject.action\">\n <div class=\"d-flex flex-column align-items-center gap-1 pt-4\">\n <span class=\"icon icon-stack\">\n <si-icon [class]=\"valueObject.iconColor\" [icon]=\"valueObject.icon\" />\n @if (valueObject.stackedIcon) {\n <si-icon [class]=\"valueObject.stackedIconColor\" [icon]=\"valueObject.stackedIcon\" />\n }\n </span>\n @if (valueObject.iconAlt) {\n <span class=\"visually-hidden\">{{ valueObject.iconAlt | translate }}</span>\n }\n <div class=\"si-timeline-widget-item-lower-line\"></div>\n </div>\n <div class=\"d-flex flex-column gap-1 py-4 flex-grow-1\">\n <span class=\"si-caption text-secondary\">{{ valueObject.timeStamp | translate }}</span>\n <span class=\"si-h5\">{{ valueObject.title | translate }}</span>\n @if (valueObject.description) {\n <span class=\"si-body text-secondary\">{{ valueObject.description | translate }}</span>\n }\n </div>\n @if (valueObject.action) {\n @let action = valueObject.action;\n <div class=\"si-timeline-widget-item-action align-self-center\">\n @if (action.type === 'action') {\n <button\n type=\"button\"\n class=\"d-flex btn\"\n [class]=\"action.customClass ?? 'btn-tertiary'\"\n [class.btn-icon]=\"action.iconOnly\"\n (click)=\"action.action(action)\"\n >\n @if (action.icon) {\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n }\n <span [class.visually-hidden]=\"action.iconOnly\">\n {{ action.label | translate }}\n </span>\n </button>\n } @else if (action.type === 'router-link') {\n <a\n class=\"d-flex btn btn-tertiary-ghost\"\n [routerLink]=\"action.routerLink\"\n [queryParams]=\"action.extras?.queryParams\"\n [queryParamsHandling]=\"action.extras?.queryParamsHandling\"\n [fragment]=\"action.extras?.fragment\"\n [state]=\"action.extras?.state\"\n [relativeTo]=\"action.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"action.extras?.preserveFragment\"\n [skipLocationChange]=\"action.extras?.skipLocationChange\"\n [replaceUrl]=\"action.extras?.replaceUrl\"\n [attr.aria-label]=\"action.label | translate\"\n [class.btn-icon]=\"action.iconOnly\"\n >\n @if (action.icon) {\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n }\n <span [class.visually-hidden]=\"action.iconOnly\">\n {{ action.label | translate }}\n </span></a\n >\n } @else if (action.type === 'link') {\n <a\n class=\"d-flex btn btn-tertiary-ghost\"\n [href]=\"action.href\"\n [target]=\"action.target\"\n [attr.aria-label]=\"action.label | translate\"\n [class.btn-icon]=\"action.iconOnly\"\n >\n @if (action.icon) {\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n }\n <span [class.visually-hidden]=\"action.iconOnly\">\n {{ action.label | translate }}\n </span></a\n >\n } @else if (action.type === 'menu') {\n <button\n type=\"button\"\n class=\"btn btn-icon btn-tertiary element-options-vertical\"\n [attr.aria-label]=\"ariaLabelDropdown | translate\"\n [cdkMenuTriggerFor]=\"actionMenu\"\n ></button>\n\n <ng-template #actionMenu>\n <si-menu-factory [items]=\"action.menuItems\" />\n </ng-template>\n }\n </div>\n }\n </div>\n} @else {\n <div class=\"d-flex flex-row\">\n <div class=\"d-flex flex-column align-items-center gap-1 pt-4 pe-4\">\n <div class=\"p-5 si-skeleton\"></div>\n </div>\n <div class=\"d-flex flex-column flex-grow-1 gap-1 py-4\">\n <span class=\"si-link-widget-skeleton\"></span>\n <span class=\"si-link-widget-skeleton\" [class.w-50]=\"!showDescription()\"></span>\n @if (showDescription()) {\n <span class=\"si-link-widget-skeleton w-50\"></span>\n }\n </div>\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, input } from '@angular/core';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\nimport {\n SiTimelineWidgetItem,\n SiTimelineWidgetItemComponent\n} from './si-timeline-widget-item.component';\n\n@Component({\n selector: 'si-timeline-widget-body',\n imports: [SiTimelineWidgetItemComponent],\n templateUrl: './si-timeline-widget-body.component.html',\n styleUrl: './si-timeline-widget-body.component.scss'\n})\nexport class SiTimelineWidgetBodyComponent extends SiWidgetBaseDirective<SiTimelineWidgetItem[]> {\n /**\n * Number of skeleton progress indication items.\n *\n * @defaultValue 4\n */\n readonly numberOfItems = input(4);\n\n /**\n * Whether to show or hide the description row during skeleton progress indication.\n *\n * @defaultValue `true`\n */\n readonly showDescription = input(true);\n\n /** Used to display the defined number of ghost items */\n protected readonly ghosts = computed(() => {\n return new Array(this.numberOfItems() ?? 4);\n });\n}\n","@let valueObject = value();\n<div\n class=\"focus-inside\"\n tabindex=\"0\"\n [attr.role]=\"\n (!showLoadingIndicator() && valueObject && valueObject.length > 0) || showLoadingIndicator()\n ? 'list'\n : null\n \"\n>\n @if (!showLoadingIndicator() && valueObject) {\n @if (valueObject && valueObject.length > 0) {\n @for (item of valueObject; track $index) {\n <si-timeline-widget-item [value]=\"item\" />\n }\n } @else {\n <ng-content select=\"[empty-state]\" />\n }\n } @else {\n @for (some of ghosts(); track $index) {\n <si-timeline-widget-item [value]=\"undefined\" [showDescription]=\"showDescription()\" />\n }\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, input, OnChanges } from '@angular/core';\nimport { elementRight2 } from '@siemens/element-icons';\nimport { SiCardComponent } from '@siemens/element-ng/card';\nimport { AccentLineType, MenuItem as MenuItemLegacy } from '@siemens/element-ng/common';\nimport { ContentActionBarMainItem } from '@siemens/element-ng/content-action-bar';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { MenuItem } from '@siemens/element-ng/menu';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\nimport { SiTimelineWidgetBodyComponent } from './si-timeline-widget-body.component';\nimport { SiTimelineWidgetItem } from './si-timeline-widget-item.component';\n\n@Component({\n selector: 'si-timeline-widget',\n imports: [\n SiLinkDirective,\n SiCardComponent,\n SiTimelineWidgetBodyComponent,\n SiTranslatePipe,\n SiIconComponent\n ],\n templateUrl: './si-timeline-widget.component.html'\n})\nexport class SiTimelineWidgetComponent\n extends SiWidgetBaseDirective<SiTimelineWidgetItem[]>\n implements OnChanges\n{\n /**\n * Timeline widget header text.\n */\n readonly heading = input<TranslatableString>();\n /**\n * Input list of primary action items. Supports up to **4** actions and omits additional ones.\n *\n * @defaultValue []\n */\n readonly primaryActions = input<(MenuItemLegacy | ContentActionBarMainItem)[]>([]);\n /**\n * Input list of secondary action items.\n *\n * @defaultValue []\n */\n readonly secondaryActions = input<(MenuItemLegacy | MenuItem)[]>([]);\n /**\n * Link that leads the user to more information\n * or triggers and action. The `link.title` is displayed.\n * The title will be translated.\n */\n readonly link = input<Link>();\n\n /**\n * Number of skeleton progress indication items.\n *\n * @defaultValue 4\n */\n readonly numberOfItems = input(4);\n\n /**\n * Whether to show or hide the description row during skeleton progress indication.\n *\n * @defaultValue `true`\n */\n readonly showDescription = input(true);\n /**\n * Optional accent line\n */\n readonly accentLine = input<AccentLineType>();\n\n protected readonly accentClass = computed(() => {\n const accentLine = this.accentLine();\n return accentLine ? 'accent-' + accentLine : '';\n });\n\n protected readonly icons = addIcons({ elementRight2 });\n}\n","<si-card\n class=\"h-100\"\n [class]=\"accentClass()\"\n [heading]=\"heading()\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n>\n <si-timeline-widget-body\n body\n [value]=\"value()\"\n [showDescription]=\"showDescription()\"\n [numberOfItems]=\"numberOfItems()\"\n [class.pb-6]=\"!link()\"\n [showLoadingIndicator]=\"showLoadingIndicator()\"\n >\n <ng-content select=\"[empty-state]\" empty-state />\n </si-timeline-widget-body>\n @let linkValue = link();\n @if (linkValue) {\n <div class=\"card-footer\" footer>\n @if (!linkValue.action) {\n <a [siLink]=\"linkValue\">\n {{ linkValue.title | translate }}\n <si-icon class=\"link-icon link-end flip-rtl\" [icon]=\"icons.elementRight2\" />\n </a>\n } @else {\n <button type=\"button\" class=\"btn btn-link\" [siLink]=\"linkValue\">{{\n linkValue.title | translate\n }}</button>\n }\n </div>\n }\n</si-card>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input, OnInit } from '@angular/core';\nimport { EntityStatusType } from '@siemens/element-ng/common';\nimport { SiIconComponent, SiStatusIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\n\n/**\n * The body of the `<si-value-widget>`. Useful for compositions.\n */\n@Component({\n selector: 'si-value-widget-body',\n imports: [SiIconComponent, SiStatusIconComponent, SiTranslatePipe],\n templateUrl: './si-value-widget-body.component.html'\n})\nexport class SiValueWidgetBodyComponent\n extends SiWidgetBaseDirective<TranslatableString>\n implements OnInit\n{\n /**\n * The unit of the value (e.g. kWh or users). Only visible if `value` is available.\n */\n readonly unit = input<TranslatableString>();\n /**\n * The element icon name. Only visible if `value` is available.\n */\n readonly icon = input<string>();\n /**\n * Show a status icon instead of the {@link icon}.\n */\n readonly status = input<EntityStatusType>();\n /**\n * Short description of the value. A description is mandatory\n * to show an icon. Only visible if `value` is available.\n */\n readonly description = input<TranslatableString>();\n}\n","@if (!showLoadingIndicator()) {\n @if (value()) {\n <span class=\"si-value-widget-value\">{{ value() | translate }}</span>\n <span class=\"si-value-widget-unit\">{{ unit() | translate }}</span>\n @if (description()) {\n <div class=\"si-value-widget-description\">\n @let statusValue = status();\n @let iconValue = icon();\n @if (statusValue) {\n <si-status-icon class=\"icon\" [status]=\"statusValue\" />\n } @else if (iconValue) {\n <si-icon class=\"icon\" [icon]=\"iconValue\" />\n }\n <span>{{ description() | translate }}</span>\n </div>\n }\n }\n} @else {\n <span class=\"si-value-widget-value w-100\">\n <div class=\"si-value-widget-value-skeleton\"></div>\n </span>\n <div class=\"si-value-widget-description si-skeleton w-100\"></div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, Component, computed, input } from '@angular/core';\nimport { SiCardComponent } from '@siemens/element-ng/card';\nimport {\n AccentLineType,\n EntityStatusType,\n MenuItem as MenuItemLegacy\n} from '@siemens/element-ng/common';\nimport { ContentActionBarMainItem } from '@siemens/element-ng/content-action-bar';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { MenuItem } from '@siemens/element-ng/menu';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiValueWidgetBodyComponent } from './si-value-widget-body.component';\n\n/**\n * Is a dynamic UI component that not only displays information, but also includes\n * embedded actions which the user can interact with to perform tasks directly\n * related to the card's content. Actions might include editing settings,\n * initiating processes, or deleting resources.\n *\n * The actionable widget turns data representation into an interactive hub,\n * streamlining the user's tasks and decisions associated with the card's content.\n *\n * This component is a wrapper using the `.si-value-widget` CSS classes and the\n * `<si-card>` component. For more configuration options, use the CSS classes directly.\n */\n@Component({\n selector: 'si-value-widget',\n imports: [SiCardComponent, SiLinkDirective, SiTranslatePipe, SiValueWidgetBodyComponent],\n templateUrl: './si-value-widget.component.html'\n})\nexport class SiValueWidgetComponent {\n /**\n * Value widget header text.\n */\n readonly heading = input<TranslatableString>();\n /**\n * Input list of primary action items. Supports up to **4** actions and omits additional ones.\n *\n * @defaultValue []\n */\n readonly primaryActions = input<(MenuItemLegacy | ContentActionBarMainItem)[]>([]);\n /**\n * Input list of secondary action items.\n *\n * @defaultValue []\n */\n readonly secondaryActions = input<(MenuItemLegacy | MenuItem)[]>([]);\n /**\n * The main value to be displayed. If no value is set,\n * the skeleton indicates the loading of the value. Disable\n * the automatic loading mechanism by setting `SiValueWidgetComponent.disableAutoLoadingIndicator`.\n */\n readonly value = input<TranslatableString>();\n /**\n * The unit of the value (e.g. kWh or users). Only visible if `value` is available.\n */\n readonly unit = input<TranslatableString>();\n /**\n * The element icon name. Only visible if `value` is available.\n */\n readonly icon = input<string>();\n /**\n * Show a status icon instead of the {@link icon}.\n */\n readonly status = input<EntityStatusType>();\n /**\n * Short description of the value. A description is mandatory\n * to show an icon. Only visible if `value` is available.\n */\n readonly description = input<TranslatableString>();\n /**\n * Link that leads the user to more information\n * or triggers and action. The `link.title` is displayed.\n * The title will be translated.\n */\n readonly link = input<Link>();\n /**\n * Option to disable automatic start of skeleton loading indication.\n *\n * @defaultValue false\n */\n readonly disableAutoLoadingIndicator = input(false, { transform: booleanAttribute });\n /**\n * Input to start and stop the skeleton loading indication.\n *\n * @defaultValue false\n */\n readonly showLoadingIndicator = input(false, { transform: booleanAttribute });\n /**\n * Initial delay time in milliseconds before enabling loading indicator.\n * Only used once initially during construction.\n *\n * @defaultValue 300\n */\n readonly initialLoadingIndicatorDebounceTime = input(300);\n /**\n * Image source for the card.\n */\n readonly imgSrc = input<string>();\n /**\n * Alt text for a provided image.\n */\n readonly imgAlt = input<string>();\n /**\n * Defines if an image is placed on top or start (left) of the card.\n *\n * @defaultValue 'vertical'\n */\n readonly imgDir = input<'horizontal' | 'vertical'>('vertical');\n /**\n * Sets the image [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) CSS property.\n *\n * @defaultValue 'scale-down'\n */\n readonly imgObjectFit = input<'contain' | 'cover' | 'fill' | 'none' | 'scale-down'>('scale-down');\n /**\n * Sets the image [object-position](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position) CSS property.\n */\n readonly imgObjectPosition = input<string>();\n /**\n * Optional accent line\n */\n readonly accentLine = input<AccentLineType>();\n\n protected readonly accentClass = computed(() => {\n const accentLine = this.accentLine();\n return accentLine ? 'accent-' + accentLine : '';\n });\n}\n","<si-card\n class=\"h-100\"\n [class]=\"accentClass()\"\n [heading]=\"heading()\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [imgSrc]=\"imgSrc()\"\n [imgDir]=\"imgDir()\"\n [imgAlt]=\"imgAlt()\"\n [imgObjectFit]=\"imgObjectFit()\"\n [imgObjectPosition]=\"imgObjectPosition()\"\n>\n <div class=\"card-body\" body>\n <si-value-widget-body\n [value]=\"value()\"\n [unit]=\"unit()\"\n [icon]=\"icon()\"\n [status]=\"status()\"\n [description]=\"description()\"\n [disableAutoLoadingIndicator]=\"disableAutoLoadingIndicator()\"\n [showLoadingIndicator]=\"showLoadingIndicator()\"\n [initialLoadingIndicatorDebounceTime]=\"initialLoadingIndicatorDebounceTime()\"\n />\n </div>\n @let linkObject = link();\n @if (linkObject) {\n <div class=\"card-footer\" footer>\n <a [siLink]=\"linkObject\">{{ linkObject.title | translate }}</a>\n </div>\n }\n</si-card>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-dashboard-card.component';\nexport * from './si-dashboard.component';\nexport * from './si-dashboard.module';\nexport * from './si-dashboard.service';\nexport * from './widgets/si-link-widget/si-link-widget.component';\nexport * from './widgets/si-list-widget/si-list-widget.component';\nexport * from './widgets/si-list-widget/si-list-widget-body.component';\nexport * from './widgets/si-list-widget/si-list-widget-item.component';\nexport * from './widgets/si-timeline-widget/si-timeline-widget.component';\nexport * from './widgets/si-timeline-widget/si-timeline-widget-body.component';\nexport * from './widgets/si-timeline-widget/si-timeline-widget-item.component';\nexport * from './widgets/si-value-widget/si-value-widget-body.component';\nexport * from './widgets/si-value-widget/si-value-widget.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"siemens-element-ng-dashboard.mjs","sources":["../../../../projects/element-ng/dashboard/si-dashboard.service.ts","../../../../projects/element-ng/dashboard/si-dashboard-card.component.ts","../../../../projects/element-ng/dashboard/si-dashboard-card.component.html","../../../../projects/element-ng/dashboard/si-dashboard.component.ts","../../../../projects/element-ng/dashboard/si-dashboard.component.html","../../../../projects/element-ng/dashboard/si-dashboard.module.ts","../../../../projects/element-ng/dashboard/widgets/si-widget-base.directive.ts","../../../../projects/element-ng/dashboard/widgets/si-link-widget/si-link-widget.component.ts","../../../../projects/element-ng/dashboard/widgets/si-link-widget/si-link-widget.component.html","../../../../projects/element-ng/dashboard/widgets/si-list-widget/si-list-widget-item.component.ts","../../../../projects/element-ng/dashboard/widgets/si-list-widget/si-list-widget-item.component.html","../../../../projects/element-ng/dashboard/widgets/si-list-widget/si-list-widget-body.component.ts","../../../../projects/element-ng/dashboard/widgets/si-list-widget/si-list-widget-body.component.html","../../../../projects/element-ng/dashboard/widgets/si-list-widget/si-list-widget.component.ts","../../../../projects/element-ng/dashboard/widgets/si-list-widget/si-list-widget.component.html","../../../../projects/element-ng/dashboard/widgets/si-timeline-widget/si-timeline-widget-item.component.ts","../../../../projects/element-ng/dashboard/widgets/si-timeline-widget/si-timeline-widget-item.component.html","../../../../projects/element-ng/dashboard/widgets/si-timeline-widget/si-timeline-widget-body.component.ts","../../../../projects/element-ng/dashboard/widgets/si-timeline-widget/si-timeline-widget-body.component.html","../../../../projects/element-ng/dashboard/widgets/si-timeline-widget/si-timeline-widget.component.ts","../../../../projects/element-ng/dashboard/widgets/si-timeline-widget/si-timeline-widget.component.html","../../../../projects/element-ng/dashboard/widgets/si-value-widget/si-value-widget-body.component.ts","../../../../projects/element-ng/dashboard/widgets/si-value-widget/si-value-widget-body.component.html","../../../../projects/element-ng/dashboard/widgets/si-value-widget/si-value-widget.component.ts","../../../../projects/element-ng/dashboard/widgets/si-value-widget/si-value-widget.component.html","../../../../projects/element-ng/dashboard/widgets/si-weather-widget/si-weather-icon.resolver.ts","../../../../projects/element-ng/dashboard/widgets/si-weather-widget/si-weather-widget-illustration.component.ts","../../../../projects/element-ng/dashboard/widgets/si-weather-widget/si-weather-widget-forecast.component.ts","../../../../projects/element-ng/dashboard/widgets/si-weather-widget/si-weather-widget-forecast.component.html","../../../../projects/element-ng/dashboard/widgets/si-weather-widget/si-weather-widget-skeleton.component.ts","../../../../projects/element-ng/dashboard/widgets/si-weather-widget/si-weather-widget-body.component.ts","../../../../projects/element-ng/dashboard/widgets/si-weather-widget/si-weather-widget-body.component.html","../../../../projects/element-ng/dashboard/widgets/si-weather-widget/si-weather-widget.component.ts","../../../../projects/element-ng/dashboard/widgets/si-weather-widget/si-weather-widget.component.html","../../../../projects/element-ng/dashboard/index.ts","../../../../projects/element-ng/dashboard/siemens-element-ng-dashboard.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { SiDashboardCardComponent } from './si-dashboard-card.component';\n\n@Injectable()\nexport class SiDashboardService {\n private cards = new BehaviorSubject<SiDashboardCardComponent[]>([]);\n /**\n * Subject containing the current dashboard cards as a list.\n *\n * @defaultValue this.cards.asObservable()\n */\n readonly cards$ = this.cards.asObservable();\n\n /**\n * Registers a new dashboard card.\n */\n register(card: SiDashboardCardComponent): void {\n const nextCards = this.cards.value;\n nextCards.push(card);\n this.cards.next(nextCards);\n }\n\n /**\n * Removes a registered dashboard card.\n */\n unregister(card: SiDashboardCardComponent): void {\n const nextCards = this.cards.value;\n const index = nextCards.indexOf(card);\n if (index > -1) {\n nextCards.splice(index, 1);\n this.cards.next(nextCards);\n }\n }\n}\n","/**\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 OnDestroy,\n output,\n signal\n} from '@angular/core';\nimport { elementPinch, elementZoom } from '@siemens/element-icons';\nimport { SiCardComponent, SiCardHeaderComponent } from '@siemens/element-ng/card';\nimport { MenuItem } from '@siemens/element-ng/common';\nimport { ContentActionBarMainItem } from '@siemens/element-ng/content-action-bar';\nimport { addIcons } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\nimport { SiDashboardService } from './si-dashboard.service';\n\n@Component({\n selector: 'si-dashboard-card',\n imports: [SiCardHeaderComponent, SiTranslatePipe],\n templateUrl: './si-dashboard-card.component.html',\n styleUrl: './si-dashboard-card.component.scss',\n host: {\n '[class.elevation-2]': 'isExpanded()',\n '[class.expanded]': 'isExpanded()',\n '[class.d-none]': 'hide'\n }\n})\nexport class SiDashboardCardComponent extends SiCardComponent implements OnDestroy {\n /**\n * Description of cancel button & action.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DASHBOARD.RESTORE:Restore`)\n * ```\n */\n readonly restoreText = input(t(() => $localize`:@@SI_DASHBOARD.RESTORE:Restore`));\n /**\n * Description of expand button & action.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_DASHBOARD.EXPAND:Expand`)\n * ```\n */\n readonly expandText = input(t(() => $localize`:@@SI_DASHBOARD.EXPAND:Expand`));\n /**\n * Option to enable and show the UI controls for card expand functionality.\n * `Expand` and `restore` action items will be added to the content action bar.\n * The expand resizing has to be implemented by the container of the card.\n *\n * @defaultValue false\n */\n readonly enableExpandInteraction = input(false, { transform: booleanAttribute });\n\n /**\n * Used in combination with si-dashboard to show filters when a card is expanded or not.\n *\n * @defaultValue true\n */\n readonly showMenubar = input(true, { transform: booleanAttribute });\n /**\n * Emitter for size state change\n */\n readonly expandChange = output<boolean>();\n\n /**\n * Whether the card is currently expanded.\n *\n * @defaultValue false\n */\n readonly isExpanded = signal(false);\n /** @internal */\n hide = false;\n /** @internal */\n readonly enableExpandInteractionInternal = signal(false);\n readonly enableExpandInteractionComputed = computed(\n () => this.enableExpandInteraction() || this.enableExpandInteractionInternal()\n );\n /** @internal */\n element = inject(ElementRef);\n\n override readonly displayContentActionBar = computed(\n () => this.primaryActionsComputed()?.length > 0 || this.secondaryActions()?.length > 0\n );\n\n protected readonly actionBarViewTypeComputed = computed(() => {\n if (!this.hasContentBarActions()) {\n if (this.enableExpandInteractionComputed()) {\n return 'expanded';\n } else {\n return this.actionBarViewType();\n }\n } else {\n return this.actionBarViewType();\n }\n });\n\n protected readonly actionBarTitleComputed = computed(() => {\n if (!this.hasContentBarActions()) {\n if (this.enableExpandInteractionComputed()) {\n return this.expandRestoreIconTooltip();\n } else {\n return this.actionBarTitle();\n }\n } else {\n return this.actionBarTitle();\n }\n });\n\n protected readonly primaryActionsComputed = computed<(ContentActionBarMainItem | MenuItem)[]>(\n () => {\n const expandRestoreButtonActions: ContentActionBarMainItem[] = [\n {\n type: 'action',\n label: this.isExpanded() ? this.restoreText() : this.expandText(),\n icon: this.isExpanded() ? this.icons.elementPinch : this.icons.elementZoom,\n iconOnly: true,\n action: () => this.expandCard(!this.isExpanded())\n }\n ];\n\n if (!this.hasContentBarActions()) {\n if (this.enableExpandInteractionComputed()) {\n return expandRestoreButtonActions;\n } else {\n return [];\n }\n } else {\n if (!this.enableExpandInteractionComputed()) {\n return this.primaryActions();\n } else {\n const action = this.isExpanded() ? this.restoreActionItem() : this.expandActionItem();\n if (this.primaryActions() && this.primaryActions().length > 0) {\n return [...this.primaryActions(), action];\n } else {\n return [action];\n }\n }\n }\n }\n );\n\n private readonly icons = addIcons({\n elementPinch,\n elementZoom\n });\n private readonly expandRestoreIconTooltip = computed(() => {\n return this.isExpanded() ? this.restoreText() : this.expandText();\n });\n private readonly expandActionItem = computed(() => {\n return {\n type: 'action',\n label: this.expandText(),\n icon: this.icons.elementZoom,\n iconOnly: true,\n action: () => this.expandCard(true)\n } as ContentActionBarMainItem;\n });\n private readonly restoreActionItem = computed(() => {\n return {\n type: 'action',\n label: this.restoreText(),\n icon: this.icons.elementPinch,\n iconOnly: true,\n action: () => this.expandCard(false)\n } as ContentActionBarMainItem;\n });\n private readonly hasContentBarActions = computed(() => {\n return this.primaryActions()?.length > 0 || this.secondaryActions()?.length > 0;\n });\n private dashboardService = inject(SiDashboardService, { optional: true });\n\n constructor() {\n super();\n this.dashboardService?.register(this);\n }\n\n ngOnDestroy(): void {\n this.dashboardService?.unregister(this);\n }\n\n /**\n * Expand the dashboard card.\n */\n expand(): void {\n this.expandCard(true);\n }\n\n /**\n * Restore the dashboard card to the original, non-expanded state.\n */\n restore(): void {\n this.expandCard(false);\n }\n\n private expandCard(expand: boolean): void {\n this.isExpanded.set(expand);\n this.expandChange.emit(expand);\n }\n}\n","@if (imgSrc()) {\n <img\n class=\"card-content-split\"\n [class.card-img-top]=\"imgDir() !== 'horizontal'\"\n [class.card-img-start]=\"imgDir() === 'horizontal'\"\n [attr.src]=\"imgSrc()\"\n [attr.alt]=\"imgAlt() | translate\"\n />\n}\n\n<div class=\"content-container\" [class.card-content-split]=\"imgSrc()\">\n @if (heading() || displayContentActionBar()) {\n <si-card-header\n [heading]=\"heading()\"\n [subHeading]=\"subHeading()\"\n [primaryActions]=\"primaryActionsComputed()\"\n [secondaryActions]=\"secondaryActions()\"\n [actionParam]=\"actionParam()\"\n [actionBarViewType]=\"actionBarViewTypeComputed()\"\n [actionBarTitle]=\"actionBarTitleComputed()\"\n >\n <ng-content select=\"[headerIcon]\" ngProjectAs=\"[headerIcon]\" />\n </si-card-header>\n }\n <ng-content #cardBody select=\"[body]\" />\n <ng-content #cardFooter select=\"[footer]\" />\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkPortalOutlet, DomPortal, PortalModule } from '@angular/cdk/portal';\nimport { ViewportScroller } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n DOCUMENT,\n ElementRef,\n inject,\n input,\n OnChanges,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ScrollbarHelper } from '@siemens/element-ng/common';\nimport {\n BOOTSTRAP_BREAKPOINTS,\n ElementDimensions,\n ResizeObserverService\n} from '@siemens/element-ng/resize-observer';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { SiDashboardCardComponent } from './si-dashboard-card.component';\nimport { SiDashboardService } from './si-dashboard.service';\n\nconst FIX_SCROLL_PADDING_RESIZE_OBSERVER_THROTTLE = 10;\n\n@Component({\n selector: 'si-dashboard',\n imports: [PortalModule, SiTranslatePipe],\n templateUrl: './si-dashboard.component.html',\n styleUrl: './si-dashboard.component.scss',\n providers: [SiDashboardService],\n host: { class: 'si-layout-fixed-height' }\n})\nexport class SiDashboardComponent implements OnChanges, AfterViewInit {\n private readonly destroyRef = inject(DestroyRef);\n /**\n * Heading for the dashboard page.\n */\n readonly heading = input<TranslatableString>();\n\n /**\n * Opt-in to enable expand interaction for all cards.\n *\n * @defaultValue false\n */\n readonly enableExpandInteractions = input(false, { transform: booleanAttribute });\n\n /**\n * Option to turn off the sticky behavior of the heading and menu bar.\n *\n * @defaultValue true\n */\n readonly sticky = input(true, { transform: booleanAttribute });\n\n /**\n * Option to hide the menu bar.\n *\n * @defaultValue false\n */\n readonly hideMenubar = input(false, { transform: booleanAttribute });\n\n /**\n * Is `true` if a card is expanded.\n * @defaultref {@link _isExpanded}\n */\n get isExpanded(): boolean {\n return this._isExpanded;\n }\n\n protected dashboardFrameEndPadding: number | null = null;\n protected readonly hideMenubarComputed = computed(\n () => this.hideMenubar() || this.hideMenubarInternal()\n );\n\n private _isExpanded = false;\n private scrollPosition: [number, number] = [0, 0];\n\n private readonly reinitCards$ = new Subject<void>();\n private cards: SiDashboardCardComponent[] = [];\n private readonly expandedPortalOutlet = viewChild.required('expandedPortalOutlet', {\n read: CdkPortalOutlet\n });\n private readonly dashboardFrame = viewChild.required<ElementRef<HTMLElement>>('dashboardFrame');\n private readonly dashboard = viewChild.required<ElementRef<HTMLElement>>('dashboard');\n\n private dashboardFrameDimensions?: ElementDimensions;\n private dashboardDimensions?: ElementDimensions;\n\n private scroller = inject(ViewportScroller);\n private dashboardService = inject(SiDashboardService);\n private resizeObserver = inject(ResizeObserverService);\n private scrollbarHelper = inject(ScrollbarHelper);\n private cdRef = inject(ChangeDetectorRef);\n private document = inject(DOCUMENT);\n private readonly hideMenubarInternal = signal(false);\n\n constructor() {\n this.dashboardService.cards$\n .pipe(takeUntilDestroyed())\n .subscribe(cards => this.subscribeToCards(cards));\n\n this.destroyRef.onDestroy(() => this.reinitCards$.complete());\n }\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (changes.enableExpandInteractions) {\n this.initCards();\n }\n }\n\n ngAfterViewInit(): void {\n this.resizeObserver\n .observe(this.dashboard().nativeElement, FIX_SCROLL_PADDING_RESIZE_OBSERVER_THROTTLE)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(x => this.setDashboardFrameEndPadding(this.dashboardFrameDimensions, x));\n this.resizeObserver\n .observe(this.dashboardFrame().nativeElement, FIX_SCROLL_PADDING_RESIZE_OBSERVER_THROTTLE)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(dims => this.setDashboardFrameEndPadding(dims, this.dashboardDimensions));\n }\n\n private subscribeToCards(cards: SiDashboardCardComponent[]): void {\n this.cards = cards;\n this.initCards();\n }\n\n private initCards(): void {\n this.reinitCards$.next();\n\n for (const card of this.cards) {\n // We only enforce expand if the dashboard value is true, otherwise we would remove the individual\n // card settings.\n const enableExpandInteractions = this.enableExpandInteractions();\n if (enableExpandInteractions) {\n card.enableExpandInteractionInternal.set(enableExpandInteractions);\n }\n\n outputToObservable(card.expandChange)\n .pipe(takeUntil(this.reinitCards$), takeUntilDestroyed(this.destroyRef))\n .subscribe((expand: boolean) => {\n if (expand) {\n this.expand(card);\n } else {\n this.restoreDashboard();\n }\n this.cdRef.markForCheck();\n });\n }\n }\n\n /**\n * Expands the provided card to full size in the dashboard.\n * @param card - The card to be expanded.\n */\n public expand(card: SiDashboardCardComponent): void {\n if (this.isExpanded) {\n this.restoreDashboard();\n }\n if (this.sticky()) {\n this.scrollPosition = [\n this.dashboardFrame().nativeElement.scrollLeft,\n this.dashboardFrame().nativeElement.scrollTop\n ];\n } else {\n this.scrollPosition = this.scroller.getScrollPosition();\n }\n\n // Make sure card.expand() is called first and prevent recursions.\n if (!card.isExpanded()) {\n card.expand();\n } else {\n if (!card.showMenubar()) {\n this.hideMenubarInternal.set(true);\n }\n this._isExpanded = true;\n this.expandedPortalOutlet().detach();\n this.expandedPortalOutlet().attach(new DomPortal(card.element.nativeElement));\n }\n }\n\n /**\n * Restores the expanded card to it's previous position.\n */\n public restore(): void {\n // Restore all cards\n for (const card of this.cards) {\n if (card.isExpanded()) {\n card.restore();\n }\n }\n // Restore the dashboard and scroll to previous position\n this.restoreDashboard();\n this.cdRef.markForCheck();\n }\n\n /**\n * Restored the UI state of the dashboard. This method is only part\n * of restoring a card and needs to be invoked after the card.restore()\n * method. In general this is achieved by listening to card events.\n */\n private restoreDashboard(): void {\n this.expandedPortalOutlet().detach();\n this.hideMenubarInternal.set(false);\n this.toggleCardsHide(false);\n const scrollBehavior = this.document.documentElement.style.scrollBehavior;\n this.document.documentElement.style.scrollBehavior = 'auto';\n setTimeout(() => {\n if (this.sticky()) {\n this.dashboardFrame().nativeElement.scrollTo({\n left: this.scrollPosition[0],\n top: this.scrollPosition[1],\n behavior: 'auto'\n });\n } else {\n this.scroller.scrollToPosition(this.scrollPosition);\n this.document.documentElement.style.scrollBehavior = scrollBehavior;\n }\n this.cdRef.markForCheck();\n });\n this._isExpanded = false;\n }\n\n private toggleCardsHide(expand: boolean): void {\n for (const card of this.cards) {\n card.hide = !card.isExpanded() && expand;\n }\n }\n\n private setDashboardFrameEndPadding(\n dashboardFrameDimensions?: ElementDimensions,\n dashboardDimensions?: ElementDimensions\n ): void {\n if (!this.sticky()) {\n return;\n }\n\n if (\n this.dashboardDimensions === dashboardDimensions &&\n this.dashboardFrameDimensions === dashboardFrameDimensions\n ) {\n return;\n }\n\n this.dashboardDimensions = dashboardDimensions;\n this.dashboardFrameDimensions = dashboardFrameDimensions;\n\n let padding = this.document.body.offsetWidth >= BOOTSTRAP_BREAKPOINTS.mdMinimum ? 32 : 16;\n if (\n dashboardDimensions &&\n dashboardFrameDimensions &&\n dashboardDimensions.height > dashboardFrameDimensions.height\n ) {\n padding = padding - this.scrollbarHelper.width;\n }\n this.dashboardFrameEndPadding = padding;\n this.cdRef.markForCheck();\n }\n}\n","<div\n class=\"si-layout-fixed-height si-dashboard si-layout-main-padding py-6\"\n [class.sticky]=\"sticky()\"\n>\n <div class=\"si-dashboard-header\" [class.sticky]=\"sticky()\">\n @if (heading()) {\n <div class=\"si-layout-header\">\n <h2 class=\"si-layout-title si-layout-top-element\">{{ heading() | translate }}</h2>\n </div>\n }\n @if (!hideMenubarComputed()) {\n <div class=\"mb-6\" [class.si-layout-top-element]=\"!heading()\">\n <ng-content select=\"[menubar]\" />\n </div>\n }\n </div>\n <div\n #dashboardFrame\n class=\"si-layout-fixed-height si-dashboard-content ps-2 pt-2 ms-n2 mt-n2\"\n [class.sticky]=\"sticky()\"\n [style.padding-inline-end.px]=\"dashboardFrameEndPadding\"\n >\n <div class=\"si-layout-fixed-height\" [class.d-none]=\"isExpanded\">\n <div #dashboard class=\"si-layout-fixed-height fix-si-layout-fixed-height\">\n <ng-content select=\"[dashboard]\" />\n </div>\n </div>\n <div class=\"position-relative flex-grow-1 flex-shrink-1 mb-6\" [class.d-none]=\"!isExpanded\">\n <ng-container #expandedPortalOutlet cdkPortalOutlet />\n </div>\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiDashboardCardComponent } from './si-dashboard-card.component';\nimport { SiDashboardComponent } from './si-dashboard.component';\n\n@NgModule({\n imports: [SiDashboardCardComponent, SiDashboardComponent],\n exports: [SiDashboardCardComponent, SiDashboardComponent]\n})\nexport class SiDashboardModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n computed,\n Directive,\n input,\n OnChanges,\n OnInit,\n signal\n} from '@angular/core';\n\n/**\n * The SiWidgetBaseDirective<T> implements the timing for the skeleton loading\n * indicator of widgets. It supports a generic value input property that represents\n * the main value to be displayed by a widget. When the value is not set, the `showLoadingIndicator`\n * changes after the `initialLoadingIndicatorDebounceTime` delay to `true` and subclasses\n * should show the skeleton loading indicator.\n */\n@Directive()\nexport abstract class SiWidgetBaseDirective<T> implements OnInit, OnChanges {\n /**\n * The main value to be displayed. If no value is set,\n * the skeleton indicates the loading of the value. Disable\n * the automatic loading mechanism by setting `SiWidgetBodyBaseComponent.disableAutoLoadingIndicator`.\n */\n readonly value = input.required<T | undefined>();\n /**\n * Option to disable automatic start of skeleton loading indication.\n *\n * @defaultValue false\n */\n readonly disableAutoLoadingIndicator = input(false, { transform: booleanAttribute });\n /**\n * Input to start and stop the skeleton loading indication.\n *\n * @defaultValue false\n */\n readonly showLoadingIndicatorInput = input(false, {\n // eslint-disable-next-line @angular-eslint/no-input-rename\n alias: 'showLoadingIndicator',\n transform: booleanAttribute\n });\n\n private readonly showLoadingIndicatorInternal = signal<boolean | undefined>(undefined);\n\n readonly showLoadingIndicator = computed(() => {\n return this.showLoadingIndicatorInternal() ?? this.showLoadingIndicatorInput();\n });\n\n /**\n * Initial delay time in milliseconds before enabling loading indicator.\n * Only used once initially during construction.\n *\n * @defaultValue 300\n */\n readonly initialLoadingIndicatorDebounceTime = input(300);\n\n protected loadingTimer?: ReturnType<typeof setTimeout>;\n\n ngOnChanges(): void {\n if (this.disableAutoLoadingIndicator()) {\n return;\n }\n\n if (this.value()) {\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\n }\n this.showLoadingIndicatorInternal.set(false);\n } else {\n // Data was removed: yield control back to the `showLoadingIndicator` input\n // so callers can drive the loader manually.\n this.showLoadingIndicatorInternal.set(undefined);\n }\n }\n\n ngOnInit(): void {\n if (!this.disableAutoLoadingIndicator() && !this.value()) {\n this.loadingTimer = setTimeout(() => {\n this.showLoadingIndicatorInternal.set(!this.value());\n }, this.initialLoadingIndicatorDebounceTime());\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, Component, computed, input } from '@angular/core';\nimport { elementRight2 } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\n\n/**\n * The `<si-link-widget>` supports an easy composition of links and actions\n * with support for skeleton loading indicator.\n */\n@Component({\n selector: 'si-link-widget',\n imports: [SiIconComponent, SiLinkDirective, SiTranslatePipe],\n templateUrl: './si-link-widget.component.html',\n host: { class: 'si-link-widget' }\n})\nexport class SiLinkWidgetComponent extends SiWidgetBaseDirective<Link[]> {\n /**\n * Option to enable trailing link arrow icons for each link.\n *\n * @defaultValue false\n */\n readonly showLinkIcons = input(false, { transform: booleanAttribute });\n /**\n * The number of skeleton progress indication rows.\n *\n * @defaultValue 3\n */\n readonly numberOfLinks = input(3);\n\n protected readonly ghosts = computed(() => new Array(this.numberOfLinks() ?? 3));\n\n protected readonly icons = addIcons({ elementRight2 });\n}\n","@if (!showLoadingIndicator() && value()) {\n @for (link of value(); track link) {\n @if (link.action) {\n <button type=\"button\" class=\"btn btn-link\" [siLink]=\"link\">{{\n link.title | translate\n }}</button>\n } @else {\n <a [siLink]=\"link\">\n {{ link.title | translate }}\n @if (showLinkIcons()) {\n <si-icon class=\"link-icon link-end flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n </a>\n }\n }\n} @else {\n @for (some of ghosts(); track $index) {\n <div class=\"si-link-widget-skeleton\"></div>\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed } from '@angular/core';\nimport { elementRight2 } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\n\n/**\n * Interface for objects to configure the the list widget.\n */\nexport interface SiListWidgetItem {\n /** Label is either a translatable string or a link. */\n label: TranslatableString | Link;\n /** Optional translatable description. */\n description?: TranslatableString;\n /** Optional translatable string to be displayed in a badge. */\n badge?: TranslatableString;\n /**\n * Defines the badge color. Must be one of the element `bg-<color>` CSS classes,\n * like `bg-primary`, `bg-secondary`, 'bg-caution'. Use only the name without `bg`.\n */\n badgeColor?: string;\n /** Optional translatable text that is display to the right. */\n text?: TranslatableString;\n /** Optional right aligned action. */\n action?: Link;\n /** The action icon. */\n actionIcon?: string;\n}\n\n/**\n * The `<si-link-widget>` supports an easy composition of links and actions\n * with support for skeleton loading indicator.\n */\n@Component({\n selector: 'si-list-widget-item',\n imports: [SiIconComponent, SiLinkDirective, SiTranslatePipe],\n templateUrl: './si-list-widget-item.component.html',\n host: {\n class: 'list-group-item d-flex align-items-center',\n role: 'listitem'\n }\n})\nexport class SiListWidgetItemComponent extends SiWidgetBaseDirective<SiListWidgetItem> {\n protected readonly isLink = computed(() => {\n return typeof this.value()?.label === 'object';\n });\n protected readonly badgeColor = computed(() => {\n return this.value()?.badgeColor ? 'bg-' + this.value()?.badgeColor : 'bg-default';\n });\n protected readonly link = computed(() => {\n return this.value()?.label as Link;\n });\n protected readonly label = computed(() => {\n return this.value()?.label as string;\n });\n protected readonly icons = addIcons({ elementRight2 });\n}\n","@let valueObject = value();\n@if (!showLoadingIndicator() && valueObject) {\n @if (valueObject.badge) {\n <span class=\"mx-0 badge me-4\" [class]=\"badgeColor()\">{{ valueObject.badge | translate }}</span>\n }\n <span class=\"me-auto\">\n @if (!isLink()) {\n <span class=\"si-h5\">{{ label() | translate }}</span>\n } @else {\n <a class=\"\" [siLink]=\"link()\"\n >{{ link().title | translate\n }}<si-icon class=\"link-icon link-start flip-rtl\" [icon]=\"icons.elementRight2\" />\n </a>\n }\n @if (valueObject.description) {\n <div class=\"mt-1 si-body text-secondary\">{{ valueObject.description | translate }}</div>\n }\n </span>\n <span>{{ valueObject.text | translate }}</span>\n @if (valueObject.action) {\n @if (valueObject.action.action) {\n <button\n type=\"button\"\n class=\"btn btn-icon btn-tertiary ms-4 p-2\"\n [attr.aria-label]=\"valueObject.action.title | translate\"\n [siLink]=\"valueObject.action\"\n >\n @if (valueObject.actionIcon) {\n <si-icon class=\"icon\" [icon]=\"valueObject.actionIcon\" />\n }\n </button>\n } @else {\n <a\n class=\"ms-4 p-2\"\n [siLink]=\"valueObject.action\"\n [attr.aria-label]=\"valueObject.action.title | translate\"\n >\n @if (valueObject.actionIcon) {\n <si-icon class=\"icon\" [icon]=\"valueObject.actionIcon\" />\n }\n </a>\n }\n }\n} @else {\n <div class=\"si-link-widget-skeleton my-4\"></div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, Component, computed, input, model, OnChanges } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { Link } from '@siemens/element-ng/link';\nimport { SiSearchBarComponent } from '@siemens/element-ng/search-bar';\nimport {\n injectSiTranslateService,\n SiTranslatePipe,\n t,\n TranslatableString\n} from '@siemens/element-translate-ng/translate';\nimport { map, of, switchMap } from 'rxjs';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\nimport { SiListWidgetItem, SiListWidgetItemComponent } from './si-list-widget-item.component';\n\n/** Defines the sort order. */\nexport type SortOrder = 'ASC' | 'DSC';\n\n/**\n * The `<si-list-widget-body>` implements the body of the <si-list-widget> that can be\n * used for composition within other components.\n */\n@Component({\n selector: 'si-list-widget-body',\n imports: [SiListWidgetItemComponent, SiSearchBarComponent, SiTranslatePipe, FormsModule],\n templateUrl: './si-list-widget-body.component.html',\n styleUrl: './si-list-widget-body.component.scss',\n host: { class: '' }\n})\nexport class SiListWidgetBodyComponent\n extends SiWidgetBaseDirective<SiListWidgetItem[]>\n implements OnChanges\n{\n private readonly translateService = injectSiTranslateService();\n\n /** Optional footer link for the list widget */\n readonly link = input<Link>();\n\n /**\n * label for the \"search placeholder\" name\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LIST_WIDGET.SEARCH_PLACEHOLDER:Search...`)\n * ```\n */\n readonly searchPlaceholderLabel = input(\n t(() => $localize`:@@SI_LIST_WIDGET.SEARCH_PLACEHOLDER:Search...`)\n );\n\n /**\n * Enable ascending and descending SiListWidgetItem sorting. If enabled,\n * items are initially ascending sorted.\n */\n readonly sort = input<SortOrder>();\n\n /**\n * Enables the search functionality.\n *\n * @defaultValue false\n */\n readonly search = input(false, { transform: booleanAttribute });\n\n /**\n * Compare function of for two `SiListWidgetItem`s that is used to sort\n * the array of items. The default compares the item labels by using the\n * string `localeCompare()` function.\n *\n * @param a - first `SiListWidgetItem` of the comparison.\n *\n * @param b - second `SiListWidgetItem` of the comparison.\n *\n * @returns A value `< 0` if `a` is smaller, `> 0` if `b` is smaller, otherwise `0`.\n *\n * @defaultValue\n * ```\n * (\n * a: SiListWidgetItem,\n * b: SiListWidgetItem\n * ) => {\n * const aLabel = typeof a.label === 'object' ? a.label.title! : a.label;\n * const bLabel = typeof b.label === 'object' ? b.label.title! : b.label;\n * return aLabel.localeCompare(bLabel);\n * }\n * ```\n */\n readonly compareFn = input<(a: SiListWidgetItem, b: SiListWidgetItem) => number | undefined>(\n (a: SiListWidgetItem, b: SiListWidgetItem) => {\n const aLabel = typeof a.label === 'object' ? a.label.title! : a.label;\n const bLabel = typeof b.label === 'object' ? b.label.title! : b.label;\n return aLabel.localeCompare(bLabel);\n }\n );\n\n /**\n * Filter function that is used to filter down the list items when the user enters\n * a term in the search bar. Default function.\n *\n * @param item - The item be checked if it matches the searchTerm.\n *\n * @param searchTerm - The string the user typed in the search bar.\n *\n * @returns `true` if the `searchTerm` matches the `item` and the `item` shall be kept in the list.\n *\n * @defaultValue\n * ```\n * (\n * item: SiListWidgetItem,\n * searchTerm: string\n * ) => {\n * const aLabel = typeof item.label === 'object' ? item.label.title! : item.label;\n * return aLabel.toLowerCase().includes(searchTerm.toLowerCase());\n * }\n * ```\n */\n readonly filterFn = input<(item: SiListWidgetItem, searchTerm: string) => boolean | undefined>(\n (item: SiListWidgetItem, searchTerm: string) => {\n const aLabel = typeof item.label === 'object' ? item.label.title! : item.label;\n return aLabel.toLowerCase().includes(searchTerm.toLowerCase());\n }\n );\n\n /**\n * The number of skeleton progress indication rows.\n *\n * @defaultValue 6\n */\n readonly numberOfLinks = input(6);\n\n /** Used to display the defined number of ghost items */\n protected readonly ghosts = computed(() => new Array(this.numberOfLinks() ?? 6));\n\n /** Replica of value with pre-translated labels, recomputed when value or language changes. */\n private readonly translatedItems = toSignal(\n toObservable(this.value).pipe(\n switchMap(items => {\n if (!items) {\n return of(undefined);\n }\n const keys = items.map(item =>\n typeof item.label === 'object' ? (item.label.title ?? '') : item.label\n );\n return this.translateService.translateAsync(keys).pipe(\n map(translations =>\n items.map(item => {\n const key = typeof item.label === 'object' ? (item.label.title ?? '') : item.label;\n const translatedLabel = (translations[key] ?? key) as TranslatableString;\n return {\n ...item,\n label:\n typeof item.label === 'object'\n ? { ...item.label, title: translatedLabel }\n : translatedLabel\n };\n })\n )\n );\n })\n )\n );\n\n /** Holds the list items that are displayed. May be filtered and sorted. */\n protected readonly filteredListWidgetItems = computed(() => {\n const value = this.translatedItems();\n const sort = this.sort();\n const searchText = this.searchText();\n let filteredListWidgetItems: SiListWidgetItem[] | undefined;\n if (searchText.length > 0) {\n filteredListWidgetItems = value?.filter((item: SiListWidgetItem) =>\n this.filterFn()(item, searchText)\n );\n } else {\n filteredListWidgetItems = value ? [...value] : undefined;\n }\n\n if (sort) {\n const factor = sort === 'ASC' ? 1 : -1;\n filteredListWidgetItems = filteredListWidgetItems?.sort(\n (a: SiListWidgetItem, b: SiListWidgetItem) => (this.compareFn()(a, b) ?? 0) * factor\n );\n }\n\n return filteredListWidgetItems;\n });\n\n protected readonly searchText = model('');\n}\n","@if (search()) {\n <si-search-bar\n class=\"px-6 py-4\"\n showIcon\n colorVariant=\"base-0\"\n [debounceTime]=\"400\"\n [placeholder]=\"searchPlaceholderLabel() | translate\"\n [(ngModel)]=\"searchText\"\n />\n}\n@let filteredListWidgetItemsList = filteredListWidgetItems();\n@if (!showLoadingIndicator() && filteredListWidgetItemsList) {\n @if (filteredListWidgetItemsList.length > 0) {\n <div class=\"list-group list-group-lg\" role=\"list\">\n @for (item of filteredListWidgetItemsList; track $index) {\n <si-list-widget-item [value]=\"item\" />\n }\n </div>\n } @else {\n <ng-content select=\"[empty-state]\" />\n }\n} @else {\n <div class=\"list-group list-group-lg\" role=\"list\">\n @for (some of ghosts(); track $index) {\n <si-list-widget-item [value]=\"undefined\" />\n }\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, Component, computed, input, model, OnChanges } from '@angular/core';\nimport { elementRight2, elementSortDown, elementSortUp } from '@siemens/element-icons';\nimport { SiCardComponent } from '@siemens/element-ng/card';\nimport { AccentLineType } from '@siemens/element-ng/common';\nimport { ContentActionBarMainItem } from '@siemens/element-ng/content-action-bar';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\nimport { SiListWidgetBodyComponent, SortOrder } from './si-list-widget-body.component';\nimport { SiListWidgetItem } from './si-list-widget-item.component';\n\n/**\n * The `<si-list-widget>` supports an easy composition of links and actions\n * with support for skeleton loading indicator, wrapped in a card.\n */\n@Component({\n selector: 'si-list-widget',\n imports: [\n SiCardComponent,\n SiIconComponent,\n SiLinkDirective,\n SiListWidgetBodyComponent,\n SiTranslatePipe\n ],\n templateUrl: './si-list-widget.component.html',\n host: { class: 'si-list-widget' }\n})\nexport class SiListWidgetComponent\n extends SiWidgetBaseDirective<SiListWidgetItem[]>\n implements OnChanges\n{\n protected readonly icons = addIcons({ elementRight2, elementSortDown, elementSortUp });\n\n /** List widget heading. */\n readonly heading = input<TranslatableString>();\n\n /** Optional footer link for the list widget */\n readonly link = input<Link>();\n\n /**\n * label for the \"search placeholder\" name\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LIST_WIDGET.SEARCH_PLACEHOLDER:Search...`)\n * ```\n */\n readonly searchPlaceholderLabel = input(\n t(() => $localize`:@@SI_LIST_WIDGET.SEARCH_PLACEHOLDER:Search...`)\n );\n\n /**\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LIST_WIDGET.SORT_ASCENDING:Sort ascending`)\n * ```\n */\n readonly sortAscendingLabel = input(\n t(() => $localize`:@@SI_LIST_WIDGET.SORT_ASCENDING:Sort ascending`)\n );\n\n /**\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LIST_WIDGET.SORT_DESCENDING:Sort descending`)\n * ```\n */\n readonly sortDescendingLabel = input(\n t(() => $localize`:@@SI_LIST_WIDGET.SORT_DESCENDING:Sort descending`)\n );\n\n /**\n * Set `ASC` of ascending sorting, `DSC` for descending sorting and `undefined` for no sorting.\n */\n readonly sort = model<SortOrder>();\n\n /**\n * Enables the search functionality.\n *\n * @defaultValue false\n */\n readonly search = input(false, { transform: booleanAttribute });\n\n /**\n * Compare function of for two `SiListWidgetItem`s that is used to sort\n * the array of items. The default compares the item labels by using the\n * string `localeCompare()` function.\n *\n * @param a - first `SiListWidgetItem` of the comparison.\n *\n * @param b - second `SiListWidgetItem` of the comparison.\n *\n * @returns A value `< 0` if `a` is smaller, `> 0` if `b` is smaller, otherwise `0`.\n *\n * @defaultValue\n * ```\n * (\n * a: SiListWidgetItem,\n * b: SiListWidgetItem\n * ) => {\n * const aLabel = typeof a.label === 'object' ? a.label.title! : a.label;\n * const bLabel = typeof b.label === 'object' ? b.label.title! : b.label;\n * return aLabel.localeCompare(bLabel);\n * }\n * ```\n */\n readonly compareFn = input<(a: SiListWidgetItem, b: SiListWidgetItem) => number | undefined>(\n (a: SiListWidgetItem, b: SiListWidgetItem) => {\n const aLabel = typeof a.label === 'object' ? a.label.title! : a.label;\n const bLabel = typeof b.label === 'object' ? b.label.title! : b.label;\n return aLabel.localeCompare(bLabel);\n }\n );\n\n /**\n * Filter function that is used to filter down the list items when the user enters\n * a term in the search bar. Default function.\n *\n * @param item - The item be checked if it matches the searchTerm.\n *\n * @param searchTerm - The string the user typed in the search bar.\n *\n * @returns `true` if the `searchTerm` matches the `item` and the `item` shall be kept in the list.\n *\n * @defaultValue\n * ```\n * (\n * item: SiListWidgetItem,\n * searchTerm: string\n * ) => {\n * const aLabel = typeof item.label === 'object' ? item.label.title! : item.label;\n * return aLabel.toLowerCase().includes(searchTerm.toLowerCase());\n * }\n * ```\n */\n readonly filterFn = input<(item: SiListWidgetItem, searchTerm: string) => boolean | undefined>(\n (item: SiListWidgetItem, searchTerm: string) => {\n const aLabel = typeof item.label === 'object' ? item.label.title! : item.label;\n return aLabel.toLowerCase().includes(searchTerm.toLowerCase());\n }\n );\n\n /**\n * The number of skeleton progress indication rows.\n *\n * @defaultValue 6\n */\n readonly numberOfLinks = input(6);\n /**\n * Optional accent line\n */\n readonly accentLine = input<AccentLineType>();\n\n protected readonly accentClass = computed(() => {\n const accentLine = this.accentLine();\n return accentLine ? 'accent-' + accentLine : '';\n });\n\n /** The menu item array used to display the sort button. */\n protected readonly sortAction = computed(() => {\n const sortAction: ContentActionBarMainItem[] = [\n {\n label: this.sortDescendingLabel(),\n type: 'action',\n icon: this.icons.elementSortUp,\n iconOnly: true,\n action: () => this.doSort()\n }\n ];\n\n if (this.sort() === 'ASC') {\n sortAction[0].label = this.sortDescendingLabel();\n sortAction[0].icon = this.icons.elementSortUp;\n } else {\n sortAction[0].label = this.sortAscendingLabel();\n sortAction[0].icon = this.icons.elementSortDown;\n }\n return sortAction;\n });\n\n private doSort(): void {\n if (this.sort() === 'ASC') {\n this.sort.set('DSC');\n } else {\n this.sort.set('ASC');\n }\n }\n}\n","<si-card\n actionBarViewType=\"expanded\"\n class=\"h-100\"\n [class]=\"accentClass()\"\n [heading]=\"heading()\"\n [primaryActions]=\"sort() ? sortAction() : []\"\n>\n <si-list-widget-body\n body\n [compareFn]=\"compareFn()\"\n [filterFn]=\"filterFn()\"\n [numberOfLinks]=\"numberOfLinks()\"\n [searchPlaceholderLabel]=\"searchPlaceholderLabel()\"\n [search]=\"search()\"\n [sort]=\"sort()\"\n [value]=\"value()\"\n [showLoadingIndicator]=\"showLoadingIndicator()\"\n >\n <ng-content select=\"[empty-state]\" empty-state />\n </si-list-widget-body>\n\n @let linkValue = link();\n @if (linkValue) {\n <div class=\"card-footer\" footer>\n @if (!linkValue.action) {\n <a [siLink]=\"linkValue\">\n {{ linkValue.title | translate }}\n <si-icon class=\"link-icon link-end flip-rtl\" [icon]=\"icons.elementRight2\" />\n </a>\n } @else {\n <button type=\"button\" class=\"btn btn-link\" [siLink]=\"linkValue\"\n >{{ linkValue.title | translate }}\n </button>\n }\n </div>\n }\n</si-card>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CdkMenuTrigger } from '@angular/cdk/menu';\nimport { Component, inject, input, OnChanges, OnInit } from '@angular/core';\nimport { ActivatedRoute, NavigationExtras, RouterLink } from '@angular/router';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\nimport { MenuItem, SiMenuModule } from '@siemens/element-ng/menu';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\n\n/** Base for action items in the timeline widget. */\nexport interface TimelineWidgetActionBase {\n /** Label that is shown to the user. */\n label: TranslatableString;\n /** The web font icon class name (e.g. element-settings-outline). */\n icon?: string;\n /** Defines if only the icon is shown in the default navigation bar. */\n iconOnly?: boolean;\n}\n\n/** Interface representing an action item in the timeline widget. */\nexport interface TimelineWidgetActionButton extends TimelineWidgetActionBase {\n type: 'action';\n /** The class name to define the button style */\n customClass?: string;\n /** Action that called when the item action is triggered. */\n action: (source: this) => void;\n}\n\n/** Interface representing a router link item in the timeline widget. */\nexport interface TimeLineWidgetRouterLink extends TimelineWidgetActionBase {\n type: 'router-link';\n /** Link for the angular router. Accepts the same values as {@link RouterLink}. */\n routerLink: string | any[];\n /** Navigation extras that are passed to the {@link RouterLink}. */\n extras?: NavigationExtras;\n}\n\n/** Interface representing a link item in the timeline widget. */\nexport interface TimeLineWidgetLink extends TimelineWidgetActionBase {\n type: 'link';\n /** The href property of the anchor. */\n href: string;\n /** The target property of the anchor. */\n target?: string;\n}\n\n/** Interface representing a menu item in the timeline widget. */\nexport interface TimelineWidgetMenu {\n type: 'menu';\n menuItems: MenuItem[];\n}\n\n/** Union type for all possible action items in the timeline widget. */\nexport type TimelineWidgetItemAction =\n | TimelineWidgetActionButton\n | TimeLineWidgetLink\n | TimeLineWidgetRouterLink\n | TimelineWidgetMenu;\n\n/**\n * Represents an item in the timeline widget.\n * Each item may contain a timestamp, a title, an icon, an optional description and optional action elements.\n * Actions can be buttons, links, router links, or menus.\n */\nexport interface SiTimelineWidgetItem {\n /**\n * The timestamp of the item.\n */\n timeStamp: TranslatableString;\n /**\n * The title of the item.\n */\n title: TranslatableString;\n /**\n * Optional translatable description.\n */\n description?: TranslatableString;\n /**\n * The icon of the item.\n */\n icon: string;\n /**\n * The color of the icon.\n */\n iconColor?: string;\n /**\n * The stacked icon of the item.\n */\n stackedIcon?: string;\n /**\n * The color of the stacked icon.\n */\n stackedIconColor?: string;\n /**\n * The alt text of the icon\n */\n iconAlt?: TranslatableString;\n /**\n * The related action of the item\n */\n action?: TimelineWidgetItemAction;\n}\n\n/**\n * The items of the `<si-timeline-widget>`.\n */\n@Component({\n selector: 'si-timeline-widget-item',\n imports: [SiIconComponent, SiTranslatePipe, A11yModule, RouterLink, SiMenuModule, CdkMenuTrigger],\n templateUrl: './si-timeline-widget-item.component.html',\n styleUrl: './si-timeline-widget-item.component.scss',\n host: {\n role: 'listitem'\n }\n})\nexport class SiTimelineWidgetItemComponent\n extends SiWidgetBaseDirective<SiTimelineWidgetItem>\n implements OnInit, OnChanges\n{\n /**\n * Whether to show or hide the description row during skeleton progress indication.\n *\n * @defaultValue `true`\n */\n readonly showDescription = input(true);\n\n /**\n * Aria label text for actions button dropdown.\n */\n readonly ariaLabelDropdown = t(\n () => $localize`:@@SI_DASHBOARD.EXPAND_WIDGET_ACTIONS:Expand actions`\n );\n\n protected readonly activatedRoute = inject(ActivatedRoute, { optional: true });\n}\n","@let valueObject = value();\n@if (!showLoadingIndicator() && valueObject) {\n <div class=\"d-flex flex-row gap-4\" [class.pe-4]=\"!valueObject.action\">\n <div class=\"d-flex flex-column align-items-center gap-1 pt-4\">\n <span class=\"icon icon-stack\">\n <si-icon [class]=\"valueObject.iconColor\" [icon]=\"valueObject.icon\" />\n @if (valueObject.stackedIcon) {\n <si-icon [class]=\"valueObject.stackedIconColor\" [icon]=\"valueObject.stackedIcon\" />\n }\n </span>\n @if (valueObject.iconAlt) {\n <span class=\"visually-hidden\">{{ valueObject.iconAlt | translate }}</span>\n }\n <div class=\"si-timeline-widget-item-lower-line\"></div>\n </div>\n <div class=\"d-flex flex-column gap-1 py-4 flex-grow-1\">\n <span class=\"si-caption text-secondary\">{{ valueObject.timeStamp | translate }}</span>\n <span class=\"si-h5\">{{ valueObject.title | translate }}</span>\n @if (valueObject.description) {\n <span class=\"si-body text-secondary\">{{ valueObject.description | translate }}</span>\n }\n </div>\n @if (valueObject.action) {\n @let action = valueObject.action;\n <div class=\"si-timeline-widget-item-action align-self-center\">\n @if (action.type === 'action') {\n <button\n type=\"button\"\n class=\"d-flex btn\"\n [class]=\"action.customClass ?? 'btn-tertiary'\"\n [class.btn-icon]=\"action.iconOnly\"\n (click)=\"action.action(action)\"\n >\n @if (action.icon) {\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n }\n <span [class.visually-hidden]=\"action.iconOnly\">\n {{ action.label | translate }}\n </span>\n </button>\n } @else if (action.type === 'router-link') {\n <a\n class=\"d-flex btn btn-tertiary-ghost\"\n [routerLink]=\"action.routerLink\"\n [queryParams]=\"action.extras?.queryParams\"\n [queryParamsHandling]=\"action.extras?.queryParamsHandling\"\n [fragment]=\"action.extras?.fragment\"\n [state]=\"action.extras?.state\"\n [relativeTo]=\"action.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"action.extras?.preserveFragment\"\n [skipLocationChange]=\"action.extras?.skipLocationChange\"\n [replaceUrl]=\"action.extras?.replaceUrl\"\n [attr.aria-label]=\"action.label | translate\"\n [class.btn-icon]=\"action.iconOnly\"\n >\n @if (action.icon) {\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n }\n <span [class.visually-hidden]=\"action.iconOnly\">\n {{ action.label | translate }}\n </span></a\n >\n } @else if (action.type === 'link') {\n <a\n class=\"d-flex btn btn-tertiary-ghost\"\n [href]=\"action.href\"\n [target]=\"action.target\"\n [attr.aria-label]=\"action.label | translate\"\n [class.btn-icon]=\"action.iconOnly\"\n >\n @if (action.icon) {\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n }\n <span [class.visually-hidden]=\"action.iconOnly\">\n {{ action.label | translate }}\n </span></a\n >\n } @else if (action.type === 'menu') {\n <button\n type=\"button\"\n class=\"btn btn-icon btn-tertiary element-options-vertical\"\n [attr.aria-label]=\"ariaLabelDropdown | translate\"\n [cdkMenuTriggerFor]=\"actionMenu\"\n ></button>\n\n <ng-template #actionMenu>\n <si-menu-factory [items]=\"action.menuItems\" />\n </ng-template>\n }\n </div>\n }\n </div>\n} @else {\n <div class=\"d-flex flex-row\">\n <div class=\"d-flex flex-column align-items-center gap-1 pt-4 pe-4\">\n <div class=\"p-5 si-skeleton\"></div>\n </div>\n <div class=\"d-flex flex-column flex-grow-1 gap-1 py-4\">\n <span class=\"si-link-widget-skeleton\"></span>\n <span class=\"si-link-widget-skeleton\" [class.w-50]=\"!showDescription()\"></span>\n @if (showDescription()) {\n <span class=\"si-link-widget-skeleton w-50\"></span>\n }\n </div>\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, input } from '@angular/core';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\nimport {\n SiTimelineWidgetItem,\n SiTimelineWidgetItemComponent\n} from './si-timeline-widget-item.component';\n\n@Component({\n selector: 'si-timeline-widget-body',\n imports: [SiTimelineWidgetItemComponent],\n templateUrl: './si-timeline-widget-body.component.html',\n styleUrl: './si-timeline-widget-body.component.scss'\n})\nexport class SiTimelineWidgetBodyComponent extends SiWidgetBaseDirective<SiTimelineWidgetItem[]> {\n /**\n * Number of skeleton progress indication items.\n *\n * @defaultValue 4\n */\n readonly numberOfItems = input(4);\n\n /**\n * Whether to show or hide the description row during skeleton progress indication.\n *\n * @defaultValue `true`\n */\n readonly showDescription = input(true);\n\n /** Used to display the defined number of ghost items */\n protected readonly ghosts = computed(() => {\n return new Array(this.numberOfItems() ?? 4);\n });\n}\n","@let valueObject = value();\n<div\n class=\"focus-inside\"\n tabindex=\"0\"\n [attr.role]=\"\n (!showLoadingIndicator() && valueObject && valueObject.length > 0) || showLoadingIndicator()\n ? 'list'\n : null\n \"\n>\n @if (!showLoadingIndicator() && valueObject) {\n @if (valueObject && valueObject.length > 0) {\n @for (item of valueObject; track $index) {\n <si-timeline-widget-item [value]=\"item\" />\n }\n } @else {\n <ng-content select=\"[empty-state]\" />\n }\n } @else {\n @for (some of ghosts(); track $index) {\n <si-timeline-widget-item [value]=\"undefined\" [showDescription]=\"showDescription()\" />\n }\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, input, OnChanges } from '@angular/core';\nimport { elementRight2 } from '@siemens/element-icons';\nimport { SiCardComponent } from '@siemens/element-ng/card';\nimport { AccentLineType, MenuItem as MenuItemLegacy } from '@siemens/element-ng/common';\nimport { ContentActionBarMainItem } from '@siemens/element-ng/content-action-bar';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { MenuItem } from '@siemens/element-ng/menu';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\nimport { SiTimelineWidgetBodyComponent } from './si-timeline-widget-body.component';\nimport { SiTimelineWidgetItem } from './si-timeline-widget-item.component';\n\n@Component({\n selector: 'si-timeline-widget',\n imports: [\n SiLinkDirective,\n SiCardComponent,\n SiTimelineWidgetBodyComponent,\n SiTranslatePipe,\n SiIconComponent\n ],\n templateUrl: './si-timeline-widget.component.html'\n})\nexport class SiTimelineWidgetComponent\n extends SiWidgetBaseDirective<SiTimelineWidgetItem[]>\n implements OnChanges\n{\n /**\n * Timeline widget header text.\n */\n readonly heading = input<TranslatableString>();\n /**\n * Input list of primary action items. Supports up to **4** actions and omits additional ones.\n *\n * @defaultValue []\n */\n readonly primaryActions = input<(MenuItemLegacy | ContentActionBarMainItem)[]>([]);\n /**\n * Input list of secondary action items.\n *\n * @defaultValue []\n */\n readonly secondaryActions = input<(MenuItemLegacy | MenuItem)[]>([]);\n /**\n * Link that leads the user to more information\n * or triggers and action. The `link.title` is displayed.\n * The title will be translated.\n */\n readonly link = input<Link>();\n\n /**\n * Number of skeleton progress indication items.\n *\n * @defaultValue 4\n */\n readonly numberOfItems = input(4);\n\n /**\n * Whether to show or hide the description row during skeleton progress indication.\n *\n * @defaultValue `true`\n */\n readonly showDescription = input(true);\n /**\n * Optional accent line\n */\n readonly accentLine = input<AccentLineType>();\n\n protected readonly accentClass = computed(() => {\n const accentLine = this.accentLine();\n return accentLine ? 'accent-' + accentLine : '';\n });\n\n protected readonly icons = addIcons({ elementRight2 });\n}\n","<si-card\n class=\"h-100\"\n [class]=\"accentClass()\"\n [heading]=\"heading()\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n>\n <si-timeline-widget-body\n body\n [value]=\"value()\"\n [showDescription]=\"showDescription()\"\n [numberOfItems]=\"numberOfItems()\"\n [class.pb-6]=\"!link()\"\n [showLoadingIndicator]=\"showLoadingIndicator()\"\n >\n <ng-content select=\"[empty-state]\" empty-state />\n </si-timeline-widget-body>\n @let linkValue = link();\n @if (linkValue) {\n <div class=\"card-footer\" footer>\n @if (!linkValue.action) {\n <a [siLink]=\"linkValue\">\n {{ linkValue.title | translate }}\n <si-icon class=\"link-icon link-end flip-rtl\" [icon]=\"icons.elementRight2\" />\n </a>\n } @else {\n <button type=\"button\" class=\"btn btn-link\" [siLink]=\"linkValue\">{{\n linkValue.title | translate\n }}</button>\n }\n </div>\n }\n</si-card>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input, OnInit } from '@angular/core';\nimport { EntityStatusType } from '@siemens/element-ng/common';\nimport { SiIconComponent, SiStatusIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\n\n/**\n * The body of the `<si-value-widget>`. Useful for compositions.\n */\n@Component({\n selector: 'si-value-widget-body',\n imports: [SiIconComponent, SiStatusIconComponent, SiTranslatePipe],\n templateUrl: './si-value-widget-body.component.html'\n})\nexport class SiValueWidgetBodyComponent\n extends SiWidgetBaseDirective<TranslatableString>\n implements OnInit\n{\n /**\n * The unit of the value (e.g. kWh or users). Only visible if `value` is available.\n */\n readonly unit = input<TranslatableString>();\n /**\n * The element icon name. Only visible if `value` is available.\n */\n readonly icon = input<string>();\n /**\n * Show a status icon instead of the {@link icon}.\n */\n readonly status = input<EntityStatusType>();\n /**\n * Short description of the value. A description is mandatory\n * to show an icon. Only visible if `value` is available.\n */\n readonly description = input<TranslatableString>();\n}\n","@if (!showLoadingIndicator()) {\n @if (value()) {\n <span class=\"si-value-widget-value\">{{ value() | translate }}</span>\n <span class=\"si-value-widget-unit\">{{ unit() | translate }}</span>\n @if (description()) {\n <div class=\"si-value-widget-description\">\n @let statusValue = status();\n @let iconValue = icon();\n @if (statusValue) {\n <si-status-icon class=\"icon\" [status]=\"statusValue\" />\n } @else if (iconValue) {\n <si-icon class=\"icon\" [icon]=\"iconValue\" />\n }\n <span>{{ description() | translate }}</span>\n </div>\n }\n }\n} @else {\n <span class=\"si-value-widget-value w-100\">\n <div class=\"si-value-widget-value-skeleton\"></div>\n </span>\n <div class=\"si-value-widget-description si-skeleton w-100\"></div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, Component, computed, input } from '@angular/core';\nimport { SiCardComponent } from '@siemens/element-ng/card';\nimport {\n AccentLineType,\n EntityStatusType,\n MenuItem as MenuItemLegacy\n} from '@siemens/element-ng/common';\nimport { ContentActionBarMainItem } from '@siemens/element-ng/content-action-bar';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { MenuItem } from '@siemens/element-ng/menu';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiValueWidgetBodyComponent } from './si-value-widget-body.component';\n\n/**\n * Is a dynamic UI component that not only displays information, but also includes\n * embedded actions which the user can interact with to perform tasks directly\n * related to the card's content. Actions might include editing settings,\n * initiating processes, or deleting resources.\n *\n * The actionable widget turns data representation into an interactive hub,\n * streamlining the user's tasks and decisions associated with the card's content.\n *\n * This component is a wrapper using the `.si-value-widget` CSS classes and the\n * `<si-card>` component. For more configuration options, use the CSS classes directly.\n */\n@Component({\n selector: 'si-value-widget',\n imports: [SiCardComponent, SiLinkDirective, SiTranslatePipe, SiValueWidgetBodyComponent],\n templateUrl: './si-value-widget.component.html'\n})\nexport class SiValueWidgetComponent {\n /**\n * Value widget header text.\n */\n readonly heading = input<TranslatableString>();\n /**\n * Input list of primary action items. Supports up to **4** actions and omits additional ones.\n *\n * @defaultValue []\n */\n readonly primaryActions = input<(MenuItemLegacy | ContentActionBarMainItem)[]>([]);\n /**\n * Input list of secondary action items.\n *\n * @defaultValue []\n */\n readonly secondaryActions = input<(MenuItemLegacy | MenuItem)[]>([]);\n /**\n * The main value to be displayed. If no value is set,\n * the skeleton indicates the loading of the value. Disable\n * the automatic loading mechanism by setting `SiValueWidgetComponent.disableAutoLoadingIndicator`.\n */\n readonly value = input<TranslatableString>();\n /**\n * The unit of the value (e.g. kWh or users). Only visible if `value` is available.\n */\n readonly unit = input<TranslatableString>();\n /**\n * The element icon name. Only visible if `value` is available.\n */\n readonly icon = input<string>();\n /**\n * Show a status icon instead of the {@link icon}.\n */\n readonly status = input<EntityStatusType>();\n /**\n * Short description of the value. A description is mandatory\n * to show an icon. Only visible if `value` is available.\n */\n readonly description = input<TranslatableString>();\n /**\n * Link that leads the user to more information\n * or triggers and action. The `link.title` is displayed.\n * The title will be translated.\n */\n readonly link = input<Link>();\n /**\n * Option to disable automatic start of skeleton loading indication.\n *\n * @defaultValue false\n */\n readonly disableAutoLoadingIndicator = input(false, { transform: booleanAttribute });\n /**\n * Input to start and stop the skeleton loading indication.\n *\n * @defaultValue false\n */\n readonly showLoadingIndicator = input(false, { transform: booleanAttribute });\n /**\n * Initial delay time in milliseconds before enabling loading indicator.\n * Only used once initially during construction.\n *\n * @defaultValue 300\n */\n readonly initialLoadingIndicatorDebounceTime = input(300);\n /**\n * Image source for the card.\n */\n readonly imgSrc = input<string>();\n /**\n * Alt text for a provided image.\n */\n readonly imgAlt = input<TranslatableString>();\n /**\n * Defines if an image is placed on top or start (left) of the card.\n *\n * @defaultValue 'vertical'\n */\n readonly imgDir = input<'horizontal' | 'vertical'>('vertical');\n /**\n * Sets the image [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) CSS property.\n *\n * @defaultValue 'scale-down'\n */\n readonly imgObjectFit = input<'contain' | 'cover' | 'fill' | 'none' | 'scale-down'>('scale-down');\n /**\n * Sets the image [object-position](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position) CSS property.\n */\n readonly imgObjectPosition = input<string>();\n /**\n * Optional accent line\n */\n readonly accentLine = input<AccentLineType>();\n\n protected readonly accentClass = computed(() => {\n const accentLine = this.accentLine();\n return accentLine ? 'accent-' + accentLine : '';\n });\n}\n","<si-card\n class=\"h-100\"\n [class]=\"accentClass()\"\n [heading]=\"heading()\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [imgSrc]=\"imgSrc()\"\n [imgDir]=\"imgDir()\"\n [imgAlt]=\"imgAlt()\"\n [imgObjectFit]=\"imgObjectFit()\"\n [imgObjectPosition]=\"imgObjectPosition()\"\n>\n <div class=\"card-body\" body>\n <si-value-widget-body\n [value]=\"value()\"\n [unit]=\"unit()\"\n [icon]=\"icon()\"\n [status]=\"status()\"\n [description]=\"description()\"\n [disableAutoLoadingIndicator]=\"disableAutoLoadingIndicator()\"\n [showLoadingIndicator]=\"showLoadingIndicator()\"\n [initialLoadingIndicatorDebounceTime]=\"initialLoadingIndicatorDebounceTime()\"\n />\n </div>\n @let linkObject = link();\n @if (linkObject) {\n <div class=\"card-footer\" footer>\n <a [siLink]=\"linkObject\">{{ linkObject.title | translate }}</a>\n </div>\n }\n</si-card>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { inject, Injectable } from '@angular/core';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWeatherCondition, SiWeatherIcon } from './si-weather-widget.types';\n\n/**\n * Result returned by a {@link SiWeatherIconResolver}. Implementations should\n * return either {@link icon} (rendered via `<si-icon>`) or {@link src}\n * (rendered as a plain `<img>`). When both are present, {@link icon} wins.\n */\nexport interface SiWeatherIconResolution {\n /** Resolved Element icon name (e.g. `\"element-sun\"`). Rendered via `<si-icon>`. */\n icon?: string;\n /** Resolved image URL. Rendered as a plain `<img>`. */\n src?: string;\n /** Resolved alt text. The widget falls back to a sensible default. */\n alt?: TranslatableString;\n}\n\n/**\n * Maps a semantic {@link SiWeatherIcon} to a renderable illustration. The\n * library ships a {@link SiDefaultWeatherIconResolver} that maps the built-in\n * {@link SiWeatherCondition} vocabulary to Element icons, so the widget renders\n * a reasonable illustration out of the box. Applications can override the\n * mapping or add provider-specific vocabularies by registering their own\n * resolver:\n *\n * @example\n * ```ts\n * @Injectable({ providedIn: 'root' })\n * export class MyWeatherIconResolver extends SiWeatherIconResolver {\n * override resolve(icon: SiWeatherIcon): SiWeatherIconResolution | null {\n * // ...\n * }\n * }\n * ```\n *\n * Resolvers SHOULD return `null` for unknown or `'unknown'` conditions so the\n * widget can skip the illustration.\n */\n@Injectable({\n providedIn: 'root',\n useFactory: () => inject(SiDefaultWeatherIconResolver)\n})\nexport abstract class SiWeatherIconResolver {\n abstract resolve(icon: SiWeatherIcon): SiWeatherIconResolution | null;\n}\n\nconst DEFAULT_CONDITION_ICONS: Record<SiWeatherCondition, string | null> = {\n clear: 'element-sun',\n clouds: 'element-cloudy',\n rain: 'element-rain',\n storm: 'element-storm',\n wind: 'element-wind',\n unknown: null\n};\n\n/**\n * Built-in resolver that maps the library's minimal\n * {@link SiWeatherCondition} vocabulary to Element icons:\n *\n * - `clear` → `element-sun`\n * - `clouds` → `element-cloudy`\n * - `rain` → `element-rain`\n * - `storm` → `element-storm`\n * - `wind` → `element-wind`\n * - `unknown` → no illustration\n *\n * Unknown tokens fall through to `null` so callers can register a more\n * capable resolver without losing the built-in fallback.\n */\n@Injectable({ providedIn: 'root' })\nexport class SiDefaultWeatherIconResolver extends SiWeatherIconResolver {\n override resolve(icon: SiWeatherIcon): SiWeatherIconResolution | null {\n if (!icon.condition) {\n return null;\n }\n const mapped = DEFAULT_CONDITION_ICONS[icon.condition as SiWeatherCondition];\n if (!mapped) {\n return null;\n }\n return { icon: mapped, alt: icon.alt };\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWeatherIconResolution, SiWeatherIconResolver } from './si-weather-icon.resolver';\nimport { SiWeatherIcon } from './si-weather-widget.types';\n\ninterface ResolvedIllustration {\n icon?: string;\n src?: string;\n alt: TranslatableString;\n}\n\ntype IllustrationSize = 'sm' | 'md' | 'lg';\n\n/**\n * Renders a weather illustration as either an `<si-icon>` (when the resolver\n * yields an icon name) or an `<img>` (when a raster `src` is provided).\n * Owns the icon resolution logic and the alt-text fallback chain. Not exported\n * from the public entry point.\n *\n * @internal\n */\n@Component({\n selector: 'si-weather-widget-illustration',\n imports: [SiIconComponent, SiTranslatePipe],\n template: `\n @let res = resolved();\n @if (res) {\n @if (res.icon) {\n <si-icon\n role=\"img\"\n class=\"si-weather-widget-illustration\"\n [icon]=\"res.icon\"\n [attr.aria-label]=\"res.alt | translate\"\n />\n } @else if (res.src) {\n <img class=\"si-weather-widget-illustration\" [src]=\"res.src\" [alt]=\"res.alt | translate\" />\n }\n }\n `,\n styleUrl: './si-weather-widget-illustration.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.si-weather-widget-illustration-sm]': \"size() === 'sm'\",\n '[class.si-weather-widget-illustration-md]': \"size() === 'md'\",\n '[class.si-weather-widget-illustration-lg]': \"size() === 'lg'\"\n }\n})\nexport class SiWeatherWidgetIllustrationComponent {\n readonly illustration = input<SiWeatherIcon | string>();\n readonly condition = input<TranslatableString>();\n readonly altFallback = input<TranslatableString>();\n /** @defaultValue 'lg' */\n readonly size = input<IllustrationSize>('lg');\n\n private readonly resolver = inject(SiWeatherIconResolver);\n private readonly defaultAlt = t(\n () => $localize`:@@SI_WEATHER_WIDGET.ILLUSTRATION_ALT:Weather illustration`\n );\n\n protected readonly resolved = computed<ResolvedIllustration | null>(() => {\n const illustration = this.illustration();\n if (!illustration) {\n return null;\n }\n const icon: SiWeatherIcon =\n typeof illustration === 'string' ? { src: illustration } : illustration;\n let resolution: SiWeatherIconResolution | null;\n if (icon.src) {\n resolution = { src: icon.src, alt: icon.alt };\n } else {\n resolution = this.resolver.resolve(icon);\n }\n if (!resolution || (!resolution.icon && !resolution.src)) {\n return null;\n }\n return {\n icon: resolution.icon,\n src: resolution.icon ? undefined : resolution.src,\n alt: resolution.alt ?? icon.alt ?? this.condition() ?? this.altFallback() ?? this.defaultAlt\n };\n });\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWeatherWidgetIllustrationComponent } from './si-weather-widget-illustration.component';\nimport { SiWeatherWidgetForecast, SiWeatherWidgetForecastColumn } from './si-weather-widget.types';\n\ntype ForecastLayout = 'vertical' | 'horizontal';\n\n/**\n * Forecast block of the weather widget. Renders either a vertical grid (with\n * optional extra data columns) or a horizontal day strip depending on\n * {@link layout}. Not exported from the public entry point.\n *\n * @internal\n */\n@Component({\n selector: 'si-weather-widget-forecast',\n imports: [SiIconComponent, SiTranslatePipe, SiWeatherWidgetIllustrationComponent],\n templateUrl: './si-weather-widget-forecast.component.html',\n styleUrl: './si-weather-widget-forecast.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiWeatherWidgetForecastComponent {\n readonly forecast = input.required<SiWeatherWidgetForecast>();\n /** @defaultValue 'vertical' */\n readonly layout = input<ForecastLayout>('vertical');\n readonly forecastLabel = input<TranslatableString>();\n\n protected readonly columns = computed(() => {\n const cols = this.forecast().columns;\n if (!cols) {\n return [] as readonly SiWeatherWidgetForecastColumn[];\n }\n // Hard cap at 5 extra columns; matches the breakpoint set declared in\n // the stylesheet. Authors should pass at most 5 columns and pick the most\n // important ones — the row will become unreadable beyond that.\n return cols.slice(0, 5);\n });\n\n protected columnValue(\n column: SiWeatherWidgetForecastColumn,\n index: number\n ): string | number | undefined {\n return column.values?.[index];\n }\n}\n","@let days = forecast().days;\n@let cols = columns();\n@let illustrationSize = layout() === 'vertical' ? 'sm' : 'md';\n\n<div\n class=\"si-weather-widget-forecast\"\n [class.si-weather-widget-vertical]=\"layout() === 'vertical'\"\n [class.si-weather-widget-horizontal]=\"layout() === 'horizontal'\"\n [attr.aria-label]=\"forecastLabel() | translate\"\n>\n @if (layout() === 'horizontal') {\n @for (day of days; track $index) {\n <div\n class=\"si-weather-widget-forecast-day\"\n [class.si-weather-widget-forecast-day-2]=\"$index === 1\"\n [class.si-weather-widget-forecast-day-3]=\"$index === 2\"\n [class.si-weather-widget-forecast-day-4]=\"$index === 3\"\n [class.si-weather-widget-forecast-day-5]=\"$index === 4\"\n >\n <div class=\"si-weather-widget-forecast-day-label\">{{ day.label | translate }}</div>\n <si-weather-widget-illustration\n [size]=\"illustrationSize\"\n [illustration]=\"day.illustration\"\n [altFallback]=\"day.label\"\n />\n <div class=\"si-weather-widget-forecast-day-range\">\n <span class=\"si-weather-widget-forecast-range-min\">{{ day.minTemperature }}</span>\n <span class=\"si-weather-widget-forecast-range-max\">{{ day.maxTemperature }}</span>\n </div>\n </div>\n }\n } @else {\n <ul\n class=\"si-weather-widget-forecast-list\"\n role=\"list\"\n [style.--si-weather-forecast-extras]=\"cols.length\"\n >\n @for (day of days; track $index; let i = $index) {\n <li class=\"si-weather-widget-forecast-row\">\n <span class=\"si-weather-widget-forecast-day-label\">\n {{ day.label | translate }}\n </span>\n <span class=\"si-weather-widget-forecast-illustration-cell\">\n <si-weather-widget-illustration\n [size]=\"illustrationSize\"\n [illustration]=\"day.illustration\"\n [altFallback]=\"day.label\"\n />\n </span>\n @for (col of cols; track $index; let extraIdx = $index) {\n <span\n class=\"si-weather-widget-forecast-extra\"\n role=\"img\"\n [class.si-weather-widget-forecast-extra-1]=\"extraIdx === 0\"\n [class.si-weather-widget-forecast-extra-2]=\"extraIdx === 1\"\n [class.si-weather-widget-forecast-extra-3]=\"extraIdx === 2\"\n [class.si-weather-widget-forecast-extra-4]=\"extraIdx === 3\"\n [class.si-weather-widget-forecast-extra-5]=\"extraIdx === 4\"\n [attr.aria-label]=\"(col.label | translate) + ': ' + (columnValue(col, i) ?? '')\"\n >\n @if (col.icon) {\n <si-icon\n class=\"icon si-weather-widget-forecast-extra-icon\"\n aria-hidden=\"true\"\n [icon]=\"col.icon\"\n />\n }\n <span aria-hidden=\"true\">{{ columnValue(col, i) ?? '' }}</span>\n </span>\n }\n <span class=\"si-weather-widget-forecast-range-cell\">\n <span class=\"si-weather-widget-forecast-range\">\n <span class=\"si-weather-widget-forecast-range-min\">{{ day.minTemperature }}</span>\n <span class=\"si-weather-widget-forecast-range-max\">{{ day.maxTemperature }}</span>\n </span>\n </span>\n </li>\n }\n </ul>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Skeleton loading state for the `<si-weather-widget-body>`. Not exported from\n * the public entry point.\n *\n * @internal\n */\n@Component({\n selector: 'si-weather-widget-skeleton',\n template: `\n <div class=\"si-weather-widget-skeleton-row\">\n <div class=\"si-weather-widget-skeleton-value si-skeleton\"></div>\n <div class=\"si-weather-widget-skeleton-col\">\n <div class=\"si-weather-widget-skeleton-illustration si-skeleton\"></div>\n <div class=\"si-weather-widget-skeleton-line si-skeleton\"></div>\n <div class=\"si-weather-widget-skeleton-line si-skeleton\"></div>\n </div>\n </div>\n `,\n styleUrl: './si-weather-widget-skeleton.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiWeatherWidgetSkeletonComponent {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, Directive, input } from '@angular/core';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWidgetBaseDirective } from '../si-widget-base.directive';\nimport { SiWeatherWidgetForecastComponent } from './si-weather-widget-forecast.component';\nimport { SiWeatherWidgetIllustrationComponent } from './si-weather-widget-illustration.component';\nimport { SiWeatherWidgetSkeletonComponent } from './si-weather-widget-skeleton.component';\nimport {\n SiWeatherWidgetCurrent,\n SiWeatherWidgetData,\n SiWeatherWidgetLayout\n} from './si-weather-widget.types';\n\nconst LAYOUT_CLASS: Record<SiWeatherWidgetLayout, string> = {\n vertical: 'si-weather-widget-vertical',\n horizontal: 'si-weather-widget-horizontal',\n compact: 'si-weather-widget-compact'\n};\n\n/**\n * Marker directive that types the `let-` context of the shared range\n * `<ng-template>` so its body gets full type checking instead of `any`.\n *\n * @internal\n */\n@Directive({ selector: '[siWeatherRangeDef]' })\nexport class SiWeatherRangeDefDirective {\n static ngTemplateContextGuard(\n _dir: SiWeatherRangeDefDirective,\n ctx: unknown\n ): ctx is { $implicit: SiWeatherWidgetCurrent } {\n return true;\n }\n}\n\n/**\n * Body of the `<si-weather-widget>`. Useful for compositions that do not need\n * the surrounding `<si-card>` chrome (e.g. embedding the weather inside a\n * custom container).\n *\n * Data is supplied as a composite {@link value} payload of type\n * {@link SiWeatherWidgetData}.\n *\n * The body delegates illustration resolution to the injected\n * {@link SiWeatherIconResolver}. The library ships a default resolver that\n * maps the built-in {@link SiWeatherCondition} vocabulary to Element icons.\n *\n * In the `vertical` layout the forecast list responsively hides additional\n * data columns (wind, humidity, …) via pure CSS container queries when the\n * widget becomes too narrow. See `si-weather-widget-body.component.scss` for\n * the thresholds.\n */\n@Component({\n selector: 'si-weather-widget-body',\n imports: [\n NgTemplateOutlet,\n SiTranslatePipe,\n SiWeatherRangeDefDirective,\n SiWeatherWidgetForecastComponent,\n SiWeatherWidgetIllustrationComponent,\n SiWeatherWidgetSkeletonComponent\n ],\n templateUrl: './si-weather-widget-body.component.html',\n styleUrl: './si-weather-widget-body.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'layoutClass()' }\n})\nexport class SiWeatherWidgetBodyComponent extends SiWidgetBaseDirective<SiWeatherWidgetData> {\n /**\n * Visual layout. {@link SiWeatherWidgetLayout}.\n *\n * @defaultValue 'vertical'\n */\n readonly layout = input<SiWeatherWidgetLayout>('vertical');\n /**\n * Optional location label, shown inside the body in the compact layout only.\n * The non-compact layouts render the location via the `<si-card>` heading\n * managed by `SiWeatherWidgetComponent`.\n */\n readonly location = input<TranslatableString>();\n /**\n * Accessible label for the additional data list.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_WEATHER_WIDGET.METRICS_LABEL:Additional weather data`)\n * ```\n */\n readonly metricsLabel = input<TranslatableString>(\n t(() => $localize`:@@SI_WEATHER_WIDGET.METRICS_LABEL:Additional weather data`)\n );\n /**\n * Accessible label for the forecast section.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_WEATHER_WIDGET.FORECAST_LABEL:Weather forecast`)\n * ```\n */\n readonly forecastLabel = input<TranslatableString>(\n t(() => $localize`:@@SI_WEATHER_WIDGET.FORECAST_LABEL:Weather forecast`)\n );\n\n protected readonly layoutClass = computed(() => LAYOUT_CLASS[this.layout()]);\n\n protected readonly isCompact = computed(() => this.layout() === 'compact');\n}\n","@let data = value();\n@let current = data?.current;\n@let metrics = data?.metrics;\n@let forecast = data?.forecast;\n@let loading = showLoadingIndicator();\n\n@if (loading) {\n <si-weather-widget-skeleton />\n} @else if (current) {\n @if (isCompact()) {\n <div class=\"si-weather-widget-today\">\n <si-weather-widget-illustration\n size=\"sm\"\n [illustration]=\"current.illustration\"\n [condition]=\"current.condition\"\n [altFallback]=\"current.illustrationAlt\"\n />\n <div class=\"si-weather-widget-today-info\">\n @if (location()) {\n <div class=\"si-weather-widget-location\">{{ location() | translate }}</div>\n }\n <ng-container *ngTemplateOutlet=\"rangeTpl; context: { $implicit: current }\" />\n </div>\n </div>\n } @else {\n <div class=\"si-weather-widget-today\">\n <div class=\"si-weather-widget-temperature\">{{ current.temperature }}</div>\n <div class=\"si-weather-widget-today-info\">\n <si-weather-widget-illustration\n size=\"lg\"\n [illustration]=\"current.illustration\"\n [condition]=\"current.condition\"\n [altFallback]=\"current.illustrationAlt\"\n />\n @if (current.condition) {\n <div class=\"si-weather-widget-condition\">{{ current.condition | translate }}</div>\n }\n <ng-container *ngTemplateOutlet=\"rangeTpl; context: { $implicit: current }\" />\n </div>\n </div>\n }\n\n @if (metrics?.length) {\n <ul class=\"si-weather-widget-metrics\" [attr.aria-label]=\"metricsLabel() | translate\">\n @for (metric of metrics; track $index) {\n <li class=\"si-weather-widget-metric\">\n <span class=\"si-weather-widget-metric-label\">{{ metric.label | translate }}</span>\n <span class=\"si-weather-widget-metric-value\">{{ metric.value }}</span>\n </li>\n }\n </ul>\n }\n\n @if (!isCompact() && forecast && forecast.days.length) {\n <si-weather-widget-forecast\n [forecast]=\"forecast\"\n [layout]=\"layout() === 'horizontal' ? 'horizontal' : 'vertical'\"\n [forecastLabel]=\"forecastLabel()\"\n />\n }\n}\n\n<ng-template #rangeTpl let-c siWeatherRangeDef>\n @if (c.minTemperature !== undefined || c.maxTemperature !== undefined) {\n <div class=\"si-weather-widget-range\">\n @if (c.minTemperature !== undefined) {\n <span class=\"si-weather-widget-range-min\">{{ c.minTemperature }}</span>\n }\n @if (c.maxTemperature !== undefined) {\n <span class=\"si-weather-widget-range-max\">{{ c.maxTemperature }}</span>\n }\n </div>\n }\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input\n} from '@angular/core';\nimport { SiCardComponent } from '@siemens/element-ng/card';\nimport { AccentLineType } from '@siemens/element-ng/common';\nimport { ContentActionBarMainItem } from '@siemens/element-ng/content-action-bar';\nimport { MenuItem } from '@siemens/element-ng/menu';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiWeatherWidgetBodyComponent } from './si-weather-widget-body.component';\nimport { SiWeatherWidgetData, SiWeatherWidgetLayout } from './si-weather-widget.types';\n\n/**\n * Dashboard widget for current weather conditions, additional metrics and an\n * optional multi-day forecast.\n *\n * The widget supports three layouts (see {@link SiWeatherWidgetLayout}):\n *\n * - `vertical` (default): full vertical card with `<si-card>` heading,\n * illustration, today block, optional additional data and an optional\n * forecast table with up to five extra columns.\n * - `horizontal`: wider card with the today block laid out side by side and a\n * horizontal forecast strip below. The forecast SHOULD contain at least three\n * days for a visually balanced layout.\n * - `compact`: condensed variant without a card header. The {@link location} is\n * rendered next to the illustration. The forecast is not shown.\n *\n * Data is supplied as a composite {@link value} payload of type\n * {@link SiWeatherWidgetData}.\n *\n * Weather illustrations are resolved by an optional `SiWeatherIconResolver`\n * that application developers register. Without a resolver the widget only\n * renders illustrations when callers pass a direct `illustration.src`.\n */\n@Component({\n selector: 'si-weather-widget',\n imports: [SiCardComponent, SiWeatherWidgetBodyComponent],\n templateUrl: './si-weather-widget.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'si-weather-widget' }\n})\nexport class SiWeatherWidgetComponent {\n /**\n * Card heading text. Used as the card header in `vertical` and `horizontal`\n * layouts. In the `compact` layout, the location is rendered inside the body\n * instead and this input is ignored.\n */\n readonly heading = input<TranslatableString>();\n /**\n * Location displayed next to the illustration in the `compact` layout. Has\n * no effect in `vertical` or `horizontal` layouts; use {@link heading} there.\n */\n readonly location = input<TranslatableString>();\n /**\n * Visual layout. {@link SiWeatherWidgetLayout}.\n *\n * @defaultValue 'vertical'\n */\n readonly layout = input<SiWeatherWidgetLayout>('vertical');\n /**\n * Composite weather payload of type {@link SiWeatherWidgetData}.\n */\n readonly value = input<SiWeatherWidgetData>();\n /**\n * Input list of primary action items. Supports up to **4** actions and omits additional ones.\n *\n * @defaultValue []\n */\n readonly primaryActions = input<ContentActionBarMainItem[]>([]);\n /**\n * Input list of secondary action items.\n *\n * @defaultValue []\n */\n readonly secondaryActions = input<MenuItem[]>([]);\n /**\n * Option to disable automatic start of skeleton loading indication.\n *\n * @defaultValue false\n */\n readonly disableAutoLoadingIndicator = input(false, { transform: booleanAttribute });\n /**\n * Input to start and stop the skeleton loading indication.\n *\n * @defaultValue false\n */\n readonly showLoadingIndicator = input(false, { transform: booleanAttribute });\n /**\n * Initial delay time in milliseconds before enabling loading indicator.\n * Only used once initially during construction.\n *\n * @defaultValue 300\n */\n readonly initialLoadingIndicatorDebounceTime = input(300);\n /**\n * Image source for the card.\n */\n readonly imgSrc = input<string>();\n /**\n * Alt text for a provided image.\n */\n readonly imgAlt = input<TranslatableString>();\n /**\n * Defines if an image is placed on top or start (left) of the card.\n *\n * @defaultValue 'vertical'\n */\n readonly imgDir = input<'horizontal' | 'vertical'>('vertical');\n /**\n * Sets the image [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) CSS property.\n *\n * @defaultValue 'scale-down'\n */\n readonly imgObjectFit = input<'contain' | 'cover' | 'fill' | 'none' | 'scale-down'>('scale-down');\n /**\n * Sets the image [object-position](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position) CSS property.\n */\n readonly imgObjectPosition = input<string>();\n /**\n * Optional accent line.\n */\n readonly accentLine = input<AccentLineType>();\n\n protected readonly accentClass = computed(() => {\n const accentLine = this.accentLine();\n return accentLine ? 'accent-' + accentLine : '';\n });\n\n protected readonly cardHeading = computed(() =>\n this.layout() === 'compact' ? undefined : this.heading()\n );\n\n protected readonly bodyLocation = computed(() =>\n this.layout() === 'compact' ? this.location() : undefined\n );\n}\n","<si-card\n class=\"h-100\"\n [class]=\"accentClass()\"\n [heading]=\"cardHeading()\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [imgSrc]=\"imgSrc()\"\n [imgDir]=\"imgDir()\"\n [imgAlt]=\"imgAlt()\"\n [imgObjectFit]=\"imgObjectFit()\"\n [imgObjectPosition]=\"imgObjectPosition()\"\n>\n <div class=\"card-body\" body>\n <si-weather-widget-body\n [layout]=\"layout()\"\n [value]=\"value()\"\n [location]=\"bodyLocation()\"\n [disableAutoLoadingIndicator]=\"disableAutoLoadingIndicator()\"\n [showLoadingIndicator]=\"showLoadingIndicator()\"\n [initialLoadingIndicatorDebounceTime]=\"initialLoadingIndicatorDebounceTime()\"\n />\n </div>\n</si-card>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-dashboard-card.component';\nexport * from './si-dashboard.component';\nexport * from './si-dashboard.module';\nexport * from './si-dashboard.service';\nexport * from './widgets/si-link-widget/si-link-widget.component';\nexport * from './widgets/si-list-widget/si-list-widget.component';\nexport * from './widgets/si-list-widget/si-list-widget-body.component';\nexport * from './widgets/si-list-widget/si-list-widget-item.component';\nexport * from './widgets/si-timeline-widget/si-timeline-widget.component';\nexport * from './widgets/si-timeline-widget/si-timeline-widget-body.component';\nexport * from './widgets/si-timeline-widget/si-timeline-widget-item.component';\nexport * from './widgets/si-value-widget/si-value-widget-body.component';\nexport * from './widgets/si-value-widget/si-value-widget.component';\nexport * from './widgets/si-weather-widget/si-weather-icon.resolver';\nexport * from './widgets/si-weather-widget/si-weather-widget-body.component';\nexport * from './widgets/si-weather-widget/si-weather-widget.component';\nexport * from './widgets/si-weather-widget/si-weather-widget.types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}