All files / select/select-list si-select-list.component.ts

100% Statements 6/6
100% Branches 0/0
100% Functions 3/3
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 35 36 37 38 39 40 41 42 43 44 45 46 47                                                          1x 25x               25x 25x       10x      
/**
 * Copyright (c) Siemens 2016 - 2025
 * SPDX-License-Identifier: MIT
 */
import { CdkListbox, CdkOption, ListboxValueChangeEvent } from '@angular/cdk/listbox';
import { CommonModule } from '@angular/common';
import { ChangeDetectionStrategy, Component, ElementRef, OnInit, viewChild } from '@angular/core';
import { SiTranslatePipe } from '@siemens/element-translate-ng/translate';
 
import { SiSelectOptionRowComponent } from '../select-option/si-select-option-row.component';
import { SiSelectGroupTemplateDirective } from '../si-select-group-template.directive';
import { SiSelectOptionRowTemplateDirective } from '../si-select-option-row-template.directive';
import { SiSelectListBase } from './si-select-list.base';
 
@Component({
  selector: 'si-select-list',
  imports: [
    CommonModule,
    CdkListbox,
    SiTranslatePipe,
    CdkOption,
    SiSelectOptionRowTemplateDirective,
    SiSelectGroupTemplateDirective,
    SiSelectOptionRowComponent
  ],
  templateUrl: './si-select-list.component.html',
  styleUrl: './si-select-list.component.scss',
  changeDetection: ChangeDetectionStrategy.OnPush
})
export class SiSelectListComponent<T> extends SiSelectListBase<T> implements OnInit {
  private readonly listbox = viewChild.required<CdkListbox, ElementRef<HTMLUListElement>>(
    CdkListbox,
    {
      read: ElementRef
    }
  );
 
  override ngOnInit(): void {
    super.ngOnInit();
    setTimeout(() => this.listbox().nativeElement.focus());
  }
 
  protected listBoxValueChange(changeEvent: ListboxValueChangeEvent<T>): void {
    this.selectionStrategy.updateFromUser(changeEvent.value.slice());
  }
}