igniteui-angular-sovn
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
315 lines (284 loc) • 11.8 kB
text/typescript
import { Component, OnInit, ViewChild, AfterViewInit, ChangeDetectorRef } from '@angular/core';
import { SampleTestData } from './sample-test-data.spec';
import { ColumnDefinitions, GridTemplateStrings } from './template-strings.spec';
import { IgxGridComponent } from '../grids/grid/grid.component';
import { IgxColumnActionsComponent } from '../grids/column-actions/column-actions.component';
import { GridPagingMode } from '../grids/common/enums';
import { IgxColumnComponent } from '../grids/columns/column.component';
import { IgxGridToolbarComponent } from '../grids/toolbar/grid-toolbar.component';
import { IgxGridToolbarHidingComponent } from '../grids/toolbar/grid-toolbar-hiding.component';
import { IgxGridToolbarActionsComponent } from '../grids/toolbar/common';
import { IgxPaginatorComponent } from '../paginator/paginator.component';
import { IgxColumnGroupComponent } from '../grids/columns/column-group.component';
import { IgxGridToolbarPinningComponent } from '../grids/toolbar/grid-toolbar-pinning.component';
import { NgFor, NgIf } from '@angular/common';
import { IgxCellTemplateDirective } from '../grids/columns/templates.directive';
import { IgxColumnHidingDirective } from '../grids/column-actions/column-hiding.directive';
import { IgxColumnPinningDirective } from '../grids/column-actions/column-pinning.directive';
export class BasicGridComponent {
public grid: IgxGridComponent;
public data = [];
}
export class GridAutoGenerateComponent extends BasicGridComponent {
public autoGenerate = true;
}
export class GridWithSizeComponent extends GridAutoGenerateComponent {
public width = '100%';
public height = '100%';
public scrollTop(newTop: number) {
this.grid.verticalScrollContainer.getScroll().scrollTop = newTop;
}
}
export class GridNxMComponent extends GridWithSizeComponent implements OnInit {
public colsCount: number;
public rowsCount: number;
public columnsType = 'string';
public hasEditableColumns = true;
public startFromOne = false;
public columnNamePrefix = 'col';
public columns = [];
public override autoGenerate = false;
public ngOnInit() {
this.columns = (this.hasEditableColumns) ?
SampleTestData.generateEditableColumns(this.colsCount, this.columnsType, this.columnNamePrefix)
: SampleTestData.generateColumnsByType(this.colsCount, this.columnsType, this.columnNamePrefix);
this.data = SampleTestData.generateDataForColumns(this.columns, this.rowsCount, this.startFromOne);
}
public isHorizonatScrollbarVisible() {
const scrollbar = this.grid.headerContainer.getScroll();
return scrollbar.offsetWidth < (scrollbar.children[0] as HTMLElement).offsetWidth;
}
}
export class BasicGridSearchComponent extends GridWithSizeComponent {
public highlightClass = 'igx-highlight';
public activeClass = 'igx-highlight__active';
public paging = false;
}
export class PagingComponent extends GridWithSizeComponent {
public paging = true;
public perPage = 3;
public override data = SampleTestData.personJobDataFull();
}
export class RemotePagingComponent extends GridWithSizeComponent {
public pagingMode = GridPagingMode.Remote;
public perPage = 3;
public totalRecords = 10;
public override data = SampleTestData.personJobDataFull();
}
export class SelectionComponent extends BasicGridComponent {
public override data = SampleTestData.generateBigValuesData(100);
}
export class GridWithToolbarComponent extends GridWithSizeComponent {
public showToolbar = true;
public columnHiding = true;
public columnPinning = true;
public exportExcel = true;
public exportCsv = true;
public override data = SampleTestData.contactInfoData();
}
export class GridRowConditionalStylingComponent extends GridWithSizeComponent {
public override data = SampleTestData.contactInfoData();
public evenRowCondition = (row) => row.index % 2 === 0;
public oddRowCondition = (row) => row.index % 2 !== 0;
// eslint-disable-next-line @typescript-eslint/member-ordering
public rowClasses = {
eventRow: this.evenRowCondition,
oddRow: this.oddRowCondition
};
}
export class ColumnHidingTestComponent extends GridWithSizeComponent implements OnInit, AfterViewInit {
public chooser: IgxColumnActionsComponent;
public override width = '500px';
public override height = '500px';
public showInline = true;
public hideFilter = false;
public paging = false;
constructor(private cdr: ChangeDetectorRef) {
super();
}
public get hiddenColumnsCount(): number {
return this.chooser.columnItems.filter(c => c.checked).length;
}
public ngOnInit() {
this.data = SampleTestData.productInfoData();
}
public ngAfterViewInit() {
this.cdr.detectChanges();
}
}
export class ColumnGroupsHidingTestComponent extends ColumnHidingTestComponent {
public override grid: IgxGridComponent;
public hasGroupColumns = false;
public override data = SampleTestData.contactInfoDataFull();
constructor(cdr: ChangeDetectorRef) {
super(cdr);
}
}
export class ColumnPinningTestComponent extends GridWithSizeComponent implements AfterViewInit, OnInit {
public chooser: IgxColumnActionsComponent;
public override height = '500px';
public override width = '500px';
public showInline = true;
public hideFilter = false;
constructor(private cdr: ChangeDetectorRef) {
super();
}
public ngOnInit() {
this.data = SampleTestData.productInfoData();
}
public ngAfterViewInit() {
this.cdr.detectChanges();
}
}
export class ColumnPinningWithTemplateTestComponent extends ColumnPinningTestComponent {
}
export class ColumnGroupsPinningTestComponent extends ColumnPinningTestComponent {
public override data = SampleTestData.contactInfoDataFull();
constructor(cdr: ChangeDetectorRef) {
super(cdr);
}
}