All files / modules/table-controls/table-column-settings table-column-settings.component.ts

42.85% Statements 3/7
100% Branches 0/0
25% Functions 1/4
42.85% Lines 3/7

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                        1x           1x   1x                  
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
import { MatSelectionListChange } from '@angular/material/list';
 
import { IDashboardTableConfig } from '../../../interfaces/table-config.interface';
 
@Component({
  selector: 'app-table-column-settings',
  templateUrl: './table-column-settings.component.html',
  styleUrls: ['./table-column-settings.component.scss'],
  changeDetection: ChangeDetectionStrategy.OnPush,
  standalone: false,
})
export class AppTableColumnSettingsComponent<T> {
  @Input() public columns: IDashboardTableConfig<T>['columns'] = [
    { name: 'one', order: 0 },
    { name: 'two', order: 1 },
  ];
 
  @Input() public displayedColumns: IDashboardTableConfig<T>['displayedColumns'] = [];
 
  @Output() public readonly columnVisibilityChange = new EventEmitter<IDashboardTableConfig<T>['columns']>();
 
  public changeVisibleColumns(event: MatSelectionListChange) {
    const value = event.source.selectedOptions.selected
      .map(item => item.value as IDashboardTableConfig<T>['columns']['0'])
      .sort((x, y) => x.order - y.order);
    this.columnVisibilityChange.emit(value);
  }
}