@theseam/ui-common 0.4.9 → 0.4.11

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.
Files changed (110) hide show
  1. package/buttons/badge-button/badge-button.component.d.ts +7 -7
  2. package/buttons/button/button.component.d.ts +6 -6
  3. package/buttons/buttons.module.d.ts +1 -1
  4. package/buttons/progress-circle-button/progress-circle-button.component.d.ts +4 -4
  5. package/buttons/toggle-button/toggle-button.component.d.ts +4 -4
  6. package/datatable/datatable-action-menu/datatable-action-menu.component.d.ts +7 -2
  7. package/datatable/datatable-action-menu-item/datatable-action-menu-item.component.d.ts +3 -1
  8. package/esm2020/buttons/badge-button/badge-button.component.mjs +10 -10
  9. package/esm2020/buttons/button/button.component.mjs +9 -9
  10. package/esm2020/buttons/buttons.module.mjs +29 -29
  11. package/esm2020/buttons/progress-circle-button/progress-circle-button.component.mjs +10 -10
  12. package/esm2020/buttons/toggle-button/toggle-button.component.mjs +8 -8
  13. package/esm2020/carousel/carousel.component.mjs +2 -2
  14. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +17 -5
  15. package/esm2020/datatable/datatable-action-menu-item/datatable-action-menu-item.component.mjs +4 -2
  16. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
  17. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
  18. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
  19. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.component.mjs +1 -1
  20. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +1 -1
  21. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +11 -3
  22. package/esm2020/framework/side-nav/side-nav.component.mjs +29 -4
  23. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  24. package/esm2020/framework/top-bar/top-bar.component.mjs +1 -1
  25. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +3 -3
  26. package/esm2020/loading/loading/loading.component.mjs +5 -5
  27. package/esm2020/loading/loading-overlay.service.mjs +3 -3
  28. package/esm2020/loading/loading.module.mjs +6 -6
  29. package/esm2020/menu/menu-toggle.directive.mjs +16 -4
  30. package/esm2020/services/preferences/preferences-accessor.mjs +1 -1
  31. package/esm2020/services/preferences/preferences-manager.service.mjs +1 -1
  32. package/esm2020/services/preferences/preferences-record.mjs +1 -1
  33. package/esm2020/services/preferences/preferences.models.mjs +1 -1
  34. package/esm2020/story-helpers/arg-type-helpers.mjs +5 -9
  35. package/esm2020/story-helpers/story-preferences-accessor.service.mjs +1 -1
  36. package/esm2020/testing/get-harness.mjs +8 -2
  37. package/esm2020/testing/story-expect.mjs +3 -2
  38. package/esm2020/toggle-edit/toggle-edit.component.mjs +1 -1
  39. package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
  40. package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
  41. package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
  42. package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
  43. package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
  44. package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
  45. package/esm2020/widget/preferences/widget-preferences.models.mjs +1 -1
  46. package/esm2020/widget/preferences/widget-preferences.service.mjs +1 -1
  47. package/esm2020/widget/preferences/widget-preferences.token.mjs +1 -1
  48. package/esm2020/widget/widget/widget.component.mjs +3 -3
  49. package/esm2020/widget/widget.models.mjs +1 -1
  50. package/fesm2015/theseam-ui-common-buttons.mjs +55 -55
  51. package/fesm2015/theseam-ui-common-buttons.mjs.map +1 -1
  52. package/fesm2015/theseam-ui-common-carousel.mjs +1 -1
  53. package/fesm2015/theseam-ui-common-carousel.mjs.map +1 -1
  54. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +1 -1
  55. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  56. package/fesm2015/theseam-ui-common-datatable.mjs +21 -10
  57. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  58. package/fesm2015/theseam-ui-common-framework.mjs +42 -9
  59. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  60. package/fesm2015/theseam-ui-common-google-maps.mjs +2 -2
  61. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  62. package/fesm2015/theseam-ui-common-loading.mjs +10 -10
  63. package/fesm2015/theseam-ui-common-loading.mjs.map +1 -1
  64. package/fesm2015/theseam-ui-common-menu.mjs +15 -4
  65. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  66. package/fesm2015/theseam-ui-common-services.mjs.map +1 -1
  67. package/fesm2015/theseam-ui-common-story-helpers.mjs +4 -8
  68. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  69. package/fesm2015/theseam-ui-common-testing.mjs +9 -2
  70. package/fesm2015/theseam-ui-common-testing.mjs.map +1 -1
  71. package/fesm2015/theseam-ui-common-toggle-edit.mjs +1 -1
  72. package/fesm2015/theseam-ui-common-toggle-edit.mjs.map +1 -1
  73. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  74. package/fesm2015/theseam-ui-common-widget.mjs +2 -2
  75. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  76. package/fesm2020/theseam-ui-common-buttons.mjs +55 -55
  77. package/fesm2020/theseam-ui-common-buttons.mjs.map +1 -1
  78. package/fesm2020/theseam-ui-common-carousel.mjs +1 -1
  79. package/fesm2020/theseam-ui-common-carousel.mjs.map +1 -1
  80. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +1 -1
  81. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  82. package/fesm2020/theseam-ui-common-datatable.mjs +20 -9
  83. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  84. package/fesm2020/theseam-ui-common-framework.mjs +41 -8
  85. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  86. package/fesm2020/theseam-ui-common-google-maps.mjs +2 -2
  87. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  88. package/fesm2020/theseam-ui-common-loading.mjs +10 -10
  89. package/fesm2020/theseam-ui-common-loading.mjs.map +1 -1
  90. package/fesm2020/theseam-ui-common-menu.mjs +15 -4
  91. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  92. package/fesm2020/theseam-ui-common-services.mjs.map +1 -1
  93. package/fesm2020/theseam-ui-common-story-helpers.mjs +4 -8
  94. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  95. package/fesm2020/theseam-ui-common-testing.mjs +9 -2
  96. package/fesm2020/theseam-ui-common-testing.mjs.map +1 -1
  97. package/fesm2020/theseam-ui-common-toggle-edit.mjs +1 -1
  98. package/fesm2020/theseam-ui-common-toggle-edit.mjs.map +1 -1
  99. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  100. package/fesm2020/theseam-ui-common-widget.mjs +2 -2
  101. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  102. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +5 -2
  103. package/framework/side-nav/side-nav.component.d.ts +6 -2
  104. package/framework/side-nav/side-nav.models.d.ts +12 -0
  105. package/loading/loading/loading.component.d.ts +3 -3
  106. package/loading/loading.module.d.ts +1 -1
  107. package/menu/menu-toggle.directive.d.ts +4 -1
  108. package/package.json +1 -1
  109. package/testing/get-harness.d.ts +2 -2
  110. package/testing/story-expect.d.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-datatable-dynamic.mjs","sources":["../../../projects/ui-common/datatable-dynamic/utils/defaults/set-dynamic-datatable-columns-defaults.ts","../../../projects/ui-common/datatable-dynamic/utils/defaults/set-dynamic-datatable-filter-menu-defaults.ts","../../../projects/ui-common/datatable-dynamic/utils/defaults/set-dynamic-datatable-options-defaults.ts","../../../projects/ui-common/datatable-dynamic/utils/defaults/set-dynamic-datatable-def-defaults.ts","../../../projects/ui-common/datatable-dynamic/dynamic-datatable-def.service.ts","../../../projects/ui-common/datatable-dynamic/dynamic-datatable-row-actions.service.ts","../../../projects/ui-common/datatable-dynamic/directives/datatable-dynamic-action-menu-item.directive.ts","../../../projects/ui-common/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.ts","../../../projects/ui-common/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.html","../../../projects/ui-common/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.ts","../../../projects/ui-common/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.html","../../../projects/ui-common/datatable-dynamic/datatable-dynamic-menu-bar-token.ts","../../../projects/ui-common/datatable-dynamic/datatable-dynamic-menu-bar-content/datatable-dynamic-menu-bar-content.component.ts","../../../projects/ui-common/datatable-dynamic/datatable-dynamic-menu-bar-content/datatable-dynamic-menu-bar-content.component.html","../../../projects/ui-common/datatable-dynamic/datatable-dynamic.component.ts","../../../projects/ui-common/datatable-dynamic/datatable-dynamic.component.html","../../../projects/ui-common/datatable-dynamic/datatable-dynamic.module.ts","../../../projects/ui-common/datatable-dynamic/theseam-ui-common-datatable-dynamic.ts"],"sourcesContent":["import { DynamicDatatableColumn } from '../../datatable-dynamic-def'\n\nexport function setDynamicDatatableColumnsDefaults(\n columns: DynamicDatatableColumn[]\n) {\n for (const col of columns) {\n if (!col.cellType) {\n col.cellType = 'string'\n }\n }\n}\n","import { DynamicDatatableFilterMenu } from '../../datatable-dynamic-def'\n\nexport function setDynamicDatatableFilterMenuDefaults(\n filterMenu: DynamicDatatableFilterMenu\n) {\n if (!filterMenu.state) {\n filterMenu.state = 'default'\n }\n}\n","import { DynamicDatatableOptions } from '../../datatable-dynamic-def'\n\nexport function setDynamicDatatableOptionsDefaults(\n options: DynamicDatatableOptions\n) {\n if (options.virtualization === undefined || options.virtualization === null) {\n options.virtualization = true\n }\n}\n","import { DatatableDynamicDef } from '../../datatable-dynamic-def'\n\nimport { setDynamicDatatableColumnsDefaults } from './set-dynamic-datatable-columns-defaults'\nimport { setDynamicDatatableFilterMenuDefaults } from './set-dynamic-datatable-filter-menu-defaults'\nimport { setDynamicDatatableOptionsDefaults } from './set-dynamic-datatable-options-defaults'\n\nexport function setDynamicDatatableDefDefaults(\n def: DatatableDynamicDef\n) {\n setDynamicDatatableColumnsDefaults(def.columns)\n\n if (def.filterMenu) {\n setDynamicDatatableFilterMenuDefaults(def.filterMenu)\n }\n\n if (def.options) {\n setDynamicDatatableOptionsDefaults(def.options)\n }\n}\n","import { ComponentType } from '@angular/cdk/portal'\nimport { Inject, Injectable } from '@angular/core'\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs'\nimport { map, shareReplay, switchMap } from 'rxjs/operators'\n\nimport { IDataExporter, THESEAM_DATA_EXPORTER } from '@theseam/ui-common/data-exporter'\nimport { IDataFilter, THESEAM_DATA_FILTER_DEF } from '@theseam/ui-common/data-filters'\nimport { DynamicValueHelperService } from '@theseam/ui-common/dynamic'\nimport { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DynamicDatatableOptions } from './datatable-dynamic-def'\nimport { DatatableDynamicDef } from './datatable-dynamic-def'\nimport { DynamicDatatableMenuBar } from './models/dynamic-datatable-menu-bar'\nimport { DynamicDatatableFilterMenuItem } from './models/index'\nimport { setDynamicDatatableDefDefaults } from './utils/index'\n\n/**\n * Manages the data defined in the `DatatableDynamicDef`. Simplifies accessing\n * and observing the needed data based on the `DatatableDynamicDef`.\n */\n@Injectable()\nexport class DynamicDatatableDefService {\n\n /**\n * @deprecated\n * @ignore\n */\n private _dataExporters: IDataExporter[]\n\n /**\n * @deprecated\n * @ignore\n */\n private _dataFilters: { name: string, component: ComponentType<IDataFilter> }[]\n\n /** @ignore */\n private readonly _defSubject = new BehaviorSubject<DatatableDynamicDef | undefined>(undefined)\n\n /** Dynamic datatable definition. */\n public readonly def$: Observable<DatatableDynamicDef | undefined>\n\n /**\n * Exporters in the def that are available.\n * @deprecated\n */\n public readonly exporters$: Observable<IDataExporter[]>\n\n /**\n * Filter menu items in the def that are available.\n * @deprecated\n */\n public readonly filterMenuItems$: Observable<DynamicDatatableFilterMenuItem[]>\n\n /**\n * Observes whether the datatable has a filter menu.\n * @deprecated\n */\n public readonly hasFilterMenu$: Observable<boolean>\n\n /** Observes datatable options. */\n public readonly options$: Observable<DynamicDatatableOptions | undefined>\n\n /** Observes the datatable def menu bar. */\n public readonly menuBar$: Observable<DynamicDatatableMenuBar | undefined>\n\n constructor(\n @Inject(THESEAM_DATA_EXPORTER) dataExporters: IDataExporter[],\n @Inject(THESEAM_DATA_FILTER_DEF) dataFilters: { name: string, component: ComponentType<IDataFilter> }[],\n private _valueHelper: DynamicValueHelperService,\n ) {\n this._dataExporters = (dataExporters || [])\n this._dataFilters = (dataFilters || [])\n\n this.def$ = this._defSubject.asObservable()\n\n this.exporters$ = this.def$.pipe(\n map(def => def ? this._mapExporters(def) : []),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n this.filterMenuItems$ = this.def$.pipe(\n map(def => def ? this._mapFilterMenuItems(def) : []),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n this.hasFilterMenu$ = this.def$.pipe(\n switchMap(def => {\n if (!def) { return of(false) }\n\n // Check if the visibility can be determined by the state value only.\n if (def.filterMenu && def.filterMenu.state) {\n switch (def.filterMenu.state) {\n case 'always-visible': return of(true)\n case 'hidden': return of(false)\n }\n }\n\n // Check if there is anything to put in the filter menu.\n return combineLatest([\n this.exporters$.pipe(map(e => e.length > 0)),\n this.filterMenuItems$.pipe(map(f => f.length > 0))\n ]).pipe(map(v => v.indexOf(true) !== -1))\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n this.options$ = this.def$.pipe(\n map(def => def ? def.options : undefined),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n this.menuBar$ = this.def$.pipe(\n map(def => (notNullOrUndefined(def) && hasProperty(def, 'menuBar')) ? def.menuBar : undefined),\n // tap(v => console.log('menubar', v)),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n }\n\n /** Sets the `DatatableDynamicDef` that defines the datatable. */\n public setDef(def: DatatableDynamicDef | undefined): void {\n if (def) { setDynamicDatatableDefDefaults(def) }\n this._defSubject.next(def || undefined)\n }\n\n /** Map the def exporters to the provided `IDataExporter` objects. */\n private _mapExporters(def: DatatableDynamicDef): IDataExporter[] {\n if (!def.filterMenu || !Array.isArray(def.filterMenu.exporters)) {\n return []\n }\n\n return def.filterMenu.exporters\n .map(e => this._dataExporters.find(de => de.name === e))\n .filter(notNullOrUndefined)\n }\n\n /** Map the def filter menu items to provided components. */\n private _mapFilterMenuItems(def: DatatableDynamicDef): DynamicDatatableFilterMenuItem[] {\n if (!def.filterMenu || !def.filterMenu.filters || !Array.isArray(def.filterMenu.filters)) {\n return []\n }\n\n return def.filterMenu.filters\n .map(f => {\n const _df = this._dataFilters.find(df => df.name === f.name)\n if (_df) { return { ...f, component: _df.component } }\n })\n .filter(notNullOrUndefined)\n }\n\n}\n","import { Injectable } from '@angular/core'\nimport { from, Observable, of } from 'rxjs'\nimport { map, switchMap, toArray } from 'rxjs/operators'\n\nimport { DynamicValueHelperService } from '@theseam/ui-common/dynamic'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DynamicDatatableRow } from './datatable-dynamic-def'\nimport { DynamicDatatableDefService } from './dynamic-datatable-def.service'\nimport { DynamicDatatableRowAction } from './models/dynamic-datatable-row-action'\nimport { DynamicDatatableRowActionContext } from './models/dynamic-datatable-row-action-context'\n\n@Injectable()\nexport class DynamicDatatableRowActionsService {\n\n constructor(\n private _valueHelper: DynamicValueHelperService,\n private _dynamicDef: DynamicDatatableDefService\n ) { }\n\n /**\n * Observe actions for specified row\n */\n public rowActions(row: DynamicDatatableRow): Observable<DynamicDatatableRowAction[]> {\n return this._dynamicDef.def$.pipe(\n map(def => (def && def.rowActions) ? def.rowActions || [] : []),\n switchMap(rowActions => rowActions\n ? from(rowActions).pipe(\n map(rowAction => {\n if (Object.prototype.hasOwnProperty.call(rowAction, 'hidden')) {\n if (typeof rowAction.hidden === 'boolean') {\n return rowAction.hidden ? undefined : rowAction\n } else {\n const context = this._getRowActionContext(row, rowAction)\n // TODO: Fix async eval\n const isHidden = this._valueHelper.evalSync(rowAction.hidden, context)\n return isHidden ? undefined : rowAction\n }\n }\n return rowAction\n }),\n toArray(),\n map(v => v.filter(notNullOrUndefined))\n )\n : of([])\n )\n )\n }\n\n /** @ignore */\n private _getRowActionContext(row: DynamicDatatableRow, rowActionDef: DynamicDatatableRowAction): DynamicDatatableRowActionContext {\n return {\n row\n }\n }\n\n}\n","import { LocationStrategy } from '@angular/common'\nimport {\n Attribute,\n Directive,\n ElementRef,\n Input,\n isDevMode,\n OnChanges,\n OnDestroy,\n Renderer2,\n SimpleChanges,\n} from '@angular/core'\nimport { ActivatedRoute, QueryParamsHandling, Router, RouterLink, RouterLinkWithHref } from '@angular/router'\nimport { from, fromEvent, Observable, of, ReplaySubject, Subscription } from 'rxjs'\nimport { catchError, mapTo, switchMap, tap } from 'rxjs/operators'\n\nimport { AssetReaderHelperService } from '@theseam/ui-common/asset-reader'\nimport {\n DynamicActionHelperService,\n DynamicActionUiAnchorDef,\n DynamicActionUiButtonDef,\n DynamicActionUiDef,\n DynamicValueHelperService\n} from '@theseam/ui-common/dynamic'\nimport { getAttribute, hasProperty, toggleAttribute } from '@theseam/ui-common/utils'\n\nimport { DynamicDatatableRow } from '../datatable-dynamic-def'\nimport type { DynamicDatatableActionMenuRecord } from '../models/dynamic-datatable-action-menu-record'\nimport { DynamicDatatableRowAction } from '../models/dynamic-datatable-row-action'\nimport { DynamicDatatableRowActionContext } from '../models/dynamic-datatable-row-action-context'\n\n/**\n * Class to act as a substitute to `routerLink` directive until the menu items\n * can be dynamically built in a clean way with or without `routerLink`.\n */\nexport class DatatableDynamicActionMenuItemRouterLink {\n\n private _rLink?: RouterLink\n private _rLinkWithHref?: RouterLinkWithHref\n\n // private _clickSubscription?: Subscription\n private _rLinkClickEventListener?: any\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n @Attribute('tabindex') tabIndex: string | null,\n private renderer: Renderer2,\n private el: ElementRef,\n private locationStrategy: LocationStrategy\n ) {\n if (el.nativeElement.nodeName.toLowerCase() === 'a') {\n this._rLinkWithHref = new RouterLinkWithHref(\n router,\n route,\n '0', // TODO: Fix type.\n renderer,\n el.nativeElement,\n locationStrategy\n )\n // console.log('rLinkWithHref', this.rLinkWithHref)\n\n this._rLinkClickEventListener = this.el.nativeElement.addEventListener('click', (event: MouseEvent) => {\n // console.log('this._rLinkWithHref', this._rLinkWithHref, this._rLinkWithHref && this._rLinkWithHref.href)\n if (this._rLinkWithHref) {\n return this._rLinkWithHref.onClick(event.button, event.ctrlKey, event.shiftKey, event.altKey, event.metaKey)\n }\n })\n } else {\n this._rLink = new RouterLink(\n router,\n route,\n tabIndex as string,\n renderer,\n el\n )\n // console.log('rLink', this.rLink)\n\n this._rLinkClickEventListener = this.el.nativeElement.addEventListener('click', () => {\n // console.log('this._rLink', this._rLink && this._rLink.urlTree)\n if (this._rLink) { return (this._rLink as any).onClick() }\n })\n\n // this._clickSubscription = fromEvent(el.nativeElement, 'click')\n // .subscribe(() => {\n // if (this._rLink) {\n // this._rLink.onClick()\n // } else {\n // if (this._clickSubscription && !this._clickSubscription.closed) {\n // this._clickSubscription.unsubscribe()\n // }\n // }\n // })\n }\n }\n\n get routerLink(): RouterLink | undefined { return this._rLink }\n get routerLinkWithHref(): RouterLinkWithHref | undefined { return this._rLinkWithHref }\n\n set routerLinkInput(commands: any[] | string) {\n if (this._rLink) {\n this._rLink.routerLink = commands\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.routerLink = commands\n }\n }\n\n set queryParams(value: { [k: string]: any }) {\n if (this._rLink) {\n this._rLink.queryParams = value\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.queryParams = value\n }\n }\n\n set fragment(value: string) {\n if (this._rLink) {\n this._rLink.fragment = value\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.fragment = value\n }\n }\n\n set queryParamsHandling(value: QueryParamsHandling) {\n if (this._rLink) {\n this._rLink.queryParamsHandling = value\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.queryParamsHandling = value\n }\n }\n\n set preserveFragment(value: boolean) {\n if (this._rLink) {\n this._rLink.preserveFragment = value\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.preserveFragment = value\n }\n }\n\n set skipLocationChange(value: boolean) {\n if (this._rLink) {\n this._rLink.skipLocationChange = value\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.skipLocationChange = value\n }\n }\n\n set replaceUrl(value: boolean) {\n if (this._rLink) {\n this._rLink.replaceUrl = value\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.replaceUrl = value\n }\n }\n\n set state(value: { [k: string]: any }) {\n if (this._rLink) {\n this._rLink.state = value\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.state = value\n }\n }\n\n set target(value: string | undefined) {\n if (this._rLinkWithHref) {\n this._rLinkWithHref.target = value as string\n\n if (value) {\n this.renderer.setAttribute(this.el.nativeElement, 'target', value)\n } else {\n toggleAttribute(this.el.nativeElement, 'target', false)\n }\n }\n }\n\n public destroy() {\n // if (this._clickSubscription && !this._clickSubscription.closed) {\n // this._clickSubscription.unsubscribe()\n // }\n if (this._rLinkClickEventListener) {\n this.el.nativeElement.removeEventListener('click', this._rLinkClickEventListener)\n this._rLinkClickEventListener = null\n }\n\n if (this._rLinkWithHref && this._rLinkWithHref.ngOnDestroy) {\n this._rLinkWithHref.ngOnDestroy()\n }\n }\n\n}\n\n// TODO: Refactor this directive. It got way more complex instead of more\n// simplified like it was supposed to be.\n@Directive({\n selector: '[seamDatatableDynamicActionMenuItem]',\n exportAs: 'seamDatatableDynamicActionMenuItem'\n})\nexport class DatatableDynamicActionMenuItemDirective implements OnDestroy, OnChanges {\n\n @Input()\n // get seamDatatableDynamicActionMenuItem(): DynamicDatatableActionMenuRecord { return this._record }\n set seamDatatableDynamicActionMenuItem(value: DynamicDatatableActionMenuRecord) {\n this._record.next(value)\n }\n private _record = new ReplaySubject<DynamicDatatableActionMenuRecord>(1)\n\n private _clickSubscription?: Subscription\n private _menuRouterLink?: DatatableDynamicActionMenuItemRouterLink\n\n private _recordSubscription = Subscription.EMPTY\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _renderer: Renderer2,\n private _valueHelper: DynamicValueHelperService,\n private _actionHelper: DynamicActionHelperService,\n private _assetReaderHelper: AssetReaderHelperService,\n private _router: Router,\n private _route: ActivatedRoute,\n private _locationStrategy: LocationStrategy\n ) {\n this._recordSubscription = this._record.pipe(\n // tap(v => console.log('record', v)),\n switchMap(record => this._update(record)),\n tap(() => { this._setInvalidActionState(false) }),\n catchError(error => {\n // eslint-disable-next-line no-console\n if (isDevMode()) { console.error(error) }\n this._setInvalidActionState(true)\n return of(undefined)\n }),\n // tap(v => console.log('record DONE', v))\n ).subscribe()\n }\n\n ngOnDestroy() {\n this._recordSubscription.unsubscribe()\n this._unsubClick()\n if (this._menuRouterLink && this._menuRouterLink.routerLinkWithHref) {\n this._menuRouterLink.routerLinkWithHref.ngOnDestroy()\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // console.log('ngOnChanges', changes, this, this._menuRouterLink)\n if (this._menuRouterLink && this._menuRouterLink.routerLinkWithHref) {\n this._menuRouterLink.routerLinkWithHref.ngOnChanges({})\n if (this._menuRouterLink.routerLinkWithHref.href) {\n if (getAttribute(this._elementRef.nativeElement, 'href') !== this._menuRouterLink.routerLinkWithHref.href) {\n this._renderer.setAttribute(this._elementRef.nativeElement, 'href', this._menuRouterLink.routerLinkWithHref.href)\n }\n } else {\n toggleAttribute(this._elementRef.nativeElement, 'href', false)\n }\n }\n }\n\n public _update(record: DynamicDatatableActionMenuRecord): Observable<void> {\n this._unsubClick()\n\n return from(this._getUiProps(record)).pipe(\n switchMap(uiProps => this._isAnchor()\n ? this._updateAnchorElement(record, uiProps as DynamicActionUiAnchorDef)\n : this._updateButtonElement(record, uiProps as DynamicActionUiButtonDef)\n )\n )\n }\n\n private _updateAnchorElement(\n record: DynamicDatatableActionMenuRecord,\n uiProps: DynamicActionUiAnchorDef\n ): Observable<void> {\n const _stream: Observable<any> = of(undefined)\n\n switch (uiProps.triggerType) {\n case 'link': {\n // console.log('Handle \"link\" triggerType.', uiProps)\n // this._tryInitTabIndex()\n this._tryInitBlockClick(record, uiProps)\n this._initMenuItemRouterLink(record, uiProps)\n\n break\n }\n case 'link-external': {\n // console.log('Handle \"link-external\" triggerType.', uiProps)\n // this._tryInitTabIndex()\n this._tryInitBlockClick(record, uiProps)\n if (hasProperty(uiProps, 'linkUrl')) {\n this._setAttr('href', uiProps.linkUrl)\n }\n if (hasProperty(uiProps, 'linkExtras')) {\n if (hasProperty(uiProps.linkExtras, 'target')) {\n this._setAttr('target', uiProps.linkExtras.target)\n }\n }\n // TODO: Consider making the ItemRouterLink work with external urls.\n // this._initMenuItemRouterLink(record, uiProps)\n\n break\n }\n // TODO: Unless we decide to add a route for openning assets, this would\n // be confusing to a user.\n // case 'link-asset': {\n // console.log('Handle \"link-asset\" triggerType.', uiProps)\n // // this._tryInitTabIndex()\n // this._tryInitBlockClick(record, uiProps)\n // break\n // }\n default: throw Error('[DatatableDynamicActionMenuItemDirective] ' +\n `triggerType ${uiProps.triggerType} is not valid for _updateAnchorElement().`)\n }\n\n return _stream// .pipe(mapTo(undefined))\n }\n\n private _updateButtonElement(\n record: DynamicDatatableActionMenuRecord,\n uiProps: DynamicActionUiAnchorDef | DynamicActionUiButtonDef\n ): Observable<void> {\n let _stream: Observable<any> = of(undefined)\n // this._updateClickElement(record, uiProps as DynamicActionUiButtonDef)\n switch (uiProps.triggerType) {\n case 'link-asset': {\n // console.log('Handle \"link-asset\" triggerType.', uiProps)\n // this._tryInitTabIndex()\n this._tryInitBlockClick(record, uiProps)\n _stream = _stream.pipe(switchMap(() => this._updateAssetElement(record, uiProps)))\n break\n }\n case 'click': {\n // console.log('Handle \"click\" triggerType.', uiProps)\n this._tryInitBlockClick(record, uiProps)\n _stream = _stream.pipe(switchMap(() => this._updateClickElement(record, uiProps)))\n break\n }\n default: throw Error('[DatatableDynamicActionMenuItemDirective] ' +\n `triggerType ${uiProps.triggerType} is not valid for _updateAnchorElement().`)\n }\n\n return _stream// .pipe(mapTo(undefined))\n }\n\n private _updateAssetElement(\n record: DynamicDatatableActionMenuRecord,\n uiProps: DynamicActionUiAnchorDef | DynamicActionUiButtonDef\n ): Observable<void> {\n // console.log('_updateAssetElement')\n // return of(undefined)\n // console.log('this._elementRef.nativeElement', this._elementRef.nativeElement)\n const t = fromEvent(this._elementRef.nativeElement, 'click').pipe(\n tap(event => {\n // const _context = this._getContext(record._row, record.rowAction)\n // const context = { ..._context, event, uiProps }\n // const result = this._valueHelper.evalSync(uiProps.blockClickExpr, context)\n // console.log(record, uiProps)\n // console.log('_updateClickElement click', (<any>event).button, event)\n if (this._assetReaderHelper) {\n if (uiProps.triggerType === 'link-asset' && hasProperty(uiProps, 'linkUrl')) {\n const url = uiProps.linkUrl\n let target: string | undefined\n if (hasProperty(uiProps, 'linkExtras') && hasProperty(uiProps.linkExtras, 'target')) {\n target = uiProps.linkExtras.target\n }\n this._assetReaderHelper.openLink(url, true, true, target)\n }\n }\n // if (!result) {\n // event.preventDefault()\n // event.stopPropagation()\n // }\n }),\n mapTo(undefined)\n )\n\n return of(undefined).pipe(\n // tap(() => console.log('starting _updateButtonElement')),\n switchMap(() => t),\n )\n }\n\n private _updateClickElement(\n record: DynamicDatatableActionMenuRecord,\n uiProps: DynamicActionUiButtonDef\n ): Observable<void> {\n // console.log('_updateClickElement', record, uiProps)\n // return of(undefined)\n return fromEvent(this._elementRef.nativeElement, 'click').pipe(\n switchMap(event => {\n const _context = this._getContext(record._row, record.rowAction)\n const context = { ..._context, event, uiProps }\n // console.log('click', (<any>event).button, event)\n // if (!result) {\n // event.preventDefault()\n // event.stopPropagation()\n // }\n\n return this._actionHelper.exec(uiProps._actionDef, context)\n }),\n mapTo(undefined)\n )\n }\n\n private _unsubClick() {\n if (this._clickSubscription && !this._clickSubscription.closed) {\n this._clickSubscription.unsubscribe()\n }\n }\n\n private _setAttr(attr: string, value: string) {\n this._renderer.setAttribute(this._elementRef.nativeElement, attr, value)\n }\n\n private _tryInitTabIndex() {\n if (getAttribute(this._elementRef.nativeElement, 'tabindex') === null) {\n this._renderer.setAttribute(this._elementRef.nativeElement, 'tabindex', '0')\n }\n }\n\n private _tryInitBlockClick(\n record: DynamicDatatableActionMenuRecord,\n uiProps: DynamicActionUiDef\n ) {\n this._unsubClick()\n if (hasProperty(uiProps, 'blockClickExpr')) {\n this._clickSubscription = this._blockClickExprObservable(uiProps, record).subscribe()\n }\n }\n\n private _blockClickExprObservable(\n uiProps: DynamicActionUiDef,\n record: DynamicDatatableActionMenuRecord\n ) {\n return fromEvent(this._elementRef.nativeElement, 'click').pipe(\n tap(event => {\n const _context = this._getContext(record._row, record.rowAction)\n const context = { ..._context, event, uiProps }\n const result = this._valueHelper.evalSync(uiProps.blockClickExpr, context)\n // console.log('click', result, (<any>event).button, event)\n if (!result) {\n event.preventDefault()\n event.stopPropagation()\n }\n }),\n mapTo(undefined)\n )\n }\n\n private _initMenuItemRouterLink(\n record: DynamicDatatableActionMenuRecord,\n uiProps: DynamicActionUiAnchorDef\n ) {\n this._menuRouterLink = new DatatableDynamicActionMenuItemRouterLink(\n this._router,\n this._route,\n getAttribute(this._elementRef.nativeElement, 'tabindex'),\n this._renderer,\n this._elementRef,\n this._locationStrategy\n )\n // console.log(this._menuRouterLink)\n\n this._menuRouterLink.routerLinkInput = uiProps.linkUrl as string\n\n if (hasProperty(uiProps, 'linkExtras')) {\n if (hasProperty(uiProps.linkExtras, 'target')) {\n this._menuRouterLink.target = uiProps.linkExtras.target\n }\n if (hasProperty(uiProps.linkExtras, 'queryParams')) {\n this._menuRouterLink.queryParams = uiProps.linkExtras.queryParams\n }\n if (hasProperty(uiProps.linkExtras, 'fragment')) {\n this._menuRouterLink.fragment = uiProps.linkExtras.fragment\n }\n if (hasProperty(uiProps.linkExtras, 'queryParamsHandling')) {\n this._menuRouterLink.queryParamsHandling = uiProps.linkExtras.queryParamsHandling\n }\n if (hasProperty(uiProps.linkExtras, 'preserveFragment')) {\n this._menuRouterLink.preserveFragment = uiProps.linkExtras.preserveFragment\n }\n if (hasProperty(uiProps.linkExtras, 'skipLocationChange')) {\n this._menuRouterLink.skipLocationChange = uiProps.linkExtras.skipLocationChange\n }\n if (hasProperty(uiProps.linkExtras, 'replaceUrl')) {\n this._menuRouterLink.replaceUrl = uiProps.linkExtras.replaceUrl\n }\n if (hasProperty(uiProps.linkExtras, 'state')) {\n this._menuRouterLink.state = uiProps.linkExtras.state\n }\n }\n\n this.ngOnChanges({})\n }\n\n private _isAnchor(): boolean {\n return this._elementRef.nativeElement.nodeName.toLowerCase() === 'a'\n }\n\n private _getUiProps(record: DynamicDatatableActionMenuRecord): Promise<DynamicActionUiDef> {\n const context = this._getContext(record._row, record.rowAction)\n return this._actionHelper.getUiProps(record.rowAction.action, context)\n }\n\n /** @ignore */\n private _getContext(row: DynamicDatatableRow, rowActionDef: DynamicDatatableRowAction): DynamicDatatableRowActionContext {\n return {\n row\n }\n }\n\n private _setInvalidActionState(invalid: boolean = false) {\n const element = this._elementRef.nativeElement\n toggleAttribute(element, 'disabled', invalid)\n }\n\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { BehaviorSubject, from, Observable, of } from 'rxjs'\nimport { concatMap, filter, switchMap, toArray } from 'rxjs/operators'\n\nimport { faEllipsisH } from '@fortawesome/free-solid-svg-icons'\nimport { DynamicValueHelperService } from '@theseam/ui-common/dynamic'\nimport { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DynamicDatatableRow } from '../datatable-dynamic-def'\nimport { DynamicDatatableRowActionsService } from '../dynamic-datatable-row-actions.service'\nimport { DynamicDatatableActionMenuElementTypes, DynamicDatatableActionMenuRecord } from '../models/dynamic-datatable-action-menu-record'\nimport { DynamicDatatableRowAction } from '../models/dynamic-datatable-row-action'\nimport { DynamicDatatableRowActionContext } from '../models/dynamic-datatable-row-action-context'\n\n@Component({\n selector: 'seam-datatable-dynamic-action-menu',\n templateUrl: './datatable-dynamic-action-menu.component.html',\n styleUrls: ['./datatable-dynamic-action-menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableDynamicActionMenuComponent {\n\n faEllipsisH = faEllipsisH\n\n @Input()\n get row() { return this._row.value }\n set row(value: DynamicDatatableRow | undefined) {\n this._row.next(value || undefined)\n }\n private _row = new BehaviorSubject<DynamicDatatableRow | undefined>(undefined)\n\n @Input()\n get actionDefs() { return this._actionDefs.value }\n set actionDefs(value: DynamicDatatableRowAction[]) {\n this._actionDefs.next(value || [])\n }\n private _actionDefs = new BehaviorSubject<DynamicDatatableRowAction[]>([])\n\n _menuRecords$: Observable<DynamicDatatableActionMenuRecord[]>\n\n /** @ignore */\n _actionMenuPositions = [\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 _valueHelper: DynamicValueHelperService,\n private _dynamicRowActions: DynamicDatatableRowActionsService\n ) {\n // this._menuRecords$ = combineLatest([ this._row, this._actionDefs ]).pipe(\n // switchMap(([ row, actionDefs ]) => !!row ? this._mapRecords(row, actionDefs) : of([]))\n // )\n this._menuRecords$ = this._row.pipe(\n switchMap(row => row\n ? this._dynamicRowActions.rowActions(row).pipe(\n switchMap(actionDefs => this._mapRecords(row, actionDefs))\n )\n : of([])\n ),\n // tap(v => console.log('actions', v))\n )\n\n // this._menuRecords$.subscribe()\n }\n\n // TODO: Consider moving this to `DynamicDatatableRowActionsService`.\n private _mapRecords<A extends DynamicDatatableRowAction>(\n row: DynamicDatatableRow,\n actionDefs: A[]\n ): Observable<DynamicDatatableActionMenuRecord[]> {\n return from(actionDefs).pipe(\n concatMap(actionDef => {\n return (async () => {\n const _rowAction: DynamicDatatableRowAction = {\n ...actionDef\n }\n\n const context = this._getRowActionContext(row, actionDef)\n\n if (hasProperty(_rowAction, 'hidden')) {\n _rowAction.hidden = await this._valueHelper.eval(_rowAction.hidden, context)\n if (_rowAction.hidden) {\n return undefined\n }\n }\n\n _rowAction.label = await this._valueHelper.eval(actionDef.label, context)\n\n if (hasProperty(_rowAction, 'disabled')) {\n _rowAction.disabled = await this._valueHelper.eval(_rowAction.disabled, context)\n }\n\n const record: DynamicDatatableActionMenuRecord = {\n _row: row,\n _def: actionDef,\n rowAction: _rowAction,\n elementType: this._expectedElementType(actionDef)\n }\n\n return record\n })()\n }),\n filter(notNullOrUndefined),\n toArray()\n )\n }\n\n /** @ignore */\n private _getRowActionContext(\n row: DynamicDatatableRow,\n rowActionDef: DynamicDatatableRowAction\n ): DynamicDatatableRowActionContext {\n return {\n row\n }\n }\n\n private _expectedElementType(def: DynamicDatatableRowAction): DynamicDatatableActionMenuElementTypes {\n const action = def.action\n\n if (action.type === 'link') {\n if (hasProperty(action as any, 'asset')) {\n return 'button'\n }\n return 'a'\n }\n\n return 'button'\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 record of _menuRecords$ | async\">\n\n <a *ngIf=\"record.elementType === 'a'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</a>\n\n <button *ngIf=\"record.elementType === 'button'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</button>\n\n </ng-container>\n\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 [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 [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n [state]=\"item.state\"\n [routerLink]=\"item.routerLink\"\n [target]=\"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 (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]=\"$any(_actionMenuPositions)\"\n title=\"Row Actions\">\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n</button>\n","import { ComponentPortal, PortalInjector } from '@angular/cdk/portal'\nimport { ChangeDetectionStrategy, Component, Injector, Input, OnInit } from '@angular/core'\n\nimport { THESEAM_DATA_FILTER_OPTIONS } from '@theseam/ui-common/data-filters'\nimport type { ComponentType } from '@theseam/ui-common/models'\n\n@Component({\n selector: 'seam-datatable-dynamic-filter-container',\n templateUrl: './datatable-dynamic-filter-container.component.html',\n styleUrls: ['./datatable-dynamic-filter-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableDynamicFilterContainerComponent<C> implements OnInit {\n\n @Input()\n set filterComponent(value: ComponentType<C> | undefined | null) {\n this._filterComponent = value\n // if (this._filterComponent !== value) {\n // this._setPortal(value)\n // }\n }\n get filterComponent() { return this._filterComponent }\n private _filterComponent: ComponentType<C> | undefined | null\n\n @Input() options: any\n\n _portal: ComponentPortal<C> | null = null\n\n constructor(\n private _injector: Injector\n ) { }\n\n ngOnInit() {\n if (this.filterComponent) {\n this._setPortal(this.filterComponent)\n }\n }\n\n private _setPortal(component: ComponentType<C>) {\n if (this._portal) {\n this._portal = null\n }\n\n if (component) {\n this._portal = new ComponentPortal(component, undefined, this._createInjector())\n } else {\n this._portal = null\n }\n }\n\n private _createInjector(): PortalInjector {\n return new PortalInjector(this._injector, new WeakMap <any, any>([\n [ THESEAM_DATA_FILTER_OPTIONS, this.options ]\n ]))\n }\n\n}\n","<ng-template [cdkPortalOutlet]=\"_portal\"></ng-template>\n","import { InjectionToken } from '@angular/core'\n\nimport { IDatatableDynamicMenuBarItemManifest } from './datatable-dynamic-menu-bar-item-manifest'\n\nexport const THESEAM_DATATABLE_DYNAMIC_MENUBAR_ITEM = new InjectionToken<IDatatableDynamicMenuBarItemManifest>(\n 'IDatatableDynamicMenuBarItemManifest'\n)\n","import { ComponentPortal, PortalInjector } from '@angular/cdk/portal'\nimport { ChangeDetectionStrategy, Component, Inject, Injector, Input, Optional } from '@angular/core'\nimport { BehaviorSubject, Observable } from 'rxjs'\nimport { map, switchMap } from 'rxjs/operators'\n\nimport { DynamicValueHelperService } from '@theseam/ui-common/dynamic'\nimport { TheSeamDynamicComponentLoader } from '@theseam/ui-common/dynamic-component-loader'\nimport { hasProperty } from '@theseam/ui-common/utils'\n\nimport { IDatatableDynamicMenuBarItemManifest } from '../datatable-dynamic-menu-bar-item-manifest'\nimport { THESEAM_DATATABLE_DYNAMIC_MENUBAR_ITEM } from '../datatable-dynamic-menu-bar-token'\nimport {\n DynamicDatatableMenuBar,\n DynamicDatatableMenuBarColumn,\n DynamicDatatableMenuBarItem,\n DynamicDatatableMenuBarRow,\n DynamicDatatableMenuBarRowLayoutTriColumn\n} from '../models/dynamic-datatable-menu-bar'\n\nexport interface IDatatableDynamicMenuBarContentItem {\n // styles?: string | string[]\n // cssClass?: string | string[]\n portal?: ComponentPortal<object>\n // component?: string | ComponentType<{}>\n // config?: any\n}\n\nexport interface IDatatableDynamicMenuBarContentColumn {\n styles?: string | string[]\n cssClass?: string | string[]\n items?: IDatatableDynamicMenuBarContentItem[]\n}\n\nexport interface IDatatableDynamicMenuBarContentRowLayoutTriColumn {\n columnLeft?: IDatatableDynamicMenuBarContentColumn\n columnCenter?: IDatatableDynamicMenuBarContentColumn\n columnRight?: IDatatableDynamicMenuBarContentColumn\n}\n\nexport interface IDatatableDynamicMenuBarContentRow {\n styles?: string | string[]\n cssClass?: string | string[]\n priority?: number\n layoutType?: string\n layout?: IDatatableDynamicMenuBarContentRowLayoutTriColumn\n}\n\nexport interface IDatatableDynamicMenuBarContentRowContext {\n row: DynamicDatatableMenuBarRow\n}\n\nexport interface IDatatableDynamicMenuBarContentColumnContext {\n column: DynamicDatatableMenuBarColumn\n row: DynamicDatatableMenuBarRow\n}\n\nexport interface IDatatableDynamicMenuBarContentItemContext {\n item: DynamicDatatableMenuBarItem\n row: DynamicDatatableMenuBarRow\n column: DynamicDatatableMenuBarColumn\n}\n\n@Component({\n selector: 'seam-datatable-dynamic-menu-bar-content',\n templateUrl: './datatable-dynamic-menu-bar-content.component.html',\n styleUrls: ['./datatable-dynamic-menu-bar-content.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableDynamicMenuBarContentComponent {\n\n private readonly _def = new BehaviorSubject<DynamicDatatableMenuBar | undefined>(undefined)\n\n @Input()\n set def(value: DynamicDatatableMenuBar | undefined) { this._def.next(value) }\n get def(): DynamicDatatableMenuBar | undefined { return this._def.value }\n\n public readonly def$: Observable<DynamicDatatableMenuBar | undefined>\n\n readonly _rows$: Observable<IDatatableDynamicMenuBarContentRow[]>\n\n constructor(\n private readonly _valueHelper: DynamicValueHelperService,\n private readonly _dynamicComponentLoader: TheSeamDynamicComponentLoader,\n private readonly _injector: Injector,\n @Optional() @Inject(THESEAM_DATATABLE_DYNAMIC_MENUBAR_ITEM)\n private readonly _menuBarItemManifests?: IDatatableDynamicMenuBarItemManifest[]\n ) {\n this.def$ = this._def.asObservable()\n // .pipe(tap(v => console.log('def$', v)))\n\n this._rows$ = this.def$.pipe(switchMap(def => this._mapRows((def && def.rows) || [])))\n // .pipe(tap(v => console.log('_rows$', v)))\n }\n\n private _mapRows(rows: DynamicDatatableMenuBarRow[]): Promise<IDatatableDynamicMenuBarContentRow[]> {\n return Promise.all(rows.map(r => this._mapRow(r)))\n }\n\n private async _mapRow(row: DynamicDatatableMenuBarRow): Promise<IDatatableDynamicMenuBarContentRow> {\n const result: IDatatableDynamicMenuBarContentRow = { }\n const context = this._createRowContext(row)\n\n if (hasProperty(row, 'styles')) {\n result.styles = await this._valueHelper.eval(row.styles, context)\n }\n\n if (hasProperty(row, 'cssClass')) {\n result.cssClass = await this._valueHelper.eval(row.cssClass, context)\n }\n\n if (hasProperty(row, 'priority')) {\n result.priority = await this._valueHelper.eval(row.priority, context)\n }\n\n result.layoutType = row.layout.type\n result.layout = await this._mapRowLayout(row.layout, row)\n\n return result\n }\n\n private async _mapRowLayout(\n layout: DynamicDatatableMenuBarRowLayoutTriColumn,\n row: DynamicDatatableMenuBarRow\n ): Promise<IDatatableDynamicMenuBarContentRowLayoutTriColumn> {\n const result: IDatatableDynamicMenuBarContentRowLayoutTriColumn = { }\n\n if (hasProperty(layout, 'columnLeft')) {\n result.columnLeft = await this._mapColumn(layout.columnLeft, row)\n }\n\n if (hasProperty(layout, 'columnCenter')) {\n result.columnCenter = await this._mapColumn(layout.columnCenter, row)\n }\n\n if (hasProperty(layout, 'columnRight')) {\n result.columnRight = await this._mapColumn(layout.columnRight, row)\n }\n\n return result\n }\n\n private async _mapColumn(\n column: DynamicDatatableMenuBarColumn,\n row: DynamicDatatableMenuBarRow\n ): Promise<IDatatableDynamicMenuBarContentColumn> {\n const result: IDatatableDynamicMenuBarContentColumn = { }\n const context = this._createColumnContext(column, row)\n\n if (hasProperty(column, 'styles')) {\n result.styles = await this._valueHelper.eval(column.styles, context)\n }\n\n if (hasProperty(column, 'cssClass')) {\n result.cssClass = await this._valueHelper.eval(column.cssClass, context)\n }\n\n result.items = await Promise.all(column.items.map(v => this._mapItem(v, row, column)))\n\n return result\n }\n\n private async _mapItem(\n item: DynamicDatatableMenuBarItem,\n row: DynamicDatatableMenuBarRow,\n column: DynamicDatatableMenuBarColumn\n ): Promise<IDatatableDynamicMenuBarContentItem> {\n const result: IDatatableDynamicMenuBarContentItem = { }\n const context = this._createItemContext(item, row, column)\n\n // if (hasProperty(item, 'styles')) {\n // result.styles = await this._valueHelper.eval(item.styles, context)\n // }\n\n // if (hasProperty(item, 'cssClass')) {\n // result.cssClass = await this._valueHelper.eval(item.cssClass, context)\n // }\n\n if (hasProperty(item, 'component')) {\n // result.component = await this._valueHelper.eval(item.component, context)\n const component = await this._valueHelper.eval(item.component, context)\n\n let data: any\n if (hasProperty(item, 'data')) {\n // result.data = await this._valueHelper.eval(item.data, context)\n // console.log('%cdata', 'color:cyan', item.data)\n data = await this._valueHelper.eval(item.data, context)\n // console.log('%cdata', 'color:limegreen', data)\n }\n\n result.portal = await this._getComponentPortal(component, data)\n }\n\n return result\n }\n\n private _createRowContext(row: DynamicDatatableMenuBarRow): IDatatableDynamicMenuBarContentRowContext {\n return {\n row\n }\n }\n\n private _createColumnContext(\n column: DynamicDatatableMenuBarColumn,\n row: DynamicDatatableMenuBarRow\n ): IDatatableDynamicMenuBarContentColumnContext {\n return {\n row,\n column\n }\n }\n\n private _createItemContext(\n item: DynamicDatatableMenuBarItem,\n row: DynamicDatatableMenuBarRow,\n column: DynamicDatatableMenuBarColumn\n ): IDatatableDynamicMenuBarContentItemContext {\n return {\n item,\n row,\n column\n }\n }\n\n private async _getComponentPortal(component: string, data?: any): Promise<ComponentPortal<object> | undefined> {\n const manifest = (this._menuBarItemManifests || []).find(m => m.name === component)\n\n if (!manifest) {\n // TODO: Make sure the component is skipped instead of erroring outside of dev mode.\n throw Error(`MenuBar manifest for '${component}' not found.`)\n }\n\n // TODO: Create a new injector with the data injected\n let injector = this._injector\n if (manifest.dataToken) {\n injector = new PortalInjector(this._injector, new WeakMap([\n [manifest.dataToken, data]\n ]))\n }\n\n if (typeof manifest.component === 'string') {\n this._dynamicComponentLoader.getComponentFactory<object>(manifest.component).pipe(\n map(componentFactory => {\n return new ComponentPortal(\n componentFactory.componentType,\n null,\n injector,\n (componentFactory as any /* ComponentFactoryBoundToModule */).ngModule.componentFactoryResolver\n )\n })\n ).toPromise()\n } else {\n return new ComponentPortal(manifest.component, null, injector, null)\n }\n }\n\n}\n","<seam-datatable-menu-bar-row *ngFor=\"let row of _rows$ | async; last as isLast\"\n [class.mb-2]=\"!isLast\"\n [ngClass]=\"$any(row.cssClass)\"\n [ngStyle]=\"$any(row.styles)\">\n <ng-container *ngIf=\"row.layoutType === 'tri-column'\">\n <seam-datatable-menu-bar-column-left *ngIf=\"row.layout?.columnLeft\"\n [ngClass]=\"$any(row.layout).cssClass\"\n [ngStyle]=\"$any(row.layout).styles\">\n <ng-container *ngIf=\"row.layout?.columnLeft?.items\">\n <ng-container *ngFor=\"let item of row.layout?.columnLeft?.items\">\n <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template>\n </ng-container>\n </ng-container>\n </seam-datatable-menu-bar-column-left>\n <seam-datatable-menu-bar-column-center *ngIf=\"row.layout?.columnCenter\"\n [ngClass]=\"$any(row.layout).cssClass\"\n [ngStyle]=\"$any(row.layout).styles\">\n <ng-container *ngIf=\"row.layout?.columnCenter?.items\">\n <ng-container *ngFor=\"let item of row.layout?.columnCenter?.items\">\n <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template>\n </ng-container>\n </ng-container>\n </seam-datatable-menu-bar-column-center>\n <seam-datatable-menu-bar-column-right *ngIf=\"row.layout?.columnRight\"\n [ngClass]=\"$any(row.layout).cssClass\"\n [ngStyle]=\"$any(row.layout).styles\">\n <ng-container *ngIf=\"row.layout?.columnRight?.items\">\n <ng-container *ngFor=\"let item of row.layout?.columnRight?.items\">\n <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template>\n </ng-container>\n </ng-container>\n </seam-datatable-menu-bar-column-right>\n </ng-container>\n</seam-datatable-menu-bar-row>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { Observable } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\nimport { IDataExporter } from '@theseam/ui-common/data-exporter'\n\nimport {\n DatatableDynamicDef,\n DynamicDatatableOptions\n} from './datatable-dynamic-def'\nimport { DynamicDatatableDefService } from './dynamic-datatable-def.service'\nimport { DynamicDatatableRowActionsService } from './dynamic-datatable-row-actions.service'\nimport { DynamicDatatableFilterMenuItem } from './models/dynamic-datatable-filter-menu-item'\nimport { DynamicDatatableMenuBar } from './models/dynamic-datatable-menu-bar'\n\n/**\n * # EXPERIMENTAL\n *\n * NOTE: This component is still experimental. When stable all standard\n * datatables must use this component, unless there is a good reason not to, in\n * our apps.\n *\n * ----------------------------------------------------------------------------\n *\n * Datatable that is built from a json definition.\n *\n * All standard datatables in our apps must use this component, unless there is\n * a good reason not to. If a standard datatable does not use this component\n * then an explaination comment needs to be clearly provided in the code to\n * avoid getting migrated to this component.\n *\n * A few reasons this component should to be used:\n * - We can, more easily, control what a datatable in our app does by requiring\n * the definition follow a json schema, instead of having full scripting\n * access available to the developer.\n * + By using json we can maintain the tables from any external app/language\n * that can produce a json string.\n * + More scripting access often leads to different hacks across the tables\n * that should have just been supported by this component if it is a feature\n * a datatable should be able to do in an app of ours.\n * - We can allow any of our tables to be configured by the server.\n * + By supporting configuration on the server we can change the tables\n * without a new build and do things like allowing non-developers/clients to\n * maintain the tables functionality.\n */\n@Component({\n selector: 'seam-datatable-dynamic',\n templateUrl: './datatable-dynamic.component.html',\n styleUrls: ['./datatable-dynamic.component.scss'],\n providers: [\n DynamicDatatableDefService,\n DynamicDatatableRowActionsService\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableDynamicComponent {\n\n /** The `DatatableDynamicDef` that defines the datatable. */\n @Input() set def(value: DatatableDynamicDef | undefined | null) {\n this._dynamicDef.setDef(value || undefined)\n }\n\n /**\n * Observes whether the datatable has a def.\n * @ignore\n */\n _hasDef$: Observable<boolean>\n\n /**\n * Observes whether the datatable has a menu bar.\n */\n menuBar$: Observable<DynamicDatatableMenuBar | undefined>\n\n /**\n * The available exporters.\n * @ignore\n */\n _exporters$: Observable<IDataExporter[]>\n\n /**\n * The 'common' type filter menu items.\n * @ignore\n */\n _commonFilterMenuItems$: Observable<DynamicDatatableFilterMenuItem[]>\n\n /**\n * Observes whether the datatable has a 'full-search' menu item.\n * @ignore\n */\n _hasFullSearch$: Observable<boolean>\n\n /**\n * Observes whether the datatable has a filter menu.\n * @ignore\n */\n _hasFilterMenu$: Observable<boolean>\n\n /**\n * Observes datatable options.\n * @ignore\n */\n _options$: Observable<DynamicDatatableOptions | undefined>\n\n /**\n * TODO: Implement def columns parser.\n * @ignore\n */\n _tmp_columns$: Observable<any>\n\n /**\n * TODO: Implement def rows parser.\n * @ignore\n */\n _tmp_rows$: Observable<any>\n\n constructor(\n private readonly _dynamicDef: DynamicDatatableDefService\n ) {\n this._hasDef$ = this._dynamicDef.def$.pipe(map(def => !!def))\n\n this.menuBar$ = this._dynamicDef.menuBar$\n\n this._exporters$ = this._dynamicDef.exporters$\n\n this._commonFilterMenuItems$ = this._dynamicDef.filterMenuItems$\n .pipe(map(f => f.filter(_f => _f.type === 'common')))\n\n this._hasFullSearch$ = this._dynamicDef.filterMenuItems$\n .pipe(map(f => !!f.find(_f => _f.type === 'full-search')))\n\n this._hasFilterMenu$ = this._dynamicDef.hasFilterMenu$\n\n this._options$ = this._dynamicDef.options$\n\n this._tmp_columns$ = this._dynamicDef.def$.pipe(\n map(def => def ? def.columns : [])\n )\n\n this._tmp_rows$ = this._dynamicDef.def$.pipe(\n map(def => def ? def.rows : []),\n // tap(v => console.log('_tmp_rows$', v))\n )\n }\n\n}\n","<ng-container *ngIf=\"_hasDef$ | async\">\n <seam-datatable *ngIf=\"_options$ | async as opts\"\n class=\"w-100 h-100\"\n [columns]=\"_tmp_columns$ | async\"\n [rows]=\"_tmp_rows$ | async\"\n [virtualization]=\"opts.virtualization\">\n\n <seam-datatable-menu-bar *ngIf=\"menuBar$ | async as menuBar\">\n <seam-datatable-dynamic-menu-bar-content [def]=\"menuBar\"></seam-datatable-dynamic-menu-bar-content>\n </seam-datatable-menu-bar>\n <!-- <seam-datatable-menu-bar *ngIf=\"_hasFilterMenu$ | async\">\n <div class=\"d-flex flex-row pb-2\">\n <div class=\"d-flex flex-row justify-content-end flex-grow-1\">\n <seam-data-filter-search seamDatatableFilter *ngIf=\"_hasFullSearch$\"></seam-data-filter-search>\n </div>\n </div>\n <div class=\"d-flex flex-row\">\n <div class=\"d-flex justify-content-center flex-grow-1\">\n <ng-container *ngFor=\"let r of _commonFilterMenuItems$ | async; let isFirst = first\">\n <seam-datatable-dynamic-filter-container\n [class.ml-1]=\"!isFirst\"\n [filterComponent]=\"r.component\"\n [options]=\"r.options\">\n </seam-datatable-dynamic-filter-container>\n </ng-container>\n </div>\n <seam-datatable-export-button *ngIf=\"_exporters$ | async as exporters\"\n [exporters]=\"exporters\">\n </seam-datatable-export-button>\n </div>\n </seam-datatable-menu-bar> -->\n\n <ng-template seamDatatableRowActionItem let-row>\n <seam-datatable-dynamic-action-menu [row]=\"row\"></seam-datatable-dynamic-action-menu>\n </ng-template>\n\n </seam-datatable>\n</ng-container>\n","import { PortalModule } from '@angular/cdk/portal'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\nimport { TheSeamDataExporterModule } from '@theseam/ui-common/data-exporter'\nimport { TheSeamDataFiltersModule } from '@theseam/ui-common/data-filters'\nimport { TheSeamDatatableModule } from '@theseam/ui-common/datatable'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamMenuModule } from '@theseam/ui-common/menu'\nimport { TheSeamSharedModule } from '@theseam/ui-common/shared'\nimport { TheSeamTableCellTypesModule } from '@theseam/ui-common/table-cell-types'\n\nimport { DatatableDynamicActionMenuComponent } from './datatable-dynamic-action-menu/datatable-dynamic-action-menu.component'\nimport { DatatableDynamicFilterContainerComponent } from './datatable-dynamic-filter-container/datatable-dynamic-filter-container.component'\nimport { DatatableDynamicMenuBarContentComponent } from './datatable-dynamic-menu-bar-content/datatable-dynamic-menu-bar-content.component'\nimport { DatatableDynamicComponent } from './datatable-dynamic.component'\nimport { DatatableDynamicActionMenuItemDirective } from './directives/datatable-dynamic-action-menu-item.directive'\n\n@NgModule({\n declarations: [\n DatatableDynamicComponent,\n DatatableDynamicFilterContainerComponent,\n DatatableDynamicActionMenuComponent,\n DatatableDynamicActionMenuItemDirective,\n DatatableDynamicMenuBarContentComponent,\n ],\n imports: [\n CommonModule,\n TheSeamSharedModule,\n TheSeamDatatableModule,\n TheSeamTableCellTypesModule,\n TheSeamDataExporterModule,\n TheSeamDataFiltersModule,\n TheSeamIconModule,\n PortalModule,\n RouterModule,\n TheSeamMenuModule,\n TheSeamButtonsModule\n ],\n exports: [\n DatatableDynamicComponent,\n TheSeamDatatableModule,\n DatatableDynamicActionMenuItemDirective\n ]\n})\nexport class TheSeamDatatableDynamicModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.DynamicDatatableDefService","i4","i2.DynamicDatatableRowActionsService","i3","i6.DatatableDynamicActionMenuItemDirective","i1","i5","i1.DynamicDatatableDefService","i2","i4.DatatableDynamicActionMenuComponent","i5.DatatableDynamicMenuBarContentComponent"],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-datatable-dynamic.mjs","sources":["../../../projects/ui-common/datatable-dynamic/utils/defaults/set-dynamic-datatable-columns-defaults.ts","../../../projects/ui-common/datatable-dynamic/utils/defaults/set-dynamic-datatable-filter-menu-defaults.ts","../../../projects/ui-common/datatable-dynamic/utils/defaults/set-dynamic-datatable-options-defaults.ts","../../../projects/ui-common/datatable-dynamic/utils/defaults/set-dynamic-datatable-def-defaults.ts","../../../projects/ui-common/datatable-dynamic/dynamic-datatable-def.service.ts","../../../projects/ui-common/datatable-dynamic/dynamic-datatable-row-actions.service.ts","../../../projects/ui-common/datatable-dynamic/directives/datatable-dynamic-action-menu-item.directive.ts","../../../projects/ui-common/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.ts","../../../projects/ui-common/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.html","../../../projects/ui-common/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.ts","../../../projects/ui-common/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.html","../../../projects/ui-common/datatable-dynamic/datatable-dynamic-menu-bar-token.ts","../../../projects/ui-common/datatable-dynamic/datatable-dynamic-menu-bar-content/datatable-dynamic-menu-bar-content.component.ts","../../../projects/ui-common/datatable-dynamic/datatable-dynamic-menu-bar-content/datatable-dynamic-menu-bar-content.component.html","../../../projects/ui-common/datatable-dynamic/datatable-dynamic.component.ts","../../../projects/ui-common/datatable-dynamic/datatable-dynamic.component.html","../../../projects/ui-common/datatable-dynamic/datatable-dynamic.module.ts","../../../projects/ui-common/datatable-dynamic/theseam-ui-common-datatable-dynamic.ts"],"sourcesContent":["import { DynamicDatatableColumn } from '../../datatable-dynamic-def'\n\nexport function setDynamicDatatableColumnsDefaults(\n columns: DynamicDatatableColumn[]\n) {\n for (const col of columns) {\n if (!col.cellType) {\n col.cellType = 'string'\n }\n }\n}\n","import { DynamicDatatableFilterMenu } from '../../datatable-dynamic-def'\n\nexport function setDynamicDatatableFilterMenuDefaults(\n filterMenu: DynamicDatatableFilterMenu\n) {\n if (!filterMenu.state) {\n filterMenu.state = 'default'\n }\n}\n","import { DynamicDatatableOptions } from '../../datatable-dynamic-def'\n\nexport function setDynamicDatatableOptionsDefaults(\n options: DynamicDatatableOptions\n) {\n if (options.virtualization === undefined || options.virtualization === null) {\n options.virtualization = true\n }\n}\n","import { DatatableDynamicDef } from '../../datatable-dynamic-def'\n\nimport { setDynamicDatatableColumnsDefaults } from './set-dynamic-datatable-columns-defaults'\nimport { setDynamicDatatableFilterMenuDefaults } from './set-dynamic-datatable-filter-menu-defaults'\nimport { setDynamicDatatableOptionsDefaults } from './set-dynamic-datatable-options-defaults'\n\nexport function setDynamicDatatableDefDefaults(\n def: DatatableDynamicDef\n) {\n setDynamicDatatableColumnsDefaults(def.columns)\n\n if (def.filterMenu) {\n setDynamicDatatableFilterMenuDefaults(def.filterMenu)\n }\n\n if (def.options) {\n setDynamicDatatableOptionsDefaults(def.options)\n }\n}\n","import { ComponentType } from '@angular/cdk/portal'\nimport { Inject, Injectable } from '@angular/core'\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs'\nimport { map, shareReplay, switchMap } from 'rxjs/operators'\n\nimport { IDataExporter, THESEAM_DATA_EXPORTER } from '@theseam/ui-common/data-exporter'\nimport { IDataFilter, THESEAM_DATA_FILTER_DEF } from '@theseam/ui-common/data-filters'\nimport { DynamicValueHelperService } from '@theseam/ui-common/dynamic'\nimport { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DynamicDatatableOptions } from './datatable-dynamic-def'\nimport { DatatableDynamicDef } from './datatable-dynamic-def'\nimport { DynamicDatatableMenuBar } from './models/dynamic-datatable-menu-bar'\nimport { DynamicDatatableFilterMenuItem } from './models/index'\nimport { setDynamicDatatableDefDefaults } from './utils/index'\n\n/**\n * Manages the data defined in the `DatatableDynamicDef`. Simplifies accessing\n * and observing the needed data based on the `DatatableDynamicDef`.\n */\n@Injectable()\nexport class DynamicDatatableDefService {\n\n /**\n * @deprecated\n * @ignore\n */\n private _dataExporters: IDataExporter[]\n\n /**\n * @deprecated\n * @ignore\n */\n private _dataFilters: { name: string, component: ComponentType<IDataFilter> }[]\n\n /** @ignore */\n private readonly _defSubject = new BehaviorSubject<DatatableDynamicDef | undefined>(undefined)\n\n /** Dynamic datatable definition. */\n public readonly def$: Observable<DatatableDynamicDef | undefined>\n\n /**\n * Exporters in the def that are available.\n * @deprecated\n */\n public readonly exporters$: Observable<IDataExporter[]>\n\n /**\n * Filter menu items in the def that are available.\n * @deprecated\n */\n public readonly filterMenuItems$: Observable<DynamicDatatableFilterMenuItem[]>\n\n /**\n * Observes whether the datatable has a filter menu.\n * @deprecated\n */\n public readonly hasFilterMenu$: Observable<boolean>\n\n /** Observes datatable options. */\n public readonly options$: Observable<DynamicDatatableOptions | undefined>\n\n /** Observes the datatable def menu bar. */\n public readonly menuBar$: Observable<DynamicDatatableMenuBar | undefined>\n\n constructor(\n @Inject(THESEAM_DATA_EXPORTER) dataExporters: IDataExporter[],\n @Inject(THESEAM_DATA_FILTER_DEF) dataFilters: { name: string, component: ComponentType<IDataFilter> }[],\n private _valueHelper: DynamicValueHelperService,\n ) {\n this._dataExporters = (dataExporters || [])\n this._dataFilters = (dataFilters || [])\n\n this.def$ = this._defSubject.asObservable()\n\n this.exporters$ = this.def$.pipe(\n map(def => def ? this._mapExporters(def) : []),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n this.filterMenuItems$ = this.def$.pipe(\n map(def => def ? this._mapFilterMenuItems(def) : []),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n this.hasFilterMenu$ = this.def$.pipe(\n switchMap(def => {\n if (!def) { return of(false) }\n\n // Check if the visibility can be determined by the state value only.\n if (def.filterMenu && def.filterMenu.state) {\n switch (def.filterMenu.state) {\n case 'always-visible': return of(true)\n case 'hidden': return of(false)\n }\n }\n\n // Check if there is anything to put in the filter menu.\n return combineLatest([\n this.exporters$.pipe(map(e => e.length > 0)),\n this.filterMenuItems$.pipe(map(f => f.length > 0))\n ]).pipe(map(v => v.indexOf(true) !== -1))\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n this.options$ = this.def$.pipe(\n map(def => def ? def.options : undefined),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n this.menuBar$ = this.def$.pipe(\n map(def => (notNullOrUndefined(def) && hasProperty(def, 'menuBar')) ? def.menuBar : undefined),\n // tap(v => console.log('menubar', v)),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n }\n\n /** Sets the `DatatableDynamicDef` that defines the datatable. */\n public setDef(def: DatatableDynamicDef | undefined): void {\n if (def) { setDynamicDatatableDefDefaults(def) }\n this._defSubject.next(def || undefined)\n }\n\n /** Map the def exporters to the provided `IDataExporter` objects. */\n private _mapExporters(def: DatatableDynamicDef): IDataExporter[] {\n if (!def.filterMenu || !Array.isArray(def.filterMenu.exporters)) {\n return []\n }\n\n return def.filterMenu.exporters\n .map(e => this._dataExporters.find(de => de.name === e))\n .filter(notNullOrUndefined)\n }\n\n /** Map the def filter menu items to provided components. */\n private _mapFilterMenuItems(def: DatatableDynamicDef): DynamicDatatableFilterMenuItem[] {\n if (!def.filterMenu || !def.filterMenu.filters || !Array.isArray(def.filterMenu.filters)) {\n return []\n }\n\n return def.filterMenu.filters\n .map(f => {\n const _df = this._dataFilters.find(df => df.name === f.name)\n if (_df) { return { ...f, component: _df.component } }\n })\n .filter(notNullOrUndefined)\n }\n\n}\n","import { Injectable } from '@angular/core'\nimport { from, Observable, of } from 'rxjs'\nimport { map, switchMap, toArray } from 'rxjs/operators'\n\nimport { DynamicValueHelperService } from '@theseam/ui-common/dynamic'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DynamicDatatableRow } from './datatable-dynamic-def'\nimport { DynamicDatatableDefService } from './dynamic-datatable-def.service'\nimport { DynamicDatatableRowAction } from './models/dynamic-datatable-row-action'\nimport { DynamicDatatableRowActionContext } from './models/dynamic-datatable-row-action-context'\n\n@Injectable()\nexport class DynamicDatatableRowActionsService {\n\n constructor(\n private _valueHelper: DynamicValueHelperService,\n private _dynamicDef: DynamicDatatableDefService\n ) { }\n\n /**\n * Observe actions for specified row\n */\n public rowActions(row: DynamicDatatableRow): Observable<DynamicDatatableRowAction[]> {\n return this._dynamicDef.def$.pipe(\n map(def => (def && def.rowActions) ? def.rowActions || [] : []),\n switchMap(rowActions => rowActions\n ? from(rowActions).pipe(\n map(rowAction => {\n if (Object.prototype.hasOwnProperty.call(rowAction, 'hidden')) {\n if (typeof rowAction.hidden === 'boolean') {\n return rowAction.hidden ? undefined : rowAction\n } else {\n const context = this._getRowActionContext(row, rowAction)\n // TODO: Fix async eval\n const isHidden = this._valueHelper.evalSync(rowAction.hidden, context)\n return isHidden ? undefined : rowAction\n }\n }\n return rowAction\n }),\n toArray(),\n map(v => v.filter(notNullOrUndefined))\n )\n : of([])\n )\n )\n }\n\n /** @ignore */\n private _getRowActionContext(row: DynamicDatatableRow, rowActionDef: DynamicDatatableRowAction): DynamicDatatableRowActionContext {\n return {\n row\n }\n }\n\n}\n","import { LocationStrategy } from '@angular/common'\nimport {\n Attribute,\n Directive,\n ElementRef,\n Input,\n isDevMode,\n OnChanges,\n OnDestroy,\n Renderer2,\n SimpleChanges,\n} from '@angular/core'\nimport { ActivatedRoute, QueryParamsHandling, Router, RouterLink, RouterLinkWithHref } from '@angular/router'\nimport { from, fromEvent, Observable, of, ReplaySubject, Subscription } from 'rxjs'\nimport { catchError, mapTo, switchMap, tap } from 'rxjs/operators'\n\nimport { AssetReaderHelperService } from '@theseam/ui-common/asset-reader'\nimport {\n DynamicActionHelperService,\n DynamicActionUiAnchorDef,\n DynamicActionUiButtonDef,\n DynamicActionUiDef,\n DynamicValueHelperService\n} from '@theseam/ui-common/dynamic'\nimport { getAttribute, hasProperty, toggleAttribute } from '@theseam/ui-common/utils'\n\nimport { DynamicDatatableRow } from '../datatable-dynamic-def'\nimport type { DynamicDatatableActionMenuRecord } from '../models/dynamic-datatable-action-menu-record'\nimport { DynamicDatatableRowAction } from '../models/dynamic-datatable-row-action'\nimport { DynamicDatatableRowActionContext } from '../models/dynamic-datatable-row-action-context'\n\n/**\n * Class to act as a substitute to `routerLink` directive until the menu items\n * can be dynamically built in a clean way with or without `routerLink`.\n */\nexport class DatatableDynamicActionMenuItemRouterLink {\n\n private _rLink?: RouterLink\n private _rLinkWithHref?: RouterLinkWithHref\n\n // private _clickSubscription?: Subscription\n private _rLinkClickEventListener?: any\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n @Attribute('tabindex') tabIndex: string | null,\n private renderer: Renderer2,\n private el: ElementRef,\n private locationStrategy: LocationStrategy\n ) {\n if (el.nativeElement.nodeName.toLowerCase() === 'a') {\n this._rLinkWithHref = new RouterLinkWithHref(\n router,\n route,\n '0', // TODO: Fix type.\n renderer,\n el.nativeElement,\n locationStrategy\n )\n // console.log('rLinkWithHref', this.rLinkWithHref)\n\n this._rLinkClickEventListener = this.el.nativeElement.addEventListener('click', (event: MouseEvent) => {\n // console.log('this._rLinkWithHref', this._rLinkWithHref, this._rLinkWithHref && this._rLinkWithHref.href)\n if (this._rLinkWithHref) {\n return this._rLinkWithHref.onClick(event.button, event.ctrlKey, event.shiftKey, event.altKey, event.metaKey)\n }\n })\n } else {\n this._rLink = new RouterLink(\n router,\n route,\n tabIndex as string,\n renderer,\n el\n )\n // console.log('rLink', this.rLink)\n\n this._rLinkClickEventListener = this.el.nativeElement.addEventListener('click', () => {\n // console.log('this._rLink', this._rLink && this._rLink.urlTree)\n if (this._rLink) { return (this._rLink as any).onClick() }\n })\n\n // this._clickSubscription = fromEvent(el.nativeElement, 'click')\n // .subscribe(() => {\n // if (this._rLink) {\n // this._rLink.onClick()\n // } else {\n // if (this._clickSubscription && !this._clickSubscription.closed) {\n // this._clickSubscription.unsubscribe()\n // }\n // }\n // })\n }\n }\n\n get routerLink(): RouterLink | undefined { return this._rLink }\n get routerLinkWithHref(): RouterLinkWithHref | undefined { return this._rLinkWithHref }\n\n set routerLinkInput(commands: any[] | string) {\n if (this._rLink) {\n this._rLink.routerLink = commands\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.routerLink = commands\n }\n }\n\n set queryParams(value: { [k: string]: any }) {\n if (this._rLink) {\n this._rLink.queryParams = value\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.queryParams = value\n }\n }\n\n set fragment(value: string) {\n if (this._rLink) {\n this._rLink.fragment = value\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.fragment = value\n }\n }\n\n set queryParamsHandling(value: QueryParamsHandling) {\n if (this._rLink) {\n this._rLink.queryParamsHandling = value\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.queryParamsHandling = value\n }\n }\n\n set preserveFragment(value: boolean) {\n if (this._rLink) {\n this._rLink.preserveFragment = value\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.preserveFragment = value\n }\n }\n\n set skipLocationChange(value: boolean) {\n if (this._rLink) {\n this._rLink.skipLocationChange = value\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.skipLocationChange = value\n }\n }\n\n set replaceUrl(value: boolean) {\n if (this._rLink) {\n this._rLink.replaceUrl = value\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.replaceUrl = value\n }\n }\n\n set state(value: { [k: string]: any }) {\n if (this._rLink) {\n this._rLink.state = value\n } else if (this._rLinkWithHref) {\n this._rLinkWithHref.state = value\n }\n }\n\n set target(value: string | undefined) {\n if (this._rLinkWithHref) {\n this._rLinkWithHref.target = value as string\n\n if (value) {\n this.renderer.setAttribute(this.el.nativeElement, 'target', value)\n } else {\n toggleAttribute(this.el.nativeElement, 'target', false)\n }\n }\n }\n\n public destroy() {\n // if (this._clickSubscription && !this._clickSubscription.closed) {\n // this._clickSubscription.unsubscribe()\n // }\n if (this._rLinkClickEventListener) {\n this.el.nativeElement.removeEventListener('click', this._rLinkClickEventListener)\n this._rLinkClickEventListener = null\n }\n\n if (this._rLinkWithHref && this._rLinkWithHref.ngOnDestroy) {\n this._rLinkWithHref.ngOnDestroy()\n }\n }\n\n}\n\n// TODO: Refactor this directive. It got way more complex instead of more\n// simplified like it was supposed to be.\n@Directive({\n selector: '[seamDatatableDynamicActionMenuItem]',\n exportAs: 'seamDatatableDynamicActionMenuItem'\n})\nexport class DatatableDynamicActionMenuItemDirective implements OnDestroy, OnChanges {\n\n @Input()\n // get seamDatatableDynamicActionMenuItem(): DynamicDatatableActionMenuRecord { return this._record }\n set seamDatatableDynamicActionMenuItem(value: DynamicDatatableActionMenuRecord) {\n this._record.next(value)\n }\n private _record = new ReplaySubject<DynamicDatatableActionMenuRecord>(1)\n\n private _clickSubscription?: Subscription\n private _menuRouterLink?: DatatableDynamicActionMenuItemRouterLink\n\n private _recordSubscription = Subscription.EMPTY\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _renderer: Renderer2,\n private _valueHelper: DynamicValueHelperService,\n private _actionHelper: DynamicActionHelperService,\n private _assetReaderHelper: AssetReaderHelperService,\n private _router: Router,\n private _route: ActivatedRoute,\n private _locationStrategy: LocationStrategy\n ) {\n this._recordSubscription = this._record.pipe(\n // tap(v => console.log('record', v)),\n switchMap(record => this._update(record)),\n tap(() => { this._setInvalidActionState(false) }),\n catchError(error => {\n // eslint-disable-next-line no-console\n if (isDevMode()) { console.error(error) }\n this._setInvalidActionState(true)\n return of(undefined)\n }),\n // tap(v => console.log('record DONE', v))\n ).subscribe()\n }\n\n ngOnDestroy() {\n this._recordSubscription.unsubscribe()\n this._unsubClick()\n if (this._menuRouterLink && this._menuRouterLink.routerLinkWithHref) {\n this._menuRouterLink.routerLinkWithHref.ngOnDestroy()\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // console.log('ngOnChanges', changes, this, this._menuRouterLink)\n if (this._menuRouterLink && this._menuRouterLink.routerLinkWithHref) {\n this._menuRouterLink.routerLinkWithHref.ngOnChanges({})\n if (this._menuRouterLink.routerLinkWithHref.href) {\n if (getAttribute(this._elementRef.nativeElement, 'href') !== this._menuRouterLink.routerLinkWithHref.href) {\n this._renderer.setAttribute(this._elementRef.nativeElement, 'href', this._menuRouterLink.routerLinkWithHref.href)\n }\n } else {\n toggleAttribute(this._elementRef.nativeElement, 'href', false)\n }\n }\n }\n\n public _update(record: DynamicDatatableActionMenuRecord): Observable<void> {\n this._unsubClick()\n\n return from(this._getUiProps(record)).pipe(\n switchMap(uiProps => this._isAnchor()\n ? this._updateAnchorElement(record, uiProps as DynamicActionUiAnchorDef)\n : this._updateButtonElement(record, uiProps as DynamicActionUiButtonDef)\n )\n )\n }\n\n private _updateAnchorElement(\n record: DynamicDatatableActionMenuRecord,\n uiProps: DynamicActionUiAnchorDef\n ): Observable<void> {\n const _stream: Observable<any> = of(undefined)\n\n switch (uiProps.triggerType) {\n case 'link': {\n // console.log('Handle \"link\" triggerType.', uiProps)\n // this._tryInitTabIndex()\n this._tryInitBlockClick(record, uiProps)\n this._initMenuItemRouterLink(record, uiProps)\n\n break\n }\n case 'link-external': {\n // console.log('Handle \"link-external\" triggerType.', uiProps)\n // this._tryInitTabIndex()\n this._tryInitBlockClick(record, uiProps)\n if (hasProperty(uiProps, 'linkUrl')) {\n this._setAttr('href', uiProps.linkUrl)\n }\n if (hasProperty(uiProps, 'linkExtras')) {\n if (hasProperty(uiProps.linkExtras, 'target')) {\n this._setAttr('target', uiProps.linkExtras.target)\n }\n }\n // TODO: Consider making the ItemRouterLink work with external urls.\n // this._initMenuItemRouterLink(record, uiProps)\n\n break\n }\n // TODO: Unless we decide to add a route for openning assets, this would\n // be confusing to a user.\n // case 'link-asset': {\n // console.log('Handle \"link-asset\" triggerType.', uiProps)\n // // this._tryInitTabIndex()\n // this._tryInitBlockClick(record, uiProps)\n // break\n // }\n default: throw Error('[DatatableDynamicActionMenuItemDirective] ' +\n `triggerType ${uiProps.triggerType} is not valid for _updateAnchorElement().`)\n }\n\n return _stream// .pipe(mapTo(undefined))\n }\n\n private _updateButtonElement(\n record: DynamicDatatableActionMenuRecord,\n uiProps: DynamicActionUiAnchorDef | DynamicActionUiButtonDef\n ): Observable<void> {\n let _stream: Observable<any> = of(undefined)\n // this._updateClickElement(record, uiProps as DynamicActionUiButtonDef)\n switch (uiProps.triggerType) {\n case 'link-asset': {\n // console.log('Handle \"link-asset\" triggerType.', uiProps)\n // this._tryInitTabIndex()\n this._tryInitBlockClick(record, uiProps)\n _stream = _stream.pipe(switchMap(() => this._updateAssetElement(record, uiProps)))\n break\n }\n case 'click': {\n // console.log('Handle \"click\" triggerType.', uiProps)\n this._tryInitBlockClick(record, uiProps)\n _stream = _stream.pipe(switchMap(() => this._updateClickElement(record, uiProps)))\n break\n }\n default: throw Error('[DatatableDynamicActionMenuItemDirective] ' +\n `triggerType ${uiProps.triggerType} is not valid for _updateAnchorElement().`)\n }\n\n return _stream// .pipe(mapTo(undefined))\n }\n\n private _updateAssetElement(\n record: DynamicDatatableActionMenuRecord,\n uiProps: DynamicActionUiAnchorDef | DynamicActionUiButtonDef\n ): Observable<void> {\n // console.log('_updateAssetElement')\n // return of(undefined)\n // console.log('this._elementRef.nativeElement', this._elementRef.nativeElement)\n const t = fromEvent(this._elementRef.nativeElement, 'click').pipe(\n tap(event => {\n // const _context = this._getContext(record._row, record.rowAction)\n // const context = { ..._context, event, uiProps }\n // const result = this._valueHelper.evalSync(uiProps.blockClickExpr, context)\n // console.log(record, uiProps)\n // console.log('_updateClickElement click', (<any>event).button, event)\n if (this._assetReaderHelper) {\n if (uiProps.triggerType === 'link-asset' && hasProperty(uiProps, 'linkUrl')) {\n const url = uiProps.linkUrl\n let target: string | undefined\n if (hasProperty(uiProps, 'linkExtras') && hasProperty(uiProps.linkExtras, 'target')) {\n target = uiProps.linkExtras.target\n }\n this._assetReaderHelper.openLink(url, true, true, target)\n }\n }\n // if (!result) {\n // event.preventDefault()\n // event.stopPropagation()\n // }\n }),\n mapTo(undefined)\n )\n\n return of(undefined).pipe(\n // tap(() => console.log('starting _updateButtonElement')),\n switchMap(() => t),\n )\n }\n\n private _updateClickElement(\n record: DynamicDatatableActionMenuRecord,\n uiProps: DynamicActionUiButtonDef\n ): Observable<void> {\n // console.log('_updateClickElement', record, uiProps)\n // return of(undefined)\n return fromEvent(this._elementRef.nativeElement, 'click').pipe(\n switchMap(event => {\n const _context = this._getContext(record._row, record.rowAction)\n const context = { ..._context, event, uiProps }\n // console.log('click', (<any>event).button, event)\n // if (!result) {\n // event.preventDefault()\n // event.stopPropagation()\n // }\n\n return this._actionHelper.exec(uiProps._actionDef, context)\n }),\n mapTo(undefined)\n )\n }\n\n private _unsubClick() {\n if (this._clickSubscription && !this._clickSubscription.closed) {\n this._clickSubscription.unsubscribe()\n }\n }\n\n private _setAttr(attr: string, value: string) {\n this._renderer.setAttribute(this._elementRef.nativeElement, attr, value)\n }\n\n private _tryInitTabIndex() {\n if (getAttribute(this._elementRef.nativeElement, 'tabindex') === null) {\n this._renderer.setAttribute(this._elementRef.nativeElement, 'tabindex', '0')\n }\n }\n\n private _tryInitBlockClick(\n record: DynamicDatatableActionMenuRecord,\n uiProps: DynamicActionUiDef\n ) {\n this._unsubClick()\n if (hasProperty(uiProps, 'blockClickExpr')) {\n this._clickSubscription = this._blockClickExprObservable(uiProps, record).subscribe()\n }\n }\n\n private _blockClickExprObservable(\n uiProps: DynamicActionUiDef,\n record: DynamicDatatableActionMenuRecord\n ) {\n return fromEvent(this._elementRef.nativeElement, 'click').pipe(\n tap(event => {\n const _context = this._getContext(record._row, record.rowAction)\n const context = { ..._context, event, uiProps }\n const result = this._valueHelper.evalSync(uiProps.blockClickExpr, context)\n // console.log('click', result, (<any>event).button, event)\n if (!result) {\n event.preventDefault()\n event.stopPropagation()\n }\n }),\n mapTo(undefined)\n )\n }\n\n private _initMenuItemRouterLink(\n record: DynamicDatatableActionMenuRecord,\n uiProps: DynamicActionUiAnchorDef\n ) {\n this._menuRouterLink = new DatatableDynamicActionMenuItemRouterLink(\n this._router,\n this._route,\n getAttribute(this._elementRef.nativeElement, 'tabindex'),\n this._renderer,\n this._elementRef,\n this._locationStrategy\n )\n // console.log(this._menuRouterLink)\n\n this._menuRouterLink.routerLinkInput = uiProps.linkUrl as string\n\n if (hasProperty(uiProps, 'linkExtras')) {\n if (hasProperty(uiProps.linkExtras, 'target')) {\n this._menuRouterLink.target = uiProps.linkExtras.target\n }\n if (hasProperty(uiProps.linkExtras, 'queryParams')) {\n this._menuRouterLink.queryParams = uiProps.linkExtras.queryParams\n }\n if (hasProperty(uiProps.linkExtras, 'fragment')) {\n this._menuRouterLink.fragment = uiProps.linkExtras.fragment\n }\n if (hasProperty(uiProps.linkExtras, 'queryParamsHandling')) {\n this._menuRouterLink.queryParamsHandling = uiProps.linkExtras.queryParamsHandling\n }\n if (hasProperty(uiProps.linkExtras, 'preserveFragment')) {\n this._menuRouterLink.preserveFragment = uiProps.linkExtras.preserveFragment\n }\n if (hasProperty(uiProps.linkExtras, 'skipLocationChange')) {\n this._menuRouterLink.skipLocationChange = uiProps.linkExtras.skipLocationChange\n }\n if (hasProperty(uiProps.linkExtras, 'replaceUrl')) {\n this._menuRouterLink.replaceUrl = uiProps.linkExtras.replaceUrl\n }\n if (hasProperty(uiProps.linkExtras, 'state')) {\n this._menuRouterLink.state = uiProps.linkExtras.state\n }\n }\n\n this.ngOnChanges({})\n }\n\n private _isAnchor(): boolean {\n return this._elementRef.nativeElement.nodeName.toLowerCase() === 'a'\n }\n\n private _getUiProps(record: DynamicDatatableActionMenuRecord): Promise<DynamicActionUiDef> {\n const context = this._getContext(record._row, record.rowAction)\n return this._actionHelper.getUiProps(record.rowAction.action, context)\n }\n\n /** @ignore */\n private _getContext(row: DynamicDatatableRow, rowActionDef: DynamicDatatableRowAction): DynamicDatatableRowActionContext {\n return {\n row\n }\n }\n\n private _setInvalidActionState(invalid: boolean = false) {\n const element = this._elementRef.nativeElement\n toggleAttribute(element, 'disabled', invalid)\n }\n\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { BehaviorSubject, from, Observable, of } from 'rxjs'\nimport { concatMap, filter, switchMap, toArray } from 'rxjs/operators'\n\nimport { faEllipsisH } from '@fortawesome/free-solid-svg-icons'\nimport { DynamicValueHelperService } from '@theseam/ui-common/dynamic'\nimport { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DynamicDatatableRow } from '../datatable-dynamic-def'\nimport { DynamicDatatableRowActionsService } from '../dynamic-datatable-row-actions.service'\nimport { DynamicDatatableActionMenuElementTypes, DynamicDatatableActionMenuRecord } from '../models/dynamic-datatable-action-menu-record'\nimport { DynamicDatatableRowAction } from '../models/dynamic-datatable-row-action'\nimport { DynamicDatatableRowActionContext } from '../models/dynamic-datatable-row-action-context'\n\n@Component({\n selector: 'seam-datatable-dynamic-action-menu',\n templateUrl: './datatable-dynamic-action-menu.component.html',\n styleUrls: ['./datatable-dynamic-action-menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableDynamicActionMenuComponent {\n\n faEllipsisH = faEllipsisH\n\n @Input()\n get row() { return this._row.value }\n set row(value: DynamicDatatableRow | undefined) {\n this._row.next(value || undefined)\n }\n private _row = new BehaviorSubject<DynamicDatatableRow | undefined>(undefined)\n\n @Input()\n get actionDefs() { return this._actionDefs.value }\n set actionDefs(value: DynamicDatatableRowAction[]) {\n this._actionDefs.next(value || [])\n }\n private _actionDefs = new BehaviorSubject<DynamicDatatableRowAction[]>([])\n\n _menuRecords$: Observable<DynamicDatatableActionMenuRecord[]>\n\n /** @ignore */\n _actionMenuPositions = [\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 _valueHelper: DynamicValueHelperService,\n private _dynamicRowActions: DynamicDatatableRowActionsService\n ) {\n // this._menuRecords$ = combineLatest([ this._row, this._actionDefs ]).pipe(\n // switchMap(([ row, actionDefs ]) => !!row ? this._mapRecords(row, actionDefs) : of([]))\n // )\n this._menuRecords$ = this._row.pipe(\n switchMap(row => row\n ? this._dynamicRowActions.rowActions(row).pipe(\n switchMap(actionDefs => this._mapRecords(row, actionDefs))\n )\n : of([])\n ),\n // tap(v => console.log('actions', v))\n )\n\n // this._menuRecords$.subscribe()\n }\n\n // TODO: Consider moving this to `DynamicDatatableRowActionsService`.\n private _mapRecords<A extends DynamicDatatableRowAction>(\n row: DynamicDatatableRow,\n actionDefs: A[]\n ): Observable<DynamicDatatableActionMenuRecord[]> {\n return from(actionDefs).pipe(\n concatMap(actionDef => {\n return (async () => {\n const _rowAction: DynamicDatatableRowAction = {\n ...actionDef\n }\n\n const context = this._getRowActionContext(row, actionDef)\n\n if (hasProperty(_rowAction, 'hidden')) {\n _rowAction.hidden = await this._valueHelper.eval(_rowAction.hidden, context)\n if (_rowAction.hidden) {\n return undefined\n }\n }\n\n _rowAction.label = await this._valueHelper.eval(actionDef.label, context)\n\n if (hasProperty(_rowAction, 'disabled')) {\n _rowAction.disabled = await this._valueHelper.eval(_rowAction.disabled, context)\n }\n\n const record: DynamicDatatableActionMenuRecord = {\n _row: row,\n _def: actionDef,\n rowAction: _rowAction,\n elementType: this._expectedElementType(actionDef)\n }\n\n return record\n })()\n }),\n filter(notNullOrUndefined),\n toArray()\n )\n }\n\n /** @ignore */\n private _getRowActionContext(\n row: DynamicDatatableRow,\n rowActionDef: DynamicDatatableRowAction\n ): DynamicDatatableRowActionContext {\n return {\n row\n }\n }\n\n private _expectedElementType(def: DynamicDatatableRowAction): DynamicDatatableActionMenuElementTypes {\n const action = def.action\n\n if (action.type === 'link') {\n if (hasProperty(action as any, 'asset')) {\n return 'button'\n }\n return 'a'\n }\n\n return 'button'\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 record of _menuRecords$ | async\">\n\n <a *ngIf=\"record.elementType === 'a'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</a>\n\n <button *ngIf=\"record.elementType === 'button'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\">{{ record.rowAction.label }}</button>\n\n </ng-container>\n\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 [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 [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n [state]=\"item.state\"\n [routerLink]=\"item.routerLink\"\n [target]=\"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 (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]=\"$any(_actionMenuPositions)\"\n title=\"Row Actions\">\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n</button>\n","import { ComponentPortal, PortalInjector } from '@angular/cdk/portal'\nimport { ChangeDetectionStrategy, Component, Injector, Input, OnInit } from '@angular/core'\n\nimport { THESEAM_DATA_FILTER_OPTIONS } from '@theseam/ui-common/data-filters'\nimport type { ComponentType } from '@theseam/ui-common/models'\n\n@Component({\n selector: 'seam-datatable-dynamic-filter-container',\n templateUrl: './datatable-dynamic-filter-container.component.html',\n styleUrls: ['./datatable-dynamic-filter-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableDynamicFilterContainerComponent<C> implements OnInit {\n\n @Input()\n set filterComponent(value: ComponentType<C> | undefined | null) {\n this._filterComponent = value\n // if (this._filterComponent !== value) {\n // this._setPortal(value)\n // }\n }\n get filterComponent() { return this._filterComponent }\n private _filterComponent: ComponentType<C> | undefined | null\n\n @Input() options: any\n\n _portal: ComponentPortal<C> | null = null\n\n constructor(\n private _injector: Injector\n ) { }\n\n ngOnInit() {\n if (this.filterComponent) {\n this._setPortal(this.filterComponent)\n }\n }\n\n private _setPortal(component: ComponentType<C>) {\n if (this._portal) {\n this._portal = null\n }\n\n if (component) {\n this._portal = new ComponentPortal(component, undefined, this._createInjector())\n } else {\n this._portal = null\n }\n }\n\n private _createInjector(): PortalInjector {\n return new PortalInjector(this._injector, new WeakMap <any, any>([\n [ THESEAM_DATA_FILTER_OPTIONS, this.options ]\n ]))\n }\n\n}\n","<ng-template [cdkPortalOutlet]=\"_portal\"></ng-template>\n","import { InjectionToken } from '@angular/core'\n\nimport { IDatatableDynamicMenuBarItemManifest } from './datatable-dynamic-menu-bar-item-manifest'\n\nexport const THESEAM_DATATABLE_DYNAMIC_MENUBAR_ITEM = new InjectionToken<IDatatableDynamicMenuBarItemManifest>(\n 'IDatatableDynamicMenuBarItemManifest'\n)\n","import { ComponentPortal, PortalInjector } from '@angular/cdk/portal'\nimport { ChangeDetectionStrategy, Component, Inject, Injector, Input, Optional } from '@angular/core'\nimport { BehaviorSubject, Observable } from 'rxjs'\nimport { map, switchMap } from 'rxjs/operators'\n\nimport { DynamicValueHelperService } from '@theseam/ui-common/dynamic'\nimport { TheSeamDynamicComponentLoader } from '@theseam/ui-common/dynamic-component-loader'\nimport { hasProperty } from '@theseam/ui-common/utils'\n\nimport { IDatatableDynamicMenuBarItemManifest } from '../datatable-dynamic-menu-bar-item-manifest'\nimport { THESEAM_DATATABLE_DYNAMIC_MENUBAR_ITEM } from '../datatable-dynamic-menu-bar-token'\nimport {\n DynamicDatatableMenuBar,\n DynamicDatatableMenuBarColumn,\n DynamicDatatableMenuBarItem,\n DynamicDatatableMenuBarRow,\n DynamicDatatableMenuBarRowLayoutTriColumn\n} from '../models/dynamic-datatable-menu-bar'\n\nexport interface IDatatableDynamicMenuBarContentItem {\n // styles?: string | string[]\n // cssClass?: string | string[]\n portal?: ComponentPortal<object>\n // component?: string | ComponentType<{}>\n // config?: any\n}\n\nexport interface IDatatableDynamicMenuBarContentColumn {\n styles?: string | string[]\n cssClass?: string | string[]\n items?: IDatatableDynamicMenuBarContentItem[]\n}\n\nexport interface IDatatableDynamicMenuBarContentRowLayoutTriColumn {\n columnLeft?: IDatatableDynamicMenuBarContentColumn\n columnCenter?: IDatatableDynamicMenuBarContentColumn\n columnRight?: IDatatableDynamicMenuBarContentColumn\n}\n\nexport interface IDatatableDynamicMenuBarContentRow {\n styles?: string | string[]\n cssClass?: string | string[]\n priority?: number\n layoutType?: string\n layout?: IDatatableDynamicMenuBarContentRowLayoutTriColumn\n}\n\nexport interface IDatatableDynamicMenuBarContentRowContext {\n row: DynamicDatatableMenuBarRow\n}\n\nexport interface IDatatableDynamicMenuBarContentColumnContext {\n column: DynamicDatatableMenuBarColumn\n row: DynamicDatatableMenuBarRow\n}\n\nexport interface IDatatableDynamicMenuBarContentItemContext {\n item: DynamicDatatableMenuBarItem\n row: DynamicDatatableMenuBarRow\n column: DynamicDatatableMenuBarColumn\n}\n\n@Component({\n selector: 'seam-datatable-dynamic-menu-bar-content',\n templateUrl: './datatable-dynamic-menu-bar-content.component.html',\n styleUrls: ['./datatable-dynamic-menu-bar-content.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableDynamicMenuBarContentComponent {\n\n private readonly _def = new BehaviorSubject<DynamicDatatableMenuBar | undefined>(undefined)\n\n @Input()\n set def(value: DynamicDatatableMenuBar | undefined) { this._def.next(value) }\n get def(): DynamicDatatableMenuBar | undefined { return this._def.value }\n\n public readonly def$: Observable<DynamicDatatableMenuBar | undefined>\n\n readonly _rows$: Observable<IDatatableDynamicMenuBarContentRow[]>\n\n constructor(\n private readonly _valueHelper: DynamicValueHelperService,\n private readonly _dynamicComponentLoader: TheSeamDynamicComponentLoader,\n private readonly _injector: Injector,\n @Optional() @Inject(THESEAM_DATATABLE_DYNAMIC_MENUBAR_ITEM)\n private readonly _menuBarItemManifests?: IDatatableDynamicMenuBarItemManifest[]\n ) {\n this.def$ = this._def.asObservable()\n // .pipe(tap(v => console.log('def$', v)))\n\n this._rows$ = this.def$.pipe(switchMap(def => this._mapRows((def && def.rows) || [])))\n // .pipe(tap(v => console.log('_rows$', v)))\n }\n\n private _mapRows(rows: DynamicDatatableMenuBarRow[]): Promise<IDatatableDynamicMenuBarContentRow[]> {\n return Promise.all(rows.map(r => this._mapRow(r)))\n }\n\n private async _mapRow(row: DynamicDatatableMenuBarRow): Promise<IDatatableDynamicMenuBarContentRow> {\n const result: IDatatableDynamicMenuBarContentRow = { }\n const context = this._createRowContext(row)\n\n if (hasProperty(row, 'styles')) {\n result.styles = await this._valueHelper.eval(row.styles, context)\n }\n\n if (hasProperty(row, 'cssClass')) {\n result.cssClass = await this._valueHelper.eval(row.cssClass, context)\n }\n\n if (hasProperty(row, 'priority')) {\n result.priority = await this._valueHelper.eval(row.priority, context)\n }\n\n result.layoutType = row.layout.type\n result.layout = await this._mapRowLayout(row.layout, row)\n\n return result\n }\n\n private async _mapRowLayout(\n layout: DynamicDatatableMenuBarRowLayoutTriColumn,\n row: DynamicDatatableMenuBarRow\n ): Promise<IDatatableDynamicMenuBarContentRowLayoutTriColumn> {\n const result: IDatatableDynamicMenuBarContentRowLayoutTriColumn = { }\n\n if (hasProperty(layout, 'columnLeft')) {\n result.columnLeft = await this._mapColumn(layout.columnLeft, row)\n }\n\n if (hasProperty(layout, 'columnCenter')) {\n result.columnCenter = await this._mapColumn(layout.columnCenter, row)\n }\n\n if (hasProperty(layout, 'columnRight')) {\n result.columnRight = await this._mapColumn(layout.columnRight, row)\n }\n\n return result\n }\n\n private async _mapColumn(\n column: DynamicDatatableMenuBarColumn,\n row: DynamicDatatableMenuBarRow\n ): Promise<IDatatableDynamicMenuBarContentColumn> {\n const result: IDatatableDynamicMenuBarContentColumn = { }\n const context = this._createColumnContext(column, row)\n\n if (hasProperty(column, 'styles')) {\n result.styles = await this._valueHelper.eval(column.styles, context)\n }\n\n if (hasProperty(column, 'cssClass')) {\n result.cssClass = await this._valueHelper.eval(column.cssClass, context)\n }\n\n result.items = await Promise.all(column.items.map(v => this._mapItem(v, row, column)))\n\n return result\n }\n\n private async _mapItem(\n item: DynamicDatatableMenuBarItem,\n row: DynamicDatatableMenuBarRow,\n column: DynamicDatatableMenuBarColumn\n ): Promise<IDatatableDynamicMenuBarContentItem> {\n const result: IDatatableDynamicMenuBarContentItem = { }\n const context = this._createItemContext(item, row, column)\n\n // if (hasProperty(item, 'styles')) {\n // result.styles = await this._valueHelper.eval(item.styles, context)\n // }\n\n // if (hasProperty(item, 'cssClass')) {\n // result.cssClass = await this._valueHelper.eval(item.cssClass, context)\n // }\n\n if (hasProperty(item, 'component')) {\n // result.component = await this._valueHelper.eval(item.component, context)\n const component = await this._valueHelper.eval(item.component, context)\n\n let data: any\n if (hasProperty(item, 'data')) {\n // result.data = await this._valueHelper.eval(item.data, context)\n // console.log('%cdata', 'color:cyan', item.data)\n data = await this._valueHelper.eval(item.data, context)\n // console.log('%cdata', 'color:limegreen', data)\n }\n\n result.portal = await this._getComponentPortal(component, data)\n }\n\n return result\n }\n\n private _createRowContext(row: DynamicDatatableMenuBarRow): IDatatableDynamicMenuBarContentRowContext {\n return {\n row\n }\n }\n\n private _createColumnContext(\n column: DynamicDatatableMenuBarColumn,\n row: DynamicDatatableMenuBarRow\n ): IDatatableDynamicMenuBarContentColumnContext {\n return {\n row,\n column\n }\n }\n\n private _createItemContext(\n item: DynamicDatatableMenuBarItem,\n row: DynamicDatatableMenuBarRow,\n column: DynamicDatatableMenuBarColumn\n ): IDatatableDynamicMenuBarContentItemContext {\n return {\n item,\n row,\n column\n }\n }\n\n private async _getComponentPortal(component: string, data?: any): Promise<ComponentPortal<object> | undefined> {\n const manifest = (this._menuBarItemManifests || []).find(m => m.name === component)\n\n if (!manifest) {\n // TODO: Make sure the component is skipped instead of erroring outside of dev mode.\n throw Error(`MenuBar manifest for '${component}' not found.`)\n }\n\n // TODO: Create a new injector with the data injected\n let injector = this._injector\n if (manifest.dataToken) {\n injector = new PortalInjector(this._injector, new WeakMap([\n [manifest.dataToken, data]\n ]))\n }\n\n if (typeof manifest.component === 'string') {\n this._dynamicComponentLoader.getComponentFactory<object>(manifest.component).pipe(\n map(componentFactory => {\n return new ComponentPortal(\n componentFactory.componentType,\n null,\n injector,\n (componentFactory as any /* ComponentFactoryBoundToModule */).ngModule.componentFactoryResolver\n )\n })\n ).toPromise()\n } else {\n return new ComponentPortal(manifest.component, null, injector, null)\n }\n }\n\n}\n","<seam-datatable-menu-bar-row *ngFor=\"let row of _rows$ | async; last as isLast\"\n [class.mb-2]=\"!isLast\"\n [ngClass]=\"$any(row.cssClass)\"\n [ngStyle]=\"$any(row.styles)\">\n <ng-container *ngIf=\"row.layoutType === 'tri-column'\">\n <seam-datatable-menu-bar-column-left *ngIf=\"row.layout?.columnLeft\"\n [ngClass]=\"$any(row.layout).cssClass\"\n [ngStyle]=\"$any(row.layout).styles\">\n <ng-container *ngIf=\"row.layout?.columnLeft?.items\">\n <ng-container *ngFor=\"let item of row.layout?.columnLeft?.items\">\n <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template>\n </ng-container>\n </ng-container>\n </seam-datatable-menu-bar-column-left>\n <seam-datatable-menu-bar-column-center *ngIf=\"row.layout?.columnCenter\"\n [ngClass]=\"$any(row.layout).cssClass\"\n [ngStyle]=\"$any(row.layout).styles\">\n <ng-container *ngIf=\"row.layout?.columnCenter?.items\">\n <ng-container *ngFor=\"let item of row.layout?.columnCenter?.items\">\n <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template>\n </ng-container>\n </ng-container>\n </seam-datatable-menu-bar-column-center>\n <seam-datatable-menu-bar-column-right *ngIf=\"row.layout?.columnRight\"\n [ngClass]=\"$any(row.layout).cssClass\"\n [ngStyle]=\"$any(row.layout).styles\">\n <ng-container *ngIf=\"row.layout?.columnRight?.items\">\n <ng-container *ngFor=\"let item of row.layout?.columnRight?.items\">\n <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template>\n </ng-container>\n </ng-container>\n </seam-datatable-menu-bar-column-right>\n </ng-container>\n</seam-datatable-menu-bar-row>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { Observable } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\nimport { IDataExporter } from '@theseam/ui-common/data-exporter'\n\nimport {\n DatatableDynamicDef,\n DynamicDatatableOptions\n} from './datatable-dynamic-def'\nimport { DynamicDatatableDefService } from './dynamic-datatable-def.service'\nimport { DynamicDatatableRowActionsService } from './dynamic-datatable-row-actions.service'\nimport { DynamicDatatableFilterMenuItem } from './models/dynamic-datatable-filter-menu-item'\nimport { DynamicDatatableMenuBar } from './models/dynamic-datatable-menu-bar'\n\n/**\n * # EXPERIMENTAL\n *\n * NOTE: This component is still experimental. When stable all standard\n * datatables must use this component, unless there is a good reason not to, in\n * our apps.\n *\n * ----------------------------------------------------------------------------\n *\n * Datatable that is built from a json definition.\n *\n * All standard datatables in our apps must use this component, unless there is\n * a good reason not to. If a standard datatable does not use this component\n * then an explaination comment needs to be clearly provided in the code to\n * avoid getting migrated to this component.\n *\n * A few reasons this component should to be used:\n * - We can, more easily, control what a datatable in our app does by requiring\n * the definition follow a json schema, instead of having full scripting\n * access available to the developer.\n * + By using json we can maintain the tables from any external app/language\n * that can produce a json string.\n * + More scripting access often leads to different hacks across the tables\n * that should have just been supported by this component if it is a feature\n * a datatable should be able to do in an app of ours.\n * - We can allow any of our tables to be configured by the server.\n * + By supporting configuration on the server we can change the tables\n * without a new build and do things like allowing non-developers/clients to\n * maintain the tables functionality.\n */\n@Component({\n selector: 'seam-datatable-dynamic',\n templateUrl: './datatable-dynamic.component.html',\n styleUrls: ['./datatable-dynamic.component.scss'],\n providers: [\n DynamicDatatableDefService,\n DynamicDatatableRowActionsService\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatatableDynamicComponent {\n\n /** The `DatatableDynamicDef` that defines the datatable. */\n @Input() set def(value: DatatableDynamicDef | undefined | null) {\n this._dynamicDef.setDef(value || undefined)\n }\n\n /**\n * Observes whether the datatable has a def.\n * @ignore\n */\n _hasDef$: Observable<boolean>\n\n /**\n * Observes whether the datatable has a menu bar.\n */\n menuBar$: Observable<DynamicDatatableMenuBar | undefined>\n\n /**\n * The available exporters.\n * @ignore\n */\n _exporters$: Observable<IDataExporter[]>\n\n /**\n * The 'common' type filter menu items.\n * @ignore\n */\n _commonFilterMenuItems$: Observable<DynamicDatatableFilterMenuItem[]>\n\n /**\n * Observes whether the datatable has a 'full-search' menu item.\n * @ignore\n */\n _hasFullSearch$: Observable<boolean>\n\n /**\n * Observes whether the datatable has a filter menu.\n * @ignore\n */\n _hasFilterMenu$: Observable<boolean>\n\n /**\n * Observes datatable options.\n * @ignore\n */\n _options$: Observable<DynamicDatatableOptions | undefined>\n\n /**\n * TODO: Implement def columns parser.\n * @ignore\n */\n _tmp_columns$: Observable<any>\n\n /**\n * TODO: Implement def rows parser.\n * @ignore\n */\n _tmp_rows$: Observable<any>\n\n constructor(\n private readonly _dynamicDef: DynamicDatatableDefService\n ) {\n this._hasDef$ = this._dynamicDef.def$.pipe(map(def => !!def))\n\n this.menuBar$ = this._dynamicDef.menuBar$\n\n this._exporters$ = this._dynamicDef.exporters$\n\n this._commonFilterMenuItems$ = this._dynamicDef.filterMenuItems$\n .pipe(map(f => f.filter(_f => _f.type === 'common')))\n\n this._hasFullSearch$ = this._dynamicDef.filterMenuItems$\n .pipe(map(f => !!f.find(_f => _f.type === 'full-search')))\n\n this._hasFilterMenu$ = this._dynamicDef.hasFilterMenu$\n\n this._options$ = this._dynamicDef.options$\n\n this._tmp_columns$ = this._dynamicDef.def$.pipe(\n map(def => def ? def.columns : [])\n )\n\n this._tmp_rows$ = this._dynamicDef.def$.pipe(\n map(def => def ? def.rows : []),\n // tap(v => console.log('_tmp_rows$', v))\n )\n }\n\n}\n","<ng-container *ngIf=\"_hasDef$ | async\">\n <seam-datatable *ngIf=\"_options$ | async as opts\"\n class=\"w-100 h-100\"\n [columns]=\"_tmp_columns$ | async\"\n [rows]=\"_tmp_rows$ | async\"\n [virtualization]=\"opts.virtualization\">\n\n <seam-datatable-menu-bar *ngIf=\"menuBar$ | async as menuBar\">\n <seam-datatable-dynamic-menu-bar-content [def]=\"menuBar\"></seam-datatable-dynamic-menu-bar-content>\n </seam-datatable-menu-bar>\n <!-- <seam-datatable-menu-bar *ngIf=\"_hasFilterMenu$ | async\">\n <div class=\"d-flex flex-row pb-2\">\n <div class=\"d-flex flex-row justify-content-end flex-grow-1\">\n <seam-data-filter-search seamDatatableFilter *ngIf=\"_hasFullSearch$\"></seam-data-filter-search>\n </div>\n </div>\n <div class=\"d-flex flex-row\">\n <div class=\"d-flex justify-content-center flex-grow-1\">\n <ng-container *ngFor=\"let r of _commonFilterMenuItems$ | async; let isFirst = first\">\n <seam-datatable-dynamic-filter-container\n [class.ml-1]=\"!isFirst\"\n [filterComponent]=\"r.component\"\n [options]=\"r.options\">\n </seam-datatable-dynamic-filter-container>\n </ng-container>\n </div>\n <seam-datatable-export-button *ngIf=\"_exporters$ | async as exporters\"\n [exporters]=\"exporters\">\n </seam-datatable-export-button>\n </div>\n </seam-datatable-menu-bar> -->\n\n <ng-template seamDatatableRowActionItem let-row>\n <seam-datatable-dynamic-action-menu [row]=\"row\"></seam-datatable-dynamic-action-menu>\n </ng-template>\n\n </seam-datatable>\n</ng-container>\n","import { PortalModule } from '@angular/cdk/portal'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\nimport { TheSeamDataExporterModule } from '@theseam/ui-common/data-exporter'\nimport { TheSeamDataFiltersModule } from '@theseam/ui-common/data-filters'\nimport { TheSeamDatatableModule } from '@theseam/ui-common/datatable'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamMenuModule } from '@theseam/ui-common/menu'\nimport { TheSeamSharedModule } from '@theseam/ui-common/shared'\nimport { TheSeamTableCellTypesModule } from '@theseam/ui-common/table-cell-types'\n\nimport { DatatableDynamicActionMenuComponent } from './datatable-dynamic-action-menu/datatable-dynamic-action-menu.component'\nimport { DatatableDynamicFilterContainerComponent } from './datatable-dynamic-filter-container/datatable-dynamic-filter-container.component'\nimport { DatatableDynamicMenuBarContentComponent } from './datatable-dynamic-menu-bar-content/datatable-dynamic-menu-bar-content.component'\nimport { DatatableDynamicComponent } from './datatable-dynamic.component'\nimport { DatatableDynamicActionMenuItemDirective } from './directives/datatable-dynamic-action-menu-item.directive'\n\n@NgModule({\n declarations: [\n DatatableDynamicComponent,\n DatatableDynamicFilterContainerComponent,\n DatatableDynamicActionMenuComponent,\n DatatableDynamicActionMenuItemDirective,\n DatatableDynamicMenuBarContentComponent,\n ],\n imports: [\n CommonModule,\n TheSeamSharedModule,\n TheSeamDatatableModule,\n TheSeamTableCellTypesModule,\n TheSeamDataExporterModule,\n TheSeamDataFiltersModule,\n TheSeamIconModule,\n PortalModule,\n RouterModule,\n TheSeamMenuModule,\n TheSeamButtonsModule\n ],\n exports: [\n DatatableDynamicComponent,\n TheSeamDatatableModule,\n DatatableDynamicActionMenuItemDirective\n ]\n})\nexport class TheSeamDatatableDynamicModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.DynamicDatatableDefService","i4","i2.DynamicDatatableRowActionsService","i3","i6.DatatableDynamicActionMenuItemDirective","i1","i5","i1.DynamicDatatableDefService","i2","i4.DatatableDynamicActionMenuComponent","i5.DatatableDynamicMenuBarContentComponent"],"mappings":"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"}