igniteui-angular-sovn
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
73 lines (62 loc) • 1.94 kB
text/typescript
import { Directive, Inject } from '@angular/core';
import { ColumnType } from '../common/grid.interface';
import { IgxColumnActionsBaseDirective } from './column-actions-base.directive';
import { IgxColumnActionsComponent } from './column-actions.component';
({
selector: '[igxColumnPinning]',
standalone: true
})
export class IgxColumnPinningDirective extends IgxColumnActionsBaseDirective {
constructor(
protected columnActions: IgxColumnActionsComponent
) {
(IgxColumnActionsComponent) super();
columnActions.actionsDirective = this;
}
/**
* @hidden @internal
*/
public get checkAllLabel(): string {
return this.columnActions.grid?.resourceStrings.igx_grid_pinning_check_all_label ?? 'Pin All';
}
/**
* @hidden @internal
*/
public get uncheckAllLabel(): string {
return this.columnActions.grid?.resourceStrings.igx_grid_pinning_uncheck_all_label ?? 'Unpin All';
}
/**
* @hidden @internal
*/
public checkAll() {
this.columnActions.filteredColumns.forEach(c => c.pinned = true);
}
/**
* @hidden @internal
*/
public uncheckAll() {
this.columnActions.filteredColumns.forEach(c => c.pinned = false);
}
/**
* @hidden @internal
*/
public actionEnabledColumnsFilter = (c: ColumnType) => !c.disablePinning && !c.level;
/**
* @hidden @internal
*/
public columnChecked(column: ColumnType): boolean {
return column.pinned;
}
/**
* @hidden @internal
*/
public toggleColumn(column: ColumnType) {
column.pinned = !column.pinned;
}
public get allUnchecked() {
return !this.columnActions.filteredColumns.some(col => !this.columnChecked(col));
}
public get allChecked() {
return !this.columnActions.filteredColumns.some(col => this.columnChecked(col));
}
}