@siemens/element-ng 51.1.0 → 51.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/fesm2022/siemens-element-ng-about.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-action-modal.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-ag-grid.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-autocomplete.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-avatar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-badge.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-carousel.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-column-selection-dialog.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-common.mjs +13 -17
- package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-connection-strength.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-copyright-notice.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-dashboard.mjs +15 -1
- package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datepicker.mjs +13 -3
- package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +8 -5
- package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-footer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-form.mjs +4 -4
- package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-formly-legacy.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-help-button.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-info-page.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-landing-page.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-link.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-localization.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-maplibre.mjs +2 -2
- package/fesm2022/siemens-element-ng-maplibre.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-directives-tabs.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-extensions-citations.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs +2 -2
- package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-extensions-mermaid.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-hightlighter-highlightjs.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-notification-item.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-number-input.mjs +3 -3
- package/fesm2022/siemens-element-ng-number-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-pagination.mjs +2 -2
- package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-photo-upload.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover-legacy.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover.mjs +16 -5
- package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-progressbar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-resize-observer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-search-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-shadow-root.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-skip-links.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-slider.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-source-chip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-counter.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-toggle.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-summary-widget.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-system-banner.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs-legacy.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs.mjs +7 -5
- package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-theme.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tour.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tree-view.mjs +15 -10
- package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-typeahead.mjs +9 -0
- package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
- package/fesm2022/siemens-element-ng.mjs.map +1 -1
- package/maplibre/styles/maplibre-gl.scss +8 -2
- package/package.json +5 -5
- package/schematics/migrations/data/attribute-selectors.js +8 -1
- package/schematics/migrations/data/element-selectors.js +7 -1
- package/schematics/migrations/data/symbol-renaming.js +10 -0
- package/schematics/migrations/utilities/attribute-selector.migration.js +26 -10
- package/schematics/migrations/utilities/element-selector.migration.js +25 -15
- package/schematics/migrations/utilities/symbol-renaming.migration.js +90 -3
- package/schematics/utils/template-edit-utils.js +9 -0
- package/template-i18n.json +2 -2
- package/types/siemens-element-ng-dashboard.d.ts +2 -0
- package/types/siemens-element-ng-datepicker.d.ts +6 -1
- package/types/siemens-element-ng-form.d.ts +1 -1
- package/types/siemens-element-ng-number-input.d.ts +2 -2
- package/types/siemens-element-ng-popover.d.ts +1 -1
- package/types/siemens-element-ng-tabs.d.ts +1 -0
- package/types/siemens-element-ng-tree-view.d.ts +1 -0
- package/types/siemens-element-ng-typeahead.d.ts +7 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-list-details.mjs","sources":["../../../../projects/element-ng/list-details/si-list-details.component.ts","../../../../projects/element-ng/list-details/si-list-details.component.html","../../../../projects/element-ng/list-details/si-list-pane/si-list-pane.component.ts","../../../../projects/element-ng/list-details/si-list-pane/si-list-pane.component.html","../../../../projects/element-ng/list-details/si-list-pane-header/si-list-pane-header.component.ts","../../../../projects/element-ng/list-details/si-list-pane-header/si-list-pane-header.component.html","../../../../projects/element-ng/list-details/si-list-pane-body/si-list-pane-body.component.ts","../../../../projects/element-ng/list-details/si-list-pane-body/si-list-pane-body.component.html","../../../../projects/element-ng/list-details/si-details-pane/si-details-pane.component.ts","../../../../projects/element-ng/list-details/si-details-pane/si-details-pane.component.html","../../../../projects/element-ng/list-details/si-details-pane-header/si-details-pane-header.component.ts","../../../../projects/element-ng/list-details/si-details-pane-header/si-details-pane-header.component.html","../../../../projects/element-ng/list-details/si-details-pane-body/si-details-pane-body.component.ts","../../../../projects/element-ng/list-details/si-details-pane-body/si-details-pane-body.component.html","../../../../projects/element-ng/list-details/si-details-pane-footer/si-details-pane-footer.component.ts","../../../../projects/element-ng/list-details/si-details-pane-footer/si-details-pane-footer.component.html","../../../../projects/element-ng/list-details/index.ts","../../../../projects/element-ng/list-details/siemens-element-ng-list-details.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n OnChanges,\n OnDestroy,\n OnInit,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { areAnimationsDisabled } from '@siemens/element-ng/common';\nimport {\n BOOTSTRAP_BREAKPOINTS,\n ElementDimensions,\n ResizeObserverService\n} from '@siemens/element-ng/resize-observer';\nimport { SiSplitComponent, SiSplitPartComponent, SplitUnit } from '@siemens/element-ng/split';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\n\nconst DEFAULT_LIST_WIDTH_PERCENT = 32;\n\n@Component({\n selector: 'si-list-details',\n imports: [NgTemplateOutlet, SiSplitComponent, SiSplitPartComponent],\n templateUrl: './si-list-details.component.html',\n styleUrl: './si-list-details.component.scss',\n host: {\n class: 'si-layout-inner list-details-layout d-flex flex-column',\n '[class.animations-disabled]': 'animationsGloballyDisabled',\n '[class.expanded]': 'hasLargeSize()',\n '[style.opacity]': 'opacity()'\n }\n})\nexport class SiListDetailsComponent implements OnInit, OnChanges, OnDestroy {\n private resizeSubs?: Subscription;\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private resizeObserver = inject(ResizeObserverService);\n private readonly listDetailsContainer = viewChild.required<ElementRef>('listDetailsContainer');\n private readonly listPart = viewChild('listSplitPart', {\n read: SiSplitPartComponent\n });\n private readonly split = viewChild(SiSplitComponent, {\n read: ElementRef<HTMLElement>\n });\n protected readonly animationsGloballyDisabled = areAnimationsDisabled();\n\n /**\n * A numeric value defining the minimum width in px, which the component needs\n * to be displayed in its large layout. Whenever smaller than\n * this threshold, the small layout will be used. Default is\n * value is BOOTSTRAP_BREAKPOINTS.mdMinimum.\n *\n * @defaultValue BOOTSTRAP_BREAKPOINTS.mdMinimum\n */\n readonly expandBreakpoint = input(BOOTSTRAP_BREAKPOINTS.mdMinimum);\n\n readonly hasLargeSize = computed(() => {\n const dimensions = this.resizeDimensions();\n return !!dimensions && dimensions.width >= this.expandBreakpoint();\n });\n\n /**\n * Whether the details are currently active or not, mostly relevant in the\n * responsive scenario when the viewport only shows either the list or the detail.\n *\n * @defaultValue false\n */\n readonly detailsActive = model(false);\n\n /**\n * Whether the list and detail parts should be resizable by a splitter or not.\n * This is only supported in the 'large' scenario (when `hasLargeSize` is `true`).\n * Default value is `false`.\n *\n * @defaultValue false\n */\n readonly disableResizing = input(false, { transform: booleanAttribute });\n\n /**\n * The list pane size, updated when the split is resized or restored.\n * With resizing enabled, the value uses {@link listWidthUnit}: pixels for `px`,\n * or a percentage-based fractional weight for `fr`. With resizing disabled,\n * the value is always interpreted as a percentage.\n * Percentage values must be in the inclusive range 0-100; values outside this\n * range fall back to a 32/68 list/details split.\n *\n * @defaultValue 300\n */\n readonly listWidth = model<number>(300);\n\n /**\n * Unit used for the list split part when resizing is enabled.\n *\n * @defaultValue 'px'\n */\n readonly listWidthUnit = input<SplitUnit>('px');\n\n /**\n * Sets the minimal width of the list component in pixel.\n *\n * @defaultValue 300\n */\n readonly minListSize = input(300);\n\n /**\n * Sets the minimal width of the detail component in pixel.\n *\n * @defaultValue 300\n */\n readonly minDetailsSize = input(300);\n\n /**\n * An optional stateId to uniquely identify a component instance.\n * Required for persistence of ui state.\n */\n readonly stateId = input<string>();\n\n /**\n * Percentage width shared by static and resizable `fr` layouts.\n * The migration sets `listWidthUnit=\"fr\"` without setting `listWidth`, so the default\n * pixel width of 300 must fall back to 32 to preserve the legacy 32/68 split.\n * @internal\n */\n readonly listWidthPercent = computed(() => {\n const listWidth = this.listWidth();\n return listWidth >= 0 && listWidth <= 100 ? listWidth : DEFAULT_LIST_WIDTH_PERCENT;\n });\n\n protected readonly splitSizes = computed<[number, number]>(() => {\n if (this.listWidthUnit() === 'fr') {\n const relativeListWidth = this.listWidthPercent();\n return [relativeListWidth, 100 - relativeListWidth];\n }\n\n return [this.listWidth(), 1];\n });\n\n protected readonly listStateId = computed(() => {\n const stateId = this.stateId();\n return stateId ? `${stateId}-list` : undefined;\n });\n\n protected readonly detailsStateId = computed(() => {\n const stateId = this.stateId();\n return stateId ? `${stateId}-details` : undefined;\n });\n\n protected readonly opacity = computed(() => (this.resizeDimensions() ? '' : '0'));\n\n /** @internal */\n readonly detailsExpandedAnimation = computed(() => {\n if (!this.hasLargeSize()) {\n return this.detailsActive() ? 'details-active expanded' : 'collapsed';\n } else {\n return 'disabled';\n }\n });\n\n // Used for focus transfer, can not use a focus trap for this.\n private hadLargeSizePreviously: boolean | undefined;\n private detailsActivePreviously: boolean | undefined;\n private previouslyFocusedElementInList: HTMLElement | undefined;\n\n /** @internal */\n readonly transferFocusToList = new Subject<HTMLElement | undefined>();\n /**\n * A behavior subject because the details component may only be created when details are visible.\n * @internal\n */\n readonly transferFocusToDetails = new BehaviorSubject<boolean>(false);\n\n private animationDone?: () => void;\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (changes.detailsActive) {\n this.transferFocus();\n }\n }\n\n ngOnInit(): void {\n this.resizeSubs = this.resizeObserver\n .observe(this.elementRef.nativeElement, 100, true)\n .subscribe(dimensions => {\n this.resizeDimensions.set(dimensions);\n this.transferFocus();\n });\n }\n\n ngOnDestroy(): void {\n this.resizeSubs?.unsubscribe();\n }\n\n private readonly resizeDimensions = signal<ElementDimensions | undefined>(undefined);\n\n protected onSplitSizesChange(sizes: number[]): void {\n if (this.listWidthUnit() === 'px') {\n this.listWidth.set(this.getListSizePx(sizes[0]));\n } else {\n this.listWidth.set(sizes[0]);\n }\n }\n\n private getListSizePx(fallbackPercentage: number): number {\n const listWidth = this.listPart()?.expandedSize();\n if (listWidth !== undefined) {\n return listWidth;\n }\n\n const splitWidth = this.split()?.nativeElement.getBoundingClientRect().width;\n return splitWidth ? (splitWidth * fallbackPercentage) / 100 : this.minListSize();\n }\n\n /** @internal */\n detailsBackClicked(options?: { animationDone?: () => void }): void {\n this.detailsActive.set(false);\n // Directly call the done callback if animations are disabled.\n if (this.animationsGloballyDisabled) {\n options?.animationDone?.();\n } else {\n // This callback is used to route after the animation is done.\n this.animationDone = options?.animationDone;\n }\n }\n\n protected detailsExpandedAnimationDone(event: TransitionEvent): void {\n // Since the 'transitionend' event bubbles up from child elements,\n // ensure the event target is the container itself.\n if (this.animationDone && this.listDetailsContainer().nativeElement === event.target) {\n this.animationDone();\n this.animationDone = undefined;\n }\n }\n\n // Transfer focus onto child panes if they would be inaccessible.\n\n private transferFocus(): void {\n // Check if dimensions have even been evaluated.\n const hasLargeSize = this.resizeDimensions() ? this.hasLargeSize() : undefined;\n const detailsActive = this.detailsActive();\n if (this.hadLargeSizePreviously !== undefined && this.detailsActivePreviously !== undefined) {\n if (\n detailsActive &&\n !hasLargeSize &&\n (!this.detailsActivePreviously || this.hadLargeSizePreviously)\n ) {\n if (!this.hadLargeSizePreviously) {\n this.previouslyFocusedElementInList = document?.activeElement as HTMLElement | undefined;\n }\n this.transferFocusToDetails.next(true);\n }\n if (!detailsActive && this.detailsActivePreviously) {\n this.transferFocusToList.next(this.previouslyFocusedElementInList);\n this.previouslyFocusedElementInList = undefined;\n }\n }\n this.hadLargeSizePreviously = hasLargeSize;\n this.detailsActivePreviously = detailsActive;\n }\n}\n","@if (!disableResizing() && hasLargeSize()) {\n <si-split\n class=\"w-100 flex-grow-1\"\n orientation=\"horizontal\"\n [stateId]=\"stateId()\"\n (sizesChange)=\"onSplitSizesChange($event)\"\n >\n <si-split-part\n #listSplitPart\n [unit]=\"listWidthUnit()\"\n [size]=\"splitSizes()[0]\"\n [showHeader]=\"false\"\n [minSize]=\"minListSize()\"\n [stateId]=\"listStateId()\"\n >\n <ng-container *ngTemplateOutlet=\"listTemplate\" />\n </si-split-part>\n <si-split-part\n unit=\"fr\"\n [size]=\"splitSizes()[1]\"\n [showHeader]=\"false\"\n [minSize]=\"minDetailsSize()\"\n [stateId]=\"detailsStateId()\"\n >\n <ng-container *ngTemplateOutlet=\"detailsTemplate\" />\n </si-split-part>\n </si-split>\n} @else {\n <div\n #listDetailsContainer\n [class]=\"`list-details d-flex flex-row ${detailsExpandedAnimation()}`\"\n [class.gap-6]=\"hasLargeSize()\"\n (transitionend)=\"detailsExpandedAnimationDone($event)\"\n >\n <ng-container *ngTemplateOutlet=\"listTemplate\" />\n <ng-container *ngTemplateOutlet=\"detailsTemplate\" />\n </div>\n}\n\n<ng-template #listTemplate>\n <ng-content select=\"si-list-pane\" />\n</ng-template>\n\n<ng-template #detailsTemplate>\n <ng-content select=\"si-details-pane\" />\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, ElementRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { SiListDetailsComponent } from '../si-list-details.component';\n\n@Component({\n selector: 'si-list-pane',\n templateUrl: './si-list-pane.component.html',\n styleUrl: './si-list-pane.component.scss',\n host: {\n '[class.expanded]': 'parent.hasLargeSize()',\n '[class.details-active]': 'parent.detailsActive() && !parent.hasLargeSize()',\n '[attr.inert]': '!parent.hasLargeSize() && parent.detailsActive() ? \"\" : null',\n '[attr.tabindex]': '-1',\n '[style.flex-basis.%]':\n 'parent.hasLargeSize() && parent.disableResizing() ? parent.listWidthPercent() : undefined'\n }\n})\nexport class SiListPaneComponent {\n protected parent = inject(SiListDetailsComponent);\n private element: ElementRef<HTMLElement> = inject(ElementRef);\n\n constructor() {\n this.parent.transferFocusToList\n .pipe(takeUntilDestroyed())\n .subscribe(previouslyFocusedElement => {\n // Needed so it's no longer \"inert\".\n setTimeout(() => {\n const currentlyFocused = document?.activeElement;\n previouslyFocusedElement?.focus();\n // If there was no previously focused element or if it couldn't be focused anymore, fall back to the focusing the list.\n if (currentlyFocused === document?.activeElement) {\n this.element?.nativeElement?.focus();\n }\n });\n });\n }\n}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'si-list-pane-header',\n templateUrl: './si-list-pane-header.component.html',\n styleUrl: './si-list-pane-header.component.scss'\n})\nexport class SiListPaneHeaderComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'si-list-pane-body',\n templateUrl: './si-list-pane-body.component.html',\n styleUrl: './si-list-pane-body.component.scss'\n})\nexport class SiListPaneBodyComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, contentChild, DestroyRef, effect, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RouterOutlet } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { SiListDetailsComponent } from '../si-list-details.component';\n\n@Component({\n selector: 'si-details-pane',\n imports: [],\n templateUrl: './si-details-pane.component.html',\n styleUrl: './si-details-pane.component.scss',\n host: {\n '[class.expanded]': 'parent.hasLargeSize()',\n '[class.details-active]': 'parent.detailsActive() && !parent.hasLargeSize()',\n '[attr.inert]': '!parent.hasLargeSize() && !parent.detailsActive() ? \"\" : null',\n '[style.flex-basis.%]':\n 'parent.hasLargeSize() && parent.disableResizing() ? 100 - parent.listWidthPercent() : undefined'\n }\n})\nexport class SiDetailsPaneComponent {\n protected parent = inject(SiListDetailsComponent);\n\n private readonly routerOutlet = contentChild(RouterOutlet);\n private subscription?: Subscription;\n private destroyer = inject(DestroyRef);\n /** @internal */\n readonly isRouterBased = computed(() => !!this.routerOutlet());\n\n constructor() {\n effect(() => {\n const outlet = this.routerOutlet();\n if (outlet) {\n this.parent.detailsActive.set(!outlet.activatedRouteData.SI_EMPTY_DETAILS);\n this.subscription?.unsubscribe();\n this.subscription = outlet.activateEvents\n .pipe(takeUntilDestroyed(this.destroyer))\n .subscribe(() =>\n this.parent.detailsActive.set(!outlet.activatedRouteData.SI_EMPTY_DETAILS)\n );\n }\n });\n }\n}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n Signal,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { elementBack } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiDetailsPaneComponent } from '../si-details-pane/si-details-pane.component';\nimport { SiListDetailsComponent } from '../si-list-details.component';\n\n@Component({\n selector: 'si-details-pane-header',\n imports: [SiTranslatePipe, SiIconComponent],\n templateUrl: './si-details-pane-header.component.html',\n styleUrl: './si-details-pane-header.component.scss',\n host: {\n class: 'nav nav-tabs' // To allow nav-link styling.\n }\n})\nexport class SiDetailsPaneHeaderComponent {\n protected readonly icons = addIcons({ elementBack });\n\n private parent = inject(SiListDetailsComponent);\n\n /**\n * Optional title to be displayed.\n */\n readonly title = input<TranslatableString>();\n\n /**\n * You can hide the back button in the mobile view by setting true. Required\n * in add, edit workflows on mobile sizes. During add or edit, the back button\n * should be hidden. Default value is `false`.\n *\n * @defaultValue false\n */\n readonly hideBackButton = input(false, { transform: booleanAttribute });\n\n /**\n * Details back button text. Required for a11y.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LIST_DETAILS.BACK:Back`)\n * ```\n */\n readonly backButtonText = input(t(() => $localize`:@@SI_LIST_DETAILS.BACK:Back`));\n\n /**\n * The URL to navigate to when the back buttons is clicked.\n * This is only used when the `si-details-pane` is used with a router-outlet.\n *\n * @defaultValue '../'\n */\n readonly backButtonUrl = input('../');\n\n private isRouterBased = inject(SiDetailsPaneComponent).isRouterBased;\n private router = inject(Router, { optional: true });\n private activatedRoute = inject(ActivatedRoute, { optional: true });\n\n private readonly backButton = viewChild<ElementRef<HTMLElement>>('backButton');\n\n constructor() {\n this.parent.transferFocusToDetails.pipe(takeUntilDestroyed()).subscribe(shouldFocus => {\n if (shouldFocus) {\n const backButton = this.backButton();\n if (backButton) {\n // Needed so it's no longer \"inert\" and loaded.\n setTimeout(() => backButton?.nativeElement?.focus());\n }\n }\n });\n }\n\n protected get hasLargeSize(): Signal<boolean> {\n return this.parent.hasLargeSize;\n }\n\n protected backClicked(): void {\n this.parent.detailsBackClicked({\n animationDone: this.isRouterBased()\n ? // We navigate back after the animation is done.\n // This ensures, that the details pane visible while animating.\n () => this.router!.navigate([this.backButtonUrl()], { relativeTo: this.activatedRoute })\n : undefined\n });\n }\n}\n","@if ((!hasLargeSize() && !hideBackButton()) || title()) {\n <div class=\"title-subgroup\">\n @if (!hasLargeSize() && !hideBackButton()) {\n <button\n #backButton\n type=\"button\"\n class=\"si-details-header-back nav-link focus-inside px-6\"\n (click)=\"backClicked()\"\n >\n <si-icon class=\"pe-2 d-inline-block position-relative icon\" [icon]=\"icons.elementBack\" />\n {{ backButtonText() | translate }}\n </button>\n }\n @if (title()) {\n <span class=\"si-details-header-title si-body px-6\">{{ title() | translate }}</span>\n }\n </div>\n}\n<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'si-details-pane-body',\n imports: [],\n templateUrl: './si-details-pane-body.component.html',\n styleUrl: './si-details-pane-body.component.scss'\n})\nexport class SiDetailsPaneBodyComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'si-details-pane-footer',\n imports: [],\n templateUrl: './si-details-pane-footer.component.html',\n styleUrl: './si-details-pane-footer.component.scss'\n})\nexport class SiDetailsPaneFooterComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-list-details.component';\nexport * from './si-list-pane/si-list-pane.component';\nexport * from './si-list-pane-header/si-list-pane-header.component';\nexport * from './si-list-pane-body/si-list-pane-body.component';\nexport * from './si-details-pane/si-details-pane.component';\nexport * from './si-details-pane-header/si-details-pane-header.component';\nexport * from './si-details-pane-body/si-details-pane-body.component';\nexport * from './si-details-pane-footer/si-details-pane-footer.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-list-details.mjs","sources":["../../../../projects/element-ng/list-details/si-list-details.component.ts","../../../../projects/element-ng/list-details/si-list-details.component.html","../../../../projects/element-ng/list-details/si-list-pane/si-list-pane.component.ts","../../../../projects/element-ng/list-details/si-list-pane/si-list-pane.component.html","../../../../projects/element-ng/list-details/si-list-pane-header/si-list-pane-header.component.ts","../../../../projects/element-ng/list-details/si-list-pane-header/si-list-pane-header.component.html","../../../../projects/element-ng/list-details/si-list-pane-body/si-list-pane-body.component.ts","../../../../projects/element-ng/list-details/si-list-pane-body/si-list-pane-body.component.html","../../../../projects/element-ng/list-details/si-details-pane/si-details-pane.component.ts","../../../../projects/element-ng/list-details/si-details-pane/si-details-pane.component.html","../../../../projects/element-ng/list-details/si-details-pane-header/si-details-pane-header.component.ts","../../../../projects/element-ng/list-details/si-details-pane-header/si-details-pane-header.component.html","../../../../projects/element-ng/list-details/si-details-pane-body/si-details-pane-body.component.ts","../../../../projects/element-ng/list-details/si-details-pane-body/si-details-pane-body.component.html","../../../../projects/element-ng/list-details/si-details-pane-footer/si-details-pane-footer.component.ts","../../../../projects/element-ng/list-details/si-details-pane-footer/si-details-pane-footer.component.html","../../../../projects/element-ng/list-details/index.ts","../../../../projects/element-ng/list-details/siemens-element-ng-list-details.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n OnChanges,\n OnDestroy,\n OnInit,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { areAnimationsDisabled } from '@siemens/element-ng/common';\nimport {\n BOOTSTRAP_BREAKPOINTS,\n ElementDimensions,\n ResizeObserverService\n} from '@siemens/element-ng/resize-observer';\nimport { SiSplitComponent, SiSplitPartComponent, SplitUnit } from '@siemens/element-ng/split';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\n\nconst DEFAULT_LIST_WIDTH_PERCENT = 32;\n\n@Component({\n selector: 'si-list-details',\n imports: [NgTemplateOutlet, SiSplitComponent, SiSplitPartComponent],\n templateUrl: './si-list-details.component.html',\n styleUrl: './si-list-details.component.scss',\n host: {\n class: 'si-layout-inner list-details-layout d-flex flex-column',\n '[class.animations-disabled]': 'animationsGloballyDisabled',\n '[class.expanded]': 'hasLargeSize()',\n '[style.opacity]': 'opacity()'\n }\n})\nexport class SiListDetailsComponent implements OnInit, OnChanges, OnDestroy {\n private resizeSubs?: Subscription;\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private resizeObserver = inject(ResizeObserverService);\n private readonly listDetailsContainer = viewChild.required<ElementRef>('listDetailsContainer');\n private readonly listPart = viewChild('listSplitPart', {\n read: SiSplitPartComponent\n });\n private readonly split = viewChild(SiSplitComponent, {\n read: ElementRef<HTMLElement>\n });\n protected readonly animationsGloballyDisabled = areAnimationsDisabled();\n\n /**\n * A numeric value defining the minimum width in px, which the component needs\n * to be displayed in its large layout. Whenever smaller than\n * this threshold, the small layout will be used. Default is\n * value is BOOTSTRAP_BREAKPOINTS.mdMinimum.\n *\n * @defaultValue BOOTSTRAP_BREAKPOINTS.mdMinimum\n */\n readonly expandBreakpoint = input(BOOTSTRAP_BREAKPOINTS.mdMinimum);\n\n readonly hasLargeSize = computed(() => {\n const dimensions = this.resizeDimensions();\n return !!dimensions && dimensions.width >= this.expandBreakpoint();\n });\n\n /**\n * Whether the details are currently active or not, mostly relevant in the\n * responsive scenario when the viewport only shows either the list or the detail.\n *\n * @defaultValue false\n */\n readonly detailsActive = model(false);\n\n /**\n * Whether the list and detail parts should be resizable by a splitter or not.\n * This is only supported in the 'large' scenario (when `hasLargeSize` is `true`).\n * Default value is `false`.\n *\n * @defaultValue false\n */\n readonly disableResizing = input(false, { transform: booleanAttribute });\n\n /**\n * The list pane size, updated when the split is resized or restored.\n * With resizing enabled, the value uses {@link listWidthUnit}: pixels for `px`,\n * or a percentage-based fractional weight for `fr`. With resizing disabled,\n * the value is always interpreted as a percentage.\n * Percentage values must be in the inclusive range 0-100; values outside this\n * range fall back to a 32/68 list/details split.\n *\n * @defaultValue 300\n */\n readonly listWidth = model<number>(300);\n\n /**\n * Unit used for the list split part when resizing is enabled.\n *\n * @defaultValue 'px'\n */\n readonly listWidthUnit = input<SplitUnit>('px');\n\n /**\n * Sets the minimal width of the list component in pixel.\n *\n * @defaultValue 300\n */\n readonly minListSize = input(300);\n\n /**\n * Sets the minimal width of the detail component in pixel.\n *\n * @defaultValue 300\n */\n readonly minDetailsSize = input(300);\n\n /**\n * An optional stateId to uniquely identify a component instance.\n * Required for persistence of ui state.\n */\n readonly stateId = input<string>();\n\n /**\n * Percentage width shared by static and resizable `fr` layouts.\n * The migration sets `listWidthUnit=\"fr\"` without setting `listWidth`, so the default\n * pixel width of 300 must fall back to 32 to preserve the legacy 32/68 split.\n * @internal\n */\n readonly listWidthPercent = computed(() => {\n const listWidth = this.listWidth();\n return listWidth >= 0 && listWidth <= 100 ? listWidth : DEFAULT_LIST_WIDTH_PERCENT;\n });\n\n protected readonly splitSizes = computed<[number, number]>(() => {\n if (this.listWidthUnit() === 'fr') {\n const relativeListWidth = this.listWidthPercent();\n return [relativeListWidth, 100 - relativeListWidth];\n }\n\n return [this.listWidth(), 1];\n });\n\n protected readonly listStateId = computed(() => {\n const stateId = this.stateId();\n return stateId ? `${stateId}-list` : undefined;\n });\n\n protected readonly detailsStateId = computed(() => {\n const stateId = this.stateId();\n return stateId ? `${stateId}-details` : undefined;\n });\n\n protected readonly opacity = computed(() => (this.resizeDimensions() ? '' : '0'));\n\n /** @internal */\n readonly detailsExpandedAnimation = computed(() => {\n if (!this.hasLargeSize()) {\n return this.detailsActive() ? 'details-active expanded' : 'collapsed';\n } else {\n return 'disabled';\n }\n });\n\n // Used for focus transfer, can not use a focus trap for this.\n private hadLargeSizePreviously: boolean | undefined;\n private detailsActivePreviously: boolean | undefined;\n private previouslyFocusedElementInList: HTMLElement | undefined;\n\n /** @internal */\n readonly transferFocusToList = new Subject<HTMLElement | undefined>();\n /**\n * A behavior subject because the details component may only be created when details are visible.\n * @internal\n */\n readonly transferFocusToDetails = new BehaviorSubject<boolean>(false);\n\n private animationDone?: () => void;\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (changes.detailsActive) {\n this.transferFocus();\n }\n }\n\n ngOnInit(): void {\n this.resizeSubs = this.resizeObserver\n .observe(this.elementRef.nativeElement, 100, true)\n .subscribe(dimensions => {\n this.resizeDimensions.set(dimensions);\n this.transferFocus();\n });\n }\n\n ngOnDestroy(): void {\n this.resizeSubs?.unsubscribe();\n }\n\n private readonly resizeDimensions = signal<ElementDimensions | undefined>(undefined);\n\n protected onSplitSizesChange(sizes: number[]): void {\n if (this.listWidthUnit() === 'px') {\n this.listWidth.set(this.getListSizePx(sizes[0]));\n } else {\n this.listWidth.set(sizes[0]);\n }\n }\n\n private getListSizePx(fallbackPercentage: number): number {\n const listWidth = this.listPart()?.expandedSize();\n if (listWidth !== undefined) {\n return listWidth;\n }\n\n const splitWidth = this.split()?.nativeElement.getBoundingClientRect().width;\n return splitWidth ? (splitWidth * fallbackPercentage) / 100 : this.minListSize();\n }\n\n /** @internal */\n detailsBackClicked(options?: { animationDone?: () => void }): void {\n this.detailsActive.set(false);\n // Directly call the done callback if animations are disabled.\n if (this.animationsGloballyDisabled) {\n options?.animationDone?.();\n } else {\n // This callback is used to route after the animation is done.\n this.animationDone = options?.animationDone;\n }\n }\n\n protected detailsExpandedAnimationDone(event: TransitionEvent): void {\n // Since the 'transitionend' event bubbles up from child elements,\n // ensure the event target is the container itself.\n if (this.animationDone && this.listDetailsContainer().nativeElement === event.target) {\n this.animationDone();\n this.animationDone = undefined;\n }\n }\n\n // Transfer focus onto child panes if they would be inaccessible.\n\n private transferFocus(): void {\n // Check if dimensions have even been evaluated.\n const hasLargeSize = this.resizeDimensions() ? this.hasLargeSize() : undefined;\n const detailsActive = this.detailsActive();\n if (this.hadLargeSizePreviously !== undefined && this.detailsActivePreviously !== undefined) {\n if (\n detailsActive &&\n !hasLargeSize &&\n (!this.detailsActivePreviously || this.hadLargeSizePreviously)\n ) {\n if (!this.hadLargeSizePreviously) {\n this.previouslyFocusedElementInList = document?.activeElement as HTMLElement | undefined;\n }\n this.transferFocusToDetails.next(true);\n }\n if (!detailsActive && this.detailsActivePreviously) {\n this.transferFocusToList.next(this.previouslyFocusedElementInList);\n this.previouslyFocusedElementInList = undefined;\n }\n }\n this.hadLargeSizePreviously = hasLargeSize;\n this.detailsActivePreviously = detailsActive;\n }\n}\n","@if (!disableResizing() && hasLargeSize()) {\n <si-split\n class=\"w-100 flex-grow-1\"\n orientation=\"horizontal\"\n [stateId]=\"stateId()\"\n (sizesChange)=\"onSplitSizesChange($event)\"\n >\n <si-split-part\n #listSplitPart\n [unit]=\"listWidthUnit()\"\n [size]=\"splitSizes()[0]\"\n [showHeader]=\"false\"\n [minSize]=\"minListSize()\"\n [stateId]=\"listStateId()\"\n >\n <ng-container *ngTemplateOutlet=\"listTemplate\" />\n </si-split-part>\n <si-split-part\n unit=\"fr\"\n [size]=\"splitSizes()[1]\"\n [showHeader]=\"false\"\n [minSize]=\"minDetailsSize()\"\n [stateId]=\"detailsStateId()\"\n >\n <ng-container *ngTemplateOutlet=\"detailsTemplate\" />\n </si-split-part>\n </si-split>\n} @else {\n <div\n #listDetailsContainer\n [class]=\"`list-details d-flex flex-row ${detailsExpandedAnimation()}`\"\n [class.gap-6]=\"hasLargeSize()\"\n (transitionend)=\"detailsExpandedAnimationDone($event)\"\n >\n <ng-container *ngTemplateOutlet=\"listTemplate\" />\n <ng-container *ngTemplateOutlet=\"detailsTemplate\" />\n </div>\n}\n\n<ng-template #listTemplate>\n <ng-content select=\"si-list-pane\" />\n</ng-template>\n\n<ng-template #detailsTemplate>\n <ng-content select=\"si-details-pane\" />\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, ElementRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { SiListDetailsComponent } from '../si-list-details.component';\n\n@Component({\n selector: 'si-list-pane',\n templateUrl: './si-list-pane.component.html',\n styleUrl: './si-list-pane.component.scss',\n host: {\n '[class.expanded]': 'parent.hasLargeSize()',\n '[class.details-active]': 'parent.detailsActive() && !parent.hasLargeSize()',\n '[attr.inert]': '!parent.hasLargeSize() && parent.detailsActive() ? \"\" : null',\n '[attr.tabindex]': '-1',\n '[style.flex-basis.%]':\n 'parent.hasLargeSize() && parent.disableResizing() ? parent.listWidthPercent() : undefined'\n }\n})\nexport class SiListPaneComponent {\n protected parent = inject(SiListDetailsComponent);\n private element: ElementRef<HTMLElement> = inject(ElementRef);\n\n constructor() {\n this.parent.transferFocusToList\n .pipe(takeUntilDestroyed())\n .subscribe(previouslyFocusedElement => {\n // Needed so it's no longer \"inert\".\n setTimeout(() => {\n const currentlyFocused = document?.activeElement;\n previouslyFocusedElement?.focus();\n // If there was no previously focused element or if it couldn't be focused anymore, fall back to the focusing the list.\n if (currentlyFocused === document?.activeElement) {\n this.element?.nativeElement?.focus();\n }\n });\n });\n }\n}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'si-list-pane-header',\n templateUrl: './si-list-pane-header.component.html',\n styleUrl: './si-list-pane-header.component.scss'\n})\nexport class SiListPaneHeaderComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'si-list-pane-body',\n templateUrl: './si-list-pane-body.component.html',\n styleUrl: './si-list-pane-body.component.scss'\n})\nexport class SiListPaneBodyComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, contentChild, DestroyRef, effect, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RouterOutlet } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { SiListDetailsComponent } from '../si-list-details.component';\n\n@Component({\n selector: 'si-details-pane',\n imports: [],\n templateUrl: './si-details-pane.component.html',\n styleUrl: './si-details-pane.component.scss',\n host: {\n '[class.expanded]': 'parent.hasLargeSize()',\n '[class.details-active]': 'parent.detailsActive() && !parent.hasLargeSize()',\n '[attr.inert]': '!parent.hasLargeSize() && !parent.detailsActive() ? \"\" : null',\n '[style.flex-basis.%]':\n 'parent.hasLargeSize() && parent.disableResizing() ? 100 - parent.listWidthPercent() : undefined'\n }\n})\nexport class SiDetailsPaneComponent {\n protected parent = inject(SiListDetailsComponent);\n\n private readonly routerOutlet = contentChild(RouterOutlet);\n private subscription?: Subscription;\n private destroyer = inject(DestroyRef);\n /** @internal */\n readonly isRouterBased = computed(() => !!this.routerOutlet());\n\n constructor() {\n effect(() => {\n const outlet = this.routerOutlet();\n if (outlet) {\n this.parent.detailsActive.set(!outlet.activatedRouteData.SI_EMPTY_DETAILS);\n this.subscription?.unsubscribe();\n this.subscription = outlet.activateEvents\n .pipe(takeUntilDestroyed(this.destroyer))\n .subscribe(() =>\n this.parent.detailsActive.set(!outlet.activatedRouteData.SI_EMPTY_DETAILS)\n );\n }\n });\n }\n}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n Signal,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { elementBack } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiDetailsPaneComponent } from '../si-details-pane/si-details-pane.component';\nimport { SiListDetailsComponent } from '../si-list-details.component';\n\n@Component({\n selector: 'si-details-pane-header',\n imports: [SiTranslatePipe, SiIconComponent],\n templateUrl: './si-details-pane-header.component.html',\n styleUrl: './si-details-pane-header.component.scss',\n host: {\n class: 'nav nav-tabs' // To allow nav-link styling.\n }\n})\nexport class SiDetailsPaneHeaderComponent {\n protected readonly icons = addIcons({ elementBack });\n\n private parent = inject(SiListDetailsComponent);\n\n /**\n * Optional title to be displayed.\n */\n readonly title = input<TranslatableString>();\n\n /**\n * You can hide the back button in the mobile view by setting true. Required\n * in add, edit workflows on mobile sizes. During add or edit, the back button\n * should be hidden. Default value is `false`.\n *\n * @defaultValue false\n */\n readonly hideBackButton = input(false, { transform: booleanAttribute });\n\n /**\n * Details back button text. Required for a11y.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LIST_DETAILS.BACK:Back`)\n * ```\n */\n readonly backButtonText = input(t(() => $localize`:@@SI_LIST_DETAILS.BACK:Back`));\n\n /**\n * The URL to navigate to when the back buttons is clicked.\n * This is only used when the `si-details-pane` is used with a router-outlet.\n *\n * @defaultValue '../'\n */\n readonly backButtonUrl = input('../');\n\n private isRouterBased = inject(SiDetailsPaneComponent).isRouterBased;\n private router = inject(Router, { optional: true });\n private activatedRoute = inject(ActivatedRoute, { optional: true });\n\n private readonly backButton = viewChild<ElementRef<HTMLElement>>('backButton');\n\n constructor() {\n this.parent.transferFocusToDetails.pipe(takeUntilDestroyed()).subscribe(shouldFocus => {\n if (shouldFocus) {\n const backButton = this.backButton();\n if (backButton) {\n // Needed so it's no longer \"inert\" and loaded.\n setTimeout(() => backButton?.nativeElement?.focus());\n }\n }\n });\n }\n\n protected get hasLargeSize(): Signal<boolean> {\n return this.parent.hasLargeSize;\n }\n\n protected backClicked(): void {\n this.parent.detailsBackClicked({\n animationDone: this.isRouterBased()\n ? // We navigate back after the animation is done.\n // This ensures, that the details pane visible while animating.\n () => this.router!.navigate([this.backButtonUrl()], { relativeTo: this.activatedRoute })\n : undefined\n });\n }\n}\n","@if ((!hasLargeSize() && !hideBackButton()) || title()) {\n <div class=\"title-subgroup\">\n @if (!hasLargeSize() && !hideBackButton()) {\n <button\n #backButton\n type=\"button\"\n class=\"si-details-header-back nav-link focus-inside px-6\"\n (click)=\"backClicked()\"\n >\n <si-icon class=\"pe-2 d-inline-block position-relative icon\" [icon]=\"icons.elementBack\" />\n {{ backButtonText() | translate }}\n </button>\n }\n @if (title()) {\n <span class=\"si-details-header-title si-body px-6\">{{ title() | translate }}</span>\n }\n </div>\n}\n<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'si-details-pane-body',\n imports: [],\n templateUrl: './si-details-pane-body.component.html',\n styleUrl: './si-details-pane-body.component.scss'\n})\nexport class SiDetailsPaneBodyComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'si-details-pane-footer',\n imports: [],\n templateUrl: './si-details-pane-footer.component.html',\n styleUrl: './si-details-pane-footer.component.scss'\n})\nexport class SiDetailsPaneFooterComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-list-details.component';\nexport * from './si-list-pane/si-list-pane.component';\nexport * from './si-list-pane-header/si-list-pane-header.component';\nexport * from './si-list-pane-body/si-list-pane-body.component';\nexport * from './si-details-pane/si-details-pane.component';\nexport * from './si-details-pane-header/si-details-pane-header.component';\nexport * from './si-details-pane-body/si-details-pane-body.component';\nexport * from './si-details-pane-footer/si-details-pane-footer.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-loading-spinner.mjs","sources":["../../../../projects/element-ng/loading-spinner/si-loading-spinner.component.ts","../../../../projects/element-ng/loading-spinner/si-loading-spinner.component.html","../../../../projects/element-ng/loading-spinner/si-loading-button.component.ts","../../../../projects/element-ng/loading-spinner/si-loading-button.component.html","../../../../projects/element-ng/loading-spinner/si-loading-spinner.directive.ts","../../../../projects/element-ng/loading-spinner/si-loading-spinner.service.ts","../../../../projects/element-ng/loading-spinner/si-loading-spinner.module.ts","../../../../projects/element-ng/loading-spinner/index.ts","../../../../projects/element-ng/loading-spinner/siemens-element-ng-loading-spinner.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, Component, input } from '@angular/core';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\n@Component({\n selector: 'si-loading-spinner',\n imports: [SiTranslatePipe],\n templateUrl: './si-loading-spinner.component.html',\n styleUrl: './si-loading-spinner.component.scss',\n host: {\n 'animate.leave': 'spinner-leave'\n }\n})\nexport class SiLoadingSpinnerComponent {\n /**\n * Whether the spinner blocks interaction with the surrounding content.\n *\n * @defaultValue false\n */\n readonly isBlockingSpinner = input(false, {\n transform: booleanAttribute\n });\n /**\n * Whether the spinner is displayed as an overlay.\n *\n * @defaultValue false\n */\n readonly isSpinnerOverlay = input(false, {\n transform: booleanAttribute\n });\n /**\n * Needed for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOADING_SPINNER.LABEL:Loading`)\n * ```\n */\n readonly ariaLabel = input(t(() => $localize`:@@SI_LOADING_SPINNER.LABEL:Loading`));\n}\n","<div\n class=\"loading\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n [class.blocking-spinner]=\"isBlockingSpinner()\"\n [class.spinner-overlay]=\"isSpinnerOverlay()\"\n>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <title>{{ ariaLabel() | translate }}</title>\n <g>\n <path d=\"M256,156a16,16,0,0,1-16-16V80a16,16,0,0,1,32,0v60A16,16,0,0,1,256,156Z\" />\n <path\n d=\"M314.78,175.1a16,16,0,0,1-3.54-22.35l35.27-48.54A16,16,0,1,1,372.39,123l-35.26,48.54A16,16,0,0,1,314.78,175.1Z\"\n />\n <path\n d=\"M351.11,225.1a16,16,0,0,1,10.27-20.16l57.06-18.54a16,16,0,1,1,9.89,30.43l-57.06,18.54A16,16,0,0,1,351.11,225.1Z\"\n />\n <path\n d=\"M351.11,286.9a16,16,0,0,1,20.16-10.27l57.06,18.54a16,16,0,1,1-9.89,30.43l-57.06-18.54A16,16,0,0,1,351.11,286.9Z\"\n />\n <path\n d=\"M314.78,336.9a16,16,0,0,1,22.35,3.54L372.39,389a16,16,0,1,1-25.88,18.81l-35.27-48.54A16,16,0,0,1,314.78,336.9Z\"\n />\n <path d=\"M256,356a16,16,0,0,1,16,16v60a16,16,0,0,1-32,0V372A16,16,0,0,1,256,356Z\" />\n <path\n d=\"M197.22,336.9a16,16,0,0,1,3.54,22.35l-35.27,48.54A16,16,0,1,1,139.61,389l35.26-48.54A16,16,0,0,1,197.22,336.9Z\"\n />\n <path\n d=\"M160.89,286.9a16,16,0,0,1-10.27,20.16L93.56,325.6a16,16,0,0,1-9.89-30.43l57.06-18.54A16,16,0,0,1,160.89,286.9Z\"\n />\n <path\n d=\"M160.89,225.1a16,16,0,0,1-20.16,10.27L83.67,216.83a16,16,0,1,1,9.89-30.43l57.06,18.54A16,16,0,0,1,160.89,225.1Z\"\n />\n <path\n d=\"M197.22,175.1a16,16,0,0,1-22.35-3.54L139.61,123a16,16,0,1,1,25.88-18.81l35.27,48.54A16,16,0,0,1,197.22,175.1Z\"\n />\n </g>\n </svg>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, Component, input } from '@angular/core';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiLoadingSpinnerComponent } from './si-loading-spinner.component';\n\n@Component({\n selector: 'si-loading-button',\n imports: [SiLoadingSpinnerComponent, SiTranslatePipe],\n templateUrl: './si-loading-button.component.html',\n styleUrl: './si-loading-button.component.scss',\n host: {\n '[class.pe-none]': 'disabled()'\n }\n})\nexport class SiLoadingButtonComponent {\n /**\n * Whether the button is disabled.\n * @defaultValue false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * Whether the loading state should be displayed.\n * @defaultValue false\n */\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * Type of the button.\n * @defaultValue 'button'\n **/\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n /** aria-label for the button */\n readonly ariaLabel = input<TranslatableString>();\n /** aria-labelledby for the button */\n readonly ariaLabelledBy = input<string>();\n /**\n * CSS class for the button.\n * @defaultValue ''\n */\n readonly buttonClass = input('');\n\n protected handleClick(event: Event): void {\n if (this.disabled() || this.loading()) {\n event.stopPropagation();\n }\n }\n}\n","<button\n [type]=\"type()\"\n [class]=\"buttonClass()\"\n [class.loading]=\"loading()\"\n [class.disabled]=\"loading()\"\n [disabled]=\"disabled()\"\n [attr.aria-disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"ariaLabel() | translate\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.tabindex]=\"loading() ? '-1' : null\"\n (click)=\"handleClick($event)\"\n>\n <div class=\"button-wrapper\">\n <ng-content />\n </div>\n</button>\n@if (loading()) {\n <div class=\"spinner-wrapper\" (click)=\"$event.stopPropagation()\">\n <si-loading-spinner />\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n inputBinding,\n OnChanges,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, merge, Subscription, timer } from 'rxjs';\nimport { filter, map, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { SiLoadingSpinnerComponent } from './si-loading-spinner.component';\n@Directive({\n selector: '[siLoading]',\n host: {\n class: 'position-relative'\n }\n})\nexport class SiLoadingSpinnerDirective implements OnInit, OnChanges, OnDestroy {\n /**\n * Displays the loading spinner when the value is either true or non-zero.\n */\n readonly siLoading = input.required<boolean | number>();\n\n /**\n * Displays semi-transparent backdrop for the spinner, default is false.\n *\n * @defaultValue false\n */\n readonly blocking = input(false, { transform: booleanAttribute });\n\n /**\n * Specifies if the spinner should be displayed after a delay, default is true.\n *\n * @defaultValue true\n */\n readonly initialDelay = input(true, { transform: booleanAttribute });\n\n private el = inject(ElementRef);\n private readonly viewRef = inject(ViewContainerRef);\n private cdRef = inject(ChangeDetectorRef);\n\n private sub?: Subscription;\n private progressSubject = new BehaviorSubject(false);\n private off$ = this.progressSubject.pipe(filter(val => !val));\n private on$ = this.progressSubject.pipe(filter(val => val));\n private readonly initialWaitTime = computed(() => (this.initialDelay() ? 500 : 0));\n private minSpinTime = 500;\n private portalOutlet?: DomPortalOutlet;\n private readonly compPortal = new ComponentPortal(\n SiLoadingSpinnerComponent,\n this.viewRef,\n undefined,\n null,\n [inputBinding('isBlockingSpinner', this.blocking), inputBinding('isSpinnerOverlay', () => true)]\n );\n\n // this makes sure the spinner only displays with a delay of 500ms and stays for 500ms so\n // that it doesn't flicker\n protected readonly spinner$ = this.on$.pipe(\n switchMap(() =>\n merge(\n timer(this.initialWaitTime()).pipe(\n map(() => true),\n takeUntil(this.off$)\n ),\n combineLatest([this.off$, timer(this.initialWaitTime() + this.minSpinTime)]).pipe(\n map(() => false)\n )\n )\n )\n );\n\n private createPortal(): void {\n this.portalOutlet ??= new DomPortalOutlet(this.el.nativeElement);\n this.compPortal.attach(this.portalOutlet);\n }\n\n ngOnInit(): void {\n this.sub = this.spinner$.subscribe(val => {\n if (val) {\n if (!this.compPortal.isAttached) {\n this.createPortal();\n }\n } else if (this.compPortal.isAttached) {\n this.compPortal.detach();\n }\n this.cdRef.markForCheck();\n });\n }\n\n ngOnChanges(): void {\n const newState = !!this.siLoading();\n if (newState !== this.progressSubject.value) {\n this.progressSubject.next(newState);\n }\n }\n\n ngOnDestroy(): void {\n this.sub?.unsubscribe();\n if (this.compPortal.isAttached) {\n this.compPortal.detach();\n }\n this.portalOutlet?.dispose();\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SiLoadingService {\n /**\n * Counts the number of loads active, is `0` when all loading is finished (or hasn't started).\n */\n readonly counter: BehaviorSubject<number> = new BehaviorSubject<number>(0);\n\n /**\n * Start the loading.\n */\n startLoad(): void {\n this.counter.next(this.counter.value + 1);\n }\n\n /**\n * Stop the loading.\n */\n stopLoad(): void {\n if (this.counter.value > 0) {\n this.counter.next(this.counter.value - 1);\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiLoadingSpinnerComponent } from './si-loading-spinner.component';\nimport { SiLoadingSpinnerDirective } from './si-loading-spinner.directive';\n\n@NgModule({\n imports: [SiLoadingSpinnerComponent, SiLoadingSpinnerDirective],\n exports: [SiLoadingSpinnerComponent, SiLoadingSpinnerDirective]\n})\nexport class SiLoadingSpinnerModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-loading-button.component';\nexport * from './si-loading-spinner.component';\nexport * from './si-loading-spinner.directive';\nexport * from './si-loading-spinner.service';\nexport * from './si-loading-spinner.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-loading-spinner.mjs","sources":["../../../../projects/element-ng/loading-spinner/si-loading-spinner.component.ts","../../../../projects/element-ng/loading-spinner/si-loading-spinner.component.html","../../../../projects/element-ng/loading-spinner/si-loading-button.component.ts","../../../../projects/element-ng/loading-spinner/si-loading-button.component.html","../../../../projects/element-ng/loading-spinner/si-loading-spinner.directive.ts","../../../../projects/element-ng/loading-spinner/si-loading-spinner.service.ts","../../../../projects/element-ng/loading-spinner/si-loading-spinner.module.ts","../../../../projects/element-ng/loading-spinner/index.ts","../../../../projects/element-ng/loading-spinner/siemens-element-ng-loading-spinner.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, Component, input } from '@angular/core';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\n@Component({\n selector: 'si-loading-spinner',\n imports: [SiTranslatePipe],\n templateUrl: './si-loading-spinner.component.html',\n styleUrl: './si-loading-spinner.component.scss',\n host: {\n 'animate.leave': 'spinner-leave'\n }\n})\nexport class SiLoadingSpinnerComponent {\n /**\n * Whether the spinner blocks interaction with the surrounding content.\n *\n * @defaultValue false\n */\n readonly isBlockingSpinner = input(false, {\n transform: booleanAttribute\n });\n /**\n * Whether the spinner is displayed as an overlay.\n *\n * @defaultValue false\n */\n readonly isSpinnerOverlay = input(false, {\n transform: booleanAttribute\n });\n /**\n * Needed for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOADING_SPINNER.LABEL:Loading`)\n * ```\n */\n readonly ariaLabel = input(t(() => $localize`:@@SI_LOADING_SPINNER.LABEL:Loading`));\n}\n","<div\n class=\"loading\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n [class.blocking-spinner]=\"isBlockingSpinner()\"\n [class.spinner-overlay]=\"isSpinnerOverlay()\"\n>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <title>{{ ariaLabel() | translate }}</title>\n <g>\n <path d=\"M256,156a16,16,0,0,1-16-16V80a16,16,0,0,1,32,0v60A16,16,0,0,1,256,156Z\" />\n <path\n d=\"M314.78,175.1a16,16,0,0,1-3.54-22.35l35.27-48.54A16,16,0,1,1,372.39,123l-35.26,48.54A16,16,0,0,1,314.78,175.1Z\"\n />\n <path\n d=\"M351.11,225.1a16,16,0,0,1,10.27-20.16l57.06-18.54a16,16,0,1,1,9.89,30.43l-57.06,18.54A16,16,0,0,1,351.11,225.1Z\"\n />\n <path\n d=\"M351.11,286.9a16,16,0,0,1,20.16-10.27l57.06,18.54a16,16,0,1,1-9.89,30.43l-57.06-18.54A16,16,0,0,1,351.11,286.9Z\"\n />\n <path\n d=\"M314.78,336.9a16,16,0,0,1,22.35,3.54L372.39,389a16,16,0,1,1-25.88,18.81l-35.27-48.54A16,16,0,0,1,314.78,336.9Z\"\n />\n <path d=\"M256,356a16,16,0,0,1,16,16v60a16,16,0,0,1-32,0V372A16,16,0,0,1,256,356Z\" />\n <path\n d=\"M197.22,336.9a16,16,0,0,1,3.54,22.35l-35.27,48.54A16,16,0,1,1,139.61,389l35.26-48.54A16,16,0,0,1,197.22,336.9Z\"\n />\n <path\n d=\"M160.89,286.9a16,16,0,0,1-10.27,20.16L93.56,325.6a16,16,0,0,1-9.89-30.43l57.06-18.54A16,16,0,0,1,160.89,286.9Z\"\n />\n <path\n d=\"M160.89,225.1a16,16,0,0,1-20.16,10.27L83.67,216.83a16,16,0,1,1,9.89-30.43l57.06,18.54A16,16,0,0,1,160.89,225.1Z\"\n />\n <path\n d=\"M197.22,175.1a16,16,0,0,1-22.35-3.54L139.61,123a16,16,0,1,1,25.88-18.81l35.27,48.54A16,16,0,0,1,197.22,175.1Z\"\n />\n </g>\n </svg>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, Component, input } from '@angular/core';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiLoadingSpinnerComponent } from './si-loading-spinner.component';\n\n@Component({\n selector: 'si-loading-button',\n imports: [SiLoadingSpinnerComponent, SiTranslatePipe],\n templateUrl: './si-loading-button.component.html',\n styleUrl: './si-loading-button.component.scss',\n host: {\n '[class.pe-none]': 'disabled()'\n }\n})\nexport class SiLoadingButtonComponent {\n /**\n * Whether the button is disabled.\n * @defaultValue false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * Whether the loading state should be displayed.\n * @defaultValue false\n */\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * Type of the button.\n * @defaultValue 'button'\n **/\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n /** aria-label for the button */\n readonly ariaLabel = input<TranslatableString>();\n /** aria-labelledby for the button */\n readonly ariaLabelledBy = input<string>();\n /**\n * CSS class for the button.\n * @defaultValue ''\n */\n readonly buttonClass = input('');\n\n protected handleClick(event: Event): void {\n if (this.disabled() || this.loading()) {\n event.stopPropagation();\n }\n }\n}\n","<button\n [type]=\"type()\"\n [class]=\"buttonClass()\"\n [class.loading]=\"loading()\"\n [class.disabled]=\"loading()\"\n [disabled]=\"disabled()\"\n [attr.aria-disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"ariaLabel() | translate\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.tabindex]=\"loading() ? '-1' : null\"\n (click)=\"handleClick($event)\"\n>\n <div class=\"button-wrapper\">\n <ng-content />\n </div>\n</button>\n@if (loading()) {\n <div class=\"spinner-wrapper\" (click)=\"$event.stopPropagation()\">\n <si-loading-spinner />\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n inputBinding,\n OnChanges,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, merge, Subscription, timer } from 'rxjs';\nimport { filter, map, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { SiLoadingSpinnerComponent } from './si-loading-spinner.component';\n@Directive({\n selector: '[siLoading]',\n host: {\n class: 'position-relative'\n }\n})\nexport class SiLoadingSpinnerDirective implements OnInit, OnChanges, OnDestroy {\n /**\n * Displays the loading spinner when the value is either true or non-zero.\n */\n readonly siLoading = input.required<boolean | number>();\n\n /**\n * Displays semi-transparent backdrop for the spinner, default is false.\n *\n * @defaultValue false\n */\n readonly blocking = input(false, { transform: booleanAttribute });\n\n /**\n * Specifies if the spinner should be displayed after a delay, default is true.\n *\n * @defaultValue true\n */\n readonly initialDelay = input(true, { transform: booleanAttribute });\n\n private el = inject(ElementRef);\n private readonly viewRef = inject(ViewContainerRef);\n private cdRef = inject(ChangeDetectorRef);\n\n private sub?: Subscription;\n private progressSubject = new BehaviorSubject(false);\n private off$ = this.progressSubject.pipe(filter(val => !val));\n private on$ = this.progressSubject.pipe(filter(val => val));\n private readonly initialWaitTime = computed(() => (this.initialDelay() ? 500 : 0));\n private minSpinTime = 500;\n private portalOutlet?: DomPortalOutlet;\n private readonly compPortal = new ComponentPortal(\n SiLoadingSpinnerComponent,\n this.viewRef,\n undefined,\n null,\n [inputBinding('isBlockingSpinner', this.blocking), inputBinding('isSpinnerOverlay', () => true)]\n );\n\n // this makes sure the spinner only displays with a delay of 500ms and stays for 500ms so\n // that it doesn't flicker\n protected readonly spinner$ = this.on$.pipe(\n switchMap(() =>\n merge(\n timer(this.initialWaitTime()).pipe(\n map(() => true),\n takeUntil(this.off$)\n ),\n combineLatest([this.off$, timer(this.initialWaitTime() + this.minSpinTime)]).pipe(\n map(() => false)\n )\n )\n )\n );\n\n private createPortal(): void {\n this.portalOutlet ??= new DomPortalOutlet(this.el.nativeElement);\n this.compPortal.attach(this.portalOutlet);\n }\n\n ngOnInit(): void {\n this.sub = this.spinner$.subscribe(val => {\n if (val) {\n if (!this.compPortal.isAttached) {\n this.createPortal();\n }\n } else if (this.compPortal.isAttached) {\n this.compPortal.detach();\n }\n this.cdRef.markForCheck();\n });\n }\n\n ngOnChanges(): void {\n const newState = !!this.siLoading();\n if (newState !== this.progressSubject.value) {\n this.progressSubject.next(newState);\n }\n }\n\n ngOnDestroy(): void {\n this.sub?.unsubscribe();\n if (this.compPortal.isAttached) {\n this.compPortal.detach();\n }\n this.portalOutlet?.dispose();\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SiLoadingService {\n /**\n * Counts the number of loads active, is `0` when all loading is finished (or hasn't started).\n */\n readonly counter: BehaviorSubject<number> = new BehaviorSubject<number>(0);\n\n /**\n * Start the loading.\n */\n startLoad(): void {\n this.counter.next(this.counter.value + 1);\n }\n\n /**\n * Stop the loading.\n */\n stopLoad(): void {\n if (this.counter.value > 0) {\n this.counter.next(this.counter.value - 1);\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiLoadingSpinnerComponent } from './si-loading-spinner.component';\nimport { SiLoadingSpinnerDirective } from './si-loading-spinner.directive';\n\n@NgModule({\n imports: [SiLoadingSpinnerComponent, SiLoadingSpinnerDirective],\n exports: [SiLoadingSpinnerComponent, SiLoadingSpinnerDirective]\n})\nexport class SiLoadingSpinnerModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-loading-button.component';\nexport * from './si-loading-spinner.component';\nexport * from './si-loading-spinner.directive';\nexport * from './si-loading-spinner.service';\nexport * from './si-loading-spinner.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-localization.mjs","sources":["../../../../projects/element-ng/localization/si-locale-store.ts","../../../../projects/element-ng/localization/si-locale.service.ts","../../../../projects/element-ng/localization/si-locale-id.ts","../../../../projects/element-ng/localization/si-directionality.ts","../../../../projects/element-ng/localization/index.ts","../../../../projects/element-ng/localization/siemens-element-ng-localization.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Observable, of } from 'rxjs';\n\nexport abstract class SiLocaleStore {\n abstract get locale(): string | undefined;\n abstract saveLocale(locale: string): Observable<boolean>;\n}\n\nexport const SI_LOCALE_LOCAL_STORAGE_KEY = 'lang';\n\nexport class SiDefaultLocaleStore extends SiLocaleStore {\n constructor(private isBrowser: boolean) {\n super();\n }\n\n get locale(): string | undefined {\n if (this.isBrowser) {\n return localStorage.getItem(SI_LOCALE_LOCAL_STORAGE_KEY) ?? undefined;\n } else {\n return undefined;\n }\n }\n\n saveLocale(locale: string): Observable<boolean> {\n if (this.isBrowser) {\n localStorage.setItem(SI_LOCALE_LOCAL_STORAGE_KEY, locale);\n return of(true);\n } else {\n return of(false);\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, InjectionToken, PLATFORM_ID } from '@angular/core';\nimport {\n getBrowserCultureLanguage,\n getBrowserLanguage,\n injectSiTranslateService\n} from '@siemens/element-translate-ng/translate';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { SiDefaultLocaleStore, SiLocaleStore } from './si-locale-store';\n\nexport const SI_LOCALE_STORE = new InjectionToken<string>('SI_LOCALE_STORE');\nexport const SI_LOCALE_CONFIG = new InjectionToken<SiLocaleConfig>('SI_LOCALE_CONFIG');\n\n// this is a function because Angular compiler exports arrows for no good reason\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction defaultLocaleInitializer(localeId: string): Promise<void> {\n if (localeId === 'en') {\n return Promise.resolve();\n } else {\n return Promise.reject();\n }\n}\n\nexport interface SiLocaleConfig {\n /**\n * The default locale to be used, when no user preference\n * available and the browser language is not part of the\n * available languages.\n */\n defaultLocale?: string;\n /**\n * The list of available locales (e.g. en, fr, de, en-GB, de-AT)\n */\n availableLocales?: string[];\n /**\n * The localeInitializer function is invoked on every locale change.\n * Make sure to invoke `registerLocaleData` with the locale to enable\n * the Angular localization.\n */\n localeInitializer?: (localeId: string) => Promise<any>;\n /**\n * Set to true to also enable the default language on ngx-translate. When true,\n * ngx-translate will use a translate value from the default language when a required\n * value is not available in the current language. But note, this will also enforce\n * to load the default language translation file into the application, even if a different\n * locale is active. In other words, the application start time increases.\n */\n fallbackEnabled?: boolean;\n /**\n * Default is false and defines that on setting a new locale, the locale is stored and the\n * browser is reloaded. When changing to true, window reload is not invoked, but angular\n * pure pipes like DatePipe will not work.\n */\n dynamicLanguageChange?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SiLocaleService {\n /**\n * Holds the used locale definition like en, de, or en-US.\n */\n readonly locale$: BehaviorSubject<string>;\n /**\n * Emits to indicate that the localization package (e.g. \\@angular/common/locales/$\\{localeId\\})\n * is loaded and registered. Emits after calling `localeInitializer` from the `config` object.\n */\n readonly localePackageLoaded$ = new ReplaySubject<void>(1);\n\n private _nextLocale!: string;\n private isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private translate = injectSiTranslateService();\n private localeStore =\n inject(SiLocaleStore, { optional: true }) ?? new SiDefaultLocaleStore(this.isBrowser);\n /**\n * The config for the local service.\n */\n config = inject(SI_LOCALE_CONFIG, { optional: true }) ?? {\n availableLocales: ['en'],\n defaultLocale: 'en',\n localeInitializer: defaultLocaleInitializer,\n fallbackEnabled: false,\n dynamicLanguageChange: false\n };\n\n constructor() {\n if (!this.config.defaultLocale) {\n if (this.config.availableLocales && this.config.availableLocales.length > 0) {\n this.config.defaultLocale = this.config.availableLocales[0];\n } else {\n this.config.defaultLocale = 'en';\n }\n }\n\n if (!this.config.availableLocales || this.config.availableLocales.length === 0) {\n this.config.availableLocales = [this.config.defaultLocale];\n }\n // Also adds all locales to the translate service to enable\n // components working with the translate service directly to still work.\n this.translate.availableLanguages = this.config.availableLocales;\n\n this.config.localeInitializer ??= defaultLocaleInitializer;\n this.config.fallbackEnabled ??= false;\n this.config.dynamicLanguageChange ??= false;\n\n const savedLocale = this.localeStore.locale;\n // The following check is important. We do not control the store and when it comes from\n // a remove backend, someone might give us a locale that we do not understand. In this\n // case we switch to the default.\n let initialLocale;\n const browserCultureLang = getBrowserCultureLanguage();\n const browserLang = getBrowserLanguage();\n const currentLanguage = this.translate.currentLanguage;\n if (this.hasLocale(savedLocale)) {\n initialLocale = savedLocale!;\n } else if (currentLanguage) {\n initialLocale = currentLanguage;\n } else if (this.hasLocale(browserCultureLang)) {\n initialLocale = browserCultureLang!;\n } else if (this.hasLocale(browserLang)) {\n initialLocale = browserLang!;\n } else {\n initialLocale = this.config.defaultLocale;\n }\n this.locale$ = new BehaviorSubject<string>(initialLocale);\n this.doSetLocale(initialLocale);\n\n // If a user changes the language on the translate service directly,\n // we synchronize the change again.\n this.translate.translationChange.subscribe(() => {\n const current = this.translate.currentLanguage;\n if (current) {\n this.locale = current;\n }\n });\n\n if (this.config.fallbackEnabled) {\n this.translate.setDefaultLanguage(this.config.defaultLocale);\n }\n }\n\n /**\n * Sets a new locale to the locale service and also to the translate\n * service.\n * @throws An error if the new value is not configured in the available locales\n * or if the new locale cannot be saved, an error is thrown.\n */\n set locale(value: string) {\n if (value === this.locale$.value || value === this._nextLocale) {\n return;\n }\n if (!this.hasLocale(value)) {\n throw new Error(`The value ${value} does not exist in the available locales.`);\n }\n this.localeStore\n .saveLocale(value)\n .pipe(first())\n .subscribe({\n next: (saveSucceed: boolean) => {\n if (saveSucceed) {\n if (this.config.dynamicLanguageChange) {\n this.doSetLocale(value);\n } else if (this.isBrowser) {\n window.location.reload();\n }\n } else {\n throw new Error(`Could not save new locale ${value}.`);\n }\n },\n error: () => {\n throw new Error(`Could not save new locale ${value}.`);\n }\n });\n }\n\n get locale(): string {\n return this.locale$.value;\n }\n\n private doSetLocale(value: string): void {\n this._nextLocale = value;\n this.config.localeInitializer!(value).then(\n () => {\n this.localePackageLoaded$.next();\n this.translate\n .setCurrentLanguage(value)\n .pipe(first())\n .subscribe(() => {\n if (this.locale$.value !== value) {\n this.locale$.next(value);\n }\n });\n },\n () => {\n console.error(\n `Could not initialize new locale ${value}. Setting default locale ${this.config.defaultLocale}`\n );\n // Initialization of locale rejected. Setting default locale.\n this.translate\n .setCurrentLanguage(this.config.defaultLocale!)\n .pipe(first())\n .subscribe(() => {\n if (this.locale$.value !== this.config.defaultLocale!) {\n this.locale$.next(this.config.defaultLocale!);\n }\n });\n }\n );\n }\n\n /**\n * Test if the given locale is part of the available locales.\n * @param locale - The locale to be tested.\n */\n hasLocale(locale?: string): boolean {\n if (locale) {\n return this.config.availableLocales!.includes(locale);\n }\n return false;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { inject, Injectable } from '@angular/core';\n\nimport { SiLocaleService } from './si-locale.service';\n\n/**\n * The SiLocaleId is used to provide a locale id from the translate service\n * to the angular localization. The Angular services call toString or valueOf\n * so that the current locale of the translation service is provided. The Intl.\n * library does not invoke toString() and using the value directly in Intl\n * formatting results always having the `en` locale. Thus, when using the SiLocaleId\n * in other services, make sure to use the `toString()` method before.\n */\n@Injectable()\nexport class SiLocaleId extends String {\n protected service: SiLocaleService;\n\n // the constructor is needed for unknown reasons. w/o the inject() fails\n constructor() {\n super();\n this.service = inject(SiLocaleService);\n }\n\n /**\n * Outputs the locale id as a string.\n */\n override toString(): string {\n return this.service.locale === 'template' ? 'en' : this.service.locale;\n }\n\n override valueOf(): string {\n return this.toString();\n }\n\n override toLowerCase(): string {\n return this.toString().toLowerCase();\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { EventEmitter, Injectable, signal } from '@angular/core';\nimport { isRTL } from '@siemens/element-ng/common';\n\n/**\n * Provider for dynamic CDK directionality.\n *\n * CDK per default evaluates directionality once during initialization. This is a problem when\n * switching language later in the lifecycle. This provider can be used to make this dynamic.\n * To use, simply provide this in the `ApplicationConfig`:\n *\n * ```ts\n * import { Directionality } from '@angular/cdk/bidi';\n * import { SiDirectionality } from '@siemens/element-ng/localization';\n *\n * ...\n * export const APP_CONFIG: ApplicationConfig = {\n * providers: [\n * { provide: Directionality, useClass: SiDirectionality },\n * ...\n * ]\n * }\n *\n * bootstrapApplication(AppComponent, APP_CONFIG)\n * ...\n *\n * ```\n */\n\n@Injectable()\nexport class SiDirectionality implements Directionality {\n readonly change = new EventEmitter<Direction>();\n\n /** @defaultValue 'ltr' */\n readonly valueSignal = signal<Direction>('ltr');\n\n get value(): Direction {\n const dir = isRTL() ? 'rtl' : 'ltr';\n this.valueSignal.set(dir);\n return dir;\n }\n\n /** @internal */\n // eslint-disable-next-line @angular-eslint/use-lifecycle-interface, @angular-eslint/no-empty-lifecycle-method\n ngOnDestroy(): void {\n // empty, from Directionality\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-locale-id';\nexport * from './si-locale-store';\nexport * from './si-locale.service';\nexport * from './si-directionality';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-localization.mjs","sources":["../../../../projects/element-ng/localization/si-locale-store.ts","../../../../projects/element-ng/localization/si-locale.service.ts","../../../../projects/element-ng/localization/si-locale-id.ts","../../../../projects/element-ng/localization/si-directionality.ts","../../../../projects/element-ng/localization/index.ts","../../../../projects/element-ng/localization/siemens-element-ng-localization.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Observable, of } from 'rxjs';\n\nexport abstract class SiLocaleStore {\n abstract get locale(): string | undefined;\n abstract saveLocale(locale: string): Observable<boolean>;\n}\n\nexport const SI_LOCALE_LOCAL_STORAGE_KEY = 'lang';\n\nexport class SiDefaultLocaleStore extends SiLocaleStore {\n constructor(private isBrowser: boolean) {\n super();\n }\n\n get locale(): string | undefined {\n if (this.isBrowser) {\n return localStorage.getItem(SI_LOCALE_LOCAL_STORAGE_KEY) ?? undefined;\n } else {\n return undefined;\n }\n }\n\n saveLocale(locale: string): Observable<boolean> {\n if (this.isBrowser) {\n localStorage.setItem(SI_LOCALE_LOCAL_STORAGE_KEY, locale);\n return of(true);\n } else {\n return of(false);\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, InjectionToken, PLATFORM_ID } from '@angular/core';\nimport {\n getBrowserCultureLanguage,\n getBrowserLanguage,\n injectSiTranslateService\n} from '@siemens/element-translate-ng/translate';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { SiDefaultLocaleStore, SiLocaleStore } from './si-locale-store';\n\nexport const SI_LOCALE_STORE = new InjectionToken<string>('SI_LOCALE_STORE');\nexport const SI_LOCALE_CONFIG = new InjectionToken<SiLocaleConfig>('SI_LOCALE_CONFIG');\n\n// this is a function because Angular compiler exports arrows for no good reason\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction defaultLocaleInitializer(localeId: string): Promise<void> {\n if (localeId === 'en') {\n return Promise.resolve();\n } else {\n return Promise.reject();\n }\n}\n\nexport interface SiLocaleConfig {\n /**\n * The default locale to be used, when no user preference\n * available and the browser language is not part of the\n * available languages.\n */\n defaultLocale?: string;\n /**\n * The list of available locales (e.g. en, fr, de, en-GB, de-AT)\n */\n availableLocales?: string[];\n /**\n * The localeInitializer function is invoked on every locale change.\n * Make sure to invoke `registerLocaleData` with the locale to enable\n * the Angular localization.\n */\n localeInitializer?: (localeId: string) => Promise<any>;\n /**\n * Set to true to also enable the default language on ngx-translate. When true,\n * ngx-translate will use a translate value from the default language when a required\n * value is not available in the current language. But note, this will also enforce\n * to load the default language translation file into the application, even if a different\n * locale is active. In other words, the application start time increases.\n */\n fallbackEnabled?: boolean;\n /**\n * Default is false and defines that on setting a new locale, the locale is stored and the\n * browser is reloaded. When changing to true, window reload is not invoked, but angular\n * pure pipes like DatePipe will not work.\n */\n dynamicLanguageChange?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SiLocaleService {\n /**\n * Holds the used locale definition like en, de, or en-US.\n */\n readonly locale$: BehaviorSubject<string>;\n /**\n * Emits to indicate that the localization package (e.g. \\@angular/common/locales/$\\{localeId\\})\n * is loaded and registered. Emits after calling `localeInitializer` from the `config` object.\n */\n readonly localePackageLoaded$ = new ReplaySubject<void>(1);\n\n private _nextLocale!: string;\n private isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private translate = injectSiTranslateService();\n private localeStore =\n inject(SiLocaleStore, { optional: true }) ?? new SiDefaultLocaleStore(this.isBrowser);\n /**\n * The config for the local service.\n */\n config = inject(SI_LOCALE_CONFIG, { optional: true }) ?? {\n availableLocales: ['en'],\n defaultLocale: 'en',\n localeInitializer: defaultLocaleInitializer,\n fallbackEnabled: false,\n dynamicLanguageChange: false\n };\n\n constructor() {\n if (!this.config.defaultLocale) {\n if (this.config.availableLocales && this.config.availableLocales.length > 0) {\n this.config.defaultLocale = this.config.availableLocales[0];\n } else {\n this.config.defaultLocale = 'en';\n }\n }\n\n if (!this.config.availableLocales || this.config.availableLocales.length === 0) {\n this.config.availableLocales = [this.config.defaultLocale];\n }\n // Also adds all locales to the translate service to enable\n // components working with the translate service directly to still work.\n this.translate.availableLanguages = this.config.availableLocales;\n\n this.config.localeInitializer ??= defaultLocaleInitializer;\n this.config.fallbackEnabled ??= false;\n this.config.dynamicLanguageChange ??= false;\n\n const savedLocale = this.localeStore.locale;\n // The following check is important. We do not control the store and when it comes from\n // a remove backend, someone might give us a locale that we do not understand. In this\n // case we switch to the default.\n let initialLocale;\n const browserCultureLang = getBrowserCultureLanguage();\n const browserLang = getBrowserLanguage();\n const currentLanguage = this.translate.currentLanguage;\n if (this.hasLocale(savedLocale)) {\n initialLocale = savedLocale!;\n } else if (currentLanguage) {\n initialLocale = currentLanguage;\n } else if (this.hasLocale(browserCultureLang)) {\n initialLocale = browserCultureLang!;\n } else if (this.hasLocale(browserLang)) {\n initialLocale = browserLang!;\n } else {\n initialLocale = this.config.defaultLocale;\n }\n this.locale$ = new BehaviorSubject<string>(initialLocale);\n this.doSetLocale(initialLocale);\n\n // If a user changes the language on the translate service directly,\n // we synchronize the change again.\n this.translate.translationChange.subscribe(() => {\n const current = this.translate.currentLanguage;\n if (current) {\n this.locale = current;\n }\n });\n\n if (this.config.fallbackEnabled) {\n this.translate.setDefaultLanguage(this.config.defaultLocale);\n }\n }\n\n /**\n * Sets a new locale to the locale service and also to the translate\n * service.\n * @throws An error if the new value is not configured in the available locales\n * or if the new locale cannot be saved, an error is thrown.\n */\n set locale(value: string) {\n if (value === this.locale$.value || value === this._nextLocale) {\n return;\n }\n if (!this.hasLocale(value)) {\n throw new Error(`The value ${value} does not exist in the available locales.`);\n }\n this.localeStore\n .saveLocale(value)\n .pipe(first())\n .subscribe({\n next: (saveSucceed: boolean) => {\n if (saveSucceed) {\n if (this.config.dynamicLanguageChange) {\n this.doSetLocale(value);\n } else if (this.isBrowser) {\n window.location.reload();\n }\n } else {\n throw new Error(`Could not save new locale ${value}.`);\n }\n },\n error: () => {\n throw new Error(`Could not save new locale ${value}.`);\n }\n });\n }\n\n get locale(): string {\n return this.locale$.value;\n }\n\n private doSetLocale(value: string): void {\n this._nextLocale = value;\n this.config.localeInitializer!(value).then(\n () => {\n this.localePackageLoaded$.next();\n this.translate\n .setCurrentLanguage(value)\n .pipe(first())\n .subscribe(() => {\n if (this.locale$.value !== value) {\n this.locale$.next(value);\n }\n });\n },\n () => {\n console.error(\n `Could not initialize new locale ${value}. Setting default locale ${this.config.defaultLocale}`\n );\n // Initialization of locale rejected. Setting default locale.\n this.translate\n .setCurrentLanguage(this.config.defaultLocale!)\n .pipe(first())\n .subscribe(() => {\n if (this.locale$.value !== this.config.defaultLocale!) {\n this.locale$.next(this.config.defaultLocale!);\n }\n });\n }\n );\n }\n\n /**\n * Test if the given locale is part of the available locales.\n * @param locale - The locale to be tested.\n */\n hasLocale(locale?: string): boolean {\n if (locale) {\n return this.config.availableLocales!.includes(locale);\n }\n return false;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { inject, Injectable } from '@angular/core';\n\nimport { SiLocaleService } from './si-locale.service';\n\n/**\n * The SiLocaleId is used to provide a locale id from the translate service\n * to the angular localization. The Angular services call toString or valueOf\n * so that the current locale of the translation service is provided. The Intl.\n * library does not invoke toString() and using the value directly in Intl\n * formatting results always having the `en` locale. Thus, when using the SiLocaleId\n * in other services, make sure to use the `toString()` method before.\n */\n@Injectable()\nexport class SiLocaleId extends String {\n protected service: SiLocaleService;\n\n // the constructor is needed for unknown reasons. w/o the inject() fails\n constructor() {\n super();\n this.service = inject(SiLocaleService);\n }\n\n /**\n * Outputs the locale id as a string.\n */\n override toString(): string {\n return this.service.locale === 'template' ? 'en' : this.service.locale;\n }\n\n override valueOf(): string {\n return this.toString();\n }\n\n override toLowerCase(): string {\n return this.toString().toLowerCase();\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { EventEmitter, Injectable, signal } from '@angular/core';\nimport { isRTL } from '@siemens/element-ng/common';\n\n/**\n * Provider for dynamic CDK directionality.\n *\n * CDK per default evaluates directionality once during initialization. This is a problem when\n * switching language later in the lifecycle. This provider can be used to make this dynamic.\n * To use, simply provide this in the `ApplicationConfig`:\n *\n * ```ts\n * import { Directionality } from '@angular/cdk/bidi';\n * import { SiDirectionality } from '@siemens/element-ng/localization';\n *\n * ...\n * export const APP_CONFIG: ApplicationConfig = {\n * providers: [\n * { provide: Directionality, useClass: SiDirectionality },\n * ...\n * ]\n * }\n *\n * bootstrapApplication(AppComponent, APP_CONFIG)\n * ...\n *\n * ```\n */\n\n@Injectable()\nexport class SiDirectionality implements Directionality {\n readonly change = new EventEmitter<Direction>();\n\n /** @defaultValue 'ltr' */\n readonly valueSignal = signal<Direction>('ltr');\n\n get value(): Direction {\n const dir = isRTL() ? 'rtl' : 'ltr';\n this.valueSignal.set(dir);\n return dir;\n }\n\n /** @internal */\n // eslint-disable-next-line @angular-eslint/use-lifecycle-interface, @angular-eslint/no-empty-lifecycle-method\n ngOnDestroy(): void {\n // empty, from Directionality\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-locale-id';\nexport * from './si-locale-store';\nexport * from './si-locale.service';\nexport * from './si-directionality';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-main-detail-container.mjs","sources":["../../../../projects/element-ng/main-detail-container/si-main-detail-container.component.ts","../../../../projects/element-ng/main-detail-container/si-main-detail-container.component.html","../../../../projects/element-ng/main-detail-container/si-main-detail-container.module.ts","../../../../projects/element-ng/main-detail-container/index.ts","../../../../projects/element-ng/main-detail-container/siemens-element-ng-main-detail-container.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n model,\n OnChanges,\n OnInit,\n output,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { elementBack } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport {\n BOOTSTRAP_BREAKPOINTS,\n ElementDimensions,\n ResizeObserverService\n} from '@siemens/element-ng/resize-observer';\nimport { SiSplitComponent, SiSplitPartComponent, SplitUnit } from '@siemens/element-ng/split';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\nimport { timer } from 'rxjs';\n\n@Component({\n selector: 'si-main-detail-container',\n imports: [\n NgTemplateOutlet,\n SiSplitComponent,\n SiSplitPartComponent,\n SiTranslatePipe,\n SiIconComponent\n ],\n templateUrl: './si-main-detail-container.component.html',\n styleUrl: './si-main-detail-container.component.scss',\n host: {\n class: 'si-layout-inner',\n '[class.animate]': 'animate()',\n '[style.opacity]': 'opacity()'\n }\n})\nexport class SiMainDetailContainerComponent implements OnInit, OnChanges {\n protected readonly icons = addIcons({ elementBack });\n\n private readonly animationDuration = 500;\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly resizeObserver = inject(ResizeObserverService);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly splitElement = viewChild('splitElement', { read: ElementRef });\n private readonly mainSplitPart = viewChild('mainSplitPart', { read: SiSplitPartComponent });\n\n /**\n * A numeric value defining the minimum width in px, which the container needs\n * to be displayed in its large layout. Whenever smaller than\n * this threshold, the small layout will be used. Default is\n * value is BOOTSTRAP_BREAKPOINTS.mdMinimum.\n *\n * @defaultValue BOOTSTRAP_BREAKPOINTS.mdMinimum\n */\n readonly largeLayoutBreakpoint = input(BOOTSTRAP_BREAKPOINTS.mdMinimum);\n\n /**\n * Whether the main-detail layout component has a large size or not,\n * `true` if the container´s width matches or exceeds the `largeLayoutBreakpoint`.\n */\n hasLargeSize!: boolean;\n\n /**\n * Emits whether the components size is large enough to display\n * main and details views next to each other or not.\n */\n readonly hasLargeSizeChange = output<boolean>();\n\n /**\n * Whether the details are currently active or not, mostly relevant in the\n * responsive scenario when the viewport only shows either the main or the detail.\n *\n * @defaultValue false\n */\n readonly detailsActive = model(false);\n\n /**\n * The heading of the main-detail layout component, usually a page heading.\n *\n * @defaultValue ''\n */\n readonly heading = input<TranslatableString>('');\n\n /**\n * Whether the heading should be truncated (single line) or not.\n * Default value is `false`.\n *\n * @defaultValue false\n */\n readonly truncateHeading = input(false, { transform: booleanAttribute });\n\n /**\n * The heading of the detail area.\n *\n * @defaultValue ''\n */\n readonly detailsHeading = input<TranslatableString>('');\n\n /**\n * Whether the main and detail parts should be resizable by a splitter or not.\n * This is only supported in the 'large' scenario (when `hasLargeSize` is `true`).\n * Default value is `false`.\n *\n * @defaultValue false\n */\n readonly resizableParts = input(false, { transform: booleanAttribute });\n\n /**\n * You can hide the back button in the mobile view by setting true. Required\n * in add, edit workflows on mobile sizes. During add or edit, the back button\n * should be hidden. Default value is `false`.\n *\n * @defaultValue false\n */\n readonly hideBackButton = input(false, { transform: booleanAttribute });\n\n /**\n * Details back button text. Required for a11y.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_MAIN_DETAIL_CONTAINER.BACK:Back`)\n * ```\n */\n readonly detailsBackButtonText = input(t(() => $localize`:@@SI_MAIN_DETAIL_CONTAINER.BACK:Back`));\n\n /**\n * CSS class(es) applied to the outermost container. Per default, Bootstrap classes\n * to handle responsive paddings are applied: `px-6 pt-6 px-md-9`.\n *\n * @defaultValue 'px-6 pt-6 px-md-9'\n */\n readonly containerClass = input('px-6 pt-6 px-md-9');\n\n /**\n * CSS class(es) applied to the main container. In combination with `containerClass`,\n * this allows for settings individual padding and margin values on the individual containers.\n *\n * @defaultValue 'pb-6'\n */\n readonly mainContainerClass = input('pb-6');\n\n /**\n * CSS class(es) applied to the detail container. In combination with `containerClass`,\n * this allows for settings individual padding and margin values on the individual containers.\n *\n * @defaultValue 'pb-6'\n */\n readonly detailContainerClass = input('pb-6');\n\n /**\n * Unit used for the main split part when {@link resizableParts} is enabled.\n *\n * @defaultValue 'px'\n */\n readonly mainContainerWidthUnit = input<SplitUnit>('px');\n\n /**\n * The size of the main container. When {@link resizableParts} is enabled,\n * the value is interpreted using {@link mainContainerWidthUnit} and updates as the splitter is moved.\n * With `mainContainerWidthUnit=\"fr\"`, numeric values must be from `0` to `100` (inclusive).\n * The main and detail fractional weights are the value and `100 - value`;\n * out-of-range values fall back to `32` and `68`.\n * In the static layout, numeric values represent a percentage from `0` to `100`\n * (inclusive); out-of-range values leave both containers without max-size constraints.\n * Pixel widths are not limited to the `0` to `100` range.\n *\n * With `'default'`, resizable pixel layouts use {@link minMainSize}, resizable fractional\n * layouts use main and detail weights of `32` and `68`, and static layouts use `50%`.\n *\n * @defaultValue 'default'\n */\n readonly mainContainerWidth = model<number | 'default'>('default');\n /**\n * Sets the minimal width of the main container in pixel.\n *\n * @defaultValue 300\n */\n readonly minMainSize = input(300);\n /**\n * Sets the minimal width of the detail container in pixel.\n *\n * @defaultValue 300\n */\n readonly minDetailSize = input(300);\n /**\n * An optional stateId to uniquely identify a component instance.\n * Required for persistence of ui state.\n */\n readonly stateId = input<string>();\n\n /**\n * The attribute is set to true when the detail area is not visible to ensure that the user\n * can't tab to details area when it is hidden.\n */\n protected preventFocusDetails = false;\n\n private readonly actualMainContainerWidth = computed(() => {\n const mainContainerWidth = this.mainContainerWidth();\n if (mainContainerWidth !== 'default') {\n return mainContainerWidth;\n }\n\n if (!this.resizableParts()) {\n return 50;\n }\n\n return this.mainContainerWidthUnit() === 'px' ? this.minMainSize() : 32;\n });\n\n protected splitSizes: [number, number] = this.getSplitSizes();\n // The max size to limit the main container in the static flex layout (if less than 50%), otherwise not set.\n protected maxMainSize: string = this.getMaxSize(0);\n // The max size to limit the detail container in the static flex layout (if less than 50%), otherwise not set.\n protected maxDetailSize: string = this.getMaxSize(1);\n\n protected readonly mainStateId = computed(() => {\n const stateId = this.stateId();\n return stateId ? `${stateId}-main` : undefined;\n });\n\n protected readonly detailStateId = computed(() => {\n const stateId = this.stateId();\n return stateId ? `${stateId}-detail` : undefined;\n });\n\n protected readonly animate = signal(false);\n\n protected readonly opacity = signal('0');\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (changes.detailsActive) {\n this.updateDetailsFocusable();\n this.doAnimation(changes.detailsActive.currentValue);\n }\n if (\n changes.mainContainerWidth ||\n changes.resizableParts ||\n changes.mainContainerWidthUnit ||\n changes.minMainSize\n ) {\n this.splitSizes = this.getSplitSizes();\n this.maxMainSize = this.getMaxSize(0);\n this.maxDetailSize = this.getMaxSize(1);\n }\n }\n\n ngOnInit(): void {\n this.resizeObserver\n .observe(this.elementRef.nativeElement, 100, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(dimensions => this.determineLayout(dimensions));\n }\n\n protected onSplitSizesChange(sizes: number[]): void {\n if (this.mainContainerWidthUnit() === 'px') {\n this.mainContainerWidth.set(this.getMainSizePx(sizes[0]));\n } else {\n this.mainContainerWidth.set(sizes[0]);\n }\n }\n\n protected detailsBackClicked(): void {\n this.detailsActive.set(false);\n this.doAnimation(false);\n }\n\n /**\n * Get the max size to limit in the static flex layout (if less than 50%), otherwise not set\n */\n private getMaxSize(part: 0 | 1): string {\n const mainContainerWidth = this.mainContainerWidth();\n if (\n this.resizableParts() ||\n mainContainerWidth === 'default' ||\n !this.hasLargeSize ||\n mainContainerWidth < 0 ||\n mainContainerWidth > 100\n ) {\n return '';\n }\n\n const size = part === 0 ? mainContainerWidth : 100 - mainContainerWidth;\n return size > 50 ? '' : size + '%';\n }\n\n private getSplitSizes(): [number, number] {\n const mainSize = this.actualMainContainerWidth();\n if (!this.resizableParts()) {\n return mainSize >= 0 && mainSize <= 100 ? [mainSize, 100 - mainSize] : [50, 50];\n }\n\n if (this.mainContainerWidthUnit() === 'fr') {\n return mainSize >= 0 && mainSize <= 100 ? [mainSize, 100 - mainSize] : [32, 68];\n }\n\n // The main size is in pixels; the detail part fills the remaining space with 1fr.\n return [mainSize, 1];\n }\n\n private getMainSizePx(fallbackPercentage: number): number {\n const mainPartSize = this.mainSplitPart()?.expandedSize();\n if (mainPartSize !== undefined) {\n return Math.round(mainPartSize);\n }\n\n const splitWidth = this.splitElement()?.nativeElement.getBoundingClientRect().width;\n return splitWidth ? Math.round((splitWidth * fallbackPercentage) / 100) : this.minMainSize();\n }\n\n private determineLayout(dimensions: ElementDimensions): void {\n const newHasLargeSize = dimensions.width >= this.largeLayoutBreakpoint();\n if (this.hasLargeSize !== newHasLargeSize) {\n this.hasLargeSize = newHasLargeSize;\n this.maxMainSize = this.getMaxSize(0);\n this.maxDetailSize = this.getMaxSize(1);\n this.updateDetailsFocusable();\n this.hasLargeSizeChange.emit(this.hasLargeSize);\n this.changeDetectorRef.markForCheck();\n }\n if (this.opacity() === '0') {\n this.opacity.set('');\n }\n }\n\n private doAnimation(detailsActive: boolean): void {\n this.animate.set(true);\n timer(this.animationDuration)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.animate.set(false));\n this.detailsActive.set(detailsActive);\n }\n\n private updateDetailsFocusable(): void {\n this.preventFocusDetails = !this.hasLargeSize && !this.detailsActive();\n }\n}\n","@if (resizableParts() && hasLargeSize) {\n <div class=\"main-detail-layout d-flex flex-column\" [class]=\"containerClass()\">\n <ng-container *ngTemplateOutlet=\"headingTemplate\" />\n <si-split\n #splitElement\n class=\"w-100 flex-grow-1\"\n orientation=\"horizontal\"\n [stateId]=\"stateId()\"\n (sizesChange)=\"onSplitSizesChange($event)\"\n >\n <si-split-part\n #mainSplitPart\n [unit]=\"mainContainerWidthUnit()\"\n [size]=\"splitSizes[0]\"\n [showHeader]=\"false\"\n [minSize]=\"minMainSize()\"\n [stateId]=\"mainStateId()\"\n >\n <ng-container *ngTemplateOutlet=\"mainTemplate\" />\n </si-split-part>\n <si-split-part\n unit=\"fr\"\n [size]=\"splitSizes[1]\"\n [showHeader]=\"false\"\n [minSize]=\"minDetailSize()\"\n [stateId]=\"detailStateId()\"\n >\n <ng-container *ngTemplateOutlet=\"detailTemplate\" />\n </si-split-part>\n </si-split>\n </div>\n} @else {\n <div\n class=\"main-detail-layout d-flex flex-column\"\n [class]=\"containerClass()\"\n [class.large-size]=\"hasLargeSize\"\n >\n <ng-container *ngTemplateOutlet=\"headingTemplate\" />\n <div\n class=\"main-detail-container d-flex flex-grow-1\"\n [class.details-active]=\"detailsActive() && !hasLargeSize\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n mainTemplate;\n context: { customClass: hasLargeSize ? 'col-3 ps-0 pe-4' : 'col-6 px-0' }\n \"\n />\n <ng-container\n *ngTemplateOutlet=\"\n detailTemplate;\n context: { customClass: hasLargeSize ? 'col-9 ps-4 pe-0' : 'col-6 px-0' }\n \"\n />\n </div>\n </div>\n}\n\n<!-- Templates -->\n<ng-template #headingTemplate>\n @if (heading()) {\n <div class=\"si-layout-header\">\n <h2 class=\"si-layout-title si-layout-top-element\" [class.text-truncate]=\"truncateHeading()\">{{\n heading() | translate\n }}</h2>\n </div>\n }\n</ng-template>\n\n<ng-template #mainTemplate let-customClass=\"customClass\">\n <div\n class=\"main-container d-flex flex-column\"\n [class]=\"[mainContainerClass(), customClass ? customClass : '']\"\n [style.max-inline-size]=\"maxMainSize\"\n >\n <div class=\"main-search-actions d-flex align-items-center\">\n <ng-content select=\"[slot=mainSearch]\" />\n <ng-content select=\"[slot=mainActions]\" />\n </div>\n <div class=\"main-data-container d-flex\">\n <ng-content select=\"[slot=mainData]\" />\n </div>\n </div>\n</ng-template>\n\n<ng-template #detailTemplate let-customClass=\"customClass\">\n <div\n class=\"detail-container d-flex flex-column\"\n [class]=\"[detailContainerClass(), customClass ? customClass : '']\"\n [style.max-inline-size]=\"maxDetailSize\"\n [attr.inert]=\"preventFocusDetails ? '' : null\"\n >\n <div class=\"detail-heading-actions d-flex align-items-center\">\n @if (!this.hasLargeSize && !this.hideBackButton()) {\n <button type=\"button\" class=\"btn btn-circle btn-secondary\" (click)=\"detailsBackClicked()\">\n <si-icon [icon]=\"icons.elementBack\" />\n <span class=\"visually-hidden\">{{ detailsBackButtonText() | translate }}</span>\n </button>\n }\n @if (detailsHeading()) {\n <span class=\"detail-heading si-h4 me-auto ms-6 my-auto text-truncate\">{{\n detailsHeading() | translate\n }}</span>\n }\n <ng-content select=\"[slot=detailActions]\" />\n </div>\n <ng-content select=\"[slot=details]\" />\n </div>\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiMainDetailContainerComponent } from './si-main-detail-container.component';\n\n@NgModule({\n imports: [SiMainDetailContainerComponent],\n exports: [SiMainDetailContainerComponent]\n})\nexport class SiMainDetailContainerModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-main-detail-container.component';\nexport * from './si-main-detail-container.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-main-detail-container.mjs","sources":["../../../../projects/element-ng/main-detail-container/si-main-detail-container.component.ts","../../../../projects/element-ng/main-detail-container/si-main-detail-container.component.html","../../../../projects/element-ng/main-detail-container/si-main-detail-container.module.ts","../../../../projects/element-ng/main-detail-container/index.ts","../../../../projects/element-ng/main-detail-container/siemens-element-ng-main-detail-container.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n model,\n OnChanges,\n OnInit,\n output,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { elementBack } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport {\n BOOTSTRAP_BREAKPOINTS,\n ElementDimensions,\n ResizeObserverService\n} from '@siemens/element-ng/resize-observer';\nimport { SiSplitComponent, SiSplitPartComponent, SplitUnit } from '@siemens/element-ng/split';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\nimport { timer } from 'rxjs';\n\n@Component({\n selector: 'si-main-detail-container',\n imports: [\n NgTemplateOutlet,\n SiSplitComponent,\n SiSplitPartComponent,\n SiTranslatePipe,\n SiIconComponent\n ],\n templateUrl: './si-main-detail-container.component.html',\n styleUrl: './si-main-detail-container.component.scss',\n host: {\n class: 'si-layout-inner',\n '[class.animate]': 'animate()',\n '[style.opacity]': 'opacity()'\n }\n})\nexport class SiMainDetailContainerComponent implements OnInit, OnChanges {\n protected readonly icons = addIcons({ elementBack });\n\n private readonly animationDuration = 500;\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly resizeObserver = inject(ResizeObserverService);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly splitElement = viewChild('splitElement', { read: ElementRef });\n private readonly mainSplitPart = viewChild('mainSplitPart', { read: SiSplitPartComponent });\n\n /**\n * A numeric value defining the minimum width in px, which the container needs\n * to be displayed in its large layout. Whenever smaller than\n * this threshold, the small layout will be used. Default is\n * value is BOOTSTRAP_BREAKPOINTS.mdMinimum.\n *\n * @defaultValue BOOTSTRAP_BREAKPOINTS.mdMinimum\n */\n readonly largeLayoutBreakpoint = input(BOOTSTRAP_BREAKPOINTS.mdMinimum);\n\n /**\n * Whether the main-detail layout component has a large size or not,\n * `true` if the container´s width matches or exceeds the `largeLayoutBreakpoint`.\n */\n hasLargeSize!: boolean;\n\n /**\n * Emits whether the components size is large enough to display\n * main and details views next to each other or not.\n */\n readonly hasLargeSizeChange = output<boolean>();\n\n /**\n * Whether the details are currently active or not, mostly relevant in the\n * responsive scenario when the viewport only shows either the main or the detail.\n *\n * @defaultValue false\n */\n readonly detailsActive = model(false);\n\n /**\n * The heading of the main-detail layout component, usually a page heading.\n *\n * @defaultValue ''\n */\n readonly heading = input<TranslatableString>('');\n\n /**\n * Whether the heading should be truncated (single line) or not.\n * Default value is `false`.\n *\n * @defaultValue false\n */\n readonly truncateHeading = input(false, { transform: booleanAttribute });\n\n /**\n * The heading of the detail area.\n *\n * @defaultValue ''\n */\n readonly detailsHeading = input<TranslatableString>('');\n\n /**\n * Whether the main and detail parts should be resizable by a splitter or not.\n * This is only supported in the 'large' scenario (when `hasLargeSize` is `true`).\n * Default value is `false`.\n *\n * @defaultValue false\n */\n readonly resizableParts = input(false, { transform: booleanAttribute });\n\n /**\n * You can hide the back button in the mobile view by setting true. Required\n * in add, edit workflows on mobile sizes. During add or edit, the back button\n * should be hidden. Default value is `false`.\n *\n * @defaultValue false\n */\n readonly hideBackButton = input(false, { transform: booleanAttribute });\n\n /**\n * Details back button text. Required for a11y.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_MAIN_DETAIL_CONTAINER.BACK:Back`)\n * ```\n */\n readonly detailsBackButtonText = input(t(() => $localize`:@@SI_MAIN_DETAIL_CONTAINER.BACK:Back`));\n\n /**\n * CSS class(es) applied to the outermost container. Per default, Bootstrap classes\n * to handle responsive paddings are applied: `px-6 pt-6 px-md-9`.\n *\n * @defaultValue 'px-6 pt-6 px-md-9'\n */\n readonly containerClass = input('px-6 pt-6 px-md-9');\n\n /**\n * CSS class(es) applied to the main container. In combination with `containerClass`,\n * this allows for settings individual padding and margin values on the individual containers.\n *\n * @defaultValue 'pb-6'\n */\n readonly mainContainerClass = input('pb-6');\n\n /**\n * CSS class(es) applied to the detail container. In combination with `containerClass`,\n * this allows for settings individual padding and margin values on the individual containers.\n *\n * @defaultValue 'pb-6'\n */\n readonly detailContainerClass = input('pb-6');\n\n /**\n * Unit used for the main split part when {@link resizableParts} is enabled.\n *\n * @defaultValue 'px'\n */\n readonly mainContainerWidthUnit = input<SplitUnit>('px');\n\n /**\n * The size of the main container. When {@link resizableParts} is enabled,\n * the value is interpreted using {@link mainContainerWidthUnit} and updates as the splitter is moved.\n * With `mainContainerWidthUnit=\"fr\"`, numeric values must be from `0` to `100` (inclusive).\n * The main and detail fractional weights are the value and `100 - value`;\n * out-of-range values fall back to `32` and `68`.\n * In the static layout, numeric values represent a percentage from `0` to `100`\n * (inclusive); out-of-range values leave both containers without max-size constraints.\n * Pixel widths are not limited to the `0` to `100` range.\n *\n * With `'default'`, resizable pixel layouts use {@link minMainSize}, resizable fractional\n * layouts use main and detail weights of `32` and `68`, and static layouts use `50%`.\n *\n * @defaultValue 'default'\n */\n readonly mainContainerWidth = model<number | 'default'>('default');\n /**\n * Sets the minimal width of the main container in pixel.\n *\n * @defaultValue 300\n */\n readonly minMainSize = input(300);\n /**\n * Sets the minimal width of the detail container in pixel.\n *\n * @defaultValue 300\n */\n readonly minDetailSize = input(300);\n /**\n * An optional stateId to uniquely identify a component instance.\n * Required for persistence of ui state.\n */\n readonly stateId = input<string>();\n\n /**\n * The attribute is set to true when the detail area is not visible to ensure that the user\n * can't tab to details area when it is hidden.\n */\n protected preventFocusDetails = false;\n\n private readonly actualMainContainerWidth = computed(() => {\n const mainContainerWidth = this.mainContainerWidth();\n if (mainContainerWidth !== 'default') {\n return mainContainerWidth;\n }\n\n if (!this.resizableParts()) {\n return 50;\n }\n\n return this.mainContainerWidthUnit() === 'px' ? this.minMainSize() : 32;\n });\n\n protected splitSizes: [number, number] = this.getSplitSizes();\n // The max size to limit the main container in the static flex layout (if less than 50%), otherwise not set.\n protected maxMainSize: string = this.getMaxSize(0);\n // The max size to limit the detail container in the static flex layout (if less than 50%), otherwise not set.\n protected maxDetailSize: string = this.getMaxSize(1);\n\n protected readonly mainStateId = computed(() => {\n const stateId = this.stateId();\n return stateId ? `${stateId}-main` : undefined;\n });\n\n protected readonly detailStateId = computed(() => {\n const stateId = this.stateId();\n return stateId ? `${stateId}-detail` : undefined;\n });\n\n protected readonly animate = signal(false);\n\n protected readonly opacity = signal('0');\n\n ngOnChanges(changes: SimpleChanges<this>): void {\n if (changes.detailsActive) {\n this.updateDetailsFocusable();\n this.doAnimation(changes.detailsActive.currentValue);\n }\n if (\n changes.mainContainerWidth ||\n changes.resizableParts ||\n changes.mainContainerWidthUnit ||\n changes.minMainSize\n ) {\n this.splitSizes = this.getSplitSizes();\n this.maxMainSize = this.getMaxSize(0);\n this.maxDetailSize = this.getMaxSize(1);\n }\n }\n\n ngOnInit(): void {\n this.resizeObserver\n .observe(this.elementRef.nativeElement, 100, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(dimensions => this.determineLayout(dimensions));\n }\n\n protected onSplitSizesChange(sizes: number[]): void {\n if (this.mainContainerWidthUnit() === 'px') {\n this.mainContainerWidth.set(this.getMainSizePx(sizes[0]));\n } else {\n this.mainContainerWidth.set(sizes[0]);\n }\n }\n\n protected detailsBackClicked(): void {\n this.detailsActive.set(false);\n this.doAnimation(false);\n }\n\n /**\n * Get the max size to limit in the static flex layout (if less than 50%), otherwise not set\n */\n private getMaxSize(part: 0 | 1): string {\n const mainContainerWidth = this.mainContainerWidth();\n if (\n this.resizableParts() ||\n mainContainerWidth === 'default' ||\n !this.hasLargeSize ||\n mainContainerWidth < 0 ||\n mainContainerWidth > 100\n ) {\n return '';\n }\n\n const size = part === 0 ? mainContainerWidth : 100 - mainContainerWidth;\n return size > 50 ? '' : size + '%';\n }\n\n private getSplitSizes(): [number, number] {\n const mainSize = this.actualMainContainerWidth();\n if (!this.resizableParts()) {\n return mainSize >= 0 && mainSize <= 100 ? [mainSize, 100 - mainSize] : [50, 50];\n }\n\n if (this.mainContainerWidthUnit() === 'fr') {\n return mainSize >= 0 && mainSize <= 100 ? [mainSize, 100 - mainSize] : [32, 68];\n }\n\n // The main size is in pixels; the detail part fills the remaining space with 1fr.\n return [mainSize, 1];\n }\n\n private getMainSizePx(fallbackPercentage: number): number {\n const mainPartSize = this.mainSplitPart()?.expandedSize();\n if (mainPartSize !== undefined) {\n return Math.round(mainPartSize);\n }\n\n const splitWidth = this.splitElement()?.nativeElement.getBoundingClientRect().width;\n return splitWidth ? Math.round((splitWidth * fallbackPercentage) / 100) : this.minMainSize();\n }\n\n private determineLayout(dimensions: ElementDimensions): void {\n const newHasLargeSize = dimensions.width >= this.largeLayoutBreakpoint();\n if (this.hasLargeSize !== newHasLargeSize) {\n this.hasLargeSize = newHasLargeSize;\n this.maxMainSize = this.getMaxSize(0);\n this.maxDetailSize = this.getMaxSize(1);\n this.updateDetailsFocusable();\n this.hasLargeSizeChange.emit(this.hasLargeSize);\n this.changeDetectorRef.markForCheck();\n }\n if (this.opacity() === '0') {\n this.opacity.set('');\n }\n }\n\n private doAnimation(detailsActive: boolean): void {\n this.animate.set(true);\n timer(this.animationDuration)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.animate.set(false));\n this.detailsActive.set(detailsActive);\n }\n\n private updateDetailsFocusable(): void {\n this.preventFocusDetails = !this.hasLargeSize && !this.detailsActive();\n }\n}\n","@if (resizableParts() && hasLargeSize) {\n <div class=\"main-detail-layout d-flex flex-column\" [class]=\"containerClass()\">\n <ng-container *ngTemplateOutlet=\"headingTemplate\" />\n <si-split\n #splitElement\n class=\"w-100 flex-grow-1\"\n orientation=\"horizontal\"\n [stateId]=\"stateId()\"\n (sizesChange)=\"onSplitSizesChange($event)\"\n >\n <si-split-part\n #mainSplitPart\n [unit]=\"mainContainerWidthUnit()\"\n [size]=\"splitSizes[0]\"\n [showHeader]=\"false\"\n [minSize]=\"minMainSize()\"\n [stateId]=\"mainStateId()\"\n >\n <ng-container *ngTemplateOutlet=\"mainTemplate\" />\n </si-split-part>\n <si-split-part\n unit=\"fr\"\n [size]=\"splitSizes[1]\"\n [showHeader]=\"false\"\n [minSize]=\"minDetailSize()\"\n [stateId]=\"detailStateId()\"\n >\n <ng-container *ngTemplateOutlet=\"detailTemplate\" />\n </si-split-part>\n </si-split>\n </div>\n} @else {\n <div\n class=\"main-detail-layout d-flex flex-column\"\n [class]=\"containerClass()\"\n [class.large-size]=\"hasLargeSize\"\n >\n <ng-container *ngTemplateOutlet=\"headingTemplate\" />\n <div\n class=\"main-detail-container d-flex flex-grow-1\"\n [class.details-active]=\"detailsActive() && !hasLargeSize\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n mainTemplate;\n context: { customClass: hasLargeSize ? 'col-3 ps-0 pe-4' : 'col-6 px-0' }\n \"\n />\n <ng-container\n *ngTemplateOutlet=\"\n detailTemplate;\n context: { customClass: hasLargeSize ? 'col-9 ps-4 pe-0' : 'col-6 px-0' }\n \"\n />\n </div>\n </div>\n}\n\n<!-- Templates -->\n<ng-template #headingTemplate>\n @if (heading()) {\n <div class=\"si-layout-header\">\n <h2 class=\"si-layout-title si-layout-top-element\" [class.text-truncate]=\"truncateHeading()\">{{\n heading() | translate\n }}</h2>\n </div>\n }\n</ng-template>\n\n<ng-template #mainTemplate let-customClass=\"customClass\">\n <div\n class=\"main-container d-flex flex-column\"\n [class]=\"[mainContainerClass(), customClass ? customClass : '']\"\n [style.max-inline-size]=\"maxMainSize\"\n >\n <div class=\"main-search-actions d-flex align-items-center\">\n <ng-content select=\"[slot=mainSearch]\" />\n <ng-content select=\"[slot=mainActions]\" />\n </div>\n <div class=\"main-data-container d-flex\">\n <ng-content select=\"[slot=mainData]\" />\n </div>\n </div>\n</ng-template>\n\n<ng-template #detailTemplate let-customClass=\"customClass\">\n <div\n class=\"detail-container d-flex flex-column\"\n [class]=\"[detailContainerClass(), customClass ? customClass : '']\"\n [style.max-inline-size]=\"maxDetailSize\"\n [attr.inert]=\"preventFocusDetails ? '' : null\"\n >\n <div class=\"detail-heading-actions d-flex align-items-center\">\n @if (!this.hasLargeSize && !this.hideBackButton()) {\n <button type=\"button\" class=\"btn btn-circle btn-secondary\" (click)=\"detailsBackClicked()\">\n <si-icon [icon]=\"icons.elementBack\" />\n <span class=\"visually-hidden\">{{ detailsBackButtonText() | translate }}</span>\n </button>\n }\n @if (detailsHeading()) {\n <span class=\"detail-heading si-h4 me-auto ms-6 my-auto text-truncate\">{{\n detailsHeading() | translate\n }}</span>\n }\n <ng-content select=\"[slot=detailActions]\" />\n </div>\n <ng-content select=\"[slot=details]\" />\n </div>\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiMainDetailContainerComponent } from './si-main-detail-container.component';\n\n@NgModule({\n imports: [SiMainDetailContainerComponent],\n exports: [SiMainDetailContainerComponent]\n})\nexport class SiMainDetailContainerModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-main-detail-container.component';\nexport * from './si-main-detail-container.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -328,8 +328,8 @@ const createDefaultLocale = () => ({
|
|
|
328
328
|
'ScaleControl.Kilometers': t(() => $localize `:@@SI_MAP.SCALE_KILOMETERS:km`),
|
|
329
329
|
'ScaleControl.Miles': t(() => $localize `:@@SI_MAP.SCALE_MILES:mi`),
|
|
330
330
|
'ScaleControl.NauticalMiles': t(() => $localize `:@@SI_MAP.SCALE_NAUTICAL_MILES:nm`),
|
|
331
|
-
'GlobeControl.Enable': t(() => $localize `:@@SI_MAP.GLOBE_ENABLE:
|
|
332
|
-
'GlobeControl.Disable': t(() => $localize `:@@SI_MAP.GLOBE_DISABLE:
|
|
331
|
+
'GlobeControl.Enable': t(() => $localize `:@@SI_MAP.GLOBE_ENABLE:Switch to globe view`),
|
|
332
|
+
'GlobeControl.Disable': t(() => $localize `:@@SI_MAP.GLOBE_DISABLE:Switch to flat view`),
|
|
333
333
|
'TerrainControl.Enable': t(() => $localize `:@@SI_MAP.TERRAIN_ENABLE:Enable terrain`),
|
|
334
334
|
'TerrainControl.Disable': t(() => $localize `:@@SI_MAP.TERRAIN_DISABLE:Disable terrain`),
|
|
335
335
|
'CooperativeGesturesHandler.WindowsHelpText': t(() => $localize `:@@SI_MAP.WINDOWS_HELP:Use Ctrl + scroll to zoom the map`),
|