@theseam/ui-common 1.0.0-beta.6 → 1.0.0-beta.8

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 (149) hide show
  1. package/breadcrumbs/index.d.ts +1 -2
  2. package/buttons/index.d.ts +20 -13
  3. package/datatable/index.d.ts +8 -8
  4. package/dynamic/index.d.ts +5 -5
  5. package/fesm2022/theseam-ui-common-asset-reader.mjs +28 -29
  6. package/fesm2022/theseam-ui-common-asset-reader.mjs.map +1 -1
  7. package/fesm2022/theseam-ui-common-breadcrumbs.mjs +25 -31
  8. package/fesm2022/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  9. package/fesm2022/theseam-ui-common-buttons.mjs +108 -66
  10. package/fesm2022/theseam-ui-common-buttons.mjs.map +1 -1
  11. package/fesm2022/theseam-ui-common-card.mjs +21 -21
  12. package/fesm2022/theseam-ui-common-card.mjs.map +1 -1
  13. package/fesm2022/theseam-ui-common-carousel.mjs +28 -30
  14. package/fesm2022/theseam-ui-common-carousel.mjs.map +1 -1
  15. package/fesm2022/theseam-ui-common-checkbox.mjs +27 -27
  16. package/fesm2022/theseam-ui-common-checkbox.mjs.map +1 -1
  17. package/fesm2022/theseam-ui-common-confirm-dialog.mjs +23 -27
  18. package/fesm2022/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  19. package/fesm2022/theseam-ui-common-core.mjs +31 -11
  20. package/fesm2022/theseam-ui-common-core.mjs.map +1 -1
  21. package/fesm2022/theseam-ui-common-data-exporter.mjs +18 -19
  22. package/fesm2022/theseam-ui-common-data-exporter.mjs.map +1 -1
  23. package/fesm2022/theseam-ui-common-data-filters.mjs +80 -64
  24. package/fesm2022/theseam-ui-common-data-filters.mjs.map +1 -1
  25. package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs +51 -49
  26. package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs.map +1 -1
  27. package/fesm2022/theseam-ui-common-datatable-dynamic.mjs +145 -112
  28. package/fesm2022/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  29. package/fesm2022/theseam-ui-common-datatable.mjs +592 -388
  30. package/fesm2022/theseam-ui-common-datatable.mjs.map +1 -1
  31. package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs +12 -14
  32. package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
  33. package/fesm2022/theseam-ui-common-dynamic.mjs +60 -48
  34. package/fesm2022/theseam-ui-common-dynamic.mjs.map +1 -1
  35. package/fesm2022/theseam-ui-common-footer-bar.mjs +9 -15
  36. package/fesm2022/theseam-ui-common-footer-bar.mjs.map +1 -1
  37. package/fesm2022/theseam-ui-common-form-field-error.mjs +60 -43
  38. package/fesm2022/theseam-ui-common-form-field-error.mjs.map +1 -1
  39. package/fesm2022/theseam-ui-common-form-field.mjs +120 -74
  40. package/fesm2022/theseam-ui-common-form-field.mjs.map +1 -1
  41. package/fesm2022/theseam-ui-common-framework.mjs +669 -543
  42. package/fesm2022/theseam-ui-common-framework.mjs.map +1 -1
  43. package/fesm2022/theseam-ui-common-google-maps.mjs +206 -149
  44. package/fesm2022/theseam-ui-common-google-maps.mjs.map +1 -1
  45. package/fesm2022/theseam-ui-common-graphql.mjs +252 -195
  46. package/fesm2022/theseam-ui-common-graphql.mjs.map +1 -1
  47. package/fesm2022/theseam-ui-common-icon.mjs +125 -89
  48. package/fesm2022/theseam-ui-common-icon.mjs.map +1 -1
  49. package/fesm2022/theseam-ui-common-layout.mjs +18 -26
  50. package/fesm2022/theseam-ui-common-layout.mjs.map +1 -1
  51. package/fesm2022/theseam-ui-common-loading.mjs +19 -28
  52. package/fesm2022/theseam-ui-common-loading.mjs.map +1 -1
  53. package/fesm2022/theseam-ui-common-menu.mjs +124 -95
  54. package/fesm2022/theseam-ui-common-menu.mjs.map +1 -1
  55. package/fesm2022/theseam-ui-common-modal.mjs +177 -129
  56. package/fesm2022/theseam-ui-common-modal.mjs.map +1 -1
  57. package/fesm2022/theseam-ui-common-models.mjs +3 -3
  58. package/fesm2022/theseam-ui-common-models.mjs.map +1 -1
  59. package/fesm2022/theseam-ui-common-navigation-reload.mjs +13 -11
  60. package/fesm2022/theseam-ui-common-navigation-reload.mjs.map +1 -1
  61. package/fesm2022/theseam-ui-common-popover.mjs +81 -88
  62. package/fesm2022/theseam-ui-common-popover.mjs.map +1 -1
  63. package/fesm2022/theseam-ui-common-progress.mjs +15 -19
  64. package/fesm2022/theseam-ui-common-progress.mjs.map +1 -1
  65. package/fesm2022/theseam-ui-common-rich-text.mjs +65 -52
  66. package/fesm2022/theseam-ui-common-rich-text.mjs.map +1 -1
  67. package/fesm2022/theseam-ui-common-scrollbar.mjs +12 -9
  68. package/fesm2022/theseam-ui-common-scrollbar.mjs.map +1 -1
  69. package/fesm2022/theseam-ui-common-services.mjs +41 -26
  70. package/fesm2022/theseam-ui-common-services.mjs.map +1 -1
  71. package/fesm2022/theseam-ui-common-shared.mjs +123 -67
  72. package/fesm2022/theseam-ui-common-shared.mjs.map +1 -1
  73. package/fesm2022/theseam-ui-common-storage.mjs +9 -6
  74. package/fesm2022/theseam-ui-common-storage.mjs.map +1 -1
  75. package/fesm2022/theseam-ui-common-story-helpers.mjs +148 -86
  76. package/fesm2022/theseam-ui-common-story-helpers.mjs.map +1 -1
  77. package/fesm2022/theseam-ui-common-tabbed.mjs +43 -39
  78. package/fesm2022/theseam-ui-common-tabbed.mjs.map +1 -1
  79. package/fesm2022/theseam-ui-common-table-cell-type.mjs +34 -38
  80. package/fesm2022/theseam-ui-common-table-cell-type.mjs.map +1 -1
  81. package/fesm2022/theseam-ui-common-table-cell-types.mjs +182 -144
  82. package/fesm2022/theseam-ui-common-table-cell-types.mjs.map +1 -1
  83. package/fesm2022/theseam-ui-common-table.mjs +50 -39
  84. package/fesm2022/theseam-ui-common-table.mjs.map +1 -1
  85. package/fesm2022/theseam-ui-common-tel-input.mjs +98 -63
  86. package/fesm2022/theseam-ui-common-tel-input.mjs.map +1 -1
  87. package/fesm2022/theseam-ui-common-testing.mjs +13 -10
  88. package/fesm2022/theseam-ui-common-testing.mjs.map +1 -1
  89. package/fesm2022/theseam-ui-common-tiled-select.mjs +54 -50
  90. package/fesm2022/theseam-ui-common-tiled-select.mjs.map +1 -1
  91. package/fesm2022/theseam-ui-common-toggle-edit.mjs +41 -37
  92. package/fesm2022/theseam-ui-common-toggle-edit.mjs.map +1 -1
  93. package/fesm2022/theseam-ui-common-toggle-group.mjs +30 -31
  94. package/fesm2022/theseam-ui-common-toggle-group.mjs.map +1 -1
  95. package/fesm2022/theseam-ui-common-tooltip.mjs +225 -66
  96. package/fesm2022/theseam-ui-common-tooltip.mjs.map +1 -1
  97. package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs +14 -12
  98. package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
  99. package/fesm2022/theseam-ui-common-utils.mjs +113 -77
  100. package/fesm2022/theseam-ui-common-utils.mjs.map +1 -1
  101. package/fesm2022/theseam-ui-common-validators.mjs +10 -9
  102. package/fesm2022/theseam-ui-common-validators.mjs.map +1 -1
  103. package/fesm2022/theseam-ui-common-vertical-list-filter.mjs +39 -17
  104. package/fesm2022/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
  105. package/fesm2022/theseam-ui-common-viewers.mjs +79 -56
  106. package/fesm2022/theseam-ui-common-viewers.mjs.map +1 -1
  107. package/fesm2022/theseam-ui-common-widget.mjs +288 -314
  108. package/fesm2022/theseam-ui-common-widget.mjs.map +1 -1
  109. package/framework/base-layout/base-layout.component.scss +9 -4
  110. package/framework/base-layout/styles/_variables.scss +4 -9
  111. package/framework/dashboard/dashboard-widgets/dashboard-widgets.component.scss +6 -4
  112. package/framework/index.d.ts +6 -6
  113. package/framework/nav/nav-item/nav-item.component.scss +7 -6
  114. package/framework/nav/styles/_themes/light/_variables.scss +21 -5
  115. package/framework/nav/styles/_themes/primary/_variables.scss +21 -5
  116. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +5 -2
  117. package/framework/side-nav/styles/_themes/light/_variables.scss +5 -1
  118. package/framework/side-nav/styles/_themes/primary/_variables.scss +25 -5
  119. package/graphql/index.d.ts +5 -5
  120. package/modal/README.md +5 -5
  121. package/modal/index.d.ts +1 -1
  122. package/models/index.d.ts +1 -1
  123. package/package.json +41 -41
  124. package/popover/index.d.ts +0 -2
  125. package/progress/progress-circle/styles/_variables.scss +15 -3
  126. package/story-helpers/index.d.ts +11 -1
  127. package/styles/bootstrap/_bootstrap.scss +34 -34
  128. package/styles/bootstrap/_bs-styles.scss +4 -8
  129. package/styles/bootstrap/_bs-utilities.scss +4 -4
  130. package/styles/bootstrap/_bs-variables.scss +65 -70
  131. package/styles/common/_forms.scss +9 -10
  132. package/styles/common/_global.scss +0 -1
  133. package/styles/common/_hacks.scss +1 -1
  134. package/styles/common/_table.scss +0 -1
  135. package/styles/common/_text.scss +3 -1
  136. package/styles/theme.scss +1 -1
  137. package/styles/vendor/ng-select/_ng-select-bs4.scss +292 -294
  138. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +63 -32
  139. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +37 -10
  140. package/styles/vendor/ngx-datatable/_themes/material/_variables.scss +3 -1
  141. package/styles/vendor/quill/_quill.scss +15 -9
  142. package/tel-input/README.md +27 -27
  143. package/utils/index.d.ts +3 -3
  144. package/viewers/index.d.ts +9 -2
  145. package/widget/_widget-theme.scss +1 -1
  146. package/widget/styles/_variables.scss +2 -2
  147. package/widget/widget/widget.component.scss +0 -2
  148. package/widget/widget-content-components/widget-tile/widget-tile.component.scss +1 -3
  149. package/widget/widget-footer/widget-footer.component.scss +0 -1
@@ -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 standalone: false,\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 } 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 standalone: false,\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(): Injector {\n return Injector.create({ parent: this._injector, providers: [\n { provide: THESEAM_DATA_FILTER_OPTIONS, useValue: 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 } 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 standalone: false,\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 = Injector.create({ parent: this._injector, providers: [\n { provide: manifest.dataToken, useValue: 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 )\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 standalone: false,\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 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 DatatableDynamicActionMenuItemDirective,\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(def: DatatableDynamicDef) {\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 {\n IDataExporter,\n THESEAM_DATA_EXPORTER,\n} from '@theseam/ui-common/data-exporter'\nimport {\n IDataFilter,\n THESEAM_DATA_FILTER_DEF,\n} 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 * @deprecated\n * @ignore\n */\n private _dataExporters: IDataExporter[]\n\n /**\n * @deprecated\n * @ignore\n */\n private _dataFilters: {\n name: string\n component: ComponentType<IDataFilter>\n }[]\n\n /** @ignore */\n private readonly _defSubject = new BehaviorSubject<\n DatatableDynamicDef | undefined\n >(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)\n 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) {\n return of(false)\n }\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':\n return of(true)\n case 'hidden':\n 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) =>\n notNullOrUndefined(def) && hasProperty(def, 'menuBar')\n ? def.menuBar\n : undefined,\n ),\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) {\n setDynamicDatatableDefDefaults(def)\n }\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(\n def: DatatableDynamicDef,\n ): DynamicDatatableFilterMenuItem[] {\n if (\n !def.filterMenu ||\n !def.filterMenu.filters ||\n !Array.isArray(def.filterMenu.filters)\n ) {\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) {\n return { ...f, component: _df.component }\n }\n })\n .filter(notNullOrUndefined)\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 constructor(\n private _valueHelper: DynamicValueHelperService,\n private _dynamicDef: DynamicDatatableDefService,\n ) {}\n\n /**\n * Observe actions for specified row\n */\n public rowActions(\n row: DynamicDatatableRow,\n ): Observable<DynamicDatatableRowAction[]> {\n return this._dynamicDef.def$.pipe(\n map((def) => (def && def.rowActions ? def.rowActions || [] : [])),\n switchMap((rowActions) =>\n 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(\n rowAction.hidden,\n context,\n )\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(\n row: DynamicDatatableRow,\n rowActionDef: DynamicDatatableRowAction,\n ): DynamicDatatableRowActionContext {\n return {\n row,\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 {\n ActivatedRoute,\n QueryParamsHandling,\n Router,\n RouterLink,\n RouterLinkWithHref,\n} from '@angular/router'\nimport {\n from,\n fromEvent,\n Observable,\n of,\n ReplaySubject,\n Subscription,\n} 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 {\n getAttribute,\n hasProperty,\n toggleAttribute,\n} 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 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(\n 'click',\n (event: MouseEvent) => {\n // console.log('this._rLinkWithHref', this._rLinkWithHref, this._rLinkWithHref && this._rLinkWithHref.href)\n if (this._rLinkWithHref) {\n return this._rLinkWithHref.onClick(\n event.button,\n event.ctrlKey,\n event.shiftKey,\n event.altKey,\n event.metaKey,\n )\n }\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(\n 'click',\n () => {\n // console.log('this._rLink', this._rLink && this._rLink.urlTree)\n if (this._rLink) {\n return (this._rLink as any).onClick()\n }\n },\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 {\n return this._rLink\n }\n get routerLinkWithHref(): RouterLinkWithHref | undefined {\n return this._rLinkWithHref\n }\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(\n 'click',\n this._rLinkClickEventListener,\n )\n this._rLinkClickEventListener = null\n }\n\n if (this._rLinkWithHref && this._rLinkWithHref.ngOnDestroy) {\n this._rLinkWithHref.ngOnDestroy()\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\n implements OnDestroy, OnChanges\n{\n @Input()\n // get seamDatatableDynamicActionMenuItem(): DynamicDatatableActionMenuRecord { return this._record }\n set seamDatatableDynamicActionMenuItem(\n value: DynamicDatatableActionMenuRecord,\n ) {\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\n .pipe(\n // tap(v => console.log('record', v)),\n switchMap((record) => this._update(record)),\n tap(() => {\n this._setInvalidActionState(false)\n }),\n catchError((error) => {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.error(error)\n }\n this._setInvalidActionState(true)\n return of(undefined)\n }),\n // tap(v => console.log('record DONE', v))\n )\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 (\n getAttribute(this._elementRef.nativeElement, 'href') !==\n this._menuRouterLink.routerLinkWithHref.href\n ) {\n this._renderer.setAttribute(\n this._elementRef.nativeElement,\n 'href',\n this._menuRouterLink.routerLinkWithHref.href,\n )\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) =>\n this._isAnchor()\n ? this._updateAnchorElement(\n record,\n uiProps as DynamicActionUiAnchorDef,\n )\n : this._updateButtonElement(\n record,\n uiProps as DynamicActionUiButtonDef,\n ),\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:\n throw Error(\n '[DatatableDynamicActionMenuItemDirective] ' +\n `triggerType ${uiProps.triggerType} is not valid for _updateAnchorElement().`,\n )\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(\n switchMap(() => this._updateAssetElement(record, uiProps)),\n )\n break\n }\n case 'click': {\n // console.log('Handle \"click\" triggerType.', uiProps)\n this._tryInitBlockClick(record, uiProps)\n _stream = _stream.pipe(\n switchMap(() => this._updateClickElement(record, uiProps)),\n )\n break\n }\n default:\n throw Error(\n '[DatatableDynamicActionMenuItemDirective] ' +\n `triggerType ${uiProps.triggerType} is not valid for _updateAnchorElement().`,\n )\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 (\n uiProps.triggerType === 'link-asset' &&\n hasProperty(uiProps, 'linkUrl')\n ) {\n const url = uiProps.linkUrl\n let target: string | undefined\n if (\n hasProperty(uiProps, 'linkExtras') &&\n hasProperty(uiProps.linkExtras, 'target')\n ) {\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(\n this._elementRef.nativeElement,\n 'tabindex',\n '0',\n )\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(\n uiProps,\n record,\n ).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(\n uiProps.blockClickExpr,\n context,\n )\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 =\n uiProps.linkExtras.queryParamsHandling\n }\n if (hasProperty(uiProps.linkExtras, 'preserveFragment')) {\n this._menuRouterLink.preserveFragment =\n uiProps.linkExtras.preserveFragment\n }\n if (hasProperty(uiProps.linkExtras, 'skipLocationChange')) {\n this._menuRouterLink.skipLocationChange =\n 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(\n record: DynamicDatatableActionMenuRecord,\n ): 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(\n row: DynamicDatatableRow,\n rowActionDef: DynamicDatatableRowAction,\n ): 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","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 {\n DynamicDatatableActionMenuElementTypes,\n DynamicDatatableActionMenuRecord,\n} 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 standalone: false,\n})\nexport class DatatableDynamicActionMenuComponent {\n faEllipsisH = faEllipsisH\n\n @Input()\n get row() {\n return this._row.value\n }\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() {\n return this._actionDefs.value\n }\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) =>\n row\n ? this._dynamicRowActions\n .rowActions(row)\n .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(\n _rowAction.hidden,\n context,\n )\n if (_rowAction.hidden) {\n return undefined\n }\n }\n\n _rowAction.label = await this._valueHelper.eval(\n actionDef.label,\n context,\n )\n\n if (hasProperty(_rowAction, 'disabled')) {\n _rowAction.disabled = await this._valueHelper.eval(\n _rowAction.disabled,\n context,\n )\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(\n def: DynamicDatatableRowAction,\n ): 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","<seam-menu\n #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 <a\n *ngIf=\"record.elementType === 'a'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n class=\"list-group-item list-group-item-action py-1\"\n >{{ record.rowAction.label }}</a\n >\n\n <button\n *ngIf=\"record.elementType === 'button'\"\n seamMenuItem\n [seamDatatableDynamicActionMenuItem]=\"record\"\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n >\n {{ record.rowAction.label }}\n </button>\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\n type=\"button\"\n class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"$any(_actionMenuPositions)\"\n title=\"Row Actions\"\n>\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n</button>\n","import { ComponentPortal } from '@angular/cdk/portal'\nimport {\n ChangeDetectionStrategy,\n Component,\n Injector,\n Input,\n OnInit,\n} 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 standalone: false,\n})\nexport class DatatableDynamicFilterContainerComponent<C> implements OnInit {\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() {\n return this._filterComponent\n }\n private _filterComponent: ComponentType<C> | undefined | null\n\n @Input() options: any\n\n _portal: ComponentPortal<C> | null = null\n\n constructor(private _injector: Injector) {}\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(\n component,\n undefined,\n this._createInjector(),\n )\n } else {\n this._portal = null\n }\n }\n\n private _createInjector(): Injector {\n return Injector.create({\n parent: this._injector,\n providers: [\n { provide: THESEAM_DATA_FILTER_OPTIONS, useValue: 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 =\n new InjectionToken<IDatatableDynamicMenuBarItemManifest>(\n 'IDatatableDynamicMenuBarItemManifest',\n )\n","import { ComponentPortal } from '@angular/cdk/portal'\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Injector,\n Input,\n Optional,\n} 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 standalone: false,\n})\nexport class DatatableDynamicMenuBarContentComponent {\n private readonly _def = new BehaviorSubject<\n DynamicDatatableMenuBar | undefined\n >(undefined)\n\n @Input()\n set def(value: DynamicDatatableMenuBar | undefined) {\n this._def.next(value)\n }\n get def(): DynamicDatatableMenuBar | undefined {\n return this._def.value\n }\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()\n @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(\n switchMap((def) => this._mapRows((def && def.rows) || [])),\n )\n // .pipe(tap(v => console.log('_rows$', v)))\n }\n\n private _mapRows(\n rows: DynamicDatatableMenuBarRow[],\n ): Promise<IDatatableDynamicMenuBarContentRow[]> {\n return Promise.all(rows.map((r) => this._mapRow(r)))\n }\n\n private async _mapRow(\n row: DynamicDatatableMenuBarRow,\n ): 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(\n column.items.map((v) => this._mapItem(v, row, column)),\n )\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(\n row: DynamicDatatableMenuBarRow,\n ): 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(\n component: string,\n data?: any,\n ): Promise<ComponentPortal<object> | undefined> {\n const manifest = (this._menuBarItemManifests || []).find(\n (m) => m.name === component,\n )\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 = Injector.create({\n parent: this._injector,\n providers: [{ provide: manifest.dataToken, useValue: data }],\n })\n }\n\n if (typeof manifest.component === 'string') {\n this._dynamicComponentLoader\n .getComponentFactory<object>(manifest.component)\n .pipe(\n map((componentFactory) => {\n return new ComponentPortal(\n componentFactory.componentType,\n null,\n injector,\n )\n }),\n )\n .toPromise()\n } else {\n return new ComponentPortal(manifest.component, null, injector, null)\n }\n }\n}\n","<seam-datatable-menu-bar-row\n *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>\n <ng-container *ngIf=\"row.layoutType === 'tri-column'\">\n <seam-datatable-menu-bar-column-left\n *ngIf=\"row.layout?.columnLeft\"\n [ngClass]=\"$any(row.layout).cssClass\"\n [ngStyle]=\"$any(row.layout).styles\"\n >\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\n *ngIf=\"row.layout?.columnCenter\"\n [ngClass]=\"$any(row.layout).cssClass\"\n [ngStyle]=\"$any(row.layout).styles\"\n >\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\n *ngIf=\"row.layout?.columnRight\"\n [ngClass]=\"$any(row.layout).cssClass\"\n [ngStyle]=\"$any(row.layout).styles\"\n >\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: [DynamicDatatableDefService, DynamicDatatableRowActionsService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class DatatableDynamicComponent {\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(private readonly _dynamicDef: DynamicDatatableDefService) {\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$.pipe(\n map((f) => f.filter((_f) => _f.type === 'common')),\n )\n\n this._hasFullSearch$ = this._dynamicDef.filterMenuItems$.pipe(\n map((f) => !!f.find((_f) => _f.type === 'full-search')),\n )\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","<ng-container *ngIf=\"_hasDef$ | async\">\n <seam-datatable\n *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\n [def]=\"menuBar\"\n ></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\n [row]=\"row\"\n ></seam-datatable-dynamic-action-menu>\n </ng-template>\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 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 DatatableDynamicActionMenuItemDirective,\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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"}