-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathsmart-webcomponents-angular-grid.js.map
1 lines (1 loc) · 204 KB
/
smart-webcomponents-angular-grid.js.map
1
{"version":3,"file":"smart-webcomponents-angular-grid.js","sources":["ng://smart-webcomponents-angular/grid/smart.element.ts","ng://smart-webcomponents-angular/grid/smart.grid.ts","ng://smart-webcomponents-angular/grid/smart.grid.module.ts","ng://smart-webcomponents-angular/grid/smart-webcomponents-angular-grid.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n Smart: any;\n}\n}\n\n\nimport { ElementRef, Input, Output, EventEmitter } from '@angular/core';\nimport { ElementRenderMode } from './../index';\n\nexport class BaseElement {\n constructor(ref: ElementRef) {\n const that = this;\n this.nativeElement = ref.nativeElement as any;\n\n that.nativeElement.onAttached = () => {\n that.onAttach.emit(that.nativeElement);\n }\n\n that.nativeElement.onDetached = () => {\n that.onDetach.emit(that.nativeElement);\n }\n }\n\n @Output() onCreate: EventEmitter<any> = new EventEmitter();\n @Output() onReady: EventEmitter<any> = new EventEmitter();\n @Output() onAttach: EventEmitter<any> = new EventEmitter();\n @Output() onDetach: EventEmitter<any> = new EventEmitter();\n\n public nativeElement: any;\n\n public addEventListener(type: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions = false): void {\n this.nativeElement.addEventListener(type, listener, options);\n\t}\n\n\tpublic removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions = false): void {\n\t\tthis.nativeElement.removeEventListener(type, listener, options);\n\t}\n\n\tpublic dispatchEvent(event: Event): boolean {\n\t\treturn this.nativeElement.dispatchEvent(event);\n\t}\n\n\tpublic blur(): void {\n\t\tthis.nativeElement.blur();\n\t}\n\n\tpublic click(): void {\n\t\tthis.nativeElement.click();\n\t}\n\n\tpublic focus(options?: FocusOptions): void {\n\t\tthis.nativeElement.focus(options);\n\t}\n\n/** @description Sets or gets the language. Used in conjunction with the property messages. */\n\t@Input()\n\tget locale(): string {\n\t\treturn this.nativeElement ? this.nativeElement.locale : undefined;\n\t}\n\tset locale(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.locale = value : undefined;\n\t}\n\n\t/** @description Callback used to customize the format of the messages that are returned from the Localization Module. */\n\t@Input()\n\tget localizeFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.localizeFormatFunction : undefined;\n\t}\n\tset localizeFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.localizeFormatFunction = value : undefined;\n\t}\n\n\t/** @description Sets or gets an object specifying strings used in the widget that can be localized. Used in conjunction with the property locale. */\n\t@Input()\n\tget messages(): any {\n\t\treturn this.nativeElement ? this.nativeElement.messages : undefined;\n\t}\n\tset messages(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.messages = value : undefined;\n\t}\n\n\t/** @description Sets or gets the value indicating whether the element is aligned to support locales using right-to-left fonts. */\n\t@Input()\n\tget rightToLeft(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.rightToLeft : undefined;\n\t}\n\tset rightToLeft(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.rightToLeft = value : undefined;\n\t}\n\n\t/** @description Determines the theme. Theme defines the look of the element */\n\t@Input()\n\tget theme(): string {\n\t\treturn this.nativeElement ? this.nativeElement.theme : undefined;\n\t}\n\tset theme(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.theme = value : undefined;\n\t}\n}\n\nexport const Smart: any = window.Smart;\n\n","import { Grid } from './../index';\nimport { GridAppearanceAutoGenerateRowLabelMode, GridAppearanceAutoGenerateColumnLabelMode, GridResizeMode, GridClipboardAutoFillMode, HorizontalAlignment, VerticalAlignment, Position, GridColumnFilterMenuMode, GridColumnSortOrder, GridConditionalFormattingCondition, GridDataExportPageOrientation, GridDataSourceSettingsSanitizeHTML, GridDataSourceSettingsDataFieldDataType, GridDataSourceSettingsDataSourceType, GridEditingAction, LayoutPosition, GridCommandDisplayMode, GridEditingMode, GridEditingAddNewRowDisplayMode, GridFilteringFilterRowApplyMode, GridFilteringFilterMenuMode, GridGroupingExpandMode, GridGroupingRenderMode, GridPagerAutoEllipsis, Scrolling, GridSelectionMode, GridSelectionAction, GridSelectionCheckBoxesSelectAllMode, GridSortingMode, GridSortingCommandKey, GridAppearance, GridBehavior, GridLayout, GridClipboard, GridColumn, GridContextMenu, GridContextMenuDataSource, GridCommand, GridColumnMenu, GridColumnMenuDataSource, GridColumnGroup, GridConditionalFormatting, GridCharting, Dialog, GridCheckBoxes, GridDataExport, GridDataSourceSettings, GridDataSourceSettingsDataField, GridEditing, GridEditingCommandKeys, GridCommandKey, GridEditingCommandBar, GridEditingCommandBarDataSource, GridEditingCommandColumn, GridEditingCommandColumnDataSource, GridEditingAddNewRow, GridEditingAddNewColumn, GridFiltering, GridFilteringFilterRow, GridFilteringFilterMenu, GridFilteringFilterBuilder, GridGrouping, GridGroupingGroupBar, GridGroupingSummaryRow, GridUploadSettings, GridPaging, GridPagingSpinner, GridPager, GridPagerPageSizeSelector, GridPagerSummary, GridPagerNavigationButtons, GridPagerNavigationButtonsPrevNextButtons, GridPagerNavigationButtonsFirstLastButtons, GridPagerNavigationButtonsLabels, GridPagerNavigationInput, GridPagerPageIndexSelectors, GridRowDetail, GridColumnHeader, GridSummaryRow, GridStateSettings, GridGroupHeader, GridHeader, GridFooter, GridRow, GridCell, GridSelection, GridSelectionCheckBoxes, GridSorting, ElementRenderMode} from './../index';\nimport { DataAdapter, Chart } from './../index';\nimport { Component, Directive, AfterViewInit, ElementRef, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { BaseElement, Smart } from './smart.element';\nexport { GridAppearanceAutoGenerateRowLabelMode, GridAppearanceAutoGenerateColumnLabelMode, GridResizeMode, GridClipboardAutoFillMode, HorizontalAlignment, VerticalAlignment, Position, GridColumnFilterMenuMode, GridColumnSortOrder, GridConditionalFormattingCondition, GridDataExportPageOrientation, GridDataSourceSettingsSanitizeHTML, GridDataSourceSettingsDataFieldDataType, GridDataSourceSettingsDataSourceType, GridEditingAction, LayoutPosition, GridCommandDisplayMode, GridEditingMode, GridEditingAddNewRowDisplayMode, GridFilteringFilterRowApplyMode, GridFilteringFilterMenuMode, GridGroupingExpandMode, GridGroupingRenderMode, GridPagerAutoEllipsis, Scrolling, GridSelectionMode, GridSelectionAction, GridSelectionCheckBoxesSelectAllMode, GridSortingMode, GridSortingCommandKey, GridAppearance, GridBehavior, GridLayout, GridClipboard, GridColumn, GridContextMenu, GridContextMenuDataSource, GridCommand, GridColumnMenu, GridColumnMenuDataSource, GridColumnGroup, GridConditionalFormatting, GridCharting, Dialog, GridCheckBoxes, GridDataExport, GridDataSourceSettings, GridDataSourceSettingsDataField, GridEditing, GridEditingCommandKeys, GridCommandKey, GridEditingCommandBar, GridEditingCommandBarDataSource, GridEditingCommandColumn, GridEditingCommandColumnDataSource, GridEditingAddNewRow, GridEditingAddNewColumn, GridFiltering, GridFilteringFilterRow, GridFilteringFilterMenu, GridFilteringFilterBuilder, GridGrouping, GridGroupingGroupBar, GridGroupingSummaryRow, GridUploadSettings, GridPaging, GridPagingSpinner, GridPager, GridPagerPageSizeSelector, GridPagerSummary, GridPagerNavigationButtons, GridPagerNavigationButtonsPrevNextButtons, GridPagerNavigationButtonsFirstLastButtons, GridPagerNavigationButtonsLabels, GridPagerNavigationInput, GridPagerPageIndexSelectors, GridRowDetail, GridColumnHeader, GridSummaryRow, GridStateSettings, GridGroupHeader, GridHeader, GridFooter, GridRow, GridCell, GridSelection, GridSelectionCheckBoxes, GridSorting, ElementRenderMode} from './../index';\nexport { Smart } from './smart.element';\nexport { Grid } from './../index';\nexport { DataAdapter, Chart } from './../index';\n\n\n@Directive({\n\texportAs: 'smart-grid',\tselector: 'smart-grid, [smart-grid]'\n})\n\nexport class GridComponent extends BaseElement implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n\tconstructor(ref: ElementRef<Grid>) {\n\t\tsuper(ref);\n\t\tthis.nativeElement = ref.nativeElement as Grid;\n\t}\n\n\tprivate eventHandlers: any[] = [];\n\n\tpublic nativeElement: Grid;\n\t/** @description Creates the component on demand.\n\t * @param properties An optional object of properties, which will be added to the template binded ones.\n\t */\n\tpublic createComponent(properties = {}): any {\n \tthis.nativeElement = <Grid>document.createElement('smart-grid');\n\t\tfor (let propertyName in properties) { \n \t\t\tthis.nativeElement[propertyName] = properties[propertyName];\n\t\t}\n\t\treturn this.nativeElement;\n\t}\n\t/** @description An object containing settings related to the grid's appearance. */\n\t@Input()\n\tget appearance(): GridAppearance {\n\t\treturn this.nativeElement ? this.nativeElement.appearance : undefined;\n\t}\n\tset appearance(value: GridAppearance) {\n\t\tthis.nativeElement ? this.nativeElement.appearance = value : undefined;\n\t}\n\n\t/** @description An object containing settings related to the grid's behavior. */\n\t@Input()\n\tget behavior(): GridBehavior {\n\t\treturn this.nativeElement ? this.nativeElement.behavior : undefined;\n\t}\n\tset behavior(value: GridBehavior) {\n\t\tthis.nativeElement ? this.nativeElement.behavior = value : undefined;\n\t}\n\n\t/** @description An object containing settings related to the grid's layout. */\n\t@Input()\n\tget layout(): GridLayout {\n\t\treturn this.nativeElement ? this.nativeElement.layout : undefined;\n\t}\n\tset layout(value: GridLayout) {\n\t\tthis.nativeElement ? this.nativeElement.layout = value : undefined;\n\t}\n\n\t/** @description Sets or gets the language. Used in conjunction with the property messages. */\n\t@Input()\n\tget locale(): string {\n\t\treturn this.nativeElement ? this.nativeElement.locale : undefined;\n\t}\n\tset locale(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.locale = value : undefined;\n\t}\n\n\t/** @description The clipboard property is used to enable/disable clipboard operations with Ctrl+C, Ctrl+X and Ctrl+V keyboard navigations.. */\n\t@Input()\n\tget clipboard(): GridClipboard {\n\t\treturn this.nativeElement ? this.nativeElement.clipboard : undefined;\n\t}\n\tset clipboard(value: GridClipboard) {\n\t\tthis.nativeElement ? this.nativeElement.clipboard = value : undefined;\n\t}\n\n\t/** @description The columns property is used to describe all columns displayed in the grid. */\n\t@Input()\n\tget columns(): {label: string, dataField: string}[] | string[] | number | GridColumn[] {\n\t\treturn this.nativeElement ? this.nativeElement.columns : undefined;\n\t}\n\tset columns(value: {label: string, dataField: string}[] | string[] | number | GridColumn[]) {\n\t\tthis.nativeElement ? this.nativeElement.columns = value : undefined;\n\t}\n\n\t/** @description Context Menu is the drop-down menu displayed after right-clicking a Grid row. It allows you to delete row, edit cell or row depending on the edit mode. The 'contextMenuItemCustom' dataSource option allows you to add custom menu item to the context menu. You can replace the context menu by using the 'selector' property and setting it to ID of a Smart.Menu component. */\n\t@Input()\n\tget contextMenu(): GridContextMenu {\n\t\treturn this.nativeElement ? this.nativeElement.contextMenu : undefined;\n\t}\n\tset contextMenu(value: GridContextMenu) {\n\t\tthis.nativeElement ? this.nativeElement.contextMenu = value : undefined;\n\t}\n\n\t/** @description Column Menu is the drop-down menu displayed after clicking the column header's drop-down button, which is displayed when you hover the column header. It allows you to customize column settings. For example: Sort, Filter or Group the Grid by the current column. */\n\t@Input()\n\tget columnMenu(): GridColumnMenu {\n\t\treturn this.nativeElement ? this.nativeElement.columnMenu : undefined;\n\t}\n\tset columnMenu(value: GridColumnMenu) {\n\t\tthis.nativeElement ? this.nativeElement.columnMenu = value : undefined;\n\t}\n\n\t/** @description Describes the settings of the column groups. */\n\t@Input()\n\tget columnGroups(): GridColumnGroup[] {\n\t\treturn this.nativeElement ? this.nativeElement.columnGroups : undefined;\n\t}\n\tset columnGroups(value: GridColumnGroup[]) {\n\t\tthis.nativeElement ? this.nativeElement.columnGroups = value : undefined;\n\t}\n\n\t/** @description Sets or gets details about conditional formatting to be applied to the Grid's cells. */\n\t@Input()\n\tget conditionalFormatting(): GridConditionalFormatting[] {\n\t\treturn this.nativeElement ? this.nativeElement.conditionalFormatting : undefined;\n\t}\n\tset conditionalFormatting(value: GridConditionalFormatting[]) {\n\t\tthis.nativeElement ? this.nativeElement.conditionalFormatting = value : undefined;\n\t}\n\n\t/** @description Sets the Grid Charting Data Visualization. */\n\t@Input()\n\tget charting(): GridCharting {\n\t\treturn this.nativeElement ? this.nativeElement.charting : undefined;\n\t}\n\tset charting(value: GridCharting) {\n\t\tthis.nativeElement ? this.nativeElement.charting = value : undefined;\n\t}\n\n\t/** @description Sets the TreeGrid checkboxes. */\n\t@Input()\n\tget checkBoxes(): GridCheckBoxes {\n\t\treturn this.nativeElement ? this.nativeElement.checkBoxes : undefined;\n\t}\n\tset checkBoxes(value: GridCheckBoxes) {\n\t\tthis.nativeElement ? this.nativeElement.checkBoxes = value : undefined;\n\t}\n\n\t/** @description Sets the Grid Data Export options. */\n\t@Input()\n\tget dataExport(): GridDataExport {\n\t\treturn this.nativeElement ? this.nativeElement.dataExport : undefined;\n\t}\n\tset dataExport(value: GridDataExport) {\n\t\tthis.nativeElement ? this.nativeElement.dataExport = value : undefined;\n\t}\n\n\t/** @description Sets the grid's data source. The value of dataSource can be an instance of JQX.DataAdapter or an Array. */\n\t@Input()\n\tget dataSource(): any {\n\t\treturn this.nativeElement ? this.nativeElement.dataSource : undefined;\n\t}\n\tset dataSource(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.dataSource = value : undefined;\n\t}\n\n\t/** @description Sets the grid's data source settings when the dataSource property is set to an Array or URL. */\n\t@Input()\n\tget dataSourceSettings(): GridDataSourceSettings {\n\t\treturn this.nativeElement ? this.nativeElement.dataSourceSettings : undefined;\n\t}\n\tset dataSourceSettings(value: GridDataSourceSettings) {\n\t\tthis.nativeElement ? this.nativeElement.dataSourceSettings = value : undefined;\n\t}\n\n\t/** @description Describes the grid's editing settings. */\n\t@Input()\n\tget editing(): GridEditing {\n\t\treturn this.nativeElement ? this.nativeElement.editing : undefined;\n\t}\n\tset editing(value: GridEditing) {\n\t\tthis.nativeElement ? this.nativeElement.editing = value : undefined;\n\t}\n\n\t/** @description Describes the grid's filtering settings. */\n\t@Input()\n\tget filtering(): GridFiltering {\n\t\treturn this.nativeElement ? this.nativeElement.filtering : undefined;\n\t}\n\tset filtering(value: GridFiltering) {\n\t\tthis.nativeElement ? this.nativeElement.filtering = value : undefined;\n\t}\n\n\t/** @description Describes the grid's grouping settings. */\n\t@Input()\n\tget grouping(): GridGrouping {\n\t\treturn this.nativeElement ? this.nativeElement.grouping : undefined;\n\t}\n\tset grouping(value: GridGrouping) {\n\t\tthis.nativeElement ? this.nativeElement.grouping = value : undefined;\n\t}\n\n\t/** @description Sets the messages values. */\n\t@Input()\n\tget messages(): any {\n\t\treturn this.nativeElement ? this.nativeElement.messages : undefined;\n\t}\n\tset messages(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.messages = value : undefined;\n\t}\n\n\t/** @description Callback function(chart: JQX.Chart) called when the chart has been initialized. You can use this function to customize the Chart element settings. */\n\t@Input()\n\tget onCellValue(): {(cell: GridCell): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onCellValue : undefined;\n\t}\n\tset onCellValue(value: {(cell: GridCell): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onCellValue = value : undefined;\n\t}\n\n\t/** @description Callback function() called when the grid has been rendered. */\n\t@Input()\n\tget onCellUpdate(): {(cells: GridCell[], oldValues: any[], values: any[], confirm: {(commit: boolean): void}): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onCellUpdate : undefined;\n\t}\n\tset onCellUpdate(value: {(cells: GridCell[], oldValues: any[], values: any[], confirm: {(commit: boolean): void}): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onCellUpdate = value : undefined;\n\t}\n\n\t/** @description Callback function() called when the grid has been rendered for first time and bindings are completed. The component is ready. */\n\t@Input()\n\tget onCellRender(): {(cell: GridCell): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onCellRender : undefined;\n\t}\n\tset onCellRender(value: {(cell: GridCell): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onCellRender = value : undefined;\n\t}\n\n\t/** @description Sets or gets the rows CSS class rules. Different CSS class names are conditionally applied. Example: rowCSSRules: { 'cell-class-1': settings => settings.data.quantity === 5, 'cell-class-2': settings => settings.data.quantity < 5, 'cell-class-3': settings => settings.data.quantity > 5 }. The settings object contains the following properties: index, data, row, api. */\n\t@Input()\n\tget onBeforeInit(): {(): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onBeforeInit : undefined;\n\t}\n\tset onBeforeInit(value: {(): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onBeforeInit = value : undefined;\n\t}\n\n\t/** @description Sets or gets the id of the current user. Has to correspond to the id of an item from the users property/array. Depending on the current user, different privileges are enabled. If no current user is set, privileges depend on the element's properties. */\n\t@Input()\n\tget onInit(): {(): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onInit : undefined;\n\t}\n\tset onInit(value: {(): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onInit = value : undefined;\n\t}\n\n\t/** @description Sets the grid users. Expects an array with 'id', 'name' and optionally 'color' and 'image' properties. */\n\t@Input()\n\tget onAfterInit(): {(): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onAfterInit : undefined;\n\t}\n\tset onAfterInit(value: {(): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onAfterInit = value : undefined;\n\t}\n\n\t/** @description Sets the grid's image and filter upload settings for the image and attachment columns. */\n\t@Input()\n\tget onChartInit(): any {\n\t\treturn this.nativeElement ? this.nativeElement.onChartInit : undefined;\n\t}\n\tset onChartInit(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.onChartInit = value : undefined;\n\t}\n\n\t/** @description Describes the paging settings. */\n\t@Input()\n\tget onRender(): any {\n\t\treturn this.nativeElement ? this.nativeElement.onRender : undefined;\n\t}\n\tset onRender(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.onRender = value : undefined;\n\t}\n\n\t/** @description Describes the pager settings. */\n\t@Input()\n\tget onLoad(): any {\n\t\treturn this.nativeElement ? this.nativeElement.onLoad : undefined;\n\t}\n\tset onLoad(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.onLoad = value : undefined;\n\t}\n\n\t/** @description Sets the row details. */\n\t@Input()\n\tget onKey(): {(event: KeyboardEvent): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onKey : undefined;\n\t}\n\tset onKey(value: {(event: KeyboardEvent): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onKey = value : undefined;\n\t}\n\n\t/** @description Sets the scroll mode settings. */\n\t@Input()\n\tget onRowInit(): {(index: number, row: GridRow): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onRowInit : undefined;\n\t}\n\tset onRowInit(value: {(index: number, row: GridRow): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onRowInit = value : undefined;\n\t}\n\n\t/** @description Describes the column header settings. */\n\t@Input()\n\tget onRowDetailInit(): {(index: number, row: GridRow, details: HTMLElement): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onRowDetailInit : undefined;\n\t}\n\tset onRowDetailInit(value: {(index: number, row: GridRow, details: HTMLElement): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onRowDetailInit = value : undefined;\n\t}\n\n\t/** @description Describes the summary row settings. */\n\t@Input()\n\tget onRowDetailUpdated(): {(index: number, row: GridRow, details: HTMLElement): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onRowDetailUpdated : undefined;\n\t}\n\tset onRowDetailUpdated(value: {(index: number, row: GridRow, details: HTMLElement): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onRowDetailUpdated = value : undefined;\n\t}\n\n\t/** @description Sets the grid's state settings. */\n\t@Input()\n\tget onRowHistory(): {(index: number, row: GridRow, history: any[]): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onRowHistory : undefined;\n\t}\n\tset onRowHistory(value: {(index: number, row: GridRow, history: any[]): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onRowHistory = value : undefined;\n\t}\n\n\t/** @description Describes the settings for the group header. */\n\t@Input()\n\tget onRowStyle(): {(index: number, row: GridRow, history: any[]): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onRowStyle : undefined;\n\t}\n\tset onRowStyle(value: {(index: number, row: GridRow, history: any[]): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onRowStyle = value : undefined;\n\t}\n\n\t/** @description Describes the header settings of the grid. */\n\t@Input()\n\tget onRowInserted(): {(index: number[], row: GridRow[]): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onRowInserted : undefined;\n\t}\n\tset onRowInserted(value: {(index: number[], row: GridRow[]): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onRowInserted = value : undefined;\n\t}\n\n\t/** @description Describes the footer settings of the grid. */\n\t@Input()\n\tget onRowRemoved(): {(indexes: number[], rows: GridRow[]): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onRowRemoved : undefined;\n\t}\n\tset onRowRemoved(value: {(indexes: number[], rows: GridRow[]): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onRowRemoved = value : undefined;\n\t}\n\n\t/** @description Sets or gets the value indicating whether the element is aligned to support locales using right-to-left fonts. */\n\t@Input()\n\tget onRowUpdate(): {(index: number[], row: GridRow[], oldValues: any[], values: any[], confirm: {(commit: boolean): void}): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onRowUpdate : undefined;\n\t}\n\tset onRowUpdate(value: {(index: number[], row: GridRow[], oldValues: any[], values: any[], confirm: {(commit: boolean): void}): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onRowUpdate = value : undefined;\n\t}\n\n\t/** @description The rows property is used to describe all rows displayed in the grid. */\n\t@Input()\n\tget onRowUpdated(): {(index: number[], row: GridRow[]): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onRowUpdated : undefined;\n\t}\n\tset onRowUpdated(value: {(index: number[], row: GridRow[]): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onRowUpdated = value : undefined;\n\t}\n\n\t/** @description Describes the selection settings. */\n\t@Input()\n\tget onRowClass(): {(index: number, data: any, row: GridRow[]): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onRowClass : undefined;\n\t}\n\tset onRowClass(value: {(index: number, data: any, row: GridRow[]): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onRowClass = value : undefined;\n\t}\n\n\t/** @description Describes sorting settings. */\n\t@Input()\n\tget onCellClass(): {(index: number, dataField: string, cellValue: any, data: any, row: GridRow[]): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onCellClass : undefined;\n\t}\n\tset onCellClass(value: {(index: number, dataField: string, cellValue: any, data: any, row: GridRow[]): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onCellClass = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget onColumnInit(): {(index: number, column: GridColumn): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onColumnInit : undefined;\n\t}\n\tset onColumnInit(value: {(index: number, column: GridColumn): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onColumnInit = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget onColumnInserted(): {(index: number, column: GridColumn): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onColumnInserted : undefined;\n\t}\n\tset onColumnInserted(value: {(index: number, column: GridColumn): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onColumnInserted = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget onColumnRemoved(): {(index: number, column: GridColumn): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onColumnRemoved : undefined;\n\t}\n\tset onColumnRemoved(value: {(index: number, column: GridColumn): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onColumnRemoved = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget onColumnUpdated(): {(index: number, column: GridColumn): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onColumnUpdated : undefined;\n\t}\n\tset onColumnUpdated(value: {(index: number, column: GridColumn): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onColumnUpdated = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget onColumnClone(): {(dataField: string, cloneColumnDataField: string, index: number, duplicateCells: boolean): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onColumnClone : undefined;\n\t}\n\tset onColumnClone(value: {(dataField: string, cloneColumnDataField: string, index: number, duplicateCells: boolean): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onColumnClone = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget onCommand(): {(name: string, command: any, details: GridCell, event: Event | KeyboardEvent | PointerEvent, handled: boolean): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onCommand : undefined;\n\t}\n\tset onCommand(value: {(name: string, command: any, details: GridCell, event: Event | KeyboardEvent | PointerEvent, handled: boolean): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onCommand = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget rowCSSRules(): any {\n\t\treturn this.nativeElement ? this.nativeElement.rowCSSRules : undefined;\n\t}\n\tset rowCSSRules(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.rowCSSRules = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget currentUser(): string | number {\n\t\treturn this.nativeElement ? this.nativeElement.currentUser : undefined;\n\t}\n\tset currentUser(value: string | number) {\n\t\tthis.nativeElement ? this.nativeElement.currentUser = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget users(): any[] {\n\t\treturn this.nativeElement ? this.nativeElement.users : undefined;\n\t}\n\tset users(value: any[]) {\n\t\tthis.nativeElement ? this.nativeElement.users = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget uploadSettings(): GridUploadSettings {\n\t\treturn this.nativeElement ? this.nativeElement.uploadSettings : undefined;\n\t}\n\tset uploadSettings(value: GridUploadSettings) {\n\t\tthis.nativeElement ? this.nativeElement.uploadSettings = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget paging(): GridPaging {\n\t\treturn this.nativeElement ? this.nativeElement.paging : undefined;\n\t}\n\tset paging(value: GridPaging) {\n\t\tthis.nativeElement ? this.nativeElement.paging = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget pager(): GridPager {\n\t\treturn this.nativeElement ? this.nativeElement.pager : undefined;\n\t}\n\tset pager(value: GridPager) {\n\t\tthis.nativeElement ? this.nativeElement.pager = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget rowDetail(): GridRowDetail {\n\t\treturn this.nativeElement ? this.nativeElement.rowDetail : undefined;\n\t}\n\tset rowDetail(value: GridRowDetail) {\n\t\tthis.nativeElement ? this.nativeElement.rowDetail = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget scrolling(): Scrolling | string {\n\t\treturn this.nativeElement ? this.nativeElement.scrolling : undefined;\n\t}\n\tset scrolling(value: Scrolling | string) {\n\t\tthis.nativeElement ? this.nativeElement.scrolling = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget columnHeader(): GridColumnHeader {\n\t\treturn this.nativeElement ? this.nativeElement.columnHeader : undefined;\n\t}\n\tset columnHeader(value: GridColumnHeader) {\n\t\tthis.nativeElement ? this.nativeElement.columnHeader = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget summaryRow(): GridSummaryRow {\n\t\treturn this.nativeElement ? this.nativeElement.summaryRow : undefined;\n\t}\n\tset summaryRow(value: GridSummaryRow) {\n\t\tthis.nativeElement ? this.nativeElement.summaryRow = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget stateSettings(): GridStateSettings {\n\t\treturn this.nativeElement ? this.nativeElement.stateSettings : undefined;\n\t}\n\tset stateSettings(value: GridStateSettings) {\n\t\tthis.nativeElement ? this.nativeElement.stateSettings = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget groupHeader(): GridGroupHeader {\n\t\treturn this.nativeElement ? this.nativeElement.groupHeader : undefined;\n\t}\n\tset groupHeader(value: GridGroupHeader) {\n\t\tthis.nativeElement ? this.nativeElement.groupHeader = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget header(): GridHeader {\n\t\treturn this.nativeElement ? this.nativeElement.header : undefined;\n\t}\n\tset header(value: GridHeader) {\n\t\tthis.nativeElement ? this.nativeElement.header = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget footer(): GridFooter {\n\t\treturn this.nativeElement ? this.nativeElement.footer : undefined;\n\t}\n\tset footer(value: GridFooter) {\n\t\tthis.nativeElement ? this.nativeElement.footer = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget rightToLeft(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.rightToLeft : undefined;\n\t}\n\tset rightToLeft(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.rightToLeft = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget rows(): GridRow[] {\n\t\treturn this.nativeElement ? this.nativeElement.rows : undefined;\n\t}\n\tset rows(value: GridRow[]) {\n\t\tthis.nativeElement ? this.nativeElement.rows = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget selection(): GridSelection {\n\t\treturn this.nativeElement ? this.nativeElement.selection : undefined;\n\t}\n\tset selection(value: GridSelection) {\n\t\tthis.nativeElement ? this.nativeElement.selection = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget sorting(): GridSorting {\n\t\treturn this.nativeElement ? this.nativeElement.sorting : undefined;\n\t}\n\tset sorting(value: GridSorting) {\n\t\tthis.nativeElement ? this.nativeElement.sorting = value : undefined;\n\t}\n\n\t/** @description This event is triggered, when the edit begins. After the event occurs, editing starts. If you need to prevent the editing for specific cells, rows or columns, you can call event.preventDefault();.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tid, \tdataField, \trow, \tcolumn, \tcell, \tdata, \tvalue)\n\t* id - The edited row id.\n\t* dataField - The edited column data field.\n\t* row - The edited row.\n\t* column - The edited column.\n\t* cell - The edited cell.\n\t* data - The edited row's data.\n\t* value - The edited cell's value.\n\t*/\n\t@Output() onBeginEdit: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the Grid's header toolbar is displayed and the 'OK' button of a header dropdown is clicked. For example, when you open the columns customize panel, reorder columns and click the 'OK' button.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\ttype)\n\t* type - The type of dropdown. Possible values: 'filter', 'sort', 'search', 'group', 'format', 'customize'\n\t*/\n\t@Output() onBatchChange: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the Grid's header toolbar is displayed and the 'Cancel' button of a header dropdown is clicked.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\ttype)\n\t* type - The type of dropdown. Possible values: 'filter', 'sort', 'search', 'group', 'format', 'customize'\n\t*/\n\t@Output() onBatchCancel: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the selection is changed. When you select with a drag, the event is triggered when the drag starts and ends. \n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tstarted, \tfinished, \toriginalEvent)\n\t* started - The flag is <em>true</em>, when the selection starts. The flag is <em>false</em>, when the selection ends and when the user changes the selection by dragging.\n\t* finished - The flag is <em>true</em>, when the selection ends. The flag is <em>false</em>, when the selection starts and when the user changes the selection by dragging.\n\t* originalEvent - The original event object, which is 'pointer', 'touch' or 'mouse' Event object, depending on the device type and web browser\n\t*/\n\t@Output() onChange: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user clicks on the header of a column.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tcolumn, \tdataField, \toriginalEvent)\n\t* column - The clicked column.\n\t* dataField - The column's data field.\n\t* originalEvent - The original event object, which is 'pointer', 'touch' or 'mouse' Event object, depending on the device type and web browser\n\t*/\n\t@Output() onColumnClick: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user double clicks on the header of a column.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tcolumn, \tdataField, \toriginalEvent)\n\t* column - The double-clicked column.\n\t* dataField - The column's data field.\n\t* originalEvent - The original event object, which is 'pointer', 'touch' or 'mouse' Event object, depending on the device type and web browser\n\t*/\n\t@Output() onColumnDoubleClick: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user resized a column.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tcolumn, \tdataField, \toldWidth, \twidth)\n\t* column - The resized column.\n\t* dataField - The column's data field.\n\t* oldWidth - The old width of the column.\n\t* width - The new width of the column.\n\t*/\n\t@Output() onColumnResize: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user starts a column drag.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tcolumn, \tdataField, \tindex, \toriginalEvent)\n\t* column - The column.\n\t* dataField - The column's data field.\n\t* index - The column's index\n\t* originalEvent - The origianl Event object.\n\t*/\n\t@Output() onColumnDragStart: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user drags a column.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tcolumn, \tdataField, \tindex, \tdata, \toriginalEvent)\n\t* column - The column.\n\t* dataField - The column's data field.\n\t* index - The column's index\n\t* data - The dragging object. data.feedback and data.feedbackLine are HTML Elements which are displayed while the user drags. The object has error(), success() and data() methods which you can call to set the feedback state.\n\t* originalEvent - The origianl Event object.\n\t*/\n\t@Output() onColumnDragging: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user drops a column.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tcolumn, \tdataField, \tindex, \tnewIndex, \tdata, \toriginalEvent)\n\t* column - The column.\n\t* dataField - The column's data field.\n\t* index - The column's index\n\t* newIndex - The column's new index\n\t* data - The dragging object. data.feedback and data.feedbackLine are HTML Elements which are displayed while the user drags. The object has error(), success() and data() methods which you can call to set the feedback state.\n\t* originalEvent - The origianl Event object.\n\t*/\n\t@Output() onColumnDragEnd: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user reorders a column.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tcolumn, \tdataField, \tindex, \tnewIndex, \tdata, \toriginalEvent)\n\t* column - The column.\n\t* dataField - The column's data field.\n\t* index - The column's index\n\t* newIndex - The column's new index\n\t* data - The dragging object. data.feedback and data.feedbackLine are HTML Elements which are displayed while the user drags. The object has error(), success() and data() methods which you can call to set the feedback state.\n\t* originalEvent - The origianl Event object.\n\t*/\n\t@Output() onColumnReorder: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user enters a comment in the row edit dialog.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tid, \tcomment)\n\t* id - The row's id.\n\t* comment - The comment object. The comment object has 'text: string', 'id: string', 'userId: string | number', and 'time: date' fields. The 'text' is the comment's text. 'id' is the comment's unique id, 'userId' is the user's id who entered the comment and 'time' is a javascript date object.\n\t*/\n\t@Output() onCommentAdd: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user removes a comment in the row edit dialog.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tid, \tcomment)\n\t* id - The row's id.\n\t* comment - The comment object. The comment object has 'text: string', 'id: string', 'userId: string | number', and 'time: date' fields. The 'text' is the comment's text. 'id' is the comment's unique id, 'userId' is the user's id who entered the comment and 'time' is a javascript date object.\n\t*/\n\t@Output() onCommentRemove: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user clicks on a context menu item.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tid, \tdataField, \tcommand)\n\t* id - The row's id.\n\t* dataField - The column's data field.\n\t* command - Command function.\n\t*/\n\t@Output() onContextMenuItemClick: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user starts a row drag.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\trow, \tid, \tindex, \toriginalEvent)\n\t* row - The row.\n\t* id - The row's id\n\t* index - The row's index\n\t* originalEvent - The origianl Event object.\n\t*/\n\t@Output() onRowDragStart: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user drags a row.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\trow, \tid, \tindex, \tdata, \toriginalEvent)\n\t* row - The row.\n\t* id - The row's id\n\t* index - The row's index\n\t* data - The dragging object. data.feedback and data.feedbackLine are HTML Elements which are displayed while the user drags. The object has error(), success() and data() methods which you can call to set the feedback state.\n\t* originalEvent - The origianl Event object.\n\t*/\n\t@Output() onRowDragging: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user drags a row.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\trow, \tid, \tindex, \tnewIndex, \tdata, \toriginalEvent)\n\t* row - The row.\n\t* id - The row's id\n\t* index - The row's index\n\t* newIndex - The row's new index\n\t* data - The dragging object. data.feedback and data.feedbackLine are HTML Elements which are displayed while the user drags. The object has error(), success() and data() methods which you can call to set the feedback state.\n\t* originalEvent - The origianl Event object.\n\t*/\n\t@Output() onRowDragEnd: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user reorders a row.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\trow, \tid, \tindex, \tnewIndex, \tdata, \toriginalEvent)\n\t* row - The row.\n\t* id - The row's id\n\t* index - The row's index\n\t* newIndex - The row's new index\n\t* data - The dragging object. data.feedback and data.feedbackLine are HTML Elements which are displayed while the user drags. The object has error(), success() and data() methods which you can call to set the feedback state.\n\t* originalEvent - The origianl Event object.\n\t*/\n\t@Output() onRowReorder: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user expands a row of the grid. The Grid is in TreeGrid/Grouping mode.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\trow, \tid, \toriginalEvent)\n\t* row - The expanded row.\n\t* id - The row's id\n\t* originalEvent - The original event object, which is 'pointer', 'touch' or 'mouse' Event object, depending on the device type and web browser\n\t*/\n\t@Output() onRowExpand: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user collapsed a row of the grid. The Grid is in TreeGrid/Grouping mode.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\trow, \tid, \toriginalEvent)\n\t* row - The collapsed row. \n\t* id - The row's id\n\t* originalEvent - The original event object, which is 'pointer', 'touch' or 'mouse' Event object, depending on the device type and web browser\n\t*/\n\t@Output() onRowCollapse: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user clicks on a row of the grid.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\trow, \toriginalEvent, \tid, \tisRightClick, \tpageX, \tpageY)\n\t* row - The clicked row.\n\t* originalEvent - The original event object, which is 'pointer', 'touch' or 'mouse' Event object, depending on the device type and web browser\n\t* id - Gets the row id.\n\t* isRightClick - Gets whether the pointing device's right button is clicked.\n\t* pageX - Gets the click's X position.\n\t* pageY - Gets the click's Y position.\n\t*/\n\t@Output() onRowClick: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user double clicks on a row of the grid.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\trow, \toriginalEvent, \tid, \tisRightClick, \tpageX, \tpageY)\n\t* row - The double-clicked row.\n\t* originalEvent - The original event object, which is 'pointer', 'touch' or 'mouse' Event object, depending on the device type and web browser\n\t* id - Gets the row id.\n\t* isRightClick - Gets whether the pointing device's right button is clicked.\n\t* pageX - Gets the click's X position.\n\t* pageY - Gets the click's Y position.\n\t*/\n\t@Output() onRowDoubleClick: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user resized a row.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\trow, \tid, \toldHeight, \theight)\n\t* row - The resized row.\n\t* id - Gets the row id.\n\t* oldHeight - The old height of the row.\n\t* height - The new height of the row.\n\t*/\n\t@Output() onRowResize: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user clicks on the row header's star.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\trow, \toriginalEvent, \tid, \tvalue)\n\t* row - The clicked row.\n\t* originalEvent - The original event object, which is 'pointer', 'touch' or 'mouse' Event object, depending on the device type and web browser\n\t* id - Gets the row id.\n\t* value - Gets whether the row is starred or not.\n\t*/\n\t@Output() onRowStarred: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user clicks on a cell of the grid.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tcell, \toriginalEvent, \tid, \tdataField, \tisRightClick, \tpageX, \tpageY)\n\t* cell - The clicked cell.\n\t* originalEvent - The original event object, which is 'pointer', 'touch' or 'mouse' Event object, depending on the device type and web browser\n\t* id - Gets the row id.\n\t* dataField - Gets the column dataField.\n\t* isRightClick - Gets whether the pointing device's right button is clicked.\n\t* pageX - Gets the click's X position.\n\t* pageY - Gets the click's Y position.\n\t*/\n\t@Output() onCellClick: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user double clicks on a cell of the grid.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tcell, \toriginalEvent, \tid, \tdataField, \tisRightClick, \tpageX, \tpageY)\n\t* cell - The double-clicked cell. \n\t* originalEvent - The original event object, which is 'pointer', 'touch' or 'mouse' Event object, depending on the device type and web browser\n\t* id - Gets the row id.\n\t* dataField - Gets the column dataField.\n\t* isRightClick - Gets whether the pointing device's right button is clicked.\n\t* pageX - Gets the click's X position.\n\t* pageY - Gets the click's Y position.\n\t*/\n\t@Output() onCellDoubleClick: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the edit ends.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tid, \tdataField, \trow, \tcolumn, \tcell, \tdata, \tvalue)\n\t* id - The edited row id.\n\t* dataField - The edited column data field.\n\t* row - The edited row.\n\t* column - The edited column.\n\t* cell - The edited cell.\n\t* data - The edited row's data.\n\t* value - The edited cell's value.\n\t*/\n\t@Output() onEndEdit: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when a filter is added or removed.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tcolumns, \tdata, \texpressions)\n\t* columns - Array of columns.\n\t* data - Array of {dataField: string, filter: object}. <em>dataField</em> is the column's data field. <em>filter</em> is a FilterGroup object.\n\t* expressions - Array of {dataField: string, filter: string}. <em>dataField</em> is the column's data field. <em>filter</em> is a filter expression like 'startsWith B'. In each array item, you will have an object with column's name and filter string. Example: [['firstName', 'contains Andrew or contains Nancy'], ['quantity', '<= 3 and >= 8']], [['firstName', 'EQUAL' 'Andrew' or 'EQUAL' 'Antoni' or 'EQUAL' 'Beate']], [['lastName','CONTAINS' 'burke' or 'CONTAINS' 'peterson']]. Filter conditions used in the filter expressions: '=', 'EQUAL','<>', 'NOT_EQUAL', '!=', '<', 'LESS_THAN','>', 'GREATER_THAN', '<=', 'LESS_THAN_OR_EQUAL', '>=', 'GREATER_THAN_OR_EQUAL','starts with', 'STARTS_WITH','ends with', 'ENDS_WITH', '', 'EMPTY', 'CONTAINS','DOES_NOT_CONTAIN', 'NULL','NOT_NULL'\n\t*/\n\t@Output() onFilter: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the rows grouping is changed.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tgroups)\n\t* groups - Array of column data fields.\n\t*/\n\t@Output() onGroup: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the add new column dialog is opened.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tdataField)\n\t* dataField - The column data field.\n\t*/\n\t@Output() onOpenColumnDialog: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the add new column dialog is closed.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tdataField)\n\t* dataField - The column data field.\n\t*/\n\t@Output() onCloseColumnDialog: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the grid is resized.\n\t* @param event. The custom event. \t*/\n\t@Output() onResize: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when the user touches and holds on the row for at least 300ms.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\trow, \toriginalEvent)\n\t* row - The tapped row.\n\t* originalEvent - The original event object, which is 'pointer', 'touch' or 'mouse' Event object, depending on the device type and web browser\n\t*/\n\t@Output() onRowTap: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when the user touches and holds on the cell for at least 300ms.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tcell, \toriginalEvent)\n\t* cell - The tapped row.\n\t* originalEvent - The original event object, which is 'pointer', 'touch' or 'mouse' Event object, depending on the device type and web browser\n\t*/\n\t@Output() onCellTap: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user changes the pages.\n\t* @param event. The custom event. \t*/\n\t@Output() onPage: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when a sorting column is added or removed.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tcolumns, \tdata, \tsortDataFields, \tsortDataTypes, \tsortOrders, \tsortIndexes)\n\t* columns - Array of columns.\n\t* data - Array of {dataField: string, sortOrder: string, sortIndex: number}. <em>dataField</em> is the column's data field. <em>sortOrder</em> is 'asc' or 'desc', <em>sortIndex</em> is the index of the column in multi column sorting.\n\t* sortDataFields - Array of column data fields.\n\t* sortDataTypes - Array of column data types. The values in the array would be 'string', 'date', 'boolean' or 'number'.\n\t* sortOrders - Array of column orders. The values in the array would be 'asc' or 'desc'.\n\t* sortIndexes - Array of column sort indexes. When multiple sorting is applied the sort index is an important parameter as it specifies the priority of sorting.\n\t*/\n\t@Output() onSort: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user reaches the bottom of the grid.\n\t* @param event. The custom event. \t*/\n\t@Output() onScrollBottomReached: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered, when the user reaches the top of the grid.\n\t* @param event. The custom event. \t*/\n\t@Output() onScrollTopReached: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description Adds a row. When batch editing is enabled, the row is not saved until the batch edit is saved. \n\t* @param {any} data. row data matching the data source\n\t* @param {boolean} insertAtBottom?. Determines whether to add the new row to the bottom or top of the collection. The default value is 'true'\n\t* @param {{(row: GridRow): void}} callback?. Sets a callback function, which is called after the new row is added. The callback's argument is the new row.\n\t*/\n public addRow(data: any, insertAtBottom?: boolean, callback?: {(row: GridRow): void}): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.addRow(data, insertAtBottom, callback);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.addRow(data, insertAtBottom, callback);\n });\n }\n }\n\n\t/** @description Adds a new row and puts it into edit mode. When batch editing is enabled, the row is not saved until the batch edit is saved. \n\t* @param {string} position?. 'near' or 'far'\n\t* @returns {boolean}\n */\n\tpublic async addNewRow(position?): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.addNewRow(position);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Adds a new column. \n\t* @param {any} column. A Grid column object. See 'columns' property.\n\t* @returns {boolean}\n */\n\tpublic async addNewColumn(column): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.addNewColumn(column);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Adds a new unbound row to the top or bottom. Unbound rows are not part of the Grid's dataSource. They become part of the dataSource, after an unbound row is edited. \n\t* @param {number} count. The count of unbound rows.\n\t* @param {string} position?. 'near' or 'far'\n\t* @returns {boolean}\n */\n\tpublic async addUnboundRow(count, position?): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.addUnboundRow(count, position);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Adds a filter to a column. This method will apply a filter to the Grid data. Example for adding multiple filters to a column: grid.addFilter('lastName', ['CONTAINS \"burke\"', 'or', 'CONTAINS \"peterson\"']). Example for adding single filter to a column: grid.addFilter('lastName', 'CONTAINS \"burke\"'). Example for adding numeric filter: grid.addFilter('quantity', '<= 5') \n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t* @param {string} filter. Filter expression like: 'startsWith B'. Example 2: ['contains Andrew or contains Nancy'], Example 3: ['quantity', '<= 3 and >= 8']. Filter conditions which you can use in the expressions: '=', 'EQUAL','<>', 'NOT_EQUAL', '!=', '<', 'LESS_THAN','>', 'GREATER_THAN', '<=', 'LESS_THAN_OR_EQUAL', '>=', 'GREATER_THAN_OR_EQUAL','starts with', 'STARTS_WITH','ends with', 'ENDS_WITH', '', 'EMPTY', 'CONTAINS','DOES_NOT_CONTAIN', 'NULL','NOT_NULL'\n\t* @param {boolean} refreshFilters?. Set this to false, if you will use multiple 'addFilter' calls. By doing this, you will avoid unnecessary renders.\n\t*/\n public addFilter(dataField: string, filter: string, refreshFilters?: boolean): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.addFilter(dataField, filter, refreshFilters);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.addFilter(dataField, filter, refreshFilters);\n });\n }\n }\n\n\t/** @description Groups the Grid by a data field. This method will add a group to the Grid when grouping is enabled. \n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t*/\n public addGroup(dataField: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.addGroup(dataField);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.addGroup(dataField);\n });\n }\n }\n\n\t/** @description Sorts the Grid by a data field. This method will add a sorting to the Grid when sorting is enabled. \n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t* @param {string} sortOrder. column's sort order. Use 'asc' or 'desc'.\n\t*/\n public addSort(dataField: string, sortOrder: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.addSort(dataField, sortOrder);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.addSort(dataField, sortOrder);\n });\n }\n }\n\n\t/** @description Auto-sizes grid rows. This method will update the height of all Grid rows. \n\t*/\n public autoSizeRows(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.autoSizeRows();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.autoSizeRows();\n });\n }\n }\n\n\t/** @description Auto-sizes grid columns. This method will update the width of all Grid columns. \n\t*/\n public autoSizeColumns(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.autoSizeColumns();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.autoSizeColumns();\n });\n }\n }\n\n\t/** @description Auto-sizes grid column. This method will update the width of a Grid column by measuring the cells and column header label width. \n\t* @param {string} dataField?. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t*/\n public autoSizeColumn(dataField?: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.autoSizeColumn(dataField);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.autoSizeColumn(dataField);\n });\n }\n }\n\n\t/** @description This method returns true, if all rows in the Grid are selected. \n\t* @returns {boolean}\n */\n\tpublic async areAllRowsSelected(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.areAllRowsSelected();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Starts an update operation. This is appropriate when calling multiple methods or set multiple properties at once. \n\t*/\n public beginUpdate(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.beginUpdate();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.beginUpdate();\n });\n }\n }\n\n\t/** @description Begins row, cell or column. This method allows you to programmatically start a cell, row or column editing. After calling it, an editor HTMLElement will be created and displayed in the Grid. \n\t* @param {string | number} rowId. row bound id\n\t* @param {string} dataField?. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t*/\n public beginEdit(rowId: string | number, dataField?: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.beginEdit(rowId, dataField);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.beginEdit(rowId, dataField);\n });\n }\n }\n\n\t/** @description Clears all filters. Refreshes the view and updates all filter input components. \n\t*/\n public clearFilter(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.clearFilter();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.clearFilter();\n });\n }\n }\n\n\t/** @description Clears all data groups. Refreshes the view and updates the DataGrid component. \n\t*/\n public clearGroups(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.clearGroups();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.clearGroups();\n });\n }\n }\n\n\t/** @description Clears all sorting. Refreshes the view and updates the DataGrid component. \n\t*/\n public clearSort(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.clearSort();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.clearSort();\n });\n }\n }\n\n\t/** @description Clears the selection that user have made. All row, cell and column selection highlights will be removed. \n\t*/\n public clearSelection(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.clearSelection();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.clearSelection();\n });\n }\n }\n\n\t/** @description Cancels the editing. This method closes the cell editor and cancels the changes. \n\t*/\n public cancelEdit(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.cancelEdit();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.cancelEdit();\n });\n }\n }\n\n\t/** @description Checks a TreeGrid row. This method updates the row's check-box. \n\t* @param {string | number} rowId. row bound id\n\t*/\n public checkRow(rowId: string | number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.checkRow(rowId);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.checkRow(rowId);\n });\n }\n }\n\n\t/** @description Checks all TreeGrid or Grouping rows. This method updates all check-boxes in the TreeGrid or Grouping rows. \n\t*/\n public checkAllRows(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.checkAllRows();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.checkAllRows();\n });\n }\n }\n\n\t/** @description Clears the user selection and empties the data source. The Grid will display 'No Rows' in the view. \n\t*/\n public clearRows(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.clearRows();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.clearRows();\n });\n }\n }\n\n\t/** @description Closes the column drop-down menu. \n\t*/\n public closeMenu(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.closeMenu();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.closeMenu();\n });\n }\n }\n\n\t/** @description Collapses a TreeGrid or Grouping row. \n\t* @param {string | number} rowId. row bound id\n\t*/\n public collapseRow(rowId: string | number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.collapseRow(rowId);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.collapseRow(rowId);\n });\n }\n }\n\n\t/** @description Collapses all TreeGrid or Grouping rows. \n\t*/\n public collapseAllRows(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.collapseAllRows();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.collapseAllRows();\n });\n }\n }\n\n\t/** @description Creates a Chart, when charting is enabled. \n\t* @param {string} type. Chart's type\n\t* @param {any} dataSource?. Chart's data source\n\t*/\n public createChart(type: string, dataSource?: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.createChart(type, dataSource);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.createChart(type, dataSource);\n });\n }\n }\n\n\t/** @description Delete a row. When batch editing is enabled, the row is not saved until the batch edit is saved. \n\t* @param {string | number} rowId. row bound id\n\t* @param {{(row: GridRow): void}} callback?. Sets a callback function, which is called after the row is deleted. The callback's argument is the deleted row.\n\t*/\n public deleteRow(rowId: string | number, callback?: {(row: GridRow): void}): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.deleteRow(rowId, callback);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.deleteRow(rowId, callback);\n });\n }\n }\n\n\t/** @description Scrolls to a row or cell. This method scrolls to a row or cell, when scrolling is necessary. If pagination is enabled, it will automatically change the page. \n\t* @param {string | number} rowId. row bound id\n\t* @param {string} dataField?. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t* @returns {boolean}\n */\n\tpublic async ensureVisible(rowId, dataField?): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.ensureVisible(rowId, dataField);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Ends the editing. This method confirms all changes and closes the opened cell editor(s). \n\t*/\n public endEdit(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.endEdit();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.endEdit();\n });\n }\n }\n\n\t/** @description Ends the update operation. This method will resume the rendering and will refresh the Grid. \n\t* @param {boolean} refresh?. The flag that control the calls of the refresh method.\n\t*/\n public endUpdate(refresh?: boolean): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.endUpdate(refresh);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.endUpdate(refresh);\n });\n }\n }\n\n\t/** @description Expands a TreeGrid or Grouping row. For example, if you want to expand the first group, then its second sub grup, then the first sub sub group, you can use: grid.expandRow('0.1.0'); \n\t* @param {string | number} rowId. row bound id\n\t*/\n public expandRow(rowId: string | number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.expandRow(rowId);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.expandRow(rowId);\n });\n }\n }\n\n\t/** @description Expands rows to a given group level. For example 'grid.expandRowsToGroupLevel(1);' means that all groups at the root level will be expanded. \n\t* @param {number} level. row group level\n\t*/\n public expandRowsToGroupLevel(level: number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.expandRowsToGroupLevel(level);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.expandRowsToGroupLevel(level);\n });\n }\n }\n\n\t/** @description Expands all TreeGrid or Grouping rows. \n\t*/\n public expandAllRows(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.expandAllRows();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.expandAllRows();\n });\n }\n }\n\n\t/** @description Exports the Grid data to .XLSX, .PDF, .JSON, .XML, .CSV, .TSV, .HTML, .JPEG or .PNG. The method uses the options of the dataExport property. \n\t* @param {string} Dataformat. 'xlsx', 'pdf', 'json', 'xml', 'csv', 'tsv', 'html', 'png', 'jpeg'.\n\t*/\n public exportData(Dataformat: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.exportData(Dataformat);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.exportData(Dataformat);\n });\n }\n }\n\n\t/** @description Finds entries by using a query and returns an array of row ids. Example: const rows = grid.find('nancy'); returns all rows that have 'nancy' value. Example 2: const rows = grid.find('nancy, davolio'); returns all rows that have 'nancy' and 'davolio' values in the same row. Example 3: const rows = grid.find(5, 'quantity', '>'); returns all rows where the value of the 'quantity' field is > 5. \n\t* @param {string} query. Search query\n\t* @param {string} dataField?. Column data field.\n\t* @param {string} condition?. Conditions which you can use in the expressions: '=', 'EQUAL','<>', 'NOT_EQUAL', '!=', '<', 'LESS_THAN','>', 'GREATER_THAN', '<=', 'LESS_THAN_OR_EQUAL', '>=', 'GREATER_THAN_OR_EQUAL','starts with', 'STARTS_WITH','ends with', 'ENDS_WITH', '', 'EMPTY', 'CONTAINS','DOES_NOT_CONTAIN', 'NULL','NOT_NULL'\n\t* @returns {any[]}\n */\n\tpublic async find(query, dataField?, condition?): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.find(query, dataField, condition);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Finds entries by using a query and returns an array of cells. Each cell in the array is also an array in this format: [id, dataField, value]. Example: const cells = grid.findCells('nancy'); returns all cells that have 'nancy' value. Example 2: const cells = grid.findCells('nancy, davolio'); returns all cells that have 'nancy' and 'davolio' values. \n\t* @param {string} query. Search query. You can enter multiple search strings, by using ','. Example: 'nancy, davolio'\n\t* @returns {any[]}\n */\n\tpublic async findCells(query): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.findCells(query);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Navigates to a page, when paging is enabled. \n\t* @param {number} index. page index\n\t*/\n public goToPage(index: number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.goToPage(index);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.goToPage(index);\n });\n }\n }\n\n\t/** @description Navigates to the next page, when grid paging is enabled. \n\t*/\n public nextPage(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.nextPage();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.nextPage();\n });\n }\n }\n\n\t/** @description Navigates to the prev page, when grid paging is enabled. \n\t*/\n public prevPage(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.prevPage();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.prevPage();\n });\n }\n }\n\n\t/** @description Navigates to the first page, when grid paging is enabled. \n\t*/\n public firstPage(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.firstPage();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.firstPage();\n });\n }\n }\n\n\t/** @description Navigates to the last page, when grid paging is enabled. \n\t*/\n public lastPage(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.lastPage();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.lastPage();\n });\n }\n }\n\n\t/** @description Focuses and selects a cell or row. The keyboard navigation starts from the focused cell or row. Any previously applied selection will be cleared after calling this method. \n\t* @param {string | number} rowId. row bound id\n\t* @param {string} dataField?. column bound data field\n\t*/\n public focusAndSelect(rowId: string | number, dataField?: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.focusAndSelect(rowId, dataField);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.focusAndSelect(rowId, dataField);\n });\n }\n }\n\n\t/** @description Iterates through each row in the grid and calls the callback for each row. This is similar to the forEach method on a JavaScript array. This is called for each row, ignoring grouping, filtering or sorting applied in the Grid. \n\t* @param {any} rowCallback. Callback function with a row object as parameter. Example: grid.forEachRow((row) => { console.log(row.id) });\n\t*/\n public forEachRow(rowCallback: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.forEachRow(rowCallback);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.forEachRow(rowCallback);\n });\n }\n }\n\n\t/** @description Similar to forEachRow. Iterates through each row in the grid and calls the callback for each row. This method takes into account filtering and sorting applied to the Grid. \n\t* @param {any} rowCallback. Callback function with a row object as parameter. Example: grid.forEachRow((row) => { console.log(row.id) });\n\t*/\n public forEachRowAfterFilterAndSort(rowCallback: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.forEachRowAfterFilterAndSort(rowCallback);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.forEachRowAfterFilterAndSort(rowCallback);\n });\n }\n }\n\n\t/** @description Gets the maximum position of the vertical scrollbar. You can use this method in combination with the setVerticalScrollValue to apply a new scroll position. \n\t* @returns {number}\n */\n\tpublic async getVerticalScrollMax(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getVerticalScrollMax();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets the position of the vertical scrollbar. \n\t* @returns {number}\n */\n\tpublic async getVerticalScrollValue(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getVerticalScrollValue();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets the maximum position of the horizontal scrollbar. You can use this method in combination with the setHorizontalScrollValue to apply a new scroll position. \n\t* @returns {number}\n */\n\tpublic async getHorizontalScrollMax(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getHorizontalScrollMax();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets the position of the horizontal scrollbar. \n\t* @returns {number}\n */\n\tpublic async getHorizontalScrollValue(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getHorizontalScrollValue();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets the columns array. Each item in the array contains the column properties which are dynamically set by the user interaction and the columns initialization data properties such as: 'label', 'dataField', 'dataType', 'visible'. \n\t* @returns {any}\n */\n\tpublic async getColumns(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getColumns();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets the editing cell(s), when the grid is editing. \n\t* @returns {any[]}\n */\n\tpublic async getEditCells(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getEditCells();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets the groups array. \n\t* @returns {any[]}\n */\n\tpublic async getGroups(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getGroups();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets an array of columns with applied sorting. Each member in the array is with column's data field used as a key and 'sortOrder' and 'sortIndex' as a value. \n\t* @returns {{[dataField: string]: { sortOrder: string, sortIndex: number }}}\n */\n\tpublic async getSortedColumns(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getSortedColumns();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets the selection. \n\t* @returns {any}\n */\n\tpublic async getSelection(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getSelection();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets an Array where each item is an Array of row id and row data. If the Grid is used in virtual mode, the row data parameter is empty object, because the data is loaded on demand. \n\t* @returns {any[]}\n */\n\tpublic async getSelectedRows(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getSelectedRows();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets the selected row ids. \n\t* @returns {any[]}\n */\n\tpublic async getSelectedRowIds(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getSelectedRowIds();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets the selected row indexes. \n\t* @returns {any[]}\n */\n\tpublic async getSelectedRowIndexes(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getSelectedRowIndexes();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets the selected cells. The method returns an array of cell. Each cell is an array with row id, column data field and cell value. \n\t* @returns {any[]}\n */\n\tpublic async getSelectedCells(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getSelectedCells();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets an array of columns with applied filters. \n\t* @returns {any}\n */\n\tpublic async getFilteredColumns(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getFilteredColumns();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets an array of rows, which are visible and match the applied filter. \n\t* @returns {any}\n */\n\tpublic async getVisibleRows(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getVisibleRows();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets the result of the getVisibleRows or the rows hierarchy, when the Grid is in TreeGrid/Grouping mode. \n\t* @returns {any}\n */\n\tpublic async getViewRows(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getViewRows();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets a JSON object with the following fields: 'sort', 'columns', 'expandedRows', 'filter', 'groups', 'paging', 'selectedCells', 'selectedrows'. The 'sort' represents an object which contains the sorted columns. Each key in that json object is the column's dataField item which has sortOrder: string and sortIndex: int properties. The sortOrder could be either 'asc' or 'desc'. Similarly, the filter object contains the filtered columns. Each key in that object is a column data field and each value has 'filters' array property with the applied filters to the column. The 'columns' property contains an array of columns with saved properties such as visible, width and freeze. The 'expandedRows' property contains the indexes of the expanded rows. The 'groups' property contains the grouped column data fields and the selectedCells and selectedRows include information about the cells or rows selection. These depend on the selection mode used in the Grid. The 'paging' object includes the sub-properties 'count', 'index' and 'size' which determine the count of pages, the current page's index and the page size. \n\t* @returns {any}\n */\n\tpublic async getState(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getState();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Saves the Grid state and returns a JSON object with the following fields: 'sort', 'columns', 'expandedRows', 'filter', 'groups', 'paging', 'selectedCells', 'selectedrows'. The 'sort' represents an object which contains the sorted columns. Each key in that json object is the column's dataField item which has sortOrder: string and sortIndex: int properties. The sortOrder could be either 'asc' or 'desc'. Similarly, the filter object contains the filtered columns. Each key in that object is a column data field and each value has 'filters' array property with the applied filters to the column. The 'columns' property contains an array of columns with saved properties such as visible, width and freeze. The 'expandedRows' property contains the indexes of the expanded rows. The 'groups' property contains the grouped column data fields and the selectedCells and selectedRows include information about the cells or rows selection. These depend on the selection mode used in the Grid. The 'paging' object includes the sub-properties 'count', 'index' and 'size' which determine the count of pages, the current page's index and the page size. \n\t* @param {string} name?. state name\n\t* @returns {any}\n */\n\tpublic async saveState(name?): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.saveState(name);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Loads a previously saved Grid state. You can pass a state name when there is a state which was previously saved with the saveState(stateName) method call or a state object returned by the saveState or getState method calls. The state object is required to be a JSON object with the following fields: 'sort', 'columns', 'expandedRows', 'filter', 'groups', 'paging', 'selectedCells', 'selectedrows'. The 'sort' represents an object which contains the sorted columns. Each key in that json object is the column's dataField item which has sortOrder: string and sortIndex: int properties. The sortOrder could be either 'asc' or 'desc'. Similarly, the filter object contains the filtered columns. Each key in that object is a column data field and each value has 'filters' array property with the applied filters to the column. The 'columns' property contains an array of columns with saved properties such as visible, width and freeze. The 'expandedRows' property contains the indexes of the expanded rows. The 'groups' property contains the grouped column data fields and the selectedCells and selectedRows include information about the cells or rows selection. These depend on the selection mode used in the Grid. The 'paging' object includes the sub-properties 'count', 'index' and 'size' which determine the count of pages, the current page's index and the page size. \n\t* @param {any} state. state name or state object\n\t* @returns {any}\n */\n\tpublic async loadState(state): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.loadState(state);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Resets the Grid state. \n\t*/\n public resetState(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.resetState();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.resetState();\n });\n }\n }\n\n\t/** @description Gets the changes from the batch edit. \n\t* @returns {{ upDated: [{ id: string, dataField: string, oldValue: Object, newValue: Object }], deleted: [{id: string, data: Object}], added: [{id: string, data: Object}] }}\n */\n\tpublic async getBatchEditChanges(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getBatchEditChanges();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets a value of a cell. \n\t* @param {string | number} rowId. row bound id\n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t* @returns {any}\n */\n\tpublic async getCellValue(rowId, dataField): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getCellValue(rowId, dataField);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets a column. Returns a Grid column object. \n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t* @returns {GridColumn}\n */\n\tpublic async getColumn(dataField): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getColumn(dataField);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets a value of a column. \n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t* @param {string} propertyName. The property name.\n\t* @returns {any}\n */\n\tpublic async getColumnProperty(dataField, propertyName): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getColumnProperty(dataField, propertyName);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets a value of a row. \n\t* @param {string | number} rowId. row bound id\n\t* @param {string} propertyName. The property name.\n\t* @returns {any}\n */\n\tpublic async getRowProperty(rowId, propertyName): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getRowProperty(rowId, propertyName);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets a row. Returns a Grid row object. \n\t* @param {string | number} rowId. row bound id\n\t* @returns {GridRow}\n */\n\tpublic async getRow(rowId): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getRow(rowId);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets a row by its index. Returns a Grid row object. \n\t* @param {number} rowIndex. row bound index\n\t* @returns {GridRow}\n */\n\tpublic async getRowByIndex(rowIndex): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getRowByIndex(rowIndex);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets the Data source data associated to the row. \n\t* @param {string | number} rowId. row bound id\n\t* @returns {any}\n */\n\tpublic async getRowData(rowId): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getRowData(rowId);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets the Row's id by a row index. \n\t* @param {number} rowIndex. row index\n\t* @returns {string | number}\n */\n\tpublic async getRowId(rowIndex): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getRowId(rowIndex);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets whether a column's drop-down menu is opened. \n\t* @returns {boolean}\n */\n\tpublic async hasMenu(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.hasMenu();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description This method returns true, if any rows in the Grid are selected. \n\t* @returns {boolean}\n */\n\tpublic async hasSelectedRows(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.hasSelectedRows();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Hides the Details of a Row, when row details are enabled. \n\t* @param {string | number} rowId. row bound id\n\t*/\n public hideDetail(rowId: string | number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.hideDetail(rowId);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.hideDetail(rowId);\n });\n }\n }\n\n\t/** @description Highlights a column. Highlights a Grid column. \n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t*/\n public highlightColumn(dataField: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.highlightColumn(dataField);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.highlightColumn(dataField);\n });\n }\n }\n\n\t/** @description Highlights a cell. Calling the method a second time toggle the highlight state. \n\t* @param {string | number} rowId. row bound id\n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t* @param {string} className?. CSS Class Name\n\t*/\n public highlightCell(rowId: string | number, dataField: string, className?: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.highlightCell(rowId, dataField, className);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.highlightCell(rowId, dataField, className);\n });\n }\n }\n\n\t/** @description Highlights a row. Calling the method a second time toggle the highlight state. \n\t* @param {string | number} rowId. row bound id\n\t* @param {string} className?. CSS Class Name\n\t*/\n public highlightRow(rowId: string | number, className?: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.highlightRow(rowId, className);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.highlightRow(rowId, className);\n });\n }\n }\n\n\t/** @description Inserts a row. When batch editing is enabled, the row is not saved until the batch edit is saved. \n\t* @param {any} data. row data matching the data source\n\t* @param {number} index?. Determines the insert index. The default value is the last index.\n\t* @param {{(row: GridRow): void}} callback?. Sets a callback function, which is called after the new row is added. The callback's argument is the new row.\n\t*/\n public insertRow(data: any, index?: number, callback?: {(row: GridRow): void}): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.insertRow(data, index, callback);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.insertRow(data, index, callback);\n });\n }\n }\n\n\t/** @description Opens a column drop-down menu. \n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t*/\n public openMenu(dataField: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.openMenu(dataField);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.openMenu(dataField);\n });\n }\n }\n\n\t/** @description Opens a context menu. Note that context menu should be enabled. \n\t* @param {number} left. Left Position.\n\t* @param {number} top. Top Position.\n\t*/\n public openContextMenu(left: number, top: number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.openContextMenu(left, top);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.openContextMenu(left, top);\n });\n }\n }\n\n\t/** @description Prints the Grid data. The method uses the options of the dataExport property. When printed, the Grid will not display any scrollbars so all rows and columns will be displayed. The grid will auto resize width and height to fit all contents. To customize the printing options, you can use the dataExport property. \n\t*/\n public print(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.print();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.print();\n });\n }\n }\n\n\t/** @description Renders the grid. This method will make a full-refresh like in the initial Grid creation. It will create Rows, Columns and Cells HTML Elements and then refresh the Grid layout. \n\t*/\n public refresh(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.refresh();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.refresh();\n });\n }\n }\n\n\t/** @description Refreshes the grid with the current property values. This method will refresh the Grid layout. \n\t*/\n public refreshView(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.refreshView();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.refreshView();\n });\n }\n }\n\n\t/** @description Refreshes the grid cells in view. The method is useful for live-updates of cell values. \n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t* @param {boolean} refreshFilters?. Set this to false, if you need to make multiple removeFilter calls.\n\t*/\n public removeFilter(dataField: string, refreshFilters?: boolean): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.removeFilter(dataField, refreshFilters);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.removeFilter(dataField, refreshFilters);\n });\n }\n }\n\n\t/** @description Removes a column filter. \n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t*/\n public removeGroup(dataField: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.removeGroup(dataField);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.removeGroup(dataField);\n });\n }\n }\n\n\t/** @description Removes a group by data field. This method will remove a group to the Grid when grouping is enabled. \n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t*/\n public removeSort(dataField: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.removeSort(dataField);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.removeSort(dataField);\n });\n }\n }\n\n\t/** @description Removes a sorting by data field. This method will remove a sorting from a Grid column. \n\t*/\n public refreshSort(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.refreshSort();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.refreshSort();\n });\n }\n }\n\n\t/** @description Re-sorts the Grid by using the already applied column sortings and re-renders the Grid. \n\t*/\n public revertBatchEdit(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.revertBatchEdit();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.revertBatchEdit();\n });\n }\n }\n\n\t/** @description Reverts the batch edit changes. This method cancels all changes made by the end-user. \n\t* @param {string | number} dataField. The data field or column index of the first grid column.\n\t* @param {string | number} referenceDataField. The data field or column index of the second grid column.\n\t* @param {boolean} insertAfter?. Determines whether to insert the first column after the reference column.\n\t*/\n public reorderColumns(dataField: string | number, referenceDataField: string | number, insertAfter?: boolean): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.reorderColumns(dataField, referenceDataField, insertAfter);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.reorderColumns(dataField, referenceDataField, insertAfter);\n });\n }\n }\n\n\t/** @description Reorders two DataGrid columns. \n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t* @param {string | null} sortOrder. column's sort order. Use 'asc', 'desc' or null.\n\t*/\n public sortBy(dataField: string, sortOrder: string | null): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.sortBy(dataField, sortOrder);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.sortBy(dataField, sortOrder);\n });\n }\n }\n\n\t/** @description Sorts the Grid by a data field. This method will add or remove sorting, when sorting is enabled. To remove the sorting, use 'null' for the sortOrder parameter. \n\t* @param {string | number} dataField. The data field or column index of the first grid column.\n\t* @param {string | number} referenceDataField. The data field or column index of the second grid column.\n\t*/\n public swapColumns(dataField: string | number, referenceDataField: string | number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.swapColumns(dataField, referenceDataField);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.swapColumns(dataField, referenceDataField);\n });\n }\n }\n\n\t/** @description Swaps two DataGrid columns. \n\t*/\n public saveBatchEdit(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.saveBatchEdit();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.saveBatchEdit();\n });\n }\n }\n\n\t/** @description Saves the batch edit changes. This method confirms the editing changes made by the end-user. \n\t* @param {string | number} rowId. row bound id\n\t* @param {string} dataField?. column bound data field\n\t*/\n public select(rowId: string | number, dataField?: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.select(rowId, dataField);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.select(rowId, dataField);\n });\n }\n }\n\n\t/** @description Selects a row, cell or column. \n\t* @param {string | number} rowId. row bound id\n\t* @param {string} dataField. column bound data field\n\t* @param {string | number} endRowId. row bound id\n\t* @param {string} endDataField. column bound data field\n\t*/\n public selectRange(rowId: string | number, dataField: string, endRowId: string | number, endDataField: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.selectRange(rowId, dataField, endRowId, endDataField);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.selectRange(rowId, dataField, endRowId, endDataField);\n });\n }\n }\n\n\t/** @description Selects a range of rows, cells or columns. The result of the method depends on the selection configuration of the Grid. \n\t* @param {string | number} rowId. row bound id\n\t* @param {string | number} endRowId. row bound id\n\t*/\n public selectRowsRange(rowId: string | number, endRowId: string | number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.selectRowsRange(rowId, endRowId);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.selectRowsRange(rowId, endRowId);\n });\n }\n }\n\n\t/** @description Selects a range of rows. \n\t* @param {(string | number)[]} rowId. Array of row ids\n\t*/\n public selectRows(rowId: (string | number)[]): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.selectRows(rowId);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.selectRows(rowId);\n });\n }\n }\n\n\t/** @description Selects multiple rows by their ids. \n\t*/\n public selectAllRows(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.selectAllRows();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.selectAllRows();\n });\n }\n }\n\n\t/** @description Selects all rows. \n\t* @param {number[]} rowIndex. Array of row indexes\n\t*/\n public selectRowsByIndex(rowIndex: number[]): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.selectRowsByIndex(rowIndex);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.selectRowsByIndex(rowIndex);\n });\n }\n }\n\n\t/** @description Selects multiple rows by their index. \n\t* @param {string} query. Search query\n\t* @param {string} dataField?. Column data field.\n\t* @param {string} condition?. Conditions which you can use in the expressions: '=', 'EQUAL','<>', 'NOT_EQUAL', '!=', '<', 'LESS_THAN','>', 'GREATER_THAN', '<=', 'LESS_THAN_OR_EQUAL', '>=', 'GREATER_THAN_OR_EQUAL','starts with', 'STARTS_WITH','ends with', 'ENDS_WITH', '', 'EMPTY', 'CONTAINS','DOES_NOT_CONTAIN', 'NULL','NOT_NULL'\n\t*/\n public selectRowsByQuery(query: string, dataField?: string, condition?: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.selectRowsByQuery(query, dataField, condition);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.selectRowsByQuery(query, dataField, condition);\n });\n }\n }\n\n\t/** @description Selects rows by using a query. Example: grid.selectRowsByQuery('nancy'); selects all rows that have 'nancy' value. Example 2: grid.selectRowsByQuery('nancy, davolio'); selects all rows that have 'nancy' and 'davolio' values in the same row. Example 3: grid.selectRowsByQuery(5, 'quantity', '>'); selects all rows where the value of the 'quantity' field is > 5. \n\t* @param {(string | number)[]} rowIds. Array of row ids\n\t* @param {string[]} dataFields. Array of data fields.\n\t*/\n public selectCells(rowIds: (string | number)[], dataFields: string[]): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.selectCells(rowIds, dataFields);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.selectCells(rowIds, dataFields);\n });\n }\n }\n\n\t/** @description Selects multiple cells by their ids and dataFields. Example: grid.selectCells([0, 1, 2], ['firstName', 'quantity', 'date']); - selects the 'firstName', 'quantity' and 'date' cells from the first, second and third rows. \n\t* @param {string} query. Search query\n\t*/\n public selectCellsByQuery(query: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.selectCellsByQuery(query);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.selectCellsByQuery(query);\n });\n }\n }\n\n\t/** @description Selects cells by using a query. Example: grid.selectCellsByQuery('nancy'); selects all cells that have 'nancy' value. Example 2: grid.selectCellsByQuery('nancy, davolio'); selects all cells that have 'nancy' and 'davolio' values in the same row. \n\t* @param {string | number} rowId. row bound id\n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t* @param {string | number | Date | boolean} value. New Cell value.\n\t*/\n public setCellValue(rowId: string | number, dataField: string, value: string | number | Date | boolean): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.setCellValue(rowId, dataField, value);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.setCellValue(rowId, dataField, value);\n });\n }\n }\n\n\t/** @description Sets a new value to a cell. \n\t* @param {GridColumn[]} columns. Columns array.\n\t*/\n public setColumns(columns: GridColumn[]): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.setColumns(columns);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.setColumns(columns);\n });\n }\n }\n\n\t/** @description Sets new columns to the Grid. The grid will redraw all the column headers, and then redraw all of the rows. By using 'setColumns', the grid will compare the new columns passed as argument to the method with existing columns. The Grid will automatically create new columns, keep old columns if they already exist and remove columns which are not in the 'setColumns' method argument. The benefit of that is that the state of the column like(sort, filter, width or other) will be kept, if the column exsits after the new columns are applied. \n\t* @param {string} dataField. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t* @param {string} propertyName. The column property's name.\n\t* @param {any} value. The new property value.\n\t*/\n public setColumnProperty(dataField: string, propertyName: string, value: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.setColumnProperty(dataField, propertyName, value);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.setColumnProperty(dataField, propertyName, value);\n });\n }\n }\n\n\t/** @description Sets a property to a column. \n\t* @param {string | number} rowId. row bound id\n\t* @param {string} propertyName. The row property's name.\n\t* @param {any} value. The new property value.\n\t*/\n public setRowProperty(rowId: string | number, propertyName: string, value: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.setRowProperty(rowId, propertyName, value);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.setRowProperty(rowId, propertyName, value);\n });\n }\n }\n\n\t/** @description Sets a property to a row. \n\t* @param {string | number} rowId. row bound id\n\t* @param {{background?: string, color?: string, fontSize?: string, fontFamily?: string, textDecoration?: string, fontStyle?: string, fontWeight?: string}} rowStyle. The row style object. The object may have one or all of the following properties: 'background', 'color', 'fontSize', 'fontFamily', 'textDecoration', 'fontStyle', 'fontWeight'.\n\t*/\n public setRowStyle(rowId: string | number, rowStyle: {background?: string, color?: string, fontSize?: string, fontFamily?: string, textDecoration?: string, fontStyle?: string, fontWeight?: string}): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.setRowStyle(rowId, rowStyle);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.setRowStyle(rowId, rowStyle);\n });\n }\n }\n\n\t/** @description Sets a style to a row. \n\t* @param {string | number} rowId. row bound id\n\t* @param {string} dataField. Column bound field name.\n\t* @param {{background?: string, color?: string, fontSize?: string, fontFamily?: string, textDecoration?: string, fontStyle?: string, fontWeight?: string}} rowStyle. The cell style object. The object may have one or all of the following properties: 'background', 'color', 'fontSize', 'fontFamily', 'textDecoration', 'fontStyle', 'fontWeight'.\n\t*/\n public setCellStyle(rowId: string | number, dataField: string, rowStyle: {background?: string, color?: string, fontSize?: string, fontFamily?: string, textDecoration?: string, fontStyle?: string, fontWeight?: string}): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.setCellStyle(rowId, dataField, rowStyle);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.setCellStyle(rowId, dataField, rowStyle);\n });\n }\n }\n\n\t/** @description Sets a style to a row. \n\t* @param {number} value. The new scroll position\n\t*/\n public setVerticalScrollValue(value: number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.setVerticalScrollValue(value);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.setVerticalScrollValue(value);\n });\n }\n }\n\n\t/** @description Sets the position of the vertical scrollbar. You can use this method in combination with the getVerticalScrollValue and getVerticalScrollMax. \n\t* @param {number} value. The new scroll position\n\t*/\n public setHorizontalScrollValue(value: number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.setHorizontalScrollValue(value);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.setHorizontalScrollValue(value);\n });\n }\n }\n\n\t/** @description Sets the position of the horizontal scrollbar. You can use this method in combination with the getHorizontalScrollValue and getHorizontalScrollMax. \n\t* @param {string | number} rowId. row bound id\n\t*/\n public showDetail(rowId: string | number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.showDetail(rowId);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.showDetail(rowId);\n });\n }\n }\n\n\t/** @description Shows the Details of a Row, when row details are enabled. \n\t* @param {string | number} rowId. row bound id\n\t* @param {any} data. row data matching the data source\n\t* @param {{(row: GridRow): void}} callback?. Sets a callback function, which is called after the row is updated. The callback's argument is the updated row.\n\t*/\n public updateRow(rowId: string | number, data: any, callback?: {(row: GridRow): void}): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.updateRow(rowId, data, callback);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.updateRow(rowId, data, callback);\n });\n }\n }\n\n\t/** @description Updates a row. When batch editing is enabled, the row is not saved until the batch edit is saved. \n\t* @param {string | number} rowId. row bound id\n\t* @param {string} dataField?. column bound data field. For example, if you have a column with dataField: 'firstName', set 'firstName' here.\n\t*/\n public unselect(rowId: string | number, dataField?: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.unselect(rowId, dataField);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.unselect(rowId, dataField);\n });\n }\n }\n\n\t/** @description Unselects a row, cell or column. \n\t* @param {string | number} rowId. row bound id\n\t*/\n public uncheckRow(rowId: string | number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.uncheckRow(rowId);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.uncheckRow(rowId);\n });\n }\n }\n\n\t/** @description Unchecks a TreeGrid row. Sets its check-box to false. \n\t*/\n public uncheckAllRows(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.uncheckAllRows();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.uncheckAllRows();\n });\n }\n }\n\n\t/** @description Unchecks all TreeGrid or Grouping rows. Sets all check-boxes to false. \n\t* @param {string | number} rowId. row bound id\n\t*/\n public toggleRow(rowId: string | number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.toggleRow(rowId);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.toggleRow(rowId);\n });\n }\n }\n\n\n\tget isRendered(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.isRendered : false;\n\t}\n\n\tngOnInit() {\n\t}\n\n ngAfterViewInit() {\n const that = this;\n\n that.onCreate.emit(that.nativeElement);\n\n\t\tSmart.Render();\n\n\t\tthis.nativeElement.classList.add('smart-angular');\n\n\t\tthis.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); });\n\t\tthis.listen();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unlisten();\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.nativeElement && this.nativeElement.isRendered) {\n\t\t\tfor (const propName in changes) {\n\t\t\t\tif (changes.hasOwnProperty(propName)) {\n\t\t\t\t\tthis.nativeElement[propName] = changes[propName].currentValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @description Add event listeners. */\n\tprivate listen(): void {\n const that = this;\n\t\tthat.eventHandlers['beginEditHandler'] = (event: CustomEvent) => { that.onBeginEdit.emit(event); }\n\t\tthat.nativeElement.addEventListener('beginEdit', that.eventHandlers['beginEditHandler']);\n\n\t\tthat.eventHandlers['batchChangeHandler'] = (event: CustomEvent) => { that.onBatchChange.emit(event); }\n\t\tthat.nativeElement.addEventListener('batchChange', that.eventHandlers['batchChangeHandler']);\n\n\t\tthat.eventHandlers['batchCancelHandler'] = (event: CustomEvent) => { that.onBatchCancel.emit(event); }\n\t\tthat.nativeElement.addEventListener('batchCancel', that.eventHandlers['batchCancelHandler']);\n\n\t\tthat.eventHandlers['changeHandler'] = (event: CustomEvent) => { that.onChange.emit(event); }\n\t\tthat.nativeElement.addEventListener('change', that.eventHandlers['changeHandler']);\n\n\t\tthat.eventHandlers['columnClickHandler'] = (event: CustomEvent) => { that.onColumnClick.emit(event); }\n\t\tthat.nativeElement.addEventListener('columnClick', that.eventHandlers['columnClickHandler']);\n\n\t\tthat.eventHandlers['columnDoubleClickHandler'] = (event: CustomEvent) => { that.onColumnDoubleClick.emit(event); }\n\t\tthat.nativeElement.addEventListener('columnDoubleClick', that.eventHandlers['columnDoubleClickHandler']);\n\n\t\tthat.eventHandlers['columnResizeHandler'] = (event: CustomEvent) => { that.onColumnResize.emit(event); }\n\t\tthat.nativeElement.addEventListener('columnResize', that.eventHandlers['columnResizeHandler']);\n\n\t\tthat.eventHandlers['columnDragStartHandler'] = (event: CustomEvent) => { that.onColumnDragStart.emit(event); }\n\t\tthat.nativeElement.addEventListener('columnDragStart', that.eventHandlers['columnDragStartHandler']);\n\n\t\tthat.eventHandlers['columnDraggingHandler'] = (event: CustomEvent) => { that.onColumnDragging.emit(event); }\n\t\tthat.nativeElement.addEventListener('columnDragging', that.eventHandlers['columnDraggingHandler']);\n\n\t\tthat.eventHandlers['columnDragEndHandler'] = (event: CustomEvent) => { that.onColumnDragEnd.emit(event); }\n\t\tthat.nativeElement.addEventListener('columnDragEnd', that.eventHandlers['columnDragEndHandler']);\n\n\t\tthat.eventHandlers['columnReorderHandler'] = (event: CustomEvent) => { that.onColumnReorder.emit(event); }\n\t\tthat.nativeElement.addEventListener('columnReorder', that.eventHandlers['columnReorderHandler']);\n\n\t\tthat.eventHandlers['commentAddHandler'] = (event: CustomEvent) => { that.onCommentAdd.emit(event); }\n\t\tthat.nativeElement.addEventListener('commentAdd', that.eventHandlers['commentAddHandler']);\n\n\t\tthat.eventHandlers['commentRemoveHandler'] = (event: CustomEvent) => { that.onCommentRemove.emit(event); }\n\t\tthat.nativeElement.addEventListener('commentRemove', that.eventHandlers['commentRemoveHandler']);\n\n\t\tthat.eventHandlers['contextMenuItemClickHandler'] = (event: CustomEvent) => { that.onContextMenuItemClick.emit(event); }\n\t\tthat.nativeElement.addEventListener('contextMenuItemClick', that.eventHandlers['contextMenuItemClickHandler']);\n\n\t\tthat.eventHandlers['rowDragStartHandler'] = (event: CustomEvent) => { that.onRowDragStart.emit(event); }\n\t\tthat.nativeElement.addEventListener('rowDragStart', that.eventHandlers['rowDragStartHandler']);\n\n\t\tthat.eventHandlers['rowDraggingHandler'] = (event: CustomEvent) => { that.onRowDragging.emit(event); }\n\t\tthat.nativeElement.addEventListener('rowDragging', that.eventHandlers['rowDraggingHandler']);\n\n\t\tthat.eventHandlers['rowDragEndHandler'] = (event: CustomEvent) => { that.onRowDragEnd.emit(event); }\n\t\tthat.nativeElement.addEventListener('rowDragEnd', that.eventHandlers['rowDragEndHandler']);\n\n\t\tthat.eventHandlers['rowReorderHandler'] = (event: CustomEvent) => { that.onRowReorder.emit(event); }\n\t\tthat.nativeElement.addEventListener('rowReorder', that.eventHandlers['rowReorderHandler']);\n\n\t\tthat.eventHandlers['rowExpandHandler'] = (event: CustomEvent) => { that.onRowExpand.emit(event); }\n\t\tthat.nativeElement.addEventListener('rowExpand', that.eventHandlers['rowExpandHandler']);\n\n\t\tthat.eventHandlers['rowCollapseHandler'] = (event: CustomEvent) => { that.onRowCollapse.emit(event); }\n\t\tthat.nativeElement.addEventListener('rowCollapse', that.eventHandlers['rowCollapseHandler']);\n\n\t\tthat.eventHandlers['rowClickHandler'] = (event: CustomEvent) => { that.onRowClick.emit(event); }\n\t\tthat.nativeElement.addEventListener('rowClick', that.eventHandlers['rowClickHandler']);\n\n\t\tthat.eventHandlers['rowDoubleClickHandler'] = (event: CustomEvent) => { that.onRowDoubleClick.emit(event); }\n\t\tthat.nativeElement.addEventListener('rowDoubleClick', that.eventHandlers['rowDoubleClickHandler']);\n\n\t\tthat.eventHandlers['rowResizeHandler'] = (event: CustomEvent) => { that.onRowResize.emit(event); }\n\t\tthat.nativeElement.addEventListener('rowResize', that.eventHandlers['rowResizeHandler']);\n\n\t\tthat.eventHandlers['rowStarredHandler'] = (event: CustomEvent) => { that.onRowStarred.emit(event); }\n\t\tthat.nativeElement.addEventListener('rowStarred', that.eventHandlers['rowStarredHandler']);\n\n\t\tthat.eventHandlers['cellClickHandler'] = (event: CustomEvent) => { that.onCellClick.emit(event); }\n\t\tthat.nativeElement.addEventListener('cellClick', that.eventHandlers['cellClickHandler']);\n\n\t\tthat.eventHandlers['cellDoubleClickHandler'] = (event: CustomEvent) => { that.onCellDoubleClick.emit(event); }\n\t\tthat.nativeElement.addEventListener('cellDoubleClick', that.eventHandlers['cellDoubleClickHandler']);\n\n\t\tthat.eventHandlers['endEditHandler'] = (event: CustomEvent) => { that.onEndEdit.emit(event); }\n\t\tthat.nativeElement.addEventListener('endEdit', that.eventHandlers['endEditHandler']);\n\n\t\tthat.eventHandlers['filterHandler'] = (event: CustomEvent) => { that.onFilter.emit(event); }\n\t\tthat.nativeElement.addEventListener('filter', that.eventHandlers['filterHandler']);\n\n\t\tthat.eventHandlers['groupHandler'] = (event: CustomEvent) => { that.onGroup.emit(event); }\n\t\tthat.nativeElement.addEventListener('group', that.eventHandlers['groupHandler']);\n\n\t\tthat.eventHandlers['openColumnDialogHandler'] = (event: CustomEvent) => { that.onOpenColumnDialog.emit(event); }\n\t\tthat.nativeElement.addEventListener('openColumnDialog', that.eventHandlers['openColumnDialogHandler']);\n\n\t\tthat.eventHandlers['closeColumnDialogHandler'] = (event: CustomEvent) => { that.onCloseColumnDialog.emit(event); }\n\t\tthat.nativeElement.addEventListener('closeColumnDialog', that.eventHandlers['closeColumnDialogHandler']);\n\n\t\tthat.eventHandlers['resizeHandler'] = (event: CustomEvent) => { that.onResize.emit(event); }\n\t\tthat.nativeElement.addEventListener('resize', that.eventHandlers['resizeHandler']);\n\n\t\tthat.eventHandlers['rowTapHandler'] = (event: CustomEvent) => { that.onRowTap.emit(event); }\n\t\tthat.nativeElement.addEventListener('rowTap', that.eventHandlers['rowTapHandler']);\n\n\t\tthat.eventHandlers['cellTapHandler'] = (event: CustomEvent) => { that.onCellTap.emit(event); }\n\t\tthat.nativeElement.addEventListener('cellTap', that.eventHandlers['cellTapHandler']);\n\n\t\tthat.eventHandlers['pageHandler'] = (event: CustomEvent) => { that.onPage.emit(event); }\n\t\tthat.nativeElement.addEventListener('page', that.eventHandlers['pageHandler']);\n\n\t\tthat.eventHandlers['sortHandler'] = (event: CustomEvent) => { that.onSort.emit(event); }\n\t\tthat.nativeElement.addEventListener('sort', that.eventHandlers['sortHandler']);\n\n\t\tthat.eventHandlers['scrollBottomReachedHandler'] = (event: CustomEvent) => { that.onScrollBottomReached.emit(event); }\n\t\tthat.nativeElement.addEventListener('scrollBottomReached', that.eventHandlers['scrollBottomReachedHandler']);\n\n\t\tthat.eventHandlers['scrollTopReachedHandler'] = (event: CustomEvent) => { that.onScrollTopReached.emit(event); }\n\t\tthat.nativeElement.addEventListener('scrollTopReached', that.eventHandlers['scrollTopReachedHandler']);\n\n\t}\n\n\t/** @description Remove event listeners. */\n\tprivate unlisten(): void {\n const that = this;\n\t\tif (that.eventHandlers['beginEditHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('beginEdit', that.eventHandlers['beginEditHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['batchChangeHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('batchChange', that.eventHandlers['batchChangeHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['batchCancelHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('batchCancel', that.eventHandlers['batchCancelHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['changeHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('change', that.eventHandlers['changeHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['columnClickHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('columnClick', that.eventHandlers['columnClickHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['columnDoubleClickHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('columnDoubleClick', that.eventHandlers['columnDoubleClickHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['columnResizeHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('columnResize', that.eventHandlers['columnResizeHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['columnDragStartHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('columnDragStart', that.eventHandlers['columnDragStartHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['columnDraggingHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('columnDragging', that.eventHandlers['columnDraggingHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['columnDragEndHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('columnDragEnd', that.eventHandlers['columnDragEndHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['columnReorderHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('columnReorder', that.eventHandlers['columnReorderHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['commentAddHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('commentAdd', that.eventHandlers['commentAddHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['commentRemoveHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('commentRemove', that.eventHandlers['commentRemoveHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['contextMenuItemClickHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('contextMenuItemClick', that.eventHandlers['contextMenuItemClickHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['rowDragStartHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('rowDragStart', that.eventHandlers['rowDragStartHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['rowDraggingHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('rowDragging', that.eventHandlers['rowDraggingHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['rowDragEndHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('rowDragEnd', that.eventHandlers['rowDragEndHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['rowReorderHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('rowReorder', that.eventHandlers['rowReorderHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['rowExpandHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('rowExpand', that.eventHandlers['rowExpandHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['rowCollapseHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('rowCollapse', that.eventHandlers['rowCollapseHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['rowClickHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('rowClick', that.eventHandlers['rowClickHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['rowDoubleClickHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('rowDoubleClick', that.eventHandlers['rowDoubleClickHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['rowResizeHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('rowResize', that.eventHandlers['rowResizeHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['rowStarredHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('rowStarred', that.eventHandlers['rowStarredHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['cellClickHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('cellClick', that.eventHandlers['cellClickHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['cellDoubleClickHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('cellDoubleClick', that.eventHandlers['cellDoubleClickHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['endEditHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('endEdit', that.eventHandlers['endEditHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['filterHandler']) {\n\t\t\tthat.nativeElement.onfilterHandler = null;\n\t\t}\n\n\t\tif (that.eventHandlers['groupHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('group', that.eventHandlers['groupHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['openColumnDialogHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('openColumnDialog', that.eventHandlers['openColumnDialogHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['closeColumnDialogHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('closeColumnDialog', that.eventHandlers['closeColumnDialogHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['resizeHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('resize', that.eventHandlers['resizeHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['rowTapHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('rowTap', that.eventHandlers['rowTapHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['cellTapHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('cellTap', that.eventHandlers['cellTapHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['pageHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('page', that.eventHandlers['pageHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['sortHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('sort', that.eventHandlers['sortHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['scrollBottomReachedHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('scrollBottomReached', that.eventHandlers['scrollBottomReachedHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['scrollTopReachedHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('scrollTopReached', that.eventHandlers['scrollTopReachedHandler']);\n\t\t}\n\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { GridComponent } from './smart.grid';\nimport { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\n\n@NgModule({\n declarations: [GridComponent],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\texports: [GridComponent]\n})\n\nexport class GridModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {BaseElement as ɵa} from './smart.element';"],"names":["tslib_1.__decorate"],"mappings":"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"}