All files / auto-collapsable-list si-auto-collapsable-list-measurable.class.ts

100% Statements 6/6
100% Branches 0/0
100% Functions 1/1
100% Lines 5/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34                  1x 309x 309x                               309x 308x          
/**
 * Copyright (c) Siemens 2016 - 2025
 * SPDX-License-Identifier: MIT
 */
import { Directive, ElementRef, inject } from '@angular/core';
import { ResizeObserverService } from '@siemens/element-ng/resize-observer';
import { distinctUntilChanged, map, shareReplay } from 'rxjs/operators';
 
@Directive()
export class SiAutoCollapsableListMeasurable {
  protected readonly elementRef = inject(ElementRef<HTMLElement>);
  private readonly resizeObserverService = inject(ResizeObserverService);
 
  /**
   * Emits on element width changes.
   *
   * @defaultValue
   * ```
   * this.resizeObserverService
   *       .observe(this.elementRef.nativeElement, 0, true, true)
   *       .pipe(
   *         map(size => size.width),
   *         distinctUntilChanged(),
   *         shareReplay(1)
   *       )
   * ```
   */
  size$ = this.resizeObserverService.observe(this.elementRef.nativeElement, 0, true, true).pipe(
    map(size => size.width),
    distinctUntilChanged(),
    shareReplay(1)
  );
}