igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
1,399 lines (1,398 loc) • 120 kB
TypeScript
import { AfterContentInit, AfterViewInit, ChangeDetectorRef, DoCheck, ElementRef, EnvironmentInjector, EventEmitter, Injector, IterableDiffers, NgZone, OnDestroy, OnInit, QueryList, TemplateRef, ViewContainerRef } from '@angular/core';
import { Subject } from 'rxjs';
import { PlatformUtil } from '../core/utils';
import { FilteringLogic } from '../data-operations/filtering-expression.interface';
import { IGroupByRecord } from '../data-operations/groupby-record.interface';
import { IForOfDataChangingEventArgs, IgxGridForOfDirective } from '../directives/for-of/for_of.directive';
import { IgxTextHighlightService } from '../directives/text-highlight/text-highlight.service';
import { ISummaryExpression } from './summaries/grid-summary';
import type { IgxGridToolbarComponent } from './toolbar/grid-toolbar.component';
import { IgxRowDirective } from './row.directive';
import { IgxOverlayOutletDirective, IgxToggleDirective } from '../directives/toggle/toggle.directive';
import { IFilteringExpressionsTree } from '../data-operations/filtering-expressions-tree';
import { IFilteringOperation } from '../data-operations/filtering-condition';
import { Transaction, TransactionService, State } from '../services/public_api';
import { IgxRowEditTabStopDirective } from './grid.rowEdit.directive';
import { IgxGridNavigationService } from './grid-navigation.service';
import { IgxFilteringService } from './filtering/grid-filtering.service';
import { IgxGridFilteringCellComponent } from './filtering/base/grid-filtering-cell.component';
import { IgxGridHeaderGroupComponent } from './headers/grid-header-group.component';
import { IGridResourceStrings } from '../core/i18n/grid-resources';
import { IgxGridSummaryService } from './summaries/grid-summary.service';
import { IgxSummaryRowComponent } from './summaries/summary-row.component';
import { IgxGridSelectionService } from './selection/selection.service';
import { ICachedViewLoadedEventArgs } from '../directives/template-outlet/template_outlet.directive';
import { IgxExcelStyleLoadingValuesTemplateDirective } from './filtering/excel-style/excel-style-search.component';
import { IgxGridColumnResizerComponent } from './resizing/resizer.component';
import { IgxColumnResizingService } from './resizing/resizing.service';
import { IFilteringStrategy } from '../data-operations/filtering-strategy';
import { GridSelectionMode, GridSummaryPosition, GridSummaryCalculationMode, FilterMode, GridPagingMode, GridValidationTrigger, Size } from './common/enums';
import { IGridCellEventArgs, IRowSelectionEventArgs, IPinColumnEventArgs, IRowDataEventArgs, IColumnResizeEventArgs, IColumnMovingStartEventArgs, IColumnMovingEventArgs, IColumnMovingEndEventArgs, IGridKeydownEventArgs, IRowDragStartEventArgs, IRowDragEndEventArgs, IGridClipboardEvent, IGridToolbarExportEventArgs, ISearchInfo, ICellPosition, IRowToggleEventArgs, IColumnSelectionEventArgs, IPinRowEventArgs, IGridScrollEventArgs, IActiveNodeChangeEventArgs, ISortingEventArgs, IFilteringEventArgs, IColumnVisibilityChangedEventArgs, IColumnVisibilityChangingEventArgs, IPinColumnCancellableEventArgs, IGridEditEventArgs, IRowDataCancelableEventArgs, IGridEditDoneEventArgs, IGridRowEventArgs, IGridContextMenuEventArgs, IColumnsAutoGeneratedEventArgs } from './common/events';
import { ColumnType, GridServiceType, GridType, IGridFormGroupCreatedEventArgs, IGridValidationStatusEventArgs, IgxGridEmptyTemplateContext, IgxGridHeaderTemplateContext, IgxGridRowDragGhostContext, IgxGridRowEditActionsTemplateContext, IgxGridRowEditTemplateContext, IgxGridRowEditTextTemplateContext, IgxGridRowTemplateContext, IgxGridTemplateContext, IgxHeadSelectorTemplateContext, IgxRowSelectorTemplateContext, ISizeInfo, RowType, IPinningConfig, IClipboardOptions } from './common/grid.interface';
import { DropPosition } from './moving/moving.service';
import { IgxColumnComponent } from './columns/column.component';
import { IgxSnackbarComponent } from '../snackbar/snackbar.component';
import { IgxActionStripToken } from '../action-strip/token';
import { IgxGridRowComponent } from './grid/grid-row.component';
import type { IgxPaginatorComponent } from '../paginator/paginator.component';
import { IgxGridHeaderRowComponent } from './headers/grid-header-row.component';
import { IgxGridGroupByAreaComponent } from './grouping/grid-group-by-area.component';
import { IgxFlatTransactionFactory } from '../services/transaction/transaction-factory.service';
import { ISortingOptions } from './columns/interfaces';
import { GridSelectionRange } from './common/types';
import { OverlaySettings } from '../services/overlay/utilities';
import { IgxOverlayService } from '../services/overlay/overlay';
import { StateUpdateEvent } from '../services/transaction/transaction';
import { ISortingExpression } from '../data-operations/sorting-strategy';
import { IGridSortingStrategy } from './common/strategy';
import { IgxGridExcelStyleFilteringComponent } from './filtering/excel-style/excel-style-filtering.component';
import { IgxGridHeaderComponent } from './headers/grid-header.component';
import { IgxGridFilteringRowComponent } from './filtering/base/grid-filtering-row.component';
import { IDataCloneStrategy } from '../data-operations/data-clone-strategy';
import { IgxGridValidationService } from './grid/grid-validation.service';
import * as i0 from "@angular/core";
export declare abstract class IgxGridBaseDirective implements GridType, OnInit, DoCheck, OnDestroy, AfterContentInit, AfterViewInit {
readonly validation: IgxGridValidationService;
/** @hidden @internal */
readonly selectionService: IgxGridSelectionService;
protected colResizingService: IgxColumnResizingService;
readonly gridAPI: GridServiceType;
protected transactionFactory: IgxFlatTransactionFactory;
private elementRef;
protected zone: NgZone;
/** @hidden @internal */
document: any;
readonly cdr: ChangeDetectorRef;
protected differs: IterableDiffers;
protected viewRef: ViewContainerRef;
protected injector: Injector;
protected envInjector: EnvironmentInjector;
navigation: IgxGridNavigationService;
/** @hidden @internal */
filteringService: IgxFilteringService;
protected textHighlightService: IgxTextHighlightService;
protected overlayService: IgxOverlayService;
/** @hidden @internal */
summaryService: IgxGridSummaryService;
private localeId;
protected platform: PlatformUtil;
protected _diTransactions?: TransactionService<Transaction, State>;
/**
* Gets/Sets the display time for the row adding snackbar notification.
*
* @remarks
* By default it is 6000ms.
*/
snackbarDisplayTime: number;
/**
* Gets/Sets whether to auto-generate the columns.
*
* @remarks
* The default value is false. When set to true, it will override all columns declared through code or in markup.
* @example
* ```html
* <igx-grid [data]="Data" [autoGenerate]="true"></igx-grid>
* ```
*/
autoGenerate: boolean;
/**
* Gets/Sets a list of property keys to be excluded from the generated column collection
* @remarks
* The collection is only used during initialization and changing it will not cause any changes in the generated columns at runtime
* unless the grid is destroyed and recreated. To modify the columns visible in the UI at runtime, please use their
* [hidden](https://www.infragistics.com/products/ignite-ui-angular/docs/typescript/latest/classes/IgxColumnComponent.html#hidden) property.
* @example
* ```html
* <igx-grid data=[Data] [autoGenerate]="true" [autoGenerateExclude]="['ProductName', 'Count']"></igx-grid>
* ```
* ```typescript
* const Data = [{ 'Id': '1', 'ProductName': 'name1', 'Description': 'description1', 'Count': 5 }]
* ```
*/
autoGenerateExclude: string[];
/**
* Controls whether columns moving is enabled in the grid.
*
*/
moving: boolean;
/**
* Gets/Sets a custom template when empty.
*
* @example
* ```html
* <igx-grid [id]="'igx-grid-1'" [data]="Data" [emptyGridTemplate]="myTemplate" [autoGenerate]="true"></igx-grid>
* ```
*/
emptyGridTemplate: TemplateRef<void>;
/**
* Gets/Sets a custom template for adding row UI when grid is empty.
*
* @example
* ```html
* <igx-grid [id]="'igx-grid-1'" [data]="Data" [addRowEmptyTemplate]="myTemplate" [autoGenerate]="true"></igx-grid>
* ```
*/
addRowEmptyTemplate: TemplateRef<void>;
/**
* Gets/Sets a custom template when loading.
*
* @example
* ```html
* <igx-grid [id]="'igx-grid-1'" [data]="Data" [loadingGridTemplate]="myTemplate" [autoGenerate]="true"></igx-grid>
* ```
*/
loadingGridTemplate: TemplateRef<void>;
/**
* Get/Set IgxSummaryRow height
*/
set summaryRowHeight(value: number);
get summaryRowHeight(): number;
/** @hidden @internal */
get hasColumnsToAutosize(): boolean;
/**
* Gets/Sets the data clone strategy of the grid when in edit mode.
*
* @example
* ```html
* <igx-grid #grid [data]="localData" [dataCloneStrategy]="customCloneStrategy"></igx-grid>
* ```
*/
get dataCloneStrategy(): IDataCloneStrategy;
set dataCloneStrategy(strategy: IDataCloneStrategy);
/**
* Controls the copy behavior of the grid.
*/
clipboardOptions: IClipboardOptions;
/**
* Emitted after filtering is performed.
*
* @remarks
* Returns the filtering expressions tree of the column for which filtering was performed.
* @example
* ```html
* <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true"
* (filteringExpressionsTreeChange)="filteringExprTreeChange($event)"></igx-grid>
* ```
*/
filteringExpressionsTreeChange: EventEmitter<IFilteringExpressionsTree>;
/**
* Emitted after advanced filtering is performed.
*
* @remarks
* Returns the advanced filtering expressions tree.
* @example
* ```html
* <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true"
* (advancedFilteringExpressionsTreeChange)="advancedFilteringExprTreeChange($event)"></igx-grid>
* ```
*/
advancedFilteringExpressionsTreeChange: EventEmitter<IFilteringExpressionsTree>;
/**
* Emitted when grid is scrolled horizontally/vertically.
*
* @example
* ```html
* <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true"
* (gridScroll)="onScroll($event)"></igx-grid>
* ```
*/
gridScroll: EventEmitter<IGridScrollEventArgs>;
/**
* Sets a conditional class selector to the grid's row element.
* Accepts an object literal, containing key-value pairs,
* where the key is the name of the CSS class and the value is
* either a callback function that returns a boolean, or boolean, like so:
* ```typescript
* callback = (row: RowType) => { return row.selected > 6; }
* rowClasses = { 'className' : this.callback };
* ```
* ```html
* <igx-grid #grid [data]="Data" [rowClasses] = "rowClasses" [autoGenerate]="true"></igx-grid>
* ```
*
* @memberof IgxColumnComponent
*/
rowClasses: any;
/**
* Sets conditional style properties on the grid row element.
* It accepts an object literal where the keys are
* the style properties and the value is an expression to be evaluated.
* ```typescript
* styles = {
* background: 'yellow',
* color: (row: RowType) => row.selected : 'red': 'white'
* }
* ```
* ```html
* <igx-grid #grid [data]="Data" [rowStyles]="styles" [autoGenerate]="true"></igx-grid>
* ```
*
* @memberof IgxColumnComponent
*/
rowStyles: any;
/**
* Gets/Sets the primary key.
*
* @example
* ```html
* <igx-grid #grid [data]="localData" [primaryKey]="'ProductID'" [autoGenerate]="true"></igx-grid>
* ```
*/
get primaryKey(): string;
set primaryKey(value: string);
/**
* Gets/Sets a unique values strategy used by the Excel Style Filtering
*
* @remarks
* Provides a callback for loading unique column values on demand.
* If this property is provided, the unique values it generates will be used by the Excel Style Filtering.
* @example
* ```html
* <igx-grid [data]="localData" [filterMode]="'excelStyleFilter'" [uniqueColumnValuesStrategy]="columnValuesStrategy"></igx-grid>
* ```
*/
uniqueColumnValuesStrategy: (column: ColumnType, filteringExpressionsTree: IFilteringExpressionsTree, done: (values: any[]) => void) => void;
/** @hidden @internal */
excelStyleFilteringComponents: QueryList<IgxGridExcelStyleFilteringComponent>;
/** @hidden @internal */
get excelStyleFilteringComponent(): IgxGridExcelStyleFilteringComponent;
/** @hidden @internal */
get headerGroups(): IgxGridHeaderGroupComponent[];
/**
* Emitted when a cell is clicked.
*
* @remarks
* Returns the `IgxGridCell`.
* @example
* ```html
* <igx-grid #grid (cellClick)="cellClick($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
* ```
*/
cellClick: EventEmitter<IGridCellEventArgs>;
/**
* Emitted when a row is clicked.
*
* @remarks
* Returns the `IgxGridRow`.
* @example
* ```html
* <igx-grid #grid (rowClick)="rowClick($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
* ```
*/
rowClick: EventEmitter<IGridRowEventArgs>;
/**
* Emitted when formGroup is created on edit of row/cell.
*
* @example
* ```html
* <igx-grid #grid (formGroupCreated)="formGroupCreated($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
* ```
*/
formGroupCreated: EventEmitter<IGridFormGroupCreatedEventArgs>;
/**
* Emitted when grid's validation status changes.
*
* @example
* ```html
* <igx-grid #grid (validationStatusChange)="validationStatusChange($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
* ```
*/
validationStatusChange: EventEmitter<IGridValidationStatusEventArgs>;
/**
* Emitted when a cell is selected.
*
* @remarks
* Returns the `IgxGridCell`.
* @example
* ```html
* <igx-grid #grid (selected)="onCellSelect($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
* ```
*/
selected: EventEmitter<IGridCellEventArgs>;
/**
* Emitted when `IgxGridRowComponent` is selected.
*
* @example
* ```html
* <igx-grid #grid (rowSelectionChanging)="rowSelectionChanging($event)" [data]="localData" [autoGenerate]="true"></igx-grid>
* ```
*/
rowSelectionChanging: EventEmitter<IRowSelectionEventArgs>;
/**
* Emitted when `IgxColumnComponent` is selected.
*
* @example
* ```html
* <igx-grid #grid (columnSelectionChanging)="columnSelectionChanging($event)" [data]="localData" [autoGenerate]="true"></igx-grid>
* ```
*/
columnSelectionChanging: EventEmitter<IColumnSelectionEventArgs>;
/**
* Emitted before `IgxColumnComponent` is pinned.
*
* @remarks
* The index at which to insert the column may be changed through the `insertAtIndex` property.
* @example
* ```typescript
* public columnPinning(event) {
* if (event.column.field === "Name") {
* event.insertAtIndex = 0;
* }
* }
* ```
*/
columnPin: EventEmitter<IPinColumnCancellableEventArgs>;
/**
* Emitted after `IgxColumnComponent` is pinned.
*
* @remarks
* The index that the column is inserted at may be changed through the `insertAtIndex` property.
* @example
* ```typescript
* public columnPinning(event) {
* if (event.column.field === "Name") {
* event.insertAtIndex = 0;
* }
* }
* ```
*/
columnPinned: EventEmitter<IPinColumnEventArgs>;
/**
* Emitted when cell enters edit mode.
*
* @remarks
* This event is cancelable.
* @example
* ```html
* <igx-grid #grid3 (cellEditEnter)="editStart($event)" [data]="data" [primaryKey]="'ProductID'">
* </igx-grid>
* ```
*/
cellEditEnter: EventEmitter<IGridEditEventArgs>;
/**
* Emitted when cell exits edit mode.
*
* @example
* ```html
* <igx-grid #grid3 (cellEditExit)="editExit($event)" [data]="data" [primaryKey]="'ProductID'">
* </igx-grid>
* ```
*/
cellEditExit: EventEmitter<IGridEditDoneEventArgs>;
/**
* Emitted when cell has been edited.
*
* @remarks
* Event is fired after editing is completed, when the cell is exiting edit mode.
* This event is cancelable.
* @example
* ```html
* <igx-grid #grid3 (cellEdit)="editDone($event)" [data]="data" [primaryKey]="'ProductID'">
* </igx-grid>
* ```
*/
cellEdit: EventEmitter<IGridEditEventArgs>;
/**
* Emitted after cell has been edited and editing has been committed.
*
* @example
* ```html
* <igx-grid #grid3 (cellEditDone)="editDone($event)" [data]="data" [primaryKey]="'ProductID'">
* </igx-grid>
* ```
*/
cellEditDone: EventEmitter<IGridEditDoneEventArgs>;
/**
* Emitted when a row enters edit mode.
*
* @remarks
* Emitted when [rowEditable]="true".
* This event is cancelable.
* @example
* ```html
* <igx-grid #grid3 (rowEditEnter)="editStart($event)" [primaryKey]="'ProductID'" [rowEditable]="true">
* </igx-grid>
* ```
*/
rowEditEnter: EventEmitter<IGridEditEventArgs>;
/**
* Emitted when exiting edit mode for a row.
*
* @remarks
* Emitted when [rowEditable]="true" & `endEdit(true)` is called.
* Emitted when changing rows during edit mode, selecting an un-editable cell in the edited row,
* performing paging operation, column resizing, pinning, moving or hitting `Done`
* button inside of the rowEditingOverlay, or hitting the `Enter` key while editing a cell.
* This event is cancelable.
* @example
* ```html
* <igx-grid #grid3 (rowEdit)="editDone($event)" [data]="data" [primaryKey]="'ProductID'" [rowEditable]="true">
* </igx-grid>
* ```
*/
rowEdit: EventEmitter<IGridEditEventArgs>;
/**
* Emitted after exiting edit mode for a row and editing has been committed.
*
* @remarks
* Emitted when [rowEditable]="true" & `endEdit(true)` is called.
* Emitted when changing rows during edit mode, selecting an un-editable cell in the edited row,
* performing paging operation, column resizing, pinning, moving or hitting `Done`
* button inside of the rowEditingOverlay, or hitting the `Enter` key while editing a cell.
* @example
* ```html
* <igx-grid #grid3 (rowEditDone)="editDone($event)" [data]="data" [primaryKey]="'ProductID'" [rowEditable]="true">
* </igx-grid>
* ```
*/
rowEditDone: EventEmitter<IGridEditDoneEventArgs>;
/**
* Emitted when row editing is canceled.
*
* @remarks
* Emits when [rowEditable]="true" & `endEdit(false)` is called.
* Emitted when changing hitting `Esc` key during cell editing and when click on the `Cancel` button
* in the row editing overlay.
* @example
* ```html
* <igx-grid #grid3 (rowEditExit)="editExit($event)" [data]="data" [primaryKey]="'ProductID'" [rowEditable]="true">
* </igx-grid>
* ```
*/
rowEditExit: EventEmitter<IGridEditDoneEventArgs>;
/**
* Emitted when a column is initialized.
*
* @remarks
* Returns the column object.
* @example
* ```html
* <igx-grid #grid [data]="localData" (columnInit)="initColumns($event)" [autoGenerate]="true"></igx-grid>
* ```
*/
columnInit: EventEmitter<IgxColumnComponent>;
/**
* @hidden @internal
*/
columnsAutogenerated: EventEmitter<IColumnsAutoGeneratedEventArgs>;
/**
* Emitted before sorting expressions are applied.
*
* @remarks
* Returns an `ISortingEventArgs` object. `sortingExpressions` key holds the sorting expressions.
* @example
* ```html
* <igx-grid #grid [data]="localData" [autoGenerate]="true" (sorting)="sorting($event)"></igx-grid>
* ```
*/
sorting: EventEmitter<ISortingEventArgs>;
/**
* Emitted after sorting is completed.
*
* @remarks
* Returns the sorting expression.
* @example
* ```html
* <igx-grid #grid [data]="localData" [autoGenerate]="true" (sortingDone)="sortingDone($event)"></igx-grid>
* ```
*/
sortingDone: EventEmitter<ISortingExpression<any> | ISortingExpression<any>[]>;
/**
* Emitted before filtering expressions are applied.
*
* @remarks
* Returns an `IFilteringEventArgs` object. `filteringExpressions` key holds the filtering expressions for the column.
* @example
* ```html
* <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true" (filtering)="filtering($event)"></igx-grid>
* ```
*/
filtering: EventEmitter<IFilteringEventArgs>;
/**
* Emitted after filtering is performed through the UI.
*
* @remarks
* Returns the filtering expressions tree of the column for which filtering was performed.
* @example
* ```html
* <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true" (filteringDone)="filteringDone($event)"></igx-grid>
* ```
*/
filteringDone: EventEmitter<IFilteringExpressionsTree>;
/**
* Emitted when a row is added.
*
* @remarks
* Returns the data for the new `IgxGridRowComponent` object.
* @example
* ```html
* <igx-grid #grid [data]="localData" (rowAdded)="rowAdded($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
* ```
*/
rowAdded: EventEmitter<IRowDataEventArgs>;
/**
* Emitted when a row is deleted.
*
* @remarks
* Returns an `IRowDataEventArgs` object.
* @example
* ```html
* <igx-grid #grid [data]="localData" (rowDeleted)="rowDeleted($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
* ```
*/
rowDeleted: EventEmitter<IRowDataEventArgs>;
/**
* Emmited when deleting a row.
*
* @remarks
* This event is cancelable.
* Returns an IRowDataCancellableEventArgs` object.
* @example
* ```html
* <igx-grid #grid [data]="localData" (rowDelete)="rowDelete($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
* ```
*/
rowDelete: EventEmitter<IRowDataCancelableEventArgs>;
/**
* Emmited just before the newly added row is commited.
*
* @remarks
* This event is cancelable.
* Returns an IRowDataCancellableEventArgs` object.
* @example
* ```html
* <igx-grid #grid [data]="localData" (rowAdd)="rowAdd($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
* ```
*/
rowAdd: EventEmitter<IRowDataCancelableEventArgs>;
/**
* Emitted after column is resized.
*
* @remarks
* Returns the `IgxColumnComponent` object's old and new width.
* @example
* ```html
* <igx-grid #grid [data]="localData" (columnResized)="resizing($event)" [autoGenerate]="true"></igx-grid>
* ```
*/
columnResized: EventEmitter<IColumnResizeEventArgs>;
/**
* Emitted when a cell or row is right clicked.
*
* @remarks
* Returns the `IgxGridCell` object if the immediate context menu target is a cell or an `IgxGridRow` otherwise.
* ```html
* <igx-grid #grid [data]="localData" (contextMenu)="contextMenu($event)" [autoGenerate]="true"></igx-grid>
* ```
*/
contextMenu: EventEmitter<IGridContextMenuEventArgs>;
/**
* Emitted when a cell is double clicked.
*
* @remarks
* Returns the `IgxGridCell` object.
* @example
* ```html
* <igx-grid #grid [data]="localData" (doubleClick)="dblClick($event)" [autoGenerate]="true"></igx-grid>
* ```
*/
doubleClick: EventEmitter<IGridCellEventArgs>;
/**
* Emitted before column visibility is changed.
*
* @remarks
* Args: { column: any, newValue: boolean }
* @example
* ```html
* <igx-grid (columnVisibilityChanging)="visibilityChanging($event)"></igx-grid>
* ```
*/
columnVisibilityChanging: EventEmitter<IColumnVisibilityChangingEventArgs>;
/**
* Emitted after column visibility is changed.
*
* @remarks
* Args: { column: IgxColumnComponent, newValue: boolean }
* @example
* ```html
* <igx-grid (columnVisibilityChanged)="visibilityChanged($event)"></igx-grid>
* ```
*/
columnVisibilityChanged: EventEmitter<IColumnVisibilityChangedEventArgs>;
/**
* Emitted when column moving starts.
*
* @remarks
* Returns the moved `IgxColumnComponent` object.
* @example
* ```html
* <igx-grid (columnMovingStart)="movingStart($event)"></igx-grid>
* ```
*/
columnMovingStart: EventEmitter<IColumnMovingStartEventArgs>;
/**
* Emitted during the column moving operation.
*
* @remarks
* Returns the source and target `IgxColumnComponent` objects. This event is cancelable.
* @example
* ```html
* <igx-grid (columnMoving)="moving($event)"></igx-grid>
* ```
*/
columnMoving: EventEmitter<IColumnMovingEventArgs>;
/**
* Emitted when column moving ends.
*
* @remarks
* Returns the source and target `IgxColumnComponent` objects.
* @example
* ```html
* <igx-grid (columnMovingEnd)="movingEnds($event)"></igx-grid>
* ```
*/
columnMovingEnd: EventEmitter<IColumnMovingEndEventArgs>;
/**
* Emitted when keydown is triggered over element inside grid's body.
*
* @remarks
* This event is fired only if the key combination is supported in the grid.
* Return the target type, target object and the original event. This event is cancelable.
* @example
* ```html
* <igx-grid (gridKeydown)="customKeydown($event)"></igx-grid>
* ```
*/
gridKeydown: EventEmitter<IGridKeydownEventArgs>;
/**
* Emitted when start dragging a row.
*
* @remarks
* Return the dragged row.
*/
rowDragStart: EventEmitter<IRowDragStartEventArgs>;
/**
* Emitted when dropping a row.
*
* @remarks
* Return the dropped row.
*/
rowDragEnd: EventEmitter<IRowDragEndEventArgs>;
/**
* Emitted when a copy operation is executed.
*
* @remarks
* Fired only if copy behavior is enabled through the [`clipboardOptions`]{@link IgxGridBaseDirective#clipboardOptions}.
*/
gridCopy: EventEmitter<IGridClipboardEvent>;
/**
* @hidden @internal
*/
expansionStatesChange: EventEmitter<Map<any, boolean>>;
/** @hidden @internal */
selectedRowsChange: EventEmitter<any[]>;
/**
* Emitted when the expanded state of a row gets changed.
*
* @example
* ```html
* <igx-grid [data]="employeeData" (rowToggle)="rowToggle($event)" [autoGenerate]="true"></igx-grid>
* ```
*/
rowToggle: EventEmitter<IRowToggleEventArgs>;
/**
* Emitted when the pinned state of a row is changed.
*
* @example
* ```html
* <igx-grid [data]="employeeData" (rowPinning)="rowPin($event)" [autoGenerate]="true"></igx-grid>
* ```
*/
rowPinning: EventEmitter<IPinRowEventArgs>;
/**
* Emitted when the pinned state of a row is changed.
*
* @example
* ```html
* <igx-grid [data]="employeeData" (rowPinned)="rowPin($event)" [autoGenerate]="true"></igx-grid>
* ```
*/
rowPinned: EventEmitter<IPinRowEventArgs>;
/**
* Emmited when the active node is changed.
*
* @example
* ```
* <igx-grid [data]="data" [autoGenerate]="true" (activeNodeChange)="activeNodeChange($event)"></igx-grid>
* ```
*/
activeNodeChange: EventEmitter<IActiveNodeChangeEventArgs>;
/**
* Emitted before sorting is performed.
*
* @remarks
* Returns the sorting expressions.
* @example
* ```html
* <igx-grid #grid [data]="localData" [autoGenerate]="true" (sortingExpressionsChange)="sortingExprChange($event)"></igx-grid>
* ```
*/
sortingExpressionsChange: EventEmitter<ISortingExpression<any>[]>;
/**
* Emitted when an export process is initiated by the user.
*
* @example
* ```typescript
* toolbarExporting(event: IGridToolbarExportEventArgs){
* const toolbarExporting = event;
* }
* ```
*/
toolbarExporting: EventEmitter<IGridToolbarExportEventArgs>;
/**
* Emitted when making a range selection.
*
* @remarks
* Range selection can be made either through drag selection or through keyboard selection.
*/
rangeSelected: EventEmitter<GridSelectionRange>;
/** Emitted after the ngAfterViewInit hook. At this point the grid exists in the DOM */
rendered: EventEmitter<boolean>;
/**
* @hidden @internal
*/
localeChange: EventEmitter<boolean>;
/**
* Emitted before the grid's data view is changed because of a data operation, rebinding, etc.
*
* @example
* ```typescript
* <igx-grid #grid [data]="localData" [autoGenerate]="true" (dataChanging)='handleDataChangingEvent()'></igx-grid>
* ```
*/
dataChanging: EventEmitter<IForOfDataChangingEventArgs>;
/**
* Emitted after the grid's data view is changed because of a data operation, rebinding, etc.
*
* @example
* ```typescript
* <igx-grid #grid [data]="localData" [autoGenerate]="true" (dataChanged)='handleDataChangedEvent()'></igx-grid>
* ```
*/
dataChanged: EventEmitter<any>;
/**
* @hidden @internal
*/
addRowSnackbar: IgxSnackbarComponent;
/**
* @hidden @internal
*/
resizeLine: IgxGridColumnResizerComponent;
/**
* @hidden @internal
*/
loadingOverlay: IgxToggleDirective;
/**
* @hidden @internal
*/
loadingOutlet: IgxOverlayOutletDirective;
/**
* @hidden @internal
*/
columnList: QueryList<IgxColumnComponent>;
/** @hidden @internal */
protected actionStripComponents: QueryList<IgxActionStripToken>;
/** @hidden @internal */
get actionStrip(): IgxActionStripToken;
/**
* @hidden @internal
*/
excelStyleLoadingValuesTemplateDirective: IgxExcelStyleLoadingValuesTemplateDirective;
/** @hidden @internal */
emptyFilteredGridTemplate: TemplateRef<any>;
/** @hidden @internal */
emptyGridDefaultTemplate: TemplateRef<any>;
/**
* @hidden @internal
*/
loadingGridDefaultTemplate: TemplateRef<any>;
/**
* @hidden @internal
*/
parentVirtDir: IgxGridForOfDirective<any, any[]>;
/**
* @hidden
* @internal
*/
headSelectorsTemplates: QueryList<TemplateRef<IgxHeadSelectorTemplateContext>>;
/**
* @hidden
* @internal
*/
rowSelectorsTemplates: QueryList<TemplateRef<IgxRowSelectorTemplateContext>>;
/**
* @hidden
* @internal
*/
dragGhostCustomTemplates: QueryList<TemplateRef<IgxGridRowDragGhostContext>>;
/**
* Gets the custom template, if any, used for row drag ghost.
*/
get dragGhostCustomTemplate(): TemplateRef<IgxGridRowDragGhostContext>;
/**
* Sets a custom template for the row drag ghost.
*```html
* <ng-template #template igxRowDragGhost>
* <igx-icon>menu</igx-icon>
* </ng-template>
* ```
* ```typescript
* @ViewChild("'template'", {read: TemplateRef })
* public template: TemplateRef<any>;
* this.grid.dragGhostCustomTemplate = this.template;
* ```
*/
set dragGhostCustomTemplate(template: TemplateRef<IgxGridRowDragGhostContext>);
/**
* @hidden @internal
*/
verticalScrollContainer: IgxGridForOfDirective<any, any[]>;
/**
* @hidden @internal
*/
verticalScroll: IgxGridForOfDirective<any, any[]>;
/**
* @hidden @internal
*/
scr: ElementRef;
/** @hidden @internal */
headerSelectorBaseTemplate: TemplateRef<any>;
/**
* @hidden @internal
*/
footer: ElementRef;
/** @hidden @internal */
get headerContainer(): IgxGridForOfDirective<ColumnType, ColumnType[]>;
/** @hidden @internal */
get headerSelectorContainer(): ElementRef<HTMLElement>;
/** @hidden @internal */
get headerDragContainer(): ElementRef<HTMLElement>;
/** @hidden @internal */
get headerGroupContainer(): ElementRef<HTMLElement>;
/** @hidden @internal */
get filteringRow(): IgxGridFilteringRowComponent;
/** @hidden @internal */
theadRow: IgxGridHeaderRowComponent;
/** @hidden @internal */
groupArea: IgxGridGroupByAreaComponent;
/**
* @hidden @internal
*/
tbody: ElementRef;
protected tbodyContainer: ElementRef;
/**
* @hidden @internal
*/
pinContainer: ElementRef;
/**
* @hidden @internal
*/
tfoot: ElementRef<HTMLElement>;
/**
* @hidden @internal
*/
rowEditingOutletDirective: IgxOverlayOutletDirective;
/**
* @hidden @internal
*/
tmpOutlets: QueryList<any>;
/**
* @hidden
* @internal
*/
dragIndicatorIconBase: TemplateRef<any>;
/**
* @hidden @internal
*/
rowEditCustomDirectives: QueryList<TemplateRef<IgxGridRowEditTemplateContext>>;
/**
* @hidden @internal
*/
rowEditTextDirectives: QueryList<TemplateRef<IgxGridRowEditTextTemplateContext>>;
/**
* Gets the row edit text template.
*/
get rowEditTextTemplate(): TemplateRef<IgxGridRowEditTextTemplateContext>;
/**
* Sets the row edit text template.
*```html
* <ng-template #template igxRowEditText let-rowChangesCount>
* Changes: {{rowChangesCount}}
* </ng-template>
* ```
*```typescript
* @ViewChild('template', {read: TemplateRef })
* public template: TemplateRef<any>;
* this.grid.rowEditTextTemplate = this.template;
* ```
*/
set rowEditTextTemplate(template: TemplateRef<IgxGridRowEditTextTemplateContext>);
/**
* @hidden @internal
*/
rowAddText: TemplateRef<IgxGridEmptyTemplateContext>;
/**
* Gets the row add text template.
*/
get rowAddTextTemplate(): TemplateRef<IgxGridEmptyTemplateContext>;
/**
* Sets the row add text template.
*```html
* <ng-template #template igxRowAddText>
* Adding Row
* </ng-template>
* ```
*```typescript
* @ViewChild('template', {read: TemplateRef })
* public template: TemplateRef<any>;
* this.grid.rowAddTextTemplate = this.template;
* ```
*/
set rowAddTextTemplate(template: TemplateRef<IgxGridEmptyTemplateContext>);
/**
* @hidden @internal
*/
rowEditActionsDirectives: QueryList<TemplateRef<IgxGridRowEditActionsTemplateContext>>;
/**
* Gets the row edit actions template.
*/
get rowEditActionsTemplate(): TemplateRef<IgxGridRowEditActionsTemplateContext>;
/**
* Sets the row edit actions template.
*```html
* <ng-template #template igxRowEditActions let-endRowEdit>
* <button type="button" igxButton igxRowEditTabStop (click)="endRowEdit(false)">Cancel</button>
* <button type="button" igxButton igxRowEditTabStop (click)="endRowEdit(true)">Apply</button>
* </ng-template>
* ```
*```typescript
* @ViewChild('template', {read: TemplateRef })
* public template: TemplateRef<any>;
* this.grid.rowEditActionsTemplate = this.template;
* ```
*/
set rowEditActionsTemplate(template: TemplateRef<IgxGridRowEditActionsTemplateContext>);
/**
* The custom template, if any, that should be used when rendering a row expand indicator.
*/
protected rowExpandedIndicatorDirectiveTemplate: TemplateRef<IgxGridRowTemplateContext>;
/**
* Gets the row expand indicator template.
*/
get rowExpandedIndicatorTemplate(): TemplateRef<IgxGridRowTemplateContext>;
/**
* Sets the row expand indicator template.
*```html
*<ng-template igxRowExpandedIndicator>
* <igx-icon role="button">remove</igx-icon>
*</ng-template>
* ```
*```typescript
* @ViewChild('template', {read: TemplateRef })
* public template: TemplateRef<any>;
* this.grid.rowExpandedIndicatorTemplate = this.template;
* ```
*/
set rowExpandedIndicatorTemplate(template: TemplateRef<IgxGridRowTemplateContext>);
/**
* The custom template, if any, that should be used when rendering a row collapse indicator.
*/
protected rowCollapsedIndicatorDirectiveTemplate: TemplateRef<IgxGridRowTemplateContext>;
/**
* Gets the row collapse indicator template.
*/
get rowCollapsedIndicatorTemplate(): TemplateRef<IgxGridRowTemplateContext>;
/**
* Sets the row collapse indicator template.
*```html
*<ng-template igxRowCollapsedIndicator>
* <igx-icon role="button">add</igx-icon>
*</ng-template>
* ```
*```typescript
* @ViewChild('template', {read: TemplateRef })
* public template: TemplateRef<any>;
* this.grid.rowCollapsedIndicatorTemplate = this.template;
* ```
*/
set rowCollapsedIndicatorTemplate(template: TemplateRef<IgxGridRowTemplateContext>);
/**
* The custom template, if any, that should be used when rendering a header expand indicator.
*/
protected headerExpandedIndicatorDirectiveTemplate: TemplateRef<IgxGridTemplateContext>;
/**
* Gets the header expand indicator template.
*/
get headerExpandedIndicatorTemplate(): TemplateRef<IgxGridTemplateContext>;
/**
* Sets the header expand indicator template.
*```html
*<ng-template igxHeaderExpandedIndicator>
* <igx-icon role="button">remove</igx-icon>
*</ng-template>
* ```
*```typescript
* @ViewChild('template', {read: TemplateRef })
* public template: TemplateRef<any>;
* this.grid.headerExpandedIndicatorTemplate = this.template;
* ```
*/
set headerExpandedIndicatorTemplate(template: TemplateRef<IgxGridTemplateContext>);
/**
* The custom template, if any, that should be used when rendering a header collapse indicator.
*/
protected headerCollapsedIndicatorDirectiveTemplate: TemplateRef<IgxGridTemplateContext>;
/**
* Gets the row collapse indicator template.
*/
get headerCollapsedIndicatorTemplate(): TemplateRef<IgxGridTemplateContext>;
/**
* Sets the row collapse indicator template.
*```html
*<ng-template igxHeaderCollapsedIndicator>
* <igx-icon role="button">add</igx-icon>
*</ng-template>
* ```
*```typescript
* @ViewChild('template', {read: TemplateRef })
* public template: TemplateRef<any>;
* this.grid.headerCollapsedIndicatorTemplate = this.template;
* ```
*/
set headerCollapsedIndicatorTemplate(template: TemplateRef<IgxGridTemplateContext>);
/** @hidden @internal */
excelStyleHeaderIconDirectiveTemplate: TemplateRef<IgxGridHeaderTemplateContext>;
/**
* Gets the excel style header icon.
*/
get excelStyleHeaderIconTemplate(): TemplateRef<IgxGridHeaderTemplateContext>;
/**
* Sets the excel style header icon.
*```html
*<ng-template #template igxExcelStyleHeaderIcon>
* <igx-icon>filter_alt</igx-icon>
*</ng-template>
* ```
*```typescript
* @ViewChild('template', {read: TemplateRef })
* public template: TemplateRef<any>;
* this.grid.excelStyleHeaderIconTemplate = this.template;
* ```
*/
set excelStyleHeaderIconTemplate(template: TemplateRef<IgxGridHeaderTemplateContext>);
/**
* @hidden
* @internal
*/
sortAscendingHeaderIconDirectiveTemplate: TemplateRef<IgxGridHeaderTemplateContext>;
/**
* The custom template, if any, that should be used when rendering a header sorting indicator when columns are sorted in asc order.
*/
get sortAscendingHeaderIconTemplate(): TemplateRef<IgxGridHeaderTemplateContext>;
/**
* Sets a custom template that should be used when rendering a header sorting indicator when columns are sorted in asc order.
*```html
* <ng-template #template igxSortAscendingHeaderIcon>
* <igx-icon>expand_less</igx-icon>
* </ng-template>
* ```
* ```typescript
* @ViewChild("'template'", {read: TemplateRef })
* public template: TemplateRef<any>;
* this.grid.sortAscendingHeaderIconTemplate = this.template;
* ```
*/
set sortAscendingHeaderIconTemplate(template: TemplateRef<IgxGridHeaderTemplateContext>);
/** @hidden @internal */
sortDescendingHeaderIconDirectiveTemplate: TemplateRef<IgxGridHeaderTemplateContext>;
/**
* The custom template, if any, that should be used when rendering a header sorting indicator when columns are sorted in desc order.
*/
get sortDescendingHeaderIconTemplate(): TemplateRef<IgxGridHeaderTemplateContext>;
/**
* Sets a custom template that should be used when rendering a header sorting indicator when columns are sorted in desc order.
*```html
* <ng-template #template igxSortDescendingHeaderIcon>
* <igx-icon>expand_more</igx-icon>
* </ng-template>
* ```
* ```typescript
* @ViewChild("'template'", {read: TemplateRef })
* public template: TemplateRef<any>;
* this.grid.sortDescendingHeaderIconTemplate = this.template;
* ```
*/
set sortDescendingHeaderIconTemplate(template: TemplateRef<IgxGridHeaderTemplateContext>);
/**
* @hidden
* @internal
*/
sortHeaderIconDirectiveTemplate: TemplateRef<IgxGridHeaderTemplateContext>;
/**
* Gets custom template, if any, that should be used when rendering a header sorting indicator when columns are not sorted.
*/
get sortHeaderIconTemplate(): TemplateRef<IgxGridHeaderTemplateContext>;
/**
* Sets a custom template that should be used when rendering a header sorting indicator when columns are not sorted.
*```html
* <ng-template #template igxSortHeaderIcon>
* <igx-icon>unfold_more</igx-icon>
* </ng-template>
* ```
* ```typescript
* @ViewChild("'template'", {read: TemplateRef })
* public template: TemplateRef<any>;
* this.grid.sortHeaderIconTemplate = this.template;
* ```
*/
set sortHeaderIconTemplate(template: TemplateRef<IgxGridHeaderTemplateContext>);
/**
* @hidden
* @internal
*/
dragIndicatorIconTemplates: QueryList<TemplateRef<IgxGridEmptyTemplateContext>>;
/**
* @hidden @internal
*/
rowEditTabsDEFAULT: QueryList<IgxRowEditTabStopDirective>;
/**
* @hidden @internal
*/
rowEditTabsCUSTOM: QueryList<IgxRowEditTabStopDirective>;
/**
* @hidden @internal
*/
rowEditingOverlay: IgxToggleDirective;
/**
* @hidden @internal
*/
tabindex: number;
/**
* @hidden @internal
*/
hostRole: string;
/** @hidden @internal */
toolbar: QueryList<IgxGridToolbarComponent>;
/** @hidden @internal */
protected paginationComponents: QueryList<IgxPaginatorComponent>;
/**
* @hidden @internal
*/
protected _outletDirective: IgxOverlayOutletDirective;
/**
* @hidden @internal
* @igxElementsAnchor
*/
anchor: ViewContainerRef;
/**
* @hidden @internal
*/
protected defaultExpandedTemplate: TemplateRef<any>;
/**
* @hidden @internal
*/
protected defaultCollapsedTemplate: TemplateRef<any>;
/**
* @hidden @internal
*/
protected defaultESFHeaderIconTemplate: TemplateRef<any>;
protected _summaryRowList: QueryList<IgxSummaryRowComponent>;
private _rowList;
private _pinnedRowList;
/**
* @hidden @internal
*/
private defaultRowEditTemplate;
private _dataRowList;
protected baseClass: string;
/**
* Gets/Sets the resource strings.
*
* @remarks
* By default it uses EN resources.
*/
set resourceStrings(value: IGridResourceStrings);
get resourceStrings(): IGridResourceStrings;
/**
* Gets/Sets the filtering logic of the `IgxGridComponent`.
*
* @remarks
* The default is AND.
* @example
* ```html
* <igx-grid [data]="Data" [autoGenerate]="true" [filteringLogic]="filtering"></igx-grid>
* ```
*/
get filteringLogic(): FilteringLogic;
set filteringLogic(value: FilteringLogic);
/**
* Gets/Sets the filtering state.
*
* @example
* ```html
* <igx-grid #grid [data]="Data" [autoGenerate]="true" [(filteringExpressionsTree)]="model.filteringExpressions"></igx-grid>
* ```
* @remarks
* Supports two-way binding.
*/
get filteringExpressionsTree(): IFilteringExpressionsTree;
set filteringExpressionsTree(value: IFilteringExpressionsTree);
/**
* Gets/Sets the advanced filtering state.
*
* @example
* ```typescript
* let advancedFilteringExpressionsTree = this.grid.advancedFilteringExpressionsTree;
* this.grid.advancedFilteringExpressionsTree = logic;
* ```
*/
get advancedFilteringExpressionsTree(): IFilteringExpressionsTree;
set advancedFilteringExpressionsTree(value: IFilteringExpressionsTree);
/**
* Gets/Sets the locale.
*
* @remarks
* If not set, returns browser's language.
*/
get locale(): string;
set locale(value: string);
get pagingMode(): GridPagingMode;
set pagingMode(val: GridPagingMode);
/** @hidden @internal */
get page(): number;
set page(val: number);
/** @hidden @internal */
get perPage(): number;
set perPage(val: number);
/**
* Gets/Sets if the row selectors are hidden.
*
* @remarks
* By default row selectors are shown
*/
get hideRowSelectors(): boolean;
set hideRowSelectors(value: boolean);
/**
* Gets/Sets whether rows can be moved.
*
* @example
* ```html
* <igx-grid #grid [rowDraggable]="true"></igx-grid>
* ```
*/
get rowDraggable(): boolean;
set rowDraggable(val: boolean);
/**
* Gets/Sets the trigger for validators used when editing the grid.
*
* @example
* ```html
* <igx-grid #grid validationTrigger='blur'></igx-grid>
* ```
*/
validationTrigger: GridValidationTrigger;
/**
* @hidden
* @internal
*/
rowDragging: boolean;
/** @hidden @internal */
dragRowID: any;
/**
* Gets/Sets whether the rows are editable.
*
* @remarks
* By default it is set to false.
* @example
* ```html
* <igx-grid #grid [rowEditable]="true" [primaryKey]="'ProductID'" ></igx-grid>
* ```
*/
get rowEditable(): boolean;
set rowEditable(val: boolean);
/**
* Gets/Sets the height.
*
* @example
* ```html
* <igx-grid #grid [data]="Data" [height]="'305px'" [autoGenerate]="true"></igx-grid>
* ```
*/
get height(): string | null;
set height(value: string | null);
/**
* @hidden @internal
*/
get hostWidth(): any;
/**
* Gets/Sets the width of the grid.
*
* @example
* ```typescript
* let gridWidth = this.grid.width;
* ```
*/
get width(): string | null;
set width(value: string | null);
/** @hidden @internal */
get headerWidth(): number;
/**
* Gets/Sets the row height.
*
* @example
* ```html
* <igx-grid #grid [data]="localData" [rowHeight]="100" [autoGenerate]="true"></igx-grid>
* ```
*/
get rowHeight(): number;
set rowHeight(value: number | string);
/**
* Gets/Sets the default width of the columns.
*
* @example
* ```html
* <igx-grid #grid [data]="localData" [columnWidth]="100" [autoGenerate]="true"></igx-grid>
* ```
*/
get columnWidth(): string;
set columnWidth(value: string);
/**
* Get/Sets the message displayed when there are no records.
*
* @example
* ```html
* <igx-grid #grid [data]="Data" [emptyGridMessage]="'The grid is empty'" [autoGenerate]="true"></igx-grid>
* ```
*/
set emptyGridMessage(value: string);
get emptyGridMessage(): string;
/**
* Gets/Sets whether the grid is going to show a loading indicator.
*
* @example
* ```html
* <igx-grid #grid [data]="Data" [isLoading]="true" [autoGenerate]="true"></igx-grid>
* ```
*/
set isLoading(value: boolean);
get isLoading(): boolean;
/**
* Gets/Sets whether the columns should be auto-generated once again after the initialization of the grid
*
* @remarks
* This will allow to bind the grid to remote data and having auto-generated columns at the same time.
* Note that after generating the columns, this property would be disabled to avoid re-creating
* columns each time a new data is assigned.
* @example
* ```typescript
* this.grid.shouldGenerate = true;