UNPKG

236 kBSource Map (JSON)View Raw
1{"version":3,"file":"primeng-table.umd.js","sources":["ng://primeng/table/table.ts"],"sourcesContent":["import { NgModule, Component, HostListener, OnInit, OnDestroy, AfterViewInit, AfterViewChecked, Directive, Optional, AfterContentInit,\n Input, Output, EventEmitter, ElementRef, ContentChildren, TemplateRef, QueryList, ViewChild, NgZone, ChangeDetectorRef, OnChanges, SimpleChanges, ChangeDetectionStrategy} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { DomHandler } from 'primeng/dom';\nimport { ObjectUtils } from 'primeng/utils';\nimport { SortMeta } from 'primeng/api';\nimport { TableState } from 'primeng/api';\nimport { FilterMetadata } from 'primeng/api';\nimport { Injectable } from '@angular/core';\nimport { BlockableUI } from 'primeng/api';\nimport { Subject, Subscription } from 'rxjs';\nimport { FilterUtils } from 'primeng/utils';\n\n@Injectable()\nexport class TableService {\n\n private sortSource = new Subject<SortMeta|SortMeta[]>();\n private selectionSource = new Subject();\n private contextMenuSource = new Subject<any>();\n private valueSource = new Subject<any>();\n private totalRecordsSource = new Subject<any>();\n private columnsSource = new Subject();\n\n sortSource$ = this.sortSource.asObservable();\n selectionSource$ = this.selectionSource.asObservable();\n contextMenuSource$ = this.contextMenuSource.asObservable();\n valueSource$ = this.valueSource.asObservable();\n totalRecordsSource$ = this.totalRecordsSource.asObservable();\n columnsSource$ = this.columnsSource.asObservable();\n\n onSort(sortMeta: SortMeta|SortMeta[]) {\n this.sortSource.next(sortMeta);\n }\n\n onSelectionChange() {\n this.selectionSource.next();\n }\n\n onContextMenu(data: any) {\n this.contextMenuSource.next(data);\n }\n\n onValueChange(value: any) {\n this.valueSource.next(value);\n }\n\n onTotalRecordsChange(value: number) {\n this.totalRecordsSource.next(value);\n }\n\n onColumnsChange(columns: any[]) {\n this.columnsSource.next(columns);\n }\n}\n\n@Component({\n selector: 'p-table',\n template: `\n <div #container [ngStyle]=\"style\" [class]=\"styleClass\"\n [ngClass]=\"{'ui-table ui-widget': true, 'ui-table-responsive': responsive, 'ui-table-resizable': resizableColumns,\n 'ui-table-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),\n 'ui-table-hoverable-rows': (rowHover||selectionMode), 'ui-table-auto-layout': autoLayout}\">\n <div class=\"ui-table-loading ui-widget-overlay\" *ngIf=\"loading && showLoader\"></div>\n <div class=\"ui-table-loading-content\" *ngIf=\"loading && showLoader\">\n <i [class]=\"'ui-table-loading-icon pi-spin ' + loadingIcon\"></i>\n </div>\n <div *ngIf=\"captionTemplate\" class=\"ui-table-caption ui-widget-header\">\n <ng-container *ngTemplateOutlet=\"captionTemplate\"></ng-container>\n </div>\n <p-paginator [rows]=\"rows\" [first]=\"first\" [totalRecords]=\"totalRecords\" [pageLinkSize]=\"pageLinks\" styleClass=\"ui-paginator-top\" [alwaysShow]=\"alwaysShowPaginator\"\n (onPageChange)=\"onPageChange($event)\" [rowsPerPageOptions]=\"rowsPerPageOptions\" *ngIf=\"paginator && (paginatorPosition === 'top' || paginatorPosition =='both')\"\n [templateLeft]=\"paginatorLeftTemplate\" [templateRight]=\"paginatorRightTemplate\" [dropdownAppendTo]=\"paginatorDropdownAppendTo\" [dropdownScrollHeight]=\"paginatorDropdownScrollHeight\"\n [currentPageReportTemplate]=\"currentPageReportTemplate\" [showCurrentPageReport]=\"showCurrentPageReport\"></p-paginator>\n\n <div class=\"ui-table-wrapper\" *ngIf=\"!scrollable\">\n <table role=\"grid\" #table [ngClass]=\"tableStyleClass\" [ngStyle]=\"tableStyle\">\n <ng-container *ngTemplateOutlet=\"colGroupTemplate; context {$implicit: columns}\"></ng-container>\n <thead class=\"ui-table-thead\">\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: {$implicit: columns}\"></ng-container>\n </thead>\n <tbody class=\"ui-table-tbody\" [pTableBody]=\"columns\" [pTableBodyTemplate]=\"bodyTemplate\"></tbody>\n <tfoot *ngIf=\"footerTemplate\" class=\"ui-table-tfoot\">\n <ng-container *ngTemplateOutlet=\"footerTemplate; context {$implicit: columns}\"></ng-container>\n </tfoot>\n </table>\n </div>\n\n <div class=\"ui-table-scrollable-wrapper\" *ngIf=\"scrollable\">\n <div class=\"ui-table-scrollable-view ui-table-frozen-view\" *ngIf=\"frozenColumns||frozenBodyTemplate\" [pScrollableView]=\"frozenColumns\" [frozen]=\"true\" [ngStyle]=\"{width: frozenWidth}\" [scrollHeight]=\"scrollHeight\"></div>\n <div class=\"ui-table-scrollable-view\" [pScrollableView]=\"columns\" [frozen]=\"false\" [scrollHeight]=\"scrollHeight\" [ngStyle]=\"{left: frozenWidth, width: 'calc(100% - '+frozenWidth+')'}\"></div>\n </div>\n\n <p-paginator [rows]=\"rows\" [first]=\"first\" [totalRecords]=\"totalRecords\" [pageLinkSize]=\"pageLinks\" styleClass=\"ui-paginator-bottom\" [alwaysShow]=\"alwaysShowPaginator\"\n (onPageChange)=\"onPageChange($event)\" [rowsPerPageOptions]=\"rowsPerPageOptions\" *ngIf=\"paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')\"\n [templateLeft]=\"paginatorLeftTemplate\" [templateRight]=\"paginatorRightTemplate\" [dropdownAppendTo]=\"paginatorDropdownAppendTo\" [dropdownScrollHeight]=\"paginatorDropdownScrollHeight\"\n [currentPageReportTemplate]=\"currentPageReportTemplate\" [showCurrentPageReport]=\"showCurrentPageReport\"></p-paginator>\n\n <div *ngIf=\"summaryTemplate\" class=\"ui-table-summary ui-widget-header\">\n <ng-container *ngTemplateOutlet=\"summaryTemplate\"></ng-container>\n </div>\n\n <div #resizeHelper class=\"ui-column-resizer-helper ui-state-highlight\" style=\"display:none\" *ngIf=\"resizableColumns\"></div>\n\n <span #reorderIndicatorUp class=\"pi pi-arrow-down ui-table-reorder-indicator-up\" style=\"display:none\" *ngIf=\"reorderableColumns\"></span>\n <span #reorderIndicatorDown class=\"pi pi-arrow-up ui-table-reorder-indicator-down\" style=\"display:none\" *ngIf=\"reorderableColumns\"></span>\n </div>\n `,\n providers: [TableService],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class Table implements OnInit, AfterViewInit, AfterContentInit, BlockableUI, OnChanges {\n\n @Input() frozenColumns: any[];\n\n @Input() frozenValue: any[];\n\n @Input() style: any;\n\n @Input() styleClass: string;\n\n @Input() tableStyle: any;\n\n @Input() tableStyleClass: string;\n\n @Input() paginator: boolean;\n\n @Input() pageLinks: number = 5;\n\n @Input() rowsPerPageOptions: any[];\n\n @Input() alwaysShowPaginator: boolean = true;\n\n @Input() paginatorPosition: string = 'bottom';\n\n @Input() paginatorDropdownAppendTo: any;\n\n @Input() paginatorDropdownScrollHeight: string = '200px';\n\n @Input() currentPageReportTemplate: string = '{currentPage} of {totalPages}';\n\n @Input() showCurrentPageReport: boolean;\n\n @Input() defaultSortOrder: number = 1;\n\n @Input() sortMode: string = 'single';\n\n @Input() resetPageOnSort: boolean = true;\n\n @Input() selectionMode: string;\n\n @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n @Input() contextMenuSelection: any;\n\n @Output() contextMenuSelectionChange: EventEmitter<any> = new EventEmitter();\n\n @Input() contextMenuSelectionMode: string = \"separate\";\n\n @Input() dataKey: string;\n\n @Input() metaKeySelection: boolean;\n\n @Input() rowTrackBy: Function = (index: number, item: any) => item;\n\n @Input() lazy: boolean = false;\n\n @Input() lazyLoadOnInit: boolean = true;\n\n @Input() compareSelectionBy: string = 'deepEquals';\n\n @Input() csvSeparator: string = ',';\n\n @Input() exportFilename: string = 'download';\n\n @Input() filters: { [s: string]: FilterMetadata; } = {};\n\n @Input() globalFilterFields: string[];\n\n @Input() filterDelay: number = 300;\n\n @Input() filterLocale: string;\n\n @Input() expandedRowKeys: { [s: string]: boolean; } = {};\n\n @Input() editingRowKeys: { [s: string]: boolean; } = {};\n\n @Input() rowExpandMode: string = 'multiple';\n\n @Input() scrollable: boolean;\n\n @Input() scrollHeight: string;\n\n @Input() virtualScroll: boolean;\n\n @Input() virtualScrollDelay: number = 150;\n\n @Input() virtualRowHeight: number = 28;\n\n @Input() frozenWidth: string;\n\n @Input() responsive: boolean;\n\n @Input() contextMenu: any;\n\n @Input() resizableColumns: boolean;\n\n @Input() columnResizeMode: string = 'fit';\n\n @Input() reorderableColumns: boolean;\n\n @Input() loading: boolean;\n\n @Input() loadingIcon: string = 'pi pi-spinner';\n\n @Input() showLoader: boolean = true;\n\n @Input() rowHover: boolean;\n\n @Input() customSort: boolean;\n\n @Input() autoLayout: boolean;\n\n @Input() exportFunction;\n\n @Input() stateKey: string;\n\n @Input() stateStorage: string = 'session';\n\n @Input() editMode: string = 'cell';\n\n @Output() onRowSelect: EventEmitter<any> = new EventEmitter();\n\n @Output() onRowUnselect: EventEmitter<any> = new EventEmitter();\n\n @Output() onPage: EventEmitter<any> = new EventEmitter();\n\n @Output() onSort: EventEmitter<any> = new EventEmitter();\n\n @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n @Output() onRowExpand: EventEmitter<any> = new EventEmitter();\n\n @Output() onRowCollapse: EventEmitter<any> = new EventEmitter();\n\n @Output() onContextMenuSelect: EventEmitter<any> = new EventEmitter();\n\n @Output() onColResize: EventEmitter<any> = new EventEmitter();\n\n @Output() onColReorder: EventEmitter<any> = new EventEmitter();\n\n @Output() onRowReorder: EventEmitter<any> = new EventEmitter();\n\n @Output() onEditInit: EventEmitter<any> = new EventEmitter();\n\n @Output() onEditComplete: EventEmitter<any> = new EventEmitter();\n\n @Output() onEditCancel: EventEmitter<any> = new EventEmitter();\n\n @Output() onHeaderCheckboxToggle: EventEmitter<any> = new EventEmitter();\n\n @Output() sortFunction: EventEmitter<any> = new EventEmitter();\n\n @Output() firstChange: EventEmitter<number> = new EventEmitter();\n\n @Output() rowsChange: EventEmitter<number> = new EventEmitter();\n\n @Output() onStateSave: EventEmitter<any> = new EventEmitter();\n\n @Output() onStateRestore: EventEmitter<any> = new EventEmitter();\n\n @ViewChild('container') containerViewChild: ElementRef;\n\n @ViewChild('resizeHelper') resizeHelperViewChild: ElementRef;\n\n @ViewChild('reorderIndicatorUp') reorderIndicatorUpViewChild: ElementRef;\n\n @ViewChild('reorderIndicatorDown') reorderIndicatorDownViewChild: ElementRef;\n\n @ViewChild('table') tableViewChild: ElementRef;\n\n @ContentChildren(PrimeTemplate) templates: QueryList<PrimeTemplate>;\n\n _value: any[] = [];\n\n _columns: any[];\n\n _totalRecords: number = 0;\n\n _first: number = 0;\n\n _rows: number;\n\n filteredValue: any[];\n\n headerTemplate: TemplateRef<any>;\n\n bodyTemplate: TemplateRef<any>;\n\n loadingBodyTemplate: TemplateRef<any>;\n\n captionTemplate: TemplateRef<any>;\n\n frozenRowsTemplate: TemplateRef<any>;\n\n footerTemplate: TemplateRef<any>;\n\n summaryTemplate: TemplateRef<any>;\n\n colGroupTemplate: TemplateRef<any>;\n\n expandedRowTemplate: TemplateRef<any>;\n\n frozenHeaderTemplate: TemplateRef<any>;\n\n frozenBodyTemplate: TemplateRef<any>;\n\n frozenFooterTemplate: TemplateRef<any>;\n\n frozenColGroupTemplate: TemplateRef<any>;\n\n emptyMessageTemplate: TemplateRef<any>;\n\n paginatorLeftTemplate: TemplateRef<any>;\n\n paginatorRightTemplate: TemplateRef<any>;\n\n selectionKeys: any = {};\n\n lastResizerHelperX: number;\n\n reorderIconWidth: number;\n\n reorderIconHeight: number;\n\n draggedColumn: any;\n\n draggedRowIndex: number;\n\n droppedRowIndex: number;\n\n rowDragging: boolean;\n\n dropPosition: number;\n\n editingCell: Element;\n\n editingCellData: any;\n\n editingCellField: any;\n\n editingCellRowIndex: number;\n\n editingCellClick: boolean;\n\n documentEditListener: any;\n\n _multiSortMeta: SortMeta[];\n\n _sortField: string;\n\n _sortOrder: number = 1;\n\n virtualScrollTimer: any;\n\n virtualScrollCallback: Function;\n\n preventSelectionSetterPropagation: boolean;\n\n _selection: any;\n\n anchorRowIndex: number;\n\n rangeRowIndex: number;\n\n filterTimeout: any;\n\n initialized: boolean;\n\n rowTouched: boolean;\n\n restoringSort: boolean;\n\n restoringFilter: boolean;\n\n stateRestored: boolean;\n\n columnOrderStateRestored: boolean;\n\n columnWidthsState: string;\n\n tableWidthState: string;\n\n constructor(public el: ElementRef, public zone: NgZone, public tableService: TableService, public cd: ChangeDetectorRef) {}\n\n ngOnInit() {\n if (this.lazy && this.lazyLoadOnInit) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n if (this.restoringFilter) {\n this.restoringFilter = false;\n }\n }\n\n this.initialized = true;\n }\n\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'caption':\n this.captionTemplate = item.template;\n break;\n\n case 'header':\n this.headerTemplate = item.template;\n break;\n\n case 'body':\n this.bodyTemplate = item.template;\n break;\n\n case 'loadingbody':\n this.loadingBodyTemplate = item.template;\n break;\n\n case 'footer':\n this.footerTemplate = item.template;\n break;\n\n case 'summary':\n this.summaryTemplate = item.template;\n break;\n\n case 'colgroup':\n this.colGroupTemplate = item.template;\n break;\n\n case 'rowexpansion':\n this.expandedRowTemplate = item.template;\n break;\n\n case 'frozenrows':\n this.frozenRowsTemplate = item.template;\n break;\n\n case 'frozenheader':\n this.frozenHeaderTemplate = item.template;\n break;\n\n case 'frozenbody':\n this.frozenBodyTemplate = item.template;\n break;\n\n case 'frozenfooter':\n this.frozenFooterTemplate = item.template;\n break;\n\n case 'frozencolgroup':\n this.frozenColGroupTemplate = item.template;\n break;\n\n case 'emptymessage':\n this.emptyMessageTemplate = item.template;\n break;\n\n case 'paginatorleft':\n this.paginatorLeftTemplate = item.template;\n break;\n\n case 'paginatorright':\n this.paginatorRightTemplate = item.template;\n break;\n }\n });\n }\n\n ngAfterViewInit() {\n if (this.isStateful() && this.resizableColumns) {\n this.restoreColumnWidths();\n }\n }\n\n ngOnChanges(simpleChange: SimpleChanges) {\n if (simpleChange.value) {\n if (this.isStateful() && !this.stateRestored) {\n this.restoreState();\n }\n\n this._value = simpleChange.value.currentValue;\n\n if (!this.lazy) {\n this.totalRecords = (this._value ? this._value.length : 0);\n\n if (this.sortMode == 'single' && this.sortField)\n this.sortSingle();\n else if (this.sortMode == 'multiple' && this.multiSortMeta)\n this.sortMultiple();\n else if (this.hasFilter()) //sort already filters\n this._filter();\n }\n\n if (this.virtualScroll && this.virtualScrollCallback) {\n this.virtualScrollCallback();\n }\n\n this.tableService.onValueChange(simpleChange.value.currentValue);\n }\n\n if (simpleChange.columns) {\n this._columns = simpleChange.columns.currentValue;\n this.tableService.onColumnsChange(simpleChange.columns.currentValue);\n\n if (this._columns && this.isStateful() && this.reorderableColumns && !this.columnOrderStateRestored ) {\n this.restoreColumnOrder();\n }\n }\n\n if (simpleChange.sortField) {\n this._sortField = simpleChange.sortField.currentValue;\n\n //avoid triggering lazy load prior to lazy initialization at onInit\n if ( !this.lazy || this.initialized ) {\n if (this.sortMode === 'single') {\n this.sortSingle();\n }\n }\n }\n\n if (simpleChange.sortOrder) {\n this._sortOrder = simpleChange.sortOrder.currentValue;\n\n //avoid triggering lazy load prior to lazy initialization at onInit\n if ( !this.lazy || this.initialized ) {\n if (this.sortMode === 'single') {\n this.sortSingle();\n }\n }\n }\n\n if (simpleChange.multiSortMeta) {\n this._multiSortMeta = simpleChange.multiSortMeta.currentValue;\n if (this.sortMode === 'multiple') {\n this.sortMultiple();\n }\n }\n\n if (simpleChange.selection) {\n this._selection = simpleChange.selection.currentValue;\n\n if (!this.preventSelectionSetterPropagation) {\n this.updateSelectionKeys();\n this.tableService.onSelectionChange();\n }\n this.preventSelectionSetterPropagation = false;\n }\n }\n\n @Input() get value(): any[] {\n return this._value;\n }\n set value(val: any[]) {\n this._value = val;\n }\n\n @Input() get columns(): any[] {\n return this._columns;\n }\n set columns(cols: any[]) {\n this._columns = cols;\n }\n\n @Input() get first(): number {\n return this._first;\n }\n set first(val: number) {\n this._first = val;\n }\n\n @Input() get rows(): number {\n return this._rows;\n }\n set rows(val: number) {\n this._rows = val;\n }\n\n @Input() get totalRecords(): number {\n return this._totalRecords;\n }\n set totalRecords(val: number) {\n this._totalRecords = val;\n this.tableService.onTotalRecordsChange(this._totalRecords);\n }\n\n @Input() get sortField(): string {\n return this._sortField;\n }\n\n set sortField(val: string) {\n this._sortField = val;\n }\n\n @Input() get sortOrder(): number {\n return this._sortOrder;\n }\n set sortOrder(val: number) {\n this._sortOrder = val;\n }\n\n @Input() get multiSortMeta(): SortMeta[] {\n return this._multiSortMeta;\n }\n\n set multiSortMeta(val: SortMeta[]) {\n this._multiSortMeta = val;\n }\n\n @Input() get selection(): any {\n return this._selection;\n }\n\n set selection(val: any) {\n this._selection = val;\n }\n\n updateSelectionKeys() {\n if (this.dataKey && this._selection) {\n this.selectionKeys = {};\n if (Array.isArray(this._selection)) {\n for(let data of this._selection) {\n this.selectionKeys[String(ObjectUtils.resolveFieldData(data, this.dataKey))] = 1;\n }\n }\n else {\n this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection, this.dataKey))] = 1;\n }\n }\n }\n\n onPageChange(event) {\n this.first = event.first;\n this.rows = event.rows;\n\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n\n this.onPage.emit({\n first: this.first,\n rows: this.rows\n });\n\n this.firstChange.emit(this.first);\n this.rowsChange.emit(this.rows);\n this.tableService.onValueChange(this.value);\n\n if (this.isStateful()) {\n this.saveState();\n }\n\n this.anchorRowIndex = null;\n }\n\n sort(event) {\n let originalEvent = event.originalEvent;\n\n if (this.sortMode === 'single') {\n this._sortOrder = (this.sortField === event.field) ? this.sortOrder * -1 : this.defaultSortOrder;\n this._sortField = event.field;\n this.sortSingle();\n\n if (this.resetPageOnSort) {\n this._first = 0;\n this.firstChange.emit(this._first);\n }\n }\n if (this.sortMode === 'multiple') {\n let metaKey = originalEvent.metaKey || originalEvent.ctrlKey;\n let sortMeta = this.getSortMeta(event.field);\n\n if (sortMeta) {\n if (!metaKey) {\n this._multiSortMeta = [{ field: event.field, order: sortMeta.order * -1 }];\n\n if (this.resetPageOnSort) {\n this._first = 0;\n this.firstChange.emit(this._first);\n }\n }\n else {\n sortMeta.order = sortMeta.order * -1;\n }\n }\n else {\n if (!metaKey || !this.multiSortMeta) {\n this._multiSortMeta = [];\n\n if (this.resetPageOnSort) {\n this._first = 0;\n this.firstChange.emit(this._first);\n }\n }\n this._multiSortMeta.push({ field: event.field, order: this.defaultSortOrder });\n }\n\n this.sortMultiple();\n }\n\n if (this.isStateful()) {\n this.saveState();\n }\n\n this.anchorRowIndex = null;\n }\n\n sortSingle() {\n if (this.sortField && this.sortOrder) {\n if (this.restoringSort) {\n this.restoringSort = false;\n }\n\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n else if (this.value) {\n if (this.customSort) {\n this.sortFunction.emit({\n data: this.value,\n mode: this.sortMode,\n field: this.sortField,\n order: this.sortOrder\n });\n }\n else {\n this.value.sort((data1, data2) => {\n let value1 = ObjectUtils.resolveFieldData(data1, this.sortField);\n let value2 = ObjectUtils.resolveFieldData(data2, this.sortField);\n let result = null;\n\n if (value1 == null && value2 != null)\n result = -1;\n else if (value1 != null && value2 == null)\n result = 1;\n else if (value1 == null && value2 == null)\n result = 0;\n else if (typeof value1 === 'string' && typeof value2 === 'string')\n result = value1.localeCompare(value2);\n else\n result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n\n return (this.sortOrder * result);\n });\n }\n\n if (this.hasFilter()) {\n this._filter();\n }\n }\n\n let sortMeta: SortMeta = {\n field: this.sortField,\n order: this.sortOrder\n };\n\n this.onSort.emit(sortMeta);\n this.tableService.onSort(sortMeta);\n }\n }\n\n sortMultiple() {\n if (this.multiSortMeta) {\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n else if (this.value) {\n if (this.customSort) {\n this.sortFunction.emit({\n data: this.value,\n mode: this.sortMode,\n multiSortMeta: this.multiSortMeta\n });\n }\n else {\n this.value.sort((data1, data2) => {\n return this.multisortField(data1, data2, this.multiSortMeta, 0);\n });\n }\n\n if (this.hasFilter()) {\n this._filter();\n }\n }\n\n this.onSort.emit({\n multisortmeta: this.multiSortMeta\n });\n this.tableService.onSort(this.multiSortMeta);\n }\n }\n\n multisortField(data1, data2, multiSortMeta, index) {\n let value1 = ObjectUtils.resolveFieldData(data1, multiSortMeta[index].field);\n let value2 = ObjectUtils.resolveFieldData(data2, multiSortMeta[index].field);\n let result = null;\n\n if (value1 == null && value2 != null)\n result = -1;\n else if (value1 != null && value2 == null)\n result = 1;\n else if (value1 == null && value2 == null)\n result = 0;\n else if (typeof value1 == 'string' || value1 instanceof String) {\n if (value1.localeCompare && (value1 != value2)) {\n return (multiSortMeta[index].order * value1.localeCompare(value2));\n }\n }\n else {\n result = (value1 < value2) ? -1 : 1;\n }\n\n if (value1 == value2) {\n return (multiSortMeta.length - 1) > (index) ? (this.multisortField(data1, data2, multiSortMeta, index + 1)) : 0;\n }\n\n return (multiSortMeta[index].order * result);\n }\n\n getSortMeta(field: string) {\n if (this.multiSortMeta && this.multiSortMeta.length) {\n for (let i = 0; i < this.multiSortMeta.length; i++) {\n if (this.multiSortMeta[i].field === field) {\n return this.multiSortMeta[i];\n }\n }\n }\n\n return null;\n }\n\n isSorted(field: string) {\n if (this.sortMode === 'single') {\n return (this.sortField && this.sortField === field);\n }\n else if (this.sortMode === 'multiple') {\n let sorted = false;\n if (this.multiSortMeta) {\n for(let i = 0; i < this.multiSortMeta.length; i++) {\n if (this.multiSortMeta[i].field == field) {\n sorted = true;\n break;\n }\n }\n }\n return sorted;\n }\n }\n\n handleRowClick(event) {\n let target = (<HTMLElement> event.originalEvent.target);\n let targetNode = target.nodeName;\n let parentNode = target.parentElement && target.parentElement.nodeName;\n if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' ||\n parentNode == 'INPUT' || parentNode == 'BUTTON' || parentNode == 'A' ||\n (DomHandler.hasClass(event.originalEvent.target, 'ui-clickable'))) {\n return;\n }\n\n if (this.selectionMode) {\n this.preventSelectionSetterPropagation = true;\n if (this.isMultipleSelectionMode() && event.originalEvent.shiftKey && this.anchorRowIndex != null) {\n DomHandler.clearSelection();\n if (this.rangeRowIndex != null) {\n this.clearSelectionRange(event.originalEvent);\n }\n\n this.rangeRowIndex = event.rowIndex;\n this.selectRange(event.originalEvent, event.rowIndex);\n }\n else {\n let rowData = event.rowData;\n let selected = this.isSelected(rowData);\n let metaSelection = this.rowTouched ? false : this.metaKeySelection;\n let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;\n this.anchorRowIndex = event.rowIndex;\n this.rangeRowIndex = event.rowIndex;\n\n if (metaSelection) {\n let metaKey = event.originalEvent.metaKey||event.originalEvent.ctrlKey;\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n this._selection = null;\n this.selectionKeys = {};\n this.selectionChange.emit(null);\n }\n else {\n let selectionIndex = this.findIndexInSelection(rowData);\n this._selection = this.selection.filter((val,i) => i!=selectionIndex);\n this.selectionChange.emit(this.selection);\n if (dataKeyValue) {\n delete this.selectionKeys[dataKeyValue];\n }\n }\n\n this.onRowUnselect.emit({originalEvent: event.originalEvent, data: rowData, type: 'row'});\n }\n else {\n if (this.isSingleSelectionMode()) {\n this._selection = rowData;\n this.selectionChange.emit(rowData);\n if (dataKeyValue) {\n this.selectionKeys = {};\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n else if (this.isMultipleSelectionMode()) {\n if (metaKey) {\n this._selection = this.selection||[];\n }\n else {\n this._selection = [];\n this.selectionKeys = {};\n }\n\n this._selection = [...this.selection,rowData];\n this.selectionChange.emit(this.selection);\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n\n this.onRowSelect.emit({originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex});\n }\n }\n else {\n if (this.selectionMode === 'single') {\n if (selected) {\n this._selection = null;\n this.selectionKeys = {};\n this.selectionChange.emit(this.selection);\n this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row' });\n }\n else {\n this._selection = rowData;\n this.selectionChange.emit(this.selection);\n this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });\n if (dataKeyValue) {\n this.selectionKeys = {};\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n }\n else if (this.selectionMode === 'multiple') {\n if (selected) {\n let selectionIndex = this.findIndexInSelection(rowData);\n this._selection = this.selection.filter((val, i) => i != selectionIndex);\n this.selectionChange.emit(this.selection);\n this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row' });\n if (dataKeyValue) {\n delete this.selectionKeys[dataKeyValue];\n }\n }\n else {\n this._selection = this.selection ? [...this.selection, rowData] : [rowData];\n this.selectionChange.emit(this.selection);\n this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n }\n }\n }\n\n this.tableService.onSelectionChange();\n\n if (this.isStateful()) {\n this.saveState();\n }\n }\n\n this.rowTouched = false;\n }\n\n handleRowTouchEnd(event) {\n this.rowTouched = true;\n }\n\n handleRowRightClick(event) {\n if (this.contextMenu) {\n const rowData = event.rowData;\n\n if (this.contextMenuSelectionMode === 'separate') {\n this.contextMenuSelection = rowData;\n this.contextMenuSelectionChange.emit(rowData);\n this.onContextMenuSelect.emit({originalEvent: event.originalEvent, data: rowData, index: event.rowIndex});\n this.contextMenu.show(event.originalEvent);\n this.tableService.onContextMenu(rowData);\n }\n else if (this.contextMenuSelectionMode === 'joint') {\n this.preventSelectionSetterPropagation = true;\n let selected = this.isSelected(rowData);\n let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;\n\n if (!selected) {\n if (this.isSingleSelectionMode()) {\n this.selection = rowData;\n this.selectionChange.emit(rowData);\n }\n else if (this.isMultipleSelectionMode()) {\n this.selection = [rowData];\n this.selectionChange.emit(this.selection);\n }\n\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n\n this.contextMenu.show(event.originalEvent);\n this.onContextMenuSelect.emit({originalEvent: event, data: rowData, index: event.rowIndex});\n }\n }\n }\n\n selectRange(event: MouseEvent, rowIndex: number) {\n let rangeStart, rangeEnd;\n\n if (this.anchorRowIndex > rowIndex) {\n rangeStart = rowIndex;\n rangeEnd = this.anchorRowIndex;\n }\n else if (this.anchorRowIndex < rowIndex) {\n rangeStart = this.anchorRowIndex;\n rangeEnd = rowIndex;\n }\n else {\n rangeStart = rowIndex;\n rangeEnd = rowIndex;\n }\n\n if (this.lazy && this.paginator) {\n rangeStart -= this.first;\n rangeEnd -= this.first;\n }\n\n for(let i = rangeStart; i <= rangeEnd; i++) {\n let rangeRowData = this.filteredValue ? this.filteredValue[i] : this.value[i];\n if (!this.isSelected(rangeRowData)) {\n this._selection = [...this.selection, rangeRowData];\n let dataKeyValue: string = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n this.onRowSelect.emit({originalEvent: event, data: rangeRowData, type: 'row'});\n }\n }\n\n this.selectionChange.emit(this.selection);\n }\n\n clearSelectionRange(event: MouseEvent) {\n let rangeStart, rangeEnd;\n\n if (this.rangeRowIndex > this.anchorRowIndex) {\n rangeStart = this.anchorRowIndex;\n rangeEnd = this.rangeRowIndex;\n }\n else if (this.rangeRowIndex < this.anchorRowIndex) {\n rangeStart = this.rangeRowIndex;\n rangeEnd = this.anchorRowIndex;\n }\n else {\n rangeStart = this.rangeRowIndex;\n rangeEnd = this.rangeRowIndex;\n }\n\n for(let i = rangeStart; i <= rangeEnd; i++) {\n let rangeRowData = this.value[i];\n let selectionIndex = this.findIndexInSelection(rangeRowData);\n this._selection = this.selection.filter((val,i) => i!=selectionIndex);\n let dataKeyValue: string = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;\n if (dataKeyValue) {\n delete this.selectionKeys[dataKeyValue];\n }\n this.onRowUnselect.emit({originalEvent: event, data: rangeRowData, type: 'row'});\n }\n }\n\n isSelected(rowData) {\n if (rowData && this.selection) {\n if (this.dataKey) {\n return this.selectionKeys[ObjectUtils.resolveFieldData(rowData, this.dataKey)] !== undefined;\n }\n else {\n if (this.selection instanceof Array)\n return this.findIndexInSelection(rowData) > -1;\n else\n return this.equals(rowData, this.selection);\n }\n }\n\n return false;\n }\n\n findIndexInSelection(rowData: any) {\n let index: number = -1;\n if (this.selection && this.selection.length) {\n for (let i = 0; i < this.selection.length; i++) {\n if (this.equals(rowData, this.selection[i])) {\n index = i;\n break;\n }\n }\n }\n\n return index;\n }\n\n toggleRowWithRadio(event: any, rowData:any) {\n this.preventSelectionSetterPropagation = true;\n\n if (this.selection != rowData) {\n this._selection = rowData;\n this.selectionChange.emit(this.selection);\n this.onRowSelect.emit({originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'radiobutton'});\n\n if (this.dataKey) {\n this.selectionKeys = {};\n this.selectionKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] = 1;\n }\n }\n else {\n this._selection = null;\n this.selectionChange.emit(this.selection);\n this.onRowUnselect.emit({originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'radiobutton'});\n }\n\n this.tableService.onSelectionChange();\n\n if (this.isStateful()) {\n this.saveState();\n }\n }\n\n toggleRowWithCheckbox(event, rowData: any) {\n this.selection = this.selection||[];\n let selected = this.isSelected(rowData);\n let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;\n this.preventSelectionSetterPropagation = true;\n\n if (selected) {\n let selectionIndex = this.findIndexInSelection(rowData);\n this._selection = this.selection.filter((val, i) => i != selectionIndex);\n this.selectionChange.emit(this.selection);\n this.onRowUnselect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'checkbox' });\n if (dataKeyValue) {\n delete this.selectionKeys[dataKeyValue];\n }\n }\n else {\n this._selection = this.selection ? [...this.selection, rowData] : [rowData];\n this.selectionChange.emit(this.selection);\n this.onRowSelect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'checkbox' });\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n\n this.tableService.onSelectionChange();\n\n if (this.isStateful()) {\n this.saveState();\n }\n }\n\n toggleRowsWithCheckbox(event: Event, check: boolean) {\n this._selection = check ? this.filteredValue ? this.filteredValue.slice(): this.value.slice() : [];\n this.preventSelectionSetterPropagation = true;\n this.updateSelectionKeys();\n this.selectionChange.emit(this._selection);\n this.tableService.onSelectionChange();\n this.onHeaderCheckboxToggle.emit({originalEvent: event, checked: check});\n\n if (this.isStateful()) {\n this.saveState();\n }\n }\n\n equals(data1, data2) {\n return this.compareSelectionBy === 'equals' ? (data1 === data2) : ObjectUtils.equals(data1, data2, this.dataKey);\n }\n\n filter(value, field, matchMode) {\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n\n if (!this.isFilterBlank(value)) {\n this.filters[field] = { value: value, matchMode: matchMode };\n } else if (this.filters[field]) {\n delete this.filters[field];\n }\n\n this.filterTimeout = setTimeout(() => {\n this._filter();\n this.filterTimeout = null;\n }, this.filterDelay);\n\n this.anchorRowIndex = null;\n }\n\n filterGlobal(value, matchMode) {\n this.filter(value, 'global', matchMode);\n }\n\n isFilterBlank(filter: any): boolean {\n if (filter !== null && filter !== undefined) {\n if ((typeof filter === 'string' && filter.trim().length == 0) || (filter instanceof Array && filter.length == 0))\n return true;\n else\n return false;\n }\n return true;\n }\n\n _filter() {\n if (!this.restoringFilter) {\n this.first = 0;\n this.firstChange.emit(this.first);\n }\n\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n else {\n if (!this.value) {\n return;\n }\n\n if (!this.hasFilter()) {\n this.filteredValue = null;\n if (this.paginator) {\n this.totalRecords = this.value ? this.value.length : 0;\n }\n }\n else {\n let globalFilterFieldsArray;\n if (this.filters['global']) {\n if (!this.columns && !this.globalFilterFields)\n throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');\n else\n globalFilterFieldsArray = this.globalFilterFields||this.columns;\n }\n\n this.filteredValue = [];\n\n for (let i = 0; i < this.value.length; i++) {\n let localMatch = true;\n let globalMatch = false;\n let localFiltered = false;\n\n for (let prop in this.filters) {\n if (this.filters.hasOwnProperty(prop) && prop !== 'global') {\n localFiltered = true;\n let filterMeta = this.filters[prop];\n let filterField = prop;\n let filterValue = filterMeta.value;\n let filterMatchMode = filterMeta.matchMode || 'startsWith';\n let dataFieldValue = ObjectUtils.resolveFieldData(this.value[i], filterField);\n let filterConstraint = FilterUtils[filterMatchMode];\n\n if (!filterConstraint(dataFieldValue, filterValue, this.filterLocale)) {\n localMatch = false;\n }\n\n if (!localMatch) {\n break;\n }\n }\n }\n\n if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {\n for(let j = 0; j < globalFilterFieldsArray.length; j++) {\n let globalFilterField = globalFilterFieldsArray[j].field||globalFilterFieldsArray[j];\n globalMatch = FilterUtils[this.filters['global'].matchMode](ObjectUtils.resolveFieldData(this.value[i], globalFilterField), this.filters['global'].value, this.filterLocale);\n\n if (globalMatch) {\n break;\n }\n }\n }\n\n let matches: boolean;\n if (this.filters['global']) {\n matches = localFiltered ? (localFiltered && localMatch && globalMatch) : globalMatch;\n }\n else {\n matches = localFiltered && localMatch;\n }\n\n if (matches) {\n this.filteredValue.push(this.value[i]);\n }\n }\n\n if (this.filteredValue.length === this.value.length) {\n this.filteredValue = null;\n }\n\n if (this.paginator) {\n this.totalRecords = this.filteredValue ? this.filteredValue.length : this.value ? this.value.length : 0;\n }\n }\n }\n\n this.onFilter.emit({\n filters: this.filters,\n filteredValue: this.filteredValue || this.value\n });\n\n this.tableService.onValueChange(this.value);\n\n if (this.isStateful() && !this.restoringFilter) {\n this.saveState();\n }\n\n if (this.restoringFilter) {\n this.restoringFilter = false;\n }\n\n this.cd.markForCheck();\n }\n\n hasFilter() {\n let empty = true;\n for (let prop in this.filters) {\n if (this.filters.hasOwnProperty(prop)) {\n empty = false;\n break;\n }\n }\n\n return !empty;\n }\n\n createLazyLoadMetadata(): any {\n return {\n first: this.first,\n rows: this.virtualScroll ? this.rows * 2: this.rows,\n sortField: this.sortField,\n sortOrder: this.sortOrder,\n filters: this.filters,\n globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,\n multiSortMeta: this.multiSortMeta\n };\n }\n\n public reset() {\n this._sortField = null;\n this._sortOrder = this.defaultSortOrder;\n this._multiSortMeta = null;\n this.tableService.onSort(null);\n\n this.filteredValue = null;\n this.filters = {};\n\n this.first = 0;\n this.firstChange.emit(this.first);\n\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n else {\n this.totalRecords = (this._value ? this._value.length : 0);\n }\n }\n\n public exportCSV(options?: any) {\n let data = this.filteredValue || this.value;\n let csv = '';\n\n if (options && options.selectionOnly) {\n data = this.selection || [];\n }\n\n //headers\n for (let i = 0; i < this.columns.length; i++) {\n let column = this.columns[i];\n if (column.exportable !== false && column.field) {\n csv += '\"' + (column.header || column.field) + '\"';\n\n if (i < (this.columns.length - 1)) {\n csv += this.csvSeparator;\n }\n }\n }\n\n //body\n data.forEach((record, i) => {\n csv += '\\n';\n for (let i = 0; i < this.columns.length; i++) {\n let column = this.columns[i];\n if (column.exportable !== false && column.field) {\n let cellData = ObjectUtils.resolveFieldData(record, column.field);\n\n if (cellData != null) {\n if (this.exportFunction) {\n cellData = this.exportFunction({\n data: cellData,\n field: column.field\n });\n }\n else\n cellData = String(cellData).replace(/\"/g, '\"\"');\n }\n else\n cellData = '';\n\n\n csv += '\"' + cellData + '\"';\n\n if (i < (this.columns.length - 1)) {\n csv += this.csvSeparator;\n }\n }\n }\n });\n\n let blob = new Blob([csv], {\n type: 'text/csv;charset=utf-8;'\n });\n\n if (window.navigator.msSaveOrOpenBlob) {\n navigator.msSaveOrOpenBlob(blob, this.exportFilename + '.csv');\n }\n else {\n let link = document.createElement(\"a\");\n link.style.display = 'none';\n document.body.appendChild(link);\n if (link.download !== undefined) {\n link.setAttribute('href', URL.createObjectURL(blob));\n link.setAttribute('download', this.exportFilename + '.csv');\n link.click();\n }\n else {\n csv = 'data:text/csv;charset=utf-8,' + csv;\n window.open(encodeURI(csv));\n }\n document.body.removeChild(link);\n }\n }\n\n updateEditingCell(cell, data, field, index) {\n this.editingCell = cell;\n this.editingCellData = data;\n this.editingCellField = field;\n this.editingCellRowIndex = index;\n this.bindDocumentEditListener();\n }\n\n isEditingCellValid() {\n return (this.editingCell && DomHandler.find(this.editingCell, '.ng-invalid.ng-dirty').length === 0);\n }\n\n bindDocumentEditListener() {\n if (!this.documentEditListener) {\n this.documentEditListener = (event) => {\n if (this.editingCell && !this.editingCellClick && this.isEditingCellValid()) {\n DomHandler.removeClass(this.editingCell, 'ui-editing-cell');\n this.editingCell = null;\n this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData, originalEvent: event, index: this.editingCellRowIndex });\n this.editingCellField = null;\n this.editingCellData = null;\n this.editingCellRowIndex = null;\n this.unbindDocumentEditListener();\n }\n\n this.editingCellClick = false;\n };\n\n document.addEventListener('click', this.documentEditListener);\n }\n }\n\n unbindDocumentEditListener() {\n if (this.documentEditListener) {\n document.removeEventListener('click', this.documentEditListener);\n this.documentEditListener = null;\n }\n }\n\n initRowEdit(rowData: any) {\n let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n this.editingRowKeys[dataKeyValue] = true;\n }\n\n saveRowEdit(rowData: any, rowElement: HTMLTableRowElement) {\n if (DomHandler.find(rowElement, '.ng-invalid.ng-dirty').length === 0) {\n let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n delete this.editingRowKeys[dataKeyValue];\n }\n }\n\n cancelRowEdit(rowData: any) {\n let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n delete this.editingRowKeys[dataKeyValue];\n }\n\n toggleRow(rowData: any, event?: Event) {\n if (!this.dataKey) {\n throw new Error('dataKey must be defined to use row expansion');\n }\n\n let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n\n if (this.expandedRowKeys[dataKeyValue] != null) {\n delete this.expandedRowKeys[dataKeyValue];\n this.onRowCollapse.emit({\n originalEvent: event,\n data: rowData\n });\n }\n else {\n if (this.rowExpandMode === 'single') {\n this.expandedRowKeys = {};\n }\n\n this.expandedRowKeys[dataKeyValue] = true;\n this.onRowExpand.emit({\n originalEvent: event,\n data: rowData\n });\n }\n\n if (event) {\n event.preventDefault();\n }\n\n if (this.isStateful()) {\n this.saveState();\n }\n }\n\n isRowExpanded(rowData: any): boolean {\n return this.expandedRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] === true;\n }\n\n isRowEditing(rowData: any): boolean {\n return this.editingRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] === true;\n }\n\n isSingleSelectionMode() {\n return this.selectionMode === 'single';\n }\n\n isMultipleSelectionMode() {\n return this.selectionMode === 'multiple';\n }\n\n onColumnResizeBegin(event) {\n let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;\n this.lastResizerHelperX = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft);\n this.onColumnResize(event);\n event.preventDefault();\n }\n\n onColumnResize(event) {\n let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;\n DomHandler.addClass(this.containerViewChild.nativeElement, 'ui-unselectable-text');\n this.resizeHelperViewChild.nativeElement.style.height = this.containerViewChild.nativeElement.offsetHeight + 'px';\n this.resizeHelperViewChild.nativeElement.style.top = 0 + 'px';\n this.resizeHelperViewChild.nativeElement.style.left = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft) + 'px';\n\n this.resizeHelperViewChild.nativeElement.style.display = 'block';\n }\n\n onColumnResizeEnd(event, column) {\n let delta = this.resizeHelperViewChild.nativeElement.offsetLeft - this.lastResizerHelperX;\n let columnWidth = column.offsetWidth;\n let minWidth = parseInt(column.style.minWidth || 15);\n\n if (columnWidth + delta < minWidth) {\n delta = minWidth - columnWidth;\n }\n\n const newColumnWidth = columnWidth + delta;\n\n if (newColumnWidth >= minWidth) {\n if (this.columnResizeMode === 'fit') {\n let nextColumn = column.nextElementSibling;\n while (!nextColumn.offsetParent) {\n nextColumn = nextColumn.nextElementSibling;\n }\n\n if (nextColumn) {\n let nextColumnWidth = nextColumn.offsetWidth - delta;\n let nextColumnMinWidth = nextColumn.style.minWidth || 15;\n\n if (newColumnWidth > 15 && nextColumnWidth > parseInt(nextColumnMinWidth)) {\n if (this.scrollable) {\n let scrollableView = this.findParentScrollableView(column);\n let scrollableBodyTable = DomHandler.findSingle(scrollableView, 'table.ui-table-scrollable-body-table');\n let scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.ui-table-scrollable-header-table');\n let scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.ui-table-scrollable-footer-table');\n let resizeColumnIndex = DomHandler.index(column);\n\n this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n }\n else {\n column.style.width = newColumnWidth + 'px';\n if (nextColumn) {\n nextColumn.style.width = nextColumnWidth + 'px';\n }\n }\n }\n }\n }\n else if (this.columnResizeMode === 'expand') {\n if (newColumnWidth > minWidth) {\n if (this.scrollable) {\n this.setScrollableItemsWidthOnExpandResize(column, newColumnWidth, delta);\n }\n else {\n this.tableViewChild.nativeElement.style.width = this.tableViewChild.nativeElement.offsetWidth + delta + 'px';\n column.style.width = newColumnWidth + 'px';\n let containerWidth = this.tableViewChild.nativeElement.style.width;\n this.containerViewChild.nativeElement.style.width = containerWidth + 'px';\n }\n }\n }\n\n this.onColResize.emit({\n element: column,\n delta: delta\n });\n\n if (this.isStateful()) {\n this.saveState();\n }\n }\n\n this.resizeHelperViewChild.nativeElement.style.display = 'none';\n DomHandler.removeClass(this.containerViewChild.nativeElement, 'ui-unselectable-text');\n }\n\n setScrollableItemsWidthOnExpandResize(column, newColumnWidth, delta) {\n let scrollableView = column ? this.findParentScrollableView(column) : this.containerViewChild.nativeElement;\n let scrollableBody = DomHandler.findSingle(scrollableView, '.ui-table-scrollable-body');\n let scrollableHeader = DomHandler.findSingle(scrollableView, '.ui-table-scrollable-header');\n let scrollableFooter = DomHandler.findSingle(scrollableView, '.ui-table-scrollable-footer');\n let scrollableBodyTable = DomHandler.findSingle(scrollableBody, 'table.ui-table-scrollable-body-table');\n let scrollableHeaderTable = DomHandler.findSingle(scrollableHeader, 'table.ui-table-scrollable-header-table');\n let scrollableFooterTable = DomHandler.findSingle(scrollableFooter, 'table.ui-table-scrollable-footer-table');\n\n const scrollableBodyTableWidth = column ? scrollableBodyTable.offsetWidth + delta : newColumnWidth;\n const scrollableHeaderTableWidth = column ? scrollableHeaderTable.offsetWidth + delta : newColumnWidth;\n const isContainerInViewport = this.containerViewChild.nativeElement.offsetWidth >= scrollableBodyTableWidth;\n\n let setWidth = (container, table, width, isContainerInViewport) => {\n if (container && table) {\n container.style.width = isContainerInViewport ? width + DomHandler.calculateScrollbarWidth(scrollableBody) + 'px' : 'auto'\n table.style.width = width + 'px';\n }\n };\n\n setWidth(scrollableBody, scrollableBodyTable, scrollableBodyTableWidth, isContainerInViewport);\n setWidth(scrollableHeader, scrollableHeaderTable, scrollableHeaderTableWidth, isContainerInViewport);\n setWidth(scrollableFooter, scrollableFooterTable, scrollableHeaderTableWidth, isContainerInViewport);\n\n if (column) {\n let resizeColumnIndex = DomHandler.index(column);\n\n this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, null);\n this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, null);\n this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, null);\n }\n }\n\n findParentScrollableView(column) {\n if (column) {\n let parent = column.parentElement;\n while (parent && !DomHandler.hasClass(parent, 'ui-table-scrollable-view')) {\n parent = parent.parentElement;\n }\n\n return parent;\n }\n else {\n return null;\n }\n }\n\n resizeColGroup(table, resizeColumnIndex, newColumnWidth, nextColumnWidth) {\n if (table) {\n let colGroup = table.children[0].nodeName === 'COLGROUP' ? table.children[0] : null;\n\n if (colGroup) {\n let col = colGroup.children[resizeColumnIndex];\n let nextCol = col.nextElementSibling;\n col.style.width = newColumnWidth + 'px';\n\n if (nextCol && nextColumnWidth) {\n nextCol.style.width = nextColumnWidth + 'px';\n }\n }\n else {\n throw \"Scrollable tables require a colgroup to support resizable columns\";\n }\n }\n }\n\n onColumnDragStart(event, columnElement) {\n this.reorderIconWidth = DomHandler.getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild.nativeElement);\n this.reorderIconHeight = DomHandler.getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild.nativeElement);\n this.draggedColumn = columnElement;\n event.dataTransfer.setData('text', 'b'); // For firefox\n }\n\n onColumnDragEnter(event, dropHeader) {\n if (this.reorderableColumns && this.draggedColumn && dropHeader) {\n event.preventDefault();\n let containerOffset = DomHandler.getOffset(this.containerViewChild.nativeElement);\n let dropHeaderOffset = DomHandler.getOffset(dropHeader);\n\n if (this.draggedColumn != dropHeader) {\n let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'preorderablecolumn');\n let dropIndex = DomHandler.indexWithinGroup(dropHeader, 'preorderablecolumn');\n let targetLeft = dropHeaderOffset.left - containerOffset.left;\n let targetTop = containerOffset.top - dropHeaderOffset.top;\n let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;\n\n this.reorderIndicatorUpViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (this.reorderIconHeight - 1) + 'px';\n this.reorderIndicatorDownViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';\n\n if (event.pageX > columnCenter) {\n this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n this.dropPosition = 1;\n }\n else {\n this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n this.dropPosition = -1;\n }\n\n if ((dropIndex - dragIndex === 1 && this.dropPosition === -1) || (dropIndex - dragIndex === -1 && this.dropPosition === 1)) {\n this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n }\n else {\n this.reorderIndicatorUpViewChild.nativeElement.style.display = 'block';\n this.reorderIndicatorDownViewChild.nativeElement.style.display = 'block';\n }\n }\n else {\n event.dataTransfer.dropEffect = 'none';\n }\n }\n }\n\n onColumnDragLeave(event) {\n if (this.reorderableColumns && this.draggedColumn) {\n event.preventDefault();\n this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n }\n }\n\n onColumnDrop(event, dropColumn) {\n event.preventDefault();\n if (this.draggedColumn) {\n let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'preorderablecolumn');\n let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'preorderablecolumn');\n let allowDrop = (dragIndex != dropIndex);\n if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {\n allowDrop = false;\n }\n\n if (allowDrop && ((dropIndex < dragIndex && this.dropPosition === 1))) {\n dropIndex = dropIndex + 1;\n }\n\n if (allowDrop && ((dropIndex > dragIndex && this.dropPosition === -1))) {\n dropIndex = dropIndex - 1;\n }\n\n if (allowDrop) {\n ObjectUtils.reorderArray(this.columns, dragIndex, dropIndex);\n\n this.onColReorder.emit({\n dragIndex: dragIndex,\n dropIndex: dropIndex,\n columns: this.columns\n });\n\n if (this.isStateful()) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.saveState();\n });\n });\n }\n }\n\n this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n this.draggedColumn.draggable = false;\n this.draggedColumn = null;\n this.dropPosition = null;\n }\n }\n\n onRowDragStart(event, index) {\n this.rowDragging = true;\n this.draggedRowIndex = index;\n event.dataTransfer.setData('text', 'b'); // For firefox\n }\n\n onRowDragOver(event, index, rowElement) {\n if (this.rowDragging && this.draggedRowIndex !== index) {\n let rowY = DomHandler.getOffset(rowElement).top + DomHandler.getWindowScrollTop();\n let pageY = event.pageY;\n let rowMidY = rowY + DomHandler.getOuterHeight(rowElement) / 2;\n let prevRowElement = rowElement.previousElementSibling;\n\n if (pageY < rowMidY) {\n DomHandler.removeClass(rowElement, 'ui-table-dragpoint-bottom');\n\n this.droppedRowIndex = index;\n if (prevRowElement)\n DomHandler.addClass(prevRowElement, 'ui-table-dragpoint-bottom');\n else\n DomHandler.addClass(rowElement, 'ui-table-dragpoint-top');\n }\n else {\n if (prevRowElement)\n DomHandler.removeClass(prevRowElement, 'ui-table-dragpoint-bottom');\n else\n DomHandler.addClass(rowElement, 'ui-table-dragpoint-top');\n\n this.droppedRowIndex = index + 1;\n DomHandler.addClass(rowElement, 'ui-table-dragpoint-bottom');\n }\n }\n }\n\n onRowDragLeave(event, rowElement) {\n let prevRowElement = rowElement.previousElementSibling;\n if (prevRowElement) {\n DomHandler.removeClass(prevRowElement, 'ui-table-dragpoint-bottom');\n }\n\n DomHandler.removeClass(rowElement, 'ui-table-dragpoint-bottom');\n DomHandler.removeClass(rowElement, 'ui-table-dragpoint-top');\n }\n\n onRowDragEnd(event) {\n this.rowDragging = false;\n this.draggedRowIndex = null;\n this.droppedRowIndex = null;\n }\n\n onRowDrop(event, rowElement) {\n if (this.droppedRowIndex != null) {\n let dropIndex = (this.draggedRowIndex > this.droppedRowIndex) ? this.droppedRowIndex : (this.droppedRowIndex === 0) ? 0 : this.droppedRowIndex - 1;\n ObjectUtils.reorderArray(this.value, this.draggedRowIndex, dropIndex);\n\n this.onRowReorder.emit({\n dragIndex: this.draggedRowIndex,\n dropIndex: dropIndex\n });\n }\n //cleanup\n this.onRowDragLeave(event, rowElement);\n this.onRowDragEnd(event);\n }\n\n handleVirtualScroll(event) {\n this.first = (event.page - 1) * this.rows;\n this.firstChange.emit(this.first);\n this.virtualScrollCallback = event.callback;\n\n this.zone.run(() => {\n if (this.virtualScrollTimer) {\n clearTimeout(this.virtualScrollTimer);\n }\n\n this.virtualScrollTimer = setTimeout(() => {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }, this.virtualScrollDelay);\n });\n }\n\n isEmpty() {\n let data = this.filteredValue||this.value;\n return data == null || data.length == 0;\n }\n\n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n\n getStorage() {\n switch(this.stateStorage) {\n case 'local':\n return window.localStorage;\n\n case 'session':\n return window.sessionStorage;\n\n default:\n throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are \"local\" and \"session\".');\n }\n }\n\n isStateful() {\n return this.stateKey != null;\n }\n\n saveState() {\n const storage = this.getStorage();\n let state: TableState = {};\n\n if (this.paginator) {\n state.first = this.first;\n state.rows = this.rows;\n }\n\n if (this.sortField) {\n state.sortField = this.sortField;\n state.sortOrder = this.sortOrder;\n }\n\n if (this.multiSortMeta) {\n state.multiSortMeta = this.multiSortMeta;\n }\n\n if (this.hasFilter()) {\n state.filters = this.filters;\n }\n\n if (this.resizableColumns) {\n this.saveColumnWidths(state);\n }\n\n if (this.reorderableColumns) {\n this.saveColumnOrder(state);\n }\n\n if (this.selection) {\n state.selection = this.selection;\n }\n\n if (Object.keys(this.expandedRowKeys).length) {\n state.expandedRowKeys = this.expandedRowKeys;\n }\n\n if (Object.keys(state).length) {\n storage.setItem(this.stateKey, JSON.stringify(state));\n }\n\n this.onStateSave.emit(state);\n }\n\n clearState() {\n const storage = this.getStorage();\n\n if (this.stateKey) {\n storage.removeItem(this.stateKey);\n }\n }\n\n restoreState() {\n const storage = this.getStorage();\n const stateString = storage.getItem(this.stateKey);\n\n if (stateString) {\n let state: TableState = JSON.parse(stateString);\n\n if (this.paginator) {\n this.first = state.first;\n this.rows = state.rows;\n this.firstChange.emit(this.first);\n this.rowsChange.emit(this.rows);\n }\n\n if (state.sortField) {\n this.restoringSort = true;\n this._sortField = state.sortField;\n this._sortOrder = state.sortOrder;\n }\n\n if (state.multiSortMeta) {\n this.restoringSort = true;\n this._multiSortMeta = state.multiSortMeta;\n }\n\n if (state.filters) {\n this.restoringFilter = true;\n this.filters = state.filters;\n }\n\n if (this.resizableColumns) {\n this.columnWidthsState = state.columnWidths;\n this.tableWidthState = state.tableWidth;\n }\n\n if (state.expandedRowKeys) {\n this.expandedRowKeys = state.expandedRowKeys;\n }\n\n if (state.selection) {\n Promise.resolve(null).then(() => this.selectionChange.emit(state.selection));\n }\n\n this.stateRestored = true;\n\n this.onStateRestore.emit(state);\n }\n }\n\n saveColumnWidths(state) {\n let widths = [];\n let headers = DomHandler.find(this.containerViewChild.nativeElement, '.ui-table-thead > tr:first-child > th');\n headers.map(header => widths.push(DomHandler.getOuterWidth(header)));\n state.columnWidths = widths.join(',');\n\n if (this.columnResizeMode === 'expand') {\n state.tableWidth = this.scrollable ? DomHandler.findSingle(this.containerViewChild.nativeElement, '.ui-table-scrollable-header-table').style.width :\n DomHandler.getOuterWidth(this.tableViewChild.nativeElement) + 'px';\n }\n }\n\n restoreColumnWidths() {\n if (this.columnWidthsState) {\n let widths = this.columnWidthsState.split(',');\n\n if (this.columnResizeMode === 'expand' && this.tableWidthState) {\n if (this.scrollable) {\n this.setScrollableItemsWidthOnExpandResize(null, this.tableWidthState, 0);\n }\n else {\n this.tableViewChild.nativeElement.style.width = this.tableWidthState;\n this.containerViewChild.nativeElement.style.width = this.tableWidthState;\n }\n }\n\n if (this.scrollable) {\n let headerCols = DomHandler.find(this.containerViewChild.nativeElement, '.ui-table-scrollable-header-table > colgroup > col');\n let bodyCols = DomHandler.find(this.containerViewChild.nativeElement, '.ui-table-scrollable-body-table > colgroup > col');\n\n headerCols.map((col, index) => col.style.width = widths[index] + 'px');\n bodyCols.map((col, index) => col.style.width = widths[index] + 'px');\n }\n else {\n let headers = DomHandler.find(this.tableViewChild.nativeElement, '.ui-table-thead > tr:first-child > th');\n headers.map((header, index) => header.style.width = widths[index] + 'px');\n }\n }\n }\n\n saveColumnOrder(state) {\n if (this.columns) {\n let columnOrder: string[] = [];\n this.columns.map(column => {\n columnOrder.push(column.field||column.key)\n });\n\n state.columnOrder = columnOrder;\n }\n }\n\n restoreColumnOrder() {\n const storage = this.getStorage();\n const stateString = storage.getItem(this.stateKey);\n if (stateString) {\n let state: TableState = JSON.parse(stateString);\n let columnOrder = state.columnOrder;\n if (columnOrder) {\n let reorderedColumns = [];\n columnOrder.map(key => reorderedColumns.push(this.findColumnByKey(key)));\n this.columnOrderStateRestored = true;\n this.columns = reorderedColumns;\n }\n }\n }\n\n findColumnByKey(key) {\n if (this.columns) {\n for (let col of this.columns) {\n if (col.key === key || col.field === key)\n return col;\n else\n continue;\n }\n }\n else {\n return null;\n }\n }\n\n ngOnDestroy() {\n this.unbindDocumentEditListener();\n this.editingCell = null;\n this.initialized = null;\n }\n}\n\n@Component({\n selector: '[pTableBody]',\n template: `\n <ng-container *ngIf=\"!dt.expandedRowTemplate\">\n <ng-template ngFor let-rowData let-rowIndex=\"index\" [ngForOf]=\"(dt.paginator && !dt.lazy) ? ((dt.filteredValue||dt.value) | slice:dt.first:(dt.first + dt.rows)) : (dt.filteredValue||dt.value)\" [ngForTrackBy]=\"dt.rowTrackBy\">\n <ng-container *ngTemplateOutlet=\"template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData))}\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"dt.expandedRowTemplate\">\n <ng-template ngFor let-rowData let-rowIndex=\"index\" [ngForOf]=\"(dt.paginator && !dt.lazy) ? ((dt.filteredValue||dt.value) | slice:dt.first:(dt.first + dt.rows)) : (dt.filteredValue||dt.value)\" [ngForTrackBy]=\"dt.rowTrackBy\">\n <ng-container *ngTemplateOutlet=\"template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData))}\"></ng-container>\n <ng-container *ngIf=\"dt.isRowExpanded(rowData)\">\n <ng-container *ngTemplateOutlet=\"dt.expandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns}\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"dt.loading\">\n <ng-container *ngTemplateOutlet=\"dt.loadingBodyTemplate; context: {$implicit: columns, frozen: frozen}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"dt.isEmpty() && !dt.loading\">\n <ng-container *ngTemplateOutlet=\"dt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}\"></ng-container>\n </ng-container>\n `\n})\nexport class TableBody {\n\n @Input(\"pTableBody\") columns: any[];\n\n @Input(\"pTableBodyTemplate\") template: TemplateRef<any>;\n\n @Input() frozen: boolean;\n\n constructor(public dt: Table) {}\n}\n\n@Component({\n selector: '[pScrollableView]',\n template: `\n <div #scrollHeader class=\"ui-table-scrollable-header ui-widget-header\">\n <div #scrollHeaderBox class=\"ui-table-scrollable-header-box\">\n <table class=\"ui-table-scrollable-header-table\" [ngClass]=\"dt.tableStyleClass\" [ngStyle]=\"dt.tableStyle\">\n <ng-container *ngTemplateOutlet=\"frozen ? dt.frozenColGroupTemplate||dt.colGroupTemplate : dt.colGroupTemplate; context {$implicit: columns}\"></ng-container>\n <thead class=\"ui-table-thead\">\n <ng-container *ngTemplateOutlet=\"frozen ? dt.frozenHeaderTemplate||dt.headerTemplate : dt.headerTemplate; context {$implicit: columns}\"></ng-container>\n </thead>\n <tbody class=\"ui-table-tbody\">\n <ng-template ngFor let-rowData let-rowIndex=\"index\" [ngForOf]=\"dt.frozenValue\" [ngForTrackBy]=\"dt.rowTrackBy\">\n <ng-container *ngTemplateOutlet=\"dt.frozenRowsTemplate; context: {$implicit: rowData, rowIndex: rowIndex, columns: columns}\"></ng-container>\n </ng-template>\n </tbody>\n </table>\n </div>\n </div>\n <div #scrollBody class=\"ui-table-scrollable-body\">\n <table #scrollTable [ngClass]=\"{'ui-table-scrollable-body-table': true, 'ui-table-virtual-table': dt.virtualScroll}\" [class]=\"dt.tableStyleClass\" [ngStyle]=\"dt.tableStyle\">\n <ng-container *ngTemplateOutlet=\"frozen ? dt.frozenColGroupTemplate||dt.colGroupTemplate : dt.colGroupTemplate; context {$implicit: columns}\"></ng-container>\n <tbody class=\"ui-table-tbody\" [pTableBody]=\"columns\" [pTableBodyTemplate]=\"frozen ? dt.frozenBodyTemplate||dt.bodyTemplate : dt.bodyTemplate\" [frozen]=\"frozen\"></tbody>\n </table>\n <table #loadingTable *ngIf=\"dt.virtualScroll && dt.loadingBodyTemplate != null\" [ngClass]=\"{'ui-table-scrollable-body-table ui-table-loading-virtual-table': true, 'ui-table-virtual-table': dt.virtualScroll}\">\n <tbody class=\"ui-table-tbody\">\n <ng-template ngFor [ngForOf]=\"loadingArray\">\n <ng-container *ngTemplateOutlet=\"dt.loadingBodyTemplate; context: {columns: columns}\"></ng-container>\n </ng-template>\n </tbody>\n </table>\n <div #scrollableAligner style=\"background-color:transparent\" *ngIf=\"frozen\"></div>\n <div #virtualScroller class=\"ui-table-virtual-scroller\" *ngIf=\"dt.virtualScroll\"></div>\n </div>\n <div #scrollFooter class=\"ui-table-scrollable-footer ui-widget-header\">\n <div #scrollFooterBox class=\"ui-table-scrollable-footer-box\">\n <table class=\"ui-table-scrollable-footer-table\" [ngClass]=\"dt.tableStyleClass\" [ngStyle]=\"dt.tableStyle\">\n <ng-container *ngTemplateOutlet=\"frozen ? dt.frozenColGroupTemplate||dt.colGroupTemplate : dt.colGroupTemplate; context {$implicit: columns}\"></ng-container>\n <tfoot class=\"ui-table-tfoot\">\n <ng-container *ngTemplateOutlet=\"frozen ? dt.frozenFooterTemplate||dt.footerTemplate : dt.footerTemplate; context {$implicit: columns}\"></ng-container>\n </tfoot>\n </table>\n </div>\n </div>\n `\n})\nexport class ScrollableView implements AfterViewInit,OnDestroy,AfterViewChecked {\n\n @Input(\"pScrollableView\") columns: any[];\n\n @Input() frozen: boolean;\n\n @ViewChild('scrollHeader') scrollHeaderViewChild: ElementRef;\n\n @ViewChild('scrollHeaderBox') scrollHeaderBoxViewChild: ElementRef;\n\n @ViewChild('scrollBody') scrollBodyViewChild: ElementRef;\n\n @ViewChild('scrollTable') scrollTableViewChild: ElementRef;\n\n @ViewChild('loadingTable') scrollLoadingTableViewChild: ElementRef;\n\n @ViewChild('scrollFooter') scrollFooterViewChild: ElementRef;\n\n @ViewChild('scrollFooterBox') scrollFooterBoxViewChild: ElementRef;\n\n @ViewChild('virtualScroller') virtualScrollerViewChild: ElementRef;\n\n @ViewChild('scrollableAligner') scrollableAlignerViewChild: ElementRef;\n\n headerScrollListener: Function;\n\n bodyScrollListener: Function;\n\n footerScrollListener: Function;\n\n frozenSiblingBody: HTMLDivElement;\n\n scrollableSiblingBody: Element;\n\n _scrollHeight: string;\n\n subscription: Subscription;\n\n totalRecordsSubscription: Subscription;\n\n columnsSubscription: Subscription;\n\n initialized: boolean;\n\n preventBodyScrollPropagation: boolean;\n\n loadingArray: number[] = [];\n\n lastBodyScrollTop: number = 0;\n\n constructor(public dt: Table, public el: ElementRef, public zone: NgZone) {\n this.subscription = this.dt.tableService.valueSource$.subscribe(() => {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.alignScrollBar();\n\n if (this.scrollLoadingTableViewChild && this.scrollLoadingTableViewChild.nativeElement) {\n this.scrollLoadingTableViewChild.nativeElement.style.display = 'none';\n }\n }, 50);\n });\n });\n\n if (this.dt.virtualScroll) {\n this.totalRecordsSubscription = this.dt.tableService.totalRecordsSource$.subscribe(() => {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.setVirtualScrollerHeight();\n }, 50);\n });\n });\n }\n\n this.loadingArray = Array(this.dt.rows).fill(1);\n\n this.initialized = false;\n }\n\n @Input() get scrollHeight(): string {\n return this._scrollHeight;\n }\n set scrollHeight(val: string) {\n this._scrollHeight = val;\n this.setScrollHeight();\n }\n\n ngAfterViewChecked() {\n if (!this.initialized && this.el.nativeElement.offsetParent) {\n this.alignScrollBar();\n this.setScrollHeight();\n this.initialized = true;\n }\n }\n\n ngAfterViewInit() {\n if (!this.frozen) {\n if (this.dt.frozenColumns || this.dt.frozenBodyTemplate) {\n DomHandler.addClass(this.el.nativeElement, 'ui-table-unfrozen-view');\n }\n\n let frozenView = this.el.nativeElement.previousElementSibling;\n if (frozenView) {\n this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.ui-table-scrollable-body');\n }\n }\n else {\n if (this.scrollableAlignerViewChild && this.scrollableAlignerViewChild.nativeElement) {\n this.scrollableAlignerViewChild.nativeElement.style.height = DomHandler.calculateScrollbarHeight() + 'px';\n }\n let scrollableView = this.el.nativeElement.nextElementSibling;\n if (scrollableView) {\n this.scrollableSiblingBody = DomHandler.findSingle(scrollableView, '.ui-table-scrollable-body');\n }\n }\n\n this.bindEvents();\n this.setScrollHeight();\n this.alignScrollBar();\n\n if (this.frozen) {\n this.columnsSubscription = this.dt.tableService.columnsSource$.subscribe(() => {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.setScrollHeight();\n }, 50);\n });\n });\n }\n\n if (this.dt.virtualScroll) {\n this.setVirtualScrollerHeight();\n\n if (this.scrollLoadingTableViewChild && this.scrollLoadingTableViewChild.nativeElement) {\n this.scrollLoadingTableViewChild.nativeElement.style.display = 'table';\n }\n }\n }\n\n bindEvents() {\n this.zone.runOutsideAngular(() => {\n if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n this.headerScrollListener = this.onHeaderScroll.bind(this);\n this.scrollHeaderViewChild.nativeElement.addEventListener('scroll', this.headerScrollListener);\n }\n\n if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n this.footerScrollListener = this.onFooterScroll.bind(this);\n this.scrollFooterViewChild.nativeElement.addEventListener('scroll', this.footerScrollListener);\n }\n\n if (!this.frozen) {\n this.bodyScrollListener = this.onBodyScroll.bind(this);\n this.scrollBodyViewChild.nativeElement.addEventListener('scroll', this.bodyScrollListener);\n }\n });\n }\n\n unbindEvents() {\n if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n this.scrollHeaderViewChild.nativeElement.removeEventListener('scroll', this.headerScrollListener);\n }\n\n if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n this.scrollFooterViewChild.nativeElement.removeEventListener('scroll', this.footerScrollListener);\n }\n\n this.scrollBodyViewChild.nativeElement.removeEventListener('scroll', this.bodyScrollListener);\n }\n\n onHeaderScroll(event) {\n const scrollLeft = this.scrollHeaderViewChild.nativeElement.scrollLeft;\n\n this.scrollBodyViewChild.nativeElement.scrollLeft = scrollLeft;\n\n if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n this.scrollFooterViewChild.nativeElement.scrollLeft = scrollLeft;\n }\n\n this.preventBodyScrollPropagation = true;\n }\n\n onFooterScroll(event) {\n const scrollLeft = this.scrollFooterViewChild.nativeElement.scrollLeft;\n\n this.scrollBodyViewChild.nativeElement.scrollLeft = scrollLeft;\n\n if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n this.scrollHeaderViewChild.nativeElement.scrollLeft = scrollLeft;\n }\n\n this.preventBodyScrollPropagation = true;\n }\n\n onBodyScroll(event) {\n if (this.preventBodyScrollPropagation) {\n this.preventBodyScrollPropagation = false;\n return;\n }\n\n if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n this.scrollHeaderBoxViewChild.nativeElement.style.marginLeft = -1 * this.scrollBodyViewChild.nativeElement.scrollLeft + 'px';\n }\n\n if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n this.scrollFooterBoxViewChild.nativeElement.style.marginLeft = -1 * this.scrollBodyViewChild.nativeElement.scrollLeft + 'px';\n }\n\n if (this.frozenSiblingBody) {\n this.frozenSiblingBody.scrollTop = this.scrollBodyViewChild.nativeElement.scrollTop;\n }\n\n if (this.dt.virtualScroll) {\n requestAnimationFrame(() => {\n if (this.lastBodyScrollTop !== this.scrollBodyViewChild.nativeElement.scrollTop) {\n this.lastBodyScrollTop = this.scrollBodyViewChild.nativeElement.scrollTop;\n let viewport = DomHandler.getOuterHeight(this.scrollBodyViewChild.nativeElement);\n let tableHeight = DomHandler.getOuterHeight(this.scrollTableViewChild.nativeElement);\n let pageHeight = this.dt.virtualRowHeight * this.dt.rows;\n let virtualTableHeight = DomHandler.getOuterHeight(this.virtualScrollerViewChild.nativeElement);\n let pageCount = (virtualTableHeight / pageHeight)||1;\n let scrollBodyTop = this.scrollTableViewChild.nativeElement.style.top||'0';\n\n if ((this.scrollBodyViewChild.nativeElement.scrollTop + viewport > parseFloat(scrollBodyTop) + tableHeight) || (this.scrollBodyViewChild.nativeElement.scrollTop < parseFloat(scrollBodyTop))) {\n if (this.scrollLoadingTableViewChild && this.scrollLoadingTableViewChild.nativeElement) {\n this.scrollLoadingTableViewChild.nativeElement.style.display = 'table';\n this.scrollLoadingTableViewChild.nativeElement.style.top = this.scrollBodyViewChild.nativeElement.scrollTop + 'px';\n }\n\n let page = Math.floor((this.scrollBodyViewChild.nativeElement.scrollTop * pageCount) / (this.scrollBodyViewChild.nativeElement.scrollHeight)) + 1;\n this.dt.handleVirtualScroll({\n page: page,\n callback: () => {\n if (this.scrollLoadingTableViewChild && this.scrollLoadingTableViewChild.nativeElement) {\n this.scrollLoadingTableViewChild.nativeElement.style.display = 'none';\n }\n\n this.scrollTableViewChild.nativeElement.style.top = ((page - 1) * pageHeight) + 'px';\n\n if (this.frozenSiblingBody) {\n (<HTMLElement> this.frozenSiblingBody.children[0]).style.top = this.scrollTableViewChild.nativeElement.style.top;\n }\n\n this.dt.anchorRowIndex = null;\n }\n });\n }\n }\n });\n }\n }\n\n setScrollHeight() {\n if (this.scrollHeight && this.scrollBodyViewChild && this.scrollBodyViewChild.nativeElement) {\n if (this.frozenSiblingBody) {\n this.scrollBodyViewChild.nativeElement.style.maxHeight = this.frozenSiblingBody.style.maxHeight;\n }\n else {\n if (this.scrollHeight.indexOf('%') !== -1) {\n let relativeHeight;\n this.scrollBodyViewChild.nativeElement.style.visibility = 'hidden';\n this.scrollBodyViewChild.nativeElement.style.height = '100px'; //temporary height to calculate static height\n let containerHeight = DomHandler.getOuterHeight(this.dt.el.nativeElement.children[0]);\n\n if (this.scrollHeight.includes(\"calc\")) {\n let percentHeight = parseInt(this.scrollHeight.slice(this.scrollHeight.indexOf(\"(\") + 1, this.scrollHeight.indexOf(\"%\")));\n let diffValue = parseInt(this.scrollHeight.slice(this.scrollHeight.indexOf(\"-\") + 1, this.scrollHeight.indexOf(\")\")));\n relativeHeight = (DomHandler.getOuterHeight(this.dt.el.nativeElement.parentElement) * percentHeight / 100) - diffValue;\n }\n else {\n relativeHeight = DomHandler.getOuterHeight(this.dt.el.nativeElement.parentElement) * parseInt(this.scrollHeight) / 100;\n }\n\n let staticHeight = containerHeight - 100; //total height of headers, footers, paginators\n let scrollBodyHeight = (relativeHeight - staticHeight);\n\n if (this.frozen) {\n scrollBodyHeight -= DomHandler.calculateScrollbarWidth();\n }\n\n this.scrollBodyViewChild.nativeElement.style.height = 'auto';\n this.scrollBodyViewChild.nativeElement.style.maxHeight = scrollBodyHeight + 'px';\n this.scrollBodyViewChild.nativeElement.style.visibility = 'visible';\n }\n else {\n this.scrollBodyViewChild.nativeElement.style.maxHeight = this.scrollHeight;\n }\n }\n }\n }\n\n setVirtualScrollerHeight() {\n if (this.virtualScrollerViewChild.nativeElement) {\n this.virtualScrollerViewChild.nativeElement.style.height = this.dt.totalRecords * this.dt.virtualRowHeight + 'px';\n }\n }\n\n hasVerticalOverflow() {\n return DomHandler.getOuterHeight(this.scrollTableViewChild.nativeElement) > DomHandler.getOuterHeight(this.scrollBodyViewChild.nativeElement);\n }\n\n alignScrollBar() {\n if (!this.frozen) {\n let scrollBarWidth = this.hasVerticalOverflow() ? DomHandler.calculateScrollbarWidth() : 0;\n this.scrollHeaderBoxViewChild.nativeElement.style.marginRight = scrollBarWidth + 'px';\n\n if (this.scrollFooterBoxViewChild && this.scrollFooterBoxViewChild.nativeElement) {\n this.scrollFooterBoxViewChild.nativeElement.style.marginRight = scrollBarWidth + 'px';\n }\n }\n this.initialized = false;\n }\n\n ngOnDestroy() {\n this.unbindEvents();\n\n this.frozenSiblingBody = null;\n\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n\n if (this.totalRecordsSubscription) {\n this.totalRecordsSubscription.unsubscribe();\n }\n\n if (this.columnsSubscription) {\n this.columnsSubscription.unsubscribe();\n }\n\n this.initialized = false;\n }\n}\n\n@Directive({\n selector: '[pSortableColumn]',\n host: {\n '[class.ui-sortable-column]': 'isEnabled()',\n '[class.ui-state-highlight]': 'sorted',\n '[attr.tabindex]': 'isEnabled() ? \"0\" : null',\n '[attr.role]': '\"columnheader\"',\n '[attr.aria-sort]': 'sortOrder'\n }\n})\nexport class SortableColumn implements OnInit, OnDestroy {\n\n @Input(\"pSortableColumn\") field: string;\n\n @Input() pSortableColumnDisabled: boolean;\n\n sorted: boolean;\n\n sortOrder: string;\n\n subscription: Subscription;\n\n constructor(public dt: Table) {\n if (this.isEnabled()) {\n this.subscription = this.dt.tableService.sortSource$.subscribe(sortMeta => {\n this.updateSortState();\n });\n }\n }\n\n ngOnInit() {\n if (this.isEnabled()) {\n this.updateSortState();\n }\n }\n\n updateSortState() {\n this.sorted = this.dt.isSorted(this.field);\n this.sortOrder = this.sorted ? (this.dt.sortOrder === 1 ? 'ascending' : 'descending') : 'none';\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n if (this.isEnabled()) {\n this.updateSortState();\n this.dt.sort({\n originalEvent: event,\n field: this.field\n });\n\n DomHandler.clearSelection();\n }\n }\n\n @HostListener('keydown.enter', ['$event'])\n onEnterKey(event: MouseEvent) {\n this.onClick(event);\n }\n\n isEnabled() {\n return this.pSortableColumnDisabled !== true;\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n}\n\n\n@Component({\n selector: 'p-sortIcon',\n template: `\n <i class=\"ui-sortable-column-icon pi pi-fw\" [ngClass]=\"{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}\"></i>\n `\n})\nexport class SortIcon implements OnInit, OnDestroy {\n\n @Input() field: string;\n\n subscription: Subscription;\n\n sortOrder: number;\n\n constructor(public dt: Table) {\n this.subscription = this.dt.tableService.sortSource$.subscribe(sortMeta => {\n this.updateSortState();\n });\n }\n\n ngOnInit() {\n this.updateSortState();\n }\n\n onClick(event){\n event.preventDefault();\n }\n\n updateSortState() {\n if (this.dt.sortMode === 'single') {\n this.sortOrder = this.dt.isSorted(this.field) ? this.dt.sortOrder : 0;\n }\n else if (this.dt.sortMode === 'multiple') {\n let sortMeta = this.dt.getSortMeta(this.field);\n this.sortOrder = sortMeta ? sortMeta.order: 0;\n }\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n\n@Directive({\n selector: '[pSelectableRow]',\n host: {\n '[class.ui-selectable-row]': 'isEnabled()',\n '[class.ui-state-highlight]': 'selected',\n '[attr.tabindex]': 'isEnabled() ? 0 : undefined'\n }\n})\nexport class SelectableRow implements OnInit, OnDestroy {\n\n @Input(\"pSelectableRow\") data: any;\n\n @Input(\"pSelectableRowIndex\") index: number;\n\n @Input() pSelectableRowDisabled: boolean;\n\n selected: boolean;\n\n subscription: Subscription;\n\n constructor(public dt: Table, public tableService: TableService) {\n if (this.isEnabled()) {\n this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n this.selected = this.dt.isSelected(this.data);\n });\n }\n }\n\n ngOnInit() {\n if (this.isEnabled()) {\n this.selected = this.dt.isSelected(this.data);\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n if (this.isEnabled()) {\n this.dt.handleRowClick({\n originalEvent: event,\n rowData: this.data,\n rowIndex: this.index\n });\n }\n }\n\n @HostListener('touchend', ['$event'])\n onTouchEnd(event: Event) {\n if (this.isEnabled()) {\n this.dt.handleRowTouchEnd(event);\n }\n }\n\n @HostListener('keydown.arrowdown', ['$event'])\n onArrowDownKeyDown(event: KeyboardEvent) {\n if (!this.isEnabled()) {\n return;\n }\n\n const row = <HTMLTableRowElement>event.currentTarget;\n const nextRow = this.findNextSelectableRow(row);\n\n if (nextRow) {\n nextRow.focus();\n }\n\n event.preventDefault();\n }\n\n @HostListener('keydown.arrowup', ['$event'])\n onArrowUpKeyDown(event: KeyboardEvent) {\n if (!this.isEnabled()) {\n return;\n }\n\n const row = <HTMLTableRowElement>event.currentTarget;\n const prevRow = this.findPrevSelectableRow(row);\n\n if (prevRow) {\n prevRow.focus();\n }\n\n event.preventDefault();\n }\n\n @HostListener('keydown.enter', ['$event'])\n onEnterKeyDown(event: KeyboardEvent) {\n if (!this.isEnabled()) {\n return;\n }\n\n this.dt.handleRowClick({\n originalEvent: event,\n rowData: this.data,\n rowIndex: this.index\n });\n }\n\n findNextSelectableRow(row: HTMLTableRowElement): HTMLTableRowElement {\n let nextRow = <HTMLTableRowElement> row.nextElementSibling;\n if (nextRow) {\n if (DomHandler.hasClass(nextRow, 'ui-selectable-row'))\n return nextRow;\n else\n return this.findNextSelectableRow(nextRow);\n }\n else {\n return null;\n }\n }\n\n findPrevSelectableRow(row: HTMLTableRowElement): HTMLTableRowElement {\n let prevRow = <HTMLTableRowElement> row.previousElementSibling;\n if (prevRow) {\n if (DomHandler.hasClass(prevRow, 'ui-selectable-row'))\n return prevRow;\n else\n return this.findPrevSelectableRow(prevRow);\n }\n else {\n return null;\n }\n }\n\n isEnabled() {\n return this.pSelectableRowDisabled !== true;\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n}\n\n@Directive({\n selector: '[pSelectableRowDblClick]',\n host: {\n '[class.ui-selectable-row]': 'isEnabled()',\n '[class.ui-state-highlight]': 'selected'\n }\n})\nexport class SelectableRowDblClick implements OnInit, OnDestroy {\n\n @Input(\"pSelectableRowDblClick\") data: any;\n\n @Input(\"pSelectableRowIndex\") index: number;\n\n @Input() pSelectableRowDisabled: boolean;\n\n selected: boolean;\n\n subscription: Subscription;\n\n constructor(public dt: Table, public tableService: TableService) {\n if (this.isEnabled()) {\n this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n this.selected = this.dt.isSelected(this.data);\n });\n }\n }\n\n ngOnInit() {\n if (this.isEnabled()) {\n this.selected = this.dt.isSelected(this.data);\n }\n }\n\n @HostListener('dblclick', ['$event'])\n onClick(event: Event) {\n if (this.isEnabled()) {\n this.dt.handleRowClick({\n originalEvent: event,\n rowData: this.data,\n rowIndex: this.index\n });\n }\n }\n\n isEnabled() {\n return this.pSelectableRowDisabled !== true;\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n}\n\n@Directive({\n selector: '[pContextMenuRow]',\n host: {\n '[class.ui-contextmenu-selected]': 'selected',\n '[attr.tabindex]': 'isEnabled() ? 0 : undefined'\n }\n})\nexport class ContextMenuRow {\n\n @Input(\"pContextMenuRow\") data: any;\n\n @Input(\"pContextMenuRowIndex\") index: number;\n\n @Input() pContextMenuRowDisabled: boolean;\n\n selected: boolean;\n\n subscription: Subscription;\n\n constructor(public dt: Table, public tableService: TableService, private el: ElementRef) {\n if (this.isEnabled()) {\n this.subscription = this.dt.tableService.contextMenuSource$.subscribe((data) => {\n this.selected = this.dt.equals(this.data, data);\n });\n }\n }\n\n @HostListener('contextmenu', ['$event'])\n onContextMenu(event: Event) {\n if (this.isEnabled()) {\n this.dt.handleRowRightClick({\n originalEvent: event,\n rowData: this.data,\n rowIndex: this.index\n });\n\n this.el.nativeElement.focus();\n event.preventDefault();\n }\n }\n\n isEnabled() {\n return this.pContextMenuRowDisabled !== true;\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n}\n\n@Directive({\n selector: '[pRowToggler]'\n})\nexport class RowToggler {\n\n @Input('pRowToggler') data: any;\n\n @Input() pRowTogglerDisabled: boolean;\n\n constructor(public dt: Table) { }\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n if (this.isEnabled()) {\n this.dt.toggleRow(this.data, event);\n event.preventDefault();\n }\n }\n\n isEnabled() {\n return this.pRowTogglerDisabled !== true;\n }\n}\n\n@Directive({\n selector: '[pResizableColumn]'\n})\nexport class ResizableColumn implements AfterViewInit, OnDestroy {\n\n @Input() pResizableColumnDisabled: boolean;\n\n resizer: HTMLSpanElement;\n\n resizerMouseDownListener: any;\n\n documentMouseMoveListener: any;\n\n documentMouseUpListener: any;\n\n constructor(public dt: Table, public el: ElementRef, public zone: NgZone) { }\n\n ngAfterViewInit() {\n if (this.isEnabled()) {\n DomHandler.addClass(this.el.nativeElement, 'ui-resizable-column');\n this.resizer = document.createElement('span');\n this.resizer.className = 'ui-column-resizer ui-clickable';\n this.el.nativeElement.appendChild(this.resizer);\n\n this.zone.runOutsideAngular(() => {\n this.resizerMouseDownListener = this.onMouseDown.bind(this);\n this.resizer.addEventListener('mousedown', this.resizerMouseDownListener);\n });\n }\n }\n\n bindDocumentEvents() {\n this.zone.runOutsideAngular(() => {\n this.documentMouseMoveListener = this.onDocumentMouseMove.bind(this);\n document.addEventListener('mousemove', this.documentMouseMoveListener);\n\n this.documentMouseUpListener = this.onDocumentMouseUp.bind(this);\n document.addEventListener('mouseup', this.documentMouseUpListener);\n });\n }\n\n unbindDocumentEvents() {\n if (this.documentMouseMoveListener) {\n document.removeEventListener('mousemove', this.documentMouseMoveListener);\n this.documentMouseMoveListener = null;\n }\n\n if (this.documentMouseUpListener) {\n document.removeEventListener('mouseup', this.documentMouseUpListener);\n this.documentMouseUpListener = null;\n }\n }\n\n onMouseDown(event: MouseEvent) {\n if (event.which === 1) {\n this.dt.onColumnResizeBegin(event);\n this.bindDocumentEvents();\n }\n }\n\n onDocumentMouseMove(event: MouseEvent) {\n this.dt.onColumnResize(event);\n }\n\n onDocumentMouseUp(event: MouseEvent) {\n this.dt.onColumnResizeEnd(event, this.el.nativeElement);\n this.unbindDocumentEvents();\n }\n\n isEnabled() {\n return this.pResizableColumnDisabled !== true;\n }\n\n ngOnDestroy() {\n if (this.resizerMouseDownListener) {\n this.resizer.removeEventListener('mousedown', this.resizerMouseDownListener);\n }\n\n this.unbindDocumentEvents();\n }\n}\n\n@Directive({\n selector: '[pReorderableColumn]'\n})\nexport class ReorderableColumn implements AfterViewInit, OnDestroy {\n\n @Input() pReorderableColumnDisabled: boolean;\n\n dragStartListener: any;\n\n dragOverListener: any;\n\n dragEnterListener: any;\n\n dragLeaveListener: any;\n\n mouseDownListener: any;\n\n constructor(public dt: Table, public el: ElementRef, public zone: NgZone) { }\n\n ngAfterViewInit() {\n if (this.isEnabled()) {\n this.bindEvents();\n }\n }\n\n bindEvents() {\n this.zone.runOutsideAngular(() => {\n this.mouseDownListener = this.onMouseDown.bind(this);\n this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n\n this.dragStartListener = this.onDragStart.bind(this);\n this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);\n\n this.dragOverListener = this.onDragEnter.bind(this);\n this.el.nativeElement.addEventListener('dragover', this.dragOverListener);\n\n this.dragEnterListener = this.onDragEnter.bind(this);\n this.el.nativeElement.addEventListener('dragenter', this.dragEnterListener);\n\n this.dragLeaveListener = this.onDragLeave.bind(this);\n this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);\n });\n }\n\n unbindEvents() {\n if (this.mouseDownListener) {\n document.removeEventListener('mousedown', this.mouseDownListener);\n this.mouseDownListener = null;\n }\n\n if (this.dragOverListener) {\n document.removeEventListener('dragover', this.dragOverListener);\n this.dragOverListener = null;\n }\n\n if (this.dragEnterListener) {\n document.removeEventListener('dragenter', this.dragEnterListener);\n this.dragEnterListener = null;\n }\n\n if (this.dragEnterListener) {\n document.removeEventListener('dragenter', this.dragEnterListener);\n this.dragEnterListener = null;\n }\n\n if (this.dragLeaveListener) {\n document.removeEventListener('dragleave', this.dragLeaveListener);\n this.dragLeaveListener = null;\n }\n }\n\n onMouseDown(event) {\n if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'ui-column-resizer'))\n this.el.nativeElement.draggable = false;\n else\n this.el.nativeElement.draggable = true;\n }\n\n onDragStart(event) {\n this.dt.onColumnDragStart(event, this.el.nativeElement);\n }\n\n onDragOver(event) {\n event.preventDefault();\n }\n\n onDragEnter(event) {\n this.dt.onColumnDragEnter(event, this.el.nativeElement);\n }\n\n onDragLeave(event) {\n this.dt.onColumnDragLeave(event);\n }\n\n @HostListener('drop', ['$event'])\n onDrop(event) {\n if (this.isEnabled()) {\n this.dt.onColumnDrop(event, this.el.nativeElement);\n }\n }\n\n isEnabled() {\n return this.pReorderableColumnDisabled !== true;\n }\n\n ngOnDestroy() {\n this.unbindEvents();\n }\n\n}\n\n@Directive({\n selector: '[pEditableColumn]'\n})\nexport class EditableColumn implements AfterViewInit {\n\n @Input(\"pEditableColumn\") data: any;\n\n @Input(\"pEditableColumnField\") field: any;\n\n @Input(\"pEditableColumnRowIndex\") rowIndex: number;\n\n @Input() pEditableColumnDisabled: boolean;\n\n @Input() pFocusCellSelector: string;\n\n constructor(public dt: Table, public el: ElementRef, public zone: NgZone) {}\n\n ngAfterViewInit() {\n if (this.isEnabled()) {\n DomHandler.addClass(this.el.nativeElement, 'ui-editable-column');\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n if (this.isEnabled()) {\n this.dt.editingCellClick = true;\n\n if (this.dt.editingCell) {\n if (this.dt.editingCell !== this.el.nativeElement) {\n if (!this.dt.isEditingCellValid()) {\n return;\n }\n\n this.closeEditingCell(true, event);\n this.openCell();\n }\n }\n else {\n this.openCell();\n }\n }\n }\n\n openCell() {\n this.dt.updateEditingCell(this.el.nativeElement, this.data, this.field, this.rowIndex);\n DomHandler.addClass(this.el.nativeElement, 'ui-editing-cell');\n this.dt.onEditInit.emit({field: this.field, data: this.data, index: this.rowIndex});\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n let focusCellSelector = this.pFocusCellSelector || 'input, textarea, select';\n let focusableElement = DomHandler.findSingle(this.el.nativeElement, focusCellSelector);\n\n if (focusableElement) {\n focusableElement.focus();\n }\n }, 50);\n });\n }\n\n closeEditingCell(completed, event) {\n if (completed)\n this.dt.onEditComplete.emit({field: this.dt.editingCellField, data: this.dt.editingCellData, originalEvent: event, index: this.rowIndex});\n else\n this.dt.onEditCancel.emit({field: this.dt.editingCellField, data: this.dt.editingCellData, originalEvent: event, index: this.rowIndex});\n\n DomHandler.removeClass(this.dt.editingCell, 'ui-editing-cell');\n this.dt.editingCell = null;\n this.dt.editingCellData = null;\n this.dt.editingCellField = null;\n this.dt.unbindDocumentEditListener();\n }\n\n @HostListener('keydown.enter', ['$event'])\n onEnterKeyDown(event: KeyboardEvent) {\n if (this.isEnabled()) {\n if (this.dt.isEditingCellValid()) {\n this.closeEditingCell(true, event);\n }\n\n event.preventDefault();\n }\n }\n\n @HostListener('keydown.escape', ['$event'])\n onEscapeKeyDown(event: KeyboardEvent) {\n if (this.isEnabled()) {\n if (this.dt.isEditingCellValid()) {\n this.closeEditingCell(false, event);\n }\n\n event.preventDefault();\n }\n }\n\n @HostListener('keydown.tab', ['$event'])\n @HostListener('keydown.shift.tab', ['$event'])\n @HostListener('keydown.meta.tab', ['$event'])\n onShiftKeyDown(event: KeyboardEvent) {\n if (this.isEnabled()) {\n if (event.shiftKey)\n this.moveToPreviousCell(event);\n else{\n this.moveToNextCell(event);\n }\n }\n }\n\n findCell(element) {\n if (element) {\n let cell = element;\n while (cell && !DomHandler.hasClass(cell, 'ui-editing-cell')) {\n cell = cell.parentElement;\n }\n\n return cell;\n }\n else {\n return null;\n }\n }\n\n moveToPreviousCell(event: KeyboardEvent) {\n let currentCell = this.findCell(event.target);\n if (currentCell) {\n let targetCell = this.findPreviousEditableColumn(currentCell);\n\n if (targetCell) {\n if (this.dt.isEditingCellValid()) {\n this.closeEditingCell(true, event);\n }\n\n DomHandler.invokeElementMethod(event.target, 'blur');\n DomHandler.invokeElementMethod(targetCell, 'click');\n event.preventDefault();\n }\n }\n }\n\n moveToNextCell(event: KeyboardEvent) {\n let currentCell = this.findCell(event.target);\n if (currentCell) {\n let targetCell = this.findNextEditableColumn(currentCell);\n\n if (targetCell) {\n if (this.dt.isEditingCellValid()) {\n this.closeEditingCell(true, event);\n }\n\n DomHandler.invokeElementMethod(event.target, 'blur');\n DomHandler.invokeElementMethod(targetCell, 'click');\n event.preventDefault();\n }\n }\n }\n\n findPreviousEditableColumn(cell: Element) {\n let prevCell = cell.previousElementSibling;\n\n if (!prevCell) {\n let previousRow = cell.parentElement.previousElementSibling;\n if (previousRow) {\n prevCell = previousRow.lastElementChild;\n }\n }\n\n if (prevCell) {\n if (DomHandler.hasClass(prevCell, 'ui-editable-column'))\n return prevCell;\n else\n return this.findPreviousEditableColumn(prevCell);\n }\n else {\n return null;\n }\n }\n\n findNextEditableColumn(cell: Element) {\n let nextCell = cell.nextElementSibling;\n\n if (!nextCell) {\n let nextRow = cell.parentElement.nextElementSibling;\n if (nextRow) {\n nextCell = nextRow.firstElementChild;\n }\n }\n\n if (nextCell) {\n if (DomHandler.hasClass(nextCell, 'ui-editable-column'))\n return nextCell;\n else\n return this.findNextEditableColumn(nextCell);\n }\n else {\n return null;\n }\n }\n\n isEnabled() {\n return this.pEditableColumnDisabled !== true;\n }\n\n}\n\n@Directive({\n selector: '[pEditableRow]'\n})\nexport class EditableRow {\n\n @Input(\"pEditableRow\") data: any;\n\n @Input() pEditableRowDisabled: boolean;\n\n constructor(public el: ElementRef) {}\n\n isEnabled() {\n return this.pEditableRowDisabled !== true;\n }\n\n}\n\n@Directive({\n selector: '[pInitEditableRow]'\n})\nexport class InitEditableRow {\n\n constructor(public dt: Table, public editableRow: EditableRow) {}\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n this.dt.initRowEdit(this.editableRow.data);\n event.preventDefault();\n }\n\n}\n\n@Directive({\n selector: '[pSaveEditableRow]'\n})\nexport class SaveEditableRow {\n\n constructor(public dt: Table, public editableRow: EditableRow) {}\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n this.dt.saveRowEdit(this.editableRow.data, this.editableRow.el.nativeElement);\n event.preventDefault();\n }\n}\n\n@Directive({\n selector: '[pCancelEditableRow]'\n})\nexport class CancelEditableRow {\n\n constructor(public dt: Table, public editableRow: EditableRow) {}\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n this.dt.cancelRowEdit(this.editableRow.data);\n event.preventDefault();\n }\n}\n\n@Component({\n selector: 'p-cellEditor',\n template: `\n <ng-container *ngIf=\"editing\">\n <ng-container *ngTemplateOutlet=\"inputTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!editing\">\n <ng-container *ngTemplateOutlet=\"outputTemplate\"></ng-container>\n </ng-container>\n `\n})\nexport class CellEditor implements AfterContentInit {\n\n @ContentChildren(PrimeTemplate) templates: QueryList<PrimeTemplate>;\n\n inputTemplate: TemplateRef<any>;\n\n outputTemplate: TemplateRef<any>;\n\n constructor(public dt: Table, @Optional() public editableColumn: EditableColumn, @Optional() public editableRow: EditableRow) { }\n\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'input':\n this.inputTemplate = item.template;\n break;\n\n case 'output':\n this.outputTemplate = item.template;\n break;\n }\n });\n }\n\n get editing(): boolean {\n return (this.dt.editingCell && this.editableColumn && this.dt.editingCell === this.editableColumn.el.nativeElement) ||\n (this.editableRow && this.dt.editMode === 'row' && this.dt.isRowEditing(this.editableRow.data));\n }\n\n}\n\n@Component({\n selector: 'p-tableRadioButton',\n template: `\n <div class=\"ui-radiobutton ui-widget\" (click)=\"onClick($event)\">\n <div class=\"ui-helper-hidden-accessible\">\n <input type=\"radio\" [attr.id]=\"inputId\" [attr.name]=\"name\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\n [disabled]=\"disabled\" [attr.aria-label]=\"ariaLabel\">\n </div>\n <div #box [ngClass]=\"{'ui-radiobutton-box ui-widget ui-state-default':true,\n 'ui-state-active':checked, 'ui-state-disabled':disabled}\" role=\"radio\" [attr.aria-checked]=\"checked\">\n <span class=\"ui-radiobutton-icon ui-clickable\" [ngClass]=\"{'pi pi-circle-on':checked}\"></span>\n </div>\n </div>\n `\n})\nexport class TableRadioButton {\n\n @Input() disabled: boolean;\n\n @Input() value: any;\n\n @Input() index: number;\n\n @Input() inputId: string;\n\n @Input() name: string;\n\n @Input() ariaLabel: string;\n\n @ViewChild('box') boxViewChild: ElementRef;\n\n checked: boolean;\n\n subscription: Subscription;\n\n constructor(public dt: Table, public tableService: TableService) {\n this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n this.checked = this.dt.isSelected(this.value);\n });\n }\n\n ngOnInit() {\n this.checked = this.dt.isSelected(this.value);\n }\n\n onClick(event: Event) {\n if (!this.disabled) {\n this.dt.toggleRowWithRadio({\n originalEvent: event,\n rowIndex: this.index\n }, this.value);\n }\n DomHandler.clearSelection();\n }\n\n onFocus() {\n DomHandler.addClass(this.boxViewChild.nativeElement, 'ui-state-focus');\n }\n\n onBlur() {\n DomHandler.removeClass(this.boxViewChild.nativeElement, 'ui-state-focus');\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n}\n\n@Component({\n selector: 'p-tableCheckbox',\n template: `\n <div class=\"ui-chkbox ui-widget\" (click)=\"onClick($event)\">\n <div class=\"ui-helper-hidden-accessible\">\n <input type=\"checkbox\" [attr.id]=\"inputId\" [attr.name]=\"name\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" [disabled]=\"disabled\"\n [attr.required]=\"required\" [attr.aria-label]=\"ariaLabel\">\n </div>\n <div #box [ngClass]=\"{'ui-chkbox-box ui-widget ui-state-default':true,\n 'ui-state-active':checked, 'ui-state-disabled':disabled}\" role=\"checkbox\" [attr.aria-checked]=\"checked\">\n <span class=\"ui-chkbox-icon ui-clickable\" [ngClass]=\"{'pi pi-check':checked}\"></span>\n </div>\n </div>\n `\n})\nexport class TableCheckbox {\n\n @Input() disabled: boolean;\n\n @Input() value: any;\n\n @Input() index: number;\n\n @Input() inputId: string;\n\n @Input() name: string;\n\n @Input() required: boolean;\n\n @Input() ariaLabel: string;\n\n @ViewChild('box') boxViewChild: ElementRef;\n\n checked: boolean;\n\n subscription: Subscription;\n\n constructor(public dt: Table, public tableService: TableService) {\n this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n this.checked = this.dt.isSelected(this.value);\n });\n }\n\n ngOnInit() {\n this.checked = this.dt.isSelected(this.value);\n }\n\n onClick(event: Event) {\n if (!this.disabled) {\n this.dt.toggleRowWithCheckbox({\n originalEvent: event,\n rowIndex: this.index\n }, this.value);\n }\n DomHandler.clearSelection();\n }\n\n onFocus() {\n DomHandler.addClass(this.boxViewChild.nativeElement, 'ui-state-focus');\n }\n\n onBlur() {\n DomHandler.removeClass(this.boxViewChild.nativeElement, 'ui-state-focus');\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n}\n\n@Component({\n selector: 'p-tableHeaderCheckbox',\n template: `\n <div class=\"ui-chkbox ui-widget\" (click)=\"onClick($event)\">\n <div class=\"ui-helper-hidden-accessible\">\n <input #cb type=\"checkbox\" [attr.id]=\"inputId\" [attr.name]=\"name\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\n [disabled]=\"isDisabled()\" [attr.aria-label]=\"ariaLabel\">\n </div>\n <div #box [ngClass]=\"{'ui-chkbox-box ui-widget ui-state-default':true,\n 'ui-state-active':checked, 'ui-state-disabled': isDisabled()}\" role=\"checkbox\" [attr.aria-checked]=\"checked\">\n <span class=\"ui-chkbox-icon ui-clickable\" [ngClass]=\"{'pi pi-check':checked}\"></span>\n </div>\n </div>\n `\n})\nexport class TableHeaderCheckbox {\n\n @ViewChild('box') boxViewChild: ElementRef;\n\n @Input() disabled: boolean;\n\n @Input() inputId: string;\n\n @Input() name: string;\n\n @Input() ariaLabel: string;\n\n checked: boolean;\n\n selectionChangeSubscription: Subscription;\n\n valueChangeSubscription: Subscription;\n\n constructor(public dt: Table, public tableService: TableService) {\n this.valueChangeSubscription = this.dt.tableService.valueSource$.subscribe(() => {\n this.checked = this.updateCheckedState();\n });\n\n this.selectionChangeSubscription = this.dt.tableService.selectionSource$.subscribe(() => {\n this.checked = this.updateCheckedState();\n });\n }\n\n ngOnInit() {\n this.checked = this.updateCheckedState();\n }\n\n onClick(event: Event) {\n if (!this.disabled) {\n if (this.dt.value && this.dt.value.length > 0) {\n this.dt.toggleRowsWithCheckbox(event, !this.checked);\n }\n }\n\n DomHandler.clearSelection();\n }\n\n onFocus() {\n DomHandler.addClass(this.boxViewChild.nativeElement, 'ui-state-focus');\n }\n\n onBlur() {\n DomHandler.removeClass(this.boxViewChild.nativeElement, 'ui-state-focus');\n }\n\n isDisabled() {\n return this.disabled || !this.dt.value || !this.dt.value.length;\n }\n\n ngOnDestroy() {\n if (this.selectionChangeSubscription) {\n this.selectionChangeSubscription.unsubscribe();\n }\n\n if (this.valueChangeSubscription) {\n this.valueChangeSubscription.unsubscribe();\n }\n }\n\n updateCheckedState() {\n if (this.dt.filteredValue) {\n const val = this.dt.filteredValue;\n return (val && val.length > 0 && this.dt.selection && this.dt.selection.length > 0 && this.isAllFilteredValuesChecked());\n }\n else {\n const val = this.dt.value;\n return (val && val.length > 0 && this.dt.selection && this.dt.selection.length > 0 && this.dt.selection.length === val.length);\n }\n }\n\n isAllFilteredValuesChecked() {\n if (!this.dt.filteredValue) {\n return false;\n }\n else {\n for (let rowData of this.dt.filteredValue) {\n if (!this.dt.isSelected(rowData)) {\n return false;\n }\n }\n return true;\n }\n }\n\n}\n\n@Directive({\n selector: '[pReorderableRowHandle]'\n})\nexport class ReorderableRowHandle implements AfterViewInit {\n\n @Input(\"pReorderableRowHandle\") index: number;\n\n constructor(public el: ElementRef) {}\n\n ngAfterViewInit() {\n DomHandler.addClass(this.el.nativeElement, 'ui-table-reorderablerow-handle');\n }\n}\n\n@Directive({\n selector: '[pReorderableRow]'\n})\nexport class ReorderableRow implements AfterViewInit {\n\n @Input(\"pReorderableRow\") index: number;\n\n @Input() pReorderableRowDisabled: boolean;\n\n mouseDownListener: any;\n\n dragStartListener: any;\n\n dragEndListener: any;\n\n dragOverListener: any;\n\n dragLeaveListener: any;\n\n dropListener: any;\n\n constructor(public dt: Table, public el: ElementRef, public zone: NgZone) {}\n\n ngAfterViewInit() {\n if (this.isEnabled()) {\n this.el.nativeElement.droppable = true;\n this.bindEvents();\n }\n }\n\n bindEvents() {\n this.zone.runOutsideAngular(() => {\n this.mouseDownListener = this.onMouseDown.bind(this);\n this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n\n this.dragStartListener = this.onDragStart.bind(this);\n this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);\n\n this.dragEndListener = this.onDragEnd.bind(this);\n this.el.nativeElement.addEventListener('dragend', this.dragEndListener);\n\n this.dragOverListener = this.onDragOver.bind(this);\n this.el.nativeElement.addEventListener('dragover', this.dragOverListener);\n\n this.dragLeaveListener = this.onDragLeave.bind(this);\n this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);\n });\n }\n\n unbindEvents() {\n if (this.mouseDownListener) {\n document.removeEventListener('mousedown', this.mouseDownListener);\n this.mouseDownListener = null;\n }\n\n if (this.dragStartListener) {\n document.removeEventListener('dragstart', this.dragStartListener);\n this.dragStartListener = null;\n }\n\n if (this.dragEndListener) {\n document.removeEventListener('dragend', this.dragEndListener);\n this.dragEndListener = null;\n }\n\n if (this.dragOverListener) {\n document.removeEventListener('dragover', this.dragOverListener);\n this.dragOverListener = null;\n }\n\n if (this.dragLeaveListener) {\n document.removeEventListener('dragleave', this.dragLeaveListener);\n this.dragLeaveListener = null;\n }\n }\n\n onMouseDown(event) {\n if (DomHandler.hasClass(event.target, 'ui-table-reorderablerow-handle'))\n this.el.nativeElement.draggable = true;\n else\n this.el.nativeElement.draggable = false;\n }\n\n onDragStart(event) {\n this.dt.onRowDragStart(event, this.index);\n }\n\n onDragEnd(event) {\n this.dt.onRowDragEnd(event);\n this.el.nativeElement.draggable = false;\n }\n\n onDragOver(event) {\n this.dt.onRowDragOver(event, this.index, this.el.nativeElement);\n event.preventDefault();\n }\n\n onDragLeave(event) {\n this.dt.onRowDragLeave(event, this.el.nativeElement);\n }\n\n isEnabled() {\n return this.pReorderableRowDisabled !== true;\n }\n\n @HostListener('drop', ['$event'])\n onDrop(event) {\n if (this.isEnabled() && this.dt.rowDragging) {\n this.dt.onRowDrop(event, this.el.nativeElement);\n }\n\n event.preventDefault()\n }\n}\n\n@NgModule({\n imports: [CommonModule,PaginatorModule],\n exports: [Table,SharedModule,SortableColumn,SelectableRow,RowToggler,ContextMenuRow,ResizableColumn,ReorderableColumn,EditableColumn,CellEditor,SortIcon,TableRadioButton,TableCheckbox,TableHeaderCheckbox,ReorderableRowHandle,ReorderableRow,SelectableRowDblClick,EditableRow,InitEditableRow,SaveEditableRow,CancelEditableRow],\n declarations: [Table,SortableColumn,SelectableRow,RowToggler,ContextMenuRow,ResizableColumn,ReorderableColumn,EditableColumn,CellEditor,TableBody,ScrollableView,SortIcon,TableRadioButton,TableCheckbox,TableHeaderCheckbox,ReorderableRowHandle,ReorderableRow,SelectableRowDblClick,EditableRow,InitEditableRow,SaveEditableRow,CancelEditableRow]\n})\nexport class TableModule { }\n"],"names":["Subject","Injectable","EventEmitter","ObjectUtils","DomHandler","FilterUtils","ElementRef","NgZone","ChangeDetectorRef","Input","Output","ViewChild","ContentChildren","PrimeTemplate","Component","ChangeDetectionStrategy","HostListener","Directive","Optional","NgModule","CommonModule","PaginatorModule","SharedModule"],"mappings":"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"}
\No newline at end of file