@mediusinc/mng-commons 0.0.1-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/esm2020/lib/api/models/builders/query-param.builder.mjs +49 -0
- package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -0
- package/esm2020/lib/api/models/filter-param.model.mjs +46 -0
- package/esm2020/lib/api/models/index.mjs +9 -0
- package/esm2020/lib/api/models/mappers.mjs +17 -0
- package/esm2020/lib/api/models/query-mode.model.mjs +19 -0
- package/esm2020/lib/api/models/query-param.model.mjs +69 -0
- package/esm2020/lib/api/models/query-result.model.mjs +45 -0
- package/esm2020/lib/api/models/serialization.model.mjs +2 -0
- package/esm2020/lib/api/services/abstract-crud-api.service.mjs +72 -0
- package/esm2020/lib/api/services/index.mjs +2 -0
- package/esm2020/lib/api/utils/index.mjs +3 -0
- package/esm2020/lib/api/utils/medius-rest.util.mjs +70 -0
- package/esm2020/lib/api/utils/object-serializer.util.mjs +226 -0
- package/esm2020/lib/components/action/action.component.mjs +63 -0
- package/esm2020/lib/components/action/dialog/action-dialog.component.mjs +148 -0
- package/esm2020/lib/components/action/index.mjs +4 -0
- package/esm2020/lib/components/action/route/action-route.component.mjs +144 -0
- package/esm2020/lib/components/form/editor/form-editor.component.mjs +140 -0
- package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +58 -0
- package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +51 -0
- package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +16 -0
- package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +26 -0
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +94 -0
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +124 -0
- package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +17 -0
- package/esm2020/lib/components/form/formly/fields/index.mjs +8 -0
- package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +17 -0
- package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +16 -0
- package/esm2020/lib/components/form/formly/wrappers/index.mjs +3 -0
- package/esm2020/lib/components/form/index.mjs +2 -0
- package/esm2020/lib/components/layout/app.breadcrumb.component.mjs +27 -0
- package/esm2020/lib/components/layout/app.footer.component.mjs +35 -0
- package/esm2020/lib/components/layout/app.main.component.mjs +25 -0
- package/esm2020/lib/components/layout/app.main.component.service.mjs +133 -0
- package/esm2020/lib/components/layout/app.menu.component.mjs +38 -0
- package/esm2020/lib/components/layout/app.menuitem.component.mjs +243 -0
- package/esm2020/lib/components/layout/app.topbar.component.mjs +135 -0
- package/esm2020/lib/components/layout/index.mjs +7 -0
- package/esm2020/lib/components/tableview/index.mjs +4 -0
- package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +31 -0
- package/esm2020/lib/components/tableview/table/table.component.mjs +173 -0
- package/esm2020/lib/components/tableview/tableview.component.mjs +82 -0
- package/esm2020/lib/components/tableview/tableview.component.service.mjs +18 -0
- package/esm2020/lib/config/formly.config.mjs +165 -0
- package/esm2020/lib/config/index.mjs +2 -0
- package/esm2020/lib/directives/index.mjs +2 -0
- package/esm2020/lib/directives/template.directive.mjs +25 -0
- package/esm2020/lib/mng-commons.module.mjs +338 -0
- package/esm2020/lib/models/action/action.model.mjs +58 -0
- package/esm2020/lib/models/action/index.mjs +2 -0
- package/esm2020/lib/models/config/index.mjs +2 -0
- package/esm2020/lib/models/config/mng-config.model.mjs +3 -0
- package/esm2020/lib/models/descriptors/action-descriptor.model.mjs +283 -0
- package/esm2020/lib/models/descriptors/editor-descriptor.model.mjs +647 -0
- package/esm2020/lib/models/descriptors/index.mjs +6 -0
- package/esm2020/lib/models/descriptors/model-descriptor.model.mjs +34 -0
- package/esm2020/lib/models/descriptors/table-descriptor.model.mjs +123 -0
- package/esm2020/lib/models/descriptors/tableview-descriptor.model.mjs +124 -0
- package/esm2020/lib/models/events/editor-event.model.mjs +14 -0
- package/esm2020/lib/models/events/index.mjs +3 -0
- package/esm2020/lib/models/events/table-event.model.mjs +16 -0
- package/esm2020/lib/models/interfaces/confirmation-service.model.mjs +2 -0
- package/esm2020/lib/models/interfaces/index.mjs +2 -0
- package/esm2020/lib/models/providers/data-provider.model.mjs +86 -0
- package/esm2020/lib/models/providers/index.mjs +2 -0
- package/esm2020/lib/models/types/index.mjs +3 -0
- package/esm2020/lib/models/types/type.decorator.mjs +8 -0
- package/esm2020/lib/models/types/type.model.mjs +2 -0
- package/esm2020/lib/models/validators/field.validator.mjs +21 -0
- package/esm2020/lib/models/validators/index.mjs +2 -0
- package/esm2020/lib/pipes/index.mjs +2 -0
- package/esm2020/lib/pipes/property-path.pipe.mjs +36 -0
- package/esm2020/lib/services/action.service.mjs +239 -0
- package/esm2020/lib/services/breadcrumb.service.mjs +21 -0
- package/esm2020/lib/services/configuration.service.mjs +77 -0
- package/esm2020/lib/services/index.mjs +7 -0
- package/esm2020/lib/services/menu.service.mjs +26 -0
- package/esm2020/lib/services/navigation.service.mjs +49 -0
- package/esm2020/lib/services/providers/config-service.provider.mjs +12 -0
- package/esm2020/lib/services/providers/formly-config.provider.mjs +31 -0
- package/esm2020/lib/services/providers/index.mjs +3 -0
- package/esm2020/lib/services/settings.service.mjs +40 -0
- package/esm2020/lib/utils/editor-formly.util.mjs +165 -0
- package/esm2020/lib/utils/i18n.util.mjs +75 -0
- package/esm2020/lib/utils/index.mjs +5 -0
- package/esm2020/lib/utils/model.util.mjs +38 -0
- package/esm2020/lib/utils/type.util.mjs +43 -0
- package/esm2020/mediusinc-mng-commons.mjs +5 -0
- package/esm2020/public-api.mjs +33 -0
- package/fesm2015/mediusinc-mng-commons.mjs +5056 -0
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -0
- package/fesm2020/mediusinc-mng-commons.mjs +5012 -0
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -0
- package/lib/api/models/builders/query-param.builder.d.ts +11 -0
- package/lib/api/models/filter-match-type.model.d.ts +21 -0
- package/lib/api/models/filter-param.model.d.ts +23 -0
- package/lib/api/models/index.d.ts +8 -0
- package/lib/api/models/mappers.d.ts +6 -0
- package/lib/api/models/query-mode.model.d.ts +16 -0
- package/lib/api/models/query-param.model.d.ts +31 -0
- package/lib/api/models/query-result.model.d.ts +36 -0
- package/lib/api/models/serialization.model.d.ts +8 -0
- package/lib/api/services/abstract-crud-api.service.d.ts +23 -0
- package/lib/api/services/index.d.ts +1 -0
- package/lib/api/utils/index.d.ts +2 -0
- package/lib/api/utils/medius-rest.util.d.ts +6 -0
- package/lib/api/utils/object-serializer.util.d.ts +30 -0
- package/lib/components/action/action.component.d.ts +36 -0
- package/lib/components/action/dialog/action-dialog.component.d.ts +48 -0
- package/lib/components/action/index.d.ts +3 -0
- package/lib/components/action/route/action-route.component.d.ts +32 -0
- package/lib/components/form/editor/form-editor.component.d.ts +37 -0
- package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +21 -0
- package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +19 -0
- package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +6 -0
- package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +12 -0
- package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +17 -0
- package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +36 -0
- package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -0
- package/lib/components/form/formly/fields/index.d.ts +7 -0
- package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +8 -0
- package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +8 -0
- package/lib/components/form/formly/wrappers/index.d.ts +2 -0
- package/lib/components/form/index.d.ts +1 -0
- package/lib/components/layout/app.breadcrumb.component.d.ts +16 -0
- package/lib/components/layout/app.footer.component.d.ts +8 -0
- package/lib/components/layout/app.main.component.d.ts +12 -0
- package/lib/components/layout/app.main.component.service.d.ts +40 -0
- package/lib/components/layout/app.menu.component.d.ts +14 -0
- package/lib/components/layout/app.menuitem.component.d.ts +31 -0
- package/lib/components/layout/app.topbar.component.d.ts +16 -0
- package/lib/components/layout/index.d.ts +6 -0
- package/lib/components/tableview/index.d.ts +3 -0
- package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +15 -0
- package/lib/components/tableview/table/table.component.d.ts +47 -0
- package/lib/components/tableview/tableview.component.d.ts +36 -0
- package/lib/components/tableview/tableview.component.service.d.ts +11 -0
- package/lib/config/formly.config.d.ts +8 -0
- package/lib/config/index.d.ts +1 -0
- package/lib/directives/index.d.ts +1 -0
- package/lib/directives/template.directive.d.ts +11 -0
- package/lib/mng-commons.module.d.ts +74 -0
- package/lib/models/action/action.model.d.ts +53 -0
- package/lib/models/action/index.d.ts +1 -0
- package/lib/models/config/index.d.ts +1 -0
- package/lib/models/config/mng-config.model.d.ts +19 -0
- package/lib/models/descriptors/action-descriptor.model.d.ts +124 -0
- package/lib/models/descriptors/editor-descriptor.model.d.ts +248 -0
- package/lib/models/descriptors/index.d.ts +5 -0
- package/lib/models/descriptors/model-descriptor.model.d.ts +15 -0
- package/lib/models/descriptors/table-descriptor.model.d.ts +45 -0
- package/lib/models/descriptors/tableview-descriptor.model.d.ts +38 -0
- package/lib/models/events/editor-event.model.d.ts +11 -0
- package/lib/models/events/index.d.ts +2 -0
- package/lib/models/events/table-event.model.d.ts +17 -0
- package/lib/models/interfaces/confirmation-service.model.d.ts +6 -0
- package/lib/models/interfaces/index.d.ts +1 -0
- package/lib/models/providers/data-provider.model.d.ts +62 -0
- package/lib/models/providers/index.d.ts +1 -0
- package/lib/models/types/index.d.ts +2 -0
- package/lib/models/types/type.decorator.d.ts +2 -0
- package/lib/models/types/type.model.d.ts +10 -0
- package/lib/models/validators/field.validator.d.ts +18 -0
- package/lib/models/validators/index.d.ts +1 -0
- package/lib/pipes/index.d.ts +1 -0
- package/lib/pipes/property-path.pipe.d.ts +7 -0
- package/lib/services/action.service.d.ts +92 -0
- package/lib/services/breadcrumb.service.d.ts +9 -0
- package/lib/services/configuration.service.d.ts +35 -0
- package/lib/services/index.d.ts +6 -0
- package/lib/services/menu.service.d.ts +11 -0
- package/lib/services/navigation.service.d.ts +14 -0
- package/lib/services/providers/config-service.provider.d.ts +5 -0
- package/lib/services/providers/formly-config.provider.d.ts +4 -0
- package/lib/services/providers/index.d.ts +2 -0
- package/lib/services/settings.service.d.ts +18 -0
- package/lib/utils/editor-formly.util.d.ts +9 -0
- package/lib/utils/i18n.util.d.ts +14 -0
- package/lib/utils/index.d.ts +4 -0
- package/lib/utils/model.util.d.ts +5 -0
- package/lib/utils/type.util.d.ts +15 -0
- package/mediusinc-mng-commons-0.0.1-rc.2.tgz +0 -0
- package/mediusinc-mng-commons.d.ts +5 -0
- package/package.json +38 -0
- package/public-api.d.ts +22 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons.mjs","sources":["../../../projects/mng-commons/src/lib/directives/template.directive.ts","../../../projects/mng-commons/src/lib/pipes/property-path.pipe.ts","../../../projects/mng-commons/src/lib/services/breadcrumb.service.ts","../../../projects/mng-commons/src/lib/components/layout/app.breadcrumb.component.ts","../../../projects/mng-commons/src/lib/components/layout/app.breadcrumb.component.html","../../../projects/mng-commons/src/lib/services/settings.service.ts","../../../projects/mng-commons/src/lib/components/layout/app.footer.component.ts","../../../projects/mng-commons/src/lib/services/menu.service.ts","../../../projects/mng-commons/src/lib/components/layout/app.main.component.service.ts","../../../projects/mng-commons/src/lib/components/layout/app.menuitem.component.ts","../../../projects/mng-commons/src/lib/components/layout/app.menu.component.ts","../../../projects/mng-commons/src/lib/components/layout/app.menu.component.html","../../../projects/mng-commons/src/lib/components/layout/app.topbar.component.ts","../../../projects/mng-commons/src/lib/components/layout/app.main.component.ts","../../../projects/mng-commons/src/lib/components/layout/app.main.component.html","../../../projects/mng-commons/src/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.ts","../../../projects/mng-commons/src/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.html","../../../projects/mng-commons/src/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.ts","../../../projects/mng-commons/src/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.html","../../../projects/mng-commons/src/lib/api/models/filter-match-type.model.ts","../../../projects/mng-commons/src/lib/api/models/filter-param.model.ts","../../../projects/mng-commons/src/lib/api/models/query-mode.model.ts","../../../projects/mng-commons/src/lib/api/models/query-param.model.ts","../../../projects/mng-commons/src/lib/api/models/query-result.model.ts","../../../projects/mng-commons/src/lib/api/models/builders/query-param.builder.ts","../../../projects/mng-commons/src/lib/api/models/mappers.ts","../../../projects/mng-commons/src/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.ts","../../../projects/mng-commons/src/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.html","../../../projects/mng-commons/src/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.ts","../../../projects/mng-commons/src/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.html","../../../projects/mng-commons/src/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.ts","../../../projects/mng-commons/src/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.html","../../../projects/mng-commons/src/lib/utils/editor-formly.util.ts","../../../projects/mng-commons/src/lib/utils/i18n.util.ts","../../../projects/mng-commons/src/lib/api/utils/object-serializer.util.ts","../../../projects/mng-commons/src/lib/api/utils/medius-rest.util.ts","../../../projects/mng-commons/src/lib/utils/model.util.ts","../../../projects/mng-commons/src/lib/models/types/type.decorator.ts","../../../projects/mng-commons/src/lib/utils/type.util.ts","../../../projects/mng-commons/src/lib/models/descriptors/action-descriptor.model.ts","../../../projects/mng-commons/src/lib/models/providers/data-provider.model.ts","../../../projects/mng-commons/src/lib/models/validators/field.validator.ts","../../../projects/mng-commons/src/lib/models/descriptors/editor-descriptor.model.ts","../../../projects/mng-commons/src/lib/models/descriptors/model-descriptor.model.ts","../../../projects/mng-commons/src/lib/models/descriptors/table-descriptor.model.ts","../../../projects/mng-commons/src/lib/models/descriptors/tableview-descriptor.model.ts","../../../projects/mng-commons/src/lib/models/events/editor-event.model.ts","../../../projects/mng-commons/src/lib/models/events/table-event.model.ts","../../../projects/mng-commons/src/lib/components/tableview/table/table.component.ts","../../../projects/mng-commons/src/lib/components/tableview/table/table.component.html","../../../projects/mng-commons/src/lib/models/action/action.model.ts","../../../projects/mng-commons/src/lib/components/tableview/tableview.component.service.ts","../../../projects/mng-commons/src/lib/components/action/route/action-route.component.ts","../../../projects/mng-commons/src/lib/components/action/route/action-route.component.html","../../../projects/mng-commons/src/lib/components/form/editor/form-editor.component.ts","../../../projects/mng-commons/src/lib/components/form/editor/form-editor.component.html","../../../projects/mng-commons/src/lib/components/action/dialog/action-dialog.component.ts","../../../projects/mng-commons/src/lib/components/action/dialog/action-dialog.component.html","../../../projects/mng-commons/src/lib/services/action.service.ts","../../../projects/mng-commons/src/lib/services/configuration.service.ts","../../../projects/mng-commons/src/lib/services/navigation.service.ts","../../../projects/mng-commons/src/lib/components/action/action.component.ts","../../../projects/mng-commons/src/lib/components/action/action.component.html","../../../projects/mng-commons/src/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.ts","../../../projects/mng-commons/src/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.html","../../../projects/mng-commons/src/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.ts","../../../projects/mng-commons/src/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.html","../../../projects/mng-commons/src/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.ts","../../../projects/mng-commons/src/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.html","../../../projects/mng-commons/src/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.ts","../../../projects/mng-commons/src/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.html","../../../projects/mng-commons/src/lib/components/tableview/tableview.component.ts","../../../projects/mng-commons/src/lib/components/tableview/tableview.component.html","../../../projects/mng-commons/src/lib/components/tableview/route/tableview-route.abstract.component.ts","../../../projects/mng-commons/src/lib/services/providers/config-service.provider.ts","../../../projects/mng-commons/src/lib/config/formly.config.ts","../../../projects/mng-commons/src/lib/services/providers/formly-config.provider.ts","../../../projects/mng-commons/src/lib/models/config/mng-config.model.ts","../../../projects/mng-commons/src/lib/mng-commons.module.ts","../../../projects/mng-commons/src/lib/api/services/abstract-crud-api.service.ts","../../../projects/mng-commons/src/public-api.ts","../../../projects/mng-commons/src/mediusinc-mng-commons.ts"],"sourcesContent":["import {Directive, Input, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[mngTemplate]',\n host: {}\n})\nexport class TemplateDirective {\n\n @Input() type!: string;\n @Input('mngTemplate') name!: string;\n\n constructor(public template: TemplateRef<any>) {}\n\n getType(): string {\n return this.name;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'propertyPath',\n pure: true\n})\nexport class PropertyPathPipe implements PipeTransform {\n\n transform(value: any, path: string = ''): any {\n\n if (path.indexOf('.') >= 0) {\n const pathSplit = path.split('.');\n let currValue = value;\n for (const p of pathSplit) {\n if (typeof currValue === 'undefined' || currValue === null) {\n return currValue;\n }\n else if (typeof currValue === 'object') {\n currValue = currValue[p];\n } else {\n console.warn(`Path ${path} is not valid for object`, value);\n return currValue;\n }\n }\n return currValue;\n } else {\n return typeof value === 'object' ? value[path] : value;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { MenuItem } from 'primeng/api';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppBreadcrumbService {\n\n private itemsSource = new Subject<MenuItem[]>();\n\n itemsHandler = this.itemsSource.asObservable();\n\n setItems(items: MenuItem[]) {\n this.itemsSource.next(items);\n }\n}\n","import { Component, OnDestroy } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\nimport { MenuItem } from 'primeng/api';\n\nimport {AppBreadcrumbService} from '../../services/breadcrumb.service';\n\n@Component({\n selector: 'app-breadcrumb',\n templateUrl: './app.breadcrumb.component.html'\n})\nexport class AppBreadcrumbComponent implements OnDestroy {\n\n subscription: Subscription;\n\n items: MenuItem[] = [];\n\n home: MenuItem;\n\n search: string = '';\n\n constructor(public breadcrumbService: AppBreadcrumbService) {\n this.subscription = breadcrumbService.itemsHandler.subscribe(response => {\n this.items = response;\n });\n\n this.home = { icon: 'pi pi-home', routerLink: '/' };\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","<div class=\"layout-breadcrumb-container\">\n <div class=\"layout-breadcrumb\">\n <p-breadcrumb [model]=\"items\" styleClass=\"layout-breadcrumb py-2\"></p-breadcrumb>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport {PrimeNGConfig} from 'primeng/api';\n\n@Injectable()\nexport class AppSettingsService {\n\n private readonly _menuMode: 'static'|'sidebar'|'slim'|'horizontal'|'overlay' = 'sidebar';\n private readonly _colorScheme: 'light'|'dark' = 'light';\n\n constructor(private primengConfig: PrimeNGConfig) { }\n\n public get menuMode() {\n return this._menuMode;\n }\n\n public get colorScheme() {\n return this._colorScheme;\n }\n\n public init() {\n this.primengConfig.ripple = true;\n }\n\n isStatic() {\n return this.menuMode === 'static';\n }\n\n isOverlay() {\n return this.menuMode === 'overlay';\n }\n\n isSlim() {\n return this.menuMode === 'slim';\n }\n\n isHorizontal() {\n return this.menuMode === 'horizontal';\n }\n\n isSidebar() {\n return this.menuMode === 'sidebar';\n }\n}\n","import {Component} from '@angular/core';\n\nimport {AppSettingsService} from '../../services/settings.service';\n\n@Component({\n selector: 'app-footer',\n template: `\n <div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n <img id=\"footer-logo\" [src]=\"'assets/layout/images/logo-'+ (appSettings.colorScheme === 'light' ? 'dark' : 'light') + '.png'\" alt=\"atlantis-layout\"/>\n <span class=\"app-name\">{{ 'app.name' | translate }}</span>\n </div>\n <span class=\"copyright\">© Ministrstvo za javno upravo - 2021</span>\n </div>\n `\n})\nexport class AppFooterComponent {\n constructor(public appSettings: AppSettingsService) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MenuService {\n\n private menuSource = new Subject<string>();\n private resetSource = new Subject();\n\n menuSource$ = this.menuSource.asObservable();\n resetSource$ = this.resetSource.asObservable();\n\n onMenuStateChange(key: string) {\n this.menuSource.next(key);\n }\n\n reset() {\n this.resetSource.next(null);\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {AppSettingsService} from '../../services/settings.service';\nimport {MenuService} from '../../services/menu.service';\n\n@Injectable()\nexport class AppMainComponentService {\n\n overlayMenuActive: boolean = false;\n\n staticMenuDesktopInactive = false;\n\n staticMenuMobileActive: boolean = false;\n\n sidebarActive = true;\n\n sidebarStatic = true;\n\n menuClick: boolean = false;\n\n menuHoverActive = false;\n\n topbarMenuActive: boolean = false;\n\n topbarItemClick: boolean = false;\n\n activeTopbarItem: any;\n\n configActive: boolean = false;\n\n configClick: boolean = false;\n\n rightMenuActive: boolean = false;\n\n rightMenuClick: boolean = false;\n\n searchActive: boolean = false;\n\n searchClick: boolean = false;\n\n pinActive: boolean = true;\n\n constructor(private appSettings: AppSettingsService, private menuService: MenuService) {}\n\n\n onLayoutClick() {\n if (!this.topbarItemClick) {\n this.activeTopbarItem = null;\n this.topbarMenuActive = false;\n }\n\n if (this.configActive && !this.configClick) {\n this.configActive = false;\n }\n\n if (this.rightMenuActive && !this.rightMenuClick) {\n this.rightMenuActive = false;\n }\n\n if (this.searchActive && !this.searchClick) {\n this.searchActive = false;\n }\n\n if (!this.menuClick) {\n if ((this.appSettings.isSlim() || this.appSettings.isHorizontal()) && !this.isMobile()) {\n this.menuService.reset();\n this.menuHoverActive = false;\n }\n\n if (this.overlayMenuActive || this.staticMenuMobileActive) {\n this.overlayMenuActive = false;\n this.staticMenuMobileActive = false;\n }\n }\n\n this.configClick = false;\n this.rightMenuClick = false;\n this.searchClick = false;\n this.menuClick = false;\n this.topbarItemClick = false;\n }\n\n onSidebarClick(event: any) {\n this.menuClick = true;\n }\n\n onToggleMenu(event: any) {\n this.menuClick = true;\n\n if (this.overlayMenuActive) {\n this.overlayMenuActive = false;\n }\n\n if (this.sidebarActive) {\n this.sidebarStatic = !this.sidebarStatic;\n }\n\n event.preventDefault();\n }\n\n onSidebarMouseOver(event: any) {\n if (this.appSettings.menuMode === 'sidebar' && !this.sidebarStatic) {\n this.sidebarActive = this.isDesktop();\n setTimeout(() => {\n this.pinActive = this.isDesktop();\n }, 200);\n }\n }\n\n onSidebarMouseLeave(event: any) {\n if (this.appSettings.menuMode === 'sidebar' && !this.sidebarStatic) {\n setTimeout(() => {\n this.sidebarActive = false;\n this.pinActive = false;\n }, 250);\n }\n }\n\n onMenuButtonClick(event: any) {\n this.menuClick = true;\n\n if (this.appSettings.isOverlay()) {\n this.overlayMenuActive = !this.overlayMenuActive;\n }\n\n if (this.isDesktop()) {\n this.staticMenuDesktopInactive = !this.staticMenuDesktopInactive;\n } else {\n this.staticMenuMobileActive = !this.staticMenuMobileActive;\n }\n\n event.preventDefault();\n }\n\n onTopbarItemClick(event: any, item: any) {\n this.topbarItemClick = true;\n\n if (this.activeTopbarItem === item) {\n this.activeTopbarItem = null;\n } else {\n this.activeTopbarItem = item;\n }\n\n event.preventDefault();\n }\n\n onTopbarSubItemClick(event: any) {\n event.preventDefault();\n }\n\n onConfigClick(event: any) {\n this.configClick = true;\n }\n\n onRightMenuButtonClick() {\n this.rightMenuClick = true;\n this.rightMenuActive = true;\n }\n\n onRightMenuClick(event: any) {\n this.rightMenuClick = true;\n }\n\n isDesktop() {\n return window.innerWidth > 991;\n }\n\n isMobile() {\n return window.innerWidth <= 991;\n }\n}\n","import {Component, Input, OnInit, ChangeDetectorRef, OnDestroy} from '@angular/core';\nimport {Router, NavigationEnd} from '@angular/router';\nimport {trigger, state, style, transition, animate} from '@angular/animations';\n\nimport {Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {MenuService} from '../../services/menu.service';\nimport {AppSettingsService} from '../../services/settings.service';\nimport {AppMainComponentService} from './app.main.component.service';\n\n@Component({\n /* tslint:disable:component-selector */\n selector: '[app-menuitem]',\n /* tslint:enable:component-selector */\n template: `\n <ng-container>\n <div *ngIf=\"root && item.visible !== false\" class=\"layout-menuitem-root-text\">{{ item.label | translate }}</div>\n <a [attr.href]=\"item.url\" (click)=\"itemClick($event)\" *ngIf=\"(!item.routerLink || item.items) && item.visible !== false\"\n (mouseenter)=\"onMouseEnter()\" (keydown.enter)=\"itemClick($event)\"\n [attr.target]=\"item.target\" [attr.tabindex]=\"0\" [ngClass]=\"item.class\" pRipple>\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{item.badge}}</span>\n </a>\n <a (click)=\"itemClick($event)\" (mouseenter)=\"hover=true\" (mouseleave)=\"hover=false\"\n *ngIf=\"(item.routerLink && !item.items) && item.visible !== false\"\n [routerLink]=\"item.routerLink\" routerLinkActive=\"active-menuitem-routerlink\"\n [routerLinkActiveOptions]=\"{exact: true}\" [attr.target]=\"item.target\" [attr.tabindex]=\"0\"\n [ngClass]=\"item.class\" pRipple>\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{item.badge}}</span>\n </a>\n <ul *ngIf=\"((item.items && active) || (item.items && appSettings.isStatic() && (root || active))) && item.visible !== false\" [@children]=\"(\n (appSettings.isSlim()||appSettings.isHorizontal()) && !appMainService.isMobile() && root) ?\n (active ? 'visible' : 'hidden') :\n (appSettings.isStatic() && root && !appMainService.isMobile() ? 'visible' : (active ? 'visibleAnimated' : 'hiddenAnimated'))\">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li app-menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeClass\"></li>\n </ng-template>\n </ul>\n </ng-container>\n `,\n host: {\n '[class.layout-root-menuitem]': 'root',\n '[class.active-menuitem]': 'active'\n },\n animations: [\n trigger('children', [\n state('void', style({\n height: '0px'\n })),\n state('hiddenAnimated', style({\n height: '0px'\n })),\n state('visibleAnimated', style({\n height: '*'\n })),\n state('visible', style({\n height: '*',\n 'z-index': 100\n })),\n state('hidden', style({\n height: '0px',\n 'z-index': '*'\n })),\n transition('visibleAnimated => hiddenAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),\n transition('hiddenAnimated => visibleAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),\n transition('void => visibleAnimated, visibleAnimated => void', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\n ])\n ]\n})\nexport class AppMenuitemComponent implements OnInit, OnDestroy {\n\n @Input() item: any;\n\n @Input() index: number = 0;\n\n @Input() root: boolean = false;\n\n @Input() parentKey: string|null = null;\n\n active = false;\n\n hover: boolean = false;\n\n menuSourceSubscription: Subscription;\n\n menuResetSubscription: Subscription;\n\n key: string = '';\n\n constructor(public appSettings: AppSettingsService, public appMainService: AppMainComponentService, public router: Router, private cd: ChangeDetectorRef, private menuService: MenuService) {\n // TODO: remove ignore\n // @ts-ignore\n this.menuSourceSubscription = this.menuService.menuSource$.subscribe(key => {\n // deactivate current active menu\n if (this.active && this.key !== key && key.indexOf(this.key) !== 0) {\n this.active = false;\n }\n });\n\n this.menuResetSubscription = this.menuService.resetSource$.subscribe(() => {\n this.active = false;\n });\n\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(params => {\n if ((this.appSettings.isSlim() || this.appSettings.isHorizontal()) && !this.appMainService.isMobile()) {\n this.active = false;\n } else {\n if (this.item.routerLink) {\n this.updateActiveStateFromRoute();\n } else {\n this.active = false;\n }\n }\n });\n }\n\n ngOnInit() {\n if (!(this.appSettings.isSlim() || this.appSettings.isHorizontal()) && this.item.routerLink) {\n this.updateActiveStateFromRoute();\n }\n\n this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);\n }\n\n updateActiveStateFromRoute() {\n this.active = this.router.isActive(this.item.routerLink[0], this.item.items ? false : true);\n }\n\n itemClick(event: Event) {\n // avoid processing disabled items\n if (this.item.disabled) {\n event.preventDefault();\n return;\n }\n\n // navigate with hover in horizontal mode\n if (this.root) {\n this.appMainService.menuHoverActive = !this.appMainService.menuHoverActive;\n }\n\n // notify other items\n this.menuService.onMenuStateChange(this.key);\n\n // execute command\n if (this.item.command) {\n this.item.command({originalEvent: event, item: this.item});\n }\n\n // toggle active state\n if (this.item.items) {\n this.active = !this.active;\n } else {\n // activate item\n this.active = true;\n\n if (this.appMainService.isMobile()) {\n this.appMainService.staticMenuMobileActive = false;\n }\n\n if (this.appSettings.isOverlay()) {\n this.appMainService.overlayMenuActive = false;\n }\n\n // reset horizontal menu\n if ((this.appSettings.isSlim() || this.appSettings.isHorizontal()) && !this.appMainService.isMobile()){\n this.menuService.reset();\n this.appMainService.menuHoverActive = false;\n }\n }\n }\n\n onMouseEnter() {\n // activate item on hover\n if (this.root && this.appMainService.menuHoverActive && (this.appSettings.isSlim() || this.appSettings.isHorizontal()) && this.appMainService.isDesktop()) {\n this.menuService.onMenuStateChange(this.key);\n this.active = true;\n }\n }\n\n ngOnDestroy() {\n if (this.menuSourceSubscription) {\n this.menuSourceSubscription.unsubscribe();\n }\n\n if (this.menuResetSubscription) {\n this.menuResetSubscription.unsubscribe();\n }\n }\n}\n","import {Component, OnInit} from '@angular/core';\n\nimport { MenuItem } from 'primeng/api';\n\nimport {AppSettingsService} from '../../services/settings.service';\nimport {AppMainComponentService} from './app.main.component.service';\n\n@Component({\n selector: 'app-menu',\n templateUrl: './app.menu.component.html'\n})\nexport class AppMenuComponent implements OnInit {\n\n public model: MenuItem[] = [];\n\n constructor(public appSettings: AppSettingsService,\n public appMainService: AppMainComponentService) {}\n\n ngOnInit() {\n this.model = [\n {\n label: 'pages.dashboard.name', icon: 'pi pi-home', routerLink: ['/dashboard'],\n },\n {\n label: 'pages.publicServices.name', icon: 'pi pi-fw pi-book', routerLink: ['/public-services']\n },\n {\n label: 'pages.codelists.name', icon: 'pi pi-fw pi-list', routerLink: ['/codelists'],\n items: [\n {\n label: 'pages.publicOrganizations.name', icon: 'pi pi-fw pi-globe', routerLink: ['/codelists/public-organizations']\n }\n ]\n }\n ];\n }\n}\n","<div class=\"layout-menu-wrapper\" [ngClass]=\"{'layout-sidebar-active': appMainService.sidebarActive}\"\n (click)=\"appMainService.onSidebarClick($event)\" (mouseover)=\"appMainService.onSidebarMouseOver($event)\" (mouseleave)=\"appMainService.onSidebarMouseLeave($event)\">\n <div class=\"menu-logo\" *ngIf=\"!appSettings.isHorizontal() || appMainService.isMobile()\">\n\n <a href=\"#\" class=\"logo\">\n <img [src]=\"'assets/layout/images/logo-'+ (appSettings.colorScheme === 'light' ? 'dark' : 'light') + '.png'\">\n </a>\n\n <a href=\"#\" class=\"app-name\" *ngIf=\"!appSettings.isSlim() || appMainService.isMobile()\">\n <img [src]=\"'assets/layout/images/appname-'+ (appSettings.colorScheme === 'light' ? 'dark' : 'light') + '.png'\"/>\n </a>\n<!-- <a href=\"#\" class=\"menu-pin\" (click)=\"appMain.onToggleMenu($event)\">-->\n<!-- <span *ngIf=\"appMain.isOverlay()\" class=\"pi pi-times\"></span>-->\n<!-- <span *ngIf=\"appMain.isSidebar() && !appMain.sidebarStatic && appMain.pinActive\" class=\"pi pi-unlock\"></span>-->\n<!-- <span *ngIf=\"appMain.isSidebar() && appMain.sidebarStatic && appMain.pinActive\" class=\"pi pi-lock\"></span>-->\n<!-- </a>-->\n </div>\n\n <div class=\"layout-menu-container\">\n <ul class=\"layout-menu\">\n <ng-container *ngFor=\"let item of model; let i = index;\">\n <li app-menuitem *ngIf=\"!item.separator\" [item]=\"item\" [index]=\"i\" [root]=\"true\"></li>\n <li *ngIf=\"item.separator\" class=\"menu-separator\"></li>\n </ng-container>\n </ul>\n </div>\n</div>\n","import {Component, OnInit} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {AppSettingsService} from '../../services/settings.service';\nimport {AppMainComponentService} from './app.main.component.service';\n\n@Component({\n selector: 'app-topbar',\n template: `\n <div class=\"layout-topbar\">\n <div class=\"layout-topbar-left\">\n <a href=\"#\" class=\"topbar-menu-button\" (click)=\"appMainService.onMenuButtonClick($event)\" *ngIf=\"appSettings.isOverlay() || appMainService.isMobile()\">\n <i class=\"pi pi-bars\"></i>\n </a>\n\n <app-breadcrumb></app-breadcrumb>\n </div>\n\n <app-menu></app-menu>\n\n <div class=\"layout-topbar-right\">\n <ul class=\"layout-topbar-right-items\">\n <li #profile class=\"profile-item\" [ngClass]=\"{'active-topmenuitem':appMainService.activeTopbarItem === profile}\">\n<!-- {{user?.name}} TODO -->\n <a href=\"#\" (click)=\"appMainService.onTopbarItemClick($event,profile)\">\n <i class=\"pi pi-fw pi-user\"></i>\n </a>\n\n <ul class=\"fadeInDown\">\n <li role=\"menuitem\">\n <a href=\"#\" (click)=\"appMainService.onTopbarSubItemClick($event)\">\n <i class=\"pi pi-fw pi-user\"></i>\n <span>{{ 'topbar.profile' | translate }}</span>\n </a>\n </li>\n <li role=\"menuitem\">\n <a href=\"#\" (click)=\"appMainService.onTopbarSubItemClick($event)\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [options]=languages (onChange)=\"switchLanguage($event.value)\"></p-dropdown>\n </a>\n </li>\n <li role=\"menuitem\">\n <a href=\"#\" (click)=\"appMainService.onTopbarSubItemClick($event)\">\n <i class=\"pi pi-fw pi-cog\"></i>\n <span>{{ 'topbar.settings' | translate }}</span>\n </a>\n </li>\n <li role=\"menuitem\">\n <a href=\"#\" (click)=\"appMainService.onTopbarSubItemClick($event)\">\n <i class=\"pi pi-fw pi-sign-out\"></i>\n <span>{{ 'topbar.logout' | translate }}</span>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n `\n})\nexport class AppTopbarComponent implements OnInit {\n\n // public user: UserDto; TODO\n public languages: Array<string>;\n\n constructor(public appSettings: AppSettingsService,\n public translateService: TranslateService,\n public appMainService: AppMainComponentService\n // private userService: UserApiService TODO\n ) {\n this.languages = translateService.getLangs();\n }\n\n switchLanguage(language: string) {\n this.translateService.use(language);\n }\n\n ngOnInit(): void {\n // this.userService.getCurrentUser().subscribe(obj => this.user = obj);\n }\n}\n","import {Component} from '@angular/core';\n\nimport {AppSettingsService} from '../../services/settings.service';\nimport {MenuService} from '../../services/menu.service';\nimport {AppMainComponentService} from './app.main.component.service';\n\n@Component({\n selector: 'app-main',\n templateUrl: './app.main.component.html',\n providers: [AppMainComponentService]\n})\nexport class AppMainComponent {\n\n constructor(private menuService: MenuService, public appSettings: AppSettingsService, public appMainService: AppMainComponentService) {}\n}\n","<div class=\"layout-wrapper\" (click)=\"appMainService.onLayoutClick()\"\n [ngClass]=\"{'layout-static': appSettings.menuMode === 'static',\n 'layout-overlay': appSettings.menuMode === 'overlay',\n 'layout-slim': appSettings.menuMode === 'slim',\n 'layout-horizontal': appSettings.menuMode === 'horizontal',\n 'layout-sidebar': appSettings.menuMode === 'sidebar',\n 'layout-sidebar-static': appSettings.menuMode === 'sidebar' && appMainService.sidebarStatic,\n 'layout-overlay-active': appMainService.overlayMenuActive,\n 'layout-mobile-active': appMainService.staticMenuMobileActive,\n 'layout-static-inactive': appMainService.staticMenuDesktopInactive && appSettings.menuMode === 'static'}\">\n\n <div class=\"layout-main\">\n\n <app-topbar></app-topbar>\n\n <app-menu *ngIf=\"!appMainService.isMobile() && (appSettings.isStatic() || appSettings.isSlim() || appSettings.isSidebar())\"></app-menu>\n\n <div class=\"layout-main-content\">\n <router-outlet></router-outlet>\n </div>\n\n <app-footer></app-footer>\n </div>\n\n</div>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\n\n@Component({\n selector: 'mng-formly-field-wrapper',\n templateUrl: './formly-field-wrapper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldWrapperComponent extends FieldWrapper implements OnInit {\n\n public ngOnInit() {\n }\n}\n","<div class=\"field\">\n <label [for]=\"key\">{{ $any(to?.label) | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n</div>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\n\n@Component({\n selector: 'mng-formly-table-wrapper',\n templateUrl: './formly-table-wrapper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyTableWrapperComponent extends FieldWrapper implements OnInit {\n\n public ngOnInit() {\n }\n}\n","<div class=\"field table\">\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n</div>\n","/* tslint:disable:no-angle-bracket-type-assertion no-trailing-whitespace member-ordering object-literal-key-quotes */\n/**\n * Generated API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport enum FilterMatchType {\n Contains = <any> 'CONTAINS',\n EndsWith = <any> 'ENDS_WITH',\n Equals = <any> 'EQUALS',\n FromTo = <any> 'FROM_TO',\n In = <any> 'IN',\n NotEquals = <any> 'NOT_EQUALS',\n NotIn = <any> 'NOT_IN',\n StartsWith = <any> 'STARTS_WITH'\n}\n","/* tslint:disable:no-angle-bracket-type-assertion no-trailing-whitespace member-ordering object-literal-key-quotes */\n/**\n * Generated API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {AttributeDef} from './serialization.model';\nimport { FilterMatchType } from './filter-match-type.model';\n\nexport class FilterParam {\n 'property'?: string;\n 'filterMatchCaseSensitive'?: boolean;\n 'filterMatchType'?: FilterMatchType;\n 'filterValue'?: object;\n 'filterValueTo'?: object;\n\n static discriminator: string | undefined = undefined;\n\n static attributeTypeMap: Array<AttributeDef> =\n [\n {\n 'name': 'property',\n 'baseName': 'property',\n 'type': 'string'\n },\n {\n 'name': 'filterMatchCaseSensitive',\n 'baseName': 'filter_match_case_sensitive',\n 'type': 'boolean'\n },\n {\n 'name': 'filterMatchType',\n 'baseName': 'filter_match_type',\n 'type': 'FilterMatchType'\n },\n {\n 'name': 'filterValue',\n 'baseName': 'filter_value',\n 'type': 'object'\n },\n {\n 'name': 'filterValueTo',\n 'baseName': 'filter_value_to',\n 'type': 'FilterMatchType'\n }\n ];\n\n static getAttributeTypeMap() {\n return FilterParam.attributeTypeMap;\n }\n}\n\n","/* tslint:disable:no-angle-bracket-type-assertion no-trailing-whitespace member-ordering object-literal-key-quotes */\n/**\n * Generated API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport enum QueryMode {\n All = <any> 'ALL',\n Count = <any> 'COUNT',\n Data = <any> 'DATA'\n}\n","/* tslint:disable:no-angle-bracket-type-assertion no-trailing-whitespace member-ordering object-literal-key-quotes */\n/**\n * Generated API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { FilterParam } from './filter-param.model';\nimport { QueryMode } from './query-mode.model';\nimport {AttributeDef} from './serialization.model';\n\nexport class QueryParam {\n 'filterAllParam'?: string;\n 'filterAllProperties'?: Array<string>;\n 'filterParams'?: Array<FilterParam>;\n 'groupByProperties'?: Array<string>;\n 'itemsOffset': number;\n 'itemsPerPage': number;\n 'queryMode'?: QueryMode;\n 'selectInTwoSteps'?: boolean;\n 'sortAsc'?: Array<boolean>;\n 'sortEnumByOrdinal'?: boolean;\n 'sortProperty'?: Array<string>;\n 'validateProperties'?: Array<string>;\n\n static discriminator: string | undefined = undefined;\n\n static attributeTypeMap: Array<AttributeDef> = [\n {\n 'name': 'filterAllParam',\n 'baseName': 'filter_all_param',\n 'type': 'string'\n },\n {\n 'name': 'filterAllProperties',\n 'baseName': 'filter_all_properties',\n 'type': 'Array<string>'\n },\n {\n 'name': 'filterParams',\n 'baseName': 'filter_params',\n 'type': 'Array<FilterParam>'\n },\n {\n 'name': 'groupByProperties',\n 'baseName': 'group_by_properties',\n 'type': 'Array<string>'\n },\n {\n 'name': 'itemsOffset',\n 'baseName': 'items_offset',\n 'type': 'number'\n },\n {\n 'name': 'itemsPerPage',\n 'baseName': 'items_per_page',\n 'type': 'number'\n },\n {\n 'name': 'queryMode',\n 'baseName': 'query_mode',\n 'type': 'QueryMode'\n },\n {\n 'name': 'selectInTwoSteps',\n 'baseName': 'select_in_two_steps',\n 'type': 'boolean'\n },\n {\n 'name': 'sortAsc',\n 'baseName': 'sort_asc',\n 'type': 'Array<boolean>'\n },\n {\n 'name': 'sortEnumByOrdinal',\n 'baseName': 'sort_enum_by_ordinal',\n 'type': 'boolean'\n },\n {\n 'name': 'sortProperty',\n 'baseName': 'sort_property',\n 'type': 'Array<string>'\n },\n {\n 'name': 'validateProperties',\n 'baseName': 'validate_properties',\n 'type': 'Array<string>'\n } ];\n\n static getAttributeTypeMap() {\n return QueryParam.attributeTypeMap;\n }\n}\n\n","/* tslint:disable:no-angle-bracket-type-assertion no-trailing-whitespace member-ordering object-literal-key-quotes */\n/**\n * Generated API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport {AttributeDef} from './serialization.model';\n\nexport class QueryResultBase {\n 'selectInTwoSteps'?: boolean;\n 'allDataCount'?: number;\n\n static discriminator: string | undefined = undefined;\n static attributeTypeMap: Array<AttributeDef> = [\n {\n 'name': 'allDataCount',\n 'baseName': 'all_data_count',\n 'type': 'number'\n },\n {\n 'name': 'selectInTwoSteps',\n 'baseName': 'selectInTwoSteps',\n 'type': 'boolean'\n }\n ];\n}\n\nexport class QueryResultWithObject extends QueryResultBase {\n 'pageData'?: Array<object>;\n\n static override discriminator: string | undefined = undefined;\n\n static override attributeTypeMap: Array<AttributeDef> = [\n ...QueryResultBase.attributeTypeMap,\n {\n 'name': 'pageData',\n 'baseName': 'page_data',\n 'type': 'Array<object>'\n }\n ];\n\n static getAttributeTypeMap() {\n return QueryResultWithObject.attributeTypeMap;\n }\n}\n\nexport class QueryResult<T> extends QueryResultBase implements IQueryResult {\n 'pageData'?: Array<T>;\n\n static override discriminator: string | undefined = undefined;\n\n static attributeTypeMapBase: Array<AttributeDef> = QueryResultBase.attributeTypeMap;\n static override attributeTypeMap: Array<AttributeDef> = [\n ...QueryResultBase.attributeTypeMap,\n {\n 'name': 'pageData',\n 'baseName': 'page_data',\n 'type': 'Array<T>'\n }\n ];\n\n static getAttributeTypeMap() {\n return QueryResultWithObject.attributeTypeMap;\n }\n}\n\nexport interface IQueryResult {\n selectInTwoSteps?: boolean;\n allDataCount?: number;\n pageData?: Array<any>\n}\n","import {FilterMatchType, FilterParam, QueryParam} from '../';\n\nexport class QueryParamBuilder {\n\n constructor(private queryParam: QueryParam) {\n }\n\n public static create(itemsPerPage: number = 50, itemsOffset: number = 0): QueryParamBuilder {\n const queryParam = new QueryParam();\n queryParam.itemsPerPage = itemsPerPage;\n queryParam.itemsOffset = itemsOffset;\n return new QueryParamBuilder(queryParam);\n }\n\n public withItemsPerPage(itemsPerPage: number): QueryParamBuilder {\n this.queryParam.itemsPerPage = itemsPerPage;\n return this;\n }\n\n public withItemsOffset(itemsOffset: number): QueryParamBuilder {\n this.queryParam.itemsOffset = itemsOffset;\n return this;\n }\n\n public withSort(property: string, asc: boolean = true): QueryParamBuilder {\n if (!this.queryParam.sortProperty) {\n this.queryParam.sortProperty = [];\n this.queryParam.sortAsc = [];\n }\n this.queryParam.sortProperty.push(property);\n // @ts-ignore\n this.queryParam.sortAsc.push(asc);\n return this;\n }\n\n public withFilter(property: string, value: any, valueTo: any = undefined, matchType: FilterMatchType = FilterMatchType.Contains, matchCaseSensitive: boolean = false): QueryParamBuilder {\n if (!this.queryParam.filterParams) {\n this.queryParam.filterParams = [];\n }\n const filterParam = new FilterParam();\n filterParam.property = property;\n filterParam.filterValue = value;\n filterParam.filterValueTo = valueTo;\n filterParam.filterMatchType = matchType;\n filterParam.filterMatchCaseSensitive = matchCaseSensitive;\n this.queryParam.filterParams.push(filterParam);\n return this;\n }\n\n public build(): QueryParam {\n const queryParam = this.queryParam;\n this.queryParam = new QueryParam();\n return queryParam;\n }\n}\n","/* tslint:disable:no-angle-bracket-type-assertion no-trailing-whitespace member-ordering object-literal-key-quotes */\nimport { FilterMatchType } from './filter-match-type.model';\nimport { FilterParam } from './filter-param.model';\nimport { QueryMode } from './query-mode.model';\nimport { QueryParam } from './query-param.model';\nimport { QueryResult, QueryResultWithObject } from './query-result.model';\n\nexport const enumsMapBase: {[index: string]: any} = {\n 'FilterMatchType': FilterMatchType,\n 'QueryMode': QueryMode,\n};\n\nexport const typeMapBase: {[index: string]: any} = {\n 'FilterParam': FilterParam,\n 'QueryParam': QueryParam,\n 'QueryResult': QueryResult,\n 'QueryResultWithObject': QueryResultWithObject\n};\n","import {ChangeDetectionStrategy, Component, Injector, OnInit} from '@angular/core';\nimport {FormControl} from '@angular/forms';\n\nimport { FieldType } from '@ngx-formly/core';\nimport {Observable, Subject, Subscription} from 'rxjs';\nimport {finalize, first} from 'rxjs/operators';\n\nimport {FilterMatchType, QueryParamBuilder} from '../../../../../api/models';\nimport {FieldLookupDescriptor} from '../../../../../models/descriptors';\n\n@Component({\n selector: 'mng-formly-field-autocomplete',\n templateUrl: './formly-field-autocomplete.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldAutocompleteComponent<T> extends FieldType implements OnInit {\n\n public aFormControl!: FormControl;\n public descriptor!: FieldLookupDescriptor<T, any>;\n\n public suggestionsSubject: Subject<Array<any>> = new Subject<Array<any>>();\n public suggestionsAsync: Observable<Array<any>> = this.suggestionsSubject.asObservable();\n public searchSubscription: Subscription|null = null;\n public isLoading = false;\n\n private dataProviderService: any = null;\n\n constructor(private injector: Injector) {\n super();\n }\n\n public ngOnInit() {\n\n this.aFormControl = this.formControl as FormControl;\n this.descriptor = this.to['descriptor'];\n if (this.descriptor.dataProvider) {\n this.dataProviderService = this.descriptor.dataProvider.serviceType\n ? this.injector.get<any>(this.descriptor.dataProvider.serviceType)\n : null;\n }\n }\n\n onSearch(event: any) {\n if (this.searchSubscription) {\n // try to cancel existing HTTP request subscription\n this.searchSubscription.unsubscribe();\n }\n\n if (this.descriptor.dataProvider) {\n this.isLoading = true;\n const queryParamBuilder = QueryParamBuilder.create(10);\n if (this.descriptor.itemsLabelProperty) {\n queryParamBuilder.withSort(this.descriptor.itemsLabelProperty);\n }\n if (event.query && event.query.length > 0 && this.descriptor.itemsLabelProperty) {\n queryParamBuilder.withFilter(this.descriptor.itemsLabelProperty, event.query, undefined, FilterMatchType.StartsWith)\n }\n this.searchSubscription = this.descriptor.dataProvider.lookup(queryParamBuilder.build(), this.dataProviderService, event.query)\n .pipe(\n first(),\n finalize(() => this.isLoading = false)\n )\n .subscribe(res => {\n this.suggestionsSubject.next(res);\n });\n }\n }\n}\n","<p-autoComplete [id]=\"key\"\n [formControl]=\"aFormControl\"\n [suggestions]=\"(suggestionsAsync | async) ?? []\"\n (completeMethod)=\"onSearch($event)\"\n [field]=\"$any(descriptor.itemsLabelProperty)\"\n [dropdown]=\"true\"\n [showEmptyMessage]=\"true\" [emptyMessage]=\"'fields.noMatches' | translate \"\n dropdownMode=\"current\">\n</p-autoComplete>\n","import {Component, ChangeDetectionStrategy, OnInit} from '@angular/core';\nimport {FormControl} from '@angular/forms';\n\nimport { FieldType } from '@ngx-formly/core';\n\nimport {FieldInputDescriptor} from '../../../../../models/descriptors';\n\n@Component({\n selector: 'mng-formly-field-input',\n templateUrl: './formly-field-input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyFieldInputComponent extends FieldType implements OnInit {\n\n public iFormControl!: FormControl;\n public descriptor!: FieldInputDescriptor<any>;\n\n ngOnInit(): void {\n this.iFormControl = this.formControl as FormControl;\n this.descriptor = this.to['descriptor'];\n }\n}\n","<ng-container [ngSwitch]=\"to.type\">\n <p-inputNumber *ngSwitchCase=\"'number'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"$any(descriptor.numberMin)\"\n [max]=\"$any(descriptor.numberMax)\"\n [step]=\"$any(descriptor.numberStep)\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\">\n </p-inputNumber>\n\n <div *ngSwitchCase=\"'switch'\" class=\"flex flex-column\">\n <label [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <p-inputSwitch [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\">\n </p-inputSwitch>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n </div>\n\n <ng-container *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let category of descriptor.radioOptions\" [id]=\"$any(key)\" class=\"p-field-radiobutton\">\n <p-radioButton [value]=\"category\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\"></p-radioButton>\n <label [for]=\"category\" class=\"mng-radio-button-label\">{{category}}</label>\n </div>\n </ng-container>\n\n <textarea *ngSwitchCase=\"'textarea'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pInputTextarea>\n </textarea>\n\n <p-calendar *ngSwitchCase=\"'datepicker'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"$any(descriptor.datePickerFormat)\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [showIcon]=\"true\">\n </p-calendar>\n\n <input *ngSwitchDefault\n pInputText\n [id]=\"$any(key)\"\n [type]=\"to.type || 'text'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n />\n</ng-container>\n","import {Component, ChangeDetectionStrategy, Injector} from '@angular/core';\nimport {FormControl} from '@angular/forms';\n\nimport { FieldType } from '@ngx-formly/core';\nimport {Observable, ReplaySubject, Subject} from 'rxjs';\nimport {first} from 'rxjs/operators';\n\nimport {FieldLookupDescriptor} from '../../../../../models/descriptors';\n\n@Component({\n selector: 'mng-formly-field-dropdown',\n templateUrl: './formly-field-dropdown.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyFieldDropdownComponent<T> extends FieldType {\n\n public dFormControl!: FormControl;\n public descriptor!: FieldLookupDescriptor<T, any>;\n\n public itemsSubject: Subject<Array<any>> = new ReplaySubject<Array<any>>(1);\n public itemsAsync: Observable<Array<any>> = this.itemsSubject.asObservable();\n\n public useDataProvider: boolean = false;\n private dataProviderService: any = null;\n\n constructor(private injector: Injector) {\n super();\n }\n\n public ngOnInit() {\n\n this.dFormControl = this.formControl as FormControl;\n this.descriptor = this.to['descriptor'];\n if (this.descriptor.dataProvider) {\n this.useDataProvider = true;\n if (this.descriptor.dataProvider.serviceType) {\n this.dataProviderService = this.injector.get<any>(this.descriptor.dataProvider.serviceType);\n }\n this.descriptor.dataProvider.lookup(undefined, this.dataProviderService)\n .pipe(\n first()\n )\n .subscribe(res => {\n this.itemsSubject.next(res);\n });\n }\n\n if (!this.formControl.value) {\n this.itemsAsync.pipe(first()).subscribe(res => {\n // TODO: check if really only way\n if (res.length === 1) {\n const value = this.descriptor.itemsValueProperty ? res[0][this.descriptor.itemsValueProperty] : res[0];\n this.formControl.patchValue(value);\n console.log('patched dropdown form value with', value);\n }\n });\n }\n }\n}\n","<p-dropdown [id]=\"$any(key)\"\n [placeholder]=\"$any(descriptor.placeholder)\"\n [options]=\"(itemsAsync | async) ?? []\"\n [optionLabel]=\"$any(descriptor.itemsLabelProperty)\"\n [optionLabel]=\"$any(descriptor.itemsValueProperty)\"\n [formControl]=\"dFormControl\"\n [formlyAttributes]=\"field\"\n [showClear]=\"!this.to.required\"\n [dataKey]=\"$any(descriptor.dataKeyProperty)\">\n</p-dropdown>\n","import {FormlyFieldConfig} from '@ngx-formly/core';\n\nimport {FieldLookupDescriptor,\n EditorDescriptor,\n FieldLookupEnumDescriptor,\n AFieldDescriptor,\n FieldTabGroupDescriptor,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor,\n FieldInputDescriptor,\n FieldGroupDescriptor\n} from '../models/descriptors';\n\nexport class EditorFormlyUtil {\n public static createFormlyConfigFromDescriptor(descriptor: EditorDescriptor<any>): FormlyFieldConfig[] {\n const fields: FormlyFieldConfig[] = [];\n\n if (descriptor.tabs.length === 1 && descriptor.tabs[0].default) {\n // dont use tabs\n fields.push(...EditorFormlyUtil.createFormlyGroupType(descriptor.tabs[0].fields));\n } else {\n fields.push(...EditorFormlyUtil.createFormlyTabType(descriptor.tabs));\n }\n\n return fields;\n }\n\n public static createFormlyTabType(tabGroups: FieldTabGroupDescriptor<any>[]): FormlyFieldConfig[] {\n const tabsField: FormlyFieldConfig = {\n type: 'tabs',\n fieldGroup: []\n };\n for (const tab of tabGroups) {\n const tabField: FormlyFieldConfig = {\n id: tab.name,\n templateOptions: {},\n fieldGroup: []\n };\n if (tab.title) { // @ts-ignore\n tabField.templateOptions.label = tab.title;\n }\n // @ts-ignore\n tabField.fieldGroup.push(...EditorFormlyUtil.createFormlyGroupType(tab.fields));\n // @ts-ignore\n tabsField.fieldGroup.push(tabField);\n }\n return [tabsField];\n }\n\n public static createFormlyGroupType(groups: FieldGroupDescriptor<any>[]): FormlyFieldConfig[] {\n if (groups.length === 1 && groups[0].default) {\n // dont use fieldset, just create fields\n return EditorFormlyUtil.createFormlyFields(groups[0]);\n } else {\n const groupsField: FormlyFieldConfig = {\n type: 'fieldset',\n fieldGroup: []\n };\n for (const group of groups) {\n const groupField: FormlyFieldConfig = {\n id: group.name,\n templateOptions: {\n descriptor: group\n },\n fieldGroup: []\n };\n if (group.title) { // @ts-ignore\n groupField.templateOptions.label = group.title;\n }\n // @ts-ignore\n groupField.fieldGroup.push(...EditorFormlyUtil.createFormlyFields(group));\n // @ts-ignore\n groupsField.fieldGroup.push(groupField);\n }\n return [groupsField];\n }\n }\n\n public static createFormlyFields(descriptor: FieldGroupDescriptor<any>): FormlyFieldConfig[] {\n const fields: FormlyFieldConfig[] = [];\n for (const descriptorField of descriptor.fields) {\n fields.push(EditorFormlyUtil.createFormlyField(descriptorField));\n }\n // wrap in group to be able to use flex grid\n const wrapperGroup = {\n fieldGroupClassName: 'p-fluid formgrid grid',\n fieldGroup: fields,\n validators: {}\n };\n\n for (const validator of descriptor.validators) {\n // TODO: resolve ts ignore\n // @ts-ignore\n wrapperGroup.validators[validator.name] = {expression: validator.expression, message: validator.message};\n }\n\n return [wrapperGroup];\n }\n\n public static createFormlyField(descriptor: AFieldDescriptor<any, any>): FormlyFieldConfig {\n const field: FormlyFieldConfig = {\n key: descriptor.property,\n expressionProperties: {},\n templateOptions: {},\n validators: {}\n };\n\n let className = descriptor.className;\n if (!className) {\n // assign default field width through entire row\n className = 'col-12';\n }\n if (className.indexOf('col-') < 0) {\n // class was provided, but does not contain col- definition\n className = `col-12 ${descriptor.className}`;\n }\n field.className = className;\n\n // @ts-ignore\n field.templateOptions.descriptor = descriptor;\n if (descriptor instanceof FieldInputDescriptor) {\n switch (descriptor.fieldType) {\n case FieldInputDescriptor.TypeEnum.Textarea:\n field.type = 'textarea';\n break;\n case FieldInputDescriptor.TypeEnum.Number:\n field.type = 'number';\n // @ts-ignore\n field.templateOptions.min = descriptor.numberMin;\n // @ts-ignore\n field.templateOptions.max = descriptor.numberMax;\n break;\n case FieldInputDescriptor.TypeEnum.Switch:\n field.type = 'switch';\n break;\n case FieldInputDescriptor.TypeEnum.Radio:\n field.type = 'radio';\n break;\n case FieldInputDescriptor.TypeEnum.Datepicker:\n field.type = 'datepicker';\n break;\n default:\n field.type = 'input';\n break;\n }\n } else if (descriptor instanceof FieldLookupEnumDescriptor) {\n field.type = 'enum';\n } else if (descriptor instanceof FieldLookupDescriptor) {\n switch (descriptor.fieldType) {\n case FieldLookupDescriptor.TypeEnum.Autocomplete:\n field.type = 'autocomplete';\n break;\n case FieldLookupDescriptor.TypeEnum.Dropdown:\n default:\n field.type = 'dropdown';\n break;\n }\n } else if (descriptor instanceof FieldManyToManyEditorDescriptor) {\n field.type = 'table-dialog-multiselect';\n } else if (descriptor instanceof FieldManyEditorDescriptor) {\n field.type = 'table-dialog-form';\n }\n\n if (descriptor.label) { // @ts-ignore\n field.templateOptions.label = descriptor.label;\n }\n if (descriptor.required) { // @ts-ignore\n field.templateOptions.required = true;\n }\n if (descriptor.disabled) { // @ts-ignore\n field.templateOptions.disabled = true;\n } else { // @ts-ignore\n field.expressionProperties['templateOptions.disabled'] = 'formState.disabled';\n }\n\n for (const validator of descriptor.validators) {\n field.validators[validator.name] = {expression: validator.expression, message: validator.message};\n }\n\n return field;\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\nimport {first, map, mergeMap} from 'rxjs/operators';\n\nimport {ModelDescriptor, ActionDescriptor} from '../models/descriptors';\n\nexport class I18nUtil {\n\n public static instantActionTranslation(translate: TranslateService, action: ActionDescriptor<any>, keyPath: string, customKey?: string, item?: any, fallbackKey?: string): string|null {\n const keys = I18nUtil.getActionKeysByPriority(action, keyPath, customKey, fallbackKey);\n const i18nModelName = I18nUtil.instantModelName(translate, action?.model, true);\n const i18n = translate.instant(keys, I18nUtil.getActionI18nParams(action, item, i18nModelName));\n return I18nUtil.selectKeyByPriority(keys, i18n);\n }\n\n public static streamActionTranslation(translate: TranslateService, action: ActionDescriptor<any>, keyPath: string, customKey?: string, item?: any, fallbackKey?: string): Observable<string|null> {\n return I18nUtil.getActionTranslation(translate, action, keyPath, customKey, item, fallbackKey, false);\n }\n\n public static getActionTranslation(translate: TranslateService, action: ActionDescriptor<any>, keyPath: string, customKey?: string, item?: any, fallbackKey?: string, oneTime: boolean = true): Observable<string|null> {\n const keys = I18nUtil.getActionKeysByPriority(action, keyPath, customKey, fallbackKey);\n return I18nUtil.getModelName(translate, action?.model, oneTime, true).pipe(\n mergeMap(i18nModelName => translate.get(keys, I18nUtil.getActionI18nParams(action, item, i18nModelName ?? undefined))),\n map(i18n => I18nUtil.selectKeyByPriority(keys, i18n))\n );\n }\n\n private static getActionKeysByPriority(action: ActionDescriptor<any>, keyPath: string, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n const modelActionKey = `${action.i18nModelActionBaseKey}.${keyPath}`;\n const actionKey = `${action.actionName}.${keyPath}`;\n keys.push(modelActionKey, actionKey);\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n }\n\n public static getActionI18nParams(action: ActionDescriptor<any>, item: any, i18nModelName?: string) {\n const i18nParams: any = {\n itemId: '',\n itemTitle: ''\n };\n if (i18nModelName) {\n i18nParams.modelName = i18nModelName;\n }\n if (item) {\n if (action.model.idPropertyName && item[action.model.idPropertyName]) {\n i18nParams.itemId = item[action.model.idPropertyName];\n }\n if (action.model.titlePropertyName && item[action.model.titlePropertyName]) {\n i18nParams.itemTitle = item[action.model.titlePropertyName];\n }\n }\n return i18nParams;\n }\n\n public static instantModelName(translate: TranslateService, model: ModelDescriptor<any>, singular?: boolean): string {\n return translate.instant(I18nUtil.getModelNameKeys(model, singular));\n }\n\n public static getModelName(translate: TranslateService, model: ModelDescriptor<any>, oneTime: boolean = true, singular?: boolean): Observable<string|null> {\n const keys = I18nUtil.getModelNameKeys(model, singular);\n const obs = translate.stream(keys);\n if (oneTime) {\n obs.pipe(first())\n }\n return obs.pipe(map(i18n => I18nUtil.selectKeyByPriority(keys, i18n)));\n }\n\n public static getModelNameKeys(model: ModelDescriptor<any>, singular?: boolean) {\n let keys = [];\n if (singular !== undefined) {\n keys.push(singular ? `${model?.typeName}.nameSingular` : `${model?.typeName}.namePlural`);\n }\n keys.push(`${model?.typeName}.name`);\n return keys;\n }\n\n private static selectKeyByPriority(keys: string[], i18n: any): string|null {\n for (const key of keys) {\n if (key !== i18n[key]) {\n return i18n[key];\n }\n }\n return null;\n }\n}\n","import {AttributeDef, enumsMapBase, SerializableTypeMap, typeMapBase} from '../models';\nimport {ClassType} from '../../models/types';\nimport {TypeUtil} from '../../utils';\n\nexport class ObjectSerializer {\n\n private readonly _primitives: string[] = [\n 'string',\n 'boolean',\n 'double',\n 'integer',\n 'long',\n 'float',\n 'number',\n 'any'\n ];\n private readonly _typeMap: SerializableTypeMap = {\n ...typeMapBase\n }\n private readonly _enumMap: SerializableTypeMap = {\n ...enumsMapBase\n }\n\n private static _instance: ObjectSerializer = new ObjectSerializer();\n\n /**\n * Only use one instance of object (out of Angular context)\n */\n public static get(): ObjectSerializer {\n return ObjectSerializer._instance;\n }\n\n public get primitives() { return this._primitives }\n public get typeMap() { return this._typeMap }\n public get enumMap() { return this._enumMap }\n\n public findAttributeDefinitionByClassType(type: ClassType<any>, attributeName: string): AttributeDef|null {\n return this.findAttributeDefinition(TypeUtil.findTypeName(type), attributeName);\n }\n public findAttributeDefinition(typeName: string, attributeName: string): AttributeDef|null {\n const attributeDefs = this.findAttributesDefinition(typeName);\n if (!attributeDefs) {\n return null;\n }\n for (let attribute of attributeDefs) {\n if (attribute.name === attributeName) {\n return attribute;\n }\n }\n return null;\n }\n public findAttributesDefinitionByClassType(type: ClassType<any>): Array<AttributeDef>|null {\n return this.findAttributesDefinition(TypeUtil.findTypeName(type));\n }\n public findAttributesDefinition(typeName: string): Array<AttributeDef>|null {\n const typeDef = this.findType(typeName);\n if (!typeDef) {\n return null;\n }\n return typeDef.getAttributeTypeMap() as Array<AttributeDef>;\n }\n public findByClassType(type: ClassType<any>): any {\n return this.findType(TypeUtil.findTypeName(type));\n }\n public findType(typeName: string): any {\n return this._typeMap[typeName];\n }\n public findEnum(enumName: string): any {\n return this._enumMap[enumName];\n }\n\n public registerTypes(types: SerializableTypeMap) {\n for (const key in types) {\n this.registerType(types[key], key);\n }\n }\n\n public registerType(type: ClassType<any>, optTypeName?: string) {\n // try to find name from decorator\n let typeName = TypeUtil.getDecoratorTypeName(type);\n if (!typeName) {\n // defined name from optional type name\n typeName = optTypeName;\n if (!typeName) {\n console.warn(`Registering type ${type} failed, because typeName could not be determined and optional name was not provided.`);\n return;\n }\n }\n if (typeof this._typeMap[typeName] !== 'undefined') {\n console.warn(`Registering type ${type} under key ${typeName} skipped, because type already exists for this key.`);\n } else {\n TypeUtil.defineReflectTypeName(type, typeName);\n this._typeMap[typeName] = type;\n }\n }\n\n public registerEnums(enums: SerializableTypeMap) {\n for (const key in enums) {\n if (typeof this._enumMap[key] !== 'undefined') {\n console.warn(`Registering enum ${key} skipped, because enum already exists.`);\n } else {\n this._enumMap[key] = enums[key];\n }\n }\n }\n\n public findCorrectType(data: any, expectedType: string) {\n if (data == undefined) {\n return expectedType;\n } else if (this._primitives.indexOf(expectedType.toLowerCase()) !== -1) {\n return expectedType;\n } else if (expectedType === 'Date') {\n return expectedType;\n } else {\n if (this._enumMap[expectedType]) {\n return expectedType;\n }\n\n if (!this._typeMap[expectedType]) {\n return expectedType; // w/e we don't know the type\n }\n\n // Check the discriminator\n const discriminatorProperty = this._typeMap[expectedType].discriminator;\n if (discriminatorProperty == null) {\n return expectedType; // the type does not have a discriminator. use it.\n } else {\n if (data[discriminatorProperty]) {\n const discriminatorType = data[discriminatorProperty];\n if (this._typeMap[discriminatorType]) {\n return discriminatorType; // use the type given in the discriminator\n } else {\n return expectedType; // discriminator did not map to a type\n }\n } else {\n return expectedType; // discriminator was not present (or an empty string)\n }\n }\n }\n }\n\n public serializeClass<T>(data: any, type: ClassType<T>) {\n return this.serialize(data, TypeUtil.findTypeName(type));\n }\n public serialize(data: any, type: string) {\n if (data == undefined) {\n return data;\n } else if (this._primitives.indexOf(type.toLowerCase()) !== -1) {\n return data;\n } else if (type.lastIndexOf('Array<', 0) === 0) { // string.startsWith pre es6\n let subType: string = type.replace('Array<', ''); // Array<Type> => Type>\n subType = subType.substring(0, subType.length - 1); // Type> => Type\n const transformedData: any[] = [];\n // tslint:disable-next-line:prefer-for-of\n for (let index = 0; index < data.length; index++) {\n const datum = data[index];\n transformedData.push(this.serialize(datum, subType));\n }\n return transformedData;\n } else if (type === 'Date') {\n return data.toISOString();\n } else {\n if (this._enumMap[type]) {\n return data;\n }\n if (!this._typeMap[type]) { // in case we dont know the type\n return data;\n }\n\n // Get the actual type of this object\n type = this.findCorrectType(data, type);\n\n // get the map for the correct type.\n const attributeTypes = this._typeMap[type].getAttributeTypeMap() as Array<AttributeDef>;\n const instance: {[index: string]: any} = {};\n // tslint:disable-next-line:prefer-for-of\n for (let index = 0; index < attributeTypes.length; index++) {\n const attributeType = attributeTypes[index];\n instance[attributeType.baseName] = this.serialize(data[attributeType.name],\n attributeType.type);\n }\n return instance;\n }\n }\n\n public deserializeClass<T>(data: any, type: ClassType<T>) {\n return this.deserialize(data, TypeUtil.findTypeName(type));\n }\n public deserialize(data: any, type: string) {\n // polymorphism may change the actual type.\n type = this.findCorrectType(data, type);\n if (data == undefined) {\n return data;\n } else if (this._primitives.indexOf(type.toLowerCase()) !== -1) {\n return data;\n } else if (type.lastIndexOf('Array<', 0) === 0) { // string.startsWith pre es6\n let subType: string = type.replace('Array<', ''); // Array<Type> => Type>\n subType = subType.substring(0, subType.length - 1); // Type> => Type\n const transformedData: any[] = [];\n // tslint:disable-next-line:prefer-for-of\n for (let index = 0; index < data.length; index++) {\n const datum = data[index];\n transformedData.push(this.deserialize(datum, subType));\n }\n return transformedData;\n } else if (type === 'Date') {\n return new Date(data);\n } else {\n if (this._enumMap[type]) {// is Enum\n return data;\n }\n\n if (!this._typeMap[type]) { // dont know the type\n return data;\n }\n const instance = new this._typeMap[type]();\n const attributeTypes = this._typeMap[type].getAttributeTypeMap() as Array<AttributeDef>;\n // tslint:disable-next-line:prefer-for-of\n for (let index = 0; index < attributeTypes.length; index++) {\n const attributeType = attributeTypes[index];\n instance[attributeType.name] = this.deserialize(data[attributeType.baseName],\n attributeType.type);\n }\n return instance;\n }\n }\n}\n","import {FilterMetadata, LazyLoadEvent} from 'primeng/api';\n\nimport {FilterMatchType, QueryParam, QueryParamBuilder} from '../models';\n\nexport class MediusRestUtil {\n\n public static fromLazyLoadEventToQueryParams(event: LazyLoadEvent): QueryParam {\n\n const queryParamBuilder = QueryParamBuilder.create(event.rows, event.first);\n\n // apply sorting\n if (event.multiSortMeta) {\n event.multiSortMeta.forEach(msm => queryParamBuilder.withSort(msm.field, msm.order === 1));\n }\n\n // apply filtering\n if (event.filters) {\n for (const key of Object.keys(event.filters)) {\n const filterEvent = event.filters[key];\n if (Array.isArray(filterEvent)) {\n (filterEvent as FilterMetadata[]).filter(e => e.value)\n .forEach(e => MediusRestUtil.addFilterFromFilterMetadata(queryParamBuilder, key, e));\n } else if (typeof filterEvent === 'object') {\n if (filterEvent.value) {\n MediusRestUtil.addFilterFromFilterMetadata(queryParamBuilder, key, filterEvent);\n }\n }\n }\n }\n\n return queryParamBuilder.build();\n }\n\n public static addFilterFromFilterMetadata(queryParamBuilder: QueryParamBuilder, property: string, filterMetadata: FilterMetadata) {\n\n let matchType: FilterMatchType;\n\n switch (filterMetadata.matchMode) {\n case 'startsWith':\n matchType = FilterMatchType.StartsWith;\n break;\n case 'endsWith':\n matchType = FilterMatchType.EndsWith;\n break;\n case 'equals':\n matchType = FilterMatchType.Equals;\n break;\n case 'notEquals':\n matchType = FilterMatchType.NotEquals;\n break;\n case 'in':\n matchType = FilterMatchType.In;\n break;\n case 'notIn':\n matchType = FilterMatchType.NotIn;\n break;\n case 'notContains':\n case 'lt':\n case 'lte':\n case 'gt':\n case 'gte':\n case 'is':\n case 'isNot':\n case 'before':\n case 'after':\n case 'dateIs':\n case 'dateIsNot':\n case 'dateBefore':\n case 'dateAfter':\n case 'between':\n throw new Error(`Match mode ${filterMetadata.matchMode} not implemented.`);\n case 'contains':\n default:\n matchType = FilterMatchType.Contains;\n break;\n }\n\n queryParamBuilder.withFilter(property, filterMetadata.value, undefined, matchType);\n }\n}\n","import {ClassType} from '../models/types';\n\nimport {ObjectSerializer} from '../api/utils';\n\nexport class ModelUtil {\n public static findIdAttribute<T>(classType: ClassType<T>): string|null {\n const objSerializer = ObjectSerializer.get();\n const attributes = objSerializer.findAttributesDefinitionByClassType(classType);\n if (!attributes) {\n return null;\n }\n\n let idAttribute = attributes.find(a => a.name === 'id');\n if (!idAttribute) {\n // if no id, try with code\n idAttribute = attributes.find(a => a.name === 'code');\n if (!idAttribute) {\n // if no id or code, take the first attribute\n idAttribute = attributes[0];\n }\n }\n\n return idAttribute?.name ?? null;\n }\n\n public static findTitleAttribute<T>(classType: ClassType<T>): string|null {\n const objSerializer = ObjectSerializer.get();\n const attributes = objSerializer.findAttributesDefinitionByClassType(classType);\n if (!attributes) {\n return null;\n }\n\n let titleAttribute = attributes.find(a => a.type === 'string' && a.name === 'name');\n if (!titleAttribute) {\n // if no name, try with title\n titleAttribute = attributes.find(a => a.type === 'string' && a.name === 'title');\n if (!titleAttribute) {\n // if no name or title, take the first attribute\n titleAttribute = attributes[0];\n }\n }\n\n return titleAttribute?.name ?? null;\n }\n}\n","export const typeNameDecoratorPropertyName = 'typeName';\n\nexport function TypeName(typeName: string): ClassDecorator {\n return function(target) {\n // @ts-ignore\n target[typeNameDecoratorPropertyName] = typeName;\n }\n}\n","import 'reflect-metadata';\n\nimport {ClassType, typeNameDecoratorPropertyName} from '../models/types';\n\nexport class TypeUtil {\n\n public static defineReflectTypeName(targetType: ClassType<any>, typeName?: string) {\n if (!typeName) {\n typeName = TypeUtil.getDecoratorTypeName(targetType);\n if (!typeName) {\n console.warn(`Type name not provided for target ${targetType}, nor could be retrieved from decorator. Type name was not registered to reflect.`);\n return;\n }\n }\n // @ts-ignore\n if (!Reflect.hasOwnMetadata(typeNameDecoratorPropertyName, targetType)) {\n // @ts-ignore\n Reflect.defineMetadata(typeNameDecoratorPropertyName, typeName, targetType);\n }\n }\n\n /**\n * Gets type name from either decorator or reflect metadata.\n * @param type Class.\n */\n public static findTypeName(type: ClassType<any>): string {\n let decoratorName = TypeUtil.getDecoratorTypeName(type);\n if (decoratorName) {\n return decoratorName;\n }\n // @ts-ignore\n decoratorName = Reflect.getMetadata(typeNameDecoratorPropertyName, type);\n if (decoratorName) {\n return decoratorName;\n }\n return type.name;\n }\n\n /**\n * Get value from decorator defined property name\n * @param type Class.\n */\n public static getDecoratorTypeName(type: Function): string|undefined {\n // @ts-ignore\n return type[typeNameDecoratorPropertyName];\n }\n}\n","import {Observable, of, throwError} from 'rxjs';\n\nimport {ClassType} from '../types';\nimport {EditorDescriptor, ModelDescriptor} from '../descriptors';\nimport {IDataProvider, IEditorDataProvider} from '../providers';\nimport {ActionExecContext} from '../action';\nimport {TypeUtil} from '../../utils';\n\nexport class ActionDescriptor<T> {\n protected readonly _model: ModelDescriptor<T>;\n protected readonly _actionName: string;\n protected readonly _parentType?: ClassType<any>;\n protected readonly _parentTypeName?: string;\n protected readonly _parentProperty?: string;\n protected readonly _i18nModelActionBaseKey: string;\n\n protected _type: ActionTypeEnum = ActionTypeEnum.Direct;\n protected _activationTrigger: ActionActivationTriggerEnum = ActionActivationTriggerEnum.OnClick;\n protected _position: ActionPositionEnum = ActionPositionEnum.ToolbarRight;\n protected _level: ActionLevelEnum = ActionLevelEnum.Default;\n\n protected _routeUrl: string|null = null;\n\n protected _title?: string|null;\n protected _icon?: string;\n\n protected _className: string = '';\n protected _runFunction?: (ctx: ActionExecContext<T, any, IDataProvider<T, any>>) => Observable<T>;\n protected _isVisibleFunction?: (ctx: ActionExecContext<T, any, IDataProvider<T, any>>) => Observable<boolean>;\n protected _isEnabledFunction?: (ctx: ActionExecContext<T, any, IDataProvider<T, any>>) => Observable<boolean>;\n\n private _hasRunConfirmation: boolean = false;\n private _runConfirmationIcon?: string;\n private _runConfirmationTitle?: string;\n private _runConfirmationMessage?: string;\n private _runConfirmationAcceptTitle?: string;\n private _runConfirmationRejectTitle?: string;\n\n // TODO: messages on end\n // TODO: on action finish\n\n constructor(model: ModelDescriptor<T>, actionName: string, parentType?: ClassType<any>, parentProperty?: string) {\n this._model = model;\n this._actionName = actionName;\n\n if ((parentType && !parentProperty) || (!parentProperty && parentProperty)) {\n throw new Error(`Provide both the parent type and parent property or none: ${parentType}, ${parentProperty}.`);\n }\n this._parentType = parentType;\n this._parentTypeName = parentType ? TypeUtil.findTypeName(parentType) : undefined;\n this._parentProperty = parentProperty;\n\n this._i18nModelActionBaseKey = this._parentTypeName\n ? `${this._parentTypeName}.actions.${this._parentProperty}_${actionName}`\n : `${this._model.typeName}.actions.${actionName}`;\n }\n\n public get model() {\n return this._model;\n }\n\n public get parentTypeName() {\n return this._parentTypeName;\n }\n\n public get parentProperty() {\n return this._parentProperty;\n }\n\n public get i18nModelActionBaseKey() {\n return this._i18nModelActionBaseKey;\n }\n\n public get type() {\n return this._type;\n }\n\n public get activationTrigger() {\n return this._activationTrigger;\n }\n\n public get position() {\n return this._position;\n }\n\n public get level() {\n return this._level;\n }\n\n public get routeUrl() {\n return this._routeUrl;\n }\n\n public get title() {\n return this._title;\n }\n\n public get icon() {\n return this._icon;\n }\n\n public get runFunction(): (ctx: ActionExecContext<T, any, IDataProvider<T, any>>) => Observable<T> {\n if (!this._runFunction) {\n throw new Error('Run function is not defined and cannot be invoked');\n }\n return this._runFunction;\n }\n\n public get isVisibleFunction() {\n return this._isVisibleFunction;\n }\n\n public get isEnabledFunction() {\n return this._isEnabledFunction;\n }\n\n public get actionName() {\n return this._actionName;\n }\n\n public get className() {\n return this._className;\n }\n\n get hasRunConfirmation() {\n return this._hasRunConfirmation;\n }\n\n get runConfirmationIcon() {\n return this._runConfirmationIcon;\n }\n\n get runConfirmationTitle() {\n return this._runConfirmationTitle;\n }\n\n get runConfirmationMessage() {\n return this._runConfirmationMessage;\n }\n\n get runConfirmationAcceptTitle() {\n return this._runConfirmationAcceptTitle;\n }\n\n get runConfirmationRejectTitle() {\n return this._runConfirmationRejectTitle;\n }\n\n public withRunFunction<S>(fn: (ctx: ActionExecContext<T, S, IDataProvider<T, S>>) => Observable<T>): this {\n this._runFunction = fn;\n return this;\n }\n\n public withIsVisibleFunction<S>(fn: (ctx: ActionExecContext<T, S, IDataProvider<T, S>>) => Observable<boolean>): this {\n this._isVisibleFunction = fn;\n return this;\n }\n\n public withIsEnabledFunction<S>(fn: (ctx: ActionExecContext<T, S, IDataProvider<T, S>>) => Observable<boolean>): this {\n this._isEnabledFunction = fn;\n return this;\n }\n\n public withRouteTrigger(routeUrl: string): this {\n this._activationTrigger = ActionActivationTriggerEnum.OnRoute;\n this._routeUrl = routeUrl;\n return this;\n }\n\n public withLevel(level: ActionLevelEnum): this {\n this._level = level;\n return this;\n }\n\n /**\n * Overrides default title key with model action key (${model.typeName}.actions.${actionName}). Not relevant if parentType name is provided.\n */\n public withModelTitle(): this {\n this._title = `${this._i18nModelActionBaseKey}.title`;\n return this;\n }\n\n /**\n * Overrides default title key (${actionName}.title). If null, no title will be shown.\n * @param title Title i18n key or title.\n */\n public withTitle(title: string|null): this {\n this._title = title;\n return this;\n }\n\n public withIcon(icon: string): this {\n this._icon = icon;\n return this;\n }\n\n public withClassName(className: string): this {\n this._className = className;\n return this;\n }\n\n public withPosition(position: ActionPositionEnum): this {\n this._position = position;\n return this;\n }\n\n public withRunConfirmation(icon: string = 'pi pi-exclamation-triangle', title?: string, message?: string, acceptTitle?: string, rejectTitle?: string): this {\n this._hasRunConfirmation = true;\n this._runConfirmationIcon = icon;\n this._runConfirmationTitle = title;\n this._runConfirmationMessage = message;\n this._runConfirmationAcceptTitle = acceptTitle;\n this._runConfirmationRejectTitle = rejectTitle;\n return this;\n }\n}\n\nexport class ActionEditorDescriptor<T> extends ActionDescriptor<T> {\n\n private readonly _editorDescriptor: EditorDescriptor<T>;\n\n protected _editorTitle?: string = undefined;\n\n protected _fetchFunction?: (ctx: ActionExecContext<T, any, IEditorDataProvider<T, any>>) => Observable<T>;\n protected _submitFunction?: (ctx: ActionExecContext<T, any, IEditorDataProvider<T, any>>) => Observable<T>;\n\n constructor(editorDescriptor: EditorDescriptor<T>, actionName: string, parentType?: ClassType<any>, parentProperty?: string) {\n super(editorDescriptor.model, actionName, parentType, parentProperty);\n this._type = ActionTypeEnum.Editor;\n this._editorDescriptor = editorDescriptor;\n }\n\n public get editorTitle() {\n return this._editorTitle;\n }\n\n public get editorDescriptor() {\n return this._editorDescriptor;\n }\n\n public override get runFunction(): (ctx: ActionExecContext<T, any, IDataProvider<T, any>>) => Observable<T> {\n throw new Error('Run function cannot be used in editor action. Use submit function instead!');\n }\n\n public get fetchFunction(): (ctx: ActionExecContext<T, any, IEditorDataProvider<T, any>>) => Observable<T> {\n if (!this._fetchFunction) {\n return (ctx) => {\n console.warn(`Fetch function is not provided for function ${this._actionName}, using default and returning context item`, ctx.data?.item);\n return of(ctx.data?.item ? ctx.data.item : {} as T);\n }\n }\n return this._fetchFunction;\n }\n\n public get submitFunction() {\n return this._submitFunction;\n }\n\n public withEditorTitle(title: string): this {\n this._editorTitle = title;\n return this;\n }\n\n public override withRunFunction<S>(fn: (ctx: ActionExecContext<T, S, IDataProvider<T, S>>) => Observable<T>): this {\n return this.withSubmitFunction(fn as (ctx: ActionExecContext<T, S, IEditorDataProvider<T, S>>) => Observable<T>);\n return this;\n }\n\n public withFetchFunction<S>(fn: (ctx: ActionExecContext<T, S, IEditorDataProvider<T, S>>) => Observable<T>): this {\n this._fetchFunction = fn;\n return this;\n }\n\n public withSubmitFunction<S>(fn: (ctx: ActionExecContext<T, S, IEditorDataProvider<T, S>>) => Observable<T>): this {\n this._submitFunction = fn;\n return this;\n }\n}\n\nexport class ActionEditorDetailsDescriptor<T> extends ActionEditorDescriptor<T> {\n constructor(editorDescriptor: EditorDescriptor<T>) {\n super(editorDescriptor, 'details');\n this.withPosition(ActionPositionEnum.RowClick);\n this.withRouteTrigger(':itemId');\n this.withFetchFunction(ctx => ctx.dataProvider?.fetch && ctx.data?.itemId\n ? ctx.dataProvider.fetch(ctx.data?.itemId, ctx.serviceInstance)\n : throwError(new Error(`Data provider fetch function or item id ${ctx.data?.itemId} is missing.`)));\n this.withClassName('mng-details-dynamic-dialog');\n }\n}\n\nexport class ActionEditorAddDescriptor<T> extends ActionEditorDescriptor<T> {\n constructor(editorDescriptor: EditorDescriptor<T>) {\n super(editorDescriptor, 'add');\n this.withPosition(ActionPositionEnum.ToolbarLeft);\n this.withRouteTrigger('add');\n this.withSubmitFunction(ctx => ctx.dataProvider?.create\n ? ctx.dataProvider.create(ctx.data?.item, ctx.serviceInstance)\n : throwError(new Error(`Data provider create function is missing.`)));\n this.withLevel(ActionLevelEnum.Success);\n this.withIcon('pi pi-plus');\n this.withClassName('mng-details-dynamic-dialog');\n }\n}\n\nexport class ActionEditorEditDescriptor<T> extends ActionEditorDescriptor<T> {\n constructor(editorDescriptor: EditorDescriptor<T>) {\n super(editorDescriptor, 'edit');\n this.withPosition(ActionPositionEnum.RowInline);\n this.withTitle(null);\n this.withRouteTrigger(':itemId/edit');\n this.withFetchFunction(ctx => ctx.dataProvider?.fetch && ctx.data?.itemId\n ? ctx.dataProvider.fetch(ctx.data.itemId, ctx.serviceInstance)\n : throwError(new Error(`Data provider fetch function or item id ${ctx.data?.itemId} is missing.`)));\n this.withSubmitFunction(ctx => ctx.dataProvider?.update && ctx.data?.itemId\n ? ctx.dataProvider.update(ctx.data.itemId, ctx.data?.item, ctx.serviceInstance)\n : throwError(new Error(`Data provider update function or item id ${ctx.data?.itemId} is missing.`)));\n this.withIcon('pi pi-pencil');\n this.withClassName('mng-details-dynamic-dialog');\n }\n}\n\nexport class ActionDeleteDescriptor<T> extends ActionDescriptor<T> {\n constructor(model: ModelDescriptor<T>) {\n super(model, 'delete');\n this.withPosition(ActionPositionEnum.RowInline);\n this.withTitle(null);\n this.withRunFunction(ctx => {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<T, any>;\n return editorDataProvider?.delete && ctx.data?.itemId\n ? editorDataProvider.delete(ctx.data.itemId, ctx.data.item, ctx.serviceInstance)\n : throwError(new Error(`Data provider delete function or item id ${ctx.data?.itemId} is missing.`))\n });\n this.withLevel(ActionLevelEnum.Danger);\n this.withIcon('pi pi-trash');\n this.withRunConfirmation(undefined);\n }\n}\n\nexport enum ActionPositionEnum {\n ToolbarLeft,\n ToolbarRight,\n TableHeader,\n RowInline,\n RowClick\n}\n\nexport enum ActionActivationTriggerEnum {\n OnClick, // action is triggered for activation on click\n OnRoute // action is triggered for activation by route url\n}\n\nexport enum ActionTypeEnum {\n Direct, // action is directly activated and executed\n Editor // editor providing middle step for activation\n}\n\nexport enum ActionLevelEnum {\n Default,\n Primary,\n Secondary,\n Info,\n Help,\n Success,\n Warning,\n Danger\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, of, throwError} from 'rxjs';\n\nimport {QueryParam, QueryResult} from '../../api/models';\nimport {ClassType, IdType} from '../types';\n\nexport interface IDataProvider<T, S> {\n modelType: ClassType<T>|null;\n serviceType?: Type<S>;\n}\n\nexport interface ITableDataProvider<T, S> extends IDataProvider<T, S> {\n getAll: (queryParam: QueryParam, service?: S) => Observable<QueryResult<T>>;\n}\n\nexport interface IEditorDataProvider<T, S> extends IDataProvider<T, S> {\n fetch: (id: IdType, service?: S) => Observable<T>;\n create?: (item?: T, service?: S) => Observable<T>;\n update?: (id: IdType, item?: T, service?: S) => Observable<T>;\n delete?: (id: IdType, item?: T, service?: S) => Observable<T>;\n}\n\nexport interface ITableviewDataProvider<T, S> extends IEditorDataProvider<T, S> {\n getAll: (queryParam: QueryParam, service?: S) => Observable<QueryResult<T>>;\n}\n\nexport interface ILookupDataProvider<T, S> extends IDataProvider<T, S> {\n lookup: (queryParam?: QueryParam, service?: S, search?: string) => Observable<Array<T>>;\n}\n\nclass DataProvider<T, S> {\n\n protected _modelType: ClassType<T>|null;\n protected _serviceType?: Type<S>;\n protected _enumName?: string;\n\n constructor(modelType: ClassType<T>|null, serviceType?: Type<S>) {\n this._modelType = modelType;\n this._serviceType = serviceType;\n }\n\n public get serviceType() {\n return this._serviceType;\n }\n\n public get modelType() {\n return this._modelType;\n }\n\n public get enumName() {\n return this._enumName;\n }\n\n public withServiceType(type: Type<S>): this {\n this._serviceType = type;\n return this;\n }\n\n public withEnumName(enumName: string): this {\n this._enumName = enumName;\n return this;\n }\n}\n\nexport class LookupDataProvider<T, S> extends DataProvider<T, S> implements ILookupDataProvider<T, S> {\n\n protected _lookup: (queryParam?: QueryParam, service?: S, search?: string) => Observable<Array<T>> = () => of([]);\n\n constructor(modelType: ClassType<T>|null, serviceType?: Type<S>) {\n super(modelType, serviceType);\n }\n\n public get lookup() {\n return this._lookup;\n }\n\n public withLookup(lookup: (queryParam?: QueryParam, service?: S, search?: string) => Observable<Array<T>>): this {\n this._lookup = lookup;\n return this;\n }\n}\n\nexport class EditorDataProvider<T, S> extends DataProvider<T, S> implements IEditorDataProvider<T, S> {\n protected _fetch: (id: IdType, service?: S) => Observable<T> = (id) => throwError(`No fetch function provided for id ${id}.`);\n protected _create?: (item?: T, service?: S) => Observable<T>;\n protected _update?: (id: IdType, item?: T, service?: S) => Observable<T>;\n protected _delete?: (id: IdType, item?: T, service?: S) => Observable<T>;\n\n constructor(modelType: ClassType<T>, serviceType?: Type<S>) {\n super(modelType, serviceType);\n }\n\n public get fetch() {\n return this._fetch;\n }\n\n public get create() {\n return this._create;\n }\n\n public get update() {\n return this._update;\n }\n\n public get delete() {\n return this._delete;\n }\n\n public withFetch(fetch: (id: IdType, service?: S) => Observable<T>): this {\n this._fetch = fetch;\n return this;\n }\n\n public withCreate(create: (item?: T, service?: S) => Observable<T>): this {\n this._create = create;\n return this;\n }\n\n public withUpdate(update: (id: IdType, item?: T, service?: S) => Observable<T>): this {\n this._update = update;\n return this;\n }\n\n public withDelete(deleteFn: (id: IdType, item?: T, service?: S) => Observable<T>): this {\n this._delete = deleteFn;\n return this;\n }\n}\n\nexport class TableviewDataProvider<T, S> extends EditorDataProvider<T, S> implements ITableviewDataProvider<T, S>, ITableDataProvider<T, S>, IEditorDataProvider<T, S> {\n protected _getAll: (queryParam: QueryParam, service?: S) => Observable<QueryResult<T>> = (qp) => of(new QueryResult<T>());\n\n constructor(modelType: ClassType<T>, serviceType?: Type<S>) {\n super(modelType, serviceType);\n }\n\n public get getAll() {\n return this._getAll;\n }\n\n public withGetAll(getAll: (queryParam: QueryParam, service?: S) => Observable<QueryResult<T>>): this {\n this._getAll = getAll;\n return this;\n }\n}\n","import {AbstractControl} from '@angular/forms';\nimport {FormlyFieldConfig} from '@ngx-formly/core';\n\nimport {Observable} from 'rxjs';\n\nexport class FieldValidator {\n private readonly _name: string;\n private readonly _expression?: (control: AbstractControl) => boolean;\n private readonly _message?: (err: any, field: FormlyFieldConfig) => string | Observable<string>;\n private readonly _options?: { errorPath: string };\n\n constructor(name: string, expression?: (control: AbstractControl) => boolean,\n message?: (err: any, field: FormlyFieldConfig) => string | Observable<string>, options?: { errorPath: string }) {\n this._name = name;\n this._expression = expression;\n this._message = message;\n this._options = options;\n }\n\n public get name(): string {\n return this._name;\n }\n\n public get expression() {\n return this._expression;\n }\n\n public get message() {\n return this._message;\n }\n\n public get options() {\n return this._options;\n }\n}\n","import {Type} from '@angular/core';\nimport {AbstractControl} from '@angular/forms';\nimport {FormlyFieldConfig} from '@ngx-formly/core';\n\nimport {Observable, of} from 'rxjs';\n\nimport {ClassType, EnumMemberType} from '../../models/types';\nimport {ILookupDataProvider, ITableDataProvider, LookupDataProvider, TableviewDataProvider} from '../../models/providers';\nimport {ModelDescriptor, TableDescriptor, TableviewDescriptor} from '../../models/descriptors';\nimport {FieldValidator} from '../../models/validators';\n\nimport {QueryParam, QueryResult} from '../../api/models';\nimport {ObjectSerializer} from '../../api/utils';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nexport class EditorDescriptor<T> {\n\n public static readonly defaultGroupName = '_default';\n\n private readonly _model: ModelDescriptor<T>;\n private readonly _tabs: Array<FieldTabGroupDescriptor<T>> = [];\n private readonly _groups: Array<FieldGroupDescriptor<T>> = [];\n private readonly _fields: Array<AFieldDescriptor<any, T>> = [];\n private _currentTabGroup?: FieldTabGroupDescriptor<T>;\n private _currentGroup?: FieldGroupDescriptor<T>;\n\n private _disabled: boolean = false;\n\n constructor(modelType: ClassType<T>, idProperty?: string, titleProperty?: string) {\n this._model = new ModelDescriptor<T>(modelType, idProperty, titleProperty);\n }\n\n public get model() {\n return this._model;\n }\n\n public get tabs() {\n return this._tabs;\n }\n\n public get disabled() {\n return this._disabled;\n }\n\n public get fields() {\n return this._fields;\n }\n\n public createTabGroup(name: string, title?: string): FieldTabGroupDescriptor<T> {\n const tabGroup = new FieldTabGroupDescriptor<T>(this, name);\n if (title) {\n tabGroup.withTitle(title);\n }\n this.createTabGroupDescriptor(tabGroup);\n return tabGroup;\n }\n\n public createFieldGroup(name: string, title?: string): FieldGroupDescriptor<T> {\n const fieldGroup = new FieldGroupDescriptor<T>(this, name);\n if (title) {\n fieldGroup.withTitle(title);\n }\n this.createFieldGroupDescriptor(fieldGroup);\n return fieldGroup;\n }\n\n public addFieldDescriptor<FT>(field: AFieldDescriptor<FT, T>): this {\n this.createDefaultGroup();\n this._fields.push(field);\n this._currentGroup?.addField(field);\n return this;\n }\n\n public addField(property: string): FieldInputDescriptor<T> {\n const field = new FieldInputDescriptor<T>(this, property);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public removeField(property: string): this {\n const fieldIdx = this._fields.findIndex(f => f.property === property);\n if (fieldIdx < 0) {\n throw new Error(`Field ${property} does not exist.`);\n }\n const field = this._fields[fieldIdx];\n if (field.group) {\n const groupFieldIdx = field.group.fields.findIndex(f => f instanceof AFieldDescriptor && f.property === property);\n if (groupFieldIdx >= 0) {\n field.group.fields.splice(groupFieldIdx, 1);\n }\n }\n this._fields.splice(fieldIdx, 1);\n return this;\n }\n\n public getField(property: string): AFieldDescriptor<any, T>|null {\n return this._fields.find(f => f.property === property) ?? null;\n }\n\n public addFieldLookup<FT>(property: string, modelType: ClassType<FT>): FieldLookupDescriptor<FT, T> {\n const field = new FieldLookupDescriptor<FT, T>(this, property, modelType);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldLookupEnum(property: string, options: Array<EnumMemberType>): FieldLookupEnumDescriptor<T> {\n const propDef = ObjectSerializer.get().findAttributeDefinitionByClassType(this.model.type, property);\n if (!propDef) {\n throw new Error(`Property (attribute) definition not found for property ${property} on class type ${this._model.typeName}`);\n }\n const enumDef = ObjectSerializer.get().findEnum(propDef.type);\n if (!enumDef) {\n throw new Error(`Enum definition ${propDef.type} not found for property ${property} on class type ${this._model.typeName}`);\n }\n const field = new FieldLookupEnumDescriptor(this, property, propDef.type, options);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyEditor<FT>(property: string, type: ClassType<FT>, tableviewDescriptor: TableviewDescriptor<FT>): FieldManyEditorDescriptor<FT, T> {\n const field = new FieldManyEditorDescriptor(this, property, type, tableviewDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyToManyEditor<FT>(property: string, type: ClassType<FT>, mainTableDescriptor: TableDescriptor<FT>, lookupTableDescriptor: TableDescriptor<FT>): FieldManyToManyEditorDescriptor<FT, T> {\n const field = new FieldManyToManyEditorDescriptor(this, property, type, mainTableDescriptor, lookupTableDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public withDisabled(disabled: boolean = true): this {\n this._disabled = disabled;\n return this;\n }\n\n public addValidator(name: string, expression: (control: AbstractControl) => boolean) {\n if (this._currentGroup) {\n this._currentGroup.withValidator(name, expression);\n }\n }\n\n public copy(): EditorDescriptor<T> {\n const editor = new EditorDescriptor<T>(this.model.type, this.model.idPropertyName, this.model.titlePropertyName);\n for (const tabGroup of this._tabs) {\n editor.createTabGroupDescriptor(tabGroup.copy());\n }\n for (const tabGroup of editor._tabs) {\n for (const fieldGroup of tabGroup.fields) {\n editor._fields.push(...fieldGroup.fields);\n }\n editor._groups.push(...tabGroup.fields);\n }\n editor._currentTabGroup = editor._tabs[editor._tabs.length - 1];\n editor._currentGroup = editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1];\n editor._disabled = this._disabled;\n return editor;\n }\n\n private createTabGroupDescriptor(tabGroup: FieldTabGroupDescriptor<T>): this {\n this._currentTabGroup = tabGroup;\n this._tabs.push(tabGroup);\n return this;\n }\n\n public createFieldGroupDescriptor(fieldGroup: FieldGroupDescriptor<T>): this {\n this.createDefaultTabGroup();\n this._currentGroup = fieldGroup;\n this._groups.push(fieldGroup);\n this._currentTabGroup?.addField(fieldGroup);\n return this;\n }\n\n private createDefaultGroup() {\n this.createDefaultTabGroup();\n if (this._currentTabGroup?.fields.length === 0) {\n this.createFieldGroup(EditorDescriptor.defaultGroupName);\n }\n }\n\n private createDefaultTabGroup() {\n if (this._tabs.length === 0) {\n this.createTabGroup(EditorDescriptor.defaultGroupName);\n }\n }\n}\n\nexport abstract class AGenericFieldDescriptor<ET> {\n protected readonly _editor: EditorDescriptor<ET>;\n\n protected constructor(editor: EditorDescriptor<ET>) {\n this._editor = editor;\n }\n\n public get editor() {\n return this._editor;\n }\n}\n\nexport abstract class AFieldDescriptor<T, ET> extends AGenericFieldDescriptor<ET> {\n\n protected readonly _property: string;\n protected _group?: AFieldGroupDescriptor<ET>;\n protected _label?: string;\n protected _placeholder?: string;\n protected _required: boolean = false;\n protected _disabled: boolean = false;\n protected _className: string = '';\n protected _getter?: (item: ET) => T;\n protected _setter?: (item: ET, value: T) => void;\n protected _validators: Array<FieldValidator> = [];\n\n protected constructor(editor: EditorDescriptor<ET>, property: string) {\n super(editor);\n this._property = property;\n this._label = this._editor.model.typeName + '.properties.' + property;\n }\n\n public abstract copy(): AFieldDescriptor<T, ET>;\n\n public get property() {\n return this._property;\n }\n\n public get group() {\n return this._group;\n }\n\n public get label() {\n return this._label;\n }\n\n public get placeholder() {\n return this._placeholder;\n }\n\n public get required() {\n return this._required;\n }\n\n public get disabled() {\n return this._disabled;\n }\n\n public get className() {\n return this._className;\n }\n\n public get getter() {\n return this._getter;\n }\n\n public get setter() {\n return this._setter;\n }\n\n public get validators() {\n return this._validators;\n }\n\n public withLabel(label: string): this {\n this._label = label;\n return this;\n }\n\n public withPlaceholder(placeholder: string): this {\n this._placeholder = placeholder;\n return this;\n }\n\n public withRequired(required: boolean = true): this {\n this._required = required;\n return this;\n }\n\n public withDisabled(disabled: boolean = true): this {\n this._disabled = disabled;\n return this;\n }\n\n public withClassName(className: string): this {\n this._className = className;\n return this;\n }\n\n public withGetter(getter: (item: ET) => T): this {\n this._getter = getter;\n return this;\n }\n\n public withSetter(setter: (item: ET, value: T) => void): this {\n this._setter = setter;\n return this;\n }\n\n public withValidator(name: string, expression: (control: AbstractControl) => boolean,\n message: (err: any, field: FormlyFieldConfig) => string): this {\n this._validators.push(new FieldValidator(name, expression, message));\n return this;\n }\n\n protected copyFieldsTo(obj: AFieldDescriptor<T, ET>) {\n obj._label = this._label;\n obj._placeholder = this._placeholder;\n obj._required = this._required;\n obj._disabled = this._disabled;\n obj._className = this._className;\n obj._getter = this._getter;\n obj._setter = this._setter;\n obj._validators = this._validators;\n }\n}\n\nexport class FieldInputDescriptor<ET> extends AFieldDescriptor<string|number|boolean|Date, ET> {\n\n private _fieldType: FieldInputDescriptor.TypeEnum = FieldInputDescriptor.TypeEnum.Text;\n\n // textarea specific properties\n private _rows?: number;\n\n // number specific properties\n private _numberMin?: number;\n private _numberMax?: number;\n private _numberStep?: number;\n private _numberMinFractionDigits?: number;\n private _numberMaxFractionDigits?: number;\n\n // radio specific properties\n private _radioOptions: Array<string> = [];\n\n // datepicker specific properties\n private _datePickerFormat?: string;\n private _datePickerMin?: Date;\n private _datePickerMax?: Date;\n private _datePickerShowTime: boolean = false;\n\n constructor(editor: EditorDescriptor<ET>, property: string) {\n super(editor, property);\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get numberStep() {\n return this._numberStep;\n }\n\n public get numberMin() {\n return this._numberMin;\n }\n\n public get numberMax() {\n return this._numberMax;\n }\n\n public get rows() {\n return this._rows;\n }\n\n public get numberMinFractionDigits() {\n return this._numberMinFractionDigits;\n }\n\n public get numberMaxFractionDigits() {\n return this._numberMaxFractionDigits;\n }\n\n public get radioOptions() {\n return this._radioOptions;\n }\n\n public get datePickerFormat() {\n return this._datePickerFormat;\n }\n\n public get datePickerMin() {\n return this._datePickerMin;\n }\n\n public get datePickerMax() {\n return this._datePickerMax;\n }\n\n public get datePickerShowTime() {\n return this._datePickerShowTime;\n }\n\n public asTextarea(rows: number = 3): this {\n this._fieldType = FieldInputDescriptor.TypeEnum.Textarea;\n this._rows = rows;\n return this;\n }\n\n public asNumber(step?: number, min?: number, max?: number, minFractionDigits?: number, maxFractionDigits?: number): this {\n this._fieldType = FieldInputDescriptor.TypeEnum.Number;\n this._numberStep = step;\n this._numberMinFractionDigits = minFractionDigits;\n this._numberMaxFractionDigits = maxFractionDigits;\n this._numberMin = min ?? Number.MIN_SAFE_INTEGER;\n this._numberMax = max ?? Number.MAX_SAFE_INTEGER;\n return this;\n }\n\n public asSwitch(): this {\n this._fieldType = FieldInputDescriptor.TypeEnum.Switch;\n return this;\n }\n\n public asRadio(options: Array<string>): this {\n this._fieldType = FieldInputDescriptor.TypeEnum.Radio;\n this._radioOptions = options;\n return this;\n }\n\n public asDatePicker(format?: string, min?: Date, max?: Date, showTime?: boolean): this {\n this._fieldType = FieldInputDescriptor.TypeEnum.Datepicker;\n this._datePickerFormat = format ? format : 'dd.mm.yy';\n this._datePickerMin = min;\n this._datePickerMax = max;\n this._datePickerShowTime = showTime ?? false;\n return this;\n }\n\n public copy(): FieldInputDescriptor<ET> {\n const field = new FieldInputDescriptor<ET>(this._editor, this._property);\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._rows = this._rows;\n field._numberMin = this._numberMin;\n field._numberMax = this._numberMax;\n field._numberStep = this._numberStep;\n field._numberMinFractionDigits = this._numberMinFractionDigits;\n field._numberMaxFractionDigits = this._numberMaxFractionDigits;\n field._radioOptions = this._radioOptions;\n field._datePickerFormat = this._datePickerFormat;\n field._datePickerMin = this._datePickerMin;\n field._datePickerMax = this._datePickerMax;\n field._datePickerShowTime = this._datePickerShowTime;\n return field;\n }\n}\nexport namespace FieldInputDescriptor {\n export enum TypeEnum {\n Text,\n Textarea,\n Number,\n Switch,\n Radio,\n Datepicker\n }\n}\n\nexport class FieldLookupDescriptor<T, ET> extends AFieldDescriptor<T, ET> {\n\n protected readonly _modelType: ClassType<T>|null;\n protected _fieldType: FieldLookupDescriptor.TypeEnum = FieldLookupDescriptor.TypeEnum.Dropdown;\n protected _itemsLabelProperty?: string;\n protected _itemsValueProperty?: string;\n protected _dataKeyProperty?: string;\n protected _dataProvider?: ILookupDataProvider<T, any>;\n\n constructor(editor: EditorDescriptor<ET>, property: string, modelType: ClassType<T>|null) {\n super(editor, property);\n this._modelType = modelType;\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get itemsLabelProperty() {\n return this._itemsLabelProperty;\n }\n\n public get itemsValueProperty() {\n return this._itemsValueProperty;\n }\n\n public get dataKeyProperty() {\n return this._dataKeyProperty;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public withItemsLabelProperty(itemsLabelProperty: string): this {\n this._itemsLabelProperty = itemsLabelProperty;\n return this;\n }\n\n public withItemsValueProperty(itemsValueProperty: string): this {\n this._itemsValueProperty = itemsValueProperty;\n return this;\n }\n\n public withDataKeyProperty(property: string): this {\n this._dataKeyProperty = property;\n return this;\n }\n\n public withLookup<S>(lookup: (queryParam?: QueryParam, service?: S, search?: string) => Observable<Array<T>>, serviceType?: Type<S>): this {\n const dataProvider = new LookupDataProvider<T, S>(this._modelType);\n if (serviceType) {\n dataProvider.withServiceType(serviceType);\n }\n dataProvider.withLookup(lookup);\n this._dataProvider = dataProvider;\n return this;\n }\n\n public withLookupDataProvider(dataProvider: ILookupDataProvider<T, any>): this {\n this._dataProvider = dataProvider;\n return this;\n }\n\n public asAutocomplete(): this {\n this._fieldType = FieldLookupDescriptor.TypeEnum.Autocomplete;\n return this;\n }\n\n public copy(): FieldLookupDescriptor<T, ET> {\n const field = new FieldLookupDescriptor(this._editor, this._property, this._modelType);\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._itemsLabelProperty = this._itemsLabelProperty;\n field._itemsValueProperty = this._itemsValueProperty;\n field._dataKeyProperty = this._dataKeyProperty;\n field._dataProvider = this._dataProvider;\n return field;\n }\n}\n\nexport namespace FieldLookupDescriptor {\n export enum TypeEnum {\n Dropdown,\n Autocomplete\n }\n}\n\nexport class FieldLookupEnumDescriptor<ET> extends FieldLookupDescriptor<EnumMemberType, ET> {\n\n private readonly _enumName: string;\n\n constructor(editor: EditorDescriptor<ET>, property: string, enumName: string, options: Array<EnumMemberType>) {\n super(editor, property, null);\n\n this._enumName = enumName;\n const dataProvider = new LookupDataProvider<EnumMemberType, any>(null)\n .withEnumName(enumName)\n .withLookup(() => of(options));\n this.withLookupDataProvider(dataProvider);\n }\n\n public get enumName() {\n return this._enumName;\n }\n\n public override copy(): FieldLookupEnumDescriptor<ET> {\n const field = new FieldLookupEnumDescriptor<ET>(this._editor, this._property, this._enumName, []);\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._itemsLabelProperty = this._itemsLabelProperty;\n field._itemsValueProperty = this._itemsValueProperty;\n field._dataKeyProperty = this._dataKeyProperty;\n field._dataProvider = this._dataProvider;\n return field;\n }\n}\n\nexport class FieldManyToManyEditorDescriptor<T, ET> extends AFieldDescriptor<T, ET> {\n\n private readonly _model: ModelDescriptor<T>;\n private readonly _mainTableDescriptor: TableDescriptor<T>; // table descriptor for main table component\n private readonly _lookupTableDescriptor: TableDescriptor<T>; // table descriptor for where select will be applied\n private _fieldType: FieldManyToManyEditorDescriptor.TypeEnum = FieldManyToManyEditorDescriptor.TypeEnum.DialogTableMultiselect;\n private _lookupTableDataProvider: ITableDataProvider<T, any>|null = null;\n private _actions: Array<FieldManyToManyEditorDescriptor.ActionEnum> = [];\n private _hasLookupExcludeValues: boolean = false;\n private _excludeFilterProperty: string = '';\n private _excludeValueProperty: string = '';\n\n constructor(editor: EditorDescriptor<ET>, property: string, modelType: ClassType<T>, mainTableDescriptor: TableDescriptor<T>, lookupTableDescriptor: TableDescriptor<T>) {\n super(editor, property);\n this._model = new ModelDescriptor<T>(modelType);\n this._mainTableDescriptor = mainTableDescriptor;\n this._lookupTableDescriptor = lookupTableDescriptor;\n this._actions.push(FieldManyToManyEditorDescriptor.ActionEnum.Add, FieldManyToManyEditorDescriptor.ActionEnum.Delete);\n }\n\n public get mainTableDescriptor() {\n return this._mainTableDescriptor;\n }\n\n public get lookupTableDescriptor() {\n return this._lookupTableDescriptor;\n }\n\n public get lookupTableDataProvider() {\n return this._lookupTableDataProvider;\n }\n\n public get actions() {\n return this._actions;\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get hasLookupExcludeValues() {\n return this._hasLookupExcludeValues;\n }\n\n public get excludeFilterProperty() {\n return this._excludeFilterProperty;\n }\n\n public get excludeValueProperty() {\n return this._excludeValueProperty;\n }\n\n public withLookup<S>(getAll: (queryParam: QueryParam, service?: S) => Observable<QueryResult<T>>, serviceType?: Type<S>): this {\n const dataProvider = new TableviewDataProvider<T, S>(this._model.type);\n if (serviceType) {\n dataProvider.withServiceType(serviceType);\n }\n dataProvider.withGetAll(getAll);\n this._lookupTableDataProvider = dataProvider;\n return this;\n }\n\n public withLookupDataProvider(dataProvider: ITableDataProvider<T, any>): this {\n this._lookupTableDataProvider = dataProvider;\n return this;\n }\n\n public withActions(actions: Array<FieldManyToManyEditorDescriptor.ActionEnum> = []): this {\n this.actions.push(...actions);\n return this;\n }\n\n public withLookupExclude(filterProperty: string, valueProperty: string, hasLookupExclude: boolean = true): this {\n this._hasLookupExcludeValues = hasLookupExclude;\n this._excludeFilterProperty = filterProperty;\n this._excludeValueProperty = valueProperty;\n return this;\n }\n\n public copy(): FieldManyToManyEditorDescriptor<T, ET> {\n const field = new FieldManyToManyEditorDescriptor(this._editor, this._property, this._model.type, this._mainTableDescriptor.copy(), this._lookupTableDescriptor.copy());\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._actions = this._actions.map(a => a);\n field._lookupTableDataProvider = this._lookupTableDataProvider;\n field._hasLookupExcludeValues = this._hasLookupExcludeValues;\n field._excludeFilterProperty = this._excludeFilterProperty;\n field._excludeValueProperty = this._excludeValueProperty;\n return field;\n }\n}\n\nexport namespace FieldManyToManyEditorDescriptor {\n export enum TypeEnum {\n DialogTableMultiselect\n }\n\n export enum ActionEnum {\n Add,\n Delete\n }\n}\n\nexport class FieldManyEditorDescriptor<T, ET> extends AFieldDescriptor<T, ET> {\n\n private readonly _modelType: ClassType<T>;\n private readonly _tableviewDescriptor: TableviewDescriptor<T>;\n private _fieldType: FieldManyEditorDescriptor.TypeEnum = FieldManyEditorDescriptor.TypeEnum.DialogEditor;\n private _actions: Array<FieldManyEditorDescriptor.ActionEnum> = [];\n\n constructor(editor: EditorDescriptor<ET>, property: string, modelType: ClassType<T>, tableviewDescriptor: TableviewDescriptor<T>) {\n super(editor, property);\n this._modelType = modelType;\n this._tableviewDescriptor = tableviewDescriptor;\n this._actions.push(FieldManyEditorDescriptor.ActionEnum.Add, FieldManyEditorDescriptor.ActionEnum.Edit, FieldManyEditorDescriptor.ActionEnum.Delete);\n }\n\n public get tableviewDescriptor() {\n return this._tableviewDescriptor;\n }\n\n public get tableDescriptor() {\n return this._tableviewDescriptor.table;\n }\n\n public get editorForCreate() {\n return this._tableviewDescriptor.addEditor;\n }\n\n public get editorForRead() {\n return this._tableviewDescriptor.viewEditor;\n }\n\n public get editorForUpdate() {\n return this._tableviewDescriptor.editEditor;\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get actions() {\n return this._actions;\n }\n\n public withActions(actions: Array<FieldManyToManyEditorDescriptor.ActionEnum> = []): this {\n this.actions.push(...actions);\n return this;\n }\n\n public copy(): FieldManyEditorDescriptor<T, ET> {\n const field = new FieldManyEditorDescriptor(this._editor, this._property, this._modelType, this._tableviewDescriptor.copy());\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._actions = this._actions.map(a => a);\n return field;\n }\n}\n\nexport namespace FieldManyEditorDescriptor {\n export enum TypeEnum {\n DialogEditor\n }\n\n export enum ActionEnum {\n Add,\n Edit,\n Delete\n }\n}\n\nexport abstract class AFieldGroupDescriptor<ET> extends AGenericFieldDescriptor<ET> {\n\n protected readonly _name: string;\n protected readonly _default: boolean;\n protected _title?: string;\n protected _fields: AGenericFieldDescriptor<ET>[] = [];\n protected _validators: Array<FieldValidator> = [];\n\n protected constructor(editor: EditorDescriptor<ET>, name: string) {\n super(editor);\n this._name = `${this.baseName}${name}`;\n this._default = name === EditorDescriptor.defaultGroupName;\n }\n\n abstract get fields(): AGenericFieldDescriptor<ET>[];\n\n abstract groupName(): string;\n\n abstract addField(field: AGenericFieldDescriptor<ET>): this;\n\n abstract copy(): AFieldGroupDescriptor<ET>;\n\n public get baseName() {\n return `${this.groupName()}_`;\n }\n\n public get name() {\n return this._name;\n }\n\n public get default() {\n return this._default;\n }\n\n public get title() {\n return this._title;\n }\n\n public get validators() {\n return this._validators;\n }\n\n public withTitle(title: string): this {\n this._title = title;\n return this;\n }\n\n public withValidator(name: string, expression: (control: AbstractControl) => boolean) {\n this._validators.push(new FieldValidator(name, expression, undefined));\n return this;\n }\n}\n\nexport class FieldTabGroupDescriptor<ET> extends AFieldGroupDescriptor<ET> {\n\n constructor(editor: EditorDescriptor<ET>, name: string) {\n super(editor, name);\n }\n\n public get fields(): Array<FieldGroupDescriptor<ET>> {\n return this._fields as Array<FieldGroupDescriptor<ET>>;\n }\n\n public groupName(): string {\n return 'tab';\n }\n\n public addField(field: FieldGroupDescriptor<ET>): this {\n this._fields.push(field);\n return this;\n }\n\n public copy(): FieldTabGroupDescriptor<ET> {\n const tab = new FieldTabGroupDescriptor<ET>(this._editor, this.name.substring(this.baseName.length));\n tab._title = this._title;\n tab._fields = this.fields.map(f => f.copy());\n return tab;\n }\n}\n\nexport class FieldGroupDescriptor<ET> extends AFieldGroupDescriptor<ET> {\n\n constructor(editor: EditorDescriptor<ET>, name: string) {\n super(editor, name);\n }\n\n public get fields(): Array<AFieldDescriptor<any, ET>> {\n return this._fields as Array<AFieldDescriptor<any, ET>>;\n }\n\n public groupName(): string {\n return 'group';\n }\n\n public addField(field: AFieldDescriptor<any, ET>): this {\n this._fields.push(field);\n return this;\n }\n\n public copy(): FieldGroupDescriptor<ET> {\n const group = new FieldGroupDescriptor<ET>(this._editor, this.name.substring(this.baseName.length));\n group._title = this._title;\n group._fields = this.fields.map(f => f.copy());\n return group;\n }\n}\n","import {ClassType} from '../types';\nimport {ModelUtil, TypeUtil} from '../../utils';\n\nexport class ModelDescriptor<T> {\n private readonly _type: ClassType<T>;\n private readonly _typeName: string;\n private _idPropertyName?: string;\n private _titlePropertyName?: string;\n\n constructor(modelType: ClassType<T>, idProperty?: string, titleProperty?: string) {\n this._type = modelType;\n this._idPropertyName = idProperty ?? (ModelUtil.findIdAttribute(modelType) ?? undefined);\n this._titlePropertyName = titleProperty ?? (ModelUtil.findTitleAttribute(modelType) ?? undefined);\n this._typeName = TypeUtil.findTypeName(this._type);\n }\n\n public get type() {\n return this._type;\n }\n\n public get typeName() {\n return this._typeName;\n }\n\n public get idPropertyName() {\n return this._idPropertyName;\n }\n\n public get titlePropertyName() {\n return this._titlePropertyName;\n }\n\n public withIdPropertyName(idProperty: string): this {\n this._idPropertyName = idProperty;\n return this;\n }\n\n public withTitlePropertyName(titleProperty: string): this {\n this._titlePropertyName = titleProperty;\n return this;\n }\n\n public copy(): ModelDescriptor<T> {\n const model = new ModelDescriptor(this._type, this._idPropertyName, this._titlePropertyName);\n return model;\n }\n}\n","import {ModelDescriptor} from './model-descriptor.model';\nimport {ClassType} from '../types';\n\nexport class TableDescriptor<T> {\n\n private readonly _model: ModelDescriptor<T>;\n private _columns: Array<ColumnDescriptor<any>> = [];\n private _title?: string;\n private _dataKeyProperty?: string;\n private _hasDefaultSort: boolean = false;\n private _defaultSortProperty: string[] = [];\n private _defaultSortAsc: boolean[] = [];\n\n constructor(modelType: ClassType<T>, idProperty?: string, titleProperty?: string) {\n this._model = new ModelDescriptor<T>(modelType, idProperty, titleProperty);\n }\n\n public get model() {\n return this._model;\n }\n\n public get columns() {\n return this._columns;\n }\n\n public get title() {\n return this._title;\n }\n\n public get dataKeyProperty() {\n return this._dataKeyProperty;\n }\n\n public get hasDefaultSort() {\n return this._hasDefaultSort;\n }\n\n public get defaultSortProperty(): string[] {\n return this._defaultSortProperty;\n }\n\n public get defaultSortAsc(): boolean[] {\n return this._defaultSortAsc;\n }\n\n public addColumnDescriptor<CT>(column: ColumnDescriptor<CT>): TableDescriptor<T> {\n this._columns.push(column);\n this.setDataKeyFromColumn();\n return this;\n }\n\n public addColumn(property: string): ColumnDescriptor<string> {\n const column = new ColumnDescriptor<string>(property);\n this._columns.push(column);\n this.setDataKeyFromColumn();\n return column;\n }\n\n public addColumnNumber(property: string): ColumnDescriptor<number> {\n const column = new ColumnDescriptor<number>(property);\n this._columns.push(column);\n this.setDataKeyFromColumn();\n return column;\n }\n\n public withTitle(title: string): TableDescriptor<T> {\n this._title = title;\n return this;\n }\n\n public withDataKeyProperty(property: string): TableDescriptor<T> {\n this._dataKeyProperty = property;\n return this;\n }\n\n public withDefaultSort(property: string, asc: boolean = true): TableDescriptor<T> {\n this._hasDefaultSort = true;\n this._defaultSortProperty.push(property);\n this._defaultSortAsc.push(asc);\n return this;\n }\n\n private setDataKeyFromColumn() {\n if (!this._dataKeyProperty && this._columns.length === 1) {\n this._dataKeyProperty = this._columns[0].property;\n }\n }\n\n public copy(): TableDescriptor<T> {\n const descriptor = new TableDescriptor(this.model.type, this.model.idPropertyName, this.model.titlePropertyName);\n descriptor._columns = this.columns.map(c => c.copy());\n descriptor._title = this._title;\n descriptor._dataKeyProperty = this._dataKeyProperty;\n descriptor._defaultSortProperty = this._defaultSortProperty.map(p => p);\n descriptor._defaultSortAsc = this._defaultSortAsc.map(p => p);\n return descriptor;\n }\n}\n\nexport class ColumnDescriptor<T> {\n\n private readonly _property: string;\n private _displayPropertyPath?: string;\n private _title?: string;\n private _isSortEnabled: boolean = false;\n private _isFilterEnabled: boolean = false;\n\n constructor(property: string) {\n this._property = property;\n }\n\n public get property() {\n return this._property;\n }\n\n public get displayPropertyPath() {\n return this._displayPropertyPath;\n }\n\n public get title() {\n return this._title;\n }\n\n public get isSortEnabled() {\n return this._isSortEnabled;\n }\n\n public get isFilterEnabled() {\n return this._isFilterEnabled;\n }\n\n public withTitle(title: string): ColumnDescriptor<T> {\n this._title = title;\n return this;\n }\n\n public withDisplayPropertyPath(displayPropertyPath: string): ColumnDescriptor<T> {\n this._displayPropertyPath = displayPropertyPath;\n return this;\n }\n\n public withFilter(isEnabled: boolean = true): ColumnDescriptor<T> {\n this._isFilterEnabled = isEnabled;\n return this;\n }\n\n public withSort(isEnabled: boolean = true): ColumnDescriptor<T> {\n this._isSortEnabled = isEnabled;\n return this;\n }\n\n public copy(): ColumnDescriptor<T> {\n const descriptor = new ColumnDescriptor<T>(this._property);\n descriptor._displayPropertyPath = this._displayPropertyPath;\n descriptor._title = this._title;\n descriptor._isSortEnabled = this._isSortEnabled;\n descriptor._isFilterEnabled = this._isFilterEnabled;\n return descriptor;\n }\n}\n","import {AbstractControl} from '@angular/forms';\n\nimport {ModelDescriptor} from './model-descriptor.model';\nimport {\n AFieldDescriptor,\n EditorDescriptor,\n FieldInputDescriptor,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor\n} from './editor-descriptor.model';\nimport {\n ColumnDescriptor,\n TableDescriptor\n} from './table-descriptor.model';\nimport {ClassType, EnumMemberType} from '../types';\nimport {TypeUtil} from '../../utils';\n\nexport class TableviewDescriptor<T> {\n\n private readonly _model: ModelDescriptor<T>;\n private _table: TableDescriptor<T>;\n private _viewEditor: EditorDescriptor<T>;\n private _addEditor: EditorDescriptor<T>;\n private _editEditor: EditorDescriptor<T>;\n private _tableTitle: string;\n\n constructor(modelType: ClassType<T>, idProperty?: string, titleProperty?: string) {\n this._model = new ModelDescriptor<T>(modelType, idProperty, titleProperty);\n this._table = new TableDescriptor<T>(modelType, idProperty, titleProperty);\n this._viewEditor = new EditorDescriptor<T>(modelType, idProperty, titleProperty);\n this._viewEditor.withDisabled();\n this._addEditor = new EditorDescriptor<T>(modelType, idProperty, titleProperty);\n this._editEditor = new EditorDescriptor<T>(modelType, idProperty, titleProperty);\n this._tableTitle = `${this._model.typeName}.name`;\n }\n\n public get model() {\n return this._model;\n }\n\n public get table() {\n return this._table;\n }\n\n public get viewEditor() {\n return this._viewEditor;\n }\n\n public get addEditor() {\n return this._addEditor;\n }\n\n public get editEditor() {\n return this._editEditor;\n }\n\n public get tableTitle() {\n return this._tableTitle;\n }\n\n public withTableDescriptor(descriptor: TableDescriptor<T>): this {\n this._table = descriptor;\n return this;\n }\n\n public withViewDescriptor(descriptor: EditorDescriptor<T>): this {\n this._viewEditor = descriptor;\n return this;\n }\n\n public withAddDescriptor(descriptor: EditorDescriptor<T>): this {\n this._addEditor = descriptor;\n return this;\n }\n\n public withEditDescriptor(descriptor: EditorDescriptor<T>): this {\n this._editEditor = descriptor;\n return this;\n }\n\n public withTableTitle(title: string): this {\n this._tableTitle = title;\n return this;\n }\n\n public withValidator(name: string, expression: (control: AbstractControl) => boolean): this {\n this._viewEditor.addValidator(name, expression);\n this._addEditor.addValidator(name, expression);\n this._editEditor.addValidator(name, expression);\n return this;\n }\n\n public addColumnDescriptor<CT>(column: ColumnDescriptor<CT>): TableDescriptor<T> {\n return this._table.addColumnDescriptor<CT>(column);\n }\n\n public addColumn(property: string): ColumnDescriptor<string> {\n return this._table.addColumn(property);\n }\n\n public addColumnNumber(property: string): ColumnDescriptor<number> {\n return this._table.addColumnNumber(property);\n }\n\n public createTabGroup(name: string, title?: string): this {\n this._viewEditor.createTabGroup(name, title);\n this._addEditor.createTabGroup(name, title);\n this._editEditor.createTabGroup(name, title);\n return this;\n }\n\n public createFieldGroup(name: string, title?: string): this {\n this._viewEditor.createFieldGroup(name, title);\n this._addEditor.createFieldGroup(name, title);\n this._editEditor.createFieldGroup(name, title);\n return this;\n }\n\n public addFieldDescriptor<FT>(field: AFieldDescriptor<FT, T>): this {\n this._viewEditor.addFieldDescriptor(field);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return this;\n }\n\n public addField(property: string): FieldInputDescriptor<T> {\n const field = this._viewEditor.addField(property);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldLookup<FT>(property: string, modelType: ClassType<FT>): FieldLookupDescriptor<FT, T> {\n const field = this._viewEditor.addFieldLookup(property, modelType);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldLookupEnum(property: string, options: Array<EnumMemberType>): FieldLookupEnumDescriptor<T> {\n const field = this._viewEditor.addFieldLookupEnum(property, options);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyEditor<FT>(property: string, type: ClassType<FT>, tableviewDescriptor: TableviewDescriptor<FT>): FieldManyEditorDescriptor<FT, T> {\n const field = this._viewEditor.addFieldManyEditor(property, type, tableviewDescriptor);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyToManyEditor<FT>(property: string, type: ClassType<FT>, mainTableDescriptor: TableDescriptor<FT>, lookupTableDescriptor: TableDescriptor<FT>): FieldManyToManyEditorDescriptor<FT, T> {\n const field = this._viewEditor.addFieldManyToManyEditor(property, type, mainTableDescriptor, lookupTableDescriptor);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return field;\n }\n\n public copy(): TableviewDescriptor<T> {\n const tableview = new TableviewDescriptor(this._model.type, this._model.idPropertyName, this._model.titlePropertyName);\n tableview._table = this._table.copy();\n tableview._viewEditor = this._viewEditor.copy();\n tableview._addEditor = this._addEditor.copy();\n tableview._editEditor = this._editEditor.copy();\n return tableview;\n }\n}\n","export class MngEditorSubmitEvent<T> {\n public success: boolean = true;\n\n constructor(\n public readonly formItem: T\n ) {}\n}\n\nexport class MngEditorItemEvent<T> {\n constructor(\n public readonly item: T\n ) {}\n}\n\nexport class MngEditorSubmitTriggerEvent {\n}\n","import {LazyLoadEvent} from 'primeng/api';\n\nimport {QueryParam} from '../../api/models';\nimport {ColumnDescriptor} from '../descriptors';\n\nexport class MngTableLoadEvent {\n public queryParam?: QueryParam;\n public originalEvent?: LazyLoadEvent;\n}\n\nexport class MngTableCellClickEvent<T> {\n constructor(\n public readonly column: ColumnDescriptor<any>,\n public readonly rowItem: T,\n public readonly rowIndex: number\n ) {}\n}\n\nexport class MngTableReloadEvent {\n public resetParams: boolean = false;\n public emitEvent: boolean = false;\n}\n","import {AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Injector, Input, OnDestroy, OnInit, Output, QueryList, TemplateRef, ViewChild} from '@angular/core';\n\nimport {Table} from 'primeng/table';\nimport {LazyLoadEvent, SortMeta} from 'primeng/api';\nimport {Observable, of, ReplaySubject, Subscription} from 'rxjs';\nimport {finalize, first, map} from 'rxjs/operators';\n\nimport {QueryParam, QueryResult} from '../../../api/models';\nimport {MediusRestUtil} from '../../../api/utils';\n\nimport {TableDescriptor, ColumnDescriptor} from '../../../models/descriptors';\nimport {ITableDataProvider} from '../../../models/providers';\nimport {MngTableCellClickEvent, MngTableLoadEvent} from '../../../models/events';\nimport {TemplateDirective} from '../../../directives';\n\n@Component({\n selector: 'mng-table',\n templateUrl: './table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableComponent<T> implements OnInit, AfterContentInit, OnDestroy {\n\n // metadata input\n @Input() public descriptor!: TableDescriptor<T>;\n \n // data source inputs\n @Input() public items?: Observable<Array<T>>|Array<T>;\n @Input() public queryResult?: Observable<QueryResult<T>>|QueryResult<T>;\n @Input() public loading?: Observable<boolean>|boolean;\n @Input() public dataProvider?: ITableDataProvider<T, any>;\n \n // extra features input\n @Input() public selectionEnabled: boolean = false;\n\n // event outputs\n @Output('onLoad') private loadEventEmitter = new EventEmitter<MngTableLoadEvent>();\n @Output('onCellClick') private cellClickEventEmitter = new EventEmitter<MngTableCellClickEvent<T>>();\n @Output('onSelectionChange') private selectionChangeEventEmitter = new EventEmitter<Array<T>>();\n\n // content and view queries\n @ContentChildren(TemplateDirective) templates!: QueryList<TemplateDirective>;\n @ViewChild(Table) private primeTable!: Table;\n\n public captionTemplate?: TemplateRef<any>;\n public columnActionTemplate?: TemplateRef<any>;\n\n public useDataProvider: boolean = false;\n public queryResult$?: Observable<QueryResult<T>>;\n public loading$?: Observable<boolean>;\n private dataProviderService: any = null;\n private dataProviderQueryResultSubject = new ReplaySubject<QueryResult<T>>(1);\n private dataProviderLoadingSubject = new ReplaySubject<boolean>(1);\n private dataProviderLatestLazyLoadEvent?: LazyLoadEvent;\n private dataProviderSubscription?: Subscription;\n\n public readonly rowsPerPageOptions = [10, 25, 50];\n public multiSortMeta?: SortMeta[];\n\n public selection: Array<T> = [];\n\n private subscriptions: Subscription[] = [];\n\n constructor(private injector: Injector) {\n }\n\n public ngOnInit() {\n\n // initalize if default sort is set\n if (this.descriptor.hasDefaultSort) {\n this.multiSortMeta = this.descriptor.defaultSortProperty.map((p, idx) => <SortMeta>{\n field: p,\n order: this.descriptor.defaultSortAsc[idx] ? 1 : -1\n });\n }\n // check if data provider is supplied, if is, use it primarily\n if (this.dataProvider) {\n // map subjects to observables and initiate data\n this.useDataProvider = true;\n this.queryResult$ = this.dataProviderQueryResultSubject.asObservable();\n this.loading$ = this.dataProviderLoadingSubject.asObservable();\n const emptyQueryResult = new QueryResult<T>();\n emptyQueryResult.pageData = [];\n emptyQueryResult.allDataCount = 0;\n this.dataProviderLoadingSubject.next(false);\n this.dataProviderQueryResultSubject.next(emptyQueryResult)\n\n // inject service\n if (this.dataProvider.serviceType) {\n this.dataProviderService = this.injector.get<any>(this.dataProvider.serviceType);\n }\n } else {\n // if query result is provided, use it as secondary source or else try to use items\n if (this.queryResult) {\n this.queryResult$ = this.queryResult instanceof Observable ? this.queryResult : of(this.queryResult);\n } else if (!this.queryResult && this.items) {\n this.queryResult$ = (this.items instanceof Observable ? this.items : of(this.items)).pipe(\n // distinctUntilChanged((v1, v2) => v1.length === v2.length &&\n // v1.every((v1i, idx) => v1i[this.descriptor.dataKeyProperty] === v2[idx][this.descriptor.dataKeyProperty])),\n map(items => {\n const queryResult = new QueryResult<T>();\n queryResult.pageData = items;\n queryResult.allDataCount = items.length;\n return queryResult;\n }));\n }\n if (typeof this.loading !== 'undefined') {\n this.loading$ = this.loading instanceof Observable ? this.loading : of(this.loading);\n }\n }\n }\n\n public ngAfterContentInit() {\n this.templates.forEach(template => {\n switch(template.getType()) {\n case 'caption':\n this.captionTemplate = template.template;\n break;\n case 'columnAction':\n this.columnActionTemplate = template.template;\n break;\n }\n });\n }\n\n public ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n public reload(emitEvent: boolean = false, resetParams: boolean = false) {\n this.loadTableWithDataProvider(resetParams ? null : (this.dataProviderLatestLazyLoadEvent ?? null), emitEvent);\n }\n\n public onTableLazyLoad(event: LazyLoadEvent) {\n if (this.useDataProvider) {\n this.loadTableWithDataProvider(event);\n }\n }\n\n public onCellClick(col: ColumnDescriptor<any>, item: T, idx: number) {\n const mngEvent = new MngTableCellClickEvent<T>(col, item, idx);\n this.cellClickEventEmitter.next(mngEvent);\n }\n\n public onSelectionChange(event: Array<T>) {\n this.selectionChangeEventEmitter.emit(event);\n }\n\n private loadTableWithDataProvider(lazyLoadEvent: LazyLoadEvent|null, emitEvent: boolean = true) {\n if (!this.useDataProvider) {\n return;\n }\n if (this.dataProviderSubscription) {\n this.dataProviderSubscription.unsubscribe();\n }\n this.dataProviderLoadingSubject.next(true);\n\n this.multiSortMeta = lazyLoadEvent?.multiSortMeta;\n const queryParams = lazyLoadEvent\n ? MediusRestUtil.fromLazyLoadEventToQueryParams(lazyLoadEvent)\n : new QueryParam();\n if (!queryParams.sortProperty && this.descriptor.hasDefaultSort) {\n queryParams.sortProperty = [...this.descriptor.defaultSortProperty];\n queryParams.sortAsc = [...this.descriptor.defaultSortAsc];\n }\n\n this.dataProviderSubscription = this.dataProvider?.getAll(queryParams, this.dataProviderService)\n .pipe(\n first(),\n finalize(() => this.dataProviderLoadingSubject.next(false))\n )\n .subscribe(res => {\n this.dataProviderLatestLazyLoadEvent = lazyLoadEvent ?? undefined;\n this.dataProviderQueryResultSubject.next(res);\n }, err => {\n // this.messageService.add({severity: 'error', summary: 'Error', detail: 'Failed to fetch table items', life: 3000});\n console.error(err);\n });\n\n if (emitEvent) {\n const mngEvent = new MngTableLoadEvent();\n mngEvent.originalEvent = lazyLoadEvent ?? undefined;\n mngEvent.queryParam = queryParams;\n this.loadEventEmitter.next(mngEvent);\n }\n }\n}\n","<p-table [value]=\"(queryResult$ | async)?.pageData ?? []\"\n [dataKey]=\"$any(descriptor.dataKeyProperty)\"\n [lazy]=\"useDataProvider\"\n (onLazyLoad)=\"onTableLazyLoad($event)\"\n [loading]=\"(loading$ | async) ?? false\"\n [paginator]=\"useDataProvider\"\n [rows]=\"rowsPerPageOptions[0]\"\n [totalRecords]=\"(queryResult$ | async)?.allDataCount ?? 0\"\n [rowsPerPageOptions]=\"rowsPerPageOptions\"\n [showCurrentPageReport]=\"true\"\n [currentPageReportTemplate]=\"'mngTable.paginationMsg' | translate\"\n [multiSortMeta]=\"$any(multiSortMeta)\"\n sortMode=\"multiple\"\n [(selection)]=\"selection\"\n (selectionChange)=\"onSelectionChange($event)\"\n responsiveLayout=\"scroll\">\n {{ descriptor.hasDefaultSort}}\n\n <ng-template *ngIf=\"captionTemplate || descriptor.title\" pTemplate=\"caption\">\n <ng-container *ngIf=\"captionTemplate; else defaultCaption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultCaption>\n <h5 class=\"p-m-0\">{{ descriptor.title }}</h5>\n </ng-template>\n </ng-template>\n\n <ng-template pTemplate=\"header\">\n <tr>\n <th *ngIf=\"selectionEnabled\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <ng-container *ngFor=\"let col of descriptor.columns\">\n <th *ngIf=\"col.isSortEnabled\" [pSortableColumn]=\"col.property\">\n <div class=\"flex justify-content-between align-items-center\">\n {{ descriptor.model.typeName + \".properties.\" + col.property | translate }}\n <p-sortIcon [field]=\"col.property\"></p-sortIcon>\n <p-columnFilter *ngIf=\"col.isFilterEnabled\" class=\"ml-auto\" type=\"text\" display=\"menu\" matchMode=\"equals\"\n [field]=\"col.property\"\n [showOperator]=\"false\" [showAddButton]=\"false\" [hideOnClear]=\"true\">\n </p-columnFilter>\n </div>\n </th>\n <th *ngIf=\"!col.isSortEnabled\">\n <div class=\"flex justify-content-between align-items-center\">\n {{ descriptor.model.typeName + \".properties.\" + col.property | translate }}\n <p-columnFilter *ngIf=\"col.isFilterEnabled\" class=\"ml-auto\" type=\"text\" display=\"menu\" matchMode=\"equals\"\n [field]=\"col.property\"\n [showOperator]=\"false\" [showAddButton]=\"false\" [hideOnClear]=\"true\">\n </p-columnFilter>\n </div>\n </th>\n </ng-container>\n <th *ngIf=\"columnActionTemplate\"></th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-item let-idx=\"rowIndex\">\n <tr>\n <td *ngIf=\"selectionEnabled\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <td *ngFor=\"let col of descriptor.columns\" (click)=\"onCellClick(col, item, idx)\" class=\"clickable\">\n {{ col.displayPropertyPath ? (item | propertyPath: col.displayPropertyPath) : item[col.property] }}\n </td>\n <td *ngIf=\"columnActionTemplate\" class=\"text-right\">\n <ng-container *ngTemplateOutlet=\"columnActionTemplate; context: { rowItem: item, rowIndex: idx }\"></ng-container>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td [attr.colspan]=\"descriptor.columns.length + (columnActionTemplate ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n {{ 'mngTable.noItems' | translate }}\n </td>\n </tr>\n </ng-template>\n</p-table>\n","import {DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {Observable} from 'rxjs';\n\nimport {IdType} from '../types';\nimport {IDataProvider} from '../providers';\nimport {TableviewComponentService} from '../../components/tableview/tableview.component.service';\n\nexport class ActionExecContext<T, S, DP extends IDataProvider<T, S>> {\n constructor(\n public readonly dataProvider?: DP,\n public readonly serviceInstance?: S,\n public readonly data?: {\n item?: T;\n itemId?: IdType;\n actionData?: ActionData;\n },\n public readonly sourceComponent: any = null,\n public readonly tableview: TableviewComponentService<T, S>|null = null\n ) {}\n}\n\nexport class ActionError {\n constructor(\n public readonly error: any, // error details\n public readonly dismissed: boolean = false // by user\n ) {}\n}\n\nexport class ActionRunResult<T, S, DP extends IDataProvider<T, S>> {\n constructor(\n public readonly context?: ActionExecContext<T, S, DP>,\n public readonly result?: T,\n public readonly error?: ActionError\n ) {}\n}\n\nexport class ActionActivationResult<T, S, DP extends IDataProvider<T, S>> {\n constructor(\n public readonly runResult?: ActionRunResult<T, S, DP>,\n public readonly dialogRef?: DynamicDialogRef\n ) {}\n\n public get runContext() {\n return this.runResult ? this.runResult.context : null;\n }\n\n public get result() {\n return this.runResult ? this.runResult.result : null;\n }\n\n public get error() {\n return this.runResult ? this.runResult.error : null;\n }\n}\n\nexport class ActionTriggerResult<T, S, DP extends IDataProvider<T, S>> {\n constructor(\n public readonly activationResult?: ActionActivationResult<T, S, DP>,\n public readonly routerNavigation?: Observable<boolean>\n ) {}\n\n public get runContext() {\n return this.activationResult ? this.activationResult.runResult : null;\n }\n\n public get result() {\n return this.activationResult ? this.activationResult.result : null;\n }\n\n public get error() {\n return this.activationResult ? this.activationResult.error : null;\n }\n\n public get dialogRef() {\n return this.activationResult ? this.activationResult.dialogRef : null;\n }\n}\n\nexport type ActionData = {\n [key: string]: any;\n};\n","import {Injectable} from '@angular/core';\n\nimport {ITableviewDataProvider} from '../../models/providers';\nimport {ActionDescriptor} from '../../models/descriptors';\n\n// TODO: check if legit solution\n@Injectable()\nexport class TableviewComponentService<T, S> {\n\n dataProvider?: ITableviewDataProvider<T, S>;\n actions: Array<ActionDescriptor<T>> = [];\n\n constructor() {\n console.log('TableviewComponentService init.');\n }\n\n reloadTable() {\n // TODO: add callback functions to implement\n }\n}\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, Params, Router} from '@angular/router';\n\nimport {ConfirmationService, MessageService} from 'primeng/api';\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {Subscription} from 'rxjs';\nimport {first} from 'rxjs/operators';\n\nimport {ActionData, ActionRunResult} from '../../../models/action';\nimport {ActionDescriptor, ActionActivationTriggerEnum} from '../../../models/descriptors';\nimport {IConfirmationService} from '../../../models/interfaces';\nimport {ActionService, NavigationService} from '../../../services';\nimport {TableviewComponentService} from '../../tableview/tableview.component.service';\n\n@Component({\n selector: 'mng-action-route',\n templateUrl: './action-route.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [MessageService, ConfirmationService]\n})\nexport class ActionRouteComponent<T, S> implements OnInit, OnDestroy, IConfirmationService {\n\n private actions: Array<ActionDescriptor<T>> = [];\n private activeAction?: ActionDescriptor<T>;\n\n private dialogRef?: DynamicDialogRef;\n private dialogCloseSubscription?: Subscription;\n\n private subscriptions: Array<Subscription> = [];\n\n public cmpId: string = Math.random().toString(36).substring(2);\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private confirmationService: ConfirmationService,\n private navigationService: NavigationService,\n private actionService: ActionService,\n private tableviewService: TableviewComponentService<T, S>\n ) {}\n\n public ngOnInit() {\n\n this.actions = this.tableviewService?.actions.filter(a => a.activationTrigger === ActionActivationTriggerEnum.OnRoute) ?? [];\n const subscription = this.route.params.subscribe(p => {\n const action = this.findActiveAction(p);\n if (action) {\n this.activateAction(action, p, this.route.snapshot.queryParams);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n public ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n if (this.dialogRef) {\n this.dialogRef.close();\n }\n }\n\n public getConfirmationService() {\n return this.confirmationService;\n }\n\n public getConfirmationServiceInstanceKey(action: ActionDescriptor<any>) {\n return `actionRoute_${this.cmpId}`;\n }\n\n private activateAction(action: ActionDescriptor<T>, p: Params, qp: Params) {\n this.activeAction = action;\n const itemId = p['itemId'];\n const actionData: ActionData = {};\n for (let key in p) {\n if (key === 'itemId') {\n continue;\n }\n actionData[key] = p[key];\n }\n for (let key in qp) {\n actionData[key] = p[key];\n }\n this.actionService.activateAction(action, itemId, undefined, actionData, this.tableviewService, this)\n .pipe(first())\n .subscribe(res => {\n if (res.dialogRef) {\n this.dialogRef = res.dialogRef;\n this.dialogCloseSubscription = this.dialogRef.onClose.subscribe(e => {\n const actionEv = e as ActionRunResult<T, S, any>;\n if (!actionEv?.error || !actionEv?.error?.dismissed) {\n this.tableviewService.reloadTable(); // reload only if no error in action and\n }\n this.deactivateAction();\n });\n }\n });\n }\n\n private deactivateAction() {\n if (this.dialogCloseSubscription) {\n this.dialogCloseSubscription.unsubscribe();\n this.dialogCloseSubscription = undefined;\n }\n if (this.navigationService.getPreviousLocation()) {\n // there are internal history records, so back can be normally called\n this.navigationService.back();\n } else {\n // there is no internal history records, figure out the base url by eliminating action specific url\n let url = this.navigationService.getCurrentLocation();\n if (!url) {\n this.navigationService.back();\n } else {\n if (url.startsWith('/')) {\n url = url.substring(1);\n }\n const urlPathSegments = url.split('?')[0].split('#')[0].split('/');\n let actionUrl = this.activeAction?.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n const actionUrlSegments = actionUrl.split('/');\n const redirectUrl = urlPathSegments.slice(0, urlPathSegments.length - actionUrlSegments.length).join('/');\n this.router.navigateByUrl(`/${redirectUrl}`, { replaceUrl: true });\n }\n }\n this.activeAction = undefined;\n this.dialogRef = undefined;\n }\n\n private findActiveAction(params: Params): ActionDescriptor<T>|null {\n const urlSegments = this.route.snapshot.url;\n for (const action of this.actions) {\n let actionUrl = action.routeUrl ?? '';\n // TODO: dont strip '/', but use it accordingly with Angular's router patterns (/, ./, ../)\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n const actionUrlSegments = actionUrl.split('/');\n if (actionUrlSegments.length !== urlSegments.length) {\n continue;\n }\n let isMatch = true;\n for (let i = 0; i < actionUrlSegments.length; i++) {\n if (actionUrlSegments[i].startsWith(':')) {\n const paramName = actionUrlSegments[i].substring(1);\n if (!params[paramName]) {\n isMatch = false;\n break;\n }\n } else if (actionUrlSegments[i] !== urlSegments[i].path) {\n isMatch = false;\n break;\n }\n }\n if (isMatch) {\n return action;\n }\n }\n return null;\n }\n}\n","<p-confirmDialog [key]=\"'actionRoute_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n","import {AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList, ViewChild} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\n\nimport {FormlyFieldConfig, FormlyFormOptions} from '@ngx-formly/core';\nimport {Message} from 'primeng/api';\nimport {Observable, of, Subscription} from 'rxjs';\n\nimport {EditorDescriptor} from '../../../models/descriptors';\nimport {MngEditorSubmitEvent} from '../../../models/events';\nimport {TemplateDirective} from '../../../directives';\nimport {EditorFormlyUtil} from '../../../utils';\n\n@Component({\n selector: 'mng-form-editor',\n templateUrl: './form-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormEditorComponent<T> implements OnInit, AfterContentInit, OnDestroy {\n\n // metadata and editor mode input\n @Input() public descriptor!: EditorDescriptor<T>;\n @Input() public submitLoading: Observable<boolean>|boolean = false;\n\n // data source inputs;\n @Input() public item?: T;\n\n // extra features input\n @Input() public isSubmitButtonVisible = false;\n @Input() public isFormDisabled = null;\n\n // event outputs\n @Output('onSubmit') private submitEventEmitter = new EventEmitter<MngEditorSubmitEvent<T>>();\n\n // content and view queries\n @ContentChildren(TemplateDirective) templates!: QueryList<TemplateDirective>;\n\n @ViewChild('submitButton')\n public submitButtonElementRef?: ElementRef;\n\n public form: FormGroup = new FormGroup({});\n public formOptions: FormlyFormOptions = {\n formState: {\n add: false,\n edit: false,\n disabled: false\n }\n };\n public formFields!: FormlyFieldConfig[];\n public formOrigItem?: T;\n public formModel: any = {};\n public formMessages: Message[] = [];\n public submitLoading$!: Observable<boolean>;\n\n private subscriptions: Subscription[] = [];\n\n constructor() { }\n\n public ngOnInit() {\n\n this.updateFormModel(this.item);\n this.submitLoading$ = this.submitLoading instanceof Observable ? this.submitLoading : of(this.submitLoading);\n\n // init fields for formly\n this.formFields = EditorFormlyUtil.createFormlyConfigFromDescriptor(this.descriptor);\n this.updateFormState();\n }\n\n public ngAfterContentInit() {\n this.templates.forEach(template => {\n switch(template.getType()) {\n // case 'caption':\n // this.captionTemplate = template.template;\n // break;\n }\n });\n }\n\n public ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n public submit() {\n this.submitButtonElementRef?.nativeElement.click();\n }\n\n public onSubmit(event: Event) {\n this.formOptions.formState.submittedOn = Date.now();\n this.formMessages = [];\n\n const formSubmitItem = this.form.value as T;\n if (this.form.valid) {\n this.descriptor.fields.forEach(field => {\n if (field && field.setter) {\n // TODO: resolve ts ignore\n // @ts-ignore\n field.setter(formSubmitItem, formSubmitItem[field.property]);\n }\n });\n\n this.submitEventEmitter.next(new MngEditorSubmitEvent(formSubmitItem));\n } else {\n // find and mark invalid tabs\n if (this.formFields[0].type === 'tabs' && this.formFields[0].fieldGroup) {\n for (const tab of this.formFields[0].fieldGroup) {\n const isInvalid = this.isAnyFieldInvalid(tab.fieldGroup);\n this.formOptions.formState['tab_' + (tab.id ? tab.id : tab.templateOptions?.label) + '_invalid'] = isInvalid;\n }\n }\n const event = new MngEditorSubmitEvent(formSubmitItem);\n event.success = false;\n this.submitEventEmitter.next(event);\n }\n }\n\n private isAnyFieldInvalid(fields: FormlyFieldConfig[] = []): boolean {\n for (const field of fields) {\n let fieldInvalid = false;\n if (Array.isArray(field.fieldGroup)) {\n fieldInvalid = this.isAnyFieldInvalid(field.fieldGroup);\n } else if (typeof field.type !== 'undefined') {\n fieldInvalid = !field.formControl?.valid;\n }\n if (fieldInvalid) {\n return true;\n }\n }\n return false;\n }\n\n private updateFormModel(item?: T) {\n this.formOrigItem = item;\n // TODO: to check if this is ok, could be problems with dates, if so, try lodash\n const formModel = JSON.parse(JSON.stringify(item ?? {}));\n\n this.descriptor.fields.forEach(field => {\n if (field.getter && item) {\n formModel[field.property] = field.getter(item);\n }\n });\n if (typeof this.formOptions.resetModel === 'function') { // could not be initiated yet\n this.formOptions.resetModel(this.formModel);\n }\n this.formModel = formModel;\n }\n\n private updateFormState() {\n this.formOptions.formState.disabled = this.isFormDisabled !== null ? this.isFormDisabled === true : this.descriptor.disabled;\n }\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit($event)\">\n <formly-form [form]=\"form\" [fields]=\"formFields\" [options]=\"formOptions\" [model]=\"formModel\"></formly-form>\n <button #submitButton pButton type=\"submit\" [class.hidden]=\"!isSubmitButtonVisible\" [disabled]=\"form.disabled\" [loading]=\"(submitLoading$ | async) ?? false\"></button>\n</form>\n<p-messages [value]=\"formMessages\"></p-messages>\n","import {ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, Injector, Input, OnDestroy, OnInit, Output, QueryList, ViewChild} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {DynamicDialogConfig, DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {Observable, of, ReplaySubject, Subscription} from 'rxjs';\nimport {finalize, first, mergeMap} from 'rxjs/operators';\n\nimport {ActionData, ActionError, ActionRunResult} from '../../../models/action';\nimport {ActionDescriptor, ActionEditorDescriptor} from '../../../models/descriptors';\nimport {IdType} from '../../../models/types';\nimport {IEditorDataProvider} from '../../../models/providers';\nimport {MngEditorItemEvent, MngEditorSubmitEvent} from '../../../models/events';\nimport {ActionService} from '../../../services';\nimport {TemplateDirective} from '../../../directives';\nimport {FormEditorComponent} from '../../../components/form';\nimport {I18nUtil} from '../../../utils';\nimport {TableviewComponentService} from '../../tableview/tableview.component.service';\n\n@Component({\n selector: 'mng-action-dialog',\n templateUrl: './action-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ActionDialogComponent<T, S> implements OnInit, OnDestroy {\n\n // metadata and editor mode input\n @Input() public action!: ActionEditorDescriptor<T>;\n\n // data source inputs\n @Input() public itemId?: IdType;\n @Input() public item?: T;\n @Input() public actionData?: ActionData;\n @Input() public dataProvider?: IEditorDataProvider<T, S>;\n\n // event outputs\n @Output('onFinished') private createEventEmitter = new EventEmitter<MngEditorItemEvent<T>>();\n @Output('onVisibleChange') private visibleChangeEventEmitter = new EventEmitter<boolean>();\n\n // content and view queries\n @ContentChildren(TemplateDirective) templates!: QueryList<TemplateDirective>;\n\n @ViewChild('submitButton') private submitButtonElementRef!: ElementRef;\n @ViewChild(FormEditorComponent) private editorComponent!: FormEditorComponent<T>;\n\n public cmpId: string = Math.random().toString(36).substring(2);\n\n private loadingSubject = new ReplaySubject<boolean>(1);\n private submitLoadingSubject = new ReplaySubject<boolean>(1);\n public loading$: Observable<boolean> = this.loadingSubject.asObservable();\n public submitLoading$: Observable<boolean> = this.submitLoadingSubject.asObservable();\n public isSaveButton = true;\n\n private tableviewService?: TableviewComponentService<T, S>;\n private sourceComponent: any = this;\n private subscriptions: Array<Subscription> = [];\n\n constructor(\n private injector: Injector,\n private translate: TranslateService,\n public dialogRef: DynamicDialogRef,\n public dialogConfig: DynamicDialogConfig,\n private actionService: ActionService\n ) {}\n\n public ngOnInit() {\n\n if (this.dialogConfig.data) {\n if (this.dialogConfig.data.action) {\n this.action = this.dialogConfig.data.action;\n }\n if (this.dialogConfig.data.item) {\n this.item = this.dialogConfig.data.item;\n }\n if (this.dialogConfig.data.itemId) {\n this.itemId = this.dialogConfig.data.itemId;\n }\n if (this.dialogConfig.data.actionData) {\n this.actionData = this.dialogConfig.data.actionData;\n }\n if (this.dialogConfig.data.tableview) {\n this.tableviewService = this.dialogConfig.data.tableview;\n if (!this.dataProvider && this.tableviewService?.dataProvider) {\n this.dataProvider = this.tableviewService.dataProvider;\n }\n }\n if (this.dialogConfig.data.sourceComponent) {\n this.sourceComponent = this.dialogConfig.data.sourceComponent;\n }\n }\n\n this.isSaveButton = typeof this.action.submitFunction === 'function';\n this.setDialogHeaderTitle();\n\n this.loadItemWithDataProvider();\n }\n\n public ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n public onSubmit(event: MngEditorSubmitEvent<T>) {\n if (event.success) {\n if (typeof this.action.submitFunction !== 'function') {\n return;\n }\n this.submitLoadingSubject.next(true);\n this.actionService.runEditorSave(this.action, this.itemId, event.formItem, this.dataProvider, this.sourceComponent, this.tableviewService, this.actionData)\n .pipe(\n first(),\n finalize(() => this.submitLoadingSubject.next(false))\n )\n .subscribe(res => {\n this.closeDialog(res);\n });\n }\n }\n\n public closeDialog(result?: ActionRunResult<T, any, any>) {\n this.dialogRef.close(result ? result : new ActionRunResult(undefined, undefined, new ActionError(null, true)));\n }\n\n public saveItem() {\n this.editorComponent.submit();\n }\n\n private loadItemWithDataProvider() {\n if (typeof this.action.fetchFunction !== 'function') {\n return;\n }\n this.loadingSubject.next(true);\n this.actionService.runEditorFetch(this.action, this.itemId, this.dataProvider, this.sourceComponent, this.tableviewService)\n .pipe(\n first(),\n finalize(() => this.loadingSubject.next(false))\n )\n .subscribe(res => {\n this.item = res.result;\n this.setDialogHeaderTitle();\n });\n }\n\n private setDialogHeaderTitle() {\n if (this.action.editorTitle === null) {\n requestAnimationFrame(() => {\n this.dialogConfig.header = undefined;\n });\n return;\n }\n const subscription = I18nUtil.streamActionTranslation(this.translate, this.action as ActionDescriptor<T>, 'dialog.title', undefined, this.item)\n .pipe(\n mergeMap(i18nDialogTitle => i18nDialogTitle === null\n ? I18nUtil.getActionTranslation(this.translate, this.action as ActionDescriptor<T>, 'title', this.action.editorTitle, this.item)\n : of(i18nDialogTitle))\n )\n .subscribe(t => {\n requestAnimationFrame(() => {\n this.dialogConfig.header = t ?? undefined;\n });\n });\n this.subscriptions.push(subscription);\n }\n}\n","<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && !(loading$ | async)\"\n [descriptor]=\"action.editorDescriptor\"\n [item]=\"item\"\n (onSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n <div class=\"flex flex-row justify-content-between\">\n <div></div>\n <div>\n <button type=\"button\" pButton pRipple [label]=\"'general.close' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"closeDialog()\" [disabled]=\"submitLoading$ | async\"></button>\n <button *ngIf=\"isSaveButton\" #submitButton type=\"button\" pButton pRipple\n [label]=\"'general.save' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"saveItem()\"\n [loading]=\"(submitLoading$ | async) ?? false\"\n [disabled]=\"(submitLoading$ | async) ?? false\">\n </button>\n </div>\n </div>\n</div>\n","import {Injectable, Injector} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\n\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {Confirmation, ConfirmationService} from 'primeng/api';\nimport {TranslateService} from '@ngx-translate/core';\nimport {from, Observable, of} from 'rxjs';\nimport {first, map} from 'rxjs/operators';\n\nimport {ActionActivationResult, ActionData, ActionError, ActionExecContext, ActionRunResult, ActionTriggerResult} from '../models/action';\nimport {ActionActivationTriggerEnum, ActionDescriptor, ActionEditorDescriptor, ActionTypeEnum} from '../models/descriptors';\nimport {MngTableCellClickEvent} from '../models/events';\nimport {IDataProvider, IEditorDataProvider} from '../models/providers';\nimport {IdType} from '../models/types';\nimport {IConfirmationService} from '../models/interfaces';\nimport {I18nUtil} from '../utils';\nimport {ActionDialogComponent} from '../components/action';\nimport {TableviewComponentService} from '../components/tableview/tableview.component.service';\n\n@Injectable()\nexport class ActionService {\n\n constructor(\n private injector: Injector,\n private router: Router,\n private dialogService: DialogService,\n private confirmationService: ConfirmationService,\n private translate: TranslateService\n ) {\n }\n\n public getActionExecContext<T, S>(action: ActionDescriptor<T>, itemId?: IdType, item?: T, dataProvider?: IDataProvider<T, S>,\n tableview?: TableviewComponentService<T, S>, sourceComponent?: any, actionData?: ActionData): ActionExecContext<T, S, IDataProvider<T, S>> {\n return new ActionExecContext<T, S, IDataProvider<T, S>>(\n dataProvider,\n this.getDataProviderService(dataProvider) ?? undefined,\n {\n item,\n itemId,\n actionData\n },\n sourceComponent,\n tableview\n );\n }\n\n public runAction<T, S>(action: ActionDescriptor<T>, itemId?: IdType, item?: T, dataProvider?: IDataProvider<T, S>,\n sourceComponent?: any, tableview?: TableviewComponentService<T, S>, actionData?: ActionData): Observable<ActionRunResult<T, S, IDataProvider<T, S>>> {\n const context = this.getActionExecContext(action, itemId, item, dataProvider, tableview, sourceComponent, actionData);\n if (action.hasRunConfirmation) {\n if (typeof sourceComponent?.getConfirmationService !== 'function' || typeof sourceComponent?.getConfirmationServiceInstanceKey !== 'function') {\n throw Error(`Source component ${sourceComponent} should be implementing IConfirmationService interface to be able to provide confirmation functionality.`);\n }\n\n const srcConfirmComponent = sourceComponent as IConfirmationService;\n const confirmParams: Confirmation = {\n key: srcConfirmComponent.getConfirmationServiceInstanceKey(action),\n acceptVisible: false,\n rejectVisible: false\n };\n\n if (action.runConfirmationTitle !== null) {\n confirmParams.header = I18nUtil.instantActionTranslation(this.translate, action, 'confirm.title', action.runConfirmationTitle, item, 'general.confirmation') ?? undefined;\n }\n if (action.runConfirmationMessage !== null) {\n confirmParams.message = I18nUtil.instantActionTranslation(this.translate, action, 'confirm.message', action.runConfirmationMessage, item, 'general.confirmation') ?? undefined;\n }\n if (action.runConfirmationIcon !== null) {\n confirmParams.icon = action.runConfirmationIcon === undefined ? 'pi pi-exclamation-triangle' : action.runConfirmationIcon;\n }\n if (action.runConfirmationAcceptTitle !== null) {\n confirmParams.acceptLabel = I18nUtil.instantActionTranslation(this.translate, action, 'confirm.accept', action.runConfirmationAcceptTitle, item, 'general.yes') ?? undefined;\n confirmParams.acceptVisible = true;\n }\n if (action.runConfirmationRejectTitle !== null) {\n confirmParams.rejectLabel = I18nUtil.instantActionTranslation(this.translate, action, 'confirm.reject', action.runConfirmationRejectTitle, item, 'general.no') ?? undefined;\n confirmParams.rejectVisible = true;\n }\n\n const observable = new Observable<ActionRunResult<T, S, IDataProvider<T, S>>>(observer => {\n confirmParams.accept = () => {\n action.runFunction(context).pipe(\n first(),\n map(res => new ActionRunResult(context, res))\n ).subscribe(res => {\n observer.next(res);\n });\n }\n\n confirmParams.reject = () => {\n observer.error(new ActionRunResult(context, undefined, new ActionError(null, true)));\n }\n\n srcConfirmComponent.getConfirmationService().confirm(confirmParams);\n });\n return observable;\n } else {\n return action.runFunction(context).pipe(map(res => new ActionRunResult(context, res)));\n }\n // TODO: error handling\n }\n\n /**\n * Runs editor action save function usually triggered on form submit.\n *\n * @param action Action descriptor.\n * @param itemId Item id (if exists).\n * @param formItem Item instance (from form).\n * @param dataProvider Data provider\n * @param sourceComponent Source component from where the fetch function was called.\n * @param tableview Tableview component.\n * @param actionData Additional action data.\n */\n public runEditorSave<T, S>(action: ActionEditorDescriptor<T>, itemId?: IdType, formItem?: T, dataProvider?: IEditorDataProvider<T, S>,\n sourceComponent?: any, tableview?: TableviewComponentService<T, S>, actionData?: ActionData): Observable<ActionRunResult<T, S, IEditorDataProvider<T, S>>> {\n const context = this.prepareRunContextForEditor(formItem, itemId, dataProvider, sourceComponent, tableview, actionData);\n if (typeof action.submitFunction !== 'function') {\n throw new Error(`Submit function for action ${action.actionName} cannot be invoked.`);\n }\n return action.submitFunction(context).pipe(map(res => new ActionRunResult(context, res)));\n // TODO: error handling\n }\n\n /**\n * Runs editor action fetch function.\n *\n * @param action Action descriptor.\n * @param itemId Item id.\n * @param dataProvider Data provider\n * @param sourceComponent Source component from where the fetch function was called.\n * @param tableview Tableview component.\n * @param actionData Additional action data.\n */\n public runEditorFetch<T, S>(action: ActionEditorDescriptor<T>, itemId?: IdType, dataProvider?: IEditorDataProvider<T, S>,\n sourceComponent?: any, tableview?: TableviewComponentService<T, S>, actionData?: ActionData): Observable<ActionRunResult<T, S, IEditorDataProvider<T, S>>> {\n const context = this.prepareRunContextForEditor(undefined, itemId, dataProvider, sourceComponent, tableview, actionData);\n return action.fetchFunction(context).pipe(map(res => new ActionRunResult(context, res)));\n // TODO: error handling\n }\n\n /**\n * Prepares action run context for action of type editor.\n *\n * @param item Item instance (if exists).\n * @param itemId Item id (if exists).\n * @param dataProvider Data provider.\n * @param sourceComponent Source component from where the context preparation was called.\n * @param tableview Tableview component.\n * @param actionData Additional action data.\n */\n private prepareRunContextForEditor<T, S>(item?: T, itemId?: IdType, dataProvider?: IEditorDataProvider<T, S>,\n sourceComponent?: any, tableview?: TableviewComponentService<T, S>, actionData?: ActionData): ActionExecContext<T, S, IEditorDataProvider<T, S>> {\n const context = new ActionExecContext<T, S, IEditorDataProvider<T, S>>(\n dataProvider,\n this.getDataProviderService(dataProvider) ?? undefined,\n {\n item,\n itemId,\n actionData\n },\n sourceComponent,\n tableview\n );\n return context;\n }\n\n /**\n * Gets service instance of data provider.\n *\n * @param dataProvider Data provider instance.\n */\n private getDataProviderService<T, S>(dataProvider?: IDataProvider<T, S>): S|null {\n if (dataProvider?.serviceType) {\n return this.injector.get<S>(dataProvider.serviceType);\n } else {\n return null;\n }\n }\n\n /**\n * Activates action.\n *\n * @param action Action descriptor.\n * @param item Item instance (if exists).\n * @param itemId Item id (if exists).\n * @param actionData Optional additional action data.\n * @param tableview Tableview component.\n * @param sourceComponent Source activation component.\n */\n public activateAction<T, S>(action: ActionDescriptor<T>, itemId?: IdType, item?: T, actionData?: ActionData, tableview?: TableviewComponentService<T, S>, sourceComponent?: any): Observable<ActionActivationResult<T, S, IDataProvider<T, S>>> {\n if (action.type === ActionTypeEnum.Editor) {\n const dialogConfig: DynamicDialogConfig = {\n data: {\n action\n },\n styleClass: action.className\n };\n if (itemId) {\n dialogConfig.data.itemId = itemId;\n }\n if (item) {\n dialogConfig.data.item = item;\n }\n if (actionData) {\n dialogConfig.data.actionData = actionData;\n }\n if (tableview) {\n dialogConfig.data.tableview = tableview;\n }\n if (sourceComponent) {\n dialogConfig.data.sourceComponent = sourceComponent;\n }\n const dialogRef = this.dialogService.open(ActionDialogComponent, dialogConfig);\n return of(new ActionActivationResult<T, S, IDataProvider<T, S>>(undefined, dialogRef));\n } else {\n // directly execute action\n return this.runAction<T, S>(action, itemId, item, tableview?.dataProvider ?? undefined, sourceComponent, tableview, actionData)\n .pipe(map(res => new ActionActivationResult<T, S, IDataProvider<T, S>>(res)));\n }\n }\n\n /**\n * Triggers action from table row click position.\n *\n * @param action Action descriptor.\n * @param event Target table click event.\n * @param route Currently activate route.\n */\n public triggerRowClickAction<T>(action: ActionDescriptor<T>, event: MngTableCellClickEvent<T>, route: ActivatedRoute|null = null) {\n // TODO: resolve ts ignore\n // @ts-ignore\n return this.triggerAction(action, event?.rowItem?.[action.model.idPropertyName], event.rowItem, null, route);\n }\n\n /**\n * Triggers action with optional data (item, itemId, ...) and currently activated route.\n *\n * @param action Action.\n * @param actionData Optional action data.\n * @param route Optional activated route.\n */\n public triggerAction<T, S>(action: ActionDescriptor<T>, itemId?: IdType, item?: T, actionData?: ActionData, route?: ActivatedRoute,\n tableview?: TableviewComponentService<T, S>, sourceComponent?: any): Observable<ActionTriggerResult<T, S, IDataProvider<T, S>>> {\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n const baseUrl = this.router.url;\n let actionUrl = action.routeUrl ?? '';\n // TODO: dont strip '/', but use it accordingly with Angular's router patterns (/, ./, ../)\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n const actionUrlSegments = actionUrl.split('/')\n .map(s => {\n if (s === ':itemId') {\n return itemId;\n } else if (s.startsWith(`:${action.model.typeName}.`)) {\n // TODO: resolve ts ignore\n // @ts-ignore\n return item?.[s.substring(action.model.typeName.length + 2)] ?? '';\n } else if (s.startsWith(':')) {\n return actionData?.[s.substring(1)] ?? '';\n } else {\n return s;\n }\n });\n return of(new ActionTriggerResult<T, S, IDataProvider<T, S>>(undefined, from(this.router.navigate([baseUrl, ...actionUrlSegments], {relativeTo: route}))));\n } else {\n return this.activateAction(action, itemId, item, actionData, tableview, sourceComponent)\n .pipe(map(res => new ActionTriggerResult<T, S, IDataProvider<T, S>>(res)));\n }\n }\n}\n","import {HttpClient} from '@angular/common/http';\n\nimport {catchError, first, map} from 'rxjs/operators';\nimport {Observable} from 'rxjs';\nimport {FormlyConfig} from '@ngx-formly/core';\n\nexport class ConfigurationService {\n\n private static _instance: ConfigurationService|null = null;\n public static init(httpClient: HttpClient): ConfigurationService {\n if (!this._instance) {\n ConfigurationService._instance = new ConfigurationService(httpClient);\n }\n return ConfigurationService.get();\n }\n public static get(): ConfigurationService {\n if (!ConfigurationService._instance) {\n throw new Error('Configuration service instance not set. Call init first.');\n }\n return ConfigurationService._instance;\n }\n\n private projectEnvironment?: any;\n private jsonEnvironments: Array<any> = [];\n\n private configuration = {...this.projectEnvironment};\n\n private constructor(private http: HttpClient) {\n }\n\n /**\n * Add project environment source.\n * @param environemnt Environment.\n */\n public addEnvironmentSource(environment: any): void {\n this.projectEnvironment = environment;\n }\n\n /**\n * Adds new config source from JSON file.\n * @param url Url to JSON file.\n */\n public addJsonSource(url: string = this.projectEnvironment.configurationJsonSource): Observable<boolean> {\n\n if (!url) {\n console.warn('No path to configuration file specified. Setting default.');\n url = 'assets/config/env{{environment}}.json';\n }\n\n const envName = this.projectEnvironment.name || (this.projectEnvironment.production ? 'prod' : 'dev');\n url = url.replace('{{environment}}', '.' + envName);\n\n return this.http.get<any>(url)\n .pipe(\n catchError((err => {\n console.warn('Error loading configuration file:' + err.message + '. Falling back to env.json');\n\n const pathSegments = url.split('/');\n pathSegments[pathSegments.length - 1] = 'env.json';\n return this.http.get<any>(pathSegments.join('/'));\n })),\n first(),\n map(res => {\n this.jsonEnvironments.push(res);\n this.mergeConfigs();\n return true;\n })\n );\n }\n\n /**\n * Get configuration.\n */\n public getConfig() {\n return this.configuration;\n }\n\n /**\n * Get configuration value for key.\n * @param key Configuration key.\n */\n public getConfigValue(key: string) {\n return this.configuration[key] ? this.configuration[key] : null;\n }\n\n /**\n * Merges configuration from multiple sources with\n */\n private mergeConfigs() {\n let config = {...this.projectEnvironment};\n if (this.jsonEnvironments.length) {\n for (const je of this.jsonEnvironments) {\n config = {...config, ...je};\n }\n }\n this.configuration = config;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\nimport {Location} from '@angular/common';\n\n@Injectable()\nexport class NavigationService {\n\n private history: Array<string> = [];\n\n constructor(private router: Router, private location: Location) {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.history.push(event.urlAfterRedirects);\n console.log(this.history);\n }\n });\n }\n\n public getCurrentLocation(): string|null {\n if (this.history.length > 0) {\n return this.history[this.history.length - 1];\n } else {\n return null;\n }\n }\n\n public getPreviousLocation(): string|null {\n if (this.history.length > 1) {\n return this.history[this.history.length - 2];\n } else {\n return null;\n }\n }\n\n public back(): void {\n this.history.pop();\n if (this.history.length > 0) {\n this.location.back();\n } else {\n this.router.navigateByUrl('/')\n }\n }\n}\n","import {ChangeDetectionStrategy, Component, Input, OnInit, Optional} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {Observable, of, ReplaySubject} from 'rxjs';\nimport {finalize, first} from 'rxjs/operators';\nimport {ConfirmationService, MessageService} from 'primeng/api';\n\nimport {IdType} from '../../models/types';\nimport {ActionData} from '../../models/action';\nimport {ActionDescriptor} from '../../models/descriptors';\nimport {IConfirmationService} from '../../models/interfaces';\nimport {ActionService} from '../../services';\nimport {I18nUtil} from '../../utils';\nimport {TableviewComponentService} from '../tableview/tableview.component.service';\n\n@Component({\n selector: 'mng-action',\n templateUrl: './action.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [MessageService, ConfirmationService]\n})\nexport class ActionComponent<T, S> implements OnInit, IConfirmationService {\n\n // metadata and editor mode input\n @Input() public action!: ActionDescriptor<T>;\n @Input() public item?: T;\n @Input() public itemId?: IdType;\n @Input() public actionData?: ActionData;\n\n private loadingSubject = new ReplaySubject<boolean>(1);\n public $loading: Observable<boolean> = this.loadingSubject.asObservable();\n\n public cmpId: string = Math.random().toString(36).substring(2);\n public $isVisible!: Observable<boolean>;\n public $isEnabled!: Observable<boolean>;\n public $label!: Observable<string|null>;\n\n constructor(\n private route: ActivatedRoute,\n private translate: TranslateService,\n private actionService: ActionService,\n private confirmationService: ConfirmationService,\n private tableviewService: TableviewComponentService<T, S>\n ) {\n this.loadingSubject.next(false);\n }\n\n public ngOnInit() {\n const context = this.actionService.getActionExecContext(this.action, this.itemId, this.item, this.tableviewService?.dataProvider ?? undefined, this.tableviewService, this, this.actionData);\n this.$isVisible = typeof this.action.isVisibleFunction === 'function' ? this.action.isVisibleFunction(context) : of(true);\n this.$isEnabled = typeof this.action.isEnabledFunction === 'function' ? this.action.isEnabledFunction(context) : of(true);\n this.$label = I18nUtil.streamActionTranslation(this.translate, this.action, 'title', this.action?.title ?? undefined, this.item);\n }\n\n public triggerAction(event: Event) {\n this.loadingSubject.next(true);\n const actionData = this.actionData ? this.actionData : {};\n actionData['cmpId'] = this.cmpId;\n this.actionService.triggerAction(this.action, this.itemId, this.item, actionData, this.route, this.tableviewService, this)\n .pipe(\n first(),\n finalize(() => this.loadingSubject.next(false))\n )\n .subscribe(res => {});\n }\n\n public getConfirmationService() {\n return this.confirmationService;\n }\n\n public getConfirmationServiceInstanceKey(action: ActionDescriptor<any>) {\n return `${action.actionName}_${this.cmpId}`;\n }\n}\n","<ng-container *ngIf=\"$isVisible | async\">\n <button *ngIf=\"action.icon && action.title === null; else noIcon\" type=\"button\"\n pButton pRipple\n [icon]=\"action.icon\"\n [loading]=\"($loading | async) ?? false\"\n [disabled]=\"!($isEnabled | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button mng-action-button-icon p-button-rounded\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\">\n </button>\n <ng-template #noIcon>\n <button type=\"button\"\n pButton pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [loading]=\"($loading | async) ?? false\"\n [disabled]=\"!($isEnabled | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button p-button-text\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\">\n </button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {Observable, of, ReplaySubject, Subject, Subscription} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {FieldManyEditorDescriptor, ActionDescriptor, ActionEditorDescriptor, ActionLevelEnum} from '../../../../../models/descriptors';\nimport {ActionExecContext} from '../../../../../models/action';\nimport {IDataProvider, IEditorDataProvider} from '../../../../../models/providers';\n\n@Component({\n selector: 'mng-formly-table-dialog-form-field',\n templateUrl: './formly-field-table-dialog-form.component.html',\n styleUrls: ['./formly-field-table-dialog-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldTableDialogFormComponent<T, ET> extends FieldType implements OnInit, OnDestroy {\n\n public descriptor!: FieldManyEditorDescriptor<T, ET>;\n\n public itemsSubject: Subject<Array<T>> = new ReplaySubject(1);\n public items$: Observable<Array<T>> = this.itemsSubject.asObservable();\n\n public toolbarActions: Array<ActionDescriptor<T>> = [];\n public rowActions: Array<ActionDescriptor<T>> = [];\n\n private subscriptions: Subscription[] = [];\n\n public ngOnInit() {\n\n this.descriptor = this.to['descriptor'];\n const hasAddAction = this.descriptor.actions.some(a => a === FieldManyEditorDescriptor.ActionEnum.Add);\n const hasEditAction = this.descriptor.actions.some(a => a === FieldManyEditorDescriptor.ActionEnum.Edit);\n const hasDeleteAction = this.descriptor.actions.some(a => a === FieldManyEditorDescriptor.ActionEnum.Delete);\n\n if (hasAddAction) {\n console.log(this.descriptor.tableviewDescriptor.addEditor);\n const addAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.addEditor, 'add', this.descriptor.editor.model.type, this.descriptor.property)\n .withTitle(null)\n .withIcon('pi pi-plus')\n .withClassName('mng-formly-field-table-form-dialog')\n .withSubmitFunction(ctx => {\n this.formState.submittedOn = Date.now();\n let value = this.formControl.value;\n value = [...value, ctx.data?.item];\n this.formControl.patchValue(value);\n return of(value);\n })\n .withIsVisibleFunction(ctx => of(!this.options?.formState.disabled));\n this.toolbarActions.push(addAction as ActionDescriptor<T>);\n }\n if (hasEditAction) {\n const editAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.editEditor, 'edit', this.descriptor.editor.model.type, this.descriptor.property)\n .withTitle(null)\n .withIcon('pi pi-pencil')\n .withClassName('mng-formly-field-table-form-dialog')\n .withSubmitFunction(ctx => {\n this.formState.submittedOn = Date.now();\n let value = this.formControl.value;\n value[ctx.data?.actionData?.['itemIndex']] = ctx.data?.item;\n this.formControl.patchValue(value);\n return of(value);\n })\n .withIsVisibleFunction(ctx => of(!this.options?.formState.disabled));\n this.rowActions.push(editAction as ActionDescriptor<T>);\n }\n if (hasDeleteAction) {\n const deleteAction = new ActionDescriptor(this.descriptor.tableviewDescriptor.model, 'delete', this.descriptor.editor.model.type, this.descriptor.property)\n .withLevel(ActionLevelEnum.Danger)\n .withTitle(null)\n .withIcon('pi pi-trash')\n .withRunFunction(ctx => {\n let value = this.formControl.value;\n // TODO: resolve ts ignore\n // @ts-ignore\n value = value.filter(i => i[this.descriptor.tableDescriptor.dataKeyProperty] !== ctx.data.item?.[this.descriptor.tableDescriptor.dataKeyProperty]);\n this.formControl.patchValue(value);\n return of(value);\n })\n .withIsVisibleFunction(ctx => of(!this.options?.formState.disabled));\n this.rowActions.push(deleteAction);\n }\n\n // init values\n if (typeof this.formControl.value === 'undefined' || this.formControl.value === null) {\n this.formControl.patchValue([]);\n }\n const subscription = this.formControl.valueChanges\n .pipe(\n startWith(this.formControl.value)\n )\n .subscribe(v => {\n this.itemsSubject.next(v);\n });\n this.subscriptions.push(subscription);\n }\n\n public ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n}\n","<mng-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-end table-header\">\n <label class=\"mng-datatable-form-label p-m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <mng-action *ngFor=\"let action of toolbarActions\" [action]=\"action\"></mng-action>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\" let-idx=\"rowIndex\">\n <mng-action *ngFor=\"let action of rowActions\"\n [action]=\"action\" [item]=\"item\" [itemId]=\"descriptor.tableviewDescriptor.model.idPropertyName ? item[descriptor.tableviewDescriptor.model.idPropertyName] : undefined\" [actionData]=\"{ itemIndex: idx }\">\n </mng-action>\n </ng-template>\n</mng-table>\n","import {ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {Message} from 'primeng/api';\nimport {finalize, first, startWith} from 'rxjs/operators';\nimport {Observable, ReplaySubject, Subject, Subscription} from 'rxjs';\n\nimport {FilterMatchType, QueryParamBuilder, QueryResult} from '../../../../../api/models';\nimport {FieldManyToManyEditorDescriptor} from '../../../../../models/descriptors';\n\n@Component({\n selector: 'mng-formly-table-multiselect-add-field',\n templateUrl: './formly-field-table-dialog-multiselect.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldTableDialogMultiselectComponent<T, ET> extends FieldType implements OnInit, OnDestroy {\n\n public descriptor!: FieldManyToManyEditorDescriptor<T, ET>;\n\n public itemsSubject: Subject<Array<T>> = new ReplaySubject(1);\n public itemsAsync: Observable<Array<T>> = this.itemsSubject.asObservable();\n public addItemsSubject: Subject<QueryResult<T>> = new ReplaySubject(1);\n public addItemsAsync: Observable<QueryResult<T>> = this.addItemsSubject.asObservable();\n\n public dialogUseDataProvider: boolean = false;\n private dialogDataProviderService: any = null;\n private dialogIsLoadingSubject = new ReplaySubject<boolean>(1);\n\n public isDialogVisible = false;\n public dialogAreItemsLoaded = false;\n public dialogSelectedAddItems: Array<any> = [];\n public dialogMessages: Message[] = [];\n public dialogIsLoading$ = this.dialogIsLoadingSubject.asObservable();\n\n public hasAddAction: boolean = false;\n public hasDeleteAction: boolean = false;\n\n private subscriptions: Subscription[] = [];\n\n constructor(private injector: Injector) {\n super();\n }\n\n public ngOnInit() {\n\n this.descriptor = this.to['descriptor'];\n if (this.descriptor.lookupTableDataProvider?.serviceType) {\n this.dialogUseDataProvider = true;\n this.dialogDataProviderService = this.injector.get<any>(this.descriptor.lookupTableDataProvider.serviceType);\n }\n this.hasAddAction = this.descriptor.actions.some(a => a === FieldManyToManyEditorDescriptor.ActionEnum.Add);\n this.hasDeleteAction = this.descriptor.actions.some(a => a === FieldManyToManyEditorDescriptor.ActionEnum.Delete);\n\n // init values\n if (typeof this.formControl.value === 'undefined' || this.formControl.value === null) {\n this.formControl.patchValue([]);\n }\n const subscription = this.formControl.valueChanges\n .pipe(\n startWith(this.formControl.value)\n )\n .subscribe(v => {\n this.itemsSubject.next(v);\n });\n this.subscriptions.push(subscription);\n }\n\n public ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n openAddDialog() {\n if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {\n this.dialogIsLoadingSubject.next(true);\n const queryParamBuilder = QueryParamBuilder.create(50);\n if (this.descriptor.lookupTableDescriptor.hasDefaultSort) {\n this.descriptor.lookupTableDescriptor.defaultSortProperty.forEach((p, idx) => queryParamBuilder.withSort(p, this.descriptor.lookupTableDescriptor.defaultSortAsc[idx]));\n }\n if (this.descriptor.hasLookupExcludeValues) {\n // TODO: resolve ts ignore\n // @ts-ignore\n const filterValues = this.formControl.value.map(i => i[this.descriptor.excludeValueProperty])\n queryParamBuilder.withFilter(this.descriptor.excludeFilterProperty, filterValues, undefined, FilterMatchType.NotIn);\n }\n this.descriptor.lookupTableDataProvider?.getAll(queryParamBuilder.build(), this.dialogDataProviderService)\n .pipe(\n first(),\n finalize(() => this.dialogIsLoadingSubject.next(false))\n )\n .subscribe(res => {\n this.addItemsSubject.next(res);\n this.dialogAreItemsLoaded = true;\n });\n }\n this.dialogSelectedAddItems = [];\n this.isDialogVisible = true;\n }\n\n onSelectionChange(items: Array<any>) {\n this.dialogSelectedAddItems = items;\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n }\n\n addItems() {\n let value = this.formControl.value;\n if (Array.isArray(value)) {\n value = [...value, ...this.dialogSelectedAddItems];\n this.formControl.patchValue(value);\n this.dialogSelectedAddItems = [];\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n } else {\n console.error(\"Values are not an valid array, cannot add selected items to array\");\n this.dialogMessages = [{ severity: 'error', summary: 'Error', detail: 'Selected items could not be added' }];\n }\n }\n\n removeItem(item: any) {\n let value = this.formControl.value;\n if (Array.isArray(value)) {\n const compareProperty = this.descriptor.mainTableDescriptor.dataKeyProperty ? this.descriptor.mainTableDescriptor.dataKeyProperty : this.descriptor.mainTableDescriptor.model.idPropertyName;\n if (!compareProperty) {\n throw new Error('Cannot compare items, please provide main table data key property or model id property.');\n }\n value = value.filter(i => i[compareProperty] !== item[compareProperty]);\n this.formControl.patchValue(value);\n this.dialogAreItemsLoaded = false;\n } else {\n console.error(\"Values are not an valid array, cannot delete selected item from array\");\n }\n }\n}\n","<mng-table [descriptor]=\"descriptor.mainTableDescriptor\" [items]=\"itemsAsync\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-end table-header\">\n <label class=\"mng-datatable-form-label p-m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <button *ngIf=\"hasAddAction && !formControl.disabled\" pButton pRipple type=\"button\" icon=\"pi pi-plus\" class=\"p-button-rounded p-button-success\"\n (click)=\"openAddDialog()\">\n </button>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n <button *ngIf=\"hasDeleteAction && !formControl.disabled\" pButton pRipple type=\"button\" icon=\"pi pi-trash\" class=\"p-button-rounded p-button-danger\"\n (click)=\"removeItem(item)\">\n </button>\n </ng-template>\n</mng-table>\n\n<p-dialog *ngIf=\"hasAddAction\" [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.addItem' | translate: {item: to?.label!}\"\n [modal]=\"true\"\n styleClass=\"p-fluid mng-formly-field-table-multiselect-dialog\">\n <ng-template pTemplate=\"content\">\n <mng-table [descriptor]=\"descriptor.mainTableDescriptor\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [loading]=\"dialogIsLoading$\"\n (onSelectionChange)=\"onSelectionChange($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button pButton pRipple type=\"button\" [label]=\"'general.add' | translate\" icon=\"pi pi-check\" class=\"p-button-text\" (click)=\"addItems()\" [loading]=\"(dialogIsLoading$ | async) ?? false\" [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n","import {Component, ChangeDetectionStrategy} from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\n\n@Component({\n selector: 'mng-formly-field-tabs',\n templateUrl: './formly-field-tabs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyFieldTabsComponent extends FieldType {\n}\n","<p-tabView>\n <p-tabPanel *ngFor=\"let tab of field.fieldGroup; let i = index; let last = last;\"\n [header]=\"tab.templateOptions?.label!\"\n [headerStyleClass]=\"formControl.valid ? 'p-tabview-title' : 'bla'\">\n <ng-template pTemplate=\"header\">\n <span class=\"p-tabview-title\" [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.templateOptions?.label!) + '_invalid']\">{{ tab.templateOptions?.label! | translate }}</span>\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n</p-tabView>\n","import {Component, ChangeDetectionStrategy} from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\n\n@Component({\n selector: 'mng-formly-field-fieldset',\n templateUrl: './formly-field-fieldset.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyFieldFieldsetComponent extends FieldType {\n}\n","<ng-container *ngFor=\"let group of field.fieldGroup; let i = index; let last = last;\">\n <p-fieldset *ngIf=\"!group.templateOptions?.['descriptor']?.default; else defaultSet\" [legend]=\"group.templateOptions?.label! | translate\">\n <formly-field [field]=\"group\"></formly-field>\n </p-fieldset>\n <ng-template #defaultSet>\n <formly-field [field]=\"group\"></formly-field>\n </ng-template>\n</ng-container>\n","import {Component, Input, OnInit, ViewChild} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfirmationService, MessageService} from 'primeng/api';\nimport {DialogService} from 'primeng/dynamicdialog';\n\nimport {ActionService} from '../../services';\nimport {TableviewDescriptor} from '../../models/descriptors';\nimport {ITableviewDataProvider} from '../../models/providers';\nimport {MngTableCellClickEvent} from '../../models/events';\nimport {ActionDescriptor, ActionPositionEnum} from '../../models/descriptors';\nimport {TableComponent} from './table/table.component';\nimport {TableviewComponentService} from './tableview.component.service';\n\n@Component({\n selector: 'mng-tableview',\n templateUrl: './tableview.component.html',\n providers: [MessageService, ConfirmationService, TableviewComponentService]\n})\nexport class TableviewComponent<T, S> implements OnInit {\n\n @Input() descriptor!: TableviewDescriptor<T>;\n @Input() dataProvider?: ITableviewDataProvider<T, S>;\n @Input() actions: Array<ActionDescriptor<T>> = [];\n\n @ViewChild(TableComponent) tableComponent: TableComponent<T>|null = null;\n\n public rowClickActions: ActionDescriptor<T>[] = [];\n public rowInlineActions: ActionDescriptor<T>[] = [];\n public toolbarLeftActions: ActionDescriptor<T>[] = [];\n public toolbarRightActions: ActionDescriptor<T>[] = [];\n\n constructor(\n private route: ActivatedRoute,\n private messageService: MessageService,\n private translateService: TranslateService,\n private dialogService: DialogService,\n private confirmationService: ConfirmationService,\n private actionService: ActionService,\n private tableviewService: TableviewComponentService<T, S>\n ) {\n }\n\n ngOnInit() {\n\n this.tableviewService.actions = this.actions;\n this.tableviewService.dataProvider = this.dataProvider;\n for (const action of this.actions) {\n switch (action.position) {\n case ActionPositionEnum.RowClick:\n this.rowClickActions.push(action);\n break;\n case ActionPositionEnum.RowInline:\n this.rowInlineActions.push(action);\n break;\n case ActionPositionEnum.ToolbarLeft:\n this.toolbarLeftActions.push(action);\n break;\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.push(action);\n break;\n }\n }\n }\n\n public reloadTable() {\n this.tableComponent?.reload();\n }\n\n public onTableCellClick(event: MngTableCellClickEvent<T>) {\n if (this.rowClickActions.length) {\n for (const action of this.rowClickActions) {\n this.actionService.triggerRowClickAction(action, event, this.route);\n }\n }\n }\n}\n","<div class=\"mng-tableview\">\n\t<p-toast></p-toast>\n\n\t<div class=\"card\">\n\t\t<p-toolbar styleClass=\"mb-4\">\n\t\t\t<ng-template pTemplate=\"left\">\n\t\t\t\t<mng-action *ngFor=\"let action of toolbarLeftActions\"\n\t\t\t\t\t\t\t[action]=\"action\">\n\t\t\t\t</mng-action>\n\t\t\t</ng-template>\n\n\t\t\t<ng-template pTemplate=\"right\">\n\t\t\t\t<mng-action *ngFor=\"let action of toolbarRightActions\"\n\t\t\t\t\t\t\t[action]=\"action\">\n\t\t\t\t</mng-action>\n\t\t\t</ng-template>\n\t\t</p-toolbar>\n\n\t\t<mng-table [descriptor]=\"descriptor.table\"\n\t\t\t\t [dataProvider]=\"dataProvider\"\n\t\t\t\t (onCellClick)=\"onTableCellClick($event)\">\n\t\t\t<ng-template mngTemplate=\"caption\">\n\t\t\t\t<div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n\t\t\t\t\t<h5 class=\"p-m-0\">{{ descriptor.tableTitle | translate }}</h5>\n\t\t\t\t\t<span class=\"p-input-icon-left\">\n\t\t\t\t\t\t<i class=\"pi pi-search\"></i>\n\t\t\t\t\t\t<input pInputText type=\"text\" [placeholder]=\"'mngTable.search' | translate\" />\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n\t\t\t\t<mng-action *ngFor=\"let action of rowInlineActions\"\n\t\t\t\t\t\t\t[action]=\"action\" [item]=\"item\" [itemId]=\"descriptor.model.idPropertyName ? item[descriptor.model.idPropertyName] : null\">\n\t\t\t\t</mng-action>\n\t\t\t</ng-template>\n\t\t</mng-table>\n\t</div>\n\n\t<router-outlet></router-outlet>\n</div>\n","import {Directive} from '@angular/core';\n\nimport {TableviewDescriptor, ActionDeleteDescriptor, ActionDescriptor, ActionEditorAddDescriptor, ActionEditorEditDescriptor, ActionEditorDetailsDescriptor} from '../../../models/descriptors';\nimport {ITableviewDataProvider} from '../../../models/providers';\n\nexport const mngTableviewRouteComponentTemplate: string = `\n<div class=\"grid\">\n <div class=\"col-12\">\n <mng-tableview [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"></mng-tableview>\n </div>\n</div>\n`;\n\n@Directive()\nexport abstract class AMngTableviewRouteComponent<T, S> {\n\n public descriptor: TableviewDescriptor<T>;\n public dataProvider: ITableviewDataProvider<T, S>;\n public actions: Array<ActionDescriptor<T>>;\n\n protected constructor(\n ) {\n this.descriptor = this.createTableviewDescriptor();\n this.dataProvider = this.createTableviewDataProvider();\n this.actions = this.createActionDescriptors();\n }\n\n protected abstract createTableviewDescriptor(): TableviewDescriptor<T>;\n protected abstract createTableviewDataProvider(): ITableviewDataProvider<T, S>;\n\n protected createActionDescriptors(): Array<ActionDescriptor<T>> {\n const actions: Array<ActionDescriptor<T>> = [];\n actions.push(new ActionEditorDetailsDescriptor(this.descriptor.viewEditor));\n actions.push(new ActionEditorAddDescriptor(this.descriptor.addEditor));\n actions.push(new ActionEditorEditDescriptor(this.descriptor.editEditor));\n actions.push(new ActionDeleteDescriptor(this.descriptor.model));\n return actions;\n }\n}\n","import {HttpClient} from '@angular/common/http';\nimport {MngModuleConfig} from '../../models/config';\nimport {ConfigurationService} from '../configuration.service';\n\nexport const configurationServiceProvider = (httpClient: HttpClient, moduleConfig: MngModuleConfig): ConfigurationService => {\n const service = ConfigurationService.init(httpClient);\n if (moduleConfig?.configuration?.projectEnvironment) {\n service.addEnvironmentSource(moduleConfig.configuration.projectEnvironment);\n }\n return service;\n}\n\nexport function configJsonAppInitializerProvider(configService: ConfigurationService, moduleConfig: MngModuleConfig) {\n return () => configService.addJsonSource(moduleConfig?.configuration?.jsonSource ?? undefined);\n}\n","import {FormlyFieldWrapperComponent, FormlyTableWrapperComponent} from '../components/form/formly/wrappers';\nimport {\n FormlyFieldAutocompleteComponent,\n FormlyFieldDropdownComponent,\n FormlyFieldFieldsetComponent,\n FormlyFieldInputComponent,\n FormlyFieldTableDialogFormComponent,\n FormlyFieldTableDialogMultiselectComponent,\n FormlyFieldTabsComponent\n} from '../components/form/formly/fields';\nimport {TranslateService} from '@ngx-translate/core';\nimport {FormlyFieldConfig} from '@ngx-formly/core';\n\nexport const formlyWrappersConfig = [\n { name: 'field', component: FormlyFieldWrapperComponent },\n { name: 'field-table', component: FormlyTableWrapperComponent }\n];\n\nexport const formlyTypesConfig: any[] = [\n {\n name: 'input',\n component: FormlyFieldInputComponent,\n wrappers: ['field'],\n },\n { name: 'string', extends: 'input' },\n {\n name: 'number',\n extends: 'input',\n defaultOptions: {\n templateOptions: {\n type: 'number',\n },\n },\n },\n {\n name: 'integer',\n extends: 'input',\n defaultOptions: {\n templateOptions: {\n type: 'number',\n },\n },\n },\n {\n name: 'textarea',\n extends: 'input',\n defaultOptions: {\n templateOptions: {\n type: 'textarea',\n },\n },\n },\n {\n name: 'switch',\n component: FormlyFieldInputComponent,\n defaultOptions: {\n templateOptions: {\n type: 'switch',\n },\n },\n },\n {\n name: 'radio',\n extends: 'input',\n defaultOptions: {\n templateOptions: {\n type: 'radio',\n },\n },\n },\n {\n name: 'datepicker',\n extends: 'input',\n defaultOptions: {\n templateOptions: {\n type: 'datepicker',\n },\n },\n },\n {\n name: 'dropdown',\n component: FormlyFieldDropdownComponent,\n wrappers: ['field'],\n },\n { name: 'enum', extends: 'dropdown' },\n {\n name: 'autocomplete',\n component: FormlyFieldAutocompleteComponent,\n wrappers: ['field']\n },\n {\n name: 'table-dialog-multiselect',\n component: FormlyFieldTableDialogMultiselectComponent,\n wrappers: ['field-table']\n },\n {\n name: 'table-dialog-form',\n component: FormlyFieldTableDialogFormComponent,\n wrappers: ['field-table']\n },\n {\n name: 'tabs',\n component: FormlyFieldTabsComponent,\n wrappers: []\n },\n {\n name: 'fieldset',\n component: FormlyFieldFieldsetComponent,\n wrappers: []\n }\n];\n\n// function getRequiredValidationMessage(translate: TranslateService): (error: any, field: FormlyFieldConfig) => Observable<string> {\n// return (error: any, field: FormlyFieldConfig) =>\n// translate.get(field.templateOptions.label).pipe(mergeMap(value =>\n// translate.get('formValidation.required', {field: value})\n// ));\n// }\nfunction getRequiredValidationMessage(translate: TranslateService): (error: any, field: FormlyFieldConfig) => string {\n return (error: any, field: FormlyFieldConfig) => {\n const fieldName = translate.instant(field.templateOptions?.label ?? '');\n return translate.instant('mngEditor.validation.required', { fieldName: fieldName });\n }\n}\n\n// function getMinValueValidatonMessage(translate: TranslateService): (error: any, field: FormlyFieldConfig) => Observable<string> | undefined {\n// return (error: any, field: FormlyFieldConfig) => {\n// if (field.templateOptions.min !== undefined) {\n// if (field.formControl.value < field.templateOptions.min) {\n// return translate.get(field.templateOptions.label).pipe(mergeMap(value =>\n// translate.get('formValidation.minValue', {field: value, min: field.templateOptions.min})\n// ));\n// }\n// }\n//\n// return undefined;\n// };\n// }\nfunction getMinValidatonMessage(translate: TranslateService): (error: any, field: FormlyFieldConfig) => string {\n return (error: any, field: FormlyFieldConfig) => {\n const fieldName = translate.instant(field.templateOptions?.label ?? '');\n return translate.instant('mngEditor.validation.min', { fieldName: fieldName, min: fieldName.templateOptions?.min });\n }\n}\n\n// function getMaxValueValidatonMessage(translate: TranslateService): (error: any, field: FormlyFieldConfig) => Observable<string> | undefined {\n// return (error: any, field: FormlyFieldConfig) => {\n// if (field.templateOptions?.max) {\n// if (field.formControl.value > field.templateOptions?.max) {\n// return translate.get(field.templateOptions?.label).pipe(mergeMap(value =>\n// translate.get('formValidation.maxValue', {field: value, max: field.templateOptions?.max})\n// ));\n// }\n// }\n//\n// return undefined;\n// };\n// }\nfunction getMaxValidatonMessage(translate: TranslateService): (error: any, field: FormlyFieldConfig) => string {\n return (error: any, field: FormlyFieldConfig) => {\n const fieldName = translate.instant(field.templateOptions?.label ?? '');\n return translate.instant('mngEditor.validation.max', { fieldName: fieldName, min: fieldName.templateOptions?.max });\n }\n}\n\n// TODO: remove\n// function serviceCostAllOrNoneFieldsRequiredValidatorMessage(translate: TranslateService): (error: any, field: FormlyFieldConfig) => Observable<string> {\n// return(error: any, field: FormlyFieldConfig) =>\n// translate.get('ServiceChannelDto.name').pipe(mergeMap(value =>\n// translate.get('formValidation.serviceForm.allOrNothing', {serviceCost: value})\n// ));\n// }\n\nexport const getFormlyValidationMessages = (translate: TranslateService): any[] => {\n return [\n { name: 'required', message: getRequiredValidationMessage(translate)},\n { name: 'min', message: getMinValidatonMessage(translate)},\n { name: 'max', message: getMaxValidatonMessage(translate)},\n // { name: 'serviceCostAllOrNoneFieldsRequired', message: serviceCostAllOrNoneFieldsRequiredValidatorMessage(translate)}\n ];\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {ConfigOption} from '@ngx-formly/core';\n\nimport {MngModuleConfig} from '../../models/config';\nimport {formlyTypesConfig, formlyWrappersConfig, getFormlyValidationMessages} from '../../config';\n\nexport function formlyConfigProvider(translate: TranslateService, moduleConfig: MngModuleConfig = {}): ConfigOption {\n const merge = moduleConfig.formly?.merge ?? true;\n\n let types = formlyTypesConfig;\n if (moduleConfig.formly?.types) {\n if (!merge) {\n types = [];\n }\n types = [...types, ...moduleConfig.formly.types];\n }\n\n let wrappers = formlyWrappersConfig;\n if (moduleConfig.formly?.wrappers) {\n if (!merge) {\n wrappers = [];\n }\n wrappers = [...wrappers, ...moduleConfig.formly.wrappers];\n }\n\n let validationMessages = getFormlyValidationMessages(translate);\n if (typeof moduleConfig.formly?.getValidationMessages === 'function') {\n if (!merge) {\n validationMessages = [];\n }\n validationMessages = [...validationMessages, ...moduleConfig.formly.getValidationMessages(translate)];\n }\n\n return {\n types: types,\n wrappers: wrappers,\n validationMessages: validationMessages\n };\n}\n","import {InjectionToken} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\n\nexport const MNG_MODULE_CONFIG_IT = new InjectionToken<MngModuleConfig>('MngModuleConfig');\n\nexport interface MngModuleConfig {\n configuration?: {\n projectEnvironment?: any;\n jsonSource?: string;\n skipJsonSourceInit?: boolean;\n },\n formly?: {\n skip?: boolean;\n merge?: boolean;\n types?: any[];\n wrappers?: any[];\n validators?: any[];\n getValidationMessages?: (translate: TranslateService) => any[];\n },\n skipObjectSerializer?: boolean\n}\n","import {APP_INITIALIZER, ModuleWithProviders, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {RouterModule} from '@angular/router';\nimport {HttpClient, HttpClientModule} from '@angular/common/http';\n\nimport {FORMLY_CONFIG, FormlyModule} from '@ngx-formly/core';\nimport {TranslateLoader, TranslateModule, TranslateService} from '@ngx-translate/core';\n\n// primeng modules\nimport {ConfirmationService, MessageService} from 'primeng/api';\nimport {AutoCompleteModule} from 'primeng/autocomplete';\nimport {BreadcrumbModule} from 'primeng/breadcrumb';\nimport {ButtonModule} from 'primeng/button';\nimport {CardModule} from 'primeng/card';\nimport {CheckboxModule} from 'primeng/checkbox';\nimport {ChipModule} from 'primeng/chip';\nimport {ConfirmDialogModule} from 'primeng/confirmdialog';\nimport {ConfirmPopupModule} from 'primeng/confirmpopup';\nimport {DialogModule} from 'primeng/dialog';\nimport {DialogService, DynamicDialogModule} from 'primeng/dynamicdialog';\nimport {DropdownModule} from 'primeng/dropdown';\nimport {InputNumberModule} from 'primeng/inputnumber';\nimport {InputMaskModule} from 'primeng/inputmask';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {InputTextareaModule} from 'primeng/inputtextarea';\nimport {PaginatorModule} from 'primeng/paginator';\nimport {RadioButtonModule} from 'primeng/radiobutton';\nimport {RippleModule} from 'primeng/ripple';\nimport {SelectButtonModule} from 'primeng/selectbutton';\nimport {TableModule} from 'primeng/table';\nimport {TagModule} from 'primeng/tag';\nimport {ToastModule} from 'primeng/toast';\nimport {ToggleButtonModule} from 'primeng/togglebutton';\nimport {ToolbarModule} from 'primeng/toolbar';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {MessagesModule} from 'primeng/messages';\nimport {ProgressSpinnerModule} from 'primeng/progressspinner';\nimport {TabViewModule} from 'primeng/tabview';\nimport {FieldsetModule} from 'primeng/fieldset';\nimport {CalendarModule} from 'primeng/calendar';\n\n// directives\nimport {TemplateDirective} from './directives/template.directive';\n\n// pipes\nimport {PropertyPathPipe} from './pipes/property-path.pipe';\n\n// layout components\nimport {AppBreadcrumbComponent, AppFooterComponent, AppMainComponent, AppMenuComponent, AppMenuitemComponent, AppTopbarComponent} from './components/layout';\n\n// formly components\nimport {FormlyFieldWrapperComponent, FormlyTableWrapperComponent} from './components/form/formly/wrappers';\nimport {FormlyFieldAutocompleteComponent, FormlyFieldDropdownComponent, FormlyFieldFieldsetComponent, FormlyFieldInputComponent, FormlyFieldTableDialogFormComponent, FormlyFieldTableDialogMultiselectComponent, FormlyFieldTabsComponent} from './components/form/formly/fields';\n\n// table components\nimport {TableComponent, TableviewComponent} from './components/tableview';\n\n// editor components\nimport {FormEditorComponent} from './components/form';\nimport {ActionComponent, ActionDialogComponent, ActionRouteComponent} from './components/action';\n\n// services\nimport {ObjectSerializer} from './api/utils';\nimport {ActionService, AppBreadcrumbService, AppSettingsService, ConfigurationService, MenuService, NavigationService} from './services';\nimport {configJsonAppInitializerProvider, configurationServiceProvider, formlyConfigProvider} from './services/providers';\n\n// component services\nimport {TableviewComponentService} from './components/tableview/tableview.component.service';\nimport {AppMainComponentService} from './components/layout/app.main.component.service';\n\n// module config\nimport {MNG_MODULE_CONFIG_IT, MngModuleConfig} from './models/config';\nimport {TranslateHttpLoader} from '@ngx-translate/http-loader';\n\n// primeng modules\nexport const primeNgModules = [\n AutoCompleteModule,\n BreadcrumbModule,\n ButtonModule,\n CalendarModule,\n CardModule,\n CheckboxModule,\n ChipModule,\n ConfirmDialogModule,\n ConfirmPopupModule,\n DialogModule,\n DynamicDialogModule,\n DropdownModule,\n InputNumberModule,\n InputMaskModule,\n InputSwitchModule,\n InputTextModule,\n InputTextareaModule,\n PaginatorModule,\n RadioButtonModule,\n RippleModule,\n SelectButtonModule,\n TableModule,\n TagModule,\n ToastModule,\n ToggleButtonModule,\n ToolbarModule,\n TooltipModule,\n MessagesModule,\n ProgressSpinnerModule,\n TabViewModule,\n FieldsetModule\n];\n\nconst declarations = [\n // directives\n TemplateDirective,\n\n // pipes\n PropertyPathPipe,\n\n // layout components\n AppBreadcrumbComponent,\n AppFooterComponent,\n AppMainComponent,\n AppMenuComponent,\n AppMenuitemComponent,\n AppTopbarComponent,\n\n // formly wrappers\n FormlyFieldWrapperComponent,\n FormlyTableWrapperComponent,\n\n // formly fields\n FormlyFieldInputComponent,\n FormlyFieldDropdownComponent,\n FormlyFieldAutocompleteComponent,\n FormlyFieldTableDialogMultiselectComponent,\n FormlyFieldTableDialogFormComponent,\n FormlyFieldTabsComponent,\n FormlyFieldFieldsetComponent,\n\n // table components\n TableComponent,\n TableviewComponent,\n\n // editor components\n FormEditorComponent,\n ActionComponent,\n ActionDialogComponent,\n ActionRouteComponent\n];\n\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http);\n}\n\n@NgModule({\n imports: [\n // angular modules\n CommonModule,\n RouterModule,\n HttpClientModule,\n ReactiveFormsModule,\n\n // other modules\n TranslateModule.forRoot({\n defaultLanguage: 'en',\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n }\n }),\n FormlyModule.forChild(),\n ...primeNgModules\n ],\n declarations: [\n ...declarations\n ],\n // providers: [\n // DialogService,\n // MessageService,\n // ConfirmationService,\n //\n // ActionService,\n // NavigationService,\n // AppSettingsService,\n // AppBreadcrumbService,\n // MenuService\n // ],\n exports: [\n ...declarations\n ]\n})\nexport class MngCommonsModule {\n static forRoot(config: MngModuleConfig): ModuleWithProviders<MngCommonsModule> {\n return {\n ngModule: MngCommonsModule,\n providers: [\n // primeng services\n DialogService,\n MessageService,\n ConfirmationService,\n\n ActionService,\n NavigationService,\n AppSettingsService,\n AppBreadcrumbService,\n MenuService,\n\n // component service\n AppMainComponentService,\n TableviewComponentService,\n\n {\n provide: MNG_MODULE_CONFIG_IT,\n useValue: config\n },\n {\n provide: ObjectSerializer,\n useFactory: () => ObjectSerializer.get()\n },\n {\n provide: ConfigurationService,\n useFactory: configurationServiceProvider,\n deps: [HttpClient, MNG_MODULE_CONFIG_IT]\n },\n {\n provide: APP_INITIALIZER,\n useFactory: configJsonAppInitializerProvider,\n deps: [ConfigurationService, MNG_MODULE_CONFIG_IT],\n multi: true\n },\n {\n provide: FORMLY_CONFIG,\n multi: true,\n useFactory: formlyConfigProvider,\n deps: [TranslateService, MNG_MODULE_CONFIG_IT]\n }\n ]\n };\n }\n}\n","import {HttpClient} from '@angular/common/http';\n\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {QueryParam, QueryResult} from '../models';\nimport {ObjectSerializer} from '../utils';\nimport {ClassType} from '../../models/types';\n\nexport abstract class AbstractCrudApiService<T, QRT extends QueryResult<T>> {\n\n private readonly objectSerializer: ObjectSerializer = ObjectSerializer.get();\n\n protected constructor(\n protected type: ClassType<T>,\n protected queryResultType: ClassType<QRT>,\n protected http: HttpClient\n ) {\n }\n\n protected abstract getBasePath(): string;\n protected abstract getServiceBasePath(): string;\n\n protected getGetAllPostPath(): string {\n return '/get-all';\n }\n protected getCreatePostPath(): string {\n return '';\n }\n protected getUpdatePutPath(id: any, item: T): string {\n return `/${id}`;\n }\n protected getGetByIdGetPath(id: any): string {\n return `/${id}`;\n }\n protected getRemoveDeletePath(id: any, item: T) {\n return `/${id}`;\n }\n\n public createPost(item: T): Observable<T> {\n\n const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getCreatePostPath()}`;\n return this.http.post<T>(url,\n this.objectSerializer.serializeClass(item, this.type),\n {\n withCredentials: true,\n observe: 'body',\n reportProgress: false\n })\n .pipe(\n map(res => this.objectSerializer.deserializeClass(res, this.type))\n );\n }\n\n public getAllPost(queryParam?: QueryParam): Observable<QRT> {\n\n const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getGetAllPostPath()}`;\n return this.http.post<QRT>(url,\n this.objectSerializer.serialize(queryParam, 'QueryParam'),\n {\n withCredentials: true,\n observe: 'body',\n reportProgress: false\n })\n .pipe(\n map(res => this.objectSerializer.deserializeClass(res, this.queryResultType))\n );\n }\n\n public getByIdGet(id: any): Observable<T> {\n\n const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getGetByIdGetPath(id)}`;\n return this.http.get<T>(url,\n {\n withCredentials: true,\n observe: 'body',\n reportProgress: false\n })\n .pipe(\n map(res => this.objectSerializer.deserializeClass(res, this.type))\n );\n }\n\n public updatePut(id: any, item: T): Observable<T> {\n\n const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getUpdatePutPath(id, item)}`;\n return this.http.put<T>(url,\n this.objectSerializer.serializeClass(item, this.type),\n {\n withCredentials: true,\n observe: 'body',\n reportProgress: false\n })\n .pipe(\n map(res => this.objectSerializer.deserializeClass(res, this.type))\n );\n }\n\n public removeDelete(id: any, item: T): Observable<any> {\n\n const url = `${this.getBasePath()}/${this.getServiceBasePath()}${this.getRemoveDeletePath(id, item)}`;\n return this.http.request<any>('delete', url,\n {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n body: this.objectSerializer.serializeClass(item, this.type)\n })\n .pipe(\n map(res => this.objectSerializer.deserializeClass(res, this.type))\n );\n }\n}\n","/*\n * Public API Surface of mng-commons\n */\n\n// module\nexport * from './lib/mng-commons.module';\n\n// services\nexport * from './lib/api/services';\nexport * from './lib/services';\nexport * from './lib/services/providers';\n\n// utils\nexport * from './lib/api/utils';\nexport * from './lib/utils';\n\n// components\nexport * from './lib/components/action';\nexport * from './lib/components/form';\nexport * from './lib/components/form/formly/fields';\nexport * from './lib/components/form/formly/wrappers';\nexport * from './lib/components/layout';\nexport * from './lib/components/tableview';\n\n// directives\nexport * from './lib/directives';\n\n// pipes\nexport * from './lib/pipes';\n\n// models\nexport * from './lib/api/models';\nexport * from './lib/models/config';\nexport * from './lib/models/descriptors';\nexport * from './lib/models/events';\nexport * from './lib/models/interfaces';\nexport * from './lib/models/providers';\nexport * from './lib/models/types';\nexport * from './lib/models/validators';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|