novo-elements 8.3.0 → 8.3.1-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/elements/dropdown/Dropdown.d.ts +7 -1
- package/esm2020/elements/breadcrumbs/breadcrumb-item/BreadcrumbItem.mjs +1 -1
- package/esm2020/elements/data-table/cell-headers/data-table-header-cell.component.mjs +1 -1
- package/esm2020/elements/data-table/data-table-clear-button.component.mjs +1 -1
- package/esm2020/elements/data-table/data-table.component.mjs +2 -2
- package/esm2020/elements/dropdown/Dropdown.mjs +29 -4
- package/esm2020/elements/query-builder/condition-group/condition-group.component.mjs +1 -1
- package/esm2020/elements/simple-table/cell-header.mjs +2 -2
- package/esm2020/elements/simple-table/cell.mjs +1 -1
- package/esm2020/elements/tabbed-group-picker/TabbedGroupPicker.mjs +1 -1
- package/esm2020/elements/table/Table.mjs +1 -1
- package/esm2020/elements/table/extras/dropdown-cell/DropdownCell.mjs +1 -1
- package/fesm2015/novo-elements-elements-breadcrumbs.mjs +1 -1
- package/fesm2015/novo-elements-elements-breadcrumbs.mjs.map +1 -1
- package/fesm2015/novo-elements-elements-data-table.mjs +3 -3
- package/fesm2015/novo-elements-elements-data-table.mjs.map +1 -1
- package/fesm2015/novo-elements-elements-dropdown.mjs +28 -3
- package/fesm2015/novo-elements-elements-dropdown.mjs.map +1 -1
- package/fesm2015/novo-elements-elements-query-builder.mjs +1 -1
- package/fesm2015/novo-elements-elements-query-builder.mjs.map +1 -1
- package/fesm2015/novo-elements-elements-simple-table.mjs +2 -2
- package/fesm2015/novo-elements-elements-simple-table.mjs.map +1 -1
- package/fesm2015/novo-elements-elements-tabbed-group-picker.mjs +1 -1
- package/fesm2015/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
- package/fesm2015/novo-elements-elements-table.mjs +2 -2
- package/fesm2015/novo-elements-elements-table.mjs.map +1 -1
- package/fesm2020/novo-elements-elements-breadcrumbs.mjs +1 -1
- package/fesm2020/novo-elements-elements-breadcrumbs.mjs.map +1 -1
- package/fesm2020/novo-elements-elements-data-table.mjs +3 -3
- package/fesm2020/novo-elements-elements-data-table.mjs.map +1 -1
- package/fesm2020/novo-elements-elements-dropdown.mjs +28 -3
- package/fesm2020/novo-elements-elements-dropdown.mjs.map +1 -1
- package/fesm2020/novo-elements-elements-query-builder.mjs +1 -1
- package/fesm2020/novo-elements-elements-query-builder.mjs.map +1 -1
- package/fesm2020/novo-elements-elements-simple-table.mjs +2 -2
- package/fesm2020/novo-elements-elements-simple-table.mjs.map +1 -1
- package/fesm2020/novo-elements-elements-tabbed-group-picker.mjs +1 -1
- package/fesm2020/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
- package/fesm2020/novo-elements-elements-table.mjs +2 -2
- package/fesm2020/novo-elements-elements-table.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"novo-elements-elements-table.mjs","sources":["../../../projects/novo-elements/src/elements/table/extras/base-renderer/BaseRenderer.ts","../../../projects/novo-elements/src/elements/table/extras/date-cell/DateCell.ts","../../../projects/novo-elements/src/elements/table/extras/dropdown-cell/DropdownCell.ts","../../../projects/novo-elements/src/elements/table/extras/keep-filter-focus/KeepFilterFocus.ts","../../../projects/novo-elements/src/elements/table/extras/pagination/Pagination.ts","../../../projects/novo-elements/src/elements/table/extras/percentage-cell/PercentageCell.ts","../../../projects/novo-elements/src/elements/table/extras/row-details/RowDetails.ts","../../../projects/novo-elements/src/elements/table/extras/table-actions/TableActions.ts","../../../projects/novo-elements/src/elements/table/extras/table-cell/TableCell.ts","../../../projects/novo-elements/src/elements/table/extras/table-filter/TableFilter.ts","../../../projects/novo-elements/src/elements/table/extras/table-footer/TableFooter.ts","../../../projects/novo-elements/src/elements/table/extras/table-header/TableHeader.ts","../../../projects/novo-elements/src/elements/table/extras/th-orderable/ThOrderable.ts","../../../projects/novo-elements/src/elements/table/extras/th-sortable/ThSortable.ts","../../../projects/novo-elements/src/elements/table/extras/TableExtras.module.ts","../../../projects/novo-elements/src/elements/table/Table.ts","../../../projects/novo-elements/src/elements/table/Table.module.ts","../../../projects/novo-elements/src/elements/table/novo-elements-elements-table.ts"],"sourcesContent":["export class BaseRenderer {\n _data: any = {};\n _value: any = '';\n meta: any = {};\n\n get data() {\n return this._data;\n }\n\n set data(d: any) {\n this._data = d;\n }\n\n get value() {\n return this._value;\n }\n\n set value(v: any) {\n this._value = v;\n }\n}\n","// NG2\nimport { Component, Input } from '@angular/core';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BaseRenderer } from '../base-renderer';\n\n@Component({\n selector: 'date-cell',\n template: `\n <div class=\"date-cell\">\n <label>{{ getFormattedDate() }}</label>\n </div>\n `,\n})\nexport class DateCell extends BaseRenderer {\n @Input()\n set value(v: any) {\n this._value = v;\n }\n\n get value() {\n return this._value;\n }\n\n constructor(public labels: NovoLabelService) {\n super();\n }\n\n public getFormattedDate(): string {\n return this.labels.formatDate(this.value);\n }\n}\n","// NG2\nimport { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\n// APP\nimport { BaseRenderer } from '../base-renderer';\n\nexport interface INovoDropdownCellConfig {\n category?: string;\n callback?: Function;\n options: ({ label?: string; value?: string; callback?: Function } | string)[];\n}\n\n@Component({\n selector: 'novo-dropdown-cell',\n template: `\n <novo-dropdown parentScrollSelector=\".table-container\" containerClass=\"novo-table-dropdown-cell\">\n <novo-button type=\"button\" theme=\"secondary\" icon=\"collapse\" inverse>\n <span data-automation-id=\"novo-dropdown-cell-value\">{{ value }}</span>\n </novo-button>\n <list>\n <ng-container *ngFor=\"let config of meta.dropdownCellConfig; let i = index\">\n <dropdown-item-header *ngIf=\"config.category\">{{ config.category }}</dropdown-item-header>\n <item\n *ngFor=\"let option of config.options\"\n (action)=\"onClick(config, option, option.value)\"\n [class.active]=\"(option || option.value) === value\"\n >\n <span [attr.data-automation-id]=\"option.label || option\">{{ option.label || option }}</span>\n <i *ngIf=\"(option || option.value) === value\" class=\"bhi-check\"></i>\n </item>\n <hr *ngIf=\"i < meta.dropdownCellConfig.length - 1\" />\n </ng-container>\n </list>\n </novo-dropdown>\n `,\n styleUrls: ['./DropdownCell.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NovoDropdownCell extends BaseRenderer implements OnInit {\n @Input()\n meta: any;\n\n @Input()\n set value(v: any) {\n this._value = v;\n }\n\n get value() {\n return this._value;\n }\n\n public ngOnInit(): void {\n // Check for and fix bad config\n if (!this.meta.dropdownCellConfig) {\n throw new Error('Missing \"dropdownCellConfig\" on the column setup');\n }\n }\n\n public onClick(config, option, value): void {\n const callback = option.callback || config.callback;\n callback(this.data, value || option);\n }\n}\n","// NG2\nimport { AfterViewInit, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[keepFilterFocused]',\n})\nexport class NovoTableKeepFilterFocus implements AfterViewInit {\n constructor(private element: ElementRef) {}\n\n ngAfterViewInit() {\n this.element.nativeElement.focus();\n }\n}\n","// NG2\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\n\ninterface Page {\n num: number;\n text: string;\n active: boolean;\n}\n@Component({\n selector: 'novo-pagination',\n template: `\n <ng-container *ngIf=\"rowOptions.length > 1\">\n <h5 class=\"rows\">{{ label }}</h5>\n <novo-select\n class=\"table-pagination-select\"\n [options]=\"rowOptions\"\n [placeholder]=\"labels.select\"\n [(ngModel)]=\"itemsPerPage\"\n (onSelect)=\"onPageSizeChanged($event)\"\n data-automation-id=\"pager-select\"\n ></novo-select>\n <span class=\"spacer\"></span>\n </ng-container>\n <ul class=\"pager\" data-automation-id=\"pager\">\n <li class=\"page\" (click)=\"selectPage(page - 1)\" [ngClass]=\"{ disabled: noPrevious() }\">\n <i class=\"bhi-previous\" data-automation-id=\"pager-previous\"></i>\n </li>\n <li\n class=\"page\"\n [ngClass]=\"{ active: p.active }\"\n [class.disabled]=\"disablePageSelection\"\n *ngFor=\"let p of pages\"\n (click)=\"selectPage(p.num, $event)\"\n >\n {{ p.text }}\n </li>\n <li class=\"page\" (click)=\"selectPage(page + 1)\" [ngClass]=\"{ disabled: noNext() }\">\n <i class=\"bhi-next\" data-automation-id=\"pager-next\"></i>\n </li>\n </ul>\n `,\n styleUrls: ['./Pagination.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class Pagination implements OnInit, OnChanges {\n @Input()\n page: number;\n @Input()\n totalItems: number;\n @Input()\n itemsPerPage = 10;\n @Input()\n rowOptions;\n @Input()\n label: string;\n @Input()\n get disablePageSelection(): boolean {\n return this.pageSelectDisabled;\n }\n set disablePageSelection(val: boolean) {\n this.pageSelectDisabled = coerceBooleanProperty(val);\n }\n @Output()\n pageChange = new EventEmitter();\n @Output()\n itemsPerPageChange = new EventEmitter();\n @Output()\n onPageChange = new EventEmitter();\n\n public pageSelectDisabled: boolean;\n maxPagesDisplayed = 5;\n totalPages: number;\n pages: Array<Page>;\n\n constructor(public labels: NovoLabelService) {}\n\n ngOnInit() {\n this.label = this.label || this.labels.itemsPerPage;\n this.rowOptions = this.rowOptions || this.getDefaultRowOptions();\n }\n\n ngOnChanges(changes?: SimpleChanges) {\n this.page = this.page || 1;\n this.totalPages = this.calculateTotalPages();\n this.pages = this.getPages(this.page, this.totalPages);\n }\n\n getDefaultRowOptions() {\n return [\n { value: 10, label: '10' },\n { value: 25, label: '25' },\n { value: 50, label: '50' },\n { value: 100, label: '100' },\n ];\n }\n\n onPageSizeChanged(event) {\n this.page = 1;\n this.itemsPerPage = event.selected;\n this.totalPages = this.calculateTotalPages();\n this.pages = this.getPages(this.page, this.totalPages);\n this.pageChange.emit(this.page);\n this.itemsPerPageChange.emit(this.itemsPerPage);\n this.onPageChange.emit({\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n });\n }\n\n selectPage(page: number, event?: MouseEvent) {\n if (event) {\n event.preventDefault();\n }\n\n this.page = page;\n this.pages = this.getPages(this.page, this.totalPages);\n this.pageChange.emit(this.page);\n this.onPageChange.emit({\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n });\n }\n\n noPrevious() {\n return this.page === 1;\n }\n\n noNext() {\n return this.page === this.totalPages;\n }\n\n // Create page object used in template\n makePage(num: number, text: string, isActive: boolean) {\n return { num, text, active: isActive } as Page;\n }\n\n getPages(currentPage: number, totalPages: number) {\n const pages: Array<Page> = [];\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n const isMaxSized = this.maxPagesDisplayed < totalPages;\n\n // recompute if maxPagesDisplayed\n if (isMaxSized) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(this.maxPagesDisplayed / 2), 1);\n endPage = startPage + this.maxPagesDisplayed - 1;\n\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - this.maxPagesDisplayed + 1;\n }\n }\n\n // Add page number links\n for (let num = startPage; num <= endPage; num++) {\n const page = this.makePage(num, num.toString(), num === currentPage);\n pages.push(page);\n }\n return pages;\n }\n\n calculateTotalPages() {\n const totalPages = this.itemsPerPage < 1 ? 1 : Math.ceil(this.totalItems / this.itemsPerPage);\n return Math.max(totalPages || 0, 1);\n }\n}\n","// NG2\nimport { Component } from '@angular/core';\n// APP\nimport { BaseRenderer } from '../base-renderer';\n\n@Component({\n selector: 'percentage-cell',\n template: ` <div class=\"percentage\" *ngIf=\"value || value === 0\">{{ value | percent: '1.0-2' }}</div> `,\n})\nexport class PercentageCell extends BaseRenderer {}\n","// NG2\nimport { Component, ComponentRef, ElementRef, Input, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\n// APP\nimport { ComponentUtils } from 'novo-elements/services';\nimport { BaseRenderer } from './../base-renderer';\n\n@Component({\n selector: 'novo-row-details',\n template: ` <span #container></span> <span>{{ value }}</span> `,\n})\nexport class RowDetails implements OnInit {\n @ViewChild('container', { read: ViewContainerRef, static: true })\n container: ViewContainerRef;\n\n @Input()\n data: any;\n @Input()\n renderer: any;\n\n value: any = '';\n\n constructor(private element: ElementRef, private componentUtils: ComponentUtils) {}\n\n ngOnInit() {\n if (this.renderer) {\n if (this.renderer.prototype instanceof BaseRenderer) {\n const componentRef: ComponentRef<RowDetails> = this.componentUtils.append(this.renderer, this.container);\n componentRef.instance.data = this.data;\n } else {\n this.value = this.renderer(this.data);\n }\n } else {\n // this.value = this.row[this.column.name];\n }\n }\n}\n","// NG2\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'novo-table-actions',\n template: '<ng-content></ng-content>',\n})\nexport class NovoTableActionsElement {}\n","// NG2\nimport { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n// Vendor\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n// APP\nimport { ComponentUtils } from 'novo-elements/services';\nimport { BaseRenderer } from './../base-renderer';\n\n@Component({\n selector: 'novo-table-cell',\n template: `\n <div [ngSwitch]=\"column._type\">\n <span #container></span>\n <date-cell *ngSwitchCase=\"'date'\" [value]=\"value\"></date-cell>\n <a *ngSwitchCase=\"'link'\" (click)=\"onClick($event)\">{{ value }}</a> <span *ngSwitchDefault>{{ value }}</span>\n </div>\n `,\n})\nexport class TableCell implements OnInit, OnDestroy {\n @ViewChild('container', { read: ViewContainerRef, static: true })\n container: ViewContainerRef;\n\n @Input()\n column: any;\n @Input()\n row: any;\n @Input()\n form: FormGroup;\n @Input()\n hasEditor: boolean;\n\n public value: any = '';\n private valueChangeSubscription: any;\n\n constructor(private element: ElementRef, private componentUtils: ComponentUtils) {\n this.element = element;\n this.componentUtils = componentUtils;\n }\n\n ngOnInit() {\n this.column._type = this.column.type || 'text';\n if (this.column.renderer) {\n if (this.column.renderer.prototype instanceof BaseRenderer) {\n this.column._type = 'custom';\n const componentRef = this.componentUtils.append(this.column.renderer, this.container) as any;\n componentRef.instance.meta = this.column;\n componentRef.instance.data = this.row;\n componentRef.instance.value = this.form && this.hasEditor ? this.form.getRawValue()[this.column.name] : this.row[this.column.name];\n // TODO - save ref to this and update in the valueChanges below!!\n } else {\n // TODO - wtf to do here?\n this.value = this.column.renderer(this.row);\n }\n } else {\n this.value = this.form && this.hasEditor ? this.form.getRawValue()[this.column.name] : this.row[this.column.name];\n }\n\n if (this.form && this.hasEditor) {\n this.valueChangeSubscription = this.form.valueChanges.pipe(debounceTime(300), distinctUntilChanged()).subscribe((value) => {\n this.value = value[this.column.name];\n });\n }\n }\n\n ngOnDestroy() {\n if (this.valueChangeSubscription) {\n this.valueChangeSubscription.unsubscribe();\n }\n }\n\n onClick(event) {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n if (this.column.onClick) {\n this.column.onClick(this.row);\n }\n }\n}\n","// NG2\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { Helpers, Key } from 'novo-elements/utils';\n\n@Directive({\n selector: '[novoTableFilter]',\n})\nexport class TableFilter implements OnInit, OnChanges {\n @Input('novoTableFilter')\n config: any;\n @Output()\n onFilterChange: EventEmitter<any> = new EventEmitter();\n\n filterThrottle: any;\n\n constructor(private element: ElementRef, private renderer: Renderer2) {\n this.element = element;\n this.renderer = renderer;\n }\n\n ngOnInit() {\n this.ngOnChanges();\n }\n\n ngOnChanges(changes?: SimpleChanges) {\n let label = '';\n if (this.config.freetextFilter) {\n label = this.config.freetextFilter;\n } else if (this.config.filter) {\n label = this.config.filter;\n }\n this.renderer.setProperty(this.element, 'value', label);\n }\n\n @HostListener('keydown', ['$event'])\n public onChangeFilter(event: KeyboardEvent) {\n clearTimeout(this.filterThrottle);\n if (Key.Enter === event.key) {\n this.config.filter = (event.target as any).value;\n this.onFilterChange.emit({ filtering: this.config });\n } else {\n this.filterThrottle = setTimeout(() => {\n this.config.filter = (event.target as any).value;\n this.onFilterChange.emit({ filtering: this.config });\n }, 300);\n }\n }\n\n @HostListener('click', ['$event'])\n public onClick(event) {\n Helpers.swallowEvent(event);\n }\n}\n","// NG2\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'novo-table-footer',\n template: '<ng-content></ng-content>',\n styleUrls: ['./table-footer.scss'],\n})\nexport class NovoTableFooterElement {}\n","// NG2\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'novo-table-header',\n template: '<ng-content></ng-content>',\n styleUrls: ['./table-header.scss'],\n})\nexport class NovoTableHeaderElement {}\n","// NG2\nimport { Directive, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core';\n// App\nimport { Helpers } from 'novo-elements/utils';\n\n@Directive({\n selector: '[novoThOrderable]',\n host: {\n '(dragstart)': 'onDragStart($event)',\n '(dragover)': 'onDragOver($event)',\n '(dragenter)': 'onDragEnter($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(dragend)': 'onDragEnd($event)',\n '(drop)': 'onDrop($event)',\n },\n})\nexport class ThOrderable implements OnInit {\n @Input('novoThOrderable')\n column: any;\n @Output()\n onOrderChange: EventEmitter<any> = new EventEmitter();\n\n table: any;\n clone: any;\n target: any;\n\n constructor(private element: ElementRef) {\n this.element = element;\n }\n\n get index() {\n let index: number = null;\n if (this.element.nativeElement && this.element.nativeElement.parentNode) {\n const children: Array<any> = Array.prototype.slice.call(this.element.nativeElement.parentNode.children);\n index = children.indexOf(this.element.nativeElement);\n }\n return index;\n }\n\n ngOnInit() {\n if (this.column.ordering) {\n this.element.nativeElement.setAttribute('draggable', true);\n this.table = this.findTable(this.element.nativeElement);\n }\n }\n\n onDragStart(event?: any) {\n if (this.column.ordering) {\n this.element.nativeElement.classList.add('dragging');\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', JSON.stringify(this.column));\n\n this.clone = this.table.cloneNode(true);\n this.clone.style.position = 'absolute';\n this.clone.style.left = '100%';\n this.clone.style.width = '150px';\n this.deleteColumns(this.clone);\n document.body.appendChild(this.clone);\n event.dataTransfer.setDragImage(this.clone, 75, 30);\n }\n }\n\n deleteColumns(table: { rows: Array<any>; deleteRow: Function }) {\n // TODO: `table` should be immutable and this method should return the modified data to its caller\n if (table.rows.length > 0) {\n const allRows = table.rows;\n for (let i = 0; i < allRows.length; i++) {\n if (i > 10) {\n table.deleteRow(-1);\n } else {\n const cellLength = allRows[i].cells.length;\n for (let c = 0; c < cellLength; c++) {\n if (c < this.index) {\n allRows[i].deleteCell(0);\n } else if (c > this.index) {\n allRows[i].deleteCell(-1);\n }\n }\n }\n }\n }\n }\n\n findTable(start) {\n let htmlElementNode = start;\n while (htmlElementNode) {\n htmlElementNode = htmlElementNode.parentNode;\n if (htmlElementNode && htmlElementNode.tagName.toLowerCase() === 'table') {\n return htmlElementNode;\n }\n }\n return undefined;\n }\n\n onDrag(event?: any) {\n Helpers.swallowEvent(event);\n return false;\n }\n\n onDragEnd(event?: any) {\n Helpers.swallowEvent(event);\n this.element.nativeElement.classList.remove('over');\n this.element.nativeElement.classList.remove('dragging');\n document.body.removeChild(this.clone);\n return false;\n }\n\n onDrop(event?: any) {\n Helpers.swallowEvent(event);\n this.element.nativeElement.classList.remove('over');\n const data = JSON.parse(event.dataTransfer.getData('text/plain'));\n\n this.onOrderChange.emit({\n first: data,\n second: this.column,\n });\n\n return false;\n }\n\n onDragOver(event: { preventDefault: Function; dataTransfer: { dropEffect: string }; stopPropagation: Function }): boolean {\n Helpers.swallowEvent(event);\n event.dataTransfer.dropEffect = 'move';\n return false;\n }\n\n onDragEnter(event: any) {\n this.element.nativeElement.classList.add('over');\n this.target = event.target;\n }\n\n onDragLeave(event?: any) {\n this.element.nativeElement.classList.remove('over');\n }\n}\n","// NG2\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\n\n@Directive({\n selector: '[novoThSortable]',\n host: {\n '(click)': 'onToggleSort($event)',\n },\n})\nexport class ThSortable {\n @Input('novoThSortable')\n config: any;\n @Input()\n column: any;\n @Output()\n onSortChange: EventEmitter<any> = new EventEmitter();\n\n onToggleSort(event) {\n if (event) {\n // event.preventDefault();\n }\n\n if (this.config && this.column && this.config.sorting !== false && this.column.sorting !== false) {\n switch (this.column.sort) {\n case 'asc':\n this.column.sort = 'desc';\n break;\n default:\n this.column.sort = 'asc';\n break;\n }\n\n this.onSortChange.emit(this.column);\n }\n }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCommonModule } from 'novo-elements/elements/common';\nimport { NovoDropdownModule } from 'novo-elements/elements/dropdown';\nimport { NovoSelectModule } from 'novo-elements/elements/select';\nimport { DateCell } from './date-cell/DateCell';\nimport { NovoDropdownCell } from './dropdown-cell/DropdownCell';\nimport { NovoTableKeepFilterFocus } from './keep-filter-focus/KeepFilterFocus';\nimport { Pagination } from './pagination/Pagination';\nimport { PercentageCell } from './percentage-cell/PercentageCell';\nimport { RowDetails } from './row-details/RowDetails';\nimport { NovoTableActionsElement } from './table-actions/TableActions';\nimport { TableCell } from './table-cell/TableCell';\nimport { TableFilter } from './table-filter/TableFilter';\nimport { NovoTableFooterElement } from './table-footer/TableFooter';\nimport { NovoTableHeaderElement } from './table-header/TableHeader';\nimport { ThOrderable } from './th-orderable/ThOrderable';\nimport { ThSortable } from './th-sortable/ThSortable';\n\n@NgModule({\n imports: [CommonModule, FormsModule, NovoSelectModule, NovoDropdownModule, NovoButtonModule, NovoCommonModule],\n declarations: [\n NovoTableHeaderElement,\n NovoTableFooterElement,\n NovoTableActionsElement,\n NovoTableKeepFilterFocus,\n Pagination,\n RowDetails,\n TableCell,\n TableFilter,\n ThOrderable,\n ThSortable,\n DateCell,\n PercentageCell,\n NovoDropdownCell,\n ],\n exports: [\n NovoTableHeaderElement,\n NovoTableFooterElement,\n NovoTableActionsElement,\n NovoTableKeepFilterFocus,\n Pagination,\n RowDetails,\n TableCell,\n TableFilter,\n ThOrderable,\n ThSortable,\n DateCell,\n PercentageCell,\n NovoDropdownCell,\n ],\n})\nexport class NovoTableExtrasModule {}\n","// NG2\nimport { ChangeDetectorRef, Component, DoCheck, ElementRef, EventEmitter, Input, Output, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup } from '@angular/forms';\n// Vendor\nimport { startOfToday, startOfTomorrow } from 'date-fns';\nimport { debounceTime } from 'rxjs/operators';\n// APP\nimport { CollectionEvent, NovoLabelService, PagedArrayCollection } from 'novo-elements/services';\nimport { DateUtil, Helpers, notify } from 'novo-elements/utils';\nimport { ControlFactory, FormUtils, ReadOnlyControl } from 'novo-elements/elements/form';\n\nexport interface NovoTableConfig {\n // Paging config\n paging?: {\n current: number; // current page\n itemsPerPage: number; // items per page\n onPageChange: Function; // function to handle page changing\n rowOptions?: { value: number; label: string }[]; // page options\n disablePageSelection?: boolean; // disables the pages from being selected\n };\n // Footer config (total footer)\n footers?: Array<{\n columns: Array<string>; // string array of columns to total\n method: string; // method to use for the footer, SUM | AVG, defaults to SUM\n labelColumn: string; // column to use as the \"total\" label\n label: string; // label to use in the \"total\" label\n }>;\n // TODO: When these types are enforced as `boolean | Function`, there's a lint error. That's a bug.\n filtering?: boolean | any; // Turn on filtering for the table, boolean or function for filtering callback\n sorting?: boolean | any; // Turn on sorting for the table, boolean or function for sorting callback\n ordering?: boolean | Function; // Turn on ordering for the table, boolean or function for ordering callback\n resizing?: boolean | Function; // Turn on resizing for the table, boolean or function for resizing callback\n rowSelectionStyle?: string; // Row selection style, checkbox or row\n rowSelect?: boolean; // Turn on row selection\n hasDetails?: boolean; // Turn on details row for the table\n detailsRenderer?: any; // Renderer/component for the details row\n expandAll?: boolean; // should All Rows be expanded by default\n selectAllEnabled?: boolean; // Allows the table, while in selection mode to have a select all at the top\n}\n\n// TODO - support (1) clicking cell to edit, (2) clicking row to edit, (3) button to trigger full table to edit\nexport enum NovoTableMode {\n VIEW = 1,\n EDIT = 2,\n}\n\n@Component({\n selector: 'novo-table',\n host: {\n class: 'novo-table',\n '[attr.theme]': 'theme',\n '[class.editing]': 'mode === NovoTableMode.EDIT',\n '[class.novo-table-loading]': 'loading',\n },\n // directives: [],\n template: `\n <header *ngIf=\"columns.length\">\n <ng-content select=\"novo-table-header\"></ng-content>\n <div class=\"header-actions\">\n <novo-pagination\n *ngIf=\"config.paging && !(dataProvider.isEmpty() && !dataProvider.isFiltered())\"\n [rowOptions]=\"config.paging.rowOptions\"\n [disablePageSelection]=\"config.paging.disablePageSelection\"\n [(page)]=\"dataProvider.page\"\n [(itemsPerPage)]=\"dataProvider.pageSize\"\n [totalItems]=\"dataProvider.total\"\n (onPageChange)=\"onPageChange($event)\"\n >\n </novo-pagination>\n <ng-content select=\"novo-table-actions\"></ng-content>\n </div>\n </header>\n <div class=\"novo-table-loading-overlay\" *ngIf=\"loading || dataProvider.isLoading()\">\n <novo-loading></novo-loading>\n </div>\n <novo-toast *ngIf=\"toast\" [theme]=\"toast?.theme\" [icon]=\"toast?.icon\" [message]=\"toast?.message\"></novo-toast>\n <div class=\"table-container\" *ngIf=\"!grossFlagToAvoidTheTableFromBeingUglyWhenHidingTheToast\">\n <novo-form hideHeader=\"true\" [form]=\"tableForm\">\n <table class=\"table table-striped dataTable\" [class.table-details]=\"config.hasDetails\" role=\"grid\">\n <!-- skipSortAndFilterClear is a hack right now, will be removed once Canvas is refactored -->\n <thead *ngIf=\"columns.length && (!dataProvider.isEmpty() || dataProvider.isFiltered() || skipSortAndFilterClear || editing)\">\n <tr role=\"row\">\n <!-- DETAILS -->\n <th class=\"row-actions\" *ngIf=\"config.hasDetails\">\n <novo-button\n theme=\"icon\"\n icon=\"next\"\n (click)=\"expandAllOnPage(config.expandAll)\"\n *ngIf=\"!config.expandAll\"\n data-automation-id=\"expand-all\"\n ></novo-button>\n <novo-button\n theme=\"icon\"\n icon=\"sort-desc\"\n (click)=\"expandAllOnPage(config.expandAll)\"\n *ngIf=\"config.expandAll\"\n data-automation-id=\"collapse-all\"\n ></novo-button>\n </th>\n <!-- CHECKBOX -->\n <th class=\"row-actions checkbox mass-action\" *ngIf=\"config.rowSelectionStyle === 'checkbox'\">\n <novo-checkbox\n [(ngModel)]=\"master\"\n [indeterminate]=\"pageSelected.length > 0 && pageSelected.length < pagedData.length\"\n (ngModelChange)=\"selectPage($event)\"\n data-automation-id=\"select-all-checkbox\"\n [tooltip]=\"master ? labels.deselectAll : labels.selectAllOnPage\"\n tooltipPosition=\"right\"\n ></novo-checkbox>\n </th>\n <!-- TABLE HEADERS -->\n <th\n *ngFor=\"let column of columns\"\n [ngClass]=\"{\n 'mass-action': config?.rowSelectionStyle === 'checkbox',\n actions: column?.actions?.items?.length > 0,\n preview: column?.name === 'preview'\n }\"\n [novoThOrderable]=\"column\"\n (onOrderChange)=\"onOrderChange($event)\"\n [hidden]=\"isColumnHidden(column)\"\n >\n <div class=\"th-group\" [attr.data-automation-id]=\"column.id || column.name\" *ngIf=\"!column.hideHeader\">\n <!-- LABEL & SORT ARROWS -->\n <div\n class=\"th-title\"\n [ngClass]=\"config.sorting !== false && column.sorting !== false ? 'sortable' : ''\"\n [novoThSortable]=\"config\"\n [column]=\"column\"\n (onSortChange)=\"onSortChange($event)\"\n >\n <label>{{ column.title || column.label }}</label>\n <div\n class=\"table-sort-icons\"\n tooltipPosition=\"bottom\"\n [tooltip]=\"labels.sort\"\n [ngClass]=\"column.sort || ''\"\n *ngIf=\"config.sorting !== false && column.sorting !== false\"\n >\n <i class=\"bhi-arrow-up\"></i>\n <i class=\"bhi-arrow-down\"></i>\n </div>\n </div>\n <!-- FILTER DROP-DOWN -->\n <novo-dropdown\n side=\"default\"\n *ngIf=\"config.filtering !== false && column.filtering !== false\"\n class=\"column-filters\"\n (toggled)=\"onDropdownToggled($event, column.name)\"\n parentScrollSelector=\".table-container\"\n containerClass=\"table-dropdown\"\n >\n <novo-button\n type=\"button\"\n theme=\"icon\"\n icon=\"filter\"\n tooltipPosition=\"bottom\"\n [tooltip]=\"labels.filters\"\n [class.filtered]=\"column.filter || column.filter === false\"\n (click)=\"focusInput()\"\n ></novo-button>\n <!-- FILTER OPTIONS LIST -->\n <novo-optgroup\n *ngIf=\"\n (column?.options?.length || column?.originalOptions?.length) &&\n column?.type !== 'date' &&\n toggledDropdownMap[column.name]\n \"\n >\n <novo-option class=\"filter-search\" novoInert>\n <div class=\"header\">\n <span>{{ labels.filters }}</span>\n <novo-button\n theme=\"dialogue\"\n color=\"negative\"\n icon=\"times\"\n (click)=\"onFilterClear(column)\"\n *ngIf=\"column.filter || column.filter === false\"\n >\n {{ labels.clear }}\n </novo-button>\n </div>\n <input\n type=\"text\"\n *ngIf=\"!!column.allowCustomTextOption\"\n [attr.id]=\"column.name + '-input'\"\n [novoTableFilter]=\"column\"\n (onFilterChange)=\"onFilterKeywords($event)\"\n [(ngModel)]=\"column.freetextFilter\"\n keepFilterFocused\n #filterInput\n />\n </novo-option>\n <novo-option\n [ngClass]=\"{ active: isFilterActive(column, option) }\"\n *ngFor=\"let option of column.options\"\n (click)=\"onFilterClick(column, option)\"\n [attr.data-automation-id]=\"getOptionDataAutomationId(option)\"\n >\n <span>{{ option?.label || option }}</span> <i class=\"bhi-check\" *ngIf=\"isFilterActive(column, option)\"></i>\n </novo-option>\n </novo-optgroup>\n <!-- FILTER SEARCH INPUT -->\n <novo-optgroup *ngIf=\"!(column?.options?.length || column?.originalOptions?.length) && toggledDropdownMap[column.name]\">\n <novo-option class=\"filter-search\" novoInert>\n <div class=\"header\">\n <span>{{ labels.filters }}</span>\n <novo-button theme=\"dialogue\" color=\"negative\" icon=\"times\" (click)=\"onFilterClear(column)\" *ngIf=\"column.filter\">\n {{ labels.clear }}\n </novo-button>\n </div>\n <input\n type=\"text\"\n [attr.id]=\"column.name + '-input'\"\n [novoTableFilter]=\"column\"\n (onFilterChange)=\"onFilterChange($event)\"\n [(ngModel)]=\"column.filter\"\n keepFilterFocused\n #filterInput\n />\n </novo-option>\n </novo-optgroup>\n <!-- FILTER DATE OPTIONS -->\n <novo-optgroup *ngIf=\"column?.options?.length && column?.type === 'date' && toggledDropdownMap[column.name]\">\n <novo-option class=\"filter-search\" *ngIf=\"!column.calenderShow\" novoInert>\n <div class=\"header\">\n <span>{{ labels.filters }}</span>\n <novo-button theme=\"dialogue\" color=\"negative\" icon=\"times\" (click)=\"onFilterClear(column)\" *ngIf=\"column.filter\">\n {{ labels.clear }}\n </novo-button>\n </div>\n </novo-option>\n <novo-option\n [class.active]=\"isFilterActive(column, option)\"\n *ngFor=\"let option of column.options\"\n (click)=\"onFilterClick(column, option)\"\n [keepOpen]=\"option.range\"\n [hidden]=\"column.calenderShow\"\n [attr.data-automation-id]=\"option?.label || option\"\n >\n {{ option?.label || option }}\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"isFilterActive(column, option)\">check</novo-icon>\n </novo-option>\n <novo-option class=\"calendar-container\" *ngIf=\"column.calenderShow\" keepOpen novoInert>\n <novo-stack>\n <div class=\"back-link\" (click)=\"column.calenderShow = false\">\n <i class=\"bhi-previous\"></i>{{ labels.backToPresetFilters }}\n </div>\n <novo-date-picker\n (onSelect)=\"onCalenderSelect(column, $event)\"\n [(ngModel)]=\"column.filter\"\n mode=\"range\"\n ></novo-date-picker>\n </novo-stack>\n </novo-option>\n </novo-optgroup>\n </novo-dropdown>\n </div>\n </th>\n </tr>\n </thead>\n <!-- TABLE DATA -->\n <tbody *ngIf=\"!dataProvider.isEmpty() || editing\">\n <tr\n class=\"table-selection-row\"\n *ngIf=\"config.rowSelectionStyle === 'checkbox' && showSelectAllMessage && config.selectAllEnabled\"\n data-automation-id=\"table-selection-row\"\n >\n <td colspan=\"100%\">\n {{ labels.selectedRecords(selected.length) }}\n <a (click)=\"selectAll(true)\" data-automation-id=\"all-matching-records\">{{ labels.totalRecords(dataProvider.total) }}</a>\n </td>\n </tr>\n <ng-template ngFor let-row=\"$implicit\" let-i=\"index\" [ngForOf]=\"rows\">\n <tr\n class=\"table-row\"\n [ngClass]=\"row.customClass || ''\"\n [id]=\"name + '-' + row[rowIdentifier]\"\n [attr.data-automation-id]=\"row.id\"\n (click)=\"rowClickHandler(row)\"\n [class.active]=\"row.id === activeId\"\n >\n <td class=\"row-actions\" *ngIf=\"config.hasDetails\">\n <novo-button theme=\"icon\" icon=\"next\" (click)=\"row._expanded = !row._expanded\" *ngIf=\"!row._expanded\"></novo-button>\n <novo-button theme=\"icon\" icon=\"sort-desc\" (click)=\"row._expanded = !row._expanded\" *ngIf=\"row._expanded\"></novo-button>\n </td>\n <td class=\"row-actions checkbox\" *ngIf=\"config.rowSelectionStyle === 'checkbox'\">\n <novo-checkbox\n [(ngModel)]=\"row._selected\"\n (ngModelChange)=\"rowSelectHandler(row)\"\n data-automation-id=\"select-row-checkbox\"\n ></novo-checkbox>\n </td>\n <td\n *ngFor=\"let column of columns\"\n [attr.data-automation-id]=\"column.id || column.name\"\n [class.novo-form-row]=\"editable\"\n [hidden]=\"isColumnHidden(column)\"\n >\n <novo-table-cell\n *ngIf=\"row._editing && !row._editing[column.name]\"\n [hasEditor]=\"editable\"\n [column]=\"column\"\n [row]=\"row\"\n [form]=\"getRowControlForm(i)\"\n ></novo-table-cell>\n <novo-control\n *ngIf=\"row._editing && row._editing[column.name]\"\n condensed=\"true\"\n [form]=\"getRowControlForm(i)\"\n [control]=\"row.controls[column.name]\"\n ></novo-control>\n </td>\n </tr>\n <tr\n class=\"details-row\"\n *ngIf=\"config.hasDetails\"\n [hidden]=\"!row._expanded\"\n [attr.data-automation-id]=\"'details-row-' + row.id\"\n >\n <td class=\"row-actions\"></td>\n <td [attr.colspan]=\"config.rowSelectionStyle === 'checkbox' ? columns.length + 1 : columns.length\">\n <novo-row-details [data]=\"row\" [renderer]=\"config.detailsRenderer\"></novo-row-details>\n </td>\n </tr>\n </ng-template>\n </tbody>\n <!-- NO TABLE DATA PLACEHOLDER -->\n <tbody\n class=\"table-message\"\n *ngIf=\"dataProvider.isEmpty() && !dataProvider.isFiltered() && !editing\"\n data-automation-id=\"empty-table\"\n >\n <tr>\n <td colspan=\"100%\">\n <div #emptymessage><ng-content select=\"[table-empty-message]\"></ng-content></div>\n <div class=\"table-empty-message\" *ngIf=\"emptymessage.childNodes.length == 0\">\n <h4><i class=\"bhi-search-question\"></i> {{ labels.emptyTableMessage }}</h4>\n </div>\n </td>\n </tr>\n </tbody>\n <!-- NO MATCHING RECORDS -->\n <tbody class=\"table-message\" *ngIf=\"dataProvider.isEmpty() && dataProvider.isFiltered()\" data-automation-id=\"empty-table\">\n <tr>\n <td colspan=\"100%\">\n <div #nomatchmessage><ng-content select=\"[table-no-matching-records-message]\"></ng-content></div>\n <div class=\"no-matching-records\" *ngIf=\"nomatchmessage.childNodes.length == 0\">\n <h4><i class=\"bhi-search-question\"></i> {{ labels.noMatchingRecordsMessage }}</h4>\n </div>\n </td>\n </tr>\n </tbody>\n <!-- TABLE DATA ERROR PLACEHOLDER -->\n <tbody class=\"table-message\" *ngIf=\"dataProvider.hasErrors()\" data-automation-id=\"table-errors\">\n <tr>\n <td colspan=\"100%\">\n <div #errormessage><ng-content select=\"[table-error-message]\"></ng-content></div>\n <div class=\"table-error-message\" *ngIf=\"errormessage.childNodes.length == 0\">\n <h4><i class=\"bhi-caution\"></i> {{ labels.erroredTableMessage }}</h4>\n </div>\n </td>\n </tr>\n </tbody>\n <tfoot *ngIf=\"!config.footers\" [ngClass]=\"dataProvider.length % 2 == 0 ? 'odd' : 'even'\">\n <tr>\n <td colspan=\"100%\">\n <ng-content select=\"novo-table-footer\"></ng-content>\n </td>\n </tr>\n </tfoot>\n <tfoot *ngFor=\"let footer of footers; let i = index\" class=\"novo-table-total-footer\">\n <tr>\n <td *ngFor=\"let column of columns\" [attr.data-automation-id]=\"(column.id || column.name) + '-total-' + i\">\n {{ footer[column.name] }}\n </td>\n </tr>\n </tfoot>\n </table>\n </novo-form>\n </div>\n `,\n styleUrls: ['./Table.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NovoTableElement implements DoCheck {\n @ViewChildren('filterInput', { read: ElementRef })\n filterInputs: QueryList<ElementRef>;\n\n @Input()\n config: NovoTableConfig = {};\n @Input()\n columns: Array<any> = [];\n @Input()\n theme: string;\n @Input()\n skipSortAndFilterClear: boolean = false;\n @Input()\n mode: NovoTableMode = NovoTableMode.VIEW;\n @Input()\n editable: boolean = false;\n @Input()\n rowIdentifier: string = 'id';\n @Input()\n name: string = 'table';\n\n @Output()\n onRowClick: EventEmitter<any> = new EventEmitter();\n @Output()\n onRowSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n onTableChange: EventEmitter<any> = new EventEmitter();\n\n _dataProvider: PagedArrayCollection<any>;\n _rows: Array<any> = [];\n selected: Array<any> = [];\n activeId: number = 0;\n master: boolean = false;\n expandAll: boolean = false;\n indeterminate: boolean = false;\n lastPage: number = 0;\n selectedPageCount: number = 0;\n showSelectAllMessage: boolean = false;\n currentSortColumn: any;\n pagedData: Array<any> = [];\n pageSelected: any;\n // Map to keep track of what dropdowns are toggled\n // Used to properly *ngIf the <novo-optgroup> so that the keepFilterFocused Directive\n // will properly fire the ngAfterViewInit event\n toggledDropdownMap: any = {};\n public NovoTableMode = NovoTableMode;\n public tableForm: FormGroup = new FormGroup({});\n public toast: { theme: string; icon: string; message: string };\n public footers = [];\n public grossFlagToAvoidTheTableFromBeingUglyWhenHidingTheToast: boolean = false;\n public loading: boolean = false;\n\n @Input()\n set rows(rows: Array<any>) {\n this.dataProvider = rows;\n if (rows && rows.length > 0) {\n this.setupColumnDefaults();\n }\n // this is a temporary/hacky fix until async dataloading is handled within the table\n if (!this.skipSortAndFilterClear) {\n this.clearAllSortAndFilters();\n }\n }\n\n get rows() {\n return this._rows;\n }\n\n @Input()\n set dataProvider(dp: any) {\n this._dataProvider = Array.isArray(dp) ? new PagedArrayCollection<any>(dp) : dp;\n this._dataProvider.dataChange.pipe(debounceTime(100)).subscribe((event: CollectionEvent) => {\n switch (event.type) {\n case CollectionEvent.CHANGE:\n this._rows = event.data;\n // Setup form\n this.tableForm = this.builder.group({\n rows: this.builder.array([]),\n });\n // Remove all selection on sort change if selection is on\n if (this.config.rowSelectionStyle === 'checkbox') {\n this.pagedData = event.data;\n this.pageSelected = this.pagedData.filter((r) => r._selected);\n this.rowSelectHandler();\n }\n // Find that columns we might need to sum up via the footer\n let columnsToSum = [];\n const columnSums = {};\n if (this.config.footers) {\n this.config.footers.forEach((config) => {\n columnsToSum.push(...config.columns);\n });\n // Only have unique columns, filter out duplicates\n columnsToSum = columnsToSum.filter((item, index, array) => array.indexOf(item) === index);\n }\n // Make a form for each row\n const tableFormRows = this.tableForm.controls.rows as FormArray;\n this._rows.forEach((row, index) => {\n const rowControls = [];\n row.controls = {};\n row._editing = {};\n row._expanded = this.config.expandAll;\n row.rowId = this._rows.length;\n this.columns.forEach((column) => {\n // Use the control passed or use a ReadOnlyControl so that the form has the values\n const control = column.editorConfig\n ? ControlFactory.create(column.editorType, column.editorConfig)\n : new ReadOnlyControl({ key: column.name });\n row.controls[column.name] = control;\n rowControls.push(control);\n });\n this.formUtils.setInitialValues(rowControls, row, false);\n tableFormRows.push(this.formUtils.toFormGroup(rowControls));\n // Setup the total footer if configured\n // Array of keys to total\n if (columnsToSum.length !== 0) {\n columnsToSum.forEach((column) => {\n if (Helpers.isBlank(columnSums[column])) {\n columnSums[column] = 0;\n }\n columnSums[column] += row[column];\n });\n }\n });\n if (this.mode === NovoTableMode.EDIT) {\n this.setTableEdit();\n }\n // Setup the footers (if any)\n if (this.config.footers) {\n this.footers = [];\n this.config.footers.forEach((footerConfig, footerConfigIndex) => {\n const footer = {};\n footer[footerConfig.labelColumn] = footerConfig.label;\n footerConfig.columns.forEach((column) => {\n if (footerConfig.method === 'AVG' && this._rows.length !== 0) {\n footer[column] = columnSums[column] / this._rows.length;\n } else {\n footer[column] = columnSums[column];\n }\n });\n this.footers.push(footer);\n });\n }\n break;\n default:\n break;\n }\n });\n if (this.config.paging) {\n this._dataProvider.page = this.config.paging.current;\n this._dataProvider.pageSize = this.config.paging.itemsPerPage;\n } else {\n // Paging turned off, return basically all of the data\n this._dataProvider.page = 1;\n this._dataProvider.pageSize = 500;\n }\n if (dp && dp.length > 0) {\n this.setupColumnDefaults();\n }\n this._dataProvider.refresh();\n }\n get dataProvider() {\n return this._dataProvider;\n }\n\n get editing() {\n return this.mode === NovoTableMode.EDIT;\n }\n\n get formValue() {\n return this.tableForm.getRawValue();\n }\n\n constructor(public labels: NovoLabelService, private formUtils: FormUtils, private builder: FormBuilder, private cdr: ChangeDetectorRef) {\n notify('[Deprecated]: The table is deprecated. Please migrate to novo-data-tables!');\n }\n\n onDropdownToggled(event, column): void {\n this.toggledDropdownMap[column] = event;\n this.cdr.markForCheck();\n }\n\n focusInput(): void {\n if (this.filterInputs && this.filterInputs.length) {\n this.filterInputs.forEach((filterInput) => {\n if (filterInput.nativeElement) {\n setTimeout(() => filterInput.nativeElement.focus(), 0);\n }\n });\n }\n }\n\n onPageChange(event) {\n // this.dataProvider.page = event.page;\n // this.dataProvider.pageSize = event.itemsPerPage;\n }\n\n getOptionDataAutomationId(option) {\n if (!Helpers.isBlank(option.value)) {\n return option.value;\n }\n return option;\n }\n\n setupColumnDefaults() {\n // Check columns for cell option types\n this.columns.forEach((column) => {\n if (column && column.type) {\n switch (column.type) {\n case 'date':\n // Set options based on dates if there are none\n column.options = column.options || this.getDefaultOptions(column);\n break;\n default:\n break;\n }\n }\n });\n }\n\n ngDoCheck() {\n if (this.config.paging && this.config.paging.current !== this.lastPage) {\n this.rowSelectHandler();\n this.showSelectAllMessage = false;\n }\n this.lastPage = this.config.paging ? this.config.paging.current : 1;\n }\n\n getPageStart(): number {\n return this.config.paging ? (this.dataProvider.page - 1) * this.dataProvider.pageSize : 0;\n }\n\n getPageEnd(): number {\n return this.config.paging && this.dataProvider.pageSize > -1 ? this.getPageStart() + this.dataProvider.pageSize : this.rows.length;\n }\n\n getRowControlForm(i): AbstractControl {\n const tableFormRows = this.tableForm.controls.rows as FormArray;\n return tableFormRows.controls[i];\n }\n\n onFilterClick(column, filter) {\n if (filter.range && !column.calendarShow) {\n column.calenderShow = true;\n return;\n }\n if (Array.isArray(column.filter) && column.multiple) {\n if (~column.filter.indexOf(filter)) {\n // Remove filter\n column.filter.splice(column.filter.indexOf(filter), 1);\n if (filter.range) {\n column.calenderShow = false;\n }\n\n if (column.filter.length === 0) {\n column.filter = null;\n }\n } else {\n // Add filter\n column.filter.push(filter);\n }\n } else if (column.multiple) {\n column.filter = new Array();\n column.filter.push(Helpers.isBlank(filter.value) ? filter : filter.value);\n } else {\n column.filter = Helpers.isBlank(filter.value) ? filter : filter.value;\n }\n this.onFilterChange();\n }\n\n onFilterClear(column: any): void {\n setTimeout(() => {\n column.filter = null;\n column.freetextFilter = null;\n this.onFilterChange();\n if (column.originalOptions) {\n column.options = column.originalOptions;\n }\n });\n }\n\n clearAllSortAndFilters() {\n if (this.config.filtering) {\n this.columns.forEach((column) => {\n column.filter = null;\n column.sort = null;\n });\n }\n }\n\n /**\n * @description This method updates the row data to reflect the active filters.\n */\n onFilterChange(event?: Event) {\n if (this.config.filtering) {\n // Array of filters\n const filters = this.columns.filter((col) => !Helpers.isEmpty(col.filter));\n if (filters.length) {\n let query = {};\n for (const column of filters) {\n if (Helpers.isFunction(column.match)) {\n query[column.name] = (value, record) => {\n return column.match(record, column.filter);\n };\n } else if (column.preFilter && Helpers.isFunction(column.preFilter)) {\n query = Object.assign({}, query, column.preFilter(this.escapeCharacters(column.filter)));\n } else if (Array.isArray(column.filter)) {\n // The filters are an array (multi-select), check value\n let options = column.filter;\n // We have an array of {value: '', labels: ''}\n if (options[0].value || options[0].label) {\n options = column.filter.map((opt) => opt.value);\n }\n query[column.name] = { any: options };\n } else if (column.type && column.type === 'date') {\n if (column.filter.startDate && column.filter.endDate) {\n query[column.name] = {\n min: DateUtil.startOfDay(column.filter.startDate),\n max: DateUtil.startOfDay(DateUtil.addDays(DateUtil.startOfDay(column.filter.endDate), 1)),\n };\n } else {\n query[column.name] = {\n min: column.filter.min ? DateUtil.addDays(startOfToday(), column.filter.min) : startOfToday(),\n max: column.filter.max ? DateUtil.addDays(startOfTomorrow(), column.filter.max) : startOfTomorrow(),\n };\n }\n } else {\n query[column.name] = column.filter;\n }\n }\n if (Helpers.isFunction(this.config.filtering)) {\n this.config.filtering(query);\n } else {\n this._dataProvider.filter = query;\n }\n } else {\n this._dataProvider.filter = {};\n }\n // Trickle down to keep sort\n // this.onSortChange(this.currentSortColumn);\n this.fireTableChangeEvent();\n\n // If paging, reset page\n if (this.config.paging) {\n this.config.paging.current = 1;\n }\n // Remove all selection on sort change if selection is on\n if (this.config.rowSelectionStyle === 'checkbox') {\n this.selectAll(false);\n }\n }\n }\n\n escapeCharacters(filter) {\n if (typeof filter === 'string') {\n return filter.replace(/'/g, \"''\");\n }\n return filter;\n }\n\n isFilterActive(column, filter): boolean {\n // TODO: This needs to be refactored\n let isActive = false;\n if (column && !Helpers.isBlank(column.filter) && !Helpers.isBlank(filter)) {\n if (Array.isArray(column.filter)) {\n if (typeof filter !== 'string') {\n isActive = column.filter.some((item) => {\n return item.label === filter.label;\n });\n } else {\n isActive = column.filter.includes(filter);\n }\n } else {\n if (typeof column.filter === typeof filter) {\n isActive = column.filter === filter;\n } else {\n isActive = column.filter === filter.value;\n }\n }\n }\n return isActive;\n }\n\n onSortChange(column) {\n this.currentSortColumn = column;\n const sortedColumns: any = this.columns.filter((thisColumn) => {\n return thisColumn.sort && thisColumn !== this.currentSortColumn;\n });\n for (const sortedColumn of sortedColumns) {\n sortedColumn.sort = null;\n }\n\n if (column) {\n if (Helpers.isFunction(this.config.sorting)) {\n this.config.sorting();\n } else if (Helpers.isFunction(column.preSort)) {\n this._dataProvider.sort = [].concat(column.preSort(column));\n } else {\n this._dataProvider.sort = [{ field: column.compare || column.name, reverse: column.sort === 'desc' }];\n }\n }\n\n // Fire table change event\n // this.fireTableChangeEvent();\n\n // If paging, reset page\n if (this.config.paging) {\n this.config.paging.current = 1;\n }\n\n // Remove all selection on sort change if selection is on\n if (this.config.rowSelectionStyle === 'checkbox') {\n this.selectAll(false);\n }\n }\n\n fireTableChangeEvent() {\n // Construct a table change object\n const onTableChange: any = {};\n const filters = this.columns.filter((col) => col.filter && col.filter.length);\n onTableChange.filter = filters.length ? filters : false;\n onTableChange.sort = this.currentSortColumn ? this.currentSortColumn : false;\n onTableChange.rows = this.rows;\n\n // Emit event\n this.onTableChange.emit(onTableChange);\n }\n\n findColumnIndex(value) {\n for (let i = 0; i < this.columns.length; i += 1) {\n if (this.columns[i].name === value) {\n return i;\n }\n }\n return null;\n }\n\n onOrderChange(event) {\n const oldIndex = this.findColumnIndex(event.first.name);\n const newIndex = this.findColumnIndex(event.second.name);\n this.columns.splice(newIndex, 0, this.columns.splice(oldIndex, 1)[0]);\n this.onSortChange(this.currentSortColumn);\n }\n\n expandAllOnPage(expanded) {\n this.config.expandAll = !expanded;\n for (const row of this.dataProvider.list) {\n row._expanded = this.config.expandAll;\n }\n }\n\n selectPage(data?: any) {\n if (!this.master) {\n this.selectAll(false);\n // Only show the select all message when there is only one new page selected at a time\n this.selectedPageCount = this.selectedPageCount > 0 ? this.selectedPageCount - 1 : 0;\n this.showSelectAllMessage = false;\n } else {\n this.indeterminate = false;\n // this.pagedData = this.rows.slice(this.getPageStart(), this.getPageEnd());\n for (const row of this.pagedData) {\n row._selected = this.master;\n }\n this.selected = this.dataProvider.list.filter((r) => r._selected);\n this.pageSelected = this.pagedData.filter((r) => r._selected);\n this.emitSelected(this.selected);\n // Only show the select all message when there is only one new page selected at a time\n this.selectedPageCount++;\n this.showSelectAllMessage = this.selectedPageCount === 1 && this.selected.length !== this.dataProvider.total;\n }\n this.cdr.detectChanges();\n }\n\n selectAll(value) {\n this.master = value;\n this.indeterminate = false;\n for (const row of this.dataProvider.list) {\n row._selected = value;\n }\n this.selected = value ? this.dataProvider.list : [];\n this.showSelectAllMessage = false;\n this.selectedPageCount = this.selectedPageCount > 0 ? this.selectedPageCount - 1 : 0;\n this.rowSelectHandler();\n }\n\n rowSelectHandler(data?: any) {\n // this.pagedData = this.rows.slice(this.getPageStart(), this.getPageEnd());\n this.pageSelected = this.pagedData.filter((r) => r._selected);\n this.selected = this.dataProvider.list.filter((r) => r._selected);\n if (this.pageSelected.length === 0) {\n this.master = false;\n this.indeterminate = false;\n } else if (this.pageSelected.length === this.pagedData.length) {\n this.master = true;\n this.indeterminate = false;\n } else {\n this.master = false;\n this.indeterminate = true;\n\n // Breaking the selected page count\n this.showSelectAllMessage = false;\n this.selectedPageCount = this.selectedPageCount > 0 ? this.selectedPageCount - 1 : 0;\n }\n this.emitSelected(this.selected);\n }\n\n emitSelected(selected) {\n this.onRowSelect.emit({ length: selected.length, selected });\n }\n\n rowClickHandler(row) {\n if (this.config.rowSelect) {\n this.activeId = row.id || 0;\n this.onRowClick.emit(row);\n }\n }\n\n getDefaultOptions(column) {\n // TODO - needs to come from label service - https://github.com/bullhorn/novo-elements/elements/issues/116\n const opts: any[] = [\n { label: this.labels.past1Day, min: -1, max: 0 },\n { label: this.labels.past7Days, min: -7, max: 0 },\n { label: this.labels.past30Days, min: -30, max: 0 },\n { label: this.labels.past90Days, min: -90, max: 0 },\n { label: this.labels.past1Year, min: -366, max: 0 },\n { label: this.labels.next1Day, min: 0, max: 1 },\n { label: this.labels.next7Days, min: 0, max: 7 },\n { label: this.labels.next30Days, min: 0, max: 30 },\n { label: this.labels.next90Days, min: 0, max: 90 },\n { label: this.labels.next1Year, min: 0, max: 366 },\n ];\n\n if (column && column.range) {\n opts.push({\n label: this.labels.customDateRange,\n range: true,\n });\n }\n return opts;\n }\n\n onCalenderSelect(column, event): void {\n setTimeout(() => {\n if (event.startDate && event.endDate) {\n this.onFilterChange();\n }\n }, 10);\n }\n\n onFilterKeywords(config) {\n if (config && config.filtering && config.filtering.freetextFilter) {\n const filterKeywords = config.filtering.freetextFilter.toLowerCase();\n if (!config.filtering.originalOptions) {\n config.filtering.originalOptions = config.filtering.options;\n }\n const newOptions = config.filtering.originalOptions.filter((option) => {\n let value = option && option.label ? option.label : option;\n value = value.toLowerCase() ? value.toLowerCase() : value;\n if (value === filterKeywords) {\n return true;\n } else if (~value.indexOf(filterKeywords) || ~value.indexOf(filterKeywords)) {\n return true;\n }\n return false;\n });\n config.filtering.options = newOptions;\n config.filtering.filter = config.filtering.freetextFilter;\n } else {\n config.filtering.options = config.filtering.originalOptions;\n }\n this.onFilterChange();\n }\n\n /**\n * @description Sets the Table into EDIT mode, based on the row/column passed you can enter in a few states\n * (1) setTableEdit() - don't pass any to put the FULL table into edit mode\n * (2) setTableEdit(1) - pass only row to put that FULL row of the table into edit mode\n * (3) setTableEdit(1, 1) - pass row and column to put that column of the row of the table into edit mode\n * @memberOf NovoTableElement\n */\n setTableEdit(rowNumber?: number, columnNumber?: number): void {\n this.mode = NovoTableMode.EDIT;\n this._dataProvider.edit();\n this._rows.forEach((row, rowIndex) => {\n row._editing = row._editing || {};\n this.columns.forEach((column, columnIndex) => {\n if (column.viewOnly) {\n row._editing[column.name] = false;\n } else if (Helpers.isEmpty(rowNumber) && Helpers.isEmpty(columnNumber)) {\n row._editing[column.name] = true;\n } else if (!Helpers.isEmpty(rowNumber) && rowIndex === Number(rowNumber) && Helpers.isEmpty(columnNumber)) {\n row._editing[column.name] = true;\n } else if (\n !Helpers.isEmpty(rowNumber) &&\n !Helpers.isEmpty(columnNumber) &&\n rowIndex === Number(rowNumber) &&\n columnIndex === Number(columnNumber)\n ) {\n row._editing[column.name] = true;\n } else {\n row._editing[column.name] = false;\n }\n });\n });\n }\n\n /**\n * @description Leaves edit mode for the Table and puts everything back to VIEW only\n * @memberOf NovoTableElement\n * @param cancel - whether or not to save data or undo\n */\n private leaveEditMode(cancel: boolean): void {\n this.mode = NovoTableMode.VIEW;\n this._rows.forEach((row) => {\n row._editing = row._editing || {};\n this.columns.forEach((column) => {\n row._editing[column.name] = false;\n });\n });\n if (cancel) {\n this._dataProvider.undo();\n } else {\n this._dataProvider.commit();\n }\n this.hideToastMessage();\n }\n\n /**\n * @description Adds a new row into the table to be edited, can be called from a local reference of the table in your template\n * @memberOf NovoTableElement\n */\n addEditableRow(defaultValue: any = {}): void {\n const tableFormRows = this.tableForm.controls.rows as FormArray;\n const row: any = {};\n const rowControls = [];\n row.controls = {};\n row._editing = {};\n row.rowId = this._rows.length + 1;\n this.columns.forEach((column) => {\n // Use the control passed or use a ReadOnlyControl so that the form has the values\n const control = column.editorConfig\n ? ControlFactory.create(column.editorType, column.editorConfig)\n : new ReadOnlyControl({ key: column.name });\n control.value = null; // remove copied column value\n row.controls[column.name] = control;\n row._editing[column.name] = !column.viewOnly;\n rowControls.push(control);\n });\n this.formUtils.setInitialValues(rowControls, defaultValue, false);\n tableFormRows.push(this.formUtils.toFormGroup(rowControls));\n this._rows.push(row);\n }\n\n /**\n * @description Validates the Form inside of the Table, if there are errors it will display/return the errors for each row.\n * If there are no errors, then it will return ONLY the changed data for each row, the data returned will be in the form:\n * { id: ID_OF_RECORD, key: value } -- data that was updated\n * { id: undefined, key: value } -- data that was added\n * @memberOf NovoTableElement\n */\n validateAndGetUpdatedData(): { changed?: any[]; errors?: { errors: any; row: any; index: number }[] } {\n if (this.tableForm && this.tableForm.controls && this.tableForm.controls.rows) {\n const changedRows = [];\n const errors = [];\n // Go over the FormArray's controls\n (this.tableForm.controls.rows as FormArray).controls.forEach((formGroup: FormGroup, index: number) => {\n let changedRow = null;\n let error = null;\n // Go over the form group controls\n Object.keys(formGroup.controls).forEach((key: string) => {\n const control = formGroup.controls[key];\n // Handle value changing\n if (control && control.dirty && !control.errors) {\n if (!changedRow) {\n // Append the ID, so we have some key to save against\n changedRow = {};\n if (this._rows[index].id) {\n changedRow.id = this._rows[index].id;\n }\n }\n // If dirty, grab value off the form\n changedRow[key] = this.tableForm.getRawValue().rows[index][key];\n // Set value back to row (should be already done via the server call, but do it anyway)\n this._rows[index][key] = changedRow[key];\n } else if (control && control.errors) {\n // Handle errors\n if (!error) {\n error = {};\n }\n error[key] = control.errors;\n control.markAsDirty();\n control.markAsTouched();\n }\n });\n if (changedRow) {\n changedRows.push(changedRow);\n }\n if (error) {\n errors.push({ errors: error, row: this._rows[index], index });\n }\n });\n // Return errors if any, otherwise return the changed rows\n if (errors.length === 0) {\n return { changed: changedRows };\n }\n return { errors };\n }\n }\n\n /**\n * @description Refresh the data provider and leave edit mode\n * @memberOf NovoTableElement\n */\n cancelEditing(): void {\n this.leaveEditMode(true);\n }\n\n /**\n * @description Refresh the data provider and leave edit mode\n * @memberOf NovoTableElement\n */\n saveChanges(): void {\n this.leaveEditMode(false);\n }\n\n /**\n * @description Displays a toast message inside of the table\n * @memberOf NovoTableElement\n */\n displayToastMessage(toast: { icon: string; theme: string; message: string }, hideDelay?: number): void {\n this.loading = false;\n this.toast = toast;\n if (hideDelay) {\n setTimeout(() => this.hideToastMessage(), hideDelay);\n }\n }\n\n /**\n * @description Force hide the toast message\n * @memberOf NovoTableElement\n */\n hideToastMessage(): void {\n this.toast = null;\n // Hack to make the table display properly after hiding the toast\n this.grossFlagToAvoidTheTableFromBeingUglyWhenHidingTheToast = true;\n setTimeout(() => {\n this.grossFlagToAvoidTheTableFromBeingUglyWhenHidingTheToast = false;\n });\n }\n\n /**\n * @description display the loading overlay on the table\n * @memberOf NovoTableElement\n */\n toggleLoading(show: boolean): void {\n this.loading = show;\n }\n\n /**\n * @description hide a column in edit or view mode\n * @memberOf NovoTableElement\n */\n isColumnHidden(column: any): boolean {\n return this.editing ? !!column.hideColumnOnEdit : !!column.hideColumnOnView;\n }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { IMaskDirectiveModule } from 'angular-imask';\n// Vendor\nimport { TextMaskModule } from 'angular2-text-mask';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCheckboxModule } from 'novo-elements/elements/checkbox';\nimport { NovoCommonModule, NovoOptionModule } from 'novo-elements/elements/common';\nimport { NovoDatePickerModule } from 'novo-elements/elements/date-picker';\nimport { NovoDropdownModule } from 'novo-elements/elements/dropdown';\nimport { NovoFlexModule } from 'novo-elements/elements/flex';\nimport { NovoFormExtrasModule } from 'novo-elements/elements/form';\nimport { NovoFormModule } from 'novo-elements/elements/form';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoLoadingModule } from 'novo-elements/elements/loading';\nimport { NovoToastModule } from 'novo-elements/elements/toast';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\nimport { NovoTableExtrasModule } from './extras/TableExtras.module';\nimport { NovoTableElement } from './Table';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NovoFormModule,\n NovoTableExtrasModule,\n NovoToastModule,\n NovoButtonModule,\n NovoTooltipModule,\n NovoDropdownModule,\n NovoLoadingModule,\n NovoDatePickerModule,\n NovoFormExtrasModule,\n NovoCheckboxModule,\n TextMaskModule,\n IMaskDirectiveModule,\n NovoOptionModule,\n NovoCommonModule,\n NovoFlexModule,\n NovoIconModule,\n ],\n declarations: [NovoTableElement],\n exports: [NovoTableElement],\n})\nexport class NovoTableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3","i4","i2","i2.DateCell","i4.Pagination","i7","i9","i14.TableCell","i15.RowDetails","i16","i18.ThOrderable","i19.ThSortable","i20.NovoTableKeepFilterFocus","i21.TableFilter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"novo-elements-elements-table.mjs","sources":["../../../projects/novo-elements/src/elements/table/extras/base-renderer/BaseRenderer.ts","../../../projects/novo-elements/src/elements/table/extras/date-cell/DateCell.ts","../../../projects/novo-elements/src/elements/table/extras/dropdown-cell/DropdownCell.ts","../../../projects/novo-elements/src/elements/table/extras/keep-filter-focus/KeepFilterFocus.ts","../../../projects/novo-elements/src/elements/table/extras/pagination/Pagination.ts","../../../projects/novo-elements/src/elements/table/extras/percentage-cell/PercentageCell.ts","../../../projects/novo-elements/src/elements/table/extras/row-details/RowDetails.ts","../../../projects/novo-elements/src/elements/table/extras/table-actions/TableActions.ts","../../../projects/novo-elements/src/elements/table/extras/table-cell/TableCell.ts","../../../projects/novo-elements/src/elements/table/extras/table-filter/TableFilter.ts","../../../projects/novo-elements/src/elements/table/extras/table-footer/TableFooter.ts","../../../projects/novo-elements/src/elements/table/extras/table-header/TableHeader.ts","../../../projects/novo-elements/src/elements/table/extras/th-orderable/ThOrderable.ts","../../../projects/novo-elements/src/elements/table/extras/th-sortable/ThSortable.ts","../../../projects/novo-elements/src/elements/table/extras/TableExtras.module.ts","../../../projects/novo-elements/src/elements/table/Table.ts","../../../projects/novo-elements/src/elements/table/Table.module.ts","../../../projects/novo-elements/src/elements/table/novo-elements-elements-table.ts"],"sourcesContent":["export class BaseRenderer {\n _data: any = {};\n _value: any = '';\n meta: any = {};\n\n get data() {\n return this._data;\n }\n\n set data(d: any) {\n this._data = d;\n }\n\n get value() {\n return this._value;\n }\n\n set value(v: any) {\n this._value = v;\n }\n}\n","// NG2\nimport { Component, Input } from '@angular/core';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BaseRenderer } from '../base-renderer';\n\n@Component({\n selector: 'date-cell',\n template: `\n <div class=\"date-cell\">\n <label>{{ getFormattedDate() }}</label>\n </div>\n `,\n})\nexport class DateCell extends BaseRenderer {\n @Input()\n set value(v: any) {\n this._value = v;\n }\n\n get value() {\n return this._value;\n }\n\n constructor(public labels: NovoLabelService) {\n super();\n }\n\n public getFormattedDate(): string {\n return this.labels.formatDate(this.value);\n }\n}\n","// NG2\nimport { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\n// APP\nimport { BaseRenderer } from '../base-renderer';\n\nexport interface INovoDropdownCellConfig {\n category?: string;\n callback?: Function;\n options: ({ label?: string; value?: string; callback?: Function } | string)[];\n}\n\n@Component({\n selector: 'novo-dropdown-cell',\n template: `\n <novo-dropdown parentScrollSelector=\".table-container\" containerClass=\"novo-table-dropdown-cell\">\n <novo-button type=\"button\" theme=\"secondary\" icon=\"collapse\" inverse>\n <span data-automation-id=\"novo-dropdown-cell-value\">{{ value }}</span>\n </novo-button>\n <list>\n <ng-container *ngFor=\"let config of meta.dropdownCellConfig; let i = index\">\n <dropdown-item-header *ngIf=\"config.category\">{{ config.category }}</dropdown-item-header>\n <item\n *ngFor=\"let option of config.options\"\n (action)=\"onClick(config, option, option.value)\"\n [class.active]=\"(option || option.value) === value\"\n >\n <span [attr.data-automation-id]=\"option.label || option\">{{ option.label || option }}</span>\n <i *ngIf=\"(option || option.value) === value\" class=\"bhi-check\"></i>\n </item>\n <hr *ngIf=\"i < meta.dropdownCellConfig.length - 1\" />\n </ng-container>\n </list>\n </novo-dropdown>\n `,\n styleUrls: ['./DropdownCell.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NovoDropdownCell extends BaseRenderer implements OnInit {\n @Input()\n meta: any;\n\n @Input()\n set value(v: any) {\n this._value = v;\n }\n\n get value() {\n return this._value;\n }\n\n public ngOnInit(): void {\n // Check for and fix bad config\n if (!this.meta.dropdownCellConfig) {\n throw new Error('Missing \"dropdownCellConfig\" on the column setup');\n }\n }\n\n public onClick(config, option, value): void {\n const callback = option.callback || config.callback;\n callback(this.data, value || option);\n }\n}\n","// NG2\nimport { AfterViewInit, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[keepFilterFocused]',\n})\nexport class NovoTableKeepFilterFocus implements AfterViewInit {\n constructor(private element: ElementRef) {}\n\n ngAfterViewInit() {\n this.element.nativeElement.focus();\n }\n}\n","// NG2\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\n\ninterface Page {\n num: number;\n text: string;\n active: boolean;\n}\n@Component({\n selector: 'novo-pagination',\n template: `\n <ng-container *ngIf=\"rowOptions.length > 1\">\n <h5 class=\"rows\">{{ label }}</h5>\n <novo-select\n class=\"table-pagination-select\"\n [options]=\"rowOptions\"\n [placeholder]=\"labels.select\"\n [(ngModel)]=\"itemsPerPage\"\n (onSelect)=\"onPageSizeChanged($event)\"\n data-automation-id=\"pager-select\"\n ></novo-select>\n <span class=\"spacer\"></span>\n </ng-container>\n <ul class=\"pager\" data-automation-id=\"pager\">\n <li class=\"page\" (click)=\"selectPage(page - 1)\" [ngClass]=\"{ disabled: noPrevious() }\">\n <i class=\"bhi-previous\" data-automation-id=\"pager-previous\"></i>\n </li>\n <li\n class=\"page\"\n [ngClass]=\"{ active: p.active }\"\n [class.disabled]=\"disablePageSelection\"\n *ngFor=\"let p of pages\"\n (click)=\"selectPage(p.num, $event)\"\n >\n {{ p.text }}\n </li>\n <li class=\"page\" (click)=\"selectPage(page + 1)\" [ngClass]=\"{ disabled: noNext() }\">\n <i class=\"bhi-next\" data-automation-id=\"pager-next\"></i>\n </li>\n </ul>\n `,\n styleUrls: ['./Pagination.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class Pagination implements OnInit, OnChanges {\n @Input()\n page: number;\n @Input()\n totalItems: number;\n @Input()\n itemsPerPage = 10;\n @Input()\n rowOptions;\n @Input()\n label: string;\n @Input()\n get disablePageSelection(): boolean {\n return this.pageSelectDisabled;\n }\n set disablePageSelection(val: boolean) {\n this.pageSelectDisabled = coerceBooleanProperty(val);\n }\n @Output()\n pageChange = new EventEmitter();\n @Output()\n itemsPerPageChange = new EventEmitter();\n @Output()\n onPageChange = new EventEmitter();\n\n public pageSelectDisabled: boolean;\n maxPagesDisplayed = 5;\n totalPages: number;\n pages: Array<Page>;\n\n constructor(public labels: NovoLabelService) {}\n\n ngOnInit() {\n this.label = this.label || this.labels.itemsPerPage;\n this.rowOptions = this.rowOptions || this.getDefaultRowOptions();\n }\n\n ngOnChanges(changes?: SimpleChanges) {\n this.page = this.page || 1;\n this.totalPages = this.calculateTotalPages();\n this.pages = this.getPages(this.page, this.totalPages);\n }\n\n getDefaultRowOptions() {\n return [\n { value: 10, label: '10' },\n { value: 25, label: '25' },\n { value: 50, label: '50' },\n { value: 100, label: '100' },\n ];\n }\n\n onPageSizeChanged(event) {\n this.page = 1;\n this.itemsPerPage = event.selected;\n this.totalPages = this.calculateTotalPages();\n this.pages = this.getPages(this.page, this.totalPages);\n this.pageChange.emit(this.page);\n this.itemsPerPageChange.emit(this.itemsPerPage);\n this.onPageChange.emit({\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n });\n }\n\n selectPage(page: number, event?: MouseEvent) {\n if (event) {\n event.preventDefault();\n }\n\n this.page = page;\n this.pages = this.getPages(this.page, this.totalPages);\n this.pageChange.emit(this.page);\n this.onPageChange.emit({\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n });\n }\n\n noPrevious() {\n return this.page === 1;\n }\n\n noNext() {\n return this.page === this.totalPages;\n }\n\n // Create page object used in template\n makePage(num: number, text: string, isActive: boolean) {\n return { num, text, active: isActive } as Page;\n }\n\n getPages(currentPage: number, totalPages: number) {\n const pages: Array<Page> = [];\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n const isMaxSized = this.maxPagesDisplayed < totalPages;\n\n // recompute if maxPagesDisplayed\n if (isMaxSized) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(this.maxPagesDisplayed / 2), 1);\n endPage = startPage + this.maxPagesDisplayed - 1;\n\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - this.maxPagesDisplayed + 1;\n }\n }\n\n // Add page number links\n for (let num = startPage; num <= endPage; num++) {\n const page = this.makePage(num, num.toString(), num === currentPage);\n pages.push(page);\n }\n return pages;\n }\n\n calculateTotalPages() {\n const totalPages = this.itemsPerPage < 1 ? 1 : Math.ceil(this.totalItems / this.itemsPerPage);\n return Math.max(totalPages || 0, 1);\n }\n}\n","// NG2\nimport { Component } from '@angular/core';\n// APP\nimport { BaseRenderer } from '../base-renderer';\n\n@Component({\n selector: 'percentage-cell',\n template: ` <div class=\"percentage\" *ngIf=\"value || value === 0\">{{ value | percent: '1.0-2' }}</div> `,\n})\nexport class PercentageCell extends BaseRenderer {}\n","// NG2\nimport { Component, ComponentRef, ElementRef, Input, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\n// APP\nimport { ComponentUtils } from 'novo-elements/services';\nimport { BaseRenderer } from './../base-renderer';\n\n@Component({\n selector: 'novo-row-details',\n template: ` <span #container></span> <span>{{ value }}</span> `,\n})\nexport class RowDetails implements OnInit {\n @ViewChild('container', { read: ViewContainerRef, static: true })\n container: ViewContainerRef;\n\n @Input()\n data: any;\n @Input()\n renderer: any;\n\n value: any = '';\n\n constructor(private element: ElementRef, private componentUtils: ComponentUtils) {}\n\n ngOnInit() {\n if (this.renderer) {\n if (this.renderer.prototype instanceof BaseRenderer) {\n const componentRef: ComponentRef<RowDetails> = this.componentUtils.append(this.renderer, this.container);\n componentRef.instance.data = this.data;\n } else {\n this.value = this.renderer(this.data);\n }\n } else {\n // this.value = this.row[this.column.name];\n }\n }\n}\n","// NG2\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'novo-table-actions',\n template: '<ng-content></ng-content>',\n})\nexport class NovoTableActionsElement {}\n","// NG2\nimport { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n// Vendor\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n// APP\nimport { ComponentUtils } from 'novo-elements/services';\nimport { BaseRenderer } from './../base-renderer';\n\n@Component({\n selector: 'novo-table-cell',\n template: `\n <div [ngSwitch]=\"column._type\">\n <span #container></span>\n <date-cell *ngSwitchCase=\"'date'\" [value]=\"value\"></date-cell>\n <a *ngSwitchCase=\"'link'\" (click)=\"onClick($event)\">{{ value }}</a> <span *ngSwitchDefault>{{ value }}</span>\n </div>\n `,\n})\nexport class TableCell implements OnInit, OnDestroy {\n @ViewChild('container', { read: ViewContainerRef, static: true })\n container: ViewContainerRef;\n\n @Input()\n column: any;\n @Input()\n row: any;\n @Input()\n form: FormGroup;\n @Input()\n hasEditor: boolean;\n\n public value: any = '';\n private valueChangeSubscription: any;\n\n constructor(private element: ElementRef, private componentUtils: ComponentUtils) {\n this.element = element;\n this.componentUtils = componentUtils;\n }\n\n ngOnInit() {\n this.column._type = this.column.type || 'text';\n if (this.column.renderer) {\n if (this.column.renderer.prototype instanceof BaseRenderer) {\n this.column._type = 'custom';\n const componentRef = this.componentUtils.append(this.column.renderer, this.container) as any;\n componentRef.instance.meta = this.column;\n componentRef.instance.data = this.row;\n componentRef.instance.value = this.form && this.hasEditor ? this.form.getRawValue()[this.column.name] : this.row[this.column.name];\n // TODO - save ref to this and update in the valueChanges below!!\n } else {\n // TODO - wtf to do here?\n this.value = this.column.renderer(this.row);\n }\n } else {\n this.value = this.form && this.hasEditor ? this.form.getRawValue()[this.column.name] : this.row[this.column.name];\n }\n\n if (this.form && this.hasEditor) {\n this.valueChangeSubscription = this.form.valueChanges.pipe(debounceTime(300), distinctUntilChanged()).subscribe((value) => {\n this.value = value[this.column.name];\n });\n }\n }\n\n ngOnDestroy() {\n if (this.valueChangeSubscription) {\n this.valueChangeSubscription.unsubscribe();\n }\n }\n\n onClick(event) {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n if (this.column.onClick) {\n this.column.onClick(this.row);\n }\n }\n}\n","// NG2\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { Helpers, Key } from 'novo-elements/utils';\n\n@Directive({\n selector: '[novoTableFilter]',\n})\nexport class TableFilter implements OnInit, OnChanges {\n @Input('novoTableFilter')\n config: any;\n @Output()\n onFilterChange: EventEmitter<any> = new EventEmitter();\n\n filterThrottle: any;\n\n constructor(private element: ElementRef, private renderer: Renderer2) {\n this.element = element;\n this.renderer = renderer;\n }\n\n ngOnInit() {\n this.ngOnChanges();\n }\n\n ngOnChanges(changes?: SimpleChanges) {\n let label = '';\n if (this.config.freetextFilter) {\n label = this.config.freetextFilter;\n } else if (this.config.filter) {\n label = this.config.filter;\n }\n this.renderer.setProperty(this.element, 'value', label);\n }\n\n @HostListener('keydown', ['$event'])\n public onChangeFilter(event: KeyboardEvent) {\n clearTimeout(this.filterThrottle);\n if (Key.Enter === event.key) {\n this.config.filter = (event.target as any).value;\n this.onFilterChange.emit({ filtering: this.config });\n } else {\n this.filterThrottle = setTimeout(() => {\n this.config.filter = (event.target as any).value;\n this.onFilterChange.emit({ filtering: this.config });\n }, 300);\n }\n }\n\n @HostListener('click', ['$event'])\n public onClick(event) {\n Helpers.swallowEvent(event);\n }\n}\n","// NG2\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'novo-table-footer',\n template: '<ng-content></ng-content>',\n styleUrls: ['./table-footer.scss'],\n})\nexport class NovoTableFooterElement {}\n","// NG2\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'novo-table-header',\n template: '<ng-content></ng-content>',\n styleUrls: ['./table-header.scss'],\n})\nexport class NovoTableHeaderElement {}\n","// NG2\nimport { Directive, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core';\n// App\nimport { Helpers } from 'novo-elements/utils';\n\n@Directive({\n selector: '[novoThOrderable]',\n host: {\n '(dragstart)': 'onDragStart($event)',\n '(dragover)': 'onDragOver($event)',\n '(dragenter)': 'onDragEnter($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(dragend)': 'onDragEnd($event)',\n '(drop)': 'onDrop($event)',\n },\n})\nexport class ThOrderable implements OnInit {\n @Input('novoThOrderable')\n column: any;\n @Output()\n onOrderChange: EventEmitter<any> = new EventEmitter();\n\n table: any;\n clone: any;\n target: any;\n\n constructor(private element: ElementRef) {\n this.element = element;\n }\n\n get index() {\n let index: number = null;\n if (this.element.nativeElement && this.element.nativeElement.parentNode) {\n const children: Array<any> = Array.prototype.slice.call(this.element.nativeElement.parentNode.children);\n index = children.indexOf(this.element.nativeElement);\n }\n return index;\n }\n\n ngOnInit() {\n if (this.column.ordering) {\n this.element.nativeElement.setAttribute('draggable', true);\n this.table = this.findTable(this.element.nativeElement);\n }\n }\n\n onDragStart(event?: any) {\n if (this.column.ordering) {\n this.element.nativeElement.classList.add('dragging');\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', JSON.stringify(this.column));\n\n this.clone = this.table.cloneNode(true);\n this.clone.style.position = 'absolute';\n this.clone.style.left = '100%';\n this.clone.style.width = '150px';\n this.deleteColumns(this.clone);\n document.body.appendChild(this.clone);\n event.dataTransfer.setDragImage(this.clone, 75, 30);\n }\n }\n\n deleteColumns(table: { rows: Array<any>; deleteRow: Function }) {\n // TODO: `table` should be immutable and this method should return the modified data to its caller\n if (table.rows.length > 0) {\n const allRows = table.rows;\n for (let i = 0; i < allRows.length; i++) {\n if (i > 10) {\n table.deleteRow(-1);\n } else {\n const cellLength = allRows[i].cells.length;\n for (let c = 0; c < cellLength; c++) {\n if (c < this.index) {\n allRows[i].deleteCell(0);\n } else if (c > this.index) {\n allRows[i].deleteCell(-1);\n }\n }\n }\n }\n }\n }\n\n findTable(start) {\n let htmlElementNode = start;\n while (htmlElementNode) {\n htmlElementNode = htmlElementNode.parentNode;\n if (htmlElementNode && htmlElementNode.tagName.toLowerCase() === 'table') {\n return htmlElementNode;\n }\n }\n return undefined;\n }\n\n onDrag(event?: any) {\n Helpers.swallowEvent(event);\n return false;\n }\n\n onDragEnd(event?: any) {\n Helpers.swallowEvent(event);\n this.element.nativeElement.classList.remove('over');\n this.element.nativeElement.classList.remove('dragging');\n document.body.removeChild(this.clone);\n return false;\n }\n\n onDrop(event?: any) {\n Helpers.swallowEvent(event);\n this.element.nativeElement.classList.remove('over');\n const data = JSON.parse(event.dataTransfer.getData('text/plain'));\n\n this.onOrderChange.emit({\n first: data,\n second: this.column,\n });\n\n return false;\n }\n\n onDragOver(event: { preventDefault: Function; dataTransfer: { dropEffect: string }; stopPropagation: Function }): boolean {\n Helpers.swallowEvent(event);\n event.dataTransfer.dropEffect = 'move';\n return false;\n }\n\n onDragEnter(event: any) {\n this.element.nativeElement.classList.add('over');\n this.target = event.target;\n }\n\n onDragLeave(event?: any) {\n this.element.nativeElement.classList.remove('over');\n }\n}\n","// NG2\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\n\n@Directive({\n selector: '[novoThSortable]',\n host: {\n '(click)': 'onToggleSort($event)',\n },\n})\nexport class ThSortable {\n @Input('novoThSortable')\n config: any;\n @Input()\n column: any;\n @Output()\n onSortChange: EventEmitter<any> = new EventEmitter();\n\n onToggleSort(event) {\n if (event) {\n // event.preventDefault();\n }\n\n if (this.config && this.column && this.config.sorting !== false && this.column.sorting !== false) {\n switch (this.column.sort) {\n case 'asc':\n this.column.sort = 'desc';\n break;\n default:\n this.column.sort = 'asc';\n break;\n }\n\n this.onSortChange.emit(this.column);\n }\n }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCommonModule } from 'novo-elements/elements/common';\nimport { NovoDropdownModule } from 'novo-elements/elements/dropdown';\nimport { NovoSelectModule } from 'novo-elements/elements/select';\nimport { DateCell } from './date-cell/DateCell';\nimport { NovoDropdownCell } from './dropdown-cell/DropdownCell';\nimport { NovoTableKeepFilterFocus } from './keep-filter-focus/KeepFilterFocus';\nimport { Pagination } from './pagination/Pagination';\nimport { PercentageCell } from './percentage-cell/PercentageCell';\nimport { RowDetails } from './row-details/RowDetails';\nimport { NovoTableActionsElement } from './table-actions/TableActions';\nimport { TableCell } from './table-cell/TableCell';\nimport { TableFilter } from './table-filter/TableFilter';\nimport { NovoTableFooterElement } from './table-footer/TableFooter';\nimport { NovoTableHeaderElement } from './table-header/TableHeader';\nimport { ThOrderable } from './th-orderable/ThOrderable';\nimport { ThSortable } from './th-sortable/ThSortable';\n\n@NgModule({\n imports: [CommonModule, FormsModule, NovoSelectModule, NovoDropdownModule, NovoButtonModule, NovoCommonModule],\n declarations: [\n NovoTableHeaderElement,\n NovoTableFooterElement,\n NovoTableActionsElement,\n NovoTableKeepFilterFocus,\n Pagination,\n RowDetails,\n TableCell,\n TableFilter,\n ThOrderable,\n ThSortable,\n DateCell,\n PercentageCell,\n NovoDropdownCell,\n ],\n exports: [\n NovoTableHeaderElement,\n NovoTableFooterElement,\n NovoTableActionsElement,\n NovoTableKeepFilterFocus,\n Pagination,\n RowDetails,\n TableCell,\n TableFilter,\n ThOrderable,\n ThSortable,\n DateCell,\n PercentageCell,\n NovoDropdownCell,\n ],\n})\nexport class NovoTableExtrasModule {}\n","// NG2\nimport { ChangeDetectorRef, Component, DoCheck, ElementRef, EventEmitter, Input, Output, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup } from '@angular/forms';\n// Vendor\nimport { startOfToday, startOfTomorrow } from 'date-fns';\nimport { debounceTime } from 'rxjs/operators';\n// APP\nimport { CollectionEvent, NovoLabelService, PagedArrayCollection } from 'novo-elements/services';\nimport { DateUtil, Helpers, notify } from 'novo-elements/utils';\nimport { ControlFactory, FormUtils, ReadOnlyControl } from 'novo-elements/elements/form';\n\nexport interface NovoTableConfig {\n // Paging config\n paging?: {\n current: number; // current page\n itemsPerPage: number; // items per page\n onPageChange: Function; // function to handle page changing\n rowOptions?: { value: number; label: string }[]; // page options\n disablePageSelection?: boolean; // disables the pages from being selected\n };\n // Footer config (total footer)\n footers?: Array<{\n columns: Array<string>; // string array of columns to total\n method: string; // method to use for the footer, SUM | AVG, defaults to SUM\n labelColumn: string; // column to use as the \"total\" label\n label: string; // label to use in the \"total\" label\n }>;\n // TODO: When these types are enforced as `boolean | Function`, there's a lint error. That's a bug.\n filtering?: boolean | any; // Turn on filtering for the table, boolean or function for filtering callback\n sorting?: boolean | any; // Turn on sorting for the table, boolean or function for sorting callback\n ordering?: boolean | Function; // Turn on ordering for the table, boolean or function for ordering callback\n resizing?: boolean | Function; // Turn on resizing for the table, boolean or function for resizing callback\n rowSelectionStyle?: string; // Row selection style, checkbox or row\n rowSelect?: boolean; // Turn on row selection\n hasDetails?: boolean; // Turn on details row for the table\n detailsRenderer?: any; // Renderer/component for the details row\n expandAll?: boolean; // should All Rows be expanded by default\n selectAllEnabled?: boolean; // Allows the table, while in selection mode to have a select all at the top\n}\n\n// TODO - support (1) clicking cell to edit, (2) clicking row to edit, (3) button to trigger full table to edit\nexport enum NovoTableMode {\n VIEW = 1,\n EDIT = 2,\n}\n\n@Component({\n selector: 'novo-table',\n host: {\n class: 'novo-table',\n '[attr.theme]': 'theme',\n '[class.editing]': 'mode === NovoTableMode.EDIT',\n '[class.novo-table-loading]': 'loading',\n },\n // directives: [],\n template: `\n <header *ngIf=\"columns.length\">\n <ng-content select=\"novo-table-header\"></ng-content>\n <div class=\"header-actions\">\n <novo-pagination\n *ngIf=\"config.paging && !(dataProvider.isEmpty() && !dataProvider.isFiltered())\"\n [rowOptions]=\"config.paging.rowOptions\"\n [disablePageSelection]=\"config.paging.disablePageSelection\"\n [(page)]=\"dataProvider.page\"\n [(itemsPerPage)]=\"dataProvider.pageSize\"\n [totalItems]=\"dataProvider.total\"\n (onPageChange)=\"onPageChange($event)\"\n >\n </novo-pagination>\n <ng-content select=\"novo-table-actions\"></ng-content>\n </div>\n </header>\n <div class=\"novo-table-loading-overlay\" *ngIf=\"loading || dataProvider.isLoading()\">\n <novo-loading></novo-loading>\n </div>\n <novo-toast *ngIf=\"toast\" [theme]=\"toast?.theme\" [icon]=\"toast?.icon\" [message]=\"toast?.message\"></novo-toast>\n <div class=\"table-container\" *ngIf=\"!grossFlagToAvoidTheTableFromBeingUglyWhenHidingTheToast\">\n <novo-form hideHeader=\"true\" [form]=\"tableForm\">\n <table class=\"table table-striped dataTable\" [class.table-details]=\"config.hasDetails\" role=\"grid\">\n <!-- skipSortAndFilterClear is a hack right now, will be removed once Canvas is refactored -->\n <thead *ngIf=\"columns.length && (!dataProvider.isEmpty() || dataProvider.isFiltered() || skipSortAndFilterClear || editing)\">\n <tr role=\"row\">\n <!-- DETAILS -->\n <th class=\"row-actions\" *ngIf=\"config.hasDetails\">\n <novo-button\n theme=\"icon\"\n icon=\"next\"\n (click)=\"expandAllOnPage(config.expandAll)\"\n *ngIf=\"!config.expandAll\"\n data-automation-id=\"expand-all\"\n ></novo-button>\n <novo-button\n theme=\"icon\"\n icon=\"sort-desc\"\n (click)=\"expandAllOnPage(config.expandAll)\"\n *ngIf=\"config.expandAll\"\n data-automation-id=\"collapse-all\"\n ></novo-button>\n </th>\n <!-- CHECKBOX -->\n <th class=\"row-actions checkbox mass-action\" *ngIf=\"config.rowSelectionStyle === 'checkbox'\">\n <novo-checkbox\n [(ngModel)]=\"master\"\n [indeterminate]=\"pageSelected.length > 0 && pageSelected.length < pagedData.length\"\n (ngModelChange)=\"selectPage($event)\"\n data-automation-id=\"select-all-checkbox\"\n [tooltip]=\"master ? labels.deselectAll : labels.selectAllOnPage\"\n tooltipPosition=\"right\"\n ></novo-checkbox>\n </th>\n <!-- TABLE HEADERS -->\n <th\n *ngFor=\"let column of columns\"\n [ngClass]=\"{\n 'mass-action': config?.rowSelectionStyle === 'checkbox',\n actions: column?.actions?.items?.length > 0,\n preview: column?.name === 'preview'\n }\"\n [novoThOrderable]=\"column\"\n (onOrderChange)=\"onOrderChange($event)\"\n [hidden]=\"isColumnHidden(column)\"\n >\n <div class=\"th-group\" [attr.data-automation-id]=\"column.id || column.name\" *ngIf=\"!column.hideHeader\">\n <!-- LABEL & SORT ARROWS -->\n <div\n class=\"th-title\"\n [ngClass]=\"config.sorting !== false && column.sorting !== false ? 'sortable' : ''\"\n [novoThSortable]=\"config\"\n [column]=\"column\"\n (onSortChange)=\"onSortChange($event)\"\n >\n <label>{{ column.title || column.label }}</label>\n <div\n class=\"table-sort-icons\"\n tooltipPosition=\"bottom\"\n [tooltip]=\"labels.sort\"\n [ngClass]=\"column.sort || ''\"\n *ngIf=\"config.sorting !== false && column.sorting !== false\"\n >\n <i class=\"bhi-arrow-up\"></i>\n <i class=\"bhi-arrow-down\"></i>\n </div>\n </div>\n <!-- FILTER DROP-DOWN -->\n <novo-dropdown\n side=\"default\"\n *ngIf=\"config.filtering !== false && column.filtering !== false\"\n class=\"column-filters\"\n (toggled)=\"onDropdownToggled($event, column.name)\"\n parentScrollSelector=\".table-container\"\n containerClass=\"table-dropdown\"\n >\n <novo-button\n type=\"button\"\n theme=\"icon\"\n icon=\"filter\"\n tooltipPosition=\"bottom\"\n [tooltip]=\"labels.filters\"\n [class.filtered]=\"column.filter || column.filter === false\"\n (click)=\"focusInput()\"\n ></novo-button>\n <!-- FILTER OPTIONS LIST -->\n <novo-optgroup\n *ngIf=\"\n (column?.options?.length || column?.originalOptions?.length) &&\n column?.type !== 'date' &&\n toggledDropdownMap[column.name]\n \"\n >\n <novo-option class=\"filter-search\" novoInert>\n <div class=\"header\">\n <span>{{ labels.filters }}</span>\n <novo-button\n theme=\"dialogue\"\n color=\"negative\"\n icon=\"times\"\n (click)=\"onFilterClear(column)\"\n *ngIf=\"column.filter || column.filter === false\"\n >\n {{ labels.clear }}\n </novo-button>\n </div>\n <input\n type=\"text\"\n *ngIf=\"!!column.allowCustomTextOption\"\n [attr.id]=\"column.name + '-input'\"\n [novoTableFilter]=\"column\"\n (onFilterChange)=\"onFilterKeywords($event)\"\n [(ngModel)]=\"column.freetextFilter\"\n keepFilterFocused\n #filterInput\n />\n </novo-option>\n <novo-option\n [ngClass]=\"{ active: isFilterActive(column, option) }\"\n *ngFor=\"let option of column.options\"\n (click)=\"onFilterClick(column, option)\"\n [attr.data-automation-id]=\"getOptionDataAutomationId(option)\"\n >\n <span>{{ option?.label || option }}</span> <i class=\"bhi-check\" *ngIf=\"isFilterActive(column, option)\"></i>\n </novo-option>\n </novo-optgroup>\n <!-- FILTER SEARCH INPUT -->\n <novo-optgroup *ngIf=\"!(column?.options?.length || column?.originalOptions?.length) && toggledDropdownMap[column.name]\">\n <novo-option class=\"filter-search\" novoInert>\n <div class=\"header\">\n <span>{{ labels.filters }}</span>\n <novo-button theme=\"dialogue\" color=\"negative\" icon=\"times\" (click)=\"onFilterClear(column)\" *ngIf=\"column.filter\">\n {{ labels.clear }}\n </novo-button>\n </div>\n <input\n type=\"text\"\n [attr.id]=\"column.name + '-input'\"\n [novoTableFilter]=\"column\"\n (onFilterChange)=\"onFilterChange($event)\"\n [(ngModel)]=\"column.filter\"\n keepFilterFocused\n #filterInput\n />\n </novo-option>\n </novo-optgroup>\n <!-- FILTER DATE OPTIONS -->\n <novo-optgroup *ngIf=\"column?.options?.length && column?.type === 'date' && toggledDropdownMap[column.name]\">\n <novo-option class=\"filter-search\" *ngIf=\"!column.calenderShow\" novoInert>\n <div class=\"header\">\n <span>{{ labels.filters }}</span>\n <novo-button theme=\"dialogue\" color=\"negative\" icon=\"times\" (click)=\"onFilterClear(column)\" *ngIf=\"column.filter\">\n {{ labels.clear }}\n </novo-button>\n </div>\n </novo-option>\n <novo-option\n [class.active]=\"isFilterActive(column, option)\"\n *ngFor=\"let option of column.options\"\n (click)=\"onFilterClick(column, option)\"\n [keepOpen]=\"option.range\"\n [hidden]=\"column.calenderShow\"\n [attr.data-automation-id]=\"option?.label || option\"\n >\n {{ option?.label || option }}\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"isFilterActive(column, option)\">check</novo-icon>\n </novo-option>\n <novo-option class=\"calendar-container\" *ngIf=\"column.calenderShow\" keepOpen novoInert>\n <novo-stack>\n <div class=\"back-link\" (click)=\"column.calenderShow = false\">\n <i class=\"bhi-previous\"></i>{{ labels.backToPresetFilters }}\n </div>\n <novo-date-picker\n (onSelect)=\"onCalenderSelect(column, $event)\"\n [(ngModel)]=\"column.filter\"\n mode=\"range\"\n ></novo-date-picker>\n </novo-stack>\n </novo-option>\n </novo-optgroup>\n </novo-dropdown>\n </div>\n </th>\n </tr>\n </thead>\n <!-- TABLE DATA -->\n <tbody *ngIf=\"!dataProvider.isEmpty() || editing\">\n <tr\n class=\"table-selection-row\"\n *ngIf=\"config.rowSelectionStyle === 'checkbox' && showSelectAllMessage && config.selectAllEnabled\"\n data-automation-id=\"table-selection-row\"\n >\n <td colspan=\"100%\">\n {{ labels.selectedRecords(selected.length) }}\n <a (click)=\"selectAll(true)\" data-automation-id=\"all-matching-records\">{{ labels.totalRecords(dataProvider.total) }}</a>\n </td>\n </tr>\n <ng-template ngFor let-row=\"$implicit\" let-i=\"index\" [ngForOf]=\"rows\">\n <tr\n class=\"table-row\"\n [ngClass]=\"row.customClass || ''\"\n [id]=\"name + '-' + row[rowIdentifier]\"\n [attr.data-automation-id]=\"row.id\"\n (click)=\"rowClickHandler(row)\"\n [class.active]=\"row.id === activeId\"\n >\n <td class=\"row-actions\" *ngIf=\"config.hasDetails\">\n <novo-button theme=\"icon\" icon=\"next\" (click)=\"row._expanded = !row._expanded\" *ngIf=\"!row._expanded\"></novo-button>\n <novo-button theme=\"icon\" icon=\"sort-desc\" (click)=\"row._expanded = !row._expanded\" *ngIf=\"row._expanded\"></novo-button>\n </td>\n <td class=\"row-actions checkbox\" *ngIf=\"config.rowSelectionStyle === 'checkbox'\">\n <novo-checkbox\n [(ngModel)]=\"row._selected\"\n (ngModelChange)=\"rowSelectHandler(row)\"\n data-automation-id=\"select-row-checkbox\"\n ></novo-checkbox>\n </td>\n <td\n *ngFor=\"let column of columns\"\n [attr.data-automation-id]=\"column.id || column.name\"\n [class.novo-form-row]=\"editable\"\n [hidden]=\"isColumnHidden(column)\"\n >\n <novo-table-cell\n *ngIf=\"row._editing && !row._editing[column.name]\"\n [hasEditor]=\"editable\"\n [column]=\"column\"\n [row]=\"row\"\n [form]=\"getRowControlForm(i)\"\n ></novo-table-cell>\n <novo-control\n *ngIf=\"row._editing && row._editing[column.name]\"\n condensed=\"true\"\n [form]=\"getRowControlForm(i)\"\n [control]=\"row.controls[column.name]\"\n ></novo-control>\n </td>\n </tr>\n <tr\n class=\"details-row\"\n *ngIf=\"config.hasDetails\"\n [hidden]=\"!row._expanded\"\n [attr.data-automation-id]=\"'details-row-' + row.id\"\n >\n <td class=\"row-actions\"></td>\n <td [attr.colspan]=\"config.rowSelectionStyle === 'checkbox' ? columns.length + 1 : columns.length\">\n <novo-row-details [data]=\"row\" [renderer]=\"config.detailsRenderer\"></novo-row-details>\n </td>\n </tr>\n </ng-template>\n </tbody>\n <!-- NO TABLE DATA PLACEHOLDER -->\n <tbody\n class=\"table-message\"\n *ngIf=\"dataProvider.isEmpty() && !dataProvider.isFiltered() && !editing\"\n data-automation-id=\"empty-table\"\n >\n <tr>\n <td colspan=\"100%\">\n <div #emptymessage><ng-content select=\"[table-empty-message]\"></ng-content></div>\n <div class=\"table-empty-message\" *ngIf=\"emptymessage.childNodes.length == 0\">\n <h4><i class=\"bhi-search-question\"></i> {{ labels.emptyTableMessage }}</h4>\n </div>\n </td>\n </tr>\n </tbody>\n <!-- NO MATCHING RECORDS -->\n <tbody class=\"table-message\" *ngIf=\"dataProvider.isEmpty() && dataProvider.isFiltered()\" data-automation-id=\"empty-table\">\n <tr>\n <td colspan=\"100%\">\n <div #nomatchmessage><ng-content select=\"[table-no-matching-records-message]\"></ng-content></div>\n <div class=\"no-matching-records\" *ngIf=\"nomatchmessage.childNodes.length == 0\">\n <h4><i class=\"bhi-search-question\"></i> {{ labels.noMatchingRecordsMessage }}</h4>\n </div>\n </td>\n </tr>\n </tbody>\n <!-- TABLE DATA ERROR PLACEHOLDER -->\n <tbody class=\"table-message\" *ngIf=\"dataProvider.hasErrors()\" data-automation-id=\"table-errors\">\n <tr>\n <td colspan=\"100%\">\n <div #errormessage><ng-content select=\"[table-error-message]\"></ng-content></div>\n <div class=\"table-error-message\" *ngIf=\"errormessage.childNodes.length == 0\">\n <h4><i class=\"bhi-caution\"></i> {{ labels.erroredTableMessage }}</h4>\n </div>\n </td>\n </tr>\n </tbody>\n <tfoot *ngIf=\"!config.footers\" [ngClass]=\"dataProvider.length % 2 == 0 ? 'odd' : 'even'\">\n <tr>\n <td colspan=\"100%\">\n <ng-content select=\"novo-table-footer\"></ng-content>\n </td>\n </tr>\n </tfoot>\n <tfoot *ngFor=\"let footer of footers; let i = index\" class=\"novo-table-total-footer\">\n <tr>\n <td *ngFor=\"let column of columns\" [attr.data-automation-id]=\"(column.id || column.name) + '-total-' + i\">\n {{ footer[column.name] }}\n </td>\n </tr>\n </tfoot>\n </table>\n </novo-form>\n </div>\n `,\n styleUrls: ['./Table.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NovoTableElement implements DoCheck {\n @ViewChildren('filterInput', { read: ElementRef })\n filterInputs: QueryList<ElementRef>;\n\n @Input()\n config: NovoTableConfig = {};\n @Input()\n columns: Array<any> = [];\n @Input()\n theme: string;\n @Input()\n skipSortAndFilterClear: boolean = false;\n @Input()\n mode: NovoTableMode = NovoTableMode.VIEW;\n @Input()\n editable: boolean = false;\n @Input()\n rowIdentifier: string = 'id';\n @Input()\n name: string = 'table';\n\n @Output()\n onRowClick: EventEmitter<any> = new EventEmitter();\n @Output()\n onRowSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n onTableChange: EventEmitter<any> = new EventEmitter();\n\n _dataProvider: PagedArrayCollection<any>;\n _rows: Array<any> = [];\n selected: Array<any> = [];\n activeId: number = 0;\n master: boolean = false;\n expandAll: boolean = false;\n indeterminate: boolean = false;\n lastPage: number = 0;\n selectedPageCount: number = 0;\n showSelectAllMessage: boolean = false;\n currentSortColumn: any;\n pagedData: Array<any> = [];\n pageSelected: any;\n // Map to keep track of what dropdowns are toggled\n // Used to properly *ngIf the <novo-optgroup> so that the keepFilterFocused Directive\n // will properly fire the ngAfterViewInit event\n toggledDropdownMap: any = {};\n public NovoTableMode = NovoTableMode;\n public tableForm: FormGroup = new FormGroup({});\n public toast: { theme: string; icon: string; message: string };\n public footers = [];\n public grossFlagToAvoidTheTableFromBeingUglyWhenHidingTheToast: boolean = false;\n public loading: boolean = false;\n\n @Input()\n set rows(rows: Array<any>) {\n this.dataProvider = rows;\n if (rows && rows.length > 0) {\n this.setupColumnDefaults();\n }\n // this is a temporary/hacky fix until async dataloading is handled within the table\n if (!this.skipSortAndFilterClear) {\n this.clearAllSortAndFilters();\n }\n }\n\n get rows() {\n return this._rows;\n }\n\n @Input()\n set dataProvider(dp: any) {\n this._dataProvider = Array.isArray(dp) ? new PagedArrayCollection<any>(dp) : dp;\n this._dataProvider.dataChange.pipe(debounceTime(100)).subscribe((event: CollectionEvent) => {\n switch (event.type) {\n case CollectionEvent.CHANGE:\n this._rows = event.data;\n // Setup form\n this.tableForm = this.builder.group({\n rows: this.builder.array([]),\n });\n // Remove all selection on sort change if selection is on\n if (this.config.rowSelectionStyle === 'checkbox') {\n this.pagedData = event.data;\n this.pageSelected = this.pagedData.filter((r) => r._selected);\n this.rowSelectHandler();\n }\n // Find that columns we might need to sum up via the footer\n let columnsToSum = [];\n const columnSums = {};\n if (this.config.footers) {\n this.config.footers.forEach((config) => {\n columnsToSum.push(...config.columns);\n });\n // Only have unique columns, filter out duplicates\n columnsToSum = columnsToSum.filter((item, index, array) => array.indexOf(item) === index);\n }\n // Make a form for each row\n const tableFormRows = this.tableForm.controls.rows as FormArray;\n this._rows.forEach((row, index) => {\n const rowControls = [];\n row.controls = {};\n row._editing = {};\n row._expanded = this.config.expandAll;\n row.rowId = this._rows.length;\n this.columns.forEach((column) => {\n // Use the control passed or use a ReadOnlyControl so that the form has the values\n const control = column.editorConfig\n ? ControlFactory.create(column.editorType, column.editorConfig)\n : new ReadOnlyControl({ key: column.name });\n row.controls[column.name] = control;\n rowControls.push(control);\n });\n this.formUtils.setInitialValues(rowControls, row, false);\n tableFormRows.push(this.formUtils.toFormGroup(rowControls));\n // Setup the total footer if configured\n // Array of keys to total\n if (columnsToSum.length !== 0) {\n columnsToSum.forEach((column) => {\n if (Helpers.isBlank(columnSums[column])) {\n columnSums[column] = 0;\n }\n columnSums[column] += row[column];\n });\n }\n });\n if (this.mode === NovoTableMode.EDIT) {\n this.setTableEdit();\n }\n // Setup the footers (if any)\n if (this.config.footers) {\n this.footers = [];\n this.config.footers.forEach((footerConfig, footerConfigIndex) => {\n const footer = {};\n footer[footerConfig.labelColumn] = footerConfig.label;\n footerConfig.columns.forEach((column) => {\n if (footerConfig.method === 'AVG' && this._rows.length !== 0) {\n footer[column] = columnSums[column] / this._rows.length;\n } else {\n footer[column] = columnSums[column];\n }\n });\n this.footers.push(footer);\n });\n }\n break;\n default:\n break;\n }\n });\n if (this.config.paging) {\n this._dataProvider.page = this.config.paging.current;\n this._dataProvider.pageSize = this.config.paging.itemsPerPage;\n } else {\n // Paging turned off, return basically all of the data\n this._dataProvider.page = 1;\n this._dataProvider.pageSize = 500;\n }\n if (dp && dp.length > 0) {\n this.setupColumnDefaults();\n }\n this._dataProvider.refresh();\n }\n get dataProvider() {\n return this._dataProvider;\n }\n\n get editing() {\n return this.mode === NovoTableMode.EDIT;\n }\n\n get formValue() {\n return this.tableForm.getRawValue();\n }\n\n constructor(public labels: NovoLabelService, private formUtils: FormUtils, private builder: FormBuilder, private cdr: ChangeDetectorRef) {\n notify('[Deprecated]: The table is deprecated. Please migrate to novo-data-tables!');\n }\n\n onDropdownToggled(event, column): void {\n this.toggledDropdownMap[column] = event;\n this.cdr.markForCheck();\n }\n\n focusInput(): void {\n if (this.filterInputs && this.filterInputs.length) {\n this.filterInputs.forEach((filterInput) => {\n if (filterInput.nativeElement) {\n setTimeout(() => filterInput.nativeElement.focus(), 0);\n }\n });\n }\n }\n\n onPageChange(event) {\n // this.dataProvider.page = event.page;\n // this.dataProvider.pageSize = event.itemsPerPage;\n }\n\n getOptionDataAutomationId(option) {\n if (!Helpers.isBlank(option.value)) {\n return option.value;\n }\n return option;\n }\n\n setupColumnDefaults() {\n // Check columns for cell option types\n this.columns.forEach((column) => {\n if (column && column.type) {\n switch (column.type) {\n case 'date':\n // Set options based on dates if there are none\n column.options = column.options || this.getDefaultOptions(column);\n break;\n default:\n break;\n }\n }\n });\n }\n\n ngDoCheck() {\n if (this.config.paging && this.config.paging.current !== this.lastPage) {\n this.rowSelectHandler();\n this.showSelectAllMessage = false;\n }\n this.lastPage = this.config.paging ? this.config.paging.current : 1;\n }\n\n getPageStart(): number {\n return this.config.paging ? (this.dataProvider.page - 1) * this.dataProvider.pageSize : 0;\n }\n\n getPageEnd(): number {\n return this.config.paging && this.dataProvider.pageSize > -1 ? this.getPageStart() + this.dataProvider.pageSize : this.rows.length;\n }\n\n getRowControlForm(i): AbstractControl {\n const tableFormRows = this.tableForm.controls.rows as FormArray;\n return tableFormRows.controls[i];\n }\n\n onFilterClick(column, filter) {\n if (filter.range && !column.calendarShow) {\n column.calenderShow = true;\n return;\n }\n if (Array.isArray(column.filter) && column.multiple) {\n if (~column.filter.indexOf(filter)) {\n // Remove filter\n column.filter.splice(column.filter.indexOf(filter), 1);\n if (filter.range) {\n column.calenderShow = false;\n }\n\n if (column.filter.length === 0) {\n column.filter = null;\n }\n } else {\n // Add filter\n column.filter.push(filter);\n }\n } else if (column.multiple) {\n column.filter = new Array();\n column.filter.push(Helpers.isBlank(filter.value) ? filter : filter.value);\n } else {\n column.filter = Helpers.isBlank(filter.value) ? filter : filter.value;\n }\n this.onFilterChange();\n }\n\n onFilterClear(column: any): void {\n setTimeout(() => {\n column.filter = null;\n column.freetextFilter = null;\n this.onFilterChange();\n if (column.originalOptions) {\n column.options = column.originalOptions;\n }\n });\n }\n\n clearAllSortAndFilters() {\n if (this.config.filtering) {\n this.columns.forEach((column) => {\n column.filter = null;\n column.sort = null;\n });\n }\n }\n\n /**\n * @description This method updates the row data to reflect the active filters.\n */\n onFilterChange(event?: Event) {\n if (this.config.filtering) {\n // Array of filters\n const filters = this.columns.filter((col) => !Helpers.isEmpty(col.filter));\n if (filters.length) {\n let query = {};\n for (const column of filters) {\n if (Helpers.isFunction(column.match)) {\n query[column.name] = (value, record) => {\n return column.match(record, column.filter);\n };\n } else if (column.preFilter && Helpers.isFunction(column.preFilter)) {\n query = Object.assign({}, query, column.preFilter(this.escapeCharacters(column.filter)));\n } else if (Array.isArray(column.filter)) {\n // The filters are an array (multi-select), check value\n let options = column.filter;\n // We have an array of {value: '', labels: ''}\n if (options[0].value || options[0].label) {\n options = column.filter.map((opt) => opt.value);\n }\n query[column.name] = { any: options };\n } else if (column.type && column.type === 'date') {\n if (column.filter.startDate && column.filter.endDate) {\n query[column.name] = {\n min: DateUtil.startOfDay(column.filter.startDate),\n max: DateUtil.startOfDay(DateUtil.addDays(DateUtil.startOfDay(column.filter.endDate), 1)),\n };\n } else {\n query[column.name] = {\n min: column.filter.min ? DateUtil.addDays(startOfToday(), column.filter.min) : startOfToday(),\n max: column.filter.max ? DateUtil.addDays(startOfTomorrow(), column.filter.max) : startOfTomorrow(),\n };\n }\n } else {\n query[column.name] = column.filter;\n }\n }\n if (Helpers.isFunction(this.config.filtering)) {\n this.config.filtering(query);\n } else {\n this._dataProvider.filter = query;\n }\n } else {\n this._dataProvider.filter = {};\n }\n // Trickle down to keep sort\n // this.onSortChange(this.currentSortColumn);\n this.fireTableChangeEvent();\n\n // If paging, reset page\n if (this.config.paging) {\n this.config.paging.current = 1;\n }\n // Remove all selection on sort change if selection is on\n if (this.config.rowSelectionStyle === 'checkbox') {\n this.selectAll(false);\n }\n }\n }\n\n escapeCharacters(filter) {\n if (typeof filter === 'string') {\n return filter.replace(/'/g, \"''\");\n }\n return filter;\n }\n\n isFilterActive(column, filter): boolean {\n // TODO: This needs to be refactored\n let isActive = false;\n if (column && !Helpers.isBlank(column.filter) && !Helpers.isBlank(filter)) {\n if (Array.isArray(column.filter)) {\n if (typeof filter !== 'string') {\n isActive = column.filter.some((item) => {\n return item.label === filter.label;\n });\n } else {\n isActive = column.filter.includes(filter);\n }\n } else {\n if (typeof column.filter === typeof filter) {\n isActive = column.filter === filter;\n } else {\n isActive = column.filter === filter.value;\n }\n }\n }\n return isActive;\n }\n\n onSortChange(column) {\n this.currentSortColumn = column;\n const sortedColumns: any = this.columns.filter((thisColumn) => {\n return thisColumn.sort && thisColumn !== this.currentSortColumn;\n });\n for (const sortedColumn of sortedColumns) {\n sortedColumn.sort = null;\n }\n\n if (column) {\n if (Helpers.isFunction(this.config.sorting)) {\n this.config.sorting();\n } else if (Helpers.isFunction(column.preSort)) {\n this._dataProvider.sort = [].concat(column.preSort(column));\n } else {\n this._dataProvider.sort = [{ field: column.compare || column.name, reverse: column.sort === 'desc' }];\n }\n }\n\n // Fire table change event\n // this.fireTableChangeEvent();\n\n // If paging, reset page\n if (this.config.paging) {\n this.config.paging.current = 1;\n }\n\n // Remove all selection on sort change if selection is on\n if (this.config.rowSelectionStyle === 'checkbox') {\n this.selectAll(false);\n }\n }\n\n fireTableChangeEvent() {\n // Construct a table change object\n const onTableChange: any = {};\n const filters = this.columns.filter((col) => col.filter && col.filter.length);\n onTableChange.filter = filters.length ? filters : false;\n onTableChange.sort = this.currentSortColumn ? this.currentSortColumn : false;\n onTableChange.rows = this.rows;\n\n // Emit event\n this.onTableChange.emit(onTableChange);\n }\n\n findColumnIndex(value) {\n for (let i = 0; i < this.columns.length; i += 1) {\n if (this.columns[i].name === value) {\n return i;\n }\n }\n return null;\n }\n\n onOrderChange(event) {\n const oldIndex = this.findColumnIndex(event.first.name);\n const newIndex = this.findColumnIndex(event.second.name);\n this.columns.splice(newIndex, 0, this.columns.splice(oldIndex, 1)[0]);\n this.onSortChange(this.currentSortColumn);\n }\n\n expandAllOnPage(expanded) {\n this.config.expandAll = !expanded;\n for (const row of this.dataProvider.list) {\n row._expanded = this.config.expandAll;\n }\n }\n\n selectPage(data?: any) {\n if (!this.master) {\n this.selectAll(false);\n // Only show the select all message when there is only one new page selected at a time\n this.selectedPageCount = this.selectedPageCount > 0 ? this.selectedPageCount - 1 : 0;\n this.showSelectAllMessage = false;\n } else {\n this.indeterminate = false;\n // this.pagedData = this.rows.slice(this.getPageStart(), this.getPageEnd());\n for (const row of this.pagedData) {\n row._selected = this.master;\n }\n this.selected = this.dataProvider.list.filter((r) => r._selected);\n this.pageSelected = this.pagedData.filter((r) => r._selected);\n this.emitSelected(this.selected);\n // Only show the select all message when there is only one new page selected at a time\n this.selectedPageCount++;\n this.showSelectAllMessage = this.selectedPageCount === 1 && this.selected.length !== this.dataProvider.total;\n }\n this.cdr.detectChanges();\n }\n\n selectAll(value) {\n this.master = value;\n this.indeterminate = false;\n for (const row of this.dataProvider.list) {\n row._selected = value;\n }\n this.selected = value ? this.dataProvider.list : [];\n this.showSelectAllMessage = false;\n this.selectedPageCount = this.selectedPageCount > 0 ? this.selectedPageCount - 1 : 0;\n this.rowSelectHandler();\n }\n\n rowSelectHandler(data?: any) {\n // this.pagedData = this.rows.slice(this.getPageStart(), this.getPageEnd());\n this.pageSelected = this.pagedData.filter((r) => r._selected);\n this.selected = this.dataProvider.list.filter((r) => r._selected);\n if (this.pageSelected.length === 0) {\n this.master = false;\n this.indeterminate = false;\n } else if (this.pageSelected.length === this.pagedData.length) {\n this.master = true;\n this.indeterminate = false;\n } else {\n this.master = false;\n this.indeterminate = true;\n\n // Breaking the selected page count\n this.showSelectAllMessage = false;\n this.selectedPageCount = this.selectedPageCount > 0 ? this.selectedPageCount - 1 : 0;\n }\n this.emitSelected(this.selected);\n }\n\n emitSelected(selected) {\n this.onRowSelect.emit({ length: selected.length, selected });\n }\n\n rowClickHandler(row) {\n if (this.config.rowSelect) {\n this.activeId = row.id || 0;\n this.onRowClick.emit(row);\n }\n }\n\n getDefaultOptions(column) {\n // TODO - needs to come from label service - https://github.com/bullhorn/novo-elements/elements/issues/116\n const opts: any[] = [\n { label: this.labels.past1Day, min: -1, max: 0 },\n { label: this.labels.past7Days, min: -7, max: 0 },\n { label: this.labels.past30Days, min: -30, max: 0 },\n { label: this.labels.past90Days, min: -90, max: 0 },\n { label: this.labels.past1Year, min: -366, max: 0 },\n { label: this.labels.next1Day, min: 0, max: 1 },\n { label: this.labels.next7Days, min: 0, max: 7 },\n { label: this.labels.next30Days, min: 0, max: 30 },\n { label: this.labels.next90Days, min: 0, max: 90 },\n { label: this.labels.next1Year, min: 0, max: 366 },\n ];\n\n if (column && column.range) {\n opts.push({\n label: this.labels.customDateRange,\n range: true,\n });\n }\n return opts;\n }\n\n onCalenderSelect(column, event): void {\n setTimeout(() => {\n if (event.startDate && event.endDate) {\n this.onFilterChange();\n }\n }, 10);\n }\n\n onFilterKeywords(config) {\n if (config && config.filtering && config.filtering.freetextFilter) {\n const filterKeywords = config.filtering.freetextFilter.toLowerCase();\n if (!config.filtering.originalOptions) {\n config.filtering.originalOptions = config.filtering.options;\n }\n const newOptions = config.filtering.originalOptions.filter((option) => {\n let value = option && option.label ? option.label : option;\n value = value.toLowerCase() ? value.toLowerCase() : value;\n if (value === filterKeywords) {\n return true;\n } else if (~value.indexOf(filterKeywords) || ~value.indexOf(filterKeywords)) {\n return true;\n }\n return false;\n });\n config.filtering.options = newOptions;\n config.filtering.filter = config.filtering.freetextFilter;\n } else {\n config.filtering.options = config.filtering.originalOptions;\n }\n this.onFilterChange();\n }\n\n /**\n * @description Sets the Table into EDIT mode, based on the row/column passed you can enter in a few states\n * (1) setTableEdit() - don't pass any to put the FULL table into edit mode\n * (2) setTableEdit(1) - pass only row to put that FULL row of the table into edit mode\n * (3) setTableEdit(1, 1) - pass row and column to put that column of the row of the table into edit mode\n * @memberOf NovoTableElement\n */\n setTableEdit(rowNumber?: number, columnNumber?: number): void {\n this.mode = NovoTableMode.EDIT;\n this._dataProvider.edit();\n this._rows.forEach((row, rowIndex) => {\n row._editing = row._editing || {};\n this.columns.forEach((column, columnIndex) => {\n if (column.viewOnly) {\n row._editing[column.name] = false;\n } else if (Helpers.isEmpty(rowNumber) && Helpers.isEmpty(columnNumber)) {\n row._editing[column.name] = true;\n } else if (!Helpers.isEmpty(rowNumber) && rowIndex === Number(rowNumber) && Helpers.isEmpty(columnNumber)) {\n row._editing[column.name] = true;\n } else if (\n !Helpers.isEmpty(rowNumber) &&\n !Helpers.isEmpty(columnNumber) &&\n rowIndex === Number(rowNumber) &&\n columnIndex === Number(columnNumber)\n ) {\n row._editing[column.name] = true;\n } else {\n row._editing[column.name] = false;\n }\n });\n });\n }\n\n /**\n * @description Leaves edit mode for the Table and puts everything back to VIEW only\n * @memberOf NovoTableElement\n * @param cancel - whether or not to save data or undo\n */\n private leaveEditMode(cancel: boolean): void {\n this.mode = NovoTableMode.VIEW;\n this._rows.forEach((row) => {\n row._editing = row._editing || {};\n this.columns.forEach((column) => {\n row._editing[column.name] = false;\n });\n });\n if (cancel) {\n this._dataProvider.undo();\n } else {\n this._dataProvider.commit();\n }\n this.hideToastMessage();\n }\n\n /**\n * @description Adds a new row into the table to be edited, can be called from a local reference of the table in your template\n * @memberOf NovoTableElement\n */\n addEditableRow(defaultValue: any = {}): void {\n const tableFormRows = this.tableForm.controls.rows as FormArray;\n const row: any = {};\n const rowControls = [];\n row.controls = {};\n row._editing = {};\n row.rowId = this._rows.length + 1;\n this.columns.forEach((column) => {\n // Use the control passed or use a ReadOnlyControl so that the form has the values\n const control = column.editorConfig\n ? ControlFactory.create(column.editorType, column.editorConfig)\n : new ReadOnlyControl({ key: column.name });\n control.value = null; // remove copied column value\n row.controls[column.name] = control;\n row._editing[column.name] = !column.viewOnly;\n rowControls.push(control);\n });\n this.formUtils.setInitialValues(rowControls, defaultValue, false);\n tableFormRows.push(this.formUtils.toFormGroup(rowControls));\n this._rows.push(row);\n }\n\n /**\n * @description Validates the Form inside of the Table, if there are errors it will display/return the errors for each row.\n * If there are no errors, then it will return ONLY the changed data for each row, the data returned will be in the form:\n * { id: ID_OF_RECORD, key: value } -- data that was updated\n * { id: undefined, key: value } -- data that was added\n * @memberOf NovoTableElement\n */\n validateAndGetUpdatedData(): { changed?: any[]; errors?: { errors: any; row: any; index: number }[] } {\n if (this.tableForm && this.tableForm.controls && this.tableForm.controls.rows) {\n const changedRows = [];\n const errors = [];\n // Go over the FormArray's controls\n (this.tableForm.controls.rows as FormArray).controls.forEach((formGroup: FormGroup, index: number) => {\n let changedRow = null;\n let error = null;\n // Go over the form group controls\n Object.keys(formGroup.controls).forEach((key: string) => {\n const control = formGroup.controls[key];\n // Handle value changing\n if (control && control.dirty && !control.errors) {\n if (!changedRow) {\n // Append the ID, so we have some key to save against\n changedRow = {};\n if (this._rows[index].id) {\n changedRow.id = this._rows[index].id;\n }\n }\n // If dirty, grab value off the form\n changedRow[key] = this.tableForm.getRawValue().rows[index][key];\n // Set value back to row (should be already done via the server call, but do it anyway)\n this._rows[index][key] = changedRow[key];\n } else if (control && control.errors) {\n // Handle errors\n if (!error) {\n error = {};\n }\n error[key] = control.errors;\n control.markAsDirty();\n control.markAsTouched();\n }\n });\n if (changedRow) {\n changedRows.push(changedRow);\n }\n if (error) {\n errors.push({ errors: error, row: this._rows[index], index });\n }\n });\n // Return errors if any, otherwise return the changed rows\n if (errors.length === 0) {\n return { changed: changedRows };\n }\n return { errors };\n }\n }\n\n /**\n * @description Refresh the data provider and leave edit mode\n * @memberOf NovoTableElement\n */\n cancelEditing(): void {\n this.leaveEditMode(true);\n }\n\n /**\n * @description Refresh the data provider and leave edit mode\n * @memberOf NovoTableElement\n */\n saveChanges(): void {\n this.leaveEditMode(false);\n }\n\n /**\n * @description Displays a toast message inside of the table\n * @memberOf NovoTableElement\n */\n displayToastMessage(toast: { icon: string; theme: string; message: string }, hideDelay?: number): void {\n this.loading = false;\n this.toast = toast;\n if (hideDelay) {\n setTimeout(() => this.hideToastMessage(), hideDelay);\n }\n }\n\n /**\n * @description Force hide the toast message\n * @memberOf NovoTableElement\n */\n hideToastMessage(): void {\n this.toast = null;\n // Hack to make the table display properly after hiding the toast\n this.grossFlagToAvoidTheTableFromBeingUglyWhenHidingTheToast = true;\n setTimeout(() => {\n this.grossFlagToAvoidTheTableFromBeingUglyWhenHidingTheToast = false;\n });\n }\n\n /**\n * @description display the loading overlay on the table\n * @memberOf NovoTableElement\n */\n toggleLoading(show: boolean): void {\n this.loading = show;\n }\n\n /**\n * @description hide a column in edit or view mode\n * @memberOf NovoTableElement\n */\n isColumnHidden(column: any): boolean {\n return this.editing ? !!column.hideColumnOnEdit : !!column.hideColumnOnView;\n }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { IMaskDirectiveModule } from 'angular-imask';\n// Vendor\nimport { TextMaskModule } from 'angular2-text-mask';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCheckboxModule } from 'novo-elements/elements/checkbox';\nimport { NovoCommonModule, NovoOptionModule } from 'novo-elements/elements/common';\nimport { NovoDatePickerModule } from 'novo-elements/elements/date-picker';\nimport { NovoDropdownModule } from 'novo-elements/elements/dropdown';\nimport { NovoFlexModule } from 'novo-elements/elements/flex';\nimport { NovoFormExtrasModule } from 'novo-elements/elements/form';\nimport { NovoFormModule } from 'novo-elements/elements/form';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoLoadingModule } from 'novo-elements/elements/loading';\nimport { NovoToastModule } from 'novo-elements/elements/toast';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\nimport { NovoTableExtrasModule } from './extras/TableExtras.module';\nimport { NovoTableElement } from './Table';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NovoFormModule,\n NovoTableExtrasModule,\n NovoToastModule,\n NovoButtonModule,\n NovoTooltipModule,\n NovoDropdownModule,\n NovoLoadingModule,\n NovoDatePickerModule,\n NovoFormExtrasModule,\n NovoCheckboxModule,\n TextMaskModule,\n IMaskDirectiveModule,\n NovoOptionModule,\n NovoCommonModule,\n NovoFlexModule,\n NovoIconModule,\n ],\n declarations: [NovoTableElement],\n exports: [NovoTableElement],\n})\nexport class NovoTableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3","i4","i2","i2.DateCell","i4.Pagination","i7","i9","i14.TableCell","i15.RowDetails","i16","i18.ThOrderable","i19.ThSortable","i20.NovoTableKeepFilterFocus","i21.TableFilter"],"mappings":"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"}
|