@nova-ui/bits
Version:
SolarWinds Nova Framework
346 lines • 63.3 kB
JavaScript
// © 2022 SolarWinds Worldwide, LLC. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
import { Directionality } from "@angular/cdk/bidi";
import { _DisposeViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, } from "@angular/cdk/collections";
import { Platform } from "@angular/cdk/platform";
import { CdkVirtualForOf, ViewportRuler } from "@angular/cdk/scrolling";
import { _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, CDK_TABLE, CDK_TABLE_TEMPLATE, CdkTable, STICKY_POSITIONING_LISTENER, } from "@angular/cdk/table";
import { DOCUMENT } from "@angular/common";
import { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, HostBinding, Inject, Input, IterableDiffers, Optional, Output, SkipSelf, ViewEncapsulation, } from "@angular/core";
import _isEqual from "lodash/isEqual";
import _keys from "lodash/keys";
import { TableStateHandlerService } from "./table-state-handler.service";
import { TableSelectionMode } from "./types";
import * as i0 from "@angular/core";
import * as i1 from "@angular/cdk/bidi";
import * as i2 from "./table-state-handler.service";
import * as i3 from "@angular/cdk/platform";
import * as i4 from "@angular/cdk/scrolling";
import * as i5 from "@angular/cdk/table";
// <example-url>./../examples/index.html#/table</example-url>
/** @dynamic */
export class TableComponent extends CdkTable {
get dataSource() {
return super.dataSource;
}
set dataSource(value) {
super.dataSource = value;
}
constructor(_differs, _changeDetectorRef, _elementRef, role, _dir, tableStateHandlerService, document, platform, viewRepeater, coalescedStyleScheduler, viewportRuler, stickyPositioningListener) {
// The _ViewRepeater and _CoalescedStyleScheduler parameters were optional before Angular v12.
// They're included here for compatibility with Angular v12 and later.
super(_differs, _changeDetectorRef, _elementRef, role, _dir, document, platform, viewRepeater, coalescedStyleScheduler, viewportRuler, stickyPositioningListener);
this._differs = _differs;
this._changeDetectorRef = _changeDetectorRef;
this._elementRef = _elementRef;
this._dir = _dir;
this.tableStateHandlerService = tableStateHandlerService;
this.document = document;
this.platform = platform;
this.reorderable = false;
this.sortable = false;
this.resizable = false;
/**
* @deprecated Use selectionConfig instead.
*/
this.selectable = false;
this.selectionConfig = {
enabled: false,
selectionMode: TableSelectionMode.None,
};
this.paginatorUsed = false;
this.columnsOrderChange = new EventEmitter();
this.sortOrderChanged = new EventEmitter();
this.selectionChange = new EventEmitter();
this.columnsWidthChange = new EventEmitter();
this.layoutFixed = false;
}
getFilterComponents() {
return !this.sortable
? {}
: {
sorter: {
componentInstance: {
// mark this filter to be monitored by our datasource for any changes in order reset other filters(eg: pagination)
// before any new search is performed
detectFilterChanges: true,
getFilters: () => ({
type: "sorter",
value: {
sortBy: this.sortBy,
direction: this.sortDirection,
},
}),
},
},
};
}
// using on changes hook for datasource because if we use pagination,
// datasource changes when we change page and rows should know about this
ngOnChanges(changes) {
if (changes.resizable) {
this.tableStateHandlerService.resizable =
changes.resizable.currentValue;
this.layoutFixed = changes.resizable.currentValue;
}
if (changes.reorderable) {
this.tableStateHandlerService.reorderable =
changes.reorderable.currentValue;
}
if (changes.sortable) {
this.tableStateHandlerService.sortable =
changes.sortable.currentValue;
}
if (changes.dataSource) {
this.onDataSourceChange(changes.dataSource.currentValue);
}
if (changes.selectable) {
this.changeSelectionMode(changes.selectable.currentValue);
}
if (changes.selectionConfig) {
this.tableStateHandlerService.selectionMode =
changes.selectionConfig.currentValue?.selectionMode;
}
if (changes.selection && !changes.selection.isFirstChange()) {
this.changeSelection(changes.selection.currentValue);
}
if (changes.sortedColumn && !changes.sortedColumn.isFirstChange()) {
this.handleSortedColumn(changes.sortedColumn.currentValue);
}
if (changes.trackBy) {
this.tableStateHandlerService.trackBy =
changes.trackBy.currentValue;
}
}
ngOnInit() {
super.ngOnInit();
const dataSet = this.dataSource;
const firstRow = dataSet && dataSet[0];
const columns = _keys(firstRow);
this.tableStateHandlerService.tableColumns = columns;
columns.forEach((column) => {
const alignment = this.tableStateHandlerService.defineAlignment(firstRow[column]);
this.tableStateHandlerService.setAlignment(column, alignment);
});
if (this.resizable) {
this.tableColumnsWidthSubscription =
this.tableStateHandlerService.columnWidthSubject.subscribe(() => {
this.columnsWidthChange.emit();
});
const parentWidth = this._elementRef.nativeElement.parentElement.getBoundingClientRect().width ?
this._elementRef.nativeElement.parentElement.getBoundingClientRect()
.width : this._elementRef.nativeElement.parentElement.parentElement.getBoundingClientRect()
.width;
this.layoutFixed = true;
this.tableStateHandlerService.tableParentWidth = parentWidth;
}
if (this.sortable) {
this.tableSortingSubscription =
this.tableStateHandlerService.sortingState.subscribe((sortedColumn) => {
this.sortDirection = sortedColumn.direction;
this.sortBy = sortedColumn.sortBy;
// emit only if the data is really changed
if (!_isEqual(sortedColumn, this.sortedColumn)) {
this.sortOrderChanged.emit(sortedColumn);
}
});
if (this.sortedColumn) {
this.handleSortedColumn(this.sortedColumn);
}
}
if (this.reorderable) {
this.tableColumnsSubscription =
this.tableStateHandlerService.columnsState.subscribe((tableColumns) => {
this.columnsOrderChange.emit(tableColumns);
});
}
if (this.selectable || this.selectionConfig?.enabled) {
this.stickyChangedSubscription =
this.tableStateHandlerService.stickyHeaderChangedSubject.subscribe(() => {
// calling cdk method to update sticky styles
this.updateStickyHeaderRowStyles();
});
}
}
ngAfterViewInit() {
// moved this from ngOnInit since we might emit the selectionChange event
// before our component is actually ready and it might cause problems
// if we try to manually trigger change detection in a parent component
if (this.selectable || this.selectionConfig?.enabled) {
this.selectionChangedSubscription =
this.tableStateHandlerService.selectionChanged.subscribe((selection) => {
this.selectionChange.emit(selection);
});
if (this.selection) {
this.changeSelection(this.selection);
}
}
}
changeSelection(selectedItems) {
this.tableStateHandlerService.selection = selectedItems;
this.tableStateHandlerService.selectionChanged.next(this.tableStateHandlerService.selection);
}
// used for backwards compatibility
// default behavior was multi selection
changeSelectionMode(selectable) {
this.tableStateHandlerService.selectable = selectable;
if (selectable) {
this.tableStateHandlerService.selectionMode =
TableSelectionMode.Multi;
this.selectionConfig = {
...this.selectionConfig,
enabled: true,
selectionMode: TableSelectionMode.Multi,
};
}
else {
this.tableStateHandlerService.selectionMode =
TableSelectionMode.None;
this.selectionConfig = {
enabled: false,
selectionMode: TableSelectionMode.None,
};
}
}
handleSortedColumn(sortedColumn) {
this.tableStateHandlerService.sortedColumn = sortedColumn;
this.tableStateHandlerService.sortingState.next(sortedColumn);
}
onDataSourceChange(ds) {
if (!ds) {
this.dataSource = [];
}
const changedDataSource = ds ? ds : [];
// if no totalItems specified, we assume that there is only one page
this.tableStateHandlerService.totalItems =
this.totalItems || changedDataSource.length;
this.tableStateHandlerService.changeDataSource(changedDataSource);
}
ngOnDestroy() {
if (this.tableSortingSubscription) {
this.tableSortingSubscription.unsubscribe();
}
if (this.tableColumnsSubscription) {
this.tableColumnsSubscription.unsubscribe();
}
if (this.selectionChangedSubscription) {
this.selectionChangedSubscription.unsubscribe();
}
if (this.stickyChangedSubscription) {
this.stickyChangedSubscription.unsubscribe();
}
if (this.tableColumnsWidthSubscription) {
this.tableColumnsWidthSubscription.unsubscribe();
}
super.ngOnDestroy();
}
ngAfterContentInit() {
// @ts-ignore: Call parent method in case cdk adds it later
super.ngAfterContentInit?.();
// Note: Identifying if table is using virtual scroll.
this.tableStateHandlerService.hasVirtualScroll = !!this.virtualFor && !this.paginatorUsed;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableComponent, deps: [{ token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: "role", attribute: true }, { token: i1.Directionality }, { token: i2.TableStateHandlerService }, { token: DOCUMENT }, { token: i3.Platform }, { token: _VIEW_REPEATER_STRATEGY }, { token: _COALESCED_STYLE_SCHEDULER }, { token: i4.ViewportRuler }, { token: STICKY_POSITIONING_LISTENER, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TableComponent, selector: "nui-table, table[nui-table]", inputs: { reorderable: "reorderable", sortable: "sortable", resizable: "resizable", selectable: "selectable", selectionConfig: "selectionConfig", totalItems: "totalItems", dataSource: "dataSource", selection: "selection", sortedColumn: "sortedColumn", paginatorUsed: "paginatorUsed" }, outputs: { columnsOrderChange: "columnsOrderChange", sortOrderChanged: "sortOrderChanged", selectionChange: "selectionChange", columnsWidthChange: "columnsWidthChange" }, host: { properties: { "class.nui-table__table-fixed": "this.layoutFixed" }, classAttribute: "nui-table__table" }, providers: [
TableStateHandlerService,
{
provide: _VIEW_REPEATER_STRATEGY,
useClass: _DisposeViewRepeaterStrategy,
},
{
provide: _COALESCED_STYLE_SCHEDULER,
useClass: _CoalescedStyleScheduler,
},
{ provide: CdkTable, useExisting: TableComponent },
{ provide: CDK_TABLE, useExisting: TableComponent },
], queries: [{ propertyName: "virtualFor", first: true, predicate: CdkVirtualForOf, descendants: true }], exportAs: ["nuiTable"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "\n <ng-content select=\"caption\"/>\n <ng-content select=\"colgroup, col\"/>\n\n <!--\n Unprojected content throws a hydration error so we need this to capture it.\n It gets removed on the client so it doesn't affect the layout.\n -->\n @if (_isServer) {\n <ng-content/>\n }\n\n @if (_isNativeHtmlTable) {\n <thead role=\"rowgroup\">\n <ng-container headerRowOutlet/>\n </thead>\n <tbody role=\"rowgroup\">\n <ng-container rowOutlet/>\n <ng-container noDataRowOutlet/>\n </tbody>\n <tfoot role=\"rowgroup\">\n <ng-container footerRowOutlet/>\n </tfoot>\n } @else {\n <ng-container headerRowOutlet/>\n <ng-container rowOutlet/>\n <ng-container noDataRowOutlet/>\n <ng-container footerRowOutlet/>\n }\n", isInline: true, styles: [".nui .nui-table__table{display:table;width:100%;font-size:13px;border-collapse:collapse}.nui .nui-table__table .align-right{text-align:right}.nui .nui-table__table .align-center{text-align:center}.nui .nui-table__table-fixed{table-layout:fixed;width:1px}.nui .nui-table__table-fixed .nui-table__table-header-cell,.nui .nui-table__table-fixed .nui-table__table-cell{max-width:none}@media print{.nui .nui-table__table{break-inside:avoid}}.nui .nui-table__container{overflow:auto}.nui .nui-table__table-header-cell{position:relative;display:table-cell;color:var(--nui-color-text-secondary,rgba(17, 17, 17, .6));font-weight:600;padding:0 10px;background:inherit;border:1px solid #d9d9d9;border:1px solid var(--nui-color-line-default, #d9d9d9);min-width:46px;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;user-select:none;background-clip:padding-box}.nui .nui-table__table-header-cell--sortable{cursor:pointer}.nui .nui-table__table-header-cell--sortable:hover{background-color:var(--nui-color-bg-table_header-hover,#e3e3e3)}.nui .nui-table__table-header-cell--sortable--text-black{color:var(--nui-color-text-default,#111)}.nui .nui-table__table-header-cell--sortable--dark{background-color:var(--nui-color-bg-table_header-hover,#e3e3e3)}.nui .nui-table__table-header-cell--reorderable{cursor:move}.nui .nui-table__table-header-cell--reorderable:hover,.nui .nui-table__table-header-cell--reorderable--dark{background-color:var(--nui-color-bg-table_header-hover,#e3e3e3)}.nui .nui-table__table-header-cell.cdk-table-sticky{border:0}.nui .nui-table__table-header-cell.cdk-table-sticky:before{content:\"\";position:absolute;top:0;left:0;bottom:0;width:100%;border-top:1px solid #d9d9d9;border-top:1px solid var(--nui-color-line-default, #d9d9d9);border-bottom:1px solid #d9d9d9;border-bottom:1px solid var(--nui-color-line-default, #d9d9d9);border-left:1px solid #d9d9d9;border-left:1px solid var(--nui-color-line-default, #d9d9d9)}.nui .nui-table__table-header-cell.cdk-table-sticky:last-of-type:before{border-right:1px solid #d9d9d9;border-right:1px solid var(--nui-color-line-default, #d9d9d9)}.nui .nui-table__table-header-cell.cdk-table-sticky.nui-table__table-cell--left-edge-action:before{border-left:2px solid;border-left-color:var(--nui-color-line-selected-contrast,#00c4d2)}.nui .nui-table__table-header-cell.cdk-table-sticky.nui-table__table-cell--right-edge-action:before{border-right:2px solid;border-right-color:var(--nui-color-line-selected-contrast,#00c4d2)}.nui .nui-table__table-header-cell.virtual-sticky{transition-property:width;transition-duration:.2s}.nui .nui-table__table-header-cell--selectable{min-width:75px;width:75px;overflow:visible;padding:0 5px}.nui .nui-table__table-header-cell--selectable.no-options{min-width:auto;width:35px!important}.nui .nui-table__table-header-cell__selector{display:flex}.nui .nui-table__table-header-cell__selector.no-options{min-width:auto}.nui .nui-table__table-header-row{background-color:var(--nui-color-bg-table_header,#f0f0f0);display:table-row;height:40px}.nui .nui-table__table-header-row_height_default{height:40px}.nui .nui-table__table-header-row_height_compact{height:30px}.nui .nui-table__table-header-row_height_compact .nui-table__table-header-cell--selectable{padding:0 3px 0 7px}.nui .nui-table__table-header-row_height_compact .nui-selector__checkbox-button{border:none;border-right:1px solid #d9d9d9;padding:0 4px}.nui .nui-table__table-header-row_height_compact .nui-selector__toggle{border:none;border-left:1px solid #d9d9d9}.nui .nui-table__table-header-row_height_compact .nui-selector__checkbox-container{margin:0}.nui .nui-table__table-header-row_height_compact .nui-selector__checkbox-container .nui-checkbox__label:hover{background:transparent}.nui .nui-table__table-header-row_height_tiny{height:24px}.nui .nui-table__table-header-row_height_tiny .nui-table__table-header-cell--selectable{padding:0 3px 0 7px}.nui .nui-table__table-header-row_height_tiny .nui-selector__checkbox-button{border:none;border-right:1px solid #d9d9d9;padding:0 4px}.nui .nui-table__table-header-row_height_tiny .nui-selector__toggle{border:none;border-left:1px solid #d9d9d9}.nui .nui-table__table-header-row_height_tiny .nui-selector__checkbox-container{margin:0}.nui .nui-table__table-header-row_height_tiny .nui-selector__checkbox-container .nui-checkbox__label:hover{background:transparent}.nui .nui-table__table-row{border-bottom:1px solid #d9d9d9;border-bottom:1px solid var(--nui-color-line-default, #d9d9d9);display:table-row}.nui .nui-table__table-row:hover{background-color:var(--nui-color-bg-transparent-hover,rgba(17, 17, 17, .05))}.nui .nui-table__table-row_height_default{height:40px}.nui .nui-table__table-row_height_compact{height:30px}.nui .nui-table__table-row_height_tiny{height:24px}.nui .nui-table__table-row td:first-of-type.nui-table__table-cell--drop-left{overflow-x:visible}.nui .nui-table__table-row--selected{background-color:var(--nui-color-selected,rgba(0, 196, 210, .1));color:var(--nui-color-text-default,#111)}.nui .nui-table__table-row--selected:hover{background-color:var(--nui-color-selected-hover,rgba(0, 196, 210, .2))}.nui .nui-table__table-row--clickable{cursor:pointer}.nui .nui-table__table-cell{display:table-cell;color:var(--nui-color-text-default,#111);padding:0 10px;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nui .nui-table__table-cell--selectable{padding:0 0 0 10px}.nui .nui-table__table-cell--left-edge-action{border-left:2px solid;border-left-color:var(--nui-color-line-selected-contrast,#00c4d2)}.nui .nui-table__table-cell--right-edge-action{border-right:2px solid;border-right-color:var(--nui-color-line-selected-contrast,#00c4d2)}.nui .nui-table__table-cell__checkbox .nui-checkbox__label:hover{background-color:transparent}.nui .nui-table__icon-cell{min-width:40px;width:40px}.nui .nui-table__sorting-icon{vertical-align:middle}.nui .nui-table__resizer{width:5px;height:40px;right:0;top:0;position:absolute}.nui .nui-table__resizer:hover{cursor:col-resize}cdk-virtual-scroll-viewport .sticky-header-placeholder th{border-bottom:none!important}\n"], dependencies: [{ kind: "directive", type: i5.DataRowOutlet, selector: "[rowOutlet]" }, { kind: "directive", type: i5.HeaderRowOutlet, selector: "[headerRowOutlet]" }, { kind: "directive", type: i5.FooterRowOutlet, selector: "[footerRowOutlet]" }, { kind: "directive", type: i5.NoDataRowOutlet, selector: "[noDataRowOutlet]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableComponent, decorators: [{
type: Component,
args: [{ selector: "nui-table, table[nui-table]", template: CDK_TABLE_TEMPLATE, exportAs: "nuiTable", host: {
class: "nui-table__table",
}, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
TableStateHandlerService,
{
provide: _VIEW_REPEATER_STRATEGY,
useClass: _DisposeViewRepeaterStrategy,
},
{
provide: _COALESCED_STYLE_SCHEDULER,
useClass: _CoalescedStyleScheduler,
},
{ provide: CdkTable, useExisting: TableComponent },
{ provide: CDK_TABLE, useExisting: TableComponent },
], encapsulation: ViewEncapsulation.None, styles: [".nui .nui-table__table{display:table;width:100%;font-size:13px;border-collapse:collapse}.nui .nui-table__table .align-right{text-align:right}.nui .nui-table__table .align-center{text-align:center}.nui .nui-table__table-fixed{table-layout:fixed;width:1px}.nui .nui-table__table-fixed .nui-table__table-header-cell,.nui .nui-table__table-fixed .nui-table__table-cell{max-width:none}@media print{.nui .nui-table__table{break-inside:avoid}}.nui .nui-table__container{overflow:auto}.nui .nui-table__table-header-cell{position:relative;display:table-cell;color:var(--nui-color-text-secondary,rgba(17, 17, 17, .6));font-weight:600;padding:0 10px;background:inherit;border:1px solid #d9d9d9;border:1px solid var(--nui-color-line-default, #d9d9d9);min-width:46px;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;user-select:none;background-clip:padding-box}.nui .nui-table__table-header-cell--sortable{cursor:pointer}.nui .nui-table__table-header-cell--sortable:hover{background-color:var(--nui-color-bg-table_header-hover,#e3e3e3)}.nui .nui-table__table-header-cell--sortable--text-black{color:var(--nui-color-text-default,#111)}.nui .nui-table__table-header-cell--sortable--dark{background-color:var(--nui-color-bg-table_header-hover,#e3e3e3)}.nui .nui-table__table-header-cell--reorderable{cursor:move}.nui .nui-table__table-header-cell--reorderable:hover,.nui .nui-table__table-header-cell--reorderable--dark{background-color:var(--nui-color-bg-table_header-hover,#e3e3e3)}.nui .nui-table__table-header-cell.cdk-table-sticky{border:0}.nui .nui-table__table-header-cell.cdk-table-sticky:before{content:\"\";position:absolute;top:0;left:0;bottom:0;width:100%;border-top:1px solid #d9d9d9;border-top:1px solid var(--nui-color-line-default, #d9d9d9);border-bottom:1px solid #d9d9d9;border-bottom:1px solid var(--nui-color-line-default, #d9d9d9);border-left:1px solid #d9d9d9;border-left:1px solid var(--nui-color-line-default, #d9d9d9)}.nui .nui-table__table-header-cell.cdk-table-sticky:last-of-type:before{border-right:1px solid #d9d9d9;border-right:1px solid var(--nui-color-line-default, #d9d9d9)}.nui .nui-table__table-header-cell.cdk-table-sticky.nui-table__table-cell--left-edge-action:before{border-left:2px solid;border-left-color:var(--nui-color-line-selected-contrast,#00c4d2)}.nui .nui-table__table-header-cell.cdk-table-sticky.nui-table__table-cell--right-edge-action:before{border-right:2px solid;border-right-color:var(--nui-color-line-selected-contrast,#00c4d2)}.nui .nui-table__table-header-cell.virtual-sticky{transition-property:width;transition-duration:.2s}.nui .nui-table__table-header-cell--selectable{min-width:75px;width:75px;overflow:visible;padding:0 5px}.nui .nui-table__table-header-cell--selectable.no-options{min-width:auto;width:35px!important}.nui .nui-table__table-header-cell__selector{display:flex}.nui .nui-table__table-header-cell__selector.no-options{min-width:auto}.nui .nui-table__table-header-row{background-color:var(--nui-color-bg-table_header,#f0f0f0);display:table-row;height:40px}.nui .nui-table__table-header-row_height_default{height:40px}.nui .nui-table__table-header-row_height_compact{height:30px}.nui .nui-table__table-header-row_height_compact .nui-table__table-header-cell--selectable{padding:0 3px 0 7px}.nui .nui-table__table-header-row_height_compact .nui-selector__checkbox-button{border:none;border-right:1px solid #d9d9d9;padding:0 4px}.nui .nui-table__table-header-row_height_compact .nui-selector__toggle{border:none;border-left:1px solid #d9d9d9}.nui .nui-table__table-header-row_height_compact .nui-selector__checkbox-container{margin:0}.nui .nui-table__table-header-row_height_compact .nui-selector__checkbox-container .nui-checkbox__label:hover{background:transparent}.nui .nui-table__table-header-row_height_tiny{height:24px}.nui .nui-table__table-header-row_height_tiny .nui-table__table-header-cell--selectable{padding:0 3px 0 7px}.nui .nui-table__table-header-row_height_tiny .nui-selector__checkbox-button{border:none;border-right:1px solid #d9d9d9;padding:0 4px}.nui .nui-table__table-header-row_height_tiny .nui-selector__toggle{border:none;border-left:1px solid #d9d9d9}.nui .nui-table__table-header-row_height_tiny .nui-selector__checkbox-container{margin:0}.nui .nui-table__table-header-row_height_tiny .nui-selector__checkbox-container .nui-checkbox__label:hover{background:transparent}.nui .nui-table__table-row{border-bottom:1px solid #d9d9d9;border-bottom:1px solid var(--nui-color-line-default, #d9d9d9);display:table-row}.nui .nui-table__table-row:hover{background-color:var(--nui-color-bg-transparent-hover,rgba(17, 17, 17, .05))}.nui .nui-table__table-row_height_default{height:40px}.nui .nui-table__table-row_height_compact{height:30px}.nui .nui-table__table-row_height_tiny{height:24px}.nui .nui-table__table-row td:first-of-type.nui-table__table-cell--drop-left{overflow-x:visible}.nui .nui-table__table-row--selected{background-color:var(--nui-color-selected,rgba(0, 196, 210, .1));color:var(--nui-color-text-default,#111)}.nui .nui-table__table-row--selected:hover{background-color:var(--nui-color-selected-hover,rgba(0, 196, 210, .2))}.nui .nui-table__table-row--clickable{cursor:pointer}.nui .nui-table__table-cell{display:table-cell;color:var(--nui-color-text-default,#111);padding:0 10px;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nui .nui-table__table-cell--selectable{padding:0 0 0 10px}.nui .nui-table__table-cell--left-edge-action{border-left:2px solid;border-left-color:var(--nui-color-line-selected-contrast,#00c4d2)}.nui .nui-table__table-cell--right-edge-action{border-right:2px solid;border-right-color:var(--nui-color-line-selected-contrast,#00c4d2)}.nui .nui-table__table-cell__checkbox .nui-checkbox__label:hover{background-color:transparent}.nui .nui-table__icon-cell{min-width:40px;width:40px}.nui .nui-table__sorting-icon{vertical-align:middle}.nui .nui-table__resizer{width:5px;height:40px;right:0;top:0;position:absolute}.nui .nui-table__resizer:hover{cursor:col-resize}cdk-virtual-scroll-viewport .sticky-header-placeholder th{border-bottom:none!important}\n"] }]
}], ctorParameters: () => [{ type: i0.IterableDiffers }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{
type: Attribute,
args: ["role"]
}] }, { type: i1.Directionality }, { type: i2.TableStateHandlerService }, { type: Document, decorators: [{
type: Inject,
args: [DOCUMENT]
}] }, { type: i3.Platform }, { type: undefined, decorators: [{
type: Inject,
args: [_VIEW_REPEATER_STRATEGY]
}] }, { type: i5._CoalescedStyleScheduler, decorators: [{
type: Inject,
args: [_COALESCED_STYLE_SCHEDULER]
}] }, { type: i4.ViewportRuler }, { type: undefined, decorators: [{
type: Optional
}, {
type: SkipSelf
}, {
type: Inject,
args: [STICKY_POSITIONING_LISTENER]
}] }], propDecorators: { reorderable: [{
type: Input
}], sortable: [{
type: Input
}], resizable: [{
type: Input
}], selectable: [{
type: Input
}], selectionConfig: [{
type: Input
}], totalItems: [{
type: Input
}], dataSource: [{
type: Input
}], selection: [{
type: Input
}], sortedColumn: [{
type: Input
}], paginatorUsed: [{
type: Input
}], columnsOrderChange: [{
type: Output
}], sortOrderChanged: [{
type: Output
}], selectionChange: [{
type: Output
}], columnsWidthChange: [{
type: Output
}], layoutFixed: [{
type: HostBinding,
args: ["class.nui-table__table-fixed"]
}], virtualFor: [{
type: ContentChild,
args: [CdkVirtualForOf]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90YWJsZS90YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEO0FBQ3pELEVBQUU7QUFDRiwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSwrRUFBK0U7QUFDL0UsOEVBQThFO0FBQzlFLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLHVEQUF1RDtBQUN2RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLDRFQUE0RTtBQUM1RSwrRUFBK0U7QUFDL0UsMEVBQTBFO0FBQzFFLGlGQUFpRjtBQUNqRiw2RUFBNkU7QUFDN0UsaUJBQWlCO0FBRWpCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0gsNEJBQTRCLEVBQzVCLHVCQUF1QixHQUUxQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hFLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsUUFBUSxFQUdSLDJCQUEyQixHQUU5QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBR0gsU0FBUyxFQUNULHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLGVBQWUsRUFJZixRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDUixpQkFBaUIsR0FDcEIsTUFB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b2xhcldpbmRzIFdvcmxkd2lkZSwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0b1xuLy8gIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyAgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yXG4vLyAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyAgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vICBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9iaWRpXCI7XG5pbXBvcnQge1xuICAgIF9EaXNwb3NlVmlld1JlcGVhdGVyU3RyYXRlZ3ksXG4gICAgX1ZJRVdfUkVQRUFURVJfU1RSQVRFR1ksXG4gICAgX1ZpZXdSZXBlYXRlcixcbn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2xsZWN0aW9uc1wiO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BsYXRmb3JtXCI7XG5pbXBvcnQgeyBDZGtWaXJ0dWFsRm9yT2YsIFZpZXdwb3J0UnVsZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3Njcm9sbGluZ1wiO1xuaW1wb3J0IHtcbiAgICBfQ09BTEVTQ0VEX1NUWUxFX1NDSEVEVUxFUixcbiAgICBfQ29hbGVzY2VkU3R5bGVTY2hlZHVsZXIsXG4gICAgQ0RLX1RBQkxFLFxuICAgIENES19UQUJMRV9URU1QTEFURSxcbiAgICBDZGtUYWJsZSxcbiAgICBSZW5kZXJSb3csXG4gICAgUm93Q29udGV4dCxcbiAgICBTVElDS1lfUE9TSVRJT05JTkdfTElTVEVORVIsXG4gICAgU3RpY2t5UG9zaXRpb25pbmdMaXN0ZW5lcixcbn0gZnJvbSBcIkBhbmd1bGFyL2Nkay90YWJsZVwiO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBBdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgSXRlcmFibGVEaWZmZXJzLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTa2lwU2VsZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCBfaXNFcXVhbCBmcm9tIFwibG9kYXNoL2lzRXF1YWxcIjtcbmltcG9ydCBfa2V5cyBmcm9tIFwibG9kYXNoL2tleXNcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5cbmltcG9ydCB7IFRhYmxlU3RhdGVIYW5kbGVyU2VydmljZSB9IGZyb20gXCIuL3RhYmxlLXN0YXRlLWhhbmRsZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgVGFibGVTZWxlY3Rpb25Db25maWcsIFRhYmxlU2VsZWN0aW9uTW9kZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBJRmlsdGVyaW5nUGFydGljaXBhbnRzLCBJU2VsZWN0aW9uIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3B1YmxpYy1hcGlcIjtcbmltcG9ydCB7IENvbXBvbmVudENoYW5nZXMgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IElTb3J0ZWRJdGVtLCBTb3J0ZXJEaXJlY3Rpb24gfSBmcm9tIFwiLi4vc29ydGVyL3B1YmxpYy1hcGlcIjtcblxuLy8gPGV4YW1wbGUtdXJsPi4vLi4vZXhhbXBsZXMvaW5kZXguaHRtbCMvdGFibGU8L2V4YW1wbGUtdXJsPlxuXG4vKiogQGR5bmFtaWMgKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm51aS10YWJsZSwgdGFibGVbbnVpLXRhYmxlXVwiLFxuICAgIC8vIFdlIHVzZWQgdG8gaGF2ZSBvdXIgb3duIHRlbXBsYXRlIGZvciB0aGUgdGFibGUgYnV0IGl0IGJyb2tlIHdpdGggQW5ndWxhciByZWxlYXNlIDEwIHNvIHdlIGFyZSBub3cgdXNpbmcgdGhpcyBldmVuIHRob3VnaCBpdCBpcyBpbnRlbmRlZCB0byBiZSBwcml2YXRlXG4gICAgLy8gc28gd2UgY2FuIGJlIHVwIHRvIGRhdGUgd2l0aCB0aGUgQ0RLIHRhYmxlIHRlbXBsYXRlLlxuICAgIHRlbXBsYXRlOiBDREtfVEFCTEVfVEVNUExBVEUsXG4gICAgZXhwb3J0QXM6IFwibnVpVGFibGVcIixcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiBcIm51aS10YWJsZV9fdGFibGVcIixcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBUYWJsZVN0YXRlSGFuZGxlclNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IF9WSUVXX1JFUEVBVEVSX1NUUkFURUdZLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IF9EaXNwb3NlVmlld1JlcGVhdGVyU3RyYXRlZ3ksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IF9DT0FMRVNDRURfU1RZTEVfU0NIRURVTEVSLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IF9Db2FsZXNjZWRTdHlsZVNjaGVkdWxlcixcbiAgICAgICAgfSxcbiAgICAgICAgeyBwcm92aWRlOiBDZGtUYWJsZSwgdXNlRXhpc3Rpbmc6IFRhYmxlQ29tcG9uZW50IH0sXG4gICAgICAgIHsgcHJvdmlkZTogQ0RLX1RBQkxFLCB1c2VFeGlzdGluZzogVGFibGVDb21wb25lbnQgfSxcbiAgICBdLFxuICAgIHN0eWxlVXJsczogW1wiLi90YWJsZS5jb21wb25lbnQubGVzc1wiXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudDxUPlxuICAgIGV4dGVuZHMgQ2RrVGFibGU8VD5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgICBASW5wdXQoKSByZW9yZGVyYWJsZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNvcnRhYmxlID0gZmFsc2U7XG4gICAgQElucHV0KCkgcmVzaXphYmxlID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIHNlbGVjdGlvbkNvbmZpZyBpbnN0ZWFkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNlbGVjdGFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZWxlY3Rpb25Db25maWc6IFRhYmxlU2VsZWN0aW9uQ29uZmlnID0ge1xuICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgc2VsZWN0aW9uTW9kZTogVGFibGVTZWxlY3Rpb25Nb2RlLk5vbmUsXG4gICAgfTtcbiAgICBASW5wdXQoKSB0b3RhbEl0ZW1zOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBkYXRhU291cmNlKCk6IFRbXSB7XG4gICAgICAgIHJldHVybiBzdXBlci5kYXRhU291cmNlIGFzIGFueTtcbiAgICB9XG5cbiAgICBzZXQgZGF0YVNvdXJjZSh2YWx1ZTogVFtdKSB7XG4gICAgICAgIHN1cGVyLmRhdGFTb3VyY2UgPSB2YWx1ZSBhcyBhbnk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2VsZWN0aW9uOiBJU2VsZWN0aW9uO1xuICAgIEBJbnB1dCgpIHNvcnRlZENvbHVtbjogSVNvcnRlZEl0ZW07XG4gICAgQElucHV0KCkgcGFnaW5hdG9yVXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIGNvbHVtbnNPcmRlckNoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBzb3J0T3JkZXJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8SVNvcnRlZEl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxJU2VsZWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgY29sdW1uc1dpZHRoQ2hhbmdlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgc29ydERpcmVjdGlvbjogU29ydGVyRGlyZWN0aW9uO1xuICAgIHB1YmxpYyBzb3J0Qnk6IHN0cmluZztcbiAgICBwcml2YXRlIHRhYmxlQ29sdW1uc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgdGFibGVTb3J0aW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBzZWxlY3Rpb25DaGFuZ2VkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBzdGlja3lDaGFuZ2VkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSB0YWJsZUNvbHVtbnNXaWR0aFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLm51aS10YWJsZV9fdGFibGUtZml4ZWRcIikgbGF5b3V0Rml4ZWQgPSBmYWxzZTtcbiAgICBAQ29udGVudENoaWxkKENka1ZpcnR1YWxGb3JPZikgcHVibGljIHZpcnR1YWxGb3I/OiBDZGtWaXJ0dWFsRm9yT2Y8dW5rbm93bj47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIF9kaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgICAgIHByb3RlY3RlZCBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAg