Icard/angular-clarity-master(work.../node_modules/primeng/fesm2022/primeng-table.mjs.map

1 line
402 KiB
Plaintext

{"version":3,"file":"primeng-table.mjs","sources":["../../src/app/components/table/table.ts","../../src/app/components/table/primeng-table.ts"],"sourcesContent":["import { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\nimport { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Injectable,\n Input,\n NgModule,\n NgZone,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n PLATFORM_ID,\n QueryList,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BlockableUI, FilterMatchMode, FilterMetadata, FilterOperator, FilterService, LazyLoadMeta, OverlayService, PrimeNGConfig, PrimeTemplate, ScrollerOptions, SelectItem, SharedModule, SortMeta, TableState, TranslationKeys } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { CalendarModule } from 'primeng/calendar';\nimport { ConnectedOverlayScrollHandler, DomHandler } from 'primeng/dom';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { ArrowDownIcon } from 'primeng/icons/arrowdown';\nimport { ArrowUpIcon } from 'primeng/icons/arrowup';\nimport { CheckIcon } from 'primeng/icons/check';\nimport { FilterIcon } from 'primeng/icons/filter';\nimport { FilterSlashIcon } from 'primeng/icons/filterslash';\nimport { PlusIcon } from 'primeng/icons/plus';\nimport { SortAltIcon } from 'primeng/icons/sortalt';\nimport { SortAmountDownIcon } from 'primeng/icons/sortamountdown';\nimport { SortAmountUpAltIcon } from 'primeng/icons/sortamountupalt';\nimport { SpinnerIcon } from 'primeng/icons/spinner';\nimport { TrashIcon } from 'primeng/icons/trash';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { Scroller, ScrollerModule } from 'primeng/scroller';\nimport { SelectButtonModule } from 'primeng/selectbutton';\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\nimport { Nullable, VoidListener } from 'primeng/ts-helpers';\nimport { ObjectUtils, UniqueComponentId, ZIndexUtils } from 'primeng/utils';\nimport { Subject, Subscription } from 'rxjs';\nimport {\n ExportCSVOptions,\n TableColResizeEvent,\n TableColumnReorderEvent,\n TableContextMenuSelectEvent,\n TableEditCancelEvent,\n TableEditCompleteEvent,\n TableEditInitEvent,\n TableFilterEvent,\n TableHeaderCheckboxToggleEvent,\n TableLazyLoadEvent,\n TablePageEvent,\n TableRowCollapseEvent,\n TableRowExpandEvent,\n TableRowReorderEvent,\n TableRowSelectEvent,\n TableRowUnSelectEvent,\n TableSelectAllChangeEvent\n} from './table.interface';\n\n@Injectable()\nexport class TableService {\n private sortSource = new Subject<SortMeta | SortMeta[] | null>();\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[] | null) {\n this.sortSource.next(sortMeta);\n }\n\n onSelectionChange() {\n this.selectionSource.next(null);\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 * Table displays data in tabular format.\n * @group Components\n */\n@Component({\n selector: 'p-table',\n template: `\n <div\n #container\n [ngStyle]=\"style\"\n [class]=\"styleClass\"\n [ngClass]=\"{ 'p-datatable p-component': true, 'p-datatable-hoverable-rows': rowHover || selectionMode, 'p-datatable-scrollable': scrollable, 'p-datatable-flex-scrollable': scrollable && scrollHeight === 'flex' }\"\n [attr.id]=\"id\"\n >\n <div class=\"p-datatable-loading-overlay p-component-overlay\" *ngIf=\"loading && showLoader\">\n <i *ngIf=\"loadingIcon\" [class]=\"'p-datatable-loading-icon ' + loadingIcon\"></i>\n <ng-container *ngIf=\"!loadingIcon\">\n <SpinnerIcon *ngIf=\"!loadingIconTemplate\" [spin]=\"true\" [styleClass]=\"'p-datatable-loading-icon'\" />\n <span *ngIf=\"loadingIconTemplate\" class=\"p-datatable-loading-icon\">\n <ng-template *ngTemplateOutlet=\"loadingIconTemplate\"></ng-template>\n </span>\n </ng-container>\n </div>\n <div *ngIf=\"captionTemplate\" class=\"p-datatable-header\">\n <ng-container *ngTemplateOutlet=\"captionTemplate\"></ng-container>\n </div>\n <p-paginator\n [rows]=\"rows\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n [pageLinkSize]=\"pageLinks\"\n [alwaysShow]=\"alwaysShowPaginator\"\n (onPageChange)=\"onPageChange($event)\"\n [rowsPerPageOptions]=\"rowsPerPageOptions\"\n *ngIf=\"paginator && (paginatorPosition === 'top' || paginatorPosition == 'both')\"\n [templateLeft]=\"paginatorLeftTemplate\"\n [templateRight]=\"paginatorRightTemplate\"\n [dropdownAppendTo]=\"paginatorDropdownAppendTo\"\n [dropdownScrollHeight]=\"paginatorDropdownScrollHeight\"\n [currentPageReportTemplate]=\"currentPageReportTemplate\"\n [showFirstLastIcon]=\"showFirstLastIcon\"\n [dropdownItemTemplate]=\"paginatorDropdownItemTemplate\"\n [showCurrentPageReport]=\"showCurrentPageReport\"\n [showJumpToPageDropdown]=\"showJumpToPageDropdown\"\n [showJumpToPageInput]=\"showJumpToPageInput\"\n [showPageLinks]=\"showPageLinks\"\n [styleClass]=\"getPaginatorStyleClasses('p-paginator-top')\"\n [locale]=\"paginatorLocale\"\n >\n <ng-template pTemplate=\"dropdownicon\" *ngIf=\"paginatorDropdownIconTemplate\">\n <ng-container *ngTemplateOutlet=\"paginatorDropdownIconTemplate\"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"firstpagelinkicon\" *ngIf=\"paginatorFirstPageLinkIconTemplate\">\n <ng-container *ngTemplateOutlet=\"paginatorFirstPageLinkIconTemplate\"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"previouspagelinkicon\" *ngIf=\"paginatorPreviousPageLinkIconTemplate\">\n <ng-container *ngTemplateOutlet=\"paginatorPreviousPageLinkIconTemplate\"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"lastpagelinkicon\" *ngIf=\"paginatorLastPageLinkIconTemplate\">\n <ng-container *ngTemplateOutlet=\"paginatorLastPageLinkIconTemplate\"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"nextpagelinkicon\" *ngIf=\"paginatorNextPageLinkIconTemplate\">\n <ng-container *ngTemplateOutlet=\"paginatorNextPageLinkIconTemplate\"></ng-container>\n </ng-template>\n </p-paginator>\n\n <div #wrapper class=\"p-datatable-wrapper\" [ngStyle]=\"{ maxHeight: virtualScroll ? '' : scrollHeight }\">\n <p-scroller\n #scroller\n *ngIf=\"virtualScroll\"\n [items]=\"processedData\"\n [columns]=\"columns\"\n [style]=\"{ height: scrollHeight !== 'flex' ? scrollHeight : undefined }\"\n [scrollHeight]=\"scrollHeight !== 'flex' ? undefined : '100%'\"\n [itemSize]=\"virtualScrollItemSize || _virtualRowHeight\"\n [step]=\"rows\"\n [delay]=\"lazy ? virtualScrollDelay : 0\"\n [inline]=\"true\"\n [lazy]=\"lazy\"\n (onLazyLoad)=\"onLazyItemLoad($event)\"\n [loaderDisabled]=\"true\"\n [showSpacer]=\"false\"\n [showLoader]=\"loadingBodyTemplate\"\n [options]=\"virtualScrollOptions\"\n [autoSize]=\"true\"\n >\n <ng-template pTemplate=\"content\" let-items let-scrollerOptions=\"options\">\n <ng-container *ngTemplateOutlet=\"buildInTable; context: { $implicit: items, options: scrollerOptions }\"></ng-container>\n </ng-template>\n </p-scroller>\n <ng-container *ngIf=\"!virtualScroll\">\n <ng-container *ngTemplateOutlet=\"buildInTable; context: { $implicit: processedData, options: { columns } }\"></ng-container>\n </ng-container>\n\n <ng-template #buildInTable let-items let-scrollerOptions=\"options\">\n <table\n #table\n role=\"table\"\n [ngClass]=\"{ 'p-datatable-table': true, 'p-datatable-scrollable-table': scrollable, 'p-datatable-resizable-table': resizableColumns, 'p-datatable-resizable-table-fit': resizableColumns && columnResizeMode === 'fit' }\"\n [class]=\"tableStyleClass\"\n [style]=\"tableStyle\"\n [attr.id]=\"id + '-table'\"\n >\n <ng-container *ngTemplateOutlet=\"colGroupTemplate; context: { $implicit: scrollerOptions.columns }\"></ng-container>\n <thead role=\"rowgroup\" #thead class=\"p-datatable-thead\">\n <ng-container *ngTemplateOutlet=\"headerGroupedTemplate || headerTemplate; context: { $implicit: scrollerOptions.columns }\"></ng-container>\n </thead>\n <tbody\n role=\"rowgroup\"\n class=\"p-datatable-tbody p-datatable-frozen-tbody\"\n *ngIf=\"frozenValue || frozenBodyTemplate\"\n [value]=\"frozenValue\"\n [frozenRows]=\"true\"\n [pTableBody]=\"scrollerOptions.columns\"\n [pTableBodyTemplate]=\"frozenBodyTemplate\"\n [frozen]=\"true\"\n ></tbody>\n <tbody\n role=\"rowgroup\"\n class=\"p-datatable-tbody\"\n [ngClass]=\"scrollerOptions.contentStyleClass\"\n [style]=\"scrollerOptions.contentStyle\"\n [value]=\"dataToRender(scrollerOptions.rows)\"\n [pTableBody]=\"scrollerOptions.columns\"\n [pTableBodyTemplate]=\"bodyTemplate\"\n [scrollerOptions]=\"scrollerOptions\"\n ></tbody>\n <tbody\n role=\"rowgroup\"\n *ngIf=\"scrollerOptions.spacerStyle\"\n [style]=\"'height: calc(' + scrollerOptions.spacerStyle.height + ' - ' + scrollerOptions.rows.length * scrollerOptions.itemSize + 'px);'\"\n class=\"p-datatable-scroller-spacer\"\n ></tbody>\n <tfoot role=\"rowgroup\" *ngIf=\"footerGroupedTemplate || footerTemplate\" #tfoot class=\"p-datatable-tfoot\">\n <ng-container *ngTemplateOutlet=\"footerGroupedTemplate || footerTemplate; context: { $implicit: scrollerOptions.columns }\"></ng-container>\n </tfoot>\n </table>\n </ng-template>\n </div>\n\n <p-paginator\n [rows]=\"rows\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n [pageLinkSize]=\"pageLinks\"\n [alwaysShow]=\"alwaysShowPaginator\"\n (onPageChange)=\"onPageChange($event)\"\n [rowsPerPageOptions]=\"rowsPerPageOptions\"\n *ngIf=\"paginator && (paginatorPosition === 'bottom' || paginatorPosition == 'both')\"\n [templateLeft]=\"paginatorLeftTemplate\"\n [templateRight]=\"paginatorRightTemplate\"\n [dropdownAppendTo]=\"paginatorDropdownAppendTo\"\n [dropdownScrollHeight]=\"paginatorDropdownScrollHeight\"\n [currentPageReportTemplate]=\"currentPageReportTemplate\"\n [showFirstLastIcon]=\"showFirstLastIcon\"\n [dropdownItemTemplate]=\"paginatorDropdownItemTemplate\"\n [showCurrentPageReport]=\"showCurrentPageReport\"\n [showJumpToPageDropdown]=\"showJumpToPageDropdown\"\n [showJumpToPageInput]=\"showJumpToPageInput\"\n [showPageLinks]=\"showPageLinks\"\n [styleClass]=\"getPaginatorStyleClasses('p-paginator-bottom')\"\n [locale]=\"paginatorLocale\"\n >\n <ng-template pTemplate=\"dropdownicon\" *ngIf=\"paginatorDropdownIconTemplate\">\n <ng-container *ngTemplateOutlet=\"paginatorDropdownIconTemplate\"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"firstpagelinkicon\" *ngIf=\"paginatorFirstPageLinkIconTemplate\">\n <ng-container *ngTemplateOutlet=\"paginatorFirstPageLinkIconTemplate\"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"previouspagelinkicon\" *ngIf=\"paginatorPreviousPageLinkIconTemplate\">\n <ng-container *ngTemplateOutlet=\"paginatorPreviousPageLinkIconTemplate\"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"lastpagelinkicon\" *ngIf=\"paginatorLastPageLinkIconTemplate\">\n <ng-container *ngTemplateOutlet=\"paginatorLastPageLinkIconTemplate\"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"nextpagelinkicon\" *ngIf=\"paginatorNextPageLinkIconTemplate\">\n <ng-container *ngTemplateOutlet=\"paginatorNextPageLinkIconTemplate\"></ng-container>\n </ng-template>\n </p-paginator>\n\n <div *ngIf=\"summaryTemplate\" class=\"p-datatable-footer\">\n <ng-container *ngTemplateOutlet=\"summaryTemplate\"></ng-container>\n </div>\n\n <div #resizeHelper class=\"p-column-resizer-helper\" style=\"display:none\" *ngIf=\"resizableColumns\"></div>\n <span #reorderIndicatorUp class=\"p-datatable-reorder-indicator-up\" style=\"display: none;\" *ngIf=\"reorderableColumns\">\n <ArrowDownIcon *ngIf=\"!reorderIndicatorUpIconTemplate\" />\n <ng-template *ngTemplateOutlet=\"reorderIndicatorUpIconTemplate\"></ng-template>\n </span>\n <span #reorderIndicatorDown class=\"p-datatable-reorder-indicator-down\" style=\"display: none;\" *ngIf=\"reorderableColumns\">\n <ArrowUpIcon *ngIf=\"!reorderIndicatorDownIconTemplate\" />\n <ng-template *ngTemplateOutlet=\"reorderIndicatorDownIconTemplate\"></ng-template>\n </span>\n </div>\n `,\n providers: [TableService],\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./table.css'],\n host: {\n class: 'p-element'\n }\n})\nexport class Table implements OnInit, AfterViewInit, AfterContentInit, BlockableUI, OnChanges {\n /**\n * An array of objects to represent dynamic columns that are frozen.\n * @group Props\n */\n @Input() frozenColumns: any[] | undefined;\n /**\n * An array of objects to display as frozen.\n * @group Props\n */\n @Input() frozenValue: any[] | undefined;\n /**\n * Inline style of the component.\n * @group Props\n */\n @Input() style: { [klass: string]: any } | null | undefined;\n /**\n * Style class of the component.\n * @group Props\n */\n @Input() styleClass: string | undefined;\n /**\n * Inline style of the table.\n * @group Props\n */\n @Input() tableStyle: { [klass: string]: any } | null | undefined;\n /**\n * Style class of the table.\n * @group Props\n */\n @Input() tableStyleClass: string | undefined;\n /**\n * When specified as true, enables the pagination.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) paginator: boolean | undefined;\n /**\n * Number of page links to display in paginator.\n * @group Props\n */\n @Input({ transform: numberAttribute }) pageLinks: number = 5;\n /**\n * Array of integer/object values to display inside rows per page dropdown of paginator\n * @group Props\n */\n @Input() rowsPerPageOptions: any[] | undefined;\n /**\n * Whether to show it even there is only one page.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) alwaysShowPaginator: boolean = true;\n /**\n * Position of the paginator, options are \"top\", \"bottom\" or \"both\".\n * @group Props\n */\n @Input() paginatorPosition: 'top' | 'bottom' | 'both' = 'bottom';\n /**\n * Custom style class for paginator\n * @group Props\n */\n @Input() paginatorStyleClass: string | undefined;\n /**\n * Target element to attach the paginator dropdown overlay, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n @Input() paginatorDropdownAppendTo: HTMLElement | ElementRef | TemplateRef<any> | string | null | undefined | any;\n /**\n * Paginator dropdown height of the viewport in pixels, a scrollbar is defined if height of list exceeds this value.\n * @group Props\n */\n @Input() paginatorDropdownScrollHeight: string = '200px';\n /**\n * Template of the current page report element. Available placeholders are {currentPage},{totalPages},{rows},{first},{last} and {totalRecords}\n * @group Props\n */\n @Input() currentPageReportTemplate: string = '{currentPage} of {totalPages}';\n /**\n * Whether to display current page report.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showCurrentPageReport: boolean | undefined;\n /**\n * Whether to display a dropdown to navigate to any page.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showJumpToPageDropdown: boolean | undefined;\n /**\n * Whether to display a input to navigate to any page.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showJumpToPageInput: boolean | undefined;\n /**\n * When enabled, icons are displayed on paginator to go first and last page.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showFirstLastIcon: boolean = true;\n /**\n * Whether to show page links.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showPageLinks: boolean = true;\n /**\n * Sort order to use when an unsorted column gets sorted by user interaction.\n * @group Props\n */\n @Input({ transform: numberAttribute }) defaultSortOrder: number = 1;\n /**\n * Defines whether sorting works on single column or on multiple columns.\n * @group Props\n */\n @Input() sortMode: 'single' | 'multiple' = 'single';\n /**\n * When true, resets paginator to first page after sorting. Available only when sortMode is set to single.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) resetPageOnSort: boolean = true;\n /**\n * Specifies the selection mode, valid values are \"single\" and \"multiple\".\n * @group Props\n */\n @Input() selectionMode: 'single' | 'multiple' | undefined | null;\n /**\n * When enabled with paginator and checkbox selection mode, the select all checkbox in the header will select all rows on the current page.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) selectionPageOnly: boolean | undefined;\n /**\n * Selected row with a context menu.\n * @group Props\n */\n @Input() contextMenuSelection: any;\n /**\n * Callback to invoke on context menu selection change.\n * @param {*} object - row data.\n * @group Emits\n */\n @Output() contextMenuSelectionChange: EventEmitter<any> = new EventEmitter();\n /**\n * Defines the behavior of context menu selection, in \"separate\" mode context menu updates contextMenuSelection property whereas in joint mode selection property is used instead so that when row selection is enabled, both row selection and context menu selection use the same property.\n * @group Props\n */\n @Input() contextMenuSelectionMode: string = 'separate';\n /**\n * A property to uniquely identify a record in data.\n * @group Props\n */\n @Input() dataKey: string | undefined;\n /**\n * Defines whether metaKey should be considered for the selection. On touch enabled devices, metaKeySelection is turned off automatically.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) metaKeySelection: boolean | undefined = false;\n /**\n * Defines if the row is selectable.\n * @group Props\n */\n @Input() rowSelectable: (row: { data: any; index: number }) => boolean | undefined;\n /**\n * Function to optimize the dom operations by delegating to ngForTrackBy, default algorithm checks for object identity.\n * @group Props\n */\n @Input() rowTrackBy: Function = (index: number, item: any) => item;\n /**\n * Defines if data is loaded and interacted with in lazy manner.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) lazy: boolean = false;\n /**\n * Whether to call lazy loading on initialization.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) lazyLoadOnInit: boolean = true;\n /**\n * Algorithm to define if a row is selected, valid values are \"equals\" that compares by reference and \"deepEquals\" that compares all fields.\n * @group Props\n */\n @Input() compareSelectionBy: 'equals' | 'deepEquals' = 'deepEquals';\n /**\n * Character to use as the csv separator.\n * @group Props\n */\n @Input() csvSeparator: string = ',';\n /**\n * Name of the exported file.\n * @group Props\n */\n @Input() exportFilename: string = 'download';\n /**\n * An array of FilterMetadata objects to provide external filters.\n * @group Props\n */\n @Input() filters: { [s: string]: FilterMetadata | FilterMetadata[] } = {};\n /**\n * An array of fields as string to use in global filtering.\n * @group Props\n */\n @Input() globalFilterFields: string[] | undefined;\n /**\n * Delay in milliseconds before filtering the data.\n * @group Props\n */\n @Input({ transform: numberAttribute }) filterDelay: number = 300;\n /**\n * Locale to use in filtering. The default locale is the host environment's current locale.\n * @group Props\n */\n @Input() filterLocale: string | undefined;\n /**\n * Map instance to keep the expanded rows where key of the map is the data key of the row.\n * @group Props\n */\n @Input() expandedRowKeys: { [s: string]: boolean } = {};\n /**\n * Map instance to keep the rows being edited where key of the map is the data key of the row.\n * @group Props\n */\n @Input() editingRowKeys: { [s: string]: boolean } = {};\n /**\n * Whether multiple rows can be expanded at any time. Valid values are \"multiple\" and \"single\".\n * @group Props\n */\n @Input() rowExpandMode: 'multiple' | 'single' = 'multiple';\n /**\n * Enables scrollable tables.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) scrollable: boolean | undefined;\n /**\n * Orientation of the scrolling, options are \"vertical\", \"horizontal\" and \"both\".\n * @group Props\n * @deprecated Property is obselete since v14.2.0.\n */\n @Input() scrollDirection: 'vertical' | 'horizontal' | 'both' = 'vertical';\n /**\n * Type of the row grouping, valid values are \"subheader\" and \"rowspan\".\n * @group Props\n */\n @Input() rowGroupMode: 'subheader' | 'rowspan' | undefined;\n /**\n * Height of the scroll viewport in fixed pixels or the \"flex\" keyword for a dynamic size.\n * @group Props\n */\n @Input() scrollHeight: string | undefined;\n /**\n * Whether the data should be loaded on demand during scroll.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) virtualScroll: boolean | undefined;\n /**\n * Height of a row to use in calculations of virtual scrolling.\n * @group Props\n */\n @Input({ transform: numberAttribute }) virtualScrollItemSize: number | undefined;\n /**\n * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.\n * @group Props\n */\n @Input() virtualScrollOptions: ScrollerOptions | undefined;\n /**\n * Threshold in milliseconds to delay lazy loading during scrolling.\n * @group Props\n */\n @Input({ transform: numberAttribute }) virtualScrollDelay: number = 250;\n /**\n * Width of the frozen columns container.\n * @group Props\n */\n @Input() frozenWidth: string | undefined;\n /**\n * Defines if the table is responsive.\n * @group Props\n * @deprecated table is always responsive with scrollable behavior.\n */\n @Input() get responsive(): boolean | undefined | null {\n return this._responsive;\n }\n set responsive(val: boolean | undefined | null) {\n this._responsive = val;\n console.warn('responsive property is deprecated as table is always responsive with scrollable behavior.');\n }\n _responsive: boolean | undefined | null;\n /**\n * Local ng-template varilable of a ContextMenu.\n * @group Props\n */\n @Input() contextMenu: any;\n /**\n * When enabled, columns can be resized using drag and drop.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) resizableColumns: boolean | undefined;\n /**\n * Defines whether the overall table width should change on column resize, valid values are \"fit\" and \"expand\".\n * @group Props\n */\n @Input() columnResizeMode: string = 'fit';\n /**\n * When enabled, columns can be reordered using drag and drop.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) reorderableColumns: boolean | undefined;\n /**\n * Displays a loader to indicate data load is in progress.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) loading: boolean | undefined;\n /**\n * The icon to show while indicating data load is in progress.\n * @group Props\n */\n @Input() loadingIcon: string | undefined;\n /**\n * Whether to show the loading mask when loading property is true.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showLoader: boolean = true;\n /**\n * Adds hover effect to rows without the need for selectionMode. Note that tr elements that can be hovered need to have \"p-selectable-row\" class for rowHover to work.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) rowHover: boolean | undefined;\n /**\n * Whether to use the default sorting or a custom one using sortFunction.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) customSort: boolean | undefined;\n /**\n * Whether to use the initial sort badge or not.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showInitialSortBadge: boolean = true;\n /**\n * Whether the cell widths scale according to their content or not. Deprecated: Table layout is always \"auto\".\n * @group Props\n */\n @Input({ transform: booleanAttribute }) autoLayout: boolean | undefined;\n /**\n * Export function.\n * @group Props\n */\n @Input() exportFunction: Function | undefined;\n /**\n * Custom export header of the column to be exported as CSV.\n * @group Props\n */\n @Input() exportHeader: string | undefined;\n /**\n * Unique identifier of a stateful table to use in state storage.\n * @group Props\n */\n @Input() stateKey: string | undefined;\n /**\n * Defines where a stateful table keeps its state, valid values are \"session\" for sessionStorage and \"local\" for localStorage.\n * @group Props\n */\n @Input() stateStorage: 'session' | 'local' = 'session';\n /**\n * Defines the editing mode, valid values are \"cell\" and \"row\".\n * @group Props\n */\n @Input() editMode: 'cell' | 'row' = 'cell';\n /**\n * Field name to use in row grouping.\n * @group Props\n */\n @Input() groupRowsBy: any;\n /**\n * Order to sort when default row grouping is enabled.\n * @group Props\n */\n @Input({ transform: numberAttribute }) groupRowsByOrder: number = 1;\n /**\n * Defines the responsive mode, valid options are \"stack\" and \"scroll\".\n * @group Props\n */\n @Input() responsiveLayout: string = 'scroll';\n /**\n * The breakpoint to define the maximum width boundary when using stack responsive layout.\n * @group Props\n */\n @Input() breakpoint: string = '960px';\n /**\n * Locale to be used in paginator formatting.\n * @group Props\n */\n @Input() paginatorLocale: string | undefined;\n /**\n * An array of objects to display.\n * @group Props\n */\n @Input() get value(): any[] {\n return this._value;\n }\n set value(val: any[]) {\n this._value = val;\n }\n /**\n * An array of objects to represent dynamic columns.\n * @group Props\n */\n @Input() get columns(): any[] | undefined {\n return this._columns;\n }\n set columns(cols: any[] | undefined) {\n this._columns = cols;\n }\n /**\n * Index of the first row to be displayed.\n * @group Props\n */\n @Input() get first(): number | null | undefined {\n return this._first;\n }\n set first(val: number | null | undefined) {\n this._first = val;\n }\n /**\n * Number of rows to display per page.\n * @group Props\n */\n @Input() get rows(): number | undefined {\n return this._rows;\n }\n set rows(val: number | undefined) {\n this._rows = val;\n }\n /**\n * Number of total records, defaults to length of value when not defined.\n * @group Props\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 * Name of the field to sort data by default.\n * @group Props\n */\n @Input() get sortField(): string | undefined | null {\n return this._sortField;\n }\n set sortField(val: string | undefined | null) {\n this._sortField = val;\n }\n /**\n * Order to sort when default sorting is enabled.\n * @group Props\n */\n @Input() get sortOrder(): number {\n return this._sortOrder;\n }\n set sortOrder(val: number) {\n this._sortOrder = val;\n }\n /**\n * An array of SortMeta objects to sort the data by default in multiple sort mode.\n * @group Props\n */\n @Input() get multiSortMeta(): SortMeta[] | undefined | null {\n return this._multiSortMeta;\n }\n set multiSortMeta(val: SortMeta[] | undefined | null) {\n this._multiSortMeta = val;\n }\n /**\n * Selected row in single mode or an array of values in multiple mode.\n * @group Props\n */\n @Input() get selection(): any {\n return this._selection;\n }\n set selection(val: any) {\n this._selection = val;\n }\n /**\n * Whether all data is selected.\n * @group Props\n */\n @Input() get selectAll(): boolean | null {\n return this._selection;\n }\n set selectAll(val: boolean | null) {\n this._selection = val;\n }\n /**\n * Emits when the all of the items selected or unselected.\n * @param {TableSelectAllChangeEvent} event - custom all selection change event.\n * @group Emits\n */\n @Output() selectAllChange: EventEmitter<TableSelectAllChangeEvent> = new EventEmitter<TableSelectAllChangeEvent>();\n /**\n * Callback to invoke on selection changed.\n * @param {any | null} value - selected data.\n * @group Emits\n */\n @Output() selectionChange: EventEmitter<any | null> = new EventEmitter<any | null>();\n /**\n * Callback to invoke when a row is selected.\n * @param {TableRowSelectEvent} event - custom select event.\n * @group Emits\n */\n @Output() onRowSelect: EventEmitter<TableRowSelectEvent> = new EventEmitter<TableRowSelectEvent>();\n /**\n * Callback to invoke when a row is unselected.\n * @param {TableRowUnSelectEvent} event - custom unselect event.\n * @group Emits\n */\n @Output() onRowUnselect: EventEmitter<TableRowUnSelectEvent> = new EventEmitter<TableRowUnSelectEvent>();\n /**\n * Callback to invoke when pagination occurs.\n * @param {TablePageEvent} event - custom pagination event.\n * @group Emits\n */\n @Output() onPage: EventEmitter<TablePageEvent> = new EventEmitter<TablePageEvent>();\n /**\n * Callback to invoke when a column gets sorted.\n * @param {Object} object - sort meta.\n * @group Emits\n */\n @Output() onSort: EventEmitter<{ multisortmeta: SortMeta[] } | any> = new EventEmitter<{ multisortmeta: SortMeta[] } | any>();\n /**\n * Callback to invoke when data is filtered.\n * @param {TableFilterEvent} event - custom filtering event.\n * @group Emits\n */\n @Output() onFilter: EventEmitter<TableFilterEvent> = new EventEmitter<TableFilterEvent>();\n /**\n * Callback to invoke when paging, sorting or filtering happens in lazy mode.\n * @param {TableLazyLoadEvent} event - custom lazy loading event.\n * @group Emits\n */\n @Output() onLazyLoad: EventEmitter<TableLazyLoadEvent> = new EventEmitter<TableLazyLoadEvent>();\n /**\n * Callback to invoke when a row is expanded.\n * @param {TableRowExpandEvent} event - custom row expand event.\n * @group Emits\n */\n @Output() onRowExpand: EventEmitter<TableRowExpandEvent> = new EventEmitter<TableRowExpandEvent>();\n /**\n * Callback to invoke when a row is collapsed.\n * @param {TableRowCollapseEvent} event - custom row collapse event.\n * @group Emits\n */\n @Output() onRowCollapse: EventEmitter<TableRowCollapseEvent> = new EventEmitter<TableRowCollapseEvent>();\n /**\n * Callback to invoke when a row is selected with right click.\n * @param {TableContextMenuSelectEvent} event - custom context menu select event.\n * @group Emits\n */\n @Output() onContextMenuSelect: EventEmitter<TableContextMenuSelectEvent> = new EventEmitter<TableContextMenuSelectEvent>();\n /**\n * Callback to invoke when a column is resized.\n * @param {TableColResizeEvent} event - custom column resize event.\n * @group Emits\n */\n @Output() onColResize: EventEmitter<TableColResizeEvent> = new EventEmitter<TableColResizeEvent>();\n /**\n * Callback to invoke when a column is reordered.\n * @param {TableColumnReorderEvent} event - custom column reorder event.\n * @group Emits\n */\n @Output() onColReorder: EventEmitter<TableColumnReorderEvent> = new EventEmitter<TableColumnReorderEvent>();\n /**\n * Callback to invoke when a row is reordered.\n * @param {TableRowReorderEvent} event - custom row reorder event.\n * @group Emits\n */\n @Output() onRowReorder: EventEmitter<TableRowReorderEvent> = new EventEmitter<TableRowReorderEvent>();\n /**\n * Callback to invoke when a cell switches to edit mode.\n * @param {TableEditInitEvent} event - custom edit init event.\n * @group Emits\n */\n @Output() onEditInit: EventEmitter<TableEditInitEvent> = new EventEmitter<TableEditInitEvent>();\n /**\n * Callback to invoke when cell edit is completed.\n * @param {TableEditCompleteEvent} event - custom edit complete event.\n * @group Emits\n */\n @Output() onEditComplete: EventEmitter<TableEditCompleteEvent> = new EventEmitter<TableEditCompleteEvent>();\n /**\n * Callback to invoke when cell edit is cancelled with escape key.\n * @param {TableEditCancelEvent} event - custom edit cancel event.\n * @group Emits\n */\n @Output() onEditCancel: EventEmitter<TableEditCancelEvent> = new EventEmitter<TableEditCancelEvent>();\n /**\n * Callback to invoke when state of header checkbox changes.\n * @param {TableHeaderCheckboxToggleEvent} event - custom header checkbox event.\n * @group Emits\n */\n @Output() onHeaderCheckboxToggle: EventEmitter<TableHeaderCheckboxToggleEvent> = new EventEmitter<TableHeaderCheckboxToggleEvent>();\n /**\n * A function to implement custom sorting, refer to sorting section for details.\n * @param {any} any - sort meta.\n * @group Emits\n */\n @Output() sortFunction: EventEmitter<any> = new EventEmitter<any>();\n /**\n * Callback to invoke on pagination.\n * @param {number} number - first element.\n * @group Emits\n */\n @Output() firstChange: EventEmitter<number> = new EventEmitter<number>();\n /**\n * Callback to invoke on rows change.\n * @param {number} number - Row count.\n * @group Emits\n */\n @Output() rowsChange: EventEmitter<number> = new EventEmitter<number>();\n /**\n * Callback to invoke table state is saved.\n * @param {TableState} object - table state.\n * @group Emits\n */\n @Output() onStateSave: EventEmitter<TableState> = new EventEmitter<TableState>();\n /**\n * Callback to invoke table state is restored.\n * @param {TableState} object - table state.\n * @group Emits\n */\n @Output() onStateRestore: EventEmitter<TableState> = new EventEmitter<TableState>();\n\n @ViewChild('container') containerViewChild: Nullable<ElementRef>;\n\n @ViewChild('resizeHelper') resizeHelperViewChild: Nullable<ElementRef>;\n\n @ViewChild('reorderIndicatorUp') reorderIndicatorUpViewChild: Nullable<ElementRef>;\n\n @ViewChild('reorderIndicatorDown') reorderIndicatorDownViewChild: Nullable<ElementRef>;\n\n @ViewChild('wrapper') wrapperViewChild: Nullable<ElementRef>;\n\n @ViewChild('table') tableViewChild: Nullable<ElementRef>;\n\n @ViewChild('thead') tableHeaderViewChild: Nullable<ElementRef>;\n\n @ViewChild('tfoot') tableFooterViewChild: Nullable<ElementRef>;\n\n @ViewChild('scroller') scroller: Nullable<Scroller>;\n\n @ContentChildren(PrimeTemplate) templates: Nullable<QueryList<PrimeTemplate>>;\n /**\n * Indicates the height of rows to be scrolled.\n * @group Props\n * @deprecated use virtualScrollItemSize property instead.\n */\n @Input() get virtualRowHeight(): number {\n return this._virtualRowHeight;\n }\n set virtualRowHeight(val: number) {\n this._virtualRowHeight = val;\n console.warn('The virtualRowHeight property is deprecated.');\n }\n _virtualRowHeight: number = 28;\n\n _value: any[] = [];\n\n _columns: any[] | undefined;\n\n _totalRecords: number = 0;\n\n _first: number | null | undefined = 0;\n\n _rows: number | undefined;\n\n filteredValue: any[] | undefined | null;\n\n headerTemplate: Nullable<TemplateRef<any>>;\n\n headerGroupedTemplate: Nullable<TemplateRef<any>>;\n\n bodyTemplate: Nullable<TemplateRef<any>>;\n\n loadingBodyTemplate: Nullable<TemplateRef<any>>;\n\n captionTemplate: Nullable<TemplateRef<any>>;\n\n footerTemplate: Nullable<TemplateRef<any>>;\n\n footerGroupedTemplate: Nullable<TemplateRef<any>>;\n\n summaryTemplate: Nullable<TemplateRef<any>>;\n\n colGroupTemplate: Nullable<TemplateRef<any>>;\n\n expandedRowTemplate: Nullable<TemplateRef<any>>;\n\n groupHeaderTemplate: Nullable<TemplateRef<any>>;\n\n groupFooterTemplate: Nullable<TemplateRef<any>>;\n\n frozenExpandedRowTemplate: Nullable<TemplateRef<any>>;\n\n frozenHeaderTemplate: Nullable<TemplateRef<any>>;\n\n frozenBodyTemplate: Nullable<TemplateRef<any>>;\n\n frozenFooterTemplate: Nullable<TemplateRef<any>>;\n\n frozenColGroupTemplate: Nullable<TemplateRef<any>>;\n\n emptyMessageTemplate: Nullable<TemplateRef<any>>;\n\n paginatorLeftTemplate: Nullable<TemplateRef<any>>;\n\n paginatorRightTemplate: Nullable<TemplateRef<any>>;\n\n paginatorDropdownItemTemplate: Nullable<TemplateRef<any>>;\n\n loadingIconTemplate: Nullable<TemplateRef<any>>;\n\n reorderIndicatorUpIconTemplate: Nullable<TemplateRef<any>>;\n\n reorderIndicatorDownIconTemplate: Nullable<TemplateRef<any>>;\n\n sortIconTemplate: Nullable<TemplateRef<any>>;\n\n checkboxIconTemplate: Nullable<TemplateRef<any>>;\n\n headerCheckboxIconTemplate: Nullable<TemplateRef<any>>;\n\n paginatorDropdownIconTemplate: Nullable<TemplateRef<any>>;\n\n paginatorFirstPageLinkIconTemplate: Nullable<TemplateRef<any>>;\n\n paginatorLastPageLinkIconTemplate: Nullable<TemplateRef<any>>;\n\n paginatorPreviousPageLinkIconTemplate: Nullable<TemplateRef<any>>;\n\n paginatorNextPageLinkIconTemplate: Nullable<TemplateRef<any>>;\n\n selectionKeys: any = {};\n\n lastResizerHelperX: number | undefined;\n\n reorderIconWidth: number | undefined;\n\n reorderIconHeight: number | undefined;\n\n draggedColumn: any;\n\n draggedRowIndex: number | undefined | null;\n\n droppedRowIndex: number | undefined | null;\n\n rowDragging: boolean | undefined | null;\n\n dropPosition: number | undefined | null;\n\n editingCell: Element | undefined | null;\n\n editingCellData: any;\n\n editingCellField: any;\n\n editingCellRowIndex: number | undefined | null;\n\n selfClick: boolean | undefined | null;\n\n documentEditListener: any;\n\n _multiSortMeta: SortMeta[] | undefined | null;\n\n _sortField: string | undefined | null;\n\n _sortOrder: number = 1;\n\n preventSelectionSetterPropagation: boolean | undefined;\n\n _selection: any;\n\n _selectAll: boolean | null = null;\n\n anchorRowIndex: number | undefined | null;\n\n rangeRowIndex: number | undefined;\n\n filterTimeout: any;\n\n initialized: boolean | undefined | null;\n\n rowTouched: boolean | undefined;\n\n restoringSort: boolean | undefined;\n\n restoringFilter: boolean | undefined;\n\n stateRestored: boolean | undefined;\n\n columnOrderStateRestored: boolean | undefined;\n\n columnWidthsState: string | undefined;\n\n tableWidthState: string | undefined;\n\n overlaySubscription: Subscription | undefined;\n\n resizeColumnElement: any;\n\n columnResizing: boolean = false;\n\n rowGroupHeaderStyleObject: any = {};\n\n id: string = UniqueComponentId();\n\n styleElement: any;\n\n responsiveStyleElement: any;\n\n private window: Window;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: any,\n private renderer: Renderer2,\n public el: ElementRef,\n public zone: NgZone,\n public tableService: TableService,\n public cd: ChangeDetectorRef,\n public filterService: FilterService,\n public overlayService: OverlayService,\n public config: PrimeNGConfig\n ) {\n this.window = this.document.defaultView as Window;\n }\n\n ngOnInit() {\n if (this.lazy && this.lazyLoadOnInit) {\n if (!this.virtualScroll) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n\n if (this.restoringFilter) {\n this.restoringFilter = false;\n }\n }\n\n if (this.responsiveLayout === 'stack') {\n this.createResponsiveStyle();\n }\n\n this.initialized = true;\n }\n\n ngAfterContentInit() {\n (this.templates as QueryList<PrimeTemplate>).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 'headergrouped':\n this.headerGroupedTemplate = 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 'footergrouped':\n this.footerGroupedTemplate = 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 'groupheader':\n this.groupHeaderTemplate = item.template;\n break;\n\n case 'groupfooter':\n this.groupFooterTemplate = 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 'frozenrowexpansion':\n this.frozenExpandedRowTemplate = 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 case 'paginatordropdownicon':\n this.paginatorDropdownIconTemplate = item.template;\n break;\n\n case 'paginatordropdownitem':\n this.paginatorDropdownItemTemplate = item.template;\n break;\n\n case 'paginatorfirstpagelinkicon':\n this.paginatorFirstPageLinkIconTemplate = item.template;\n break;\n\n case 'paginatorlastpagelinkicon':\n this.paginatorLastPageLinkIconTemplate = item.template;\n break;\n\n case 'paginatorpreviouspagelinkicon':\n this.paginatorPreviousPageLinkIconTemplate = item.template;\n break;\n\n case 'paginatornextpagelinkicon':\n this.paginatorNextPageLinkIconTemplate = item.template;\n break;\n\n case 'loadingicon':\n this.loadingIconTemplate = item.template;\n break;\n\n case 'reorderindicatorupicon':\n this.reorderIndicatorUpIconTemplate = item.template;\n break;\n\n case 'reorderindicatordownicon':\n this.reorderIndicatorDownIconTemplate = item.template;\n break;\n\n case 'sorticon':\n this.sortIconTemplate = item.template;\n break;\n\n case 'checkboxicon':\n this.checkboxIconTemplate = item.template;\n break;\n\n case 'headercheckboxicon':\n this.headerCheckboxIconTemplate = item.template;\n break;\n }\n });\n }\n\n ngAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.isStateful() && this.resizableColumns) {\n this.restoreColumnWidths();\n }\n }\n }\n\n ngOnChanges(simpleChange: SimpleChanges) {\n if (simpleChange.value) {\n if (this.isStateful() && !this.stateRestored && isPlatformBrowser(this.platformId)) {\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 || this.groupRowsBy)) this.sortSingle();\n else if (this.sortMode == 'multiple' && (this.multiSortMeta || this.groupRowsBy)) this.sortMultiple();\n else if (this.hasFilter())\n //sort already filters\n this._filter();\n }\n\n this.tableService.onValueChange(simpleChange.value.currentValue);\n }\n\n if (simpleChange.columns) {\n if (!this.isStateful()) {\n this._columns = simpleChange.columns.currentValue;\n this.tableService.onColumnsChange(simpleChange.columns.currentValue);\n }\n\n if (this._columns && this.isStateful() && this.reorderableColumns && !this.columnOrderStateRestored) {\n this.restoreColumnOrder();\n\n this.tableService.onColumnsChange(this._columns);\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.groupRowsBy) {\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.groupRowsByOrder) {\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' && (this.initialized || (!this.lazy && !this.virtualScroll))) {\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 if (simpleChange.selectAll) {\n this._selectAll = simpleChange.selectAll.currentValue;\n\n if (!this.preventSelectionSetterPropagation) {\n this.updateSelectionKeys();\n this.tableService.onSelectionChange();\n\n if (this.isStateful()) {\n this.saveState();\n }\n }\n this.preventSelectionSetterPropagation = false;\n }\n }\n\n get processedData() {\n return this.filteredValue || this.value || [];\n }\n\n private _initialColWidths: number[];\n\n dataToRender(data: any) {\n const _data = data || this.processedData;\n\n if (_data && this.paginator) {\n const first = this.lazy ? 0 : this.first;\n return _data.slice(first, <number>first + <number>this.rows);\n }\n\n return _data;\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 } else {\n this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection, this.dataKey))] = 1;\n }\n }\n }\n\n onPageChange(event: TablePageEvent) {\n this.first = event.first;\n this.rows = event.rows;\n\n this.onPage.emit({\n first: this.first,\n rows: <number>this.rows\n });\n\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\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 if (this.scrollable) {\n this.resetScrollTop();\n }\n }\n\n sort(event: any) {\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\n if (this.resetPageOnSort) {\n this._first = 0;\n this.firstChange.emit(this._first);\n\n if (this.scrollable) {\n this.resetScrollTop();\n }\n }\n\n this.sortSingle();\n }\n if (this.sortMode === 'multiple') {\n let metaKey = (<KeyboardEvent>originalEvent).metaKey || (<KeyboardEvent>originalEvent).ctrlKey;\n let sortMeta = this.getSortMeta(<string>event.field);\n\n if (sortMeta) {\n if (!metaKey) {\n this._multiSortMeta = [{ field: <string>event.field, order: sortMeta.order * -1 }];\n\n if (this.resetPageOnSort) {\n this._first = 0;\n this.firstChange.emit(this._first);\n\n if (this.scrollable) {\n this.resetScrollTop();\n }\n }\n } else {\n sortMeta.order = sortMeta.order * -1;\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 (<SortMeta[]>this._multiSortMeta).push({ field: <string>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 let field = this.sortField || this.groupRowsBy;\n let order = this.sortField ? this.sortOrder : this.groupRowsByOrder;\n if (this.groupRowsBy && this.sortField && this.groupRowsBy !== this.sortField) {\n this._multiSortMeta = [this.getGroupRowsMeta(), { field: this.sortField, order: this.sortOrder }];\n this.sortMultiple();\n return;\n }\n\n if (field && order) {\n if (this.restoringSort) {\n this.restoringSort = false;\n }\n\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n } else if (this.value) {\n if (this.customSort) {\n this.sortFunction.emit({\n data: this.value,\n mode: this.sortMode,\n field: field,\n order: order\n });\n } else {\n this.value.sort((data1, data2) => {\n let value1 = ObjectUtils.resolveFieldData(data1, field);\n let value2 = ObjectUtils.resolveFieldData(data2, field);\n let result = null;\n\n if (value1 == null && value2 != null) result = -1;\n else if (value1 != null && value2 == null) result = 1;\n else if (value1 == null && value2 == null) result = 0;\n else if (typeof value1 === 'string' && typeof value2 === 'string') result = value1.localeCompare(value2);\n else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n\n return order * result;\n });\n\n this._value = [...this.value];\n }\n\n if (this.hasFilter()) {\n this._filter();\n }\n }\n\n let sortMeta: SortMeta = {\n field: field,\n order: order\n };\n\n this.onSort.emit(sortMeta);\n this.tableService.onSort(sortMeta);\n }\n }\n\n sortMultiple() {\n if (this.groupRowsBy) {\n if (!this._multiSortMeta) this._multiSortMeta = [this.getGroupRowsMeta()];\n else if ((<SortMeta[]>this.multiSortMeta)[0].field !== this.groupRowsBy) this._multiSortMeta = [this.getGroupRowsMeta(), ...this._multiSortMeta];\n }\n\n if (this.multiSortMeta) {\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\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 } else {\n this.value.sort((data1, data2) => {\n return this.multisortField(data1, data2, <SortMeta[]>this.multiSortMeta, 0);\n });\n\n this._value = [...this.value];\n }\n\n if (this.hasFilter()) {\n this._filter();\n }\n }\n\n this.onSort.emit({\n multisortmeta: <SortMeta[]>this.multiSortMeta\n });\n this.tableService.onSort(this.multiSortMeta);\n }\n }\n\n multisortField(data1: any, data2: any, multiSortMeta: SortMeta[], index: number): any {\n const value1 = ObjectUtils.resolveFieldData(data1, multiSortMeta[index].field);\n const value2 = ObjectUtils.resolveFieldData(data2, multiSortMeta[index].field);\n if (ObjectUtils.compare(value1, value2, this.filterLocale) === 0) {\n return multiSortMeta.length - 1 > index ? this.multisortField(data1, data2, multiSortMeta, index + 1) : 0;\n }\n return this.compareValuesOnSort(value1, value2, multiSortMeta[index].order);\n }\n\n compareValuesOnSort(value1: any, value2: any, order: any) {\n return ObjectUtils.sort(value1, value2, order, this.filterLocale, this.sortOrder);\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 } 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: any) {\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' || parentNode == 'INPUT' || parentNode == 'BUTTON' || parentNode == 'A' || DomHandler.hasClass(event.originalEvent.target, 'p-clickable')) {\n return;\n }\n\n if (this.selectionMode) {\n let rowData = event.rowData;\n let rowIndex = event.rowIndex;\n\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 = rowIndex;\n this.selectRange(event.originalEvent, rowIndex);\n } else {\n let selected = this.isSelected(rowData);\n\n if (!selected && !this.isRowSelectable(rowData, rowIndex)) {\n return;\n }\n\n let metaSelection = this.rowTouched ? false : this.metaKeySelection;\n let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;\n this.anchorRowIndex = rowIndex;\n this.rangeRowIndex = 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 } else {\n let selectionIndex = this.findIndexInSelection(rowData);\n this._selection = this.selection.filter((val: any, i: number) => 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 } 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 } else if (this.isMultipleSelectionMode()) {\n if (metaKey) {\n this._selection = this.selection || [];\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: rowIndex });\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', index: rowIndex });\n } else {\n this._selection = rowData;\n this.selectionChange.emit(this.selection);\n this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: rowIndex });\n if (dataKeyValue) {\n this.selectionKeys = {};\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n } else if (this.selectionMode === 'multiple') {\n if (selected) {\n let selectionIndex = this.findIndexInSelection(rowData);\n this._selection = this.selection.filter((val: any, i: number) => i != selectionIndex);\n this.selectionChange.emit(this.selection);\n this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: rowIndex });\n if (dataKeyValue) {\n delete this.selectionKeys[dataKeyValue];\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: 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: Event) {\n this.rowTouched = true;\n }\n\n handleRowRightClick(event: any) {\n if (this.contextMenu) {\n const rowData = event.rowData;\n const rowIndex = event.rowIndex;\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 } 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.isRowSelectable(rowData, rowIndex)) {\n return;\n }\n\n if (this.isSingleSelectionMode()) {\n this.selection = rowData;\n this.selectionChange.emit(rowData);\n\n if (dataKeyValue) {\n this.selectionKeys = {};\n this.selectionKeys[dataKeyValue] = 1;\n }\n } else if (this.isMultipleSelectionMode()) {\n this._selection = this.selection ? [...this.selection, rowData] : [rowData];\n this.selectionChange.emit(this.selection);\n\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n }\n\n this.tableService.onSelectionChange();\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 | KeyboardEvent, rowIndex: number) {\n let rangeStart, rangeEnd;\n\n if (<number>this.anchorRowIndex > rowIndex) {\n rangeStart = rowIndex;\n rangeEnd = this.anchorRowIndex;\n } else if (<number>this.anchorRowIndex < rowIndex) {\n rangeStart = this.anchorRowIndex;\n rangeEnd = rowIndex;\n } else {\n rangeStart = rowIndex;\n rangeEnd = rowIndex;\n }\n\n if (this.lazy && this.paginator) {\n (rangeStart as number) -= <number>this.first;\n (rangeEnd as number) -= <number>this.first;\n }\n\n let rangeRowsData = [];\n for (let i = <number>rangeStart; i <= <number>rangeEnd; i++) {\n let rangeRowData = this.filteredValue ? this.filteredValue[i] : this.value[i];\n if (!this.isSelected(rangeRowData)) {\n if (!this.isRowSelectable(rangeRowData, rowIndex)) {\n continue;\n }\n\n rangeRowsData.push(rangeRowData);\n this._selection = [...this.selection, rangeRowData];\n let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n }\n this.selectionChange.emit(this.selection);\n this.onRowSelect.emit({ originalEvent: event, data: rangeRowsData, type: 'row' });\n }\n\n clearSelectionRange(event: MouseEvent | KeyboardEvent) {\n let rangeStart, rangeEnd;\n let rangeRowIndex = <number>this.rangeRowIndex;\n let anchorRowIndex = <number>this.anchorRowIndex;\n\n if (rangeRowIndex > anchorRowIndex) {\n rangeStart = this.anchorRowIndex;\n rangeEnd = this.rangeRowIndex;\n } else if (rangeRowIndex < anchorRowIndex) {\n rangeStart = this.rangeRowIndex;\n rangeEnd = this.anchorRowIndex;\n } else {\n rangeStart = this.rangeRowIndex;\n rangeEnd = this.rangeRowIndex;\n }\n\n for (let i = <number>rangeStart; i <= <number>rangeEnd; i++) {\n let rangeRowData = this.value[i];\n let selectionIndex = this.findIndexInSelection(rangeRowData);\n this._selection = this.selection.filter((val: any, i: number) => i != selectionIndex);\n let dataKeyValue = 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: any) {\n if (rowData && this.selection) {\n if (this.dataKey) {\n return this.selectionKeys[ObjectUtils.resolveFieldData(rowData, this.dataKey)] !== undefined;\n } else {\n if (Array.isArray(this.selection)) return this.findIndexInSelection(rowData) > -1;\n else 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 isRowSelectable(data: any, index: number) {\n if (this.rowSelectable && !this.rowSelectable({ data, index })) {\n return false;\n }\n\n return true;\n }\n\n toggleRowWithRadio(event: any, rowData: any) {\n this.preventSelectionSetterPropagation = true;\n\n if (this.selection != rowData) {\n if (!this.isRowSelectable(rowData, event.rowIndex)) {\n return;\n }\n\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 } 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: any, 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: any, i: number) => 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 } else {\n if (!this.isRowSelectable(rowData, event.rowIndex)) {\n return;\n }\n\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 if (this._selectAll !== null) {\n this.selectAllChange.emit({ originalEvent: event, checked: check });\n } else {\n const data = this.selectionPageOnly ? this.dataToRender(this.processedData) : this.processedData;\n let selection = this.selectionPageOnly && this._selection ? this._selection.filter((s: any) => !data.some((d: any) => this.equals(s, d))) : [];\n\n if (check) {\n selection = this.frozenValue ? [...selection, ...this.frozenValue, ...data] : [...selection, ...data];\n selection = this.rowSelectable ? selection.filter((data: any, index: number) => this.rowSelectable({ data, index })) : selection;\n }\n\n this._selection = selection;\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\n equals(data1: any, data2: any) {\n return this.compareSelectionBy === 'equals' ? data1 === data2 : ObjectUtils.equals(data1, data2, this.dataKey);\n }\n\n /* Legacy Filtering for custom elements */\n filter(value: any, field: string, matchMode: string) {\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\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: any, matchMode: string) {\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) || (Array.isArray(filter) && filter.length == 0)) return true;\n else 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 } 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 } else {\n let globalFilterFieldsArray;\n if (this.filters['global']) {\n if (!this.columns && !this.globalFilterFields) throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');\n else 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 filterField = prop;\n let filterMeta = this.filters[filterField];\n\n if (Array.isArray(filterMeta)) {\n for (let meta of filterMeta) {\n localMatch = this.executeLocalFilter(filterField, this.value[i], meta);\n\n if ((meta.operator === FilterOperator.OR && localMatch) || (meta.operator === FilterOperator.AND && !localMatch)) {\n break;\n }\n }\n } else {\n localMatch = this.executeLocalFilter(filterField, this.value[i], <any>filterMeta);\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 = (<any>this.filterService).filters[(<any>this.filters['global']).matchMode](ObjectUtils.resolveFieldData(this.value[i], globalFilterField), (<FilterMetadata>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 } 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: <{ [s: string]: FilterMetadata | undefined }>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 if (this.scrollable) {\n this.resetScrollTop();\n }\n }\n\n executeLocalFilter(field: string, rowData: any, filterMeta: FilterMetadata): boolean {\n let filterValue = filterMeta.value;\n let filterMatchMode = filterMeta.matchMode || FilterMatchMode.STARTS_WITH;\n let dataFieldValue = ObjectUtils.resolveFieldData(rowData, field);\n let filterConstraint = (<any>this.filterService).filters[filterMatchMode];\n\n return filterConstraint(dataFieldValue, filterValue, this.filterLocale);\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.rows,\n sortField: this.sortField,\n sortOrder: this.sortOrder,\n filters: this.filters,\n globalFilter: this.filters && this.filters['global'] ? (<FilterMetadata>this.filters['global']).value : null,\n multiSortMeta: this.multiSortMeta,\n forceUpdate: () => this.cd.detectChanges()\n };\n }\n\n public clear() {\n this._sortField = null;\n this._sortOrder = this.defaultSortOrder;\n this._multiSortMeta = null;\n this.tableService.onSort(null);\n\n this.clearFilterValues();\n\n this.filteredValue = null;\n\n this.first = 0;\n this.firstChange.emit(this.first);\n\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n } else {\n this.totalRecords = this._value ? this._value.length : 0;\n }\n }\n\n clearFilterValues() {\n for (const [, filterMetadata] of Object.entries(this.filters)) {\n if (Array.isArray(filterMetadata)) {\n for (let filter of filterMetadata) {\n filter.value = null;\n }\n } else if (filterMetadata) {\n filterMetadata.value = null;\n }\n }\n }\n\n reset() {\n this.clear();\n }\n\n getExportHeader(column: any) {\n return column[<string>this.exportHeader] || column.header || column.field;\n }\n /**\n * Data export method.\n * @param {ExportCSVOptions} object - Export options.\n * @group Method\n */\n public exportCSV(options?: ExportCSVOptions) {\n let data;\n let csv = '';\n let columns = this.columns;\n\n if (options && options.selectionOnly) {\n data = this.selection || [];\n } else if (options && options.allValues) {\n data = this.value || [];\n } else {\n data = this.filteredValue || this.value;\n\n if (this.frozenValue) {\n data = data ? [...this.frozenValue, ...data] : this.frozenValue;\n }\n }\n\n const exportableColumns: any[] = (<any[]>columns).filter((column) => column.exportable !== false && column.field);\n\n //headers\n csv += exportableColumns.map((column) => '\"' + this.getExportHeader(column) + '\"').join(this.csvSeparator);\n\n //body\n const body = data\n .map((record: any) =>\n exportableColumns\n .map((column) => {\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 } else cellData = String(cellData).replace(/\"/g, '\"\"');\n } else cellData = '';\n\n return '\"' + cellData + '\"';\n })\n .join(this.csvSeparator)\n )\n .join('\\n');\n\n if (body.length) {\n csv += '\\n' + body;\n }\n\n let blob = new Blob([new Uint8Array([0xef, 0xbb, 0xbf]), csv], {\n type: 'text/csv;charset=utf-8;'\n });\n\n let link = this.renderer.createElement('a');\n link.style.display = 'none';\n this.renderer.appendChild(this.document.body, link);\n if (link.download !== undefined) {\n link.setAttribute('href', URL.createObjectURL(blob));\n link.setAttribute('download', this.exportFilename + '.csv');\n link.click();\n } else {\n csv = 'data:text/csv;charset=utf-8,' + csv;\n this.window.open(encodeURI(csv));\n }\n this.renderer.removeChild(this.document.body, link);\n }\n\n onLazyItemLoad(event: LazyLoadMeta) {\n this.onLazyLoad.emit({\n ...this.createLazyLoadMetadata(),\n ...event,\n rows: <number>event.last - <number>event.first\n });\n }\n /**\n * Resets scroll to top.\n * @group Method\n */\n public resetScrollTop() {\n if (this.virtualScroll) this.scrollToVirtualIndex(0);\n else this.scrollTo({ top: 0 });\n }\n /**\n * Scrolls to given index when using virtual scroll.\n * @param {number} index - index of the element.\n * @group Method\n */\n public scrollToVirtualIndex(index: number) {\n this.scroller && this.scroller.scrollToIndex(index);\n }\n /**\n * Scrolls to given index.\n * @param {ScrollToOptions} options - scroll options.\n * @group Method\n */\n public scrollTo(options: any) {\n if (this.virtualScroll) {\n this.scroller?.scrollTo(options);\n } else if (this.wrapperViewChild && this.wrapperViewChild.nativeElement) {\n if (this.wrapperViewChild.nativeElement.scrollTo) {\n this.wrapperViewChild.nativeElement.scrollTo(options);\n } else {\n this.wrapperViewChild.nativeElement.scrollLeft = options.left;\n this.wrapperViewChild.nativeElement.scrollTop = options.top;\n }\n }\n }\n\n updateEditingCell(cell: any, data: any, field: string, index: number) {\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 = this.renderer.listen(this.document, 'click', (event) => {\n if (this.editingCell && !this.selfClick && this.isEditingCellValid()) {\n DomHandler.removeClass(this.editingCell, 'p-cell-editing');\n this.editingCell = null;\n this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData, originalEvent: event, index: <number>this.editingCellRowIndex });\n this.editingCellField = null;\n this.editingCellData = null;\n this.editingCellRowIndex = null;\n this.unbindDocumentEditListener();\n this.cd.markForCheck();\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n }\n\n this.selfClick = false;\n });\n }\n }\n\n unbindDocumentEditListener() {\n if (this.documentEditListener) {\n 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 && !this.groupRowsBy) {\n throw new Error('dataKey or groupRowsBy must be defined to use row expansion');\n }\n\n let dataKeyValue = this.groupRowsBy ? String(ObjectUtils.resolveFieldData(rowData, this.groupRowsBy)) : 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>event,\n data: rowData\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>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.groupRowsBy ? this.expandedRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.groupRowsBy))] === true : 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: any) {\n let containerLeft = DomHandler.getOffset(this.containerViewChild?.nativeElement).left;\n this.resizeColumnElement = event.target.parentElement;\n this.columnResizing = true;\n if (event.type == 'touchstart') {\n this.lastResizerHelperX = event.changedTouches[0].clientX - containerLeft + this.containerViewChild?.nativeElement.scrollLeft;\n } else {\n this.lastResizerHelperX = event.pageX - containerLeft + this.containerViewChild?.nativeElement.scrollLeft;\n }\n this.onColumnResize(event);\n event.preventDefault();\n }\n\n onColumnResize(event: any) {\n let containerLeft = DomHandler.getOffset(this.containerViewChild?.nativeElement).left;\n DomHandler.addClass(this.containerViewChild?.nativeElement, 'p-unselectable-text');\n (<ElementRef>this.resizeHelperViewChild).nativeElement.style.height = this.containerViewChild?.nativeElement.offsetHeight + 'px';\n (<ElementRef>this.resizeHelperViewChild).nativeElement.style.top = 0 + 'px';\n if (event.type == 'touchmove') {\n (<ElementRef>this.resizeHelperViewChild).nativeElement.style.left = event.changedTouches[0].clientX - containerLeft + this.containerViewChild?.nativeElement.scrollLeft + 'px';\n } else {\n (<ElementRef>this.resizeHelperViewChild).nativeElement.style.left = event.pageX - containerLeft + this.containerViewChild?.nativeElement.scrollLeft + 'px';\n }\n (<ElementRef>this.resizeHelperViewChild).nativeElement.style.display = 'block';\n }\n\n onColumnResizeEnd() {\n let delta = this.resizeHelperViewChild?.nativeElement.offsetLeft - <number>this.lastResizerHelperX;\n let columnWidth = this.resizeColumnElement.offsetWidth;\n let newColumnWidth = columnWidth + delta;\n let minWidth = this.resizeColumnElement.style.minWidth.replace(/[^\\d.]/g, '') || 15;\n\n if (newColumnWidth >= minWidth) {\n if (this.columnResizeMode === 'fit') {\n let nextColumn = this.resizeColumnElement.nextElementSibling;\n let nextColumnWidth = nextColumn.offsetWidth - delta;\n\n if (newColumnWidth > 15 && nextColumnWidth > 15) {\n this.resizeTableCells(newColumnWidth, nextColumnWidth);\n }\n } else if (this.columnResizeMode === 'expand') {\n this._initialColWidths = this._totalTableWidth();\n let tableWidth = this.tableViewChild?.nativeElement.offsetWidth + delta;\n\n this.setResizeTableWidth(tableWidth + 'px');\n this.resizeTableCells(newColumnWidth, null);\n }\n\n this.onColResize.emit({\n element: this.resizeColumnElement,\n delta: delta\n });\n\n if (this.isStateful()) {\n this.saveState();\n }\n }\n\n (<ElementRef>this.resizeHelperViewChild).nativeElement.style.display = 'none';\n DomHandler.removeClass(this.containerViewChild?.nativeElement, 'p-unselectable-text');\n }\n\n private _totalTableWidth(): number[] {\n let widths = [];\n const tableHead = DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-datatable-thead');\n let headers = DomHandler.find(tableHead, 'tr > th');\n headers.forEach((header) => widths.push(DomHandler.getOuterWidth(header)));\n\n return widths;\n }\n\n onColumnDragStart(event: any, columnElement: any) {\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: any, dropHeader: any) {\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 (<ElementRef>this.reorderIndicatorUpViewChild).nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (<number>this.reorderIconHeight - 1) + 'px';\n (<ElementRef>this.reorderIndicatorDownViewChild).nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';\n\n if (event.pageX > columnCenter) {\n (<ElementRef>this.reorderIndicatorUpViewChild).nativeElement.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n (<ElementRef>this.reorderIndicatorDownViewChild).nativeElement.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n this.dropPosition = 1;\n } else {\n (<ElementRef>this.reorderIndicatorUpViewChild).nativeElement.style.left = targetLeft - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n (<ElementRef>this.reorderIndicatorDownViewChild).nativeElement.style.left = targetLeft - Math.ceil(<number>this.reorderIconWidth / 2) + 'px';\n this.dropPosition = -1;\n }\n (<ElementRef>this.reorderIndicatorUpViewChild).nativeElement.style.display = 'block';\n (<ElementRef>this.reorderIndicatorDownViewChild).nativeElement.style.display = 'block';\n } else {\n event.dataTransfer.dropEffect = 'none';\n }\n }\n }\n\n onColumnDragLeave(event: Event) {\n if (this.reorderableColumns && this.draggedColumn) {\n event.preventDefault();\n }\n }\n\n onColumnDrop(event: Event, dropColumn: any) {\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(<any[]>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 if (this.resizableColumns && this.resizeColumnElement) {\n let width = this.columnResizeMode === 'expand' ? this._initialColWidths : this._totalTableWidth();\n ObjectUtils.reorderArray(width, dragIndex + 1, dropIndex + 1);\n this.updateStyleElement(width, dragIndex, null, null);\n }\n\n (<ElementRef>this.reorderIndicatorUpViewChild).nativeElement.style.display = 'none';\n (<ElementRef>this.reorderIndicatorDownViewChild).nativeElement.style.display = 'none';\n this.draggedColumn.draggable = false;\n this.draggedColumn = null;\n this.dropPosition = null;\n }\n }\n\n resizeTableCells(newColumnWidth: number, nextColumnWidth: number | null) {\n let colIndex = DomHandler.index(this.resizeColumnElement);\n let width = this.columnResizeMode === 'expand' ? this._initialColWidths : this._totalTableWidth();\n this.updateStyleElement(width, colIndex, newColumnWidth, nextColumnWidth);\n }\n\n updateStyleElement(width: number[], colIndex: number, newColumnWidth: number, nextColumnWidth: number | null) {\n this.destroyStyleElement();\n this.createStyleElement();\n\n let innerHTML = '';\n width.forEach((width, index) => {\n let colWidth = index === colIndex ? newColumnWidth : nextColumnWidth && index === colIndex + 1 ? nextColumnWidth : width;\n let style = `width: ${colWidth}px !important; max-width: ${colWidth}px !important;`;\n innerHTML += `\n #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index + 1}),\n #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index + 1}),\n #${this.id}-table > .p-datatable-tfoot > tr > td:nth-child(${index + 1}) {\n ${style}\n }\n `;\n });\n this.renderer.setProperty(this.styleElement, 'innerHTML', innerHTML);\n }\n\n onRowDragStart(event: any, index: number) {\n this.rowDragging = true;\n this.draggedRowIndex = index;\n event.dataTransfer.setData('text', 'b'); // For firefox\n }\n\n onRowDragOver(event: MouseEvent, index: number, rowElement: any) {\n if (this.rowDragging && this.draggedRowIndex !== index) {\n let rowY = DomHandler.getOffset(rowElement).top;\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, 'p-datatable-dragpoint-bottom');\n\n this.droppedRowIndex = index;\n if (prevRowElement) DomHandler.addClass(prevRowElement, 'p-datatable-dragpoint-bottom');\n else DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');\n } else {\n if (prevRowElement) DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');\n else DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');\n\n this.droppedRowIndex = index + 1;\n DomHandler.addClass(rowElement, 'p-datatable-dragpoint-bottom');\n }\n }\n }\n\n onRowDragLeave(event: Event, rowElement: any) {\n let prevRowElement = rowElement.previousElementSibling;\n if (prevRowElement) {\n DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');\n }\n\n DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');\n DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-top');\n }\n\n onRowDragEnd(event: Event) {\n this.rowDragging = false;\n this.draggedRowIndex = null;\n this.droppedRowIndex = null;\n }\n\n onRowDrop(event: Event, rowElement: any) {\n if (this.droppedRowIndex != null) {\n let dropIndex = <number>this.draggedRowIndex > this.droppedRowIndex ? this.droppedRowIndex : this.droppedRowIndex === 0 ? 0 : this.droppedRowIndex - 1;\n ObjectUtils.reorderArray(this.value, <number>this.draggedRowIndex, dropIndex);\n\n if (this.virtualScroll) {\n // TODO: Check\n this._value = [...this._value];\n }\n\n this.onRowReorder.emit({\n dragIndex: <number>this.draggedRowIndex,\n dropIndex: dropIndex\n });\n }\n //cleanup\n this.onRowDragLeave(event, rowElement);\n this.onRowDragEnd(event);\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 if (isPlatformBrowser(this.platformId)) {\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 } else {\n throw new Error('Browser storage is not available in the server side.');\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 = <number>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 storage.setItem(<string>this.stateKey, JSON.stringify(state));\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(<string>this.stateKey);\n const dateFormat = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/;\n const reviver = function (key: any, value: any) {\n if (typeof value === 'string' && dateFormat.test(value)) {\n return new Date(value);\n }\n\n return value;\n };\n\n if (stateString) {\n let state: TableState = JSON.parse(stateString, reviver);\n\n if (this.paginator) {\n if (this.first !== undefined) {\n this.first = state.first;\n this.firstChange.emit(this.first);\n }\n\n if (this.rows !== undefined) {\n this.rows = state.rows;\n this.rowsChange.emit(this.rows);\n }\n }\n\n if (state.sortField) {\n this.restoringSort = true;\n this._sortField = state.sortField;\n this._sortOrder = <number>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 (this.reorderableColumns) {\n // this.restoreColumnOrder();\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: any) {\n let widths: any[] = [];\n let headers = DomHandler.find(this.containerViewChild?.nativeElement, '.p-datatable-thead > tr > th');\n headers.forEach((header) => widths.push(DomHandler.getOuterWidth(header)));\n state.columnWidths = widths.join(',');\n\n if (this.columnResizeMode === 'expand') {\n state.tableWidth = DomHandler.getOuterWidth(this.tableViewChild?.nativeElement);\n }\n }\n\n setResizeTableWidth(width: string) {\n (<ElementRef>this.tableViewChild).nativeElement.style.width = width;\n (<ElementRef>this.tableViewChild).nativeElement.style.minWidth = width;\n }\n\n restoreColumnWidths() {\n if (this.columnWidthsState) {\n let widths = this.columnWidthsState.split(',');\n\n if (this.columnResizeMode === 'expand' && this.tableWidthState) {\n this.setResizeTableWidth(this.tableWidthState + 'px');\n }\n\n if (ObjectUtils.isNotEmpty(widths)) {\n this.createStyleElement();\n\n let innerHTML = '';\n widths.forEach((width, index) => {\n let style = `width: ${width}px !important; max-width: ${width}px !important`;\n\n innerHTML += `\n #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index + 1}),\n #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index + 1}),\n #${this.id}-table > .p-datatable-tfoot > tr > td:nth-child(${index + 1}) {\n ${style}\n }\n `;\n });\n\n this.styleElement.innerHTML = innerHTML;\n }\n }\n }\n\n saveColumnOrder(state: any) {\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(<string>this.stateKey);\n if (stateString) {\n let state: TableState = JSON.parse(stateString);\n let columnOrder = state.columnOrder;\n\n if (columnOrder) {\n let reorderedColumns: any[] = [];\n\n columnOrder.map((key) => {\n let col = this.findColumnByKey(key);\n if (col) {\n reorderedColumns.push(col);\n }\n });\n this.columnOrderStateRestored = true;\n this.columns = reorderedColumns;\n }\n }\n }\n\n findColumnByKey(key: any) {\n if (this.columns) {\n for (let col of this.columns) {\n if (col.key === key || col.field === key) return col;\n else continue;\n }\n } else {\n return null;\n }\n }\n\n createStyleElement() {\n this.styleElement = this.renderer.createElement('style');\n this.styleElement.type = 'text/css';\n this.renderer.appendChild(this.document.head, this.styleElement);\n }\n\n getGroupRowsMeta() {\n return { field: this.groupRowsBy, order: this.groupRowsByOrder };\n }\n\n createResponsiveStyle() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.responsiveStyleElement) {\n this.responsiveStyleElement = this.renderer.createElement('style');\n this.responsiveStyleElement.type = 'text/css';\n this.renderer.appendChild(this.document.head, this.responsiveStyleElement);\n\n let innerHTML = `\n @media screen and (max-width: ${this.breakpoint}) {\n #${this.id}-table > .p-datatable-thead > tr > th,\n #${this.id}-table > .p-datatable-tfoot > tr > td {\n display: none !important;\n }\n\n #${this.id}-table > .p-datatable-tbody > tr > td {\n display: flex;\n width: 100% !important;\n align-items: center;\n justify-content: space-between;\n }\n\n #${this.id}-table > .p-datatable-tbody > tr > td:not(:last-child) {\n border: 0 none;\n }\n\n #${this.id}.p-datatable-gridlines > .p-datatable-wrapper > .p-datatable-table > .p-datatable-tbody > tr > td:last-child {\n border-top: 0;\n border-right: 0;\n border-left: 0;\n }\n\n #${this.id}-table > .p-datatable-tbody > tr > td > .p-column-title {\n display: block;\n }\n }\n `;\n this.renderer.setProperty(this.responsiveStyleElement, 'innerHTML', innerHTML);\n }\n }\n }\n\n destroyResponsiveStyle() {\n if (this.responsiveStyleElement) {\n this.renderer.removeChild(this.document.head, this.responsiveStyleElement);\n this.responsiveStyleElement = null;\n }\n }\n\n destroyStyleElement() {\n if (this.styleElement) {\n this.renderer.removeChild(this.document.head, this.styleElement);\n this.styleElement = null;\n }\n }\n\n ngOnDestroy() {\n this.unbindDocumentEditListener();\n this.editingCell = null;\n this.initialized = null;\n\n this.destroyStyleElement();\n this.destroyResponsiveStyle();\n }\n\n getPaginatorStyleClasses(className?: string) {\n return [this.paginatorStyleClass, className]\n .filter((c) => !!c)\n .join(' ')\n .trim();\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]=\"value\" [ngForTrackBy]=\"dt.rowTrackBy\">\n <ng-container *ngIf=\"dt.groupHeaderTemplate && !dt.virtualScroll && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)\" role=\"row\">\n <ng-container\n *ngTemplateOutlet=\"dt.groupHeaderTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"dt.rowGroupMode !== 'rowspan'\">\n <ng-container\n *ngTemplateOutlet=\"rowData ? template : dt.loadingBodyTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"dt.rowGroupMode === 'rowspan'\">\n <ng-container\n *ngTemplateOutlet=\"\n rowData ? template : dt.loadingBodyTemplate;\n context: {\n $implicit: rowData,\n rowIndex: getRowIndex(rowIndex),\n columns: columns,\n editing: dt.editMode === 'row' && dt.isRowEditing(rowData),\n frozen: frozen,\n rowgroup: shouldRenderRowspan(value, rowData, rowIndex),\n rowspan: calculateRowGroupSize(value, rowData, rowIndex)\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"dt.groupFooterTemplate && !dt.virtualScroll && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)\" role=\"row\">\n <ng-container\n *ngTemplateOutlet=\"dt.groupFooterTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }\"\n ></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"dt.expandedRowTemplate && !(frozen && dt.frozenExpandedRowTemplate)\">\n <ng-template ngFor let-rowData let-rowIndex=\"index\" [ngForOf]=\"value\" [ngForTrackBy]=\"dt.rowTrackBy\">\n <ng-container *ngIf=\"!dt.groupHeaderTemplate\">\n <ng-container\n *ngTemplateOutlet=\"template; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, getRowIndex(rowIndex))\" role=\"row\">\n <ng-container\n *ngTemplateOutlet=\"\n dt.groupHeaderTemplate;\n context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }\n \"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"dt.isRowExpanded(rowData)\">\n <ng-container *ngTemplateOutlet=\"dt.expandedRowTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, frozen: frozen }\"></ng-container>\n <ng-container *ngIf=\"dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, getRowIndex(rowIndex))\" role=\"row\">\n <ng-container\n *ngTemplateOutlet=\"\n dt.groupFooterTemplate;\n context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"dt.frozenExpandedRowTemplate && frozen\">\n <ng-template ngFor let-rowData let-rowIndex=\"index\" [ngForOf]=\"value\" [ngForTrackBy]=\"dt.rowTrackBy\">\n <ng-container\n *ngTemplateOutlet=\"template; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, expanded: dt.isRowExpanded(rowData), editing: dt.editMode === 'row' && dt.isRowEditing(rowData), frozen: frozen }\"\n ></ng-container>\n <ng-container *ngIf=\"dt.isRowExpanded(rowData)\">\n <ng-container *ngTemplateOutlet=\"dt.frozenExpandedRowTemplate; context: { $implicit: rowData, rowIndex: getRowIndex(rowIndex), columns: columns, frozen: frozen }\"></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 changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n})\nexport class TableBody implements AfterViewInit, OnDestroy {\n @Input('pTableBody') columns: any[] | undefined;\n\n @Input('pTableBodyTemplate') template: Nullable<TemplateRef<any>>;\n\n @Input() get value(): any[] | undefined {\n return this._value;\n }\n set value(val: any[] | undefined) {\n this._value = val;\n if (this.frozenRows) {\n this.updateFrozenRowStickyPosition();\n }\n\n if (this.dt.scrollable && this.dt.rowGroupMode === 'subheader') {\n this.updateFrozenRowGroupHeaderStickyPosition();\n }\n }\n\n @Input({ transform: booleanAttribute }) frozen: boolean | undefined;\n\n @Input({ transform: booleanAttribute }) frozenRows: boolean | undefined;\n\n @Input() scrollerOptions: any;\n\n subscription: Subscription;\n\n _value: any[] | undefined;\n\n ngAfterViewInit() {\n if (this.frozenRows) {\n this.updateFrozenRowStickyPosition();\n }\n\n if (this.dt.scrollable && this.dt.rowGroupMode === 'subheader') {\n this.updateFrozenRowGroupHeaderStickyPosition();\n }\n }\n\n constructor(public dt: Table, public tableService: TableService, public cd: ChangeDetectorRef, public el: ElementRef) {\n this.subscription = this.dt.tableService.valueSource$.subscribe(() => {\n if (this.dt.virtualScroll) {\n this.cd.detectChanges();\n }\n });\n }\n\n shouldRenderRowGroupHeader(value: any, rowData: any, i: number) {\n let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n let prevRowData = value[i - (1 + this.dt._first)];\n if (prevRowData) {\n let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.dt.groupRowsBy);\n return currentRowFieldData !== previousRowFieldData;\n } else {\n return true;\n }\n }\n\n shouldRenderRowGroupFooter(value: any, rowData: any, i: number) {\n let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n let nextRowData = value[i + (1 + this.dt._first)];\n if (nextRowData) {\n let nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.dt.groupRowsBy);\n return currentRowFieldData !== nextRowFieldData;\n } else {\n return true;\n }\n }\n\n shouldRenderRowspan(value: any, rowData: any, i: number) {\n let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n let prevRowData = value[i - 1];\n if (prevRowData) {\n let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.dt.groupRowsBy);\n return currentRowFieldData !== previousRowFieldData;\n } else {\n return true;\n }\n }\n\n calculateRowGroupSize(value: any, rowData: any, index: number) {\n let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n let nextRowFieldData = currentRowFieldData;\n let groupRowSpan = 0;\n\n while (currentRowFieldData === nextRowFieldData) {\n groupRowSpan++;\n let nextRowData = value[++index];\n if (nextRowData) {\n nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.dt.groupRowsBy);\n } else {\n break;\n }\n }\n\n return groupRowSpan === 1 ? null : groupRowSpan;\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n updateFrozenRowStickyPosition() {\n this.el.nativeElement.style.top = DomHandler.getOuterHeight(this.el.nativeElement.previousElementSibling) + 'px';\n }\n\n updateFrozenRowGroupHeaderStickyPosition() {\n if (this.el.nativeElement.previousElementSibling) {\n let tableHeaderHeight = DomHandler.getOuterHeight(this.el.nativeElement.previousElementSibling);\n this.dt.rowGroupHeaderStyleObject.top = tableHeaderHeight + 'px';\n }\n }\n\n getScrollerOption(option: any, options?: any) {\n if (this.dt.virtualScroll) {\n options = options || this.scrollerOptions;\n return options ? options[option] : null;\n }\n\n return null;\n }\n\n getRowIndex(rowIndex: number) {\n const index = this.dt.paginator ? <number>this.dt.first + rowIndex : rowIndex;\n const getItemOptions = this.getScrollerOption('getItemOptions');\n return getItemOptions ? getItemOptions(index).index : index;\n }\n}\n\n@Directive({\n selector: '[pRowGroupHeader]',\n host: {\n class: 'p-rowgroup-header p-element',\n '[style.top]': 'getFrozenRowGroupHeaderStickyPosition'\n }\n})\nexport class RowGroupHeader {\n constructor(public dt: Table) {}\n\n get getFrozenRowGroupHeaderStickyPosition() {\n return this.dt.rowGroupHeaderStyleObject ? this.dt.rowGroupHeaderStyleObject.top : '';\n }\n}\n\n@Directive({\n selector: '[pFrozenColumn]',\n host: {\n class: 'p-element',\n '[class.p-frozen-column]': 'frozen'\n }\n})\nexport class FrozenColumn implements AfterViewInit {\n @Input() get frozen(): boolean {\n return this._frozen;\n }\n\n set frozen(val: boolean) {\n this._frozen = val;\n Promise.resolve(null).then(() => this.updateStickyPosition());\n }\n\n @Input() alignFrozen: string = 'left';\n\n constructor(private el: ElementRef, private zone: NgZone) {}\n\n ngAfterViewInit() {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.recalculateColumns();\n }, 1000);\n });\n }\n\n @HostListener('window:resize', ['$event'])\n recalculateColumns() {\n const siblings = DomHandler.siblings(this.el.nativeElement);\n const index = DomHandler.index(this.el.nativeElement);\n const time = (siblings.length - index + 1) * 50;\n\n setTimeout(() => {\n this.updateStickyPosition();\n }, time);\n }\n\n _frozen: boolean = true;\n\n updateStickyPosition() {\n if (this._frozen) {\n if (this.alignFrozen === 'right') {\n let right = 0;\n let next = this.el.nativeElement.nextElementSibling;\n if (next) {\n right = DomHandler.getOuterWidth(next) + (parseFloat(next.style.right) || 0);\n }\n this.el.nativeElement.style.right = right + 'px';\n } else {\n let left = 0;\n let prev = this.el.nativeElement.previousElementSibling;\n if (prev) {\n left = DomHandler.getOuterWidth(prev) + (parseFloat(prev.style.left) || 0);\n }\n this.el.nativeElement.style.left = left + 'px';\n }\n\n const filterRow = this.el.nativeElement?.parentElement?.nextElementSibling;\n\n if (filterRow) {\n let index = DomHandler.index(this.el.nativeElement);\n if (filterRow.children && filterRow.children[index]) {\n filterRow.children[index].style.left = this.el.nativeElement.style.left;\n filterRow.children[index].style.right = this.el.nativeElement.style.right;\n }\n }\n }\n }\n}\n@Directive({\n selector: '[pSortableColumn]',\n host: {\n class: 'p-element',\n '[class.p-sortable-column]': 'isEnabled()',\n '[class.p-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 @Input('pSortableColumn') field: string | undefined;\n\n @Input({ transform: booleanAttribute }) pSortableColumnDisabled: boolean | undefined;\n\n sorted: boolean | undefined;\n\n sortOrder: string | undefined;\n\n subscription: Subscription | undefined;\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(<string>this.field) as boolean;\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() && !this.isFilterElement(<HTMLElement>event.target)) {\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.space', ['$event'])\n @HostListener('keydown.enter', ['$event'])\n onEnterKey(event: MouseEvent) {\n this.onClick(event);\n\n event.preventDefault();\n }\n\n isEnabled() {\n return this.pSortableColumnDisabled !== true;\n }\n\n isFilterElement(element: HTMLElement) {\n return this.isFilterElementIconOrButton(element) || this.isFilterElementIconOrButton(element?.parentElement?.parentElement);\n }\n private isFilterElementIconOrButton(element: HTMLElement) {\n return DomHandler.hasClass(element, 'pi-filter-icon') || DomHandler.hasClass(element, 'p-column-filter-menu-button');\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n\n@Component({\n selector: 'p-sortIcon',\n template: `\n <ng-container *ngIf=\"!dt.sortIconTemplate\">\n <SortAltIcon [styleClass]=\"'p-sortable-column-icon'\" *ngIf=\"sortOrder === 0\" />\n <SortAmountUpAltIcon [styleClass]=\"'p-sortable-column-icon'\" *ngIf=\"sortOrder === 1\" />\n <SortAmountDownIcon [styleClass]=\"'p-sortable-column-icon'\" *ngIf=\"sortOrder === -1\" />\n </ng-container>\n <span *ngIf=\"dt.sortIconTemplate\" class=\"p-sortable-column-icon\">\n <ng-template *ngTemplateOutlet=\"dt.sortIconTemplate; context: { $implicit: sortOrder }\"></ng-template>\n </span>\n <span *ngIf=\"isMultiSorted()\" class=\"p-sortable-column-badge\">{{ getBadgeValue() }}</span>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n})\nexport class SortIcon implements OnInit, OnDestroy {\n @Input() field: string | undefined;\n\n subscription: Subscription | undefined;\n\n sortOrder: number | undefined;\n\n constructor(public dt: Table, public cd: ChangeDetectorRef) {\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: Event) {\n event.preventDefault();\n }\n\n updateSortState() {\n if (this.dt.sortMode === 'single') {\n this.sortOrder = this.dt.isSorted(<string>this.field) ? this.dt.sortOrder : 0;\n } else if (this.dt.sortMode === 'multiple') {\n let sortMeta = this.dt.getSortMeta(<string>this.field);\n this.sortOrder = sortMeta ? sortMeta.order : 0;\n }\n\n this.cd.markForCheck();\n }\n\n getMultiSortMetaIndex() {\n let multiSortMeta = this.dt._multiSortMeta;\n let index = -1;\n\n if (multiSortMeta && this.dt.sortMode === 'multiple' && this.dt.showInitialSortBadge && multiSortMeta.length > 1) {\n for (let i = 0; i < multiSortMeta.length; i++) {\n let meta = multiSortMeta[i];\n if (meta.field === this.field || meta.field === this.field) {\n index = i;\n break;\n }\n }\n }\n\n return index;\n }\n\n getBadgeValue() {\n let index = this.getMultiSortMetaIndex();\n\n return this.dt.groupRowsBy && index > -1 ? index : index + 1;\n }\n\n isMultiSorted() {\n return this.dt.sortMode === 'multiple' && this.getMultiSortMetaIndex() > -1;\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: 'p-element',\n '[class.p-selectable-row]': 'isEnabled()',\n '[class.p-highlight]': 'selected',\n '[attr.tabindex]': 'setRowTabIndex()',\n '[attr.data-p-highlight]': 'selected',\n '[attr.data-p-selectable-row]': 'true'\n }\n})\nexport class SelectableRow implements OnInit, OnDestroy {\n @Input('pSelectableRow') data: any;\n\n @Input('pSelectableRowIndex') index: number | undefined;\n\n @Input({ transform: booleanAttribute }) pSelectableRowDisabled: boolean | undefined;\n\n selected: boolean | undefined;\n\n subscription: Subscription | undefined;\n\n constructor(public dt: Table, public tableService: TableService, private el: ElementRef) {\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 setRowTabIndex() {\n if (this.dt.selectionMode === 'single' || this.dt.selectionMode === 'multiple') {\n return !this.dt.selection ? 0 : this.dt.anchorRowIndex === this.index ? 0 : -1;\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', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n case 'ArrowDown':\n this.onArrowDownKey(event);\n break;\n\n case 'ArrowUp':\n this.onArrowUpKey(event);\n break;\n\n case 'Home':\n this.onHomeKey(event);\n break;\n\n case 'End':\n this.onEndKey(event);\n break;\n\n case 'Space':\n this.onSpaceKey(event);\n break;\n\n case 'Enter':\n this.onEnterKey(event);\n break;\n\n default:\n if (event.code === 'KeyA' && (event.metaKey || event.ctrlKey) && this.dt.selectionMode === 'multiple') {\n const data = this.dt.dataToRender(this.dt.processedData);\n this.dt.selection = [...data];\n this.dt.selectRange(event, data.length - 1);\n\n event.preventDefault();\n }\n break;\n }\n }\n\n onArrowDownKey(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 onArrowUpKey(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 onEnterKey(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 onEndKey(event: KeyboardEvent) {\n const lastRow = this.findLastSelectableRow();\n lastRow && this.focusRowChange(this.el.nativeElement, lastRow);\n\n if (event.ctrlKey && event.shiftKey) {\n const data = this.dt.dataToRender(this.dt.rows);\n const lastSelectableRowIndex = DomHandler.getAttribute(lastRow, 'index');\n\n this.dt.anchorRowIndex = lastSelectableRowIndex;\n this.dt.selection = data.slice(this.index, data.length);\n this.dt.selectRange(event, this.index);\n }\n event.preventDefault();\n }\n\n onHomeKey(event: KeyboardEvent) {\n const firstRow = this.findFirstSelectableRow();\n\n firstRow && this.focusRowChange(this.el.nativeElement, firstRow);\n\n if (event.ctrlKey && event.shiftKey) {\n const data = this.dt.dataToRender(this.dt.rows);\n const firstSelectableRowIndex = DomHandler.getAttribute(firstRow, 'index');\n\n this.dt.anchorRowIndex = this.dt.anchorRowIndex || firstSelectableRowIndex;\n this.dt.selection = data.slice(0, this.index + 1);\n this.dt.selectRange(event, this.index);\n }\n event.preventDefault();\n }\n\n onSpaceKey(event) {\n const isInput = event.target instanceof HTMLInputElement || event.target instanceof HTMLSelectElement || event.target instanceof HTMLTextAreaElement;\n if (isInput) {\n return;\n } else {\n this.onEnterKey(event);\n\n if (event.shiftKey && this.dt.selection !== null) {\n const data = this.dt.dataToRender(this.dt.rows);\n let index;\n\n if (ObjectUtils.isNotEmpty(this.dt.selection) && this.dt.selection.length > 0) {\n let firstSelectedRowIndex, lastSelectedRowIndex;\n firstSelectedRowIndex = ObjectUtils.findIndexInList(this.dt.selection[0], data);\n lastSelectedRowIndex = ObjectUtils.findIndexInList(this.dt.selection[this.dt.selection.length - 1], data);\n\n index = this.index <= firstSelectedRowIndex ? lastSelectedRowIndex : firstSelectedRowIndex;\n } else {\n index = ObjectUtils.findIndexInList(this.dt.selection, data);\n }\n\n this.dt.anchorRowIndex = index;\n this.dt.selection = index !== this.index ? data.slice(Math.min(index, this.index), Math.max(index, this.index) + 1) : [this.data];\n this.dt.selectRange(event, this.index);\n }\n\n event.preventDefault();\n }\n }\n\n focusRowChange(firstFocusableRow, currentFocusedRow) {\n firstFocusableRow.tabIndex = '-1';\n currentFocusedRow.tabIndex = '0';\n DomHandler.focus(currentFocusedRow);\n }\n\n findLastSelectableRow() {\n const rows = DomHandler.find(this.dt.el.nativeElement, '.p-selectable-row');\n\n return rows ? rows[rows.length - 1] : null;\n }\n\n findFirstSelectableRow() {\n const firstRow = DomHandler.findSingle(this.dt.el.nativeElement, '.p-selectable-row');\n\n return firstRow;\n }\n\n findNextSelectableRow(row: HTMLTableRowElement): HTMLTableRowElement | null {\n let nextRow = <HTMLTableRowElement>row.nextElementSibling;\n if (nextRow) {\n if (DomHandler.hasClass(nextRow, 'p-selectable-row')) return nextRow;\n else return this.findNextSelectableRow(nextRow);\n } else {\n return null;\n }\n }\n\n findPrevSelectableRow(row: HTMLTableRowElement): HTMLTableRowElement | null {\n let prevRow = <HTMLTableRowElement>row.previousElementSibling;\n if (prevRow) {\n if (DomHandler.hasClass(prevRow, 'p-selectable-row')) return prevRow;\n else return this.findPrevSelectableRow(prevRow);\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@Directive({\n selector: '[pSelectableRowDblClick]',\n host: {\n class: 'p-element',\n '[class.p-selectable-row]': 'isEnabled()',\n '[class.p-highlight]': 'selected'\n }\n})\nexport class SelectableRowDblClick implements OnInit, OnDestroy {\n @Input('pSelectableRowDblClick') data: any;\n\n @Input('pSelectableRowIndex') index: number | undefined;\n\n @Input({ transform: booleanAttribute }) pSelectableRowDisabled: boolean | undefined;\n\n selected: boolean | undefined;\n\n subscription: Subscription | undefined;\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@Directive({\n selector: '[pContextMenuRow]',\n host: {\n class: 'p-element',\n '[class.p-highlight-contextmenu]': 'selected',\n '[attr.tabindex]': 'isEnabled() ? 0 : undefined'\n }\n})\nexport class ContextMenuRow {\n @Input('pContextMenuRow') data: any;\n\n @Input('pContextMenuRowIndex') index: number | undefined;\n\n @Input({ transform: booleanAttribute }) pContextMenuRowDisabled: boolean | undefined;\n\n selected: boolean | undefined;\n\n subscription: Subscription | undefined;\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@Directive({\n selector: '[pRowToggler]',\n host: {\n class: 'p-element'\n }\n})\nexport class RowToggler {\n @Input('pRowToggler') data: any;\n\n @Input({ transform: booleanAttribute }) pRowTogglerDisabled: boolean | undefined;\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 host: {\n class: 'p-element'\n }\n})\nexport class ResizableColumn implements AfterViewInit, OnDestroy {\n @Input({ transform: booleanAttribute }) pResizableColumnDisabled: boolean | undefined;\n\n resizer: HTMLSpanElement | undefined;\n\n resizerMouseDownListener: VoidListener;\n\n resizerTouchStartListener: VoidListener;\n\n resizerTouchMoveListener: VoidListener;\n\n resizerTouchEndListener: VoidListener;\n\n documentMouseMoveListener: VoidListener;\n\n documentMouseUpListener: VoidListener;\n\n constructor(@Inject(DOCUMENT) private document: Document, @Inject(PLATFORM_ID) private platformId: any, private renderer: Renderer2, public dt: Table, public el: ElementRef, public zone: NgZone) {}\n\n ngAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.isEnabled()) {\n DomHandler.addClass(this.el.nativeElement, 'p-resizable-column');\n this.resizer = this.renderer.createElement('span');\n this.renderer.addClass(this.resizer, 'p-column-resizer');\n this.renderer.appendChild(this.el.nativeElement, this.resizer);\n\n this.zone.runOutsideAngular(() => {\n this.resizerMouseDownListener = this.renderer.listen(this.resizer, 'mousedown', this.onMouseDown.bind(this));\n this.resizerTouchStartListener = this.renderer.listen(this.resizer, 'touchstart', this.onTouchStart.bind(this));\n });\n }\n }\n }\n\n bindDocumentEvents() {\n this.zone.runOutsideAngular(() => {\n this.documentMouseMoveListener = this.renderer.listen(this.document, 'mousemove', this.onDocumentMouseMove.bind(this));\n this.documentMouseUpListener = this.renderer.listen(this.document, 'mouseup', this.onDocumentMouseUp.bind(this));\n this.resizerTouchMoveListener = this.renderer.listen(this.resizer, 'touchmove', this.onTouchMove.bind(this));\n this.resizerTouchEndListener = this.renderer.listen(this.resizer, 'touchend', this.onTouchEnd.bind(this));\n });\n }\n\n unbindDocumentEvents() {\n if (this.documentMouseMoveListener) {\n this.documentMouseMoveListener();\n this.documentMouseMoveListener = null;\n }\n\n if (this.documentMouseUpListener) {\n this.documentMouseUpListener();\n this.documentMouseUpListener = null;\n }\n if (this.resizerTouchMoveListener) {\n this.resizerTouchMoveListener();\n this.resizerTouchMoveListener = null;\n }\n\n if (this.resizerTouchEndListener) {\n this.resizerTouchEndListener();\n this.resizerTouchEndListener = null;\n }\n }\n\n onMouseDown(event: MouseEvent) {\n this.dt.onColumnResizeBegin(event);\n this.bindDocumentEvents();\n }\n\n onTouchStart(event: TouchEvent) {\n this.dt.onColumnResizeBegin(event);\n this.bindDocumentEvents();\n }\n\n onTouchMove(event: TouchEvent) {\n this.dt.onColumnResize(event);\n }\n onDocumentMouseMove(event: MouseEvent) {\n this.dt.onColumnResize(event);\n }\n\n onDocumentMouseUp(event: MouseEvent) {\n this.dt.onColumnResizeEnd();\n this.unbindDocumentEvents();\n }\n\n onTouchEnd(event: TouchEvent) {\n this.dt.onColumnResizeEnd();\n this.unbindDocumentEvents();\n }\n\n isEnabled() {\n return this.pResizableColumnDisabled !== true;\n }\n\n ngOnDestroy() {\n if (this.resizerMouseDownListener) {\n this.resizerMouseDownListener();\n this.resizerMouseDownListener = null;\n }\n\n this.unbindDocumentEvents();\n }\n}\n\n@Directive({\n selector: '[pReorderableColumn]',\n host: {\n class: 'p-element'\n }\n})\nexport class ReorderableColumn implements AfterViewInit, OnDestroy {\n @Input({ transform: booleanAttribute }) pReorderableColumnDisabled: boolean | undefined;\n\n dragStartListener: VoidListener;\n\n dragOverListener: VoidListener;\n\n dragEnterListener: VoidListener;\n\n dragLeaveListener: VoidListener;\n\n mouseDownListener: VoidListener;\n\n constructor(@Inject(PLATFORM_ID) private platformId: any, private renderer: Renderer2, 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 if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n this.mouseDownListener = this.renderer.listen(this.el.nativeElement, 'mousedown', this.onMouseDown.bind(this));\n\n this.dragStartListener = this.renderer.listen(this.el.nativeElement, 'dragstart', this.onDragStart.bind(this));\n\n this.dragOverListener = this.renderer.listen(this.el.nativeElement, 'dragover', this.onDragOver.bind(this));\n\n this.dragEnterListener = this.renderer.listen(this.el.nativeElement, 'dragenter', this.onDragEnter.bind(this));\n\n this.dragLeaveListener = this.renderer.listen(this.el.nativeElement, 'dragleave', this.onDragLeave.bind(this));\n });\n }\n }\n\n unbindEvents() {\n if (this.mouseDownListener) {\n this.mouseDownListener();\n this.mouseDownListener = null;\n }\n\n if (this.dragStartListener) {\n this.dragStartListener();\n this.dragStartListener = null;\n }\n\n if (this.dragOverListener) {\n this.dragOverListener();\n this.dragOverListener = null;\n }\n\n if (this.dragEnterListener) {\n this.dragEnterListener();\n this.dragEnterListener = null;\n }\n\n if (this.dragLeaveListener) {\n this.dragLeaveListener();\n this.dragLeaveListener = null;\n }\n }\n\n onMouseDown(event: any) {\n if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'p-column-resizer')) this.el.nativeElement.draggable = false;\n else this.el.nativeElement.draggable = true;\n }\n\n onDragStart(event: any) {\n this.dt.onColumnDragStart(event, this.el.nativeElement);\n }\n\n onDragOver(event: any) {\n event.preventDefault();\n }\n\n onDragEnter(event: any) {\n this.dt.onColumnDragEnter(event, this.el.nativeElement);\n }\n\n onDragLeave(event: any) {\n this.dt.onColumnDragLeave(event);\n }\n\n @HostListener('drop', ['$event'])\n onDrop(event: any) {\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@Directive({\n selector: '[pEditableColumn]',\n host: {\n class: 'p-element'\n }\n})\nexport class EditableColumn implements OnChanges, AfterViewInit, OnDestroy {\n @Input('pEditableColumn') data: any;\n\n @Input('pEditableColumnField') field: any;\n\n @Input('pEditableColumnRowIndex') rowIndex: number | undefined;\n\n @Input({ transform: booleanAttribute }) pEditableColumnDisabled: boolean | undefined;\n\n @Input() pFocusCellSelector: string | undefined;\n\n overlayEventListener: any;\n\n constructor(public dt: Table, public el: ElementRef, public zone: NgZone) {}\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (this.el.nativeElement && !changes.data?.firstChange) {\n this.dt.updateEditingCell(this.el.nativeElement, this.data, this.field, <number>this.rowIndex);\n }\n }\n\n ngAfterViewInit() {\n if (this.isEnabled()) {\n DomHandler.addClass(this.el.nativeElement, 'p-editable-column');\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n if (this.isEnabled()) {\n this.dt.selfClick = 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 } else {\n this.openCell();\n }\n }\n }\n\n openCell() {\n this.dt.updateEditingCell(this.el.nativeElement, this.data, this.field, <number>this.rowIndex);\n DomHandler.addClass(this.el.nativeElement, 'p-cell-editing');\n this.dt.onEditInit.emit({ field: this.field, data: this.data, index: <number>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 this.overlayEventListener = (e: any) => {\n if (this.el && this.el.nativeElement.contains(e.target)) {\n this.dt.selfClick = true;\n }\n };\n\n this.dt.overlaySubscription = this.dt.overlayService.clickObservable.subscribe(this.overlayEventListener);\n }\n\n closeEditingCell(completed: any, event: Event) {\n const eventData = { field: <string>this.dt.editingCellField, data: <any>this.dt.editingCellData, originalEvent: <Event>event, index: <number>this.dt.editingCellRowIndex };\n\n if (completed) {\n this.dt.onEditComplete.emit(eventData);\n } else {\n this.dt.onEditCancel.emit(eventData);\n\n this.dt.value.forEach((element) => {\n if (element[this.dt.editingCellField] === this.data) {\n element[this.dt.editingCellField] = this.dt.editingCellData;\n }\n });\n }\n\n DomHandler.removeClass(this.dt.editingCell, 'p-cell-editing');\n this.dt.editingCell = null;\n this.dt.editingCellData = null;\n this.dt.editingCellField = null;\n this.dt.unbindDocumentEditListener();\n\n if (this.dt.overlaySubscription) {\n this.dt.overlaySubscription.unsubscribe();\n }\n }\n\n @HostListener('keydown.enter', ['$event'])\n onEnterKeyDown(event: KeyboardEvent) {\n if (this.isEnabled() && !event.shiftKey) {\n if (this.dt.isEditingCellValid()) {\n this.closeEditingCell(true, event);\n }\n\n event.preventDefault();\n }\n }\n\n @HostListener('keydown.tab', ['$event'])\n onTabKeyDown(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) this.moveToPreviousCell(event);\n else {\n this.moveToNextCell(event);\n }\n }\n }\n @HostListener('keydown.arrowdown', ['$event'])\n onArrowDown(event: KeyboardEvent) {\n if (this.isEnabled()) {\n let currentCell = this.findCell(event.target);\n if (currentCell) {\n let cellIndex = DomHandler.index(currentCell);\n let targetCell = this.findNextEditableColumnByIndex(currentCell, cellIndex);\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 }\n\n event.preventDefault();\n }\n }\n }\n\n @HostListener('keydown.arrowup', ['$event'])\n onArrowUp(event: KeyboardEvent) {\n if (this.isEnabled()) {\n let currentCell = this.findCell(event.target);\n if (currentCell) {\n let cellIndex = DomHandler.index(currentCell);\n let targetCell = this.findPrevEditableColumnByIndex(currentCell, cellIndex);\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 }\n\n event.preventDefault();\n }\n }\n }\n\n @HostListener('keydown.arrowleft', ['$event'])\n onArrowLeft(event: KeyboardEvent) {\n if (this.isEnabled()) {\n this.moveToPreviousCell(event);\n }\n }\n\n @HostListener('keydown.arrowright', ['$event'])\n onArrowRight(event: KeyboardEvent) {\n if (this.isEnabled()) {\n this.moveToNextCell(event);\n }\n }\n\n findCell(element: any) {\n if (element) {\n let cell = element;\n while (cell && !DomHandler.hasClass(cell, 'p-cell-editing')) {\n cell = cell.parentElement;\n }\n\n return cell;\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 } else {\n if (this.dt.isEditingCellValid()) {\n this.closeEditingCell(true, event);\n }\n }\n }\n }\n\n findPreviousEditableColumn(cell: any): HTMLTableCellElement | null {\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, 'p-editable-column')) return prevCell;\n else return this.findPreviousEditableColumn(prevCell);\n } else {\n return null;\n }\n }\n\n findNextEditableColumn(cell: any): HTMLTableCellElement | null {\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, 'p-editable-column')) return nextCell;\n else return this.findNextEditableColumn(nextCell);\n } else {\n return null;\n }\n }\n\n findNextEditableColumnByIndex(cell: Element, index: number) {\n let nextRow = cell.parentElement?.nextElementSibling;\n\n if (nextRow) {\n let nextCell = nextRow.children[index];\n\n if (nextCell && DomHandler.hasClass(nextCell, 'p-editable-column')) {\n return nextCell;\n }\n\n return null;\n } else {\n return null;\n }\n }\n\n findPrevEditableColumnByIndex(cell: Element, index: number) {\n let prevRow = cell.parentElement?.previousElementSibling;\n\n if (prevRow) {\n let prevCell = prevRow.children[index];\n\n if (prevCell && DomHandler.hasClass(prevCell, 'p-editable-column')) {\n return prevCell;\n }\n\n return null;\n } else {\n return null;\n }\n }\n\n isEnabled() {\n return this.pEditableColumnDisabled !== true;\n }\n\n ngOnDestroy() {\n if (this.dt.overlaySubscription) {\n this.dt.overlaySubscription.unsubscribe();\n }\n }\n}\n\n@Directive({\n selector: '[pEditableRow]',\n host: {\n class: 'p-element'\n }\n})\nexport class EditableRow {\n @Input('pEditableRow') data: any;\n\n @Input({ transform: booleanAttribute }) pEditableRowDisabled: boolean | undefined;\n\n constructor(public el: ElementRef) {}\n\n isEnabled() {\n return this.pEditableRowDisabled !== true;\n }\n}\n\n@Directive({\n selector: '[pInitEditableRow]',\n host: {\n class: 'p-element'\n }\n})\nexport class InitEditableRow {\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@Directive({\n selector: '[pSaveEditableRow]',\n host: {\n class: 'p-element'\n }\n})\nexport class SaveEditableRow {\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 host: {\n class: 'p-element'\n }\n})\nexport class CancelEditableRow {\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 encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n})\nexport class CellEditor implements AfterContentInit {\n @ContentChildren(PrimeTemplate) templates: Nullable<QueryList<PrimeTemplate>>;\n\n inputTemplate: Nullable<TemplateRef<any>>;\n\n outputTemplate: Nullable<TemplateRef<any>>;\n\n constructor(public dt: Table, @Optional() public editableColumn: EditableColumn, @Optional() public editableRow: EditableRow) {}\n\n ngAfterContentInit() {\n (this.templates as QueryList<PrimeTemplate>).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) || (this.editableRow && this.dt.editMode === 'row' && this.dt.isRowEditing(this.editableRow.data));\n }\n}\n\n@Component({\n selector: 'p-tableRadioButton',\n template: `\n <div class=\"p-radiobutton p-component\" [ngClass]=\"{ 'p-radiobutton-focused': focused, 'p-radiobutton-checked': checked, 'p-radiobutton-disabled': disabled }\" (click)=\"onClick($event)\">\n <div class=\"p-hidden-accessible\">\n <input #rb type=\"radio\" [attr.id]=\"inputId\" [attr.name]=\"name\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" [disabled]=\"disabled\" [attr.aria-label]=\"ariaLabel\" [tabindex]=\"disabled ? null : '0'\" />\n </div>\n <div #box [ngClass]=\"{ 'p-radiobutton-box p-component': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': disabled }\">\n <div class=\"p-radiobutton-icon\"></div>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n})\nexport class TableRadioButton {\n @Input({ transform: booleanAttribute }) disabled: boolean | undefined;\n\n @Input() value: any;\n\n @Input({ transform: numberAttribute }) index: number | undefined;\n\n @Input() inputId: string | undefined;\n\n @Input() name: string | undefined;\n\n @Input() ariaLabel: string | undefined;\n\n @ViewChild('rb') inputViewChild: Nullable<ElementRef>;\n\n checked: boolean | undefined;\n\n focused: boolean | undefined;\n\n subscription: Subscription;\n\n constructor(public dt: Table, public cd: ChangeDetectorRef) {\n this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n this.checked = this.dt.isSelected(this.value);\n this.ariaLabel = this.ariaLabel || this.dt.config.translation.aria ? (this.checked ? this.dt.config.translation.aria.selectRow : this.dt.config.translation.aria.unselectRow) : undefined;\n this.cd.markForCheck();\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 {\n originalEvent: event,\n rowIndex: this.index\n },\n this.value\n );\n\n this.inputViewChild?.nativeElement?.focus();\n }\n DomHandler.clearSelection();\n }\n\n onFocus() {\n this.focused = true;\n }\n\n onBlur() {\n this.focused = false;\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n\n@Component({\n selector: 'p-tableCheckbox',\n template: `\n <div class=\"p-checkbox p-component\" [ngClass]=\"{ 'p-checkbox-focused': focused, 'p-checkbox-disabled': disabled }\" (click)=\"onClick($event)\">\n <div class=\"p-hidden-accessible\">\n <input\n type=\"checkbox\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name\"\n [checked]=\"checked\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n [disabled]=\"disabled\"\n [attr.required]=\"required\"\n [attr.aria-label]=\"ariaLabel\"\n [tabindex]=\"disabled ? null : '0'\"\n />\n </div>\n <div #box [ngClass]=\"{ 'p-checkbox-box p-component': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': disabled }\">\n <ng-container *ngIf=\"!dt.checkboxIconTemplate\">\n <CheckIcon [styleClass]=\"'p-checkbox-icon'\" *ngIf=\"checked\" />\n </ng-container>\n <span *ngIf=\"dt.checkboxIconTemplate\">\n <ng-template *ngTemplateOutlet=\"dt.checkboxIconTemplate; context: { $implicit: checked }\"></ng-template>\n </span>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n})\nexport class TableCheckbox {\n @Input({ transform: booleanAttribute }) disabled: boolean | undefined;\n\n @Input() value: any;\n\n @Input({ transform: numberAttribute }) index: number | undefined;\n\n @Input() inputId: string | undefined;\n\n @Input() name: string | undefined;\n\n @Input({ transform: booleanAttribute }) required: boolean | undefined;\n\n @Input() ariaLabel: string | undefined;\n\n checked: boolean | undefined;\n\n focused: boolean | undefined;\n\n subscription: Subscription;\n\n constructor(public dt: Table, public tableService: TableService, public cd: ChangeDetectorRef) {\n this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n this.checked = this.dt.isSelected(this.value);\n this.ariaLabel = this.ariaLabel || this.dt.config.translation.aria ? (this.checked ? this.dt.config.translation.aria.selectRow : this.dt.config.translation.aria.unselectRow) : undefined;\n this.cd.markForCheck();\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 {\n originalEvent: event,\n rowIndex: this.index\n },\n this.value\n );\n }\n DomHandler.clearSelection();\n }\n\n onFocus() {\n this.focused = true;\n }\n\n onBlur() {\n this.focused = false;\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n\n@Component({\n selector: 'p-tableHeaderCheckbox',\n template: `\n <div class=\"p-checkbox p-component\" [ngClass]=\"{ 'p-checkbox-focused': focused, 'p-checkbox-disabled': isDisabled() }\" (click)=\"onClick($event)\">\n <div class=\"p-hidden-accessible\">\n <input #cb type=\"checkbox\" [tabindex]=\"disabled ? null : '0'\" [attr.id]=\"inputId\" [attr.name]=\"name\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" [disabled]=\"isDisabled()\" [attr.aria-label]=\"ariaLabel\" />\n </div>\n <div #box [ngClass]=\"{ 'p-checkbox-box': true, 'p-highlight': checked, 'p-focus': focused, 'p-disabled': isDisabled() }\">\n <ng-container *ngIf=\"!dt.headerCheckboxIconTemplate\">\n <CheckIcon *ngIf=\"checked\" [styleClass]=\"'p-checkbox-icon'\" />\n </ng-container>\n <span class=\"p-checkbox-icon\" *ngIf=\"dt.headerCheckboxIconTemplate\">\n <ng-template *ngTemplateOutlet=\"dt.headerCheckboxIconTemplate; context: { $implicit: checked }\"></ng-template>\n </span>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n})\nexport class TableHeaderCheckbox {\n @Input({ transform: booleanAttribute }) disabled: boolean | undefined;\n\n @Input() inputId: string | undefined;\n\n @Input() name: string | undefined;\n\n @Input() ariaLabel: string | undefined;\n\n checked: boolean | undefined;\n\n focused: boolean | undefined;\n\n selectionChangeSubscription: Subscription;\n\n valueChangeSubscription: Subscription;\n\n constructor(public dt: Table, public tableService: TableService, public cd: ChangeDetectorRef) {\n this.valueChangeSubscription = this.dt.tableService.valueSource$.subscribe(() => {\n this.checked = this.updateCheckedState();\n this.ariaLabel = this.ariaLabel || this.dt.config.translation.aria ? (this.checked ? this.dt.config.translation.aria.selectAll : this.dt.config.translation.aria.unselectAll) : undefined;\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 this.focused = true;\n }\n\n onBlur() {\n this.focused = false;\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 this.cd.markForCheck();\n\n if (this.dt._selectAll !== null) {\n return this.dt._selectAll;\n } else {\n const data = this.dt.selectionPageOnly ? this.dt.dataToRender(this.dt.processedData) : this.dt.processedData;\n const val = this.dt.frozenValue ? [...this.dt.frozenValue, ...data] : data;\n const selectableVal = this.dt.rowSelectable ? val.filter((data: any, index: number) => this.dt.rowSelectable({ data, index })) : val;\n\n return ObjectUtils.isNotEmpty(selectableVal) && ObjectUtils.isNotEmpty(this.dt.selection) && selectableVal.every((v: any) => this.dt.selection.some((s: any) => this.dt.equals(v, s)));\n }\n }\n}\n\n@Directive({\n selector: '[pReorderableRowHandle]',\n host: {\n class: 'p-element'\n }\n})\nexport class ReorderableRowHandle implements AfterViewInit {\n constructor(public el: ElementRef) {}\n\n ngAfterViewInit() {\n DomHandler.addClass(this.el.nativeElement, 'p-datatable-reorderablerow-handle');\n }\n}\n\n@Directive({\n selector: '[pReorderableRow]',\n host: {\n class: 'p-element'\n }\n})\nexport class ReorderableRow implements AfterViewInit {\n @Input('pReorderableRow') index: number | undefined;\n\n @Input({ transform: booleanAttribute }) pReorderableRowDisabled: boolean | undefined;\n\n mouseDownListener: VoidListener;\n\n dragStartListener: VoidListener;\n\n dragEndListener: VoidListener;\n\n dragOverListener: VoidListener;\n\n dragLeaveListener: VoidListener;\n\n dropListener: VoidListener;\n\n constructor(private renderer: Renderer2, 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.renderer.listen(this.el.nativeElement, 'mousedown', this.onMouseDown.bind(this));\n\n this.dragStartListener = this.renderer.listen(this.el.nativeElement, 'dragstart', this.onDragStart.bind(this));\n\n this.dragEndListener = this.renderer.listen(this.el.nativeElement, 'dragend', this.onDragEnd.bind(this));\n\n this.dragOverListener = this.renderer.listen(this.el.nativeElement, 'dragover', this.onDragOver.bind(this));\n\n this.dragLeaveListener = this.renderer.listen(this.el.nativeElement, 'dragleave', this.onDragLeave.bind(this));\n });\n }\n\n unbindEvents() {\n if (this.mouseDownListener) {\n this.mouseDownListener();\n this.mouseDownListener = null;\n }\n\n if (this.dragStartListener) {\n this.dragStartListener();\n this.dragStartListener = null;\n }\n\n if (this.dragEndListener) {\n this.dragEndListener();\n this.dragEndListener = null;\n }\n\n if (this.dragOverListener) {\n this.dragOverListener();\n this.dragOverListener = null;\n }\n\n if (this.dragLeaveListener) {\n this.dragLeaveListener();\n this.dragLeaveListener = null;\n }\n }\n\n onMouseDown(event: Event) {\n const targetElement = event.target as HTMLElement;\n const isHandleClicked = this.isHandleElement(targetElement);\n this.el.nativeElement.draggable = isHandleClicked;\n }\n\n isHandleElement(element: HTMLElement): boolean {\n if (element?.classList.contains('p-datatable-reorderablerow-handle')) {\n return true;\n }\n\n if (element?.parentElement && !['TD', 'TR'].includes(element?.parentElement?.tagName)) {\n return this.isHandleElement(element?.parentElement);\n }\n\n return false;\n }\n\n onDragStart(event: DragEvent) {\n this.dt.onRowDragStart(event, <number>this.index);\n }\n\n onDragEnd(event: DragEvent) {\n this.dt.onRowDragEnd(event);\n this.el.nativeElement.draggable = false;\n }\n\n onDragOver(event: DragEvent) {\n this.dt.onRowDragOver(event, <number>this.index, this.el.nativeElement);\n event.preventDefault();\n }\n\n onDragLeave(event: DragEvent) {\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: DragEvent) {\n if (this.isEnabled() && this.dt.rowDragging) {\n this.dt.onRowDrop(event, this.el.nativeElement);\n }\n\n event.preventDefault();\n }\n\n ngOnDestroy() {\n this.unbindEvents();\n }\n}\n\n@Component({\n selector: 'p-columnFilter',\n template: `\n <div class=\"p-column-filter\" [ngClass]=\"{ 'p-column-filter-row': display === 'row', 'p-column-filter-menu': display === 'menu' }\">\n <p-columnFilterFormElement\n *ngIf=\"display === 'row'\"\n class=\"p-fluid\"\n [type]=\"type\"\n [field]=\"field\"\n [ariaLabel]=\"ariaLabel\"\n [filterConstraint]=\"dt.filters[field]\"\n [filterTemplate]=\"filterTemplate\"\n [placeholder]=\"placeholder\"\n [minFractionDigits]=\"minFractionDigits\"\n [maxFractionDigits]=\"maxFractionDigits\"\n [prefix]=\"prefix\"\n [suffix]=\"suffix\"\n [locale]=\"locale\"\n [localeMatcher]=\"localeMatcher\"\n [currency]=\"currency\"\n [currencyDisplay]=\"currencyDisplay\"\n [useGrouping]=\"useGrouping\"\n [showButtons]=\"showButtons\"\n ></p-columnFilterFormElement>\n <button\n #icon\n *ngIf=\"showMenuButton\"\n type=\"button\"\n class=\"p-column-filter-menu-button p-link\"\n aria-haspopup=\"true\"\n [attr.aria-label]=\"filterMenuButtonAriaLabel\"\n [attr.aria-controls]=\"overlayVisible ? overlayId : null\"\n [attr.aria-expanded]=\"overlayVisible ?? false\"\n [ngClass]=\"{ 'p-column-filter-menu-button-open': overlayVisible, 'p-column-filter-menu-button-active': hasFilter() }\"\n (click)=\"toggleMenu()\"\n (keydown)=\"onToggleButtonKeyDown($event)\"\n >\n <FilterIcon [styleClass]=\"'pi-filter-icon'\" *ngIf=\"!filterIconTemplate\" />\n <span class=\"pi-filter-icon\" *ngIf=\"filterIconTemplate\">\n <ng-template *ngTemplateOutlet=\"filterIconTemplate\"></ng-template>\n </span>\n </button>\n <button #icon *ngIf=\"showClearButton && display === 'row'\" [ngClass]=\"{ 'p-hidden-space': !hasRowFilter() }\" type=\"button\" class=\"p-column-filter-clear-button p-link\" (click)=\"clearFilter()\" [attr.aria-label]=\"clearButtonLabel\">\n <FilterSlashIcon *ngIf=\"!clearFilterIconTemplate\" />\n <ng-template *ngTemplateOutlet=\"clearFilterIconTemplate\"></ng-template>\n </button>\n <div\n *ngIf=\"showMenu && overlayVisible\"\n [ngClass]=\"{ 'p-column-filter-overlay p-component p-fluid': true, 'p-column-filter-overlay-menu': display === 'menu' }\"\n [id]=\"overlayId\"\n [attr.aria-modal]=\"true\"\n role=\"dialog\"\n (click)=\"onContentClick()\"\n [@overlayAnimation]=\"'visible'\"\n (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\"\n (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\"\n (keydown.escape)=\"onEscape()\"\n >\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { $implicit: field }\"></ng-container>\n <ul *ngIf=\"display === 'row'; else menu\" class=\"p-column-filter-row-items\">\n <li\n class=\"p-column-filter-row-item\"\n *ngFor=\"let matchMode of matchModes; let i = index\"\n (click)=\"onRowMatchModeChange(matchMode.value)\"\n (keydown)=\"onRowMatchModeKeyDown($event)\"\n (keydown.enter)=\"this.onRowMatchModeChange(matchMode.value)\"\n [ngClass]=\"{ 'p-highlight': isRowMatchModeSelected(matchMode.value) }\"\n [attr.tabindex]=\"i === 0 ? '0' : null\"\n >\n {{ matchMode.label }}\n </li>\n <li class=\"p-column-filter-separator\"></li>\n <li class=\"p-column-filter-row-item\" (click)=\"onRowClearItemClick()\" (keydown)=\"onRowMatchModeKeyDown($event)\" (keydown.enter)=\"onRowClearItemClick()\">{{ noFilterLabel }}</li>\n </ul>\n <ng-template #menu>\n <div class=\"p-column-filter-operator\" *ngIf=\"isShowOperator\">\n <p-dropdown [options]=\"operatorOptions\" [ngModel]=\"operator\" (ngModelChange)=\"onOperatorChange($event)\" styleClass=\"p-column-filter-operator-dropdown\"></p-dropdown>\n </div>\n <div class=\"p-column-filter-constraints\">\n <div *ngFor=\"let fieldConstraint of fieldConstraints; let i = index\" class=\"p-column-filter-constraint\">\n <p-dropdown\n *ngIf=\"showMatchModes && matchModes\"\n [options]=\"matchModes\"\n [ngModel]=\"fieldConstraint.matchMode\"\n (ngModelChange)=\"onMenuMatchModeChange($event, fieldConstraint)\"\n styleClass=\"p-column-filter-matchmode-dropdown\"\n ></p-dropdown>\n <p-columnFilterFormElement\n [type]=\"type\"\n [field]=\"field\"\n [filterConstraint]=\"fieldConstraint\"\n [filterTemplate]=\"filterTemplate\"\n [placeholder]=\"placeholder\"\n [minFractionDigits]=\"minFractionDigits\"\n [maxFractionDigits]=\"maxFractionDigits\"\n [prefix]=\"prefix\"\n [suffix]=\"suffix\"\n [locale]=\"locale\"\n [localeMatcher]=\"localeMatcher\"\n [currency]=\"currency\"\n [currencyDisplay]=\"currencyDisplay\"\n [useGrouping]=\"useGrouping\"\n ></p-columnFilterFormElement>\n <div>\n <button\n *ngIf=\"showRemoveIcon\"\n type=\"button\"\n pButton\n class=\"p-column-filter-remove-button p-button-text p-button-danger p-button-sm\"\n (click)=\"removeConstraint(fieldConstraint)\"\n pRipple\n [attr.aria-label]=\"removeRuleButtonLabel\"\n [label]=\"removeRuleButtonLabel\"\n >\n <TrashIcon *ngIf=\"!removeRuleIconTemplate\" [styleClass]=\"'p-button-icon-left'\" />\n <ng-template *ngTemplateOutlet=\"removeRuleIconTemplate\"></ng-template>\n </button>\n </div>\n </div>\n </div>\n <div class=\"p-column-filter-add-rule\" *ngIf=\"isShowAddConstraint\">\n <button type=\"button\" pButton [label]=\"addRuleButtonLabel\" [attr.aria-label]=\"addRuleButtonLabel\" class=\"p-column-filter-add-button p-button-text p-button-sm\" (click)=\"addConstraint()\" pRipple>\n <PlusIcon *ngIf=\"!addRuleIconTemplate\" [styleClass]=\"'p-button-icon-left'\" />\n <ng-template *ngTemplateOutlet=\"addRuleIconTemplate\"></ng-template>\n </button>\n </div>\n <div class=\"p-column-filter-buttonbar\">\n <button #clearBtn *ngIf=\"showClearButton\" type=\"button\" pButton class=\"p-button-outlined p-button-sm\" (click)=\"clearFilter()\" [attr.aria-label]=\"clearButtonLabel\" [label]=\"clearButtonLabel\" pRipple></button>\n <button *ngIf=\"showApplyButton\" type=\"button\" pButton (click)=\"applyFilter()\" class=\"p-button-sm\" [label]=\"applyButtonLabel\" pRipple [attr.aria-label]=\"applyButtonLabel\"></button>\n </div>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: { $implicit: field }\"></ng-container>\n </div>\n </div>\n `,\n animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('.12s cubic-bezier(0, 0, 0.2, 1)')]), transition(':leave', [animate('.1s linear', style({ opacity: 0 }))])])],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n})\nexport class ColumnFilter implements AfterContentInit {\n /**\n * Property represented by the column.\n * @group Props\n */\n @Input() field: string | undefined;\n /**\n * Type of the input.\n * @group Props\n */\n @Input() type: string = 'text';\n /**\n * Filter display.\n * @group Props\n */\n @Input() display: string = 'row';\n /**\n * Decides whether to display filter menu popup.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showMenu: boolean = true;\n /**\n * Filter match mode.\n * @group Props\n */\n @Input() matchMode: string | undefined;\n /**\n * Filter operator.\n * @defaultValue 'AND'\n * @group Props\n */\n @Input() operator: string = FilterOperator.AND;\n /**\n * Decides whether to display filter operator.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showOperator: boolean = true;\n /**\n * Decides whether to display clear filter button.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showClearButton: boolean = true;\n /**\n * Decides whether to display apply filter button.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showApplyButton: boolean = true;\n /**\n * Decides whether to display filter match modes.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showMatchModes: boolean = true;\n /**\n * Decides whether to display add filter button.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showAddButton: boolean = true;\n /**\n * Decides whether to close popup on clear button click.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) hideOnClear: boolean = false;\n /**\n * Filter placeholder.\n * @group Props\n */\n @Input() placeholder: string | undefined;\n /**\n * Filter match mode options.\n * @group Props\n */\n @Input() matchModeOptions: SelectItem[] | undefined;\n /**\n * Defines maximum amount of constraints.\n * @group Props\n */\n @Input({ transform: numberAttribute }) maxConstraints: number = 2;\n /**\n * Defines minimum fraction of digits.\n * @group Props\n */\n @Input({ transform: (value: unknown) => numberAttribute(value, null) }) minFractionDigits: number | undefined;\n /**\n * Defines maximum fraction of digits.\n * @group Props\n */\n @Input({ transform: (value: unknown) => numberAttribute(value, null) }) maxFractionDigits: number | undefined;\n /**\n * Defines prefix of the filter.\n * @group Props\n */\n @Input() prefix: string | undefined;\n /**\n * Defines suffix of the filter.\n * @group Props\n */\n @Input() suffix: string | undefined;\n /**\n * Defines filter locale.\n * @group Props\n */\n @Input() locale: string | undefined;\n /**\n * Defines filter locale matcher.\n * @group Props\n */\n @Input() localeMatcher: string | undefined;\n /**\n * Enables currency input.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) currency: boolean | undefined;\n /**\n * Defines the display of the currency input.\n * @group Props\n */\n @Input() currencyDisplay: string | undefined;\n /**\n * Defines if filter grouping will be enabled.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) useGrouping: boolean = true;\n /**\n * Defines the visibility of buttons.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) showButtons: boolean = true;\n /**\n * Defines the aria-label of the form element.\n * @group Props\n */\n @Input() ariaLabel: string | undefined;\n /**\n * Callback to invoke on overlay is shown.\n * @param {AnimationEvent} originalEvent - animation event.\n * @group Emits\n */\n @Output() onShow: EventEmitter<{ originalEvent: AnimationEvent }> = new EventEmitter<{ originalEvent: AnimationEvent }>();\n /**\n * Callback to invoke on overlay is hidden.\n * @param {AnimationEvent} originalEvent - animation event.\n * @group Emits\n */\n @Output() onHide: EventEmitter<{ originalEvent: AnimationEvent }> = new EventEmitter<{ originalEvent: AnimationEvent }>();\n\n @ViewChild('icon') icon: Nullable<ElementRef>;\n\n @ViewChild('clearBtn') clearButtonViewChild: Nullable<ElementRef>;\n\n @ContentChildren(PrimeTemplate) templates: Nullable<QueryList<any>>;\n\n overlaySubscription: Subscription | undefined;\n\n headerTemplate: Nullable<TemplateRef<any>>;\n\n filterTemplate: Nullable<TemplateRef<any>>;\n\n footerTemplate: Nullable<TemplateRef<any>>;\n\n filterIconTemplate: Nullable<TemplateRef<any>>;\n\n removeRuleIconTemplate: Nullable<TemplateRef<any>>;\n\n addRuleIconTemplate: Nullable<TemplateRef<any>>;\n\n clearFilterIconTemplate: Nullable<TemplateRef<any>>;\n\n operatorOptions: any[] | undefined;\n\n overlayVisible: boolean | undefined;\n\n overlay: HTMLElement | undefined | null;\n\n scrollHandler: ConnectedOverlayScrollHandler | null | undefined;\n\n documentClickListener: VoidListener;\n\n documentResizeListener: VoidListener;\n\n matchModes: SelectItem[] | undefined;\n\n translationSubscription: Subscription | undefined;\n\n resetSubscription: Subscription | undefined;\n\n selfClick: boolean | undefined;\n\n overlayEventListener: any;\n\n private window: Window;\n\n overlayId: any;\n\n get fieldConstraints(): FilterMetadata[] | undefined | null {\n return this.dt.filters ? <FilterMetadata[]>this.dt.filters[<string>this.field] : null;\n }\n\n get showRemoveIcon(): boolean {\n return this.fieldConstraints ? this.fieldConstraints.length > 1 : false;\n }\n\n get showMenuButton(): boolean {\n return this.showMenu && (this.display === 'row' ? this.type !== 'boolean' : true);\n }\n\n get isShowOperator(): boolean {\n return this.showOperator && this.type !== 'boolean';\n }\n\n get isShowAddConstraint(): boolean | undefined | null {\n return this.showAddButton && this.type !== 'boolean' && this.fieldConstraints && this.fieldConstraints.length < this.maxConstraints;\n }\n\n get showMenuButtonLabel() {\n return this.config.getTranslation(TranslationKeys.SHOW_FILTER_MENU);\n }\n\n get applyButtonLabel(): string {\n return this.config.getTranslation(TranslationKeys.APPLY);\n }\n\n get clearButtonLabel(): string {\n return this.config.getTranslation(TranslationKeys.CLEAR);\n }\n\n get addRuleButtonLabel(): string {\n return this.config.getTranslation(TranslationKeys.ADD_RULE);\n }\n\n get removeRuleButtonLabel(): string {\n return this.config.getTranslation(TranslationKeys.REMOVE_RULE);\n }\n\n get noFilterLabel(): string {\n return this.config.getTranslation(TranslationKeys.NO_FILTER);\n }\n\n get filterMenuButtonAriaLabel() {\n return this.config.translation ? (this.overlayVisible ? this.config.translation.aria.hideFilterMenu : this.config.translation.aria.showFilterMenu) : undefined;\n }\n\n get removeRuleButtonAriaLabel() {\n return this.config.translation ? this.config.translation.removeRule : undefined;\n }\n\n get filterOperatorAriaLabel() {\n return this.config.translation ? this.config.translation.aria.filterOperator : undefined;\n }\n\n get filterConstraintAriaLabel() {\n return this.config.translation ? this.config.translation.aria.filterConstraint : undefined;\n }\n\n constructor(@Inject(DOCUMENT) private document: Document, public el: ElementRef, public dt: Table, public renderer: Renderer2, public config: PrimeNGConfig, public overlayService: OverlayService, private cd: ChangeDetectorRef) {\n this.window = this.document.defaultView as Window;\n }\n\n ngOnInit() {\n this.overlayId = UniqueComponentId();\n if (!this.dt.filters[<string>this.field]) {\n this.initFieldFilterConstraint();\n }\n\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n this.generateMatchModeOptions();\n this.generateOperatorOptions();\n });\n\n this.generateMatchModeOptions();\n this.generateOperatorOptions();\n }\n\n generateMatchModeOptions() {\n this.matchModes =\n this.matchModeOptions ||\n (this.config as any).filterMatchModeOptions[this.type]?.map((key: any) => {\n return { label: this.config.getTranslation(key), value: key };\n });\n }\n\n generateOperatorOptions() {\n this.operatorOptions = [\n { label: this.config.getTranslation(TranslationKeys.MATCH_ALL), value: FilterOperator.AND },\n { label: this.config.getTranslation(TranslationKeys.MATCH_ANY), value: FilterOperator.OR }\n ];\n }\n\n ngAfterContentInit() {\n (this.templates as QueryList<PrimeTemplate>).forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n\n case 'filter':\n this.filterTemplate = item.template;\n break;\n\n case 'footer':\n this.footerTemplate = item.template;\n break;\n\n case 'filtericon':\n this.filterIconTemplate = item.template;\n break;\n\n case 'clearfiltericon':\n this.clearFilterIconTemplate = item.template;\n break;\n\n case 'removeruleicon':\n this.removeRuleIconTemplate = item.template;\n break;\n\n case 'addruleicon':\n this.addRuleIconTemplate = item.template;\n break;\n\n default:\n this.filterTemplate = item.template;\n break;\n }\n });\n }\n\n initFieldFilterConstraint() {\n let defaultMatchMode = this.getDefaultMatchMode();\n this.dt.filters[<string>this.field] = this.display == 'row' ? { value: null, matchMode: defaultMatchMode } : [{ value: null, matchMode: defaultMatchMode, operator: this.operator }];\n }\n\n onMenuMatchModeChange(value: any, filterMeta: FilterMetadata) {\n filterMeta.matchMode = value;\n\n if (!this.showApplyButton) {\n this.dt._filter();\n }\n }\n\n onRowMatchModeChange(matchMode: string) {\n const fieldFilter = <FilterMetadata>this.dt.filters[<string>this.field];\n fieldFilter.matchMode = matchMode;\n if (fieldFilter.value) {\n this.dt._filter();\n }\n this.hide();\n }\n\n onRowMatchModeKeyDown(event: KeyboardEvent) {\n let item = <HTMLLIElement>event.target;\n\n switch (event.key) {\n case 'ArrowDown':\n var nextItem = this.findNextItem(item);\n if (nextItem) {\n item.removeAttribute('tabindex');\n nextItem.tabIndex = '0';\n nextItem.focus();\n }\n\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n var prevItem = this.findPrevItem(item);\n if (prevItem) {\n item.removeAttribute('tabindex');\n prevItem.tabIndex = '0';\n prevItem.focus();\n }\n\n event.preventDefault();\n break;\n }\n }\n\n onRowClearItemClick() {\n this.clearFilter();\n this.hide();\n }\n\n isRowMatchModeSelected(matchMode: string) {\n return (<FilterMetadata>this.dt.filters[<string>this.field]).matchMode === matchMode;\n }\n\n addConstraint() {\n (<FilterMetadata[]>this.dt.filters[<string>this.field]).push({ value: null, matchMode: this.getDefaultMatchMode(), operator: this.getDefaultOperator() });\n DomHandler.focus(this.clearButtonViewChild.nativeElement);\n }\n\n removeConstraint(filterMeta: FilterMetadata) {\n this.dt.filters[<string>this.field] = (<FilterMetadata[]>this.dt.filters[<string>this.field]).filter((meta) => meta !== filterMeta);\n if (!this.showApplyButton) {\n this.dt._filter();\n }\n DomHandler.focus(this.clearButtonViewChild.nativeElement);\n }\n\n onOperatorChange(value: any) {\n (<FilterMetadata[]>this.dt.filters[<string>this.field]).forEach((filterMeta) => {\n filterMeta.operator = value;\n this.operator = value;\n });\n\n if (!this.showApplyButton) {\n this.dt._filter();\n }\n }\n\n toggleMenu() {\n this.overlayVisible = !this.overlayVisible;\n }\n\n onToggleButtonKeyDown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Escape':\n case 'Tab':\n this.overlayVisible = false;\n break;\n\n case 'ArrowDown':\n if (this.overlayVisible) {\n let focusable = DomHandler.getFocusableElements(<HTMLElement>this.overlay);\n if (focusable) {\n focusable[0].focus();\n }\n event.preventDefault();\n } else if (event.altKey) {\n this.overlayVisible = true;\n event.preventDefault();\n }\n break;\n case 'Enter':\n this.toggleMenu();\n event.preventDefault();\n break;\n }\n }\n\n onEscape() {\n this.overlayVisible = false;\n this.icon?.nativeElement.focus();\n }\n\n findNextItem(item: HTMLLIElement): any {\n let nextItem = <HTMLLIElement>item.nextElementSibling;\n\n if (nextItem) return DomHandler.hasClass(nextItem, 'p-column-filter-separator') ? this.findNextItem(nextItem) : nextItem;\n else return item.parentElement?.firstElementChild;\n }\n\n findPrevItem(item: HTMLLIElement): any {\n let prevItem = <HTMLLIElement>item.previousElementSibling;\n\n if (prevItem) return DomHandler.hasClass(prevItem, 'p-column-filter-separator') ? this.findPrevItem(prevItem) : prevItem;\n else return item.parentElement?.lastElementChild;\n }\n\n onContentClick() {\n this.selfClick = true;\n }\n\n onOverlayAnimationStart(event: AnimationEvent) {\n switch (event.toState) {\n case 'visible':\n this.overlay = event.element;\n this.renderer.appendChild(this.document.body, this.overlay);\n ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n DomHandler.absolutePosition(this.overlay, this.icon?.nativeElement);\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n\n this.overlayEventListener = (e: any) => {\n if (this.overlay && this.overlay.contains(e.target)) {\n this.selfClick = true;\n }\n };\n\n this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);\n this.onShow.emit({ originalEvent: event });\n break;\n\n case 'void':\n this.onOverlayHide();\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n break;\n }\n }\n\n onOverlayAnimationEnd(event: AnimationEvent) {\n switch (event.toState) {\n case 'visible':\n this.focusOnFirstElement();\n break;\n case 'void':\n ZIndexUtils.clear(event.element);\n this.onHide.emit({ originalEvent: event });\n break;\n }\n }\n\n focusOnFirstElement() {\n if (this.overlay) {\n DomHandler.focus(DomHandler.getFirstFocusableElement(this.overlay, ''));\n }\n }\n\n getDefaultMatchMode(): string {\n if (this.matchMode) {\n return this.matchMode;\n } else {\n if (this.type === 'text') return FilterMatchMode.STARTS_WITH;\n else if (this.type === 'numeric') return FilterMatchMode.EQUALS;\n else if (this.type === 'date') return FilterMatchMode.DATE_IS;\n else return FilterMatchMode.CONTAINS;\n }\n }\n\n getDefaultOperator(): string | undefined {\n return this.dt.filters ? (<FilterMetadata[]>this.dt.filters[<string>(<string>this.field)])[0].operator : this.operator;\n }\n\n hasRowFilter() {\n return this.dt.filters[<string>this.field] && !this.dt.isFilterBlank((<FilterMetadata>this.dt.filters[<string>this.field]).value);\n }\n\n hasFilter(): boolean {\n let fieldFilter = this.dt.filters[<string>this.field];\n if (fieldFilter) {\n if (Array.isArray(fieldFilter)) return !this.dt.isFilterBlank((<FilterMetadata[]>fieldFilter)[0].value);\n else return !this.dt.isFilterBlank(fieldFilter.value);\n }\n\n return false;\n }\n\n isOutsideClicked(event: any): boolean {\n return !(\n DomHandler.hasClass(this.overlay?.nextElementSibling, 'p-overlay') ||\n this.overlay?.isSameNode(event.target) ||\n this.overlay?.contains(event.target) ||\n this.icon?.nativeElement.isSameNode(event.target) ||\n this.icon?.nativeElement.contains(event.target) ||\n DomHandler.hasClass(event.target, 'p-column-filter-add-button') ||\n DomHandler.hasClass(event.target.parentElement, 'p-column-filter-add-button') ||\n DomHandler.hasClass(event.target, 'p-column-filter-remove-button') ||\n DomHandler.hasClass(event.target.parentElement, 'p-column-filter-remove-button')\n );\n }\n\n bindDocumentClickListener() {\n if (!this.documentClickListener) {\n const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n this.documentClickListener = this.renderer.listen(documentTarget, 'mousedown', (event) => {\n const dialogElements = document.querySelectorAll('[role=\"dialog\"]');\n const targetIsColumnFilterMenuButton = event.target.closest('.p-column-filter-menu-button');\n if (this.overlayVisible && this.isOutsideClicked(event) && (targetIsColumnFilterMenuButton || dialogElements?.length <= 1)) {\n this.hide();\n }\n\n this.selfClick = false;\n });\n }\n }\n\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n this.selfClick = false;\n }\n }\n\n bindDocumentResizeListener() {\n if (!this.documentResizeListener) {\n this.documentResizeListener = this.renderer.listen(this.window, 'resize', (event) => {\n if (this.overlayVisible && !DomHandler.isTouchDevice()) {\n this.hide();\n }\n });\n }\n }\n\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n }\n\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.icon?.nativeElement, () => {\n if (this.overlayVisible) {\n this.hide();\n }\n });\n }\n\n this.scrollHandler.bindScrollListener();\n }\n\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n\n hide() {\n this.overlayVisible = false;\n this.cd.markForCheck();\n }\n\n onOverlayHide() {\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n this.overlay = null;\n }\n\n clearFilter() {\n this.initFieldFilterConstraint();\n this.dt._filter();\n if (this.hideOnClear) this.hide();\n }\n\n applyFilter() {\n this.dt._filter();\n this.hide();\n }\n\n ngOnDestroy() {\n if (this.overlay) {\n this.renderer.appendChild(this.el.nativeElement, this.overlay);\n ZIndexUtils.clear(this.overlay);\n this.onOverlayHide();\n }\n\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n\n if (this.resetSubscription) {\n this.resetSubscription.unsubscribe();\n }\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n }\n}\n\n@Component({\n selector: 'p-columnFilterFormElement',\n template: `\n <ng-container *ngIf=\"filterTemplate; else builtInElement\">\n <ng-container\n *ngTemplateOutlet=\"\n filterTemplate;\n context: {\n $implicit: filterConstraint.value,\n filterCallback: filterCallback,\n type: type,\n field: field,\n filterConstraint: filterConstraint,\n placeholder: placeholder,\n minFractionDigits: minFractionDigits,\n maxFractionDigits: maxFractionDigits,\n prefix: prefix,\n suffix: suffix,\n locale: locale,\n localeMatcher: localeMatcher,\n currency: currency,\n currencyDisplay: currencyDisplay,\n useGrouping: useGrouping,\n showButtons: showButtons\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #builtInElement>\n <ng-container [ngSwitch]=\"type\">\n <input\n *ngSwitchCase=\"'text'\"\n type=\"text\"\n [ariaLabel]=\"ariaLabel\"\n pInputText\n [value]=\"filterConstraint?.value\"\n (input)=\"onModelChange($event.target.value)\"\n (keydown.enter)=\"onTextInputEnterKeyDown($event)\"\n [attr.placeholder]=\"placeholder\"\n />\n <p-inputNumber\n *ngSwitchCase=\"'numeric'\"\n [ngModel]=\"filterConstraint?.value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onKeyDown)=\"onNumericInputKeyDown($event)\"\n [showButtons]=\"showButtons\"\n [minFractionDigits]=\"minFractionDigits\"\n [maxFractionDigits]=\"maxFractionDigits\"\n [ariaLabel]=\"ariaLabel\"\n [prefix]=\"prefix\"\n [suffix]=\"suffix\"\n [placeholder]=\"placeholder\"\n [mode]=\"currency ? 'currency' : 'decimal'\"\n [locale]=\"locale\"\n [localeMatcher]=\"localeMatcher\"\n [currency]=\"currency\"\n [currencyDisplay]=\"currencyDisplay\"\n [useGrouping]=\"useGrouping\"\n ></p-inputNumber>\n <p-triStateCheckbox [ariaLabel]=\"ariaLabel\" *ngSwitchCase=\"'boolean'\" [ngModel]=\"filterConstraint?.value\" (ngModelChange)=\"onModelChange($event)\"></p-triStateCheckbox>\n <p-calendar [ariaLabel]=\"ariaLabel\" *ngSwitchCase=\"'date'\" [placeholder]=\"placeholder\" [ngModel]=\"filterConstraint?.value\" (ngModelChange)=\"onModelChange($event)\" appendTo=\"body\"></p-calendar>\n </ng-container>\n </ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'p-element'\n }\n})\nexport class ColumnFilterFormElement implements OnInit {\n @Input() field: string | undefined;\n\n @Input() type: string | undefined;\n\n @Input() filterConstraint: FilterMetadata | undefined;\n\n @Input() filterTemplate: Nullable<TemplateRef<any>>;\n\n @Input() placeholder: string | undefined;\n\n @Input({ transform: (value: unknown) => numberAttribute(value, null) }) minFractionDigits: number | undefined;\n\n @Input({ transform: (value: unknown) => numberAttribute(value, null) }) maxFractionDigits: number | undefined;\n\n @Input() prefix: string | undefined;\n\n @Input() suffix: string | undefined;\n\n @Input() locale: string | undefined;\n\n @Input() localeMatcher: string | undefined;\n\n @Input() currency: string | undefined;\n\n @Input() currencyDisplay: string | undefined;\n\n @Input({ transform: booleanAttribute }) useGrouping: boolean = true;\n\n @Input() ariaLabel: string | undefined;\n\n get showButtons(): boolean {\n return this.colFilter.showButtons;\n }\n\n filterCallback: any;\n\n constructor(public dt: Table, private colFilter: ColumnFilter) {}\n\n ngOnInit() {\n this.filterCallback = (value: any) => {\n (<any>this.filterConstraint).value = value;\n this.dt._filter();\n };\n }\n\n onModelChange(value: any) {\n (<any>this.filterConstraint).value = value;\n\n if (this.type === 'date' || this.type === 'boolean' || value === '') {\n this.dt._filter();\n }\n }\n\n onTextInputEnterKeyDown(event: KeyboardEvent) {\n this.dt._filter();\n event.preventDefault();\n }\n\n onNumericInputKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n this.dt._filter();\n event.preventDefault();\n }\n }\n}\n\n@NgModule({\n imports: [\n CommonModule,\n PaginatorModule,\n InputTextModule,\n DropdownModule,\n FormsModule,\n ButtonModule,\n SelectButtonModule,\n CalendarModule,\n InputNumberModule,\n TriStateCheckboxModule,\n ScrollerModule,\n ArrowDownIcon,\n ArrowUpIcon,\n SpinnerIcon,\n SortAltIcon,\n SortAmountUpAltIcon,\n SortAmountDownIcon,\n CheckIcon,\n FilterIcon,\n FilterSlashIcon,\n PlusIcon,\n TrashIcon\n ],\n exports: [\n Table,\n SharedModule,\n SortableColumn,\n FrozenColumn,\n RowGroupHeader,\n SelectableRow,\n RowToggler,\n ContextMenuRow,\n ResizableColumn,\n ReorderableColumn,\n EditableColumn,\n CellEditor,\n SortIcon,\n TableRadioButton,\n TableCheckbox,\n TableHeaderCheckbox,\n ReorderableRowHandle,\n ReorderableRow,\n SelectableRowDblClick,\n EditableRow,\n InitEditableRow,\n SaveEditableRow,\n CancelEditableRow,\n ColumnFilter,\n ColumnFilterFormElement,\n ScrollerModule\n ],\n declarations: [\n Table,\n SortableColumn,\n FrozenColumn,\n RowGroupHeader,\n SelectableRow,\n RowToggler,\n ContextMenuRow,\n ResizableColumn,\n ReorderableColumn,\n EditableColumn,\n CellEditor,\n TableBody,\n SortIcon,\n TableRadioButton,\n TableCheckbox,\n TableHeaderCheckbox,\n ReorderableRowHandle,\n ReorderableRow,\n SelectableRowDblClick,\n EditableRow,\n InitEditableRow,\n SaveEditableRow,\n CancelEditableRow,\n ColumnFilter,\n ColumnFilterFormElement\n ]\n})\nexport class TableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}