@siemens/element-ng 48.1.0 → 48.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/card/index.d.ts +68 -29
- package/common/index.d.ts +11 -0
- package/dashboard/index.d.ts +1 -0
- package/datepicker/index.d.ts +30 -34
- package/fesm2022/siemens-element-ng-breadcrumb.mjs +2 -2
- package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-card.mjs +103 -37
- package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-common.mjs +6 -0
- package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-connection-strength.mjs +2 -2
- package/fesm2022/siemens-element-ng-connection-strength.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-content-action-bar.mjs +2 -2
- package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-dashboard.mjs +10 -8
- package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datatable.mjs +5 -0
- package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-date-range-filter.mjs +1 -1
- package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datepicker.mjs +173 -151
- package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-file-uploader.mjs +2 -2
- package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filter-bar.mjs +5 -5
- package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +15 -3
- package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-form.mjs +7 -1
- package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-formly.mjs +2 -2
- package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-header-dropdown.mjs +13 -1
- package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-ip-input.mjs +62 -28
- package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-language-switcher.mjs +1 -1
- package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-list-details.mjs +2 -2
- package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical.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-photo-upload.mjs +1 -1
- package/fesm2022/siemens-element-ng-photo-upload.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-search-bar.mjs +14 -4
- package/fesm2022/siemens-element-ng-search-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-side-panel.mjs +2 -2
- package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-bar.mjs +2 -2
- package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs-legacy.mjs +2 -2
- package/fesm2022/siemens-element-ng-tabs-legacy.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs.mjs +5 -5
- package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tooltip.mjs +5 -6
- package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tree-view.mjs +4 -4
- package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-typeahead.mjs +329 -257
- package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
- package/filter-bar/index.d.ts +9 -3
- package/header-dropdown/index.d.ts +7 -0
- package/ip-input/index.d.ts +42 -5
- package/package.json +23 -19
- package/schematics/collection.json +34 -0
- package/schematics/migrations/action-modal-migration/action-modal-migration.js +121 -0
- package/schematics/migrations/action-modal-migration/action-modal.mappings.js +98 -0
- package/schematics/migrations/action-modal-migration/index.js +5 -0
- package/schematics/migrations/index.js +13 -0
- package/schematics/migrations/schema.json +16 -0
- package/schematics/migrations/to-legacy-migration/to-legacy-migration.js +55 -0
- package/schematics/migrations/to-legacy-migration/to-legacy-replacement.js +35 -0
- package/schematics/ng-add/index.js +16 -0
- package/schematics/ng-add/schema.json +16 -0
- package/schematics/scss-import-to-siemens-migration/index.js +101 -0
- package/schematics/scss-import-to-siemens-migration/schema.json +16 -0
- package/schematics/scss-import-to-siemens-migration/style-mappings.js +46 -0
- package/schematics/simpl-siemens-migration/index.js +18 -0
- package/schematics/simpl-siemens-migration/schema.json +16 -0
- package/schematics/ts-import-to-siemens-migration/index.js +118 -0
- package/schematics/ts-import-to-siemens-migration/mappings/charts-ng-mappings.js +70 -0
- package/schematics/ts-import-to-siemens-migration/mappings/dashboards-ng-mappings.js +52 -0
- package/schematics/ts-import-to-siemens-migration/mappings/element-ng-mappings.js +651 -0
- package/schematics/ts-import-to-siemens-migration/mappings/element-translate-ng-mappings.js +21 -0
- package/schematics/ts-import-to-siemens-migration/mappings/index.js +9 -0
- package/schematics/ts-import-to-siemens-migration/mappings/maps-ng-mappings.js +46 -0
- package/schematics/ts-import-to-siemens-migration/model.js +4 -0
- package/schematics/ts-import-to-siemens-migration/schema.json +16 -0
- package/schematics/utils/html-utils.js +72 -0
- package/schematics/utils/index.js +10 -0
- package/schematics/utils/project-utils.js +75 -0
- package/schematics/utils/schematics-file-system.js +22 -0
- package/schematics/utils/template-utils.js +114 -0
- package/schematics/utils/testing.js +41 -0
- package/schematics/utils/ts-utils.js +195 -0
- package/search-bar/index.d.ts +11 -1
- package/template-i18n.json +7 -0
- package/tooltip/index.d.ts +1 -1
- package/translate/index.d.ts +7 -0
- package/typeahead/index.d.ts +85 -4
|
@@ -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 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n OnChanges,\n OnDestroy,\n OnInit,\n signal,\n SimpleChanges\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 } from '@siemens/element-ng/split';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\n\n/** @experimental */\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 changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'si-layout-inner list-details-layout d-flex flex-column',\n '[class.expanded]': 'hasLargeSize()',\n '[style.opacity]': 'opacity()'\n },\n animations: [\n trigger('detailsExpanded', [\n state(\n 'collapsed',\n style({\n marginInlineStart: '0'\n })\n ),\n state(\n 'expanded',\n style({\n marginInlineStart: '-100%'\n })\n ),\n transition('collapsed <=> expanded', [animate('0.5s ease-in-out')])\n ])\n ]\n})\nexport class SiListDetailsComponent implements OnInit, OnChanges, OnDestroy {\n private resizeSubs?: Subscription;\n private elementRef = inject(ElementRef);\n private resizeObserver = inject(ResizeObserverService);\n private 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 percentage width of the list view of the overall component width.\n *\n * @defaultValue 32\n */\n readonly listWidth = model<number>(32);\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 protected readonly splitSizes = computed<[number, number]>(() => [\n this.listWidth(),\n 100 - this.listWidth()\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.animationsGloballyDisabled && !this.hasLargeSize()) {\n return this.detailsActive() ? '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): 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 this.listWidth.set(sizes[0]);\n }\n\n /** @internal */\n detailsBackClicked(options?: { animationDone?: () => void }): void {\n this.detailsActive.set(false);\n // This callback is used to route after the animation is done.\n this.animationDone = options?.animationDone;\n }\n\n protected detailsExpandedAnimationDone(): void {\n if (this.animationDone) {\n this.animationDone();\n this.animationDone = undefined;\n }\n }\n\n // Transfer focus onto child panes if they would be inaccesible.\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 [sizes]=\"splitSizes()\"\n (sizesChange)=\"onSplitSizesChange($event)\"\n >\n <si-split-part\n scale=\"none\"\n [showCollapseButton]=\"false\"\n [showHeader]=\"false\"\n [minSize]=\"minListSize()\"\n [stateId]=\"listStateId()\"\n >\n <ng-container *ngTemplateOutlet=\"listTemplate\" />\n </si-split-part>\n <si-split-part\n scale=\"auto\"\n [showCollapseButton]=\"false\"\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 class=\"list-details d-flex flex-row\"\n [class.gap-6]=\"hasLargeSize()\"\n [class.details-active]=\"detailsActive() && !hasLargeSize()\"\n [@detailsExpanded]=\"detailsExpandedAnimation()\"\n (@detailsExpanded.done)=\"detailsExpandedAnimationDone()\"\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 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, ElementRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { SiListDetailsComponent } from '../si-list-details.component';\n\n/** @experimental */\n@Component({\n selector: 'si-list-pane',\n templateUrl: './si-list-pane.component.html',\n styleUrl: './si-list-pane.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\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.listWidth() : 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 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/** @experimental */\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 changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiListPaneHeaderComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/** @experimental */\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 changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiListPaneBodyComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n effect,\n inject\n} 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/** @experimental */\n@Component({\n selector: 'si-details-pane',\n imports: [],\n templateUrl: './si-details-pane.component.html',\n styleUrl: './si-details-pane.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\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.listWidth() : 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 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\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 { 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/** @experimental */\n@Component({\n selector: 'si-details-pane-header',\n imports: [SiTranslatePipe],\n templateUrl: './si-details-pane-header.component.html',\n styleUrl: './si-details-pane-header.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'nav nav-tabs' // To allow nav-link styling.\n }\n})\nexport class SiDetailsPaneHeaderComponent {\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","<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 pe-5\"\n (click)=\"backClicked()\"\n ><span\n class=\"pe-2 d-inline-block position-relative element-back icon\"\n role=\"img\"\n aria-labelledby=\"backButton\"\n ></span\n >{{ backButtonText() | translate }}</button\n >\n }\n @if (title()) {\n <span class=\"si-details-header-title nav-link px-6 pe-5\">{{ title() | translate }}</span>\n }\n</div>\n<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/** @experimental */\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 changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiDetailsPaneBodyComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/** @experimental */\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 changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiDetailsPaneFooterComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2025\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 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n OnChanges,\n OnDestroy,\n OnInit,\n signal,\n SimpleChanges\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 } from '@siemens/element-ng/split';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\n\n/** @experimental */\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 changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'si-layout-inner list-details-layout d-flex flex-column',\n '[class.expanded]': 'hasLargeSize()',\n '[style.opacity]': 'opacity()'\n },\n animations: [\n trigger('detailsExpanded', [\n state(\n 'collapsed',\n style({\n marginInlineStart: '0'\n })\n ),\n state(\n 'expanded',\n style({\n marginInlineStart: '-100%'\n })\n ),\n transition('collapsed <=> expanded', [animate('0.5s ease-in-out')])\n ])\n ]\n})\nexport class SiListDetailsComponent implements OnInit, OnChanges, OnDestroy {\n private resizeSubs?: Subscription;\n private elementRef = inject(ElementRef);\n private resizeObserver = inject(ResizeObserverService);\n private 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 percentage width of the list view of the overall component width.\n *\n * @defaultValue 32\n */\n readonly listWidth = model<number>(32);\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 protected readonly splitSizes = computed<[number, number]>(() => [\n this.listWidth(),\n 100 - this.listWidth()\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.animationsGloballyDisabled && !this.hasLargeSize()) {\n return this.detailsActive() ? '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): 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 this.listWidth.set(sizes[0]);\n }\n\n /** @internal */\n detailsBackClicked(options?: { animationDone?: () => void }): void {\n this.detailsActive.set(false);\n // This callback is used to route after the animation is done.\n this.animationDone = options?.animationDone;\n }\n\n protected detailsExpandedAnimationDone(): void {\n if (this.animationDone) {\n this.animationDone();\n this.animationDone = undefined;\n }\n }\n\n // Transfer focus onto child panes if they would be inaccesible.\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 [sizes]=\"splitSizes()\"\n (sizesChange)=\"onSplitSizesChange($event)\"\n >\n <si-split-part\n scale=\"none\"\n [showCollapseButton]=\"false\"\n [showHeader]=\"false\"\n [minSize]=\"minListSize()\"\n [stateId]=\"listStateId()\"\n >\n <ng-container *ngTemplateOutlet=\"listTemplate\" />\n </si-split-part>\n <si-split-part\n scale=\"auto\"\n [showCollapseButton]=\"false\"\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 class=\"list-details d-flex flex-row\"\n [class.gap-6]=\"hasLargeSize()\"\n [class.details-active]=\"detailsActive() && !hasLargeSize()\"\n [@detailsExpanded]=\"detailsExpandedAnimation()\"\n (@detailsExpanded.done)=\"detailsExpandedAnimationDone()\"\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 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, ElementRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { SiListDetailsComponent } from '../si-list-details.component';\n\n/** @experimental */\n@Component({\n selector: 'si-list-pane',\n templateUrl: './si-list-pane.component.html',\n styleUrl: './si-list-pane.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\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.listWidth() : 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 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/** @experimental */\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 changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiListPaneHeaderComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/** @experimental */\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 changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiListPaneBodyComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n effect,\n inject\n} 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/** @experimental */\n@Component({\n selector: 'si-details-pane',\n imports: [],\n templateUrl: './si-details-pane.component.html',\n styleUrl: './si-details-pane.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\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.listWidth() : 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 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\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 { 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/** @experimental */\n@Component({\n selector: 'si-details-pane-header',\n imports: [SiTranslatePipe],\n templateUrl: './si-details-pane-header.component.html',\n styleUrl: './si-details-pane-header.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'nav nav-tabs' // To allow nav-link styling.\n }\n})\nexport class SiDetailsPaneHeaderComponent {\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 ><span\n class=\"pe-2 d-inline-block position-relative element-back icon\"\n role=\"img\"\n aria-hidden=\"true\"\n ></span\n >{{ backButtonText() | translate }}</button\n >\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 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/** @experimental */\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 changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiDetailsPaneBodyComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/** @experimental */\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 changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiDetailsPaneFooterComponent {}\n","<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2025\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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"}
|
|
@@ -657,7 +657,7 @@ class SiNavbarVerticalComponent {
|
|
|
657
657
|
return !('type' in item && item.type !== 'check' && item.type !== 'radio');
|
|
658
658
|
}
|
|
659
659
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiNavbarVerticalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
660
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiNavbarVerticalComponent, isStandalone: true, selector: "si-navbar-vertical", inputs: { collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, textOnly: { classPropertyName: "textOnly", publicName: "textOnly", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, navbarExpandButtonText: { classPropertyName: "navbarExpandButtonText", publicName: "navbarExpandButtonText", isSignal: true, isRequired: false, transformFunction: null }, navbarCollapseButtonText: { classPropertyName: "navbarCollapseButtonText", publicName: "navbarCollapseButtonText", isSignal: true, isRequired: false, transformFunction: null }, stateId: { classPropertyName: "stateId", publicName: "stateId", isSignal: true, isRequired: false, transformFunction: null }, skipLinkNavigationLabel: { classPropertyName: "skipLinkNavigationLabel", publicName: "skipLinkNavigationLabel", isSignal: true, isRequired: false, transformFunction: null }, skipLinkMainContentLabel: { classPropertyName: "skipLinkMainContentLabel", publicName: "skipLinkMainContentLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange", items: "itemsChange", searchEvent: "searchEvent" }, host: { properties: { "class.nav-collapsed": "collapsed()", "class.nav-text-only": "textOnly()", "class.visible": "visible()", "class.ready": "this.ready" }, classAttribute: "si-layout-inner" }, providers: [{ provide: SI_NAVBAR_VERTICAL, useExisting: SiNavbarVerticalComponent }], viewQueries: [{ propertyName: "searchBar", first: true, predicate: SiSearchBarComponent, descendants: true, isSignal: true }, { propertyName: "navbarItems", predicate: SiNavbarVerticalItemComponent, descendants: true, isSignal: true }, { propertyName: "navbarItemsLegacy", predicate: SiNavbarVerticalItemLegacyComponent, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "@if (visible()) {\n @if (smallScreen() && !collapsed()) {\n <div\n class=\"modal-backdrop\"\n [@backdrop]=\"smallScreen() && !collapsed() ? 'show' : 'hide'\"\n (click)=\"toggleCollapse()\"\n ></div>\n }\n <nav\n tabindex=\"-1\"\n class=\"bg-base-1 focus-sub-inside\"\n [siSkipLinkTarget]=\"skipLinkNavigationLabel()\"\n [@collapse]=\"collapsed() ? 'collapsed' : 'expanded'\"\n [class.text-only]=\"textOnly()\"\n >\n <div class=\"collapse-toggle ms-auto\">\n <div class=\"mobile-drawer focus-inside navbar-vertical-no-collapse\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-sm btn-ghost flip-rtl\"\n [class.element-double-left]=\"!collapsed()\"\n [class.element-double-right]=\"collapsed()\"\n [attr.aria-label]=\"\n (collapsed() ? navbarExpandButtonText() : navbarCollapseButtonText()) | translate\n \"\n [attr.aria-expanded]=\"!collapsed()\"\n (click)=\"toggleCollapse()\"\n >\n </button>\n </div>\n </div>\n @if (searchable()) {\n <div class=\"nav-search\">\n <si-search-bar\n class=\"mx-4\"\n colorVariant=\"base-0\"\n prohibitedCharacters=\"*?\"\n [placeholder]=\"searchPlaceholder() | translate\"\n [debounceTime]=\"searchInputDelay\"\n [showIcon]=\"true\"\n (searchChange)=\"doSearch($event)\"\n />\n <button\n type=\"button\"\n class=\"btn-search bg-base-0 p-2 mx-4 mobile navbar-vertical-no-collapse text-secondary\"\n [attr.aria-label]=\"searchPlaceholder() | translate\"\n (click)=\"expandForSearch()\"\n >\n <i class=\"icon element-search\"></i>\n </button>\n </div>\n }\n <div class=\"nav-scroll\">\n @for (item of items(); track $index) {\n @if (isLegacyStyle(item)) {\n <si-navbar-vertical-item-legacy\n [item]=\"item\"\n [navbarExpandButtonText]=\"navbarExpandButtonText() | translate\"\n [navbarCollapseButtonText]=\"navbarCollapseButtonText() | translate\"\n [expanded]=\"\n (item.id ? uiStateExpandedItems()[item.id] : undefined) ?? item.expanded ?? false\n \"\n />\n } @else {\n <ng-container *ngTemplateOutlet=\"navbarItems; context: { item }\" />\n }\n }\n </div>\n </nav>\n}\n<main\n class=\"si-layout-inner focus-none\"\n tabindex=\"-1\"\n [siSkipLinkTarget]=\"skipLinkMainContentLabel()\"\n>\n <ng-content />\n</main>\n\n<ng-template #navbarItems let-item=\"item\" siNavbarVerticalItemGuard>\n @switch (item.type) {\n @case ('group') {\n <button\n type=\"button\"\n [si-navbar-vertical-item]=\"item\"\n [stateId]=\"item.id\"\n [siNavbarVerticalGroupTriggerFor]=\"group\"\n [groupData]=\"{ group: item }\"\n [expanded]=\"\n (item.id ? uiStateExpandedItems()[item.id] : undefined) ?? item.expanded ?? false\n \"\n >\n {{ item.label | translate }}\n </button>\n }\n @case ('action') {\n <button type=\"button\" [si-navbar-vertical-item]=\"item\" [activeOverride]=\"item.active\">\n {{ item.label | translate }}\n </button>\n }\n @case ('router-link') {\n <a\n routerLinkActive\n [routerLinkActiveOptions]=\"item.activeMatchOptions ?? { exact: false }\"\n [si-navbar-vertical-item]=\"item\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.extras?.queryParams\"\n [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n [fragment]=\"item.extras?.fragment\"\n [state]=\"item.extras?.state\"\n [relativeTo]=\"item.extras?.relativeTo ?? this.activatedRoute\"\n [preserveFragment]=\"item.extras?.preserveFragment\"\n [skipLocationChange]=\"item.extras?.skipLocationChange\"\n [replaceUrl]=\"item.extras?.replaceUrl\"\n >\n {{ item.label | translate }}\n </a>\n }\n @case ('link') {\n <a [si-navbar-vertical-item]=\"item\" [href]=\"item.href\" [target]=\"item.target\">\n {{ item.label | translate }}\n </a>\n }\n @case ('divider') {\n <si-navbar-vertical-divider />\n }\n @case ('header') {\n <si-navbar-vertical-header>\n {{ item.label | translate }}\n </si-navbar-vertical-header>\n }\n }\n</ng-template>\n\n<ng-template #group let-group=\"group\" siNavbarVerticalItemGuard>\n <si-navbar-vertical-group routerLinkActive>\n @for (item of group.children; track $index) {\n <!-- a copy from above, but we have to nest the items to make routerLink active work -->\n @switch (item.type) {\n @case ('router-link') {\n <a\n routerLinkActive\n [routerLinkActiveOptions]=\"item.activeMatchOptions ?? { exact: false }\"\n [si-navbar-vertical-item]=\"item\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.extras?.queryParams\"\n [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n [fragment]=\"item.extras?.fragment\"\n [state]=\"item.extras?.state\"\n [relativeTo]=\"item.extras?.relativeTo ?? this.activatedRoute\"\n [preserveFragment]=\"item.extras?.preserveFragment\"\n [skipLocationChange]=\"item.extras?.skipLocationChange\"\n [replaceUrl]=\"item.extras?.replaceUrl\"\n >\n {{ item.label | translate }}\n </a>\n }\n @case ('action') {\n <button type=\"button\" [si-navbar-vertical-item]=\"item\" [activeOverride]=\"item.active\">\n {{ item.label | translate }}\n </button>\n }\n @case ('link') {\n <a [si-navbar-vertical-item]=\"item\" [href]=\"item.href\" [target]=\"item.target\">\n {{ item.label | translate }}\n </a>\n }\n }\n }\n </si-navbar-vertical-group>\n</ng-template>\n", styles: [":host{display:block;transition:padding-inline-start calc(.5s * var(--element-animations-enabled, 1));--si-layout-header-first-element-offset: 40px}:host.ready:not(.visible){padding-inline-start:0!important}nav{display:flex;flex-direction:column;position:fixed;z-index:1031;inset-block-start:calc(48px + var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px));inset-block-end:0;inset-inline-start:0;inline-size:0}:host(.nav-collapsed) nav{z-index:1030}.nav-scroll{overflow-x:hidden;min-block-size:0;flex:1 0 0;overflow-y:auto;margin-block-start:8px}:host(.nav-collapsed) .nav-scroll{display:none}.mobile-drawer{display:block;text-align:end;border:0;inline-size:48px;color:var(--element-text-primary);padding-block:4px;padding-inline:8px;margin-block-start:8px;border-start-end-radius:var(--element-radius-2);border-end-end-radius:var(--element-radius-2)}.nav-search{display:flex;align-items:center;block-size:40px;margin-block-start:8px;overflow-x:hidden}:host(.nav-collapsed) .nav-search{display:none}si-search-bar{inline-size:100%}.btn-search{display:none;border:0;border-radius:var(--element-radius-2)}:host.nav-collapsed .mobile-drawer{border:0;color:var(--element-text-primary);background:var(--element-base-1);text-align:end;box-shadow:0 0 4px var(--element-box-shadow-color-1),0 4px 4px var(--element-box-shadow-color-2)}:host.nav-collapsed si-search-bar{display:none}.modal-backdrop{z-index:1031;opacity:0}@media (min-width: 576px){:host:not(.nav-text-only),:host:not(.nav-collapsed){--si-layout-header-first-element-offset: 0}:host:not(.nav-text-only){padding-inline-start:48px}:host:not(.nav-text-only) .mobile-drawer{background:transparent;box-shadow:none}:host:not(.nav-text-only).nav-collapsed .nav-scroll{display:block}:host:not(.nav-text-only).nav-collapsed .nav-search{display:flex}.btn-search{display:none}:host.nav-collapsed .btn-search{display:block}:host:not(.nav-text-only) nav{inline-size:48px}}@media (min-width: 992px){:host:not(.nav-collapsed){padding-inline-start:240px}}\n"], dependencies: [{ kind: "component", type: SiNavbarVerticalItemLegacyComponent, selector: "si-navbar-vertical-item-legacy", inputs: ["item", "navbarExpandButtonText", "navbarCollapseButtonText", "expanded"], outputs: ["expandedChange"] }, { kind: "component", type: SiSearchBarComponent, selector: "si-search-bar", inputs: ["debounceTime", "prohibitedCharacters", "placeholder", "showIcon", "tabbable", "value", "readonly", "colorVariant", "disabled"], outputs: ["searchChange"] }, { kind: "directive", type: SiSkipLinkTargetDirective, selector: "[siSkipLinkTarget]", inputs: ["siSkipLinkTarget"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }, { kind: "component", type: SiNavbarVerticalItemComponent, selector: "a[si-navbar-vertical-item], button[si-navbar-vertical-item]", inputs: ["si-navbar-vertical-item", "activeOverride"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: SiNavbarVerticalItemGuardDirective, selector: "[siNavbarVerticalItemGuard]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiNavbarVerticalGroupComponent, selector: "si-navbar-vertical-group" }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: SiNavbarVerticalGroupTriggerDirective, selector: "button[siNavbarVerticalGroupTriggerFor]", inputs: ["siNavbarVerticalGroupTriggerFor", "groupData", "stateId", "expanded"], outputs: ["expandedChange"] }, { kind: "component", type: SiNavbarVerticalDividerComponent, selector: "si-navbar-vertical-divider" }, { kind: "component", type: SiNavbarVerticalHeaderComponent, selector: "si-navbar-vertical-header" }], animations: [
|
|
660
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiNavbarVerticalComponent, isStandalone: true, selector: "si-navbar-vertical", inputs: { collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, textOnly: { classPropertyName: "textOnly", publicName: "textOnly", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, navbarExpandButtonText: { classPropertyName: "navbarExpandButtonText", publicName: "navbarExpandButtonText", isSignal: true, isRequired: false, transformFunction: null }, navbarCollapseButtonText: { classPropertyName: "navbarCollapseButtonText", publicName: "navbarCollapseButtonText", isSignal: true, isRequired: false, transformFunction: null }, stateId: { classPropertyName: "stateId", publicName: "stateId", isSignal: true, isRequired: false, transformFunction: null }, skipLinkNavigationLabel: { classPropertyName: "skipLinkNavigationLabel", publicName: "skipLinkNavigationLabel", isSignal: true, isRequired: false, transformFunction: null }, skipLinkMainContentLabel: { classPropertyName: "skipLinkMainContentLabel", publicName: "skipLinkMainContentLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange", items: "itemsChange", searchEvent: "searchEvent" }, host: { properties: { "class.nav-collapsed": "collapsed()", "class.nav-text-only": "textOnly()", "class.visible": "visible()", "class.ready": "this.ready" }, classAttribute: "si-layout-inner" }, providers: [{ provide: SI_NAVBAR_VERTICAL, useExisting: SiNavbarVerticalComponent }], viewQueries: [{ propertyName: "searchBar", first: true, predicate: SiSearchBarComponent, descendants: true, isSignal: true }, { propertyName: "navbarItems", predicate: SiNavbarVerticalItemComponent, descendants: true, isSignal: true }, { propertyName: "navbarItemsLegacy", predicate: SiNavbarVerticalItemLegacyComponent, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "@if (visible()) {\n @if (smallScreen() && !collapsed()) {\n <div\n class=\"modal-backdrop\"\n [@backdrop]=\"smallScreen() && !collapsed() ? 'show' : 'hide'\"\n (click)=\"toggleCollapse()\"\n ></div>\n }\n <nav\n tabindex=\"-1\"\n class=\"bg-base-1 focus-sub-inside\"\n [siSkipLinkTarget]=\"skipLinkNavigationLabel()\"\n [@collapse]=\"collapsed() ? 'collapsed' : 'expanded'\"\n [class.text-only]=\"textOnly()\"\n >\n <div class=\"collapse-toggle ms-auto\">\n <div class=\"mobile-drawer focus-inside navbar-vertical-no-collapse\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-sm btn-ghost flip-rtl\"\n [class.element-double-left]=\"!collapsed()\"\n [class.element-double-right]=\"collapsed()\"\n [attr.aria-label]=\"\n (collapsed() ? navbarExpandButtonText() : navbarCollapseButtonText()) | translate\n \"\n [attr.aria-expanded]=\"!collapsed()\"\n (click)=\"toggleCollapse()\"\n >\n </button>\n </div>\n </div>\n @if (searchable()) {\n <div class=\"nav-search\">\n <si-search-bar\n class=\"mx-4\"\n colorVariant=\"base-0\"\n prohibitedCharacters=\"*?\"\n [placeholder]=\"searchPlaceholder() | translate\"\n [debounceTime]=\"searchInputDelay\"\n [showIcon]=\"true\"\n (searchChange)=\"doSearch($event)\"\n />\n <button\n type=\"button\"\n class=\"btn-search bg-base-0 p-2 mx-4 mobile navbar-vertical-no-collapse text-secondary\"\n [attr.aria-label]=\"searchPlaceholder() | translate\"\n (click)=\"expandForSearch()\"\n >\n <i class=\"icon element-search\"></i>\n </button>\n </div>\n }\n <div class=\"nav-scroll\">\n @for (item of items(); track $index) {\n @if (isLegacyStyle(item)) {\n <si-navbar-vertical-item-legacy\n [item]=\"item\"\n [navbarExpandButtonText]=\"navbarExpandButtonText() | translate\"\n [navbarCollapseButtonText]=\"navbarCollapseButtonText() | translate\"\n [expanded]=\"\n (item.id ? uiStateExpandedItems()[item.id] : undefined) ?? item.expanded ?? false\n \"\n />\n } @else {\n <ng-container *ngTemplateOutlet=\"navbarItems; context: { item }\" />\n }\n }\n </div>\n </nav>\n}\n<main\n class=\"si-layout-inner focus-none\"\n tabindex=\"-1\"\n [siSkipLinkTarget]=\"skipLinkMainContentLabel()\"\n>\n <ng-content />\n</main>\n\n<ng-template #navbarItems let-item=\"item\" siNavbarVerticalItemGuard>\n @switch (item.type) {\n @case ('group') {\n <button\n type=\"button\"\n [si-navbar-vertical-item]=\"item\"\n [stateId]=\"item.id\"\n [siNavbarVerticalGroupTriggerFor]=\"group\"\n [groupData]=\"{ group: item }\"\n [expanded]=\"\n (item.id ? uiStateExpandedItems()[item.id] : undefined) ?? item.expanded ?? false\n \"\n >\n {{ item.label | translate }}\n </button>\n }\n @case ('action') {\n <button type=\"button\" [si-navbar-vertical-item]=\"item\" [activeOverride]=\"item.active\">\n {{ item.label | translate }}\n </button>\n }\n @case ('router-link') {\n <a\n routerLinkActive\n [routerLinkActiveOptions]=\"item.activeMatchOptions ?? { exact: false }\"\n [si-navbar-vertical-item]=\"item\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.extras?.queryParams\"\n [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n [fragment]=\"item.extras?.fragment\"\n [state]=\"item.extras?.state\"\n [relativeTo]=\"item.extras?.relativeTo ?? this.activatedRoute\"\n [preserveFragment]=\"item.extras?.preserveFragment\"\n [skipLocationChange]=\"item.extras?.skipLocationChange\"\n [replaceUrl]=\"item.extras?.replaceUrl\"\n >\n {{ item.label | translate }}\n </a>\n }\n @case ('link') {\n <a [si-navbar-vertical-item]=\"item\" [href]=\"item.href\" [target]=\"item.target\">\n {{ item.label | translate }}\n </a>\n }\n @case ('divider') {\n <si-navbar-vertical-divider />\n }\n @case ('header') {\n <si-navbar-vertical-header>\n {{ item.label | translate }}\n </si-navbar-vertical-header>\n }\n }\n</ng-template>\n\n<ng-template #group let-group=\"group\" siNavbarVerticalItemGuard>\n <si-navbar-vertical-group routerLinkActive>\n @for (item of group.children; track $index) {\n <!-- a copy from above, but we have to nest the items to make routerLink active work -->\n @switch (item.type) {\n @case ('router-link') {\n <a\n routerLinkActive\n [routerLinkActiveOptions]=\"item.activeMatchOptions ?? { exact: false }\"\n [si-navbar-vertical-item]=\"item\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.extras?.queryParams\"\n [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n [fragment]=\"item.extras?.fragment\"\n [state]=\"item.extras?.state\"\n [relativeTo]=\"item.extras?.relativeTo ?? this.activatedRoute\"\n [preserveFragment]=\"item.extras?.preserveFragment\"\n [skipLocationChange]=\"item.extras?.skipLocationChange\"\n [replaceUrl]=\"item.extras?.replaceUrl\"\n >\n {{ item.label | translate }}\n </a>\n }\n @case ('action') {\n <button type=\"button\" [si-navbar-vertical-item]=\"item\" [activeOverride]=\"item.active\">\n {{ item.label | translate }}\n </button>\n }\n @case ('link') {\n <a [si-navbar-vertical-item]=\"item\" [href]=\"item.href\" [target]=\"item.target\">\n {{ item.label | translate }}\n </a>\n }\n }\n }\n </si-navbar-vertical-group>\n</ng-template>\n", styles: [":host{display:block;transition:padding-inline-start calc(.5s * var(--element-animations-enabled, 1));--si-layout-header-first-element-offset: 40px}:host.ready:not(.visible){padding-inline-start:0!important}nav{display:flex;flex-direction:column;position:fixed;z-index:1031;inset-block-start:calc(48px + var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px));inset-block-end:0;inset-inline-start:0;inline-size:0}:host(.nav-collapsed) nav{z-index:1030}.nav-scroll{overflow-x:hidden;min-block-size:0;flex:1 0 0;overflow-y:auto;margin-block-start:8px}:host(.nav-collapsed) .nav-scroll{display:none}.mobile-drawer{display:block;text-align:end;border:0;inline-size:48px;color:var(--element-text-primary);padding-block:4px;padding-inline:8px;margin-block-start:8px;border-start-end-radius:var(--element-radius-2);border-end-end-radius:var(--element-radius-2)}.nav-search{display:flex;align-items:center;block-size:40px;margin-block-start:8px;overflow-x:hidden}:host(.nav-collapsed) .nav-search{display:none}si-search-bar{inline-size:100%}.btn-search{display:none;border:0;border-radius:var(--element-radius-2)}:host.nav-collapsed .mobile-drawer{border:0;color:var(--element-text-primary);background:var(--element-base-1);text-align:end;box-shadow:0 0 4px var(--element-box-shadow-color-1),0 4px 4px var(--element-box-shadow-color-2)}:host.nav-collapsed si-search-bar{display:none}.modal-backdrop{z-index:1031;opacity:0}@media (min-width: 576px){:host:not(.nav-text-only),:host:not(.nav-collapsed){--si-layout-header-first-element-offset: 0}:host:not(.nav-text-only){padding-inline-start:48px}:host:not(.nav-text-only) .mobile-drawer{background:transparent;box-shadow:none}:host:not(.nav-text-only).nav-collapsed .nav-scroll{display:block}:host:not(.nav-text-only).nav-collapsed .nav-search{display:flex}.btn-search{display:none}:host.nav-collapsed .btn-search{display:block}:host:not(.nav-text-only) nav{inline-size:48px}}@media (min-width: 992px){:host:not(.nav-collapsed){padding-inline-start:240px}}\n"], dependencies: [{ kind: "component", type: SiNavbarVerticalItemLegacyComponent, selector: "si-navbar-vertical-item-legacy", inputs: ["item", "navbarExpandButtonText", "navbarCollapseButtonText", "expanded"], outputs: ["expandedChange"] }, { kind: "component", type: SiSearchBarComponent, selector: "si-search-bar", inputs: ["debounceTime", "prohibitedCharacters", "placeholder", "showIcon", "tabbable", "value", "readonly", "colorVariant", "disabled", "clearButtonAriaLabel"], outputs: ["searchChange"] }, { kind: "directive", type: SiSkipLinkTargetDirective, selector: "[siSkipLinkTarget]", inputs: ["siSkipLinkTarget"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }, { kind: "component", type: SiNavbarVerticalItemComponent, selector: "a[si-navbar-vertical-item], button[si-navbar-vertical-item]", inputs: ["si-navbar-vertical-item", "activeOverride"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: SiNavbarVerticalItemGuardDirective, selector: "[siNavbarVerticalItemGuard]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiNavbarVerticalGroupComponent, selector: "si-navbar-vertical-group" }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: SiNavbarVerticalGroupTriggerDirective, selector: "button[siNavbarVerticalGroupTriggerFor]", inputs: ["siNavbarVerticalGroupTriggerFor", "groupData", "stateId", "expanded"], outputs: ["expandedChange"] }, { kind: "component", type: SiNavbarVerticalDividerComponent, selector: "si-navbar-vertical-divider" }, { kind: "component", type: SiNavbarVerticalHeaderComponent, selector: "si-navbar-vertical-header" }], animations: [
|
|
661
661
|
trigger('collapse', [
|
|
662
662
|
state('expanded', style({ 'inline-size': '240px' })),
|
|
663
663
|
state('collapsed', style({ 'inline-size': '*' })),
|