@theseam/ui-common 0.4.9 → 0.4.10
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/datatable/datatable-action-menu/datatable-action-menu.component.d.ts +7 -2
- package/datatable/datatable-action-menu-item/datatable-action-menu-item.component.d.ts +3 -1
- package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +17 -5
- package/esm2020/datatable/datatable-action-menu-item/datatable-action-menu-item.component.mjs +4 -2
- package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
- package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
- package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
- package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +1 -1
- package/esm2020/framework/top-bar/top-bar.component.mjs +1 -1
- package/esm2020/menu/menu-toggle.directive.mjs +16 -4
- package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +1 -1
- package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-datatable.mjs +21 -10
- package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-framework.mjs +2 -2
- package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-menu.mjs +15 -4
- package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +1 -1
- package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-datatable.mjs +20 -9
- package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-framework.mjs +2 -2
- package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-menu.mjs +15 -4
- package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
- package/menu/menu-toggle.directive.d.ts +4 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theseam-ui-common-datatable.mjs","sources":["../../../projects/ui-common/datatable/datatable-action-menu-item/datatable-action-menu-item.component.ts","../../../projects/ui-common/datatable/datatable-action-menu/datatable-action-menu.component.ts","../../../projects/ui-common/datatable/datatable-action-menu/datatable-action-menu.component.html","../../../projects/ui-common/datatable/directives/datatable-cell-tpl.directive.ts","../../../projects/ui-common/datatable/services/datatable-column-changes.service.ts","../../../projects/ui-common/datatable/datatable-column/datatable-column.component.ts","../../../projects/ui-common/datatable/datatable-column/datatable-column.component.html","../../../projects/ui-common/datatable/datatable-footer/datatable-footer-tpl.directive.ts","../../../projects/ui-common/datatable/datatable-footer/datatable-footer.directive.ts","../../../projects/ui-common/datatable/directives/datatable-filter.directive.ts","../../../projects/ui-common/datatable/datatable-menu-bar/datatable-menu-bar.component.ts","../../../projects/ui-common/datatable/datatable-menu-bar/datatable-menu-bar.component.html","../../../projects/ui-common/datatable/datatable-row-detail/datatable-row-detail-tpl.directive.ts","../../../projects/ui-common/datatable/datatable-row-detail/datatable-row-detail.directive.ts","../../../projects/ui-common/datatable/directives/datatable-row-action-item.directive.ts","../../../projects/ui-common/datatable/models/datatable-data-source.ts","../../../projects/ui-common/datatable/utils/create-action-menu-column.ts","../../../projects/ui-common/datatable/utils/create-checkbox-column.ts","../../../projects/ui-common/datatable/utils/get-column-prop.ts","../../../projects/ui-common/datatable/utils/set-column-defaults.ts","../../../projects/ui-common/datatable/utils/translate-templates.ts","../../../projects/ui-common/datatable/services/columns-manager.service.ts","../../../projects/ui-common/datatable/tokens/datatable-accessor.ts","../../../projects/ui-common/datatable/utils/remove-unused-diffs.ts","../../../projects/ui-common/datatable/models/columns-alteration.ts","../../../projects/ui-common/datatable/models/columns-alterations/hide-column.columns-alteration.ts","../../../projects/ui-common/datatable/models/columns-alterations/sort.columns-alteration.ts","../../../projects/ui-common/datatable/models/columns-alterations/width.columns-alteration.ts","../../../projects/ui-common/datatable/services/columns-alterations-manager.service.ts","../../../projects/ui-common/datatable/models/internal-column-props.ts","../../../projects/ui-common/datatable/models/columns-alterations/order.columns-alteration.ts","../../../projects/ui-common/datatable/utils/map-columns-alterations-states.ts","../../../projects/ui-common/datatable/models/preferences.ts","../../../projects/ui-common/datatable/tokens/datatable-preferences-accessor.ts","../../../projects/ui-common/datatable/services/datatable-preferences.service.ts","../../../projects/ui-common/datatable/datatable/datatable.component.ts","../../../projects/ui-common/datatable/datatable/datatable.component.html","../../../projects/ui-common/datatable/datatable-column-preferences/datatable-column-preferences.component.ts","../../../projects/ui-common/datatable/datatable-column-preferences/datatable-column-preferences.component.html","../../../projects/ui-common/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.ts","../../../projects/ui-common/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.html","../../../projects/ui-common/datatable/datatable-export-button/datatable-export-button.component.ts","../../../projects/ui-common/datatable/datatable-export-button/datatable-export-button.component.html","../../../projects/ui-common/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.ts","../../../projects/ui-common/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.html","../../../projects/ui-common/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.ts","../../../projects/ui-common/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.html","../../../projects/ui-common/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.ts","../../../projects/ui-common/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.html","../../../projects/ui-common/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.ts","../../../projects/ui-common/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.html","../../../projects/ui-common/datatable/tokens/menubar-item-data.ts","../../../projects/ui-common/datatable/datatable-menu-bar-text/datatable-menu-bar-text.component.ts","../../../projects/ui-common/datatable/datatable-menu-bar-text/datatable-menu-bar-text.component.html","../../../projects/ui-common/datatable/directives/datatable-action-menu-item.directive.ts","../../../projects/ui-common/datatable/directives/datatable-action-menu-toggle.directive.ts","../../../projects/ui-common/datatable/models/datatable-gql-data-source.ts","../../../projects/ui-common/datatable/services/datatable-scrollbar-helper.service.ts","../../../projects/ui-common/datatable/utils/with-stored-column-info.ts","../../../projects/ui-common/datatable/datatable.module.ts","../../../projects/ui-common/datatable/theseam-ui-common-datatable.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core'\n\nimport { ThemeTypes } from '@theseam/ui-common/models'\n\n@Component({\n selector: 'seam-datatable-action-menu-item',\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableActionMenuItemComponent {\n\n @Input() label: string | undefined | null\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('attr.href') href: string | undefined | null\n @Input() target: string | undefined | null\n\n // Allow routerLink inputs on menu item\n @Input() queryParams: {[k: string]: any} | undefined | null\n @Input() fragment: string | undefined | null\n @Input() queryParamsHandling: any\n @Input() preserveFragment: boolean| undefined | null\n @Input() skipLocationChange: boolean| undefined | null\n @Input() replaceUrl: boolean| undefined | null\n @Input() state: {[k: string]: any} | undefined | null\n @Input() routerLink: string | any[] | undefined | null\n\n @Input() confirmDialog: { message?: string, alert?: string | { message: string, type: ThemeTypes } } | undefined | null\n\n @Input() disabled: boolean | undefined | null\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly click = new EventEmitter<any>()\n\n}\n","import { ConnectionPositionPair } from '@angular/cdk/overlay'\nimport { Component, ContentChildren, QueryList } from '@angular/core'\nimport { NavigationExtras, Router } from '@angular/router'\n\nimport { faEllipsisH } from '@fortawesome/free-solid-svg-icons'\n\nimport { SeamConfirmDialogService } from '@theseam/ui-common/confirm-dialog'\n\nimport { DatatableActionMenuItemComponent } from '../datatable-action-menu-item/datatable-action-menu-item.component'\n\n@Component({\n selector: 'seam-datatable-action-menu',\n templateUrl: './datatable-action-menu.component.html',\n styleUrls: ['./datatable-action-menu.component.scss']\n})\nexport class DatatableActionMenuComponent {\n\n faEllipsisH = faEllipsisH\n\n @ContentChildren(DatatableActionMenuItemComponent) items?: QueryList<DatatableActionMenuItemComponent>\n\n /** @ignore */\n _actionMenuPositions: ConnectionPositionPair[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ]\n\n constructor(\n private _confirmDialog: SeamConfirmDialogService,\n private _router: Router\n ) { }\n\n activateItem(event: any, item: DatatableActionMenuItemComponent) {\n if (item.confirmDialog) {\n this._confirmDialog.open(item.confirmDialog.message, item.confirmDialog.alert)\n .afterClosed()\n .subscribe(v => {\n if (v === 'confirm') {\n item.click.emit(event)\n if (item.href) {\n const win = window.open(item.href, item.target || undefined)\n // TODO: Consider if always setting opener to null is to restrictive\n // if (win && item.target && item.target.toLowerCase() === '_blank') {\n // win.opener = null\n // }\n } else {\n const extras: NavigationExtras = {}\n if (item.queryParams) { extras.queryParams = item.queryParams }\n if (item.fragment) { extras.fragment = item.fragment }\n if (item.queryParamsHandling) { extras.queryParamsHandling = item.queryParamsHandling }\n if (item.preserveFragment) { extras.preserveFragment = item.preserveFragment }\n if (item.skipLocationChange) { extras.skipLocationChange = item.skipLocationChange }\n if (item.replaceUrl) { extras.replaceUrl = item.replaceUrl }\n if (item.state) { extras.state = item.state }\n\n const commands = Array.isArray(item.routerLink) ? item.routerLink : [item.routerLink]\n this._router.navigate(commands, extras)\n }\n }\n })\n } else {\n item.click.emit(event)\n }\n }\n\n}\n","<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"(item.routerLink || item.href) && !item.confirmDialog; else noRouterLink\">\n <a *ngIf=\"item.href; else noHref\"\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [attr.href]=\"item.href\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n <ng-template #noHref>\n <a seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"$any(item.fragment)\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"$any(item.preserveFragment)\"\n [skipLocationChange]=\"$any(item.skipLocationChange)\"\n [replaceUrl]=\"$any(item.replaceUrl)\"\n [state]=\"$any(item.state)\"\n [routerLink]=\"item.routerLink\"\n [target]=\"$any(item.target)\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n </ng-template>\n </ng-container>\n <ng-template #noRouterLink>\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </button>\n </ng-template>\n </ng-container>\n</seam-menu>\n\n<button type=\"button\" class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n title=\"Row Actions\">\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n</button>\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamDatatableCellTpl]'\n})\nexport class DatatableCellTplDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { Injectable } from '@angular/core'\nimport { Observable, Subject } from 'rxjs'\n\n@Injectable()\nexport class DatatableColumnChangesService {\n\n private columnInputChanges = new Subject<undefined>()\n\n get columnInputChanges$(): Observable<undefined> {\n return this.columnInputChanges.asObservable()\n }\n\n onInputChange(): void {\n this.columnInputChanges.next(undefined)\n }\n\n}\n","import { Component, ContentChild, Input, OnChanges, PipeTransform, SimpleChanges, TemplateRef } from '@angular/core'\n\nimport { ColumnChangesService, TableColumnProp } from '@marklb/ngx-datatable'\n\nimport { DatatableCellTplDirective } from '../directives/datatable-cell-tpl.directive'\nimport { DatatableColumnChangesService } from '../services/datatable-column-changes.service'\n\n// HACK: Union type prevents the not found warning\ntype _PipeTransform = PipeTransform | PipeTransform\n\n// TODO: The column component should implement `ITheSeamDatatableColumn`, since\n// providing some properties by input and some by template could be confusing.\n\n@Component({\n selector: 'seam-datatable-column',\n templateUrl: './datatable-column.component.html',\n styleUrls: ['./datatable-column.component.scss']\n})\nexport class DatatableColumnComponent implements OnChanges {\n\n @Input() name?: string | null\n @Input() prop?: TableColumnProp | null\n\n @Input() flexGrow?: number | null\n @Input() minWidth?: number | null\n @Input() maxWidth?: number | null\n @Input() width?: number | null\n\n @Input() resizeable?: boolean | null\n @Input() sortable?: boolean | null\n @Input() draggable?: boolean | null\n\n @Input() canAutoResize?: boolean | null\n\n @Input() comparator?: ((valueA: any, valueB: any, rowA?: any, rowB?: any, sortDirection?: 'asc' | 'desc') => -1 | 0 | 1) | null\n\n @Input() headerTemplate?: TemplateRef<any> | null\n\n @Input() checkboxable?: boolean | null\n @Input() headerCheckboxable?: boolean | null\n\n @Input() headerClass?: string | ((data: any) => string|any) | null\n @Input() cellClass?: string | ((data: any) => string|any) | null\n\n @Input() frozenLeft?: boolean | null\n @Input() frozenRight?: boolean | null\n\n @Input() pipe?: _PipeTransform | null\n\n @Input() isTreeColumn?: boolean | null\n @Input() treeLevelIndent?: number | null\n\n @Input() summaryFunc?: ((cells: any[]) => any) | null\n @Input() summaryTemplate?: TemplateRef<any> | null\n\n @Input() hidden?: boolean | null\n\n private _isFirstChange = true\n\n @ContentChild(DatatableCellTplDirective, { static: true }) cellTplDirective?: DatatableCellTplDirective\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('cellTemplate')\n _cellTemplateInput?: TemplateRef<any> | null\n\n @ContentChild(DatatableCellTplDirective, { read: TemplateRef, static: true })\n _cellTemplateQuery?: TemplateRef<any>\n\n get cellTemplate(): TemplateRef<any> | undefined | null {\n return this._cellTemplateInput || this._cellTemplateQuery\n }\n\n // @Input('headerTemplate')\n // _headerTemplateInput: TemplateRef<any>;\n\n // @ContentChild(DataTableColumnHeaderDirective, { read: TemplateRef, static: true })\n // _headerTemplateQuery: TemplateRef<any>;\n\n // get headerTemplate(): TemplateRef<any> {\n // return this._headerTemplateInput || this._headerTemplateQuery;\n // }\n\n // @Input('treeToggleTemplate')\n // _treeToggleTemplateInput: TemplateRef<any>;\n\n // @ContentChild(DataTableColumnCellTreeToggle, { read: TemplateRef, static: true })\n // _treeToggleTemplateQuery: TemplateRef<any>;\n\n // get treeToggleTemplate(): TemplateRef<any> {\n // return this._treeToggleTemplateInput || this._treeToggleTemplateQuery;\n // }\n\n constructor(\n private _columnChangesService: DatatableColumnChangesService\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (this._isFirstChange) {\n this._isFirstChange = false\n } else {\n this._columnChangesService.onInputChange()\n }\n }\n\n public getCellDirective(): DatatableCellTplDirective | null {\n if (this.cellTplDirective) {\n return this.cellTplDirective\n }\n\n return null\n }\n\n}\n","<p>\n datatable-column works!\n</p>\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamDatatableFooterTpl]'\n})\nexport class DatatableFooterTplDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core'\n\nimport { DatatableFooterTplDirective } from './datatable-footer-tpl.directive'\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'seam-datatable-footer'\n})\nexport class TheSeamDatatableFooterDirective {\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('template')\n _templateInput: TemplateRef<any> | undefined | null\n\n @ContentChild(DatatableFooterTplDirective, { read: TemplateRef, static: true })\n _templateQuery: TemplateRef<any> | undefined | null\n\n get template(): TemplateRef<any> | undefined | null {\n return this._templateInput || this._templateQuery\n }\n\n}\n","import { Directive, Inject, Self } from '@angular/core'\n\nimport { IDataFilter, THESEAM_DATA_FILTER } from '@theseam/ui-common/data-filters'\n\n@Directive({\n selector: '[seamDatatableFilter]'\n})\nexport class DatatableFilterDirective {\n\n private _filter?: IDataFilter\n\n constructor(\n @Self() @Inject(THESEAM_DATA_FILTER) dataFilters: IDataFilter[]\n ) {\n if (dataFilters && dataFilters.length > 0) {\n this._filter = dataFilters[0]\n }\n }\n\n get filter() {\n return this._filter\n }\n\n}\n","import { Component, ContentChildren, EventEmitter, forwardRef, QueryList } from '@angular/core'\n\nimport { IDataFilter, THESEAM_DATA_FILTER_CONTAINER } from '@theseam/ui-common/data-filters'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DatatableFilterDirective } from '../directives/datatable-filter.directive'\n\nexport const _THESEAM_DATA_FILTER_CONTAINER: any = {\n provide: THESEAM_DATA_FILTER_CONTAINER,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DatatableMenuBarComponent)\n}\n\n@Component({\n selector: 'seam-datatable-menu-bar',\n templateUrl: './datatable-menu-bar.component.html',\n styleUrls: ['./datatable-menu-bar.component.scss'],\n providers: [ _THESEAM_DATA_FILTER_CONTAINER ]\n})\nexport class DatatableMenuBarComponent {\n\n @ContentChildren(DatatableFilterDirective)\n get filterDirectives(): QueryList<DatatableFilterDirective> | undefined {\n return this._filterDirectives\n }\n set filterDirectives(value: QueryList<DatatableFilterDirective> | undefined) {\n this._filterDirectives = value\n this.filtersChanged.emit(this.filters())\n }\n private _filterDirectives: QueryList<DatatableFilterDirective> | undefined\n\n private _filtersArr: IDataFilter[] = []\n\n public readonly filtersChanged = new EventEmitter<IDataFilter[]>()\n\n public filters(): IDataFilter[] {\n const fDirectives = this._filterDirectives\n ? this._filterDirectives.map(f => f.filter).filter(notNullOrUndefined)\n : []\n\n const fArr = this._filtersArr\n .filter(f => fDirectives.findIndex(fd => fd.uid === f.uid) === -1)\n return [ ...fArr, ...fDirectives ]\n }\n\n public addFilter(dataFilter: IDataFilter): void {\n this._filtersArr.push(dataFilter)\n this.filtersChanged.emit(this.filters())\n }\n\n public removeFilter(dataFilter: IDataFilter): void {\n this._filtersArr = this._filtersArr.filter(f => f !== dataFilter)\n this.filtersChanged.emit(this.filters())\n }\n\n}\n","<div class=\"bg-light border rounded p-2\">\n <ng-content></ng-content>\n</div>\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamDatatableRowDetailTpl]'\n})\nexport class DatatableRowDetailTplDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { ContentChild, Directive, EventEmitter, Input, Output, TemplateRef } from '@angular/core'\n\nimport { DatatableRowDetailTplDirective } from './datatable-row-detail-tpl.directive'\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'seam-datatable-row-detail'\n})\nexport class TheSeamDatatableRowDetailDirective {\n\n /**\n * The detail row height is required especially\n * when virtual scroll is enabled.\n */\n @Input() rowHeight: number | ((row?: any, index?: number) => number) | undefined | null = 0\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('template')\n _templateInput: TemplateRef<any> | undefined | null\n\n @ContentChild(DatatableRowDetailTplDirective, { read: TemplateRef, static: true })\n _templateQuery: TemplateRef<any> | undefined | null\n\n get template(): TemplateRef<any> | undefined | null {\n return this._templateInput || this._templateQuery\n }\n\n /**\n * Row detail row visbility was toggled.\n */\n // NOTE: This will trigger from the internal ngx-datatable toggle event.\n @Output() toggle: EventEmitter<any> = new EventEmitter()\n\n /**\n * Internal use for wrapper only.\n *\n * To avoid confusion with this directives output and the ngx-datatable\n * directive being wrapped, this directive emits `_toggle` stream to the\n * `ngx-datatable-row-detail` directive and emits it's `toggle` stream out to\n * this directives `toggle` stream.\n * @ignore\n */\n _toggle: EventEmitter<any> = new EventEmitter()\n\n /**\n * Toggle the expansion of the row\n */\n toggleExpandRow(row: any): void {\n this._toggle.emit({\n type: 'row',\n value: row\n })\n }\n\n /**\n * API method to expand all the rows.\n */\n expandAllRows(): void {\n this._toggle.emit({\n type: 'all',\n value: true\n })\n }\n\n /**\n * API method to collapse all the rows.\n */\n collapseAllRows(): void {\n this._toggle.emit({\n type: 'all',\n value: false\n })\n }\n\n}\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamDatatableRowActionItem]'\n})\nexport class DatatableRowActionItemDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { DataSource } from '@angular/cdk/collections'\nimport { BehaviorSubject, Observable, of } from 'rxjs'\nimport { map, startWith, switchMap } from 'rxjs/operators'\n\nimport { DataFilterState } from '@theseam/ui-common/data-filters'\n\nimport { TheSeamDatatableAccessor } from './datatable-accessor'\nimport { TheSeamPageInfo } from './page-info'\nimport { SortItem } from './sort-item'\n\nexport abstract class DatatableDataSource<TRow> extends DataSource<TRow> {\n\n private readonly _datatableSubject = new BehaviorSubject<TheSeamDatatableAccessor | undefined>(undefined)\n\n public readonly sorts$: Observable<SortItem[]>\n public readonly filterStates$: Observable<DataFilterState[]>\n public readonly page$: Observable<TheSeamPageInfo>\n\n constructor() {\n super()\n\n this.sorts$ = this._datatableSubject.pipe(\n switchMap(_datatable => {\n if (!_datatable) {\n return of([])\n }\n\n return _datatable.sort.pipe(\n map(v => v.sorts),\n startWith(_datatable.sorts)\n )\n })\n )\n\n this.filterStates$ = this._datatableSubject.pipe(\n switchMap(_datatable => {\n if (!_datatable) {\n return of([])\n }\n\n return _datatable.filterStates\n })\n )\n\n this.page$ = this._datatableSubject.pipe(\n switchMap(_datatable => {\n if (!_datatable) {\n return of({\n offset: 0,\n pageSize: 0,\n limit: undefined,\n count: 0\n })\n }\n\n return _datatable.page.pipe(\n startWith(_datatable.pageInfo)\n )\n })\n )\n }\n\n // connect(): Observable<readonly TRow[]> {\n // return this.\n // }\n\n // disconnect(): void {\n // throw new Error('Method not implemented.')\n // }\n\n public setDatatableAccessor(accessor: TheSeamDatatableAccessor): void {\n this._datatableSubject.next(accessor)\n }\n\n}\n","import { TheSeamDatatableColumn } from '../models/table-column'\n\nexport const ACTION_MENU_COLUMN_PROP = '$$__actionMenu__'\n\nexport function createActionMenuColumn(\n cellTemplate: any,\n headerTemplate: any\n): TheSeamDatatableColumn {\n return {\n prop: ACTION_MENU_COLUMN_PROP,\n name: '',\n width: 50,\n minWidth: 50,\n maxWidth: 50,\n resizeable: false,\n sortable: false,\n draggable: false,\n // TODO: Fix column auto sizing with fixed column and cell overlay before enabling.\n // frozenRight: true,\n cellTemplate,\n headerTemplate,\n }\n}\n","import { TheSeamDatatableColumn } from '../models/table-column'\n\nexport const CHECKBOX_COLUMN_PROP = '$$__checkbox__'\n\nexport function createCheckboxColumn(): TheSeamDatatableColumn {\n return {\n prop: CHECKBOX_COLUMN_PROP,\n name: '',\n width: 40,\n sortable: false,\n canAutoResize: false,\n draggable: false,\n resizeable: false,\n headerCheckboxable: true,\n checkboxable: true,\n }\n}\n","import { camelCase, TableColumn, TableColumnProp } from '@marklb/ngx-datatable'\n\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nexport function getColumnProp<T extends { prop?: TableColumnProp | null, name?: string | null }>(\n col: T\n): TableColumnProp | undefined {\n if (!notNullOrUndefined(col.prop) && col.name) {\n return camelCase(col.name)\n }\n\n return col.prop === null ? undefined : col.prop\n}\n","import { setColumnDefaults as _scd } from '@marklb/ngx-datatable'\n\nimport { TheSeamDatatableColumn } from '../models/table-column'\n\nexport function setColumnDefaults(columns: TheSeamDatatableColumn[]): void {\n for (const column of columns) {\n if (!Object.prototype.hasOwnProperty.call(column, 'hidden')) {\n column.hidden = false\n }\n }\n _scd(columns)\n}\n","import { translateTemplates } from '@marklb/ngx-datatable'\n\nimport { DatatableColumnComponent } from '../datatable-column/datatable-column.component'\nimport { getColumnProp } from '../utils/get-column-prop'\n\n// TODO: Replace with a `translateTemplates` function that fits the\n// wrapper component better.\nexport function translateTemplateColumns(v: DatatableColumnComponent[]): DatatableColumnComponent[] {\n const cols = translateTemplates(v as any) as DatatableColumnComponent[]\n\n for (const col of cols) {\n col.prop = getColumnProp(col)\n }\n\n return cols\n}\n","import { Injectable, KeyValueChanges, KeyValueDiffer, KeyValueDiffers, TemplateRef } from '@angular/core'\nimport { BehaviorSubject, combineLatest, defer, EMPTY, Observable, of, Subject } from 'rxjs'\nimport { auditTime, map, shareReplay, startWith, switchMap } from 'rxjs/operators'\n\nimport {\n DataTableColumnCellTreeToggle,\n DataTableColumnDirective,\n DataTableColumnHeaderDirective,\n SelectionType,\n TableColumn,\n TableColumnProp,\n} from '@marklb/ngx-datatable'\n\nimport { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DatatableColumnComponent } from '../datatable-column/datatable-column.component'\nimport { DatatableRowActionItemDirective } from '../directives/datatable-row-action-item.directive'\nimport { TheSeamDatatableColumn } from '../models/table-column'\nimport { createActionMenuColumn } from '../utils/create-action-menu-column'\nimport { createCheckboxColumn } from '../utils/create-checkbox-column'\nimport { getColumnProp } from '../utils/get-column-prop'\nimport { setColumnDefaults } from '../utils/set-column-defaults'\nimport { translateTemplateColumns } from '../utils/translate-templates'\nimport { DatatableColumnChangesService } from './datatable-column-changes.service'\n\nenum ColumnsTypes {\n Input,\n Template,\n Result,\n}\n\nexport type InternalColumnsGetter = () => TableColumn[]\n\n@Injectable()\nexport class ColumnsManagerService {\n private readonly _updateColumns = new Subject<void>()\n\n private readonly _inputColumns = new BehaviorSubject<TheSeamDatatableColumn[]>([])\n private readonly _templateColumns = new BehaviorSubject<DatatableColumnComponent[]>([])\n\n private readonly _inpColDiffersMap = new Map<TableColumnProp, KeyValueDiffer<any, any>>()\n private readonly _tplColDiffersMap = new Map<TableColumnProp, KeyValueDiffer<any, any>>()\n private readonly _resultColDiffersMap = new Map<TableColumnProp, KeyValueDiffer<any, any>>()\n private _colPropsDiffer?: KeyValueDiffer<any, any>\n\n private _internalColumnsGetter?: InternalColumnsGetter\n\n private _selectionType: SelectionType | undefined\n private _rowActionItem: DatatableRowActionItemDirective | undefined\n private _actionMenuCellTpl: TemplateRef<DataTableColumnDirective> | undefined\n private _blankHeaderTpl: TemplateRef<DataTableColumnHeaderDirective> | undefined\n private _treeToggleTpl: TemplateRef<DataTableColumnCellTreeToggle> | undefined\n private _headerTpl: TemplateRef<DataTableColumnHeaderDirective> | undefined\n private _cellTypeSelectorTpl: TemplateRef<DataTableColumnDirective> | undefined\n\n // TODO: Consider making this a columns changed obervable, to make changes more predictable.\n public readonly columns$: Observable<TheSeamDatatableColumn[]>\n\n constructor(\n private readonly _differs: KeyValueDiffers,\n private readonly _columnChangesService: DatatableColumnChangesService,\n ) {\n const templateColumns$ = this._columnChangesService.columnInputChanges$.pipe(\n startWith(undefined),\n switchMap(() => {\n return this._templateColumns.asObservable().pipe(map(translateTemplateColumns))\n })\n )\n\n this.columns$ = defer(() => {\n let isFirst = true\n return combineLatest([\n this._inputColumns.asObservable(),\n templateColumns$,\n this._updateColumns.asObservable().pipe(auditTime(0), startWith(undefined))\n ]).pipe(\n switchMap(([ inputColumns, templateColumns ]) => {\n const cols = this._mergeColumns(inputColumns, templateColumns)\n\n const hasColumnsChanged = this._hasColumnsChanged(cols)\n\n // TODO: Look for columns added/removed and remove the removed columns\n // differs, not just changes to columns.\n const hasAddedOrRemovedColumns = this._hasAddedOrRemovedColumns(cols)\n\n // NOTE: Both checks need to be run, even though only one needs to be\n // true, because their differs need to be called.\n if (hasColumnsChanged || hasAddedOrRemovedColumns || isFirst) {\n isFirst = false\n return of(cols)\n }\n\n return EMPTY\n }),\n )\n }).pipe(\n shareReplay({ refCount: true, bufferSize: 1 })\n )\n }\n\n public setInputColumns(columns: TheSeamDatatableColumn[]): void {\n this._inputColumns.next(columns)\n }\n\n public setTemplateColumns(columns: DatatableColumnComponent[]): void {\n this._templateColumns.next(columns)\n }\n\n public setInternalColumnsGetter(getter: InternalColumnsGetter | null): void {\n this._internalColumnsGetter = getter || undefined\n this._updateColumns.next(undefined)\n }\n\n public setSelectionType(selectionType: SelectionType | undefined): void {\n const changed = this._selectionType !== selectionType\n this._selectionType = selectionType\n if (changed) {\n this._updateColumns.next(undefined)\n }\n }\n\n public getSelectionType(): SelectionType | undefined {\n return this._selectionType\n }\n\n public setRowActionItem(rowActionItem: DatatableRowActionItemDirective | undefined): void {\n const changed = this._rowActionItem !== rowActionItem\n this._rowActionItem = rowActionItem\n if (changed) {\n this._updateColumns.next(undefined)\n }\n }\n\n public setActionMenuCellTpl(actionMenuCellTpl: TemplateRef<DataTableColumnDirective> | undefined): void {\n const changed = this._actionMenuCellTpl !== actionMenuCellTpl\n this._actionMenuCellTpl = actionMenuCellTpl\n if (changed) {\n this._updateColumns.next(undefined)\n }\n }\n\n public setBlankHeaderTpl(blankHeaderTpl: TemplateRef<DataTableColumnHeaderDirective> | undefined): void {\n const changed = this._blankHeaderTpl !== blankHeaderTpl\n this._blankHeaderTpl = blankHeaderTpl\n if (changed) {\n this._updateColumns.next(undefined)\n }\n }\n\n public setTreeToggleTpl(treeToggleTpl: TemplateRef<DataTableColumnCellTreeToggle> | undefined): void {\n const changed = this._treeToggleTpl !== treeToggleTpl\n this._treeToggleTpl = treeToggleTpl\n if (changed) {\n this._updateColumns.next(undefined)\n }\n }\n\n public setHeaderTpl(headerTpl: TemplateRef<DataTableColumnHeaderDirective> | undefined): void {\n const changed = this._headerTpl !== headerTpl\n this._headerTpl = headerTpl\n if (changed) {\n this._updateColumns.next(undefined)\n }\n }\n\n public setCellTypeSelectorTpl(cellTypeSelectorTpl: TemplateRef<DataTableColumnDirective> | undefined): void {\n const changed = this._cellTypeSelectorTpl !== cellTypeSelectorTpl\n this._cellTypeSelectorTpl = cellTypeSelectorTpl\n if (changed) {\n this._updateColumns.next(undefined)\n }\n }\n\n private _mergeColumns(\n inputColumns: TheSeamDatatableColumn[],\n templateColumns: DatatableColumnComponent[]\n ): TheSeamDatatableColumn[] {\n const cols: TheSeamDatatableColumn[] = []\n\n // Add the first column checkbox if 'checkbox' selection is enabled.\n if (this._shouldAddCheckboxColumn()) {\n cols.push(createCheckboxColumn())\n }\n\n // Column needs to be provided in the inputColumns, so iterate the\n // inputColumns.\n for (const inpCol of inputColumns) {\n const prop = getColumnProp(inpCol)\n if (!notNullOrUndefined(prop)) {\n throw Error(`Column may have 'prop' or 'name' defined.`)\n }\n\n const internalCol = this._getInternalColumn(prop)\n\n const inpColDif = this._getColDif(inpCol, ColumnsTypes.Input)\n if (notNullOrUndefined(inpColDif)) {\n this._updateColDif(inpColDif, internalCol, inpCol)\n }\n\n const tplCol = this._findColumnByProp(prop, templateColumns)\n if (tplCol !== undefined) {\n const tplColDif = this._getColDif(tplCol, ColumnsTypes.Template)\n if (notNullOrUndefined(tplColDif)) {\n this._updateColDif(tplColDif, internalCol, tplCol)\n }\n }\n\n const _col: TheSeamDatatableColumn = {\n ...(internalCol || {}),\n ...inpCol,\n // TODO: Rethink this, because I don't know if this is correct.\n ...(tplCol as any || {})\n }\n\n if (this._shouldAddTreeToggleColumn(_col)) {\n _col.treeToggleTemplate = this._treeToggleTpl\n }\n\n if (this._shouldAddHeaderTemplate(_col)) {\n _col.headerTemplate = this._headerTpl\n }\n\n if (this._shouldAddCellTypeSelectorTpl(_col)) {\n _col.cellTemplate = this._cellTypeSelectorTpl\n }\n\n cols.push(_col)\n }\n\n if (this._shouldAddRowActionColumn()) {\n cols.push(createActionMenuColumn(this._actionMenuCellTpl, this._blankHeaderTpl))\n }\n\n // Make sure the default for any missing props are set.\n // TODO: Determine if this should be done earlier, because I don't like\n // how this is done after dif checks.\n setColumnDefaults(cols)\n\n return cols\n }\n\n private _getInternalColumns(): TableColumn[] | undefined {\n if (this._internalColumnsGetter === undefined) {\n return undefined\n }\n\n return this._internalColumnsGetter()\n }\n\n private _getInternalColumn(prop: TableColumnProp): TableColumn | undefined {\n const internalCols = this._getInternalColumns()\n\n if (internalCols === undefined) {\n return undefined\n }\n\n return internalCols.find(c => getColumnProp(c) === prop)\n }\n\n private _findColumnByProp<T extends TheSeamDatatableColumn | DatatableColumnComponent>(\n prop: TableColumnProp,\n columns: T[]\n ): T | undefined {\n return columns.find(c => getColumnProp(c) === prop)\n }\n\n private _getDifMapForColumnsType(columnsType: ColumnsTypes): Map<TableColumnProp, KeyValueDiffer<any, any>> {\n switch (columnsType) {\n case ColumnsTypes.Input: return this._inpColDiffersMap\n case ColumnsTypes.Template: return this._tplColDiffersMap\n case ColumnsTypes.Result: return this._resultColDiffersMap\n }\n }\n\n private _getColumnDiffer(prop: TableColumnProp, colsType: ColumnsTypes): KeyValueDiffer<string, any> {\n const difMap = this._getDifMapForColumnsType(colsType)\n if (difMap === null) {\n throw Error(`Invalid columns type.`)\n }\n\n if (!difMap.has(prop)) {\n difMap.set(prop, this._differs.find({}).create())\n }\n\n const differ = difMap.get(prop)\n if (differ === undefined) {\n throw Error(`Differ not found. New differ should have been created.`)\n }\n\n return differ\n }\n\n private _getColDif(\n col: TheSeamDatatableColumn | DatatableColumnComponent,\n colsType: ColumnsTypes\n ): KeyValueChanges<string, any> | null {\n const prop = getColumnProp(col)\n if (prop === undefined) {\n throw Error(`Column prop not found.`)\n }\n\n return this._getColumnDiffer(prop, colsType).diff(col)\n }\n\n private _updateColDif(\n colDif: KeyValueChanges<string, any>,\n internalColumn: TableColumn | undefined,\n col: TheSeamDatatableColumn | DatatableColumnComponent\n ): void {\n colDif.forEachRemovedItem(r => {\n if (internalColumn && Object.prototype.hasOwnProperty.call(internalColumn, r.key)) {\n const k = r.key as keyof TableColumn\n delete internalColumn[k]\n }\n })\n colDif.forEachAddedItem(r => (col as any)[r.key] = r.currentValue)\n colDif.forEachChangedItem(r => (col as any)[r.key] = r.currentValue)\n }\n\n private _hasAddedOrRemovedColumns(columns: TheSeamDatatableColumn[]): boolean {\n if (!this._colPropsDiffer) {\n this._colPropsDiffer = this._differs.find([]).create()\n }\n\n const props = columns.map(c => getColumnProp(c))\n return this._colPropsDiffer.diff(props) !== null\n }\n\n private _hasColumnsChanged(columns: TheSeamDatatableColumn[]): boolean {\n let colChanged = false\n for (const col of columns) {\n const resultDif = this._getColDif(col, ColumnsTypes.Result)\n if (resultDif) {\n // NOTE: Can't return early, because the differs need to be updated.\n colChanged = true\n }\n }\n return colChanged\n }\n\n private _shouldAddCheckboxColumn(): boolean {\n return this._selectionType === SelectionType.checkbox\n }\n\n private _shouldAddRowActionColumn(): boolean {\n return this._rowActionItem !== undefined\n }\n\n private _shouldAddTreeToggleColumn(column: TheSeamDatatableColumn): boolean {\n return column.isTreeColumn !== undefined && column.isTreeColumn &&\n (!hasProperty(column, 'treeToggleTemplate') || !notNullOrUndefined(column.treeToggleTemplate))\n }\n\n private _shouldAddHeaderTemplate(column: TheSeamDatatableColumn): boolean {\n return !hasProperty(column, 'headerTemplate')\n }\n\n private _shouldAddCellTypeSelectorTpl(column: TheSeamDatatableColumn): boolean {\n return hasProperty(column, 'cellType')\n }\n\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { TheSeamDatatableAccessor } from '../models/datatable-accessor'\n\nexport const THESEAM_DATATABLE_ACCESSOR = new InjectionToken<TheSeamDatatableAccessor>(\n 'TheSeamDatatableAccessor'\n)\n","import { KeyValueDiffer } from '@angular/core'\n\nimport { TheSeamDatatableColumn } from './../models/table-column'\n\nexport function removeUnusedDiffs(\n cols: TheSeamDatatableColumn[],\n colDiffersInp: { [propName: string]: KeyValueDiffer<any, any> },\n colDiffersTpl: { [propName: string]: KeyValueDiffer<any, any> }\n): void {\n const inpKeys = Object.keys(colDiffersInp)\n inpKeys.filter(k => cols.findIndex(c => c.prop === k) === -1)\n .forEach(k => { delete colDiffersInp[k] })\n\n const tplKeys = Object.keys(colDiffersTpl)\n tplKeys.filter(k => cols.findIndex(c => c.prop === k) === -1)\n .forEach(k => { delete colDiffersTpl[k] })\n}\n","import { TheSeamDatatableAccessor } from './datatable-accessor'\nimport { TheSeamDatatableColumn } from './table-column'\n\nexport interface ColumnsAlterationState<TState = any> {\n readonly id: string\n readonly type: string\n readonly state: TState\n}\n\n/**\n * Alteration applied to a column or columns that can be persisted.\n *\n * Tracking if a column was altered by user or library code can be confusing.\n * This allows us to store a list of replayable alterations on columns. By\n * having a defined way to implement alterations, the datatable should be easier\n * to support external features that want to provide an alteration.\n *\n * NOTE: Current, to unapply an alteration you can create an alteration with\n * `persistent` set to false and the alteration will be removed after `apply()`\n * is called.\n */\nexport abstract class ColumnsAlteration<TState = any> {\n /**\n * This should be unique to the alteration, but determinable. When an app is\n * reloaded and alterations are restored from a persistable storage this\n * should still be recognizable.\n */\n public abstract readonly id: string\n\n /**\n * The alteration type.\n *\n * This can be used to group alteraction from a common feature.\n */\n public abstract readonly type: string\n\n constructor(\n /**\n * Persistable state.\n *\n * Returned value should be JSON stringifyable.\n */\n public state: TState,\n /**\n * If false, the state will not be persisted to a persistent storage and\n * will be removed after applied.\n */\n public readonly persistent: boolean\n ) {\n this.state = state\n }\n\n /**\n * Apply alteration to column.\n */\n public abstract apply(columns: TheSeamDatatableColumn[], datatable: TheSeamDatatableAccessor): void\n\n public toJSON(): ColumnsAlterationState<TState> {\n return {\n id: this.id,\n type: this.type,\n state: this.state\n }\n }\n}\n","import { TableColumnProp } from '@marklb/ngx-datatable'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { getColumnProp } from '../../utils/get-column-prop'\nimport { ColumnsAlteration } from '../columns-alteration'\nimport { TheSeamDatatableAccessor } from '../datatable-accessor'\nimport { TheSeamDatatableColumn } from '../table-column'\n\nexport interface HideColumnColumnsAlterationState {\n columnProp: TableColumnProp\n hidden: boolean\n}\n\nexport class HideColumnColumnsAlteration extends ColumnsAlteration<HideColumnColumnsAlterationState> {\n public readonly id: string\n\n public readonly type: string = 'hide-column'\n\n constructor(\n state: HideColumnColumnsAlterationState,\n persistent: boolean\n ) {\n super(state, persistent)\n\n if (!this._isValidState(state)) {\n throw Error(`Invalid state: ${JSON.stringify(state)}`)\n }\n\n this.id = `${this.type}--${state.columnProp}`\n }\n\n public apply(columns: TheSeamDatatableColumn<any, any>[], datatable: TheSeamDatatableAccessor): void {\n for (const col of columns) {\n const prop = getColumnProp(col)\n if (prop === this.state.columnProp) {\n col.hidden = this.state.hidden\n }\n }\n }\n\n private _isValidState(state: HideColumnColumnsAlterationState): boolean {\n // NOTE: Checking null or undefined, even though the type doesn't allow,\n // because the state may have been loaded from an invalid persistant\n // storage.\n\n // TODO: Remove when state validation/migration is implemented to happen\n // when retrieved from storage.\n if (!notNullOrUndefined(state.columnProp)) {\n return false\n }\n\n // TODO: Remove when state validation/migration is implemented to happen\n // when retrieved from storage.\n if (!notNullOrUndefined(state.hidden)) {\n return false\n }\n\n return true\n }\n}\n","import { SortType } from '@marklb/ngx-datatable'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { SortItem } from '../sort-item'\nimport { ColumnsAlteration } from '../columns-alteration'\nimport { TheSeamDatatableAccessor } from '../datatable-accessor'\nimport { TheSeamDatatableColumn } from '../table-column'\n\n// NOTE: This doesn't act on a single SortItem, because dealing with conflicts\n// between if a sort was added by an alteration or datatable input is difficult\n// to determine. There may be some good assumptions for handling the issues, but\n// for now I think it is safest to just store the whole sorts array as an\n// alteration.\nexport interface SortColumnsAlterationState {\n sorts: SortItem[]\n}\n\nexport class SortColumnsAlteration extends ColumnsAlteration<SortColumnsAlterationState> {\n public readonly id: string\n\n public readonly type: string = 'sort'\n\n constructor(\n state: SortColumnsAlterationState,\n persistent: boolean\n ) {\n super(state, persistent)\n\n if (!this._isValidState(state)) {\n throw Error(`Invalid state: ${JSON.stringify(state)}`)\n }\n\n this.id = `${this.type}`\n }\n\n public apply(columns: TheSeamDatatableColumn<any, any>[], datatable: TheSeamDatatableAccessor): void {\n if (datatable.sortType === SortType.single) {\n datatable.sorts = this.state.sorts.length > 0 ? [ this.state.sorts[0] ] : []\n } else {\n datatable.sorts = this.state.sorts\n }\n }\n\n private _isValidState(state: SortColumnsAlterationState): boolean {\n // NOTE: Checking null or undefined, even though the type doesn't allow,\n // because the state may have been loaded from an invalid persistant\n // storage.\n\n // TODO: Remove when state validation/migration is implemented to happen\n // when retrieved from storage.\n if (!notNullOrUndefined(state.sorts)) {\n return false\n }\n\n return true\n }\n}\n","import { TableColumnProp } from '@marklb/ngx-datatable'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { getColumnProp } from '../../utils/get-column-prop'\nimport { ColumnsAlteration } from '../columns-alteration'\nimport { TheSeamDatatableAccessor } from '../datatable-accessor'\nimport { TheSeamDatatableColumn } from '../table-column'\n\nexport interface WidthColumnsAlterationState {\n columnProp: TableColumnProp\n width?: number\n canAutoResize: boolean\n}\n\nexport class WidthColumnsAlteration extends ColumnsAlteration<WidthColumnsAlterationState> {\n public readonly id: string\n\n public readonly type: string = 'width'\n\n constructor(\n state: WidthColumnsAlterationState,\n persistent: boolean\n ) {\n super(state, persistent)\n\n if (!this._isValidState(state)) {\n throw Error(`Invalid state: ${JSON.stringify(state)}`)\n }\n\n this.id = `${this.type}--${state.columnProp}`\n }\n\n public apply(columns: TheSeamDatatableColumn<any, any>[], datatable: TheSeamDatatableAccessor): void {\n for (const col of columns) {\n const prop = getColumnProp(col)\n if (prop === this.state.columnProp) {\n col.canAutoResize = this.state.canAutoResize\n if (notNullOrUndefined(this.state.width)) {\n col.width = this.state.width\n }\n }\n }\n }\n\n private _isValidState(state: WidthColumnsAlterationState): boolean {\n // NOTE: Checking null or undefined, even though the type doesn't allow,\n // because the state may have been loaded from an invalid persistant\n // storage.\n\n // TODO: Remove when state validation/migration is implemented to happen\n // when retrieved from storage.\n if (!notNullOrUndefined(state.columnProp)) {\n return false\n }\n\n // TODO: Remove when state validation/migration is implemented to happen\n // when retrieved from storage.\n if (!notNullOrUndefined(state.canAutoResize)) {\n return false\n }\n\n return true\n }\n}\n","import { Injectable } from '@angular/core'\nimport { Observable, Subject } from 'rxjs'\n\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { ColumnsAlteration } from '../models/columns-alteration'\nimport { TheSeamDatatableColumn } from '../models/table-column'\nimport { TheSeamDatatableAccessor } from '../models/datatable-accessor'\nimport { HideColumnColumnsAlteration } from '../models/columns-alterations/hide-column.columns-alteration'\nimport { SortColumnsAlteration } from '../models/columns-alterations/sort.columns-alteration'\nimport { WidthColumnsAlteration } from '../models/columns-alterations/width.columns-alteration'\n\nexport interface ColumnsAlterationsChangedRecord {\n type: 'added' | 'removed'\n alteration: ColumnsAlteration\n}\n\nexport interface ColumnsAlterationsChangedEvent {\n changes: ColumnsAlterationsChangedRecord[]\n}\n\n@Injectable()\nexport class ColumnsAlterationsManagerService {\n\n private readonly _changesSubject = new Subject<ColumnsAlterationsChangedEvent>()\n private _alterations: ColumnsAlteration[] = []\n\n public readonly changes: Observable<ColumnsAlterationsChangedEvent>\n\n constructor() {\n this.changes = this._changesSubject.asObservable()\n }\n\n public get(): ColumnsAlteration[] {\n return [ ...this._alterations ]\n }\n\n /**\n * Adds alterations to be applied to columns.\n *\n * If an alteration with the same `id` already exists then the existing\n * alteration will be removed and the new one added.\n *\n * NOTE: When there is a duplicate alteration the old alteration is removed,\n * instead of updated, to maintain the order alterations are applied.\n */\n public add(alterations: ColumnsAlteration[], options?: { emitEvent?: boolean }): ColumnsAlterationsChangedRecord[] {\n // console.log('add', alterations)\n const removed: ColumnsAlterationsChangedRecord[] = this.remove(alterations, { emitEvent: false })\n this._alterations = [ ...this._alterations, ...alterations ]\n\n const changes: ColumnsAlterationsChangedRecord[] = [\n ...removed,\n ...alterations.map(a => {\n const record: ColumnsAlterationsChangedRecord = {\n type: 'added',\n alteration: a\n }\n return record\n })\n ]\n\n if (notNullOrUndefined(options?.emitEvent) && !options?.emitEvent) {\n return changes\n }\n\n this._emitChanges(changes)\n\n return changes\n }\n\n public remove(alterations: ColumnsAlteration[], options?: { emitEvent?: boolean }): ColumnsAlterationsChangedRecord[] {\n // console.log('remove', alterations)\n const removed: ColumnsAlterationsChangedRecord[] = []\n this._alterations = this._alterations.filter(x => {\n const found = alterations.findIndex(y => y.id === x.id) !== -1\n if (found) {\n const eventRecord: ColumnsAlterationsChangedRecord = {\n type: 'removed',\n alteration: x\n }\n removed.push(eventRecord)\n }\n return !found\n })\n\n // console.log('removed', removed, this._alterations)\n\n if (notNullOrUndefined(options?.emitEvent) && !options?.emitEvent) {\n return removed\n }\n\n this._emitChanges(removed)\n\n return removed\n }\n\n public apply(columns: TheSeamDatatableColumn[], datatable: TheSeamDatatableAccessor): void {\n for (const a of this._alterations) {\n a.apply(columns, datatable)\n }\n\n this._removeNonPersistant()\n }\n\n // TODO: Make aware of original column order and properties. This is tricky,\n // because the datatable does not deal with immutable column/row records and\n // it is hard to know where changes happened. Just serializing the columns\n // input is not enough, because the columns input is called anytime the user\n // makes a column change. We can probably come up with a mostly accurate\n // implementation, such as \"reset original columns cache when preferencesKey\n // changes\" or \"number of columns change\". There are issues with those rules,\n // but with some testing/experimenting I think there should be a \"good enough\"\n // solution.\n //\n // TODO: Find a generic way to clear alterations. I would like to add an\n // `unapply` method to `ColumnsAlteration`, but since the alterations\n // themselves are not too generic it may be tricky.\n public clear(options?: { emitEvent?: boolean }): ColumnsAlterationsChangedRecord[] {\n const changes: ColumnsAlterationsChangedRecord[] = []\n for (const colAlt of this._alterations) {\n switch (colAlt.type) {\n case 'hide-column': {\n const alteration = new HideColumnColumnsAlteration({ columnProp: colAlt.state.columnProp, hidden: false }, false)\n changes.push(...this.add([ alteration ]))\n break\n }\n case 'order': {\n changes.push(...this.remove([ colAlt ]))\n break\n }\n case 'sort': {\n const alteration = new SortColumnsAlteration({ sorts: [] }, false)\n changes.push(...this.add([ alteration ]))\n break\n }\n case 'width': {\n const alteration = new WidthColumnsAlteration({ columnProp: colAlt.state.columnProp, canAutoResize: true }, false)\n changes.push(...this.add([ alteration ]))\n break\n }\n }\n }\n\n if (notNullOrUndefined(options?.emitEvent) && !options?.emitEvent) {\n return changes\n }\n\n this._emitChanges(changes)\n\n return changes\n }\n\n private _removeNonPersistant(): void {\n const nonPersistent = this._alterations.filter(x => !x.persistent)\n this.remove(nonPersistent, { emitEvent: false })\n }\n\n private _emitChanges(changes: ColumnsAlterationsChangedRecord[]): void {\n if (changes.length === 0) {\n return\n }\n\n const event: ColumnsAlterationsChangedEvent = {\n changes\n }\n\n this._changesSubject.next(event)\n }\n\n}\n","import { ACTION_MENU_COLUMN_PROP } from '../utils/create-action-menu-column'\nimport { CHECKBOX_COLUMN_PROP } from '../utils/create-checkbox-column'\nimport { getColumnProp } from '../utils/get-column-prop'\nimport { TheSeamDatatableColumn } from './table-column'\n\n/**\n * Strings used for columns created and managed\n * by the datatable.\n */\nexport const INTERNAL_COLUMN_PROPS: string[] = [\n ACTION_MENU_COLUMN_PROP,\n CHECKBOX_COLUMN_PROP\n]\n\nexport function isInternalColumn(column: TheSeamDatatableColumn): boolean {\n return INTERNAL_COLUMN_PROPS.findIndex(p => getColumnProp(column) === p) !== -1\n}\n","import { isDevMode } from '@angular/core'\n\nimport { TableColumnProp } from '@marklb/ngx-datatable'\nimport { arrayMoveMutable, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { getColumnProp } from '../../utils/get-column-prop'\nimport { ColumnsAlteration } from '../columns-alteration'\nimport { TheSeamDatatableAccessor } from '../datatable-accessor'\nimport { isInternalColumn } from '../internal-column-props'\nimport { TheSeamDatatableColumn } from '../table-column'\n\nexport interface ColumnOrderRecord {\n columnProp: TableColumnProp\n index: number\n}\n\nexport interface OrderColumnsAlterationState {\n // NOTE: This stores the column index of reordered columns only, to avoid any\n // new columns from always being placed at the end. The moved columns should\n // always be accurate relative to each other, but if this becomes an issue\n // then we can just store all the columns positions.\n columns: ColumnOrderRecord[]\n}\n\nexport class OrderColumnsAlteration extends ColumnsAlteration<OrderColumnsAlterationState> {\n public readonly id: string\n\n public readonly type: string = 'order'\n\n constructor(\n state: OrderColumnsAlterationState,\n persistent: boolean\n ) {\n super(state, persistent)\n\n if (!this._isValidState(state)) {\n throw Error(`Invalid state: ${JSON.stringify(state)}`)\n }\n\n this.id = `${this.type}`\n }\n\n public apply(columns: TheSeamDatatableColumn<any, any>[], datatable: TheSeamDatatableAccessor): void {\n if (this.state.columns.length === 0) {\n return\n }\n\n const stateColumns = this._stateColumns()\n\n // The internal columns are not intended for a user to be able to move them.\n // Store the internal columns current index, so it can be moved back ofter\n // sorting. This may not be the best way to do this, but it is easier than\n // making a sort that avoids them.\n //\n // NOTE: If we add an internal column that can be moved then this will need\n // to be changed.\n const internalColumns = columns\n .map((column, index) => ({ column, index }))\n .filter(x => isInternalColumn(x.column))\n\n for (const c of stateColumns) {\n const currentIndex = columns.findIndex(x => getColumnProp(x) === c.columnProp)\n if (currentIndex === c.index || currentIndex === -1) {\n // Skip if already at correct index.\n // Skip columns not found. It may be a column that was removed from the\n // table, but we still want to handle the other columns.\n continue\n }\n\n arrayMoveMutable(columns, currentIndex, c.index)\n }\n\n for (const c of internalColumns) {\n const currentIndex = columns.findIndex(col => col === c.column)\n if (currentIndex !== -1) {\n arrayMoveMutable(columns, currentIndex, c.index)\n } else {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn(`Internal column could not be found after sorting. Was it lost during the sorting?`)\n }\n }\n }\n }\n\n private _isValidState(state: OrderColumnsAlterationState): boolean {\n // NOTE: Checking null or undefined, even though the type doesn't allow,\n // because the state may have been loaded from an invalid persistant\n // storage.\n\n // TODO: Remove when state validation/migration is implemented to happen\n // when retrieved from storage.\n if (!notNullOrUndefined(state.columns)) {\n return false\n }\n\n // NOTE: Didn't iterate each column record, because it is probably better to\n // just skip to invalid column records. It does prevent being able to\n // validate the whole state though.\n\n return true\n }\n\n private _isColumnOrderRecordValid(columnOrder: ColumnOrderRecord): boolean {\n return notNullOrUndefined(columnOrder.columnProp) && notNullOrUndefined(columnOrder.index)\n }\n\n private _stateColumns(): ColumnOrderRecord[] {\n return this.state.columns.filter(c => {\n if (!this._isColumnOrderRecordValid(c)) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('Invalid column order record', c)\n }\n return false\n }\n return true\n }).sort((a, b) => a.index === b.index ? 0 : a.index > b.index ? 1 : -1)\n }\n}\n","import { isDevMode } from '@angular/core'\n\nimport { ColumnsAlteration, ColumnsAlterationState } from '../models/columns-alteration'\nimport { HideColumnColumnsAlteration } from '../models/columns-alterations/hide-column.columns-alteration'\nimport { OrderColumnsAlteration } from '../models/columns-alterations/order.columns-alteration'\nimport { SortColumnsAlteration } from '../models/columns-alterations/sort.columns-alteration'\nimport { WidthColumnsAlteration } from '../models/columns-alterations/width.columns-alteration'\n\nexport function mapColumnsAlterationsStates(states: ColumnsAlterationState[]): ColumnsAlteration[] {\n const alterations: ColumnsAlteration[] = []\n\n for (const state of states) {\n try {\n switch (state.type) {\n case 'hide-column': alterations.push(new HideColumnColumnsAlteration(state.state, true)); break\n case 'width': alterations.push(new WidthColumnsAlteration(state.state, true)); break\n case 'order': alterations.push(new OrderColumnsAlteration(state.state, true)); break\n case 'sort': alterations.push(new SortColumnsAlteration(state.state, true)); break\n default: {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('Unrecognized ColumnsAlteration state', state)\n }\n }\n }\n } catch (e) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('Unable to map ColumnsAlteration state', state)\n // eslint-disable-next-line no-console\n console.warn(e)\n }\n }\n }\n\n return alterations\n}\n","import { TheSeamPreferencesBase } from '@theseam/ui-common/services'\n\nimport { ColumnsAlterationState } from './columns-alteration'\n\nexport interface TheSeamDatatablePreferencesColumn {\n prop: string\n width?: number\n canAutoResize?: boolean\n hidden?: boolean\n}\n\nexport interface TheSeamDatatablePreferences_v1 {\n columns?: TheSeamDatatablePreferencesColumn[]\n}\n\nexport interface TheSeamDatatablePreferences_v2 extends TheSeamPreferencesBase {\n version: 2\n alterations: ColumnsAlterationState[]\n}\n\nexport type TheSeamDatatablePreferences = TheSeamDatatablePreferences_v2\n\nexport const CURRENT_DATATABLE_PREFERENCES_VERSION = 2\n\nexport const EMPTY_DATATABLE_PREFERENCES: TheSeamDatatablePreferences = {\n version: 2,\n alterations: []\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { TheSeamPreferencesAccessor } from '@theseam/ui-common/services'\n\nexport const THESEAM_DATATABLE_PREFERENCES_ACCESSOR = new InjectionToken<TheSeamPreferencesAccessor>(\n 'TheSeamDatatablePreferencesAccessor'\n)\n","import { Inject, Injectable, Optional } from '@angular/core'\nimport { Observable, of } from 'rxjs'\nimport { map, switchMap, take, tap } from 'rxjs/operators'\n\nimport { TheSeamPreferencesAccessor, TheSeamPreferencesBase, TheSeamPreferencesManagerService } from '@theseam/ui-common/services'\n\nimport { CURRENT_DATATABLE_PREFERENCES_VERSION, EMPTY_DATATABLE_PREFERENCES, TheSeamDatatablePreferences } from '../models/preferences'\nimport { THESEAM_DATATABLE_PREFERENCES_ACCESSOR } from '../tokens/datatable-preferences-accessor'\nimport { ColumnsAlterationState } from '../models/columns-alteration'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DatatablePreferencesService {\n\n // TODO: Remove the need for this internal pending flag. I only kept it for\n // backwards compatibility, until better tests are added to make sure if isn't\n // neccessary anymore.\n\n /**\n * Used to prevent multiple updates from happening at the same time, but it is not per key.\n */\n private _pending = false\n\n constructor(\n private readonly _preferencesManager: TheSeamPreferencesManagerService,\n @Optional() @Inject(THESEAM_DATATABLE_PREFERENCES_ACCESSOR) private _prefsAccessor?: TheSeamPreferencesAccessor\n ) { }\n\n public isPending(preferenceKey: string): boolean {\n return this._pending || this._preferencesManager.isPending(preferenceKey)\n }\n\n public isLoaded(preferenceKey: string): boolean {\n if (this._pending) {\n return false\n }\n return this._preferencesManager.isLoaded(preferenceKey)\n }\n\n public preferences(preferenceKey: string): Observable<TheSeamDatatablePreferences> {\n if (!this._prefsAccessor) {\n return of(JSON.parse(JSON.stringify(EMPTY_DATATABLE_PREFERENCES)))\n }\n\n return this._preferencesManager.preferences(preferenceKey, this._prefsAccessor, EMPTY_DATATABLE_PREFERENCES).pipe(\n map(prefs => {\n if (this._isValidDatatablePreferences(prefs)) {\n return prefs\n }\n throw Error(`Preferences for key '${preferenceKey}' is not a valid datatable preferences.`)\n })\n )\n }\n\n public refresh(preferenceKey: string): void {\n this._preferencesManager.refresh(preferenceKey)\n }\n\n public setAlterations(preferenceKey: string, alterations: ColumnsAlterationState[]): void {\n if (!this._prefsAccessor) {\n return\n }\n\n this._pending = true\n this.preferences(preferenceKey).pipe(\n map(prefs => {\n // Making the preferences immutable may not be necessary, but for now\n // this obj->str->obj will work as a naive clone.\n // const columns = JSON.parse(JSON.stringify(prefs.columns || []))\n // const _colPref = columns.find((c: any) => c.prop === column.prop)\n // // console.log('has', _colPref)\n // if (_colPref) {\n // // console.log('hasProperty(column, \"width\"))', hasProperty(column, 'width'))\n // if (hasProperty(column, 'width')) { _colPref.width = column.width }\n // if (hasProperty(column, 'canAutoResize')) { _colPref.canAutoResize = column.canAutoResize }\n // if (hasProperty(column, 'hidden')) { _colPref.hidden = column.hidden }\n // } else {\n // columns.push({ ...column })\n // }\n // const newPrefs: TheSeamDatatablePreferences = { ...prefs, columns }\n // return newPrefs\n\n const newPrefs: TheSeamDatatablePreferences = {\n ...EMPTY_DATATABLE_PREFERENCES,\n alterations\n }\n this._pending = false\n return newPrefs\n }),\n // tap(v => console.log('newPrefs', v)),\n take(1),\n switchMap(newPrefs => this._prefsAccessor\n ? this._prefsAccessor.update(preferenceKey, JSON.stringify(newPrefs))\n : of(newPrefs)\n ),\n tap(() => this.refresh(preferenceKey))\n )\n .subscribe()\n }\n\n private _isValidDatatablePreferences(prefs: TheSeamPreferencesBase): prefs is TheSeamDatatablePreferences {\n return prefs.version === CURRENT_DATATABLE_PREFERENCES_VERSION\n }\n\n}\n","import { animate, style, transition, trigger } from '@angular/animations'\nimport { BooleanInput, coerceArray, NumberInput } from '@angular/cdk/coercion'\nimport { CollectionViewer, DataSource, isDataSource, ListRange } from '@angular/cdk/collections'\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostListener,\n InjectionToken,\n Input,\n isDevMode,\n KeyValueDiffer,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild\n} from '@angular/core'\nimport { BehaviorSubject, from, isObservable, Observable, of, Subject, Subscription } from 'rxjs'\nimport { concatMap, distinctUntilChanged, map, startWith, switchMap, take, takeUntil, tap } from 'rxjs/operators'\n\nimport { faChevronDown, faChevronRight, faSpinner } from '@fortawesome/free-solid-svg-icons'\nimport {\n ColumnMode,\n ContextmenuType,\n DataTableColumnCellTreeToggle,\n DataTableColumnDirective,\n DataTableColumnHeaderDirective,\n DatatableComponent as NgxDatatableComponent,\n DatatableRowDetailDirective,\n SortType,\n TreeStatus\n} from '@marklb/ngx-datatable'\nimport type { SelectionType } from '@marklb/ngx-datatable'\n\nimport { InputBoolean, InputNumber } from '@theseam/ui-common/core'\nimport { composeDataFilters, composeDataFilterStates, DataFilter, DataFilterState } from '@theseam/ui-common/data-filters'\nimport { IElementResizedEvent } from '@theseam/ui-common/shared'\nimport { notNullOrUndefined, waitOnConditionAsync } from '@theseam/ui-common/utils'\n\nimport { DatatableActionMenuComponent } from '../datatable-action-menu/datatable-action-menu.component'\nimport { DatatableColumnComponent } from '../datatable-column/datatable-column.component'\nimport { TheSeamDatatableFooterDirective } from '../datatable-footer/datatable-footer.directive'\nimport { DatatableMenuBarComponent } from '../datatable-menu-bar/datatable-menu-bar.component'\nimport { TheSeamDatatableRowDetailDirective } from '../datatable-row-detail/datatable-row-detail.directive'\nimport { DatatableRowActionItemDirective } from '../directives/datatable-row-action-item.directive'\nimport { TheSeamDatatableAccessor } from '../models/datatable-accessor'\nimport { DatatableDataSource } from '../models/datatable-data-source'\nimport { TheSeamPageInfo } from '../models/page-info'\nimport { SortEvent } from '../models/sort-event'\nimport { SortItem } from '../models/sort-item'\nimport { TheSeamDatatableColumn } from '../models/table-column'\nimport { ColumnsManagerService } from '../services/columns-manager.service'\nimport { DatatableColumnChangesService } from '../services/datatable-column-changes.service'\nimport { DatatablePreferencesService } from '../services/datatable-preferences.service'\nimport { THESEAM_DATATABLE_ACCESSOR } from '../tokens/datatable-accessor'\nimport { removeUnusedDiffs } from '../utils/remove-unused-diffs'\nimport { translateTemplateColumns } from '../utils/translate-templates'\nimport { ColumnsAlterationsManagerService } from '../services/columns-alterations-manager.service'\nimport { ColumnsAlteration } from '../models/columns-alteration'\nimport { mapColumnsAlterationsStates } from '../utils/map-columns-alterations-states'\nimport { WidthColumnsAlteration } from '../models/columns-alterations/width.columns-alteration'\nimport { getColumnProp } from '../utils/get-column-prop'\nimport { OrderColumnsAlteration, OrderColumnsAlterationState } from '../models/columns-alterations/order.columns-alteration'\nimport { SortColumnsAlteration } from '../models/columns-alterations/sort.columns-alteration'\n\n/**\n * NOTE: This is still being worked on. I am trying to figure out this model\n * because `ngx-datatable` just uses an untyped object and sets properties in\n * multiple places.\n */\nexport interface ICellContext {\n allRowsSelected: false\n\n selectFn: () => any\n sortDir?: 'asc' | 'desc'\n sortFn: () => any\n\n expanded?: boolean\n\n onCheckboxChangeFn?: any\n activateFn?: any\n row?: any\n group?: any\n value?: any\n column?: TheSeamDatatableColumn\n rowHeight?: number\n isSelected?: boolean\n rowIndex?: number\n treeStatus?: TreeStatus\n onTreeAction?: any\n}\n\n/**\n * Intended for internal classes declared by the `TheSeamDatatableModule`.\n */\nexport const THESEAM_DATATABLE = new InjectionToken<DataFilter>('LibDatatable')\n\nexport const _THESEAM_DATATABLE: any = {\n provide: THESEAM_DATATABLE,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DatatableComponent)\n}\n\nexport const _THESEAM_DATATABLE_ACCESSOR: any = {\n provide: THESEAM_DATATABLE_ACCESSOR,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DatatableComponent)\n}\n\n@Component({\n selector: 'seam-datatable',\n templateUrl: './datatable.component.html',\n styleUrls: ['./datatable.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('slideDown', [\n transition(':enter', [\n style({ transform: 'translateY(-20%)', opacity: '0' }),\n animate('250ms', style({ transform: 'translateY(0)', opacity: '1' })),\n ]),\n transition(':leave', [\n style({ transform: 'translateY(0)', opacity: '1' }),\n animate('250ms', style({ transform: 'translateY(-20%)', opacity: '0' })),\n ])\n ])\n ],\n providers: [\n _THESEAM_DATATABLE,\n DatatableColumnChangesService,\n _THESEAM_DATATABLE_ACCESSOR,\n ColumnsManagerService,\n ColumnsAlterationsManagerService,\n ]\n})\nexport class DatatableComponent\n implements OnInit, OnDestroy, TheSeamDatatableAccessor, CollectionViewer {\n static ngAcceptInputType_externalPaging: BooleanInput\n static ngAcceptInputType_externalSorting: BooleanInput\n static ngAcceptInputType_externalFiltering: BooleanInput\n static ngAcceptInputType_loadingIndicator: BooleanInput\n static ngAcceptInputType_reorderable: BooleanInput\n static ngAcceptInputType_swapColumns: BooleanInput\n static ngAcceptInputType_groupExpansionDefault: BooleanInput\n static ngAcceptInputType_selectAllRowsOnPage: BooleanInput\n static ngAcceptInputType_summaryRow: BooleanInput\n static ngAcceptInputType_virtualization: BooleanInput\n static ngAcceptInputType_scrollbarV: BooleanInput\n static ngAcceptInputType_scrollbarH: BooleanInput\n static ngAcceptInputType_limit: NumberInput\n static ngAcceptInputType_count: NumberInput\n static ngAcceptInputType_offset: NumberInput\n static ngAcceptInputType_headerHeight: NumberInput\n static ngAcceptInputType_rowHeight: NumberInput\n static ngAcceptInputType_footerHeight: NumberInput\n static ngAcceptInputType_summaryHeight: NumberInput\n static ngAcceptInputType_columns: TheSeamDatatableColumn[] | undefined | null\n static ngAcceptInputType_sorts: SortItem[] | undefined | null\n\n readonly _faChevronDown = faChevronDown\n readonly _faChevronRight = faChevronRight\n readonly _faSpinner = faSpinner\n\n private readonly _ngUnsubscribe = new Subject()\n private readonly _filtersSubject = new BehaviorSubject<DataFilter[]>([])\n private readonly _dataSourceSubject = new BehaviorSubject<DataSource<any> | any[] | undefined>(undefined)\n\n private _resizing: { [prop: string]: boolean } = {}\n\n public readonly filterStates: Observable<DataFilterState[]>\n\n get filters(): DataFilter[] { return this._filtersSubject.value }\n\n public readonly filters$: Observable<DataFilter[]>\n\n @Input()\n get preferencesKey(): string | undefined | null { return this._preferencesKey.value }\n set preferencesKey(value: string | undefined | null) { this._preferencesKey.next(value || undefined) }\n private _preferencesKey = new BehaviorSubject<string | undefined | null>(undefined)\n\n @Input() targetMarkerTemplate: any\n\n @Input()\n set columns(value: TheSeamDatatableColumn[]) {\n this._columnsManager.setInputColumns(Array.isArray(value) ? value : [])\n }\n\n @Input()\n get rows(): any[] { return this._rows.value }\n set rows(value: any[]) {\n this._rows.next(value || [])\n }\n private _rows = new BehaviorSubject<any[]>([])\n\n public rows$: Observable<any[]>\n\n @Input() columnMode: ColumnMode | undefined | null = ColumnMode.force\n\n @Input() groupRowsBy: string | undefined | null\n @Input() groupedRows: any[] | undefined | null\n\n @Input() selected: any[] | undefined | null = []\n\n @Input() @InputBoolean() externalPaging = false\n @Input() @InputBoolean() externalSorting = false\n @Input() @InputBoolean() externalFiltering = false\n\n @Input() @InputNumber() limit: number | undefined\n @Input() @InputNumber(0) count = 0\n @Input() @InputNumber(0) offset = 0\n\n @Input() @InputBoolean() loadingIndicator = false\n\n @Input()\n get selectionType(): SelectionType | undefined | null { return this._columnsManager.getSelectionType() }\n set selectionType(value: SelectionType | undefined | null) {\n this._columnsManager.setSelectionType(notNullOrUndefined(value) ? value : undefined)\n }\n\n @Input() @InputBoolean() reorderable = true\n @Input() @InputBoolean() swapColumns = false\n\n @Input()\n get sortType(): SortType { return this._sortType }\n set sortType(value: SortType) {\n if (notNullOrUndefined(value) && (value === SortType.single || value === SortType.multi)) {\n this._sortType = value\n } else {\n this._sortType = SortType.single\n }\n }\n _sortType: SortType = SortType.single\n\n @Input()\n get sorts(): SortItem[] {\n return this.ngxDatatable ? this.ngxDatatable.sorts : this._sorts\n }\n set sorts(value: SortItem[]) {\n this._sorts = notNullOrUndefined(value) ? coerceArray(value) : []\n }\n _sorts: SortItem[] = []\n\n @Input() cssClasses: any | undefined | null = {\n sortAscending: 'datatable-icon-up',\n sortDescending: 'datatable-icon-down',\n pagerLeftArrow: 'datatable-icon-left',\n pagerRightArrow: 'datatable-icon-right',\n pagerPrevious: 'datatable-icon-prev',\n pagerNext: 'datatable-icon-skip'\n }\n\n @Input() messages: any | undefined | null = {\n // Message to show when array is presented\n // but contains no values\n emptyMessage: 'No records found',\n\n // Footer total message\n totalMessage: 'total',\n\n // Footer selected message\n selectedMessage: 'selected'\n }\n\n @Input() rowIdentity: ((x: any) => any) | undefined | null = (x: any) => x\n\n @Input() rowClass: any | undefined | null\n\n @Input() selectCheck: any | undefined | null\n @Input() displayCheck: ((row: any, column?: any, value?: any) => boolean) | undefined | null\n\n @Input() @InputBoolean() groupExpansionDefault = false\n\n @Input() trackByProp: string | undefined | null\n\n @Input() @InputBoolean() selectAllRowsOnPage = false\n\n @Input() treeFromRelation: string | undefined | null\n @Input() treeToRelation: string | undefined | null\n @Input() @InputBoolean() summaryRow = false\n @Input() @InputNumber() summaryHeight = 30\n @Input() summaryPosition: string | undefined | null = 'top'\n\n @Input() @InputBoolean() virtualization = true\n\n @Input() @InputNumber() headerHeight = 50\n @Input() @InputNumber() rowHeight = 50\n @Input() @InputNumber() footerHeight = 40\n\n @Input() @InputBoolean() scrollbarV = true\n @Input() @InputBoolean() scrollbarH = true\n\n @Input()\n set dataSource(value: DataSource<any> | any[] | undefined | null) {\n if (value instanceof DatatableDataSource) {\n value.setDatatableAccessor(this)\n }\n this._dataSourceSubject.next(value || undefined)\n }\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly scroll = new EventEmitter<any>()\n @Output() readonly activate = new EventEmitter<any>()\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly select = new EventEmitter<any>()\n @Output() readonly sort = new EventEmitter<SortEvent>()\n @Output() readonly page = new EventEmitter<TheSeamPageInfo>()\n @Output() readonly reorder = new EventEmitter<any>()\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly resize = new EventEmitter<any>()\n @Output() readonly tableContextmenu = new EventEmitter<{ event: MouseEvent, type: ContextmenuType, content: any }>(false)\n @Output() readonly treeAction = new EventEmitter<any>()\n\n @Output() readonly actionRefreshRequest = new EventEmitter<void>()\n @Output() readonly hiddenColumnsChange = new EventEmitter<string[]>()\n\n @ContentChildren(DatatableColumnComponent)\n set columnComponents(value: QueryList<DatatableColumnComponent> | undefined) {\n this._columnsManager.setTemplateColumns(translateTemplateColumns(value?.toArray() ?? []))\n }\n\n @ContentChild(DatatableActionMenuComponent, { static: true }) actionMenu?: DatatableActionMenuComponent\n @ContentChild(DatatableRowActionItemDirective, { static: true })\n get rowActionItem(): DatatableRowActionItemDirective | undefined { return this._rowActionItem }\n set rowActionItem(value: DatatableRowActionItemDirective | undefined) {\n this._rowActionItem = value\n this._columnsManager.setRowActionItem(notNullOrUndefined(value) ? value : undefined)\n }\n private _rowActionItem: DatatableRowActionItemDirective | undefined\n\n @ContentChild(TheSeamDatatableRowDetailDirective, { static: true }) rowDetail?: TheSeamDatatableRowDetailDirective\n @ContentChild(TheSeamDatatableFooterDirective, { static: true }) footer?: TheSeamDatatableFooterDirective\n\n @ContentChild(DatatableMenuBarComponent)\n get menuBarComponent(): DatatableMenuBarComponent | undefined { return this._menuBarComponent }\n set menuBarComponent(value: DatatableMenuBarComponent | undefined) {\n this._menuBarComponent = value\n\n if (this._menuBarSub) { this._menuBarSub.unsubscribe() }\n\n if (value) {\n this._setMenuBarFilters(value.filters())\n\n this._menuBarSub = this._menuBarComponent?.filtersChanged\n .subscribe(v => { this._setMenuBarFilters(value.filters()) })\n }\n }\n private _menuBarComponent: DatatableMenuBarComponent | undefined\n private _menuBarSub: Subscription | undefined\n\n @ViewChild(NgxDatatableComponent) ngxDatatable?: NgxDatatableComponent\n @ViewChild(NgxDatatableComponent, { read: ElementRef }) ngxDatatableElement?: ElementRef\n @ViewChild(DatatableRowDetailDirective) ngxRowDetail?: DatatableRowDetailDirective\n\n @ViewChild('actionMenuCellTpl', { static: true })\n get actionMenuCellTpl(): TemplateRef<DataTableColumnDirective> | undefined { return this._actionMenuCellTpl }\n set actionMenuCellTpl(value: TemplateRef<DataTableColumnDirective> | undefined) {\n this._actionMenuCellTpl = value\n this._columnsManager.setActionMenuCellTpl(notNullOrUndefined(value) ? value : undefined)\n }\n private _actionMenuCellTpl: TemplateRef<DataTableColumnDirective> | undefined\n\n @ViewChild('treeToggleTpl', { static: true })\n get treeToggleTpl(): TemplateRef<DataTableColumnCellTreeToggle> | undefined { return this._treeToggleTpl }\n set treeToggleTpl(value: TemplateRef<DataTableColumnCellTreeToggle> | undefined) {\n this._treeToggleTpl = value\n this._columnsManager.setTreeToggleTpl(notNullOrUndefined(value) ? value : undefined)\n }\n private _treeToggleTpl: TemplateRef<DataTableColumnCellTreeToggle> | undefined\n\n @ViewChild('headerTpl', { static: true })\n get headerTpl(): TemplateRef<DataTableColumnHeaderDirective> | undefined { return this._headerTpl }\n set headerTpl(value: TemplateRef<DataTableColumnHeaderDirective> | undefined) {\n this._headerTpl = value\n this._columnsManager.setHeaderTpl(notNullOrUndefined(value) ? value : undefined)\n }\n private _headerTpl: TemplateRef<DataTableColumnHeaderDirective> | undefined\n\n @ViewChild('blankHeaderTpl', { static: true })\n get blankHeaderTpl(): TemplateRef<DataTableColumnHeaderDirective> | undefined { return this._blankHeaderTpl }\n set blankHeaderTpl(value: TemplateRef<DataTableColumnHeaderDirective> | undefined) {\n this._blankHeaderTpl = value\n this._columnsManager.setBlankHeaderTpl(notNullOrUndefined(value) ? value : undefined)\n }\n private _blankHeaderTpl: TemplateRef<DataTableColumnHeaderDirective> | undefined\n\n @ViewChild('cellTypeSelectorTpl', { static: true })\n get cellTypeSelectorTpl(): TemplateRef<DataTableColumnDirective> | undefined { return this._cellTypeSelectorTpl }\n set cellTypeSelectorTpl(value: TemplateRef<DataTableColumnDirective> | undefined) {\n this._cellTypeSelectorTpl = value\n this._columnsManager.setCellTypeSelectorTpl(notNullOrUndefined(value) ? value : undefined)\n }\n private _cellTypeSelectorTpl: TemplateRef<DataTableColumnDirective> | undefined\n\n public columnComponents$?: Observable<DatatableColumnComponent[]>\n private _colDiffersInp: { [propName: string]: KeyValueDiffer<any, any> } = {}\n private _colDiffersTpl: { [propName: string]: KeyValueDiffer<any, any> } = {}\n\n public readonly columns$: Observable<TheSeamDatatableColumn[]>\n public readonly displayColumns$: Observable<TheSeamDatatableColumn[]>\n\n viewChange: Observable<ListRange>\n\n private _rowDetailToggleSubscription = Subscription.EMPTY\n\n // TODO: Remove this DOM-dependent code when a way to property listen for\n // dblclick on the header reasize handles.\n @HostListener('dblclick', [ '$event' ])\n _dblClick(event: any) {\n const isHandle = (event.target as HTMLElement).classList.contains('resize-handle')\n if (isHandle) {\n const isResizeable = (event.target as HTMLElement).parentElement?.classList.contains('resizeable')\n if (isResizeable) {\n event.stopPropagation()\n const id = (event.target as HTMLElement).parentElement\n ?.querySelector('.datatable-column-header-separator')\n ?.getAttribute('data-column-id')\n this._columnsManager.columns$.pipe(\n take(1),\n ).subscribe(columns => {\n const column = columns.find(c => c.$$id === id)\n if (column) {\n const columnProp = getColumnProp(column)\n if (columnProp) {\n const alteration = new WidthColumnsAlteration({ columnProp, canAutoResize: true }, false)\n this._columnsAlterationsManager.add([ alteration ])\n }\n }\n })\n }\n }\n }\n\n constructor(\n private readonly _preferences: DatatablePreferencesService,\n private readonly _columnsManager: ColumnsManagerService,\n private readonly _columnsAlterationsManager: ColumnsAlterationsManagerService,\n ) {\n this._preferencesKey.pipe(\n distinctUntilChanged(),\n switchMap(key => {\n if (!notNullOrUndefined(key) || key.length === 0) {\n return of(undefined)\n }\n\n return from(waitOnConditionAsync(() => this._preferences.isLoaded(key))).pipe(\n switchMap(() => this._columnsAlterationsManager.changes.pipe(\n startWith(undefined),\n tap(() => {\n this._preferences.setAlterations(key, this._columnsAlterationsManager.get())\n }),\n ))\n )\n }),\n takeUntil(this._ngUnsubscribe),\n ).subscribe()\n\n const applyPrefs = (cols: TheSeamDatatableColumn[]) => this._columnsAlterationsManager.changes.pipe(\n startWith(undefined),\n map(() => {\n this._columnsAlterationsManager.apply(cols, this)\n return cols\n }),\n )\n\n this._preferencesKey.pipe(\n distinctUntilChanged(),\n switchMap(prefsKey => {\n if (!notNullOrUndefined(prefsKey)) {\n return of(undefined)\n }\n return this._preferences.preferences(prefsKey).pipe(\n switchMap(async preferences => {\n await waitOnConditionAsync(() => this._preferences.isLoaded(prefsKey))\n return preferences\n }),\n take(1),\n map(preferences => {\n let alterations: ColumnsAlteration[] = []\n try {\n alterations = mapColumnsAlterationsStates(preferences.alterations)\n } catch (e) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('Unable to map columns alterations states')\n // eslint-disable-next-line no-console\n console.warn(e)\n }\n }\n\n this._columnsAlterationsManager.add(alterations)\n })\n )\n }),\n takeUntil(this._ngUnsubscribe)\n ).subscribe()\n\n this.columns$ = this._columnsManager.columns$\n\n this.displayColumns$ = this.columns$.pipe(\n switchMap(cols => applyPrefs(cols)),\n map(cols => cols.filter(c => !c.hidden)),\n tap(v => removeUnusedDiffs(v, this._colDiffersInp, this._colDiffersTpl)),\n )\n\n this.filters$ = this._filtersSubject.asObservable()\n\n this.filterStates = this._filtersSubject.asObservable().pipe(\n switchMap(filters => composeDataFilterStates(filters))\n )\n\n this.rows$ = this._dataSourceSubject.pipe(\n switchMap(dataSource => {\n // console.log('dataSource', dataSource)\n let dataStream: Observable<any[]>\n\n if (isDataSource(dataSource)) {\n // console.log('~datasource')\n dataStream = dataSource.connect(this) as any\n } else if (isObservable(dataSource)) {\n // console.log('~observable')\n dataStream = dataSource as any\n } else if (Array.isArray(dataSource)) {\n // console.log('~array')\n dataStream = of(dataSource)\n } else {\n // console.log('~rows fallback')\n dataStream = this._rows.asObservable()\n // .pipe(tap(v => console.log('rows~', v)))\n }\n\n if (!this.externalFiltering) {\n // console.log('not using externalFiltering')\n dataStream = dataStream.pipe(\n switchMap(rows => this._filtersSubject.pipe(\n // tap(v => console.log('filters', v)),\n concatMap(filters => of(rows).pipe(composeDataFilters(filters))),\n // tap(v => console.log('composed filters', v)),\n ))\n )\n\n // dataStream = this._filtersSubject.pipe(\n // tap(v => console.log('filters', v)),\n // concatMap(filters => dataStream.pipe(composeDataFilters(filters))),\n // tap(v => console.log('composed filters', v)),\n // )\n }\n\n return dataStream.pipe(\n // tap(v => console.log('stream', v)),\n takeUntil(this._ngUnsubscribe)\n )\n })\n )\n\n // TODO: Implement viewChange for CollectionViewer.\n this.viewChange = this.page.pipe(map(p => ({ start: 0, end: p.count })))\n }\n\n ngOnInit() {\n if (this.rowDetail) {\n this._rowDetailToggleSubscription = this.rowDetail._toggle.subscribe(event => {\n if (this.ngxRowDetail) {\n this.ngxRowDetail.toggle.emit(event)\n }\n })\n }\n }\n\n ngOnDestroy() {\n this._rowDetailToggleSubscription.unsubscribe()\n }\n\n private _setMenuBarFilters(filters: DataFilter[]) {\n this._filtersSubject.next(filters || [])\n }\n\n public getColumnComponent(propName: string): DatatableColumnComponent | null {\n if (!this.columnComponents || this.columnComponents.length === 0) {\n return null\n }\n\n const tpl = this.columnComponents.find(t => t.prop === propName)\n if (tpl) {\n return tpl\n }\n\n return null\n }\n\n _columnData(col: any): { col: any, comp: DatatableColumnComponent | null } {\n const comp = this.getColumnComponent(col.prop)\n return { col, comp }\n }\n\n _getRowExpanded(row: any) {\n if (this.ngxDatatable && this.ngxDatatable.bodyComponent) {\n return this.ngxDatatable.bodyComponent.getRowExpanded(row)\n }\n return false\n }\n\n public trackByFnColumn(index: number, item: any) {\n return item.prop\n }\n\n public onDatatableResize(event: IElementResizedEvent) {\n if (this.ngxDatatable && this.ngxDatatableElement && this.ngxDatatableElement.nativeElement) {\n // TODO: Consider integrating this into the ngx-datatable library to avoid\n // multiple resize calls when the table resizes itself.\n this.ngxDatatable.recalculate()\n }\n }\n\n _onResize(event: any) {\n this.resize.emit(event)\n\n if (!notNullOrUndefined(event.column)) {\n return\n }\n\n const columnProp = getColumnProp(event.column)\n if (columnProp) {\n let addAlteration = false\n\n if (!this._resizing[columnProp]) {\n this._resizing[columnProp] = true\n addAlteration = true\n }\n\n if (event.isDone) {\n this._resizing[columnProp] = false\n addAlteration = true\n }\n\n if (addAlteration) {\n const alteration = new WidthColumnsAlteration({\n columnProp,\n width: event.column.width,\n canAutoResize: false\n }, true)\n this._columnsAlterationsManager.add([ alteration ])\n }\n }\n }\n\n _onReorder(event: any): void {\n this.reorder.emit(event)\n\n const columnProp = getColumnProp(event.column)\n if (columnProp) {\n const currentOrderAlteration = this._columnsAlterationsManager.get().find(x => x.type === 'order')\n const state: OrderColumnsAlterationState = {\n columns: [\n ...(currentOrderAlteration?.state.columns || []),\n { columnProp, index: event.newValue }\n ]\n }\n const alteration = new OrderColumnsAlteration(state, true)\n this._columnsAlterationsManager.add([ alteration ])\n }\n }\n\n _onSort(event: any): void {\n this.sort.emit(event)\n\n const alteration = new SortColumnsAlteration({ sorts: event.sorts }, true)\n this._columnsAlterationsManager.add([ alteration ])\n }\n\n _onTreeAction(event: any) {\n const index = event.rowIndex\n const row = event.row\n if (row.treeStatus === 'collapsed') {\n row.treeStatus = 'expanded'\n } else {\n row.treeStatus = 'collapsed'\n }\n this.rows = [ ...this.rows ]\n }\n\n public triggerActionRefreshRequest() {\n this.actionRefreshRequest.emit(undefined)\n }\n\n /**\n * Returns the page info from the wrapped NgxDatatable instance or defaults.\n */\n public get pageInfo(): TheSeamPageInfo {\n return {\n offset: this.ngxDatatable?.offset ?? 0,\n pageSize: this.ngxDatatable?.pageSize ?? 0,\n limit: this.ngxDatatable?.limit,\n count: this.ngxDatatable?.count ?? 0\n }\n }\n\n}\n","<div class=\"datatable-wrapper\">\n <ng-content select=\"seam-datatable-menu-bar\"></ng-content>\n <div class=\"datatable-table-wrapper\">\n <ng-container>\n <ngx-datatable\n [columnMode]=\"$any(columnMode)\"\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH\"\n [virtualization]=\"virtualization\"\n [targetMarkerTemplate]=\"targetMarkerTemplate\"\n [groupRowsBy]=\"$any(groupRowsBy)\"\n [groupedRows]=\"$any(groupedRows)\"\n [selected]=\"$any(selected)\"\n [externalPaging]=\"externalPaging\"\n [externalSorting]=\"externalSorting\"\n [limit]=\"$any(limit)\"\n [count]=\"$any(count)\"\n [offset]=\"$any(offset)\"\n [loadingIndicator]=\"loadingIndicator\"\n [selectionType]=\"$any(selectionType)\"\n [reorderable]=\"reorderable\"\n [swapColumns]=\"swapColumns\"\n [sortType]=\"$any(sortType)\"\n [sorts]=\"$any(_sorts)\"\n [cssClasses]=\"cssClasses\"\n [messages]=\"messages\"\n [rowIdentity]=\"$any(rowIdentity)\"\n [rowClass]=\"rowClass\"\n [selectCheck]=\"selectCheck\"\n [displayCheck]=\"$any(displayCheck)\"\n [groupExpansionDefault]=\"groupExpansionDefault\"\n [trackByProp]=\"$any(trackByProp)\"\n [selectAllRowsOnPage]=\"selectAllRowsOnPage\"\n [treeFromRelation]=\"$any(treeFromRelation)\"\n [treeToRelation]=\"$any(treeToRelation)\"\n [summaryRow]=\"summaryRow\"\n [summaryHeight]=\"$any(summaryHeight)\"\n [summaryPosition]=\"$any(summaryPosition)\"\n [rows]=\"rows$ | async\"\n [columns]=\"$any(displayColumns$ | async)\"\n [headerHeight]=\"$any(headerHeight)\"\n [rowHeight]=\"$any(rowHeight)\"\n [footerHeight]=\"$any(footerHeight)\"\n (scroll)=\"scroll.emit($event)\"\n (activate)=\"activate.emit($event)\"\n (select)=\"select.emit($event)\"\n (sort)=\"_onSort($event)\"\n (page)=\"page.emit($event)\"\n (reorder)=\"_onReorder($event)\"\n (resize)=\"_onResize($event)\"\n (tableContextmenu)=\"tableContextmenu.emit($event)\"\n (treeAction)=\"treeAction.emit($event)\"\n (seamElemResized)=\"onDatatableResize($event)\"\n (treeAction)=\"_onTreeAction($event)\">\n\n <ngx-datatable-group-header [rowHeight]=\"50\" #myGroupHeader *ngIf=\"groupRowsBy\">\n <ng-template let-group=\"group\" let-expanded=\"expanded\" ngx-datatable-group-header-template>\n <div\n class=\"w-100 bg-light p-1\"\n [class.border-bottom]=\"!expanded\"\n [class.datatable-icon-right]=\"!expanded\"\n [class.datatable-icon-down]=\"expanded\"\n title=\"Expand/Collapse Group\"\n (click)=\"ngxDatatable?.groupHeader?.toggleExpandGroup(group)\">\n <b>Age: {{ group.age }}</b>\n </div>\n </ng-template>\n </ngx-datatable-group-header>\n\n <ngx-datatable-row-detail *ngIf=\"rowDetail && rowDetail.template\"\n [rowHeight]=\"rowDetail.rowHeight || 0\"\n [template]=\"$any(rowDetail.template)\"\n (toggle)=\"rowDetail.toggle.emit($event)\">\n </ngx-datatable-row-detail>\n\n <ngx-datatable-footer *ngIf=\"footer && footer.template\"\n [template]=\"$any(footer.template)\">\n </ngx-datatable-footer>\n </ngx-datatable>\n </ng-container>\n </div>\n</div>\n\n<ng-template #blankHeaderTpl ngx-datatable-header-template></ng-template>\n\n<ng-template #headerTpl ngx-datatable-header-template\n let-column=\"column\" let-sortFn=\"sortFn\">\n <strong *ngIf=\"!column.sortable\" class=\"draggable\">{{column.name}}</strong>\n <strong *ngIf=\"column.sortable\" class=\"datatable-sort-target draggable\" (click)=\"sortFn()\">{{column.name}}</strong>\n <div class=\"datatable-column-header-separator\" [attr.data-column-id]=\"column.$$id\"></div>\n</ng-template>\n\n<ng-template #cellTypeSelectorTpl ngx-datatable-cell-template\n let-value=\"value\" let-rowIndex=\"rowIndex\" let-row=\"row\" let-column=\"column\">\n <seam-table-cell-type-selector *ngIf=\"row\"\n [type]=\"column.cellType\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"column\">\n </seam-table-cell-type-selector>\n</ng-template>\n\n<ng-template #actionMenuCellTpl ngx-datatable-cell-template\n let-value=\"value\" let-rowIndex=\"rowIndex\" let-row=\"row\">\n\n <ng-container *ngIf=\"row && rowActionItem?.template\">\n <ng-template\n [ngTemplateOutlet]=\"$any(rowActionItem?.template)\"\n [ngTemplateOutletContext]=\"{ $implicit: row, row: row, rowIndex: rowIndex }\">\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #treeToggleTpl ngx-datatable-tree-toggle let-tree=\"cellContext\">\n <button\n class=\"p-0 bg-transparent border-0 btn\"\n [disabled]=\"tree.treeStatus==='disabled'\"\n (click)=\"tree.onTreeAction()\">\n <span *ngIf=\"tree.treeStatus==='loading'\">\n <fa-icon [icon]=\"_faSpinner\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='collapsed'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='expanded'\">\n <fa-icon [icon]=\"_faChevronDown\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='disabled'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'\nimport { UntypedFormControl } from '@angular/forms'\nimport { combineLatest, Observable, of } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\nimport { notNullOrUndefined, observeControlValue } from '@theseam/ui-common/utils'\n\nimport { DatatableComponent, THESEAM_DATATABLE } from '../datatable/datatable.component'\nimport { HideColumnColumnsAlteration } from '../models/columns-alterations/hide-column.columns-alteration'\nimport { isInternalColumn } from '../models/internal-column-props'\nimport { TheSeamDatatableColumn } from '../models/table-column'\nimport { ColumnsAlterationsManagerService } from '../services/columns-alterations-manager.service'\nimport { getColumnProp } from '../utils/get-column-prop'\n\n@Component({\n selector: 'seam-datatable-column-preferences',\n templateUrl: './datatable-column-preferences.component.html',\n styleUrls: ['./datatable-column-preferences.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableColumnPreferencesComponent {\n _columns$: Observable<TheSeamDatatableColumn[]>\n\n _filterControl = new UntypedFormControl()\n\n constructor(\n @Inject(THESEAM_DATATABLE) private _datatable: DatatableComponent,\n private readonly _columnsAlterationsManager: ColumnsAlterationsManagerService,\n ) {\n this._columns$ = combineLatest([\n this._datatable.columns$ ?? of([]),\n observeControlValue<string>(this._filterControl)\n ]).pipe(\n map(([ columns, filter ]) => {\n const _filter = (filter || '').trim().toLowerCase()\n return columns\n .filter(c => this._canToggleColumn(c, _filter))\n }),\n )\n }\n\n private _canToggleColumn(column: TheSeamDatatableColumn, filter: string, omitInternalColumns: boolean = true): boolean {\n if (omitInternalColumns && isInternalColumn(column)) {\n return false\n }\n\n return this._columnMatchesFilter(column, filter)\n }\n\n private _columnMatchesFilter(column: TheSeamDatatableColumn, filter: string): boolean {\n if (filter.length === 0) { return true }\n\n return `${(getColumnProp(column) || '')}`.toLowerCase().indexOf(filter) !== -1\n }\n\n _onChange(event: any, col: TheSeamDatatableColumn) {\n const columnProp = getColumnProp(col)\n const hidden = !event.checked\n\n if (!notNullOrUndefined(columnProp)) {\n throw Error(`Unable to get column prop.`)\n }\n\n const alteration = new HideColumnColumnsAlteration(\n {\n columnProp,\n hidden\n },\n hidden\n )\n\n this._columnsAlterationsManager.add([ alteration ])\n }\n\n}\n","<h3>Columns</h3>\n\n<seam-form-field [numPaddingErrors]=\"0\" >\n <input seamInput [formControl]=\"_filterControl\" seamInputSize=\"sm\" placeholder=\"Search\" seamAutoFocus>\n</seam-form-field>\n\n<div seamOverlayScrollbar style=\"min-height: 200px; max-height: 600px; min-width: 250px;\" class=\"flex-grow-1 mb-2\">\n <div class=\"p-2\">\n <ng-container *ngFor=\"let col of _columns$ | async\">\n <seam-checkbox [checked]=\"!col.hidden\" (change)=\"_onChange($event, col)\">{{ col.name || col.prop }}</seam-checkbox>\n </ng-container>\n </div>\n\n</div>\n<div class=\"d-flex flex-row justify-content-end\">\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" (click)=\"_onCloseClick()\">Close</button> -->\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" class=\"mr-1\">Cancel</button>\n <button seamButton size=\"sm\" theme=\"success\">Done</button> -->\n</div>\n","import { ConnectionPositionPair } from '@angular/cdk/overlay'\nimport { ChangeDetectionStrategy, Component } from '@angular/core'\n\nimport { faColumns } from '@fortawesome/free-solid-svg-icons'\n\nimport { ColumnsAlterationsManagerService } from '../services/columns-alterations-manager.service'\n\n@Component({\n selector: 'seam-datatable-column-preferences-button',\n templateUrl: './datatable-column-preferences-button.component.html',\n styleUrls: ['./datatable-column-preferences-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableColumnPreferencesButtonComponent {\n\n icon = faColumns\n\n /** @ignore */\n _actionMenuPositions: ConnectionPositionPair[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ]\n\n constructor(\n private readonly _columnsAlterationsManager: ColumnsAlterationsManagerService,\n ) { }\n\n _resetColumns(event: any) {\n this._columnsAlterationsManager.clear()\n }\n\n}\n","<ng-template #colPrefsTpl>\n <seam-datatable-column-preferences></seam-datatable-column-preferences>\n</ng-template>\n\n<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [seamPopover]=\"colPrefsTpl\">\n Show/Hide Columns\n </button>\n\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n (click)=\"_resetColumns($event)\">\n Reset Columns\n </button>\n</seam-menu>\n\n<button type=\"button\" class=\"btn btn-lightgray btn-sm\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Column Preferences\">\n <seam-icon [icon]=\"icon\"></seam-icon>\n <span class=\"sr-only\">Column Preferences</span>\n</button>\n\n","import { ChangeDetectionStrategy, Component, Inject, Input, isDevMode, Optional } from '@angular/core'\nimport { combineLatest, of } from 'rxjs'\nimport { catchError, concatMap, map, take, tap } from 'rxjs/operators'\n\nimport { faFileDownload } from '@fortawesome/free-solid-svg-icons'\nimport { ToastrService } from 'ngx-toastr'\n\nimport { IDataExporter } from '@theseam/ui-common/data-exporter'\nimport { DynamicValueHelperService, THESEAM_DYNAMIC_DATA } from '@theseam/ui-common/dynamic'\nimport { TheSeamLoadingOverlayService } from '@theseam/ui-common/loading'\nimport { hasProperty } from '@theseam/ui-common/utils'\n\nimport { DatatableComponent, THESEAM_DATATABLE } from '../datatable/datatable.component'\nimport { isInternalColumn } from '../models/internal-column-props'\nimport { TheSeamDatatableColumn } from '../models/table-column'\n\nexport interface IDatatableExportButtonData {\n exporters: IDataExporter[]\n}\n\n@Component({\n selector: 'seam-datatable-export-button',\n templateUrl: './datatable-export-button.component.html',\n styleUrls: ['./datatable-export-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableExportButtonComponent {\n\n icon = faFileDownload\n\n @Input() exporters: IDataExporter[] | undefined | null\n\n get disabled() {\n return !(this.exporters && this.exporters.length > 0)\n }\n\n constructor(\n @Inject(THESEAM_DATATABLE) private readonly _datatable: DatatableComponent,\n private readonly _toastr: ToastrService,\n private readonly _loading: TheSeamLoadingOverlayService,\n private readonly _valueHelper: DynamicValueHelperService,\n @Optional() @Inject(THESEAM_DYNAMIC_DATA) private readonly _data?: IDatatableExportButtonData\n ) {\n if (this._data && this._data.exporters) {\n this.exporters = this._data.exporters\n }\n }\n\n _onExporterClicked(exporter: IDataExporter) {\n if (!exporter.export) {\n const msg = isDevMode()\n ? `Exporter '${exporter.name}' is missing an export method.`\n : `${exporter.label} export is not available.`\n this._toastr.error(msg, 'Data Export')\n }\n\n const export$ = combineLatest([\n this._datatable.rows$,\n this._datatable.columns$.pipe(map(cols => cols.filter(c => !isInternalColumn(c))))\n ]).pipe(\n take(1),\n map(([ rows, columns ]) => {\n if (exporter.skipDataMapping) {\n return rows\n }\n return this._mapExportData(columns || [], rows)\n }),\n concatMap(data => exporter.export(data)),\n catchError(err => {\n // eslint-disable-next-line no-console\n console.error(err)\n return of(false)\n }),\n tap(success => {\n if (success) {\n this._toastr.success(`${exporter.label} export complete.`, 'Data Export')\n } else {\n this._toastr.error(`${exporter.label} export failed.`, 'Data Export')\n }\n })\n )\n\n this._loading.while(export$).subscribe()\n }\n\n private _mapExportData(columns: TheSeamDatatableColumn[], rows: any[]) {\n const data: any[] = []\n\n for (const row of rows) {\n const newRow: any = {}\n\n for (const col of columns) {\n if (!col.exportIgnore) {\n const colName = col.exportHeader || col.name || col.prop\n if (colName) {\n newRow[colName] = this._rowValue(col, row)\n }\n }\n }\n\n data.push(newRow)\n }\n\n return data\n }\n\n private _rowValue(column: TheSeamDatatableColumn, row: any) {\n if (hasProperty(column as any, 'exportValue')) {\n const context = { value: column.prop ? row[column.prop] : undefined, row }\n return this._valueHelper.evalSync((column as any).exportValue, context)\n }\n\n const colProp = column.prop\n if (colProp) {\n return row[colProp]\n }\n return undefined\n }\n\n}\n","<seam-menu #menu>\n <button *ngFor=\"let exp of exporters\"\n seamMenuItem\n [icon]=\"exp?.icon\"\n (click)=\"_onExporterClicked(exp)\">\n {{ exp.label }}\n </button>\n</seam-menu>\n<button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"lightgray\"\n size=\"sm\"\n class=\"dropdown-toggle\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Export\"\n [disabled]=\"disabled\"\n >\n <seam-icon [icon]=\"icon\" class=\"mr-2\"></seam-icon>\n</button>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\n\n@Component({\n selector: 'seam-datatable-menu-bar-column-center',\n templateUrl: './datatable-menu-bar-column-center.component.html',\n styleUrls: ['./datatable-menu-bar-column-center.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableMenuBarColumnCenterComponent { }\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\n\n@Component({\n selector: 'seam-datatable-menu-bar-column-left',\n templateUrl: './datatable-menu-bar-column-left.component.html',\n styleUrls: ['./datatable-menu-bar-column-left.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableMenuBarColumnLeftComponent { }\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\n\n@Component({\n selector: 'seam-datatable-menu-bar-column-right',\n templateUrl: './datatable-menu-bar-column-right.component.html',\n styleUrls: ['./datatable-menu-bar-column-right.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableMenuBarColumnRightComponent { }\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\n\n@Component({\n selector: 'seam-datatable-menu-bar-row',\n templateUrl: './datatable-menu-bar-row.component.html',\n styleUrls: ['./datatable-menu-bar-row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableMenuBarRowComponent { }\n","<ng-content></ng-content>\n","import { InjectionToken } from '@angular/core'\n\nimport { MenubarItemData } from '../models/menubar-item-data'\n\nexport const THESEAM_MENUBAR_ITEM_DATA = new InjectionToken<MenubarItemData>('MenubarItemData')\n","import { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core'\n\nimport { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils'\nimport { DatatableMenuBarComponent } from './../datatable-menu-bar/datatable-menu-bar.component'\nimport { MenubarItemData } from './../models/menubar-item-data'\nimport { THESEAM_MENUBAR_ITEM_DATA } from './../tokens/menubar-item-data'\n\n@Component({\n selector: 'seam-datatable-menu-bar-text',\n templateUrl: './datatable-menu-bar-text.component.html',\n styleUrls: ['./datatable-menu-bar-text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableMenuBarTextComponent {\n\n @Input()\n public value: string | undefined | null\n\n constructor(\n private _menuBar: DatatableMenuBarComponent,\n @Optional() @Inject(THESEAM_MENUBAR_ITEM_DATA) private _data: MenubarItemData | null\n ) {\n if (notNullOrUndefined(this._data)) {\n if (hasProperty(this._data, 'value')) {\n this.value = this._data.value\n }\n }\n }\n\n}\n","{{ value }}\n","// import { QueryParamsHandling } from '@angular/router/src/config'\nimport { ComponentType } from '@angular/cdk/portal'\nimport { HttpClient, HttpHeaders } from '@angular/common/http'\nimport { Component, Directive, EventEmitter, HostBinding, Input, isDevMode, Optional, Output } from '@angular/core'\nimport { Subscription } from 'rxjs'\n\n// import jexl from 'jexl'\n\nimport { TheSeamDynamicComponentLoader } from '@theseam/ui-common/dynamic-component-loader'\nimport { Modal } from '@theseam/ui-common/modal'\n\n//\n// TODO: Move the dynamic datatable logic out of this component when refactoring.\n//\n\n// export interface IActionMenuItemEndpointConfig {\n// /**\n// * Api endpoint.\n// */\n// endpoint?: string\n\n// endpointExpr?: string\n\n// method: 'GET' | 'POST' | 'PATCH' | 'DELETE'\n\n// bodyExpr?: string\n\n// paramsExpr?: string\n// }\n\n// export interface IActionMenuItemModalConfig {\n// component: ComponentType<{}> | string\n// }\n\nexport interface TheSeamDatatableRow {\n [prop: string]: any\n}\n\n@Directive({\n selector: '[seamDatatableActionMenuItem]'\n})\nexport class DatatableActionMenuItemDirective {\n\n @HostBinding('class.list-group-item') _listGroupItem = true\n @HostBinding('class.list-group-item-action') _listGroupItemAction = true\n\n @Input() label: string | undefined | null\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('attr.href') href: string | undefined | null\n @Input() target: string | undefined | null\n\n // Allow routerLink inputs on menu item\n @Input() queryParams: { [k: string]: any } | undefined | null\n @Input() fragment: string | undefined | null\n // @Input() queryParamsHandling: QueryParamsHandling\n @Input() queryParamsHandling: any | undefined | null\n @Input() preserveFragment: boolean | undefined | null\n @Input() skipLocationChange: boolean | undefined | null\n @Input() replaceUrl: boolean | undefined | null\n @Input() state: {[k: string]: any} | undefined | null\n @Input() routerLink: string | any[] | undefined | null\n\n @Input() confirmDialog: any\n\n // @Input()\n // get endpointConfig(): IActionMenuItemEndpointConfig { return this._endpointConfig }\n // set endpointConfig(value: IActionMenuItemEndpointConfig) {\n // this._endpointConfig = value\n // if (value) {\n // // TODO: Handle this in a way that can be canceled.\n // this._endpointConfigSub = this.click\n // .pipe(untilDestroyed(this))\n // .subscribe(e => this._handleEndpointAction())\n // } else {\n // if (this._endpointConfigSub) {\n // this._endpointConfigSub.unsubscribe()\n // }\n // }\n // }\n // private _endpointConfig: IActionMenuItemEndpointConfig\n // private _endpointConfigSub: Subscription\n\n // @Input()\n // get modalConfig(): IActionMenuItemModalConfig { return this._modalConfig }\n // set modalConfig(value: IActionMenuItemModalConfig) {\n // this._modalConfig = value\n // if (value) {\n // // TODO: Handle this in a way that can be canceled.\n // this._modalConfigSub = this.click\n // .pipe(untilDestroyed(this))\n // .subscribe(e => this._handleModalAction())\n // } else {\n // if (this._modalConfigSub) {\n // this._modalConfigSub.unsubscribe()\n // }\n // }\n // }\n // private _modalConfig: IActionMenuItemModalConfig\n // private _modalConfigSub: Subscription\n\n @Input() row: TheSeamDatatableRow | undefined | null\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() click = new EventEmitter<any>()\n\n constructor(\n private readonly _modal: Modal,\n private readonly _dynamicComponentLoader: TheSeamDynamicComponentLoader,\n @Optional() private readonly _http: HttpClient,\n ) { }\n\n // private _handleEndpointAction() {\n // if (!this._http) {\n // if (isDevMode()) {\n // console.warn(`[DatatableActionMenuItemDirective] Endpoint actions require \\`HttpClientModule\\` to be imported.`)\n // }\n // return\n // }\n\n // // console.log('_handleEndpointAction')\n // // TODO: This should probably be done through a provider that uses the api.\n // if (isDevMode()) {\n // console.warn(`[DatatableActionMenuItemDirective] '_handleEndpointAction()' is not ready for production yet.`)\n // } else {\n // // I don't expect this to be attempted in prod before completed, so I am just adding a console warning.\n // console.warn(`Unable to complete request. Contact support for assistance.`)\n // }\n\n // let endpoint = ''\n // const method = this._endpointConfig.method\n // const context = { row: this.row }\n // // console.log('context', context)\n\n // if (this._endpointConfig.endpoint) {\n // endpoint = this._endpointConfig.endpoint\n // }\n\n // if (this._endpointConfig.endpointExpr) {\n // // TODO: Use async jexl.\n // endpoint = jexl.evalSync(this._endpointConfig.endpointExpr, context)\n // }\n\n // const url = `http://localhost:57648/api/${endpoint}`\n\n // const options: any = {}\n // if (this._endpointConfig.bodyExpr) {\n // // TODO: Use async jexl.\n // options.body = jexl.evalSync(this._endpointConfig.bodyExpr, context)\n // }\n // if (this._endpointConfig.paramsExpr) {\n // // TODO: Use async jexl.\n // options.params = jexl.evalSync(this._endpointConfig.paramsExpr, context)\n // }\n\n // const headers = new HttpHeaders({\n // 'Content-Type': 'application/json'\n // })\n\n // this._http.request<any>(method, url, { ...options, headers })\n // .subscribe()\n // // .subscribe(v => console.log('v', v))\n // }\n\n // private _handleModalAction() {\n // if (typeof this._modalConfig.component === 'string') {\n // this._dynamicComponentLoader.getComponentFactory(this._modalConfig.component)\n // .subscribe(componentFactory => {\n // const factoryResolver = (<any /* ComponentFactoryBoundToModule */>componentFactory).ngModule.componentFactoryResolver\n // this._modal.openFromComponent(componentFactory.componentType, undefined, factoryResolver)\n // })\n // } else {\n // this._modal.openFromComponent(this._modalConfig.component)\n // }\n // }\n\n}\n","import { ESCAPE } from '@angular/cdk/keycodes'\nimport { ConnectionPositionPair, Overlay, OverlayRef, PositionStrategy } from '@angular/cdk/overlay'\nimport { TemplatePortal } from '@angular/cdk/portal'\nimport { Directive, ElementRef, HostListener, Input, TemplateRef, ViewContainerRef } from '@angular/core'\n\n@Directive({\n selector: '[seamDatatableActionMenuToggle]',\n exportAs: 'seamDatatableActionMenuToggle'\n})\nexport class DatatableActionMenuToggleDirective {\n\n @Input() seamDatatableActionMenuToggle: TemplateRef<HTMLElement> | undefined | null\n\n private _active = false\n private _overlayRef?: OverlayRef\n private _actionDown = false\n\n @HostListener('document:keydown', [ '$event' ])\n _onKeydown(event: any) {\n if (event.keyCode === ESCAPE) {\n this.disable()\n }\n }\n\n @HostListener('click', [ '$event' ])\n _onClick(event: any) {\n this.toggle()\n }\n\n @HostListener('mousedown', [ '$event' ]) _mouseDown(event: any) { this.onInputDown(event) }\n @HostListener('pointerdown', [ '$event' ]) _pointerDown(event: any) { this.onInputDown(event) }\n\n @HostListener('mouseup', [ '$event' ]) _mouseUp(event: any) { this.onInputUp(event) }\n @HostListener('pointerup', [ '$event' ]) _pointerUp(event: any) { this.onInputUp(event) }\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _viewContainerRef: ViewContainerRef,\n private _overlay: Overlay,\n ) { }\n\n public get active(): boolean { return this._active }\n\n public toggle() {\n if (this._active) {\n this.disable()\n } else {\n this.enable()\n }\n }\n\n public enable() {\n if (this.active) { return }\n if (!this.seamDatatableActionMenuToggle) { return }\n\n this._overlayRef = this._overlay.create({\n hasBackdrop: false,\n positionStrategy: this.getOverlayPosition(this._elementRef.nativeElement),\n })\n\n this._overlayRef.attach(new TemplatePortal(this.seamDatatableActionMenuToggle, this._viewContainerRef))\n\n this._active = true\n }\n\n public disable() {\n if (!this.active) { return }\n\n if (this._overlayRef?.hasAttached()) {\n this._overlayRef.detach()\n }\n\n this._active = false\n }\n\n private getOverlayPosition(origin: HTMLElement): PositionStrategy {\n const positionStrategy = this._overlay.position()\n .flexibleConnectedTo(origin)\n .withPositions(this.getPositions())\n .withFlexibleDimensions(false)\n .withPush(false)\n\n return positionStrategy\n }\n\n private getPositions(): ConnectionPositionPair[] {\n return [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ]\n }\n\n onFocusChangeOverlay(event: any) {\n if (event === null) {\n if (!this._actionDown) {\n // this.disable()\n }\n }\n }\n\n onInputDown(event: any) {\n this._actionDown = true\n }\n\n onInputUp(event: any) {\n this._actionDown = false\n }\n\n}\n","import { CollectionViewer } from '@angular/cdk/collections'\nimport { combineLatest, Observable } from 'rxjs'\n\nimport { DatatableDataSource } from './datatable-data-source'\n\nexport class DatatableGqlDataSource<TRow> extends DatatableDataSource<TRow> {\n\n connect(collectionViewer: CollectionViewer): Observable<readonly TRow[]> {\n throw new Error('Method not implemented.')\n\n // return combineLatest([\n // this.sorts$,\n // this.filterStates$,\n // this.page$\n // ]).pipe()\n }\n\n disconnect(collectionViewer: CollectionViewer): void {\n throw new Error('Method not implemented.')\n }\n\n}\n","import { Injectable, NgZone } from '@angular/core'\n\nimport { OverlayScrollbarsService } from '@theseam/ui-common/scrollbar'\n\n@Injectable()\nexport class TheSeamDatatableScrollbarHelperService {\n\n width = 0\n\n /**\n * Animates programmatic scrolling, such as switching pages.\n *\n * NOTE: Animating the scrolling works, but the datatable may need changes\n * before this is enabled, because it seems a little stuttery when it moves.\n */\n animatedScrolling = false\n animatedScrollingTime = 250\n\n constructor(\n private _ngZone: NgZone,\n private _scrollbars: OverlayScrollbarsService\n ) { }\n\n onInitScroller(scroller: any): void {\n this._scrollbars.initializeInstance(scroller.parentElement, {\n callbacks: {\n onScroll: e => {\n this._ngZone.run(() => {\n scroller.onScrolled(e)\n })\n }\n }\n })\n }\n\n onDestroyScroller(scroller: any): void {\n this._scrollbars.destroyInstance(scroller.parentElement)\n }\n\n setOffset(scroller: any, offsetY: number): void {\n this._ngZone.runOutsideAngular(() => {\n if (this.animatedScrolling) {\n this._scrollbars.getInstance(scroller.parentElement)\n .scroll({ y: offsetY }, this.animatedScrollingTime)\n } else {\n this._scrollbars.getInstance(scroller.parentElement)\n .scroll({ y: offsetY })\n }\n })\n }\n}\n","import { hasProperty } from '@theseam/ui-common/utils'\n\nimport { TheSeamDatatablePreferencesColumn } from '../models/preferences'\nimport { TheSeamDatatableColumn } from '../models/table-column'\n\nexport function withStoredColumnInfo(\n columns: TheSeamDatatableColumn[],\n preferenceColumns: TheSeamDatatablePreferencesColumn[]\n): TheSeamDatatableColumn[] {\n const _columns: TheSeamDatatableColumn[] = []\n for (const col of columns) {\n const storedCol = preferenceColumns.find(v => v.prop === col.prop)\n if (storedCol) {\n const _col = { ...col }\n if (hasProperty(storedCol, 'width')) { _col.width = Math.max(storedCol.width, 0) }\n _col.canAutoResize = storedCol.canAutoResize\n _columns.push(_col)\n } else {\n _columns.push(col)\n }\n }\n return _columns\n}\n","import { A11yModule } from '@angular/cdk/a11y'\nimport { OverlayModule } from '@angular/cdk/overlay'\nimport { PortalModule } from '@angular/cdk/portal'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { ReactiveFormsModule } from '@angular/forms'\nimport { RouterModule } from '@angular/router'\n\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome'\nimport { NgxDatatableModule, ScrollbarHelper } from '@marklb/ngx-datatable'\nimport { ToastrModule } from 'ngx-toastr'\n\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\nimport { TheSeamCheckboxModule } from '@theseam/ui-common/checkbox'\nimport { TheSeamConfirmDialogModule } from '@theseam/ui-common/confirm-dialog'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamLoadingModule } from '@theseam/ui-common/loading'\nimport { TheSeamMenuModule } from '@theseam/ui-common/menu'\nimport { TheSeamPopoverModule } from '@theseam/ui-common/popover'\nimport { TheSeamSharedModule } from '@theseam/ui-common/shared'\nimport { TheSeamTableCellTypeModule } from '@theseam/ui-common/table-cell-type'\n\nimport { DatatableActionMenuItemComponent } from './datatable-action-menu-item/datatable-action-menu-item.component'\nimport { DatatableActionMenuComponent } from './datatable-action-menu/datatable-action-menu.component'\nimport { DatatableColumnPreferencesButtonComponent } from './datatable-column-preferences-button/datatable-column-preferences-button.component' // tslint:disable-line: max-line-length\nimport { DatatableColumnPreferencesComponent } from './datatable-column-preferences/datatable-column-preferences.component'\nimport { DatatableColumnComponent } from './datatable-column/datatable-column.component'\nimport { DatatableExportButtonComponent } from './datatable-export-button/datatable-export-button.component'\nimport { DatatableFooterTplDirective } from './datatable-footer/datatable-footer-tpl.directive'\nimport { TheSeamDatatableFooterDirective } from './datatable-footer/datatable-footer.directive'\nimport { DatatableMenuBarColumnCenterComponent } from './datatable-menu-bar-column-center/datatable-menu-bar-column-center.component'\nimport { DatatableMenuBarColumnLeftComponent } from './datatable-menu-bar-column-left/datatable-menu-bar-column-left.component'\nimport { DatatableMenuBarColumnRightComponent } from './datatable-menu-bar-column-right/datatable-menu-bar-column-right.component'\nimport { DatatableMenuBarRowComponent } from './datatable-menu-bar-row/datatable-menu-bar-row.component'\nimport { DatatableMenuBarTextComponent } from './datatable-menu-bar-text/datatable-menu-bar-text.component'\nimport { DatatableMenuBarComponent } from './datatable-menu-bar/datatable-menu-bar.component'\nimport { DatatableRowDetailTplDirective } from './datatable-row-detail/datatable-row-detail-tpl.directive'\nimport { TheSeamDatatableRowDetailDirective } from './datatable-row-detail/datatable-row-detail.directive'\nimport { DatatableComponent } from './datatable/datatable.component'\nimport { DatatableActionMenuItemDirective } from './directives/datatable-action-menu-item.directive'\nimport { DatatableActionMenuToggleDirective } from './directives/datatable-action-menu-toggle.directive'\nimport { DatatableCellTplDirective } from './directives/datatable-cell-tpl.directive'\nimport { DatatableFilterDirective } from './directives/datatable-filter.directive'\nimport { DatatableRowActionItemDirective } from './directives/datatable-row-action-item.directive'\nimport { TheSeamDatatableScrollbarHelperService } from './services/datatable-scrollbar-helper.service'\n\n@NgModule({\n declarations: [\n DatatableComponent,\n DatatableCellTplDirective,\n DatatableColumnComponent,\n DatatableActionMenuComponent,\n DatatableActionMenuToggleDirective,\n DatatableActionMenuItemComponent,\n DatatableMenuBarComponent,\n DatatableFilterDirective,\n DatatableRowActionItemDirective,\n DatatableExportButtonComponent,\n TheSeamDatatableRowDetailDirective,\n DatatableRowDetailTplDirective,\n TheSeamDatatableFooterDirective,\n DatatableFooterTplDirective,\n DatatableColumnPreferencesComponent,\n DatatableColumnPreferencesButtonComponent,\n DatatableActionMenuItemDirective,\n DatatableMenuBarRowComponent,\n DatatableMenuBarColumnLeftComponent,\n DatatableMenuBarColumnCenterComponent,\n DatatableMenuBarColumnRightComponent,\n DatatableMenuBarTextComponent,\n ],\n imports: [\n CommonModule,\n NgxDatatableModule,\n FontAwesomeModule,\n OverlayModule,\n A11yModule,\n TheSeamSharedModule,\n RouterModule,\n TheSeamMenuModule,\n TheSeamButtonsModule,\n TheSeamIconModule,\n ToastrModule,\n TheSeamLoadingModule,\n PortalModule,\n TheSeamConfirmDialogModule,\n TheSeamPopoverModule,\n TheSeamCheckboxModule,\n TheSeamFormFieldModule,\n ReactiveFormsModule,\n TheSeamTableCellTypeModule\n ],\n exports: [\n DatatableComponent,\n DatatableCellTplDirective,\n DatatableColumnComponent,\n DatatableActionMenuComponent,\n DatatableActionMenuItemComponent,\n DatatableMenuBarComponent,\n DatatableFilterDirective,\n DatatableRowActionItemDirective,\n DatatableExportButtonComponent,\n TheSeamDatatableRowDetailDirective,\n DatatableRowDetailTplDirective,\n TheSeamDatatableFooterDirective,\n DatatableFooterTplDirective,\n DatatableColumnPreferencesComponent,\n DatatableColumnPreferencesButtonComponent,\n DatatableActionMenuItemDirective,\n DatatableMenuBarRowComponent,\n DatatableMenuBarColumnLeftComponent,\n DatatableMenuBarColumnCenterComponent,\n DatatableMenuBarColumnRightComponent,\n DatatableMenuBarTextComponent\n ],\n providers: [\n { provide: ScrollbarHelper, useClass: TheSeamDatatableScrollbarHelperService }\n ]\n})\nexport class TheSeamDatatableModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i1.DatatableColumnChangesService","_scd","i1.DatatablePreferencesService","i2.ColumnsManagerService","i3.ColumnsAlterationsManagerService","NgxDatatableComponent","i5","i1.ColumnsAlterationsManagerService","i2","i6","i7","i5.DatatableColumnPreferencesComponent","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theseam-ui-common-datatable.mjs","sources":["../../../projects/ui-common/datatable/datatable-action-menu-item/datatable-action-menu-item.component.ts","../../../projects/ui-common/datatable/datatable-action-menu/datatable-action-menu.component.ts","../../../projects/ui-common/datatable/datatable-action-menu/datatable-action-menu.component.html","../../../projects/ui-common/datatable/directives/datatable-cell-tpl.directive.ts","../../../projects/ui-common/datatable/services/datatable-column-changes.service.ts","../../../projects/ui-common/datatable/datatable-column/datatable-column.component.ts","../../../projects/ui-common/datatable/datatable-column/datatable-column.component.html","../../../projects/ui-common/datatable/datatable-footer/datatable-footer-tpl.directive.ts","../../../projects/ui-common/datatable/datatable-footer/datatable-footer.directive.ts","../../../projects/ui-common/datatable/directives/datatable-filter.directive.ts","../../../projects/ui-common/datatable/datatable-menu-bar/datatable-menu-bar.component.ts","../../../projects/ui-common/datatable/datatable-menu-bar/datatable-menu-bar.component.html","../../../projects/ui-common/datatable/datatable-row-detail/datatable-row-detail-tpl.directive.ts","../../../projects/ui-common/datatable/datatable-row-detail/datatable-row-detail.directive.ts","../../../projects/ui-common/datatable/directives/datatable-row-action-item.directive.ts","../../../projects/ui-common/datatable/models/datatable-data-source.ts","../../../projects/ui-common/datatable/utils/create-action-menu-column.ts","../../../projects/ui-common/datatable/utils/create-checkbox-column.ts","../../../projects/ui-common/datatable/utils/get-column-prop.ts","../../../projects/ui-common/datatable/utils/set-column-defaults.ts","../../../projects/ui-common/datatable/utils/translate-templates.ts","../../../projects/ui-common/datatable/services/columns-manager.service.ts","../../../projects/ui-common/datatable/tokens/datatable-accessor.ts","../../../projects/ui-common/datatable/utils/remove-unused-diffs.ts","../../../projects/ui-common/datatable/models/columns-alteration.ts","../../../projects/ui-common/datatable/models/columns-alterations/hide-column.columns-alteration.ts","../../../projects/ui-common/datatable/models/columns-alterations/sort.columns-alteration.ts","../../../projects/ui-common/datatable/models/columns-alterations/width.columns-alteration.ts","../../../projects/ui-common/datatable/services/columns-alterations-manager.service.ts","../../../projects/ui-common/datatable/models/internal-column-props.ts","../../../projects/ui-common/datatable/models/columns-alterations/order.columns-alteration.ts","../../../projects/ui-common/datatable/utils/map-columns-alterations-states.ts","../../../projects/ui-common/datatable/models/preferences.ts","../../../projects/ui-common/datatable/tokens/datatable-preferences-accessor.ts","../../../projects/ui-common/datatable/services/datatable-preferences.service.ts","../../../projects/ui-common/datatable/datatable/datatable.component.ts","../../../projects/ui-common/datatable/datatable/datatable.component.html","../../../projects/ui-common/datatable/datatable-column-preferences/datatable-column-preferences.component.ts","../../../projects/ui-common/datatable/datatable-column-preferences/datatable-column-preferences.component.html","../../../projects/ui-common/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.ts","../../../projects/ui-common/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.html","../../../projects/ui-common/datatable/datatable-export-button/datatable-export-button.component.ts","../../../projects/ui-common/datatable/datatable-export-button/datatable-export-button.component.html","../../../projects/ui-common/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.ts","../../../projects/ui-common/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.html","../../../projects/ui-common/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.ts","../../../projects/ui-common/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.html","../../../projects/ui-common/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.ts","../../../projects/ui-common/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.html","../../../projects/ui-common/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.ts","../../../projects/ui-common/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.html","../../../projects/ui-common/datatable/tokens/menubar-item-data.ts","../../../projects/ui-common/datatable/datatable-menu-bar-text/datatable-menu-bar-text.component.ts","../../../projects/ui-common/datatable/datatable-menu-bar-text/datatable-menu-bar-text.component.html","../../../projects/ui-common/datatable/directives/datatable-action-menu-item.directive.ts","../../../projects/ui-common/datatable/directives/datatable-action-menu-toggle.directive.ts","../../../projects/ui-common/datatable/models/datatable-gql-data-source.ts","../../../projects/ui-common/datatable/services/datatable-scrollbar-helper.service.ts","../../../projects/ui-common/datatable/utils/with-stored-column-info.ts","../../../projects/ui-common/datatable/datatable.module.ts","../../../projects/ui-common/datatable/theseam-ui-common-datatable.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core'\n\nimport { ThemeTypes } from '@theseam/ui-common/models'\n\nimport { DatatableActionMenuComponent } from '../datatable-action-menu/datatable-action-menu.component'\n\n@Component({\n selector: 'seam-datatable-action-menu-item',\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableActionMenuItemComponent {\n\n @Input() label: string | undefined | null\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('attr.href') href: string | undefined | null\n @Input() target: string | undefined | null\n\n // Allow routerLink inputs on menu item\n @Input() queryParams: {[k: string]: any} | undefined | null\n @Input() fragment: string | undefined | null\n @Input() queryParamsHandling: any\n @Input() preserveFragment: boolean| undefined | null\n @Input() skipLocationChange: boolean| undefined | null\n @Input() replaceUrl: boolean| undefined | null\n @Input() state: {[k: string]: any} | undefined | null\n @Input() routerLink: string | any[] | undefined | null\n\n @Input() confirmDialog: { message?: string, alert?: string | { message: string, type: ThemeTypes } } | undefined | null\n\n @Input() disabled: boolean | undefined | null\n\n @Input() subMenu: DatatableActionMenuComponent | undefined | null\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly click = new EventEmitter<any>()\n\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { ConnectionPositionPair } from '@angular/cdk/overlay'\nimport { Component, ContentChildren, Input, QueryList, ViewChild } from '@angular/core'\nimport { NavigationExtras, Router } from '@angular/router'\n\nimport { faEllipsisH } from '@fortawesome/free-solid-svg-icons'\nimport { SeamConfirmDialogService } from '@theseam/ui-common/confirm-dialog'\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { MenuComponent } from '@theseam/ui-common/menu'\n\nimport { DatatableActionMenuItemComponent } from '../datatable-action-menu-item/datatable-action-menu-item.component'\n\n@Component({\n selector: 'seam-datatable-action-menu',\n templateUrl: './datatable-action-menu.component.html',\n styleUrls: ['./datatable-action-menu.component.scss'],\n exportAs: 'seamDatatableActionMenu'\n})\nexport class DatatableActionMenuComponent {\n static ngAcceptInputType_isSubMenu: BooleanInput\n\n readonly faEllipsisH = faEllipsisH\n\n @ViewChild(MenuComponent, { static: true }) menu?: MenuComponent\n\n @ContentChildren(DatatableActionMenuItemComponent) items?: QueryList<DatatableActionMenuItemComponent>\n\n /** @ignore */\n _actionMenuPositions: ConnectionPositionPair[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ]\n\n @Input() @InputBoolean() isSubMenu = false\n\n constructor(\n private _confirmDialog: SeamConfirmDialogService,\n private _router: Router\n ) { }\n\n activateItem(event: any, item: DatatableActionMenuItemComponent) {\n if (item.confirmDialog) {\n this._confirmDialog.open(item.confirmDialog.message, item.confirmDialog.alert)\n .afterClosed()\n .subscribe(v => {\n if (v === 'confirm') {\n item.click.emit(event)\n if (item.href) {\n const win = window.open(item.href, item.target || undefined)\n // TODO: Consider if always setting opener to null is to restrictive\n // if (win && item.target && item.target.toLowerCase() === '_blank') {\n // win.opener = null\n // }\n } else {\n const extras: NavigationExtras = {}\n if (item.queryParams) { extras.queryParams = item.queryParams }\n if (item.fragment) { extras.fragment = item.fragment }\n if (item.queryParamsHandling) { extras.queryParamsHandling = item.queryParamsHandling }\n if (item.preserveFragment) { extras.preserveFragment = item.preserveFragment }\n if (item.skipLocationChange) { extras.skipLocationChange = item.skipLocationChange }\n if (item.replaceUrl) { extras.replaceUrl = item.replaceUrl }\n if (item.state) { extras.state = item.state }\n\n const commands = Array.isArray(item.routerLink) ? item.routerLink : [item.routerLink]\n this._router.navigate(commands, extras)\n }\n }\n })\n } else {\n item.click.emit(event)\n }\n }\n\n}\n","<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"(item.routerLink || item.href) && !item.confirmDialog; else noRouterLink\">\n <a *ngIf=\"item.href; else noHref\"\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [attr.href]=\"item.href\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n <ng-template #noHref>\n <a seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"$any(item.fragment)\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"$any(item.preserveFragment)\"\n [skipLocationChange]=\"$any(item.skipLocationChange)\"\n [replaceUrl]=\"$any(item.replaceUrl)\"\n [state]=\"$any(item.state)\"\n [routerLink]=\"item.routerLink\"\n [target]=\"$any(item.target)\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n </ng-template>\n </ng-container>\n <ng-template #noRouterLink>\n <ng-container *ngIf=\"!!item.subMenu; else noSubMenu\">\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [seamMenuToggle]=\"item.subMenu.menu\"\n [seamMenuTogglePositionsOffsetY]=\"-3\">\n {{ item.label }}\n </button>\n </ng-container>\n <ng-template #noSubMenu>\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</seam-menu>\n\n<ng-container *ngIf=\"!isSubMenu\">\n <button type=\"button\" class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n title=\"Row Actions\">\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n </button>\n</ng-container>\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamDatatableCellTpl]'\n})\nexport class DatatableCellTplDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { Injectable } from '@angular/core'\nimport { Observable, Subject } from 'rxjs'\n\n@Injectable()\nexport class DatatableColumnChangesService {\n\n private columnInputChanges = new Subject<undefined>()\n\n get columnInputChanges$(): Observable<undefined> {\n return this.columnInputChanges.asObservable()\n }\n\n onInputChange(): void {\n this.columnInputChanges.next(undefined)\n }\n\n}\n","import { Component, ContentChild, Input, OnChanges, PipeTransform, SimpleChanges, TemplateRef } from '@angular/core'\n\nimport { ColumnChangesService, TableColumnProp } from '@marklb/ngx-datatable'\n\nimport { DatatableCellTplDirective } from '../directives/datatable-cell-tpl.directive'\nimport { DatatableColumnChangesService } from '../services/datatable-column-changes.service'\n\n// HACK: Union type prevents the not found warning\ntype _PipeTransform = PipeTransform | PipeTransform\n\n// TODO: The column component should implement `ITheSeamDatatableColumn`, since\n// providing some properties by input and some by template could be confusing.\n\n@Component({\n selector: 'seam-datatable-column',\n templateUrl: './datatable-column.component.html',\n styleUrls: ['./datatable-column.component.scss']\n})\nexport class DatatableColumnComponent implements OnChanges {\n\n @Input() name?: string | null\n @Input() prop?: TableColumnProp | null\n\n @Input() flexGrow?: number | null\n @Input() minWidth?: number | null\n @Input() maxWidth?: number | null\n @Input() width?: number | null\n\n @Input() resizeable?: boolean | null\n @Input() sortable?: boolean | null\n @Input() draggable?: boolean | null\n\n @Input() canAutoResize?: boolean | null\n\n @Input() comparator?: ((valueA: any, valueB: any, rowA?: any, rowB?: any, sortDirection?: 'asc' | 'desc') => -1 | 0 | 1) | null\n\n @Input() headerTemplate?: TemplateRef<any> | null\n\n @Input() checkboxable?: boolean | null\n @Input() headerCheckboxable?: boolean | null\n\n @Input() headerClass?: string | ((data: any) => string|any) | null\n @Input() cellClass?: string | ((data: any) => string|any) | null\n\n @Input() frozenLeft?: boolean | null\n @Input() frozenRight?: boolean | null\n\n @Input() pipe?: _PipeTransform | null\n\n @Input() isTreeColumn?: boolean | null\n @Input() treeLevelIndent?: number | null\n\n @Input() summaryFunc?: ((cells: any[]) => any) | null\n @Input() summaryTemplate?: TemplateRef<any> | null\n\n @Input() hidden?: boolean | null\n\n private _isFirstChange = true\n\n @ContentChild(DatatableCellTplDirective, { static: true }) cellTplDirective?: DatatableCellTplDirective\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('cellTemplate')\n _cellTemplateInput?: TemplateRef<any> | null\n\n @ContentChild(DatatableCellTplDirective, { read: TemplateRef, static: true })\n _cellTemplateQuery?: TemplateRef<any>\n\n get cellTemplate(): TemplateRef<any> | undefined | null {\n return this._cellTemplateInput || this._cellTemplateQuery\n }\n\n // @Input('headerTemplate')\n // _headerTemplateInput: TemplateRef<any>;\n\n // @ContentChild(DataTableColumnHeaderDirective, { read: TemplateRef, static: true })\n // _headerTemplateQuery: TemplateRef<any>;\n\n // get headerTemplate(): TemplateRef<any> {\n // return this._headerTemplateInput || this._headerTemplateQuery;\n // }\n\n // @Input('treeToggleTemplate')\n // _treeToggleTemplateInput: TemplateRef<any>;\n\n // @ContentChild(DataTableColumnCellTreeToggle, { read: TemplateRef, static: true })\n // _treeToggleTemplateQuery: TemplateRef<any>;\n\n // get treeToggleTemplate(): TemplateRef<any> {\n // return this._treeToggleTemplateInput || this._treeToggleTemplateQuery;\n // }\n\n constructor(\n private _columnChangesService: DatatableColumnChangesService\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (this._isFirstChange) {\n this._isFirstChange = false\n } else {\n this._columnChangesService.onInputChange()\n }\n }\n\n public getCellDirective(): DatatableCellTplDirective | null {\n if (this.cellTplDirective) {\n return this.cellTplDirective\n }\n\n return null\n }\n\n}\n","<p>\n datatable-column works!\n</p>\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamDatatableFooterTpl]'\n})\nexport class DatatableFooterTplDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core'\n\nimport { DatatableFooterTplDirective } from './datatable-footer-tpl.directive'\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'seam-datatable-footer'\n})\nexport class TheSeamDatatableFooterDirective {\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('template')\n _templateInput: TemplateRef<any> | undefined | null\n\n @ContentChild(DatatableFooterTplDirective, { read: TemplateRef, static: true })\n _templateQuery: TemplateRef<any> | undefined | null\n\n get template(): TemplateRef<any> | undefined | null {\n return this._templateInput || this._templateQuery\n }\n\n}\n","import { Directive, Inject, Self } from '@angular/core'\n\nimport { IDataFilter, THESEAM_DATA_FILTER } from '@theseam/ui-common/data-filters'\n\n@Directive({\n selector: '[seamDatatableFilter]'\n})\nexport class DatatableFilterDirective {\n\n private _filter?: IDataFilter\n\n constructor(\n @Self() @Inject(THESEAM_DATA_FILTER) dataFilters: IDataFilter[]\n ) {\n if (dataFilters && dataFilters.length > 0) {\n this._filter = dataFilters[0]\n }\n }\n\n get filter() {\n return this._filter\n }\n\n}\n","import { Component, ContentChildren, EventEmitter, forwardRef, QueryList } from '@angular/core'\n\nimport { IDataFilter, THESEAM_DATA_FILTER_CONTAINER } from '@theseam/ui-common/data-filters'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DatatableFilterDirective } from '../directives/datatable-filter.directive'\n\nexport const _THESEAM_DATA_FILTER_CONTAINER: any = {\n provide: THESEAM_DATA_FILTER_CONTAINER,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DatatableMenuBarComponent)\n}\n\n@Component({\n selector: 'seam-datatable-menu-bar',\n templateUrl: './datatable-menu-bar.component.html',\n styleUrls: ['./datatable-menu-bar.component.scss'],\n providers: [ _THESEAM_DATA_FILTER_CONTAINER ]\n})\nexport class DatatableMenuBarComponent {\n\n @ContentChildren(DatatableFilterDirective)\n get filterDirectives(): QueryList<DatatableFilterDirective> | undefined {\n return this._filterDirectives\n }\n set filterDirectives(value: QueryList<DatatableFilterDirective> | undefined) {\n this._filterDirectives = value\n this.filtersChanged.emit(this.filters())\n }\n private _filterDirectives: QueryList<DatatableFilterDirective> | undefined\n\n private _filtersArr: IDataFilter[] = []\n\n public readonly filtersChanged = new EventEmitter<IDataFilter[]>()\n\n public filters(): IDataFilter[] {\n const fDirectives = this._filterDirectives\n ? this._filterDirectives.map(f => f.filter).filter(notNullOrUndefined)\n : []\n\n const fArr = this._filtersArr\n .filter(f => fDirectives.findIndex(fd => fd.uid === f.uid) === -1)\n return [ ...fArr, ...fDirectives ]\n }\n\n public addFilter(dataFilter: IDataFilter): void {\n this._filtersArr.push(dataFilter)\n this.filtersChanged.emit(this.filters())\n }\n\n public removeFilter(dataFilter: IDataFilter): void {\n this._filtersArr = this._filtersArr.filter(f => f !== dataFilter)\n this.filtersChanged.emit(this.filters())\n }\n\n}\n","<div class=\"bg-light border rounded p-2\">\n <ng-content></ng-content>\n</div>\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamDatatableRowDetailTpl]'\n})\nexport class DatatableRowDetailTplDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { ContentChild, Directive, EventEmitter, Input, Output, TemplateRef } from '@angular/core'\n\nimport { DatatableRowDetailTplDirective } from './datatable-row-detail-tpl.directive'\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'seam-datatable-row-detail'\n})\nexport class TheSeamDatatableRowDetailDirective {\n\n /**\n * The detail row height is required especially\n * when virtual scroll is enabled.\n */\n @Input() rowHeight: number | ((row?: any, index?: number) => number) | undefined | null = 0\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('template')\n _templateInput: TemplateRef<any> | undefined | null\n\n @ContentChild(DatatableRowDetailTplDirective, { read: TemplateRef, static: true })\n _templateQuery: TemplateRef<any> | undefined | null\n\n get template(): TemplateRef<any> | undefined | null {\n return this._templateInput || this._templateQuery\n }\n\n /**\n * Row detail row visbility was toggled.\n */\n // NOTE: This will trigger from the internal ngx-datatable toggle event.\n @Output() toggle: EventEmitter<any> = new EventEmitter()\n\n /**\n * Internal use for wrapper only.\n *\n * To avoid confusion with this directives output and the ngx-datatable\n * directive being wrapped, this directive emits `_toggle` stream to the\n * `ngx-datatable-row-detail` directive and emits it's `toggle` stream out to\n * this directives `toggle` stream.\n * @ignore\n */\n _toggle: EventEmitter<any> = new EventEmitter()\n\n /**\n * Toggle the expansion of the row\n */\n toggleExpandRow(row: any): void {\n this._toggle.emit({\n type: 'row',\n value: row\n })\n }\n\n /**\n * API method to expand all the rows.\n */\n expandAllRows(): void {\n this._toggle.emit({\n type: 'all',\n value: true\n })\n }\n\n /**\n * API method to collapse all the rows.\n */\n collapseAllRows(): void {\n this._toggle.emit({\n type: 'all',\n value: false\n })\n }\n\n}\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamDatatableRowActionItem]'\n})\nexport class DatatableRowActionItemDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { DataSource } from '@angular/cdk/collections'\nimport { BehaviorSubject, Observable, of } from 'rxjs'\nimport { map, startWith, switchMap } from 'rxjs/operators'\n\nimport { DataFilterState } from '@theseam/ui-common/data-filters'\n\nimport { TheSeamDatatableAccessor } from './datatable-accessor'\nimport { TheSeamPageInfo } from './page-info'\nimport { SortItem } from './sort-item'\n\nexport abstract class DatatableDataSource<TRow> extends DataSource<TRow> {\n\n private readonly _datatableSubject = new BehaviorSubject<TheSeamDatatableAccessor | undefined>(undefined)\n\n public readonly sorts$: Observable<SortItem[]>\n public readonly filterStates$: Observable<DataFilterState[]>\n public readonly page$: Observable<TheSeamPageInfo>\n\n constructor() {\n super()\n\n this.sorts$ = this._datatableSubject.pipe(\n switchMap(_datatable => {\n if (!_datatable) {\n return of([])\n }\n\n return _datatable.sort.pipe(\n map(v => v.sorts),\n startWith(_datatable.sorts)\n )\n })\n )\n\n this.filterStates$ = this._datatableSubject.pipe(\n switchMap(_datatable => {\n if (!_datatable) {\n return of([])\n }\n\n return _datatable.filterStates\n })\n )\n\n this.page$ = this._datatableSubject.pipe(\n switchMap(_datatable => {\n if (!_datatable) {\n return of({\n offset: 0,\n pageSize: 0,\n limit: undefined,\n count: 0\n })\n }\n\n return _datatable.page.pipe(\n startWith(_datatable.pageInfo)\n )\n })\n )\n }\n\n // connect(): Observable<readonly TRow[]> {\n // return this.\n // }\n\n // disconnect(): void {\n // throw new Error('Method not implemented.')\n // }\n\n public setDatatableAccessor(accessor: TheSeamDatatableAccessor): void {\n this._datatableSubject.next(accessor)\n }\n\n}\n","import { TheSeamDatatableColumn } from '../models/table-column'\n\nexport const ACTION_MENU_COLUMN_PROP = '$$__actionMenu__'\n\nexport function createActionMenuColumn(\n cellTemplate: any,\n headerTemplate: any\n): TheSeamDatatableColumn {\n return {\n prop: ACTION_MENU_COLUMN_PROP,\n name: '',\n width: 50,\n minWidth: 50,\n maxWidth: 50,\n resizeable: false,\n sortable: false,\n draggable: false,\n // TODO: Fix column auto sizing with fixed column and cell overlay before enabling.\n // frozenRight: true,\n cellTemplate,\n headerTemplate,\n }\n}\n","import { TheSeamDatatableColumn } from '../models/table-column'\n\nexport const CHECKBOX_COLUMN_PROP = '$$__checkbox__'\n\nexport function createCheckboxColumn(): TheSeamDatatableColumn {\n return {\n prop: CHECKBOX_COLUMN_PROP,\n name: '',\n width: 40,\n sortable: false,\n canAutoResize: false,\n draggable: false,\n resizeable: false,\n headerCheckboxable: true,\n checkboxable: true,\n }\n}\n","import { camelCase, TableColumn, TableColumnProp } from '@marklb/ngx-datatable'\n\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nexport function getColumnProp<T extends { prop?: TableColumnProp | null, name?: string | null }>(\n col: T\n): TableColumnProp | undefined {\n if (!notNullOrUndefined(col.prop) && col.name) {\n return camelCase(col.name)\n }\n\n return col.prop === null ? undefined : col.prop\n}\n","import { setColumnDefaults as _scd } from '@marklb/ngx-datatable'\n\nimport { TheSeamDatatableColumn } from '../models/table-column'\n\nexport function setColumnDefaults(columns: TheSeamDatatableColumn[]): void {\n for (const column of columns) {\n if (!Object.prototype.hasOwnProperty.call(column, 'hidden')) {\n column.hidden = false\n }\n }\n _scd(columns)\n}\n","import { translateTemplates } from '@marklb/ngx-datatable'\n\nimport { DatatableColumnComponent } from '../datatable-column/datatable-column.component'\nimport { getColumnProp } from '../utils/get-column-prop'\n\n// TODO: Replace with a `translateTemplates` function that fits the\n// wrapper component better.\nexport function translateTemplateColumns(v: DatatableColumnComponent[]): DatatableColumnComponent[] {\n const cols = translateTemplates(v as any) as DatatableColumnComponent[]\n\n for (const col of cols) {\n col.prop = getColumnProp(col)\n }\n\n return cols\n}\n","import { Injectable, KeyValueChanges, KeyValueDiffer, KeyValueDiffers, TemplateRef } from '@angular/core'\nimport { BehaviorSubject, combineLatest, defer, EMPTY, Observable, of, Subject } from 'rxjs'\nimport { auditTime, map, shareReplay, startWith, switchMap } from 'rxjs/operators'\n\nimport {\n DataTableColumnCellTreeToggle,\n DataTableColumnDirective,\n DataTableColumnHeaderDirective,\n SelectionType,\n TableColumn,\n TableColumnProp,\n} from '@marklb/ngx-datatable'\n\nimport { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DatatableColumnComponent } from '../datatable-column/datatable-column.component'\nimport { DatatableRowActionItemDirective } from '../directives/datatable-row-action-item.directive'\nimport { TheSeamDatatableColumn } from '../models/table-column'\nimport { createActionMenuColumn } from '../utils/create-action-menu-column'\nimport { createCheckboxColumn } from '../utils/create-checkbox-column'\nimport { getColumnProp } from '../utils/get-column-prop'\nimport { setColumnDefaults } from '../utils/set-column-defaults'\nimport { translateTemplateColumns } from '../utils/translate-templates'\nimport { DatatableColumnChangesService } from './datatable-column-changes.service'\n\nenum ColumnsTypes {\n Input,\n Template,\n Result,\n}\n\nexport type InternalColumnsGetter = () => TableColumn[]\n\n@Injectable()\nexport class ColumnsManagerService {\n private readonly _updateColumns = new Subject<void>()\n\n private readonly _inputColumns = new BehaviorSubject<TheSeamDatatableColumn[]>([])\n private readonly _templateColumns = new BehaviorSubject<DatatableColumnComponent[]>([])\n\n private readonly _inpColDiffersMap = new Map<TableColumnProp, KeyValueDiffer<any, any>>()\n private readonly _tplColDiffersMap = new Map<TableColumnProp, KeyValueDiffer<any, any>>()\n private readonly _resultColDiffersMap = new Map<TableColumnProp, KeyValueDiffer<any, any>>()\n private _colPropsDiffer?: KeyValueDiffer<any, any>\n\n private _internalColumnsGetter?: InternalColumnsGetter\n\n private _selectionType: SelectionType | undefined\n private _rowActionItem: DatatableRowActionItemDirective | undefined\n private _actionMenuCellTpl: TemplateRef<DataTableColumnDirective> | undefined\n private _blankHeaderTpl: TemplateRef<DataTableColumnHeaderDirective> | undefined\n private _treeToggleTpl: TemplateRef<DataTableColumnCellTreeToggle> | undefined\n private _headerTpl: TemplateRef<DataTableColumnHeaderDirective> | undefined\n private _cellTypeSelectorTpl: TemplateRef<DataTableColumnDirective> | undefined\n\n // TODO: Consider making this a columns changed obervable, to make changes more predictable.\n public readonly columns$: Observable<TheSeamDatatableColumn[]>\n\n constructor(\n private readonly _differs: KeyValueDiffers,\n private readonly _columnChangesService: DatatableColumnChangesService,\n ) {\n const templateColumns$ = this._columnChangesService.columnInputChanges$.pipe(\n startWith(undefined),\n switchMap(() => {\n return this._templateColumns.asObservable().pipe(map(translateTemplateColumns))\n })\n )\n\n this.columns$ = defer(() => {\n let isFirst = true\n return combineLatest([\n this._inputColumns.asObservable(),\n templateColumns$,\n this._updateColumns.asObservable().pipe(auditTime(0), startWith(undefined))\n ]).pipe(\n switchMap(([ inputColumns, templateColumns ]) => {\n const cols = this._mergeColumns(inputColumns, templateColumns)\n\n const hasColumnsChanged = this._hasColumnsChanged(cols)\n\n // TODO: Look for columns added/removed and remove the removed columns\n // differs, not just changes to columns.\n const hasAddedOrRemovedColumns = this._hasAddedOrRemovedColumns(cols)\n\n // NOTE: Both checks need to be run, even though only one needs to be\n // true, because their differs need to be called.\n if (hasColumnsChanged || hasAddedOrRemovedColumns || isFirst) {\n isFirst = false\n return of(cols)\n }\n\n return EMPTY\n }),\n )\n }).pipe(\n shareReplay({ refCount: true, bufferSize: 1 })\n )\n }\n\n public setInputColumns(columns: TheSeamDatatableColumn[]): void {\n this._inputColumns.next(columns)\n }\n\n public setTemplateColumns(columns: DatatableColumnComponent[]): void {\n this._templateColumns.next(columns)\n }\n\n public setInternalColumnsGetter(getter: InternalColumnsGetter | null): void {\n this._internalColumnsGetter = getter || undefined\n this._updateColumns.next(undefined)\n }\n\n public setSelectionType(selectionType: SelectionType | undefined): void {\n const changed = this._selectionType !== selectionType\n this._selectionType = selectionType\n if (changed) {\n this._updateColumns.next(undefined)\n }\n }\n\n public getSelectionType(): SelectionType | undefined {\n return this._selectionType\n }\n\n public setRowActionItem(rowActionItem: DatatableRowActionItemDirective | undefined): void {\n const changed = this._rowActionItem !== rowActionItem\n this._rowActionItem = rowActionItem\n if (changed) {\n this._updateColumns.next(undefined)\n }\n }\n\n public setActionMenuCellTpl(actionMenuCellTpl: TemplateRef<DataTableColumnDirective> | undefined): void {\n const changed = this._actionMenuCellTpl !== actionMenuCellTpl\n this._actionMenuCellTpl = actionMenuCellTpl\n if (changed) {\n this._updateColumns.next(undefined)\n }\n }\n\n public setBlankHeaderTpl(blankHeaderTpl: TemplateRef<DataTableColumnHeaderDirective> | undefined): void {\n const changed = this._blankHeaderTpl !== blankHeaderTpl\n this._blankHeaderTpl = blankHeaderTpl\n if (changed) {\n this._updateColumns.next(undefined)\n }\n }\n\n public setTreeToggleTpl(treeToggleTpl: TemplateRef<DataTableColumnCellTreeToggle> | undefined): void {\n const changed = this._treeToggleTpl !== treeToggleTpl\n this._treeToggleTpl = treeToggleTpl\n if (changed) {\n this._updateColumns.next(undefined)\n }\n }\n\n public setHeaderTpl(headerTpl: TemplateRef<DataTableColumnHeaderDirective> | undefined): void {\n const changed = this._headerTpl !== headerTpl\n this._headerTpl = headerTpl\n if (changed) {\n this._updateColumns.next(undefined)\n }\n }\n\n public setCellTypeSelectorTpl(cellTypeSelectorTpl: TemplateRef<DataTableColumnDirective> | undefined): void {\n const changed = this._cellTypeSelectorTpl !== cellTypeSelectorTpl\n this._cellTypeSelectorTpl = cellTypeSelectorTpl\n if (changed) {\n this._updateColumns.next(undefined)\n }\n }\n\n private _mergeColumns(\n inputColumns: TheSeamDatatableColumn[],\n templateColumns: DatatableColumnComponent[]\n ): TheSeamDatatableColumn[] {\n const cols: TheSeamDatatableColumn[] = []\n\n // Add the first column checkbox if 'checkbox' selection is enabled.\n if (this._shouldAddCheckboxColumn()) {\n cols.push(createCheckboxColumn())\n }\n\n // Column needs to be provided in the inputColumns, so iterate the\n // inputColumns.\n for (const inpCol of inputColumns) {\n const prop = getColumnProp(inpCol)\n if (!notNullOrUndefined(prop)) {\n throw Error(`Column may have 'prop' or 'name' defined.`)\n }\n\n const internalCol = this._getInternalColumn(prop)\n\n const inpColDif = this._getColDif(inpCol, ColumnsTypes.Input)\n if (notNullOrUndefined(inpColDif)) {\n this._updateColDif(inpColDif, internalCol, inpCol)\n }\n\n const tplCol = this._findColumnByProp(prop, templateColumns)\n if (tplCol !== undefined) {\n const tplColDif = this._getColDif(tplCol, ColumnsTypes.Template)\n if (notNullOrUndefined(tplColDif)) {\n this._updateColDif(tplColDif, internalCol, tplCol)\n }\n }\n\n const _col: TheSeamDatatableColumn = {\n ...(internalCol || {}),\n ...inpCol,\n // TODO: Rethink this, because I don't know if this is correct.\n ...(tplCol as any || {})\n }\n\n if (this._shouldAddTreeToggleColumn(_col)) {\n _col.treeToggleTemplate = this._treeToggleTpl\n }\n\n if (this._shouldAddHeaderTemplate(_col)) {\n _col.headerTemplate = this._headerTpl\n }\n\n if (this._shouldAddCellTypeSelectorTpl(_col)) {\n _col.cellTemplate = this._cellTypeSelectorTpl\n }\n\n cols.push(_col)\n }\n\n if (this._shouldAddRowActionColumn()) {\n cols.push(createActionMenuColumn(this._actionMenuCellTpl, this._blankHeaderTpl))\n }\n\n // Make sure the default for any missing props are set.\n // TODO: Determine if this should be done earlier, because I don't like\n // how this is done after dif checks.\n setColumnDefaults(cols)\n\n return cols\n }\n\n private _getInternalColumns(): TableColumn[] | undefined {\n if (this._internalColumnsGetter === undefined) {\n return undefined\n }\n\n return this._internalColumnsGetter()\n }\n\n private _getInternalColumn(prop: TableColumnProp): TableColumn | undefined {\n const internalCols = this._getInternalColumns()\n\n if (internalCols === undefined) {\n return undefined\n }\n\n return internalCols.find(c => getColumnProp(c) === prop)\n }\n\n private _findColumnByProp<T extends TheSeamDatatableColumn | DatatableColumnComponent>(\n prop: TableColumnProp,\n columns: T[]\n ): T | undefined {\n return columns.find(c => getColumnProp(c) === prop)\n }\n\n private _getDifMapForColumnsType(columnsType: ColumnsTypes): Map<TableColumnProp, KeyValueDiffer<any, any>> {\n switch (columnsType) {\n case ColumnsTypes.Input: return this._inpColDiffersMap\n case ColumnsTypes.Template: return this._tplColDiffersMap\n case ColumnsTypes.Result: return this._resultColDiffersMap\n }\n }\n\n private _getColumnDiffer(prop: TableColumnProp, colsType: ColumnsTypes): KeyValueDiffer<string, any> {\n const difMap = this._getDifMapForColumnsType(colsType)\n if (difMap === null) {\n throw Error(`Invalid columns type.`)\n }\n\n if (!difMap.has(prop)) {\n difMap.set(prop, this._differs.find({}).create())\n }\n\n const differ = difMap.get(prop)\n if (differ === undefined) {\n throw Error(`Differ not found. New differ should have been created.`)\n }\n\n return differ\n }\n\n private _getColDif(\n col: TheSeamDatatableColumn | DatatableColumnComponent,\n colsType: ColumnsTypes\n ): KeyValueChanges<string, any> | null {\n const prop = getColumnProp(col)\n if (prop === undefined) {\n throw Error(`Column prop not found.`)\n }\n\n return this._getColumnDiffer(prop, colsType).diff(col)\n }\n\n private _updateColDif(\n colDif: KeyValueChanges<string, any>,\n internalColumn: TableColumn | undefined,\n col: TheSeamDatatableColumn | DatatableColumnComponent\n ): void {\n colDif.forEachRemovedItem(r => {\n if (internalColumn && Object.prototype.hasOwnProperty.call(internalColumn, r.key)) {\n const k = r.key as keyof TableColumn\n delete internalColumn[k]\n }\n })\n colDif.forEachAddedItem(r => (col as any)[r.key] = r.currentValue)\n colDif.forEachChangedItem(r => (col as any)[r.key] = r.currentValue)\n }\n\n private _hasAddedOrRemovedColumns(columns: TheSeamDatatableColumn[]): boolean {\n if (!this._colPropsDiffer) {\n this._colPropsDiffer = this._differs.find([]).create()\n }\n\n const props = columns.map(c => getColumnProp(c))\n return this._colPropsDiffer.diff(props) !== null\n }\n\n private _hasColumnsChanged(columns: TheSeamDatatableColumn[]): boolean {\n let colChanged = false\n for (const col of columns) {\n const resultDif = this._getColDif(col, ColumnsTypes.Result)\n if (resultDif) {\n // NOTE: Can't return early, because the differs need to be updated.\n colChanged = true\n }\n }\n return colChanged\n }\n\n private _shouldAddCheckboxColumn(): boolean {\n return this._selectionType === SelectionType.checkbox\n }\n\n private _shouldAddRowActionColumn(): boolean {\n return this._rowActionItem !== undefined\n }\n\n private _shouldAddTreeToggleColumn(column: TheSeamDatatableColumn): boolean {\n return column.isTreeColumn !== undefined && column.isTreeColumn &&\n (!hasProperty(column, 'treeToggleTemplate') || !notNullOrUndefined(column.treeToggleTemplate))\n }\n\n private _shouldAddHeaderTemplate(column: TheSeamDatatableColumn): boolean {\n return !hasProperty(column, 'headerTemplate')\n }\n\n private _shouldAddCellTypeSelectorTpl(column: TheSeamDatatableColumn): boolean {\n return hasProperty(column, 'cellType')\n }\n\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { TheSeamDatatableAccessor } from '../models/datatable-accessor'\n\nexport const THESEAM_DATATABLE_ACCESSOR = new InjectionToken<TheSeamDatatableAccessor>(\n 'TheSeamDatatableAccessor'\n)\n","import { KeyValueDiffer } from '@angular/core'\n\nimport { TheSeamDatatableColumn } from './../models/table-column'\n\nexport function removeUnusedDiffs(\n cols: TheSeamDatatableColumn[],\n colDiffersInp: { [propName: string]: KeyValueDiffer<any, any> },\n colDiffersTpl: { [propName: string]: KeyValueDiffer<any, any> }\n): void {\n const inpKeys = Object.keys(colDiffersInp)\n inpKeys.filter(k => cols.findIndex(c => c.prop === k) === -1)\n .forEach(k => { delete colDiffersInp[k] })\n\n const tplKeys = Object.keys(colDiffersTpl)\n tplKeys.filter(k => cols.findIndex(c => c.prop === k) === -1)\n .forEach(k => { delete colDiffersTpl[k] })\n}\n","import { TheSeamDatatableAccessor } from './datatable-accessor'\nimport { TheSeamDatatableColumn } from './table-column'\n\nexport interface ColumnsAlterationState<TState = any> {\n readonly id: string\n readonly type: string\n readonly state: TState\n}\n\n/**\n * Alteration applied to a column or columns that can be persisted.\n *\n * Tracking if a column was altered by user or library code can be confusing.\n * This allows us to store a list of replayable alterations on columns. By\n * having a defined way to implement alterations, the datatable should be easier\n * to support external features that want to provide an alteration.\n *\n * NOTE: Current, to unapply an alteration you can create an alteration with\n * `persistent` set to false and the alteration will be removed after `apply()`\n * is called.\n */\nexport abstract class ColumnsAlteration<TState = any> {\n /**\n * This should be unique to the alteration, but determinable. When an app is\n * reloaded and alterations are restored from a persistable storage this\n * should still be recognizable.\n */\n public abstract readonly id: string\n\n /**\n * The alteration type.\n *\n * This can be used to group alteraction from a common feature.\n */\n public abstract readonly type: string\n\n constructor(\n /**\n * Persistable state.\n *\n * Returned value should be JSON stringifyable.\n */\n public state: TState,\n /**\n * If false, the state will not be persisted to a persistent storage and\n * will be removed after applied.\n */\n public readonly persistent: boolean\n ) {\n this.state = state\n }\n\n /**\n * Apply alteration to column.\n */\n public abstract apply(columns: TheSeamDatatableColumn[], datatable: TheSeamDatatableAccessor): void\n\n public toJSON(): ColumnsAlterationState<TState> {\n return {\n id: this.id,\n type: this.type,\n state: this.state\n }\n }\n}\n","import { TableColumnProp } from '@marklb/ngx-datatable'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { getColumnProp } from '../../utils/get-column-prop'\nimport { ColumnsAlteration } from '../columns-alteration'\nimport { TheSeamDatatableAccessor } from '../datatable-accessor'\nimport { TheSeamDatatableColumn } from '../table-column'\n\nexport interface HideColumnColumnsAlterationState {\n columnProp: TableColumnProp\n hidden: boolean\n}\n\nexport class HideColumnColumnsAlteration extends ColumnsAlteration<HideColumnColumnsAlterationState> {\n public readonly id: string\n\n public readonly type: string = 'hide-column'\n\n constructor(\n state: HideColumnColumnsAlterationState,\n persistent: boolean\n ) {\n super(state, persistent)\n\n if (!this._isValidState(state)) {\n throw Error(`Invalid state: ${JSON.stringify(state)}`)\n }\n\n this.id = `${this.type}--${state.columnProp}`\n }\n\n public apply(columns: TheSeamDatatableColumn<any, any>[], datatable: TheSeamDatatableAccessor): void {\n for (const col of columns) {\n const prop = getColumnProp(col)\n if (prop === this.state.columnProp) {\n col.hidden = this.state.hidden\n }\n }\n }\n\n private _isValidState(state: HideColumnColumnsAlterationState): boolean {\n // NOTE: Checking null or undefined, even though the type doesn't allow,\n // because the state may have been loaded from an invalid persistant\n // storage.\n\n // TODO: Remove when state validation/migration is implemented to happen\n // when retrieved from storage.\n if (!notNullOrUndefined(state.columnProp)) {\n return false\n }\n\n // TODO: Remove when state validation/migration is implemented to happen\n // when retrieved from storage.\n if (!notNullOrUndefined(state.hidden)) {\n return false\n }\n\n return true\n }\n}\n","import { SortType } from '@marklb/ngx-datatable'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { SortItem } from '../sort-item'\nimport { ColumnsAlteration } from '../columns-alteration'\nimport { TheSeamDatatableAccessor } from '../datatable-accessor'\nimport { TheSeamDatatableColumn } from '../table-column'\n\n// NOTE: This doesn't act on a single SortItem, because dealing with conflicts\n// between if a sort was added by an alteration or datatable input is difficult\n// to determine. There may be some good assumptions for handling the issues, but\n// for now I think it is safest to just store the whole sorts array as an\n// alteration.\nexport interface SortColumnsAlterationState {\n sorts: SortItem[]\n}\n\nexport class SortColumnsAlteration extends ColumnsAlteration<SortColumnsAlterationState> {\n public readonly id: string\n\n public readonly type: string = 'sort'\n\n constructor(\n state: SortColumnsAlterationState,\n persistent: boolean\n ) {\n super(state, persistent)\n\n if (!this._isValidState(state)) {\n throw Error(`Invalid state: ${JSON.stringify(state)}`)\n }\n\n this.id = `${this.type}`\n }\n\n public apply(columns: TheSeamDatatableColumn<any, any>[], datatable: TheSeamDatatableAccessor): void {\n if (datatable.sortType === SortType.single) {\n datatable.sorts = this.state.sorts.length > 0 ? [ this.state.sorts[0] ] : []\n } else {\n datatable.sorts = this.state.sorts\n }\n }\n\n private _isValidState(state: SortColumnsAlterationState): boolean {\n // NOTE: Checking null or undefined, even though the type doesn't allow,\n // because the state may have been loaded from an invalid persistant\n // storage.\n\n // TODO: Remove when state validation/migration is implemented to happen\n // when retrieved from storage.\n if (!notNullOrUndefined(state.sorts)) {\n return false\n }\n\n return true\n }\n}\n","import { TableColumnProp } from '@marklb/ngx-datatable'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { getColumnProp } from '../../utils/get-column-prop'\nimport { ColumnsAlteration } from '../columns-alteration'\nimport { TheSeamDatatableAccessor } from '../datatable-accessor'\nimport { TheSeamDatatableColumn } from '../table-column'\n\nexport interface WidthColumnsAlterationState {\n columnProp: TableColumnProp\n width?: number\n canAutoResize: boolean\n}\n\nexport class WidthColumnsAlteration extends ColumnsAlteration<WidthColumnsAlterationState> {\n public readonly id: string\n\n public readonly type: string = 'width'\n\n constructor(\n state: WidthColumnsAlterationState,\n persistent: boolean\n ) {\n super(state, persistent)\n\n if (!this._isValidState(state)) {\n throw Error(`Invalid state: ${JSON.stringify(state)}`)\n }\n\n this.id = `${this.type}--${state.columnProp}`\n }\n\n public apply(columns: TheSeamDatatableColumn<any, any>[], datatable: TheSeamDatatableAccessor): void {\n for (const col of columns) {\n const prop = getColumnProp(col)\n if (prop === this.state.columnProp) {\n col.canAutoResize = this.state.canAutoResize\n if (notNullOrUndefined(this.state.width)) {\n col.width = this.state.width\n }\n }\n }\n }\n\n private _isValidState(state: WidthColumnsAlterationState): boolean {\n // NOTE: Checking null or undefined, even though the type doesn't allow,\n // because the state may have been loaded from an invalid persistant\n // storage.\n\n // TODO: Remove when state validation/migration is implemented to happen\n // when retrieved from storage.\n if (!notNullOrUndefined(state.columnProp)) {\n return false\n }\n\n // TODO: Remove when state validation/migration is implemented to happen\n // when retrieved from storage.\n if (!notNullOrUndefined(state.canAutoResize)) {\n return false\n }\n\n return true\n }\n}\n","import { Injectable } from '@angular/core'\nimport { Observable, Subject } from 'rxjs'\n\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { ColumnsAlteration } from '../models/columns-alteration'\nimport { TheSeamDatatableColumn } from '../models/table-column'\nimport { TheSeamDatatableAccessor } from '../models/datatable-accessor'\nimport { HideColumnColumnsAlteration } from '../models/columns-alterations/hide-column.columns-alteration'\nimport { SortColumnsAlteration } from '../models/columns-alterations/sort.columns-alteration'\nimport { WidthColumnsAlteration } from '../models/columns-alterations/width.columns-alteration'\n\nexport interface ColumnsAlterationsChangedRecord {\n type: 'added' | 'removed'\n alteration: ColumnsAlteration\n}\n\nexport interface ColumnsAlterationsChangedEvent {\n changes: ColumnsAlterationsChangedRecord[]\n}\n\n@Injectable()\nexport class ColumnsAlterationsManagerService {\n\n private readonly _changesSubject = new Subject<ColumnsAlterationsChangedEvent>()\n private _alterations: ColumnsAlteration[] = []\n\n public readonly changes: Observable<ColumnsAlterationsChangedEvent>\n\n constructor() {\n this.changes = this._changesSubject.asObservable()\n }\n\n public get(): ColumnsAlteration[] {\n return [ ...this._alterations ]\n }\n\n /**\n * Adds alterations to be applied to columns.\n *\n * If an alteration with the same `id` already exists then the existing\n * alteration will be removed and the new one added.\n *\n * NOTE: When there is a duplicate alteration the old alteration is removed,\n * instead of updated, to maintain the order alterations are applied.\n */\n public add(alterations: ColumnsAlteration[], options?: { emitEvent?: boolean }): ColumnsAlterationsChangedRecord[] {\n // console.log('add', alterations)\n const removed: ColumnsAlterationsChangedRecord[] = this.remove(alterations, { emitEvent: false })\n this._alterations = [ ...this._alterations, ...alterations ]\n\n const changes: ColumnsAlterationsChangedRecord[] = [\n ...removed,\n ...alterations.map(a => {\n const record: ColumnsAlterationsChangedRecord = {\n type: 'added',\n alteration: a\n }\n return record\n })\n ]\n\n if (notNullOrUndefined(options?.emitEvent) && !options?.emitEvent) {\n return changes\n }\n\n this._emitChanges(changes)\n\n return changes\n }\n\n public remove(alterations: ColumnsAlteration[], options?: { emitEvent?: boolean }): ColumnsAlterationsChangedRecord[] {\n // console.log('remove', alterations)\n const removed: ColumnsAlterationsChangedRecord[] = []\n this._alterations = this._alterations.filter(x => {\n const found = alterations.findIndex(y => y.id === x.id) !== -1\n if (found) {\n const eventRecord: ColumnsAlterationsChangedRecord = {\n type: 'removed',\n alteration: x\n }\n removed.push(eventRecord)\n }\n return !found\n })\n\n // console.log('removed', removed, this._alterations)\n\n if (notNullOrUndefined(options?.emitEvent) && !options?.emitEvent) {\n return removed\n }\n\n this._emitChanges(removed)\n\n return removed\n }\n\n public apply(columns: TheSeamDatatableColumn[], datatable: TheSeamDatatableAccessor): void {\n for (const a of this._alterations) {\n a.apply(columns, datatable)\n }\n\n this._removeNonPersistant()\n }\n\n // TODO: Make aware of original column order and properties. This is tricky,\n // because the datatable does not deal with immutable column/row records and\n // it is hard to know where changes happened. Just serializing the columns\n // input is not enough, because the columns input is called anytime the user\n // makes a column change. We can probably come up with a mostly accurate\n // implementation, such as \"reset original columns cache when preferencesKey\n // changes\" or \"number of columns change\". There are issues with those rules,\n // but with some testing/experimenting I think there should be a \"good enough\"\n // solution.\n //\n // TODO: Find a generic way to clear alterations. I would like to add an\n // `unapply` method to `ColumnsAlteration`, but since the alterations\n // themselves are not too generic it may be tricky.\n public clear(options?: { emitEvent?: boolean }): ColumnsAlterationsChangedRecord[] {\n const changes: ColumnsAlterationsChangedRecord[] = []\n for (const colAlt of this._alterations) {\n switch (colAlt.type) {\n case 'hide-column': {\n const alteration = new HideColumnColumnsAlteration({ columnProp: colAlt.state.columnProp, hidden: false }, false)\n changes.push(...this.add([ alteration ]))\n break\n }\n case 'order': {\n changes.push(...this.remove([ colAlt ]))\n break\n }\n case 'sort': {\n const alteration = new SortColumnsAlteration({ sorts: [] }, false)\n changes.push(...this.add([ alteration ]))\n break\n }\n case 'width': {\n const alteration = new WidthColumnsAlteration({ columnProp: colAlt.state.columnProp, canAutoResize: true }, false)\n changes.push(...this.add([ alteration ]))\n break\n }\n }\n }\n\n if (notNullOrUndefined(options?.emitEvent) && !options?.emitEvent) {\n return changes\n }\n\n this._emitChanges(changes)\n\n return changes\n }\n\n private _removeNonPersistant(): void {\n const nonPersistent = this._alterations.filter(x => !x.persistent)\n this.remove(nonPersistent, { emitEvent: false })\n }\n\n private _emitChanges(changes: ColumnsAlterationsChangedRecord[]): void {\n if (changes.length === 0) {\n return\n }\n\n const event: ColumnsAlterationsChangedEvent = {\n changes\n }\n\n this._changesSubject.next(event)\n }\n\n}\n","import { ACTION_MENU_COLUMN_PROP } from '../utils/create-action-menu-column'\nimport { CHECKBOX_COLUMN_PROP } from '../utils/create-checkbox-column'\nimport { getColumnProp } from '../utils/get-column-prop'\nimport { TheSeamDatatableColumn } from './table-column'\n\n/**\n * Strings used for columns created and managed\n * by the datatable.\n */\nexport const INTERNAL_COLUMN_PROPS: string[] = [\n ACTION_MENU_COLUMN_PROP,\n CHECKBOX_COLUMN_PROP\n]\n\nexport function isInternalColumn(column: TheSeamDatatableColumn): boolean {\n return INTERNAL_COLUMN_PROPS.findIndex(p => getColumnProp(column) === p) !== -1\n}\n","import { isDevMode } from '@angular/core'\n\nimport { TableColumnProp } from '@marklb/ngx-datatable'\nimport { arrayMoveMutable, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { getColumnProp } from '../../utils/get-column-prop'\nimport { ColumnsAlteration } from '../columns-alteration'\nimport { TheSeamDatatableAccessor } from '../datatable-accessor'\nimport { isInternalColumn } from '../internal-column-props'\nimport { TheSeamDatatableColumn } from '../table-column'\n\nexport interface ColumnOrderRecord {\n columnProp: TableColumnProp\n index: number\n}\n\nexport interface OrderColumnsAlterationState {\n // NOTE: This stores the column index of reordered columns only, to avoid any\n // new columns from always being placed at the end. The moved columns should\n // always be accurate relative to each other, but if this becomes an issue\n // then we can just store all the columns positions.\n columns: ColumnOrderRecord[]\n}\n\nexport class OrderColumnsAlteration extends ColumnsAlteration<OrderColumnsAlterationState> {\n public readonly id: string\n\n public readonly type: string = 'order'\n\n constructor(\n state: OrderColumnsAlterationState,\n persistent: boolean\n ) {\n super(state, persistent)\n\n if (!this._isValidState(state)) {\n throw Error(`Invalid state: ${JSON.stringify(state)}`)\n }\n\n this.id = `${this.type}`\n }\n\n public apply(columns: TheSeamDatatableColumn<any, any>[], datatable: TheSeamDatatableAccessor): void {\n if (this.state.columns.length === 0) {\n return\n }\n\n const stateColumns = this._stateColumns()\n\n // The internal columns are not intended for a user to be able to move them.\n // Store the internal columns current index, so it can be moved back ofter\n // sorting. This may not be the best way to do this, but it is easier than\n // making a sort that avoids them.\n //\n // NOTE: If we add an internal column that can be moved then this will need\n // to be changed.\n const internalColumns = columns\n .map((column, index) => ({ column, index }))\n .filter(x => isInternalColumn(x.column))\n\n for (const c of stateColumns) {\n const currentIndex = columns.findIndex(x => getColumnProp(x) === c.columnProp)\n if (currentIndex === c.index || currentIndex === -1) {\n // Skip if already at correct index.\n // Skip columns not found. It may be a column that was removed from the\n // table, but we still want to handle the other columns.\n continue\n }\n\n arrayMoveMutable(columns, currentIndex, c.index)\n }\n\n for (const c of internalColumns) {\n const currentIndex = columns.findIndex(col => col === c.column)\n if (currentIndex !== -1) {\n arrayMoveMutable(columns, currentIndex, c.index)\n } else {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn(`Internal column could not be found after sorting. Was it lost during the sorting?`)\n }\n }\n }\n }\n\n private _isValidState(state: OrderColumnsAlterationState): boolean {\n // NOTE: Checking null or undefined, even though the type doesn't allow,\n // because the state may have been loaded from an invalid persistant\n // storage.\n\n // TODO: Remove when state validation/migration is implemented to happen\n // when retrieved from storage.\n if (!notNullOrUndefined(state.columns)) {\n return false\n }\n\n // NOTE: Didn't iterate each column record, because it is probably better to\n // just skip to invalid column records. It does prevent being able to\n // validate the whole state though.\n\n return true\n }\n\n private _isColumnOrderRecordValid(columnOrder: ColumnOrderRecord): boolean {\n return notNullOrUndefined(columnOrder.columnProp) && notNullOrUndefined(columnOrder.index)\n }\n\n private _stateColumns(): ColumnOrderRecord[] {\n return this.state.columns.filter(c => {\n if (!this._isColumnOrderRecordValid(c)) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('Invalid column order record', c)\n }\n return false\n }\n return true\n }).sort((a, b) => a.index === b.index ? 0 : a.index > b.index ? 1 : -1)\n }\n}\n","import { isDevMode } from '@angular/core'\n\nimport { ColumnsAlteration, ColumnsAlterationState } from '../models/columns-alteration'\nimport { HideColumnColumnsAlteration } from '../models/columns-alterations/hide-column.columns-alteration'\nimport { OrderColumnsAlteration } from '../models/columns-alterations/order.columns-alteration'\nimport { SortColumnsAlteration } from '../models/columns-alterations/sort.columns-alteration'\nimport { WidthColumnsAlteration } from '../models/columns-alterations/width.columns-alteration'\n\nexport function mapColumnsAlterationsStates(states: ColumnsAlterationState[]): ColumnsAlteration[] {\n const alterations: ColumnsAlteration[] = []\n\n for (const state of states) {\n try {\n switch (state.type) {\n case 'hide-column': alterations.push(new HideColumnColumnsAlteration(state.state, true)); break\n case 'width': alterations.push(new WidthColumnsAlteration(state.state, true)); break\n case 'order': alterations.push(new OrderColumnsAlteration(state.state, true)); break\n case 'sort': alterations.push(new SortColumnsAlteration(state.state, true)); break\n default: {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('Unrecognized ColumnsAlteration state', state)\n }\n }\n }\n } catch (e) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('Unable to map ColumnsAlteration state', state)\n // eslint-disable-next-line no-console\n console.warn(e)\n }\n }\n }\n\n return alterations\n}\n","import { TheSeamPreferencesBase } from '@theseam/ui-common/services'\n\nimport { ColumnsAlterationState } from './columns-alteration'\n\nexport interface TheSeamDatatablePreferencesColumn {\n prop: string\n width?: number\n canAutoResize?: boolean\n hidden?: boolean\n}\n\nexport interface TheSeamDatatablePreferences_v1 {\n columns?: TheSeamDatatablePreferencesColumn[]\n}\n\nexport interface TheSeamDatatablePreferences_v2 extends TheSeamPreferencesBase {\n version: 2\n alterations: ColumnsAlterationState[]\n}\n\nexport type TheSeamDatatablePreferences = TheSeamDatatablePreferences_v2\n\nexport const CURRENT_DATATABLE_PREFERENCES_VERSION = 2\n\nexport const EMPTY_DATATABLE_PREFERENCES: TheSeamDatatablePreferences = {\n version: 2,\n alterations: []\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { TheSeamPreferencesAccessor } from '@theseam/ui-common/services'\n\nexport const THESEAM_DATATABLE_PREFERENCES_ACCESSOR = new InjectionToken<TheSeamPreferencesAccessor>(\n 'TheSeamDatatablePreferencesAccessor'\n)\n","import { Inject, Injectable, Optional } from '@angular/core'\nimport { Observable, of } from 'rxjs'\nimport { map, switchMap, take, tap } from 'rxjs/operators'\n\nimport { TheSeamPreferencesAccessor, TheSeamPreferencesBase, TheSeamPreferencesManagerService } from '@theseam/ui-common/services'\n\nimport { CURRENT_DATATABLE_PREFERENCES_VERSION, EMPTY_DATATABLE_PREFERENCES, TheSeamDatatablePreferences } from '../models/preferences'\nimport { THESEAM_DATATABLE_PREFERENCES_ACCESSOR } from '../tokens/datatable-preferences-accessor'\nimport { ColumnsAlterationState } from '../models/columns-alteration'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DatatablePreferencesService {\n\n // TODO: Remove the need for this internal pending flag. I only kept it for\n // backwards compatibility, until better tests are added to make sure if isn't\n // neccessary anymore.\n\n /**\n * Used to prevent multiple updates from happening at the same time, but it is not per key.\n */\n private _pending = false\n\n constructor(\n private readonly _preferencesManager: TheSeamPreferencesManagerService,\n @Optional() @Inject(THESEAM_DATATABLE_PREFERENCES_ACCESSOR) private _prefsAccessor?: TheSeamPreferencesAccessor\n ) { }\n\n public isPending(preferenceKey: string): boolean {\n return this._pending || this._preferencesManager.isPending(preferenceKey)\n }\n\n public isLoaded(preferenceKey: string): boolean {\n if (this._pending) {\n return false\n }\n return this._preferencesManager.isLoaded(preferenceKey)\n }\n\n public preferences(preferenceKey: string): Observable<TheSeamDatatablePreferences> {\n if (!this._prefsAccessor) {\n return of(JSON.parse(JSON.stringify(EMPTY_DATATABLE_PREFERENCES)))\n }\n\n return this._preferencesManager.preferences(preferenceKey, this._prefsAccessor, EMPTY_DATATABLE_PREFERENCES).pipe(\n map(prefs => {\n if (this._isValidDatatablePreferences(prefs)) {\n return prefs\n }\n throw Error(`Preferences for key '${preferenceKey}' is not a valid datatable preferences.`)\n })\n )\n }\n\n public refresh(preferenceKey: string): void {\n this._preferencesManager.refresh(preferenceKey)\n }\n\n public setAlterations(preferenceKey: string, alterations: ColumnsAlterationState[]): void {\n if (!this._prefsAccessor) {\n return\n }\n\n this._pending = true\n this.preferences(preferenceKey).pipe(\n map(prefs => {\n // Making the preferences immutable may not be necessary, but for now\n // this obj->str->obj will work as a naive clone.\n // const columns = JSON.parse(JSON.stringify(prefs.columns || []))\n // const _colPref = columns.find((c: any) => c.prop === column.prop)\n // // console.log('has', _colPref)\n // if (_colPref) {\n // // console.log('hasProperty(column, \"width\"))', hasProperty(column, 'width'))\n // if (hasProperty(column, 'width')) { _colPref.width = column.width }\n // if (hasProperty(column, 'canAutoResize')) { _colPref.canAutoResize = column.canAutoResize }\n // if (hasProperty(column, 'hidden')) { _colPref.hidden = column.hidden }\n // } else {\n // columns.push({ ...column })\n // }\n // const newPrefs: TheSeamDatatablePreferences = { ...prefs, columns }\n // return newPrefs\n\n const newPrefs: TheSeamDatatablePreferences = {\n ...EMPTY_DATATABLE_PREFERENCES,\n alterations\n }\n this._pending = false\n return newPrefs\n }),\n // tap(v => console.log('newPrefs', v)),\n take(1),\n switchMap(newPrefs => this._prefsAccessor\n ? this._prefsAccessor.update(preferenceKey, JSON.stringify(newPrefs))\n : of(newPrefs)\n ),\n tap(() => this.refresh(preferenceKey))\n )\n .subscribe()\n }\n\n private _isValidDatatablePreferences(prefs: TheSeamPreferencesBase): prefs is TheSeamDatatablePreferences {\n return prefs.version === CURRENT_DATATABLE_PREFERENCES_VERSION\n }\n\n}\n","import { animate, style, transition, trigger } from '@angular/animations'\nimport { BooleanInput, coerceArray, NumberInput } from '@angular/cdk/coercion'\nimport { CollectionViewer, DataSource, isDataSource, ListRange } from '@angular/cdk/collections'\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostListener,\n InjectionToken,\n Input,\n isDevMode,\n KeyValueDiffer,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild\n} from '@angular/core'\nimport { BehaviorSubject, from, isObservable, Observable, of, Subject, Subscription } from 'rxjs'\nimport { concatMap, distinctUntilChanged, map, startWith, switchMap, take, takeUntil, tap } from 'rxjs/operators'\n\nimport { faChevronDown, faChevronRight, faSpinner } from '@fortawesome/free-solid-svg-icons'\nimport {\n ColumnMode,\n ContextmenuType,\n DataTableColumnCellTreeToggle,\n DataTableColumnDirective,\n DataTableColumnHeaderDirective,\n DatatableComponent as NgxDatatableComponent,\n DatatableRowDetailDirective,\n SortType,\n TreeStatus\n} from '@marklb/ngx-datatable'\nimport type { SelectionType } from '@marklb/ngx-datatable'\n\nimport { InputBoolean, InputNumber } from '@theseam/ui-common/core'\nimport { composeDataFilters, composeDataFilterStates, DataFilter, DataFilterState } from '@theseam/ui-common/data-filters'\nimport { IElementResizedEvent } from '@theseam/ui-common/shared'\nimport { notNullOrUndefined, waitOnConditionAsync } from '@theseam/ui-common/utils'\n\nimport { DatatableActionMenuComponent } from '../datatable-action-menu/datatable-action-menu.component'\nimport { DatatableColumnComponent } from '../datatable-column/datatable-column.component'\nimport { TheSeamDatatableFooterDirective } from '../datatable-footer/datatable-footer.directive'\nimport { DatatableMenuBarComponent } from '../datatable-menu-bar/datatable-menu-bar.component'\nimport { TheSeamDatatableRowDetailDirective } from '../datatable-row-detail/datatable-row-detail.directive'\nimport { DatatableRowActionItemDirective } from '../directives/datatable-row-action-item.directive'\nimport { TheSeamDatatableAccessor } from '../models/datatable-accessor'\nimport { DatatableDataSource } from '../models/datatable-data-source'\nimport { TheSeamPageInfo } from '../models/page-info'\nimport { SortEvent } from '../models/sort-event'\nimport { SortItem } from '../models/sort-item'\nimport { TheSeamDatatableColumn } from '../models/table-column'\nimport { ColumnsManagerService } from '../services/columns-manager.service'\nimport { DatatableColumnChangesService } from '../services/datatable-column-changes.service'\nimport { DatatablePreferencesService } from '../services/datatable-preferences.service'\nimport { THESEAM_DATATABLE_ACCESSOR } from '../tokens/datatable-accessor'\nimport { removeUnusedDiffs } from '../utils/remove-unused-diffs'\nimport { translateTemplateColumns } from '../utils/translate-templates'\nimport { ColumnsAlterationsManagerService } from '../services/columns-alterations-manager.service'\nimport { ColumnsAlteration } from '../models/columns-alteration'\nimport { mapColumnsAlterationsStates } from '../utils/map-columns-alterations-states'\nimport { WidthColumnsAlteration } from '../models/columns-alterations/width.columns-alteration'\nimport { getColumnProp } from '../utils/get-column-prop'\nimport { OrderColumnsAlteration, OrderColumnsAlterationState } from '../models/columns-alterations/order.columns-alteration'\nimport { SortColumnsAlteration } from '../models/columns-alterations/sort.columns-alteration'\n\n/**\n * NOTE: This is still being worked on. I am trying to figure out this model\n * because `ngx-datatable` just uses an untyped object and sets properties in\n * multiple places.\n */\nexport interface ICellContext {\n allRowsSelected: false\n\n selectFn: () => any\n sortDir?: 'asc' | 'desc'\n sortFn: () => any\n\n expanded?: boolean\n\n onCheckboxChangeFn?: any\n activateFn?: any\n row?: any\n group?: any\n value?: any\n column?: TheSeamDatatableColumn\n rowHeight?: number\n isSelected?: boolean\n rowIndex?: number\n treeStatus?: TreeStatus\n onTreeAction?: any\n}\n\n/**\n * Intended for internal classes declared by the `TheSeamDatatableModule`.\n */\nexport const THESEAM_DATATABLE = new InjectionToken<DataFilter>('LibDatatable')\n\nexport const _THESEAM_DATATABLE: any = {\n provide: THESEAM_DATATABLE,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DatatableComponent)\n}\n\nexport const _THESEAM_DATATABLE_ACCESSOR: any = {\n provide: THESEAM_DATATABLE_ACCESSOR,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DatatableComponent)\n}\n\n@Component({\n selector: 'seam-datatable',\n templateUrl: './datatable.component.html',\n styleUrls: ['./datatable.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('slideDown', [\n transition(':enter', [\n style({ transform: 'translateY(-20%)', opacity: '0' }),\n animate('250ms', style({ transform: 'translateY(0)', opacity: '1' })),\n ]),\n transition(':leave', [\n style({ transform: 'translateY(0)', opacity: '1' }),\n animate('250ms', style({ transform: 'translateY(-20%)', opacity: '0' })),\n ])\n ])\n ],\n providers: [\n _THESEAM_DATATABLE,\n DatatableColumnChangesService,\n _THESEAM_DATATABLE_ACCESSOR,\n ColumnsManagerService,\n ColumnsAlterationsManagerService,\n ]\n})\nexport class DatatableComponent\n implements OnInit, OnDestroy, TheSeamDatatableAccessor, CollectionViewer {\n static ngAcceptInputType_externalPaging: BooleanInput\n static ngAcceptInputType_externalSorting: BooleanInput\n static ngAcceptInputType_externalFiltering: BooleanInput\n static ngAcceptInputType_loadingIndicator: BooleanInput\n static ngAcceptInputType_reorderable: BooleanInput\n static ngAcceptInputType_swapColumns: BooleanInput\n static ngAcceptInputType_groupExpansionDefault: BooleanInput\n static ngAcceptInputType_selectAllRowsOnPage: BooleanInput\n static ngAcceptInputType_summaryRow: BooleanInput\n static ngAcceptInputType_virtualization: BooleanInput\n static ngAcceptInputType_scrollbarV: BooleanInput\n static ngAcceptInputType_scrollbarH: BooleanInput\n static ngAcceptInputType_limit: NumberInput\n static ngAcceptInputType_count: NumberInput\n static ngAcceptInputType_offset: NumberInput\n static ngAcceptInputType_headerHeight: NumberInput\n static ngAcceptInputType_rowHeight: NumberInput\n static ngAcceptInputType_footerHeight: NumberInput\n static ngAcceptInputType_summaryHeight: NumberInput\n static ngAcceptInputType_columns: TheSeamDatatableColumn[] | undefined | null\n static ngAcceptInputType_sorts: SortItem[] | undefined | null\n\n readonly _faChevronDown = faChevronDown\n readonly _faChevronRight = faChevronRight\n readonly _faSpinner = faSpinner\n\n private readonly _ngUnsubscribe = new Subject()\n private readonly _filtersSubject = new BehaviorSubject<DataFilter[]>([])\n private readonly _dataSourceSubject = new BehaviorSubject<DataSource<any> | any[] | undefined>(undefined)\n\n private _resizing: { [prop: string]: boolean } = {}\n\n public readonly filterStates: Observable<DataFilterState[]>\n\n get filters(): DataFilter[] { return this._filtersSubject.value }\n\n public readonly filters$: Observable<DataFilter[]>\n\n @Input()\n get preferencesKey(): string | undefined | null { return this._preferencesKey.value }\n set preferencesKey(value: string | undefined | null) { this._preferencesKey.next(value || undefined) }\n private _preferencesKey = new BehaviorSubject<string | undefined | null>(undefined)\n\n @Input() targetMarkerTemplate: any\n\n @Input()\n set columns(value: TheSeamDatatableColumn[]) {\n this._columnsManager.setInputColumns(Array.isArray(value) ? value : [])\n }\n\n @Input()\n get rows(): any[] { return this._rows.value }\n set rows(value: any[]) {\n this._rows.next(value || [])\n }\n private _rows = new BehaviorSubject<any[]>([])\n\n public rows$: Observable<any[]>\n\n @Input() columnMode: ColumnMode | undefined | null = ColumnMode.force\n\n @Input() groupRowsBy: string | undefined | null\n @Input() groupedRows: any[] | undefined | null\n\n @Input() selected: any[] | undefined | null = []\n\n @Input() @InputBoolean() externalPaging = false\n @Input() @InputBoolean() externalSorting = false\n @Input() @InputBoolean() externalFiltering = false\n\n @Input() @InputNumber() limit: number | undefined\n @Input() @InputNumber(0) count = 0\n @Input() @InputNumber(0) offset = 0\n\n @Input() @InputBoolean() loadingIndicator = false\n\n @Input()\n get selectionType(): SelectionType | undefined | null { return this._columnsManager.getSelectionType() }\n set selectionType(value: SelectionType | undefined | null) {\n this._columnsManager.setSelectionType(notNullOrUndefined(value) ? value : undefined)\n }\n\n @Input() @InputBoolean() reorderable = true\n @Input() @InputBoolean() swapColumns = false\n\n @Input()\n get sortType(): SortType { return this._sortType }\n set sortType(value: SortType) {\n if (notNullOrUndefined(value) && (value === SortType.single || value === SortType.multi)) {\n this._sortType = value\n } else {\n this._sortType = SortType.single\n }\n }\n _sortType: SortType = SortType.single\n\n @Input()\n get sorts(): SortItem[] {\n return this.ngxDatatable ? this.ngxDatatable.sorts : this._sorts\n }\n set sorts(value: SortItem[]) {\n this._sorts = notNullOrUndefined(value) ? coerceArray(value) : []\n }\n _sorts: SortItem[] = []\n\n @Input() cssClasses: any | undefined | null = {\n sortAscending: 'datatable-icon-up',\n sortDescending: 'datatable-icon-down',\n pagerLeftArrow: 'datatable-icon-left',\n pagerRightArrow: 'datatable-icon-right',\n pagerPrevious: 'datatable-icon-prev',\n pagerNext: 'datatable-icon-skip'\n }\n\n @Input() messages: any | undefined | null = {\n // Message to show when array is presented\n // but contains no values\n emptyMessage: 'No records found',\n\n // Footer total message\n totalMessage: 'total',\n\n // Footer selected message\n selectedMessage: 'selected'\n }\n\n @Input() rowIdentity: ((x: any) => any) | undefined | null = (x: any) => x\n\n @Input() rowClass: any | undefined | null\n\n @Input() selectCheck: any | undefined | null\n @Input() displayCheck: ((row: any, column?: any, value?: any) => boolean) | undefined | null\n\n @Input() @InputBoolean() groupExpansionDefault = false\n\n @Input() trackByProp: string | undefined | null\n\n @Input() @InputBoolean() selectAllRowsOnPage = false\n\n @Input() treeFromRelation: string | undefined | null\n @Input() treeToRelation: string | undefined | null\n @Input() @InputBoolean() summaryRow = false\n @Input() @InputNumber() summaryHeight = 30\n @Input() summaryPosition: string | undefined | null = 'top'\n\n @Input() @InputBoolean() virtualization = true\n\n @Input() @InputNumber() headerHeight = 50\n @Input() @InputNumber() rowHeight = 50\n @Input() @InputNumber() footerHeight = 40\n\n @Input() @InputBoolean() scrollbarV = true\n @Input() @InputBoolean() scrollbarH = true\n\n @Input()\n set dataSource(value: DataSource<any> | any[] | undefined | null) {\n if (value instanceof DatatableDataSource) {\n value.setDatatableAccessor(this)\n }\n this._dataSourceSubject.next(value || undefined)\n }\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly scroll = new EventEmitter<any>()\n @Output() readonly activate = new EventEmitter<any>()\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly select = new EventEmitter<any>()\n @Output() readonly sort = new EventEmitter<SortEvent>()\n @Output() readonly page = new EventEmitter<TheSeamPageInfo>()\n @Output() readonly reorder = new EventEmitter<any>()\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly resize = new EventEmitter<any>()\n @Output() readonly tableContextmenu = new EventEmitter<{ event: MouseEvent, type: ContextmenuType, content: any }>(false)\n @Output() readonly treeAction = new EventEmitter<any>()\n\n @Output() readonly actionRefreshRequest = new EventEmitter<void>()\n @Output() readonly hiddenColumnsChange = new EventEmitter<string[]>()\n\n @ContentChildren(DatatableColumnComponent)\n set columnComponents(value: QueryList<DatatableColumnComponent> | undefined) {\n this._columnsManager.setTemplateColumns(translateTemplateColumns(value?.toArray() ?? []))\n }\n\n @ContentChild(DatatableActionMenuComponent, { static: true }) actionMenu?: DatatableActionMenuComponent\n @ContentChild(DatatableRowActionItemDirective, { static: true })\n get rowActionItem(): DatatableRowActionItemDirective | undefined { return this._rowActionItem }\n set rowActionItem(value: DatatableRowActionItemDirective | undefined) {\n this._rowActionItem = value\n this._columnsManager.setRowActionItem(notNullOrUndefined(value) ? value : undefined)\n }\n private _rowActionItem: DatatableRowActionItemDirective | undefined\n\n @ContentChild(TheSeamDatatableRowDetailDirective, { static: true }) rowDetail?: TheSeamDatatableRowDetailDirective\n @ContentChild(TheSeamDatatableFooterDirective, { static: true }) footer?: TheSeamDatatableFooterDirective\n\n @ContentChild(DatatableMenuBarComponent)\n get menuBarComponent(): DatatableMenuBarComponent | undefined { return this._menuBarComponent }\n set menuBarComponent(value: DatatableMenuBarComponent | undefined) {\n this._menuBarComponent = value\n\n if (this._menuBarSub) { this._menuBarSub.unsubscribe() }\n\n if (value) {\n this._setMenuBarFilters(value.filters())\n\n this._menuBarSub = this._menuBarComponent?.filtersChanged\n .subscribe(v => { this._setMenuBarFilters(value.filters()) })\n }\n }\n private _menuBarComponent: DatatableMenuBarComponent | undefined\n private _menuBarSub: Subscription | undefined\n\n @ViewChild(NgxDatatableComponent) ngxDatatable?: NgxDatatableComponent\n @ViewChild(NgxDatatableComponent, { read: ElementRef }) ngxDatatableElement?: ElementRef\n @ViewChild(DatatableRowDetailDirective) ngxRowDetail?: DatatableRowDetailDirective\n\n @ViewChild('actionMenuCellTpl', { static: true })\n get actionMenuCellTpl(): TemplateRef<DataTableColumnDirective> | undefined { return this._actionMenuCellTpl }\n set actionMenuCellTpl(value: TemplateRef<DataTableColumnDirective> | undefined) {\n this._actionMenuCellTpl = value\n this._columnsManager.setActionMenuCellTpl(notNullOrUndefined(value) ? value : undefined)\n }\n private _actionMenuCellTpl: TemplateRef<DataTableColumnDirective> | undefined\n\n @ViewChild('treeToggleTpl', { static: true })\n get treeToggleTpl(): TemplateRef<DataTableColumnCellTreeToggle> | undefined { return this._treeToggleTpl }\n set treeToggleTpl(value: TemplateRef<DataTableColumnCellTreeToggle> | undefined) {\n this._treeToggleTpl = value\n this._columnsManager.setTreeToggleTpl(notNullOrUndefined(value) ? value : undefined)\n }\n private _treeToggleTpl: TemplateRef<DataTableColumnCellTreeToggle> | undefined\n\n @ViewChild('headerTpl', { static: true })\n get headerTpl(): TemplateRef<DataTableColumnHeaderDirective> | undefined { return this._headerTpl }\n set headerTpl(value: TemplateRef<DataTableColumnHeaderDirective> | undefined) {\n this._headerTpl = value\n this._columnsManager.setHeaderTpl(notNullOrUndefined(value) ? value : undefined)\n }\n private _headerTpl: TemplateRef<DataTableColumnHeaderDirective> | undefined\n\n @ViewChild('blankHeaderTpl', { static: true })\n get blankHeaderTpl(): TemplateRef<DataTableColumnHeaderDirective> | undefined { return this._blankHeaderTpl }\n set blankHeaderTpl(value: TemplateRef<DataTableColumnHeaderDirective> | undefined) {\n this._blankHeaderTpl = value\n this._columnsManager.setBlankHeaderTpl(notNullOrUndefined(value) ? value : undefined)\n }\n private _blankHeaderTpl: TemplateRef<DataTableColumnHeaderDirective> | undefined\n\n @ViewChild('cellTypeSelectorTpl', { static: true })\n get cellTypeSelectorTpl(): TemplateRef<DataTableColumnDirective> | undefined { return this._cellTypeSelectorTpl }\n set cellTypeSelectorTpl(value: TemplateRef<DataTableColumnDirective> | undefined) {\n this._cellTypeSelectorTpl = value\n this._columnsManager.setCellTypeSelectorTpl(notNullOrUndefined(value) ? value : undefined)\n }\n private _cellTypeSelectorTpl: TemplateRef<DataTableColumnDirective> | undefined\n\n public columnComponents$?: Observable<DatatableColumnComponent[]>\n private _colDiffersInp: { [propName: string]: KeyValueDiffer<any, any> } = {}\n private _colDiffersTpl: { [propName: string]: KeyValueDiffer<any, any> } = {}\n\n public readonly columns$: Observable<TheSeamDatatableColumn[]>\n public readonly displayColumns$: Observable<TheSeamDatatableColumn[]>\n\n viewChange: Observable<ListRange>\n\n private _rowDetailToggleSubscription = Subscription.EMPTY\n\n // TODO: Remove this DOM-dependent code when a way to property listen for\n // dblclick on the header reasize handles.\n @HostListener('dblclick', [ '$event' ])\n _dblClick(event: any) {\n const isHandle = (event.target as HTMLElement).classList.contains('resize-handle')\n if (isHandle) {\n const isResizeable = (event.target as HTMLElement).parentElement?.classList.contains('resizeable')\n if (isResizeable) {\n event.stopPropagation()\n const id = (event.target as HTMLElement).parentElement\n ?.querySelector('.datatable-column-header-separator')\n ?.getAttribute('data-column-id')\n this._columnsManager.columns$.pipe(\n take(1),\n ).subscribe(columns => {\n const column = columns.find(c => c.$$id === id)\n if (column) {\n const columnProp = getColumnProp(column)\n if (columnProp) {\n const alteration = new WidthColumnsAlteration({ columnProp, canAutoResize: true }, false)\n this._columnsAlterationsManager.add([ alteration ])\n }\n }\n })\n }\n }\n }\n\n constructor(\n private readonly _preferences: DatatablePreferencesService,\n private readonly _columnsManager: ColumnsManagerService,\n private readonly _columnsAlterationsManager: ColumnsAlterationsManagerService,\n ) {\n this._preferencesKey.pipe(\n distinctUntilChanged(),\n switchMap(key => {\n if (!notNullOrUndefined(key) || key.length === 0) {\n return of(undefined)\n }\n\n return from(waitOnConditionAsync(() => this._preferences.isLoaded(key))).pipe(\n switchMap(() => this._columnsAlterationsManager.changes.pipe(\n startWith(undefined),\n tap(() => {\n this._preferences.setAlterations(key, this._columnsAlterationsManager.get())\n }),\n ))\n )\n }),\n takeUntil(this._ngUnsubscribe),\n ).subscribe()\n\n const applyPrefs = (cols: TheSeamDatatableColumn[]) => this._columnsAlterationsManager.changes.pipe(\n startWith(undefined),\n map(() => {\n this._columnsAlterationsManager.apply(cols, this)\n return cols\n }),\n )\n\n this._preferencesKey.pipe(\n distinctUntilChanged(),\n switchMap(prefsKey => {\n if (!notNullOrUndefined(prefsKey)) {\n return of(undefined)\n }\n return this._preferences.preferences(prefsKey).pipe(\n switchMap(async preferences => {\n await waitOnConditionAsync(() => this._preferences.isLoaded(prefsKey))\n return preferences\n }),\n take(1),\n map(preferences => {\n let alterations: ColumnsAlteration[] = []\n try {\n alterations = mapColumnsAlterationsStates(preferences.alterations)\n } catch (e) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('Unable to map columns alterations states')\n // eslint-disable-next-line no-console\n console.warn(e)\n }\n }\n\n this._columnsAlterationsManager.add(alterations)\n })\n )\n }),\n takeUntil(this._ngUnsubscribe)\n ).subscribe()\n\n this.columns$ = this._columnsManager.columns$\n\n this.displayColumns$ = this.columns$.pipe(\n switchMap(cols => applyPrefs(cols)),\n map(cols => cols.filter(c => !c.hidden)),\n tap(v => removeUnusedDiffs(v, this._colDiffersInp, this._colDiffersTpl)),\n )\n\n this.filters$ = this._filtersSubject.asObservable()\n\n this.filterStates = this._filtersSubject.asObservable().pipe(\n switchMap(filters => composeDataFilterStates(filters))\n )\n\n this.rows$ = this._dataSourceSubject.pipe(\n switchMap(dataSource => {\n // console.log('dataSource', dataSource)\n let dataStream: Observable<any[]>\n\n if (isDataSource(dataSource)) {\n // console.log('~datasource')\n dataStream = dataSource.connect(this) as any\n } else if (isObservable(dataSource)) {\n // console.log('~observable')\n dataStream = dataSource as any\n } else if (Array.isArray(dataSource)) {\n // console.log('~array')\n dataStream = of(dataSource)\n } else {\n // console.log('~rows fallback')\n dataStream = this._rows.asObservable()\n // .pipe(tap(v => console.log('rows~', v)))\n }\n\n if (!this.externalFiltering) {\n // console.log('not using externalFiltering')\n dataStream = dataStream.pipe(\n switchMap(rows => this._filtersSubject.pipe(\n // tap(v => console.log('filters', v)),\n concatMap(filters => of(rows).pipe(composeDataFilters(filters))),\n // tap(v => console.log('composed filters', v)),\n ))\n )\n\n // dataStream = this._filtersSubject.pipe(\n // tap(v => console.log('filters', v)),\n // concatMap(filters => dataStream.pipe(composeDataFilters(filters))),\n // tap(v => console.log('composed filters', v)),\n // )\n }\n\n return dataStream.pipe(\n // tap(v => console.log('stream', v)),\n takeUntil(this._ngUnsubscribe)\n )\n })\n )\n\n // TODO: Implement viewChange for CollectionViewer.\n this.viewChange = this.page.pipe(map(p => ({ start: 0, end: p.count })))\n }\n\n ngOnInit() {\n if (this.rowDetail) {\n this._rowDetailToggleSubscription = this.rowDetail._toggle.subscribe(event => {\n if (this.ngxRowDetail) {\n this.ngxRowDetail.toggle.emit(event)\n }\n })\n }\n }\n\n ngOnDestroy() {\n this._rowDetailToggleSubscription.unsubscribe()\n }\n\n private _setMenuBarFilters(filters: DataFilter[]) {\n this._filtersSubject.next(filters || [])\n }\n\n public getColumnComponent(propName: string): DatatableColumnComponent | null {\n if (!this.columnComponents || this.columnComponents.length === 0) {\n return null\n }\n\n const tpl = this.columnComponents.find(t => t.prop === propName)\n if (tpl) {\n return tpl\n }\n\n return null\n }\n\n _columnData(col: any): { col: any, comp: DatatableColumnComponent | null } {\n const comp = this.getColumnComponent(col.prop)\n return { col, comp }\n }\n\n _getRowExpanded(row: any) {\n if (this.ngxDatatable && this.ngxDatatable.bodyComponent) {\n return this.ngxDatatable.bodyComponent.getRowExpanded(row)\n }\n return false\n }\n\n public trackByFnColumn(index: number, item: any) {\n return item.prop\n }\n\n public onDatatableResize(event: IElementResizedEvent) {\n if (this.ngxDatatable && this.ngxDatatableElement && this.ngxDatatableElement.nativeElement) {\n // TODO: Consider integrating this into the ngx-datatable library to avoid\n // multiple resize calls when the table resizes itself.\n this.ngxDatatable.recalculate()\n }\n }\n\n _onResize(event: any) {\n this.resize.emit(event)\n\n if (!notNullOrUndefined(event.column)) {\n return\n }\n\n const columnProp = getColumnProp(event.column)\n if (columnProp) {\n let addAlteration = false\n\n if (!this._resizing[columnProp]) {\n this._resizing[columnProp] = true\n addAlteration = true\n }\n\n if (event.isDone) {\n this._resizing[columnProp] = false\n addAlteration = true\n }\n\n if (addAlteration) {\n const alteration = new WidthColumnsAlteration({\n columnProp,\n width: event.column.width,\n canAutoResize: false\n }, true)\n this._columnsAlterationsManager.add([ alteration ])\n }\n }\n }\n\n _onReorder(event: any): void {\n this.reorder.emit(event)\n\n const columnProp = getColumnProp(event.column)\n if (columnProp) {\n const currentOrderAlteration = this._columnsAlterationsManager.get().find(x => x.type === 'order')\n const state: OrderColumnsAlterationState = {\n columns: [\n ...(currentOrderAlteration?.state.columns || []),\n { columnProp, index: event.newValue }\n ]\n }\n const alteration = new OrderColumnsAlteration(state, true)\n this._columnsAlterationsManager.add([ alteration ])\n }\n }\n\n _onSort(event: any): void {\n this.sort.emit(event)\n\n const alteration = new SortColumnsAlteration({ sorts: event.sorts }, true)\n this._columnsAlterationsManager.add([ alteration ])\n }\n\n _onTreeAction(event: any) {\n const index = event.rowIndex\n const row = event.row\n if (row.treeStatus === 'collapsed') {\n row.treeStatus = 'expanded'\n } else {\n row.treeStatus = 'collapsed'\n }\n this.rows = [ ...this.rows ]\n }\n\n public triggerActionRefreshRequest() {\n this.actionRefreshRequest.emit(undefined)\n }\n\n /**\n * Returns the page info from the wrapped NgxDatatable instance or defaults.\n */\n public get pageInfo(): TheSeamPageInfo {\n return {\n offset: this.ngxDatatable?.offset ?? 0,\n pageSize: this.ngxDatatable?.pageSize ?? 0,\n limit: this.ngxDatatable?.limit,\n count: this.ngxDatatable?.count ?? 0\n }\n }\n\n}\n","<div class=\"datatable-wrapper\">\n <ng-content select=\"seam-datatable-menu-bar\"></ng-content>\n <div class=\"datatable-table-wrapper\">\n <ng-container>\n <ngx-datatable\n [columnMode]=\"$any(columnMode)\"\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH\"\n [virtualization]=\"virtualization\"\n [targetMarkerTemplate]=\"targetMarkerTemplate\"\n [groupRowsBy]=\"$any(groupRowsBy)\"\n [groupedRows]=\"$any(groupedRows)\"\n [selected]=\"$any(selected)\"\n [externalPaging]=\"externalPaging\"\n [externalSorting]=\"externalSorting\"\n [limit]=\"$any(limit)\"\n [count]=\"$any(count)\"\n [offset]=\"$any(offset)\"\n [loadingIndicator]=\"loadingIndicator\"\n [selectionType]=\"$any(selectionType)\"\n [reorderable]=\"reorderable\"\n [swapColumns]=\"swapColumns\"\n [sortType]=\"$any(sortType)\"\n [sorts]=\"$any(_sorts)\"\n [cssClasses]=\"cssClasses\"\n [messages]=\"messages\"\n [rowIdentity]=\"$any(rowIdentity)\"\n [rowClass]=\"rowClass\"\n [selectCheck]=\"selectCheck\"\n [displayCheck]=\"$any(displayCheck)\"\n [groupExpansionDefault]=\"groupExpansionDefault\"\n [trackByProp]=\"$any(trackByProp)\"\n [selectAllRowsOnPage]=\"selectAllRowsOnPage\"\n [treeFromRelation]=\"$any(treeFromRelation)\"\n [treeToRelation]=\"$any(treeToRelation)\"\n [summaryRow]=\"summaryRow\"\n [summaryHeight]=\"$any(summaryHeight)\"\n [summaryPosition]=\"$any(summaryPosition)\"\n [rows]=\"rows$ | async\"\n [columns]=\"$any(displayColumns$ | async)\"\n [headerHeight]=\"$any(headerHeight)\"\n [rowHeight]=\"$any(rowHeight)\"\n [footerHeight]=\"$any(footerHeight)\"\n (scroll)=\"scroll.emit($event)\"\n (activate)=\"activate.emit($event)\"\n (select)=\"select.emit($event)\"\n (sort)=\"_onSort($event)\"\n (page)=\"page.emit($event)\"\n (reorder)=\"_onReorder($event)\"\n (resize)=\"_onResize($event)\"\n (tableContextmenu)=\"tableContextmenu.emit($event)\"\n (treeAction)=\"treeAction.emit($event)\"\n (seamElemResized)=\"onDatatableResize($event)\"\n (treeAction)=\"_onTreeAction($event)\">\n\n <ngx-datatable-group-header [rowHeight]=\"50\" #myGroupHeader *ngIf=\"groupRowsBy\">\n <ng-template let-group=\"group\" let-expanded=\"expanded\" ngx-datatable-group-header-template>\n <div\n class=\"w-100 bg-light p-1\"\n [class.border-bottom]=\"!expanded\"\n [class.datatable-icon-right]=\"!expanded\"\n [class.datatable-icon-down]=\"expanded\"\n title=\"Expand/Collapse Group\"\n (click)=\"ngxDatatable?.groupHeader?.toggleExpandGroup(group)\">\n <b>Age: {{ group.age }}</b>\n </div>\n </ng-template>\n </ngx-datatable-group-header>\n\n <ngx-datatable-row-detail *ngIf=\"rowDetail && rowDetail.template\"\n [rowHeight]=\"rowDetail.rowHeight || 0\"\n [template]=\"$any(rowDetail.template)\"\n (toggle)=\"rowDetail.toggle.emit($event)\">\n </ngx-datatable-row-detail>\n\n <ngx-datatable-footer *ngIf=\"footer && footer.template\"\n [template]=\"$any(footer.template)\">\n </ngx-datatable-footer>\n </ngx-datatable>\n </ng-container>\n </div>\n</div>\n\n<ng-template #blankHeaderTpl ngx-datatable-header-template></ng-template>\n\n<ng-template #headerTpl ngx-datatable-header-template\n let-column=\"column\" let-sortFn=\"sortFn\">\n <strong *ngIf=\"!column.sortable\" class=\"draggable\">{{column.name}}</strong>\n <strong *ngIf=\"column.sortable\" class=\"datatable-sort-target draggable\" (click)=\"sortFn()\">{{column.name}}</strong>\n <div class=\"datatable-column-header-separator\" [attr.data-column-id]=\"column.$$id\"></div>\n</ng-template>\n\n<ng-template #cellTypeSelectorTpl ngx-datatable-cell-template\n let-value=\"value\" let-rowIndex=\"rowIndex\" let-row=\"row\" let-column=\"column\">\n <seam-table-cell-type-selector *ngIf=\"row\"\n [type]=\"column.cellType\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"column\">\n </seam-table-cell-type-selector>\n</ng-template>\n\n<ng-template #actionMenuCellTpl ngx-datatable-cell-template\n let-value=\"value\" let-rowIndex=\"rowIndex\" let-row=\"row\">\n\n <ng-container *ngIf=\"row && rowActionItem?.template\">\n <ng-template\n [ngTemplateOutlet]=\"$any(rowActionItem?.template)\"\n [ngTemplateOutletContext]=\"{ $implicit: row, row: row, rowIndex: rowIndex }\">\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #treeToggleTpl ngx-datatable-tree-toggle let-tree=\"cellContext\">\n <button\n class=\"p-0 bg-transparent border-0 btn\"\n [disabled]=\"tree.treeStatus==='disabled'\"\n (click)=\"tree.onTreeAction()\">\n <span *ngIf=\"tree.treeStatus==='loading'\">\n <fa-icon [icon]=\"_faSpinner\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='collapsed'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='expanded'\">\n <fa-icon [icon]=\"_faChevronDown\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='disabled'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'\nimport { UntypedFormControl } from '@angular/forms'\nimport { combineLatest, Observable, of } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\nimport { notNullOrUndefined, observeControlValue } from '@theseam/ui-common/utils'\n\nimport { DatatableComponent, THESEAM_DATATABLE } from '../datatable/datatable.component'\nimport { HideColumnColumnsAlteration } from '../models/columns-alterations/hide-column.columns-alteration'\nimport { isInternalColumn } from '../models/internal-column-props'\nimport { TheSeamDatatableColumn } from '../models/table-column'\nimport { ColumnsAlterationsManagerService } from '../services/columns-alterations-manager.service'\nimport { getColumnProp } from '../utils/get-column-prop'\n\n@Component({\n selector: 'seam-datatable-column-preferences',\n templateUrl: './datatable-column-preferences.component.html',\n styleUrls: ['./datatable-column-preferences.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableColumnPreferencesComponent {\n _columns$: Observable<TheSeamDatatableColumn[]>\n\n _filterControl = new UntypedFormControl()\n\n constructor(\n @Inject(THESEAM_DATATABLE) private _datatable: DatatableComponent,\n private readonly _columnsAlterationsManager: ColumnsAlterationsManagerService,\n ) {\n this._columns$ = combineLatest([\n this._datatable.columns$ ?? of([]),\n observeControlValue<string>(this._filterControl)\n ]).pipe(\n map(([ columns, filter ]) => {\n const _filter = (filter || '').trim().toLowerCase()\n return columns\n .filter(c => this._canToggleColumn(c, _filter))\n }),\n )\n }\n\n private _canToggleColumn(column: TheSeamDatatableColumn, filter: string, omitInternalColumns: boolean = true): boolean {\n if (omitInternalColumns && isInternalColumn(column)) {\n return false\n }\n\n return this._columnMatchesFilter(column, filter)\n }\n\n private _columnMatchesFilter(column: TheSeamDatatableColumn, filter: string): boolean {\n if (filter.length === 0) { return true }\n\n return `${(getColumnProp(column) || '')}`.toLowerCase().indexOf(filter) !== -1\n }\n\n _onChange(event: any, col: TheSeamDatatableColumn) {\n const columnProp = getColumnProp(col)\n const hidden = !event.checked\n\n if (!notNullOrUndefined(columnProp)) {\n throw Error(`Unable to get column prop.`)\n }\n\n const alteration = new HideColumnColumnsAlteration(\n {\n columnProp,\n hidden\n },\n hidden\n )\n\n this._columnsAlterationsManager.add([ alteration ])\n }\n\n}\n","<h3>Columns</h3>\n\n<seam-form-field [numPaddingErrors]=\"0\" >\n <input seamInput [formControl]=\"_filterControl\" seamInputSize=\"sm\" placeholder=\"Search\" seamAutoFocus>\n</seam-form-field>\n\n<div seamOverlayScrollbar style=\"min-height: 200px; max-height: 600px; min-width: 250px;\" class=\"flex-grow-1 mb-2\">\n <div class=\"p-2\">\n <ng-container *ngFor=\"let col of _columns$ | async\">\n <seam-checkbox [checked]=\"!col.hidden\" (change)=\"_onChange($event, col)\">{{ col.name || col.prop }}</seam-checkbox>\n </ng-container>\n </div>\n\n</div>\n<div class=\"d-flex flex-row justify-content-end\">\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" (click)=\"_onCloseClick()\">Close</button> -->\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" class=\"mr-1\">Cancel</button>\n <button seamButton size=\"sm\" theme=\"success\">Done</button> -->\n</div>\n","import { ConnectionPositionPair } from '@angular/cdk/overlay'\nimport { ChangeDetectionStrategy, Component } from '@angular/core'\n\nimport { faColumns } from '@fortawesome/free-solid-svg-icons'\n\nimport { ColumnsAlterationsManagerService } from '../services/columns-alterations-manager.service'\n\n@Component({\n selector: 'seam-datatable-column-preferences-button',\n templateUrl: './datatable-column-preferences-button.component.html',\n styleUrls: ['./datatable-column-preferences-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableColumnPreferencesButtonComponent {\n\n icon = faColumns\n\n /** @ignore */\n _actionMenuPositions: ConnectionPositionPair[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ]\n\n constructor(\n private readonly _columnsAlterationsManager: ColumnsAlterationsManagerService,\n ) { }\n\n _resetColumns(event: any) {\n this._columnsAlterationsManager.clear()\n }\n\n}\n","<ng-template #colPrefsTpl>\n <seam-datatable-column-preferences></seam-datatable-column-preferences>\n</ng-template>\n\n<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [seamPopover]=\"colPrefsTpl\">\n Show/Hide Columns\n </button>\n\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n (click)=\"_resetColumns($event)\">\n Reset Columns\n </button>\n</seam-menu>\n\n<button type=\"button\" class=\"btn btn-lightgray btn-sm\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Column Preferences\">\n <seam-icon [icon]=\"icon\"></seam-icon>\n <span class=\"sr-only\">Column Preferences</span>\n</button>\n\n","import { ChangeDetectionStrategy, Component, Inject, Input, isDevMode, Optional } from '@angular/core'\nimport { combineLatest, of } from 'rxjs'\nimport { catchError, concatMap, map, take, tap } from 'rxjs/operators'\n\nimport { faFileDownload } from '@fortawesome/free-solid-svg-icons'\nimport { ToastrService } from 'ngx-toastr'\n\nimport { IDataExporter } from '@theseam/ui-common/data-exporter'\nimport { DynamicValueHelperService, THESEAM_DYNAMIC_DATA } from '@theseam/ui-common/dynamic'\nimport { TheSeamLoadingOverlayService } from '@theseam/ui-common/loading'\nimport { hasProperty } from '@theseam/ui-common/utils'\n\nimport { DatatableComponent, THESEAM_DATATABLE } from '../datatable/datatable.component'\nimport { isInternalColumn } from '../models/internal-column-props'\nimport { TheSeamDatatableColumn } from '../models/table-column'\n\nexport interface IDatatableExportButtonData {\n exporters: IDataExporter[]\n}\n\n@Component({\n selector: 'seam-datatable-export-button',\n templateUrl: './datatable-export-button.component.html',\n styleUrls: ['./datatable-export-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableExportButtonComponent {\n\n icon = faFileDownload\n\n @Input() exporters: IDataExporter[] | undefined | null\n\n get disabled() {\n return !(this.exporters && this.exporters.length > 0)\n }\n\n constructor(\n @Inject(THESEAM_DATATABLE) private readonly _datatable: DatatableComponent,\n private readonly _toastr: ToastrService,\n private readonly _loading: TheSeamLoadingOverlayService,\n private readonly _valueHelper: DynamicValueHelperService,\n @Optional() @Inject(THESEAM_DYNAMIC_DATA) private readonly _data?: IDatatableExportButtonData\n ) {\n if (this._data && this._data.exporters) {\n this.exporters = this._data.exporters\n }\n }\n\n _onExporterClicked(exporter: IDataExporter) {\n if (!exporter.export) {\n const msg = isDevMode()\n ? `Exporter '${exporter.name}' is missing an export method.`\n : `${exporter.label} export is not available.`\n this._toastr.error(msg, 'Data Export')\n }\n\n const export$ = combineLatest([\n this._datatable.rows$,\n this._datatable.columns$.pipe(map(cols => cols.filter(c => !isInternalColumn(c))))\n ]).pipe(\n take(1),\n map(([ rows, columns ]) => {\n if (exporter.skipDataMapping) {\n return rows\n }\n return this._mapExportData(columns || [], rows)\n }),\n concatMap(data => exporter.export(data)),\n catchError(err => {\n // eslint-disable-next-line no-console\n console.error(err)\n return of(false)\n }),\n tap(success => {\n if (success) {\n this._toastr.success(`${exporter.label} export complete.`, 'Data Export')\n } else {\n this._toastr.error(`${exporter.label} export failed.`, 'Data Export')\n }\n })\n )\n\n this._loading.while(export$).subscribe()\n }\n\n private _mapExportData(columns: TheSeamDatatableColumn[], rows: any[]) {\n const data: any[] = []\n\n for (const row of rows) {\n const newRow: any = {}\n\n for (const col of columns) {\n if (!col.exportIgnore) {\n const colName = col.exportHeader || col.name || col.prop\n if (colName) {\n newRow[colName] = this._rowValue(col, row)\n }\n }\n }\n\n data.push(newRow)\n }\n\n return data\n }\n\n private _rowValue(column: TheSeamDatatableColumn, row: any) {\n if (hasProperty(column as any, 'exportValue')) {\n const context = { value: column.prop ? row[column.prop] : undefined, row }\n return this._valueHelper.evalSync((column as any).exportValue, context)\n }\n\n const colProp = column.prop\n if (colProp) {\n return row[colProp]\n }\n return undefined\n }\n\n}\n","<seam-menu #menu>\n <button *ngFor=\"let exp of exporters\"\n seamMenuItem\n [icon]=\"exp?.icon\"\n (click)=\"_onExporterClicked(exp)\">\n {{ exp.label }}\n </button>\n</seam-menu>\n<button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"lightgray\"\n size=\"sm\"\n class=\"dropdown-toggle\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Export\"\n [disabled]=\"disabled\"\n >\n <seam-icon [icon]=\"icon\" class=\"mr-2\"></seam-icon>\n</button>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\n\n@Component({\n selector: 'seam-datatable-menu-bar-column-center',\n templateUrl: './datatable-menu-bar-column-center.component.html',\n styleUrls: ['./datatable-menu-bar-column-center.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableMenuBarColumnCenterComponent { }\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\n\n@Component({\n selector: 'seam-datatable-menu-bar-column-left',\n templateUrl: './datatable-menu-bar-column-left.component.html',\n styleUrls: ['./datatable-menu-bar-column-left.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableMenuBarColumnLeftComponent { }\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\n\n@Component({\n selector: 'seam-datatable-menu-bar-column-right',\n templateUrl: './datatable-menu-bar-column-right.component.html',\n styleUrls: ['./datatable-menu-bar-column-right.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableMenuBarColumnRightComponent { }\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\n\n@Component({\n selector: 'seam-datatable-menu-bar-row',\n templateUrl: './datatable-menu-bar-row.component.html',\n styleUrls: ['./datatable-menu-bar-row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableMenuBarRowComponent { }\n","<ng-content></ng-content>\n","import { InjectionToken } from '@angular/core'\n\nimport { MenubarItemData } from '../models/menubar-item-data'\n\nexport const THESEAM_MENUBAR_ITEM_DATA = new InjectionToken<MenubarItemData>('MenubarItemData')\n","import { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core'\n\nimport { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils'\nimport { DatatableMenuBarComponent } from './../datatable-menu-bar/datatable-menu-bar.component'\nimport { MenubarItemData } from './../models/menubar-item-data'\nimport { THESEAM_MENUBAR_ITEM_DATA } from './../tokens/menubar-item-data'\n\n@Component({\n selector: 'seam-datatable-menu-bar-text',\n templateUrl: './datatable-menu-bar-text.component.html',\n styleUrls: ['./datatable-menu-bar-text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableMenuBarTextComponent {\n\n @Input()\n public value: string | undefined | null\n\n constructor(\n private _menuBar: DatatableMenuBarComponent,\n @Optional() @Inject(THESEAM_MENUBAR_ITEM_DATA) private _data: MenubarItemData | null\n ) {\n if (notNullOrUndefined(this._data)) {\n if (hasProperty(this._data, 'value')) {\n this.value = this._data.value\n }\n }\n }\n\n}\n","{{ value }}\n","// import { QueryParamsHandling } from '@angular/router/src/config'\nimport { ComponentType } from '@angular/cdk/portal'\nimport { HttpClient, HttpHeaders } from '@angular/common/http'\nimport { Component, Directive, EventEmitter, HostBinding, Input, isDevMode, Optional, Output } from '@angular/core'\nimport { Subscription } from 'rxjs'\n\n// import jexl from 'jexl'\n\nimport { TheSeamDynamicComponentLoader } from '@theseam/ui-common/dynamic-component-loader'\nimport { Modal } from '@theseam/ui-common/modal'\n\n//\n// TODO: Move the dynamic datatable logic out of this component when refactoring.\n//\n\n// export interface IActionMenuItemEndpointConfig {\n// /**\n// * Api endpoint.\n// */\n// endpoint?: string\n\n// endpointExpr?: string\n\n// method: 'GET' | 'POST' | 'PATCH' | 'DELETE'\n\n// bodyExpr?: string\n\n// paramsExpr?: string\n// }\n\n// export interface IActionMenuItemModalConfig {\n// component: ComponentType<{}> | string\n// }\n\nexport interface TheSeamDatatableRow {\n [prop: string]: any\n}\n\n@Directive({\n selector: '[seamDatatableActionMenuItem]'\n})\nexport class DatatableActionMenuItemDirective {\n\n @HostBinding('class.list-group-item') _listGroupItem = true\n @HostBinding('class.list-group-item-action') _listGroupItemAction = true\n\n @Input() label: string | undefined | null\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('attr.href') href: string | undefined | null\n @Input() target: string | undefined | null\n\n // Allow routerLink inputs on menu item\n @Input() queryParams: { [k: string]: any } | undefined | null\n @Input() fragment: string | undefined | null\n // @Input() queryParamsHandling: QueryParamsHandling\n @Input() queryParamsHandling: any | undefined | null\n @Input() preserveFragment: boolean | undefined | null\n @Input() skipLocationChange: boolean | undefined | null\n @Input() replaceUrl: boolean | undefined | null\n @Input() state: {[k: string]: any} | undefined | null\n @Input() routerLink: string | any[] | undefined | null\n\n @Input() confirmDialog: any\n\n // @Input()\n // get endpointConfig(): IActionMenuItemEndpointConfig { return this._endpointConfig }\n // set endpointConfig(value: IActionMenuItemEndpointConfig) {\n // this._endpointConfig = value\n // if (value) {\n // // TODO: Handle this in a way that can be canceled.\n // this._endpointConfigSub = this.click\n // .pipe(untilDestroyed(this))\n // .subscribe(e => this._handleEndpointAction())\n // } else {\n // if (this._endpointConfigSub) {\n // this._endpointConfigSub.unsubscribe()\n // }\n // }\n // }\n // private _endpointConfig: IActionMenuItemEndpointConfig\n // private _endpointConfigSub: Subscription\n\n // @Input()\n // get modalConfig(): IActionMenuItemModalConfig { return this._modalConfig }\n // set modalConfig(value: IActionMenuItemModalConfig) {\n // this._modalConfig = value\n // if (value) {\n // // TODO: Handle this in a way that can be canceled.\n // this._modalConfigSub = this.click\n // .pipe(untilDestroyed(this))\n // .subscribe(e => this._handleModalAction())\n // } else {\n // if (this._modalConfigSub) {\n // this._modalConfigSub.unsubscribe()\n // }\n // }\n // }\n // private _modalConfig: IActionMenuItemModalConfig\n // private _modalConfigSub: Subscription\n\n @Input() row: TheSeamDatatableRow | undefined | null\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() click = new EventEmitter<any>()\n\n constructor(\n private readonly _modal: Modal,\n private readonly _dynamicComponentLoader: TheSeamDynamicComponentLoader,\n @Optional() private readonly _http: HttpClient,\n ) { }\n\n // private _handleEndpointAction() {\n // if (!this._http) {\n // if (isDevMode()) {\n // console.warn(`[DatatableActionMenuItemDirective] Endpoint actions require \\`HttpClientModule\\` to be imported.`)\n // }\n // return\n // }\n\n // // console.log('_handleEndpointAction')\n // // TODO: This should probably be done through a provider that uses the api.\n // if (isDevMode()) {\n // console.warn(`[DatatableActionMenuItemDirective] '_handleEndpointAction()' is not ready for production yet.`)\n // } else {\n // // I don't expect this to be attempted in prod before completed, so I am just adding a console warning.\n // console.warn(`Unable to complete request. Contact support for assistance.`)\n // }\n\n // let endpoint = ''\n // const method = this._endpointConfig.method\n // const context = { row: this.row }\n // // console.log('context', context)\n\n // if (this._endpointConfig.endpoint) {\n // endpoint = this._endpointConfig.endpoint\n // }\n\n // if (this._endpointConfig.endpointExpr) {\n // // TODO: Use async jexl.\n // endpoint = jexl.evalSync(this._endpointConfig.endpointExpr, context)\n // }\n\n // const url = `http://localhost:57648/api/${endpoint}`\n\n // const options: any = {}\n // if (this._endpointConfig.bodyExpr) {\n // // TODO: Use async jexl.\n // options.body = jexl.evalSync(this._endpointConfig.bodyExpr, context)\n // }\n // if (this._endpointConfig.paramsExpr) {\n // // TODO: Use async jexl.\n // options.params = jexl.evalSync(this._endpointConfig.paramsExpr, context)\n // }\n\n // const headers = new HttpHeaders({\n // 'Content-Type': 'application/json'\n // })\n\n // this._http.request<any>(method, url, { ...options, headers })\n // .subscribe()\n // // .subscribe(v => console.log('v', v))\n // }\n\n // private _handleModalAction() {\n // if (typeof this._modalConfig.component === 'string') {\n // this._dynamicComponentLoader.getComponentFactory(this._modalConfig.component)\n // .subscribe(componentFactory => {\n // const factoryResolver = (<any /* ComponentFactoryBoundToModule */>componentFactory).ngModule.componentFactoryResolver\n // this._modal.openFromComponent(componentFactory.componentType, undefined, factoryResolver)\n // })\n // } else {\n // this._modal.openFromComponent(this._modalConfig.component)\n // }\n // }\n\n}\n","import { ESCAPE } from '@angular/cdk/keycodes'\nimport { ConnectionPositionPair, Overlay, OverlayRef, PositionStrategy } from '@angular/cdk/overlay'\nimport { TemplatePortal } from '@angular/cdk/portal'\nimport { Directive, ElementRef, HostListener, Input, TemplateRef, ViewContainerRef } from '@angular/core'\n\n@Directive({\n selector: '[seamDatatableActionMenuToggle]',\n exportAs: 'seamDatatableActionMenuToggle'\n})\nexport class DatatableActionMenuToggleDirective {\n\n @Input() seamDatatableActionMenuToggle: TemplateRef<HTMLElement> | undefined | null\n\n private _active = false\n private _overlayRef?: OverlayRef\n private _actionDown = false\n\n @HostListener('document:keydown', [ '$event' ])\n _onKeydown(event: any) {\n if (event.keyCode === ESCAPE) {\n this.disable()\n }\n }\n\n @HostListener('click', [ '$event' ])\n _onClick(event: any) {\n this.toggle()\n }\n\n @HostListener('mousedown', [ '$event' ]) _mouseDown(event: any) { this.onInputDown(event) }\n @HostListener('pointerdown', [ '$event' ]) _pointerDown(event: any) { this.onInputDown(event) }\n\n @HostListener('mouseup', [ '$event' ]) _mouseUp(event: any) { this.onInputUp(event) }\n @HostListener('pointerup', [ '$event' ]) _pointerUp(event: any) { this.onInputUp(event) }\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _viewContainerRef: ViewContainerRef,\n private _overlay: Overlay,\n ) { }\n\n public get active(): boolean { return this._active }\n\n public toggle() {\n if (this._active) {\n this.disable()\n } else {\n this.enable()\n }\n }\n\n public enable() {\n if (this.active) { return }\n if (!this.seamDatatableActionMenuToggle) { return }\n\n this._overlayRef = this._overlay.create({\n hasBackdrop: false,\n positionStrategy: this.getOverlayPosition(this._elementRef.nativeElement),\n })\n\n this._overlayRef.attach(new TemplatePortal(this.seamDatatableActionMenuToggle, this._viewContainerRef))\n\n this._active = true\n }\n\n public disable() {\n if (!this.active) { return }\n\n if (this._overlayRef?.hasAttached()) {\n this._overlayRef.detach()\n }\n\n this._active = false\n }\n\n private getOverlayPosition(origin: HTMLElement): PositionStrategy {\n const positionStrategy = this._overlay.position()\n .flexibleConnectedTo(origin)\n .withPositions(this.getPositions())\n .withFlexibleDimensions(false)\n .withPush(false)\n\n return positionStrategy\n }\n\n private getPositions(): ConnectionPositionPair[] {\n return [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ]\n }\n\n onFocusChangeOverlay(event: any) {\n if (event === null) {\n if (!this._actionDown) {\n // this.disable()\n }\n }\n }\n\n onInputDown(event: any) {\n this._actionDown = true\n }\n\n onInputUp(event: any) {\n this._actionDown = false\n }\n\n}\n","import { CollectionViewer } from '@angular/cdk/collections'\nimport { combineLatest, Observable } from 'rxjs'\n\nimport { DatatableDataSource } from './datatable-data-source'\n\nexport class DatatableGqlDataSource<TRow> extends DatatableDataSource<TRow> {\n\n connect(collectionViewer: CollectionViewer): Observable<readonly TRow[]> {\n throw new Error('Method not implemented.')\n\n // return combineLatest([\n // this.sorts$,\n // this.filterStates$,\n // this.page$\n // ]).pipe()\n }\n\n disconnect(collectionViewer: CollectionViewer): void {\n throw new Error('Method not implemented.')\n }\n\n}\n","import { Injectable, NgZone } from '@angular/core'\n\nimport { OverlayScrollbarsService } from '@theseam/ui-common/scrollbar'\n\n@Injectable()\nexport class TheSeamDatatableScrollbarHelperService {\n\n width = 0\n\n /**\n * Animates programmatic scrolling, such as switching pages.\n *\n * NOTE: Animating the scrolling works, but the datatable may need changes\n * before this is enabled, because it seems a little stuttery when it moves.\n */\n animatedScrolling = false\n animatedScrollingTime = 250\n\n constructor(\n private _ngZone: NgZone,\n private _scrollbars: OverlayScrollbarsService\n ) { }\n\n onInitScroller(scroller: any): void {\n this._scrollbars.initializeInstance(scroller.parentElement, {\n callbacks: {\n onScroll: e => {\n this._ngZone.run(() => {\n scroller.onScrolled(e)\n })\n }\n }\n })\n }\n\n onDestroyScroller(scroller: any): void {\n this._scrollbars.destroyInstance(scroller.parentElement)\n }\n\n setOffset(scroller: any, offsetY: number): void {\n this._ngZone.runOutsideAngular(() => {\n if (this.animatedScrolling) {\n this._scrollbars.getInstance(scroller.parentElement)\n .scroll({ y: offsetY }, this.animatedScrollingTime)\n } else {\n this._scrollbars.getInstance(scroller.parentElement)\n .scroll({ y: offsetY })\n }\n })\n }\n}\n","import { hasProperty } from '@theseam/ui-common/utils'\n\nimport { TheSeamDatatablePreferencesColumn } from '../models/preferences'\nimport { TheSeamDatatableColumn } from '../models/table-column'\n\nexport function withStoredColumnInfo(\n columns: TheSeamDatatableColumn[],\n preferenceColumns: TheSeamDatatablePreferencesColumn[]\n): TheSeamDatatableColumn[] {\n const _columns: TheSeamDatatableColumn[] = []\n for (const col of columns) {\n const storedCol = preferenceColumns.find(v => v.prop === col.prop)\n if (storedCol) {\n const _col = { ...col }\n if (hasProperty(storedCol, 'width')) { _col.width = Math.max(storedCol.width, 0) }\n _col.canAutoResize = storedCol.canAutoResize\n _columns.push(_col)\n } else {\n _columns.push(col)\n }\n }\n return _columns\n}\n","import { A11yModule } from '@angular/cdk/a11y'\nimport { OverlayModule } from '@angular/cdk/overlay'\nimport { PortalModule } from '@angular/cdk/portal'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { ReactiveFormsModule } from '@angular/forms'\nimport { RouterModule } from '@angular/router'\n\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome'\nimport { NgxDatatableModule, ScrollbarHelper } from '@marklb/ngx-datatable'\nimport { ToastrModule } from 'ngx-toastr'\n\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\nimport { TheSeamCheckboxModule } from '@theseam/ui-common/checkbox'\nimport { TheSeamConfirmDialogModule } from '@theseam/ui-common/confirm-dialog'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamLoadingModule } from '@theseam/ui-common/loading'\nimport { TheSeamMenuModule } from '@theseam/ui-common/menu'\nimport { TheSeamPopoverModule } from '@theseam/ui-common/popover'\nimport { TheSeamSharedModule } from '@theseam/ui-common/shared'\nimport { TheSeamTableCellTypeModule } from '@theseam/ui-common/table-cell-type'\n\nimport { DatatableActionMenuItemComponent } from './datatable-action-menu-item/datatable-action-menu-item.component'\nimport { DatatableActionMenuComponent } from './datatable-action-menu/datatable-action-menu.component'\nimport { DatatableColumnPreferencesButtonComponent } from './datatable-column-preferences-button/datatable-column-preferences-button.component' // tslint:disable-line: max-line-length\nimport { DatatableColumnPreferencesComponent } from './datatable-column-preferences/datatable-column-preferences.component'\nimport { DatatableColumnComponent } from './datatable-column/datatable-column.component'\nimport { DatatableExportButtonComponent } from './datatable-export-button/datatable-export-button.component'\nimport { DatatableFooterTplDirective } from './datatable-footer/datatable-footer-tpl.directive'\nimport { TheSeamDatatableFooterDirective } from './datatable-footer/datatable-footer.directive'\nimport { DatatableMenuBarColumnCenterComponent } from './datatable-menu-bar-column-center/datatable-menu-bar-column-center.component'\nimport { DatatableMenuBarColumnLeftComponent } from './datatable-menu-bar-column-left/datatable-menu-bar-column-left.component'\nimport { DatatableMenuBarColumnRightComponent } from './datatable-menu-bar-column-right/datatable-menu-bar-column-right.component'\nimport { DatatableMenuBarRowComponent } from './datatable-menu-bar-row/datatable-menu-bar-row.component'\nimport { DatatableMenuBarTextComponent } from './datatable-menu-bar-text/datatable-menu-bar-text.component'\nimport { DatatableMenuBarComponent } from './datatable-menu-bar/datatable-menu-bar.component'\nimport { DatatableRowDetailTplDirective } from './datatable-row-detail/datatable-row-detail-tpl.directive'\nimport { TheSeamDatatableRowDetailDirective } from './datatable-row-detail/datatable-row-detail.directive'\nimport { DatatableComponent } from './datatable/datatable.component'\nimport { DatatableActionMenuItemDirective } from './directives/datatable-action-menu-item.directive'\nimport { DatatableActionMenuToggleDirective } from './directives/datatable-action-menu-toggle.directive'\nimport { DatatableCellTplDirective } from './directives/datatable-cell-tpl.directive'\nimport { DatatableFilterDirective } from './directives/datatable-filter.directive'\nimport { DatatableRowActionItemDirective } from './directives/datatable-row-action-item.directive'\nimport { TheSeamDatatableScrollbarHelperService } from './services/datatable-scrollbar-helper.service'\n\n@NgModule({\n declarations: [\n DatatableComponent,\n DatatableCellTplDirective,\n DatatableColumnComponent,\n DatatableActionMenuComponent,\n DatatableActionMenuToggleDirective,\n DatatableActionMenuItemComponent,\n DatatableMenuBarComponent,\n DatatableFilterDirective,\n DatatableRowActionItemDirective,\n DatatableExportButtonComponent,\n TheSeamDatatableRowDetailDirective,\n DatatableRowDetailTplDirective,\n TheSeamDatatableFooterDirective,\n DatatableFooterTplDirective,\n DatatableColumnPreferencesComponent,\n DatatableColumnPreferencesButtonComponent,\n DatatableActionMenuItemDirective,\n DatatableMenuBarRowComponent,\n DatatableMenuBarColumnLeftComponent,\n DatatableMenuBarColumnCenterComponent,\n DatatableMenuBarColumnRightComponent,\n DatatableMenuBarTextComponent,\n ],\n imports: [\n CommonModule,\n NgxDatatableModule,\n FontAwesomeModule,\n OverlayModule,\n A11yModule,\n TheSeamSharedModule,\n RouterModule,\n TheSeamMenuModule,\n TheSeamButtonsModule,\n TheSeamIconModule,\n ToastrModule,\n TheSeamLoadingModule,\n PortalModule,\n TheSeamConfirmDialogModule,\n TheSeamPopoverModule,\n TheSeamCheckboxModule,\n TheSeamFormFieldModule,\n ReactiveFormsModule,\n TheSeamTableCellTypeModule\n ],\n exports: [\n DatatableComponent,\n DatatableCellTplDirective,\n DatatableColumnComponent,\n DatatableActionMenuComponent,\n DatatableActionMenuItemComponent,\n DatatableMenuBarComponent,\n DatatableFilterDirective,\n DatatableRowActionItemDirective,\n DatatableExportButtonComponent,\n TheSeamDatatableRowDetailDirective,\n DatatableRowDetailTplDirective,\n TheSeamDatatableFooterDirective,\n DatatableFooterTplDirective,\n DatatableColumnPreferencesComponent,\n DatatableColumnPreferencesButtonComponent,\n DatatableActionMenuItemDirective,\n DatatableMenuBarRowComponent,\n DatatableMenuBarColumnLeftComponent,\n DatatableMenuBarColumnCenterComponent,\n DatatableMenuBarColumnRightComponent,\n DatatableMenuBarTextComponent\n ],\n providers: [\n { provide: ScrollbarHelper, useClass: TheSeamDatatableScrollbarHelperService }\n ]\n})\nexport class TheSeamDatatableModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i1.DatatableColumnChangesService","_scd","i1.DatatablePreferencesService","i2.ColumnsManagerService","i3.ColumnsAlterationsManagerService","NgxDatatableComponent","i5","i1.ColumnsAlterationsManagerService","i2","i6","i7","i5.DatatableColumnPreferencesComponent","i1"],"mappings":"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"}
|