@siemens/element-ng 49.12.0 → 49.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/fesm2022/siemens-element-ng-accordion.mjs +4 -3
  2. package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
  3. package/fesm2022/siemens-element-ng-application-header.mjs +35 -13
  4. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  5. package/fesm2022/siemens-element-ng-autocomplete.mjs +9 -13
  6. package/fesm2022/siemens-element-ng-autocomplete.mjs.map +1 -1
  7. package/fesm2022/siemens-element-ng-form.mjs +24 -46
  8. package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
  9. package/fesm2022/siemens-element-ng-header-dropdown.mjs +14 -7
  10. package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
  11. package/fesm2022/siemens-element-ng-ip-input.mjs +1 -1
  12. package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
  13. package/fesm2022/siemens-element-ng-phone-number.mjs +63 -42
  14. package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
  15. package/fesm2022/siemens-element-ng-popover.mjs +7 -9
  16. package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
  17. package/fesm2022/siemens-element-ng-summary-chip.mjs +2 -2
  18. package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -1
  19. package/fesm2022/siemens-element-ng-tabs.mjs +33 -6
  20. package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
  21. package/fesm2022/siemens-element-ng-tooltip.mjs +178 -75
  22. package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
  23. package/fesm2022/siemens-element-ng-tour.mjs +4 -1
  24. package/fesm2022/siemens-element-ng-tour.mjs.map +1 -1
  25. package/fesm2022/siemens-element-ng-tree-view.mjs +28 -7
  26. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  27. package/package.json +3 -3
  28. package/types/siemens-element-ng-application-header.d.ts +12 -4
  29. package/types/siemens-element-ng-autocomplete.d.ts +19 -19
  30. package/types/siemens-element-ng-form.d.ts +1 -3
  31. package/types/siemens-element-ng-header-dropdown.d.ts +5 -0
  32. package/types/siemens-element-ng-phone-number.d.ts +2 -2
  33. package/types/siemens-element-ng-popover.d.ts +2 -2
  34. package/types/siemens-element-ng-tabs.d.ts +4 -0
  35. package/types/siemens-element-ng-tooltip.d.ts +10 -26
  36. package/types/siemens-element-ng-tree-view.d.ts +14 -3
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-tour.mjs","sources":["../../../../projects/element-ng/tour/si-tour-token.model.ts","../../../../projects/element-ng/tour/si-tour-highlight.component.ts","../../../../projects/element-ng/tour/si-tour-highlight.component.html","../../../../projects/element-ng/tour/si-tour.component.ts","../../../../projects/element-ng/tour/si-tour.component.html","../../../../projects/element-ng/tour/si-tour.service.ts","../../../../projects/element-ng/tour/index.ts","../../../../projects/element-ng/tour/siemens-element-ng-tour.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { ElementRef, InjectionToken, WritableSignal } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { TourStep } from './si-tour.model';\n\nexport interface TourStepInternal {\n step: TourStep;\n stepNumber: number;\n totalSteps: number;\n anchor?: ElementRef<HTMLElement>;\n}\n\nexport type TourAction = 'next' | 'back' | 'cancel' | 'complete';\n\nexport interface PositionChange {\n change: ConnectedOverlayPositionChange;\n anchor: ElementRef;\n}\nexport interface TourToken {\n currentStep: Subject<TourStepInternal>;\n blocked: WritableSignal<boolean>;\n positionChange: Subject<PositionChange | undefined>;\n sizeChange: Subject<void>;\n control: Subject<TourAction>;\n}\n\nexport const SI_TOUR_TOKEN = new InjectionToken<TourToken>('SI_TOUR_TOKEN');\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, ElementRef, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { SI_TOUR_TOKEN } from './si-tour-token.model';\n\n@Component({\n selector: 'si-tour-highlight',\n templateUrl: './si-tour-highlight.component.html',\n styleUrl: './si-tour-highlight.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiTourHighlightComponent {\n private tourToken = inject(SI_TOUR_TOKEN);\n private anchor?: ElementRef;\n protected readonly dim = signal({ top: 0, left: 0, width: 0, height: 0 });\n\n constructor() {\n this.tourToken.currentStep.pipe(takeUntilDestroyed()).subscribe(step => {\n this.anchor = step.anchor;\n this.updateHighlight();\n });\n this.tourToken.sizeChange.pipe(takeUntilDestroyed()).subscribe(() => this.updateHighlight());\n }\n\n private updateHighlight(): void {\n if (!this.anchor) {\n this.dim.set({ top: 0, left: 0, width: 0, height: 0 });\n return;\n }\n const rect = this.anchor.nativeElement.getBoundingClientRect();\n this.dim.set({ top: rect.top, left: rect.left, width: rect.width, height: rect.height });\n }\n}\n","@let rect = dim();\n<div\n class=\"highlighter\"\n [style.top.px]=\"rect.top\"\n [style.left.px]=\"rect.left\"\n [style.inline-size.px]=\"rect.width\"\n [style.block-size.px]=\"rect.height\"\n></div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { A11yModule, CdkTrapFocus } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n DOCUMENT,\n ElementRef,\n HostListener,\n inject,\n OnDestroy,\n signal,\n viewChild\n} from '@angular/core';\nimport { elementCancel } from '@siemens/element-icons';\nimport {\n calculateOverlayArrowPosition,\n isRTL,\n OverlayArrowPosition\n} from '@siemens/element-ng/common';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\nimport { Subscription } from 'rxjs';\n\nimport { PositionChange, SI_TOUR_TOKEN, TourAction, TourStepInternal } from './si-tour-token.model';\n\n@Component({\n selector: 'si-tour',\n imports: [A11yModule, SiIconComponent, SiTranslatePipe],\n templateUrl: './si-tour.component.html',\n styleUrl: './si-tour.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-step-id]': 'step()?.step?.id'\n }\n})\nexport class SiTourComponent implements OnDestroy {\n protected readonly positionClass = signal('');\n protected readonly arrowPos = signal<OverlayArrowPosition | undefined>(undefined);\n protected readonly step = signal<TourStepInternal | undefined>(undefined);\n protected readonly show = signal(false);\n protected readonly icons = addIcons({ elementCancel });\n protected tourToken = inject(SI_TOUR_TOKEN);\n\n protected backText = t(() => $localize`:@@SI_TOUR.BACK:Back`);\n protected nextText = t(() => $localize`:@@SI_TOUR.NEXT:Next`);\n protected skipText = t(() => $localize`:@@SI_TOUR.SKIP:Skip tour`);\n protected doneText = t(() => $localize`:@@SI_TOUR.DONE:Done`);\n protected ariaLabelClose = t(() => $localize`:@@SI_TOUR.CLOSE:Close`);\n protected progressText = t(() => $localize`:@@SI_TOUR.PROGRESS: {{step}} of {{total}}`);\n\n private elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n private subscription?: Subscription;\n private prevFocus: Element | null = null;\n\n private readonly focusTrap = viewChild<CdkTrapFocus>('focusTrap');\n private document = inject(DOCUMENT);\n\n constructor() {\n this.subscription = this.tourToken.currentStep.subscribe(step => {\n this.step.set(step);\n this.show.set(false);\n // prevents flickering during overlay reposition and arrow direction change\n setTimeout(() => {\n this.show.set(true);\n this.ensureFocused();\n }, 50);\n });\n this.subscription.add(\n this.tourToken.positionChange.subscribe(update => this.updatePosition(update))\n );\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n\n protected action(action: TourAction): void {\n this.prevFocus = this.document.activeElement;\n this.tourToken.control.next(action);\n }\n\n protected ensureFocused(): void {\n // ensure focus is inside si-tour as other element might steal it, e.g. opening a menu\n const element = this.elementRef.nativeElement;\n if (!this.document.activeElement || !element.contains(this.document.activeElement)) {\n if (element.contains(this.prevFocus)) {\n (this.prevFocus as HTMLElement)?.focus?.();\n } else {\n this.focusTrap()?.focusTrap.focusInitialElement();\n }\n }\n }\n\n @HostListener('window:keydown', ['$event'])\n protected keyListener(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Escape':\n this.action('cancel');\n break;\n case 'ArrowLeft':\n this.action(isRTL() ? 'next' : 'back');\n break;\n case 'ArrowRight':\n this.action(isRTL() ? 'back' : 'next');\n break;\n }\n }\n\n private updatePosition(update: PositionChange | undefined): void {\n if (!update) {\n this.positionClass.set('');\n this.arrowPos.set(undefined);\n return;\n }\n\n const connPair = update.change.connectionPair;\n this.positionClass.set(`popover-${connPair.overlayX}-${connPair.overlayY}`);\n setTimeout(() =>\n this.arrowPos.set(\n calculateOverlayArrowPosition(update.change, this.elementRef, update.anchor)\n )\n );\n }\n}\n","<div class=\"backdrop\"></div>\n<div\n #focusTrap=\"cdkTrapFocus\"\n role=\"dialog\"\n aria-labelledby=\"__si-tour-step-title\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n [class]=\"['tour-content', 'popover', 'position-relative', positionClass()]\"\n [class.show]=\"show()\"\n>\n @if (arrowPos()) {\n <div\n class=\"popover-arrow\"\n [style.left.px]=\"arrowPos()?.left\"\n [style.right.px]=\"arrowPos()?.right\"\n ></div>\n }\n @if (step()) {\n @let tourStep = step()!;\n <div class=\"d-flex\">\n <div class=\"p-6 flex-fill\">\n <div class=\"pb-2 si-body text-secondary\">\n {{ progressText | translate: { step: tourStep.stepNumber, total: tourStep.totalSteps } }}\n </div>\n <div id=\"__si-tour-step-title\" class=\"si-h4 mb-0\">\n {{ tourStep.step.title | translate }}\n </div>\n </div>\n <button\n type=\"button\"\n class=\"btn btn-circle btn-tertiary-ghost mt-4 me-5\"\n [attr.aria-label]=\"ariaLabelClose | translate\"\n (click)=\"action('cancel')\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n </div>\n <div class=\"step-text si-body px-6 pb-8\">\n {{ tourStep.step.text | translate }}\n </div>\n <div class=\"d-flex justify-content-end align-items-center p-6 gap-6\">\n @if (tourStep.stepNumber !== 1) {\n <button\n type=\"button\"\n class=\"btn btn-secondary\"\n [disabled]=\"tourToken.blocked()\"\n (click)=\"action('back')\"\n >\n {{ backText | translate }}\n </button>\n } @else {\n <button type=\"button\" class=\"btn btn-tertiary\" (click)=\"action('cancel')\">\n {{ skipText | translate }}\n </button>\n }\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n cdkFocusInitial\n [disabled]=\"tourToken.blocked()\"\n (click)=\"action(tourStep.stepNumber !== tourStep.totalSteps ? 'next' : 'complete')\"\n >\n @if (tourStep.stepNumber !== tourStep.totalSteps) {\n {{ nextText | translate }}\n } @else {\n {{ doneText | translate }}\n }\n </button>\n </div>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayOutsideClickDispatcher,\n OverlayRef\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT, ElementRef, inject, Injectable, Injector, signal } from '@angular/core';\nimport { isRTL } from '@siemens/element-ng/common';\nimport { ResizeObserverService } from '@siemens/element-ng/resize-observer';\nimport { map, merge, Subject, Subscription, tap, throttleTime } from 'rxjs';\n\nimport { SiTourHighlightComponent } from './si-tour-highlight.component';\nimport { SI_TOUR_TOKEN, TourAction, TourToken } from './si-tour-token.model';\nimport { SiTourComponent } from './si-tour.component';\nimport { TourOptions, TourStep } from './si-tour.model';\n\n@Injectable({ providedIn: 'root' })\nexport class SiTourService {\n private injector = inject(Injector);\n private resizeObserver = inject(ResizeObserverService);\n private overlay = inject(Overlay);\n private outsideClickDispatcher = inject(OverlayOutsideClickDispatcher);\n private overlayRefHighlight?: OverlayRef;\n private overlayRef?: OverlayRef;\n private portal?: ComponentPortal<SiTourComponent>;\n\n private options: TourOptions = {};\n private steps: TourStep[] = [];\n private currentStepIndex = -1;\n private currentStep?: TourStep;\n private active = false;\n private tourToken: TourToken = {\n currentStep: new Subject(),\n blocked: signal(false),\n positionChange: new Subject(),\n sizeChange: new Subject(),\n control: new Subject()\n };\n private positionChangeSub?: Subscription;\n private resizeSub?: Subscription;\n private document = inject(DOCUMENT);\n\n constructor() {\n this.tourToken.control.subscribe(action => this.controlAction(action));\n }\n\n /**\n * Event triggered after the tour is completed.\n */\n readonly onTourComplete = new Subject<void>();\n\n /**\n * Event triggered after the tour is cancelled, either through skip button or closing the tour dialog.\n */\n readonly onTourCancel = new Subject<void>();\n\n /**\n * Sets options for the whole tour.\n */\n setOptions(options: TourOptions): void {\n Object.assign(this.options, options);\n }\n\n /**\n * Add steps to the tour\n */\n addSteps(steps: TourStep[]): void {\n this.steps.push(...steps);\n }\n\n /**\n * Clear all steps\n */\n clearSteps(): void {\n this.steps = [];\n this.currentStepIndex = -1;\n }\n\n /**\n * Start the tour\n */\n start(): void {\n this.makeStep(0);\n }\n\n /**\n * Finish the tour\n */\n complete(): void {\n this.controlAction('complete');\n }\n\n private async controlAction(action: TourAction): Promise<void> {\n switch (action) {\n case 'next':\n this.makeStep(this.currentStepIndex + 1);\n break;\n case 'back':\n this.makeStep(this.currentStepIndex - 1);\n break;\n case 'cancel':\n this.hide();\n this.onTourCancel.next();\n break;\n case 'complete':\n this.hide();\n this.onTourComplete.next();\n break;\n }\n }\n\n private async makeStep(index: number): Promise<void> {\n if (index < 0 || index >= this.steps.length) {\n return;\n }\n\n this.active = true;\n\n await this.handleBeforeNextPromise();\n\n this.currentStepIndex = index;\n const step = this.steps[this.currentStepIndex];\n this.currentStep = Object.assign({}, this.options?.defaultStepOptions ?? {}, step);\n\n if (this.currentStep.beforeShowPromise) {\n this.tourToken.blocked.set(true);\n await this.currentStep.beforeShowPromise();\n }\n\n if (!this.active) {\n // tour could have been cancelled before beforeShowPromise completes\n return;\n }\n\n const anchorElement = this.getElement(step.attachTo?.element);\n this.scrollIntoView(this.currentStep, anchorElement);\n\n const anchorElementRef = this.isElementVisible(anchorElement)\n ? new ElementRef(anchorElement!)\n : undefined;\n\n if (anchorElementRef) {\n this.attachOverlay(anchorElementRef);\n } else {\n this.centerOverlay();\n }\n this.handleResizeSubscription(anchorElementRef);\n\n this.tourToken.currentStep.next({\n step,\n stepNumber: this.currentStepIndex + 1,\n totalSteps: this.steps.length,\n anchor: anchorElementRef\n });\n this.tourToken.blocked.set(false);\n }\n\n private scrollIntoView(step: TourStep, element?: HTMLElement): void {\n if (!element || !(step.scrollTo || step.scrollToHandler)) {\n return;\n }\n if (step.scrollToHandler) {\n step.scrollToHandler(element);\n } else {\n element?.scrollIntoView(step.scrollTo);\n }\n }\n\n private async handleBeforeNextPromise(): Promise<void> {\n if (!this.active) {\n return;\n }\n if (this.currentStep?.beforeNextPromise) {\n this.tourToken.blocked.set(true);\n await this.currentStep.beforeNextPromise();\n this.tourToken.blocked.set(false);\n }\n }\n\n private centerOverlay(): void {\n this.positionChangeSub?.unsubscribe();\n this.createOrUpdateOverlays();\n\n const positionStrategy = this.overlayRef!.getConfig().positionStrategy;\n if (!positionStrategy || positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n this.overlayRef!.updatePositionStrategy(\n this.overlay.position().global().centerHorizontally().centerVertically()\n );\n }\n this.tourToken.positionChange.next(undefined);\n }\n\n private attachOverlay(anchor: ElementRef<HTMLElement>): void {\n this.createOrUpdateOverlays();\n\n const positionStrategy = this.overlayRef!.getConfig().positionStrategy;\n if (positionStrategy && positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n positionStrategy.setOrigin(anchor);\n } else {\n this.createFlexiblePositionStrategy(anchor);\n }\n }\n\n private createFlexiblePositionStrategy(anchor: ElementRef<HTMLElement>): void {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(anchor)\n .withGrowAfterOpen(true)\n .withPositions([\n // On top\n { originX: 'center', overlayX: 'center', originY: 'top', overlayY: 'bottom' },\n { originX: 'start', overlayX: 'start', originY: 'top', overlayY: 'bottom' },\n { originX: 'end', overlayX: 'end', originY: 'top', overlayY: 'bottom' },\n // On bottom\n { originX: 'center', overlayX: 'center', originY: 'bottom', overlayY: 'top' },\n { originX: 'start', overlayX: 'start', originY: 'bottom', overlayY: 'top' },\n { originX: 'end', overlayX: 'end', originY: 'bottom', overlayY: 'top' },\n // Left and right\n { originX: 'start', overlayX: 'end', originY: 'center', overlayY: 'center' },\n { originX: 'end', overlayX: 'start', originY: 'center', overlayY: 'center' }\n ]);\n this.overlayRef!.updatePositionStrategy(positionStrategy);\n this.positionChangeSub = positionStrategy.positionChanges\n .pipe(map(change => ({ change, anchor })))\n // We only want to forward the next channel, as the positionChanges completes when setting a new origin.\n .subscribe(value => this.tourToken.positionChange.next(value));\n }\n\n private createOrUpdateOverlays(): void {\n if (this.overlayRef) {\n // This moves the dispatcher to the top, allowing it to catch other open overlays.\n // Much lighter than to detach and re-attach the portal, not re-creating the si-tour\n // component for each step\n this.outsideClickDispatcher.remove(this.overlayRef);\n this.outsideClickDispatcher.add(this.overlayRef);\n return;\n }\n\n const componentInjector = Injector.create({\n providers: [{ provide: SI_TOUR_TOKEN, useValue: this.tourToken }],\n parent: this.injector\n });\n\n // first the highlighter,\n const hlPortal = new ComponentPortal(SiTourHighlightComponent, undefined, componentInjector);\n this.overlayRefHighlight = this.overlay.create({\n positionStrategy: this.overlay.position().global()\n });\n this.overlayRefHighlight.attach(hlPortal);\n\n // then the dialog\n this.portal = new ComponentPortal(SiTourComponent, undefined, componentInjector);\n this.overlayRef = this.overlay.create({\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n direction: isRTL() ? 'rtl' : 'ltr'\n });\n this.overlayRef.attach(this.portal);\n // needs a subscriber, otherwise events will be ignored and the .backdrop CSS hack doesn't help\n this.overlayRef.outsidePointerEvents().subscribe();\n }\n\n private handleResizeSubscription(anchorElement: ElementRef<HTMLElement> | undefined): void {\n this.resizeSub?.unsubscribe();\n this.resizeSub = undefined;\n if (anchorElement) {\n this.resizeSub = merge(\n // this catches edge cases e.g. with side-panel\n this.resizeObserver.observe(this.document.body, 20, false),\n this.resizeObserver.observe(anchorElement.nativeElement, 20, false)\n )\n .pipe(\n throttleTime(20, undefined, { trailing: true }),\n map((): undefined => undefined),\n tap(() => {\n if (!this.isElementVisible(anchorElement?.nativeElement)) {\n // repositions to center if anchor disappears\n this.centerOverlay();\n } else {\n this.overlayRef?.updatePosition();\n }\n })\n )\n .subscribe(this.tourToken.sizeChange);\n }\n }\n\n private isElementVisible(element: HTMLElement | undefined): boolean {\n const rect = element?.getBoundingClientRect();\n return !!rect?.width && !!rect.height;\n }\n\n private getElement(\n selectorOrElement?: string | HTMLElement | (() => string | HTMLElement)\n ): HTMLElement | undefined {\n if (typeof selectorOrElement === 'function') {\n selectorOrElement = selectorOrElement();\n }\n if (!selectorOrElement) {\n return undefined;\n }\n if (typeof selectorOrElement === 'string') {\n const element = this.document.querySelector<HTMLElement>(selectorOrElement);\n return element ?? undefined;\n }\n return selectorOrElement;\n }\n\n private async hide(): Promise<void> {\n await this.handleBeforeNextPromise();\n this.currentStepIndex = -1;\n this.currentStep = undefined;\n this.active = false;\n this.resizeSub?.unsubscribe();\n this.positionChangeSub?.unsubscribe();\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n this.overlayRefHighlight?.dispose();\n this.overlayRefHighlight = undefined;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-tour.service';\nexport * from './si-tour.model';\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-tour.mjs","sources":["../../../../projects/element-ng/tour/si-tour-token.model.ts","../../../../projects/element-ng/tour/si-tour-highlight.component.ts","../../../../projects/element-ng/tour/si-tour-highlight.component.html","../../../../projects/element-ng/tour/si-tour.component.ts","../../../../projects/element-ng/tour/si-tour.component.html","../../../../projects/element-ng/tour/si-tour.service.ts","../../../../projects/element-ng/tour/index.ts","../../../../projects/element-ng/tour/siemens-element-ng-tour.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { ElementRef, InjectionToken, WritableSignal } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { TourStep } from './si-tour.model';\n\nexport interface TourStepInternal {\n step: TourStep;\n stepNumber: number;\n totalSteps: number;\n anchor?: ElementRef<HTMLElement>;\n}\n\nexport type TourAction = 'next' | 'back' | 'cancel' | 'complete';\n\nexport interface PositionChange {\n change: ConnectedOverlayPositionChange;\n anchor: ElementRef;\n}\nexport interface TourToken {\n currentStep: Subject<TourStepInternal>;\n blocked: WritableSignal<boolean>;\n positionChange: Subject<PositionChange | undefined>;\n sizeChange: Subject<void>;\n control: Subject<TourAction>;\n}\n\nexport const SI_TOUR_TOKEN = new InjectionToken<TourToken>('SI_TOUR_TOKEN');\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, ElementRef, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { SI_TOUR_TOKEN } from './si-tour-token.model';\n\n@Component({\n selector: 'si-tour-highlight',\n templateUrl: './si-tour-highlight.component.html',\n styleUrl: './si-tour-highlight.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiTourHighlightComponent {\n private tourToken = inject(SI_TOUR_TOKEN);\n private anchor?: ElementRef;\n protected readonly dim = signal({ top: 0, left: 0, width: 0, height: 0 });\n\n constructor() {\n this.tourToken.currentStep.pipe(takeUntilDestroyed()).subscribe(step => {\n this.anchor = step.anchor;\n this.updateHighlight();\n });\n this.tourToken.sizeChange.pipe(takeUntilDestroyed()).subscribe(() => this.updateHighlight());\n }\n\n private updateHighlight(): void {\n if (!this.anchor) {\n this.dim.set({ top: 0, left: 0, width: 0, height: 0 });\n return;\n }\n const rect = this.anchor.nativeElement.getBoundingClientRect();\n this.dim.set({ top: rect.top, left: rect.left, width: rect.width, height: rect.height });\n }\n}\n","@let rect = dim();\n<div\n class=\"highlighter\"\n [style.top.px]=\"rect.top\"\n [style.left.px]=\"rect.left\"\n [style.inline-size.px]=\"rect.width\"\n [style.block-size.px]=\"rect.height\"\n></div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { A11yModule, CdkTrapFocus } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n DOCUMENT,\n ElementRef,\n HostListener,\n inject,\n OnDestroy,\n signal,\n viewChild\n} from '@angular/core';\nimport { elementCancel } from '@siemens/element-icons';\nimport {\n calculateOverlayArrowPosition,\n isRTL,\n OverlayArrowPosition\n} from '@siemens/element-ng/common';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\nimport { Subscription } from 'rxjs';\n\nimport { PositionChange, SI_TOUR_TOKEN, TourAction, TourStepInternal } from './si-tour-token.model';\n\n@Component({\n selector: 'si-tour',\n imports: [A11yModule, SiIconComponent, SiTranslatePipe],\n templateUrl: './si-tour.component.html',\n styleUrl: './si-tour.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-step-id]': 'step()?.step?.id'\n }\n})\nexport class SiTourComponent implements OnDestroy {\n protected readonly positionClass = signal('');\n protected readonly arrowPos = signal<OverlayArrowPosition | undefined>(undefined);\n protected readonly step = signal<TourStepInternal | undefined>(undefined);\n protected readonly show = signal(false);\n protected readonly icons = addIcons({ elementCancel });\n protected tourToken = inject(SI_TOUR_TOKEN);\n\n protected backText = t(() => $localize`:@@SI_TOUR.BACK:Back`);\n protected nextText = t(() => $localize`:@@SI_TOUR.NEXT:Next`);\n protected skipText = t(() => $localize`:@@SI_TOUR.SKIP:Skip tour`);\n protected doneText = t(() => $localize`:@@SI_TOUR.DONE:Done`);\n protected ariaLabelClose = t(() => $localize`:@@SI_TOUR.CLOSE:Close`);\n protected progressText = t(() => $localize`:@@SI_TOUR.PROGRESS: {{step}} of {{total}}`);\n\n private elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n private subscription?: Subscription;\n private prevFocus: Element | null = null;\n private lastPositionChange: PositionChange | undefined;\n\n private readonly focusTrap = viewChild<CdkTrapFocus>('focusTrap');\n private document = inject(DOCUMENT);\n\n constructor() {\n this.subscription = this.tourToken.currentStep.subscribe(step => {\n this.step.set(step);\n this.show.set(false);\n // prevents flickering during overlay reposition and arrow direction change\n setTimeout(() => {\n this.show.set(true);\n this.ensureFocused();\n }, 50);\n });\n this.subscription.add(\n this.tourToken.positionChange.subscribe(update => this.updatePosition(update))\n );\n this.subscription.add(\n this.tourToken.sizeChange.subscribe(() => this.updatePosition(this.lastPositionChange))\n );\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n\n protected action(action: TourAction): void {\n this.prevFocus = this.document.activeElement;\n this.tourToken.control.next(action);\n }\n\n protected ensureFocused(): void {\n // ensure focus is inside si-tour as other element might steal it, e.g. opening a menu\n const element = this.elementRef.nativeElement;\n if (!this.document.activeElement || !element.contains(this.document.activeElement)) {\n if (element.contains(this.prevFocus)) {\n (this.prevFocus as HTMLElement)?.focus?.();\n } else {\n this.focusTrap()?.focusTrap.focusInitialElement();\n }\n }\n }\n\n @HostListener('window:keydown', ['$event'])\n protected keyListener(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Escape':\n this.action('cancel');\n break;\n case 'ArrowLeft':\n this.action(isRTL() ? 'next' : 'back');\n break;\n case 'ArrowRight':\n this.action(isRTL() ? 'back' : 'next');\n break;\n }\n }\n\n private updatePosition(update: PositionChange | undefined): void {\n this.lastPositionChange = update;\n if (!update) {\n this.positionClass.set('');\n this.arrowPos.set(undefined);\n return;\n }\n\n const connPair = update.change.connectionPair;\n this.positionClass.set(`popover-${connPair.overlayX}-${connPair.overlayY}`);\n setTimeout(() =>\n this.arrowPos.set(\n calculateOverlayArrowPosition(update.change, this.elementRef, update.anchor)\n )\n );\n }\n}\n","<div class=\"backdrop\"></div>\n<div\n #focusTrap=\"cdkTrapFocus\"\n role=\"dialog\"\n aria-labelledby=\"__si-tour-step-title\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n [class]=\"['tour-content', 'popover', 'position-relative', positionClass()]\"\n [class.show]=\"show()\"\n>\n @if (arrowPos()) {\n <div\n class=\"popover-arrow\"\n [style.left.px]=\"arrowPos()?.left\"\n [style.right.px]=\"arrowPos()?.right\"\n ></div>\n }\n @if (step()) {\n @let tourStep = step()!;\n <div class=\"d-flex\">\n <div class=\"p-6 flex-fill\">\n <div class=\"pb-2 si-body text-secondary\">\n {{ progressText | translate: { step: tourStep.stepNumber, total: tourStep.totalSteps } }}\n </div>\n <div id=\"__si-tour-step-title\" class=\"si-h4 mb-0\">\n {{ tourStep.step.title | translate }}\n </div>\n </div>\n <button\n type=\"button\"\n class=\"btn btn-circle btn-tertiary-ghost mt-4 me-5\"\n [attr.aria-label]=\"ariaLabelClose | translate\"\n (click)=\"action('cancel')\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n </div>\n <div class=\"step-text si-body px-6 pb-8\">\n {{ tourStep.step.text | translate }}\n </div>\n <div class=\"d-flex justify-content-end align-items-center p-6 gap-6\">\n @if (tourStep.stepNumber !== 1) {\n <button\n type=\"button\"\n class=\"btn btn-secondary\"\n [disabled]=\"tourToken.blocked()\"\n (click)=\"action('back')\"\n >\n {{ backText | translate }}\n </button>\n } @else {\n <button type=\"button\" class=\"btn btn-tertiary\" (click)=\"action('cancel')\">\n {{ skipText | translate }}\n </button>\n }\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n cdkFocusInitial\n [disabled]=\"tourToken.blocked()\"\n (click)=\"action(tourStep.stepNumber !== tourStep.totalSteps ? 'next' : 'complete')\"\n >\n @if (tourStep.stepNumber !== tourStep.totalSteps) {\n {{ nextText | translate }}\n } @else {\n {{ doneText | translate }}\n }\n </button>\n </div>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayOutsideClickDispatcher,\n OverlayRef\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT, ElementRef, inject, Injectable, Injector, signal } from '@angular/core';\nimport { isRTL } from '@siemens/element-ng/common';\nimport { ResizeObserverService } from '@siemens/element-ng/resize-observer';\nimport { map, merge, Subject, Subscription, tap, throttleTime } from 'rxjs';\n\nimport { SiTourHighlightComponent } from './si-tour-highlight.component';\nimport { SI_TOUR_TOKEN, TourAction, TourToken } from './si-tour-token.model';\nimport { SiTourComponent } from './si-tour.component';\nimport { TourOptions, TourStep } from './si-tour.model';\n\n@Injectable({ providedIn: 'root' })\nexport class SiTourService {\n private injector = inject(Injector);\n private resizeObserver = inject(ResizeObserverService);\n private overlay = inject(Overlay);\n private outsideClickDispatcher = inject(OverlayOutsideClickDispatcher);\n private overlayRefHighlight?: OverlayRef;\n private overlayRef?: OverlayRef;\n private portal?: ComponentPortal<SiTourComponent>;\n\n private options: TourOptions = {};\n private steps: TourStep[] = [];\n private currentStepIndex = -1;\n private currentStep?: TourStep;\n private active = false;\n private tourToken: TourToken = {\n currentStep: new Subject(),\n blocked: signal(false),\n positionChange: new Subject(),\n sizeChange: new Subject(),\n control: new Subject()\n };\n private positionChangeSub?: Subscription;\n private resizeSub?: Subscription;\n private document = inject(DOCUMENT);\n\n constructor() {\n this.tourToken.control.subscribe(action => this.controlAction(action));\n }\n\n /**\n * Event triggered after the tour is completed.\n */\n readonly onTourComplete = new Subject<void>();\n\n /**\n * Event triggered after the tour is cancelled, either through skip button or closing the tour dialog.\n */\n readonly onTourCancel = new Subject<void>();\n\n /**\n * Sets options for the whole tour.\n */\n setOptions(options: TourOptions): void {\n Object.assign(this.options, options);\n }\n\n /**\n * Add steps to the tour\n */\n addSteps(steps: TourStep[]): void {\n this.steps.push(...steps);\n }\n\n /**\n * Clear all steps\n */\n clearSteps(): void {\n this.steps = [];\n this.currentStepIndex = -1;\n }\n\n /**\n * Start the tour\n */\n start(): void {\n this.makeStep(0);\n }\n\n /**\n * Finish the tour\n */\n complete(): void {\n this.controlAction('complete');\n }\n\n private async controlAction(action: TourAction): Promise<void> {\n switch (action) {\n case 'next':\n this.makeStep(this.currentStepIndex + 1);\n break;\n case 'back':\n this.makeStep(this.currentStepIndex - 1);\n break;\n case 'cancel':\n this.hide();\n this.onTourCancel.next();\n break;\n case 'complete':\n this.hide();\n this.onTourComplete.next();\n break;\n }\n }\n\n private async makeStep(index: number): Promise<void> {\n if (index < 0 || index >= this.steps.length) {\n return;\n }\n\n this.active = true;\n\n await this.handleBeforeNextPromise();\n\n this.currentStepIndex = index;\n const step = this.steps[this.currentStepIndex];\n this.currentStep = Object.assign({}, this.options?.defaultStepOptions ?? {}, step);\n\n if (this.currentStep.beforeShowPromise) {\n this.tourToken.blocked.set(true);\n await this.currentStep.beforeShowPromise();\n }\n\n if (!this.active) {\n // tour could have been cancelled before beforeShowPromise completes\n return;\n }\n\n const anchorElement = this.getElement(step.attachTo?.element);\n this.scrollIntoView(this.currentStep, anchorElement);\n\n const anchorElementRef = this.isElementVisible(anchorElement)\n ? new ElementRef(anchorElement!)\n : undefined;\n\n if (anchorElementRef) {\n this.attachOverlay(anchorElementRef);\n } else {\n this.centerOverlay();\n }\n this.handleResizeSubscription(anchorElementRef);\n\n this.tourToken.currentStep.next({\n step,\n stepNumber: this.currentStepIndex + 1,\n totalSteps: this.steps.length,\n anchor: anchorElementRef\n });\n this.tourToken.blocked.set(false);\n }\n\n private scrollIntoView(step: TourStep, element?: HTMLElement): void {\n if (!element || !(step.scrollTo || step.scrollToHandler)) {\n return;\n }\n if (step.scrollToHandler) {\n step.scrollToHandler(element);\n } else {\n element?.scrollIntoView(step.scrollTo);\n }\n }\n\n private async handleBeforeNextPromise(): Promise<void> {\n if (!this.active) {\n return;\n }\n if (this.currentStep?.beforeNextPromise) {\n this.tourToken.blocked.set(true);\n await this.currentStep.beforeNextPromise();\n this.tourToken.blocked.set(false);\n }\n }\n\n private centerOverlay(): void {\n this.positionChangeSub?.unsubscribe();\n this.createOrUpdateOverlays();\n\n const positionStrategy = this.overlayRef!.getConfig().positionStrategy;\n if (!positionStrategy || positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n this.overlayRef!.updatePositionStrategy(\n this.overlay.position().global().centerHorizontally().centerVertically()\n );\n }\n this.tourToken.positionChange.next(undefined);\n }\n\n private attachOverlay(anchor: ElementRef<HTMLElement>): void {\n this.createOrUpdateOverlays();\n\n const positionStrategy = this.overlayRef!.getConfig().positionStrategy;\n if (positionStrategy && positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n positionStrategy.setOrigin(anchor);\n } else {\n this.createFlexiblePositionStrategy(anchor);\n }\n }\n\n private createFlexiblePositionStrategy(anchor: ElementRef<HTMLElement>): void {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(anchor)\n .withGrowAfterOpen(true)\n .withPositions([\n // On top\n { originX: 'center', overlayX: 'center', originY: 'top', overlayY: 'bottom' },\n { originX: 'start', overlayX: 'start', originY: 'top', overlayY: 'bottom' },\n { originX: 'end', overlayX: 'end', originY: 'top', overlayY: 'bottom' },\n // On bottom\n { originX: 'center', overlayX: 'center', originY: 'bottom', overlayY: 'top' },\n { originX: 'start', overlayX: 'start', originY: 'bottom', overlayY: 'top' },\n { originX: 'end', overlayX: 'end', originY: 'bottom', overlayY: 'top' },\n // Left and right\n { originX: 'start', overlayX: 'end', originY: 'center', overlayY: 'center' },\n { originX: 'end', overlayX: 'start', originY: 'center', overlayY: 'center' }\n ]);\n this.positionChangeSub = positionStrategy.positionChanges\n .pipe(map(change => ({ change, anchor })))\n // We only want to forward the next channel, as the positionChanges completes when setting a new origin.\n .subscribe(value => this.tourToken.positionChange.next(value));\n this.overlayRef!.updatePositionStrategy(positionStrategy);\n }\n\n private createOrUpdateOverlays(): void {\n if (this.overlayRef) {\n // This moves the dispatcher to the top, allowing it to catch other open overlays.\n // Much lighter than to detach and re-attach the portal, not re-creating the si-tour\n // component for each step\n this.outsideClickDispatcher.remove(this.overlayRef);\n this.outsideClickDispatcher.add(this.overlayRef);\n return;\n }\n\n const componentInjector = Injector.create({\n providers: [{ provide: SI_TOUR_TOKEN, useValue: this.tourToken }],\n parent: this.injector\n });\n\n // first the highlighter,\n const hlPortal = new ComponentPortal(SiTourHighlightComponent, undefined, componentInjector);\n this.overlayRefHighlight = this.overlay.create({\n positionStrategy: this.overlay.position().global()\n });\n this.overlayRefHighlight.attach(hlPortal);\n\n // then the dialog\n this.portal = new ComponentPortal(SiTourComponent, undefined, componentInjector);\n this.overlayRef = this.overlay.create({\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n direction: isRTL() ? 'rtl' : 'ltr'\n });\n this.overlayRef.attach(this.portal);\n // needs a subscriber, otherwise events will be ignored and the .backdrop CSS hack doesn't help\n this.overlayRef.outsidePointerEvents().subscribe();\n }\n\n private handleResizeSubscription(anchorElement: ElementRef<HTMLElement> | undefined): void {\n this.resizeSub?.unsubscribe();\n this.resizeSub = undefined;\n if (anchorElement) {\n this.resizeSub = merge(\n // this catches edge cases e.g. with side-panel\n this.resizeObserver.observe(this.document.body, 20, false),\n this.resizeObserver.observe(anchorElement.nativeElement, 20, false)\n )\n .pipe(\n throttleTime(20, undefined, { trailing: true }),\n map((): undefined => undefined),\n tap(() => {\n if (!this.isElementVisible(anchorElement?.nativeElement)) {\n // repositions to center if anchor disappears\n this.centerOverlay();\n } else {\n this.overlayRef?.updatePosition();\n }\n })\n )\n .subscribe(this.tourToken.sizeChange);\n }\n }\n\n private isElementVisible(element: HTMLElement | undefined): boolean {\n const rect = element?.getBoundingClientRect();\n return !!rect?.width && !!rect.height;\n }\n\n private getElement(\n selectorOrElement?: string | HTMLElement | (() => string | HTMLElement)\n ): HTMLElement | undefined {\n if (typeof selectorOrElement === 'function') {\n selectorOrElement = selectorOrElement();\n }\n if (!selectorOrElement) {\n return undefined;\n }\n if (typeof selectorOrElement === 'string') {\n const element = this.document.querySelector<HTMLElement>(selectorOrElement);\n return element ?? undefined;\n }\n return selectorOrElement;\n }\n\n private async hide(): Promise<void> {\n await this.handleBeforeNextPromise();\n this.currentStepIndex = -1;\n this.currentStep = undefined;\n this.active = false;\n this.resizeSub?.unsubscribe();\n this.positionChangeSub?.unsubscribe();\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n this.overlayRefHighlight?.dispose();\n this.overlayRefHighlight = undefined;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-tour.service';\nexport * from './si-tour.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -468,7 +468,10 @@ class SiTreeViewItemComponent {
468
468
  treeItemContext = inject(TREE_ITEM_CONTEXT);
469
469
  treeViewComponent = this.treeItemContext.parent;
470
470
  /** @internal */
471
- treeItem = this.treeItemContext.record.item;
471
+ // The differ may replace this item while retaining the component instance.
472
+ get treeItem() {
473
+ return this.treeItemContext.record.item;
474
+ }
472
475
  scrollIntoView = this.treeViewComponent.scrollChildIntoView;
473
476
  childrenLoaded = this.treeViewComponent.childrenLoaded;
474
477
  templates = this.treeViewComponent.templates;
@@ -1058,6 +1061,7 @@ class SiTreeViewItemDirective {
1058
1061
  differs = inject(IterableDiffers);
1059
1062
  cdRef = inject(ChangeDetectorRef);
1060
1063
  differ = null;
1064
+ trackBy;
1061
1065
  subscription;
1062
1066
  itemsVirtualizedDirty = true;
1063
1067
  ngAfterViewInit() {
@@ -1065,18 +1069,25 @@ class SiTreeViewItemDirective {
1065
1069
  this.itemsVirtualizedDirty = false;
1066
1070
  const value = this.parent.itemsVirtualized;
1067
1071
  if (!this.differ && value) {
1068
- this.differ = this.differs.find(value).create((_index, item) => item);
1072
+ this.differ = this.differs.find(value).create(this.parent.trackBy());
1069
1073
  }
1070
1074
  }
1071
- this.evaluateDiffer();
1075
+ queueMicrotask(() => this.evaluateDiffer());
1072
1076
  this.subscription = this.parent.evaluateForTreeItemsDiffer.subscribe(_ => this.evaluateDiffer());
1073
1077
  }
1074
1078
  ngOnDestroy() {
1075
1079
  this.subscription.unsubscribe();
1076
1080
  }
1077
1081
  evaluateDiffer() {
1082
+ const items = this.parent.itemsVirtualized;
1083
+ const trackBy = this.parent.trackBy();
1084
+ if (this.trackBy !== trackBy) {
1085
+ this.trackBy = trackBy;
1086
+ this.differ = this.differs.find(items).create(trackBy);
1087
+ this.viewContainerRef.clear();
1088
+ }
1078
1089
  if (this.differ) {
1079
- const changes = this.differ.diff(this.parent.itemsVirtualized);
1090
+ const changes = this.differ.diff(items);
1080
1091
  if (changes)
1081
1092
  this.applyChanges(changes);
1082
1093
  }
@@ -1124,7 +1135,7 @@ class SiTreeViewItemDirective {
1124
1135
  context.index = i;
1125
1136
  }
1126
1137
  changes.forEachIdentityChange((record) => {
1127
- if (record.currentIndex) {
1138
+ if (record.currentIndex !== null) {
1128
1139
  const viewRef = viewContainer.get(record.currentIndex);
1129
1140
  viewRef.context = {
1130
1141
  treeItem: record.item,
@@ -1777,6 +1788,16 @@ class SiTreeViewComponent {
1777
1788
  * @defaultref {@link _items}
1778
1789
  */
1779
1790
  items = input([], ...(ngDevMode ? [{ debugName: "items" }] : []));
1791
+ /**
1792
+ * Identifies tree items when the items input is replaced. Provide a stable key to retain
1793
+ * rendered item views for immutable data updates.
1794
+ *
1795
+ * @defaultValue
1796
+ * ```
1797
+ * (_index, item) => item
1798
+ * ```
1799
+ */
1800
+ trackBy = input((_index, item) => item, ...(ngDevMode ? [{ debugName: "trackBy" }] : []));
1780
1801
  /**
1781
1802
  * Sets the tree item to be selected.
1782
1803
  */
@@ -2755,7 +2776,7 @@ class SiTreeViewComponent {
2755
2776
  }
2756
2777
  }
2757
2778
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiTreeViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2758
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiTreeViewComponent, isStandalone: true, selector: "si-tree-view", inputs: { contextMenuItems: { classPropertyName: "contextMenuItems", publicName: "contextMenuItems", isSignal: true, isRequired: false, transformFunction: null }, childrenIndentation: { classPropertyName: "childrenIndentation", publicName: "childrenIndentation", isSignal: true, isRequired: false, transformFunction: null }, horizontalScrolling: { classPropertyName: "horizontalScrolling", publicName: "horizontalScrolling", isSignal: true, isRequired: false, transformFunction: null }, compactMode: { classPropertyName: "compactMode", publicName: "compactMode", isSignal: true, isRequired: false, transformFunction: null }, expandCollapseAll: { classPropertyName: "expandCollapseAll", publicName: "expandCollapseAll", isSignal: true, isRequired: false, transformFunction: null }, expandAllTooltip: { classPropertyName: "expandAllTooltip", publicName: "expandAllTooltip", isSignal: true, isRequired: false, transformFunction: null }, collapseAllTooltip: { classPropertyName: "collapseAllTooltip", publicName: "collapseAllTooltip", isSignal: true, isRequired: false, transformFunction: null }, icons: { classPropertyName: "icons", publicName: "icons", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pagesVirtualized: { classPropertyName: "pagesVirtualized", publicName: "pagesVirtualized", isSignal: true, isRequired: false, transformFunction: null }, folderStateStart: { classPropertyName: "folderStateStart", publicName: "folderStateStart", isSignal: true, isRequired: false, transformFunction: null }, isVirtualized: { classPropertyName: "isVirtualized", publicName: "isVirtualized", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, selectedItem: { classPropertyName: "selectedItem", publicName: "selectedItem", isSignal: true, isRequired: false, transformFunction: null }, singleSelectMode: { classPropertyName: "singleSelectMode", publicName: "singleSelectMode", isSignal: true, isRequired: false, transformFunction: null }, enableDataField1: { classPropertyName: "enableDataField1", publicName: "enableDataField1", isSignal: true, isRequired: false, transformFunction: null }, enableDataField2: { classPropertyName: "enableDataField2", publicName: "enableDataField2", isSignal: true, isRequired: false, transformFunction: null }, enableStateIndicator: { classPropertyName: "enableStateIndicator", publicName: "enableStateIndicator", isSignal: true, isRequired: false, transformFunction: null }, enableIcon: { classPropertyName: "enableIcon", publicName: "enableIcon", isSignal: true, isRequired: false, transformFunction: null }, enableContextMenuButton: { classPropertyName: "enableContextMenuButton", publicName: "enableContextMenuButton", isSignal: true, isRequired: false, transformFunction: null }, enableSelection: { classPropertyName: "enableSelection", publicName: "enableSelection", isSignal: true, isRequired: false, transformFunction: null }, deleteChildrenOnCollapse: { classPropertyName: "deleteChildrenOnCollapse", publicName: "deleteChildrenOnCollapse", isSignal: true, isRequired: false, transformFunction: null }, flatTree: { classPropertyName: "flatTree", publicName: "flatTree", isSignal: true, isRequired: false, transformFunction: null }, groupedList: { classPropertyName: "groupedList", publicName: "groupedList", isSignal: true, isRequired: false, transformFunction: null }, enableCheckbox: { classPropertyName: "enableCheckbox", publicName: "enableCheckbox", isSignal: true, isRequired: false, transformFunction: null }, enableOptionbox: { classPropertyName: "enableOptionbox", publicName: "enableOptionbox", isSignal: true, isRequired: false, transformFunction: null }, expandOnClick: { classPropertyName: "expandOnClick", publicName: "expandOnClick", isSignal: true, isRequired: false, transformFunction: null }, inheritChecked: { classPropertyName: "inheritChecked", publicName: "inheritChecked", isSignal: true, isRequired: false, transformFunction: null }, noActionsString: { classPropertyName: "noActionsString", publicName: "noActionsString", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemsVirtualizedChanged: "itemsVirtualizedChanged", treeItemFolderClicked: "treeItemFolderClicked", treeItemFolderStateChanged: "treeItemFolderStateChanged", treeItemClicked: "treeItemClicked", treeItemCheckboxClicked: "treeItemCheckboxClicked", loadChildren: "loadChildren", treeItemsSelected: "treeItemsSelected" }, host: { listeners: { "document:keyup.shift": "onKeyUpShift()", "document:keyup.control": "onKeyUpCtrl()", "document:keyup.meta": "onKeyUpMeta()", "document:mouseleave": "onMouseLeave()", "keydown": "handleKeydown($event)" } }, providers: [
2779
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiTreeViewComponent, isStandalone: true, selector: "si-tree-view", inputs: { contextMenuItems: { classPropertyName: "contextMenuItems", publicName: "contextMenuItems", isSignal: true, isRequired: false, transformFunction: null }, childrenIndentation: { classPropertyName: "childrenIndentation", publicName: "childrenIndentation", isSignal: true, isRequired: false, transformFunction: null }, horizontalScrolling: { classPropertyName: "horizontalScrolling", publicName: "horizontalScrolling", isSignal: true, isRequired: false, transformFunction: null }, compactMode: { classPropertyName: "compactMode", publicName: "compactMode", isSignal: true, isRequired: false, transformFunction: null }, expandCollapseAll: { classPropertyName: "expandCollapseAll", publicName: "expandCollapseAll", isSignal: true, isRequired: false, transformFunction: null }, expandAllTooltip: { classPropertyName: "expandAllTooltip", publicName: "expandAllTooltip", isSignal: true, isRequired: false, transformFunction: null }, collapseAllTooltip: { classPropertyName: "collapseAllTooltip", publicName: "collapseAllTooltip", isSignal: true, isRequired: false, transformFunction: null }, icons: { classPropertyName: "icons", publicName: "icons", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pagesVirtualized: { classPropertyName: "pagesVirtualized", publicName: "pagesVirtualized", isSignal: true, isRequired: false, transformFunction: null }, folderStateStart: { classPropertyName: "folderStateStart", publicName: "folderStateStart", isSignal: true, isRequired: false, transformFunction: null }, isVirtualized: { classPropertyName: "isVirtualized", publicName: "isVirtualized", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, trackBy: { classPropertyName: "trackBy", publicName: "trackBy", isSignal: true, isRequired: false, transformFunction: null }, selectedItem: { classPropertyName: "selectedItem", publicName: "selectedItem", isSignal: true, isRequired: false, transformFunction: null }, singleSelectMode: { classPropertyName: "singleSelectMode", publicName: "singleSelectMode", isSignal: true, isRequired: false, transformFunction: null }, enableDataField1: { classPropertyName: "enableDataField1", publicName: "enableDataField1", isSignal: true, isRequired: false, transformFunction: null }, enableDataField2: { classPropertyName: "enableDataField2", publicName: "enableDataField2", isSignal: true, isRequired: false, transformFunction: null }, enableStateIndicator: { classPropertyName: "enableStateIndicator", publicName: "enableStateIndicator", isSignal: true, isRequired: false, transformFunction: null }, enableIcon: { classPropertyName: "enableIcon", publicName: "enableIcon", isSignal: true, isRequired: false, transformFunction: null }, enableContextMenuButton: { classPropertyName: "enableContextMenuButton", publicName: "enableContextMenuButton", isSignal: true, isRequired: false, transformFunction: null }, enableSelection: { classPropertyName: "enableSelection", publicName: "enableSelection", isSignal: true, isRequired: false, transformFunction: null }, deleteChildrenOnCollapse: { classPropertyName: "deleteChildrenOnCollapse", publicName: "deleteChildrenOnCollapse", isSignal: true, isRequired: false, transformFunction: null }, flatTree: { classPropertyName: "flatTree", publicName: "flatTree", isSignal: true, isRequired: false, transformFunction: null }, groupedList: { classPropertyName: "groupedList", publicName: "groupedList", isSignal: true, isRequired: false, transformFunction: null }, enableCheckbox: { classPropertyName: "enableCheckbox", publicName: "enableCheckbox", isSignal: true, isRequired: false, transformFunction: null }, enableOptionbox: { classPropertyName: "enableOptionbox", publicName: "enableOptionbox", isSignal: true, isRequired: false, transformFunction: null }, expandOnClick: { classPropertyName: "expandOnClick", publicName: "expandOnClick", isSignal: true, isRequired: false, transformFunction: null }, inheritChecked: { classPropertyName: "inheritChecked", publicName: "inheritChecked", isSignal: true, isRequired: false, transformFunction: null }, noActionsString: { classPropertyName: "noActionsString", publicName: "noActionsString", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemsVirtualizedChanged: "itemsVirtualizedChanged", treeItemFolderClicked: "treeItemFolderClicked", treeItemFolderStateChanged: "treeItemFolderStateChanged", treeItemClicked: "treeItemClicked", treeItemCheckboxClicked: "treeItemCheckboxClicked", loadChildren: "loadChildren", treeItemsSelected: "treeItemsSelected" }, host: { listeners: { "document:keyup.shift": "onKeyUpShift()", "document:keyup.control": "onKeyUpCtrl()", "document:keyup.meta": "onKeyUpMeta()", "document:mouseleave": "onMouseLeave()", "keydown": "handleKeydown($event)" } }, providers: [
2759
2780
  SiTreeViewConverterService,
2760
2781
  SiTreeViewItemHeightService,
2761
2782
  SiTreeViewService,
@@ -2778,7 +2799,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
2778
2799
  '(document:mouseleave)': 'onMouseLeave()',
2779
2800
  '(keydown)': 'handleKeydown($event)'
2780
2801
  }, template: "@if (!flatTree() && expandCollapseAll()) {\n <div class=\"si-tree-view-expand-collapse-container p-4\">\n <button\n class=\"btn btn-icon btn-tertiary element-expand-all\"\n type=\"button\"\n [title]=\"expandAllTooltip() | translate\"\n [attr.aria-label]=\"expandAllTooltip() | translate\"\n (click)=\"expandAll()\"\n >\n </button>\n <button\n class=\"btn btn-icon btn-tertiary ms-4 element-collapse-all\"\n type=\"button\"\n [title]=\"collapseAllTooltip() | translate\"\n [attr.aria-label]=\"collapseAllTooltip() | translate\"\n (click)=\"collapseAll()\"\n >\n </button>\n </div>\n}\n@if (flatTree()) {\n <div class=\"si-tree-view-header\">\n <span\n class=\"si-tree-view-header-btn si-tree-view-header-root\"\n tabindex=\"0\"\n [class]=\"computedIcons().headerHome\"\n [class.disabled]=\"headerShowsRoot\"\n (click)=\"onFlatTreeNavigateHome()\"\n (keydown.enter)=\"onFlatTreeNavigateHome()\"\n ></span>\n @if (lastBreadCrumbItem) {\n <span\n class=\"si-tree-view-header-btn\"\n tabindex=\"0\"\n [class]=\"computedIcons().headerArrow\"\n [class.disabled]=\"headerShowsRoot\"\n (click)=\"onFlatTreeNavigateUp()\"\n (keydown.enter)=\"onFlatTreeNavigateUp()\"\n ></span>\n <span class=\"text-center text-truncate\">{{ lastBreadCrumbItem.label | translate }}</span>\n }\n </div>\n}\n<div\n #treeViewInner\n cdkScrollable\n class=\"si-tree-view focus-inside\"\n role=\"tree\"\n [attr.aria-multiselectable]=\"!singleSelectMode()\"\n [attr.aria-label]=\"ariaLabel() ? (ariaLabel() | translate) : undefined\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [class.si-tree-horizontal-scroll]=\"horizontalScrolling()\"\n [class.si-tree-view-flat]=\"flatTree()\"\n [class.si-tree-expand-collapse]=\"!flatTree() && expandCollapseAll()\"\n>\n @if (isVirtualized()) {\n <div [class.w-100]=\"horizontalScrolling()\" [style.height]=\"heightBefore\"></div>\n }\n @if (itemsVirtualized) {\n <div class=\"si-tree-view-root-ul\">\n <ng-content select=\"[cdkDropList], [siTreeViewItem]\" />\n @if (!treeItemContentTemplate()) {\n <si-tree-view-item *siTreeViewItem=\"let index = index; let treeItem = treeItem\" />\n }\n </div>\n }\n @if (isVirtualized()) {\n <div [class.w-100]=\"horizontalScrolling()\" [style.height]=\"heightAfter\"></div>\n }\n</div>\n", styles: [":host{--si-tree-view-background: var(--element-base-1);--si-tree-view-border-color: var(--element-ui-4);--si-tree-view-icon-size: 1.25rem;--si-tree-view-padding-base-horizontal: 8px;--si-tree-view-padding-base-vertical: 8px;--si-tree-view-item-hover-color: var(--element-base-1-hover);--si-tree-view-item-select-color: var(--element-base-1-selected);--si-tree-view-item-line-height: 1.1428571429;--si-tree-view-item-min-height: 40px;--si-tree-view-item-object-data-field-1-color: var(--element-text-secondary)}:host-context(.tree-sm){--si-tree-view-item-min-height: 32px;--si-tree-view-padding-base-vertical: 0px}:host-context(.tree-xs){--si-tree-view-item-min-height: 24px;--si-tree-view-padding-base-vertical: 0px}:host{display:flex;flex-direction:column;background-color:var(--si-tree-view-background)}.si-tree-view-header{padding:calc(var(--si-tree-view-padding-base-horizontal) / 2);border-block-end:1px solid var(--si-tree-view-border-color)}.si-tree-view-header>*{align-self:center}.si-tree-view-header-btn{cursor:pointer;margin-inline-end:calc(var(--si-tree-view-padding-base-horizontal) / 2);font-size:var(--si-tree-view-icon-size)}.si-tree-view-header-root{margin-inline-end:0}.si-tree-view{overflow:auto;flex:1 0 0;min-block-size:0}.si-tree-view.si-tree-horizontal-scroll{display:flex;flex-wrap:wrap;align-content:flex-start}.si-tree-view-root-ul{list-style:none;padding:0;margin:0;flex:1 1 auto}::ng-deep .si-tree-view-top-level-item{margin-block-start:8px}.si-tree-expand-collapse ::ng-deep .si-tree-view-top-level-item:first-child{margin-block-start:0}@supports (-webkit-touch-callout: none){.si-tree-horizontal-scroll{transform:translateZ(0)}}\n"] }]
2781
- }], propDecorators: { contextMenuItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "contextMenuItems", required: false }] }], childrenIndentation: [{ type: i0.Input, args: [{ isSignal: true, alias: "childrenIndentation", required: false }] }], horizontalScrolling: [{ type: i0.Input, args: [{ isSignal: true, alias: "horizontalScrolling", required: false }] }], compactMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "compactMode", required: false }] }], expandCollapseAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandCollapseAll", required: false }] }], expandAllTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandAllTooltip", required: false }] }], collapseAllTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapseAllTooltip", required: false }] }], icons: [{ type: i0.Input, args: [{ isSignal: true, alias: "icons", required: false }] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }], pagesVirtualized: [{ type: i0.Input, args: [{ isSignal: true, alias: "pagesVirtualized", required: false }] }], folderStateStart: [{ type: i0.Input, args: [{ isSignal: true, alias: "folderStateStart", required: false }] }], isVirtualized: [{ type: i0.Input, args: [{ isSignal: true, alias: "isVirtualized", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], selectedItem: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedItem", required: false }] }], singleSelectMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "singleSelectMode", required: false }] }], enableDataField1: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableDataField1", required: false }] }], enableDataField2: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableDataField2", required: false }] }], enableStateIndicator: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableStateIndicator", required: false }] }], enableIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableIcon", required: false }] }], enableContextMenuButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableContextMenuButton", required: false }] }], enableSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableSelection", required: false }] }], deleteChildrenOnCollapse: [{ type: i0.Input, args: [{ isSignal: true, alias: "deleteChildrenOnCollapse", required: false }] }], flatTree: [{ type: i0.Input, args: [{ isSignal: true, alias: "flatTree", required: false }] }], groupedList: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupedList", required: false }] }], enableCheckbox: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableCheckbox", required: false }] }], enableOptionbox: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableOptionbox", required: false }] }], expandOnClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandOnClick", required: false }] }], inheritChecked: [{ type: i0.Input, args: [{ isSignal: true, alias: "inheritChecked", required: false }] }], noActionsString: [{ type: i0.Input, args: [{ isSignal: true, alias: "noActionsString", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledBy", required: false }] }], itemsVirtualizedChanged: [{ type: i0.Output, args: ["itemsVirtualizedChanged"] }], treeItemFolderClicked: [{ type: i0.Output, args: ["treeItemFolderClicked"] }], treeItemFolderStateChanged: [{ type: i0.Output, args: ["treeItemFolderStateChanged"] }], treeItemClicked: [{ type: i0.Output, args: ["treeItemClicked"] }], treeItemCheckboxClicked: [{ type: i0.Output, args: ["treeItemCheckboxClicked"] }], loadChildren: [{ type: i0.Output, args: ["loadChildren"] }], treeItemsSelected: [{ type: i0.Output, args: ["treeItemsSelected"] }], templates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SiTreeViewItemTemplateDirective), { isSignal: true }] }], children: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => SiTreeViewItemComponent), { isSignal: true }] }], treeItemContentTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SiTreeViewItemDirective), { ...{
2802
+ }], propDecorators: { contextMenuItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "contextMenuItems", required: false }] }], childrenIndentation: [{ type: i0.Input, args: [{ isSignal: true, alias: "childrenIndentation", required: false }] }], horizontalScrolling: [{ type: i0.Input, args: [{ isSignal: true, alias: "horizontalScrolling", required: false }] }], compactMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "compactMode", required: false }] }], expandCollapseAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandCollapseAll", required: false }] }], expandAllTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandAllTooltip", required: false }] }], collapseAllTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapseAllTooltip", required: false }] }], icons: [{ type: i0.Input, args: [{ isSignal: true, alias: "icons", required: false }] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }], pagesVirtualized: [{ type: i0.Input, args: [{ isSignal: true, alias: "pagesVirtualized", required: false }] }], folderStateStart: [{ type: i0.Input, args: [{ isSignal: true, alias: "folderStateStart", required: false }] }], isVirtualized: [{ type: i0.Input, args: [{ isSignal: true, alias: "isVirtualized", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], trackBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "trackBy", required: false }] }], selectedItem: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedItem", required: false }] }], singleSelectMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "singleSelectMode", required: false }] }], enableDataField1: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableDataField1", required: false }] }], enableDataField2: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableDataField2", required: false }] }], enableStateIndicator: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableStateIndicator", required: false }] }], enableIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableIcon", required: false }] }], enableContextMenuButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableContextMenuButton", required: false }] }], enableSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableSelection", required: false }] }], deleteChildrenOnCollapse: [{ type: i0.Input, args: [{ isSignal: true, alias: "deleteChildrenOnCollapse", required: false }] }], flatTree: [{ type: i0.Input, args: [{ isSignal: true, alias: "flatTree", required: false }] }], groupedList: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupedList", required: false }] }], enableCheckbox: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableCheckbox", required: false }] }], enableOptionbox: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableOptionbox", required: false }] }], expandOnClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandOnClick", required: false }] }], inheritChecked: [{ type: i0.Input, args: [{ isSignal: true, alias: "inheritChecked", required: false }] }], noActionsString: [{ type: i0.Input, args: [{ isSignal: true, alias: "noActionsString", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledBy", required: false }] }], itemsVirtualizedChanged: [{ type: i0.Output, args: ["itemsVirtualizedChanged"] }], treeItemFolderClicked: [{ type: i0.Output, args: ["treeItemFolderClicked"] }], treeItemFolderStateChanged: [{ type: i0.Output, args: ["treeItemFolderStateChanged"] }], treeItemClicked: [{ type: i0.Output, args: ["treeItemClicked"] }], treeItemCheckboxClicked: [{ type: i0.Output, args: ["treeItemCheckboxClicked"] }], loadChildren: [{ type: i0.Output, args: ["loadChildren"] }], treeItemsSelected: [{ type: i0.Output, args: ["treeItemsSelected"] }], templates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SiTreeViewItemTemplateDirective), { isSignal: true }] }], children: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => SiTreeViewItemComponent), { isSignal: true }] }], treeItemContentTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SiTreeViewItemDirective), { ...{
2782
2803
  read: TemplateRef
2783
2804
  }, isSignal: true }] }], nextItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SiTreeViewItemComponent), { ...{ descendants: true }, isSignal: true }] }], treeViewInnerElement: [{ type: i0.ViewChild, args: ['treeViewInner', { isSignal: true }] }] } });
2784
2805