-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathsmart-webcomponents-angular-table.js.map
1 lines (1 loc) · 99.5 KB
/
smart-webcomponents-angular-table.js.map
1
{"version":3,"file":"smart-webcomponents-angular-table.js","sources":["ng://smart-webcomponents-angular/table/smart.element.ts","ng://smart-webcomponents-angular/table/smart.table.ts","ng://smart-webcomponents-angular/table/smart.table.module.ts","ng://smart-webcomponents-angular/table/smart-webcomponents-angular-table.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 { Table } from './../index';\nimport { TableColumnDataType, TableColumnFreeze, TableConditionalFormattingCondition, TableConditionalFormattingFontFamily, TableConditionalFormattingFontSize, TableColumnSizeMode, TableDataSourceSettingsSanitizeHTML, TableDataSourceSettingsSanitizeHTMLRender, TableDataSourceSettingsDataFieldDataType, TableDataSourceSettingsDataSourceType, TableEditMode, TableLoadColumnStateBehavior, TablePageSize, TableSelectionMode, TableSortMode, TableColumnGroup, TableColumn, TableConditionalFormatting, TableDataSourceSettings, TableDataSourceSettingsDataField, ElementRenderMode} from './../index';\nimport { Component, Directive, AfterViewInit, ElementRef, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { BaseElement, Smart } from './smart.element';\nexport { TableColumnDataType, TableColumnFreeze, TableConditionalFormattingCondition, TableConditionalFormattingFontFamily, TableConditionalFormattingFontSize, TableColumnSizeMode, TableDataSourceSettingsSanitizeHTML, TableDataSourceSettingsSanitizeHTMLRender, TableDataSourceSettingsDataFieldDataType, TableDataSourceSettingsDataSourceType, TableEditMode, TableLoadColumnStateBehavior, TablePageSize, TableSelectionMode, TableSortMode, TableColumnGroup, TableColumn, TableConditionalFormatting, TableDataSourceSettings, TableDataSourceSettingsDataField, ElementRenderMode} from './../index';\nexport { Smart } from './smart.element';\nexport { Table } from './../index';\n\n\n@Directive({\n\texportAs: 'smart-table',\tselector: 'smart-table, [smart-table]'\n})\n\nexport class TableComponent extends BaseElement implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n\tconstructor(ref: ElementRef<Table>) {\n\t\tsuper(ref);\n\t\tthis.nativeElement = ref.nativeElement as Table;\n\t}\n\n\tprivate eventHandlers: any[] = [];\n\n\tpublic nativeElement: Table;\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 = <Table>document.createElement('smart-table');\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 Enables or disables auto load state from the browser's localStorage. Information about columns, expanded rows, selected rows, applied fitering, grouping, and sorted columns is loaded, based on the value of the stateSettings property. */\n\t@Input()\n\tget autoLoadState(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.autoLoadState : undefined;\n\t}\n\tset autoLoadState(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.autoLoadState = value : undefined;\n\t}\n\n\t/** @description Enables or disables auto save state to the browser's localStorage. Information about columns, expanded rows, selected rows, applied fitering, grouping, and sorted columns is saved, based on the value of the stateSettings property. */\n\t@Input()\n\tget autoSaveState(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.autoSaveState : undefined;\n\t}\n\tset autoSaveState(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.autoSaveState = value : undefined;\n\t}\n\n\t/** @description Sets or gets a list of column groups that constitute the column header hierarchy. Note: when column header hierarchy is created, column resizing and auto-sizing is not supported. */\n\t@Input()\n\tget columnGroups(): TableColumnGroup[] {\n\t\treturn this.nativeElement ? this.nativeElement.columnGroups : undefined;\n\t}\n\tset columnGroups(value: TableColumnGroup[]) {\n\t\tthis.nativeElement ? this.nativeElement.columnGroups = value : undefined;\n\t}\n\n\t/** @description Sets or gets the min width of columns when columnSizeMode is 'auto' or when resizing columns. This property has no effect on columns with programmatically set width. */\n\t@Input()\n\tget columnMinWidth(): string | number {\n\t\treturn this.nativeElement ? this.nativeElement.columnMinWidth : undefined;\n\t}\n\tset columnMinWidth(value: string | number) {\n\t\tthis.nativeElement ? this.nativeElement.columnMinWidth = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether the reordering of columns is enabled. */\n\t@Input()\n\tget columnReorder(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.columnReorder : undefined;\n\t}\n\tset columnReorder(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.columnReorder = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether the resizing of columns is enabled. Note: column sizes continue to adhere to the behavior of the standard HTML table element's table-layout: fixed, upon which smart-table is based. */\n\t@Input()\n\tget columnResize(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.columnResize : undefined;\n\t}\n\tset columnResize(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.columnResize = value : undefined;\n\t}\n\n\t/** @description This property affects the table sizing, when the columnSizeMode is 'default'. When 'columnResizeNormalize' is false, the Table will add an additional TH element, if all table columns have the 'width' property set. This is done in order to maintain your width settings. Otherwise, when the property is set to true, the Table will auto-fill the remaining space similar to the layout of standard HTML Tables. */\n\t@Input()\n\tget columnResizeNormalize(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.columnResizeNormalize : undefined;\n\t}\n\tset columnResizeNormalize(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.columnResizeNormalize = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether when resizing a column, a feedback showing the new column width in px will be displayed. */\n\t@Input()\n\tget columnResizeFeedback(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.columnResizeFeedback : undefined;\n\t}\n\tset columnResizeFeedback(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.columnResizeFeedback = value : undefined;\n\t}\n\n\t/** @description Describes the columns properties. */\n\t@Input()\n\tget columns(): TableColumn[] {\n\t\treturn this.nativeElement ? this.nativeElement.columns : undefined;\n\t}\n\tset columns(value: TableColumn[]) {\n\t\tthis.nativeElement ? this.nativeElement.columns = value : undefined;\n\t}\n\n\t/** @description Sets or gets details about conditional formatting to be applied to the Table's cells. */\n\t@Input()\n\tget conditionalFormatting(): TableConditionalFormatting[] {\n\t\treturn this.nativeElement ? this.nativeElement.conditionalFormatting : undefined;\n\t}\n\tset conditionalFormatting(value: TableConditionalFormatting[]) {\n\t\tthis.nativeElement ? this.nativeElement.conditionalFormatting = value : undefined;\n\t}\n\n\t/** @description Sets or gets the column menu. When you set this property to true, each column will have a column menu. From the column menu, you will be able to sort, filter, show or hide columns. */\n\t@Input()\n\tget columnMenu(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.columnMenu : undefined;\n\t}\n\tset columnMenu(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.columnMenu = value : undefined;\n\t}\n\n\t/** @description Sets or gets the column sizing behavior. In 'auto' mode Columns are automatically sized based on their content and the value of the columnMinWidth property, unless there is not enough space in the Table, in which case ellipses are shown. User-set static column width is still respected. In 'default' mode Columns are sized according to the rules of the standard HTML table element's table-layout: fixed. Custom width can also be applied to columns in this case by setting the column width property. */\n\t@Input()\n\tget columnSizeMode(): TableColumnSizeMode | string {\n\t\treturn this.nativeElement ? this.nativeElement.columnSizeMode : undefined;\n\t}\n\tset columnSizeMode(value: TableColumnSizeMode | string) {\n\t\tthis.nativeElement ? this.nativeElement.columnSizeMode = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether the \"Conditional Formatting\" button appears in the Table's header (toolbar). Clicking this button opens a dialog with formatting options. */\n\t@Input()\n\tget conditionalFormattingButton(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.conditionalFormattingButton : undefined;\n\t}\n\tset conditionalFormattingButton(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.conditionalFormattingButton = value : undefined;\n\t}\n\n\t/** @description This property determines the time in milliseconds after which the Table data is updated, when you vertically scroll. */\n\t@Input()\n\tget deferredScrollDelay(): number {\n\t\treturn this.nativeElement ? this.nativeElement.deferredScrollDelay : undefined;\n\t}\n\tset deferredScrollDelay(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.deferredScrollDelay = value : undefined;\n\t}\n\n\t/** @description When binding the dataSource property directly to an array (as opposed to an instance of JQX.DataAdapter), sets or gets the name of the data field in the source array to bind row ids to. */\n\t@Input()\n\tget dataRowId(): string {\n\t\treturn this.nativeElement ? this.nativeElement.dataRowId : undefined;\n\t}\n\tset dataRowId(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.dataRowId = value : undefined;\n\t}\n\n\t/** @description Determines the data source of the table component. The data source of the Table can be a regular Array or a DataAdapter instance. You can read more about the dataAdapter here - https://www.htmlelements.com/docs/data-adapter/. */\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(): TableDataSourceSettings {\n\t\treturn this.nativeElement ? this.nativeElement.dataSourceSettings : undefined;\n\t}\n\tset dataSourceSettings(value: TableDataSourceSettings) {\n\t\tthis.nativeElement ? this.nativeElement.dataSourceSettings = value : undefined;\n\t}\n\n\t/** @description Disables the interaction with the element. */\n\t@Input()\n\tget dataTransform(): { (record: any): void } {\n\t\treturn this.nativeElement ? this.nativeElement.dataTransform : undefined;\n\t}\n\tset dataTransform(value: { (record: any): void }) {\n\t\tthis.nativeElement ? this.nativeElement.dataTransform = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether the Table can be edited. */\n\t@Input()\n\tget disabled(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disabled : undefined;\n\t}\n\tset disabled(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disabled = value : undefined;\n\t}\n\n\t/** @description Sets or gets the edit mode. */\n\t@Input()\n\tget editing(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.editing : undefined;\n\t}\n\tset editing(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.editing = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether Row hierarchies are expanded by default, when created. Use this property when you want your groups to be expanded by default, when the Table is grouped or when you use the Table in tree mode. */\n\t@Input()\n\tget editMode(): TableEditMode | string {\n\t\treturn this.nativeElement ? this.nativeElement.editMode : undefined;\n\t}\n\tset editMode(value: TableEditMode | string) {\n\t\tthis.nativeElement ? this.nativeElement.editMode = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether the Table can be filtered. By default, the Table can be filtered by all string and numeric columns through a filter input in the header. */\n\t@Input()\n\tget expandHierarchy(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.expandHierarchy : undefined;\n\t}\n\tset expandHierarchy(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.expandHierarchy = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether the Table can be filtered via a filter row. */\n\t@Input()\n\tget filtering(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.filtering : undefined;\n\t}\n\tset filtering(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.filtering = value : undefined;\n\t}\n\n\t/** @description Sets or gets the Table's filter operator. It determines whether 'and' or 'or' is used when applying column filters - cellvalue1 && cellvalue2 vs cellvalue1 || cellvalue2 */\n\t@Input()\n\tget filterRow(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.filterRow : undefined;\n\t}\n\tset filterRow(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.filterRow = value : undefined;\n\t}\n\n\t/** @description Sets or gets the id of an HTML template element to be applied as a custom filter template. */\n\t@Input()\n\tget filterOperator(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.filterOperator : undefined;\n\t}\n\tset filterOperator(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.filterOperator = value : undefined;\n\t}\n\n\t/** @description Sets or gets the id of an HTML template element to be applied as footer row(s). */\n\t@Input()\n\tget filterTemplate(): string {\n\t\treturn this.nativeElement ? this.nativeElement.filterTemplate : undefined;\n\t}\n\tset filterTemplate(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.filterTemplate = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether Excel-like formulas can be passed as cell values. Formulas are always preceded by the = sign and are re-evaluated when cell values are changed. This feature depends on the third-party free plug-in formula-parser (the file formula-parser.min.js has to be referenced). */\n\t@Input()\n\tget footerRow(): string {\n\t\treturn this.nativeElement ? this.nativeElement.footerRow : undefined;\n\t}\n\tset footerRow(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.footerRow = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether the Table's footer is sticky/frozen. */\n\t@Input()\n\tget formulas(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.formulas : undefined;\n\t}\n\tset formulas(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.formulas = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether the Table's column header is sticky/frozen. */\n\t@Input()\n\tget freezeFooter(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.freezeFooter : undefined;\n\t}\n\tset freezeFooter(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.freezeFooter = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether grouping the Table is enabled. */\n\t@Input()\n\tget freezeHeader(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.freezeHeader : undefined;\n\t}\n\tset freezeHeader(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.freezeHeader = value : undefined;\n\t}\n\n\t/** @description Allows to customize the header of the element. The property accepts the id of an HTMLElement, HTMLTemplateElement, function or a string that will be parsed as HTML. When set to a function it contains one argument - the header element of the Table. */\n\t@Input()\n\tget grouping(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.grouping : undefined;\n\t}\n\tset grouping(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.grouping = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether navigation with the keyboard is enabled in the Table. */\n\t@Input()\n\tget groupFormatFunction(): { (settings: { value: any, row: string | number, column: string, template?: any }): void } {\n\t\treturn this.nativeElement ? this.nativeElement.groupFormatFunction : undefined;\n\t}\n\tset groupFormatFunction(value: { (settings: { value: any, row: string | number, column: string, template?: any }): void }) {\n\t\tthis.nativeElement ? this.nativeElement.groupFormatFunction = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether the checkboxes are displayed in the selection column. */\n\t@Input()\n\tget headerRow(): string | HTMLElement | Function {\n\t\treturn this.nativeElement ? this.nativeElement.headerRow : undefined;\n\t}\n\tset headerRow(value: string | HTMLElement | Function) {\n\t\tthis.nativeElement ? this.nativeElement.headerRow = value : undefined;\n\t}\n\n\t/** @description Sets or gets the behavior when loading column settings either via autoLoadState or loadState. Applicable only when stateSettings contains 'columns'. */\n\t@Input()\n\tget keyboardNavigation(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.keyboardNavigation : undefined;\n\t}\n\tset keyboardNavigation(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.keyboardNavigation = 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 hideSelectionColumn(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.hideSelectionColumn : undefined;\n\t}\n\tset hideSelectionColumn(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.hideSelectionColumn = value : undefined;\n\t}\n\n\t/** @description Sets or gets an object specifying strings used in the element that can be localized. Used in conjunction with the property locale. */\n\t@Input()\n\tget loadColumnStateBehavior(): TableLoadColumnStateBehavior | string {\n\t\treturn this.nativeElement ? this.nativeElement.loadColumnStateBehavior : undefined;\n\t}\n\tset loadColumnStateBehavior(value: TableLoadColumnStateBehavior | string) {\n\t\tthis.nativeElement ? this.nativeElement.loadColumnStateBehavior = value : undefined;\n\t}\n\n\t/** @description Sets or gets the page size (when paging is enabled). */\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 Sets or gets the current (zero-based) page index (when paging is enabled). */\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 whether paging is enabled. */\n\t@Input()\n\tget onCellRender(): { (data: any, dataField: string, value: any, cell: HTMLTableCellElement): void } {\n\t\treturn this.nativeElement ? this.nativeElement.onCellRender : undefined;\n\t}\n\tset onCellRender(value: { (data: any, dataField: string, value: any, cell: HTMLTableCellElement): void }) {\n\t\tthis.nativeElement ? this.nativeElement.onCellRender = 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 onColumnRender(): { (dataField: string, headerCell: HTMLTableCellElement): void } {\n\t\treturn this.nativeElement ? this.nativeElement.onColumnRender : undefined;\n\t}\n\tset onColumnRender(value: { (dataField: string, headerCell: HTMLTableCellElement): void }) {\n\t\tthis.nativeElement ? this.nativeElement.onColumnRender = value : undefined;\n\t}\n\n\t/** @description Sets or gets a string template to be applied as row detail template. Each cell value in the master row can be placed in the detail row by specifying the cell's data field in double curly brackets (e.g. {{price}}. The details can then be displayed by expanding the row by clicking it. */\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 or gets an array of the Table's selected row's ids. */\n\t@Input()\n\tget onLoad(): { (): void } {\n\t\treturn this.nativeElement ? this.nativeElement.onLoad : undefined;\n\t}\n\tset onLoad(value: { (): void }) {\n\t\tthis.nativeElement ? this.nativeElement.onLoad = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether row selection (via checkboxes) is enabled. */\n\t@Input()\n\tget onUpdateComplete(): { (): void } {\n\t\treturn this.nativeElement ? this.nativeElement.onUpdateComplete : undefined;\n\t}\n\tset onUpdateComplete(value: { (): void }) {\n\t\tthis.nativeElement ? this.nativeElement.onUpdateComplete = value : undefined;\n\t}\n\n\t/** @description Sets or gets the selection mode. Only applicable when selection is enabled. */\n\t@Input()\n\tget pageSize(): TablePageSize | string {\n\t\treturn this.nativeElement ? this.nativeElement.pageSize : undefined;\n\t}\n\tset pageSize(value: TablePageSize | string) {\n\t\tthis.nativeElement ? this.nativeElement.pageSize = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether row selection (via checkboxes) is hierarchical. When a parent row is selected, all sub rows are selected, too. */\n\t@Input()\n\tget pageIndex(): number {\n\t\treturn this.nativeElement ? this.nativeElement.pageIndex : undefined;\n\t}\n\tset pageIndex(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.pageIndex = value : undefined;\n\t}\n\n\t/** @description Determines the sorting mode of the Table. */\n\t@Input()\n\tget paging(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.paging : undefined;\n\t}\n\tset paging(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.paging = value : undefined;\n\t}\n\n\t/** @description Sets or gets what settings of the Table's state can be saved (by autoSaveState or saveState) or loaded (by autoLoadState or loadState). */\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 rowDetailTemplate(): string {\n\t\treturn this.nativeElement ? this.nativeElement.rowDetailTemplate : undefined;\n\t}\n\tset rowDetailTemplate(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.rowDetailTemplate = value : undefined;\n\t}\n\n\t/** @description Sets or gets whether when hovering a cell with truncated content, a tooltip with the full content will be shown. */\n\t@Input()\n\tget selected(): any[] {\n\t\treturn this.nativeElement ? this.nativeElement.selected : undefined;\n\t}\n\tset selected(value: any[]) {\n\t\tthis.nativeElement ? this.nativeElement.selected = value : undefined;\n\t}\n\n\t/** @description Enables or disables HTML virtualization. This functionality allows for only visible rows to be rendered, resulting in an increased Table performance. */\n\t@Input()\n\tget selection(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.selection : undefined;\n\t}\n\tset selection(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.selection = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget selectionMode(): TableSelectionMode | string {\n\t\treturn this.nativeElement ? this.nativeElement.selectionMode : undefined;\n\t}\n\tset selectionMode(value: TableSelectionMode | string) {\n\t\tthis.nativeElement ? this.nativeElement.selectionMode = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget selectionByHierarchy(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.selectionByHierarchy : undefined;\n\t}\n\tset selectionByHierarchy(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.selectionByHierarchy = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget sort(): { (dataSource: any, sortColumns: string[], directions: string[], defaultCompareFunctions: { (firstRecord: any, secondRecord: any): number }[]): void } {\n\t\treturn this.nativeElement ? this.nativeElement.sort : undefined;\n\t}\n\tset sort(value: { (dataSource: any, sortColumns: string[], directions: string[], defaultCompareFunctions: { (firstRecord: any, secondRecord: any): number }[]): void }) {\n\t\tthis.nativeElement ? this.nativeElement.sort = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget sortMode(): TableSortMode | string {\n\t\treturn this.nativeElement ? this.nativeElement.sortMode : undefined;\n\t}\n\tset sortMode(value: TableSortMode | string) {\n\t\tthis.nativeElement ? this.nativeElement.sortMode = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget stateSettings(): string[] {\n\t\treturn this.nativeElement ? this.nativeElement.stateSettings : undefined;\n\t}\n\tset stateSettings(value: string[]) {\n\t\tthis.nativeElement ? this.nativeElement.stateSettings = value : undefined;\n\t}\n\n\t/** @description undefined */\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\t/** @description undefined */\n\t@Input()\n\tget tooltip(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.tooltip : undefined;\n\t}\n\tset tooltip(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.tooltip = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget virtualization(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.virtualization : undefined;\n\t}\n\tset virtualization(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.virtualization = value : undefined;\n\t}\n\n\t/** @description This event is triggered when a cell edit operation has been initiated.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tid, \tdataField, \trow, \tvalue)\n\t* id - The id of the row.\n\t* dataField - The data field of the cell's column.\n\t* row - The data of the cell's row.\n\t* value - The data value of the cell.\n\t*/\n\t@Output() onCellBeginEdit: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a cell has been clicked.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tid, \tdataField, \trow, \tvalue, \toriginalEvent)\n\t* id - The cell's row id.\n\t* dataField - The data field of the cell's column.\n\t* row - The data of the cell's row.\n\t* value - The data value of the cell.\n\t* originalEvent - The 'click' event object.\n\t*/\n\t@Output() onCellClick: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a cell has been edited.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tid, \tdataField, \trow, \tvalue)\n\t* id - The id of the row.\n\t* dataField - The data field of the cell's column.\n\t* row - The new data of the cell's row.\n\t* value - The data value of the cell.\n\t*/\n\t@Output() onCellEndEdit: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when the selection is changed. Within the event handler you can get the selection by using the 'getSelection' method.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\ttype)\n\t* type - The type of action that initiated the selection change. Possible types: 'programmatic', 'interaction', 'remove'.\n\t*/\n\t@Output() onChange: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a row has been collapsed.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tid, \trecord)\n\t* id - The id of the collapsed row.\n\t* record - The data of the collapsed row.\n\t*/\n\t@Output() onCollapse: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a row has been expanded.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tid, \trecord)\n\t* id - The id of the expanded row.\n\t* record - The (aggregated) data of the expanded row.\n\t*/\n\t@Output() onExpand: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a column header cell has been clicked.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tdataField)\n\t* dataField - The data field of the cell's column.\n\t*/\n\t@Output() onColumnClick: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a column menu is closed.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tdataField)\n\t* dataField - The data field of the column.\n\t*/\n\t@Output() onCloseColumnMenu: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a column has been resized via dragging or double-click.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tdataField, \theaderCellElement, \twidth)\n\t* dataField - The data field of the column.\n\t* headerCellElement - The column's header cell HTML element.\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 a filtering-related action is made.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\taction, \tfilters)\n\t* action - The filtering action. Possible actions: 'add', 'remove'.\n\t* filters - The added filters. Only when action is 'add'.\n\t*/\n\t@Output() onFilter: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a grouping-related action is made.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\taction, \tdataField, \tlabel, \tpath)\n\t* action - The grouping action. Possible actions: 'add', 'collapse', 'expand', 'remove'.\n\t* dataField - The data field of the column whose grouping is modified.\n\t* label - The label of the group (only when collapsing/expanding).\n\t* path - The group's path (only when collapsing/expanding). The path includes the path to the expanded/collapsed group starting from the root group. The indexes are joined with '.'. This parameter is available when the 'action' is 'expand' or 'collapse'.\n\t*/\n\t@Output() onGroup: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a column menu is opened.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tdataField)\n\t* dataField - The data field of the column.\n\t*/\n\t@Output() onOpenColumnMenu: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a paging-related action is made.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\taction)\n\t* action - The paging action. Possible actions: 'pageIndexChange', 'pageSizeChange'.\n\t*/\n\t@Output() onPage: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a row edit operation has been initiated (only when editMode is 'row').\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tid, \trow)\n\t* id - The id of the row.\n\t* row - The data of the row.\n\t*/\n\t@Output() onRowBeginEdit: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a row has been edited (only when editMode is 'row').\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tid, \trow)\n\t* id - The id of the row.\n\t* row - The new data of the row.\n\t*/\n\t@Output() onRowEndEdit: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a column header cell has been clicked or sorting is applied programmatically using the Table API.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\tcolumns, \tsortDataFields, \tsortOrders, \tsortDataTypes, \ttype)\n\t* columns - An array with information about the columns the Table has been sorted by.\n\t* sortDataFields - An array with information about the data fields the Table has been sorted by.\n\t* sortOrders - An array with information about the columns sort orders the Table has been sorted by.\n\t* sortDataTypes - An array with information about the columns data types the Table has been sorted by.\n\t* type - The type of action that initiated the data sort. Possible types: 'programmatic', 'interaction'\n\t*/\n\t@Output() onSort: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description Adds a new row. When you invoke the method, pass a JSON object with the row's data. \n\t* @param {any} data. JSON object with the new row's data. Sample JSON: {firstName: 'Peter', lastName: 'Fuller'}.\n\t*/\n public addRow(data: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.addRow(data);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.addRow(data);\n });\n }\n }\n\n\t/** @description Adds a filter to a specific column. \n\t* @param {string} dataField. The column's data field.\n\t* @param {any} filter. FilterGroup object or a Filter expression. 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*/\n public addFilter(dataField: string, filter: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.addFilter(dataField, filter);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.addFilter(dataField, filter);\n });\n }\n }\n\n\t/** @description Groups by a column. \n\t* @param {string} dataField. The column's data field.\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 Begins an edit operation. \n\t* @param {string | number} row. The id of the row to edit.\n\t* @param {string} dataField?. The dataField of the cell's column. May be omitted when <strong>editMode</strong> is <em>'row'</em>.\n\t*/\n public beginEdit(row: string | number, dataField?: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.beginEdit(row, dataField);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.beginEdit(row, dataField);\n });\n }\n }\n\n\t/** @description Begins an update operation. Suspends all table refreshes and renders. \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 Ends the current edit operation and discards 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 Clears applied filters. \n\t*/\n public clearFilters(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.clearFilters();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.clearFilters();\n });\n }\n }\n\n\t/** @description Clears grouping. \n\t*/\n public clearGrouping(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.clearGrouping();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.clearGrouping();\n });\n }\n }\n\n\t/** @description Clears selection. \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 Clears the Table sorting. \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 Collapses all rows (in tree mode). \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 Collapses all groups (in tree mode). \n\t*/\n public collapseAllGroups(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.collapseAllGroups();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.collapseAllGroups();\n });\n }\n }\n\n\t/** @description Collapses all row details. Rows that have details defined via the rowDetailTemplate will be collapsed. \n\t*/\n public collapseAllRowDetails(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.collapseAllRowDetails();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.collapseAllRowDetails();\n });\n }\n }\n\n\t/** @description Collapses a group. \n\t* @param {string} index. The group's hierarchical index.\n\t*/\n public collapseGroup(index: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.collapseGroup(index);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.collapseGroup(index);\n });\n }\n }\n\n\t/** @description Collapses a row (in tree mode). \n\t* @param {string | number} rowId. The id of the row to collapse.\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 Disables a selection of a row. When the 'selection' property is set to 'true', selection is enabled for all rows by default. \n\t* @param {string | number | (string | number)[]} rowId. The id of the row (or an array of row ids) to select.\n\t*/\n public disableSelect(rowId: string | number | (string | number)[]): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.disableSelect(rowId);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.disableSelect(rowId);\n });\n }\n }\n\n\t/** @description Enables a selection of a row, if it was previously disabled through a 'disableSelect' method call. When the 'selection' property is set to 'true', selection is enabled for all rows by default. \n\t* @param {string | number | (string | number)[]} rowId. The id of the row (or an array of row ids) to select.\n\t*/\n public enableSelect(rowId: string | number | (string | number)[]): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.enableSelect(rowId);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.enableSelect(rowId);\n });\n }\n }\n\n\t/** @description Ends the current edit operation and saves changes. \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 an update operation. Resumes all table refreshes and renders. Re-renders the Table. \n\t* @param {boolean} refresh?. Optionally you can pass 'false' in case you need to manually call the 'refresh' method. By default, the table is re-rendered.\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 all rows (in tree mode). \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 Expands all groups (in tree mode). \n\t*/\n public expandAllGroups(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.expandAllGroups();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.expandAllGroups();\n });\n }\n }\n\n\t/** @description Expands all row details. Rows that have details defined via rowDetailTemplate will be expanded. \n\t*/\n public expandAllRowDetails(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.expandAllRowDetails();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.expandAllRowDetails();\n });\n }\n }\n\n\t/** @description Expands a group. \n\t* @param {string} index. The group's hierarchical index.\n\t*/\n public expandGroup(index: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.expandGroup(index);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.expandGroup(index);\n });\n }\n }\n\n\t/** @description Expands a row (in tree mode). \n\t* @param {string | number} rowId. The id of the row to expand.\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 Exports the Table's data. \n\t* @param {string} dataFormat. The file format to export to. Supported formats: 'csv', 'html', 'json', 'pdf', 'tsv', 'xlsx', 'xml'.\n\t* @param {string} fileName?. The name of the file to export to\n\t* @param {boolean} exportFiltered?. If set to true, exports only filtered records\n\t* @param {Function} callback?. A callback function to pass the exported data to (if fileName is not provided)\n\t* @returns {any}\n */\n\tpublic async exportData(dataFormat, fileName?, exportFiltered?, callback?): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.exportData(dataFormat, fileName, exportFiltered, callback);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Returns an array of selected row ids. \n\t* @returns {(string | number)[]}\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 Returns the Table's state, containing information about columns, expanded rows, selected rows, applied fitering, grouping, and sorted columns. It can then be stored or passed to the method loadState. \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 Returns the value of a cell. \n\t* @param {string | number} row. The id of the cell's row.\n\t* @param {string} dataField. The dataField of the cell's column.\n\t* @returns {any}\n */\n\tpublic async getValue(row, dataField): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getValue(row, dataField);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Gets a column property. \n\t* @param {string} columnDataField. Column field name.\n\t* @param {string} propertyName. Column property name.\n\t* @returns {any}\n */\n\tpublic async getColumnProperty(columnDataField, propertyName): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getColumnProperty(columnDataField, propertyName);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Checks whether a group is expanded and returns true or false. false is returned when the group index is undefined, too. \n\t* @param {string} index. The group's hierarchical index.\n\t* @returns {boolean}\n */\n\tpublic async isGroupExpanded(index): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.isGroupExpanded(index);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Loads the Table's state. Information about columns, expanded rows, selected rows, applied fitering, grouping, and sorted columns is loaded, based on the value of the stateSettings property. \n\t* @param {any} state?. An object returned by one of the methods <strong>getState</strong> or <strong>saveState</strong>. If a state is not passed, the method tries to load the state from the browser's localStorage.\n\t*/\n public loadState(state?: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.loadState(state);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.loadState(state);\n });\n }\n }\n\n\t/** @description Navigates to a page. \n\t* @param {number} pageIndex. The zero-based page index to navigate to.\n\t*/\n public navigateTo(pageIndex: number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.navigateTo(pageIndex);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.navigateTo(pageIndex);\n });\n }\n }\n\n\t/** @description Refreshes the table. \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 Removes filters applied to a specific column. \n\t* @param {string} dataField. The column's data field.\n\t*/\n public removeFilter(dataField: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.removeFilter(dataField);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.removeFilter(dataField);\n });\n }\n }\n\n\t/** @description Removes grouping by a column. \n\t* @param {string} dataField. The column's data field.\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 row by its id. \n\t* @param {string | number} row. The id of the cell's row.\n\t*/\n public removeRow(row: string | number): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.removeRow(row);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.removeRow(row);\n });\n }\n }\n\n\t/** @description Saves the Table's state. Information about columns, expanded rows, selected rows, applied fitering, grouping, and sorted columns is saved, based on the value of the stateSettings property. \n\t* @returns {any}\n */\n\tpublic async saveState(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.saveState();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Selects one or more rows. \n\t* @param {string | number | (string | number)[]} rowId. The id of the row (or an array of row ids) to select.\n\t*/\n public select(rowId: string | number | (string | number)[]): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.select(rowId);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.select(rowId);\n });\n }\n }\n\n\t/** @description Sets the value of a cell. \n\t* @param {string | number} row. The id of the cell's row.\n\t* @param {string} dataField. The dataField of the cell's column.\n\t* @param {any} value. The new value of the cell.\n\t*/\n public setValue(row: string | number, dataField: string, value: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.setValue(row, dataField, value);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.setValue(row, dataField, value);\n });\n }\n }\n\n\t/** @description Sorts the Table by a column. \n\t* @param {string} columnDataField. Column field name.\n\t* @param {string} sortOrder?. Sort order. Possible values: 'asc' (ascending), 'desc' (descending), and null (removes sorting by column). If not provided, toggles the sorting.\n\t*/\n public sortBy(columnDataField: string, sortOrder?: string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.sortBy(columnDataField, sortOrder);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.sortBy(columnDataField, sortOrder);\n });\n }\n }\n\n\t/** @description Sets a column property. \n\t* @param {string} columnDataField. Column field name.\n\t* @param {string} propertyName. Column property name.\n\t* @param {any} propertyValue. Property value.\n\t*/\n public setColumnProperty(columnDataField: string, propertyName: string, propertyValue: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.setColumnProperty(columnDataField, propertyName, propertyValue);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.setColumnProperty(columnDataField, propertyName, propertyValue);\n });\n }\n }\n\n\t/** @description Updates a table row. The method expects two parameters - row id and JSON object with the new row data. \n\t* @param {string | number} rowId. The id of the row.\n\t* @param {any} data. JSON object with the new row's data. Example: {firstName: 'Peter', lastName: 'Fuller'}.\n\t*/\n public updateRow(rowId: string | number, data: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.updateRow(rowId, data);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.updateRow(rowId, data);\n });\n }\n }\n\n\t/** @description Unselects one or more rows. \n\t* @param {string | number | (string | number)[]} rowId. The id of the row (or an array of row ids) to unselect.\n\t*/\n public unselect(rowId: string | number | (string | number)[]): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.unselect(rowId);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.unselect(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['cellBeginEditHandler'] = (event: CustomEvent) => { that.onCellBeginEdit.emit(event); }\n\t\tthat.nativeElement.addEventListener('cellBeginEdit', that.eventHandlers['cellBeginEditHandler']);\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['cellEndEditHandler'] = (event: CustomEvent) => { that.onCellEndEdit.emit(event); }\n\t\tthat.nativeElement.addEventListener('cellEndEdit', that.eventHandlers['cellEndEditHandler']);\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['collapseHandler'] = (event: CustomEvent) => { that.onCollapse.emit(event); }\n\t\tthat.nativeElement.addEventListener('collapse', that.eventHandlers['collapseHandler']);\n\n\t\tthat.eventHandlers['expandHandler'] = (event: CustomEvent) => { that.onExpand.emit(event); }\n\t\tthat.nativeElement.addEventListener('expand', that.eventHandlers['expandHandler']);\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['closeColumnMenuHandler'] = (event: CustomEvent) => { that.onCloseColumnMenu.emit(event); }\n\t\tthat.nativeElement.addEventListener('closeColumnMenu', that.eventHandlers['closeColumnMenuHandler']);\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['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['openColumnMenuHandler'] = (event: CustomEvent) => { that.onOpenColumnMenu.emit(event); }\n\t\tthat.nativeElement.addEventListener('openColumnMenu', that.eventHandlers['openColumnMenuHandler']);\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['rowBeginEditHandler'] = (event: CustomEvent) => { that.onRowBeginEdit.emit(event); }\n\t\tthat.nativeElement.addEventListener('rowBeginEdit', that.eventHandlers['rowBeginEditHandler']);\n\n\t\tthat.eventHandlers['rowEndEditHandler'] = (event: CustomEvent) => { that.onRowEndEdit.emit(event); }\n\t\tthat.nativeElement.addEventListener('rowEndEdit', that.eventHandlers['rowEndEditHandler']);\n\n\t\tthat.eventHandlers['sortHandler'] = (event: CustomEvent) => { that.onSort.emit(event); }\n\t\tthat.nativeElement.addEventListener('sort', that.eventHandlers['sortHandler']);\n\n\t}\n\n\t/** @description Remove event listeners. */\n\tprivate unlisten(): void {\n const that = this;\n\t\tif (that.eventHandlers['cellBeginEditHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('cellBeginEdit', that.eventHandlers['cellBeginEditHandler']);\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['cellEndEditHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('cellEndEdit', that.eventHandlers['cellEndEditHandler']);\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['collapseHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('collapse', that.eventHandlers['collapseHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['expandHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('expand', that.eventHandlers['expandHandler']);\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['closeColumnMenuHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('closeColumnMenu', that.eventHandlers['closeColumnMenuHandler']);\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['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['openColumnMenuHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('openColumnMenu', that.eventHandlers['openColumnMenuHandler']);\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['rowBeginEditHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('rowBeginEdit', that.eventHandlers['rowBeginEditHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['rowEndEditHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('rowEndEdit', that.eventHandlers['rowEndEditHandler']);\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}\n}\n","import { NgModule } from '@angular/core';\n\nimport { TableComponent } from './smart.table';\nimport { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\n\n@NgModule({\n declarations: [TableComponent],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\texports: [TableComponent]\n})\n\nexport class TableModule { }\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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"}