@mediusinc/mng-commons 0.10.3-rc.2 → 0.12.0
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/assets/i18n/en.json +3 -0
- package/assets/i18n/sl.json +3 -0
- package/esm2020/lib/api/models/builders/query-param.builder.mjs +58 -58
- package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -24
- package/esm2020/lib/api/models/filter-param.model.mjs +32 -32
- package/esm2020/lib/api/models/index.mjs +8 -8
- package/esm2020/lib/api/models/mappers.mjs +12 -12
- package/esm2020/lib/api/models/query-mode.model.mjs +17 -17
- package/esm2020/lib/api/models/query-param.model.mjs +67 -67
- package/esm2020/lib/api/models/query-result.model.mjs +17 -17
- package/esm2020/lib/api/models/serialization.model.mjs +1 -1
- package/esm2020/lib/api/services/api.abstract.service.mjs +55 -55
- package/esm2020/lib/api/services/crud-api.abstract.service.mjs +67 -67
- package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +22 -22
- package/esm2020/lib/api/services/index.mjs +3 -3
- package/esm2020/lib/api/utils/index.mjs +2 -2
- package/esm2020/lib/api/utils/medius-rest.util.mjs +152 -152
- package/esm2020/lib/api/utils/object-serializer.util.mjs +243 -243
- package/esm2020/lib/components/action/action.component.mjs +199 -199
- package/esm2020/lib/components/action/editor/action-editor.component.mjs +247 -247
- package/esm2020/lib/components/action/index.mjs +3 -3
- package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
- package/esm2020/lib/components/action/models/action-execution.model.mjs +235 -235
- package/esm2020/lib/components/action/models/index.mjs +2 -2
- package/esm2020/lib/components/action/route/action-route.component.mjs +124 -124
- package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +277 -277
- package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +186 -169
- package/esm2020/lib/components/form/editor/form-editor.component.mjs +212 -212
- package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +48 -48
- package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +43 -43
- package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +25 -25
- package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +101 -101
- package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +22 -22
- package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +179 -179
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +173 -173
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +150 -150
- package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +17 -17
- package/esm2020/lib/components/form/formly/fields/index.mjs +9 -9
- package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +14 -14
- package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +14 -14
- package/esm2020/lib/components/form/formly/wrappers/index.mjs +2 -2
- package/esm2020/lib/components/form/index.mjs +3 -3
- package/esm2020/lib/components/form/models/form-editor.event.mjs +33 -33
- package/esm2020/lib/components/form/models/index.mjs +1 -1
- package/esm2020/lib/components/layout/breadcrumb.component.mjs +16 -16
- package/esm2020/lib/components/layout/footer.component.mjs +16 -16
- package/esm2020/lib/components/layout/index.mjs +7 -7
- package/esm2020/lib/components/layout/main-layout.component.mjs +51 -51
- package/esm2020/lib/components/layout/menu-item.component.mjs +239 -239
- package/esm2020/lib/components/layout/menu.component.mjs +20 -20
- package/esm2020/lib/components/layout/services/index.mjs +1 -1
- package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +192 -192
- package/esm2020/lib/components/layout/topbar.component.mjs +57 -57
- package/esm2020/lib/components/layout/version.component.mjs +58 -58
- package/esm2020/lib/components/tableview/index.mjs +6 -6
- package/esm2020/lib/components/tableview/models/index.mjs +1 -1
- package/esm2020/lib/components/tableview/models/table.event.mjs +15 -15
- package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +57 -57
- package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +60 -60
- package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +105 -102
- package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +70 -70
- package/esm2020/lib/components/tableview/table/table.component.mjs +509 -498
- package/esm2020/lib/components/tableview/tableview.component.mjs +91 -91
- package/esm2020/lib/config/formly.config.mjs +181 -181
- package/esm2020/lib/config/index.mjs +1 -1
- package/esm2020/lib/config/models/index.mjs +3 -2
- package/esm2020/lib/config/models/mng-config.model.mjs +1 -1
- package/esm2020/lib/config/models/mng-formly-config-model.mjs +2 -0
- package/esm2020/lib/data-providers/base.data-provider.mjs +16 -16
- package/esm2020/lib/data-providers/editor.data-provider.mjs +36 -36
- package/esm2020/lib/data-providers/index.mjs +5 -5
- package/esm2020/lib/data-providers/lookup.data-provider.mjs +15 -15
- package/esm2020/lib/data-providers/table.data-provider.mjs +16 -16
- package/esm2020/lib/data-providers/tableview.data-provider.mjs +16 -16
- package/esm2020/lib/descriptors/action.descriptor.mjs +587 -587
- package/esm2020/lib/descriptors/column.descriptor.mjs +264 -264
- package/esm2020/lib/descriptors/editor.descriptor.mjs +146 -146
- package/esm2020/lib/descriptors/field-validation.descriptor.mjs +20 -20
- package/esm2020/lib/descriptors/field.descriptor.mjs +819 -819
- package/esm2020/lib/descriptors/filter.descriptor.mjs +291 -289
- package/esm2020/lib/descriptors/index.mjs +9 -9
- package/esm2020/lib/descriptors/interfaces/field-config.interface.mjs +1 -1
- package/esm2020/lib/descriptors/interfaces/index.mjs +2 -2
- package/esm2020/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +1 -1
- package/esm2020/lib/descriptors/model.descriptor.mjs +33 -33
- package/esm2020/lib/descriptors/table.descriptor.mjs +197 -197
- package/esm2020/lib/descriptors/tableview.descriptor.mjs +134 -134
- package/esm2020/lib/descriptors/types/action.type.mjs +52 -52
- package/esm2020/lib/descriptors/types/column.type.mjs +10 -10
- package/esm2020/lib/descriptors/types/editor.type.mjs +7 -7
- package/esm2020/lib/descriptors/types/field.type.mjs +52 -52
- package/esm2020/lib/descriptors/types/filter.type.mjs +30 -30
- package/esm2020/lib/descriptors/types/index.mjs +6 -6
- package/esm2020/lib/descriptors/types/table.type.mjs +16 -16
- package/esm2020/lib/directives/component.directive.mjs +43 -43
- package/esm2020/lib/directives/index.mjs +2 -2
- package/esm2020/lib/directives/template.directive.mjs +27 -27
- package/esm2020/lib/mng-commons.module.mjs +440 -442
- package/esm2020/lib/models/column-value.model.mjs +1 -1
- package/esm2020/lib/models/enum.model.mjs +1 -1
- package/esm2020/lib/models/error.model.mjs +1 -1
- package/esm2020/lib/models/formly-field.model.mjs +2 -0
- package/esm2020/lib/models/index.mjs +9 -8
- package/esm2020/lib/models/menu.model.mjs +1 -1
- package/esm2020/lib/models/user.model.mjs +1 -1
- package/esm2020/lib/models/version.model.mjs +1 -1
- package/esm2020/lib/models/view-container.model.mjs +1 -1
- package/esm2020/lib/pipes/boolean.pipe.mjs +26 -26
- package/esm2020/lib/pipes/enum.pipe.mjs +24 -24
- package/esm2020/lib/pipes/i18n-property.pipe.mjs +17 -17
- package/esm2020/lib/pipes/index.mjs +5 -5
- package/esm2020/lib/pipes/json-path.pipe.mjs +79 -79
- package/esm2020/lib/pipes/link-formatter.pipe.mjs +38 -38
- package/esm2020/lib/router/index.mjs +2 -2
- package/esm2020/lib/router/models/index.mjs +1 -1
- package/esm2020/lib/router/models/router.model.mjs +1 -1
- package/esm2020/lib/router/route-builder.mjs +426 -426
- package/esm2020/lib/router/tableview-route-builder.mjs +159 -159
- package/esm2020/lib/security/authorization.guard.mjs +25 -25
- package/esm2020/lib/security/authorization.service.mjs +46 -46
- package/esm2020/lib/security/authorization.util.mjs +15 -15
- package/esm2020/lib/security/index.mjs +3 -3
- package/esm2020/lib/security/model/authorization.type.mjs +7 -7
- package/esm2020/lib/security/model/index.mjs +3 -3
- package/esm2020/lib/security/model/permission-service.interface.mjs +1 -1
- package/esm2020/lib/security/model/permissions.model.mjs +94 -94
- package/esm2020/lib/services/action-executor.service.mjs +535 -535
- package/esm2020/lib/services/commons.service.mjs +342 -342
- package/esm2020/lib/services/configuration.service.mjs +110 -110
- package/esm2020/lib/services/error-mapper.service.mjs +13 -13
- package/esm2020/lib/services/index.mjs +6 -6
- package/esm2020/lib/services/internal/commons-init.provider.mjs +3 -3
- package/esm2020/lib/services/internal/commons-init.service.mjs +43 -43
- package/esm2020/lib/services/internal/index.mjs +2 -2
- package/esm2020/lib/services/navigation.service.mjs +47 -47
- package/esm2020/lib/services/providers/config-service.provider.mjs +29 -29
- package/esm2020/lib/services/providers/formly-config.provider.mjs +30 -30
- package/esm2020/lib/services/providers/index.mjs +2 -2
- package/esm2020/lib/services/tokens/browser-storage.token.mjs +5 -5
- package/esm2020/lib/services/tokens/commons-init.token.mjs +2 -2
- package/esm2020/lib/services/tokens/default-setting.token.mjs +2 -2
- package/esm2020/lib/services/tokens/index.mjs +4 -4
- package/esm2020/lib/services/tokens/module-config.token.mjs +2 -2
- package/esm2020/lib/services/version.service.mjs +38 -38
- package/esm2020/lib/services/view-container.component.service.mjs +34 -34
- package/esm2020/lib/types/index.mjs +2 -2
- package/esm2020/lib/types/type.decorator.mjs +12 -12
- package/esm2020/lib/types/type.model.mjs +1 -1
- package/esm2020/lib/utils/action-data-provider.util.mjs +144 -144
- package/esm2020/lib/utils/editor-formly.util.mjs +251 -243
- package/esm2020/lib/utils/enum.util.mjs +81 -81
- package/esm2020/lib/utils/i18n.util.mjs +232 -232
- package/esm2020/lib/utils/index.mjs +7 -7
- package/esm2020/lib/utils/model.util.mjs +59 -59
- package/esm2020/lib/utils/notification.util.mjs +45 -45
- package/esm2020/lib/utils/route.util.mjs +23 -23
- package/esm2020/lib/utils/styles.util.mjs +40 -40
- package/esm2020/lib/utils/type.util.mjs +76 -76
- package/esm2020/mediusinc-mng-commons.mjs +4 -4
- package/esm2020/public-api.mjs +51 -51
- package/fesm2015/mediusinc-mng-commons.mjs +10700 -10664
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +10552 -10513
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/{mediusinc-mng-commons.d.ts → index.d.ts} +5 -5
- package/lib/api/models/builders/query-param.builder.d.ts +13 -13
- package/lib/api/models/filter-match-type.model.d.ts +23 -23
- package/lib/api/models/filter-param.model.d.ts +23 -23
- package/lib/api/models/index.d.ts +8 -8
- package/lib/api/models/mappers.d.ts +6 -6
- package/lib/api/models/query-mode.model.d.ts +16 -16
- package/lib/api/models/query-param.model.d.ts +31 -31
- package/lib/api/models/query-result.model.d.ts +23 -23
- package/lib/api/models/serialization.model.d.ts +8 -8
- package/lib/api/services/api.abstract.service.d.ts +24 -24
- package/lib/api/services/crud-api.abstract.service.d.ts +22 -22
- package/lib/api/services/get-all-api.abstract.service.d.ts +14 -14
- package/lib/api/services/index.d.ts +3 -3
- package/lib/api/utils/index.d.ts +2 -2
- package/lib/api/utils/medius-rest.util.d.ts +15 -15
- package/lib/api/utils/object-serializer.util.d.ts +33 -33
- package/lib/components/action/action.component.d.ts +75 -75
- package/lib/components/action/editor/action-editor.component.d.ts +64 -64
- package/lib/components/action/index.d.ts +3 -3
- package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
- package/lib/components/action/models/action-execution.model.d.ts +129 -129
- package/lib/components/action/models/index.d.ts +2 -2
- package/lib/components/action/route/action-route.component.d.ts +31 -31
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +56 -56
- package/lib/components/form/dropdown/dropdown.component.d.ts +50 -47
- package/lib/components/form/editor/form-editor.component.d.ts +45 -45
- package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +15 -15
- package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +14 -14
- package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +13 -13
- package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +23 -23
- package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +10 -10
- package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +45 -45
- package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +23 -23
- package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +38 -38
- package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -6
- package/lib/components/form/formly/fields/index.d.ts +9 -9
- package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +6 -6
- package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +6 -6
- package/lib/components/form/formly/wrappers/index.d.ts +2 -2
- package/lib/components/form/index.d.ts +3 -3
- package/lib/components/form/models/form-editor.event.d.ts +37 -37
- package/lib/components/form/models/index.d.ts +1 -1
- package/lib/components/layout/breadcrumb.component.d.ts +8 -8
- package/lib/components/layout/footer.component.d.ts +9 -9
- package/lib/components/layout/index.d.ts +7 -7
- package/lib/components/layout/main-layout.component.d.ts +20 -20
- package/lib/components/layout/menu-item.component.d.ts +44 -44
- package/lib/components/layout/menu.component.d.ts +10 -10
- package/lib/components/layout/services/index.d.ts +1 -1
- package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
- package/lib/components/layout/topbar.component.d.ts +24 -24
- package/lib/components/layout/version.component.d.ts +19 -19
- package/lib/components/tableview/index.d.ts +6 -6
- package/lib/components/tableview/models/index.d.ts +1 -1
- package/lib/components/tableview/models/table.event.d.ts +17 -17
- package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +20 -20
- package/lib/components/tableview/route/tableview-route.component.d.ts +23 -23
- package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +32 -32
- package/lib/components/tableview/table/column-value/column-value.component.d.ts +29 -29
- package/lib/components/tableview/table/table.component.d.ts +108 -108
- package/lib/components/tableview/tableview.component.d.ts +41 -41
- package/lib/config/formly.config.d.ts +16 -15
- package/lib/config/index.d.ts +1 -1
- package/lib/config/models/index.d.ts +2 -1
- package/lib/config/models/mng-config.model.d.ts +36 -36
- package/lib/config/models/mng-formly-config-model.d.ts +17 -0
- package/lib/data-providers/base.data-provider.d.ts +14 -14
- package/lib/data-providers/editor.data-provider.d.ts +25 -25
- package/lib/data-providers/index.d.ts +5 -5
- package/lib/data-providers/lookup.data-provider.d.ts +14 -14
- package/lib/data-providers/table.data-provider.d.ts +14 -14
- package/lib/data-providers/tableview.data-provider.d.ts +15 -15
- package/lib/descriptors/action.descriptor.d.ts +234 -234
- package/lib/descriptors/column.descriptor.d.ts +82 -82
- package/lib/descriptors/editor.descriptor.d.ts +37 -37
- package/lib/descriptors/field-validation.descriptor.d.ts +18 -18
- package/lib/descriptors/field.descriptor.d.ts +300 -294
- package/lib/descriptors/filter.descriptor.d.ts +106 -106
- package/lib/descriptors/index.d.ts +9 -9
- package/lib/descriptors/interfaces/field-config.interface.d.ts +9 -9
- package/lib/descriptors/interfaces/index.d.ts +2 -2
- package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +17 -17
- package/lib/descriptors/model.descriptor.d.ts +15 -15
- package/lib/descriptors/table.descriptor.d.ts +66 -66
- package/lib/descriptors/tableview.descriptor.d.ts +42 -42
- package/lib/descriptors/types/action.type.d.ts +45 -45
- package/lib/descriptors/types/column.type.d.ts +9 -9
- package/lib/descriptors/types/editor.type.d.ts +6 -6
- package/lib/descriptors/types/field.type.d.ts +44 -44
- package/lib/descriptors/types/filter.type.d.ts +27 -27
- package/lib/descriptors/types/index.d.ts +6 -6
- package/lib/descriptors/types/table.type.d.ts +13 -13
- package/lib/directives/component.directive.d.ts +16 -16
- package/lib/directives/index.d.ts +2 -2
- package/lib/directives/template.directive.d.ts +13 -13
- package/lib/mng-commons.module.d.ts +87 -87
- package/lib/models/column-value.model.d.ts +4 -4
- package/lib/models/enum.model.d.ts +6 -6
- package/lib/models/error.model.d.ts +14 -14
- package/lib/models/formly-field.model.d.ts +16 -0
- package/lib/models/index.d.ts +8 -7
- package/lib/models/menu.model.d.ts +27 -27
- package/lib/models/user.model.d.ts +8 -8
- package/lib/models/version.model.d.ts +18 -18
- package/lib/models/view-container.model.d.ts +6 -6
- package/lib/pipes/boolean.pipe.d.ts +7 -7
- package/lib/pipes/enum.pipe.d.ts +8 -8
- package/lib/pipes/i18n-property.pipe.d.ts +8 -8
- package/lib/pipes/index.d.ts +5 -5
- package/lib/pipes/json-path.pipe.d.ts +13 -13
- package/lib/pipes/link-formatter.pipe.d.ts +11 -11
- package/lib/router/index.d.ts +2 -2
- package/lib/router/models/index.d.ts +1 -1
- package/lib/router/models/router.model.d.ts +27 -27
- package/lib/router/route-builder.d.ts +98 -98
- package/lib/router/tableview-route-builder.d.ts +34 -34
- package/lib/security/authorization.guard.d.ts +11 -11
- package/lib/security/authorization.service.d.ts +19 -19
- package/lib/security/authorization.util.d.ts +5 -5
- package/lib/security/index.d.ts +3 -3
- package/lib/security/model/authorization.type.d.ts +6 -6
- package/lib/security/model/index.d.ts +3 -3
- package/lib/security/model/permission-service.interface.d.ts +6 -6
- package/lib/security/model/permissions.model.d.ts +44 -44
- package/lib/services/action-executor.service.d.ts +149 -149
- package/lib/services/commons.service.d.ts +78 -78
- package/lib/services/configuration.service.d.ts +36 -36
- package/lib/services/error-mapper.service.d.ts +7 -7
- package/lib/services/index.d.ts +6 -6
- package/lib/services/internal/commons-init.provider.d.ts +3 -3
- package/lib/services/internal/commons-init.service.d.ts +16 -16
- package/lib/services/internal/index.d.ts +2 -2
- package/lib/services/navigation.service.d.ts +14 -14
- package/lib/services/providers/config-service.provider.d.ts +6 -6
- package/lib/services/providers/formly-config.provider.d.ts +4 -4
- package/lib/services/providers/index.d.ts +2 -2
- package/lib/services/tokens/browser-storage.token.d.ts +2 -2
- package/lib/services/tokens/commons-init.token.d.ts +3 -3
- package/lib/services/tokens/default-setting.token.d.ts +2 -2
- package/lib/services/tokens/index.d.ts +4 -4
- package/lib/services/tokens/module-config.token.d.ts +3 -3
- package/lib/services/version.service.d.ts +13 -13
- package/lib/services/view-container.component.service.d.ts +22 -22
- package/lib/types/index.d.ts +2 -2
- package/lib/types/type.decorator.d.ts +4 -4
- package/lib/types/type.model.d.ts +23 -23
- package/lib/utils/action-data-provider.util.d.ts +20 -20
- package/lib/utils/editor-formly.util.d.ts +11 -11
- package/lib/utils/enum.util.d.ts +50 -50
- package/lib/utils/i18n.util.d.ts +56 -56
- package/lib/utils/index.d.ts +7 -7
- package/lib/utils/model.util.d.ts +8 -8
- package/lib/utils/notification.util.d.ts +11 -11
- package/lib/utils/route.util.d.ts +4 -4
- package/lib/utils/styles.util.d.ts +14 -14
- package/lib/utils/type.util.d.ts +36 -36
- package/package.json +10 -10
- package/public-api.d.ts +32 -32
- package/version-info.json +7 -7
- package/mediusinc-mng-commons-0.10.3-rc.2.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediusinc-mng-commons.mjs","sources":["../../src/lib/api/models/filter-match-type.model.ts","../../src/lib/api/models/filter-param.model.ts","../../src/lib/api/models/query-mode.model.ts","../../src/lib/api/models/query-param.model.ts","../../src/lib/api/models/query-result.model.ts","../../src/lib/api/models/builders/query-param.builder.ts","../../src/lib/api/models/mappers.ts","../../src/lib/utils/action-data-provider.util.ts","../../src/lib/data-providers/base.data-provider.ts","../../src/lib/data-providers/editor.data-provider.ts","../../src/lib/data-providers/lookup.data-provider.ts","../../src/lib/data-providers/table.data-provider.ts","../../src/lib/data-providers/tableview.data-provider.ts","../../src/lib/security/model/authorization.type.ts","../../src/lib/security/model/permissions.model.ts","../../src/lib/descriptors/types/action.type.ts","../../src/lib/descriptors/types/column.type.ts","../../src/lib/descriptors/types/editor.type.ts","../../src/lib/descriptors/types/field.type.ts","../../src/lib/descriptors/types/filter.type.ts","../../src/lib/descriptors/types/table.type.ts","../../src/lib/descriptors/action.descriptor.ts","../../src/lib/descriptors/filter.descriptor.ts","../../src/lib/descriptors/column.descriptor.ts","../../src/lib/descriptors/editor.descriptor.ts","../../src/lib/components/form/models/form-editor.event.ts","../../src/lib/descriptors/field.descriptor.ts","../../src/lib/descriptors/field-validation.descriptor.ts","../../src/lib/descriptors/model.descriptor.ts","../../src/lib/descriptors/table.descriptor.ts","../../src/lib/descriptors/tableview.descriptor.ts","../../src/lib/utils/editor-formly.util.ts","../../src/lib/utils/enum.util.ts","../../src/lib/types/type.decorator.ts","../../src/lib/utils/type.util.ts","../../src/lib/utils/i18n.util.ts","../../src/lib/utils/model.util.ts","../../src/lib/utils/notification.util.ts","../../src/lib/api/utils/object-serializer.util.ts","../../src/lib/api/utils/medius-rest.util.ts","../../src/lib/components/action/models/action-execution.model.ts","../../src/lib/security/authorization.util.ts","../../src/lib/services/tokens/browser-storage.token.ts","../../src/lib/services/tokens/commons-init.token.ts","../../src/lib/services/tokens/default-setting.token.ts","../../src/lib/services/tokens/module-config.token.ts","../../src/lib/services/configuration.service.ts","../../src/lib/services/navigation.service.ts","../../src/lib/services/error-mapper.service.ts","../../src/lib/pipes/boolean.pipe.ts","../../src/lib/pipes/enum.pipe.ts","../../src/lib/pipes/i18n-property.pipe.ts","../../src/lib/pipes/link-formatter.pipe.ts","../../src/lib/pipes/json-path.pipe.ts","../../src/lib/services/action-executor.service.ts","../../src/lib/services/commons.service.ts","../../src/lib/services/view-container.component.service.ts","../../src/lib/security/authorization.service.ts","../../src/lib/security/authorization.guard.ts","../../src/lib/components/action/action.component.ts","../../src/lib/components/action/action.component.html","../../src/lib/components/action/route/action-route.component.ts","../../src/lib/components/action/route/action-route.component.html","../../src/lib/directives/component.directive.ts","../../src/lib/directives/template.directive.ts","../../src/lib/components/form/editor/form-editor.component.ts","../../src/lib/components/form/editor/form-editor.component.html","../../src/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.ts","../../src/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.html","../../src/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.ts","../../src/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.html","../../src/lib/components/form/autocomplete/autocomplete.component.ts","../../src/lib/components/form/autocomplete/autocomplete.component.html","../../src/lib/components/form/dropdown/dropdown.component.ts","../../src/lib/components/form/dropdown/dropdown.component.html","../../src/lib/components/action/editor/action-editor.component.ts","../../src/lib/components/action/editor/action-editor.component.html","../../src/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.ts","../../src/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.html","../../src/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.ts","../../src/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.html","../../src/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.ts","../../src/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.html","../../src/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.ts","../../src/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.html","../../src/lib/utils/styles.util.ts","../../src/lib/components/tableview/models/table.event.ts","../../src/lib/components/tableview/table/column-filter/column-filter.component.ts","../../src/lib/components/tableview/table/column-filter/column-filter.component.html","../../src/lib/components/tableview/table/column-value/column-value.component.ts","../../src/lib/components/tableview/table/column-value/column-value.component.html","../../src/lib/components/tableview/table/table.component.ts","../../src/lib/components/tableview/table/table.component.html","../../src/lib/components/tableview/tableview.component.ts","../../src/lib/components/tableview/tableview.component.html","../../src/lib/components/tableview/route/tableview-route.abstract.component.ts","../../src/lib/components/tableview/route/tableview-route.component.ts","../../templates/tableview-route.component.html","../../src/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.ts","../../src/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.html","../../src/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.ts","../../src/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.html","../../src/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.ts","../../src/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.html","../../src/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.ts","../../src/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.html","../../src/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.ts","../../src/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.html","../../src/lib/components/layout/breadcrumb.component.ts","../../src/lib/components/layout/breadcrumb.component.html","../../src/lib/components/layout/footer.component.ts","../../src/lib/components/layout/footer.component.html","../../src/lib/components/layout/services/main-layout.component.service.ts","../../src/lib/components/layout/menu-item.component.ts","../../src/lib/components/layout/menu-item.component.html","../../src/lib/services/version.service.ts","../../src/lib/components/layout/version.component.ts","../../src/lib/components/layout/version.component.html","../../src/lib/components/layout/menu.component.ts","../../src/lib/components/layout/menu.component.html","../../src/lib/components/layout/topbar.component.ts","../../src/lib/components/layout/topbar.component.html","../../src/lib/components/layout/main-layout.component.ts","../../src/lib/components/layout/main-layout.component.html","../../src/lib/services/internal/commons-init.provider.ts","../../src/lib/services/internal/commons-init.service.ts","../../src/lib/services/providers/config-service.provider.ts","../../src/lib/config/formly.config.ts","../../src/lib/services/providers/formly-config.provider.ts","../../src/lib/mng-commons.module.ts","../../src/lib/api/services/api.abstract.service.ts","../../src/lib/api/services/get-all-api.abstract.service.ts","../../src/lib/api/services/crud-api.abstract.service.ts","../../src/lib/utils/route.util.ts","../../src/lib/router/route-builder.ts","../../src/lib/router/tableview-route-builder.ts","../../src/public-api.ts","../../src/mediusinc-mng-commons.ts"],"sourcesContent":["/**\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 MediusFilterMatchType {\n Equals = 'EQUALS',\n NotEquals = 'NOT_EQUALS',\n FromTo = 'FROM_TO',\n Contains = 'CONTAINS',\n StartsWith = 'STARTS_WITH',\n EndsWith = 'ENDS_WITH',\n In = 'IN',\n NotIn = 'NOT_IN',\n SmallerThan = 'SMALLER_THAN',\n GreaterThan = 'GREATER_THAN'\n}\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 {MediusFilterMatchType} from './filter-match-type.model';\nimport {AttributeDef} from './serialization.model';\n\nexport class MediusFilterParam {\n property?: string;\n filterValue?: object;\n filterValueTo?: object;\n filterMatchType?: MediusFilterMatchType;\n filterMatchCaseSensitive?: boolean;\n\n public static discriminator?: string;\n\n public static attributeTypeMap: Array<AttributeDef> = [\n {\n name: 'property',\n baseName: 'property',\n type: 'string'\n },\n {\n name: 'filterValue',\n baseName: 'filter_value',\n type: 'object'\n },\n {\n name: 'filterValueTo',\n baseName: 'filter_value_to',\n type: 'object'\n },\n {\n name: 'filterMatchType',\n baseName: 'filter_match_type',\n type: 'FilterMatchType'\n },\n {\n name: 'filterMatchCaseSensitive',\n baseName: 'filter_match_case_sensitive',\n type: 'boolean'\n }\n ];\n\n public static getAttributeTypeMap() {\n return MediusFilterParam.attributeTypeMap;\n }\n}\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 MediusQueryMode {\n Count = 'COUNT',\n Data = 'DATA',\n All = 'ALL'\n}\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 {MediusFilterParam} from './filter-param.model';\nimport {MediusQueryMode} from './query-mode.model';\nimport {AttributeDef} from './serialization.model';\n\nexport class MediusQueryParam {\n sortProperty?: Array<string>;\n sortAsc?: Array<boolean>;\n itemsOffset?: number;\n itemsPerPage?: number;\n filterParams?: Array<MediusFilterParam>;\n filterAllParam?: string;\n filterAllProperties?: Array<string>;\n validateProperties?: Array<string>;\n selectInTwoSteps?: boolean;\n sortEnumByOrdinal?: boolean;\n groupByProperties?: Array<string>;\n queryMode?: MediusQueryMode;\n\n public static discriminator?: string;\n\n public static attributeTypeMap: Array<AttributeDef> = [\n {\n name: 'sortProperty',\n baseName: 'sort_property',\n type: 'Array<string>'\n },\n {\n name: 'sortAsc',\n baseName: 'sort_asc',\n type: 'Array<boolean>'\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: 'filterParams',\n baseName: 'filter_params',\n type: 'Array<FilterParam>'\n },\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: 'validateProperties',\n baseName: 'validate_properties',\n type: 'Array<string>'\n },\n {\n name: 'selectInTwoSteps',\n baseName: 'select_in_two_steps',\n type: 'boolean'\n },\n {\n name: 'sortEnumByOrdinal',\n baseName: 'sort_enum_by_ordinal',\n type: 'boolean'\n },\n {\n name: 'groupByProperties',\n baseName: 'group_by_properties',\n type: 'Array<string>'\n },\n {\n name: 'queryMode',\n baseName: 'query_mode',\n type: 'QueryMode'\n }\n ];\n\n public static getAttributeTypeMap() {\n return MediusQueryParam.attributeTypeMap;\n }\n}\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 MediusQueryResult<T> implements IMediusQueryResult<T> {\n allDataCount?: number;\n pageData?: Array<T>;\n\n static discriminator?: string;\n\n static attributeTypeMap: Array<AttributeDef> = [\n {\n name: 'allDataCount',\n baseName: 'all_data_count',\n type: 'number'\n },\n {\n name: 'pageData',\n baseName: 'page_data',\n type: 'Array<T>'\n }\n ];\n\n static getAttributeTypeMap() {\n return MediusQueryResult.attributeTypeMap;\n }\n}\n\nexport interface IMediusQueryResult<T> {\n allDataCount?: number;\n pageData?: Array<T>;\n}\n","import {MediusFilterMatchType, MediusFilterParam, MediusQueryMode, MediusQueryParam} from '../';\n\nexport class MediusQueryParamBuilder {\n private constructor(private queryParam: MediusQueryParam) {}\n\n public static create(itemsPerPage = 50, itemsOffset = 0): MediusQueryParamBuilder {\n const queryParam = new MediusQueryParam();\n queryParam.itemsPerPage = itemsPerPage;\n queryParam.itemsOffset = itemsOffset;\n queryParam.queryMode = MediusQueryMode.All;\n return new MediusQueryParamBuilder(queryParam);\n }\n\n public static createFromExisting(queryParam: MediusQueryParam, itemsPerPage?: number, itemsOffset?: number): MediusQueryParamBuilder {\n queryParam.itemsPerPage = itemsPerPage ?? queryParam.itemsPerPage ?? 50;\n queryParam.itemsOffset = itemsOffset ?? queryParam.itemsOffset ?? 0;\n queryParam.queryMode = queryParam.queryMode ?? MediusQueryMode.All;\n return new MediusQueryParamBuilder(queryParam);\n }\n\n public withItemsPerPage(itemsPerPage: number): MediusQueryParamBuilder {\n this.queryParam.itemsPerPage = itemsPerPage;\n return this;\n }\n\n public withItemsOffset(itemsOffset: number): MediusQueryParamBuilder {\n this.queryParam.itemsOffset = itemsOffset;\n return this;\n }\n\n public withQueryMode(queryMode: MediusQueryMode): MediusQueryParamBuilder {\n this.queryParam.queryMode = queryMode;\n return this;\n }\n\n public withSort(property: string, asc = true): MediusQueryParamBuilder {\n if (!this.queryParam.sortProperty || !this.queryParam.sortAsc) {\n this.queryParam.sortProperty = [];\n this.queryParam.sortAsc = [];\n }\n this.queryParam.sortProperty.push(property);\n this.queryParam.sortAsc.push(asc);\n return this;\n }\n\n public withFilter(\n property: string,\n value: any,\n valueTo: any = undefined,\n matchType: MediusFilterMatchType = MediusFilterMatchType.Contains,\n matchCaseSensitive = false\n ): MediusQueryParamBuilder {\n if (!this.queryParam.filterParams) {\n this.queryParam.filterParams = [];\n }\n const filterParam = new MediusFilterParam();\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(): MediusQueryParam {\n const queryParam = this.queryParam;\n this.queryParam = new MediusQueryParam();\n return queryParam;\n }\n}\n","import {MediusFilterMatchType} from './filter-match-type.model';\nimport {MediusFilterParam} from './filter-param.model';\nimport {MediusQueryMode} from './query-mode.model';\nimport {MediusQueryParam} from './query-param.model';\n\nexport const enumsMapBase: {[index: string]: any} = {\n FilterMatchType: MediusFilterMatchType,\n QueryMode: MediusQueryMode\n};\n\nexport const typeMapBase: {[index: string]: any} = {\n FilterParam: MediusFilterParam,\n QueryParam: MediusQueryParam\n};\n","import {Observable, isObservable, throwError} from 'rxjs';\n\nimport {MediusQueryParamBuilder, MediusQueryResult} from '../api/models';\nimport {IMngCrudApiService, IMngGetAllApiService} from '../api/services';\nimport {ActionContext} from '../components/action/models';\nimport {IEditorDataProvider, ITableDataProvider} from '../data-providers';\n\nexport class ActionDataProviderUtil {\n public static runGetAllOrFail<T, S>(ctx: ActionContext<T, S>): Observable<MediusQueryResult<T>> {\n const dataProviderExec = ActionDataProviderUtil.runGetAllDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runGetAllService(ctx);\n return isObservable(serviceExec)\n ? serviceExec\n : throwError(\n () =>\n new Error(\n `Data provider and service instance could not extract fetch function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`\n )\n );\n }\n\n public static runFetchOrFail<T, S>(ctx: ActionContext<T, S>): Observable<T> {\n const dataProviderExec = ActionDataProviderUtil.runFetchDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runGetByIdService(ctx);\n return isObservable(serviceExec)\n ? serviceExec\n : throwError(\n () =>\n new Error(\n `Data provider and service instance could not extract fetch function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`\n )\n );\n }\n\n public static runCreateOrFail<T, S>(ctx: ActionContext<T, S>): Observable<T> {\n const dataProviderExec = ActionDataProviderUtil.runCreateDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runCreateService(ctx);\n return isObservable(serviceExec)\n ? serviceExec\n : throwError(\n () =>\n new Error(\n `Data provider and service instance could not extract create function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item ${ctx.parameters?.item}.`\n )\n );\n }\n\n public static runUpdateOrFail<T, S>(ctx: ActionContext<T, S>): Observable<T> {\n const dataProviderExec = ActionDataProviderUtil.runUpdateDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runUpdateService(ctx);\n return isObservable(serviceExec)\n ? serviceExec\n : throwError(\n () =>\n new Error(\n `Data provider and service instance could not extract update function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`\n )\n );\n }\n\n public static runDeleteOrFail<T, S>(ctx: ActionContext<T, S>): Observable<T | null> {\n const dataProviderExec = ActionDataProviderUtil.runDeleteDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runDeleteService(ctx);\n return isObservable(serviceExec)\n ? serviceExec\n : throwError(\n () =>\n new Error(\n `Data provider and service instance could not extract delete function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`\n )\n );\n }\n\n public static runGetAllService<T>(ctx: ActionContext<T, unknown>): Observable<MediusQueryResult<T>> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const getAllServiceInstance = ctx.serviceInstance as IMngGetAllApiService<T>;\n if (typeof getAllServiceInstance.getAllPost === 'function') {\n const queryParam = ctx.parameters?.queryParam ?? MediusQueryParamBuilder.create().build();\n return getAllServiceInstance.getAllPost(queryParam);\n }\n }\n return null;\n }\n\n public static runGetByIdService<T>(ctx: ActionContext<T, unknown>): Observable<T> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const crudServiceInstance = ctx.serviceInstance as IMngCrudApiService<T>;\n if (typeof crudServiceInstance.getByIdGet === 'function') {\n return ctx.parameters?.itemId ? crudServiceInstance.getByIdGet(ctx.parameters.itemId) : null;\n }\n }\n return null;\n }\n\n public static runCreateService<T>(ctx: ActionContext<T, unknown>): Observable<T> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const crudServiceInstance = ctx.serviceInstance as IMngCrudApiService<T>;\n if (typeof crudServiceInstance.createPost === 'function') {\n return ctx.parameters?.item ? crudServiceInstance.createPost(ctx.parameters.item) : null;\n }\n }\n return null;\n }\n\n public static runUpdateService<T>(ctx: ActionContext<T, unknown>): Observable<T> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const crudServiceInstance = ctx.serviceInstance as IMngCrudApiService<T>;\n if (typeof crudServiceInstance.updatePut === 'function') {\n return ctx.parameters?.itemId && ctx.parameters.item ? crudServiceInstance.updatePut(ctx.parameters.itemId, ctx.parameters.item) : null;\n }\n }\n return null;\n }\n\n public static runDeleteService<T>(ctx: ActionContext<T, unknown>): Observable<T | null> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const crudServiceInstance = ctx.serviceInstance as IMngCrudApiService<T>;\n if (typeof crudServiceInstance.removeDelete === 'function') {\n return ctx.parameters?.itemId ? crudServiceInstance.removeDelete(ctx.parameters.itemId, ctx.parameters.item) : null;\n }\n }\n return null;\n }\n\n public static runGetAllDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<MediusQueryResult<T>> | null {\n if (typeof ctx.dataProvider !== 'undefined' && typeof ctx.dataProvider['getAll' as keyof object] === 'function') {\n const tableDataProvider = ctx.dataProvider as ITableDataProvider<T, any>;\n const queryParam = ctx.parameters?.queryParam ?? MediusQueryParamBuilder.create().build();\n return tableDataProvider.getAll(queryParam, ctx.serviceInstance);\n }\n return null;\n }\n\n public static runFetchDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<T> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<T, any>;\n if (typeof editorDataProvider.fetch === 'function') {\n return ctx.parameters?.itemId ? editorDataProvider.fetch(ctx.parameters.itemId, ctx.serviceInstance) : null;\n }\n }\n return null;\n }\n\n public static runCreateDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<T> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<T, any>;\n if (typeof editorDataProvider.create === 'function') {\n return ctx.parameters?.item ? editorDataProvider.create(ctx.parameters.item, ctx.serviceInstance) : null;\n }\n }\n return null;\n }\n\n public static runUpdateDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<T> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<T, any>;\n if (typeof editorDataProvider.update === 'function') {\n return ctx.parameters?.itemId ? editorDataProvider.update(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance) : null;\n }\n }\n return null;\n }\n\n public static runDeleteDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<T | null> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<T, any>;\n if (typeof editorDataProvider.delete === 'function') {\n return ctx.parameters?.itemId ? editorDataProvider.delete(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance) : null;\n }\n }\n return null;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {ClassType} from '../types';\n\nexport interface IDataProvider<T, S> {\n modelType: ClassType<T> | null;\n serviceType?: Type<S>;\n}\n\nexport class DataProvider<T, S> {\n protected _modelType: ClassType<T> | null;\n protected _serviceType?: Type<S>;\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 withServiceType(type: Type<S>): this {\n this._serviceType = type;\n return this;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, throwError} from 'rxjs';\n\nimport {ClassType, IdType} from '../types';\nimport {DataProvider, IDataProvider} from './base.data-provider';\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 | null>;\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 | null>;\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 | null>): this {\n this._delete = deleteFn;\n return this;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, of} from 'rxjs';\n\nimport {MediusQueryParam} from '../api/models';\nimport {ClassType} from '../types';\nimport {DataProvider, IDataProvider} from './base.data-provider';\n\nexport interface ILookupDataProvider<T, S> extends IDataProvider<T, S> {\n lookup: (queryParam?: MediusQueryParam, service?: S, search?: string) => Observable<Array<T>>;\n}\n\nexport class LookupDataProvider<T, S> extends DataProvider<T, S> implements ILookupDataProvider<T, S> {\n protected _lookup: (queryParam?: MediusQueryParam, 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?: MediusQueryParam, service?: S, search?: string) => Observable<Array<T>>): this {\n this._lookup = lookup;\n return this;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, of} from 'rxjs';\n\nimport {MediusQueryParam, MediusQueryResult} from '../api/models';\nimport {ClassType} from '../types';\nimport {DataProvider, IDataProvider} from './base.data-provider';\n\nexport interface ITableDataProvider<T, S> extends IDataProvider<T, S> {\n getAll: (queryParam: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>>;\n}\n\nexport class TableDataProvider<T, S> extends DataProvider<T, S> implements ITableDataProvider<T, S> {\n protected _getAll: (queryParam: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>> = () => of(new MediusQueryResult<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: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>>): this {\n this._getAll = getAll;\n return this;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, of} from 'rxjs';\n\nimport {MediusQueryParam, MediusQueryResult} from '../api/models';\nimport {ClassType} from '../types';\nimport {EditorDataProvider, IEditorDataProvider} from './editor.data-provider';\nimport {ITableDataProvider} from './table.data-provider';\n\nexport interface ITableviewDataProvider<T, S> extends IEditorDataProvider<T, S> {\n getAll: (queryParam: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>>;\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: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>> = () => of(new MediusQueryResult<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: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>>): this {\n this._getAll = getAll;\n return this;\n }\n}\n","export enum AuthorizationTypeEnum {\n All = 'ALL',\n Any = 'ANY',\n Rbac = 'ROLE_BASED_ACCESS_CONTROL',\n Service = 'SERVICE'\n}\n","import {Type} from '@angular/core';\n\nimport {AuthorizationTypeEnum} from './authorization.type';\nimport {IPermissionService} from './permission-service.interface';\n\nexport abstract class APermissions {\n private readonly _authorizationType: AuthorizationTypeEnum;\n\n constructor(type: AuthorizationTypeEnum) {\n this._authorizationType = type;\n }\n\n public get authorizationType() {\n return this._authorizationType;\n }\n}\n\nexport namespace Permissions {\n export class All extends APermissions {\n private _permissions: Array<APermissions> = [];\n\n private constructor() {\n super(AuthorizationTypeEnum.All);\n }\n\n public static of(...permissions: Array<APermissions>): All {\n const inst = new All();\n inst.and(...permissions);\n return inst;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public and(...permissions: Array<APermissions>): this {\n this._permissions.push(...permissions);\n return this;\n }\n }\n\n export class Any extends APermissions {\n private _permissions: Array<APermissions> = [];\n\n private constructor() {\n super(AuthorizationTypeEnum.Any);\n }\n\n public static of(...permissions: Array<APermissions>): Any {\n const inst = new Any();\n inst.or(...permissions);\n return inst;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public or(...permissions: Array<APermissions>): this {\n this._permissions.push(...permissions);\n return this;\n }\n }\n\n export class Roles extends APermissions {\n private _roles: Array<Array<string>> = [];\n\n private constructor() {\n super(AuthorizationTypeEnum.Rbac);\n }\n\n public static of(...roles: Array<string>): Roles {\n const inst = new Roles();\n inst.or(...roles);\n return inst;\n }\n\n public get roles() {\n return this._roles;\n }\n\n public and(...roles: Array<string>): this {\n if (this._roles.length === 0) {\n this._roles.push([]);\n }\n this._roles[this._roles.length - 1].push(...roles);\n return this;\n }\n\n public or(...roles: Array<string>): this {\n this._roles.push(...roles.map(s => [s]));\n return this;\n }\n }\n\n export class Service extends APermissions {\n private constructor(public readonly service: Type<IPermissionService>) {\n super(AuthorizationTypeEnum.Service);\n }\n\n public static of(service: Type<IPermissionService>): Service {\n return new Service(service);\n }\n }\n\n export class ActionTypes {\n public static readonly READ = 'read';\n public static readonly ADD = 'add';\n public static readonly EDIT = 'edit';\n public static readonly DELETE = 'delete';\n public static readonly DETAILS = 'details';\n }\n}\n","export enum ActionPositionEnum {\n ToolbarLeft,\n ToolbarRight,\n TableHeader,\n RowInline,\n RowClick,\n FooterLeft,\n FooterRight\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\nexport enum ActionSizeEnum {\n ExtraSmall,\n Small,\n Normal,\n Large,\n ExtraLarge\n}\n\nexport enum ActionEditorDialogSizeEnum {\n ExtraSmall,\n Small,\n Normal,\n Large,\n ExtraLarge\n}\n\nexport enum ActionEditorSubmitTypeEnum {\n Submit,\n Cancel\n}\n","export enum ColumnTypeEnum {\n String,\n Number,\n Currency,\n Boolean,\n Date,\n Enum,\n Custom\n}\n","export enum TableviewTypeEnum {\n None,\n View,\n Edit,\n Add\n}\n","export enum FieldSizeEnum {\n Small,\n Normal,\n Large\n}\n\nexport enum FieldInputTypeEnum {\n Hidden,\n Label,\n Text,\n Textarea,\n Number,\n Currency,\n Switch,\n Radio,\n Datepicker,\n Mask,\n File,\n Custom\n}\n\nexport enum FieldLookupTypeEnum {\n Dropdown,\n Autocomplete,\n Dialog\n}\n\nexport enum FieldManyToManyEditorTypeEnum {\n DialogTableMultiselect\n}\n\nexport enum FieldManyToManyEditorActionEnum {\n Add,\n Delete\n}\n\nexport enum FieldManyEditorTypeEnum {\n DialogEditor\n}\n\nexport enum FieldManyEditorActionEnum {\n View,\n Add,\n Edit,\n Delete\n}\n\nexport enum FieldGroupTypeEnum {\n Fieldset,\n Logical\n}\n","export enum FilterTypeEnum {\n String,\n Number,\n Boolean,\n Date,\n Lookup,\n LookupEnum\n}\n\nexport enum FilterMatchModeEnum {\n StartsWith = 'startsWith',\n Contains = 'contains',\n EndsWith = 'endsWith',\n Equals = 'equals',\n NotEquals = 'notEquals',\n In = 'in',\n LessThan = 'lt',\n GreaterThan = 'gt',\n Between = 'between',\n DateIs = 'dateIs',\n DateIsNot = 'dateIsNot',\n DateBefore = 'dateBefore',\n DateAfter = 'dateAfter'\n}\n\nexport enum FilterLookupTypeEnum {\n Dropdown,\n Autocomplete\n}\n","export enum TablePaginationModeEnum {\n Pagination,\n InfiniteScroll\n}\n\nexport enum TableFilterDisplayEnum {\n Row,\n Menu\n}\n\nexport enum TableSizeEnum {\n Small,\n Normal,\n Large\n}\n","import {Type} from '@angular/core';\nimport {Params, QueryParamsHandling} from '@angular/router';\n\nimport {Confirmation} from 'primeng/api';\nimport {Observable, of} from 'rxjs';\n\nimport {ActionContext, ActionContextValidation} from '../components/action/models';\nimport {DataProvider, EditorDataProvider, IDataProvider, IEditorDataProvider} from '../data-providers';\nimport {APermissions, Permissions} from '../security/model';\nimport {ClassType, IdType} from '../types';\nimport {ActionDataProviderUtil, TypeUtil} from '../utils';\nimport {EditorDescriptor, ModelDescriptor} from './';\nimport {ActionActivationTriggerEnum, ActionEditorDialogSizeEnum, ActionEditorSubmitTypeEnum, ActionLevelEnum, ActionPositionEnum, ActionSizeEnum, ActionTypeEnum} from './types';\n\nexport class ActionDescriptor<T> {\n protected readonly _model: ModelDescriptor<T> | null;\n protected readonly _actionName: string;\n protected readonly _actionNameLong: 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 | null;\n protected _tooltip?: string | null;\n protected _className = '';\n protected _size: ActionSizeEnum = ActionSizeEnum.Normal;\n protected _isStyleText = false;\n protected _isStyleOutlined = false;\n protected _isStyleRaised = false;\n\n protected _dataProvider?: IDataProvider<T, any>;\n protected _runFunction?: (ctx: ActionContext<T, any>) => Observable<T | undefined | null>;\n protected _isVisibleFunction?: (ctx: ActionContextValidation<T, any>) => Observable<boolean>;\n protected _isEnabledFunction?: (ctx: ActionContextValidation<T, any>) => Observable<boolean>;\n\n protected _hasRunConfirmation = false;\n protected _runConfirmationIcon?: string;\n protected _runConfirmationTitle?: string;\n protected _runConfirmationMessage?: string;\n protected _runConfirmationAcceptTitle?: string;\n protected _runConfirmationRejectTitle?: string;\n protected _runConfirmationConfigMapFn?: (ctx: ActionContext<T, any>, confirmConfig: Confirmation) => Confirmation;\n\n protected _hasRunNotificationSuccess = true;\n protected _runNotificationSuccessTitle?: string;\n protected _runNotificationSuccessMessage?: string;\n\n protected _hasRunNotificationError = true;\n protected _runNotificationErrorTitle?: string;\n protected _runNotificationErrorMessage?: string;\n\n protected _afterRunAction?: ActionDescriptor<unknown>;\n protected _onRunErrorAction?: ActionDescriptor<unknown>;\n\n // security\n protected _permissions?: APermissions;\n protected _permissionsRouteType?: string;\n\n constructor(model: ModelDescriptor<T> | null, 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 if (this._parentTypeName || this._model) {\n this._i18nModelActionBaseKey = this._parentTypeName\n ? `${this._parentTypeName}.actions.${this._parentProperty}_${actionName}`\n : `${this._model!.typeName}.actions.${actionName}`;\n }\n let displayName = actionName;\n if (this._model) displayName = `${this._model.typeName}.${displayName}`;\n if (this._parentTypeName) {\n displayName = `${this._parentTypeName}.${this._parentProperty}_${displayName}`;\n }\n this._actionNameLong = displayName;\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 tooltip() {\n return this._tooltip;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get hasRunFunction(): boolean {\n return typeof this._runFunction === 'function';\n }\n\n public get runFunction(): (ctx: ActionContext<T, any>) => Observable<T | undefined | null> {\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 actionNameLong() {\n return this._actionNameLong;\n }\n\n public get className() {\n return this._className;\n }\n\n get isStyleText() {\n return this._isStyleText;\n }\n\n get isStyleOutlined() {\n return this._isStyleOutlined;\n }\n\n get isStyleRaised() {\n return this._isStyleRaised;\n }\n\n public get size() {\n return this._size;\n }\n\n public get isSizeExtraSmall() {\n return this._size === ActionSizeEnum.ExtraSmall;\n }\n\n public get isSizeSmall() {\n return this._size === ActionSizeEnum.Small;\n }\n\n public get isSizeLarge() {\n return this._size === ActionSizeEnum.Large;\n }\n\n public get isSizeExtraLarge() {\n return this._size === ActionSizeEnum.ExtraLarge;\n }\n\n public get hasRunConfirmation() {\n return this._hasRunConfirmation;\n }\n\n public get runConfirmationIcon() {\n return this._runConfirmationIcon;\n }\n\n public get runConfirmationTitle() {\n return this._runConfirmationTitle;\n }\n\n public get runConfirmationMessage() {\n return this._runConfirmationMessage;\n }\n\n public get runConfirmationAcceptTitle() {\n return this._runConfirmationAcceptTitle;\n }\n\n public get runConfirmationRejectTitle() {\n return this._runConfirmationRejectTitle;\n }\n\n public get runConfirmationConfigMapFn() {\n return this._runConfirmationConfigMapFn;\n }\n\n public get hasRunNotificationSuccess() {\n return this._hasRunNotificationSuccess;\n }\n\n public get runNotificationSuccessTitle() {\n return this._runNotificationSuccessTitle;\n }\n\n public get runNotificationSuccessMessage() {\n return this._runNotificationSuccessMessage;\n }\n\n public get hasRunNotificationError() {\n return this._hasRunNotificationError;\n }\n\n public get runNotificationErrorTitle() {\n return this._runNotificationErrorTitle;\n }\n\n public get runNotificationErrorMessage() {\n return this._runNotificationErrorMessage;\n }\n\n public get afterRunAction() {\n return this._afterRunAction;\n }\n\n public get onRunErrorAction() {\n return this._onRunErrorAction;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public get permissionsRouteType() {\n return this._permissionsRouteType;\n }\n\n public withDataProvider(dataProvider: IDataProvider<T, any>): this {\n this._dataProvider = dataProvider;\n return this;\n }\n\n public withServiceType<S>(serviceType: Type<S>): this {\n if (!this._model) {\n throw new Error(`Cannot set data provider if no model type is provided for action ${this._actionName}`);\n }\n this._dataProvider = new DataProvider(this._model.type, serviceType);\n return this;\n }\n\n public withRunFunction<S>(fn: (ctx: ActionContext<T, S>) => Observable<T | undefined | null>): this {\n this._runFunction = fn;\n return this;\n }\n\n public withIsVisibleFunction<S>(fn: (ctx: ActionContextValidation<T, S>) => Observable<boolean>): this {\n this._isVisibleFunction = fn;\n return this;\n }\n\n public withIsEnabledFunction<S>(fn: (ctx: ActionContextValidation<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 | null): this {\n this._icon = icon;\n return this;\n }\n\n public withTooltip(tooltip: string | null): this {\n this._title = tooltip;\n return this;\n }\n\n public withClassName(className: string): this {\n this._className = className;\n return this;\n }\n\n public withSize(size: ActionSizeEnum = ActionSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n public withStyle(styleText = false, styleOutlined = false, styleRaised = false): this {\n this._isStyleText = styleText;\n this._isStyleOutlined = styleOutlined;\n this._isStyleRaised = styleRaised;\n return this;\n }\n\n public withPosition(position: ActionPositionEnum): this {\n this._position = position;\n return this;\n }\n\n /**\n * Add a confirmation dialogue to the action\n * @param icon the icon to display on the confirmation dialogue\n * @param title the title of the confirmation dialogue\n * @param message the message on the confirmation dialogue\n * @param acceptTitle the title of the accepting button\n * @param rejectTitle the title of the rejecting button\n * @param runConfirmationConfigMapFn function used to generate the confirmation dialogue. **WARNING** changing the *accept* and *reject* methods of the *confirmConfig* parameter\n * may lead to unexpected behaviour\n */\n public withRunConfirmation(\n icon = 'pi pi-exclamation-triangle',\n title?: string,\n message?: string,\n acceptTitle?: string,\n rejectTitle?: string,\n runConfirmationConfigMapFn?: (ctx: ActionContext<T, any>, confirmConfig: Confirmation) => Confirmation\n ): 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 this._runConfirmationConfigMapFn = runConfirmationConfigMapFn;\n return this;\n }\n\n public withRunNotificationSuccess(title?: string, message?: string, hasNotification = true): this {\n this._hasRunNotificationSuccess = hasNotification;\n this._runNotificationSuccessTitle = title;\n this._runNotificationSuccessMessage = message;\n return this;\n }\n\n public withRunNotificationError(title?: string, message?: string, hasNotification = true): this {\n this._hasRunNotificationError = hasNotification;\n this._runNotificationErrorTitle = title;\n this._runNotificationErrorMessage = message;\n return this;\n }\n\n public withAfterRunAction<RT>(action: ActionDescriptor<RT>): this {\n this._afterRunAction = action as ActionDescriptor<unknown>;\n return this;\n }\n\n public withOnRunErrorAction<RT>(action: ActionDescriptor<RT>): this {\n this._onRunErrorAction = action as ActionDescriptor<unknown>;\n return this;\n }\n\n public withPermissions(permissions: APermissions): this {\n if (this._permissionsRouteType) {\n console.warn(`Permissions set on action ${this._actionNameLong} with route type '${this._permissionsRouteType}' will be omitted in route guard validation.`);\n }\n this._permissions = permissions;\n return this;\n }\n\n public withPermissionsRouteType(permissionsRouteType: string): this {\n this._permissionsRouteType = permissionsRouteType;\n return this;\n }\n}\n\nexport class ActionSimpleDescriptor<T> extends ActionDescriptor<T> {\n constructor(actionName: string, modelType?: ClassType<T>, idProperty?: string, titleProperty?: string) {\n const model = modelType ? new ModelDescriptor<T>(modelType, idProperty, titleProperty) : null;\n super(model, actionName);\n }\n}\n\nexport class ActionEditorDescriptor<T> extends ActionDescriptor<T> {\n private readonly _editorDescriptor: EditorDescriptor<T>;\n\n protected _editorActions: ActionDescriptor<T>[] = [];\n protected _editorTitle?: string | null = undefined;\n\n protected _hasFetchNotificationSuccess = false;\n protected _fetchNotificationSuccessTitle?: string;\n protected _fetchNotificationSuccessMessage?: string;\n\n protected _dialogSize: ActionEditorDialogSizeEnum = ActionEditorDialogSizeEnum.Normal;\n protected _dialogClassName?: string;\n\n protected override _dataProvider?: IEditorDataProvider<T, any>;\n protected _fetchFunction?: (ctx: ActionContext<T, any>) => Observable<T>;\n protected _submitFunction?: (ctx: ActionContext<T, any>) => Observable<T>;\n\n protected _editorComponent?: Type<any>;\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 this._editorActions.push(new ActionEditorSubmitDescriptor(this), new ActionEditorSubmitDescriptor(this, ActionEditorSubmitTypeEnum.Cancel));\n }\n\n public get editorTitle() {\n return this._editorTitle;\n }\n\n public get editorDescriptor() {\n return this._editorDescriptor;\n }\n\n public get dialogSize() {\n return this._dialogSize;\n }\n\n public get dialogClassName() {\n return this._dialogClassName;\n }\n\n public get hasFetchNotificationSuccess() {\n return this._hasFetchNotificationSuccess;\n }\n\n public get fetchNotificationSuccessTitle() {\n return this._fetchNotificationSuccessTitle;\n }\n\n public get fetchNotificationSuccessMessage() {\n return this._fetchNotificationSuccessMessage;\n }\n\n public override get dataProvider() {\n return this._dataProvider;\n }\n\n public override get runFunction(): (ctx: ActionContext<T, unknown>) => 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: ActionContext<T, unknown>) => Observable<T> {\n if (!this._fetchFunction) {\n return ctx => {\n console.debug(`Fetch function is not provided for function ${this._actionNameLong}, using default and returning context item`, ctx.parameters?.item);\n return of(ctx.parameters?.item ? ctx.parameters.item : ({} as T));\n };\n }\n return this._fetchFunction;\n }\n\n public get submitFunction() {\n return this._submitFunction;\n }\n\n public get editorActions() {\n return this._editorActions;\n }\n\n public get editorComponent() {\n return this._editorComponent;\n }\n\n public withEditorTitle(title: string | null): this {\n this._editorTitle = title;\n return this;\n }\n\n public override withDataProvider(dataProvider: IEditorDataProvider<T, any>): this {\n this._dataProvider = dataProvider;\n return this;\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n if (!this._model) {\n throw new Error(`Cannot set data provider if no model type is provided for action ${this._actionName}`);\n }\n this._dataProvider = new EditorDataProvider(this._model.type, serviceType);\n return this;\n }\n\n public withDialogSize(size = ActionEditorDialogSizeEnum.Normal): this {\n this._dialogSize = size;\n return this;\n }\n\n public withDialogClassName(className: string): this {\n this._dialogClassName = className;\n return this;\n }\n\n public override withRunFunction<S>(fn: (ctx: ActionContext<T, S>) => Observable<T>): this {\n return this.withSubmitFunction(fn as (ctx: ActionContext<T, S>) => Observable<T>);\n }\n\n public withFetchFunction<S>(fn: (ctx: ActionContext<T, S>) => Observable<T>): this {\n this._fetchFunction = fn;\n return this;\n }\n\n public withSubmitFunction<S>(fn: (ctx: ActionContext<T, S>) => Observable<T>): this {\n this._submitFunction = fn;\n return this;\n }\n\n public withFetchNotificationError(title?: string, message?: string, hasNotification = true): this {\n this._hasFetchNotificationSuccess = hasNotification;\n this._fetchNotificationSuccessTitle = title;\n this._fetchNotificationSuccessMessage = message;\n return this;\n }\n\n public withEditorAction(action: ActionDescriptor<T>): this {\n this._editorActions.push(action);\n return this;\n }\n\n public withEditorActions(actions: ActionDescriptor<T>[]): this {\n this._editorActions = actions;\n return this;\n }\n\n public withEditorComponent(editorComponent: Type<any>): this {\n this._editorComponent = editorComponent;\n return this;\n }\n}\n\nexport class ActionEditorSubmitDescriptor<T> extends ActionDescriptor<T> {\n private readonly _editorAction: ActionEditorDescriptor<T>;\n private readonly _submitType: ActionEditorSubmitTypeEnum;\n\n constructor(editorAction: ActionEditorDescriptor<T>, submitType = ActionEditorSubmitTypeEnum.Submit) {\n super(editorAction.model, submitType === ActionEditorSubmitTypeEnum.Submit ? 'submit' : 'cancel');\n this._editorAction = editorAction;\n this._submitType = submitType;\n this._position = ActionPositionEnum.FooterRight;\n this._isStyleText = true;\n }\n\n public get submitType() {\n return this._submitType;\n }\n}\n\nexport class ActionEditorDetailsDescriptor<T> extends ActionEditorDescriptor<T> {\n public static readonly ACTION_NAME = 'details';\n\n constructor(editorDescriptor: EditorDescriptor<T>) {\n super(editorDescriptor, ActionEditorDetailsDescriptor.ACTION_NAME);\n this.withPosition(ActionPositionEnum.RowClick);\n this.withRouteTrigger(':itemId');\n this.withFetchFunction(ActionDataProviderUtil.runFetchOrFail);\n this.withEditorActions([new ActionEditorSubmitDescriptor(this, ActionEditorSubmitTypeEnum.Cancel)]);\n this.withPermissionsRouteType(Permissions.ActionTypes.DETAILS);\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n return this.withServiceFetchFunction(serviceType);\n }\n\n public withServiceFetchFunction<S>(serviceType: Type<S>, fetchFn?: (id: IdType, service?: S) => Observable<T>): this {\n const dataProvider = new EditorDataProvider(this._model!.type, serviceType);\n if (fetchFn) {\n dataProvider.withFetch(fetchFn);\n }\n this._dataProvider = dataProvider;\n return this;\n }\n}\n\nexport class ActionEditorAddDescriptor<T> extends ActionEditorDescriptor<T> {\n public static readonly ACTION_NAME = 'add';\n\n constructor(editorDescriptor: EditorDescriptor<T>) {\n super(editorDescriptor, ActionEditorAddDescriptor.ACTION_NAME);\n this.withPosition(ActionPositionEnum.ToolbarLeft);\n this.withRouteTrigger('add');\n this.withSubmitFunction(ActionDataProviderUtil.runCreateOrFail);\n this.withLevel(ActionLevelEnum.Success);\n this.withIcon('pi pi-plus');\n this.withPermissionsRouteType(Permissions.ActionTypes.ADD);\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n return this.withServiceSubmitFunction(serviceType);\n }\n\n public withServiceSubmitFunction<S>(serviceType: Type<S>, createFn?: (item?: T, service?: S) => Observable<T>, fetchFn?: (id: IdType, service?: S) => Observable<T>): this {\n const dataProvider = new EditorDataProvider(this._model!.type, serviceType);\n if (createFn) {\n dataProvider.withCreate(createFn);\n }\n if (fetchFn) {\n dataProvider.withFetch(fetchFn);\n }\n this._dataProvider = dataProvider;\n return this;\n }\n}\n\nexport class ActionEditorEditDescriptor<T> extends ActionEditorDescriptor<T> {\n public static readonly ACTION_NAME = 'edit';\n\n constructor(editorDescriptor: EditorDescriptor<T>) {\n super(editorDescriptor, ActionEditorEditDescriptor.ACTION_NAME);\n this.withPosition(ActionPositionEnum.RowInline);\n this.withTitle(null);\n this.withRouteTrigger(':itemId/edit');\n this.withFetchFunction(ActionDataProviderUtil.runFetchOrFail);\n this.withSubmitFunction(ActionDataProviderUtil.runUpdateOrFail);\n this.withIcon('pi pi-pencil');\n this.withPermissionsRouteType(Permissions.ActionTypes.EDIT);\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n return this.withServiceSubmitFunction(serviceType);\n }\n\n public withServiceSubmitFunction<S>(\n serviceType: Type<S>,\n updateFn?: (id: IdType, item?: T, service?: S) => Observable<T>,\n fetchFn?: (id: IdType, service?: S) => Observable<T>\n ): this {\n const dataProvider = new EditorDataProvider(this._model!.type, serviceType);\n if (updateFn) {\n dataProvider.withUpdate(updateFn);\n }\n if (fetchFn) {\n dataProvider.withFetch(fetchFn);\n }\n this._dataProvider = dataProvider;\n return this;\n }\n}\n\nexport class ActionDeleteDescriptor<T> extends ActionDescriptor<T> {\n public static readonly ACTION_NAME = 'delete';\n\n constructor(model: ModelDescriptor<T>) {\n super(model, ActionDeleteDescriptor.ACTION_NAME);\n this.withPosition(ActionPositionEnum.RowInline);\n this.withTitle(null);\n this.withRunFunction(ActionDataProviderUtil.runDeleteOrFail);\n this.withLevel(ActionLevelEnum.Danger);\n this.withIcon('pi pi-trash');\n this.withRunConfirmation(undefined);\n this.withPermissionsRouteType(Permissions.ActionTypes.DELETE);\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n return this.withServiceDeleteFunction(serviceType);\n }\n\n public withServiceDeleteFunction<S>(serviceType: Type<S>, deleteFn?: (id: IdType, item?: T, service?: S) => Observable<T>): this {\n const dataProvider = new EditorDataProvider(this._model!.type, serviceType);\n if (deleteFn) {\n dataProvider.withDelete(deleteFn);\n }\n this._dataProvider = dataProvider;\n return this;\n }\n}\n\nexport class ActionLinkDescriptor<T> extends ActionDescriptor<T> {\n private _url = '';\n private _pathSegments: string[] = [];\n private _queryParams?: Params;\n private _queryParamsHandling?: QueryParamsHandling;\n private _replaceUrl = false;\n private _target = '_self';\n private _isStyleLink = false;\n\n constructor(model: ModelDescriptor<T> | null = null, actionName = 'link') {\n super(model, actionName);\n }\n\n public get url(): string {\n return this._url;\n }\n\n public get pathSegments(): string[] {\n return this._pathSegments;\n }\n\n public get queryParams(): Params | undefined {\n return this._queryParams;\n }\n\n public get queryParamsHandling(): QueryParamsHandling | undefined {\n return this._queryParamsHandling;\n }\n\n public get replaceUrl(): boolean {\n return this._replaceUrl;\n }\n\n public get target(): string {\n return this._target;\n }\n\n public get isStyleLink(): boolean {\n return this._isStyleLink;\n }\n\n public withHref(url: string): this {\n this._url = url;\n return this;\n }\n\n public withRouterLink(...pathSegments: string[]): this {\n this._pathSegments = pathSegments;\n return this;\n }\n\n public withQueryParams(queryParams: Params, queryParamsHandling?: QueryParamsHandling): this {\n this._queryParams = queryParams;\n this._queryParamsHandling = queryParamsHandling;\n return this;\n }\n\n public withReplaceUrl(replaceUrl = false): this {\n this._replaceUrl = replaceUrl;\n return this;\n }\n\n public withTarget(target: '_self' | '_blank' = '_self'): this {\n this._target = target;\n return this;\n }\n\n public withStyleLink(isStyleLink: boolean): this {\n this._isStyleLink = isStyleLink;\n return this;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, of} from 'rxjs';\n\nimport {MediusQueryParam} from '../api/models';\nimport {ILookupDataProvider, LookupDataProvider} from '../data-providers';\nimport {EnumValue} from '../models';\nimport {ClassType, EnumConstantType, EnumType} from '../types';\nimport {EnumUtil, ModelUtil, TypeUtil} from '../utils';\nimport {ILookupDescriptor} from './interfaces';\nimport {FilterLookupTypeEnum, FilterMatchModeEnum, FilterTypeEnum} from './types';\n\nexport class FilterDescriptor<T> {\n protected readonly _property: string;\n protected _filterType = FilterTypeEnum.String;\n protected _filterProperty?: string;\n private _hasDefaultValue = false;\n protected _defaultFilterMatchMode = FilterMatchModeEnum.Equals;\n protected _defaultValue?: string;\n private _defaultValueTo?: string;\n\n protected _matchModes: string[] | null = null;\n\n // number filter specific properties\n protected _numberMinFractionDigits?: number;\n protected _numberMaxFractionDigits?: number;\n protected _numberUseGrouping = true;\n\n // date filter specific properties\n protected _datePickerFormat?: string;\n protected _datePickerShowTime = false;\n\n protected _placeholder?: string;\n protected _className = '';\n protected _columnClassName = '';\n protected _columnWidth: number | null = null;\n protected _columnMinWidth: number | null = null;\n\n constructor(property: string) {\n this._property = property;\n }\n\n public get filterType() {\n return this._filterType;\n }\n\n public get hasDefaultValue() {\n return this._hasDefaultValue;\n }\n\n public get defaultValue() {\n return this._defaultValue;\n }\n\n public get defaultValueTo() {\n return this._defaultValueTo;\n }\n\n public get defaultFilterMatchMode() {\n return this._defaultFilterMatchMode;\n }\n\n public get filterProperty() {\n return this._filterProperty;\n }\n\n public get matchModes() {\n return this._matchModes;\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 numberUseGrouping() {\n return this._numberUseGrouping;\n }\n\n public get datePickerFormat() {\n return this._datePickerFormat;\n }\n\n public get datePickerShowTime() {\n return this._datePickerShowTime;\n }\n\n public get placeholder() {\n return this._placeholder;\n }\n\n public get className() {\n return this._className;\n }\n\n public get columnClassName() {\n return this._columnClassName;\n }\n\n public get columnWidth() {\n return this._columnWidth;\n }\n\n public get columnMinWidth() {\n return this._columnMinWidth;\n }\n\n public get property() {\n return this._property;\n }\n\n public asFilterType(filterType: FilterTypeEnum) {\n this._filterType = filterType;\n return this;\n }\n\n /**\n * Sets different filter property name instead of default property. Use this if API requires different property provided to perform correct filter.\n * @param filterProperty\n */\n public withFilterProperty(filterProperty: string): this {\n this._filterProperty = filterProperty;\n return this;\n }\n\n public withDefaultFilter(filterValue: string, filterValueTo?: string, filterMatchMode = FilterMatchModeEnum.Equals): this {\n this._hasDefaultValue = true;\n this._defaultValue = filterValue;\n this._defaultValueTo = filterValueTo;\n if (filterMatchMode) {\n this._defaultFilterMatchMode = filterMatchMode;\n }\n return this;\n }\n\n public withNumberFractions(min?: number, max?: number) {\n this._numberMinFractionDigits = min;\n this._numberMaxFractionDigits = max;\n return this;\n }\n\n public withNumberGrouping(useGrouping = true): this {\n this._numberUseGrouping = useGrouping;\n return this;\n }\n\n public withDateFormat(format?: string, showTime = false): this {\n this._datePickerFormat = format;\n this._datePickerShowTime = showTime;\n return this;\n }\n\n public withPlaceholder(placeholder: string): this {\n this._placeholder = placeholder;\n return this;\n }\n\n public withClassName(className: string): this {\n this._className = className;\n return this;\n }\n\n public withColumnClassName(className: string): this {\n this._columnClassName = className;\n return this;\n }\n\n public withColumnWidth(width?: number, minWidth?: number): this {\n this._columnWidth = width ?? null;\n this._columnMinWidth = minWidth ?? null;\n return this;\n }\n\n public withMatchModes(matchModes: Array<FilterMatchModeEnum>): this {\n this._matchModes = matchModes;\n return this;\n }\n\n public copy(): FilterDescriptor<T> {\n const descriptor = new FilterDescriptor<T>(this._property);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n\n protected copyFieldsTo(descriptor: FilterDescriptor<T>) {\n descriptor._filterType = this._filterType;\n descriptor._filterProperty = this._filterProperty;\n descriptor._hasDefaultValue = this._hasDefaultValue;\n descriptor._defaultValue = this._defaultValue;\n descriptor._defaultValueTo = this._defaultValueTo;\n descriptor._defaultFilterMatchMode = this._defaultFilterMatchMode;\n descriptor._numberMinFractionDigits = this._numberMinFractionDigits;\n descriptor._numberMaxFractionDigits = this._numberMaxFractionDigits;\n descriptor._numberUseGrouping = this._numberUseGrouping;\n descriptor._datePickerFormat = this._datePickerFormat;\n descriptor._datePickerShowTime = this._datePickerShowTime;\n descriptor._placeholder = this._placeholder;\n descriptor._className = this._className;\n descriptor._columnWidth = this._columnWidth;\n descriptor._columnMinWidth = this._columnMinWidth;\n descriptor._columnClassName = this._columnClassName;\n }\n}\n\nexport class FilterLookupDescriptor<T> extends FilterDescriptor<T> implements ILookupDescriptor<T> {\n protected readonly _modelType: ClassType<T> | null = null;\n protected _lookupType?: FilterLookupTypeEnum = FilterLookupTypeEnum.Dropdown;\n\n protected _dataProvider?: ILookupDataProvider<T, any>;\n protected _itemsLabelProperty?: string;\n protected _itemsLabelTranslate = false;\n protected _itemsValueProperty?: string;\n protected _dataKeyProperty?: string;\n protected _multiselect = false;\n\n protected _dropdownClassName = 'mng-filter-lookup-dropdown';\n\n protected _autocompleteOpenOnFocus = false;\n protected _autocompleteInlineSearch = false;\n\n constructor(property: string, modelType: ClassType<T> | null) {\n super(property);\n this._modelType = modelType;\n this._filterType = FilterTypeEnum.Lookup;\n ModelUtil.trySetLookupItemsProperties(this);\n }\n\n public get lookupType() {\n return this._lookupType;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get itemsLabelProperty() {\n return this._itemsLabelProperty;\n }\n\n public get itemsLabelTranslate() {\n return this._itemsLabelTranslate;\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 multiselect() {\n return this._multiselect;\n }\n\n public get autocompleteOpenOnFocus() {\n return this._autocompleteOpenOnFocus;\n }\n\n public get autocompleteInlineSearch() {\n return this._autocompleteInlineSearch;\n }\n\n public get dropdownClassName() {\n return this._dropdownClassName;\n }\n\n public get modelType() {\n return this._modelType;\n }\n\n public withItemsLabelProperty(itemsLabelProperty: string, translate = false): this {\n this._itemsLabelProperty = itemsLabelProperty;\n this._itemsLabelTranslate = translate;\n return this;\n }\n\n public withItemsValueProperty(itemsValueProperty: string): this {\n this._itemsValueProperty = itemsValueProperty;\n this._dataKeyProperty = itemsValueProperty;\n return this;\n }\n\n public withDataKeyProperty(dataKeyProperty: string): this {\n this._dataKeyProperty = dataKeyProperty;\n this._itemsValueProperty = dataKeyProperty;\n return this;\n }\n\n public withLookup<S>(lookup: (queryParam?: MediusQueryParam, 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 withMultiselect(multiselect = true) {\n this._multiselect = multiselect;\n return this;\n }\n\n public withDropdownClassName(dropdownClassName: string): this {\n this._dropdownClassName = dropdownClassName;\n return this;\n }\n\n public asAutocomplete(openOnFocus = false, inlineSearch = false): this {\n this._lookupType = FilterLookupTypeEnum.Autocomplete;\n this._autocompleteOpenOnFocus = openOnFocus;\n this._autocompleteInlineSearch = inlineSearch;\n return this;\n }\n\n public override copy(): FilterLookupDescriptor<T> {\n const descriptor = new FilterLookupDescriptor<T>(this._property, this._modelType);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n\n protected override copyFieldsTo(filter: FilterLookupDescriptor<T>) {\n super.copyFieldsTo(filter);\n filter._dataProvider = this._dataProvider;\n filter._lookupType = this._lookupType;\n filter._itemsLabelProperty = this._itemsLabelProperty;\n filter._itemsLabelTranslate = this._itemsLabelTranslate;\n filter._itemsValueProperty = this._itemsValueProperty;\n filter._dataKeyProperty = this._dataKeyProperty;\n filter._multiselect = this._multiselect;\n filter._dropdownClassName = this._dropdownClassName;\n filter._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;\n filter._autocompleteInlineSearch = this._autocompleteInlineSearch;\n }\n}\n\nexport class FilterLookupEnumDescriptor extends FilterLookupDescriptor<EnumValue<string | number>> {\n private readonly _enumType: EnumType;\n\n constructor(property: string, enumType: EnumType, options?: Array<EnumConstantType>, nameAsValue = false, optionsTitlePath?: string | null) {\n super(property, null);\n this._enumType = enumType;\n if (typeof optionsTitlePath === 'undefined') {\n optionsTitlePath = TypeUtil.findEnumName(enumType);\n }\n const optionEnumValues = Array.isArray(options)\n ? EnumUtil.fromValuesAsEnumValueArray(enumType, options, nameAsValue, optionsTitlePath ?? undefined)\n : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath ?? undefined);\n const dataProvider = new LookupDataProvider<EnumValue<string | number>, any>(null).withLookup(() => of(optionEnumValues));\n this.withLookupDataProvider(dataProvider);\n this.withItemsLabelProperty('title', optionsTitlePath !== null);\n this.withItemsValueProperty('value');\n }\n\n public get enumType() {\n return this._enumType;\n }\n\n public override asAutocomplete(openOnFocus = true): this {\n super.asAutocomplete(openOnFocus, true);\n return this;\n }\n\n public override copy(): FilterLookupEnumDescriptor {\n const field = new FilterLookupEnumDescriptor(this._property, this._enumType, []);\n this.copyFieldsTo(field);\n return field;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {IColumnValueComponent} from '../models';\nimport {ClassType, EnumConstantType, EnumType} from '../types';\nimport {ModelUtil, TypeUtil} from '../utils';\nimport {FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor} from './filter.descriptor';\nimport {TableDescriptor} from './table.descriptor';\nimport {ColumnTypeEnum, FilterTypeEnum} from './types';\n\nexport class ColumnDescriptor<T, TT> {\n private readonly _table: TableDescriptor<TT>;\n private readonly _property: string;\n private _columnType: ColumnTypeEnum = ColumnTypeEnum.String;\n private _title?: string;\n private _jsonPath?: string;\n private _isSortEnabled = false;\n private _filterDescriptor?: FilterDescriptor<T>;\n private _displayFormat?: string;\n private _locale?: string;\n\n // styling\n private _headerClassName = '';\n private _className = '';\n private _width: number | null = null;\n private _minWidth: number | null = null;\n private _maxWidth: number | null = null;\n\n // enum specifics\n private _enumType?: EnumType;\n private _enumTitlePath?: string | null;\n private _enumNameAsValue = false;\n\n // boolean specifics\n private _booleanAsIcon = false;\n private _booleanYes?: string;\n private _booleanNo?: string;\n\n // model specifics\n private _objectModelType?: ClassType<unknown>;\n private _objectTitleProperty?: string;\n\n // currency specifics\n private _currencyCode?: string;\n private _currencyFromProperty?: string;\n private _currencyDisplay?: 'symbol' | 'code' | 'name';\n\n // custom specifics\n private _customComponentType?: Type<IColumnValueComponent<TT>>;\n\n // helpers\n private _hasCopyToClipboard = false;\n\n constructor(table: TableDescriptor<TT>, property: string) {\n this._table = table;\n this._property = property;\n }\n\n public get columnType() {\n return this._columnType;\n }\n\n public get title() {\n return this._title;\n }\n\n public get jsonPath() {\n return this._jsonPath;\n }\n\n public get isSortEnabled() {\n return this._isSortEnabled;\n }\n\n public get filterDescriptor() {\n return this._filterDescriptor;\n }\n\n public get displayFormat() {\n return this._displayFormat;\n }\n\n public get table() {\n return this._table;\n }\n\n public get property() {\n return this._property;\n }\n\n public get headerClassName() {\n return this._headerClassName;\n }\n\n public get className() {\n return this._className;\n }\n\n public get width() {\n return this._width;\n }\n\n public get minWidth() {\n return this._minWidth;\n }\n\n public get maxWidth() {\n return this._maxWidth;\n }\n\n public get enumType() {\n return this._enumType;\n }\n\n public get enumTitlePath() {\n return this._enumTitlePath;\n }\n\n public get enumNameAsValue() {\n return this._enumNameAsValue;\n }\n\n public get booleanAsIcon() {\n return this._booleanAsIcon;\n }\n\n public get booleanYes() {\n return this._booleanYes;\n }\n\n public get booleanNo() {\n return this._booleanNo;\n }\n\n public get objectModelType() {\n return this._objectModelType;\n }\n\n public get objectTitleProperty() {\n return this._objectTitleProperty;\n }\n\n public get customComponentType() {\n return this._customComponentType;\n }\n\n public get locale() {\n return this._locale;\n }\n\n public get currencyCode() {\n return this._currencyCode;\n }\n\n public get currencyDisplay() {\n return this._currencyDisplay;\n }\n\n public get currencyFromProperty() {\n return this._currencyFromProperty;\n }\n\n public get hasCopyToClipboard() {\n return this._hasCopyToClipboard;\n }\n\n public asType(type: ColumnTypeEnum = ColumnTypeEnum.String): this {\n this._columnType = type;\n return this;\n }\n\n public asNumber(displayFormat = '1.0-0', locale?: string): this {\n this._columnType = ColumnTypeEnum.Number;\n this._displayFormat = displayFormat;\n this._locale = locale ?? this._locale;\n return this;\n }\n\n public asCurrency(currencyCode?: string, currencyFromProperty?: string, currencyDisplay?: 'symbol' | 'code' | 'name', displayFormat = '1.2-2', locale?: string): this {\n this._columnType = ColumnTypeEnum.Currency;\n this._currencyCode = currencyCode ?? this._currencyCode;\n this._currencyFromProperty = currencyFromProperty ?? this._currencyFromProperty;\n this._currencyDisplay = currencyDisplay ?? this._currencyDisplay;\n this._displayFormat = displayFormat ?? displayFormat;\n this._locale = locale ?? this._locale;\n return this;\n }\n\n public asDate(displayFormat = 'dd.MM.yyyy'): this {\n this._columnType = ColumnTypeEnum.Date;\n this._displayFormat = displayFormat;\n return this;\n }\n\n public asBoolean(yes?: string, no?: string, asIcon = false): this {\n this._columnType = ColumnTypeEnum.Boolean;\n this._booleanAsIcon = asIcon;\n this._booleanYes = yes;\n this._booleanNo = no;\n return this;\n }\n\n public asEnum(enumType: EnumType, nameAsValue = false, titlePath?: string | null): this {\n this._columnType = ColumnTypeEnum.Enum;\n this._enumType = enumType;\n this._enumNameAsValue = nameAsValue;\n if (typeof titlePath === 'undefined') {\n titlePath = TypeUtil.findEnumName(enumType);\n }\n this._enumTitlePath = titlePath;\n return this;\n }\n\n public asCustomComponent(customComponentType: Type<IColumnValueComponent<TT>>): this {\n this._columnType = ColumnTypeEnum.Custom;\n this._customComponentType = customComponentType;\n return this;\n }\n\n public withClassName(className?: string, headerClassName?: string): this {\n this._className = className ?? '';\n this._headerClassName = headerClassName ?? '';\n return this;\n }\n\n public withWidth(width?: number, minWidth?: number, maxWidth?: number): this {\n this._width = width ?? null;\n this._minWidth = minWidth ?? null;\n this._maxWidth = maxWidth ?? null;\n return this;\n }\n\n public withObjectProperty<MT>(modelType: ClassType<MT>, titleProperty?: string): this {\n this._objectModelType = modelType;\n if (!titleProperty) {\n this._objectTitleProperty = ModelUtil.findTitleAttribute(modelType) ?? undefined;\n } else {\n this._objectTitleProperty = titleProperty;\n }\n return this;\n }\n\n public withTitle(title: string): this {\n this._title = title;\n return this;\n }\n\n public withJsonPath(path: string): this {\n this._jsonPath = path;\n return this;\n }\n\n public withFilter(forceSimple = false): FilterDescriptor<T> {\n this._filterDescriptor = new FilterDescriptor<any>(this._property);\n let filterType: FilterTypeEnum;\n\n if (!forceSimple && this._objectModelType) {\n return this.withFilterLookup();\n }\n switch (this._columnType) {\n case ColumnTypeEnum.Number:\n filterType = FilterTypeEnum.Number;\n break;\n case ColumnTypeEnum.Boolean:\n filterType = FilterTypeEnum.Boolean;\n break;\n case ColumnTypeEnum.Date:\n filterType = FilterTypeEnum.Date;\n break;\n case ColumnTypeEnum.Enum:\n if (!forceSimple) {\n return this.withFilterLookupEnum();\n } else {\n filterType = FilterTypeEnum.String;\n break;\n }\n case ColumnTypeEnum.String:\n case ColumnTypeEnum.Custom:\n default:\n filterType = FilterTypeEnum.String;\n break;\n }\n this._filterDescriptor.asFilterType(filterType);\n return this._filterDescriptor;\n }\n\n public withFilterLookup(): FilterLookupDescriptor<unknown> {\n const filterDescriptor = new FilterLookupDescriptor<unknown>(this._property, this._objectModelType ?? null);\n this._filterDescriptor = filterDescriptor;\n return filterDescriptor;\n }\n\n public withFilterLookupEnum(options?: Array<EnumConstantType>): FilterLookupEnumDescriptor {\n if (this._columnType !== ColumnTypeEnum.Enum || !this._enumType) {\n throw new Error(`Column ${this._property} is not of type enum or enum type is undefined.`);\n }\n const filterDescriptor = new FilterLookupEnumDescriptor(this._property, this._enumType, options, this._enumNameAsValue, this._enumTitlePath);\n this._filterDescriptor = filterDescriptor;\n return filterDescriptor;\n }\n\n public withSort(isEnabled = true): this {\n this._isSortEnabled = isEnabled;\n return this;\n }\n\n public withDefaultSort(asc = true): this {\n this._table.withDefaultSort(this._property, asc);\n return this;\n }\n\n public withCopyToClipboard(hasCopyToCliboard = true): this {\n this._hasCopyToClipboard = hasCopyToCliboard;\n return this;\n }\n\n public copy(): ColumnDescriptor<T, TT> {\n const descriptor = new ColumnDescriptor<T, TT>(this._table, this._property);\n descriptor._jsonPath = this._jsonPath;\n descriptor._title = this._title;\n descriptor._isSortEnabled = this._isSortEnabled;\n descriptor._columnType = this._columnType;\n descriptor._filterDescriptor = this._filterDescriptor?.copy();\n descriptor._enumType = this._enumType;\n descriptor._enumTitlePath = this._enumTitlePath;\n descriptor._enumNameAsValue = this._enumNameAsValue;\n descriptor._booleanAsIcon = this._booleanAsIcon;\n descriptor._booleanYes = this._booleanYes;\n descriptor._booleanNo = this._booleanNo;\n descriptor._objectModelType = this._objectModelType;\n descriptor._objectTitleProperty = this._objectTitleProperty;\n descriptor._locale = this._locale;\n descriptor._currencyCode = this._currencyCode;\n descriptor._currencyDisplay = this._currencyDisplay;\n descriptor._currencyFromProperty = this._currencyFromProperty;\n descriptor._displayFormat = this._displayFormat;\n descriptor._headerClassName = this._headerClassName;\n descriptor._className = this._className;\n descriptor._width = this._width;\n descriptor._minWidth = this._minWidth;\n descriptor._maxWidth = this._maxWidth;\n descriptor._hasCopyToClipboard = this._hasCopyToClipboard;\n return descriptor;\n }\n}\n","import {ClassType, EnumConstantType, EnumType, MngFieldValidationMessage, MngFieldValidator} from '../types';\nimport {I18nUtils} from '../utils';\nimport {\n AFieldDescriptor,\n FieldGroupDescriptor,\n FieldInputDescriptor,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor,\n FieldTabGroupDescriptor,\n ModelDescriptor,\n TableDescriptor,\n TableviewDescriptor\n} from './';\nimport {TableviewTypeEnum} from './types';\n\nexport class EditorDescriptor<T> {\n public static readonly defaultGroupName = '_default';\n\n private readonly _model: ModelDescriptor<T>;\n private readonly _tableviewEditorType: TableviewTypeEnum;\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 = false;\n\n constructor(modelType: ClassType<T>, idProperty?: string, titleProperty?: string, tableviewEditorType = TableviewTypeEnum.None) {\n this._model = new ModelDescriptor<T>(modelType, idProperty, titleProperty);\n this._tableviewEditorType = tableviewEditorType;\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 fields() {\n return this._fields;\n }\n\n public get tableviewEditorType() {\n return this._disabled;\n }\n\n public get disabled() {\n return this._disabled;\n }\n\n public createTabGroup(name: string, title?: string): FieldTabGroupDescriptor<T> {\n const tabGroup = new FieldTabGroupDescriptor<T>(this, name);\n if (!title) {\n title = I18nUtils.Type.getTabKey(this.model.typeName, name);\n }\n tabGroup.withTitle(title);\n this.createTabGroupDescriptor(tabGroup);\n return tabGroup;\n }\n\n public createFieldGroup(name: string, title?: string | null): FieldGroupDescriptor<T> {\n const fieldGroup = new FieldGroupDescriptor<T>(this, name);\n if (title !== null) {\n if (!title) {\n title = I18nUtils.Type.getGroupKey(this.model.typeName, name);\n }\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(\n property: string,\n enumType: EnumType,\n options?: Array<EnumConstantType>,\n nameAsValue = false,\n optionsTitlePath?: string | null\n ): FieldLookupEnumDescriptor<T> {\n const field = new FieldLookupEnumDescriptor(this, property, enumType, options, nameAsValue, optionsTitlePath);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyEditor<FT>(property: string, tableviewDescriptor: TableviewDescriptor<FT>): FieldManyEditorDescriptor<FT, T> {\n const field = new FieldManyEditorDescriptor(this, property, tableviewDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyToManyEditor<FT>(\n property: string,\n mainTableDescriptor: TableDescriptor<FT>,\n lookupTableDescriptor: TableDescriptor<FT>\n ): FieldManyToManyEditorDescriptor<FT, T> {\n const field = new FieldManyToManyEditorDescriptor(this, property, mainTableDescriptor, lookupTableDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public withDisabled(disabled = true): this {\n this._disabled = disabled;\n return this;\n }\n\n public addValidation(name: string, validator?: MngFieldValidator, message?: MngFieldValidationMessage) {\n if (this._currentGroup) {\n this._currentGroup.withValidation(name, validator, message);\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 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 createTabGroupDescriptor(tabGroup: FieldTabGroupDescriptor<T>): this {\n this._currentTabGroup = tabGroup;\n this._tabs.push(tabGroup);\n return this;\n }\n\n private createDefaultGroup() {\n this.createDefaultTabGroup();\n if (this._currentTabGroup?.fields.length === 0) {\n this.createFieldGroup(EditorDescriptor.defaultGroupName, null);\n }\n }\n\n private createDefaultTabGroup() {\n if (this._tabs.length === 0) {\n this.createTabGroup(EditorDescriptor.defaultGroupName, 'general.general');\n }\n }\n}\n","import {Type} from '@angular/core';\n\nexport class MngFormEditorSubmitEvent<T> {\n public success = true;\n\n constructor(public readonly formItem: T) {}\n}\n\nexport enum MngFormFieldEventTypeEnum {\n ComponentLifecycle = 'ComponentLifecycle',\n ValueChange = 'ValueChange',\n DataProvider = 'DataProvider',\n DialogLifecycle = 'DialogLifecycle',\n Other = 'Other'\n}\n\nexport class MngFormFieldEventComponentSubtype {\n public static readonly ON_INIT = 'Component.OnInit';\n public static readonly ON_VIEW_INIT = 'Component.OnViewInit';\n public static readonly ON_CONTENT_INIT = 'Component.OnContentInit';\n public static readonly ON_DESTROY = 'Component.OnDestroy';\n}\n\nexport class MngFormFieldEventDialogSubtype {\n public static readonly VISIBILITY = 'Dialog.Visibility';\n public static readonly TABLE_CAPTION_COMPONENT_INSTANCE = 'Dialog.MngTable.CaptionComponentInstance';\n public static readonly TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE = 'Dialog.MngTable.ColumnActionsComponentInstance';\n}\n\nexport interface MngFormFieldEventData<T, ET> {\n eventSubtype?: string;\n value?: T;\n formValue?: ET;\n [key: string]: any;\n}\n\nexport class MngFormFieldEvent<T, ET> {\n constructor(\n public readonly type: MngFormFieldEventTypeEnum,\n public readonly componentType: Type<any>,\n public readonly componentInstance: any,\n public readonly data: MngFormFieldEventData<T, ET> = {}\n ) {}\n}\n","import {Type} from '@angular/core';\nimport {AbstractControl, Validators} from '@angular/forms';\n\nimport {FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable, Subject, of} from 'rxjs';\n\nimport {MediusQueryParam, MediusQueryResult} from '../api/models';\nimport {MngFormFieldEvent, MngFormFieldEventData, MngFormFieldEventTypeEnum} from '../components/form/models';\nimport {ILookupDataProvider, ITableDataProvider, LookupDataProvider, TableviewDataProvider} from '../data-providers';\nimport {EnumValue} from '../models';\nimport {ClassType, EnumConstantType, EnumType, MngFieldAsyncValidator, MngFieldValidationMessage, MngFieldValidator} from '../types';\nimport {EnumUtil, I18nUtils, ModelUtil, TypeUtil} from '../utils';\nimport {ActionDescriptor, EditorDescriptor, FieldValidationDescriptor, TableDescriptor, TableviewDescriptor} from './';\nimport {FieldConfig, FieldLookupConfig, ILookupDescriptor} from './interfaces';\nimport {\n FieldGroupTypeEnum,\n FieldInputTypeEnum,\n FieldLookupTypeEnum,\n FieldManyEditorActionEnum,\n FieldManyEditorTypeEnum,\n FieldManyToManyEditorActionEnum,\n FieldManyToManyEditorTypeEnum,\n FieldSizeEnum\n} from './types';\n\nexport abstract class AGenericFieldDescriptor<ET> {\n protected readonly _editor: EditorDescriptor<ET>;\n protected _config: FieldConfig = {};\n\n protected constructor(editor: EditorDescriptor<ET>) {\n this._editor = editor;\n }\n\n public get editor() {\n return this._editor;\n }\n\n public get config() {\n return this._config;\n }\n\n public withConfig(config: FieldConfig): this {\n this._config = config;\n return this;\n }\n}\n\nexport abstract class AFieldDescriptor<T, ET> extends AGenericFieldDescriptor<ET> {\n protected readonly _property: string;\n protected _group?: AFieldGroupDescriptor<ET>;\n protected _label?: string | null;\n\n protected _placeholder?: string;\n protected _helpText?: string;\n\n protected _required = false;\n protected _requiredHideLabelMarker = false;\n protected _disabled = false;\n protected _defaultValue?: T;\n protected _getter?: (item: ET) => T;\n protected _setter?: (item: ET, value: T) => void;\n protected _validations: Array<FieldValidationDescriptor> = [];\n protected _asyncValidations: Array<FieldValidationDescriptor> = [];\n protected _requiredExpression?: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n protected _disabledExpression?: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n protected _hiddenExpression?: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n\n protected _className = '';\n protected _fieldClassName?: string;\n protected _labelClassName = '';\n protected _inputClassName = '';\n protected _size: FieldSizeEnum = FieldSizeEnum.Normal;\n\n protected readonly _eventsSubject = new Subject<MngFormFieldEvent<T, ET>>();\n\n protected constructor(editor: EditorDescriptor<ET>, property: string) {\n super(editor);\n this._property = property;\n this._label = I18nUtils.Type.getPropertyKey(this._editor.model.typeName, property);\n }\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 helpText() {\n return this._helpText;\n }\n\n public get required() {\n return this._required;\n }\n\n public get requiredHideLabelMarker() {\n return this._requiredHideLabelMarker;\n }\n\n public get disabled() {\n return this._disabled;\n }\n\n public get defaultValue() {\n return this._defaultValue;\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 validations() {\n return this._validations;\n }\n\n public get asyncValidations() {\n return this._asyncValidations;\n }\n\n public get requiredExpression() {\n return this._requiredExpression;\n }\n\n public get disabledExpression() {\n return this._disabledExpression;\n }\n\n public get hiddenExpression() {\n return this._hiddenExpression;\n }\n\n public get className() {\n return this._className;\n }\n\n public get fieldClassName() {\n return this._fieldClassName;\n }\n\n public get labelClassName() {\n return this._labelClassName;\n }\n\n public get inputClassName() {\n return this._inputClassName;\n }\n\n public get size() {\n return this._size;\n }\n\n public get isSizeSmall() {\n return this._size === FieldSizeEnum.Small;\n }\n\n public get isSizeLarge() {\n return this._size === FieldSizeEnum.Large;\n }\n\n public abstract copy(): AFieldDescriptor<T, ET>;\n\n public withLabel(label: string | null): 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 withHelpText(helpText: string): this {\n this._helpText = helpText;\n return this;\n }\n\n public withRequired(\n required = true,\n requiredExpression?: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>,\n hideLabelMarker = false\n ): this {\n this._required = required;\n if (requiredExpression) {\n this._requiredExpression = requiredExpression;\n }\n this._requiredHideLabelMarker = hideLabelMarker;\n return this;\n }\n\n public withDisabled(disabled = true, disabledExpression?: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>): this {\n this._disabled = disabled;\n if (disabledExpression) {\n this._disabledExpression = disabledExpression;\n }\n return this;\n }\n\n public withHidden(hiddenExpression: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>): this {\n this._hiddenExpression = hiddenExpression;\n return this;\n }\n\n public withDefaultValue(defaultValue: T): this {\n this._defaultValue = defaultValue;\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 withValidation(name: string, validator?: MngFieldValidator, message?: MngFieldValidationMessage): this {\n this._validations.push(new FieldValidationDescriptor(name, validator, message));\n return this;\n }\n\n public withAsyncValidation(name: string, asyncValidator?: MngFieldAsyncValidator, message?: MngFieldValidationMessage): this {\n this._asyncValidations.push(new FieldValidationDescriptor(name, asyncValidator, message));\n return this;\n }\n\n public withClassName(className: string, labelClassName = '', inputClassName = '', fieldClassName?: string): this {\n this._className = className;\n this._labelClassName = labelClassName;\n this._inputClassName = inputClassName;\n this._fieldClassName = fieldClassName;\n return this;\n }\n\n public withSize(size: FieldSizeEnum = FieldSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n public nextEvent(type: MngFormFieldEventTypeEnum, cmpType: Type<any>, cmpInstance: any, data?: MngFormFieldEventData<T, ET>) {\n this._eventsSubject.next(new MngFormFieldEvent(type, cmpType, cmpInstance, data));\n }\n\n public get events$() {\n return this._eventsSubject.asObservable();\n }\n\n protected copyFieldsTo(obj: AFieldDescriptor<T, ET>) {\n obj._label = this._label;\n obj._placeholder = this._placeholder;\n obj._helpText = this._helpText;\n obj._required = this._required;\n obj._disabled = this._disabled;\n obj._defaultValue = this._defaultValue;\n obj._requiredExpression = this._requiredExpression;\n obj._hiddenExpression = this._hiddenExpression;\n obj._disabledExpression = this._disabledExpression;\n obj._className = this._className;\n obj._size = this.size;\n obj._getter = this._getter;\n obj._setter = this._setter;\n obj._validations = this._validations;\n obj._asyncValidations = this._asyncValidations;\n }\n}\n\nexport class FieldInputDescriptor<ET> extends AFieldDescriptor<string | number | boolean | Date | File | File[], ET> {\n private _fieldType: FieldInputTypeEnum = FieldInputTypeEnum.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 private _numberUseGrouping = true;\n private _locale?: string;\n\n // currency specific properties\n private _currency?: string;\n private _currencyDisplay: 'symbol' | 'code' | 'name' = 'symbol';\n private _currencyFromProperty?: string;\n\n // radio specific properties\n private _radioOptions: Array<EnumValue<string | number | boolean | Date>> = [];\n\n // datepicker specific properties\n private _datePickerFormat?: string;\n private _datePickerMin?: Date;\n private _datePickerMax?: Date;\n private _datePickerShowTime = false;\n private _datePickerShowSeconds = true;\n\n // input specific properties\n private _maxLength?: number;\n private _minLength?: number;\n private _pattern?: string | RegExp;\n\n // mask specific properties\n private _mask?: string;\n private _slotChar?: string;\n\n // file specific properties\n private _fileMultiple = false;\n private _fileMaxFileSize = 500000;\n private _fileAccept?: string;\n private _fileOnSelectHandler?: (file: File[] | null, control: AbstractControl) => void;\n\n // custom component properties\n private _customComponentName?: string;\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 rows() {\n return this._rows;\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 numberStep() {\n return this._numberStep;\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 numberUseGrouping() {\n return this._numberUseGrouping;\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 get datePickerShowSeconds() {\n return this._datePickerShowSeconds;\n }\n\n public get maxLength() {\n return this._maxLength;\n }\n\n public get minLength() {\n return this._minLength;\n }\n\n public get pattern() {\n return this._pattern;\n }\n\n public get mask() {\n return this._mask;\n }\n\n public get slotChar() {\n return this._slotChar;\n }\n\n public get fileMultiple() {\n return this._fileMultiple;\n }\n\n public get fileMaxFileSize() {\n return this._fileMaxFileSize;\n }\n\n public get fileAccept() {\n return this._fileAccept;\n }\n\n public get fileOnSelectHandler() {\n return this._fileOnSelectHandler;\n }\n\n public get customComponentName() {\n return this._customComponentName;\n }\n\n public get locale() {\n return this._locale;\n }\n\n public get currency() {\n return this._currency;\n }\n\n public get currencyFromProperty() {\n return this._currencyFromProperty;\n }\n\n public get currencyDisplay() {\n return this._currencyDisplay;\n }\n\n public asHidden(): this {\n this._fieldType = FieldInputTypeEnum.Hidden;\n return this;\n }\n\n public asLabel(): this {\n this._fieldType = FieldInputTypeEnum.Label;\n return this;\n }\n\n public asText(): this {\n this._fieldType = FieldInputTypeEnum.Text;\n return this;\n }\n\n public asTextarea(rows = 3): this {\n this._fieldType = FieldInputTypeEnum.Textarea;\n this._rows = rows;\n return this;\n }\n\n public asNumber(): this {\n this._fieldType = FieldInputTypeEnum.Number;\n return this;\n }\n\n public asCurrency(currencyFromProperty?: string, currency?: string, currencyDisplay?: 'symbol' | 'code' | 'name'): this {\n this._fieldType = FieldInputTypeEnum.Currency;\n this._currencyFromProperty = currencyFromProperty;\n this._currency = currency ?? this._currency;\n this._currencyDisplay = currencyDisplay ?? this._currencyDisplay;\n return this.withNumberFractions(2, 2);\n }\n\n public asSwitch(): this {\n this._fieldType = FieldInputTypeEnum.Switch;\n return this;\n }\n\n public asRadio(options: Array<string | number>, optionsTitlePath?: string): this {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = options.map(o => <EnumValue<string | number>>{value: o, title: `${optionsTitlePath ? `${optionsTitlePath}.` : ''}${o}`});\n return this;\n }\n\n public asRadioFromEnum(enumType: EnumType, optionsTitlePath?: string | null, values?: Array<EnumConstantType>, nameAsValue = false): this {\n this._fieldType = FieldInputTypeEnum.Radio;\n if (typeof optionsTitlePath === 'undefined') {\n optionsTitlePath = TypeUtil.findEnumName(enumType);\n }\n this._radioOptions = Array.isArray(values)\n ? EnumUtil.fromValuesAsEnumValueArray(enumType, values, nameAsValue, optionsTitlePath ?? undefined)\n : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath ?? undefined);\n return this;\n }\n\n public asDatePicker(format?: string, min?: Date, max?: Date, showTime?: boolean, showSeconds?: boolean): this {\n this._fieldType = FieldInputTypeEnum.Datepicker;\n this._datePickerFormat = format;\n this._datePickerMin = min;\n this._datePickerMax = max;\n this._datePickerShowTime = showTime ?? false;\n this._datePickerShowSeconds = showSeconds ?? true;\n return this;\n }\n\n public asMask(mask: string, slotChar: string): this {\n this._fieldType = FieldInputTypeEnum.Mask;\n this._mask = mask;\n this._slotChar = slotChar;\n return this;\n }\n\n public asFile(multiple = false, maxFileSize = 500000, accept?: string): this {\n this._fieldType = FieldInputTypeEnum.File;\n this._fileMultiple = multiple;\n this._fileMaxFileSize = maxFileSize;\n this._fileAccept = accept;\n return this;\n }\n\n public asCustomComponent(customComponentName: string): this {\n this._fieldType = FieldInputTypeEnum.Custom;\n this._customComponentName = customComponentName;\n return this;\n }\n\n public withNumberValidation(min?: number, max?: number, step?: number): this {\n this._numberStep = step ?? this._numberStep;\n this._numberMin = min ?? this._numberMin ?? Number.MIN_SAFE_INTEGER;\n this._numberMax = max ?? this._numberMax ?? Number.MAX_SAFE_INTEGER;\n return this;\n }\n\n public withLocale(locale: string): this {\n this._locale = locale;\n return this;\n }\n\n public withNumberFractions(min?: number, max?: number) {\n this._numberMinFractionDigits = min;\n this._numberMaxFractionDigits = max;\n return this;\n }\n\n public withNumberGrouping(useGrouping = true): this {\n this._numberUseGrouping = useGrouping;\n return this;\n }\n\n public withTextValidation(minLength?: number, maxLength?: number, pattern?: string | RegExp): this {\n this._minLength = minLength;\n this._maxLength = maxLength;\n this._pattern = pattern;\n return this;\n }\n\n public withTextValidationEmail(): this {\n if (this.fieldType === FieldInputTypeEnum.Text) {\n this.withValidation('email', Validators.email);\n }\n return this;\n }\n\n public withFileOnSelectHandler(fn: (file: File[] | null, control: AbstractControl) => void) {\n this._fileOnSelectHandler = fn;\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._numberUseGrouping = this._numberUseGrouping;\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 field._datePickerShowSeconds = this._datePickerShowSeconds;\n field._maxLength = this._maxLength;\n field._minLength = this._minLength;\n field._pattern = this._pattern;\n field._mask = this._mask;\n field._slotChar = this._slotChar;\n field._fileMultiple = this._fileMultiple;\n field._fileMaxFileSize = this._fileMaxFileSize;\n field._fileAccept = this._fileAccept;\n field._fileOnSelectHandler = this._fileOnSelectHandler;\n field._customComponentName = this._customComponentName;\n field._locale = this._locale;\n field._currency = this._currency;\n field._currencyDisplay = this._currencyDisplay;\n field._currencyFromProperty = this._currencyFromProperty;\n return field;\n }\n}\n\nexport class FieldLookupDescriptor<T, ET> extends AFieldDescriptor<T, ET> implements ILookupDescriptor<T> {\n protected readonly _modelType: ClassType<T> | null;\n protected _lookupType: FieldLookupTypeEnum = FieldLookupTypeEnum.Dropdown;\n protected _itemsLabelProperty?: string;\n protected _itemsLabelTranslate = false;\n protected _itemsValueProperty?: string;\n protected _itemsDisabledProperty?: string;\n protected _dataKeyProperty?: string;\n protected _dataProvider?: ILookupDataProvider<T, any>;\n\n protected _dropdownClassName = 'mng-filter-lookup-dropdown';\n\n protected _autocompleteOpenOnFocus = false;\n protected _autocompleteInlineSearch = false;\n\n protected _dialogTableDescriptor?: TableDescriptor<T>;\n protected _dialogTableDataProvider?: ITableDataProvider<T, any>;\n\n constructor(editor: EditorDescriptor<ET>, property: string, modelType: ClassType<T> | null) {\n super(editor, property);\n this._modelType = modelType;\n ModelUtil.trySetLookupItemsProperties(this);\n }\n\n public get lookupType() {\n return this._lookupType;\n }\n\n public get itemsLabelProperty() {\n return this._itemsLabelProperty;\n }\n\n public get itemsLabelTranslate() {\n return this._itemsLabelTranslate;\n }\n\n public get itemsValueProperty() {\n return this._itemsValueProperty;\n }\n\n public get itemsDisabledProperty() {\n return this._itemsDisabledProperty;\n }\n\n public get dataKeyProperty() {\n return this._dataKeyProperty;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get autocompleteOpenOnFocus() {\n return this._autocompleteOpenOnFocus;\n }\n\n public get autocompleteInlineSearch() {\n return this._autocompleteInlineSearch;\n }\n\n public get dropdownClassName() {\n return this._dropdownClassName;\n }\n\n public get modelType() {\n return this._modelType;\n }\n\n public get dialogTableDescriptor() {\n return this._dialogTableDescriptor;\n }\n\n public get dialogTableDataProvider() {\n return this._dialogTableDataProvider;\n }\n\n public withItemsLabelProperty(itemsLabelProperty: string, translate = false): this {\n this._itemsLabelProperty = itemsLabelProperty;\n this._itemsLabelTranslate = translate;\n return this;\n }\n\n public withItemsValueProperty(itemsValueProperty: string): this {\n this._itemsValueProperty = itemsValueProperty;\n this._dataKeyProperty = undefined;\n return this;\n }\n\n public withItemsDisabledProperty(itemsDisabledProperty: string): this {\n this._itemsDisabledProperty = itemsDisabledProperty;\n return this;\n }\n\n public withDataKeyProperty(property: string): this {\n this._dataKeyProperty = property;\n this._itemsValueProperty = undefined;\n return this;\n }\n\n public withLookup<S>(lookup: (queryParam?: MediusQueryParam, 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 override withConfig(config: FieldLookupConfig): this {\n return super.withConfig(config);\n }\n\n public asAutocomplete(openOnFocus = false, inlineSearch = false): this {\n this._lookupType = FieldLookupTypeEnum.Autocomplete;\n this._autocompleteOpenOnFocus = openOnFocus;\n this._autocompleteInlineSearch = inlineSearch;\n return this;\n }\n\n public asDialog(lookupTableDescriptor: TableDescriptor<T>, tableDataProvider?: ITableDataProvider<T, any>): this {\n this._lookupType = FieldLookupTypeEnum.Dialog;\n this._dialogTableDescriptor = lookupTableDescriptor;\n this._dialogTableDataProvider = tableDataProvider;\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._lookupType = this._lookupType;\n field._itemsLabelProperty = this._itemsLabelProperty;\n field._itemsLabelTranslate = this._itemsLabelTranslate;\n field._itemsValueProperty = this._itemsValueProperty;\n field._itemsDisabledProperty = this._itemsDisabledProperty;\n field._dataKeyProperty = this._dataKeyProperty;\n field._dataProvider = this._dataProvider;\n field._dropdownClassName = this._dropdownClassName;\n field._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;\n field._autocompleteInlineSearch = this._autocompleteInlineSearch;\n field._dialogTableDescriptor = this._dialogTableDescriptor;\n return field;\n }\n}\n\nexport class FieldLookupEnumDescriptor<ET> extends FieldLookupDescriptor<EnumValue<string | number>, ET> {\n private readonly _enumType: EnumType;\n private readonly _optionEnumValues: EnumValue<string | number>[];\n private readonly _nameAsValue: boolean = false;\n\n constructor(editor: EditorDescriptor<ET>, property: string, enumType: EnumType, options?: Array<EnumConstantType>, nameAsValue = false, optionsTitlePath?: string | null) {\n super(editor, property, null);\n this._enumType = enumType;\n this._nameAsValue = nameAsValue;\n if (typeof optionsTitlePath === 'undefined') {\n optionsTitlePath = TypeUtil.findEnumName(enumType);\n }\n this._optionEnumValues = Array.isArray(options)\n ? EnumUtil.fromValuesAsEnumValueArray(enumType, options, nameAsValue, optionsTitlePath ?? undefined)\n : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath ?? undefined);\n const dataProvider = new LookupDataProvider<EnumValue<string | number>, any>(null).withLookup(() => of(this._optionEnumValues));\n this.withLookupDataProvider(dataProvider);\n this.withItemsLabelProperty('title', optionsTitlePath !== null);\n this.withItemsValueProperty('value');\n this.withItemsDisabledProperty('disabled');\n }\n\n public get enumType() {\n return this._enumType;\n }\n\n public withDisabledOptions(...disabledOptions: Array<EnumConstantType>): this {\n for (const disabledOption of disabledOptions) {\n const disabledOptionValue = this._nameAsValue ? EnumUtil.getConstantName(this._enumType, disabledOption) : disabledOption;\n if (disabledOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === disabledOptionValue);\n if (option) {\n option.disabled = true;\n }\n }\n }\n return this;\n }\n\n public withDefaultValueEnum(defaultValue: EnumConstantType): this {\n const defaultOptionValue = this._nameAsValue ? EnumUtil.getConstantName(this._enumType, defaultValue) : defaultValue;\n if (defaultOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === defaultOptionValue);\n if (option) {\n this.withDefaultValue(this._itemsValueProperty ? option[this._itemsValueProperty as keyof object] : option);\n }\n }\n return this;\n }\n\n public override asAutocomplete(openOnFocus = true): this {\n super.asAutocomplete(openOnFocus, true);\n return this;\n }\n\n public override copy(): FieldLookupEnumDescriptor<ET> {\n const field = new FieldLookupEnumDescriptor<ET>(this._editor, this._property, this._enumType, []);\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._itemsLabelProperty = this._itemsLabelProperty;\n field._itemsValueProperty = this._itemsValueProperty;\n field._itemsDisabledProperty = this._itemsDisabledProperty;\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 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: FieldManyToManyEditorTypeEnum = FieldManyToManyEditorTypeEnum.DialogTableMultiselect;\n private _lookupTableDataProvider: ITableDataProvider<T, any> | null = null;\n private _actions: Array<FieldManyToManyEditorActionEnum> = [];\n private _hasLookupExcludeValues = false;\n private _excludeFilterProperty = '';\n private _excludeValueProperty = '';\n\n constructor(editor: EditorDescriptor<ET>, property: string, mainTableDescriptor: TableDescriptor<T>, lookupTableDescriptor: TableDescriptor<T>) {\n super(editor, property);\n this._mainTableDescriptor = mainTableDescriptor;\n this._lookupTableDescriptor = lookupTableDescriptor;\n this._actions.push(FieldManyToManyEditorActionEnum.Add, FieldManyToManyEditorActionEnum.Delete);\n }\n\n public get fieldType() {\n return this._fieldType;\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 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 get mainTableDescriptor() {\n return this._mainTableDescriptor;\n }\n\n public get lookupTableDescriptor() {\n return this._lookupTableDescriptor;\n }\n\n public withLookup<S>(getAll: (queryParam: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>>, serviceType?: Type<S>): this {\n const dataProvider = new TableviewDataProvider<T, S>(this._mainTableDescriptor.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<FieldManyToManyEditorActionEnum> = []): this {\n this.actions.push(...actions);\n return this;\n }\n\n public withLookupExclude(filterProperty: string, valueProperty: string, hasLookupExclude = 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._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 class FieldManyEditorDescriptor<T, ET> extends AFieldDescriptor<T, ET> {\n private readonly _tableviewDescriptor: TableviewDescriptor<T>;\n private _fieldType: FieldManyEditorTypeEnum = FieldManyEditorTypeEnum.DialogEditor;\n private _fieldActions: Array<FieldManyEditorActionEnum> = [];\n private _actions: Array<ActionDescriptor<T>> = [];\n\n constructor(editor: EditorDescriptor<ET>, property: string, tableviewDescriptor: TableviewDescriptor<T>) {\n super(editor, property);\n // this._modelType = modelType;\n this._tableviewDescriptor = tableviewDescriptor;\n this._fieldActions.push(FieldManyEditorActionEnum.View, FieldManyEditorActionEnum.Add, FieldManyEditorActionEnum.Edit, FieldManyEditorActionEnum.Delete);\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get fieldActions() {\n return this._fieldActions;\n }\n\n public get actions() {\n return this._actions;\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 withFieldAction(action: FieldManyEditorActionEnum): this {\n this._fieldActions.push(action);\n return this;\n }\n\n public withFieldActions(actions: FieldManyEditorActionEnum[]): this {\n this._fieldActions = actions;\n return this;\n }\n\n public withAction(action: ActionDescriptor<T>): this {\n this._actions.push(action);\n return this;\n }\n\n public copy(): FieldManyEditorDescriptor<T, ET> {\n const field = new FieldManyEditorDescriptor(this._editor, this._property, this._tableviewDescriptor.copy());\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._fieldActions = this._fieldActions.map(a => a);\n return field;\n }\n}\n\nexport abstract class AFieldGroupDescriptor<ET> extends AGenericFieldDescriptor<ET> {\n protected readonly _name: string;\n protected readonly _default: boolean;\n protected _title?: string;\n protected _fields: AGenericFieldDescriptor<ET>[] = [];\n protected _validations: Array<FieldValidationDescriptor> = [];\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 public get title() {\n return this._title;\n }\n\n abstract get fields(): AGenericFieldDescriptor<ET>[];\n\n public get validations() {\n return this._validations;\n }\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 abstract groupName(): string;\n\n abstract addField(field: AGenericFieldDescriptor<ET>): this;\n\n abstract copy(): AFieldGroupDescriptor<ET>;\n\n public withTitle(title: string): this {\n this._title = title;\n return this;\n }\n\n public withValidation(name: string, validator?: MngFieldValidator, message?: MngFieldValidationMessage) {\n this._validations.push(new FieldValidationDescriptor(name, validator, message));\n return this;\n }\n}\n\nexport class FieldTabGroupDescriptor<ET> extends AFieldGroupDescriptor<ET> {\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 private _type = FieldGroupTypeEnum.Fieldset;\n\n constructor(editor: EditorDescriptor<ET>, name: string) {\n super(editor, name);\n if (this._default) {\n this.asLogical();\n }\n }\n\n public get type() {\n return this._type;\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 asLogical(): this {\n this._type = FieldGroupTypeEnum.Logical;\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._type = this._type;\n group._title = this._title;\n group._fields = this.fields.map(f => f.copy());\n return group;\n }\n}\n","import {FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable} from 'rxjs';\n\nimport {MngFieldAsyncValidator, MngFieldValidationMessage, MngFieldValidator} from '../types';\n\nexport class FieldValidationDescriptor {\n private readonly _name: string;\n private readonly _validator?: MngFieldValidator | MngFieldAsyncValidator;\n private readonly _message?: MngFieldValidationMessage;\n private readonly _options?: {errorPath: string};\n\n constructor(\n name: string,\n validator?: MngFieldValidator | MngFieldAsyncValidator,\n message?: string | ((error: any, field: FormlyFieldConfig) => string | Observable<string>),\n options?: {errorPath: string}\n ) {\n this._name = name;\n this._validator = validator;\n this._message = message;\n this._options = options;\n }\n\n public get name(): string {\n return this._name;\n }\n\n public get validator() {\n return this._validator;\n }\n\n public get message() {\n return this._message;\n }\n\n public get options() {\n return this._options;\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 {Type} from '@angular/core';\n\nimport {IColumnValueComponent} from '../models';\nimport {ClassType, EnumType} from '../types';\nimport {ModelUtil} from '../utils';\nimport {ColumnDescriptor} from './column.descriptor';\nimport {ModelDescriptor} from './model.descriptor';\nimport {TableFilterDisplayEnum, TablePaginationModeEnum, TableSizeEnum} from './types';\n\nexport class TableDescriptor<T> {\n private readonly _model: ModelDescriptor<T>;\n private _filterDisplay: TableFilterDisplayEnum = TableFilterDisplayEnum.Menu;\n private _paginationMode: TablePaginationModeEnum = TablePaginationModeEnum.Pagination;\n private _rowsPerPageOptions = [25, 50, 100];\n private _defaultNumRows = this._rowsPerPageOptions[0];\n private _columns: Array<ColumnDescriptor<any, T>> = [];\n private _title?: string;\n private _hideHeader = false;\n private _dataKeyProperty?: string;\n private _hasDefaultSort = false;\n private _defaultSortProperty: string[] = [];\n private _defaultSortAsc: boolean[] = [];\n\n // visual\n private _className = '';\n private _size: TableSizeEnum = TableSizeEnum.Large;\n private _tableFullHeightOffset?: number;\n private _rowHeight?: number;\n private _hasHover = true;\n private _hasGridlines = false;\n\n constructor(modelType: ClassType<T>, idProperty?: string, titleProperty?: string) {\n this._model = new ModelDescriptor<T>(modelType, idProperty, titleProperty);\n this._dataKeyProperty = idProperty ?? ModelUtil.findIdAttribute(modelType) ?? undefined;\n }\n\n public get filterDisplay() {\n return this._filterDisplay;\n }\n\n public get paginationMode() {\n return this._paginationMode;\n }\n\n get rowsPerPageOptions(): number[] {\n return this._rowsPerPageOptions;\n }\n\n get defaultNumRows(): number {\n return this._defaultNumRows;\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 hideHeader() {\n return this._hideHeader;\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() {\n return this._defaultSortProperty;\n }\n\n public get defaultSortAsc() {\n return this._defaultSortAsc;\n }\n\n public get model() {\n return this._model;\n }\n\n public get className() {\n return this._className;\n }\n\n public get size() {\n return this._size;\n }\n\n public get tableFullHeightOffset() {\n return this._tableFullHeightOffset;\n }\n\n public get rowHeight() {\n return this._rowHeight;\n }\n\n public get hasHover() {\n return this._hasHover;\n }\n\n public get hasGridlines() {\n return this._hasGridlines;\n }\n\n public addColumnDescriptor<CT>(column: ColumnDescriptor<CT, T>): TableDescriptor<T> {\n this._columns.push(column);\n return this;\n }\n\n public addColumn(property: string): ColumnDescriptor<string, T> {\n const column = new ColumnDescriptor<string, T>(this, property);\n this._columns.push(column);\n return column;\n }\n\n public addColumnNumber(property: string, displayFormat?: string): ColumnDescriptor<number, T> {\n const column = new ColumnDescriptor<number, T>(this, property);\n column.asNumber(displayFormat);\n this._columns.push(column);\n return column;\n }\n\n public addColumnDate(property: string, displayFormat?: string): ColumnDescriptor<Date, T> {\n const column = new ColumnDescriptor<Date, T>(this, property);\n column.asDate(displayFormat);\n this._columns.push(column);\n return column;\n }\n\n public addColumnBoolean(property: string, yes?: string, no?: string, asIcon = false): ColumnDescriptor<boolean, T> {\n const column = new ColumnDescriptor<boolean, T>(this, property);\n column.asBoolean(yes, no, asIcon);\n this._columns.push(column);\n return column;\n }\n\n public addColumnEnum(property: string, enumType: EnumType, nameAsValue = false, titlePath?: string | null): ColumnDescriptor<EnumType, T> {\n const column = new ColumnDescriptor<EnumType, T>(this, property);\n column.asEnum(enumType, nameAsValue, titlePath);\n this._columns.push(column);\n return column;\n }\n\n public addColumnCustomComponent(property: string, customComponentType: Type<IColumnValueComponent<T>>): ColumnDescriptor<any, T> {\n const column = new ColumnDescriptor<any, T>(this, property);\n column.asCustomComponent(customComponentType);\n this._columns.push(column);\n return column;\n }\n\n public withFilterDisplay(filterDisplayType: TableFilterDisplayEnum): this {\n this._filterDisplay = filterDisplayType;\n return this;\n }\n\n public withPaginationMode(paginationMode: TablePaginationModeEnum): this {\n this._paginationMode = paginationMode;\n return this;\n }\n\n public withRowsPerPage(rows: number, options?: Array<number>) {\n if (options) {\n this._rowsPerPageOptions = options;\n }\n if (!this._rowsPerPageOptions.includes(rows)) {\n this._defaultNumRows = this._rowsPerPageOptions[0];\n } else {\n this._defaultNumRows = rows;\n }\n return this;\n }\n\n public withTitle(title: string): TableDescriptor<T> {\n this._title = title;\n return this;\n }\n\n public withHideHeader(hideHeader = true) {\n this._hideHeader = hideHeader;\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 = true): TableDescriptor<T> {\n this._hasDefaultSort = true;\n this._defaultSortProperty.push(property);\n this._defaultSortAsc.push(asc);\n return this;\n }\n\n public withClassName(className: string): this {\n this._className = className;\n return this;\n }\n\n public withSize(size: TableSizeEnum = TableSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n public withTableFullHeightOffset(tableFullHeightOffset: number): TableDescriptor<T> {\n this._tableFullHeightOffset = tableFullHeightOffset;\n return this;\n }\n\n public withRowHeight(rowHeight: number): TableDescriptor<T> {\n this._rowHeight = rowHeight;\n return this;\n }\n\n public withHover(hover: boolean): this {\n this._hasHover = hover;\n return this;\n }\n\n public withGridlines(gridlines: boolean): this {\n this._hasGridlines = gridlines;\n return this;\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._hideHeader = this._hideHeader;\n descriptor._dataKeyProperty = this._dataKeyProperty;\n descriptor._hasDefaultSort = this._hasDefaultSort;\n descriptor._defaultSortProperty = this._defaultSortProperty.map(p => p);\n descriptor._defaultSortAsc = this._defaultSortAsc.map(p => p);\n descriptor._filterDisplay = this._filterDisplay;\n descriptor._className = this._className;\n descriptor._size = this._size;\n descriptor._tableFullHeightOffset = this._tableFullHeightOffset;\n descriptor._rowHeight = this._rowHeight;\n descriptor._hasHover = this._hasHover;\n descriptor._hasGridlines = this._hasGridlines;\n return descriptor;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {FieldValidatorFn} from '@ngx-formly/core/lib/models/config';\n\nimport {IColumnValueComponent} from '../models';\nimport {ClassType, EnumConstantType, EnumType} from '../types';\nimport {\n AFieldDescriptor,\n ColumnDescriptor,\n EditorDescriptor,\n FieldInputDescriptor,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor,\n ModelDescriptor,\n TableDescriptor\n} from './';\nimport {TableviewTypeEnum} from './types';\n\nexport class TableviewDescriptor<T> {\n private readonly _model: ModelDescriptor<T>;\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, TableviewTypeEnum.View);\n this._viewEditor.withDisabled();\n this._addEditor = new EditorDescriptor<T>(modelType, idProperty, titleProperty, TableviewTypeEnum.Add);\n this._editEditor = new EditorDescriptor<T>(modelType, idProperty, titleProperty, TableviewTypeEnum.Edit);\n this._tableTitle = `${this._model.typeName}.name`;\n }\n\n private _table: TableDescriptor<T>;\n\n public get table() {\n return this._table;\n }\n\n private _viewEditor: EditorDescriptor<T>;\n\n public get viewEditor() {\n return this._viewEditor;\n }\n\n private _addEditor: EditorDescriptor<T>;\n\n public get addEditor() {\n return this._addEditor;\n }\n\n private _editEditor: EditorDescriptor<T>;\n\n public get editEditor() {\n return this._editEditor;\n }\n\n private _tableTitle: string;\n\n public get tableTitle() {\n return this._tableTitle;\n }\n\n public get model() {\n return this._model;\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: FieldValidatorFn): this {\n this._viewEditor.addValidation(name, expression);\n this._addEditor.addValidation(name, expression);\n this._editEditor.addValidation(name, expression);\n return this;\n }\n\n public addColumnDescriptor<CT>(column: ColumnDescriptor<CT, T>): TableDescriptor<T> {\n return this._table.addColumnDescriptor<CT>(column);\n }\n\n public addColumn(property: string): ColumnDescriptor<string, T> {\n return this._table.addColumn(property);\n }\n\n public addColumnNumber(property: string, displayFormat?: string): ColumnDescriptor<number, T> {\n return this._table.addColumnNumber(property, displayFormat);\n }\n\n public addColumnDate(property: string, displayFormat?: string): ColumnDescriptor<Date, T> {\n return this._table.addColumnDate(property, displayFormat);\n }\n\n public addColumnBoolean(property: string, yes?: string, no?: string, asIcon = false): ColumnDescriptor<boolean, T> {\n return this._table.addColumnBoolean(property, yes, no, asIcon);\n }\n\n public addColumnEnum(property: string, enumType: EnumType, nameAsValue = false, titlePath?: string | null): ColumnDescriptor<EnumType, T> {\n return this._table.addColumnEnum(property, enumType, nameAsValue, titlePath);\n }\n\n public addColumnCustomComponent(property: string, customComponentType: Type<IColumnValueComponent<T>>): ColumnDescriptor<any, T> {\n return this._table.addColumnCustomComponent(property, customComponentType);\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(\n property: string,\n enumType: EnumType,\n options?: Array<EnumConstantType>,\n nameAsValue = false,\n optionsTitlePath?: string | null\n ): FieldLookupEnumDescriptor<T> {\n const field = this._viewEditor.addFieldLookupEnum(property, enumType, options, nameAsValue, optionsTitlePath);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyEditor<FT>(property: string, tableviewDescriptor: TableviewDescriptor<FT>): FieldManyEditorDescriptor<FT, T> {\n const field = this._viewEditor.addFieldManyEditor(property, tableviewDescriptor);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyToManyEditor<FT>(\n property: string,\n mainTableDescriptor: TableDescriptor<FT>,\n lookupTableDescriptor: TableDescriptor<FT>\n ): FieldManyToManyEditorDescriptor<FT, T> {\n const field = this._viewEditor.addFieldManyToManyEditor(property, 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","import {AbstractControl, ValidationErrors} from '@angular/forms';\n\nimport {FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {\n AFieldDescriptor,\n EditorDescriptor,\n FieldGroupDescriptor,\n FieldInputDescriptor,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor,\n FieldTabGroupDescriptor,\n FieldValidationDescriptor\n} from '../descriptors';\nimport {FieldInputTypeEnum, FieldLookupTypeEnum} from '../descriptors/types';\nimport {MngFieldAsyncValidator} from '../types';\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) {\n tabField.templateOptions!.label = tab.title;\n }\n tabField.fieldGroup!.push(...EditorFormlyUtil.createFormlyGroupType(tab.fields));\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) {\n groupField.templateOptions!.label = group.title;\n }\n groupField.fieldGroup!.push(...EditorFormlyUtil.createFormlyFields(group));\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: FormlyFieldConfig = {\n fieldGroupClassName: 'p-fluid formgrid grid',\n fieldGroup: fields\n };\n\n EditorFormlyUtil.addValidationsToFormlyField(wrapperGroup, descriptor.validations);\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 };\n\n let className = descriptor.className;\n if (!className) {\n // assign default field width through entire row\n className = 'col-12';\n }\n field.className = className;\n\n field.templateOptions!['descriptor'] = descriptor;\n if (descriptor instanceof FieldInputDescriptor) {\n switch (descriptor.fieldType) {\n case FieldInputTypeEnum.Hidden:\n break;\n case FieldInputTypeEnum.Label:\n field.type = 'label';\n delete field.key;\n break;\n case FieldInputTypeEnum.Textarea:\n field.type = 'textarea';\n break;\n case FieldInputTypeEnum.Number:\n field.type = 'number';\n field.templateOptions!.min = descriptor.numberMin;\n field.templateOptions!.max = descriptor.numberMax;\n break;\n case FieldInputTypeEnum.Currency:\n field.type = 'currency';\n field.templateOptions!.min = descriptor.numberMin;\n field.templateOptions!.max = descriptor.numberMax;\n break;\n case FieldInputTypeEnum.Switch:\n field.type = 'switch';\n break;\n case FieldInputTypeEnum.Radio:\n field.type = 'radio';\n break;\n case FieldInputTypeEnum.Datepicker:\n field.type = 'datepicker';\n break;\n case FieldInputTypeEnum.Mask:\n field.type = 'mask';\n break;\n case FieldInputTypeEnum.File:\n field.type = 'file';\n break;\n case FieldInputTypeEnum.Custom:\n field.type = descriptor.customComponentName;\n break;\n default:\n field.type = 'input';\n field.templateOptions!.minLength = descriptor.minLength;\n field.templateOptions!.maxLength = descriptor.maxLength;\n field.templateOptions!.pattern = descriptor.pattern;\n break;\n }\n } else if (descriptor instanceof FieldLookupEnumDescriptor) {\n field.type = 'enum';\n } else if (descriptor instanceof FieldLookupDescriptor) {\n switch (descriptor.lookupType) {\n case FieldLookupTypeEnum.Autocomplete:\n field.type = 'autocomplete';\n break;\n case FieldLookupTypeEnum.Dialog:\n field.type = 'dialog';\n break;\n case FieldLookupTypeEnum.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) {\n field.templateOptions!.label = descriptor.label;\n }\n\n if (descriptor.requiredExpression) {\n field.expressionProperties!['templateOptions.required'] = descriptor.requiredExpression;\n }\n if (descriptor.required) {\n field.templateOptions!.required = true;\n if (descriptor.requiredHideLabelMarker) {\n field.templateOptions!['hideRequiredMarker'] = true;\n }\n }\n\n if (descriptor.hiddenExpression) {\n field.expressionProperties!['hide'] = descriptor.hiddenExpression;\n }\n\n if (descriptor.disabledExpression) {\n field.expressionProperties!['templateOptions.disabled'] = descriptor.disabledExpression;\n } else if (descriptor.disabled) {\n field.templateOptions!.disabled = true;\n } else {\n field.expressionProperties!['templateOptions.disabled'] = 'formState.disabled';\n }\n\n if (typeof descriptor.defaultValue !== 'undefined') {\n field.defaultValue = descriptor.defaultValue;\n }\n\n EditorFormlyUtil.addValidationsToFormlyField(field, descriptor.validations);\n EditorFormlyUtil.addAsyncValidationsToFormlyField(field, descriptor.asyncValidations);\n\n return field;\n }\n\n public static addValidationsToFormlyField(config: FormlyFieldConfig, validations: Array<FieldValidationDescriptor>) {\n if (!config.validators) {\n config.validators = {};\n }\n\n for (const validation of validations) {\n if (typeof validation.validator === 'function') {\n config.validators[validation.name] = {\n expression: (\n control: AbstractControl,\n field: FormlyFieldConfig,\n options?: {\n [id: string]: any;\n }\n ) => {\n const validatorRes = validation.validator!(control, field, options);\n // formly validator only excepts true/false for validation\n // map possible angular validator result to true/false\n return typeof validatorRes === 'boolean' ? validatorRes : validatorRes === null;\n }\n };\n if (typeof validation.message === 'function') {\n config.validators[validation.name].message = validation.message;\n }\n } else {\n if (!Array.isArray(config.validators.validation)) {\n config.validators.validation = [];\n }\n config.validators.validation.push(validation.name);\n }\n }\n }\n\n public static addAsyncValidationsToFormlyField(config: FormlyFieldConfig, asyncValidations: Array<FieldValidationDescriptor>) {\n if (!config.asyncValidators) {\n config.asyncValidators = {};\n }\n\n for (const validation of asyncValidations) {\n if (typeof validation.validator === 'function') {\n config.asyncValidators[validation.name] = {\n expression: (\n control: AbstractControl,\n field: FormlyFieldConfig,\n options?: {\n [id: string]: any;\n }\n ) => {\n const validator = <MngFieldAsyncValidator>validation.validator;\n\n const validatorObs: Observable<ValidationErrors | boolean | null> = validator(control, field, options);\n // formly validator only excepts true/false for validation\n // map possible angular validator result to true/false\n return validatorObs.pipe(map(value => (typeof value === 'boolean' ? value : value === null)));\n }\n };\n if (typeof validation.message === 'function') {\n config.asyncValidators[validation.name].message = validation.message;\n }\n } else {\n if (!Array.isArray(config.asyncValidators.asyncValidation)) {\n config.asyncValidators.asyncValidation = [];\n }\n config.asyncValidators.asyncValidation.push(validation.name);\n }\n }\n }\n}\n","import {EnumValue} from '../models';\nimport {EnumConstantType, EnumType} from '../types';\n\nexport class EnumUtil {\n /**\n * Returns array of names for constants in enum.\n * @param enumType Enum object.\n */\n public static getConstantNames(enumType: EnumType): Array<string> {\n return EnumUtil.getConstantNamesFromEnumObject(enumType);\n }\n\n /**\n * Returns array of names for constants in enum.\n * @param enumObj Enum object.\n */\n public static getConstantNamesFromEnumObject(enumObj: object): Array<string> {\n // in number enum, the numbers are also represented in objects and should be filtered out\n return Object.keys(enumObj).filter(v => isNaN(+v));\n }\n\n /**\n * Returns array of string values for constants in enum.\n * @param enumType Enum object.\n */\n public static getConstantValuesAsString(enumType: EnumType): Array<string> {\n return Object.keys(enumType).map(v => enumType[v as keyof object] as string);\n }\n\n /**\n * Returns array of number values for constants in enum.\n * @param enumType Enum object.\n */\n public static getConstantValuesAsNumber(enumType: EnumType): Array<number> {\n return Object.keys(enumType)\n .filter(v => !isNaN(+v))\n .map(v => +v);\n }\n\n /**\n * Returns array of type EnumValue for all constants in enum.\n * @param enumType Enum object.\n * @param nameAsValue If use name of constant as value (optional, default: false).\n * @param titlePath Base path for title to use as translation (optional).\n */\n public static fromConstantsAsEnumValueArray(enumType: EnumType, nameAsValue = false, titlePath?: string) {\n return EnumUtil.getConstantNames(enumType).map(\n n => <EnumValue<string | number>>{name: n, title: `${titlePath ? `${titlePath}.` : ''}${n}`, value: nameAsValue ? n : enumType[n]}\n );\n }\n\n /**\n * Returns array of type EnumValue for provided values in enum.\n * @param enumType Enum object.\n * @param nameAsValue If use name of constant as value (optional, default: false).\n * @param titlePath Base path for title to use as translation (optional).\n */\n public static fromValuesAsEnumValueArray(enumType: EnumType, values: Array<EnumConstantType>, nameAsValue = false, titlePath?: string) {\n return values.map(v => {\n const k = EnumUtil.getConstantName(enumType, v);\n return {name: k, title: `${titlePath ? `${titlePath}.` : ''}${k}`, value: nameAsValue ? k : v} as EnumValue<string | number>;\n });\n }\n\n /**\n * Gets constant name for value.\n * @param enumType Enum object.\n * @param value Value of enum constant.\n */\n public static getConstantName(enumType: EnumType, value: EnumConstantType): string | null {\n if (typeof value === 'string') {\n return EnumUtil.getConstantNames(enumType).find(c => enumType[c] === value) ?? null;\n } else {\n return typeof enumType[value] !== 'undefined' ? (enumType[value] as string) : null;\n }\n }\n\n /**\n * Gets constant name for value.\n * @param enumObj Enum object.\n * @param value Value of enum constant.\n */\n public static getConstantNameFromEnumObject(enumObj: object, value: EnumConstantType): string | null {\n const enumObjAny = enumObj as any;\n if (typeof value === 'string') {\n return EnumUtil.getConstantNamesFromEnumObject(enumObj).find(c => enumObjAny[c] === value) ?? null;\n } else {\n return typeof enumObjAny[value] !== 'undefined' ? (enumObjAny[value] as string) : null;\n }\n }\n}\n","export const typeNameDecoratorPropertyName = 'typeName';\n\nexport function TypeName(typeName: string): ClassDecorator {\n return function (target: any) {\n target[typeNameDecoratorPropertyName] = typeName;\n };\n}\n\nexport const enumNameDecoratorPropertyName = 'enumName';\n\nexport function EnumName(typeName: string): ClassDecorator {\n return function (target: any) {\n target[enumNameDecoratorPropertyName] = typeName;\n };\n}\n","import 'reflect-metadata';\n\nimport {ClassType, EnumType, enumNameDecoratorPropertyName, typeNameDecoratorPropertyName} from '../types';\n\nexport class TypeUtil {\n /**\n * Defines type name decorator.\n * @param targetType class.\n * @param typeName Name of the type.\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\n if (!Reflect.hasOwnMetadata(typeNameDecoratorPropertyName, targetType)) {\n Reflect.defineMetadata(typeNameDecoratorPropertyName, typeName, targetType);\n }\n }\n\n /**\n * Defines enum name decorator.\n * @param targetType enum object.\n * @param enumName Name of the enum.\n */\n public static defineReflectEnumName(targetType: EnumType, enumName: string) {\n if (!Reflect.hasOwnMetadata(enumNameDecoratorPropertyName, targetType)) {\n Reflect.defineMetadata(enumNameDecoratorPropertyName, enumName, 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 decoratorName = Reflect.getMetadata(typeNameDecoratorPropertyName, type);\n if (decoratorName) {\n return decoratorName;\n }\n return type.name;\n }\n\n /**\n * Gets enum name from either decorator or reflect metadata.\n * @param enumType Class.\n */\n public static findEnumName(enumType: EnumType): string {\n let decoratorName = TypeUtil.getDecoratorEnumName(enumType);\n if (decoratorName) {\n return decoratorName;\n }\n decoratorName = Reflect.getMetadata(enumNameDecoratorPropertyName, enumType);\n if (decoratorName) {\n return decoratorName;\n }\n throw new Error('Could not fined enum name');\n }\n\n /**\n * Get value from decorator defined property name\n * @param type Class.\n */\n // eslint-disable-next-line @typescript-eslint/ban-types\n public static getDecoratorTypeName(type: Function): string | undefined {\n return (type as any)[typeNameDecoratorPropertyName];\n }\n\n /**\n * Get value from decorator defined property name\n * @param type Enum object.\n */\n public static getDecoratorEnumName(type: EnumType): string | undefined {\n return (type as any)[enumNameDecoratorPropertyName];\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable, of} from 'rxjs';\nimport {map, mergeMap} from 'rxjs/operators';\n\nimport {ActionDescriptor, ActionEditorDescriptor, ModelDescriptor} from '../descriptors';\nimport {MngError} from '../models';\nimport {ClassType} from '../types';\nimport {TypeUtil} from './type.util';\n\nexport namespace I18nUtils {\n export class Common {\n public static getAsync(translate: TranslateService, params?: any, ...keys: Array<string>): Observable<string | null> {\n return translate.stream(keys, params).pipe(map(i18n => I18nUtils.Common.selectI18n(keys, i18n)));\n }\n\n public static get(translate: TranslateService, params?: any, ...keys: Array<string>): string | null {\n const i18n = translate.instant(keys, params);\n return I18nUtils.Common.selectI18n(keys, i18n);\n }\n\n public static populateParams(item?: any, params: any = {}) {\n const paramsRes = {...params};\n if (item) {\n paramsRes.item = item;\n }\n return paramsRes;\n }\n\n public static selectI18n(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\n export class Type {\n public static getClassNameAsync(translate: TranslateService, classType: ClassType<any>, singular?: boolean): Observable<string | null> {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getNameAsync(translate, typeName, singular);\n }\n\n public static getClassName(translate: TranslateService, classType: ClassType<any>, singular?: boolean): string | null {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getName(translate, typeName, singular);\n }\n\n public static getNameAsync(translate: TranslateService, typeName: string, singular?: boolean): Observable<string | null> {\n const keys = I18nUtils.Type.getNameKeys(typeName, singular);\n return I18nUtils.Common.getAsync(translate, undefined, ...keys);\n }\n\n public static getName(translate: TranslateService, typeName: string, singular?: boolean): string | null {\n const keys = I18nUtils.Type.getNameKeys(typeName, singular);\n return I18nUtils.Common.get(translate, undefined, ...keys);\n }\n\n public static getClassTabKey(classType: ClassType<any>, tab: string): string {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getTabKey(typeName, tab);\n }\n\n public static getTabKey(typeName: string, tab: string): string {\n return I18nUtils.Type.getPath(typeName, 'tabs', tab);\n }\n\n public static getClassGroupKey(classType: ClassType<any>, group: string): string {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getGroupKey(typeName, group);\n }\n\n public static getGroupKey(typeName: string, group: string): string {\n return I18nUtils.Type.getPath(typeName, 'groups', group);\n }\n\n public static getClassPropertyKey(classType: ClassType<any>, property: string): string {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getPropertyKey(typeName, property);\n }\n\n public static getPropertyKey(typeName: string, property: string): string {\n return I18nUtils.Type.getPath(typeName, 'properties', property);\n }\n\n public static getClassPath(classType: ClassType<any>, ...path: Array<string>): string {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getPath(typeName, ...path);\n }\n\n public static getPath(typeName: string, ...path: Array<string>): string {\n return `${typeName}.${path.join('.')}`;\n }\n\n public static getClassParams(translate: TranslateService, classType: ClassType<any>, item: any, params: any = {}): any {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getParams(translate, typeName, item, params);\n }\n\n public static getParams(translate: TranslateService, typeName?: string, item?: any, params: any = {}): any {\n const i18nTypeName = typeName ? I18nUtils.Type.getName(translate, typeName, true) : null;\n return I18nUtils.Type.populateParams(i18nTypeName ?? undefined, item, params);\n }\n\n public static getClassParamsAsync(translate: TranslateService, classType: ClassType<any>, item?: any, params: any = {}): Observable<any> {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getParamsAsync(translate, typeName, item, params);\n }\n\n public static getParamsAsync(translate: TranslateService, typeName?: string, item?: any, params: any = {}): Observable<any> {\n return (typeName ? I18nUtils.Type.getNameAsync(translate, typeName, true) : of(null)).pipe(\n map(i18nTypeName => I18nUtils.Type.populateParams(i18nTypeName ?? undefined, item, params))\n );\n }\n\n public static populateParams(i18nTypeName?: string, item?: any, params: any = {}): any {\n const paramsRes = {...params};\n if (i18nTypeName) {\n paramsRes.typeName = i18nTypeName;\n }\n return I18nUtils.Common.populateParams(item, paramsRes);\n }\n\n private static getNameKeys(typeName: string, singular?: boolean): Array<string> {\n const keys = [];\n if (typeof singular !== 'undefined') {\n keys.push(singular ? `${typeName}.nameSingular` : `${typeName}.namePlural`);\n }\n keys.push(`${typeName}.name`);\n return keys;\n }\n }\n\n export class Model {\n public static get(\n translate: TranslateService,\n model: ModelDescriptor<any>,\n keyPath: string,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any\n ): string | null {\n const keys = I18nUtils.Model.getKeysByPriority(model, keyPath, customKey, fallbackKey);\n const i18nParams = I18nUtils.Model.getParams(translate, model, item, params);\n return I18nUtils.Common.get(translate, i18nParams, ...keys);\n }\n\n public static getName(translate: TranslateService, model: ModelDescriptor<any>, singular?: boolean): string | null {\n return I18nUtils.Type.getName(translate, model.typeName, singular);\n }\n\n public static getNameAsync(translate: TranslateService, model: ModelDescriptor<any>, singular?: boolean): Observable<string | null> {\n return I18nUtils.Type.getNameAsync(translate, model.typeName, singular);\n }\n\n public static getParams(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): any {\n const i18nParams = I18nUtils.Type.getParams(translate, model?.typeName, item, params);\n return I18nUtils.Model.populateParams(model?.idPropertyName, model?.titlePropertyName, item, i18nParams);\n }\n\n public static getParamsAsync(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): Observable<any> {\n return I18nUtils.Type.getParamsAsync(translate, model?.typeName, item, params).pipe(\n map(i18nParams => I18nUtils.Model.populateParams(model?.idPropertyName, model?.titlePropertyName, item, i18nParams))\n );\n }\n\n public static populateParams(idProperty?: string, titleProperty?: string, item?: any, params: any = {}): any {\n const paramsRes = {...params, itemId: '', itemTitle: ''};\n if (item) {\n if (idProperty && item[idProperty]) {\n paramsRes.itemId = item[idProperty];\n }\n if (titleProperty && item[titleProperty]) {\n paramsRes.itemTitle = item[titleProperty];\n }\n }\n return paramsRes;\n }\n\n private static getKeysByPriority(model: ModelDescriptor<any>, keyPath: string, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n const modelActionKey = I18nUtils.Type.getPath(model.typeName, ...keyPath);\n keys.push(modelActionKey);\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n }\n }\n\n export class Action {\n public static get(\n translate: TranslateService,\n action: ActionDescriptor<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any\n ): string | null {\n const keys = I18nUtils.Action.getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);\n const i18nParams = I18nUtils.Action.getParams(translate, action, item, params);\n return I18nUtils.Common.get(translate, i18nParams, ...keys);\n }\n\n public static getAsync(\n translate: TranslateService,\n action: ActionDescriptor<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any\n ): Observable<string | null> {\n return I18nUtils.Action.getParamsAsync(translate, action, item, params).pipe(\n mergeMap(i18nParams => {\n const keys = I18nUtils.Action.getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);\n return I18nUtils.Common.getAsync(translate, i18nParams, ...keys);\n })\n );\n }\n\n public static getTitleAsync(translate: TranslateService, action: ActionDescriptor<any>, item?: any): Observable<string | null> {\n return I18nUtils.Action.getAsync(translate, action, 'title', undefined, item);\n }\n\n public static getEditorTitleAsync(translate: TranslateService, action: ActionEditorDescriptor<any>, item?: any): Observable<string | null> {\n return I18nUtils.Action.getAsync(translate, action, ['editor.title', 'title'], action.editorTitle ?? undefined, item);\n }\n\n public static getParams(translate: TranslateService, action: ActionDescriptor<any>, item?: any, params: any = {}): any {\n const i18nParams = I18nUtils.Model.getParams(translate, action.model ?? undefined, item, params);\n return I18nUtils.Action.populateParams(i18nParams);\n }\n\n public static getParamsAsync(translate: TranslateService, action: ActionDescriptor<any>, item?: any, params: any = {}): Observable<any> {\n return I18nUtils.Model.getParamsAsync(translate, action.model ?? undefined, item, params).pipe(map(i18nParams => I18nUtils.Action.populateParams(i18nParams)));\n }\n\n public static populateParams(params: any = {}): any {\n params = {...params};\n return params;\n }\n\n private static getKeysByPriority(action: ActionDescriptor<any>, actionPathKeys: string | Array<string>, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n if (!Array.isArray(actionPathKeys)) {\n actionPathKeys = [actionPathKeys];\n }\n actionPathKeys.forEach(k => {\n const modelActionKey = `${action.i18nModelActionBaseKey}.${k}`;\n const actionKey = `${action.actionName}.${k}`;\n keys.push(modelActionKey, actionKey);\n });\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n }\n }\n\n export class Error {\n public static get(translate: TranslateService, error: MngError, params: any = {}): string | null {\n const i18nParams = I18nUtils.Error.getParams(error, params);\n if (error.messageCode) {\n const keys = [`errors.${error.messageCode}`, `messages.${error.messageCode}`];\n const i18n = I18nUtils.Common.get(translate, i18nParams, ...keys);\n if (i18n) {\n return i18n;\n }\n }\n return I18nUtils.Common.get(translate, i18nParams, error.message);\n }\n\n public static getParams(error: MngError, params: any = {}) {\n const paramsRes = {...params};\n paramsRes.errorStatus = '';\n paramsRes.errorMessage = '';\n\n if (error.status) {\n paramsRes.errorStatus = error.status;\n }\n if (error.message) {\n paramsRes.errorMessage = error.message;\n }\n if (error.statusDescription) {\n paramsRes.errorStatusDescription = error.statusDescription;\n }\n paramsRes.error = error;\n return paramsRes;\n }\n }\n}\n","import {AttributeDef} from '../api/models';\nimport {ObjectSerializer} from '../api/utils';\nimport {ILookupDescriptor} from '../descriptors/interfaces';\nimport {ClassType} from '../types';\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 = ModelUtil.findAttributeByTypeAndName(attributes, 'string', 'id', 'uuid', 'code', 'sifra');\n if (!idAttribute) {\n // if no id or code, take the first attribute\n idAttribute = attributes[0];\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 = ModelUtil.findAttributeByTypeAndName(attributes, 'string', 'name', 'ime', 'title', 'naziv');\n if (!titleAttribute) {\n // if no name or title, take the first attribute\n titleAttribute = attributes[0];\n }\n\n return titleAttribute?.name ?? null;\n }\n\n private static findAttributeByTypeAndName(attributes: AttributeDef[], type: string, ...names: string[]): AttributeDef | null {\n for (const name of names) {\n const attribute = attributes.find(a => a.type === type && a.name === name);\n if (attribute) {\n return attribute;\n }\n }\n return null;\n }\n\n public static trySetLookupItemsProperties<T>(lookup: ILookupDescriptor<T>, idAsDataKey = true) {\n if (lookup.modelType) {\n if (!lookup.itemsValueProperty || !lookup.dataKeyProperty) {\n const idProperty = ModelUtil.findIdAttribute(lookup.modelType) ?? undefined;\n if (idProperty && !lookup.itemsValueProperty && !lookup.dataKeyProperty) {\n if (idAsDataKey) {\n lookup.withDataKeyProperty(idProperty);\n } else {\n lookup.withItemsValueProperty(idProperty);\n }\n }\n }\n if (!lookup.itemsLabelProperty) {\n const labelProperty = ModelUtil.findTitleAttribute(lookup.modelType);\n if (labelProperty) {\n lookup.withItemsLabelProperty(labelProperty);\n }\n }\n }\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\n\nimport {ActionDescriptor, TableDescriptor} from '../descriptors';\nimport {IViewContainer, MngError} from '../models';\nimport {I18nUtils} from './i18n.util';\n\nexport class NotificationUtil {\n public static notification(viewContainer?: IViewContainer<any, any>, title?: string, message?: string, severity: 'success' | 'warn' | 'error' = 'success'): Message {\n const messageService = viewContainer?.getMessageService();\n const notification: Message = {severity: severity, summary: title, detail: message, life: severity === 'error' ? 10000 : 5000};\n if (messageService) {\n messageService.add(notification);\n } else {\n console.warn(`No message service was provided through view container, message will not be displayed.`);\n }\n return notification;\n }\n\n public static tableNotificationError(translate: TranslateService, table: TableDescriptor<any>, error: any, viewContainer?: IViewContainer<any, any>): Message {\n const params: any = {};\n if (error?.message) {\n params.errorMessage = `: ${error.message}`;\n } else {\n params.errorMessage = '.';\n }\n const tableErrorTitle = I18nUtils.Model.get(translate, table.model, 'table.error.title', undefined, undefined, 'general.error', params) ?? undefined;\n const tableErrorMessage = I18nUtils.Model.get(translate, table.model, 'table.error.message', undefined, undefined, 'general.errorMessage', params) ?? undefined;\n return NotificationUtil.notification(viewContainer, tableErrorTitle, tableErrorMessage, 'error');\n }\n\n public static actionNotificationSuccess(\n translate: TranslateService,\n action: ActionDescriptor<any>,\n functionName: string,\n customTitleKey?: string,\n customMessageKey?: string,\n viewContainer?: IViewContainer<any, any>,\n item?: any\n ): Message {\n const actionSuccessTitle = I18nUtils.Action.get(translate, action, 'success.title', customTitleKey, item, 'general.success', functionName) ?? undefined;\n const actionSuccessMessage = I18nUtils.Action.get(translate, action, 'success.message', customMessageKey, item, 'general.successMessage', functionName) ?? undefined;\n return NotificationUtil.notification(viewContainer, actionSuccessTitle, actionSuccessMessage);\n }\n\n public static actionNotificationError(\n translate: TranslateService,\n action: ActionDescriptor<any>,\n error: MngError,\n functionName: string,\n viewContainer?: IViewContainer<any, any>,\n item?: any,\n severity: 'warn' | 'error' = 'error'\n ): Message {\n const params = {\n errorMessage: I18nUtils.Error.get(translate, error) ?? error.message\n };\n const actionErrorTitle =\n I18nUtils.Action.get(translate, action, [`error.${functionName}.title`, 'error.title'], action.runNotificationErrorTitle, item, 'general.error', params) ?? undefined;\n const actionErrorMessage =\n I18nUtils.Action.get(translate, action, [`error.${functionName}.message`, 'error.message'], action.runNotificationErrorMessage, item, 'general.errorMessage', params) ??\n undefined;\n return NotificationUtil.notification(viewContainer, actionErrorTitle, actionErrorMessage, severity);\n }\n\n public static getFormEditorWarningMessage(translate: TranslateService, title: string, message: string): Message {\n const actionErrorTitle = translate.instant(title) ?? undefined;\n const actionErrorMessage = translate.instant(message) ?? undefined;\n return {severity: 'warn', summary: actionErrorTitle, detail: actionErrorMessage};\n }\n}\n","import {ClassType} from '../../types';\nimport {TypeUtil} from '../../utils';\nimport {AttributeDef, SerializableTypeMap, enumsMapBase, typeMapBase} from '../models';\n\nexport class ObjectSerializer {\n private static _instance: ObjectSerializer = new ObjectSerializer();\n private readonly _primitives: string[] = ['string', 'boolean', 'double', 'integer', 'long', 'float', 'number', 'any'];\n private readonly _typeMap: SerializableTypeMap = {\n ...typeMapBase\n };\n private readonly _enumMap: SerializableTypeMap = {\n ...enumsMapBase\n };\n\n public get primitives() {\n return this._primitives;\n }\n\n public get typeMap() {\n return this._typeMap;\n }\n\n public get enumMap() {\n return this._enumMap;\n }\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 findAttributeDefinitionByClassType(type: ClassType<any>, attributeName: string): AttributeDef | null {\n return this.findAttributeDefinition(TypeUtil.findTypeName(type), attributeName);\n }\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 (const attribute of attributeDefs) {\n if (attribute.name === attributeName) {\n return attribute;\n }\n }\n return null;\n }\n\n public findAttributesDefinitionByClassType(type: ClassType<any>): Array<AttributeDef> | null {\n return this.findAttributesDefinition(TypeUtil.findTypeName(type));\n }\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\n public findByClassType(type: ClassType<any>): any {\n return this.findType(TypeUtil.findTypeName(type));\n }\n\n public findType(typeName: string): any {\n return this._typeMap[typeName];\n }\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 this.registerEnum(enums[key], key);\n }\n }\n\n public registerEnum(enumType: any, enumName: string) {\n // try to find name from decorator\n if (typeof this._enumMap[enumName] !== 'undefined') {\n console.warn(`Registering enum ${enumName} skipped, because enum already exists.`);\n } else {\n TypeUtil.defineReflectEnumName(enumType, enumName);\n this._enumMap[enumName] = enumType;\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: T, type: ClassType<T>) {\n return this.serialize(data, TypeUtil.findTypeName(type));\n }\n\n public serializeClassArray<T>(data: Array<T>, type: ClassType<T>) {\n return this.serialize(data, `Array<${TypeUtil.findTypeName(type)}>`);\n }\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) {\n // 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 if (data instanceof Date) {\n return data.toISOString();\n } else {\n return new Date(data).toISOString();\n }\n } else {\n if (this._enumMap[type]) {\n return data;\n }\n if (!this._typeMap[type]) {\n // 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], attributeType.type);\n }\n return instance;\n }\n }\n\n public deserializeClass<T>(data: any, type: ClassType<T>): T {\n return this.deserialize(data, TypeUtil.findTypeName(type));\n }\n\n public deserializeClassArray<T>(data: any, type: ClassType<T>): Array<T> {\n return this.deserialize(data, `Array<${TypeUtil.findTypeName(type)}>`);\n }\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) {\n // 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]) {\n // is Enum\n return data;\n }\n\n if (!this._typeMap[type]) {\n // 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], attributeType.type);\n }\n return instance;\n }\n }\n}\n","import {Params} from '@angular/router';\n\nimport {FilterMatchMode, FilterMetadata, LazyLoadEvent} from 'primeng/api';\n\nimport {FilterDescriptor} from '../../descriptors';\nimport {FilterTypeEnum} from '../../descriptors/types';\nimport {MatchModeMapType} from '../../types';\nimport {MediusFilterMatchType, MediusQueryParam, MediusQueryParamBuilder} from '../models';\n\nexport class MediusRestUtil {\n // first value is from primeNG, second is for use in query params\n private static readonly matchModeMapping: Array<MatchModeMapType> = [\n [FilterMatchMode.CONTAINS, 'c', MediusFilterMatchType.Contains, null],\n [FilterMatchMode.ENDS_WITH, 'ew', MediusFilterMatchType.EndsWith, null],\n [FilterMatchMode.EQUALS, 'eq', MediusFilterMatchType.Equals, null],\n [FilterMatchMode.GREATER_THAN, 'gt', MediusFilterMatchType.GreaterThan, null],\n [FilterMatchMode.LESS_THAN, 'lt', MediusFilterMatchType.SmallerThan, null],\n [FilterMatchMode.STARTS_WITH, 'sw', MediusFilterMatchType.StartsWith, null],\n [FilterMatchMode.IN, 'in', MediusFilterMatchType.In, null],\n [FilterMatchMode.NOT_EQUALS, 'neq', MediusFilterMatchType.NotEquals, null],\n [FilterMatchMode.DATE_IS, 'eq', MediusFilterMatchType.Equals, FilterTypeEnum.Date],\n [FilterMatchMode.DATE_BEFORE, 'lt', MediusFilterMatchType.SmallerThan, FilterTypeEnum.Date],\n [FilterMatchMode.DATE_AFTER, 'gt', MediusFilterMatchType.GreaterThan, FilterTypeEnum.Date],\n [FilterMatchMode.DATE_IS_NOT, 'neq', MediusFilterMatchType.NotEquals, FilterTypeEnum.Date]\n ];\n\n public static fromAngularQueryParamsToMediusQueryParams(\n params: Params,\n filterDescriptors: Array<FilterDescriptor<any>>,\n defaultItemsPerPage = 10,\n defaultOffset = 0\n ): MediusQueryParam {\n const offset = params['first'] ? parseInt(params['first']) : defaultOffset;\n const itemsPerPage = params['rows'] ? parseInt(params['rows']) : defaultItemsPerPage;\n\n const mediusParamsBuilder = MediusQueryParamBuilder.create(itemsPerPage, offset);\n\n if (params['sort']) {\n for (const sort of params['sort'].split(',')) {\n const qpSortSplit = sort.split(':');\n const field = qpSortSplit[0];\n const asc = qpSortSplit.length > 1 ? qpSortSplit[1] === 'asc' : true;\n mediusParamsBuilder.withSort(field, asc);\n }\n }\n if (params['filter']) {\n const filterSplit = params['filter'].split(',');\n for (const filterField of filterSplit) {\n const filterFieldSplit = filterField.split(':');\n const field = filterFieldSplit[0];\n const operator = filterFieldSplit.length > 1 ? filterFieldSplit[1] : 'eq';\n\n // prepare value\n let value: any = filterFieldSplit.length > 2 ? filterFieldSplit.slice(2).join(':') : '';\n const valueTo: any = undefined;\n if (value.startsWith(\"'\")) {\n value = value.substring(1, value.length - 1);\n }\n if (value.startsWith('[') && value.endsWith(']')) {\n value = value\n .substring(1, value.length - 1)\n .split(',')\n .map((v: string) => (v.startsWith(\"'\") ? v.substring(1, v.length - 1) : v));\n }\n\n const filterDescriptor = filterDescriptors.find(f => f.property === field);\n const matchMode = MediusRestUtil.getMapping(operator, filterDescriptor?.filterType, 1);\n if (matchMode && filterDescriptor) {\n const fieldFilterProperty = filterDescriptor.filterProperty ?? filterDescriptor.property;\n mediusParamsBuilder.withFilter(fieldFilterProperty, value, valueTo, MediusRestUtil.getMediusFilterMatchTypeFromPrimeMatchMode(matchMode[0]));\n }\n }\n }\n\n return mediusParamsBuilder.build();\n }\n\n public static fromPrimeLazyLoadEventToAngularQueryParams(event: LazyLoadEvent, defaultItemsPerPage = 10, defaultOffset = 0): Params {\n const params: Params = {\n first: null,\n rows: null,\n sort: null,\n filter: null\n };\n\n if (event.first && event.first !== defaultOffset && event.first > 0) {\n params['first'] = event.first;\n }\n if (event.rows && event.rows !== defaultItemsPerPage && event.rows > 0) {\n params['rows'] = event.rows;\n }\n\n if (event.multiSortMeta?.length ?? 0 > 0) {\n params['sort'] = event.multiSortMeta?.map(s => `${s.field}${s.order === 1 ? '' : ':desc'}`).join(',');\n }\n\n if (event.filters) {\n const filters = [];\n for (const field in event.filters) {\n const primeOperator = event.filters[field].matchMode;\n let value = event.filters[field].value;\n const operatorMapping = primeOperator ? MediusRestUtil.getMapping(primeOperator, undefined, 0) : undefined;\n if (operatorMapping && typeof value !== 'undefined' && value !== null) {\n let doAddFilter = false;\n if (typeof value === 'string' && value.length > 0) {\n value = `'${value}'`;\n doAddFilter = true;\n } else if (typeof value === 'number') {\n doAddFilter = true;\n } else if (Array.isArray(value)) {\n value = `[${value.map(v => `'${v}'`).join(',')}]`;\n doAddFilter = true;\n } else if (value instanceof Date) {\n value = `${value.toISOString()}`;\n doAddFilter = true;\n }\n\n if (doAddFilter) {\n filters.push(`${field}:${operatorMapping[1]}:${value}`);\n }\n }\n }\n if (filters.length > 0) {\n params['filter'] = filters.join(',');\n }\n }\n\n return params;\n }\n\n public static fromPrimeLazyLoadEventToMediusQueryParams(event: LazyLoadEvent): MediusQueryParam {\n const queryParamBuilder = MediusQueryParamBuilder.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).forEach(e => MediusRestUtil.addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, key, e));\n } else if (typeof filterEvent === 'object') {\n if (filterEvent.value) {\n MediusRestUtil.addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, key, filterEvent);\n }\n }\n }\n }\n\n return queryParamBuilder.build();\n }\n\n public static addMediusFilterFromPrimeFilterMetadata(queryParamBuilder: MediusQueryParamBuilder, property: string, filterMetadata: FilterMetadata) {\n const matchType: MediusFilterMatchType = MediusRestUtil.getMediusFilterMatchTypeFromPrimeMatchMode(filterMetadata.matchMode ?? 'equals');\n queryParamBuilder.withFilter(property, filterMetadata.value, undefined, matchType);\n }\n\n public static getMediusFilterMatchTypeFromPrimeMatchMode(matchMode: string, dataType?: FilterTypeEnum): MediusFilterMatchType {\n return MediusRestUtil.getMapping(matchMode, dataType)?.[2] ?? MediusFilterMatchType.Equals;\n }\n\n public static getMapping(matchMode: string, dataType?: FilterTypeEnum, idx = 0): MatchModeMapType | null {\n const mappings = MediusRestUtil.matchModeMapping.filter(m => m[idx] === matchMode && (!dataType || !m[3] || dataType === m[3]));\n if (mappings.length === 0) {\n return null;\n } else if (mappings.length === 1) {\n return mappings[0];\n } else {\n return mappings.sort((m1, m2) => (m2[3] ?? -1) - (m1[3] ?? -1))[0];\n }\n }\n}\n","import {ActivatedRoute} from '@angular/router';\n\nimport {Confirmation, Message} from 'primeng/api';\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged} from 'rxjs';\n\nimport {MediusQueryParam} from '../../../api/models';\nimport {IDataProvider} from '../../../data-providers';\nimport {ActionDescriptor} from '../../../descriptors';\nimport {IViewContainer, MngError} from '../../../models';\nimport {IdType} from '../../../types';\n\nexport class ActionError {\n constructor(\n public readonly error: any, // error details\n public readonly dismissed: boolean = false // by user\n ) {}\n}\n\n/**\n * Action execution instance containing data about execution state of action\n */\nexport class ActionInstance<T, S> {\n public readonly instanceId: string;\n public readonly instanceLongName: string;\n public readonly action: ActionDescriptor<T>;\n\n // function execution\n public readonly isRunLoadingSubject = new BehaviorSubject(false);\n\n // parameters, contexts, states\n public triggerParameters?: ActionParameters<T>;\n public activationParameters?: ActionParameters<T>;\n private readonly contexts: Array<ActionContext<T, S>> = [];\n private readonly executionSubject = new Subject<T | null | undefined>();\n private readonly executionIsRunningSubject = new BehaviorSubject(false);\n private readonly stateSubject = new BehaviorSubject<ActionInstanceStateEnum>(1);\n private readonly resultSubject = new ReplaySubject<T | null>(1);\n private readonly errorSubject = new ReplaySubject<ActionError>(1);\n\n private contextExecutionSubscriptions: Array<Subscription> = [];\n\n // result or error\n private _result?: T | null;\n private _error?: ActionError;\n\n // additional data from trigger/activation\n public triggerRouteNavigation?: Observable<boolean>;\n public activationDialogRef?: DynamicDialogRef;\n\n // linked actions\n public nextActionInstance?: ActionInstance<unknown, unknown>;\n public errorActionInstance?: ActionInstance<unknown, unknown>;\n\n constructor(action: ActionDescriptor<T>, state = ActionInstanceStateEnum.TriggerStart, public debug = false) {\n this.instanceId = Math.random().toString(36).substring(2);\n this.instanceLongName = `${action.actionNameLong}_${this.instanceId}`;\n this.action = action;\n this.state = state;\n }\n\n public get isRunLoading$() {\n return this.isRunLoadingSubject.asObservable();\n }\n\n public get context() {\n return this.contexts.length === 0 ? undefined : this.contexts[this.contexts.length - 1];\n }\n\n public get execution$() {\n return this.executionSubject.asObservable();\n }\n\n public get executionIsRunning$() {\n return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public get state() {\n return this.stateSubject.value;\n }\n\n public set state(state: ActionInstanceStateEnum) {\n if (state > this.stateSubject.value) {\n if (this.debug) {\n console.debug(`ActionInstance ${this.instanceLongName} - state #${state}: ${ActionInstanceStateEnum[state]}`);\n }\n this.stateSubject.next(state);\n }\n }\n\n public get state$() {\n return this.stateSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public get result() {\n return this._result;\n }\n\n public set result(result: T | null | undefined) {\n if (typeof result === 'undefined') {\n return;\n }\n if (this.debug) {\n console.debug(`ActionInstance ${this.instanceLongName} - result`, result);\n }\n this._result = result;\n this.resultSubject.next(result);\n }\n\n public get result$() {\n return this.resultSubject.asObservable();\n }\n\n public get error() {\n return this._error;\n }\n\n public set error(error: ActionError | undefined) {\n if (typeof error === 'undefined') {\n return;\n }\n if (this.debug) {\n console.debug(`ActionInstance ${this.instanceLongName} - error`, error);\n }\n this._error = error;\n this.errorSubject.next(error);\n }\n\n public get error$() {\n return this.errorSubject.asObservable();\n }\n\n public contextAt(idx: number) {\n return idx < this.contexts.length ? this.contexts[idx] : undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public newContext(context: ActionContext<T, S>, finishPrevious = true) {\n if (this.debug) {\n console.debug(`ActionInstance ${this.instanceLongName} - new context ${context.contextLongName}`);\n }\n const currentContext = this.context;\n if (currentContext) {\n currentContext.executionComplete();\n }\n this.contextExecutionSubscriptions.forEach(s => s.unsubscribe());\n this.contextExecutionSubscriptions = [];\n this.contextExecutionSubscriptions.push(\n context.execution$.subscribe({\n next: next => this.executionSubject.next(next),\n error: error => this.executionSubject.error(error)\n })\n );\n this.contextExecutionSubscriptions.push(\n context.executionIsRunning$.subscribe({\n next: next => this.executionIsRunningSubject.next(next)\n })\n );\n this.contexts.push(context);\n }\n\n public finish() {\n if (this.stateSubject.value < ActionInstanceStateEnum.FinishSuccess) {\n this.state = ActionInstanceStateEnum.FinishSuccess;\n }\n // complete all subjects\n this.contexts.forEach(c => c.finish());\n this.executionSubject.complete();\n this.executionIsRunningSubject.complete();\n this.stateSubject.complete();\n this.resultSubject.complete();\n this.errorSubject.complete();\n }\n}\n\n/**\n * Class containing all main data for action to be executed in run/fetch/submit states.\n */\nexport class ActionContext<T, S> {\n public readonly contextLongName: string;\n public previousActionInstance?: ActionInstance<unknown, unknown>;\n public confirmation?: Confirmation;\n public notification?: Message;\n\n constructor(\n public readonly instance: ActionInstance<T, S>,\n public readonly parameters: ActionParameters<T>,\n public readonly functionName: 'run' | 'fetch' | 'submit',\n public readonly dataProvider?: IDataProvider<T, S>,\n public readonly serviceInstance?: S,\n private readonly executionSubject = new ReplaySubject<T | null | undefined>(1),\n private readonly executionIsRunningSubject = new BehaviorSubject(false)\n ) {\n this.contextLongName = `${this.instance.instanceLongName}_${functionName}`;\n }\n\n public get execution$() {\n return this.executionSubject.asObservable();\n }\n\n public get executionIsRunning$() {\n return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public executionStart() {\n if (this.instance.debug) {\n console.debug(`ActionContext ${this.contextLongName} - execution start`);\n }\n this.executionIsRunningSubject.next(true);\n }\n\n public executionNext(next: T | null | undefined, finish = true) {\n if (this.instance.debug) {\n console.debug(`ActionContext ${this.contextLongName} - execution next event`, next, finish);\n }\n this.executionSubject.next(next);\n if (finish) {\n this.executionComplete();\n }\n }\n\n public executionComplete() {\n if (this.instance.debug) {\n console.debug(`ActionContext ${this.contextLongName} - execution complete`);\n }\n this.executionSubject.complete();\n this.executionIsRunningSubject.next(false);\n }\n\n public executionError(err: MngError) {\n if (this.instance.debug) {\n console.debug(`ActionContext ${this.contextLongName} - execution error`, err);\n }\n this.executionSubject.error(err);\n this.executionIsRunningSubject.next(false);\n }\n\n public finish() {\n this.executionSubject.complete();\n this.executionIsRunningSubject.complete();\n }\n}\n\n/**\n * Class containing all main data for action validations (enabled/visible) to be executed in validation states.\n */\nexport class ActionContextValidation<T, S> {\n constructor(\n public readonly descriptor: ActionDescriptor<T>,\n public readonly parameters: ActionParameters<T>,\n public readonly dataProvider?: IDataProvider<T, S>,\n public readonly serviceInstance?: S\n ) {}\n}\n\nexport class ActionParameters<T> {\n public actionData?: ActionData;\n public queryParam?: MediusQueryParam;\n public viewContainer?: IViewContainer<T, unknown>;\n public sourceComponent?: any;\n public route?: ActivatedRoute;\n\n constructor(public itemId?: IdType, public item?: T) {}\n\n public withActionData(actionData?: ActionData) {\n this.actionData = actionData;\n return this;\n }\n\n public withQueryParam(queryParam?: MediusQueryParam) {\n this.queryParam = queryParam;\n return this;\n }\n\n public withViewContainer<S>(viewContainer?: IViewContainer<T, S>) {\n this.viewContainer = viewContainer;\n return this;\n }\n\n public withSourceComponent(sourceComponent?: any) {\n this.sourceComponent = sourceComponent;\n return this;\n }\n\n public withRoute(route?: ActivatedRoute) {\n this.route = route;\n return this;\n }\n}\n\nexport enum ActionInstanceStateEnum {\n TriggerStart, // action was triggered (click or direct)\n TriggerEnd,\n ActivationStart, // action activation started (direct, event or editor)\n ActivationEnd, // action activation ended\n FetchStart, // fetch started\n FetchEnd, // fetch ended\n FetchError, // fetch error\n RunConfirmationStart, // confirmation for run is started\n RunConfirmationEndAccept, // confirmation accepted\n RunConfirmationEndReject, // confirmation rejected\n RunStart, // action was run by calling main function\n RunEnd, // action run function executed\n RunError, // action run function executed\n NextActionStart, // next action started\n NextActionEnd, // next action finished\n FinishSuccess, // action executed successfully\n FinishError, // action executed with error\n FinishDismissed // action was dismissed by user\n}\n\nexport type ActionData = {\n [key: string]: any;\n};\n","import {APermissions, AuthorizationTypeEnum, Permissions} from './model';\n\nexport class AuthorizationUtil {\n public static isPermitted(permissions: APermissions, userRoles: Array<string>): boolean {\n switch (permissions.authorizationType) {\n case AuthorizationTypeEnum.Rbac:\n return AuthorizationUtil.isRbacPermitted(permissions as Permissions.Roles, userRoles);\n default:\n console.error(`Permission type \"${permissions.authorizationType}\" not implemented`);\n return false;\n }\n }\n\n public static isRbacPermitted(permissions: Permissions.Roles, userRoles: Array<string>): boolean {\n return permissions.roles.some(prg => prg.every(pr => userRoles.indexOf(pr) > -1));\n }\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const MNG_BROWSER_STORAGE_IT = new InjectionToken<Storage>('Browser storage', {\n providedIn: 'root',\n factory: () => localStorage\n});\n","import {InjectionToken} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nexport const MNG_COMMONS_INITIALIZER_IT = new InjectionToken<ReadonlyArray<() => Observable<unknown>>>('MNG Commons Initializer');\n","import {InjectionToken, Type} from '@angular/core';\n\nexport const ACTION_EDITOR_DIALOG_COMPONENT_SETTING: InjectionToken<Type<any>> = new InjectionToken<Type<any>>('ACTION_EDITOR_DIALOG_COMPONENT_SETTING');\n","import {InjectionToken} from '@angular/core';\n\nimport {MngModuleConfig} from '../../config/models';\n\nexport const MNG_MODULE_CONFIG_IT = new InjectionToken<MngModuleConfig>('MngModuleConfig');\n","import {HttpClient, HttpErrorResponse} from '@angular/common/http';\n\nimport {Observable, combineLatest, of, tap, throwError} from 'rxjs';\nimport {catchError, map} from 'rxjs/operators';\n\nexport class MngConfigurationService {\n private static _instance: MngConfigurationService | null = null;\n\n public static init(httpClient: HttpClient): MngConfigurationService {\n if (!this._instance) {\n MngConfigurationService._instance = new MngConfigurationService(httpClient);\n }\n return MngConfigurationService.get();\n }\n\n public static get(): MngConfigurationService {\n if (!MngConfigurationService._instance) {\n throw new Error('Configuration service instance not set. Call init first.');\n }\n return MngConfigurationService._instance;\n }\n\n private projectEnvironment?: any;\n private jsonSources: Array<JsonSourceLoadInfo> = [];\n\n private configuration = {...this.projectEnvironment};\n\n private constructor(private http: HttpClient) {}\n\n /**\n * Add project environment source.\n * @param environemnt Environment.\n */\n public addEnvironmentSource(environment: any): void {\n this.projectEnvironment = environment;\n this.mergeConfigs();\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, load = false): Observable<boolean> {\n if (!url) {\n console.debug('No path to configuration file specified. Setting default.');\n url = 'assets/config/env{{environment}}.json';\n }\n\n const sourceInfo: JsonSourceLoadInfo = {\n url: url,\n isEnvironment: false,\n isLoaded: false\n };\n this.jsonSources.push(sourceInfo);\n\n console.debug(`Added JSON source: ${url}`);\n\n if (load) {\n return this.loadJsonSources();\n } else {\n return of(true);\n }\n }\n\n public loadJsonSources(): Observable<boolean> {\n return combineLatest(\n this.jsonSources\n .filter(source => !source.isLoaded)\n .map(sourceInfo => {\n let url = sourceInfo.url;\n if (url.indexOf('{{environment}}') >= 0) {\n sourceInfo.isEnvironment = true;\n sourceInfo.environment = this.projectEnvironment.name || (this.projectEnvironment.production ? 'prod' : 'dev');\n url = url.replace('{{environment}}', '.' + sourceInfo.environment);\n }\n\n console.debug(`Loading JSON source: ${sourceInfo.url} with env ${sourceInfo.environment ?? '/'}`);\n\n return this.http.get<object>(url).pipe(\n catchError((err: HttpErrorResponse) => {\n if (sourceInfo.isEnvironment) {\n const noEnvUrl = sourceInfo.url.replace('{{environment}}', '');\n sourceInfo.environment = null;\n\n console.debug(`Reloading JSON source: ${sourceInfo.url} with env ${sourceInfo.environment ?? '/'}`);\n\n return this.http.get<object>(noEnvUrl);\n } else {\n const message = `Configuration file ${url} not loaded (${err.status}): ${err.message}.`;\n console.error(message);\n return throwError(() => new Error(message));\n }\n }),\n map(configuration => {\n sourceInfo.configuration = configuration;\n sourceInfo.isLoaded = true;\n\n console.debug(`JSON source loaded: ${sourceInfo.url}`);\n\n return true;\n })\n );\n })\n ).pipe(\n map(sourceResults => sourceResults.every(sr => sr)),\n tap(() => this.mergeConfigs())\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 const jsonConfigs = this.jsonSources.filter(source => source.isLoaded && typeof source.configuration === 'object').map(source => source.configuration);\n if (jsonConfigs.length) {\n for (const jsonConfig of jsonConfigs) {\n config = {...config, ...jsonConfig};\n }\n }\n this.configuration = config;\n }\n}\n\ninterface JsonSourceLoadInfo {\n url: string;\n isLoaded: boolean;\n isEnvironment: boolean;\n environment?: string | null;\n configuration?: object;\n}\n","import {Location} from '@angular/common';\nimport {Injectable} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\n\n@Injectable()\nexport class MngNavigationService {\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 }\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 {MngError} from '../models';\n\nexport abstract class MngErrorMapperService {\n abstract toMngError(error?: any, mngError?: MngError): MngError;\n}\n\nexport class DefaultMngErrorMapperService extends MngErrorMapperService {\n toMngError(error?: any, mngError?: MngError): MngError {\n if (!mngError) {\n mngError = {\n name: error?.name ?? 'UnknownError',\n message: error.message ?? 'Unknown error'\n };\n }\n return mngError;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'boolean',\n pure: true\n})\nexport class MngBooleanPipe implements PipeTransform {\n transform(value: any, yes?: string, no?: string, icon = false): any {\n if (typeof value === 'boolean') {\n if (icon) {\n return value ? yes ?? 'pi pi-check' : no ?? 'pi pi-times';\n } else {\n return value ? yes ?? 'general.yes' : no ?? 'general.no';\n }\n } else {\n return value;\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {EnumType} from '../types';\nimport {EnumUtil, TypeUtil} from '../utils';\n\n@Pipe({\n name: 'enum',\n pure: true\n})\nexport class MngEnumPipe implements PipeTransform {\n transform(value: unknown, enumObj: EnumType | undefined, i18nPath?: string | null, nameAsValue = false): any {\n if (!value || (typeof value !== 'number' && typeof value !== 'string') || !enumObj) {\n return value;\n }\n const enumConstantName = nameAsValue ? value : EnumUtil.getConstantNameFromEnumObject(enumObj, value) ?? value;\n if (typeof i18nPath === 'undefined') {\n i18nPath = TypeUtil.findEnumName(enumObj as EnumType);\n }\n return i18nPath ? `${i18nPath}.${enumConstantName}` : enumConstantName;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {ModelDescriptor} from '../descriptors';\nimport {I18nUtils} from '../utils';\n\n@Pipe({\n name: 'i18nProperty',\n pure: true\n})\nexport class MngI18nPropertyPipe implements PipeTransform {\n transform(property: string, model: ModelDescriptor<any>): any {\n return I18nUtils.Type.getPropertyKey(model.typeName, property);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {ActionData} from '../components/action/models';\nimport {ModelDescriptor} from '../descriptors';\nimport {IdType} from '../types';\n\n@Pipe({\n name: 'linkFormatter',\n pure: true\n})\nexport class MngLinkFormatterPipe implements PipeTransform {\n private parseUrl(s: string, itemId?: IdType, itemAny?: any, model?: ModelDescriptor<any> | null, actionData?: ActionData): any {\n if (s === ':itemId') {\n return itemId!;\n } else if (model && s.startsWith(`:${model.typeName}.`)) {\n return itemAny[s.substring(model.typeName.length + 2)] ?? '';\n } else if (s.startsWith(':')) {\n return actionData?.[s.substring(1)] ?? '';\n } else {\n return s;\n }\n }\n\n transform(value: string | string[], itemId?: IdType, item?: any, model?: ModelDescriptor<any> | null, actionData?: ActionData): any {\n const itemAny = (item ?? {}) as any;\n if (typeof value === 'string') {\n return value.split('/').map(s => this.parseUrl(s, itemId, itemAny, model, actionData));\n } else {\n const transformedItems: string[] = [];\n value.forEach(val => transformedItems.push(...val.split('/').map(s => this.parseUrl(s, itemId, itemAny, model, actionData))));\n return transformedItems;\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n/**\n * Imitation of JSONPath Syntax. Supports:\n * - Root object notation with '$'\n * - Dot notation (e.g.: $.foo.bar), no bracket notation for properties\n * - Array notation (e.g.: [0])\n */\n@Pipe({\n name: 'jsonPath',\n pure: true\n})\nexport class JsonPathPipe implements PipeTransform {\n transform(value: any, path = ''): any {\n if (path === '$') {\n // only return the root\n return value;\n }\n\n // Check for leading root object notation\n if (path.startsWith('$')) {\n path = path.substring(1);\n }\n\n // Check for leading .\n if (path.startsWith('.')) {\n path = path.substring(1);\n }\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\n if (!p.length) {\n // empty path, return current value\n return currValue;\n }\n\n const leftBracketIdx = p.indexOf('[');\n if (leftBracketIdx >= 0 && p.endsWith(']')) {\n // should be reference to array\n const arrayPath = p.substring(0, leftBracketIdx);\n const arrayIdx = +p.substring(leftBracketIdx + 1, p.length - 1);\n const array = currValue[arrayPath];\n console.log(arrayPath, arrayIdx, array);\n if (Array.isArray(array)) {\n if (arrayIdx >= 0 && arrayIdx < array.length) {\n // valid index, continue on the path\n currValue = array[arrayIdx];\n continue;\n } else {\n console.warn(`Path ${path} array index at ${p} is not within valid array range`, value);\n }\n } else {\n console.warn(`Path ${path} array at ${p} is not a valid array`, value);\n }\n\n return undefined;\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 value[path];\n }\n }\n}\n","import {HttpErrorResponse} from '@angular/common/http';\nimport {Inject, Injectable, Injector, Type} from '@angular/core';\nimport {ActivatedRoute, Router, UrlTree} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Confirmation, ConfirmationService} from 'primeng/api';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {Observable, from, mergeMap, of, switchMap, throwError} from 'rxjs';\nimport {catchError, filter, first, map} from 'rxjs/operators';\n\nimport {ActionContext, ActionContextValidation, ActionInstance, ActionInstanceStateEnum, ActionParameters, IActionConfirmationService} from '../components/action/models';\nimport {MngTableCellClickEvent} from '../components/tableview/models';\nimport {IDataProvider, IEditorDataProvider} from '../data-providers';\nimport {ActionDescriptor, ActionEditorDescriptor, TableDescriptor} from '../descriptors';\nimport {ActionActivationTriggerEnum, ActionEditorDialogSizeEnum, ActionTypeEnum} from '../descriptors/types';\nimport {MngError} from '../models';\nimport {MngLinkFormatterPipe} from '../pipes';\nimport {I18nUtils, NotificationUtil} from '../utils';\nimport {MngConfigurationService} from './configuration.service';\nimport {MngErrorMapperService} from './error-mapper.service';\nimport {MngNavigationService} from './navigation.service';\nimport {ACTION_EDITOR_DIALOG_COMPONENT_SETTING} from './tokens';\n\n@Injectable()\nexport class MngActionExecutorService {\n private debug = false;\n\n constructor(\n private injector: Injector,\n private router: Router,\n private dialogService: DialogService,\n private confirmationService: ConfirmationService,\n private translate: TranslateService,\n private configurationService: MngConfigurationService,\n private navigationService: MngNavigationService,\n private errorMapper: MngErrorMapperService,\n private linkFormatter: MngLinkFormatterPipe,\n @Inject(ACTION_EDITOR_DIALOG_COMPONENT_SETTING) private defaultEditorDialogComponent: Type<any>\n ) {\n // this.debug = true;\n }\n\n public prepareActionContextValidation<T, S>(action: ActionDescriptor<T>, parameters: ActionParameters<T>, dataProvider?: IDataProvider<T, S>): ActionContextValidation<T, S> {\n const ctxDataProvider = dataProvider ?? action.dataProvider ?? parameters.viewContainer?.getDataProvider();\n const ctx = new ActionContextValidation<T, S>(action, parameters, ctxDataProvider, this.getDataProviderService(ctxDataProvider) ?? undefined);\n return ctx;\n }\n\n public prepareActionContext<T, S>(\n instance: ActionInstance<T, S>,\n parameters: ActionParameters<T>,\n dataProvider?: IDataProvider<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<T, S> {\n const ctxDataProvider = dataProvider ?? instance.action.dataProvider ?? parameters.viewContainer?.getDataProvider();\n const ctx = new ActionContext<T, S>(instance, parameters, 'run', ctxDataProvider, this.getDataProviderService(ctxDataProvider) ?? undefined);\n ctx.previousActionInstance = previousActionInstance;\n instance.newContext(ctx);\n return ctx;\n }\n\n /**\n * Prepares action exec 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 viewContainer View container/service.\n * @param actionData Additional action data.\n */\n private prepareContextForEditor<T, S>(\n instance: ActionInstance<T, S>,\n parameters: ActionParameters<T>,\n functionName: 'submit' | 'fetch',\n dataProvider?: IEditorDataProvider<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<T, S> {\n const editorAction = instance.action as ActionEditorDescriptor<T>;\n let ctxDataProvider = dataProvider;\n if (!ctxDataProvider && editorAction.dataProvider) {\n ctxDataProvider = editorAction.dataProvider;\n }\n if (!ctxDataProvider) {\n const viewContainerDataProvider = parameters.viewContainer?.getDataProvider();\n if (viewContainerDataProvider) {\n ctxDataProvider = viewContainerDataProvider as IEditorDataProvider<T, S>;\n }\n }\n const ctx = new ActionContext<T, S>(instance, parameters, functionName, ctxDataProvider, this.getDataProviderService(ctxDataProvider) ?? undefined);\n ctx.previousActionInstance = previousActionInstance;\n instance.newContext(ctx);\n return ctx;\n }\n\n /**\n * Runs action context by submitting execution results/errors to context, watching over instance results/errors, displaying notifications,\n * running next/error action and triggering dismiss of action.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @return Action context for submit (=run) function.\n */\n public runActionContext<T, S>(ctx: ActionContext<T, S>): Observable<T | null | undefined> {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n let actionEditor: ActionEditorDescriptor<T>;\n\n let fnObs: (ctx: ActionContext<T, S>) => Observable<T | null | undefined>;\n switch (ctx.functionName) {\n case 'submit':\n actionEditor = ctx.instance.action as ActionEditorDescriptor<T>;\n if (typeof actionEditor.submitFunction !== 'function') {\n return throwError(() => new Error(`Submit function for action ${actionEditor.actionNameLong} cannot be invoked.`));\n }\n fnObs = actionEditor.submitFunction;\n break;\n case 'fetch':\n actionEditor = ctx.instance.action as ActionEditorDescriptor<T>;\n fnObs = actionEditor.fetchFunction;\n break;\n case 'run':\n default:\n fnObs = ctx.instance.action.runFunction;\n break;\n }\n\n const retObs = of(void 0).pipe(\n first(),\n switchMap(() => {\n if (isMainRunFn) {\n // if main run function, also set loading to true\n ctx.instance.state = ActionInstanceStateEnum.RunStart;\n ctx.instance.isRunLoadingSubject.next(true);\n } else {\n ctx.instance.state = ActionInstanceStateEnum.FetchStart;\n }\n // start context execution to mark execution loading\n ctx.executionStart();\n\n return fnObs(ctx);\n }),\n mergeMap(runResult => {\n // set next state depending on run\n ctx.instance.state = isMainRunFn ? ActionInstanceStateEnum.RunEnd : ActionInstanceStateEnum.FetchEnd;\n // set execution result\n ctx.executionNext(runResult, isMainRunFn);\n\n if (isMainRunFn) {\n // set instance final result on main run execution\n ctx.instance.result = runResult;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle notification\n if (ctx.instance.action.hasRunNotificationSuccess) {\n ctx.notification = NotificationUtil.actionNotificationSuccess(\n this.translate,\n ctx.instance.action,\n ctx.functionName,\n ctx.instance.action.runNotificationSuccessTitle,\n ctx.instance.action.runNotificationSuccessMessage,\n ctx.parameters.viewContainer ?? undefined,\n ctx.parameters?.item\n );\n }\n\n // handle possible after run action\n if (ctx.instance.action.afterRunAction) {\n // mark new state for next action start\n ctx.instance.state = ActionInstanceStateEnum.NextActionStart;\n const nextActionInstance = this.activateAction(\n ctx.instance.action.afterRunAction,\n new ActionParameters(ctx.parameters.itemId, runResult)\n .withActionData(ctx.parameters.actionData)\n .withRoute(ctx.parameters.route)\n .withSourceComponent(ctx.parameters.sourceComponent)\n .withViewContainer(ctx.parameters.viewContainer),\n undefined,\n ctx.instance as ActionInstance<unknown, unknown>\n );\n ctx.instance.nextActionInstance = nextActionInstance;\n\n // finish current action when next action finishes\n return nextActionInstance.state$.pipe(\n filter(state => state >= ActionInstanceStateEnum.FinishSuccess),\n map(() => {\n ctx.instance.state = ActionInstanceStateEnum.NextActionEnd;\n return runResult;\n })\n );\n }\n }\n\n return of(runResult);\n }),\n map(runResult => {\n if (isMainRunFn) {\n // deactivate action\n this.deactivateAction(ctx.instance);\n }\n return runResult;\n }),\n catchError(err => {\n // transform error to mng action error\n const actionError = this.toMngActionError(err);\n\n // set instance state to error\n ctx.instance.state = isMainRunFn ? ActionInstanceStateEnum.RunError : ActionInstanceStateEnum.FetchError;\n // mark execution error on context\n ctx.executionError(actionError);\n\n let errorObs = of(void 0);\n if (isMainRunFn) {\n ctx.instance.error = err;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle error notification\n if (ctx.instance.action.hasRunNotificationError) {\n actionError.notification = NotificationUtil.actionNotificationError(\n this.translate,\n ctx.instance.action,\n actionError,\n ctx.functionName,\n ctx.parameters.viewContainer ?? undefined,\n ctx.parameters.item\n );\n }\n\n // handle possible error action if run\n if (isMainRunFn && ctx.instance.action.onRunErrorAction) {\n // cannot start with trigger, because routing might be problematic (lousing previous results etc.)\n const errorActionInstance = this.activateAction(\n ctx.instance.action.onRunErrorAction,\n new ActionParameters(ctx.parameters.itemId, ctx.parameters.item)\n .withActionData(ctx.parameters.actionData)\n .withRoute(ctx.parameters.route)\n .withSourceComponent(ctx.parameters.sourceComponent)\n .withViewContainer(ctx.parameters.viewContainer)\n );\n ctx.instance.errorActionInstance = errorActionInstance;\n errorObs = errorActionInstance.state$.pipe(\n filter(state => state >= ActionInstanceStateEnum.FinishSuccess),\n map(() => void 0)\n );\n }\n }\n\n // liste and map only to mark instance state as finished error state\n return errorObs.pipe(\n map(() => {\n // deactivate action\n this.deactivateAction(ctx.instance);\n // rethrow error to propagate furher\n throw actionError;\n })\n );\n })\n );\n\n retObs.subscribe({\n next: res => {\n if (this.debug) {\n console.debug(`ActionContext ${ctx.contextLongName} execution next event`, res);\n }\n },\n error: err => {\n if (this.debug) {\n console.debug(`ActionContext ${ctx.contextLongName} execution error event`, err);\n }\n }\n });\n\n return retObs;\n }\n\n /**\n * Runs editor action's submit (=main run) function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @return Action context for submit (=run) function.\n */\n public runEditorSave<T, S>(\n action: ActionEditorDescriptor<T>,\n parameters: ActionParameters<T>,\n dataProvider?: IEditorDataProvider<T, S>,\n instance?: ActionInstance<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<T, S> {\n if (!instance) {\n // create new instance if non provided\n instance = new ActionInstance<T, S>(action, ActionInstanceStateEnum.ActivationEnd, this.debug);\n }\n const context = this.prepareContextForEditor(instance, parameters, 'submit', dataProvider, previousActionInstance);\n this.runActionContext(context);\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 * Runs editor action's fetch function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @return Action context for fetch function.\n */\n public runEditorFetch<T, S>(\n action: ActionEditorDescriptor<T>,\n parameters: ActionParameters<T>,\n dataProvider?: IEditorDataProvider<T, S>,\n instance?: ActionInstance<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<T, S> {\n if (!instance) {\n // create new instance if non provided\n instance = new ActionInstance<T, S>(action, ActionInstanceStateEnum.ActivationEnd, this.debug);\n }\n const context = this.prepareContextForEditor(instance, parameters, 'fetch', dataProvider, previousActionInstance);\n this.runActionContext(context);\n return context;\n }\n\n /**\n * Runs action's main run function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context run.\n * @param dataProvider Data provider for context run.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @return Action context for run function.\n */\n public runAction<T, S>(\n action: ActionDescriptor<T>,\n parameters: ActionParameters<T>,\n dataProvider?: IDataProvider<T, S>,\n instance?: ActionInstance<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<T, S> {\n if (!instance) {\n // create new instance if non provided\n instance = new ActionInstance<T, S>(action, ActionInstanceStateEnum.ActivationEnd, this.debug);\n }\n const context = this.prepareActionContext(instance, parameters, dataProvider, previousActionInstance);\n if (action.hasRunConfirmation) {\n const sourceComponent = parameters?.sourceComponent;\n if (typeof sourceComponent?.getConfirmationService !== 'function' || typeof sourceComponent?.getConfirmationServiceInstanceKey !== 'function') {\n throw new Error(`Source component ${sourceComponent} should be implementing IConfirmationService interface to be able to provide confirmation functionality.`);\n }\n\n const srcConfirmComponent = sourceComponent as IActionConfirmationService;\n let confirmParams: Confirmation = {\n key: srcConfirmComponent.getConfirmationServiceInstanceKey(action),\n acceptVisible: false,\n rejectVisible: false\n };\n\n const item = parameters.item;\n if (action.runConfirmationTitle !== null) {\n confirmParams.header = I18nUtils.Action.get(this.translate, action, 'confirm.title', action.runConfirmationTitle, item, 'general.confirmation') ?? undefined;\n }\n if (action.runConfirmationMessage !== null) {\n confirmParams.message = I18nUtils.Action.get(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 = I18nUtils.Action.get(this.translate, action, 'confirm.accept', action.runConfirmationAcceptTitle, item, 'general.yes') ?? undefined;\n confirmParams.acceptVisible = true;\n }\n if (action.runConfirmationRejectTitle !== null) {\n confirmParams.rejectLabel = I18nUtils.Action.get(this.translate, action, 'confirm.reject', action.runConfirmationRejectTitle, item, 'general.no') ?? undefined;\n confirmParams.rejectVisible = true;\n }\n\n confirmParams.accept = () => {\n instance!.state = ActionInstanceStateEnum.RunConfirmationEndAccept;\n this.runActionContext(context);\n };\n\n confirmParams.reject = () => {\n instance!.state = ActionInstanceStateEnum.RunConfirmationEndReject;\n this.deactivateAction(instance!);\n };\n\n if (action.runConfirmationConfigMapFn) {\n confirmParams = action.runConfirmationConfigMapFn(context, confirmParams);\n }\n\n context.confirmation = confirmParams;\n instance.state = ActionInstanceStateEnum.RunConfirmationStart;\n srcConfirmComponent.getConfirmationService().confirm(confirmParams);\n } else {\n this.runActionContext(context);\n }\n return context;\n }\n\n /**\n * Activates action (in case of dialog, dialog will be opened).\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for activation of action instance.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @return Action instance - if non provided in parameters, the newly created will be returned.\n */\n public activateAction<T, S>(\n action: ActionDescriptor<T>,\n parameters: ActionParameters<T>,\n instance?: ActionInstance<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionInstance<T, S> {\n if (!instance) {\n // create new instance if non provided\n instance = new ActionInstance<T, S>(action, ActionInstanceStateEnum.ActivationStart, this.debug);\n }\n instance.activationParameters = parameters;\n // start activation instance\n instance.state = ActionInstanceStateEnum.ActivationStart;\n if (action.type === ActionTypeEnum.Editor) {\n let dialogComponent = this.defaultEditorDialogComponent;\n let dialogClassName = '';\n if (action instanceof ActionEditorDescriptor) {\n dialogClassName = action.dialogClassName ?? 'mng-action-editor-dialog';\n let dialogSizeClassName = '';\n switch (action.dialogSize) {\n case ActionEditorDialogSizeEnum.ExtraSmall:\n dialogSizeClassName = 'mng-action-editor-dialog-xs';\n break;\n case ActionEditorDialogSizeEnum.Small:\n dialogSizeClassName = 'mng-action-editor-dialog-sm';\n break;\n case ActionEditorDialogSizeEnum.Large:\n dialogSizeClassName = 'mng-action-editor-dialog-lg';\n break;\n case ActionEditorDialogSizeEnum.ExtraLarge:\n dialogSizeClassName = 'mng-action-editor-dialog-xl';\n break;\n case ActionEditorDialogSizeEnum.Normal:\n default:\n break;\n }\n if (dialogSizeClassName.length) {\n dialogClassName += ` ${dialogSizeClassName}`;\n }\n if (action.editorComponent) {\n dialogComponent = action.editorComponent;\n }\n }\n const dialogConfig: DynamicDialogConfig = {\n data: {},\n styleClass: dialogClassName\n };\n dialogConfig.data.actionInstance = instance;\n dialogConfig.data.previousActionInstance = previousActionInstance;\n const dialogRef = this.dialogService.open(dialogComponent, dialogConfig);\n dialogRef.onClose.pipe(first()).subscribe(() => {\n this.deactivateAction(instance!, true);\n });\n instance.activationDialogRef = dialogRef;\n return instance;\n } else {\n // directly execute action\n instance.state = ActionInstanceStateEnum.ActivationEnd;\n const context = this.runAction<T, S>(action, parameters, undefined, instance, previousActionInstance);\n return context.instance;\n }\n }\n\n /**\n * Deactivates action by choosing final state, closing dialog and completing all subjects in instance and contexts.\n *\n * @param instance Action instance.\n * @param fromDialogListener Deactivation called from dialog listener, in this case deactivation happens only if true.\n */\n public deactivateAction<T, S>(instance: ActionInstance<T, S>, fromDialogListener = false) {\n if (!fromDialogListener && instance.state >= ActionInstanceStateEnum.FinishSuccess) {\n if (this.debug) {\n console.debug(`ActionInstance ${instance.instanceLongName} already finished`);\n }\n return;\n }\n\n let finalState: ActionInstanceStateEnum;\n if (typeof instance.result !== 'undefined') {\n finalState = ActionInstanceStateEnum.FinishSuccess;\n } else if (typeof instance.error !== 'undefined') {\n finalState = ActionInstanceStateEnum.FinishError;\n } else {\n finalState = ActionInstanceStateEnum.FinishDismissed;\n }\n\n if (instance.action.type === ActionTypeEnum.Editor) {\n const hasDialog = typeof instance.activationDialogRef !== 'undefined';\n if (hasDialog && !fromDialogListener) {\n if (finalState === ActionInstanceStateEnum.FinishSuccess) {\n // if state is finish and not called from dialog listener, close the dialog first which will retrigger this function, then finish it\n instance.activationDialogRef!.close(instance.result);\n }\n // error and dismissed must both have fromDialogListener to be able to finish\n return;\n }\n }\n\n // set final state on instance\n instance.state = finalState;\n // complete all subjects\n instance.finish();\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 * @param tableDescriptor Table descriptor.\n * @param dataKeyProperty Data key property.\n */\n public triggerRowClickAction<T>(\n action: ActionDescriptor<T>,\n event: MngTableCellClickEvent<T>,\n route?: ActivatedRoute,\n tableDescriptor?: TableDescriptor<T>,\n dataKeyProperty?: string\n ) {\n const idProperty = dataKeyProperty ?? tableDescriptor?.dataKeyProperty ?? action?.model?.idPropertyName ?? dataKeyProperty;\n if (!idProperty) {\n throw new Error(`Row click action ${action.actionNameLong} can not be triggered, because id property could not be found.`);\n }\n const rowItem = event?.rowItem as any;\n return this.triggerAction(action, new ActionParameters<T>(rowItem[idProperty], event.rowItem).withRoute(route));\n }\n\n /**\n * Triggers action with parameters.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for action execution to construct new route.\n *\n * @return Action instance - if non provided in parameters, the newly created will be returned.\n */\n public triggerAction<T, S>(action: ActionDescriptor<T>, parameters: ActionParameters<T>): ActionInstance<T, S> {\n const instance = new ActionInstance<T, S>(action, undefined, this.debug);\n instance.triggerParameters = parameters;\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n const baseUrl = this.router.url.split('?')[0];\n const parsedUrl: UrlTree = this.router.parseUrl(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\n const actionUrlSegments = this.linkFormatter.transform(actionUrl, parameters.itemId, parameters.item, action.model, parameters.actionData);\n instance.triggerRouteNavigation = from(this.router.navigate([baseUrl, ...actionUrlSegments], {relativeTo: parameters.route, queryParams: parsedUrl.queryParams}));\n\n return instance;\n } else {\n instance.state = ActionInstanceStateEnum.TriggerEnd;\n return this.activateAction(action, parameters);\n }\n }\n\n /**\n * Deactivates on route triggered action by trying to reroute back to location where action was triggered.\n * @param instance Action instance.\n */\n public deactivateOnRouteTriggeredAction<T, S>(instance: ActionInstance<T, S>) {\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n return;\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 = instance.action?.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 }\n\n /**\n * Transform error of any type to mng error by using error mapper that could be provided by final project.\n * @param error error of any type.\n *\n * @return mapped MngError.\n */\n public toMngActionError(error?: any): MngError {\n const actionError: MngError = {\n name: error?.name ?? 'UnknownError',\n message: error?.message ?? 'Unknown error',\n cause: error\n };\n if (error instanceof HttpErrorResponse) {\n actionError.status = error.status;\n actionError.statusDescription = error.statusText;\n actionError.url = error.url ?? undefined;\n }\n return this.errorMapper.toMngError(error, actionError);\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {Title} from '@angular/platform-browser';\nimport {ActivatedRouteSnapshot, NavigationEnd, Router} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {PrimeNGConfig} from 'primeng/api';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {MngModuleConfig} from '../config/models';\nimport {FilterMatchModeEnum} from '../descriptors/types';\nimport {IUser, MngMenuItem} from '../models';\nimport {MngBreadcrumbMenuItem, MngRouterData} from '../router/models';\nimport {MNG_BROWSER_STORAGE_IT, MNG_MODULE_CONFIG_IT} from './tokens';\n\n@Injectable()\nexport class MngCommonsService {\n // internal\n private routerEventsSubscription?: Subscription;\n private translateLangChangeSubscription?: Subscription;\n\n // menu\n private _menuMode: 'static' | 'sidebar' | 'slim' | 'overlay' = 'sidebar';\n private _menuModeSubject: Subject<'static' | 'sidebar' | 'slim' | 'overlay'> = new BehaviorSubject(this._menuMode);\n private _menuItems: MngMenuItem[] = [];\n private _menuPinEnabled = false;\n private _menuActiveKeySubject = new Subject<string>();\n private _menuResetSubject = new Subject();\n\n // breadcrumbs\n private readonly breadcrumbHomeSubject = new BehaviorSubject<MngMenuItem | null>({\n icon: 'pi pi-home',\n routerLink: '/'\n });\n private readonly breadcrumbsSubject = new BehaviorSubject<MngMenuItem[]>([]);\n private breadcrumbsTranslateSubscription?: Subscription;\n private breadcrumbHomeTranslateSubscription?: Subscription;\n\n // visual\n private _colorScheme: 'light' | 'dark' = 'light';\n\n // user\n private _user?: IUser;\n private userSubject: Subject<IUser | undefined> = new ReplaySubject(1);\n private _userRoles: Array<string> = [];\n private userRolesSubject: Subject<Array<string>> = new BehaviorSubject<Array<string>>([]);\n\n constructor(\n private router: Router,\n private primengConfig: PrimeNGConfig,\n private translate: TranslateService,\n private titleService: Title,\n @Inject(MNG_MODULE_CONFIG_IT) private moduleConfig: MngModuleConfig,\n @Inject(MNG_BROWSER_STORAGE_IT) private localStorage: Storage\n ) {}\n\n // APP section\n\n public get appName() {\n return this.moduleConfig?.app?.name ?? 'app.name';\n }\n\n public get appOwner() {\n return this.moduleConfig?.app?.owner ?? 'app.owner';\n }\n\n public get appLogoLight() {\n return this.moduleConfig?.app?.logoPathLight ? this.moduleConfig.app.logoPathLight : this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png';\n }\n\n public get appLogoDark() {\n return this.moduleConfig?.app?.logoPathDark ? this.moduleConfig.app.logoPathDark : this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png';\n }\n\n public get appLogoNameLight() {\n return this.moduleConfig?.app?.logoNamePathLight\n ? this.moduleConfig.app.logoNamePathLight\n : this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png';\n }\n\n public get appLogoNameDark() {\n return this.moduleConfig?.app?.logoNamePathDark ? this.moduleConfig.app.logoNamePathDark : this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png';\n }\n\n public get appLanguages() {\n return this.moduleConfig?.app?.languages ?? ['en'];\n }\n\n public get appLanguage(): string {\n const lang = this.localStorage.getItem('lang');\n if (lang) {\n return lang;\n }\n const browserLang = this.translate.getBrowserLang();\n if (browserLang && this.appLanguages.some(l => l === browserLang)) {\n this.appLanguage = browserLang;\n return browserLang;\n }\n const defaultLanguage = this.appLanguages?.length > 0 ? this.appLanguages[0] : 'en';\n this.appLanguage = defaultLanguage;\n return defaultLanguage;\n }\n\n public set appLanguage(language: string) {\n if (this.appLanguages.some(l => l === language)) {\n this.localStorage.setItem('lang', language);\n this.translate.use(language);\n }\n }\n\n public get appVersion() {\n return this.moduleConfig?.app?.version;\n }\n\n // MENU section\n\n public get menuModeIsStatic() {\n return this._menuMode === 'static';\n }\n\n public get menuModeIsStatic$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'static'));\n }\n\n public get menuModeIsOverlay() {\n return this._menuMode === 'overlay';\n }\n\n public get menuModeIsOverlay$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'overlay'));\n }\n\n public get menuModeIsSlim() {\n return this._menuMode === 'slim';\n }\n\n public get menuModeIsSlim$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'slim'));\n }\n\n public get menuModeIsSidebar() {\n return this._menuMode === 'sidebar';\n }\n\n public get menuModeIsSidebar$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'sidebar'));\n }\n\n public get menuActiveKey$(): Observable<string> {\n return this._menuActiveKeySubject.asObservable();\n }\n\n public get menuReset$(): Observable<any> {\n return this._menuResetSubject.asObservable();\n }\n\n public get menuItems() {\n return this._menuItems;\n }\n\n public set menuItems(menuItems: MngMenuItem[]) {\n this._menuItems = menuItems;\n }\n\n public get menuPinEnabled() {\n return this._menuPinEnabled;\n }\n\n // BREADCRUMB section\n public get breadcrumbHome$() {\n return this.breadcrumbHomeSubject.asObservable();\n }\n\n public get breadcrumbs$() {\n return this.breadcrumbsSubject.asObservable();\n }\n\n // VISUAL section\n\n public get colorSchemeIsLight() {\n return this._colorScheme === 'light';\n }\n\n public get colorSchemeIsDark() {\n return this._colorScheme === 'dark';\n }\n\n // USER section\n\n public get user() {\n return this._user;\n }\n\n public set user(user: IUser | undefined) {\n this._user = user;\n this.userSubject.next(user);\n }\n\n public get user$() {\n return this.userSubject.asObservable();\n }\n\n public get userRoles() {\n return this._userRoles;\n }\n\n public set userRoles(roles: Array<string>) {\n this._userRoles = roles;\n this.userRolesSubject.next(roles);\n }\n\n public get userRoles$() {\n return this.userRolesSubject.asObservable();\n }\n\n public reset() {\n this._menuMode = this.moduleConfig?.menu?.mode ?? 'sidebar';\n this._menuModeSubject.next(this._menuMode);\n this._menuItems = this.moduleConfig?.menu?.menuItems ?? [];\n this._menuPinEnabled = this.moduleConfig?.menu?.pinEnabled ?? false;\n\n // visual\n this._colorScheme = this.moduleConfig?.app?.colorScheme ?? 'light';\n\n // ripple\n this.primengConfig.ripple = true;\n this.primengConfig.filterMatchModeOptions = {\n text: [FilterMatchModeEnum.Contains, FilterMatchModeEnum.Equals, FilterMatchModeEnum.NotEquals, FilterMatchModeEnum.StartsWith, FilterMatchModeEnum.EndsWith],\n numeric: [FilterMatchModeEnum.Equals, FilterMatchModeEnum.NotEquals, FilterMatchModeEnum.LessThan, FilterMatchModeEnum.GreaterThan],\n date: [FilterMatchModeEnum.DateIs, FilterMatchModeEnum.DateIsNot, FilterMatchModeEnum.DateBefore, FilterMatchModeEnum.DateAfter]\n };\n\n // translate\n this.translate.langs = this.appLanguages;\n this.translate.use(this.appLanguage);\n this.translate.get('mngPrime').subscribe(value => this.primengConfig.setTranslation(value));\n\n this.routerEventsSubscription?.unsubscribe();\n this.routerEventsSubscription = this.router.events\n .pipe(\n // Filter the NavigationEnd events as the breadcrumb is updated only when the route reaches its end\n filter(event => event instanceof NavigationEnd)\n )\n .subscribe(() => {\n this.updateBreadcrumbs();\n this.setPageTitle();\n });\n this.translateLangChangeSubscription?.unsubscribe();\n this.translateLangChangeSubscription = this.translate.onLangChange.subscribe(() => {\n this.updateBreadcrumbs();\n this.setPageTitle();\n });\n }\n\n // MENU actions\n\n menuChangeActiveKey(key: string) {\n this._menuActiveKeySubject.next(key);\n }\n\n menuReset() {\n this._menuResetSubject.next(null);\n }\n\n // BREADCRUMB actions\n\n private updateBreadcrumbs() {\n if (this.breadcrumbsTranslateSubscription) {\n this.breadcrumbsTranslateSubscription.unsubscribe();\n this.breadcrumbsTranslateSubscription = undefined;\n }\n if (this.breadcrumbHomeTranslateSubscription) {\n this.breadcrumbHomeTranslateSubscription.unsubscribe();\n this.breadcrumbHomeTranslateSubscription = undefined;\n }\n\n const rootRoute = this.router.routerState.snapshot.root;\n\n const homeBreadcrumb = this.generateHomeBreadcrumb(rootRoute);\n if (homeBreadcrumb) {\n if (homeBreadcrumb.label) {\n this.breadcrumbHomeTranslateSubscription = this.translate.get(homeBreadcrumb.label).subscribe(i18n => {\n homeBreadcrumb.label = i18n;\n this.breadcrumbHomeSubject.next(homeBreadcrumb);\n });\n } else {\n this.breadcrumbHomeSubject.next(homeBreadcrumb);\n }\n }\n\n const breadcrumbs: MngMenuItem[] = [];\n this.generateBreadcrumbs(rootRoute, [], breadcrumbs);\n\n const i18nKeys: Array<string> = breadcrumbs.filter(b => typeof b.label === 'string').map(b => b.label!);\n if (i18nKeys.length > 0) {\n this.breadcrumbsTranslateSubscription = this.translate.get(i18nKeys).subscribe(i18n => {\n // Construct the breadcrumb hierarchy\n breadcrumbs.forEach(b => {\n if (b.label && i18n[b.label]) {\n b.label = i18n[b.label];\n }\n });\n\n // Emit the new breadcrumbs\n this.breadcrumbsSubject.next(breadcrumbs);\n });\n } else {\n this.breadcrumbsSubject.next(breadcrumbs);\n }\n }\n\n private generateHomeBreadcrumb(route: ActivatedRouteSnapshot | null): MngMenuItem | null {\n if (!route) {\n return null;\n }\n\n const routeData = route.data as MngRouterData;\n const breadcrumbRouteData = routeData?.breadcrumb;\n if (breadcrumbRouteData && typeof breadcrumbRouteData === 'object' && 'isHome' in breadcrumbRouteData) {\n if (breadcrumbRouteData.isHome === false) {\n return null;\n }\n const breadcrumb = this.createBreadcrumb('/', breadcrumbRouteData, true);\n if (breadcrumb) {\n if (typeof breadcrumb.icon === 'undefined') {\n breadcrumb.icon = 'pi pi-home';\n }\n return breadcrumb;\n }\n } else {\n return this.generateHomeBreadcrumb(route.firstChild);\n }\n return null;\n }\n\n private generateBreadcrumbs(route: ActivatedRouteSnapshot | null, parentUrlSegments: string[], breadcrumbs: MngMenuItem[]) {\n if (!route) {\n return;\n }\n\n const routeData = route.data as MngRouterData;\n const routeUrlSegments = parentUrlSegments.concat(route.url.map(url => url.path));\n const routeUrl = `/${routeUrlSegments.join('/')}`;\n if (routeData?.breadcrumb) {\n const breadcrumbRouteData = routeData.breadcrumb;\n\n if (Array.isArray(breadcrumbRouteData)) {\n for (const breadcrumbRouteDataItem of breadcrumbRouteData) {\n const breadcrumb = this.createBreadcrumb(routeUrl, breadcrumbRouteDataItem);\n if (breadcrumb) {\n breadcrumbs.push(breadcrumb);\n }\n }\n } else if (typeof breadcrumbRouteData === 'function') {\n breadcrumbs.push(...breadcrumbRouteData(routeUrl, route));\n } else {\n const breadcrumb = this.createBreadcrumb(routeUrl, breadcrumbRouteData);\n if (breadcrumb) {\n breadcrumbs.push(breadcrumb);\n }\n }\n }\n this.generateBreadcrumbs(route.firstChild, routeUrlSegments, breadcrumbs);\n }\n\n private createBreadcrumb(routeUrl: string, routeBreadcrumb: string | MngBreadcrumbMenuItem, includeHome = false): MngMenuItem | null {\n if (typeof routeBreadcrumb === 'string') {\n return {\n label: routeBreadcrumb,\n routerLink: routeUrl\n };\n } else {\n if (!includeHome && typeof routeBreadcrumb.isHome !== 'undefined') {\n // home should not be included\n return null;\n }\n if (typeof routeBreadcrumb.routerLink === 'undefined') {\n routeBreadcrumb.routerLink = routeUrl;\n }\n return routeBreadcrumb;\n }\n }\n\n // TITLE section\n\n public setPageTitle(title?: string) {\n let currentRoute = this.router.routerState.snapshot.root;\n while (currentRoute.firstChild) {\n currentRoute = currentRoute.firstChild;\n }\n\n const routeData = currentRoute.data as MngRouterData;\n const pageTitle = title ?? routeData.pageTitle;\n\n this.titleService.setTitle(this.formatPageTitle(pageTitle));\n }\n\n private formatPageTitle(titlePrefix?: string) {\n const titlePieces = [];\n\n if (titlePrefix) {\n titlePieces.push(this.translate.instant(titlePrefix));\n }\n\n titlePieces.push(this.translate.instant('app.name'));\n\n return titlePieces.join(' - ');\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {MessageService} from 'primeng/api';\nimport {Subject} from 'rxjs';\n\nimport {IDataProvider} from '../data-providers';\nimport {ActionDescriptor} from '../descriptors';\nimport {IViewContainer} from '../models';\n\n/**\n * Should be used with providers defined within component.\n */\n@Injectable()\nexport class MngViewContainerComponentService<T, S> implements IViewContainer<T, S> {\n private _dataProvider?: IDataProvider<T, S>;\n public actions: Array<ActionDescriptor<T>> = [];\n\n private _reloadTableSubject: Subject<any> = new Subject();\n\n constructor(private messageService: MessageService) {}\n\n public set dataProvider(dataProvider: IDataProvider<T, S>) {\n this._dataProvider = dataProvider;\n }\n\n public get reloadTable() {\n return this._reloadTableSubject.asObservable();\n }\n\n public triggerTableReload(event: any) {\n this._reloadTableSubject.next(event);\n }\n\n public getMessageService(): MessageService {\n return this.messageService;\n }\n\n public getDataProvider(): IDataProvider<T, S> | undefined {\n return this._dataProvider;\n }\n}\n","import {Injectable, Injector} from '@angular/core';\nimport {ActivatedRouteSnapshot, Router} from '@angular/router';\n\nimport {Observable, combineLatest, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ActionContextValidation} from '../components/action/models';\nimport {APermissions, AuthorizationTypeEnum, Permissions} from '../security/model';\nimport {MngCommonsService} from '../services';\nimport {AuthorizationUtil} from './authorization.util';\n\n@Injectable()\nexport class MngAuthorizationService {\n constructor(private injector: Injector, private router: Router, private commons: MngCommonsService) {}\n\n public isPermitted(permissions: APermissions, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>): Observable<boolean> {\n switch (permissions.authorizationType) {\n case AuthorizationTypeEnum.All:\n return this.isPermittedAll(permissions as Permissions.All, route, actionCtx);\n case AuthorizationTypeEnum.Any:\n return this.isPermittedAny(permissions as Permissions.Any, route, actionCtx);\n case AuthorizationTypeEnum.Service:\n return this.isPermittedService(permissions as Permissions.Service, route, actionCtx);\n default:\n return this.commons.userRoles$.pipe(map(ur => AuthorizationUtil.isPermitted(permissions, ur)));\n }\n }\n\n private isPermittedAll(permission: Permissions.All, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>) {\n return combineLatest(permission.permissions.map(p => this.isPermitted(p, route, actionCtx))).pipe(map(res => res.every(ip => ip === true)));\n }\n\n private isPermittedAny(permission: Permissions.Any, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>) {\n return combineLatest(permission.permissions.map(p => this.isPermitted(p, route, actionCtx))).pipe(map(res => res.some(ip => ip === true)));\n }\n\n private isPermittedService(permission: Permissions.Service, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>) {\n const serviceInstance = this.injector.get(permission.service);\n if (!serviceInstance) {\n console.warn(`Service instance could not be retreived for type ${permission.service}`);\n return of(false);\n }\n return serviceInstance.isPermitted(route, this.router.routerState.snapshot, actionCtx);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree} from '@angular/router';\n\nimport {Observable, of} from 'rxjs';\nimport {first} from 'rxjs/operators';\n\nimport {MngRouterData} from '../router/models';\nimport {MngAuthorizationService} from './authorization.service';\n\n@Injectable()\nexport class MngAuthorizationGuard implements CanActivate {\n constructor(private authorization: MngAuthorizationService) {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const data = route.data as MngRouterData;\n\n if (data.permissions) {\n return this.authorization.isPermitted(data.permissions).pipe(first());\n } else {\n return of(true);\n }\n }\n}\n","import {ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, OnInit, Optional, Output, SimpleChanges} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfirmationService} from 'primeng/api';\nimport {Observable, ReplaySubject, Subscription, distinctUntilChanged, of} from 'rxjs';\n\nimport {MediusQueryParam} from '../../api/models';\nimport {IDataProvider} from '../../data-providers';\nimport {ActionDescriptor, ActionLinkDescriptor} from '../../descriptors';\nimport {ActionLevelEnum} from '../../descriptors/types';\nimport {IViewContainer} from '../../models';\nimport {MngRouterData} from '../../router/models';\nimport {MngAuthorizationService} from '../../security';\nimport {APermissions, Permissions} from '../../security/model';\nimport {MngActionExecutorService, MngViewContainerComponentService} from '../../services';\nimport {IdType} from '../../types';\nimport {I18nUtils} from '../../utils';\nimport {ActionData, ActionInstance, ActionParameters, IActionConfirmationService} from './models';\n\n@Component({\n selector: 'mng-action',\n templateUrl: './action.component.html',\n styleUrls: ['./action.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfirmationService]\n})\nexport class MngActionComponent<T, S> implements OnInit, OnChanges, OnDestroy, IActionConfirmationService {\n public readonly levelDefault = ActionLevelEnum.Default;\n public readonly levelPrimary = ActionLevelEnum.Primary;\n public readonly levelSecondary = ActionLevelEnum.Secondary;\n public readonly levelInfo = ActionLevelEnum.Info;\n public readonly levelHelp = ActionLevelEnum.Help;\n public readonly levelSuccess = ActionLevelEnum.Success;\n public readonly levelWarning = ActionLevelEnum.Warning;\n public readonly levelDanger = ActionLevelEnum.Danger;\n\n @HostBinding('class') hostClass = 'mng-action-button';\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 @Input() public queryParam?: MediusQueryParam;\n @Input() public dataProvider?: IDataProvider<T, S>;\n @Input('disabled') public inputDisabled: Observable<boolean> = of(false);\n @Input('loading') public inputLoading: Observable<boolean> = of(false);\n @Input('viewContainer') public viewContainerInit?: IViewContainer<T, S>;\n\n @Output('finish') public finishEventEmitter = new EventEmitter<ActionInstance<T, S>>();\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 private isVisibleSubject = new ReplaySubject<boolean>(1);\n private isVisibleSubscription?: Subscription;\n public $isVisible = this.isVisibleSubject.asObservable().pipe(distinctUntilChanged());\n private isPermittedSubject = new ReplaySubject<boolean>(1);\n private isPermittedSubscription?: Subscription;\n public $isPermitted = this.isPermittedSubject.asObservable().pipe(distinctUntilChanged());\n private isEnabledSubject = new ReplaySubject<boolean>(1);\n private isEnabledSubscription?: Subscription;\n public $isEnabled = this.isEnabledSubject.asObservable().pipe(distinctUntilChanged());\n private labelSubject = new ReplaySubject<string | null>(1);\n private labelSubscription?: Subscription;\n public $label = this.labelSubject.asObservable().pipe(distinctUntilChanged());\n private tooltipSubject = new ReplaySubject<string | null>(1);\n private tooltipSubscription?: Subscription;\n public $tooltip = this.tooltipSubject.asObservable().pipe(distinctUntilChanged());\n\n private viewContainer?: IViewContainer<T, S>;\n\n public actionLink?: ActionLinkDescriptor<T>;\n public hasNoTitle = false;\n\n private subscriptions: Subscription[] = [];\n\n private routePermissions?: APermissions;\n\n constructor(\n private route: ActivatedRoute,\n private translate: TranslateService,\n private authorization: MngAuthorizationService,\n private actionExecutor: MngActionExecutorService,\n private confirmationService: ConfirmationService,\n @Optional() private viewContainerService: MngViewContainerComponentService<T, S> | null\n ) {\n this.loadingSubject.next(false);\n }\n\n public ngOnInit() {\n this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;\n\n this.hasNoTitle = this.action.title === null;\n this.isEnabledSubject.next(true);\n this.isVisibleSubject.next(true);\n this.isPermittedSubject.next(true);\n this.labelSubject.next(null);\n this.tooltipSubject.next(null);\n\n const routeData = this.route.snapshot.data as MngRouterData;\n if (this.action instanceof ActionLinkDescriptor) {\n this.actionLink = this.action;\n }\n\n if (this.action.permissionsRouteType && routeData.tableviewPermissions) {\n if (routeData.tableviewPermissions[this.action.permissionsRouteType]) {\n this.routePermissions = routeData.tableviewPermissions[this.action.permissionsRouteType];\n }\n }\n\n this.processSubscriptions();\n\n if (this.action.className) {\n this.hostClass = this.action.className;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!(changes['item']?.firstChange ?? true) || !(changes['itemId']?.firstChange ?? true) || !(changes['actionData']?.firstChange ?? true)) {\n this.processSubscriptions();\n }\n }\n\n ngOnDestroy(): void {\n this.isVisibleSubscription?.unsubscribe();\n this.isPermittedSubscription?.unsubscribe();\n this.isEnabledSubscription?.unsubscribe();\n this.labelSubscription?.unsubscribe();\n this.tooltipSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public triggerAction(event: Event) {\n const actionData = this.actionData ? this.actionData : {};\n actionData['cmpId'] = this.cmpId;\n\n const parameters = new ActionParameters(this.itemId, this.item)\n .withActionData(actionData)\n .withQueryParam(this.queryParam)\n .withRoute(this.route)\n .withViewContainer(this.viewContainer)\n .withSourceComponent(this);\n const instance = this.actionExecutor.triggerAction(this.action, parameters);\n\n this.subscriptions.push(\n instance.result$.subscribe({\n next: () => {\n this.finishEventEmitter.next(instance);\n }\n })\n );\n this.subscriptions.push(\n instance.error$.subscribe({\n next: () => {\n this.finishEventEmitter.next(instance);\n }\n })\n );\n this.subscriptions.push(\n instance.isRunLoading$.subscribe({\n next: res => {\n this.loadingSubject.next(res);\n }\n })\n );\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 private processSubscriptions() {\n const parameters = new ActionParameters(this.itemId, this.item)\n .withActionData(this.actionData)\n .withViewContainer(this.viewContainer ?? undefined)\n .withSourceComponent(this);\n const context = this.actionExecutor.prepareActionContextValidation(this.action, parameters, this.dataProvider);\n\n if (typeof this.action.isVisibleFunction === 'function') {\n this.isVisibleSubscription?.unsubscribe();\n this.isVisibleSubscription = this.action.isVisibleFunction(context).subscribe({\n next: res => this.isVisibleSubject.next(res)\n });\n }\n if (typeof this.action.permissions !== 'undefined' || typeof this.routePermissions !== 'undefined') {\n this.isPermittedSubscription?.unsubscribe();\n const permissions =\n this.action.permissions && this.routePermissions\n ? Permissions.All.of(this.routePermissions, this.action.permissions)\n : this.routePermissions ?? this.action.permissions!;\n this.isVisibleSubscription = this.authorization.isPermitted(permissions, this.route.snapshot, context).subscribe({\n next: res => this.isPermittedSubject.next(res)\n });\n }\n if (typeof this.action.isEnabledFunction === 'function') {\n this.isEnabledSubscription?.unsubscribe();\n this.isEnabledSubscription = this.action.isEnabledFunction(context).subscribe({\n next: res => this.isEnabledSubject.next(res)\n });\n }\n\n if (!this.hasNoTitle) {\n this.labelSubscription?.unsubscribe();\n this.labelSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'title', this.action?.title ?? undefined, this.item).subscribe({\n next: i18n => this.labelSubject.next(i18n)\n });\n }\n\n this.tooltipSubscription?.unsubscribe();\n this.tooltipSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'tooltip', this.action?.tooltip ?? undefined, this.item).subscribe({\n next: i18n => this.tooltipSubject.next(i18n)\n });\n }\n}\n","<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | async)\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : actionLink.url\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"\n ($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | linkFormatter: itemId:item:action.model:actionData)\n \"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></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, Optional} 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';\n\nimport {ActionDescriptor} from '../../../descriptors';\nimport {ActionActivationTriggerEnum} from '../../../descriptors/types';\nimport {MngActionExecutorService, MngNavigationService, MngViewContainerComponentService} from '../../../services';\nimport {ActionData, ActionInstance, ActionInstanceStateEnum, ActionParameters, IActionConfirmationService} from '../models';\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 MngActionRouteComponent<T, S> implements OnInit, OnDestroy, IActionConfirmationService {\n public cmpId: string = Math.random().toString(36).substring(2);\n private actions: Array<ActionDescriptor<T>> = [];\n private activeActionInstance?: ActionInstance<T, S>;\n private dialogRef?: DynamicDialogRef;\n private dialogCloseSubscription?: Subscription;\n private subscriptions: Array<Subscription> = [];\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private confirmationService: ConfirmationService,\n private navigationService: MngNavigationService,\n private actionExecutor: MngActionExecutorService,\n @Optional() private viewContainerService: MngViewContainerComponentService<T, S> | null\n ) {}\n\n public ngOnInit() {\n this.actions = this.viewContainerService?.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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getConfirmationServiceInstanceKey(action: ActionDescriptor<any>) {\n return `actionRoute_${this.cmpId}`;\n }\n\n private activateAction(action: ActionDescriptor<T>, p: Params, qp: Params) {\n const itemId = p['itemId'];\n const actionData: ActionData = {};\n for (const key in p) {\n if (key === 'itemId') {\n continue;\n }\n actionData[key] = p[key];\n }\n for (const key in qp) {\n actionData[key] = p[key];\n }\n const instance = this.actionExecutor.activateAction(\n action,\n new ActionParameters<T>(itemId)\n .withActionData(actionData)\n .withViewContainer(this.viewContainerService ?? undefined)\n .withSourceComponent(this)\n );\n this.activeActionInstance = instance;\n\n if (instance.activationDialogRef) {\n this.dialogCloseSubscription = instance.activationDialogRef.onClose.subscribe(e => {\n const actionEv = e as T | null | undefined;\n if (instance.state === ActionInstanceStateEnum.FinishSuccess) {\n if (!this.viewContainerService) {\n console.warn(`View container service could not be found, table reload will not be triggered.`);\n }\n this.viewContainerService?.triggerTableReload(actionEv); // reload only if no error in action and\n }\n this.untriggerAction();\n });\n }\n }\n\n private untriggerAction() {\n if (this.dialogCloseSubscription) {\n this.dialogCloseSubscription.unsubscribe();\n this.dialogCloseSubscription = undefined;\n }\n this.actionExecutor.deactivateOnRouteTriggeredAction(this.activeActionInstance!);\n this.activeActionInstance = 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 {ComponentRef, Directive, EventEmitter, Input, OnInit, Output, Type, ViewContainerRef} from '@angular/core';\n\nimport {IColumnValueComponent} from '../models';\n\n@Directive({\n selector: '[mngComponent]'\n})\nexport class MngComponentDirective<C> implements OnInit {\n @Input('mngComponent') component!: Type<C>;\n @Input() inputs?: {[key: string]: any};\n @Output('instanceCreated') private componentInstanceEventEmitter = new EventEmitter<C>();\n\n public componentRef!: ComponentRef<C>;\n\n constructor(public viewContainerRef: ViewContainerRef) {}\n\n ngOnInit() {\n this.viewContainerRef.clear();\n this.componentRef = this.viewContainerRef.createComponent<any>(this.component);\n\n if (this.inputs) {\n if (this.isCmpInstanceOfColumnValue(this.componentRef.instance)) {\n this.componentRef.instance.setColumnValue(this.inputs['value'], this.inputs['item'], this.inputs['descriptor']);\n } else {\n const instanceAny = this.componentRef as any;\n for (const input in this.inputs) {\n instanceAny[input as keyof object] = this.inputs[input];\n }\n }\n }\n\n this.componentInstanceEventEmitter.next(this.componentRef.instance);\n }\n\n private isCmpInstanceOfColumnValue(cmp: any): cmp is IColumnValueComponent<any> {\n return typeof cmp.setColumnValue === 'function';\n }\n}\n","import {Directive, Input, TemplateRef, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[mngTemplate]'\n})\nexport class MngTemplateDirective {\n @Input() type!: string;\n @Input('mngTemplate') name!: string;\n\n constructor(public template: TemplateRef<any>, private viewContainerRef: ViewContainerRef) {}\n\n public getType(): string {\n return this.name;\n }\n\n public getViewContainerRef(): ViewContainerRef {\n return this.viewContainerRef;\n }\n}\n","import {ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList, ViewChild} from '@angular/core';\nimport {AbstractControl, FormArray, FormGroup} from '@angular/forms';\n\nimport {FormlyFieldConfig, FormlyFormOptions} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {Observable, Subscription, of} from 'rxjs';\n\nimport {EditorDescriptor} from '../../../descriptors';\nimport {MngTemplateDirective} from '../../../directives';\nimport {EditorFormlyUtil, NotificationUtil} from '../../../utils';\nimport {MngFormEditorSubmitEvent} from '../models';\n\n@Component({\n selector: 'mng-form-editor',\n templateUrl: './form-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormEditorComponent<T> implements OnInit, OnDestroy {\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('formSubmit') public formSubmitEventEmitter = new EventEmitter<MngFormEditorSubmitEvent<T>>();\n\n // content and view queries\n @ContentChildren(MngTemplateDirective) public templates!: QueryList<MngTemplateDirective>;\n @ViewChild('submitButton') 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(private translateService: TranslateService) {}\n\n public ngOnInit() {\n this.resetFormModel(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 ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n public submit() {\n this.submitButtonElementRef?.nativeElement.click();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onSubmit(event: Event) {\n this.formOptions.formState.submittedOn = Date.now();\n this.formMessages = [];\n\n const formSubmitItem = this.getFormValue();\n if (this.form.valid) {\n this.formSubmitEventEmitter.next(new MngFormEditorSubmitEvent(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 MngFormEditorSubmitEvent(formSubmitItem);\n event.success = false;\n this.formMessages.push(NotificationUtil.getFormEditorWarningMessage(this.translateService, 'mngEditor.invalidFormToastTitle', 'mngEditor.invalidFormToastMessage'));\n this.formSubmitEventEmitter.next(event);\n }\n }\n\n public getFormValue(): T {\n const formValue = this.form.getRawValue();\n this.descriptor.fields.forEach(field => {\n if (field && field.setter) {\n const splitPath = field.property.split('.');\n let fieldValue = formValue;\n for (let i = 0; i < splitPath.length; i++) {\n const currentSubPath = splitPath[i];\n if (typeof fieldValue[currentSubPath] !== 'object') {\n fieldValue[currentSubPath] = {};\n }\n\n fieldValue = fieldValue[currentSubPath];\n }\n field.setter(formValue, fieldValue);\n }\n });\n return formValue;\n }\n\n public getFormField(key: string) {\n return this.findFormField(this.form, key.split('.'));\n }\n\n public setFormFieldValue(key: string, value: any) {\n const control = this.getFormField(key);\n if (control) {\n control.setValue(value);\n } else {\n console.warn(`Value was not set, because field ${key} was not found.`);\n }\n }\n\n public patchFormFieldValue(key: string, value: any) {\n const control = this.getFormField(key);\n if (control) {\n control.patchValue(value);\n } else {\n console.warn(`Value was not set, because field ${key} was not found.`);\n }\n }\n\n public resetFormFieldValue(key: string, value?: any) {\n const control = this.getFormField(key);\n if (control) {\n control.reset(value);\n } else {\n console.warn(`Value was not set, because field ${key} was not found.`);\n }\n }\n\n private findFormField(control: AbstractControl, keyPath: string[]): AbstractControl | null {\n if (keyPath.length === 0) {\n return control;\n }\n if (keyPath.length === 1) {\n return control.get(keyPath[0]);\n }\n let nextControl: AbstractControl | null = null;\n if (control instanceof FormGroup) {\n nextControl = control.get(keyPath[0]);\n } else if (control instanceof FormArray) {\n const idx = +keyPath[0];\n if (!isNaN(idx)) {\n nextControl = control.at(idx);\n }\n }\n\n if (!control) {\n return null;\n }\n return this.findFormField(nextControl!, keyPath.slice(1));\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 resetFormModel(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 const splitPath = field.property.split('.');\n let currentObject = formModel;\n\n for (let i = 0; i < splitPath.length; i++) {\n const currentSubPath = splitPath[i];\n if (i === splitPath.length - 1) {\n currentObject[currentSubPath] = field.getter(item);\n } else {\n if (typeof currentObject[currentSubPath] !== 'object') {\n currentObject[currentSubPath] = {};\n }\n\n currentObject = currentObject[currentSubPath];\n }\n }\n }\n });\n if (typeof this.formOptions.resetModel === 'function') {\n // 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\" [enableService]=\"false\"></p-messages>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\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 MngFormlyFieldWrapperComponent extends FieldWrapper {}\n","<div [class]=\"to?.['descriptor']?.['fieldClassName'] ?? 'field'\">\n <label *ngIf=\"to?.label\" [for]=\"key\" [class]=\"to?.['descriptor']?.['labelClassName'] ?? ''\"\n >{{ to!.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label\n >\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"to?.['descriptor']?.['helpText']\">{{ to?.['descriptor']?.['helpText'] | translate }}</small>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n</div>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\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 MngFormlyTableWrapperComponent extends FieldWrapper {}\n","<div [class]=\"to?.['descriptor']?.['fieldClassName'] ?? 'field table'\">\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"to?.['descriptor']?.['helpText']\">{{ to?.['descriptor']?.['helpText'] | translate }}</small>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n</div>\n","import {ChangeDetectionStrategy, Component, EventEmitter, ExistingProvider, Injector, Input, OnDestroy, OnInit, Optional, Output, ViewChild, forwardRef} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {AutoComplete} from 'primeng/autocomplete';\nimport {BehaviorSubject, Observable, Subscription, of, switchMap} from 'rxjs';\nimport {first, map} from 'rxjs/operators';\n\nimport {MediusFilterMatchType, MediusQueryParam, MediusQueryParamBuilder} from '../../../api/models';\nimport {ILookupDataProvider} from '../../../data-providers';\nimport {MngFormlyFieldWrapperComponent} from '../formly/wrappers';\n\nexport const MNG_AUTOCOMPLETE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MngAutocompleteComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-autocomplete',\n templateUrl: './autocomplete.component.html',\n providers: [MNG_AUTOCOMPLETE_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngAutocompleteComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() public dataProvider?: ILookupDataProvider<any, any>;\n @Input() public dataKeyProperty?: string;\n @Input('itemsValueProperty') public itemsValuePropertyInit?: string;\n @Input('itemsLabelProperty') public itemsLabelPropertyInit?: string;\n @Input() public itemsLabelTranslate = false;\n @Input() public inlineSearch = false;\n @Input() public openOnFocus = false;\n @Input() public multiselect = false;\n @Input() public placeholder?: string;\n @Input() public className: string | null = null;\n @Input() public dropdownClassName: string | null = null;\n\n @Output('valueChange') public valueChangeEventEmitter = new EventEmitter();\n\n @ViewChild(AutoComplete) public primeAutocomplete?: AutoComplete;\n\n private isInited = false;\n private suggestionsSubject: BehaviorSubject<Array<any>> = new BehaviorSubject<Array<any>>([]);\n private searchSubscription: Subscription | null = null;\n private dataProviderService: any = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n\n public itemsLabelProperty?: string;\n public itemsValueProperty?: string;\n public autocompleteFormControl: FormControl = new FormControl();\n public suggestions$: Observable<Array<any>> = this.suggestionsSubject.asObservable();\n\n constructor(private injector: Injector, private translate: TranslateService, @Optional() private formlyWrapper: MngFormlyFieldWrapperComponent) {}\n\n ngOnInit() {\n this.setItemsAndDataProvider();\n }\n\n ngOnDestroy() {\n this.searchSubscription?.unsubscribe();\n }\n\n onSearch(event: any) {\n this.searchSubscription?.unsubscribe();\n\n if (this.dataProvider) {\n const queryParamBuilder = MediusQueryParamBuilder.create();\n if (this.itemsLabelProperty) {\n queryParamBuilder.withSort(this.itemsLabelProperty);\n }\n if (event.query && event.query.length > 0 && this.itemsLabelProperty) {\n queryParamBuilder.withFilter(this.itemsLabelProperty, event.query, undefined, MediusFilterMatchType.StartsWith);\n }\n this.searchSubscription = this.getLookup(queryParamBuilder.build(), event.query).subscribe({\n next: items => {\n this.setSuggestionsFromItems(items, event.query);\n }\n });\n }\n }\n\n onSelect(value: any) {\n let outputValue = value;\n if (this.itemsValueProperty && typeof value === 'object') {\n outputValue = value[this.itemsValueProperty];\n }\n this.onChangeFn(outputValue);\n this.valueChangeEventEmitter.next(outputValue);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onFocus(event: Event) {\n if (this.openOnFocus) {\n this.primeAutocomplete?.show();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onBlur(event: any) {\n this.formlyWrapper?.formControl?.markAsTouched();\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n this.autocompleteFormControl.disable();\n } else {\n this.autocompleteFormControl.enable();\n }\n }\n\n writeValue(value: any): void {\n this.setItemsAndDataProvider();\n\n if (this.itemsValuePropertyInit && value != null && typeof value !== 'object') {\n const defaultItem: any = {[this.itemsValuePropertyInit]: value};\n if (this.itemsLabelProperty) {\n defaultItem[this.itemsLabelProperty] = value;\n }\n\n const matchedItem = this.suggestionsSubject.value.find(i => i[this.itemsValuePropertyInit!] === value);\n if (matchedItem) {\n this.autocompleteFormControl.setValue(matchedItem, {emitEvent: false});\n } else if (this.dataProvider) {\n const queryParamBuilder = MediusQueryParamBuilder.create();\n queryParamBuilder.withFilter(this.itemsValuePropertyInit, value, undefined, MediusFilterMatchType.Equals);\n\n this.getLookup(queryParamBuilder.build())\n .pipe(first())\n .subscribe({\n next: items => {\n let isMatch = false;\n if (items.length === 1) {\n this.autocompleteFormControl.setValue(items[0]);\n isMatch = true;\n } else if (items.length > 1) {\n // for lookup data providers not using query params\n const matchedItem = items.find(i => i[this.itemsValuePropertyInit!] === value);\n if (matchedItem) {\n this.setAutocompleteValueFromWrite(matchedItem);\n isMatch = true;\n }\n }\n\n if (!isMatch) {\n this.setAutocompleteValueFromWrite(defaultItem);\n }\n },\n error: () => {\n this.setAutocompleteValueFromWrite(defaultItem);\n }\n });\n } else {\n this.setAutocompleteValueFromWrite(defaultItem);\n }\n } else {\n this.setAutocompleteValueFromWrite(value);\n }\n }\n\n private setItemsAndDataProvider() {\n if (this.isInited) {\n return;\n }\n\n this.itemsLabelProperty = this.itemsLabelPropertyInit;\n this.itemsValueProperty = this.itemsValuePropertyInit;\n\n if (this.dataProvider) {\n this.dataProviderService = this.dataProvider.serviceType ? this.injector.get<any>(this.dataProvider.serviceType) : null;\n\n if (this.itemsLabelTranslate) {\n // setup translation properties\n if (this.itemsLabelPropertyInit) {\n this.itemsLabelProperty = `${this.itemsLabelPropertyInit}_i18n`;\n } else if (!this.itemsLabelProperty && !this.itemsValuePropertyInit) {\n this.itemsLabelProperty = 'title_i18n';\n this.itemsValueProperty = 'value';\n } else {\n throw new Error(`Invalid use with value (${this.itemsLabelPropertyInit}) and label (${this.itemsLabelPropertyInit}) property setup.`);\n }\n }\n } else {\n console.warn(`Data provider should be provided for MngAutocompleteComponent.`);\n }\n\n if (this.openOnFocus) {\n this.onSearch({query: ''});\n }\n\n this.isInited = true;\n }\n\n private setAutocompleteValueFromWrite(value: any) {\n if (value && this.itemsLabelTranslate) {\n value = this.i18nPopulateItems([value], this.translate.instant(this.i18nGetItemsKeys([value])))[0];\n }\n this.autocompleteFormControl.setValue(value, {emitEvent: false});\n }\n\n private getLookup(qp: MediusQueryParam, query?: string): Observable<Array<any>> {\n if (this.dataProvider) {\n return this.dataProvider.lookup(qp, this.dataProviderService, query).pipe(\n switchMap(items => {\n if (this.itemsLabelTranslate) {\n return this.translate.stream(this.i18nGetItemsKeys(items)).pipe(map(translations => this.i18nPopulateItems(items, translations)));\n } else {\n return of(items);\n }\n })\n );\n } else {\n return of([]);\n }\n }\n\n private i18nGetItemsKeys(items: Array<any>): Array<string> {\n return items.map(item => (typeof item === 'object' && this.itemsLabelPropertyInit ? (item[this.itemsLabelPropertyInit as keyof object] as string) : item) as string);\n }\n\n private i18nPopulateItems(items: Array<any>, i18nMap: any): Array<any> {\n return items.map(item => {\n if (typeof item === 'object' && this.itemsLabelPropertyInit) {\n const label = item[this.itemsLabelPropertyInit as keyof object] as string;\n const translation: string | undefined = i18nMap[label];\n if (translation) {\n return {...item, [this.itemsLabelProperty!]: translation};\n }\n return {...item};\n } else {\n const translation = i18nMap[item];\n return {\n [this.itemsLabelProperty!]: translation ?? item,\n [this.itemsValueProperty!]: item\n };\n }\n });\n }\n\n private setSuggestionsFromItems(items: Array<any>, query?: string) {\n if (this.inlineSearch) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n if (this.itemsLabelProperty && typeof i === 'object') {\n itemLabel = i[this.itemsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.suggestionsSubject.next([...filteredItems]);\n } else {\n this.suggestionsSubject.next([...items]);\n }\n }\n}\n","<p-autoComplete\n (onFocus)=\"onFocus($event)\"\n [formControl]=\"autocompleteFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dropdown]=\"true\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [field]=\"$any(itemsLabelProperty)\"\n [suggestions]=\"(suggestions$ | async) ?? []\"\n [multiple]=\"multiselect\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [minLength]=\"openOnFocus ? 0 : 1\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n (onBlur)=\"onBlur($event)\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n</p-autoComplete>\n","import {ChangeDetectionStrategy, Component, EventEmitter, ExistingProvider, Injector, Input, OnDestroy, OnInit, Optional, Output, ViewChild, forwardRef} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Dropdown} from 'primeng/dropdown';\nimport {Observable, ReplaySubject, Subject, Subscription, of, switchMap} from 'rxjs';\nimport {first, map} from 'rxjs/operators';\n\nimport {MediusQueryParamBuilder} from '../../../api/models';\nimport {ILookupDataProvider} from '../../../data-providers';\nimport {MngFormlyFieldWrapperComponent} from '../formly/wrappers';\n\nexport const MNG_DROPDOWN_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MngDropdownComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-dropdown',\n templateUrl: './dropdown.component.html',\n providers: [MNG_DROPDOWN_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngDropdownComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() public dataProvider?: ILookupDataProvider<any, any>;\n @Input() public dataKeyProperty?: string;\n @Input('itemsLabelProperty') public itemsLabelPropertyInit?: string;\n @Input() public itemsLabelTranslate = false;\n @Input('itemsValueProperty') public itemsValuePropertyInit?: string;\n @Input() public itemsDisabledProperty?: string;\n @Input() public multiselect = false;\n @Input() public placeholder?: string;\n @Input() public showClear = true;\n @Input() public selectFirstItem = false;\n @Input() public className: string | null = null;\n @Input() public dropdownClassName: string | null = null;\n\n @Output('valueChange') public valueChangeEventEmitter = new EventEmitter();\n\n @ViewChild(Dropdown) public primeDropdown?: Dropdown;\n\n public itemsLabelProperty?: string;\n public itemsValueProperty?: string;\n private itemsSubject: Subject<Array<any>> = new ReplaySubject<Array<any>>(1);\n private dataProviderService: any = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n\n public dropdownFormControl: FormControl = new FormControl();\n public items$: Observable<Array<any>> = this.itemsSubject.asObservable();\n private itemsSubscription?: Subscription;\n\n constructor(private injector: Injector, private translate: TranslateService, @Optional() private formlyWrapper: MngFormlyFieldWrapperComponent) {}\n\n ngOnInit(): void {\n this.dropdownFormControl.valueChanges.subscribe(v => {\n this.onChangeFn(v);\n this.valueChangeEventEmitter.next(v);\n });\n\n this.itemsLabelProperty = this.itemsLabelPropertyInit;\n this.itemsValueProperty = this.itemsValuePropertyInit;\n\n if (this.dataProvider) {\n this.dataProviderService = this.dataProvider.serviceType ? this.injector.get<any>(this.dataProvider.serviceType) : null;\n\n const queryParamBuilder = MediusQueryParamBuilder.create();\n\n if (this.itemsLabelTranslate) {\n // setup translation properties\n if (this.itemsLabelPropertyInit) {\n this.itemsLabelProperty = `${this.itemsLabelPropertyInit}_i18n`;\n } else if (!this.itemsLabelProperty && !this.itemsValuePropertyInit) {\n this.itemsLabelProperty = 'title_i18n';\n this.itemsValueProperty = 'value';\n } else {\n throw new Error(`Invalid use with value (${this.itemsLabelPropertyInit}) and label (${this.itemsLabelPropertyInit}) property setup.`);\n }\n }\n\n this.itemsSubscription = this.dataProvider\n .lookup(queryParamBuilder.build(), this.dataProviderService)\n .pipe(\n switchMap(items => {\n if (this.itemsLabelTranslate) {\n const translationKeys: string[] = items.map(\n item => (typeof item === 'object' && this.itemsLabelPropertyInit ? (item[this.itemsLabelPropertyInit as keyof object] as string) : item) as string\n );\n return this.translate.stream(translationKeys).pipe(\n map(translations =>\n items.map(item => {\n if (typeof item === 'object' && this.itemsLabelPropertyInit) {\n const label = item[this.itemsLabelPropertyInit as keyof object] as string;\n const translation: string | undefined = translations[label];\n if (translation) {\n return {...item, [this.itemsLabelProperty!]: translation};\n }\n return {...item};\n } else {\n const translation = translations[item];\n return {\n [this.itemsLabelProperty!]: translation ?? item,\n [this.itemsValueProperty!]: item\n };\n }\n })\n )\n );\n } else {\n return of(items);\n }\n })\n )\n .subscribe(res => {\n this.itemsSubject.next(res);\n });\n\n if (this.selectFirstItem && !this.dropdownFormControl?.value) {\n this.items$.pipe(first()).subscribe(res => {\n const value = this.itemsValueProperty ? res[0][this.itemsValueProperty] : res[0];\n this.dropdownFormControl?.setValue(value);\n });\n }\n } else {\n console.warn(`Data provider should be provided for MngDropdownComponent.`);\n }\n }\n\n ngOnDestroy() {\n this.itemsSubscription?.unsubscribe();\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n this.dropdownFormControl.disable();\n } else {\n this.dropdownFormControl.enable();\n }\n }\n\n writeValue(obj: any): void {\n this.dropdownFormControl.setValue(obj, {emitEvent: false});\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onBlur($event: any) {\n this.formlyWrapper?.formControl?.markAsTouched();\n }\n}\n","<p-dropdown\n *ngIf=\"!multiselect; else pMultiselect\"\n [formControl]=\"dropdownFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"$any(items$ | async)\"\n [showClear]=\"showClear\"\n [autoDisplayFirst]=\"false\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n (onBlur)=\"onBlur($event)\"\n appendTo=\"body\">\n</p-dropdown>\n<ng-template #pMultiselect>\n <p-multiSelect\n display=\"chip\"\n [formControl]=\"dropdownFormControl\"\n [defaultLabel]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"(items$ | async) ?? []\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [filter]=\"false\"\n (onBlur)=\"onBlur($event)\"\n appendTo=\"body\">\n </p-multiSelect>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n ViewChild\n} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {DynamicDialogConfig, DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {Observable, ReplaySubject, Subscription, of, throwError} from 'rxjs';\nimport {catchError, finalize, first} from 'rxjs/operators';\n\nimport {IEditorDataProvider} from '../../../data-providers';\nimport {ActionDescriptor, ActionEditorDescriptor, ActionEditorSubmitDescriptor} from '../../../descriptors';\nimport {ActionEditorSubmitTypeEnum, ActionPositionEnum} from '../../../descriptors/types';\nimport {MngTemplateDirective} from '../../../directives';\nimport {IViewContainer} from '../../../models';\nimport {MngActionExecutorService, MngCommonsService, MngNavigationService, MngViewContainerComponentService} from '../../../services';\nimport {IdType} from '../../../types';\nimport {I18nUtils, NotificationUtil} from '../../../utils';\nimport {MngFormEditorComponent} from '../../form';\nimport {MngFormEditorSubmitEvent} from '../../form/models';\nimport {ActionData, ActionInstance, ActionParameters} from '../models';\n\n@Component({\n selector: 'mng-action-editor',\n templateUrl: './action-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngActionEditorComponent<T, S> implements OnInit, OnDestroy {\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 @Input('viewContainer') public viewContainerInit?: IViewContainer<T, S>;\n\n @Output('actionSubmit') public actionRunEventEmitter = new EventEmitter<T | null | undefined>();\n @Output('actionCancel') public actionCancelEventEmitter = new EventEmitter<T | null | undefined>();\n\n // content and view queries\n @ContentChildren(MngTemplateDirective) public templates!: QueryList<MngTemplateDirective>;\n @ViewChild('submitButton') public submitButtonElementRef!: ElementRef;\n @ViewChild(MngFormEditorComponent) public editorComponent!: MngFormEditorComponent<T>;\n\n public cmpId: string = Math.random().toString(36).substring(2);\n public title?: string;\n public isDialog = true;\n public isSaveButton = true;\n\n // actions\n private instance?: ActionInstance<T, S>;\n private previousActionInstance?: ActionInstance<unknown, unknown>;\n public toolbarLeftActions: ActionDescriptor<T>[] = [];\n public toolbarRightActions: ActionDescriptor<T>[] = [];\n public footerLeftActions: ActionDescriptor<T>[] = [];\n public footerRightActions: ActionDescriptor<T>[] = [];\n\n private loadingSubject = new ReplaySubject<boolean>(1);\n public loading$: Observable<boolean> = this.loadingSubject.asObservable();\n private submitLoadingSubject = new ReplaySubject<boolean>(1);\n public submitLoading$: Observable<boolean> = this.submitLoadingSubject.asObservable();\n private isFinished = false;\n\n public viewContainer?: IViewContainer<T, S>;\n private sourceComponent: any = this;\n\n private subscriptions: Array<Subscription> = [];\n\n constructor(\n private injector: Injector,\n private translate: TranslateService,\n private actionExecutor: MngActionExecutorService,\n private mngCommonsService: MngCommonsService,\n private navigationService: MngNavigationService,\n @Optional() private dialogRef: DynamicDialogRef | null,\n @Optional() private dialogConfig: DynamicDialogConfig | null,\n @Optional() private viewContainerService: MngViewContainerComponentService<T, S> | null\n ) {}\n\n public ngOnInit() {\n if (this.dialogConfig?.data) {\n if (this.dialogConfig.data.actionInstance) {\n this.instance = this.dialogConfig.data.actionInstance;\n }\n if (this.instance) {\n this.action = this.instance.action as ActionEditorDescriptor<T>;\n }\n this.itemId = this.instance?.activationParameters?.itemId;\n this.item = this.instance?.activationParameters?.item;\n this.actionData = this.instance?.activationParameters?.actionData;\n this.viewContainer = this.instance?.activationParameters?.viewContainer as IViewContainer<T, S>;\n this.sourceComponent = this.instance?.activationParameters?.sourceComponent;\n if (!this.dataProvider && this.viewContainer) {\n const dataProvider = this.viewContainer.getDataProvider();\n if (dataProvider && typeof dataProvider['fetch' as keyof object] === 'function') {\n this.dataProvider = dataProvider as IEditorDataProvider<T, S>;\n }\n }\n if (this.dialogConfig.data.previousActionInstance) {\n this.previousActionInstance = this.dialogConfig.data.previousActionInstance;\n }\n } else {\n this.isDialog = false;\n this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;\n }\n\n this.isSaveButton = typeof this.action.submitFunction === 'function';\n this.setTitle();\n\n for (const action of this.action.editorActions) {\n if (action instanceof ActionEditorSubmitDescriptor) {\n if (typeof action.icon === 'undefined') {\n action.withIcon(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times');\n }\n if (typeof action.title === 'undefined') {\n action.withTitle(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'general.save' : this.isDialog ? 'general.close' : 'general.cancel');\n }\n\n // assign run operations\n action.withRunNotificationSuccess(undefined, undefined, false);\n if (action.submitType === ActionEditorSubmitTypeEnum.Submit) {\n action.withRunFunction(() => {\n this.triggerSubmit();\n return of(undefined);\n });\n } else {\n action.withRunFunction(() => {\n this.cancel();\n return of(undefined);\n });\n }\n }\n switch (action.position) {\n case ActionPositionEnum.ToolbarLeft:\n this.toolbarLeftActions.push(action);\n break;\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.push(action);\n break;\n case ActionPositionEnum.FooterLeft:\n this.footerLeftActions.push(action);\n break;\n case ActionPositionEnum.FooterRight:\n this.footerRightActions.push(action);\n break;\n }\n }\n\n this.toolbarRightActions = this.toolbarRightActions.reverse();\n this.footerRightActions = this.footerRightActions.reverse();\n\n this.loadItemWithDataProvider();\n }\n\n public ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n public onSubmit(event: MngFormEditorSubmitEvent<T>) {\n if (this.isFinished) {\n return;\n }\n if (event.success) {\n if (typeof this.action.submitFunction !== 'function') {\n return;\n }\n this.submitLoadingSubject.next(true);\n const context = this.actionExecutor.runEditorSave(\n this.action,\n new ActionParameters(this.itemId, event.formItem).withActionData(this.actionData).withViewContainer(this.viewContainer).withSourceComponent(this.sourceComponent),\n this.dataProvider,\n this.instance,\n this.previousActionInstance\n );\n this.instance = context.instance;\n\n context.execution$.subscribe({\n next: res => {\n this.isFinished = true;\n this.submitLoadingSubject.next(false);\n this.actionRunEventEmitter.next(res);\n this.deactivateAction(res);\n },\n error: () => {\n this.submitLoadingSubject.next(false);\n }\n });\n }\n }\n\n public cancel() {\n this.actionCancelEventEmitter.next(undefined);\n this.deactivateAction(undefined, true);\n }\n\n public triggerSubmit() {\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 const context = this.actionExecutor.runEditorFetch(\n this.action,\n new ActionParameters(this.itemId, this.item).withActionData(this.actionData).withViewContainer(this.viewContainer).withSourceComponent(this.sourceComponent),\n this.dataProvider,\n this.instance,\n this.previousActionInstance\n );\n this.instance = context.instance;\n\n context.execution$\n .pipe(\n first(),\n catchError(err => {\n const actionError = this.actionExecutor.toMngActionError(err);\n if (this.action.hasRunNotificationError) {\n NotificationUtil.actionNotificationError(this.translate, this.action, actionError, 'fetch', this.viewContainer, this.item);\n }\n return throwError(() => actionError);\n }),\n finalize(() => this.loadingSubject.next(false))\n )\n .subscribe(res => {\n this.item = res ?? undefined;\n if (this.action.hasFetchNotificationSuccess) {\n NotificationUtil.actionNotificationSuccess(\n this.translate,\n this.action,\n 'fetch',\n this.action.fetchNotificationSuccessTitle,\n this.action.fetchNotificationSuccessMessage,\n this.viewContainer,\n this.item\n );\n }\n this.setTitle();\n });\n }\n\n private setTitle() {\n if (this.action.editorTitle === null) {\n this.title = undefined;\n if (this.dialogConfig) {\n requestAnimationFrame(() => {\n this.dialogConfig!.header = undefined;\n });\n }\n return;\n }\n const subscription = I18nUtils.Action.getEditorTitleAsync(this.translate, this.action, this.item).subscribe(t => {\n this.title = t ?? undefined;\n if (this.dialogConfig) {\n requestAnimationFrame(() => {\n this.dialogConfig!.header = t ?? undefined;\n this.mngCommonsService.setPageTitle(t ?? undefined);\n });\n }\n });\n this.subscriptions.push(subscription);\n }\n\n private deactivateAction(item?: T | null, cancel = false) {\n if (this.isDialog) {\n // if cancel, then force close the dialog\n if (cancel) {\n this.dialogRef?.close(item);\n }\n } else {\n this.actionExecutor.deactivateAction(this.instance!);\n }\n }\n}\n","<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\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) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormControl} from '@angular/forms';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {FieldLookupDescriptor} from '../../../../../descriptors';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\n\n@Component({\n selector: 'mng-formly-field-autocomplete',\n templateUrl: './formly-field-autocomplete.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldAutocompleteComponent<T> extends FieldType implements OnInit, AfterViewInit, OnDestroy {\n public aFormControl!: FormControl;\n public descriptor!: FieldLookupDescriptor<T, any>;\n\n private subscriptions: Subscription[] = [];\n\n public ngOnInit() {\n this.aFormControl = this.formControl as FormControl;\n this.descriptor = this.to['descriptor'];\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldAutocompleteComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.aFormControl.valueChanges.pipe(startWith(this.formControl!.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldAutocompleteComponent, this, {\n value: v\n });\n });\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldAutocompleteComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(value => value.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldAutocompleteComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"aFormControl\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"$any(descriptor.dataProvider)\"\n [dataKeyProperty]=\"$any(descriptor.dataKeyProperty)\"\n [itemsLabelProperty]=\"$any(descriptor.itemsLabelProperty)\"\n [itemsValueProperty]=\"$any(descriptor.itemsValueProperty)\"\n [className]=\"descriptor.inputClassName\">\n</mng-autocomplete>\n","import {ChangeDetectionStrategy, Component, Inject, LOCALE_ID, OnDestroy, OnInit} from '@angular/core';\nimport {FormControl} from '@angular/forms';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {FieldInputDescriptor} from '../../../../../descriptors';\nimport {FieldInputTypeEnum} from '../../../../../descriptors/types';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\n\n@Component({\n selector: 'mng-formly-field-input',\n templateUrl: './formly-field-input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldInputComponent extends FieldType implements OnInit, OnDestroy {\n public iFormControl!: FormControl;\n public descriptor!: FieldInputDescriptor<any>;\n public numberFieldMode: 'decimal' | 'currency' = 'decimal';\n public currency?: string;\n\n private files: File[] = [];\n private subscriptions: Subscription[] = [];\n\n constructor(@Inject(LOCALE_ID) public applicationLocale: string) {\n super();\n }\n\n ngOnInit(): void {\n this.iFormControl = this.formControl as FormControl;\n this.descriptor = this.to['descriptor'];\n\n if (this.descriptor.fieldType === FieldInputTypeEnum.Currency) {\n this.numberFieldMode = 'currency';\n\n if (this.descriptor.currencyFromProperty) {\n const currencyFromPropSubscription = this.iFormControl\n .get(this.descriptor.currencyFromProperty)!\n .valueChanges.pipe(startWith(this.model[this.descriptor.currencyFromProperty]), distinctUntilChanged())\n .subscribe(c => {\n this.currency = c;\n });\n this.subscriptions.push(currencyFromPropSubscription);\n } else {\n this.currency = this.descriptor.currency ?? 'EUR';\n }\n }\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldInputComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n // init values\n if (this.to.type === 'datepicker' && typeof this.iFormControl.value === 'string') {\n const dateObject = new Date(this.iFormControl.value);\n this.iFormControl.setValue(dateObject);\n }\n\n const subscription = this.formControl!.valueChanges.pipe(startWith(this.formControl!.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldInputComponent, this, {\n value: v\n });\n });\n this.subscriptions.push(subscription);\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldInputComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n public onFileSelect(event: any) {\n const files = event.files as File[];\n this.files = [...files];\n this.updateFileFormControl();\n }\n\n public onFileRemove(event: any) {\n const file = event.file as File;\n this.files = this.files.filter(f => f !== file);\n this.updateFileFormControl();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onFileClear(event: Event) {\n this.files = [];\n this.updateFileFormControl();\n }\n\n private updateFileFormControl() {\n const value = this.files.length > 0 ? [...this.files] : null;\n this.iFormControl.setValue(value);\n if (typeof this.descriptor.fileOnSelectHandler === 'function') {\n this.descriptor.fileOnSelectHandler(value, this.iFormControl);\n }\n }\n}\n","<ng-container [ngSwitch]=\"to.type\">\n <p-inputNumber\n *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 [useGrouping]=\"$any(descriptor.numberUseGrouping)\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [locale]=\"$any(descriptor.locale ?? applicationLocale)\"\n [mode]=\"$any(numberFieldMode)\"\n [currency]=\"$any(currency)\"\n [currencyDisplay]=\"$any(descriptor.currencyDisplay)\">\n </p-inputNumber>\n\n <div *ngSwitchCase=\"'switch'\" class=\"field flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"descriptor.inputClassName\"></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 option of descriptor.radioOptions\" [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + descriptor.labelClassName\">{{ option.title | translate }}</label>\n </div>\n </ng-container>\n\n <textarea\n *ngSwitchCase=\"'textarea'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pInputTextarea\n [class]=\"descriptor.inputClassName\">\n </textarea>\n\n <p-calendar\n *ngSwitchCase=\"'datepicker'\"\n appendTo=\"body\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [showSeconds]=\"descriptor.datePickerShowSeconds\"\n [showIcon]=\"true\"\n [inputStyleClass]=\"descriptor.inputClassName\">\n </p-calendar>\n\n <p-inputMask\n *ngSwitchCase=\"'mask'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"$any(descriptor.mask)\"\n [placeholder]=\"$any(descriptor.placeholder)\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName\">\n </p-inputMask>\n\n <p-fileUpload\n *ngSwitchCase=\"'file'\"\n [multiple]=\"descriptor.fileMultiple\"\n [accept]=\"$any(descriptor.fileAccept)\"\n [maxFileSize]=\"descriptor.fileMaxFileSize\"\n [showUploadButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear($event)\">\n </p-fileUpload>\n\n <input *ngSwitchDefault pInputText [id]=\"$any(key)\" [type]=\"to.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" />\n</ng-container>\n","import {ChangeDetectionStrategy, Component, HostBinding, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {FieldInputDescriptor} from '../../../../../descriptors';\n\n@Component({\n selector: 'mng-formly-field-label',\n templateUrl: './formly-field-label.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldLabelComponent extends FieldType implements OnInit {\n @HostBinding('class') public className = 'hidden';\n\n private descriptor!: FieldInputDescriptor<any>;\n\n public ngOnInit() {\n this.descriptor = this.to['descriptor'];\n this.formControl?.patchValue(this.descriptor.label);\n }\n}\n","","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormControl} from '@angular/forms';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {FieldLookupDescriptor} from '../../../../../descriptors';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\n\n@Component({\n selector: 'mng-formly-field-dropdown',\n templateUrl: './formly-field-dropdown.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldDropdownComponent<T> extends FieldType implements OnInit, OnDestroy {\n public dFormControl!: FormControl;\n public descriptor!: FieldLookupDescriptor<T, any>;\n\n private subscriptions: Subscription[] = [];\n\n public ngOnInit() {\n this.dFormControl = this.formControl as FormControl;\n this.descriptor = this.to['descriptor'];\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldDropdownComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.formControl!.valueChanges.pipe(startWith(this.formControl!.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldDropdownComponent, this, {\n value: v\n });\n });\n this.subscriptions.push(subscription);\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldDropdownComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-dropdown\n [id]=\"$any(key)\"\n [formControl]=\"dFormControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"descriptor.placeholder\"\n [dataProvider]=\"descriptor.dataProvider\"\n [itemsLabelProperty]=\"descriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"descriptor.itemsLabelTranslate\"\n [itemsValueProperty]=\"descriptor.itemsValueProperty\"\n [itemsDisabledProperty]=\"descriptor.itemsDisabledProperty\"\n [dataKeyProperty]=\"descriptor.dataKeyProperty\"\n [showClear]=\"!to.required\"\n [className]=\"descriptor.inputClassName\">\n</mng-dropdown>\n","import {ActionDescriptor, TableDescriptor} from '../descriptors';\nimport {ActionSizeEnum, TableSizeEnum} from '../descriptors/types';\n\nexport class StylesUtil {\n public static readonly BUTTON_ROUNDED_WIDTH_XS = 26;\n public static readonly BUTTON_ROUNDED_WIDTH_SM = 28;\n public static readonly BUTTON_ROUNDED_WIDTH = 32;\n public static readonly BUTTON_ROUNDED_WIDTH_LG = 45;\n\n public static readonly ACTION_BUTTON_MARGIN_X = 2;\n\n public static readonly TABLE_CELL_PADDING_X = 8; // left and right paddings are same\n public static readonly TABLE_CELL_PADDING_X_SM = 4;\n public static readonly TABLE_CELL_PADDING_X_LG = 12;\n\n public static calculateTableColumnActionWidth(table: TableDescriptor<unknown>, actions: Array<ActionDescriptor<unknown>>): number {\n const buttonsWidth = actions.reduce((acc, action) => acc + StylesUtil.getActionButtonRoundedWidth(action) + 2 * StylesUtil.ACTION_BUTTON_MARGIN_X, 0);\n const tablePadding = StylesUtil.getTableCellPaddingX(table);\n return buttonsWidth + 2 * tablePadding;\n }\n\n public static getTableCellPaddingX(table: TableDescriptor<unknown>): number {\n switch (table.size) {\n case TableSizeEnum.Small:\n return StylesUtil.TABLE_CELL_PADDING_X_SM;\n case TableSizeEnum.Large:\n return StylesUtil.TABLE_CELL_PADDING_X_LG;\n default:\n return StylesUtil.TABLE_CELL_PADDING_X;\n }\n }\n\n public static getActionButtonRoundedWidth(action: ActionDescriptor<unknown>): number {\n switch (action.size) {\n case ActionSizeEnum.ExtraSmall:\n return StylesUtil.BUTTON_ROUNDED_WIDTH_XS;\n case ActionSizeEnum.Small:\n return StylesUtil.BUTTON_ROUNDED_WIDTH_SM;\n case ActionSizeEnum.Large:\n case ActionSizeEnum.ExtraLarge:\n return StylesUtil.BUTTON_ROUNDED_WIDTH_LG;\n case ActionSizeEnum.Normal:\n default:\n return StylesUtil.BUTTON_ROUNDED_WIDTH;\n }\n }\n}\n","import {LazyLoadEvent} from 'primeng/api';\n\nimport {MediusQueryParam} from '../../../api/models';\nimport {ColumnDescriptor} from '../../../descriptors';\n\nexport class MngTableLoadEvent {\n public queryParam?: MediusQueryParam;\n public originalEvent?: LazyLoadEvent;\n}\n\nexport class MngTableCellClickEvent<T> {\n constructor(public readonly column: ColumnDescriptor<any, T>, public readonly rowItem: T, public readonly rowIndex: number) {}\n}\n\nexport class MngTableReloadEvent {\n public resetParams = false;\n public emitEvent = false;\n}\n","import {Component, Input, OnInit} from '@angular/core';\n\nimport {FilterMatchMode, PrimeNGConfig, SelectItem} from 'primeng/api';\n\nimport {FilterDescriptor, FilterLookupDescriptor} from '../../../../descriptors';\nimport {FilterLookupTypeEnum, FilterMatchModeEnum, FilterTypeEnum, TableFilterDisplayEnum} from '../../../../descriptors/types';\n\n/**\n * Cannot be on push change detection strategy because of filter updates triggered from route which causes to force update values in force metadata\n * and these must be propagated through to this component and beyond to primeNG.\n */\n@Component({\n selector: 'mng-table-column-filter',\n templateUrl: './column-filter.component.html'\n})\nexport class MngTableColumnFilterComponent<T> implements OnInit {\n public readonly lookupTypeDropdown: FilterLookupTypeEnum = FilterLookupTypeEnum.Dropdown;\n public readonly lookupTypeAutocomplete: FilterLookupTypeEnum = FilterLookupTypeEnum.Autocomplete;\n\n @Input() descriptor!: FilterDescriptor<T>;\n @Input() display!: TableFilterDisplayEnum;\n\n public lookupDescriptor?: FilterLookupDescriptor<T>;\n\n public primeField!: string;\n public primeType = 'text';\n public primeShowMatchMode = true;\n public primeDefaultMatchMode!: string;\n public primeDisplay = 'row';\n public primeMatchModes: SelectItem[] | null = null;\n\n constructor(private primeConfig: PrimeNGConfig) {}\n\n ngOnInit() {\n this.primeDefaultMatchMode = this.descriptor.defaultFilterMatchMode;\n\n switch (this.descriptor.filterType) {\n case FilterTypeEnum.Boolean:\n this.primeType = 'boolean';\n this.primeShowMatchMode = false;\n break;\n case FilterTypeEnum.Number:\n this.primeType = 'numeric';\n break;\n case FilterTypeEnum.Date:\n this.primeType = 'date';\n this.primeDefaultMatchMode = FilterMatchMode.DATE_AFTER;\n break;\n case FilterTypeEnum.Lookup:\n this.primeType = 'lookup';\n this.primeShowMatchMode = false;\n this.lookupDescriptor = this.descriptor as FilterLookupDescriptor<T>;\n this.primeField = `${this.descriptor.property}${this.lookupDescriptor.itemsValueProperty ? `.${this.lookupDescriptor.itemsValueProperty}` : ''}`;\n this.primeMatchModes = [{value: FilterMatchModeEnum.Equals, label: this.primeConfig.getTranslation(FilterMatchModeEnum.Equals)}];\n break;\n case FilterTypeEnum.String:\n this.primeType = 'text';\n this.primeDefaultMatchMode = FilterMatchMode.CONTAINS;\n break;\n }\n\n if (this.descriptor.matchModes) {\n this.primeMatchModes = this.descriptor.matchModes.map(mm => <SelectItem>{value: mm, label: this.primeConfig.getTranslation(mm)});\n\n if (!this.primeMatchModes.map(matchMode => matchMode.value).includes(this.primeDefaultMatchMode)) {\n this.primeDefaultMatchMode = this.descriptor.matchModes[0];\n }\n\n this.primeShowMatchMode = this.primeMatchModes?.length > 1;\n }\n\n if (this.display === TableFilterDisplayEnum.Menu) {\n this.primeDisplay = 'menu';\n }\n }\n\n valueToDate(value: unknown): Date | null {\n console.log('call', this.descriptor.property);\n if (typeof value === 'string' || typeof value === 'number') {\n return new Date(value);\n } else if (value instanceof Date) {\n return value;\n } else {\n return null;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n dateFilter(value: T, filterCallback: Function) {\n filterCallback(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n autocompleteFilter(value: T, filterCallback: Function) {\n filterCallback(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n dropdownFilter(value: T, filterCallback: Function) {\n filterCallback(value);\n }\n\n toLookupFilterValue(value?: any) {\n return this.lookupDescriptor!.dataKeyProperty && value ? {[this.lookupDescriptor!.dataKeyProperty]: value} : value;\n }\n}\n","<p-columnFilter\n class=\"ml-auto\"\n [type]=\"primeType\"\n matchMode=\"equals\"\n [field]=\"descriptor.property\"\n [display]=\"primeDisplay\"\n [matchMode]=\"primeDefaultMatchMode\"\n [matchModeOptions]=\"$any(primeMatchModes)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showMatchModes]=\"true\"\n [showOperator]=\"false\"\n [showAddButton]=\"false\"\n [hideOnClear]=\"true\"\n [minFractionDigits]=\"$any(descriptor.numberMinFractionDigits)\"\n [maxFractionDigits]=\"$any(descriptor.numberMaxFractionDigits)\"\n [useGrouping]=\"descriptor.numberUseGrouping\">\n <ng-template *ngIf=\"primeType === 'date'\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <p-calendar\n appendTo=\"body\"\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showIcon]=\"true\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [showTime]=\"descriptor.datePickerShowTime\">\n </p-calendar>\n </ng-template>\n <ng-template *ngIf=\"lookupDescriptor\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container [ngSwitch]=\"lookupDescriptor.lookupType\">\n <mng-autocomplete\n *ngSwitchCase=\"lookupTypeAutocomplete\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [dataKeyProperty]=\"lookupDescriptor.dataKeyProperty\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [openOnFocus]=\"lookupDescriptor.autocompleteOpenOnFocus\"\n [inlineSearch]=\"lookupDescriptor.autocompleteInlineSearch\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.searchToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n (valueChange)=\"autocompleteFilter($event, filterCallback)\">\n </mng-autocomplete>\n <mng-dropdown\n *ngSwitchCase=\"lookupTypeDropdown\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.selectToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n [showClear]=\"false\"\n (valueChange)=\"dropdownFilter($event, filterCallback)\">\n </mng-dropdown>\n </ng-container>\n </ng-template>\n</p-columnFilter>\n","import {ChangeDetectionStrategy, Component, ElementRef, HostBinding, Input, OnInit} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {MessageService} from 'primeng/api';\n\nimport {ColumnDescriptor} from '../../../../descriptors';\nimport {ColumnTypeEnum} from '../../../../descriptors/types';\n\n@Component({\n selector: 'mng-table-column-value',\n templateUrl: './column-value.component.html',\n styleUrls: ['./column-value.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngTableColumnValueComponent<T, TT> implements OnInit {\n public readonly columnTypeString: ColumnTypeEnum = ColumnTypeEnum.String;\n public readonly columnTypeNumber: ColumnTypeEnum = ColumnTypeEnum.Number;\n public readonly columnTypeCurrency: ColumnTypeEnum = ColumnTypeEnum.Currency;\n public readonly columnTypeBoolean: ColumnTypeEnum = ColumnTypeEnum.Boolean;\n public readonly columnTypeDate: ColumnTypeEnum = ColumnTypeEnum.Date;\n public readonly columnTypeEnum: ColumnTypeEnum = ColumnTypeEnum.Enum;\n public readonly columnTypeCustom: ColumnTypeEnum = ColumnTypeEnum.Custom;\n\n @Input() descriptor!: ColumnDescriptor<T, TT>;\n @Input() item!: any;\n\n @HostBinding('style.max-width.px') public styleMaxWidth: number | null = null;\n @HostBinding('class') public className = 'nowrap';\n\n public currency?: string;\n\n public jsonPath = '$';\n\n constructor(private elementRef: ElementRef, private messageService: MessageService, private translate: TranslateService) {}\n\n public ngOnInit() {\n if (this.descriptor.columnType === ColumnTypeEnum.Currency) {\n this.currency = this.descriptor.currencyFromProperty ? this.item[this.descriptor.currencyFromProperty] : this.descriptor.currencyCode ?? 'EUR';\n }\n\n if (this.descriptor.maxWidth) {\n this.styleMaxWidth = this.descriptor.maxWidth;\n }\n\n if (this.descriptor.jsonPath) {\n this.jsonPath = this.descriptor.jsonPath;\n } else {\n this.jsonPath = `$.${this.descriptor.property}`;\n if (this.descriptor.objectModelType) {\n this.jsonPath = `$.${this.descriptor.property}.${this.descriptor.objectTitleProperty}`;\n }\n }\n }\n\n public copyToClipboard(event: Event) {\n event.stopPropagation();\n const value = this.elementRef.nativeElement.innerText.trim();\n navigator.clipboard.writeText(value);\n const title = this.translate.instant('mngTable.copyNotificationTitle');\n const message = this.translate.instant('mngTable.copyNotificationMessage', {value});\n this.messageService.add({severity: 'info', summary: title, detail: message});\n }\n}\n","<ng-container [ngSwitch]=\"descriptor.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeString\">\n {{ item | jsonPath: jsonPath }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeNumber\">\n {{ item | jsonPath: jsonPath | number: descriptor.displayFormat:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCurrency\">\n {{ item | jsonPath: jsonPath | currency: currency:descriptor.currencyDisplay:descriptor.displayFormat:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeDate\">\n {{ item | jsonPath: jsonPath | date: descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeBoolean\">\n <ng-container *ngIf=\"descriptor.booleanAsIcon; else booleanText\"></ng-container>\n <i [class]=\"item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo:true\"></i>\n <ng-template #booleanText>\n {{ item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo | translate }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum\">\n {{ item | jsonPath: jsonPath | enum: descriptor.enumType:descriptor.enumTitlePath:descriptor.enumNameAsValue | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCustom\">\n <ng-container\n [mngComponent]=\"descriptor.customComponentType!\"\n [inputs]=\"{\n value: item | jsonPath: jsonPath,\n item: item,\n descriptor: descriptor\n }\"></ng-container>\n </ng-container>\n</ng-container>\n<div class=\"help-buttons\" *ngIf=\"descriptor.hasCopyToClipboard\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n</div>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport {ActivatedRoute, Params, Router} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {FilterMatchMode, FilterMetadata, LazyLoadEvent, SortMeta} from 'primeng/api';\nimport {Table} from 'primeng/table';\nimport {BehaviorSubject, Observable, ReplaySubject, Subscription, isObservable, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MediusFilterMatchType, MediusQueryParam, MediusQueryParamBuilder, MediusQueryResult} from '../../../api/models';\nimport {MediusRestUtil} from '../../../api/utils';\nimport {ITableDataProvider} from '../../../data-providers';\nimport {ActionDescriptor, ColumnDescriptor, FilterDescriptor, TableDescriptor} from '../../../descriptors';\nimport {ActionPositionEnum, FilterTypeEnum, TableFilterDisplayEnum, TablePaginationModeEnum, TableSizeEnum} from '../../../descriptors/types';\nimport {MngComponentDirective, MngTemplateDirective} from '../../../directives';\nimport {IViewContainer} from '../../../models';\nimport {MngActionExecutorService, MngViewContainerComponentService} from '../../../services';\nimport {NotificationUtil} from '../../../utils';\nimport {StylesUtil} from '../../../utils/styles.util';\nimport {ActionInstance} from '../../action/models';\nimport {MngTableCellClickEvent, MngTableLoadEvent} from '../models';\n\n@Component({\n selector: 'mng-table',\n templateUrl: './table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngTableComponent<T, S> implements OnInit, OnChanges, AfterContentInit, OnDestroy {\n public readonly filterDisplayRow: TableFilterDisplayEnum = TableFilterDisplayEnum.Row;\n public readonly filterDisplayMenu: TableFilterDisplayEnum = TableFilterDisplayEnum.Menu;\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<MediusQueryResult<T>> | MediusQueryResult<T>;\n @Input() public loading?: Observable<boolean> | boolean;\n @Input() public dataProvider?: ITableDataProvider<T, any>;\n @Input() public useQueryParams = false;\n\n // extra features input\n @Input() public selectionMode = 'multiple';\n @Input() public selectionEnabled = false;\n\n // actions\n @Input() public actions: Array<ActionDescriptor<T>> = [];\n\n // visual\n @Input() public isColumnClickable?: boolean;\n\n // component inputs\n @Input('viewContainer') public viewContainerInit?: IViewContainer<T, S>;\n @Input() public captionComponent?: Type<any>;\n @Input() public columnActionComponent?: Type<any>;\n @Input() public columnActionMinWidth: number | null = null;\n\n // event outputs\n @Output('tableLoad') public loadEventEmitter = new EventEmitter<MngTableLoadEvent>();\n @Output('cellClick') public cellClickEventEmitter = new EventEmitter<MngTableCellClickEvent<T>>();\n @Output('selectionChange') public selectionChangeEventEmitter = new EventEmitter<Array<T>>();\n @Output('captionComponentInstance') public captionCmpInstEventEmitter = new EventEmitter<any>();\n @Output('columnActionComponentInstance') public columnActionCmpInstEventEmitter = new EventEmitter<any>();\n\n // content and view queries\n @ContentChildren(MngTemplateDirective) public templates!: QueryList<MngTemplateDirective>;\n @ViewChildren(MngComponentDirective) public components!: QueryList<MngComponentDirective<any>>;\n @ViewChild(Table) public primeTable!: Table;\n\n // templates\n public captionTemplate?: TemplateRef<any>;\n public columnActionTemplate?: TemplateRef<any>;\n\n // data provider and items\n public useDataProvider = false;\n private useQueryParamsInitializedSubejct = new BehaviorSubject(false);\n public useQueryParamsInitialized$ = this.useQueryParamsInitializedSubejct.asObservable();\n public queryResult$?: Observable<MediusQueryResult<T>>;\n public loading$?: Observable<boolean>;\n public dataProviderInfiniteScrollItems: Array<T> = [];\n private itemsSubject = new ReplaySubject<Array<T>>(1);\n\n // pagination, sort and filters\n public rowsPerPageOptions!: Array<number>;\n public rows!: number;\n public offset = 0;\n public multiSortMeta: SortMeta[] | null = null;\n public filterMetadata: {[s: string]: FilterMetadata} = {};\n\n // infinite scroll\n public infiniteScroll = false;\n public scrollHeight: 'flex' | null = null;\n\n // visual\n public className!: string;\n public tableFullHeightOffset: number | null = null;\n public rowHeight: number | null = null;\n\n // selection\n public selection: Array<T> = [];\n\n // data provider\n private dataProviderService: any = null;\n private dataProviderQueryResultSubject = new ReplaySubject<MediusQueryResult<T>>(1);\n private dataProviderLoadingSubject = new ReplaySubject<boolean>(1);\n private dataProviderLatestLazyLoadEvent?: LazyLoadEvent;\n private dataProviderLatestLazyLoadEventVersion = 0;\n private dataProviderLatestQueryParam?: MediusQueryParam;\n private dataProviderLatestQueryParamVersion = 0;\n private dataProviderSubscription?: Subscription;\n\n // filter, sort\n private isFilterChanged = false;\n private isSortChanged = false;\n private filterDescriptors: Array<FilterDescriptor<any>> = [];\n\n // actions\n public showInlineActionsColumn = false;\n public rowClickActions: ActionDescriptor<T>[] = [];\n public rowInlineActions: ActionDescriptor<T>[] = [];\n\n // other\n private viewContainer?: IViewContainer<T, S>;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private injector: Injector,\n private router: Router,\n private route: ActivatedRoute,\n private translate: TranslateService,\n private actionExecutor: MngActionExecutorService,\n @Optional() private viewContainerService: MngViewContainerComponentService<T, S> | null\n ) {}\n\n public ngOnInit() {\n this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;\n this.filterDescriptors = this.descriptor.columns.filter(c => typeof c.filterDescriptor !== 'undefined').map(c => c.filterDescriptor!);\n\n // map row settings\n this.rows = this.descriptor.defaultNumRows;\n this.rowsPerPageOptions = this.descriptor.rowsPerPageOptions;\n\n // process actions\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 }\n }\n this.showInlineActionsColumn = typeof this.columnActionComponent !== 'undefined' || this.rowInlineActions.length > 0;\n\n // define all styles\n this.className = this.descriptor.className;\n this.tableFullHeightOffset = this.descriptor.tableFullHeightOffset ?? null;\n this.rowHeight = this.descriptor.rowHeight ?? null;\n if (typeof this.isColumnClickable === 'undefined') {\n // define if cell click is being observed via output\n this.isColumnClickable = this.rowClickActions.length > 0 || this.cellClickEventEmitter.observed;\n }\n switch (this.descriptor.size) {\n case TableSizeEnum.Small:\n this.className += ' p-datatable-sm';\n break;\n case TableSizeEnum.Large:\n this.className += ' p-datatable-lg';\n break;\n }\n if (this.descriptor.hasGridlines) {\n this.className += ' p-datatable-gridlines';\n }\n if (!this.columnActionMinWidth) {\n this.columnActionMinWidth = StylesUtil.calculateTableColumnActionWidth(this.descriptor, this.rowInlineActions as Array<ActionDescriptor<unknown>>);\n }\n\n // check if infinite scroll\n if (this.descriptor.paginationMode === TablePaginationModeEnum.InfiniteScroll) {\n this.infiniteScroll = true;\n this.scrollHeight = 'flex';\n this.tableFullHeightOffset = this.descriptor.tableFullHeightOffset ?? 315;\n this.rowHeight = this.descriptor.rowHeight ?? 45;\n this.useQueryParams = false;\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 MediusQueryResult<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 {\n this.queryResult$ = (isObservable(this.items) ? this.items : this.itemsSubject.asObservable()).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 MediusQueryResult<T>();\n queryResult.pageData = items;\n queryResult.allDataCount = items.length;\n return queryResult;\n })\n );\n if (!isObservable(this.items)) {\n this.itemsSubject.next(this.items ?? []);\n }\n }\n if (typeof this.loading !== 'undefined') {\n this.loading$ = this.loading instanceof Observable ? this.loading : of(this.loading);\n }\n }\n\n const initialQueryParamMap = this.route.snapshot.queryParamMap;\n if (\n this.useQueryParams &&\n ((!initialQueryParamMap.has('sort') && this.descriptor.hasDefaultSort) ||\n (!initialQueryParamMap.has('filter') && this.filterDescriptors.some(fd => fd.hasDefaultValue)))\n ) {\n // default sort/filters are applied, no additional filtering/sorting is specified in query param\n // redirect must be done at first step\n const mediusQueryParam = MediusRestUtil.fromAngularQueryParamsToMediusQueryParams(this.route.snapshot.queryParams, this.filterDescriptors, this.rowsPerPageOptions[0]);\n\n const event: LazyLoadEvent = {};\n event.multiSortMeta = this.createSortMeta(mediusQueryParam);\n event.filters = this.createFilterMeta(mediusQueryParam);\n\n // first navigate to correct url with default filters/sorts\n this.router\n .navigate([], {\n relativeTo: this.route,\n replaceUrl: true,\n queryParams: MediusRestUtil.fromPrimeLazyLoadEventToAngularQueryParams(event, this.rowsPerPageOptions[0])\n })\n .then(() => {\n this.initializeDataLoadingTriggers();\n });\n } else {\n this.initializeDataLoadingTriggers();\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 if (!this.showInlineActionsColumn) {\n this.showInlineActionsColumn = true;\n }\n break;\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['items'] && !changes['items'].firstChange && Array.isArray(changes['items'].currentValue)) {\n this.itemsSubject.next(changes['items'].currentValue);\n }\n }\n\n public ngOnDestroy() {\n this.dataProviderSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n public reload(emitEvent = false, resetParams = false) {\n this.loadTableWithDataProvider(\n resetParams ? MediusQueryParamBuilder.create(this.rowsPerPageOptions[0], 0).build() : this.dataProviderLatestQueryParam ?? new MediusQueryParam(),\n emitEvent\n );\n }\n\n public onTableLazyLoad(event: LazyLoadEvent) {\n this.dataProviderLatestLazyLoadEvent = event;\n this.dataProviderLatestLazyLoadEventVersion++;\n\n if (this.useQueryParams) {\n if (!event.multiSortMeta || event.multiSortMeta.length === 0) {\n // add default sort meta to event if not multisort meta is present\n event.multiSortMeta = this.createSortMeta();\n }\n if (!event.filters) {\n event.filters = this.createFilterMeta();\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n replaceUrl: true,\n queryParams: MediusRestUtil.fromPrimeLazyLoadEventToAngularQueryParams(event, this.rowsPerPageOptions[0])\n });\n } else {\n const mediusQueryParams = event ? MediusRestUtil.fromPrimeLazyLoadEventToMediusQueryParams(event) : new MediusQueryParam();\n this.loadTableWithDataProvider(mediusQueryParams);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onTableSort(event: any) {\n this.isSortChanged = true;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onTableFilter(event: any) {\n this.isFilterChanged = true;\n }\n\n public onCellClick(event: Event, col: ColumnDescriptor<any, T>, item: T, idx: number) {\n const mngEvent = new MngTableCellClickEvent<T>(col, item, idx);\n this.cellClickEventEmitter.next(mngEvent);\n if (this.rowClickActions.length) {\n for (const action of this.rowClickActions) {\n this.actionExecutor.triggerRowClickAction(action, mngEvent, this.route, this.descriptor);\n }\n }\n }\n\n public onSelectionChange(event: Array<T>) {\n this.selectionChangeEventEmitter.emit(event);\n }\n\n public onCaptionCmpInst<C>(instance: C) {\n this.captionCmpInstEventEmitter.next(instance);\n }\n\n public onColumnActionCmpInst<C>(instance: C) {\n this.columnActionCmpInstEventEmitter.next(instance);\n }\n\n public onActionFinish(runResult: ActionInstance<T, unknown>) {\n if (!runResult.error) {\n this.reload();\n }\n }\n\n private loadTableWithDataProvider(queryParam: MediusQueryParam | null = null, emitEvent = true) {\n if (!this.useDataProvider) {\n return;\n }\n\n this.dataProviderSubscription?.unsubscribe();\n this.dataProviderLoadingSubject.next(true);\n\n if (!queryParam) {\n queryParam = MediusQueryParamBuilder.create(this.rowsPerPageOptions[0]).build();\n }\n this.dataProviderLatestQueryParam = queryParam;\n this.dataProviderLatestQueryParamVersion++;\n\n this.dataProviderSubscription = this.dataProvider?.getAll(queryParam, this.dataProviderService).subscribe({\n next: res => {\n if (this.infiniteScroll) {\n if (this.isFilterChanged || this.isSortChanged) {\n this.dataProviderInfiniteScrollItems = [];\n }\n this.dataProviderInfiniteScrollItems.splice(queryParam!.itemsOffset ?? 0, queryParam!.itemsPerPage ?? this.rows, ...(res.pageData ?? []));\n this.dataProviderInfiniteScrollItems = [...this.dataProviderInfiniteScrollItems];\n } else {\n this.dataProviderQueryResultSubject.next(res);\n }\n this.isFilterChanged = false;\n this.isSortChanged = false;\n this.dataProviderLoadingSubject.next(false);\n },\n error: err => {\n NotificationUtil.tableNotificationError(this.translate, this.descriptor, err, this.viewContainer);\n const emptyQueryResult = new MediusQueryResult<T>();\n emptyQueryResult.pageData = [];\n emptyQueryResult.allDataCount = 0;\n this.dataProviderQueryResultSubject.next(emptyQueryResult);\n this.dataProviderLoadingSubject.next(false);\n }\n });\n\n if (emitEvent) {\n const mngEvent = new MngTableLoadEvent();\n mngEvent.originalEvent = this.dataProviderLatestLazyLoadEvent ?? undefined;\n mngEvent.queryParam = queryParam;\n this.loadEventEmitter.next(mngEvent);\n }\n }\n\n private loadTableFromRouteUpdate(params: Params) {\n const mediusQueryParam = MediusRestUtil.fromAngularQueryParamsToMediusQueryParams(params, this.filterDescriptors, this.rowsPerPageOptions[0]);\n if (this.dataProviderLatestLazyLoadEventVersion < this.dataProviderLatestQueryParamVersion + 1) {\n // update only if new version from query params will be higher\n this.updatePrimeSortAndFilter(mediusQueryParam);\n }\n this.useQueryParamsInitializedSubejct.next(true);\n this.loadTableWithDataProvider(mediusQueryParam);\n }\n\n private updatePrimeSortAndFilter(mediusQueryParam: MediusQueryParam) {\n this.multiSortMeta = this.createSortMeta(mediusQueryParam);\n this.filterMetadata = this.createFilterMeta(mediusQueryParam);\n this.rows = mediusQueryParam?.itemsPerPage ?? this.rowsPerPageOptions[0];\n this.offset = mediusQueryParam?.itemsOffset ?? 0;\n }\n\n private createFilterMeta(mediusQueryParam?: MediusQueryParam) {\n let params: MediusQueryParam;\n if (!mediusQueryParam) {\n params = new MediusQueryParam();\n } else {\n params = mediusQueryParam;\n }\n\n const primeFilterMeta: {[s: string]: FilterMetadata} = {};\n // if any filter is present, no default filters should be applied!\n const applyDefaultFilters = (params.filterParams?.length ?? 0) === 0;\n\n this.filterDescriptors.forEach(f => {\n let matchMode;\n if (f.hasDefaultValue) {\n matchMode = f.defaultFilterMatchMode;\n } else {\n switch (f.filterType) {\n case FilterTypeEnum.String:\n matchMode = FilterMatchMode.CONTAINS;\n break;\n case FilterTypeEnum.Date:\n matchMode = FilterMatchMode.DATE_AFTER;\n break;\n default:\n matchMode = FilterMatchMode.EQUALS;\n break;\n }\n }\n\n primeFilterMeta[f.property] = {\n value: applyDefaultFilters && f.defaultValue ? f.defaultValue : null,\n matchMode: matchMode\n };\n });\n\n params.filterParams?.forEach(f => {\n const descriptor = this.filterDescriptors.find(fd => fd.filterProperty === f.property || fd.property === f.property);\n const matchMode = f.filterMatchType && descriptor ? MediusRestUtil.getMapping(f.filterMatchType, descriptor.filterType, 2)?.[0] : MediusFilterMatchType.Equals;\n if (descriptor && matchMode) {\n let filterValue = f.filterValue;\n if (descriptor.filterType === FilterTypeEnum.Date && typeof filterValue !== 'undefined') {\n if (typeof filterValue === 'string' || typeof filterValue === 'number') {\n filterValue = new Date(filterValue);\n }\n }\n primeFilterMeta[descriptor.property] = {\n value: filterValue,\n matchMode: matchMode\n };\n }\n });\n return primeFilterMeta;\n }\n\n private createSortMeta(mediusQueryParam?: MediusQueryParam): SortMeta[] {\n let params: MediusQueryParam;\n if (!mediusQueryParam) {\n params = new MediusQueryParam();\n } else {\n params = mediusQueryParam;\n }\n\n let sortMeta: SortMeta[];\n const applyDefaultSorts = (params.sortProperty?.length ?? 0) === 0;\n\n if (applyDefaultSorts && this.descriptor.hasDefaultSort) {\n sortMeta = this.descriptor.defaultSortProperty.map(\n (p, idx) =>\n <SortMeta>{\n field: p,\n order: this.descriptor.defaultSortAsc[idx] ? 1 : -1\n }\n );\n } else {\n sortMeta = [];\n }\n\n params.sortProperty?.forEach((s, idx) => {\n const existingIndex = sortMeta.findIndex(value => value.field === s);\n if (existingIndex > -1) {\n sortMeta[existingIndex].order = params.sortAsc?.[idx] ?? true ? 1 : -1;\n } else {\n sortMeta.push({\n field: s,\n order: params.sortAsc?.[idx] ?? true ? 1 : -1\n });\n }\n });\n\n return sortMeta;\n }\n\n private initializeDataLoadingTriggers() {\n if (this.useQueryParams) {\n // trigger table loads from route updates\n const subscription = this.route.queryParams.subscribe(qp => {\n this.loadTableFromRouteUpdate(qp);\n });\n this.subscriptions.push(subscription);\n } else {\n // load data immediately by creating default sorts and filters (primeng will trigger onLazyLoad event on sort&filter metadata change)\n const defaultSort = this.createSortMeta();\n if (defaultSort.length > 0) {\n this.multiSortMeta = defaultSort;\n }\n\n const defaultFilter = this.createFilterMeta();\n if (defaultFilter) {\n this.filterMetadata = defaultFilter;\n }\n }\n }\n}\n","<div [style.height]=\"scrollHeight === 'flex' ? 'calc(100vh - ' + tableFullHeightOffset + 'px)' : null\">\n <!-- MUST NOT use observable for value when using virtual scroll - does not work for some reason -->\n <p-table\n *ngIf=\"!useQueryParams || (useQueryParamsInitialized$ | async)\"\n [value]=\"infiniteScroll ? dataProviderInfiniteScrollItems : (queryResult$ | async)?.pageData ?? []\"\n [dataKey]=\"$any(descriptor.dataKeyProperty)\"\n [lazy]=\"useDataProvider\"\n [loading]=\"(loading$ | async) ?? false\"\n [paginator]=\"useDataProvider && !infiniteScroll\"\n [rows]=\"$any(infiniteScroll ? 20 : rows)\"\n [first]=\"$any(infiniteScroll ? 0 : offset)\"\n [totalRecords]=\"$any(infiniteScroll ? null : (queryResult$ | async)?.allDataCount ?? 0)\"\n [rowsPerPageOptions]=\"$any(infiniteScroll ? null : rowsPerPageOptions)\"\n [showCurrentPageReport]=\"!infiniteScroll\"\n [currentPageReportTemplate]=\"'mngTable.paginationMsg' | translate\"\n [multiSortMeta]=\"$any(multiSortMeta)\"\n [filters]=\"filterMetadata\"\n [(selection)]=\"selection\"\n (selectionChange)=\"onSelectionChange($event)\"\n [scrollable]=\"infiniteScroll\"\n [virtualScroll]=\"infiniteScroll\"\n [virtualRowHeight]=\"$any(rowHeight)\"\n [scrollHeight]=\"$any(scrollHeight)\"\n [selectionMode]=\"$any(selectionEnabled ? selectionMode : null)\"\n [rowHover]=\"descriptor.hasHover\"\n [styleClass]=\"className\"\n (onLazyLoad)=\"onTableLazyLoad($event)\"\n (onSort)=\"onTableSort($event)\"\n (onFilter)=\"onTableFilter($event)\"\n sortMode=\"multiple\"\n responsiveLayout=\"scroll\">\n <ng-template *ngIf=\"captionTemplate || captionComponent || descriptor.title\" pTemplate=\"caption\">\n <ng-container *ngIf=\"captionTemplate; else componentOrDefaultCaption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate\"></ng-container>\n </ng-container>\n <ng-template #componentOrDefaultCaption>\n <div *ngIf=\"captionComponent; else defaultCaption\" [mngComponent]=\"captionComponent\" (instanceCreated)=\"onCaptionCmpInst($event)\"></div>\n <ng-template #defaultCaption>\n <h5 class=\"p-0 m-0\">{{ descriptor.title }}</h5>\n </ng-template>\n </ng-template>\n </ng-template>\n\n <ng-template pTemplate=\"header\">\n <tr *ngIf=\"!descriptor.hideHeader\">\n <th *ngIf=\"selectionEnabled && selectionMode === 'multiple'\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"min-width: 36px\"></th>\n <ng-container *ngFor=\"let col of descriptor.columns\">\n <th *ngIf=\"col.isSortEnabled\" [pSortableColumn]=\"col.property\" [class]=\"col.headerClassName\" [style.width.%]=\"col.width\" [style.min-width.px]=\"col.minWidth\">\n <div class=\"flex justify-content-between align-items-center\">\n {{ col.title ?? (col.property | i18nProperty: descriptor.model) | translate }}\n <p-sortIcon [field]=\"col.property\"></p-sortIcon>\n <mng-table-column-filter\n *ngIf=\"col.filterDescriptor && descriptor.filterDisplay === filterDisplayMenu\"\n class=\"ml-auto\"\n [display]=\"descriptor.filterDisplay\"\n [descriptor]=\"col.filterDescriptor\">\n </mng-table-column-filter>\n </div>\n </th>\n <th *ngIf=\"!col.isSortEnabled\">\n {{ col.title ?? (col.property | i18nProperty: descriptor.model) | translate }}\n <ng-container>\n <mng-table-column-filter\n *ngIf=\"col.filterDescriptor && descriptor.filterDisplay === filterDisplayMenu\"\n class=\"ml-auto\"\n [display]=\"descriptor.filterDisplay\"\n [descriptor]=\"col.filterDescriptor\">\n </mng-table-column-filter>\n </ng-container>\n </th>\n </ng-container>\n <th *ngIf=\"showInlineActionsColumn\"></th>\n </tr>\n <tr *ngIf=\"descriptor.filterDisplay === filterDisplayRow\" class=\"mng-column-filter-row\">\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"min-width: 36px\"></th>\n <th\n *ngFor=\"let col of descriptor.columns\"\n [class]=\"(col.filterDescriptor ? 'mng-column-filter-' + col.filterDescriptor.filterType + ' ' : ' ') + col.filterDescriptor?.columnClassName\"\n [style.width.%]=\"col.filterDescriptor?.columnWidth ?? col.width\"\n [style.min-width.px]=\"col.filterDescriptor?.columnMinWidth ?? col.minWidth\">\n <div class=\"flex\" *ngIf=\"col.filterDescriptor\">\n <mng-table-column-filter [display]=\"descriptor.filterDisplay\" [descriptor]=\"col.filterDescriptor\"></mng-table-column-filter>\n </div>\n </th>\n <th *ngIf=\"showInlineActionsColumn\"></th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-item let-idx=\"rowIndex\">\n <tr [style.height.px]=\"rowHeight\">\n <td *ngIf=\"selectionEnabled && selectionMode === 'multiple'\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <td *ngIf=\"selectionEnabled && selectionMode === 'single'\">\n <p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\n </td>\n <td\n *ngFor=\"let col of descriptor.columns\"\n (click)=\"onCellClick($event, col, item, idx)\"\n [class]=\"col.className\"\n [class.clickable]=\"isColumnClickable\"\n [style.width.%]=\"col.width\"\n [style.min-width.px]=\"col.minWidth\">\n <mng-table-column-value [descriptor]=\"col\" [item]=\"item\"></mng-table-column-value>\n </td>\n <td *ngIf=\"showInlineActionsColumn\" class=\"column-action text-right\" [style.min-width.px]=\"columnActionMinWidth\">\n <ng-container *ngIf=\"columnActionTemplate; else showColumnActionComponentOrDefault\">\n <ng-container *ngTemplateOutlet=\"columnActionTemplate; context: {rowItem: item, rowIndex: idx}\"></ng-container>\n </ng-container>\n <ng-template #showColumnActionComponentOrDefault>\n <span\n *ngIf=\"columnActionComponent; else defaultColumnActions\"\n [mngComponent]=\"columnActionComponent!\"\n (instanceCreated)=\"onColumnActionCmpInst($event)\"></span>\n </ng-template>\n <ng-template #defaultColumnActions>\n <mng-action\n *ngFor=\"let action of rowInlineActions\"\n [action]=\"action\"\n [item]=\"item\"\n [itemId]=\"descriptor.model.idPropertyName ? item[descriptor.model.idPropertyName] : null\"\n [actionData]=\"{itemIndex: idx}\"\n (finish)=\"onActionFinish($event)\">\n </mng-action>\n </ng-template>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"loadingbody\">\n <tr [style.height.px]=\"rowHeight\">\n <td [attr.colspan]=\"descriptor.columns.length + (showInlineActionsColumn ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n <div class=\"loading-text\"></div>\n <p-skeleton [ngStyle]=\"{width: '100%'}\"></p-skeleton>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"emptymessage\">\n <tr [style.height.px]=\"rowHeight\">\n <td [attr.colspan]=\"descriptor.columns.length + (showInlineActionsColumn ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n {{ 'mngTable.noItems' | translate }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n</div>\n","import {Component, Input, OnDestroy, 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';\nimport {Subscription} from 'rxjs';\n\nimport {MediusQueryParam} from '../../api/models';\nimport {IDataProvider, ITableviewDataProvider} from '../../data-providers';\nimport {ActionDescriptor, TableviewDescriptor} from '../../descriptors';\nimport {ActionPositionEnum} from '../../descriptors/types';\nimport {IViewContainer} from '../../models';\nimport {MngActionExecutorService, MngViewContainerComponentService} from '../../services';\nimport {MngTableLoadEvent} from './models';\nimport {MngTableComponent} from './table/table.component';\n\n@Component({\n selector: 'mng-tableview',\n templateUrl: './tableview.component.html',\n providers: [MessageService, ConfirmationService, MngViewContainerComponentService]\n})\nexport class MngTableviewComponent<T, S> implements OnInit, OnDestroy, IViewContainer<T, S> {\n @Input() public descriptor!: TableviewDescriptor<T>;\n @Input() public dataProvider?: ITableviewDataProvider<T, S>;\n @Input() public actions: Array<ActionDescriptor<T>> = [];\n\n @ViewChild(MngTableComponent) public tableComponent?: MngTableComponent<T, S>;\n\n public rowClickActions: ActionDescriptor<T>[] = [];\n public rowInlineActions: ActionDescriptor<T>[] = [];\n public toolbarLeftActions: ActionDescriptor<T>[] = [];\n public toolbarRightActions: ActionDescriptor<T>[] = [];\n\n public tableQueryParam?: MediusQueryParam;\n\n private subscriptions: Subscription[] = [];\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 actionExecutor: MngActionExecutorService,\n private viewContainerService: MngViewContainerComponentService<T, S>\n ) {}\n\n ngOnInit() {\n this.viewContainerService.actions = this.actions;\n\n if (this.dataProvider) {\n this.viewContainerService.dataProvider = this.dataProvider;\n }\n const reloadTableSubscription = this.viewContainerService.reloadTable.subscribe(() => {\n this.reloadTable();\n });\n this.subscriptions.push(reloadTableSubscription);\n\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 this.toolbarRightActions = this.toolbarRightActions.reverse();\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n getMessageService(): MessageService {\n return this.messageService;\n }\n\n getDataProvider(): IDataProvider<T, S> | undefined {\n return this.dataProvider;\n }\n\n public reloadTable() {\n this.tableComponent?.reload();\n }\n\n public onTableLoad(event: MngTableLoadEvent) {\n this.tableQueryParam = event.queryParam;\n }\n}\n","<div class=\"mng-tableview\">\n <p-toast></p-toast>\n\n <div class=\"card\">\n <p-toolbar styleClass=\"mb-4\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [queryParam]=\"tableQueryParam\"> </mng-action>\n </ng-template>\n\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [queryParam]=\"tableQueryParam\"> </mng-action>\n </ng-template>\n </p-toolbar>\n\n <mng-table [descriptor]=\"descriptor.table\" [dataProvider]=\"dataProvider\" [useQueryParams]=\"true\" [actions]=\"actions\" (tableLoad)=\"onTableLoad($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle | translate }}</h5>\n </div>\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n","import {Directive, OnInit} from '@angular/core';\n\nimport * as FileSaver from 'file-saver';\nimport {map} from 'rxjs/operators';\n\nimport {MediusQueryParamBuilder} from '../../../api/models/builders/query-param.builder';\nimport {ITableviewDataProvider} from '../../../data-providers';\nimport {\n ActionDeleteDescriptor,\n ActionDescriptor,\n ActionEditorAddDescriptor,\n ActionEditorDetailsDescriptor,\n ActionEditorEditDescriptor,\n EditorDescriptor,\n ModelDescriptor,\n TableviewDescriptor\n} from '../../../descriptors';\nimport {ActionPositionEnum} from '../../../descriptors/types';\nimport {ActionDataProviderUtil} from '../../../utils';\n\n@Directive()\nexport abstract class AMngTableviewRouteComponent<T, S> implements OnInit {\n public descriptor!: TableviewDescriptor<T>;\n public dataProvider!: ITableviewDataProvider<T, S>;\n public actions!: Array<ActionDescriptor<T>>;\n\n public ngOnInit() {\n this.descriptor = this.createTableviewDescriptor();\n this.dataProvider = this.createTableviewDataProvider();\n this.actions = this.createActionDescriptors();\n }\n\n protected abstract createTableviewDescriptor(): TableviewDescriptor<T>;\n\n protected abstract createTableviewDataProvider(): ITableviewDataProvider<T, S>;\n\n protected createActionDescriptors(): Array<ActionDescriptor<T>> {\n const actions: Array<ActionDescriptor<T>> = [];\n actions.push(this.createActionDescriptorForDetails());\n actions.push(this.createActionDescriptorForAdd());\n actions.push(this.createActionDescriptorForEdit());\n actions.push(this.createActionDescriptorForDelete());\n actions.push(this.createActionDescriptorForExport());\n return actions;\n }\n\n protected createActionDescriptorForDetails(descriptor: EditorDescriptor<T> = this.descriptor.viewEditor): ActionEditorDetailsDescriptor<T> {\n return new ActionEditorDetailsDescriptor(descriptor);\n }\n\n protected createActionDescriptorForAdd(descriptor: EditorDescriptor<T> = this.descriptor.addEditor): ActionEditorAddDescriptor<T> {\n return new ActionEditorAddDescriptor(descriptor);\n }\n\n protected createActionDescriptorForEdit(descriptor: EditorDescriptor<T> = this.descriptor.editEditor): ActionEditorEditDescriptor<T> {\n return new ActionEditorEditDescriptor(descriptor);\n }\n\n protected createActionDescriptorForDelete(descriptor: ModelDescriptor<T> = this.descriptor.model): ActionDeleteDescriptor<T> {\n return new ActionDeleteDescriptor(descriptor);\n }\n\n protected createActionDescriptorForExport(descriptor: ModelDescriptor<T> = this.descriptor.model): ActionDescriptor<T> {\n return new ActionDescriptor(descriptor, 'export')\n .withRunFunction(ctx => {\n const queryParamBuilder = ctx.parameters.queryParam ? MediusQueryParamBuilder.createFromExisting(ctx.parameters.queryParam) : MediusQueryParamBuilder.create();\n queryParamBuilder.withItemsOffset(0).withItemsPerPage(1000);\n ctx.parameters.withQueryParam(queryParamBuilder.build());\n return ActionDataProviderUtil.runGetAllOrFail(ctx).pipe(\n map(res => {\n const blob = new Blob([JSON.stringify(res.pageData, undefined, 4)], {type: 'application/json;charset=utf-8'});\n const typeName = ctx.instance.action.model?.typeName ?? '';\n FileSaver.saveAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.json`);\n return undefined;\n })\n );\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withIcon('pi pi-upload');\n }\n}\n","import {Component, Input, OnInit, ViewChild} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {ITableviewDataProvider} from '../../../data-providers';\nimport {ActionDescriptor, TableviewDescriptor} from '../../../descriptors';\nimport {MngRouterData} from '../../../router/models';\nimport {MngTableviewComponent} from '../tableview.component';\nimport {AMngTableviewRouteComponent} from './tableview-route.abstract.component';\n\n@Component({\n selector: 'mng-tableview-route',\n templateUrl: '../../../../../templates/tableview-route.component.html'\n})\nexport class MngTableviewRouteComponent<T, S> extends AMngTableviewRouteComponent<T, S> implements OnInit {\n @Input('descriptor') public descriptorInit?: TableviewDescriptor<T>;\n @Input('dataProvider') public dataProviderInit?: ITableviewDataProvider<T, S>;\n @Input('actions') public actionsInit?: Array<ActionDescriptor<T>>;\n\n @ViewChild(MngTableviewComponent) public tableviewComponent?: MngTableviewComponent<T, S>;\n\n constructor(private route: ActivatedRoute) {\n super();\n }\n\n public get routeData() {\n return this.route.snapshot.data as MngRouterData;\n }\n\n protected createTableviewDescriptor(): TableviewDescriptor<T> {\n if (this.descriptorInit) {\n return this.descriptorInit;\n }\n if (this.routeData?.tableview?.descriptor) {\n throw Error('Tableview requires a descriptor.');\n }\n return this.routeData.tableview!.descriptor;\n }\n\n protected createTableviewDataProvider(): ITableviewDataProvider<T, S> {\n if (this.dataProviderInit) {\n return this.dataProviderInit;\n }\n if (this.routeData?.tableview?.dataProvider) {\n throw Error('Tableview requires a data provider.');\n }\n return this.routeData.tableview!.dataProvider;\n }\n\n protected override createActionDescriptors(): Array<ActionDescriptor<T>> {\n if (this.actionsInit) {\n return this.actionsInit;\n }\n return this.routeData?.tableview?.actions ?? super.createActionDescriptors();\n }\n\n public reloadTable() {\n this.tableviewComponent?.reloadTable();\n }\n}\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","import {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {FormControl} from '@angular/forms';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {Message} from 'primeng/api';\nimport {Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {MediusQueryParamBuilder, MediusQueryResult} from '../../../../../api/models';\nimport {FieldLookupDescriptor} from '../../../../../descriptors';\nimport {FieldLookupConfig} from '../../../../../descriptors/interfaces';\nimport {MngTableComponent} from '../../../../tableview';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum} from '../../../models';\n\n@Component({\n selector: 'mng-formly-field-lookup-dialog',\n templateUrl: 'formly-field-lookup-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldLookupDialogComponent<T, ET> extends FieldType implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild(MngTableComponent) public mngTable?: MngTableComponent<any, any>;\n\n public descriptor!: FieldLookupDescriptor<T, ET>;\n public config!: FieldLookupConfig;\n public fieldLabelFormControl: FormControl = new FormControl();\n\n public itemsSubject: Subject<T> = new ReplaySubject(1);\n public itemsAsync: Observable<T> = this.itemsSubject.asObservable();\n public addItemsSubject: Subject<MediusQueryResult<T>> = new ReplaySubject(1);\n public addItemsAsync: Observable<MediusQueryResult<T>> = this.addItemsSubject.asObservable();\n\n public dialogUseDataProvider = false;\n private dialogDataProviderService: any = null;\n private dialogIsLoadingSubject = new ReplaySubject<boolean>(1);\n\n public isDialogVisible = false;\n public dialogAreItemsLoaded = false;\n public dialogSelectedItem: any = null;\n public dialogMessages: Message[] = [];\n public dialogIsLoading$ = this.dialogIsLoadingSubject.asObservable();\n\n private lookupDataProviderSubscription?: Subscription;\n private subscriptions: Subscription[] = [];\n\n constructor(private injector: Injector) {\n super();\n }\n\n ngOnInit(): void {\n this.descriptor = this.to['descriptor'];\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n this.config = this.descriptor.config as FieldLookupConfig;\n if (!this.descriptor.dialogTableDataProvider && this.descriptor.dataProvider?.serviceType) {\n this.dialogUseDataProvider = true;\n this.dialogDataProviderService = this.injector.get<any>(this.descriptor.dataProvider.serviceType);\n }\n\n // init values\n this.setFieldLabelValue(this.formControl!.value);\n const subscription = this.formControl!.valueChanges.pipe(\n startWith(this.formControl!.value),\n distinctUntilChanged((prev, curr) => {\n const compareProp = this.descriptor.dialogTableDescriptor!.dataKeyProperty ?? this.descriptor.dialogTableDescriptor!.model.idPropertyName;\n if (compareProp && typeof prev === 'object' && typeof curr === 'object') {\n return prev[compareProp] === curr[compareProp];\n } else {\n return prev === curr;\n }\n })\n ).subscribe(v => {\n this.setFieldLabelValue(v);\n this.itemsSubject.next(v);\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldLookupDialogComponent, this, {\n value: v\n });\n });\n this.subscriptions.push(subscription);\n }\n\n ngAfterViewInit() {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.lookupDataProviderSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openSelectDialog() {\n if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {\n this.dialogIsLoadingSubject.next(true);\n const queryParamBuilder = MediusQueryParamBuilder.create(50);\n if (this.descriptor.dialogTableDescriptor!.hasDefaultSort) {\n this.descriptor.dialogTableDescriptor!.defaultSortProperty.forEach((p, idx) =>\n queryParamBuilder.withSort(p, this.descriptor.dialogTableDescriptor!.defaultSortAsc[idx])\n );\n }\n this.lookupDataProviderSubscription = this.descriptor.dataProvider?.lookup(queryParamBuilder.build(), this.dialogDataProviderService).subscribe({\n next: res => {\n const mqr = new MediusQueryResult<T>();\n mqr.pageData = res;\n mqr.allDataCount = res.length;\n this.addItemsSubject.next(mqr);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoadingSubject.next(false);\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DataProvider, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: 'LookupNext',\n queryResult: mqr\n });\n },\n error: err => {\n this.dialogIsLoadingSubject.next(false);\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DataProvider, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: 'LookupError',\n queryResult: err\n });\n }\n });\n }\n this.dialogSelectedItem = null;\n this.isDialogVisible = true;\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: true\n });\n }\n\n onSelectionChange(item: any) {\n this.dialogSelectedItem = item;\n }\n\n onCaptionCmpInst(instance: any) {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.TABLE_CAPTION_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n onColumnActionCmpInst(instance: any) {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n clear() {\n this.formControl!.setValue(undefined);\n this.dialogSelectedItem = null;\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: false\n });\n }\n\n addItem() {\n this.formControl!.setValue(this.dialogSelectedItem);\n this.dialogSelectedItem = null;\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n private setFieldLabelValue(value: T) {\n if (!value) {\n this.fieldLabelFormControl.setValue('');\n return;\n }\n if (typeof value === 'object') {\n const labelProperty = this.descriptor.itemsLabelProperty ?? this.descriptor.dialogTableDescriptor?.model.titlePropertyName;\n if (!labelProperty) {\n throw new Error('Could not determine label property.');\n }\n this.fieldLabelFormControl.setValue(value[labelProperty as keyof object]);\n } else {\n this.fieldLabelFormControl.setValue(value);\n }\n }\n}\n","<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\" *ngIf=\"!to.required && formControl?.value && !formControl?.disabled\"></i>\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate: {item: ''}\"\n [disabled]=\"formControl?.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate: {item: to?.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\">\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config?.table?.captionComponent\"\n [columnActionComponent]=\"config?.table?.columnActionComponent\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnActionComponentInstance)=\"onColumnActionCmpInst($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\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged, of, throwError} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\n\nimport {ActionDescriptor, ActionEditorDescriptor, ActionEditorSubmitDescriptor, FieldManyEditorDescriptor} from '../../../../../descriptors';\nimport {\n ActionEditorDialogSizeEnum,\n ActionEditorSubmitTypeEnum,\n ActionLevelEnum,\n ActionPositionEnum,\n ActionSizeEnum,\n FieldManyEditorActionEnum\n} from '../../../../../descriptors/types';\nimport {MngActionExecutorService} from '../../../../../services';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\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 MngFormlyFieldTableDialogFormComponent<T, ET> extends FieldType implements OnInit, AfterViewInit, OnDestroy {\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 actions: Array<ActionDescriptor<T>> = [];\n public toolbarRightActions: Array<ActionDescriptor<T>> = [];\n\n private subscriptions: Subscription[] = [];\n private isDisabledSubject = new BehaviorSubject<boolean>(false);\n private isEnabled$ = this.isDisabledSubject.asObservable().pipe(\n distinctUntilChanged(),\n map(e => !e)\n );\n\n constructor(private actionExecutor: MngActionExecutorService) {\n super();\n }\n\n public ngOnInit() {\n this.descriptor = this.to['descriptor'];\n const hasViewAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.View);\n const hasAddAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Add);\n const hasEditAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Edit);\n const hasDeleteAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Delete);\n\n if (hasViewAction) {\n const viewAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.viewEditor, 'details', this.descriptor.editor.model.type, this.descriptor.property)\n .withPosition(ActionPositionEnum.RowClick)\n .withTitle(null)\n .withDialogClassName('mng-field-dialog mng-action-editor-dialog')\n .withDialogSize(ActionEditorDialogSizeEnum.Small);\n viewAction.withEditorActions([new ActionEditorSubmitDescriptor(viewAction, ActionEditorSubmitTypeEnum.Cancel)]);\n this.actions.push(viewAction as ActionDescriptor<T>);\n }\n\n if (hasAddAction) {\n const addAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.addEditor, 'add', this.descriptor.editor.model.type, this.descriptor.property)\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withTitle(null)\n .withIcon('pi pi-plus')\n .withDialogClassName('mng-field-dialog mng-action-editor-dialog')\n .withDialogSize(ActionEditorDialogSizeEnum.Small)\n .withSize(ActionSizeEnum.ExtraSmall)\n .withSubmitFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(() => new Error(`No item was provided in context, edit cannot be done.`));\n }\n this.formState.submittedOn = Date.now();\n let value = this.formControl!.value;\n value = [...value, ctx.parameters.item];\n this.formControl!.patchValue(value);\n return of(ctx.parameters.item);\n })\n .withIsVisibleFunction(() => of(!this.options?.formState.disabled))\n .withIsEnabledFunction(() => this.isEnabled$);\n this.actions.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 .withPosition(ActionPositionEnum.RowInline)\n .withTitle(null)\n .withIcon('pi pi-pencil')\n .withDialogClassName('mng-field-dialog mng-action-editor-dialog')\n .withDialogSize(ActionEditorDialogSizeEnum.Small)\n .withSize(ActionSizeEnum.ExtraSmall)\n .withSubmitFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(() => new Error(`No item was provided in context, edit cannot be done.`));\n }\n this.formState.submittedOn = Date.now();\n const formControlValue = this.formControl!.value;\n formControlValue[ctx.parameters.actionData?.['itemIndex']] = ctx.parameters.item;\n this.formControl!.patchValue(formControlValue);\n return of(ctx.parameters.item);\n })\n .withIsVisibleFunction(() => of(!this.formControl?.disabled))\n .withIsEnabledFunction(() => this.isEnabled$);\n this.actions.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 .withPosition(ActionPositionEnum.RowInline)\n .withLevel(ActionLevelEnum.Danger)\n .withTitle(null)\n .withIcon('pi pi-trash')\n .withSize(ActionSizeEnum.ExtraSmall)\n .withRunFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(() => new Error(`No item was provided in context, delete cannot be done.`));\n }\n let formControlValue = this.formControl!.value as Array<T>;\n const compareProperty = this.descriptor.tableDescriptor.dataKeyProperty\n ? this.descriptor.tableDescriptor.dataKeyProperty\n : this.descriptor.tableDescriptor.model.idPropertyName;\n const ctxItem: any = ctx.parameters.item;\n if (compareProperty && ctxItem?.[compareProperty]) {\n formControlValue = formControlValue.filter((i: any) => i[compareProperty] !== ctxItem[compareProperty]);\n this.formControl!.patchValue(formControlValue);\n } else if (typeof ctx.parameters.actionData?.['itemIndex'] === 'number') {\n formControlValue.splice(ctx.parameters.actionData['itemIndex'], 1);\n this.formControl!.patchValue([...formControlValue]);\n } else {\n return throwError(() => new Error('Cannot compare items, please provide main table data key property or model id property.'));\n }\n return of(ctxItem);\n })\n .withIsVisibleFunction(() => of(!this.options?.formState.disabled))\n .withIsEnabledFunction(() => this.isEnabled$);\n this.actions.push(deleteAction);\n }\n\n this.actions.push(...this.descriptor.actions);\n for (const action of this.actions) {\n switch (action.position) {\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.push(action);\n break;\n }\n }\n\n // init values\n if (typeof this.formControl!.value === 'undefined' || this.formControl!.value === null) {\n this.formControl!.patchValue([]);\n }\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogFormComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n let subscription = this.formControl!.valueChanges.pipe(startWith(this.formControl!.value)).subscribe(v => {\n this.itemsSubject.next(v);\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldTableDialogFormComponent, this, {\n value: v\n });\n });\n this.subscriptions.push(subscription);\n\n this.isDisabledSubject.next(this.formControl!.disabled);\n subscription = this.formControl!.statusChanges.pipe().subscribe(status => {\n if (status === 'DISABLED' && !this.isDisabledSubject.value) {\n this.isDisabledSubject.next(true);\n } else if (status !== 'DISABLED' && this.isDisabledSubject.value) {\n this.isDisabledSubject.next(false);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogFormComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogFormComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" [actions]=\"actions\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"></mng-action>\n </div>\n </ng-template>\n</mng-table>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {Message} from 'primeng/api';\nimport {Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {MediusFilterMatchType, MediusQueryParamBuilder, MediusQueryResult} from '../../../../../api/models';\nimport {FieldManyToManyEditorDescriptor} from '../../../../../descriptors';\nimport {FieldManyToManyEditorActionEnum} from '../../../../../descriptors/types';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum} from '../../../models';\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 MngFormlyFieldTableDialogMultiselectComponent<T, ET> extends FieldType implements OnInit, AfterViewInit, OnDestroy {\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<MediusQueryResult<T>> = new ReplaySubject(1);\n public addItemsAsync: Observable<MediusQueryResult<T>> = this.addItemsSubject.asObservable();\n\n public dialogUseDataProvider = 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 = false;\n public hasDeleteAction = false;\n\n private lookupDataProviderSubscription?: Subscription;\n private subscriptions: Subscription[] = [];\n\n constructor(private injector: Injector) {\n super();\n }\n\n public ngOnInit() {\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 === FieldManyToManyEditorActionEnum.Add);\n this.hasDeleteAction = this.descriptor.actions.some(a => a === FieldManyToManyEditorActionEnum.Delete);\n\n // init values\n if (typeof this.formControl!.value === 'undefined' || this.formControl!.value === null) {\n this.formControl!.patchValue([]);\n }\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.formControl!.valueChanges.pipe(startWith(this.formControl!.value), distinctUntilChanged()).subscribe(v => {\n this.itemsSubject.next(v ?? []);\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldTableDialogMultiselectComponent, this, {\n value: v ?? []\n });\n });\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.lookupDataProviderSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openAddDialog() {\n if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {\n this.dialogIsLoadingSubject.next(true);\n const queryParamBuilder = MediusQueryParamBuilder.create(50);\n if (this.descriptor.lookupTableDescriptor.hasDefaultSort) {\n this.descriptor.lookupTableDescriptor.defaultSortProperty.forEach((p, idx) =>\n queryParamBuilder.withSort(p, this.descriptor.lookupTableDescriptor.defaultSortAsc[idx])\n );\n }\n if (this.descriptor.hasLookupExcludeValues) {\n const filterValues = this.formControl!.value.map((i: any) => i[this.descriptor.excludeValueProperty]);\n queryParamBuilder.withFilter(this.descriptor.excludeFilterProperty, filterValues, undefined, MediusFilterMatchType.NotIn);\n }\n this.lookupDataProviderSubscription = this.descriptor.lookupTableDataProvider?.getAll(queryParamBuilder.build(), this.dialogDataProviderService).subscribe({\n next: res => {\n this.addItemsSubject.next(res);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoadingSubject.next(false);\n },\n error: () => {\n this.dialogIsLoadingSubject.next(false);\n }\n });\n }\n this.dialogSelectedAddItems = [];\n this.isDialogVisible = true;\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: true\n });\n }\n\n onSelectionChange(items: Array<any>) {\n this.dialogSelectedAddItems = items;\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: false\n });\n }\n\n addItems() {\n let value = this.formControl!.value;\n if (!Array.isArray(value)) {\n value = [];\n }\n value = [...value, ...this.dialogSelectedAddItems];\n this.formControl!.patchValue(value);\n this.dialogSelectedAddItems = [];\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n removeItem(item: any) {\n let value = this.formControl!.value;\n if (!Array.isArray(value)) {\n value = [];\n }\n const compareProperty = this.descriptor.mainTableDescriptor.dataKeyProperty\n ? this.descriptor.mainTableDescriptor.dataKeyProperty\n : 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: any) => i[compareProperty] !== item[compareProperty]);\n this.formControl!.patchValue(value);\n this.dialogAreItemsLoaded = false;\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 align-items-center table-header pt-0\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <button\n *ngIf=\"hasAddAction && !options?.formState?.disabled\"\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-plus\"\n class=\"p-button-rounded p-button-success mng-button-xs\"\n (click)=\"openAddDialog()\"\n [disabled]=\"formControl!.disabled\"></button>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n <button\n *ngIf=\"hasDeleteAction && !options?.formState?.disabled\"\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-trash\"\n class=\"p-button-rounded p-button-danger mng-button-xs\"\n (click)=\"removeItem(item)\"\n [disabled]=\"formControl!.disabled\"></button>\n </ng-template>\n</mng-table>\n\n<p-dialog\n *ngIf=\"hasAddAction\"\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.addItem' | translate: {item: to?.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-field-dialog mng-action-editor-dialog mng-action-editor-dialog-sm\">\n <ng-template pTemplate=\"content\">\n <mng-table\n [descriptor]=\"descriptor.mainTableDescriptor\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [loading]=\"dialogIsLoading$\"\n (selectionChange)=\"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\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.add' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItems()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\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 MngFormlyFieldTabsComponent extends FieldType {}\n","<p-tabView>\n <p-tabPanel\n *ngFor=\"let tab of field.fieldGroup; let i = index; let last = last\"\n [header]=\"tab.templateOptions?.label! | translate\"\n [headerStyleClass]=\"$any(formControl!.valid ? 'p-tabview-title' : null)\">\n <ng-template pTemplate=\"header\">\n <span\n class=\"p-tabview-title\"\n [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.templateOptions?.label!) + '_invalid']\"\n >{{ tab.templateOptions?.label! | translate }}</span\n >\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n</p-tabView>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {FieldGroupDescriptor} from '../../../../../descriptors';\nimport {FieldGroupTypeEnum} from '../../../../../descriptors/types';\n\n@Component({\n selector: 'mng-formly-field-fieldset',\n templateUrl: './formly-field-fieldset.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldFieldsetComponent extends FieldType implements OnInit {\n public readonly typeFieldset = FieldGroupTypeEnum.Fieldset;\n public readonly typeLogical = FieldGroupTypeEnum.Logical;\n public descriptor?: FieldGroupDescriptor<any>;\n\n ngOnInit() {\n this.descriptor = this.to['descriptor'];\n }\n}\n","<ng-container *ngFor=\"let group of field.fieldGroup; let i = index; let last = last\">\n <ng-container [ngSwitch]=\"group?.templateOptions?.['descriptor']?.type\">\n <p-fieldset *ngSwitchCase=\"typeFieldset\" [legend]=\"group.templateOptions?.label! | translate\">\n <formly-field [field]=\"group\"></formly-field>\n </p-fieldset>\n <formly-field *ngSwitchDefault [field]=\"group\"></formly-field>\n </ng-container>\n</ng-container>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {MngCommonsService} from '../../services';\n\n@Component({\n selector: 'mng-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngBreadcrumbComponent {\n constructor(public mngCommons: MngCommonsService) {}\n}\n","<div class=\"layout-breadcrumb-container\">\n <div class=\"layout-breadcrumb\">\n <p-breadcrumb [home]=\"$any(mngCommons.breadcrumbHome$ | async)\" [model]=\"$any(mngCommons.breadcrumbs$ | async)\" styleClass=\"layout-breadcrumb py-2\"></p-breadcrumb>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {MngCommonsService} from '../../services';\n\n@Component({\n selector: 'mng-footer',\n templateUrl: './footer.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFooterComponent {\n public currentYear = new Date().getFullYear();\n\n constructor(public mngCommons: MngCommonsService) {}\n}\n","<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n <img id=\"footer-logo\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" alt=\"atlantis-layout\" />\n <span class=\"app-name\">{{ mngCommons.appName | translate }}</span>\n </div>\n <span class=\"copyright\">© {{ mngCommons.appOwner | translate }} - {{ currentYear }}</span>\n</div>\n","import {Injectable} from '@angular/core';\n\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MngCommonsService} from '../../../services';\n\n@Injectable()\nexport class MngMainLayoutComponentService {\n private _overlayMenuActive = false;\n private _overlayMenuActiveSubject: Subject<boolean> = new BehaviorSubject(this._overlayMenuActive);\n private _staticMenuDesktopInactive = false;\n private _staticMenuDesktopInactiveSubject: Subject<boolean> = new BehaviorSubject(this._staticMenuDesktopInactive);\n private _staticMenuMobileActive = false;\n private _staticMenuMobileActiveSubject: Subject<boolean> = new BehaviorSubject(this._staticMenuMobileActive);\n\n private _sidebarActive = true;\n private _sidebarActiveSubject: Subject<boolean> = new BehaviorSubject(this._sidebarActive);\n private _sidebarStatic = true;\n private _sidebarStaticSubject: Subject<boolean> = new BehaviorSubject(this._sidebarStatic);\n\n private _menuClick = false;\n private _menuHoverActive = false;\n private _topbarItemClick = false;\n\n private _activeTopbarItem: any = null;\n private _activeTopbarItemSubject: Subject<any> = new BehaviorSubject(this._activeTopbarItem);\n\n private _pinActive = true;\n private _pinActiveSubject: Subject<boolean> = new BehaviorSubject(this._pinActive);\n\n private _innerWidth = 1920;\n private _innerWidthSubject: Subject<number> = new BehaviorSubject(this._innerWidth);\n\n constructor(private mngCommons: MngCommonsService) {}\n\n get overlayMenuActive$(): Observable<boolean> {\n return this._overlayMenuActiveSubject.asObservable();\n }\n\n set overlayMenuActive(value: boolean) {\n this._overlayMenuActive = value;\n this._overlayMenuActiveSubject.next(value);\n }\n\n get staticMenuDesktopInactive$(): Observable<boolean> {\n return this._staticMenuDesktopInactiveSubject.asObservable();\n }\n\n set staticMenuDesktopInactive(value: boolean) {\n this._staticMenuDesktopInactive = value;\n this._staticMenuDesktopInactiveSubject.next(value);\n }\n\n get staticMenuMobileActive$(): Observable<boolean> {\n return this._staticMenuMobileActiveSubject.asObservable();\n }\n\n set staticMenuMobileActive(value: boolean) {\n this._staticMenuMobileActive = value;\n this._staticMenuMobileActiveSubject.next(value);\n }\n\n get sidebarActive$(): Observable<boolean> {\n return this._sidebarActiveSubject.asObservable();\n }\n\n set sidebarActive(value: boolean) {\n this._sidebarActive = value;\n this._sidebarActiveSubject.next(value);\n }\n\n get sidebarStatic$(): Observable<boolean> {\n return this._sidebarStaticSubject.asObservable();\n }\n\n set sidebarStatic(value: boolean) {\n this._sidebarStatic = value;\n this._sidebarStaticSubject.next(value);\n }\n\n set menuHoverActive(value: boolean) {\n this._menuHoverActive = value;\n }\n\n set topbarItemClick(value: boolean) {\n this._topbarItemClick = value;\n }\n\n get activeTopbarItem$(): Observable<any> {\n return this._activeTopbarItemSubject.asObservable();\n }\n\n set activeTopbarItem(value: any) {\n this._activeTopbarItem = value;\n this._activeTopbarItemSubject.next(value);\n }\n\n get pinActive$(): Observable<boolean> {\n return this._pinActiveSubject.asObservable();\n }\n\n set pinActive(value: boolean) {\n this._pinActive = value;\n this._pinActiveSubject.next(value);\n }\n\n get isDesktop$() {\n return this._innerWidthSubject.asObservable().pipe(map(e => this.isWidthDesktop(e)));\n }\n\n get isMobile$() {\n return this._innerWidthSubject.asObservable().pipe(map(e => this.isWidthMobile(e)));\n }\n\n set innerWidth(value: number) {\n this._innerWidth = value;\n this._innerWidthSubject.next(value);\n }\n\n onLayoutClick() {\n if (!this._topbarItemClick) {\n this.activeTopbarItem = null;\n }\n\n if (!this._menuClick) {\n if (this.mngCommons.menuModeIsSlim && !this.isMobile()) {\n this.mngCommons.menuReset();\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._menuClick = false;\n this.topbarItemClick = false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onSidebarMouseOver(event: any) {\n if (this.mngCommons.menuModeIsSidebar && !this._sidebarStatic) {\n this.sidebarActive = this.isDesktop();\n setTimeout(() => {\n this.pinActive = this.isDesktop();\n }, 200);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onSidebarMouseLeave(event: any) {\n if (this.mngCommons.menuModeIsSidebar && !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.mngCommons.menuModeIsOverlay) {\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 /**\n * Checks if is desktop width, DO NOT use within HTML templates or within functions called by HTML templates\n */\n public isDesktop() {\n return this.isWidthDesktop(this._innerWidth);\n }\n\n /**\n * Checks if is mobile width, DO NOT use within HTML templates or within functions called by HTML templates\n */\n public isMobile() {\n return this.isWidthMobile(this._innerWidth);\n }\n\n private isWidthDesktop(width: number) {\n return width > 991;\n }\n\n private isWidthMobile(width: number) {\n return width <= 991;\n }\n}\n","import {animate, state, style, transition, trigger} from '@angular/animations';\nimport {Component, HostBinding, Injector, Input, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, CanActivate, GuardsCheckEnd, NavigationEnd, Router, RouterStateSnapshot, UrlTree} from '@angular/router';\n\nimport {BehaviorSubject, Observable, Subscription, combineLatest, distinctUntilChanged, from, of} from 'rxjs';\nimport {first, map} from 'rxjs/operators';\n\nimport {MngMenuItem} from '../../models';\nimport {MngAuthorizationService} from '../../security';\nimport {MngCommonsService} from '../../services';\nimport {MngMainLayoutComponentService} from './services';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[mng-menuitem]',\n templateUrl: './menu-item.component.html',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class.layout-root-menuitem]': 'root',\n '[class.active-menuitem]': 'active'\n },\n animations: [\n trigger('children', [\n state(\n 'void',\n style({\n height: '0px'\n })\n ),\n state(\n 'hiddenAnimated',\n style({\n height: '0px'\n })\n ),\n state(\n 'visibleAnimated',\n style({\n height: '*'\n })\n ),\n state(\n 'visible',\n style({\n height: '*',\n 'z-index': 100\n })\n ),\n state(\n 'hidden',\n style({\n height: '0px',\n 'z-index': '*'\n })\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 // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngMenuItemComponent implements OnInit, OnDestroy {\n @Input() item!: MngMenuItem;\n @Input() index = 0;\n @Input() root = false;\n @Input() parentKey: string | null = null;\n\n @HostBinding('class.py-0') private hostClassNoPadding = false;\n\n public key = '';\n public active = false;\n public hover = false;\n\n private guardsIsAllowedSubject = new BehaviorSubject(true);\n public guardsIsAllowed$: Observable<boolean>;\n private isPermittedSubject = new BehaviorSubject(true);\n public isPermitted$: Observable<boolean>;\n\n private itemUrl?: string | UrlTree;\n private menuSourceSubscription?: Subscription;\n private menuResetSubscription?: Subscription;\n private routerEventsSubscription?: Subscription;\n private guardsIsAllowedSubscription?: Subscription;\n private isPermittedSubscription?: Subscription;\n private isVisibleCombinedSubscription?: Subscription;\n\n constructor(\n private injector: Injector,\n private router: Router,\n private route: ActivatedRoute,\n private authorization: MngAuthorizationService,\n public mngCommons: MngCommonsService,\n public mainLayoutService: MngMainLayoutComponentService\n ) {\n this.guardsIsAllowed$ = this.guardsIsAllowedSubject.asObservable().pipe(distinctUntilChanged());\n this.isPermitted$ = this.isPermittedSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n ngOnInit() {\n if (!this.mngCommons.menuModeIsSlim && this.item.routerLink) {\n this.updateActiveStateFromRoute();\n }\n\n this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);\n if (this.item.routerLink) {\n if (typeof this.item.routerLink === 'string') {\n this.itemUrl = this.item.routerLink;\n } else {\n this.itemUrl = this.router.parseUrl(this.item.routerLink.join('/'));\n }\n }\n\n this.menuSourceSubscription = this.mngCommons.menuActiveKey$.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.mngCommons.menuReset$.subscribe(() => {\n this.active = false;\n });\n\n this.routerEventsSubscription = this.router.events.subscribe(next => {\n if (next instanceof GuardsCheckEnd && next.shouldActivate) {\n this.checkIfMenuItemIsAllowedFromGuard(next.state);\n } else if (next instanceof NavigationEnd) {\n if (this.mngCommons.menuModeIsSlim && !this.mainLayoutService.isMobile()) {\n this.active = false;\n } else {\n this.updateActiveStateFromRoute();\n }\n }\n });\n\n if (this.item.permissions) {\n this.isPermittedSubscription = this.authorization.isPermitted(this.item.permissions).subscribe({\n next: isPermitted => {\n this.isPermittedSubject.next(isPermitted);\n }\n });\n }\n\n this.checkIfMenuItemIsAllowedFromGuard(this.router.routerState.snapshot);\n\n this.isVisibleCombinedSubscription = combineLatest([this.isPermitted$, this.guardsIsAllowed$]).subscribe({\n next: res => {\n this.hostClassNoPadding = res.some(r => r === false);\n }\n });\n }\n\n updateActiveStateFromRoute() {\n if (this.itemUrl) {\n this.active = this.router.isActive(this.itemUrl, this.item.items ? false : true);\n } else {\n this.active = false;\n }\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.mainLayoutService.menuHoverActive = !this.mainLayoutService.menuHoverActive;\n }\n\n // notify other items\n this.mngCommons.menuChangeActiveKey(this.key);\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.mainLayoutService.isMobile()) {\n this.mainLayoutService.staticMenuMobileActive = false;\n }\n\n if (this.mngCommons.menuModeIsOverlay) {\n this.mainLayoutService.overlayMenuActive = false;\n }\n\n // reset horizontal menu\n if (this.mngCommons.menuModeIsSlim && !this.mainLayoutService.isMobile()) {\n this.mngCommons.menuReset();\n this.mainLayoutService.menuHoverActive = false;\n }\n }\n }\n\n onMouseEnter() {\n // activate item on hover\n if (this.root && this.mainLayoutService.menuHoverActive && this.mngCommons.menuModeIsSlim && this.mainLayoutService.isDesktop()) {\n this.mngCommons.menuChangeActiveKey(this.key);\n this.active = true;\n }\n }\n\n ngOnDestroy() {\n this.menuSourceSubscription?.unsubscribe();\n this.menuResetSubscription?.unsubscribe();\n this.routerEventsSubscription?.unsubscribe();\n this.guardsIsAllowedSubscription?.unsubscribe();\n this.isPermittedSubscription?.unsubscribe();\n this.isVisibleCombinedSubscription?.unsubscribe();\n }\n\n private checkIfMenuItemIsAllowedFromGuard(routerState: RouterStateSnapshot) {\n this.guardsIsAllowedSubscription?.unsubscribe();\n if (this.item.guards?.length) {\n const obs = [];\n for (const guard of this.item.guards) {\n const tokenInjectedInstance = this.injector.get(guard);\n if (tokenInjectedInstance && 'canActivate' in tokenInjectedInstance) {\n const guardInstance = tokenInjectedInstance as CanActivate;\n const canActivateRes = guardInstance.canActivate(this.route.snapshot, routerState);\n\n let canActivateObs: Observable<boolean | UrlTree>;\n if (canActivateRes instanceof Observable) {\n canActivateObs = canActivateRes;\n } else if (canActivateRes instanceof Promise) {\n canActivateObs = from(canActivateRes);\n } else {\n canActivateObs = of(canActivateRes);\n }\n obs.push(\n canActivateObs.pipe(\n first(),\n map(res => res === true) // if url tree is present, that means redirect and implies not allowed\n )\n );\n }\n }\n this.guardsIsAllowedSubscription = combineLatest(obs)\n .pipe(first())\n .subscribe(next => {\n const result = next.every(n => n === true);\n this.guardsIsAllowedSubject.next(result);\n });\n } else {\n this.guardsIsAllowedSubject.next(true);\n }\n }\n}\n","<ng-container>\n <div *ngIf=\"root && item.visible !== false && (guardsIsAllowed$ | async) === true && (isPermitted$ | async) === true\" class=\"layout-menuitem-root-text\">\n {{ item.label! | translate }}\n </div>\n <a\n *ngIf=\"(!item.routerLink || item.items) && item.visible !== false && (guardsIsAllowed$ | async) === true && (isPermitted$ | async) === true\"\n [attr.href]=\"item.href\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n 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\n *ngIf=\"item.routerLink && !item.items && item.visible !== false && (guardsIsAllowed$ | async) === true && (isPermitted$ | async) === true\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"hover = true\"\n (mouseleave)=\"hover = false\"\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"active-menuitem-routerlink\"\n [routerLinkActiveOptions]=\"{exact: true}\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n 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\n *ngIf=\"\n ((item.items && active) || (item.items && (mngCommons.menuModeIsStatic$ | async) && (root || active))) &&\n item.visible !== false &&\n (guardsIsAllowed$ | async) === true &&\n (isPermitted$ | async) === true\n \"\n [@children]=\"\n (mngCommons.menuModeIsSlim$ | async) && (mainLayoutService.isMobile$ | async) === false && root\n ? active\n ? 'visible'\n : 'hidden'\n : (mngCommons.menuModeIsStatic$ | async) && root && (mainLayoutService.isMobile$ | async) === false\n ? 'visible'\n : active\n ? 'visibleAnimated'\n : 'hiddenAnimated'\n \">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li mng-menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeClassName\"></li>\n </ng-template>\n </ul>\n</ng-container>\n","import {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\n\nimport {Observable, ReplaySubject} from 'rxjs';\n\nimport {MngConfigurationService} from './configuration.service';\n\n@Injectable()\nexport class MngVersionService {\n private cache: {[key: string]: ReplaySubject<unknown>} = {};\n\n constructor(private http: HttpClient, private configurationService: MngConfigurationService) {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public loadVersion(path: string, baseConfigKey?: string, jsonPath = '$'): Observable<unknown> {\n const urlSegments = [];\n if (baseConfigKey) {\n const baseUrl = this.configurationService.getConfigValue(baseConfigKey);\n urlSegments.push(baseUrl.endsWith('/') ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl);\n }\n if (path) {\n urlSegments.push(!path.startsWith('/') ? `/${path}` : path);\n }\n const url = urlSegments.join('');\n if (!this.cache[url]) {\n this.cache[url] = new ReplaySubject<unknown>(1);\n\n this.http.get(urlSegments.join('')).subscribe({\n next: res => {\n this.cache[url].next(res);\n }\n });\n }\n\n return this.cache[url].asObservable();\n }\n}\n","import {ChangeDetectionStrategy, Component, Input, OnInit} from '@angular/core';\n\nimport {BehaviorSubject} from 'rxjs';\n\nimport {VersionConfig, VersionConfigType, VersionInfo} from '../../models';\nimport {JsonPathPipe} from '../../pipes';\nimport {MngVersionService} from '../../services/version.service';\n\n@Component({\n selector: 'mng-version',\n templateUrl: './version.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngVersionComponent implements OnInit {\n @Input('version') public initVersion?: VersionConfigType;\n\n public displayName?: string;\n public displayVersion?: string;\n public versions?: Array<VersionConfig>;\n\n private loadingSubject = new BehaviorSubject(false);\n public loading$ = this.loadingSubject.asObservable();\n\n constructor(private versionService: MngVersionService, private jsonPathPipe: JsonPathPipe) {}\n\n ngOnInit() {\n if (Array.isArray(this.initVersion)) {\n this.versions = this.initVersion;\n } else if (typeof this.initVersion === 'string') {\n this.displayVersion = this.initVersion;\n } else if (typeof this.initVersion !== 'undefined') {\n if (this.initVersion['info' as keyof object] || this.initVersion['urlPath' as keyof object]) {\n const config = this.initVersion as VersionConfig;\n this.displayName = config.displayName;\n\n if (config.urlPath) {\n this.loadingSubject.next(true);\n this.versionService.loadVersion(config.urlPath, config.urlBaseConfigKey).subscribe({\n next: res => {\n this.displayVersion = this.jsonPathPipe.transform(res, config.infoJsonPath ?? '$');\n this.loadingSubject.next(false);\n },\n error: () => {\n this.displayVersion = '';\n this.loadingSubject.next(false);\n }\n });\n } else {\n this.displayVersion = this.jsonPathPipe.transform(config.info, config.infoJsonPath ?? '$.raw');\n }\n } else {\n const info = this.initVersion as VersionInfo;\n this.displayVersion = this.jsonPathPipe.transform(info, '$.raw');\n }\n }\n }\n}\n","<ng-container *ngIf=\"versions; else version\">\n <ng-container *ngFor=\"let v of versions; let last = last\"> <mng-version [version]=\"v\"></mng-version><br *ngIf=\"!last\" /> </ng-container>\n</ng-container>\n<ng-template #version>\n <ng-container *ngIf=\"displayName\">{{ displayName }}: </ng-container>\n <ng-container *ngIf=\"(loading$ | async) === false\">{{ displayVersion }}</ng-container>\n</ng-template>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {MngCommonsService} from '../../services';\nimport {MngMainLayoutComponentService} from './services';\n\n@Component({\n selector: 'mng-menu',\n templateUrl: './menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngMenuComponent {\n constructor(public mngCommons: MngCommonsService, public mainLayoutService: MngMainLayoutComponentService) {}\n}\n","<div\n class=\"layout-menu-wrapper\"\n [ngClass]=\"{'layout-sidebar-active': (mainLayoutService.sidebarActive$ | async)}\"\n (click)=\"mainLayoutService.onSidebarClick($event)\"\n (mouseover)=\"mainLayoutService.onSidebarMouseOver($event)\"\n (mouseleave)=\"mainLayoutService.onSidebarMouseLeave($event)\">\n <div class=\"menu-logo\">\n <a routerLink=\"/\" class=\"logo\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" />\n </a>\n\n <a routerLink=\"/\" class=\"app-name\" *ngIf=\"(mngCommons.menuModeIsSlim$ | async) === false || (mainLayoutService.isMobile$ | async)\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoNameDark : mngCommons.appLogoNameLight\" />\n </a>\n <a *ngIf=\"mngCommons.menuPinEnabled\" class=\"menu-pin\" (click)=\"mainLayoutService.onToggleMenu($event)\">\n <span *ngIf=\"mngCommons.menuModeIsOverlay$ | async\" class=\"pi pi-times\"></span>\n <span\n *ngIf=\"(mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async) === false && (mainLayoutService.pinActive$ | async)\"\n class=\"pi pi-unlock\"></span>\n <span *ngIf=\"(mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async) && (mainLayoutService.pinActive$ | async)\" 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 mngCommons.menuItems; let i = index\">\n <li mng-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\n <div class=\"menu-version\">\n <mng-version [version]=\"mngCommons.appVersion\"></mng-version>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, OnInit, QueryList, Type, ViewChildren} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {MngTemplateDirective} from '../../directives';\nimport {IUser} from '../../models';\nimport {MngRouterData} from '../../router/models';\nimport {MngCommonsService} from '../../services';\nimport {MngBreadcrumbComponent} from './breadcrumb.component';\nimport {MngMenuComponent} from './menu.component';\nimport {MngMainLayoutComponentService} from './services';\n\n@Component({\n selector: 'mng-topbar',\n templateUrl: './topbar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngTopbarComponent implements OnInit {\n @ViewChildren(MngTemplateDirective) templates!: QueryList<MngTemplateDirective>;\n\n public breadcrumbComponent: Type<any> = MngBreadcrumbComponent;\n public menuComponent: Type<any> = MngMenuComponent;\n\n public languages: Array<string> = ['en'];\n public selectedLanguage = 'en';\n public user?: IUser;\n\n constructor(private route: ActivatedRoute, public mngCommons: MngCommonsService, public mainLayoutService: MngMainLayoutComponentService) {}\n\n ngOnInit(): void {\n const routeData = this.route.snapshot.data as MngRouterData;\n if (routeData?.breadcrumbComponent) {\n this.breadcrumbComponent = routeData.breadcrumbComponent;\n }\n if (routeData?.menuComponent) {\n this.menuComponent = routeData.menuComponent;\n }\n\n this.languages = this.mngCommons.appLanguages;\n this.selectedLanguage = this.mngCommons.appLanguage;\n this.mngCommons.user$.subscribe(u => {\n this.user = u;\n });\n\n this.mainLayoutService.innerWidth = window.innerWidth;\n }\n\n public switchLanguage(language: string) {\n this.mngCommons.appLanguage = language;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public logout(user: IUser, event: Event) {\n if (typeof user.logout === 'function') {\n user.logout();\n }\n }\n}\n","<div class=\"layout-topbar\">\n <div class=\"layout-topbar-left\">\n <a\n href=\"#\"\n class=\"topbar-menu-button\"\n (click)=\"mainLayoutService.onMenuButtonClick($event)\"\n *ngIf=\"(mngCommons.menuModeIsOverlay$ | async) || (mainLayoutService.isMobile$ | async)\">\n <i class=\"pi pi-bars\"></i>\n </a>\n\n <ng-container [mngComponent]=\"breadcrumbComponent\"></ng-container>\n </div>\n\n <ng-container [mngComponent]=\"menuComponent\"></ng-container>\n\n <div class=\"layout-topbar-right\">\n <ul class=\"layout-topbar-right-items\">\n <li #profile class=\"profile-item\" [ngClass]=\"{'active-topmenuitem': (mainLayoutService.activeTopbarItem$ | async) === profile}\">\n <a href=\"#\" (click)=\"mainLayoutService.onTopbarItemClick($event, profile)\">\n <i class=\"pi pi-fw pi-user\"></i>\n </a>\n <ul class=\"fadeInDown\" *ngIf=\"user\">\n <li role=\"menuitem\">\n <a>\n {{ user?.displayName ?? user?.username }}\n </a>\n </li>\n <li role=\"menuitem\" *ngIf=\"user?.logout || user?.logoutUrl\">\n <a [href]=\"user?.logoutUrl\" (click)=\"logout(user, $event)\">\n <i class=\"pi pi-fw pi-sign-out\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n </ul>\n </li>\n <li *ngIf=\"languages.length > 1\" class=\"profile-item\" [ngClass]=\"{'active-topmenuitem': (mainLayoutService.activeTopbarItem$ | async) === profile}\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"selectedLanguage\" [options]=\"languages\" (onChange)=\"switchLanguage($event.value)\"></p-dropdown>\n </li>\n </ul>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, HostListener, OnInit, QueryList, Type, ViewChildren} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {MngTemplateDirective} from '../../directives';\nimport {MngRouterData} from '../../router/models';\nimport {MngCommonsService} from '../../services';\nimport {MngFooterComponent} from './footer.component';\nimport {MngMenuComponent} from './menu.component';\nimport {MngMainLayoutComponentService} from './services';\nimport {MngTopbarComponent} from './topbar.component';\n\n@Component({\n selector: 'mng-main-layout',\n templateUrl: './main-layout.component.html',\n providers: [MngMainLayoutComponentService],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngMainLayoutComponent implements OnInit {\n @ViewChildren(MngTemplateDirective) templates!: QueryList<MngTemplateDirective>;\n\n public topbarComponent: Type<any> = MngTopbarComponent;\n public menuComponent: Type<any> = MngMenuComponent;\n public footerComponent: Type<any> = MngFooterComponent;\n\n constructor(private route: ActivatedRoute, public mngCommons: MngCommonsService, public mainLayoutService: MngMainLayoutComponentService) {}\n\n ngOnInit() {\n const routeData = this.route.snapshot.data as MngRouterData;\n if (routeData?.topbarComponent) {\n this.topbarComponent = routeData.topbarComponent;\n }\n if (routeData?.menuComponent) {\n this.menuComponent = routeData.menuComponent;\n }\n if (routeData?.footerComponent) {\n this.footerComponent = routeData.footerComponent;\n }\n\n this.mainLayoutService.innerWidth = window.innerWidth;\n }\n\n @HostListener('window:resize', ['$event'])\n onWindowResize(event: UIEvent) {\n const target: any = event.target;\n this.mainLayoutService.innerWidth = target?.innerWidth ?? window.innerWidth;\n }\n}\n","<div\n class=\"layout-wrapper\"\n (click)=\"mainLayoutService.onLayoutClick()\"\n [ngClass]=\"{\n 'layout-static': mngCommons.menuModeIsStatic$ | async,\n 'layout-overlay': mngCommons.menuModeIsOverlay$ | async,\n 'layout-slim': mngCommons.menuModeIsSlim$ | async,\n 'layout-sidebar': mngCommons.menuModeIsSidebar$ | async,\n 'layout-sidebar-static': (mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async),\n 'layout-overlay-active': mainLayoutService.overlayMenuActive$ | async,\n 'layout-mobile-active': mainLayoutService.staticMenuMobileActive$ | async,\n 'layout-static-inactive': (mainLayoutService.staticMenuDesktopInactive$ | async) && (mngCommons.menuModeIsStatic$ | async)\n }\">\n <div class=\"layout-main\">\n <ng-container [mngComponent]=\"topbarComponent\"></ng-container>\n\n <ng-container\n *ngIf=\"\n (mainLayoutService.isMobile$ | async) === false &&\n ((mngCommons.menuModeIsStatic$ | async) || (mngCommons.menuModeIsSlim$ | async) || (mngCommons.menuModeIsSidebar$ | async))\n \"\n [mngComponent]=\"menuComponent\">\n </ng-container>\n\n <div class=\"layout-main-content\">\n <router-outlet></router-outlet>\n </div>\n\n <ng-container [mngComponent]=\"footerComponent\"></ng-container>\n </div>\n</div>\n","import {Observable} from 'rxjs';\n\nimport {MngCommonsInitService} from './commons-init.service';\n\nexport function mngCommonsInitializerProvider(mngCommonsInit: MngCommonsInitService): () => Observable<void> {\n return () => mngCommonsInit.initialize();\n}\n","import {Inject, Injectable, Optional} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable, combineLatest, mergeMap, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MngCommonsService} from '../commons.service';\nimport {MngConfigurationService} from '../configuration.service';\nimport {MNG_COMMONS_INITIALIZER_IT} from '../tokens';\n\n@Injectable()\nexport class MngCommonsInitService {\n private isInitialized = false;\n\n constructor(\n private translate: TranslateService,\n private configurationService: MngConfigurationService,\n private mngCommons: MngCommonsService,\n @Inject(MNG_COMMONS_INITIALIZER_IT) @Optional() private readonly commonsInitializers: ReadonlyArray<() => Observable<unknown>>\n ) {}\n\n public initialize(): Observable<void> {\n if (this.isInitialized) {\n return of(void 0);\n }\n\n console.debug(`Initializing @mediusinc/mng-commons.`);\n\n return this.configurationService.loadJsonSources().pipe(\n mergeMap(() => {\n if (this.commonsInitializers) {\n console.debug(`Module initializers for @mediusinc/mng-commons.`);\n return combineLatest(this.commonsInitializers.map(ci => ci())).pipe(map(res => res));\n } else {\n return of(true);\n }\n }),\n map(() => this.mngCommons.reset())\n );\n\n this.isInitialized = true;\n }\n}\n","import {HttpClient} from '@angular/common/http';\n\nimport {Observable, combineLatest, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MngModuleConfig} from '../../config/models';\nimport {MngConfigurationService} from '../configuration.service';\n\nexport const mngConfigurationServiceProvider = (httpClient: HttpClient, moduleConfig: MngModuleConfig): MngConfigurationService => {\n const service = MngConfigurationService.init(httpClient);\n if (moduleConfig?.configuration?.projectEnvironment) {\n service.addEnvironmentSource(moduleConfig.configuration.projectEnvironment);\n }\n return service;\n};\n\nexport function mngConfigJsonAppInitializerProvider(configService: MngConfigurationService, moduleConfig: MngModuleConfig): () => Observable<boolean> {\n return () => {\n if (moduleConfig?.configuration?.skipJsonSourceInit) {\n return of(false);\n } else {\n const jsonSource = moduleConfig?.configuration?.jsonSource;\n if (!jsonSource) {\n return configService.addJsonSource();\n } else if (Array.isArray(jsonSource)) {\n return combineLatest(jsonSource.map(source => configService.addJsonSource(source))).pipe(map(sourcesRes => sourcesRes.every(s => s)));\n } else {\n return configService.addJsonSource(jsonSource);\n }\n }\n };\n}\n","import {FormlyFieldConfig} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\n\nimport {\n MngFormlyFieldAutocompleteComponent,\n MngFormlyFieldDropdownComponent,\n MngFormlyFieldFieldsetComponent,\n MngFormlyFieldInputComponent,\n MngFormlyFieldLabelComponent,\n MngFormlyFieldLookupDialogComponent,\n MngFormlyFieldTableDialogFormComponent,\n MngFormlyFieldTableDialogMultiselectComponent,\n MngFormlyFieldTabsComponent\n} from '../components/form/formly/fields';\nimport {MngFormlyFieldWrapperComponent, MngFormlyTableWrapperComponent} from '../components/form/formly/wrappers';\n\nexport const formlyWrappersConfig = [\n {name: 'field', component: MngFormlyFieldWrapperComponent},\n {name: 'field-table', component: MngFormlyTableWrapperComponent}\n];\n\nexport const formlyTypesConfig: any[] = [\n {\n name: 'label',\n component: MngFormlyFieldLabelComponent,\n wrappers: ['field']\n },\n {\n name: 'input',\n component: MngFormlyFieldInputComponent,\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: 'currency',\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: MngFormlyFieldInputComponent,\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: 'mask',\n extends: 'input',\n defaultOptions: {\n templateOptions: {\n type: 'mask'\n }\n }\n },\n {\n name: 'file',\n extends: 'input',\n defaultOptions: {\n templateOptions: {\n type: 'file'\n }\n }\n },\n {\n name: 'dropdown',\n component: MngFormlyFieldDropdownComponent,\n wrappers: ['field']\n },\n {name: 'enum', extends: 'dropdown'},\n {\n name: 'autocomplete',\n component: MngFormlyFieldAutocompleteComponent,\n wrappers: ['field']\n },\n {\n name: 'dialog',\n component: MngFormlyFieldLookupDialogComponent,\n wrappers: ['field']\n },\n {\n name: 'table-dialog-multiselect',\n component: MngFormlyFieldTableDialogMultiselectComponent,\n wrappers: ['field-table']\n },\n {\n name: 'table-dialog-form',\n component: MngFormlyFieldTableDialogFormComponent,\n wrappers: ['field-table']\n },\n {\n name: 'tabs',\n component: MngFormlyFieldTabsComponent,\n wrappers: []\n },\n {\n name: 'fieldset',\n component: MngFormlyFieldFieldsetComponent,\n wrappers: []\n }\n];\n\nexport function getRequiredValidationMessage(translate: TranslateService): (error: any, field: FormlyFieldConfig) => Observable<string> {\n return (error: any, field: FormlyFieldConfig) => {\n const fieldLabel = field.templateOptions?.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.required', {field: fieldName});\n };\n}\n\nexport function getMinLengthValidationMessage(translate: TranslateService): (error: any, field: FormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: FormlyFieldConfig) => {\n const fieldLabel = field.templateOptions?.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.minLength', {field: fieldName, minLength: field.templateOptions?.minLength});\n };\n}\n\nexport function getMaxLengthValidationMessage(translate: TranslateService): (error: any, field: FormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: FormlyFieldConfig) => {\n const fieldLabel = field.templateOptions?.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.maxLength', {field: fieldName, maxLength: field.templateOptions?.maxLength});\n };\n}\n\nexport function getTextPatternValidationMessage(translate: TranslateService): (error: any, field: FormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: FormlyFieldConfig) => {\n const fieldLabel = field.templateOptions?.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.pattern', {field: fieldName, pattern: field.templateOptions?.pattern});\n };\n}\n\nexport function getEmailValidationMessage(translate: TranslateService): (error: any, field: FormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: FormlyFieldConfig) => {\n const fieldLabel = field.templateOptions?.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.email', {field: fieldName});\n };\n}\n\nexport const getFormlyValidationMessages = (translate: TranslateService): any[] => {\n return [\n {name: 'required', message: getRequiredValidationMessage(translate)},\n {name: 'minLength', message: getMinLengthValidationMessage(translate)},\n {name: 'maxLength', message: getMaxLengthValidationMessage(translate)},\n {name: 'pattern', message: getTextPatternValidationMessage(translate)},\n {name: 'email', message: getEmailValidationMessage(translate)}\n ];\n};\n","import {ConfigOption} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {formlyTypesConfig, formlyWrappersConfig, getFormlyValidationMessages} from '../../config';\nimport {MngModuleConfig} from '../../config/models';\n\nexport function mngFormlyConfigProvider(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 {CommonModule} from '@angular/common';\nimport {HttpClient, HttpClientModule} from '@angular/common/http';\nimport {APP_INITIALIZER, ModuleWithProviders, NgModule} from '@angular/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {RouterModule} from '@angular/router';\n\nimport {FORMLY_CONFIG, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {ConfirmationService, MessageService} from 'primeng/api';\nimport {AutoCompleteModule} from 'primeng/autocomplete';\nimport {BreadcrumbModule} from 'primeng/breadcrumb';\nimport {ButtonModule} from 'primeng/button';\nimport {CalendarModule} from 'primeng/calendar';\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 {DropdownModule} from 'primeng/dropdown';\nimport {DialogService, DynamicDialogModule} from 'primeng/dynamicdialog';\nimport {FieldsetModule} from 'primeng/fieldset';\nimport {FileUploadModule} from 'primeng/fileupload';\nimport {InputMaskModule} from 'primeng/inputmask';\nimport {InputNumberModule} from 'primeng/inputnumber';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {InputTextareaModule} from 'primeng/inputtextarea';\nimport {MessagesModule} from 'primeng/messages';\nimport {MultiSelectModule} from 'primeng/multiselect';\nimport {PaginatorModule} from 'primeng/paginator';\nimport {ProgressSpinnerModule} from 'primeng/progressspinner';\nimport {RadioButtonModule} from 'primeng/radiobutton';\nimport {RippleModule} from 'primeng/ripple';\nimport {SelectButtonModule} from 'primeng/selectbutton';\nimport {SkeletonModule} from 'primeng/skeleton';\nimport {TableModule} from 'primeng/table';\nimport {TabViewModule} from 'primeng/tabview';\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';\n\nimport {ObjectSerializer} from './api/utils';\nimport {MngActionComponent, MngActionEditorComponent, MngActionRouteComponent} from './components/action';\nimport {MngAutocompleteComponent, MngDropdownComponent, MngFormEditorComponent} from './components/form';\nimport {\n MngFormlyFieldAutocompleteComponent,\n MngFormlyFieldDropdownComponent,\n MngFormlyFieldFieldsetComponent,\n MngFormlyFieldInputComponent,\n MngFormlyFieldLabelComponent,\n MngFormlyFieldLookupDialogComponent,\n MngFormlyFieldTableDialogFormComponent,\n MngFormlyFieldTableDialogMultiselectComponent,\n MngFormlyFieldTabsComponent\n} from './components/form/formly/fields';\nimport {MngFormlyFieldWrapperComponent, MngFormlyTableWrapperComponent} from './components/form/formly/wrappers';\nimport {\n MngBreadcrumbComponent,\n MngFooterComponent,\n MngMainLayoutComponent,\n MngMenuComponent,\n MngMenuItemComponent,\n MngTopbarComponent,\n MngVersionComponent\n} from './components/layout';\nimport {MngMainLayoutComponentService} from './components/layout/services';\nimport {MngTableColumnFilterComponent, MngTableColumnValueComponent, MngTableComponent, MngTableviewComponent, MngTableviewRouteComponent} from './components/tableview';\nimport {MngModuleConfig} from './config/models';\nimport {MngComponentDirective, MngTemplateDirective} from './directives';\nimport {JsonPathPipe, MngBooleanPipe, MngEnumPipe, MngI18nPropertyPipe, MngLinkFormatterPipe} from './pipes';\nimport {MngAuthorizationGuard, MngAuthorizationService} from './security';\nimport {\n DefaultMngErrorMapperService,\n MngActionExecutorService,\n MngCommonsService,\n MngConfigurationService,\n MngErrorMapperService,\n MngNavigationService,\n MngViewContainerComponentService\n} from './services';\nimport {MngCommonsInitService, mngCommonsInitializerProvider} from './services/internal';\nimport {mngConfigJsonAppInitializerProvider, mngConfigurationServiceProvider, mngFormlyConfigProvider} from './services/providers';\nimport {ACTION_EDITOR_DIALOG_COMPONENT_SETTING, MNG_MODULE_CONFIG_IT} from './services/tokens';\nimport {MngVersionService} from './services/version.service';\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 FileUploadModule,\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 MultiSelectModule,\n SkeletonModule\n];\n\nconst declarations = [\n // directives\n MngComponentDirective,\n MngTemplateDirective,\n\n // pipes\n JsonPathPipe,\n MngEnumPipe,\n MngBooleanPipe,\n MngI18nPropertyPipe,\n MngLinkFormatterPipe,\n\n // layout components\n MngBreadcrumbComponent,\n MngFooterComponent,\n MngMainLayoutComponent,\n MngMenuComponent,\n MngMenuItemComponent,\n MngTopbarComponent,\n MngVersionComponent,\n\n // mng fields\n MngAutocompleteComponent,\n MngDropdownComponent,\n\n // formly wrappers\n MngFormlyFieldWrapperComponent,\n MngFormlyTableWrapperComponent,\n\n // formly fields\n MngFormlyFieldInputComponent,\n MngFormlyFieldLabelComponent,\n MngFormlyFieldDropdownComponent,\n MngFormlyFieldAutocompleteComponent,\n MngFormlyFieldLookupDialogComponent,\n MngFormlyFieldTableDialogMultiselectComponent,\n MngFormlyFieldTableDialogFormComponent,\n MngFormlyFieldTabsComponent,\n MngFormlyFieldFieldsetComponent,\n\n // table components\n MngTableComponent,\n MngTableviewComponent,\n MngTableColumnValueComponent,\n MngTableColumnFilterComponent,\n MngTableviewRouteComponent,\n\n // editor components\n MngFormEditorComponent,\n MngActionComponent,\n MngActionEditorComponent,\n MngActionRouteComponent\n];\n\n@NgModule({\n imports: [\n // angular modules\n CommonModule,\n RouterModule,\n HttpClientModule,\n ReactiveFormsModule,\n\n // other modules\n TranslateModule.forChild({\n extend: true\n }),\n FormlyModule.forChild(),\n ...primeNgModules\n ],\n declarations: [...declarations],\n exports: [...primeNgModules, ...declarations]\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 // services\n MngCommonsInitService,\n MngActionExecutorService,\n MngNavigationService,\n MngCommonsService,\n MngVersionService,\n\n // security\n MngAuthorizationService,\n MngAuthorizationGuard,\n\n // pipes\n JsonPathPipe,\n MngEnumPipe,\n MngBooleanPipe,\n MngI18nPropertyPipe,\n MngLinkFormatterPipe,\n\n // component service\n MngMainLayoutComponentService,\n MngViewContainerComponentService,\n\n {\n provide: MNG_MODULE_CONFIG_IT,\n useValue: config\n },\n {\n provide: ObjectSerializer,\n useFactory: () => ObjectSerializer.get()\n },\n {\n provide: MngConfigurationService,\n useFactory: mngConfigurationServiceProvider,\n deps: [HttpClient, MNG_MODULE_CONFIG_IT]\n },\n {\n provide: APP_INITIALIZER,\n useFactory: mngConfigJsonAppInitializerProvider,\n deps: [MngConfigurationService, MNG_MODULE_CONFIG_IT],\n multi: true\n },\n {\n provide: APP_INITIALIZER,\n useFactory: mngCommonsInitializerProvider,\n deps: [MngCommonsInitService],\n multi: true\n },\n {\n provide: FORMLY_CONFIG,\n multi: true,\n useFactory: mngFormlyConfigProvider,\n deps: [TranslateService, MNG_MODULE_CONFIG_IT]\n },\n {\n provide: ACTION_EDITOR_DIALOG_COMPONENT_SETTING,\n useValue: MngActionEditorComponent\n },\n {\n provide: MngErrorMapperService,\n useClass: DefaultMngErrorMapperService\n }\n ]\n };\n }\n}\n","import {HttpClient} from '@angular/common/http';\n\nimport {ClassType} from '../../types';\nimport {MediusQueryParam} from '../models';\nimport {ObjectSerializer} from '../utils';\n\nexport abstract class AMngBaseApiService {\n protected readonly objectSerializer: ObjectSerializer = ObjectSerializer.get();\n\n protected constructor(protected http: HttpClient) {}\n\n protected abstract getBasePath(): string;\n\n protected abstract getServiceBasePath(): string | null;\n\n protected getUrl(...pathSegments: Array<string>): string {\n let baseUrl = this.getBasePath();\n if (baseUrl.endsWith('/')) {\n baseUrl = baseUrl.substring(0, baseUrl.length - 1);\n }\n const serviceBasePath = this.getServiceBasePath();\n let path = [serviceBasePath, ...pathSegments].filter(s => s && s.length).join('/');\n // omit first and last '/'\n if (path.startsWith('/')) {\n path = path.substring(1);\n }\n if (path.endsWith('/')) {\n path = path.substring(0, path.length - 1);\n }\n // replace any double '//' from path that could come from joining paths\n path = path.replace('//', '/');\n return `${baseUrl}/${path}`;\n }\n\n protected serializeQueryParam(queryParam: MediusQueryParam, type = 'QueryParam') {\n return this.objectSerializer.serialize(queryParam, type);\n }\n\n protected deserializeQueryResult<QR>(item: any, qrType: ClassType<QR>): QR {\n return this.deserializeClass(item, qrType);\n }\n\n protected deserializeClass<C>(item: any, type: ClassType<C>): C {\n return this.objectSerializer.deserializeClass(item, type);\n }\n\n protected deserializeClassArray<C>(item: any, type: ClassType<C>): Array<C> {\n return this.objectSerializer.deserializeClassArray(item, type);\n }\n\n protected serializeClass<C>(item: C, type: ClassType<C>): any {\n return this.objectSerializer.serializeClass(item, type);\n }\n\n protected serializeClassArray<C>(item: Array<C>, type: ClassType<C>): any {\n return this.objectSerializer.serializeClassArray(item, type);\n }\n}\n\nexport abstract class AMngApiService<T> extends AMngBaseApiService {\n protected constructor(protected type: ClassType<T>, http: HttpClient) {\n super(http);\n }\n\n protected deserialize(item: any): T {\n return this.deserializeClass(item, this.type);\n }\n\n protected serialize(item: T): any {\n return this.serializeClass(item, this.type);\n }\n}\n","import {HttpClient, HttpParams} from '@angular/common/http';\n\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ClassType} from '../../types';\nimport {MediusQueryParam, MediusQueryResult} from '../models';\nimport {AMngApiService} from './api.abstract.service';\n\nexport interface IMngGetAllApiService<QRT extends MediusQueryResult<any>> {\n getAllPost(queryParamBody?: MediusQueryParam, params?: HttpParams): Observable<QRT>;\n}\n\nexport abstract class AMngGetAllApiService<T, QRT extends MediusQueryResult<any>> extends AMngApiService<T> implements IMngGetAllApiService<QRT> {\n protected constructor(type: ClassType<T>, protected queryResultType: ClassType<QRT>, http: HttpClient) {\n super(type, http);\n }\n\n public getAllPost(queryParamBody?: MediusQueryParam, params?: HttpParams): Observable<QRT> {\n const url = this.getUrl(this.getGetAllPostPath());\n return this.http\n .post<any>(url, queryParamBody ? this.serializeQueryParam(queryParamBody) : undefined, {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserializeQueryResult(res, this.queryResultType)));\n }\n\n protected getGetAllPostPath(): string {\n return '/get-all';\n }\n}\n","import {HttpClient, HttpParams} from '@angular/common/http';\n\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ClassType, IdType} from '../../types';\nimport {MediusQueryResult} from '../models';\nimport {AMngGetAllApiService} from './get-all-api.abstract.service';\n\nexport interface IMngCrudApiService<T> {\n createPost?(item: T, params?: HttpParams): Observable<T>;\n\n getByIdGet?(id: IdType, params?: HttpParams): Observable<T>;\n\n updatePut?(id: IdType, item: T, params?: HttpParams): Observable<T>;\n\n removeDelete?(id: IdType, item?: T, params?: HttpParams): Observable<T | null>;\n}\n\nexport abstract class AMngCrudApiService<T, QRT extends MediusQueryResult<any>> extends AMngGetAllApiService<T, QRT> implements IMngCrudApiService<T> {\n protected constructor(type: ClassType<T>, queryResultType: ClassType<QRT>, http: HttpClient) {\n super(type, queryResultType, http);\n }\n\n public createPost(item: T, params?: HttpParams): Observable<T> {\n const url = this.getUrl(this.getCreatePostPath(item));\n return this.http\n .post<any>(url, this.serialize(item), {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserialize(res)));\n }\n\n public getByIdGet(id: IdType, params?: HttpParams): Observable<T> {\n const url = this.getUrl(this.getGetByIdGetPath(id));\n return this.http\n .get<any>(url, {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserialize(res)));\n }\n\n public updatePut(id: IdType, item: T, params?: HttpParams): Observable<T> {\n const url = this.getUrl(this.getUpdatePutPath(id, item));\n return this.http\n .put<any>(url, this.serialize(item), {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserialize(res)));\n }\n\n public removeDelete(id: IdType, item?: T, params?: HttpParams): Observable<T | null> {\n const url = this.getUrl(this.getRemoveDeletePath(id, item));\n return this.http\n .request<any>('delete', url, {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n body: item ? this.serialize(item) : undefined,\n params: params\n })\n .pipe(map(res => (res ? this.deserialize(res) : null)));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected getCreatePostPath(item: T): string {\n return '';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected getUpdatePutPath(id: IdType, item: T): string {\n return `/${id}`;\n }\n\n protected getGetByIdGetPath(id: IdType): string {\n return `/${id}`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected getRemoveDeletePath(id: IdType, item?: T) {\n return `/${id}`;\n }\n}\n","export class RouteUtil {\n public static removeEmptyPathSegments(path: Array<string>) {\n const filteredPath = path.filter(ps => typeof ps === 'string' && ps.length > 0);\n return filteredPath.length > 0 ? filteredPath : [''];\n }\n\n public static appendPathToBasePath(basePath: Array<string>, path: Array<string>) {\n if (path.length > 0) {\n if (path[0].startsWith('/')) {\n return path;\n } else if (path[0].startsWith('../')) {\n // TODO: process multi upper folder\n throw new Error('Not implemented');\n } else {\n return RouteUtil.removeEmptyPathSegments([...basePath, ...path]);\n }\n } else {\n return basePath;\n }\n }\n}\n","import {Type} from '@angular/core';\nimport {LoadChildren, Route, Routes} from '@angular/router';\n\nimport {MngActionRouteComponent} from '../components/action';\nimport {MngMainLayoutComponent} from '../components/layout';\nimport {AMngTableviewRouteComponent, MngTableviewRouteComponent} from '../components/tableview';\nimport {ITableviewDataProvider} from '../data-providers';\nimport {ActionDescriptor, TableviewDescriptor} from '../descriptors';\nimport {MngMenuItem} from '../models';\nimport {MngAuthorizationGuard} from '../security';\nimport {APermissions} from '../security/model';\nimport {RouteUtil} from '../utils/route.util';\nimport {BreadcrumbType, MngRouterData} from './models';\nimport {TableviewRouteBuilder} from './tableview-route-builder';\n\nexport class RoutesBuilder {\n private readonly layoutRoute?: RouteBuilder;\n private routes: Array<RouteBuilder> = [];\n private currentRoute?: RouteBuilder;\n\n private constructor(layoutRoute?: RouteBuilder) {\n this.layoutRoute = layoutRoute?.withRoot(this);\n this.currentRoute = layoutRoute;\n }\n\n public static create(): RoutesBuilder {\n return new RoutesBuilder();\n }\n\n public static createWithLayout(\n layoutComponent = MngMainLayoutComponent,\n topbarComponent?: Type<any>,\n breadcrumbComponent?: Type<any>,\n menuComponent?: Type<any>,\n footerComponent?: Type<any>\n ): RoutesBuilder {\n const layoutRoute = RouteBuilder.createLayoutRoute('', layoutComponent, topbarComponent, breadcrumbComponent, menuComponent, footerComponent);\n return new RoutesBuilder(layoutRoute);\n }\n\n public addAngularRoute(route: Route): this {\n return this.addRouteBuilder(RouteBuilder.createFromRoute(route));\n }\n\n public addRouteRedirect(path: string, redirectTo: string, pathMatch: 'full' | 'prefix' = 'prefix'): this {\n return this.addRouteBuilder(RouteBuilder.createRedirect(path, redirectTo, pathMatch));\n }\n\n public addLazyRoute(path: string, loadChildren: LoadChildren, canLoad?: Array<any>): this {\n return this.addRouteBuilder(RouteBuilder.createLazyRoute(path, loadChildren, canLoad));\n }\n\n public addRoute(path: string, component: Type<any>): this {\n return this.addRouteBuilder(RouteBuilder.create(path, component));\n }\n\n public addTableview<C extends AMngTableviewRouteComponent<any, any>>(builder: TableviewRouteBuilder<C>): this {\n return this.addTableview(builder);\n }\n\n /**\n * @deprecated Use TableviewRouteBuilder with addTableview\n */\n public addTableviewRoutes<T, S>(\n path: string,\n descriptor: TableviewDescriptor<T>,\n tableviewDataProvider: ITableviewDataProvider<T, S>,\n actions?: Array<ActionDescriptor<T>>,\n hasDetails = true,\n hasEdit = true,\n hasAdd = true\n ): this {\n return this.addRouteBuilder(RouteBuilder.createTableviewRoutes(path, descriptor, tableviewDataProvider, actions, hasDetails, hasEdit, hasAdd));\n }\n\n /**\n * @deprecated Use TableviewRouteBuilder with addTableview\n */\n public addTableviewRoutesFromComponent(path: string, component: Type<any>, hasDetails = true, hasEdit = true, hasAdd = true): this {\n return this.addRouteBuilder(RouteBuilder.createTableviewRoutesFromComponent(path, component, hasDetails, hasEdit, hasAdd));\n }\n\n public addRouteBuilder(routeBuilder: RouteBuilder): this {\n this.currentRoute = routeBuilder.withRoot(this);\n this.routes.push(routeBuilder);\n return this;\n }\n\n public toRoute(): RouteBuilder {\n if (!this.currentRoute) {\n throw new Error('No routes were added!');\n }\n return this.currentRoute;\n }\n\n public buildRoutes(): Routes {\n let angularRoutes: Routes = [];\n for (const route of this.routes) {\n angularRoutes.push(route.buildRoute());\n }\n\n if (this.layoutRoute) {\n const layoutAngularRoute = this.layoutRoute.buildRoute();\n if (angularRoutes.length > 0) {\n layoutAngularRoute.children = angularRoutes;\n }\n angularRoutes = [layoutAngularRoute];\n }\n\n return angularRoutes;\n }\n\n public buildMenu(): Array<MngMenuItem> {\n const menuItems: Array<MngMenuItem> = [];\n for (const route of this.routes) {\n menuItems.push(...route.buildMenu());\n }\n return menuItems.flat();\n }\n}\n\nexport class RouteBuilder {\n private readonly route: Route;\n private routePath: Array<string> = [];\n private routeData: MngRouterData = {breadcrumb: null};\n private root?: RoutesBuilder;\n private parent?: RouteBuilder;\n private children: Array<RouteBuilder> = [];\n\n private menuItem?: MngMenuItem;\n private menuItemChildren: Array<MngMenuItem> = [];\n\n private breadcrumb?: BreadcrumbType;\n private pageTitle?: string;\n\n private permissions?: APermissions;\n\n private constructor(route: Route) {\n this.route = route;\n if (this.route.path && this.route.path.length > 0) {\n this.routePath = [this.route.path];\n }\n }\n\n public static create(path: string, component: Type<any>): RouteBuilder {\n return new RouteBuilder({\n path: path,\n component: component\n });\n }\n\n public static createRedirect(path: string, redirectTo: string, pathMatch: 'full' | 'prefix' = 'prefix'): RouteBuilder {\n return new RouteBuilder({\n path: path,\n redirectTo: redirectTo,\n pathMatch: pathMatch\n });\n }\n\n public static createLazyRoute(path: string, loadChildren: LoadChildren, canLoad?: Array<any>): RouteBuilder {\n const route: Route = {path: path, loadChildren: loadChildren};\n if (canLoad?.length) {\n route.canLoad = canLoad;\n }\n return new RouteBuilder(route);\n }\n\n public static createFromRoute(route: Route): RouteBuilder {\n return new RouteBuilder(route);\n }\n\n public static createLayoutRoute(\n path: string,\n layoutComponent = MngMainLayoutComponent,\n topbarComponent?: Type<any>,\n breadcrumbComponent?: Type<any>,\n menuComponent?: Type<any>,\n footerComponent?: Type<any>\n ): RouteBuilder {\n const layoutRoute = RouteBuilder.create(path, layoutComponent);\n if (topbarComponent || breadcrumbComponent || menuComponent || footerComponent) {\n const routeData: MngRouterData = {};\n if (topbarComponent) {\n routeData.topbarComponent = topbarComponent;\n }\n if (breadcrumbComponent) {\n routeData.breadcrumbComponent = breadcrumbComponent;\n }\n if (menuComponent) {\n routeData.menuComponent = menuComponent;\n }\n if (footerComponent) {\n routeData.footerComponent = footerComponent;\n }\n layoutRoute.withData(routeData);\n }\n return layoutRoute;\n }\n\n public static createTableview<C extends AMngTableviewRouteComponent<any, any>>(builder: TableviewRouteBuilder<C>): RouteBuilder {\n return builder.toRouteBuilder();\n }\n\n /**\n * @deprecated Use TableviewRouteBuilder\n */\n public static createTableviewRoutes<T, S>(\n path: string,\n descriptor: TableviewDescriptor<T>,\n dataProvider: ITableviewDataProvider<T, S>,\n actions?: Array<ActionDescriptor<T>>,\n hasDetails = true,\n hasEdit = true,\n hasAdd = true\n ): RouteBuilder {\n const tableviewRoute = RouteBuilder.createFromRoute({\n data: {\n tableview: {\n descriptor,\n dataProvider,\n actions\n }\n } as MngRouterData,\n path: path,\n component: MngTableviewRouteComponent\n });\n RouteBuilder.addActionsSubroutesToTableviewParent(tableviewRoute, hasDetails, hasEdit, hasAdd);\n return tableviewRoute;\n }\n\n /**\n * @deprecated Use TableviewRouteBuilder\n */\n public static createTableviewRoutesFromComponent(path: string, component: Type<any>, hasDetails = true, hasEdit = true, hasAdd = true): RouteBuilder {\n const actionCrudRoute = RouteBuilder.create(path, component);\n RouteBuilder.addActionsSubroutesToTableviewParent(actionCrudRoute, hasDetails, hasEdit, hasAdd);\n return actionCrudRoute;\n }\n\n private static addActionsSubroutesToTableviewParent(parentRoute: RouteBuilder, hasDetails: boolean, hasEdit: boolean, hasAdd: boolean) {\n parentRoute.addChild('', MngActionRouteComponent);\n\n if (hasAdd) {\n parentRoute.addChild('add', MngActionRouteComponent);\n }\n if (hasDetails) {\n parentRoute.addChild(':itemId', MngActionRouteComponent);\n }\n if (hasEdit) {\n parentRoute.addChild(':itemId/edit', MngActionRouteComponent);\n }\n }\n\n public withRoot(routesBuilder: RoutesBuilder): this {\n this.root = routesBuilder;\n return this;\n }\n\n public withParent(parent: RouteBuilder): this {\n this.parent = parent;\n this.routePath = RouteUtil.removeEmptyPathSegments([...this.parent.routePath, this.route.path ?? '']);\n return this;\n }\n\n public withBreadcrumb(breadcrumb: BreadcrumbType): this {\n this.breadcrumb = breadcrumb;\n this.routeData.breadcrumb = breadcrumb;\n return this;\n }\n\n public withPageTitle(pageTitle: string): this {\n this.pageTitle = pageTitle;\n this.routeData.pageTitle = pageTitle;\n return this;\n }\n\n public withRedirectTo(redirectTo: string): this {\n this.route.redirectTo = redirectTo;\n return this;\n }\n\n public withPathMatch(pathMatch: 'full' | 'prefix'): this {\n this.route.pathMatch = pathMatch;\n return this;\n }\n\n public withTitle(title: string): this {\n this.withPageTitle(title);\n this.withBreadcrumb(title);\n return this;\n }\n\n public withCanActivate(diToken: any): this {\n if (!this.route.canActivate) {\n this.route.canActivate = [];\n }\n this.route.canActivate.push(diToken);\n return this;\n }\n\n public withCanDeactivate(diToken: any): this {\n if (!this.route.canDeactivate) {\n this.route.canDeactivate = [];\n }\n this.route.canDeactivate.push(diToken);\n return this;\n }\n\n public withResolver(diToken: any, name: string): this {\n if (!this.route.resolve) {\n this.route.resolve = {};\n }\n this.route.resolve[name] = diToken;\n return this;\n }\n\n public withData(data: MngRouterData): this {\n if (!data.breadcrumb) {\n data.breadcrumb = null;\n }\n this.routeData = data;\n return this;\n }\n\n public withMngMenuItem(menuItem: MngMenuItem): this {\n this.menuItem = menuItem;\n return this;\n }\n\n public withMenuItem(icon?: string, label?: string, routerLink?: Array<string>): this {\n this.menuItem = this.createMenuItem(icon, label, routerLink);\n return this;\n }\n\n public withMenuItemChild(label: string, icon?: string, routerLink?: Array<string>): this {\n this.menuItemChildren.push(this.createMenuItem(icon, label, routerLink));\n return this;\n }\n\n public withMenuItemChildren(routesBuilder: RoutesBuilder): this {\n const menu = routesBuilder.buildMenu();\n this.adjustMenuRouterLinksFromBuilder(menu);\n this.menuItemChildren.push(...menu);\n return this;\n }\n\n withPermissions(permissions: APermissions): this {\n this.routeData.permissions = permissions;\n this.withCanActivate(MngAuthorizationGuard);\n return this;\n }\n\n public addChild(path: string, component: Type<any>): RouteBuilder {\n const childRouteBuilder = RouteBuilder.create(path, component);\n this.addChildBuilder(childRouteBuilder);\n return childRouteBuilder;\n }\n\n public addChildBuilder(routeBuilder: RouteBuilder): this {\n routeBuilder.withParent(this);\n if (this.root) {\n routeBuilder.withRoot(this.root);\n }\n this.children.push(routeBuilder);\n return this;\n }\n\n /**\n * @deprecated\n */\n public addTableviewRoutes<T, S>(\n path: string,\n descriptor: TableviewDescriptor<T>,\n tableviewDataProvider: ITableviewDataProvider<T, S>,\n actions?: Array<ActionDescriptor<T>>,\n hasDetails = true,\n hasEdit = true,\n hasAdd = true\n ): RouteBuilder {\n const routeBuilder = RouteBuilder.createTableviewRoutes(path, descriptor, tableviewDataProvider, actions, hasDetails, hasEdit, hasAdd);\n this.addChildBuilder(routeBuilder);\n return routeBuilder;\n }\n\n /**\n * @deprecated\n */\n public addTableviewRoutesFromComponent(path: string, component: Type<any>, hasDetails = true, hasEdit = true, hasAdd = true): RouteBuilder {\n const routeBuilder = RouteBuilder.createTableviewRoutesFromComponent(path, component, hasDetails, hasEdit, hasAdd);\n this.addChildBuilder(routeBuilder);\n return routeBuilder;\n }\n\n public toParent(): RouteBuilder {\n if (!this.parent) {\n throw new Error('Parent was not provided.');\n }\n return this.parent;\n }\n\n public toRoot(): RoutesBuilder {\n if (!this.root) {\n throw new Error('Root was not provided.');\n }\n return this.root;\n }\n\n public finish(): RoutesBuilder {\n return this.toRoot();\n }\n\n public buildRoute(): Route {\n const angularRoute: Route = {\n ...this.route\n };\n\n if (angularRoute.data) {\n angularRoute.data = {\n ...angularRoute.data,\n ...this.routeData\n };\n } else {\n angularRoute.data = {...this.routeData};\n }\n\n if ((this.route.children?.length ?? 0) > 0 || this.children.length > 0) {\n // route has children\n angularRoute.children = [];\n if (this.route.children?.length) {\n angularRoute.children.push(...this.route.children);\n }\n if (this.children.length) {\n for (const childRoute of this.children) {\n angularRoute.children.push(childRoute.buildRoute());\n }\n }\n }\n\n if (this.route.canActivate) {\n angularRoute.canActivate = [...this.route.canActivate];\n }\n if (this.route.canActivateChild) {\n angularRoute.canActivateChild = [...this.route.canActivateChild];\n }\n if (this.route.canLoad) {\n angularRoute.canLoad = [...this.route.canLoad];\n }\n if (this.route.canDeactivate) {\n angularRoute.canDeactivate = [...this.route.canDeactivate];\n }\n if (this.route.resolve) {\n angularRoute.resolve = {...this.route.resolve};\n }\n\n return angularRoute;\n }\n\n public buildMenu(): Array<MngMenuItem> {\n const menuItemBuild: MngMenuItem | null = this.menuItem ? {...this.menuItem} : null;\n const routeChildrenMenuItems: Array<MngMenuItem> = this.children.flatMap(child => child.buildMenu());\n const menuItemChildren: Array<MngMenuItem> = [];\n const menuItemChildrenBuild: Array<MngMenuItem> = [];\n\n if (menuItemBuild?.items) {\n menuItemChildrenBuild.push(...menuItemBuild.items);\n }\n\n for (const menuItemChild of this.menuItemChildren) {\n const finalMenuItemChild: MngMenuItem = {...menuItemChild};\n if (!finalMenuItemChild.routerLink) {\n finalMenuItemChild.routerLink = this.routePath;\n }\n if (typeof finalMenuItemChild.routerLink === 'string') {\n finalMenuItemChild.routerLink = [finalMenuItemChild.routerLink];\n }\n finalMenuItemChild.routerLink = RouteUtil.removeEmptyPathSegments(finalMenuItemChild.routerLink);\n menuItemChildren.push(finalMenuItemChild);\n }\n\n menuItemChildrenBuild.push(...menuItemChildren, ...routeChildrenMenuItems);\n\n if (!menuItemBuild) {\n return menuItemChildrenBuild;\n }\n\n menuItemBuild.label = menuItemBuild.label ?? this.pageTitle;\n if (typeof menuItemBuild.routerLink === 'string') {\n menuItemBuild.routerLink = [menuItemBuild.routerLink];\n }\n menuItemBuild.routerLink = RouteUtil.removeEmptyPathSegments(menuItemBuild.routerLink ?? this.routePath);\n if (menuItemChildrenBuild.length > 0) {\n menuItemBuild.items = menuItemChildrenBuild;\n }\n\n if (!menuItemBuild.guards) {\n const guards = this.findMenuItemGuards();\n if (guards.length > 0) {\n menuItemBuild.guards = guards;\n }\n }\n\n if (!menuItemBuild.permissions) {\n menuItemBuild.permissions = this.routeData.permissions;\n }\n\n return [menuItemBuild];\n }\n\n private createMenuItem(icon?: string, label?: string, routerLink?: Array<string>) {\n const menuItem: MngMenuItem = {};\n if (icon) {\n menuItem.icon = icon;\n }\n if (label) {\n menuItem.label = label;\n }\n if (routerLink) {\n menuItem.routerLink = routerLink;\n }\n return menuItem;\n }\n\n private adjustMenuRouterLinksFromBuilder(menuItems: Array<MngMenuItem>) {\n for (const menuItem of menuItems) {\n if (menuItem.routerLink) {\n menuItem.routerLink = RouteUtil.appendPathToBasePath(this.routePath, typeof menuItem.routerLink === 'string' ? [menuItem.routerLink] : menuItem.routerLink);\n }\n if (Array.isArray(menuItem.items)) {\n this.adjustMenuRouterLinksFromBuilder(menuItem.items);\n }\n }\n }\n\n private findMenuItemGuards(): Array<any> {\n const guards: Array<any> = [];\n if (this.route.canActivate?.length) {\n guards.push(...this.route.canActivate);\n }\n if (this.parent) {\n // Check for parent guards that should be included in decision to hide menu item!\n // Some parent routes might have guards, but no menu items, so this guards must be taken into account here,\n // because there is no parent menu item to hide.\n this.parent.findMenuItemGuards().forEach(g => {\n if (guards.indexOf(g) < 0) {\n guards.push(g);\n }\n });\n }\n return guards;\n }\n}\n","import {Type} from '@angular/core';\nimport {Route} from '@angular/router';\n\nimport {MngActionRouteComponent} from '../components/action';\nimport {AMngTableviewRouteComponent, MngTableviewRouteComponent} from '../components/tableview';\nimport {ITableviewDataProvider} from '../data-providers';\nimport {ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor, TableviewDescriptor} from '../descriptors';\nimport {APermissions, Permissions} from '../security/model';\nimport {MngRouterData} from './models';\nimport {RouteBuilder} from './route-builder';\n\nexport class TableviewRouteBuilder<C extends AMngTableviewRouteComponent<any, any>> {\n private descriptor?: TableviewDescriptor<any>;\n private dataProvider?: ITableviewDataProvider<any, any>;\n private actions?: Array<ActionDescriptor<any>>;\n\n private component?: Type<C>;\n\n private hasDetails = true;\n private detailsPath = ':itemId';\n private hasEdit = true;\n private editPath = ':itemId/edit';\n private hasAdd = true;\n private addPath = 'add';\n\n private permissions?: {\n [key: string]: APermissions;\n };\n\n private constructor(private path: string) {}\n\n public static fromComponent<C extends AMngTableviewRouteComponent<any, any>>(path: string, component: Type<C>): TableviewRouteBuilder<C> {\n const inst = new TableviewRouteBuilder<C>(path);\n inst.component = component;\n return inst;\n }\n\n public static from(\n path: string,\n descriptor: TableviewDescriptor<any>,\n dataProvider: ITableviewDataProvider<any, any>,\n actions: Array<ActionDescriptor<any>>\n ): TableviewRouteBuilder<never> {\n const inst = new TableviewRouteBuilder<never>(path);\n inst.descriptor = descriptor;\n inst.dataProvider = dataProvider;\n inst.actions = actions;\n\n inst.hasDetails = false;\n inst.hasAdd = false;\n inst.hasEdit = false;\n for (const action of inst.actions) {\n if (action instanceof ActionEditorDetailsDescriptor) {\n inst.hasDetails = true;\n } else if (action instanceof ActionEditorAddDescriptor) {\n inst.hasAdd = true;\n } else if (action instanceof ActionEditorEditDescriptor) {\n inst.hasEdit = true;\n }\n }\n\n return inst;\n }\n\n public withDetails(hasDetails = true, permissions?: APermissions, path?: string): this {\n this.hasDetails = hasDetails;\n if (permissions) {\n this.withPermissions(undefined, undefined, undefined, undefined, permissions);\n }\n if (path) {\n this.detailsPath = path;\n }\n return this;\n }\n\n public withAdd(hasAdd = true, permissions?: APermissions, path?: string): this {\n this.hasAdd = hasAdd;\n if (permissions) {\n this.withPermissions(undefined, permissions);\n }\n if (path) {\n this.addPath = path;\n }\n return this;\n }\n\n public withEdit(hasEdit = true, permissions?: APermissions, path?: string): this {\n this.hasEdit = hasEdit;\n if (permissions) {\n this.withPermissions(undefined, undefined, permissions);\n }\n if (path) {\n this.editPath = path;\n }\n return this;\n }\n\n public withPermissions(read?: APermissions, add?: APermissions, edit?: APermissions, delet?: APermissions, details?: APermissions): this {\n if (!this.permissions) {\n this.permissions = {};\n }\n if (read) {\n this.permissions[Permissions.ActionTypes.READ] = read;\n }\n if (add) {\n this.permissions[Permissions.ActionTypes.ADD] = add;\n }\n if (edit) {\n this.permissions[Permissions.ActionTypes.EDIT] = edit;\n }\n if (delet) {\n this.permissions[Permissions.ActionTypes.DELETE] = delet;\n }\n if (details) {\n this.permissions[Permissions.ActionTypes.DETAILS] = details;\n }\n return this;\n }\n\n public withPermissionsOther(key: string, permissions: APermissions): this {\n if (!this.permissions) {\n this.permissions = {};\n }\n this.permissions[key] = permissions;\n return this;\n }\n\n public withPermissionsObject(permissions: {[key: string]: APermissions}): this {\n this.permissions = permissions;\n return this;\n }\n\n public build(): Route {\n return this.toRouteBuilder().buildRoute();\n }\n\n public toRouteBuilder(): RouteBuilder {\n const tableviewRouteBuilder = RouteBuilder.createFromRoute({\n path: this.path,\n component: this.component ? this.component : MngTableviewRouteComponent\n });\n\n const routeData: MngRouterData = {};\n if (!this.component) {\n routeData.tableview = {\n descriptor: this.descriptor!,\n dataProvider: this.dataProvider!\n };\n if (this.actions) {\n routeData.tableview.actions = this.actions;\n }\n }\n if (this.permissions) {\n routeData.tableviewPermissions = {...this.permissions};\n }\n tableviewRouteBuilder.withData(routeData);\n if (this.permissions?.[Permissions.ActionTypes.READ]) {\n tableviewRouteBuilder.withPermissions(this.permissions[Permissions.ActionTypes.READ]);\n }\n\n // list route\n const rootChildRouteBuilder = RouteBuilder.create('', MngActionRouteComponent);\n if (this.permissions?.[Permissions.ActionTypes.READ]) {\n rootChildRouteBuilder.withPermissions(this.permissions[Permissions.ActionTypes.READ]);\n }\n tableviewRouteBuilder.addChildBuilder(rootChildRouteBuilder);\n\n // add route\n if (this.hasAdd) {\n const routeBuilder = RouteBuilder.create(this.addPath, MngActionRouteComponent);\n if (this.permissions?.[Permissions.ActionTypes.ADD]) {\n routeBuilder.withPermissions(this.permissions[Permissions.ActionTypes.ADD]);\n }\n tableviewRouteBuilder.addChildBuilder(routeBuilder);\n }\n if (this.hasDetails) {\n const routeBuilder = RouteBuilder.create(this.detailsPath, MngActionRouteComponent);\n if (this.permissions?.[Permissions.ActionTypes.DETAILS]) {\n routeBuilder.withPermissions(this.permissions[Permissions.ActionTypes.DETAILS]);\n }\n tableviewRouteBuilder.addChildBuilder(routeBuilder);\n }\n if (this.hasEdit) {\n const routeBuilder = RouteBuilder.create(this.editPath, MngActionRouteComponent);\n if (this.permissions?.[Permissions.ActionTypes.EDIT]) {\n routeBuilder.withPermissions(this.permissions[Permissions.ActionTypes.EDIT]);\n }\n tableviewRouteBuilder.addChildBuilder(routeBuilder);\n }\n\n return tableviewRouteBuilder;\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/components/layout/services';\nexport * from './lib/services';\nexport * from './lib/services/providers';\n\n// injection tokens\nexport * from './lib/services/tokens';\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// api models\nexport * from './lib/api/models';\n\n// component models\nexport * from './lib/components/action/models';\nexport * from './lib/components/form/models';\nexport * from './lib/components/tableview/models';\n\n// config\nexport * from './lib/config/models';\nexport * from './lib/config';\n\n// data providers\nexport * from './lib/data-providers';\n\n// descriptors\nexport * from './lib/descriptors';\nexport * from './lib/descriptors/interfaces';\nexport * from './lib/descriptors/types';\n\n// general models\nexport * from './lib/models';\n\n// router\nexport * from './lib/router';\nexport * from './lib/router/models';\n\n// security\nexport * from './lib/security';\nexport * from './lib/security/model';\n\n// types\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","mergeMap","i3","i1","i2.MngCommonsService","i1.MngAuthorizationService","i3.MngAuthorizationService","i4.MngActionExecutorService","i5","i4.MngViewContainerComponentService","i7","i8","i11.MngLinkFormatterPipe","i3.MngNavigationService","i3.MngActionExecutorService","i3.MngViewContainerComponentService","i4","i6","i2.MngFormlyFieldWrapperComponent","i2.MngActionExecutorService","i2.MngNavigationService","i2.MngViewContainerComponentService","i5.MngActionComponent","i7.MngFormEditorComponent","i9","i1.MngAutocompleteComponent","i10","i12","i1.MngDropdownComponent","i4.MngAutocompleteComponent","i5.MngDropdownComponent","i4.MngComponentDirective","i7.JsonPathPipe","i8.MngBooleanPipe","i9.MngEnumPipe","i5.MngTableColumnFilterComponent","i6.MngTableColumnValueComponent","i7.MngActionComponent","i11.MngComponentDirective","i12.MngI18nPropertyPipe","i5.MngActionExecutorService","i5.MngViewContainerComponentService","i8.MngActionComponent","i9.MngTableComponent","i11.MngTemplateDirective","i2.MngTableviewComponent","i2.MngTableComponent","i11","i1.MngActionExecutorService","i3.MngActionComponent","i4.MngTemplateDirective","i1.MngTableComponent","i1.MngCommonsService","i2.MngAuthorizationService","i3.MngCommonsService","i4.MngMainLayoutComponentService","i2.MngConfigurationService","i1.MngVersionService","i2.JsonPathPipe","i2.MngMainLayoutComponentService","i3.MngMenuItemComponent","i4.MngVersionComponent","i3.MngMainLayoutComponentService","i6.MngComponentDirective","i5.MngComponentDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons.mjs","sources":["../../src/lib/api/models/filter-match-type.model.ts","../../src/lib/api/models/filter-param.model.ts","../../src/lib/api/models/query-mode.model.ts","../../src/lib/api/models/query-param.model.ts","../../src/lib/api/models/query-result.model.ts","../../src/lib/api/models/builders/query-param.builder.ts","../../src/lib/api/models/mappers.ts","../../src/lib/utils/action-data-provider.util.ts","../../src/lib/data-providers/base.data-provider.ts","../../src/lib/data-providers/editor.data-provider.ts","../../src/lib/data-providers/lookup.data-provider.ts","../../src/lib/data-providers/table.data-provider.ts","../../src/lib/data-providers/tableview.data-provider.ts","../../src/lib/security/model/authorization.type.ts","../../src/lib/security/model/permissions.model.ts","../../src/lib/descriptors/types/action.type.ts","../../src/lib/descriptors/types/column.type.ts","../../src/lib/descriptors/types/editor.type.ts","../../src/lib/descriptors/types/field.type.ts","../../src/lib/descriptors/types/filter.type.ts","../../src/lib/descriptors/types/table.type.ts","../../src/lib/descriptors/action.descriptor.ts","../../src/lib/descriptors/filter.descriptor.ts","../../src/lib/descriptors/column.descriptor.ts","../../src/lib/descriptors/editor.descriptor.ts","../../src/lib/components/form/models/form-editor.event.ts","../../src/lib/descriptors/field.descriptor.ts","../../src/lib/descriptors/field-validation.descriptor.ts","../../src/lib/descriptors/model.descriptor.ts","../../src/lib/descriptors/table.descriptor.ts","../../src/lib/descriptors/tableview.descriptor.ts","../../src/lib/utils/editor-formly.util.ts","../../src/lib/utils/enum.util.ts","../../src/lib/types/type.decorator.ts","../../src/lib/utils/type.util.ts","../../src/lib/utils/i18n.util.ts","../../src/lib/utils/model.util.ts","../../src/lib/utils/notification.util.ts","../../src/lib/api/utils/object-serializer.util.ts","../../src/lib/api/utils/medius-rest.util.ts","../../src/lib/components/action/models/action-execution.model.ts","../../src/lib/security/authorization.util.ts","../../src/lib/services/tokens/browser-storage.token.ts","../../src/lib/services/tokens/commons-init.token.ts","../../src/lib/services/tokens/default-setting.token.ts","../../src/lib/services/tokens/module-config.token.ts","../../src/lib/services/configuration.service.ts","../../src/lib/services/navigation.service.ts","../../src/lib/services/error-mapper.service.ts","../../src/lib/pipes/boolean.pipe.ts","../../src/lib/pipes/enum.pipe.ts","../../src/lib/pipes/i18n-property.pipe.ts","../../src/lib/pipes/link-formatter.pipe.ts","../../src/lib/pipes/json-path.pipe.ts","../../src/lib/services/action-executor.service.ts","../../src/lib/services/commons.service.ts","../../src/lib/services/view-container.component.service.ts","../../src/lib/security/authorization.service.ts","../../src/lib/security/authorization.guard.ts","../../src/lib/components/action/action.component.ts","../../src/lib/components/action/action.component.html","../../src/lib/components/action/route/action-route.component.ts","../../src/lib/components/action/route/action-route.component.html","../../src/lib/directives/component.directive.ts","../../src/lib/directives/template.directive.ts","../../src/lib/components/form/editor/form-editor.component.ts","../../src/lib/components/form/editor/form-editor.component.html","../../src/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.ts","../../src/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.html","../../src/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.ts","../../src/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.html","../../src/lib/components/form/autocomplete/autocomplete.component.ts","../../src/lib/components/form/autocomplete/autocomplete.component.html","../../src/lib/components/form/dropdown/dropdown.component.ts","../../src/lib/components/form/dropdown/dropdown.component.html","../../src/lib/components/action/editor/action-editor.component.ts","../../src/lib/components/action/editor/action-editor.component.html","../../src/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.ts","../../src/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.html","../../src/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.ts","../../src/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.html","../../src/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.ts","../../src/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.html","../../src/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.ts","../../src/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.html","../../src/lib/utils/styles.util.ts","../../src/lib/components/tableview/models/table.event.ts","../../src/lib/components/tableview/table/column-value/column-value.component.ts","../../src/lib/components/tableview/table/column-value/column-value.component.html","../../src/lib/components/tableview/table/column-filter/column-filter.component.ts","../../src/lib/components/tableview/table/column-filter/column-filter.component.html","../../src/lib/components/tableview/table/table.component.ts","../../src/lib/components/tableview/table/table.component.html","../../src/lib/components/tableview/tableview.component.ts","../../src/lib/components/tableview/tableview.component.html","../../src/lib/components/tableview/route/tableview-route.abstract.component.ts","../../src/lib/components/tableview/route/tableview-route.component.ts","../../templates/tableview-route.component.html","../../src/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.ts","../../src/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.html","../../src/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.ts","../../src/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.html","../../src/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.ts","../../src/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.html","../../src/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.ts","../../src/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.html","../../src/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.ts","../../src/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.html","../../src/lib/components/layout/breadcrumb.component.ts","../../src/lib/components/layout/breadcrumb.component.html","../../src/lib/components/layout/footer.component.ts","../../src/lib/components/layout/footer.component.html","../../src/lib/components/layout/services/main-layout.component.service.ts","../../src/lib/components/layout/menu-item.component.ts","../../src/lib/components/layout/menu-item.component.html","../../src/lib/services/version.service.ts","../../src/lib/components/layout/version.component.ts","../../src/lib/components/layout/version.component.html","../../src/lib/components/layout/menu.component.ts","../../src/lib/components/layout/menu.component.html","../../src/lib/components/layout/topbar.component.ts","../../src/lib/components/layout/topbar.component.html","../../src/lib/components/layout/main-layout.component.ts","../../src/lib/components/layout/main-layout.component.html","../../src/lib/services/internal/commons-init.provider.ts","../../src/lib/services/internal/commons-init.service.ts","../../src/lib/services/providers/config-service.provider.ts","../../src/lib/config/formly.config.ts","../../src/lib/services/providers/formly-config.provider.ts","../../src/lib/mng-commons.module.ts","../../src/lib/api/services/api.abstract.service.ts","../../src/lib/api/services/get-all-api.abstract.service.ts","../../src/lib/api/services/crud-api.abstract.service.ts","../../src/lib/utils/route.util.ts","../../src/lib/router/route-builder.ts","../../src/lib/router/tableview-route-builder.ts","../../src/public-api.ts","../../src/mediusinc-mng-commons.ts"],"sourcesContent":["/**\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 MediusFilterMatchType {\n Equals = 'EQUALS',\n NotEquals = 'NOT_EQUALS',\n FromTo = 'FROM_TO',\n Contains = 'CONTAINS',\n StartsWith = 'STARTS_WITH',\n EndsWith = 'ENDS_WITH',\n In = 'IN',\n NotIn = 'NOT_IN',\n SmallerThan = 'SMALLER_THAN',\n GreaterThan = 'GREATER_THAN'\n}\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 {MediusFilterMatchType} from './filter-match-type.model';\nimport {AttributeDef} from './serialization.model';\n\nexport class MediusFilterParam {\n property?: string;\n filterValue?: object;\n filterValueTo?: object;\n filterMatchType?: MediusFilterMatchType;\n filterMatchCaseSensitive?: boolean;\n\n public static discriminator?: string;\n\n public static attributeTypeMap: Array<AttributeDef> = [\n {\n name: 'property',\n baseName: 'property',\n type: 'string'\n },\n {\n name: 'filterValue',\n baseName: 'filter_value',\n type: 'object'\n },\n {\n name: 'filterValueTo',\n baseName: 'filter_value_to',\n type: 'object'\n },\n {\n name: 'filterMatchType',\n baseName: 'filter_match_type',\n type: 'FilterMatchType'\n },\n {\n name: 'filterMatchCaseSensitive',\n baseName: 'filter_match_case_sensitive',\n type: 'boolean'\n }\n ];\n\n public static getAttributeTypeMap() {\n return MediusFilterParam.attributeTypeMap;\n }\n}\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 MediusQueryMode {\n Count = 'COUNT',\n Data = 'DATA',\n All = 'ALL'\n}\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 {MediusFilterParam} from './filter-param.model';\nimport {MediusQueryMode} from './query-mode.model';\nimport {AttributeDef} from './serialization.model';\n\nexport class MediusQueryParam {\n sortProperty?: Array<string>;\n sortAsc?: Array<boolean>;\n itemsOffset?: number;\n itemsPerPage?: number;\n filterParams?: Array<MediusFilterParam>;\n filterAllParam?: string;\n filterAllProperties?: Array<string>;\n validateProperties?: Array<string>;\n selectInTwoSteps?: boolean;\n sortEnumByOrdinal?: boolean;\n groupByProperties?: Array<string>;\n queryMode?: MediusQueryMode;\n\n public static discriminator?: string;\n\n public static attributeTypeMap: Array<AttributeDef> = [\n {\n name: 'sortProperty',\n baseName: 'sort_property',\n type: 'Array<string>'\n },\n {\n name: 'sortAsc',\n baseName: 'sort_asc',\n type: 'Array<boolean>'\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: 'filterParams',\n baseName: 'filter_params',\n type: 'Array<FilterParam>'\n },\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: 'validateProperties',\n baseName: 'validate_properties',\n type: 'Array<string>'\n },\n {\n name: 'selectInTwoSteps',\n baseName: 'select_in_two_steps',\n type: 'boolean'\n },\n {\n name: 'sortEnumByOrdinal',\n baseName: 'sort_enum_by_ordinal',\n type: 'boolean'\n },\n {\n name: 'groupByProperties',\n baseName: 'group_by_properties',\n type: 'Array<string>'\n },\n {\n name: 'queryMode',\n baseName: 'query_mode',\n type: 'QueryMode'\n }\n ];\n\n public static getAttributeTypeMap() {\n return MediusQueryParam.attributeTypeMap;\n }\n}\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 MediusQueryResult<T> implements IMediusQueryResult<T> {\n allDataCount?: number;\n pageData?: Array<T>;\n\n static discriminator?: string;\n\n static attributeTypeMap: Array<AttributeDef> = [\n {\n name: 'allDataCount',\n baseName: 'all_data_count',\n type: 'number'\n },\n {\n name: 'pageData',\n baseName: 'page_data',\n type: 'Array<T>'\n }\n ];\n\n static getAttributeTypeMap() {\n return MediusQueryResult.attributeTypeMap;\n }\n}\n\nexport interface IMediusQueryResult<T> {\n allDataCount?: number;\n pageData?: Array<T>;\n}\n","import {MediusFilterMatchType, MediusFilterParam, MediusQueryMode, MediusQueryParam} from '../';\n\nexport class MediusQueryParamBuilder {\n private constructor(private queryParam: MediusQueryParam) {}\n\n public static create(itemsPerPage = 50, itemsOffset = 0): MediusQueryParamBuilder {\n const queryParam = new MediusQueryParam();\n queryParam.itemsPerPage = itemsPerPage;\n queryParam.itemsOffset = itemsOffset;\n queryParam.queryMode = MediusQueryMode.All;\n return new MediusQueryParamBuilder(queryParam);\n }\n\n public static createFromExisting(queryParam: MediusQueryParam, itemsPerPage?: number, itemsOffset?: number): MediusQueryParamBuilder {\n queryParam.itemsPerPage = itemsPerPage ?? queryParam.itemsPerPage ?? 50;\n queryParam.itemsOffset = itemsOffset ?? queryParam.itemsOffset ?? 0;\n queryParam.queryMode = queryParam.queryMode ?? MediusQueryMode.All;\n return new MediusQueryParamBuilder(queryParam);\n }\n\n public withItemsPerPage(itemsPerPage: number): MediusQueryParamBuilder {\n this.queryParam.itemsPerPage = itemsPerPage;\n return this;\n }\n\n public withItemsOffset(itemsOffset: number): MediusQueryParamBuilder {\n this.queryParam.itemsOffset = itemsOffset;\n return this;\n }\n\n public withQueryMode(queryMode: MediusQueryMode): MediusQueryParamBuilder {\n this.queryParam.queryMode = queryMode;\n return this;\n }\n\n public withSort(property: string, asc = true): MediusQueryParamBuilder {\n if (!this.queryParam.sortProperty || !this.queryParam.sortAsc) {\n this.queryParam.sortProperty = [];\n this.queryParam.sortAsc = [];\n }\n this.queryParam.sortProperty.push(property);\n this.queryParam.sortAsc.push(asc);\n return this;\n }\n\n public withFilter(\n property: string,\n value: any,\n valueTo: any = undefined,\n matchType: MediusFilterMatchType = MediusFilterMatchType.Contains,\n matchCaseSensitive = false\n ): MediusQueryParamBuilder {\n if (!this.queryParam.filterParams) {\n this.queryParam.filterParams = [];\n }\n const filterParam = new MediusFilterParam();\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(): MediusQueryParam {\n const queryParam = this.queryParam;\n this.queryParam = new MediusQueryParam();\n return queryParam;\n }\n}\n","import {MediusFilterMatchType} from './filter-match-type.model';\nimport {MediusFilterParam} from './filter-param.model';\nimport {MediusQueryMode} from './query-mode.model';\nimport {MediusQueryParam} from './query-param.model';\n\nexport const enumsMapBase: {[index: string]: any} = {\n FilterMatchType: MediusFilterMatchType,\n QueryMode: MediusQueryMode\n};\n\nexport const typeMapBase: {[index: string]: any} = {\n FilterParam: MediusFilterParam,\n QueryParam: MediusQueryParam\n};\n","import {Observable, isObservable, throwError} from 'rxjs';\n\nimport {MediusQueryParamBuilder, MediusQueryResult} from '../api/models';\nimport {IMngCrudApiService, IMngGetAllApiService} from '../api/services';\nimport {ActionContext} from '../components/action/models';\nimport {IEditorDataProvider, ITableDataProvider} from '../data-providers';\n\nexport class ActionDataProviderUtil {\n public static runGetAllOrFail<T, S>(ctx: ActionContext<T, S>): Observable<MediusQueryResult<T>> {\n const dataProviderExec = ActionDataProviderUtil.runGetAllDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runGetAllService(ctx);\n return isObservable(serviceExec)\n ? serviceExec\n : throwError(\n () =>\n new Error(\n `Data provider and service instance could not extract fetch function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`\n )\n );\n }\n\n public static runFetchOrFail<T, S>(ctx: ActionContext<T, S>): Observable<T> {\n const dataProviderExec = ActionDataProviderUtil.runFetchDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runGetByIdService(ctx);\n return isObservable(serviceExec)\n ? serviceExec\n : throwError(\n () =>\n new Error(\n `Data provider and service instance could not extract fetch function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`\n )\n );\n }\n\n public static runCreateOrFail<T, S>(ctx: ActionContext<T, S>): Observable<T> {\n const dataProviderExec = ActionDataProviderUtil.runCreateDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runCreateService(ctx);\n return isObservable(serviceExec)\n ? serviceExec\n : throwError(\n () =>\n new Error(\n `Data provider and service instance could not extract create function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item ${ctx.parameters?.item}.`\n )\n );\n }\n\n public static runUpdateOrFail<T, S>(ctx: ActionContext<T, S>): Observable<T> {\n const dataProviderExec = ActionDataProviderUtil.runUpdateDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runUpdateService(ctx);\n return isObservable(serviceExec)\n ? serviceExec\n : throwError(\n () =>\n new Error(\n `Data provider and service instance could not extract update function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`\n )\n );\n }\n\n public static runDeleteOrFail<T, S>(ctx: ActionContext<T, S>): Observable<T | null> {\n const dataProviderExec = ActionDataProviderUtil.runDeleteDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runDeleteService(ctx);\n return isObservable(serviceExec)\n ? serviceExec\n : throwError(\n () =>\n new Error(\n `Data provider and service instance could not extract delete function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`\n )\n );\n }\n\n public static runGetAllService<T>(ctx: ActionContext<T, unknown>): Observable<MediusQueryResult<T>> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const getAllServiceInstance = ctx.serviceInstance as IMngGetAllApiService<T>;\n if (typeof getAllServiceInstance.getAllPost === 'function') {\n const queryParam = ctx.parameters?.queryParam ?? MediusQueryParamBuilder.create().build();\n return getAllServiceInstance.getAllPost(queryParam);\n }\n }\n return null;\n }\n\n public static runGetByIdService<T>(ctx: ActionContext<T, unknown>): Observable<T> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const crudServiceInstance = ctx.serviceInstance as IMngCrudApiService<T>;\n if (typeof crudServiceInstance.getByIdGet === 'function') {\n return ctx.parameters?.itemId ? crudServiceInstance.getByIdGet(ctx.parameters.itemId) : null;\n }\n }\n return null;\n }\n\n public static runCreateService<T>(ctx: ActionContext<T, unknown>): Observable<T> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const crudServiceInstance = ctx.serviceInstance as IMngCrudApiService<T>;\n if (typeof crudServiceInstance.createPost === 'function') {\n return ctx.parameters?.item ? crudServiceInstance.createPost(ctx.parameters.item) : null;\n }\n }\n return null;\n }\n\n public static runUpdateService<T>(ctx: ActionContext<T, unknown>): Observable<T> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const crudServiceInstance = ctx.serviceInstance as IMngCrudApiService<T>;\n if (typeof crudServiceInstance.updatePut === 'function') {\n return ctx.parameters?.itemId && ctx.parameters.item ? crudServiceInstance.updatePut(ctx.parameters.itemId, ctx.parameters.item) : null;\n }\n }\n return null;\n }\n\n public static runDeleteService<T>(ctx: ActionContext<T, unknown>): Observable<T | null> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const crudServiceInstance = ctx.serviceInstance as IMngCrudApiService<T>;\n if (typeof crudServiceInstance.removeDelete === 'function') {\n return ctx.parameters?.itemId ? crudServiceInstance.removeDelete(ctx.parameters.itemId, ctx.parameters.item) : null;\n }\n }\n return null;\n }\n\n public static runGetAllDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<MediusQueryResult<T>> | null {\n if (typeof ctx.dataProvider !== 'undefined' && typeof ctx.dataProvider['getAll' as keyof object] === 'function') {\n const tableDataProvider = ctx.dataProvider as ITableDataProvider<T, any>;\n const queryParam = ctx.parameters?.queryParam ?? MediusQueryParamBuilder.create().build();\n return tableDataProvider.getAll(queryParam, ctx.serviceInstance);\n }\n return null;\n }\n\n public static runFetchDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<T> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<T, any>;\n if (typeof editorDataProvider.fetch === 'function') {\n return ctx.parameters?.itemId ? editorDataProvider.fetch(ctx.parameters.itemId, ctx.serviceInstance) : null;\n }\n }\n return null;\n }\n\n public static runCreateDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<T> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<T, any>;\n if (typeof editorDataProvider.create === 'function') {\n return ctx.parameters?.item ? editorDataProvider.create(ctx.parameters.item, ctx.serviceInstance) : null;\n }\n }\n return null;\n }\n\n public static runUpdateDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<T> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<T, any>;\n if (typeof editorDataProvider.update === 'function') {\n return ctx.parameters?.itemId ? editorDataProvider.update(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance) : null;\n }\n }\n return null;\n }\n\n public static runDeleteDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<T | null> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<T, any>;\n if (typeof editorDataProvider.delete === 'function') {\n return ctx.parameters?.itemId ? editorDataProvider.delete(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance) : null;\n }\n }\n return null;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {ClassType} from '../types';\n\nexport interface IDataProvider<T, S> {\n modelType: ClassType<T> | null;\n serviceType?: Type<S>;\n}\n\nexport class DataProvider<T, S> {\n protected _modelType: ClassType<T> | null;\n protected _serviceType?: Type<S>;\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 withServiceType(type: Type<S>): this {\n this._serviceType = type;\n return this;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, throwError} from 'rxjs';\n\nimport {ClassType, IdType} from '../types';\nimport {DataProvider, IDataProvider} from './base.data-provider';\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 | null>;\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 | null>;\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 | null>): this {\n this._delete = deleteFn;\n return this;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, of} from 'rxjs';\n\nimport {MediusQueryParam} from '../api/models';\nimport {ClassType} from '../types';\nimport {DataProvider, IDataProvider} from './base.data-provider';\n\nexport interface ILookupDataProvider<T, S> extends IDataProvider<T, S> {\n lookup: (queryParam?: MediusQueryParam, service?: S, search?: string) => Observable<Array<T>>;\n}\n\nexport class LookupDataProvider<T, S> extends DataProvider<T, S> implements ILookupDataProvider<T, S> {\n protected _lookup: (queryParam?: MediusQueryParam, 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?: MediusQueryParam, service?: S, search?: string) => Observable<Array<T>>): this {\n this._lookup = lookup;\n return this;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, of} from 'rxjs';\n\nimport {MediusQueryParam, MediusQueryResult} from '../api/models';\nimport {ClassType} from '../types';\nimport {DataProvider, IDataProvider} from './base.data-provider';\n\nexport interface ITableDataProvider<T, S> extends IDataProvider<T, S> {\n getAll: (queryParam: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>>;\n}\n\nexport class TableDataProvider<T, S> extends DataProvider<T, S> implements ITableDataProvider<T, S> {\n protected _getAll: (queryParam: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>> = () => of(new MediusQueryResult<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: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>>): this {\n this._getAll = getAll;\n return this;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, of} from 'rxjs';\n\nimport {MediusQueryParam, MediusQueryResult} from '../api/models';\nimport {ClassType} from '../types';\nimport {EditorDataProvider, IEditorDataProvider} from './editor.data-provider';\nimport {ITableDataProvider} from './table.data-provider';\n\nexport interface ITableviewDataProvider<T, S> extends IEditorDataProvider<T, S> {\n getAll: (queryParam: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>>;\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: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>> = () => of(new MediusQueryResult<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: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>>): this {\n this._getAll = getAll;\n return this;\n }\n}\n","export enum AuthorizationTypeEnum {\n All = 'ALL',\n Any = 'ANY',\n Rbac = 'ROLE_BASED_ACCESS_CONTROL',\n Service = 'SERVICE'\n}\n","import {Type} from '@angular/core';\n\nimport {AuthorizationTypeEnum} from './authorization.type';\nimport {IPermissionService} from './permission-service.interface';\n\nexport abstract class APermissions {\n private readonly _authorizationType: AuthorizationTypeEnum;\n\n constructor(type: AuthorizationTypeEnum) {\n this._authorizationType = type;\n }\n\n public get authorizationType() {\n return this._authorizationType;\n }\n}\n\nexport namespace Permissions {\n export class All extends APermissions {\n private _permissions: Array<APermissions> = [];\n\n private constructor() {\n super(AuthorizationTypeEnum.All);\n }\n\n public static of(...permissions: Array<APermissions>): All {\n const inst = new All();\n inst.and(...permissions);\n return inst;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public and(...permissions: Array<APermissions>): this {\n this._permissions.push(...permissions);\n return this;\n }\n }\n\n export class Any extends APermissions {\n private _permissions: Array<APermissions> = [];\n\n private constructor() {\n super(AuthorizationTypeEnum.Any);\n }\n\n public static of(...permissions: Array<APermissions>): Any {\n const inst = new Any();\n inst.or(...permissions);\n return inst;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public or(...permissions: Array<APermissions>): this {\n this._permissions.push(...permissions);\n return this;\n }\n }\n\n export class Roles extends APermissions {\n private _roles: Array<Array<string>> = [];\n\n private constructor() {\n super(AuthorizationTypeEnum.Rbac);\n }\n\n public static of(...roles: Array<string>): Roles {\n const inst = new Roles();\n inst.or(...roles);\n return inst;\n }\n\n public get roles() {\n return this._roles;\n }\n\n public and(...roles: Array<string>): this {\n if (this._roles.length === 0) {\n this._roles.push([]);\n }\n this._roles[this._roles.length - 1].push(...roles);\n return this;\n }\n\n public or(...roles: Array<string>): this {\n this._roles.push(...roles.map(s => [s]));\n return this;\n }\n }\n\n export class Service extends APermissions {\n private constructor(public readonly service: Type<IPermissionService>) {\n super(AuthorizationTypeEnum.Service);\n }\n\n public static of(service: Type<IPermissionService>): Service {\n return new Service(service);\n }\n }\n\n export class ActionTypes {\n public static readonly READ = 'read';\n public static readonly ADD = 'add';\n public static readonly EDIT = 'edit';\n public static readonly DELETE = 'delete';\n public static readonly DETAILS = 'details';\n }\n}\n","export enum ActionPositionEnum {\n ToolbarLeft,\n ToolbarRight,\n TableHeader,\n RowInline,\n RowClick,\n FooterLeft,\n FooterRight\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\nexport enum ActionSizeEnum {\n ExtraSmall,\n Small,\n Normal,\n Large,\n ExtraLarge\n}\n\nexport enum ActionEditorDialogSizeEnum {\n ExtraSmall,\n Small,\n Normal,\n Large,\n ExtraLarge\n}\n\nexport enum ActionEditorSubmitTypeEnum {\n Submit,\n Cancel\n}\n","export enum ColumnTypeEnum {\n String,\n Number,\n Currency,\n Boolean,\n Date,\n Enum,\n Custom\n}\n","export enum TableviewTypeEnum {\n None,\n View,\n Edit,\n Add\n}\n","export enum FieldSizeEnum {\n Small,\n Normal,\n Large\n}\n\nexport enum FieldInputTypeEnum {\n Hidden,\n Label,\n Text,\n Textarea,\n Number,\n Currency,\n Switch,\n Radio,\n Datepicker,\n Mask,\n File,\n Custom\n}\n\nexport enum FieldLookupTypeEnum {\n Dropdown,\n Autocomplete,\n Dialog\n}\n\nexport enum FieldManyToManyEditorTypeEnum {\n DialogTableMultiselect\n}\n\nexport enum FieldManyToManyEditorActionEnum {\n Add,\n Delete\n}\n\nexport enum FieldManyEditorTypeEnum {\n DialogEditor\n}\n\nexport enum FieldManyEditorActionEnum {\n View,\n Add,\n Edit,\n Delete\n}\n\nexport enum FieldGroupTypeEnum {\n Fieldset,\n Logical\n}\n","export enum FilterTypeEnum {\n String,\n Number,\n Boolean,\n Date,\n Lookup,\n LookupEnum\n}\n\nexport enum FilterMatchModeEnum {\n StartsWith = 'startsWith',\n Contains = 'contains',\n EndsWith = 'endsWith',\n Equals = 'equals',\n NotEquals = 'notEquals',\n In = 'in',\n LessThan = 'lt',\n GreaterThan = 'gt',\n Between = 'between',\n DateIs = 'dateIs',\n DateIsNot = 'dateIsNot',\n DateBefore = 'dateBefore',\n DateAfter = 'dateAfter'\n}\n\nexport enum FilterLookupTypeEnum {\n Dropdown,\n Autocomplete\n}\n","export enum TablePaginationModeEnum {\n Pagination,\n InfiniteScroll\n}\n\nexport enum TableFilterDisplayEnum {\n Row,\n Menu\n}\n\nexport enum TableSizeEnum {\n Small,\n Normal,\n Large\n}\n","import {Type} from '@angular/core';\nimport {Params, QueryParamsHandling} from '@angular/router';\n\nimport {Confirmation} from 'primeng/api';\nimport {Observable, of} from 'rxjs';\n\nimport {ActionContext, ActionContextValidation} from '../components/action/models';\nimport {DataProvider, EditorDataProvider, IDataProvider, IEditorDataProvider} from '../data-providers';\nimport {APermissions, Permissions} from '../security/model';\nimport {ClassType, IdType} from '../types';\nimport {ActionDataProviderUtil, TypeUtil} from '../utils';\nimport {EditorDescriptor, ModelDescriptor} from './';\nimport {ActionActivationTriggerEnum, ActionEditorDialogSizeEnum, ActionEditorSubmitTypeEnum, ActionLevelEnum, ActionPositionEnum, ActionSizeEnum, ActionTypeEnum} from './types';\n\nexport class ActionDescriptor<T> {\n protected readonly _model: ModelDescriptor<T> | null;\n protected readonly _actionName: string;\n protected readonly _actionNameLong: 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 | null;\n protected _tooltip?: string | null;\n protected _className = '';\n protected _size: ActionSizeEnum = ActionSizeEnum.Normal;\n protected _isStyleText = false;\n protected _isStyleOutlined = false;\n protected _isStyleRaised = false;\n\n protected _dataProvider?: IDataProvider<T, any>;\n protected _runFunction?: (ctx: ActionContext<T, any>) => Observable<T | undefined | null>;\n protected _isVisibleFunction?: (ctx: ActionContextValidation<T, any>) => Observable<boolean>;\n protected _isEnabledFunction?: (ctx: ActionContextValidation<T, any>) => Observable<boolean>;\n\n protected _hasRunConfirmation = false;\n protected _runConfirmationIcon?: string;\n protected _runConfirmationTitle?: string;\n protected _runConfirmationMessage?: string;\n protected _runConfirmationAcceptTitle?: string;\n protected _runConfirmationRejectTitle?: string;\n protected _runConfirmationConfigMapFn?: (ctx: ActionContext<T, any>, confirmConfig: Confirmation) => Confirmation;\n\n protected _hasRunNotificationSuccess = true;\n protected _runNotificationSuccessTitle?: string;\n protected _runNotificationSuccessMessage?: string;\n\n protected _hasRunNotificationError = true;\n protected _runNotificationErrorTitle?: string;\n protected _runNotificationErrorMessage?: string;\n\n protected _afterRunAction?: ActionDescriptor<unknown>;\n protected _onRunErrorAction?: ActionDescriptor<unknown>;\n\n // security\n protected _permissions?: APermissions;\n protected _permissionsRouteType?: string;\n\n constructor(model: ModelDescriptor<T> | null, 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 if (this._parentTypeName || this._model) {\n this._i18nModelActionBaseKey = this._parentTypeName\n ? `${this._parentTypeName}.actions.${this._parentProperty}_${actionName}`\n : `${this._model!.typeName}.actions.${actionName}`;\n }\n let displayName = actionName;\n if (this._model) displayName = `${this._model.typeName}.${displayName}`;\n if (this._parentTypeName) {\n displayName = `${this._parentTypeName}.${this._parentProperty}_${displayName}`;\n }\n this._actionNameLong = displayName;\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 tooltip() {\n return this._tooltip;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get hasRunFunction(): boolean {\n return typeof this._runFunction === 'function';\n }\n\n public get runFunction(): (ctx: ActionContext<T, any>) => Observable<T | undefined | null> {\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 actionNameLong() {\n return this._actionNameLong;\n }\n\n public get className() {\n return this._className;\n }\n\n get isStyleText() {\n return this._isStyleText;\n }\n\n get isStyleOutlined() {\n return this._isStyleOutlined;\n }\n\n get isStyleRaised() {\n return this._isStyleRaised;\n }\n\n public get size() {\n return this._size;\n }\n\n public get isSizeExtraSmall() {\n return this._size === ActionSizeEnum.ExtraSmall;\n }\n\n public get isSizeSmall() {\n return this._size === ActionSizeEnum.Small;\n }\n\n public get isSizeLarge() {\n return this._size === ActionSizeEnum.Large;\n }\n\n public get isSizeExtraLarge() {\n return this._size === ActionSizeEnum.ExtraLarge;\n }\n\n public get hasRunConfirmation() {\n return this._hasRunConfirmation;\n }\n\n public get runConfirmationIcon() {\n return this._runConfirmationIcon;\n }\n\n public get runConfirmationTitle() {\n return this._runConfirmationTitle;\n }\n\n public get runConfirmationMessage() {\n return this._runConfirmationMessage;\n }\n\n public get runConfirmationAcceptTitle() {\n return this._runConfirmationAcceptTitle;\n }\n\n public get runConfirmationRejectTitle() {\n return this._runConfirmationRejectTitle;\n }\n\n public get runConfirmationConfigMapFn() {\n return this._runConfirmationConfigMapFn;\n }\n\n public get hasRunNotificationSuccess() {\n return this._hasRunNotificationSuccess;\n }\n\n public get runNotificationSuccessTitle() {\n return this._runNotificationSuccessTitle;\n }\n\n public get runNotificationSuccessMessage() {\n return this._runNotificationSuccessMessage;\n }\n\n public get hasRunNotificationError() {\n return this._hasRunNotificationError;\n }\n\n public get runNotificationErrorTitle() {\n return this._runNotificationErrorTitle;\n }\n\n public get runNotificationErrorMessage() {\n return this._runNotificationErrorMessage;\n }\n\n public get afterRunAction() {\n return this._afterRunAction;\n }\n\n public get onRunErrorAction() {\n return this._onRunErrorAction;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public get permissionsRouteType() {\n return this._permissionsRouteType;\n }\n\n public withDataProvider(dataProvider: IDataProvider<T, any>): this {\n this._dataProvider = dataProvider;\n return this;\n }\n\n public withServiceType<S>(serviceType: Type<S>): this {\n if (!this._model) {\n throw new Error(`Cannot set data provider if no model type is provided for action ${this._actionName}`);\n }\n this._dataProvider = new DataProvider(this._model.type, serviceType);\n return this;\n }\n\n public withRunFunction<S>(fn: (ctx: ActionContext<T, S>) => Observable<T | undefined | null>): this {\n this._runFunction = fn;\n return this;\n }\n\n public withIsVisibleFunction<S>(fn: (ctx: ActionContextValidation<T, S>) => Observable<boolean>): this {\n this._isVisibleFunction = fn;\n return this;\n }\n\n public withIsEnabledFunction<S>(fn: (ctx: ActionContextValidation<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 | null): this {\n this._icon = icon;\n return this;\n }\n\n public withTooltip(tooltip: string | null): this {\n this._title = tooltip;\n return this;\n }\n\n public withClassName(className: string): this {\n this._className = className;\n return this;\n }\n\n public withSize(size: ActionSizeEnum = ActionSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n public withStyle(styleText = false, styleOutlined = false, styleRaised = false): this {\n this._isStyleText = styleText;\n this._isStyleOutlined = styleOutlined;\n this._isStyleRaised = styleRaised;\n return this;\n }\n\n public withPosition(position: ActionPositionEnum): this {\n this._position = position;\n return this;\n }\n\n /**\n * Add a confirmation dialogue to the action\n * @param icon the icon to display on the confirmation dialogue\n * @param title the title of the confirmation dialogue\n * @param message the message on the confirmation dialogue\n * @param acceptTitle the title of the accepting button\n * @param rejectTitle the title of the rejecting button\n * @param runConfirmationConfigMapFn function used to generate the confirmation dialogue. **WARNING** changing the *accept* and *reject* methods of the *confirmConfig* parameter\n * may lead to unexpected behaviour\n */\n public withRunConfirmation(\n icon = 'pi pi-exclamation-triangle',\n title?: string,\n message?: string,\n acceptTitle?: string,\n rejectTitle?: string,\n runConfirmationConfigMapFn?: (ctx: ActionContext<T, any>, confirmConfig: Confirmation) => Confirmation\n ): 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 this._runConfirmationConfigMapFn = runConfirmationConfigMapFn;\n return this;\n }\n\n public withRunNotificationSuccess(title?: string, message?: string, hasNotification = true): this {\n this._hasRunNotificationSuccess = hasNotification;\n this._runNotificationSuccessTitle = title;\n this._runNotificationSuccessMessage = message;\n return this;\n }\n\n public withRunNotificationError(title?: string, message?: string, hasNotification = true): this {\n this._hasRunNotificationError = hasNotification;\n this._runNotificationErrorTitle = title;\n this._runNotificationErrorMessage = message;\n return this;\n }\n\n public withAfterRunAction<RT>(action: ActionDescriptor<RT>): this {\n this._afterRunAction = action as ActionDescriptor<unknown>;\n return this;\n }\n\n public withOnRunErrorAction<RT>(action: ActionDescriptor<RT>): this {\n this._onRunErrorAction = action as ActionDescriptor<unknown>;\n return this;\n }\n\n public withPermissions(permissions: APermissions): this {\n if (this._permissionsRouteType) {\n console.warn(`Permissions set on action ${this._actionNameLong} with route type '${this._permissionsRouteType}' will be omitted in route guard validation.`);\n }\n this._permissions = permissions;\n return this;\n }\n\n public withPermissionsRouteType(permissionsRouteType: string): this {\n this._permissionsRouteType = permissionsRouteType;\n return this;\n }\n}\n\nexport class ActionSimpleDescriptor<T> extends ActionDescriptor<T> {\n constructor(actionName: string, modelType?: ClassType<T>, idProperty?: string, titleProperty?: string) {\n const model = modelType ? new ModelDescriptor<T>(modelType, idProperty, titleProperty) : null;\n super(model, actionName);\n }\n}\n\nexport class ActionEditorDescriptor<T> extends ActionDescriptor<T> {\n private readonly _editorDescriptor: EditorDescriptor<T>;\n\n protected _editorActions: ActionDescriptor<T>[] = [];\n protected _editorTitle?: string | null = undefined;\n\n protected _hasFetchNotificationSuccess = false;\n protected _fetchNotificationSuccessTitle?: string;\n protected _fetchNotificationSuccessMessage?: string;\n\n protected _dialogSize: ActionEditorDialogSizeEnum = ActionEditorDialogSizeEnum.Normal;\n protected _dialogClassName?: string;\n\n protected override _dataProvider?: IEditorDataProvider<T, any>;\n protected _fetchFunction?: (ctx: ActionContext<T, any>) => Observable<T>;\n protected _submitFunction?: (ctx: ActionContext<T, any>) => Observable<T>;\n\n protected _editorComponent?: Type<any>;\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 this._editorActions.push(new ActionEditorSubmitDescriptor(this), new ActionEditorSubmitDescriptor(this, ActionEditorSubmitTypeEnum.Cancel));\n }\n\n public get editorTitle() {\n return this._editorTitle;\n }\n\n public get editorDescriptor() {\n return this._editorDescriptor;\n }\n\n public get dialogSize() {\n return this._dialogSize;\n }\n\n public get dialogClassName() {\n return this._dialogClassName;\n }\n\n public get hasFetchNotificationSuccess() {\n return this._hasFetchNotificationSuccess;\n }\n\n public get fetchNotificationSuccessTitle() {\n return this._fetchNotificationSuccessTitle;\n }\n\n public get fetchNotificationSuccessMessage() {\n return this._fetchNotificationSuccessMessage;\n }\n\n public override get dataProvider() {\n return this._dataProvider;\n }\n\n public override get runFunction(): (ctx: ActionContext<T, unknown>) => 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: ActionContext<T, unknown>) => Observable<T> {\n if (!this._fetchFunction) {\n return ctx => {\n console.debug(`Fetch function is not provided for function ${this._actionNameLong}, using default and returning context item`, ctx.parameters?.item);\n return of(ctx.parameters?.item ? ctx.parameters.item : ({} as T));\n };\n }\n return this._fetchFunction;\n }\n\n public get submitFunction() {\n return this._submitFunction;\n }\n\n public get editorActions() {\n return this._editorActions;\n }\n\n public get editorComponent() {\n return this._editorComponent;\n }\n\n public withEditorTitle(title: string | null): this {\n this._editorTitle = title;\n return this;\n }\n\n public override withDataProvider(dataProvider: IEditorDataProvider<T, any>): this {\n this._dataProvider = dataProvider;\n return this;\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n if (!this._model) {\n throw new Error(`Cannot set data provider if no model type is provided for action ${this._actionName}`);\n }\n this._dataProvider = new EditorDataProvider(this._model.type, serviceType);\n return this;\n }\n\n public withDialogSize(size = ActionEditorDialogSizeEnum.Normal): this {\n this._dialogSize = size;\n return this;\n }\n\n public withDialogClassName(className: string): this {\n this._dialogClassName = className;\n return this;\n }\n\n public override withRunFunction<S>(fn: (ctx: ActionContext<T, S>) => Observable<T>): this {\n return this.withSubmitFunction(fn as (ctx: ActionContext<T, S>) => Observable<T>);\n }\n\n public withFetchFunction<S>(fn: (ctx: ActionContext<T, S>) => Observable<T>): this {\n this._fetchFunction = fn;\n return this;\n }\n\n public withSubmitFunction<S>(fn: (ctx: ActionContext<T, S>) => Observable<T>): this {\n this._submitFunction = fn;\n return this;\n }\n\n public withFetchNotificationError(title?: string, message?: string, hasNotification = true): this {\n this._hasFetchNotificationSuccess = hasNotification;\n this._fetchNotificationSuccessTitle = title;\n this._fetchNotificationSuccessMessage = message;\n return this;\n }\n\n public withEditorAction(action: ActionDescriptor<T>): this {\n this._editorActions.push(action);\n return this;\n }\n\n public withEditorActions(actions: ActionDescriptor<T>[]): this {\n this._editorActions = actions;\n return this;\n }\n\n public withEditorComponent(editorComponent: Type<any>): this {\n this._editorComponent = editorComponent;\n return this;\n }\n}\n\nexport class ActionEditorSubmitDescriptor<T> extends ActionDescriptor<T> {\n private readonly _editorAction: ActionEditorDescriptor<T>;\n private readonly _submitType: ActionEditorSubmitTypeEnum;\n\n constructor(editorAction: ActionEditorDescriptor<T>, submitType = ActionEditorSubmitTypeEnum.Submit) {\n super(editorAction.model, submitType === ActionEditorSubmitTypeEnum.Submit ? 'submit' : 'cancel');\n this._editorAction = editorAction;\n this._submitType = submitType;\n this._position = ActionPositionEnum.FooterRight;\n this._isStyleText = true;\n }\n\n public get submitType() {\n return this._submitType;\n }\n}\n\nexport class ActionEditorDetailsDescriptor<T> extends ActionEditorDescriptor<T> {\n public static readonly ACTION_NAME = 'details';\n\n constructor(editorDescriptor: EditorDescriptor<T>) {\n super(editorDescriptor, ActionEditorDetailsDescriptor.ACTION_NAME);\n this.withPosition(ActionPositionEnum.RowClick);\n this.withRouteTrigger(':itemId');\n this.withFetchFunction(ActionDataProviderUtil.runFetchOrFail);\n this.withEditorActions([new ActionEditorSubmitDescriptor(this, ActionEditorSubmitTypeEnum.Cancel)]);\n this.withPermissionsRouteType(Permissions.ActionTypes.DETAILS);\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n return this.withServiceFetchFunction(serviceType);\n }\n\n public withServiceFetchFunction<S>(serviceType: Type<S>, fetchFn?: (id: IdType, service?: S) => Observable<T>): this {\n const dataProvider = new EditorDataProvider(this._model!.type, serviceType);\n if (fetchFn) {\n dataProvider.withFetch(fetchFn);\n }\n this._dataProvider = dataProvider;\n return this;\n }\n}\n\nexport class ActionEditorAddDescriptor<T> extends ActionEditorDescriptor<T> {\n public static readonly ACTION_NAME = 'add';\n\n constructor(editorDescriptor: EditorDescriptor<T>) {\n super(editorDescriptor, ActionEditorAddDescriptor.ACTION_NAME);\n this.withPosition(ActionPositionEnum.ToolbarLeft);\n this.withRouteTrigger('add');\n this.withSubmitFunction(ActionDataProviderUtil.runCreateOrFail);\n this.withLevel(ActionLevelEnum.Success);\n this.withIcon('pi pi-plus');\n this.withPermissionsRouteType(Permissions.ActionTypes.ADD);\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n return this.withServiceSubmitFunction(serviceType);\n }\n\n public withServiceSubmitFunction<S>(serviceType: Type<S>, createFn?: (item?: T, service?: S) => Observable<T>, fetchFn?: (id: IdType, service?: S) => Observable<T>): this {\n const dataProvider = new EditorDataProvider(this._model!.type, serviceType);\n if (createFn) {\n dataProvider.withCreate(createFn);\n }\n if (fetchFn) {\n dataProvider.withFetch(fetchFn);\n }\n this._dataProvider = dataProvider;\n return this;\n }\n}\n\nexport class ActionEditorEditDescriptor<T> extends ActionEditorDescriptor<T> {\n public static readonly ACTION_NAME = 'edit';\n\n constructor(editorDescriptor: EditorDescriptor<T>) {\n super(editorDescriptor, ActionEditorEditDescriptor.ACTION_NAME);\n this.withPosition(ActionPositionEnum.RowInline);\n this.withTitle(null);\n this.withRouteTrigger(':itemId/edit');\n this.withFetchFunction(ActionDataProviderUtil.runFetchOrFail);\n this.withSubmitFunction(ActionDataProviderUtil.runUpdateOrFail);\n this.withIcon('pi pi-pencil');\n this.withPermissionsRouteType(Permissions.ActionTypes.EDIT);\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n return this.withServiceSubmitFunction(serviceType);\n }\n\n public withServiceSubmitFunction<S>(\n serviceType: Type<S>,\n updateFn?: (id: IdType, item?: T, service?: S) => Observable<T>,\n fetchFn?: (id: IdType, service?: S) => Observable<T>\n ): this {\n const dataProvider = new EditorDataProvider(this._model!.type, serviceType);\n if (updateFn) {\n dataProvider.withUpdate(updateFn);\n }\n if (fetchFn) {\n dataProvider.withFetch(fetchFn);\n }\n this._dataProvider = dataProvider;\n return this;\n }\n}\n\nexport class ActionDeleteDescriptor<T> extends ActionDescriptor<T> {\n public static readonly ACTION_NAME = 'delete';\n\n constructor(model: ModelDescriptor<T>) {\n super(model, ActionDeleteDescriptor.ACTION_NAME);\n this.withPosition(ActionPositionEnum.RowInline);\n this.withTitle(null);\n this.withRunFunction(ActionDataProviderUtil.runDeleteOrFail);\n this.withLevel(ActionLevelEnum.Danger);\n this.withIcon('pi pi-trash');\n this.withRunConfirmation(undefined);\n this.withPermissionsRouteType(Permissions.ActionTypes.DELETE);\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n return this.withServiceDeleteFunction(serviceType);\n }\n\n public withServiceDeleteFunction<S>(serviceType: Type<S>, deleteFn?: (id: IdType, item?: T, service?: S) => Observable<T>): this {\n const dataProvider = new EditorDataProvider(this._model!.type, serviceType);\n if (deleteFn) {\n dataProvider.withDelete(deleteFn);\n }\n this._dataProvider = dataProvider;\n return this;\n }\n}\n\nexport class ActionLinkDescriptor<T> extends ActionDescriptor<T> {\n private _url = '';\n private _pathSegments: string[] = [];\n private _queryParams?: Params;\n private _queryParamsHandling?: QueryParamsHandling;\n private _replaceUrl = false;\n private _target = '_self';\n private _isStyleLink = false;\n\n constructor(model: ModelDescriptor<T> | null = null, actionName = 'link') {\n super(model, actionName);\n }\n\n public get url(): string {\n return this._url;\n }\n\n public get pathSegments(): string[] {\n return this._pathSegments;\n }\n\n public get queryParams(): Params | undefined {\n return this._queryParams;\n }\n\n public get queryParamsHandling(): QueryParamsHandling | undefined {\n return this._queryParamsHandling;\n }\n\n public get replaceUrl(): boolean {\n return this._replaceUrl;\n }\n\n public get target(): string {\n return this._target;\n }\n\n public get isStyleLink(): boolean {\n return this._isStyleLink;\n }\n\n public withHref(url: string): this {\n this._url = url;\n return this;\n }\n\n public withRouterLink(...pathSegments: string[]): this {\n this._pathSegments = pathSegments;\n return this;\n }\n\n public withQueryParams(queryParams: Params, queryParamsHandling?: QueryParamsHandling): this {\n this._queryParams = queryParams;\n this._queryParamsHandling = queryParamsHandling;\n return this;\n }\n\n public withReplaceUrl(replaceUrl = false): this {\n this._replaceUrl = replaceUrl;\n return this;\n }\n\n public withTarget(target: '_self' | '_blank' = '_self'): this {\n this._target = target;\n return this;\n }\n\n public withStyleLink(isStyleLink: boolean): this {\n this._isStyleLink = isStyleLink;\n return this;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, of} from 'rxjs';\n\nimport {MediusQueryParam} from '../api/models';\nimport {ILookupDataProvider, LookupDataProvider} from '../data-providers';\nimport {EnumValue} from '../models';\nimport {ClassType, EnumConstantType, EnumType} from '../types';\nimport {EnumUtil, ModelUtil, TypeUtil} from '../utils';\nimport {ILookupDescriptor} from './interfaces';\nimport {FilterLookupTypeEnum, FilterMatchModeEnum, FilterTypeEnum} from './types';\n\nexport class FilterDescriptor<T> {\n protected readonly _property: string;\n protected _filterType = FilterTypeEnum.String;\n protected _filterProperty?: string;\n private _hasDefaultValue = false;\n protected _defaultFilterMatchMode = FilterMatchModeEnum.Equals;\n protected _defaultValue?: string;\n private _defaultValueTo?: string;\n\n protected _matchModes: string[] | null = null;\n\n // number filter specific properties\n protected _numberMinFractionDigits?: number;\n protected _numberMaxFractionDigits?: number;\n protected _numberUseGrouping = true;\n\n // date filter specific properties\n protected _datePickerFormat?: string;\n protected _datePickerShowTime = false;\n\n protected _placeholder?: string;\n protected _className = '';\n protected _columnClassName = '';\n protected _columnWidth: number | null = null;\n protected _columnMinWidth: number | null = null;\n\n constructor(property: string) {\n this._property = property;\n }\n\n public get filterType() {\n return this._filterType;\n }\n\n public get hasDefaultValue() {\n return this._hasDefaultValue;\n }\n\n public get defaultValue() {\n return this._defaultValue;\n }\n\n public get defaultValueTo() {\n return this._defaultValueTo;\n }\n\n public get defaultFilterMatchMode() {\n return this._defaultFilterMatchMode;\n }\n\n public get filterProperty() {\n return this._filterProperty;\n }\n\n public get matchModes() {\n return this._matchModes;\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 numberUseGrouping() {\n return this._numberUseGrouping;\n }\n\n public get datePickerFormat() {\n return this._datePickerFormat;\n }\n\n public get datePickerShowTime() {\n return this._datePickerShowTime;\n }\n\n public get placeholder() {\n return this._placeholder;\n }\n\n public get className() {\n return this._className;\n }\n\n public get columnClassName() {\n return this._columnClassName;\n }\n\n public get columnWidth() {\n return this._columnWidth;\n }\n\n public get columnMinWidth() {\n return this._columnMinWidth;\n }\n\n public get property() {\n return this._property;\n }\n\n public asFilterType(filterType: FilterTypeEnum) {\n this._filterType = filterType;\n return this;\n }\n\n /**\n * Sets different filter property name instead of default property. Use this if API requires different property provided to perform correct filter.\n * @param filterProperty\n */\n public withFilterProperty(filterProperty: string): this {\n this._filterProperty = filterProperty;\n return this;\n }\n\n public withDefaultFilter(filterValue: string, filterValueTo?: string, filterMatchMode = FilterMatchModeEnum.Equals): this {\n this._hasDefaultValue = true;\n this._defaultValue = filterValue;\n this._defaultValueTo = filterValueTo;\n if (filterMatchMode) {\n this._defaultFilterMatchMode = filterMatchMode;\n }\n return this;\n }\n\n public withNumberFractions(min?: number, max?: number) {\n this._numberMinFractionDigits = min;\n this._numberMaxFractionDigits = max;\n return this;\n }\n\n public withNumberGrouping(useGrouping = true): this {\n this._numberUseGrouping = useGrouping;\n return this;\n }\n\n public withDateFormat(format?: string, showTime = false): this {\n this._datePickerFormat = format;\n this._datePickerShowTime = showTime;\n return this;\n }\n\n public withPlaceholder(placeholder: string): this {\n this._placeholder = placeholder;\n return this;\n }\n\n public withClassName(className: string): this {\n this._className = className;\n return this;\n }\n\n public withColumnClassName(className: string): this {\n this._columnClassName = className;\n return this;\n }\n\n public withColumnWidth(width?: number, minWidth?: number): this {\n this._columnWidth = width ?? null;\n this._columnMinWidth = minWidth ?? null;\n return this;\n }\n\n public withMatchModes(matchModes: Array<FilterMatchModeEnum>): this {\n this._matchModes = matchModes;\n return this;\n }\n\n public copy(): FilterDescriptor<T> {\n const descriptor = new FilterDescriptor<T>(this._property);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n\n protected copyFieldsTo(descriptor: FilterDescriptor<T>) {\n descriptor._filterType = this._filterType;\n descriptor._filterProperty = this._filterProperty;\n descriptor._hasDefaultValue = this._hasDefaultValue;\n descriptor._defaultValue = this._defaultValue;\n descriptor._defaultValueTo = this._defaultValueTo;\n descriptor._defaultFilterMatchMode = this._defaultFilterMatchMode;\n descriptor._numberMinFractionDigits = this._numberMinFractionDigits;\n descriptor._numberMaxFractionDigits = this._numberMaxFractionDigits;\n descriptor._numberUseGrouping = this._numberUseGrouping;\n descriptor._datePickerFormat = this._datePickerFormat;\n descriptor._datePickerShowTime = this._datePickerShowTime;\n descriptor._placeholder = this._placeholder;\n descriptor._className = this._className;\n descriptor._columnWidth = this._columnWidth;\n descriptor._columnMinWidth = this._columnMinWidth;\n descriptor._columnClassName = this._columnClassName;\n }\n}\n\nexport class FilterLookupDescriptor<T> extends FilterDescriptor<T> implements ILookupDescriptor<T> {\n protected readonly _modelType: ClassType<T> | null = null;\n protected _lookupType?: FilterLookupTypeEnum = FilterLookupTypeEnum.Dropdown;\n\n protected _dataProvider?: ILookupDataProvider<T, any>;\n protected _itemsLabelProperty?: string;\n protected _itemsLabelTranslate = false;\n protected _itemsValueProperty?: string;\n protected _dataKeyProperty?: string;\n protected _multiselect = false;\n\n protected _dropdownClassName = 'mng-filter-lookup-dropdown';\n\n protected _autocompleteOpenOnFocus = false;\n protected _autocompleteInlineSearch = false;\n\n constructor(property: string, modelType: ClassType<T> | null) {\n super(property);\n this._modelType = modelType;\n this._filterType = FilterTypeEnum.Lookup;\n ModelUtil.trySetLookupItemsProperties(this);\n }\n\n public get lookupType() {\n return this._lookupType;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get itemsLabelProperty() {\n return this._itemsLabelProperty;\n }\n\n public get itemsLabelTranslate() {\n return this._itemsLabelTranslate;\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 multiselect() {\n return this._multiselect;\n }\n\n public get autocompleteOpenOnFocus() {\n return this._autocompleteOpenOnFocus;\n }\n\n public get autocompleteInlineSearch() {\n return this._autocompleteInlineSearch;\n }\n\n public get dropdownClassName() {\n return this._dropdownClassName;\n }\n\n public get modelType() {\n return this._modelType;\n }\n\n public withItemsLabelProperty(itemsLabelProperty: string, translate = false): this {\n this._itemsLabelProperty = itemsLabelProperty;\n this._itemsLabelTranslate = translate;\n return this;\n }\n\n public withItemsValueProperty(itemsValueProperty: string): this {\n this._itemsValueProperty = itemsValueProperty;\n this._dataKeyProperty = itemsValueProperty;\n return this;\n }\n\n public withDataKeyProperty(dataKeyProperty: string): this {\n this._dataKeyProperty = dataKeyProperty;\n this._itemsValueProperty = dataKeyProperty;\n return this;\n }\n\n public withLookup<S>(lookup: (queryParam?: MediusQueryParam, 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 withMultiselect(multiselect = true) {\n this._multiselect = multiselect;\n this._defaultFilterMatchMode = FilterMatchModeEnum.In;\n this.withMatchModes([FilterMatchModeEnum.In]);\n return this;\n }\n\n public withDropdownClassName(dropdownClassName: string): this {\n this._dropdownClassName = dropdownClassName;\n return this;\n }\n\n public asAutocomplete(openOnFocus = false, inlineSearch = false): this {\n this._lookupType = FilterLookupTypeEnum.Autocomplete;\n this._autocompleteOpenOnFocus = openOnFocus;\n this._autocompleteInlineSearch = inlineSearch;\n return this;\n }\n\n public override copy(): FilterLookupDescriptor<T> {\n const descriptor = new FilterLookupDescriptor<T>(this._property, this._modelType);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n\n protected override copyFieldsTo(filter: FilterLookupDescriptor<T>) {\n super.copyFieldsTo(filter);\n filter._dataProvider = this._dataProvider;\n filter._lookupType = this._lookupType;\n filter._itemsLabelProperty = this._itemsLabelProperty;\n filter._itemsLabelTranslate = this._itemsLabelTranslate;\n filter._itemsValueProperty = this._itemsValueProperty;\n filter._dataKeyProperty = this._dataKeyProperty;\n filter._multiselect = this._multiselect;\n filter._dropdownClassName = this._dropdownClassName;\n filter._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;\n filter._autocompleteInlineSearch = this._autocompleteInlineSearch;\n }\n}\n\nexport class FilterLookupEnumDescriptor extends FilterLookupDescriptor<EnumValue<string | number>> {\n private readonly _enumType: EnumType;\n\n constructor(property: string, enumType: EnumType, options?: Array<EnumConstantType>, nameAsValue = false, optionsTitlePath?: string | null) {\n super(property, null);\n this._enumType = enumType;\n if (typeof optionsTitlePath === 'undefined') {\n optionsTitlePath = TypeUtil.findEnumName(enumType);\n }\n const optionEnumValues = Array.isArray(options)\n ? EnumUtil.fromValuesAsEnumValueArray(enumType, options, nameAsValue, optionsTitlePath ?? undefined)\n : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath ?? undefined);\n const dataProvider = new LookupDataProvider<EnumValue<string | number>, any>(null).withLookup(() => of(optionEnumValues));\n this.withLookupDataProvider(dataProvider);\n this.withItemsLabelProperty('title', optionsTitlePath !== null);\n this.withItemsValueProperty('value');\n }\n\n public get enumType() {\n return this._enumType;\n }\n\n public override asAutocomplete(openOnFocus = true): this {\n super.asAutocomplete(openOnFocus, true);\n return this;\n }\n\n public override copy(): FilterLookupEnumDescriptor {\n const field = new FilterLookupEnumDescriptor(this._property, this._enumType, []);\n this.copyFieldsTo(field);\n return field;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {IColumnValueComponent} from '../models';\nimport {ClassType, EnumConstantType, EnumType} from '../types';\nimport {ModelUtil, TypeUtil} from '../utils';\nimport {FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor} from './filter.descriptor';\nimport {TableDescriptor} from './table.descriptor';\nimport {ColumnTypeEnum, FilterTypeEnum} from './types';\n\nexport class ColumnDescriptor<T, TT> {\n private readonly _table: TableDescriptor<TT>;\n private readonly _property: string;\n private _columnType: ColumnTypeEnum = ColumnTypeEnum.String;\n private _title?: string;\n private _jsonPath?: string;\n private _isSortEnabled = false;\n private _filterDescriptor?: FilterDescriptor<T>;\n private _displayFormat?: string;\n private _locale?: string;\n\n // styling\n private _headerClassName = '';\n private _className = '';\n private _width: number | null = null;\n private _minWidth: number | null = null;\n private _maxWidth: number | null = null;\n\n // enum specifics\n private _enumType?: EnumType;\n private _enumTitlePath?: string | null;\n private _enumNameAsValue = false;\n\n // boolean specifics\n private _booleanAsIcon = false;\n private _booleanYes?: string;\n private _booleanNo?: string;\n\n // model specifics\n private _objectModelType?: ClassType<unknown>;\n private _objectTitleProperty?: string;\n\n // currency specifics\n private _currencyCode?: string;\n private _currencyFromProperty?: string;\n private _currencyDisplay?: 'symbol' | 'code' | 'name';\n\n // custom specifics\n private _customComponentType?: Type<IColumnValueComponent<TT>>;\n\n // helpers\n private _hasCopyToClipboard = false;\n\n constructor(table: TableDescriptor<TT>, property: string) {\n this._table = table;\n this._property = property;\n }\n\n public get columnType() {\n return this._columnType;\n }\n\n public get title() {\n return this._title;\n }\n\n public get jsonPath() {\n return this._jsonPath;\n }\n\n public get isSortEnabled() {\n return this._isSortEnabled;\n }\n\n public get filterDescriptor() {\n return this._filterDescriptor;\n }\n\n public get displayFormat() {\n return this._displayFormat;\n }\n\n public get table() {\n return this._table;\n }\n\n public get property() {\n return this._property;\n }\n\n public get headerClassName() {\n return this._headerClassName;\n }\n\n public get className() {\n return this._className;\n }\n\n public get width() {\n return this._width;\n }\n\n public get minWidth() {\n return this._minWidth;\n }\n\n public get maxWidth() {\n return this._maxWidth;\n }\n\n public get enumType() {\n return this._enumType;\n }\n\n public get enumTitlePath() {\n return this._enumTitlePath;\n }\n\n public get enumNameAsValue() {\n return this._enumNameAsValue;\n }\n\n public get booleanAsIcon() {\n return this._booleanAsIcon;\n }\n\n public get booleanYes() {\n return this._booleanYes;\n }\n\n public get booleanNo() {\n return this._booleanNo;\n }\n\n public get objectModelType() {\n return this._objectModelType;\n }\n\n public get objectTitleProperty() {\n return this._objectTitleProperty;\n }\n\n public get customComponentType() {\n return this._customComponentType;\n }\n\n public get locale() {\n return this._locale;\n }\n\n public get currencyCode() {\n return this._currencyCode;\n }\n\n public get currencyDisplay() {\n return this._currencyDisplay;\n }\n\n public get currencyFromProperty() {\n return this._currencyFromProperty;\n }\n\n public get hasCopyToClipboard() {\n return this._hasCopyToClipboard;\n }\n\n public asType(type: ColumnTypeEnum = ColumnTypeEnum.String): this {\n this._columnType = type;\n return this;\n }\n\n public asNumber(displayFormat = '1.0-0', locale?: string): this {\n this._columnType = ColumnTypeEnum.Number;\n this._displayFormat = displayFormat;\n this._locale = locale ?? this._locale;\n return this;\n }\n\n public asCurrency(currencyCode?: string, currencyFromProperty?: string, currencyDisplay?: 'symbol' | 'code' | 'name', displayFormat = '1.2-2', locale?: string): this {\n this._columnType = ColumnTypeEnum.Currency;\n this._currencyCode = currencyCode ?? this._currencyCode;\n this._currencyFromProperty = currencyFromProperty ?? this._currencyFromProperty;\n this._currencyDisplay = currencyDisplay ?? this._currencyDisplay;\n this._displayFormat = displayFormat ?? displayFormat;\n this._locale = locale ?? this._locale;\n return this;\n }\n\n public asDate(displayFormat = 'dd.MM.yyyy'): this {\n this._columnType = ColumnTypeEnum.Date;\n this._displayFormat = displayFormat;\n return this;\n }\n\n public asBoolean(yes?: string, no?: string, asIcon = false): this {\n this._columnType = ColumnTypeEnum.Boolean;\n this._booleanAsIcon = asIcon;\n this._booleanYes = yes;\n this._booleanNo = no;\n return this;\n }\n\n public asEnum(enumType: EnumType, nameAsValue = false, titlePath?: string | null): this {\n this._columnType = ColumnTypeEnum.Enum;\n this._enumType = enumType;\n this._enumNameAsValue = nameAsValue;\n if (typeof titlePath === 'undefined') {\n titlePath = TypeUtil.findEnumName(enumType);\n }\n this._enumTitlePath = titlePath;\n return this;\n }\n\n public asCustomComponent(customComponentType: Type<IColumnValueComponent<TT>>): this {\n this._columnType = ColumnTypeEnum.Custom;\n this._customComponentType = customComponentType;\n return this;\n }\n\n public withClassName(className?: string, headerClassName?: string): this {\n this._className = className ?? '';\n this._headerClassName = headerClassName ?? '';\n return this;\n }\n\n public withWidth(width?: number, minWidth?: number, maxWidth?: number): this {\n this._width = width ?? null;\n this._minWidth = minWidth ?? null;\n this._maxWidth = maxWidth ?? null;\n return this;\n }\n\n public withObjectProperty<MT>(modelType: ClassType<MT>, titleProperty?: string): this {\n this._objectModelType = modelType;\n if (!titleProperty) {\n this._objectTitleProperty = ModelUtil.findTitleAttribute(modelType) ?? undefined;\n } else {\n this._objectTitleProperty = titleProperty;\n }\n return this;\n }\n\n public withTitle(title: string): this {\n this._title = title;\n return this;\n }\n\n public withJsonPath(path: string): this {\n this._jsonPath = path;\n return this;\n }\n\n public withFilter(forceSimple = false): FilterDescriptor<T> {\n this._filterDescriptor = new FilterDescriptor<any>(this._property);\n let filterType: FilterTypeEnum;\n\n if (!forceSimple && this._objectModelType) {\n return this.withFilterLookup();\n }\n switch (this._columnType) {\n case ColumnTypeEnum.Number:\n filterType = FilterTypeEnum.Number;\n break;\n case ColumnTypeEnum.Boolean:\n filterType = FilterTypeEnum.Boolean;\n break;\n case ColumnTypeEnum.Date:\n filterType = FilterTypeEnum.Date;\n break;\n case ColumnTypeEnum.Enum:\n if (!forceSimple) {\n return this.withFilterLookupEnum();\n } else {\n filterType = FilterTypeEnum.String;\n break;\n }\n case ColumnTypeEnum.String:\n case ColumnTypeEnum.Custom:\n default:\n filterType = FilterTypeEnum.String;\n break;\n }\n this._filterDescriptor.asFilterType(filterType);\n return this._filterDescriptor;\n }\n\n public withFilterLookup(): FilterLookupDescriptor<unknown> {\n const filterDescriptor = new FilterLookupDescriptor<unknown>(this._property, this._objectModelType ?? null);\n this._filterDescriptor = filterDescriptor;\n return filterDescriptor;\n }\n\n public withFilterLookupEnum(options?: Array<EnumConstantType>): FilterLookupEnumDescriptor {\n if (this._columnType !== ColumnTypeEnum.Enum || !this._enumType) {\n throw new Error(`Column ${this._property} is not of type enum or enum type is undefined.`);\n }\n const filterDescriptor = new FilterLookupEnumDescriptor(this._property, this._enumType, options, this._enumNameAsValue, this._enumTitlePath);\n this._filterDescriptor = filterDescriptor;\n return filterDescriptor;\n }\n\n public withSort(isEnabled = true): this {\n this._isSortEnabled = isEnabled;\n return this;\n }\n\n public withDefaultSort(asc = true): this {\n this._table.withDefaultSort(this._property, asc);\n return this;\n }\n\n public withCopyToClipboard(hasCopyToCliboard = true): this {\n this._hasCopyToClipboard = hasCopyToCliboard;\n return this;\n }\n\n public copy(): ColumnDescriptor<T, TT> {\n const descriptor = new ColumnDescriptor<T, TT>(this._table, this._property);\n descriptor._jsonPath = this._jsonPath;\n descriptor._title = this._title;\n descriptor._isSortEnabled = this._isSortEnabled;\n descriptor._columnType = this._columnType;\n descriptor._filterDescriptor = this._filterDescriptor?.copy();\n descriptor._enumType = this._enumType;\n descriptor._enumTitlePath = this._enumTitlePath;\n descriptor._enumNameAsValue = this._enumNameAsValue;\n descriptor._booleanAsIcon = this._booleanAsIcon;\n descriptor._booleanYes = this._booleanYes;\n descriptor._booleanNo = this._booleanNo;\n descriptor._objectModelType = this._objectModelType;\n descriptor._objectTitleProperty = this._objectTitleProperty;\n descriptor._locale = this._locale;\n descriptor._currencyCode = this._currencyCode;\n descriptor._currencyDisplay = this._currencyDisplay;\n descriptor._currencyFromProperty = this._currencyFromProperty;\n descriptor._displayFormat = this._displayFormat;\n descriptor._headerClassName = this._headerClassName;\n descriptor._className = this._className;\n descriptor._width = this._width;\n descriptor._minWidth = this._minWidth;\n descriptor._maxWidth = this._maxWidth;\n descriptor._hasCopyToClipboard = this._hasCopyToClipboard;\n return descriptor;\n }\n}\n","import {ClassType, EnumConstantType, EnumType, MngFieldValidationMessage, MngFieldValidator} from '../types';\nimport {I18nUtils} from '../utils';\nimport {\n AFieldDescriptor,\n FieldGroupDescriptor,\n FieldInputDescriptor,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor,\n FieldTabGroupDescriptor,\n ModelDescriptor,\n TableDescriptor,\n TableviewDescriptor\n} from './';\nimport {TableviewTypeEnum} from './types';\n\nexport class EditorDescriptor<T> {\n public static readonly defaultGroupName = '_default';\n\n private readonly _model: ModelDescriptor<T>;\n private readonly _tableviewEditorType: TableviewTypeEnum;\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 = false;\n\n constructor(modelType: ClassType<T>, idProperty?: string, titleProperty?: string, tableviewEditorType = TableviewTypeEnum.None) {\n this._model = new ModelDescriptor<T>(modelType, idProperty, titleProperty);\n this._tableviewEditorType = tableviewEditorType;\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 fields() {\n return this._fields;\n }\n\n public get tableviewEditorType() {\n return this._disabled;\n }\n\n public get disabled() {\n return this._disabled;\n }\n\n public createTabGroup(name: string, title?: string): FieldTabGroupDescriptor<T> {\n const tabGroup = new FieldTabGroupDescriptor<T>(this, name);\n if (!title) {\n title = I18nUtils.Type.getTabKey(this.model.typeName, name);\n }\n tabGroup.withTitle(title);\n this.createTabGroupDescriptor(tabGroup);\n return tabGroup;\n }\n\n public createFieldGroup(name: string, title?: string | null): FieldGroupDescriptor<T> {\n const fieldGroup = new FieldGroupDescriptor<T>(this, name);\n if (title !== null) {\n if (!title) {\n title = I18nUtils.Type.getGroupKey(this.model.typeName, name);\n }\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(\n property: string,\n enumType: EnumType,\n options?: Array<EnumConstantType>,\n nameAsValue = false,\n optionsTitlePath?: string | null\n ): FieldLookupEnumDescriptor<T> {\n const field = new FieldLookupEnumDescriptor(this, property, enumType, options, nameAsValue, optionsTitlePath);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyEditor<FT>(property: string, tableviewDescriptor: TableviewDescriptor<FT>): FieldManyEditorDescriptor<FT, T> {\n const field = new FieldManyEditorDescriptor(this, property, tableviewDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyToManyEditor<FT>(\n property: string,\n mainTableDescriptor: TableDescriptor<FT>,\n lookupTableDescriptor: TableDescriptor<FT>\n ): FieldManyToManyEditorDescriptor<FT, T> {\n const field = new FieldManyToManyEditorDescriptor(this, property, mainTableDescriptor, lookupTableDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public withDisabled(disabled = true): this {\n this._disabled = disabled;\n return this;\n }\n\n public addValidation(name: string, validator?: MngFieldValidator, message?: MngFieldValidationMessage) {\n if (this._currentGroup) {\n this._currentGroup.withValidation(name, validator, message);\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 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 createTabGroupDescriptor(tabGroup: FieldTabGroupDescriptor<T>): this {\n this._currentTabGroup = tabGroup;\n this._tabs.push(tabGroup);\n return this;\n }\n\n private createDefaultGroup() {\n this.createDefaultTabGroup();\n if (this._currentTabGroup?.fields.length === 0) {\n this.createFieldGroup(EditorDescriptor.defaultGroupName, null);\n }\n }\n\n private createDefaultTabGroup() {\n if (this._tabs.length === 0) {\n this.createTabGroup(EditorDescriptor.defaultGroupName, 'general.general');\n }\n }\n}\n","import {Type} from '@angular/core';\n\nexport class MngFormEditorSubmitEvent<T> {\n public success = true;\n\n constructor(public readonly formItem: T) {}\n}\n\nexport enum MngFormFieldEventTypeEnum {\n ComponentLifecycle = 'ComponentLifecycle',\n ValueChange = 'ValueChange',\n DataProvider = 'DataProvider',\n DialogLifecycle = 'DialogLifecycle',\n Other = 'Other'\n}\n\nexport class MngFormFieldEventComponentSubtype {\n public static readonly ON_INIT = 'Component.OnInit';\n public static readonly ON_VIEW_INIT = 'Component.OnViewInit';\n public static readonly ON_CONTENT_INIT = 'Component.OnContentInit';\n public static readonly ON_DESTROY = 'Component.OnDestroy';\n}\n\nexport class MngFormFieldEventDialogSubtype {\n public static readonly VISIBILITY = 'Dialog.Visibility';\n public static readonly TABLE_CAPTION_COMPONENT_INSTANCE = 'Dialog.MngTable.CaptionComponentInstance';\n public static readonly TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE = 'Dialog.MngTable.ColumnActionsComponentInstance';\n}\n\nexport interface MngFormFieldEventData<T, ET> {\n eventSubtype?: string;\n value?: T;\n formValue?: ET;\n [key: string]: any;\n}\n\nexport class MngFormFieldEvent<T, ET> {\n constructor(\n public readonly type: MngFormFieldEventTypeEnum,\n public readonly componentType: Type<any>,\n public readonly componentInstance: any,\n public readonly data: MngFormFieldEventData<T, ET> = {}\n ) {}\n}\n","import {Type} from '@angular/core';\nimport {AbstractControl, Validators} from '@angular/forms';\n\nimport {FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable, Subject, of} from 'rxjs';\n\nimport {MediusQueryParam, MediusQueryResult} from '../api/models';\nimport {MngFormFieldEvent, MngFormFieldEventData, MngFormFieldEventTypeEnum} from '../components/form/models';\nimport {ILookupDataProvider, ITableDataProvider, LookupDataProvider, TableviewDataProvider} from '../data-providers';\nimport {EnumValue} from '../models';\nimport {ClassType, EnumConstantType, EnumType, MngFieldAsyncValidator, MngFieldValidationMessage, MngFieldValidator} from '../types';\nimport {EnumUtil, I18nUtils, ModelUtil, TypeUtil} from '../utils';\nimport {ActionDescriptor, EditorDescriptor, FieldValidationDescriptor, TableDescriptor, TableviewDescriptor} from './';\nimport {FieldConfig, FieldLookupConfig, ILookupDescriptor} from './interfaces';\nimport {\n FieldGroupTypeEnum,\n FieldInputTypeEnum,\n FieldLookupTypeEnum,\n FieldManyEditorActionEnum,\n FieldManyEditorTypeEnum,\n FieldManyToManyEditorActionEnum,\n FieldManyToManyEditorTypeEnum,\n FieldSizeEnum\n} from './types';\n\nexport abstract class AGenericFieldDescriptor<ET> {\n protected readonly _editor: EditorDescriptor<ET>;\n protected _config: FieldConfig = {};\n\n protected constructor(editor: EditorDescriptor<ET>) {\n this._editor = editor;\n }\n\n public get editor() {\n return this._editor;\n }\n\n public get config() {\n return this._config;\n }\n\n public withConfig(config: FieldConfig): this {\n this._config = config;\n return this;\n }\n}\n\nexport abstract class AFieldDescriptor<T, ET> extends AGenericFieldDescriptor<ET> {\n protected readonly _property: string;\n protected _group?: AFieldGroupDescriptor<ET>;\n protected _label?: string | null;\n\n protected _placeholder?: string;\n protected _helpText?: string;\n\n protected _required = false;\n protected _requiredHideLabelMarker = false;\n protected _disabled = false;\n protected _defaultValue?: T;\n protected _getter?: (item: ET) => T;\n protected _setter?: (item: ET, value: T) => void;\n protected _validations: Array<FieldValidationDescriptor> = [];\n protected _asyncValidations: Array<FieldValidationDescriptor> = [];\n protected _requiredExpression?: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n protected _disabledExpression?: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n protected _hiddenExpression?: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n\n protected _className = '';\n protected _fieldClassName?: string;\n protected _labelClassName = '';\n protected _inputClassName = '';\n protected _size: FieldSizeEnum = FieldSizeEnum.Normal;\n\n protected readonly _eventsSubject = new Subject<MngFormFieldEvent<T, ET>>();\n\n protected constructor(editor: EditorDescriptor<ET>, property: string) {\n super(editor);\n this._property = property;\n this._label = I18nUtils.Type.getPropertyKey(this._editor.model.typeName, property);\n }\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 helpText() {\n return this._helpText;\n }\n\n public get required() {\n return this._required;\n }\n\n public get requiredHideLabelMarker() {\n return this._requiredHideLabelMarker;\n }\n\n public get disabled() {\n return this._disabled;\n }\n\n public get defaultValue() {\n return this._defaultValue;\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 validations() {\n return this._validations;\n }\n\n public get asyncValidations() {\n return this._asyncValidations;\n }\n\n public get requiredExpression() {\n return this._requiredExpression;\n }\n\n public get disabledExpression() {\n return this._disabledExpression;\n }\n\n public get hiddenExpression() {\n return this._hiddenExpression;\n }\n\n public get className() {\n return this._className;\n }\n\n public get fieldClassName() {\n return this._fieldClassName;\n }\n\n public get labelClassName() {\n return this._labelClassName;\n }\n\n public get inputClassName() {\n return this._inputClassName;\n }\n\n public get size() {\n return this._size;\n }\n\n public get isSizeSmall() {\n return this._size === FieldSizeEnum.Small;\n }\n\n public get isSizeLarge() {\n return this._size === FieldSizeEnum.Large;\n }\n\n public abstract copy(): AFieldDescriptor<T, ET>;\n\n public withLabel(label: string | null): 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 withHelpText(helpText: string): this {\n this._helpText = helpText;\n return this;\n }\n\n public withRequired(\n required = true,\n requiredExpression?: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>,\n hideLabelMarker = false\n ): this {\n this._required = required;\n if (requiredExpression) {\n this._requiredExpression = requiredExpression;\n }\n this._requiredHideLabelMarker = hideLabelMarker;\n return this;\n }\n\n public withDisabled(disabled = true, disabledExpression?: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>): this {\n this._disabled = disabled;\n if (disabledExpression) {\n this._disabledExpression = disabledExpression;\n }\n return this;\n }\n\n public withHidden(hiddenExpression: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>): this {\n this._hiddenExpression = hiddenExpression;\n return this;\n }\n\n public withDefaultValue(defaultValue: T): this {\n this._defaultValue = defaultValue;\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 withValidation(name: string, validator?: MngFieldValidator, message?: MngFieldValidationMessage): this {\n this._validations.push(new FieldValidationDescriptor(name, validator, message));\n return this;\n }\n\n public withAsyncValidation(name: string, asyncValidator?: MngFieldAsyncValidator, message?: MngFieldValidationMessage): this {\n this._asyncValidations.push(new FieldValidationDescriptor(name, asyncValidator, message));\n return this;\n }\n\n public withClassName(className: string, labelClassName = '', inputClassName = '', fieldClassName?: string): this {\n this._className = className;\n this._labelClassName = labelClassName;\n this._inputClassName = inputClassName;\n this._fieldClassName = fieldClassName;\n return this;\n }\n\n public withSize(size: FieldSizeEnum = FieldSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n public nextEvent(type: MngFormFieldEventTypeEnum, cmpType: Type<any>, cmpInstance: any, data?: MngFormFieldEventData<T, ET>) {\n this._eventsSubject.next(new MngFormFieldEvent(type, cmpType, cmpInstance, data));\n }\n\n public get events$() {\n return this._eventsSubject.asObservable();\n }\n\n protected copyFieldsTo(obj: AFieldDescriptor<T, ET>) {\n obj._label = this._label;\n obj._placeholder = this._placeholder;\n obj._helpText = this._helpText;\n obj._required = this._required;\n obj._disabled = this._disabled;\n obj._defaultValue = this._defaultValue;\n obj._requiredExpression = this._requiredExpression;\n obj._hiddenExpression = this._hiddenExpression;\n obj._disabledExpression = this._disabledExpression;\n obj._className = this._className;\n obj._size = this.size;\n obj._getter = this._getter;\n obj._setter = this._setter;\n obj._validations = this._validations;\n obj._asyncValidations = this._asyncValidations;\n }\n}\n\nexport class FieldInputDescriptor<ET> extends AFieldDescriptor<string | number | boolean | Date | File | File[], ET> {\n private _fieldType: FieldInputTypeEnum = FieldInputTypeEnum.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 private _numberUseGrouping = true;\n private _locale?: string;\n\n // currency specific properties\n private _currency?: string;\n private _currencyDisplay: 'symbol' | 'code' | 'name' = 'symbol';\n private _currencyFromProperty?: string;\n\n // radio specific properties\n private _radioOptions: Array<EnumValue<string | number | boolean | Date>> = [];\n\n // datepicker specific properties\n private _datePickerFormat?: string;\n private _datePickerMin?: Date;\n private _datePickerMax?: Date;\n private _datePickerShowTime = false;\n private _datePickerShowSeconds = true;\n\n // input specific properties\n private _maxLength?: number;\n private _minLength?: number;\n private _pattern?: string | RegExp;\n\n // mask specific properties\n private _mask?: string;\n private _slotChar?: string;\n\n // file specific properties\n private _fileMultiple = false;\n private _fileMaxFileSize = 500000;\n private _fileAccept?: string;\n private _fileOnSelectHandler?: (file: File[] | null, control: AbstractControl) => void;\n\n // custom component properties\n private _customComponentName?: string;\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 rows() {\n return this._rows;\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 numberStep() {\n return this._numberStep;\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 numberUseGrouping() {\n return this._numberUseGrouping;\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 get datePickerShowSeconds() {\n return this._datePickerShowSeconds;\n }\n\n public get maxLength() {\n return this._maxLength;\n }\n\n public get minLength() {\n return this._minLength;\n }\n\n public get pattern() {\n return this._pattern;\n }\n\n public get mask() {\n return this._mask;\n }\n\n public get slotChar() {\n return this._slotChar;\n }\n\n public get fileMultiple() {\n return this._fileMultiple;\n }\n\n public get fileMaxFileSize() {\n return this._fileMaxFileSize;\n }\n\n public get fileAccept() {\n return this._fileAccept;\n }\n\n public get fileOnSelectHandler() {\n return this._fileOnSelectHandler;\n }\n\n public get customComponentName() {\n return this._customComponentName;\n }\n\n public get locale() {\n return this._locale;\n }\n\n public get currency() {\n return this._currency;\n }\n\n public get currencyFromProperty() {\n return this._currencyFromProperty;\n }\n\n public get currencyDisplay() {\n return this._currencyDisplay;\n }\n\n public asHidden(): this {\n this._fieldType = FieldInputTypeEnum.Hidden;\n return this;\n }\n\n public asLabel(): this {\n this._fieldType = FieldInputTypeEnum.Label;\n return this;\n }\n\n public asText(): this {\n this._fieldType = FieldInputTypeEnum.Text;\n return this;\n }\n\n public asTextarea(rows = 3): this {\n this._fieldType = FieldInputTypeEnum.Textarea;\n this._rows = rows;\n return this;\n }\n\n public asNumber(): this {\n this._fieldType = FieldInputTypeEnum.Number;\n return this;\n }\n\n public asCurrency(currencyFromProperty?: string, currency?: string, currencyDisplay?: 'symbol' | 'code' | 'name'): this {\n this._fieldType = FieldInputTypeEnum.Currency;\n this._currencyFromProperty = currencyFromProperty;\n this._currency = currency ?? this._currency;\n this._currencyDisplay = currencyDisplay ?? this._currencyDisplay;\n return this.withNumberFractions(2, 2);\n }\n\n public asSwitch(): this {\n this._fieldType = FieldInputTypeEnum.Switch;\n return this;\n }\n\n public asRadio(options: Array<string | number>, optionsTitlePath?: string): this {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = options.map(o => <EnumValue<string | number>>{value: o, title: `${optionsTitlePath ? `${optionsTitlePath}.` : ''}${o}`});\n return this;\n }\n\n public asRadioFromEnum(enumType: EnumType, optionsTitlePath?: string | null, values?: Array<EnumConstantType>, nameAsValue = false): this {\n this._fieldType = FieldInputTypeEnum.Radio;\n if (typeof optionsTitlePath === 'undefined') {\n optionsTitlePath = TypeUtil.findEnumName(enumType);\n }\n this._radioOptions = Array.isArray(values)\n ? EnumUtil.fromValuesAsEnumValueArray(enumType, values, nameAsValue, optionsTitlePath ?? undefined)\n : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath ?? undefined);\n return this;\n }\n\n public asDatePicker(format?: string, min?: Date, max?: Date, showTime?: boolean, showSeconds?: boolean): this {\n this._fieldType = FieldInputTypeEnum.Datepicker;\n this._datePickerFormat = format;\n this._datePickerMin = min;\n this._datePickerMax = max;\n this._datePickerShowTime = showTime ?? false;\n this._datePickerShowSeconds = showSeconds ?? true;\n return this;\n }\n\n public asMask(mask: string, slotChar: string): this {\n this._fieldType = FieldInputTypeEnum.Mask;\n this._mask = mask;\n this._slotChar = slotChar;\n return this;\n }\n\n public asFile(multiple = false, maxFileSize = 500000, accept?: string): this {\n this._fieldType = FieldInputTypeEnum.File;\n this._fileMultiple = multiple;\n this._fileMaxFileSize = maxFileSize;\n this._fileAccept = accept;\n return this;\n }\n\n public asCustomComponent(customComponentName: string): this {\n this._fieldType = FieldInputTypeEnum.Custom;\n this._customComponentName = customComponentName;\n return this;\n }\n\n public withNumberValidation(min?: number, max?: number, step?: number): this {\n this._numberStep = step ?? this._numberStep;\n this._numberMin = min ?? this._numberMin ?? Number.MIN_SAFE_INTEGER;\n this._numberMax = max ?? this._numberMax ?? Number.MAX_SAFE_INTEGER;\n return this;\n }\n\n public withLocale(locale: string): this {\n this._locale = locale;\n return this;\n }\n\n public withNumberFractions(min?: number, max?: number) {\n this._numberMinFractionDigits = min;\n this._numberMaxFractionDigits = max;\n return this;\n }\n\n public withNumberGrouping(useGrouping = true): this {\n this._numberUseGrouping = useGrouping;\n return this;\n }\n\n public withTextValidation(minLength?: number, maxLength?: number, pattern?: string | RegExp): this {\n this._minLength = minLength;\n this._maxLength = maxLength;\n this._pattern = pattern;\n return this;\n }\n\n public withTextValidationEmail(): this {\n if (this.fieldType === FieldInputTypeEnum.Text) {\n this.withValidation('email', Validators.email);\n }\n return this;\n }\n\n public withFileOnSelectHandler(fn: (file: File[] | null, control: AbstractControl) => void) {\n this._fileOnSelectHandler = fn;\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._numberUseGrouping = this._numberUseGrouping;\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 field._datePickerShowSeconds = this._datePickerShowSeconds;\n field._maxLength = this._maxLength;\n field._minLength = this._minLength;\n field._pattern = this._pattern;\n field._mask = this._mask;\n field._slotChar = this._slotChar;\n field._fileMultiple = this._fileMultiple;\n field._fileMaxFileSize = this._fileMaxFileSize;\n field._fileAccept = this._fileAccept;\n field._fileOnSelectHandler = this._fileOnSelectHandler;\n field._customComponentName = this._customComponentName;\n field._locale = this._locale;\n field._currency = this._currency;\n field._currencyDisplay = this._currencyDisplay;\n field._currencyFromProperty = this._currencyFromProperty;\n return field;\n }\n}\n\nexport class FieldLookupDescriptor<T, ET> extends AFieldDescriptor<T, ET> implements ILookupDescriptor<T> {\n protected readonly _modelType: ClassType<T> | null;\n protected _lookupType: FieldLookupTypeEnum = FieldLookupTypeEnum.Dropdown;\n protected _itemsLabelProperty?: string;\n protected _itemsLabelTranslate = false;\n protected _itemsValueProperty?: string;\n protected _itemsDisabledProperty?: string;\n protected _dataKeyProperty?: string;\n protected _dataProvider?: ILookupDataProvider<T, any>;\n\n protected _dropdownClassName = 'mng-filter-lookup-dropdown';\n\n protected _autocompleteOpenOnFocus = false;\n protected _autocompleteInlineSearch = false;\n\n protected _dialogTableDescriptor?: TableDescriptor<T>;\n protected _dialogTableDataProvider?: ITableDataProvider<T, any>;\n\n constructor(editor: EditorDescriptor<ET>, property: string, modelType: ClassType<T> | null) {\n super(editor, property);\n this._modelType = modelType;\n ModelUtil.trySetLookupItemsProperties(this);\n }\n\n public get lookupType() {\n return this._lookupType;\n }\n\n public get itemsLabelProperty() {\n return this._itemsLabelProperty;\n }\n\n public get itemsLabelTranslate() {\n return this._itemsLabelTranslate;\n }\n\n public get itemsValueProperty() {\n return this._itemsValueProperty;\n }\n\n public get itemsDisabledProperty() {\n return this._itemsDisabledProperty;\n }\n\n public get dataKeyProperty() {\n return this._dataKeyProperty;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get autocompleteOpenOnFocus() {\n return this._autocompleteOpenOnFocus;\n }\n\n public get autocompleteInlineSearch() {\n return this._autocompleteInlineSearch;\n }\n\n public get dropdownClassName() {\n return this._dropdownClassName;\n }\n\n public get modelType() {\n return this._modelType;\n }\n\n public get dialogTableDescriptor() {\n return this._dialogTableDescriptor;\n }\n\n public get dialogTableDataProvider() {\n return this._dialogTableDataProvider;\n }\n\n public withItemsLabelProperty(itemsLabelProperty: string, translate = false): this {\n this._itemsLabelProperty = itemsLabelProperty;\n this._itemsLabelTranslate = translate;\n return this;\n }\n\n public withItemsValueProperty(itemsValueProperty: string): this {\n this._itemsValueProperty = itemsValueProperty;\n this._dataKeyProperty = undefined;\n return this;\n }\n\n public withItemsDisabledProperty(itemsDisabledProperty: string): this {\n this._itemsDisabledProperty = itemsDisabledProperty;\n return this;\n }\n\n public withDataKeyProperty(property: string): this {\n this._dataKeyProperty = property;\n this._itemsValueProperty = undefined;\n return this;\n }\n\n public withLookup<S>(lookup: (queryParam?: MediusQueryParam, 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 override withConfig(config: FieldLookupConfig): this {\n return super.withConfig(config);\n }\n\n public asAutocomplete(openOnFocus = false, inlineSearch = false): this {\n this._lookupType = FieldLookupTypeEnum.Autocomplete;\n this._autocompleteOpenOnFocus = openOnFocus;\n this._autocompleteInlineSearch = inlineSearch;\n return this;\n }\n\n public asDialog(lookupTableDescriptor: TableDescriptor<T>, tableDataProvider?: ITableDataProvider<T, any>): this {\n this._lookupType = FieldLookupTypeEnum.Dialog;\n this._dialogTableDescriptor = lookupTableDescriptor;\n this._dialogTableDataProvider = tableDataProvider;\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._lookupType = this._lookupType;\n field._itemsLabelProperty = this._itemsLabelProperty;\n field._itemsLabelTranslate = this._itemsLabelTranslate;\n field._itemsValueProperty = this._itemsValueProperty;\n field._itemsDisabledProperty = this._itemsDisabledProperty;\n field._dataKeyProperty = this._dataKeyProperty;\n field._dataProvider = this._dataProvider;\n field._dropdownClassName = this._dropdownClassName;\n field._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;\n field._autocompleteInlineSearch = this._autocompleteInlineSearch;\n field._dialogTableDescriptor = this._dialogTableDescriptor;\n return field;\n }\n}\n\nexport class FieldLookupEnumDescriptor<ET> extends FieldLookupDescriptor<EnumValue<string | number>, ET> {\n private readonly _enumType: EnumType;\n private readonly _optionEnumValues: EnumValue<string | number>[];\n private readonly _nameAsValue: boolean = false;\n\n constructor(editor: EditorDescriptor<ET>, property: string, enumType: EnumType, options?: Array<EnumConstantType>, nameAsValue = false, optionsTitlePath?: string | null) {\n super(editor, property, null);\n this._enumType = enumType;\n this._nameAsValue = nameAsValue;\n if (typeof optionsTitlePath === 'undefined') {\n optionsTitlePath = TypeUtil.findEnumName(enumType);\n }\n this._optionEnumValues = Array.isArray(options)\n ? EnumUtil.fromValuesAsEnumValueArray(enumType, options, nameAsValue, optionsTitlePath ?? undefined)\n : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath ?? undefined);\n const dataProvider = new LookupDataProvider<EnumValue<string | number>, any>(null).withLookup(() => of(this._optionEnumValues));\n this.withLookupDataProvider(dataProvider);\n this.withItemsLabelProperty('title', optionsTitlePath !== null);\n this.withItemsValueProperty('value');\n this.withItemsDisabledProperty('disabled');\n }\n\n public get enumType() {\n return this._enumType;\n }\n\n public withDisabledOptions(...disabledOptions: Array<EnumConstantType>): this {\n for (const disabledOption of disabledOptions) {\n const disabledOptionValue = this._nameAsValue ? EnumUtil.getConstantName(this._enumType, disabledOption) : disabledOption;\n if (disabledOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === disabledOptionValue);\n if (option) {\n option.disabled = true;\n }\n }\n }\n return this;\n }\n\n public withDefaultValueEnum(defaultValue: EnumConstantType): this {\n const defaultOptionValue = this._nameAsValue ? EnumUtil.getConstantName(this._enumType, defaultValue) : defaultValue;\n if (defaultOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === defaultOptionValue);\n if (option) {\n this.withDefaultValue(this._itemsValueProperty ? option[this._itemsValueProperty as keyof object] : option);\n }\n }\n return this;\n }\n\n public override asAutocomplete(openOnFocus = true): this {\n super.asAutocomplete(openOnFocus, true);\n return this;\n }\n\n public override copy(): FieldLookupEnumDescriptor<ET> {\n const field = new FieldLookupEnumDescriptor<ET>(this._editor, this._property, this._enumType, []);\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._itemsLabelProperty = this._itemsLabelProperty;\n field._itemsValueProperty = this._itemsValueProperty;\n field._itemsDisabledProperty = this._itemsDisabledProperty;\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 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: FieldManyToManyEditorTypeEnum = FieldManyToManyEditorTypeEnum.DialogTableMultiselect;\n private _lookupTableDataProvider: ITableDataProvider<T, any> | null = null;\n private _actions: Array<FieldManyToManyEditorActionEnum> = [];\n private _hasLookupExcludeValues = false;\n private _excludeFilterProperty = '';\n private _excludeValueProperty = '';\n\n constructor(editor: EditorDescriptor<ET>, property: string, mainTableDescriptor: TableDescriptor<T>, lookupTableDescriptor: TableDescriptor<T>) {\n super(editor, property);\n this._mainTableDescriptor = mainTableDescriptor;\n this._lookupTableDescriptor = lookupTableDescriptor;\n this._actions.push(FieldManyToManyEditorActionEnum.Add, FieldManyToManyEditorActionEnum.Delete);\n }\n\n public get fieldType() {\n return this._fieldType;\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 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 get mainTableDescriptor() {\n return this._mainTableDescriptor;\n }\n\n public get lookupTableDescriptor() {\n return this._lookupTableDescriptor;\n }\n\n public withLookup<S>(getAll: (queryParam: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>>, serviceType?: Type<S>): this {\n const dataProvider = new TableviewDataProvider<T, S>(this._mainTableDescriptor.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<FieldManyToManyEditorActionEnum> = []): this {\n this.actions.push(...actions);\n return this;\n }\n\n public withLookupExclude(filterProperty: string, valueProperty: string, hasLookupExclude = 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._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 class FieldManyEditorDescriptor<T, ET> extends AFieldDescriptor<T, ET> {\n private readonly _tableviewDescriptor: TableviewDescriptor<T>;\n private _fieldType: FieldManyEditorTypeEnum = FieldManyEditorTypeEnum.DialogEditor;\n private _fieldActions: Array<FieldManyEditorActionEnum> = [];\n private _actions: Array<ActionDescriptor<T>> = [];\n\n constructor(editor: EditorDescriptor<ET>, property: string, tableviewDescriptor: TableviewDescriptor<T>) {\n super(editor, property);\n // this._modelType = modelType;\n this._tableviewDescriptor = tableviewDescriptor;\n this._fieldActions.push(FieldManyEditorActionEnum.View, FieldManyEditorActionEnum.Add, FieldManyEditorActionEnum.Edit, FieldManyEditorActionEnum.Delete);\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get fieldActions() {\n return this._fieldActions;\n }\n\n public get actions() {\n return this._actions;\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 withFieldAction(action: FieldManyEditorActionEnum): this {\n this._fieldActions.push(action);\n return this;\n }\n\n public withFieldActions(actions: FieldManyEditorActionEnum[]): this {\n this._fieldActions = actions;\n return this;\n }\n\n public withAction(action: ActionDescriptor<T>): this {\n this._actions.push(action);\n return this;\n }\n\n public copy(): FieldManyEditorDescriptor<T, ET> {\n const field = new FieldManyEditorDescriptor(this._editor, this._property, this._tableviewDescriptor.copy());\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._fieldActions = this._fieldActions.map(a => a);\n return field;\n }\n}\n\nexport abstract class AFieldGroupDescriptor<ET> extends AGenericFieldDescriptor<ET> {\n protected readonly _name: string;\n protected readonly _default: boolean;\n protected _title?: string;\n protected _fields: AGenericFieldDescriptor<ET>[] = [];\n protected _validations: Array<FieldValidationDescriptor> = [];\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 public get title() {\n return this._title;\n }\n\n abstract get fields(): AGenericFieldDescriptor<ET>[];\n\n public get validations() {\n return this._validations;\n }\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 abstract groupName(): string;\n\n abstract addField(field: AGenericFieldDescriptor<ET>): this;\n\n abstract copy(): AFieldGroupDescriptor<ET>;\n\n public withTitle(title: string): this {\n this._title = title;\n return this;\n }\n\n public withValidation(name: string, validator?: MngFieldValidator, message?: MngFieldValidationMessage) {\n this._validations.push(new FieldValidationDescriptor(name, validator, message));\n return this;\n }\n}\n\nexport class FieldTabGroupDescriptor<ET> extends AFieldGroupDescriptor<ET> {\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 private _type = FieldGroupTypeEnum.Fieldset;\n\n constructor(editor: EditorDescriptor<ET>, name: string) {\n super(editor, name);\n if (this._default) {\n this.asLogical();\n }\n }\n\n public get type() {\n return this._type;\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 asLogical(): this {\n this._type = FieldGroupTypeEnum.Logical;\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._type = this._type;\n group._title = this._title;\n group._fields = this.fields.map(f => f.copy());\n return group;\n }\n}\n","import {FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable} from 'rxjs';\n\nimport {MngFieldAsyncValidator, MngFieldValidationMessage, MngFieldValidator} from '../types';\n\nexport class FieldValidationDescriptor {\n private readonly _name: string;\n private readonly _validator?: MngFieldValidator | MngFieldAsyncValidator;\n private readonly _message?: MngFieldValidationMessage;\n private readonly _options?: {errorPath: string};\n\n constructor(\n name: string,\n validator?: MngFieldValidator | MngFieldAsyncValidator,\n message?: string | ((error: any, field: FormlyFieldConfig) => string | Observable<string>),\n options?: {errorPath: string}\n ) {\n this._name = name;\n this._validator = validator;\n this._message = message;\n this._options = options;\n }\n\n public get name(): string {\n return this._name;\n }\n\n public get validator() {\n return this._validator;\n }\n\n public get message() {\n return this._message;\n }\n\n public get options() {\n return this._options;\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 {Type} from '@angular/core';\n\nimport {IColumnValueComponent} from '../models';\nimport {ClassType, EnumType} from '../types';\nimport {ModelUtil} from '../utils';\nimport {ColumnDescriptor} from './column.descriptor';\nimport {ModelDescriptor} from './model.descriptor';\nimport {TableFilterDisplayEnum, TablePaginationModeEnum, TableSizeEnum} from './types';\n\nexport class TableDescriptor<T> {\n private readonly _model: ModelDescriptor<T>;\n private _filterDisplay: TableFilterDisplayEnum = TableFilterDisplayEnum.Menu;\n private _paginationMode: TablePaginationModeEnum = TablePaginationModeEnum.Pagination;\n private _rowsPerPageOptions = [25, 50, 100];\n private _defaultNumRows = this._rowsPerPageOptions[0];\n private _columns: Array<ColumnDescriptor<any, T>> = [];\n private _title?: string;\n private _hideHeader = false;\n private _dataKeyProperty?: string;\n private _hasDefaultSort = false;\n private _defaultSortProperty: string[] = [];\n private _defaultSortAsc: boolean[] = [];\n\n // visual\n private _className = '';\n private _size: TableSizeEnum = TableSizeEnum.Large;\n private _tableFullHeightOffset?: number;\n private _rowHeight?: number;\n private _hasHover = true;\n private _hasGridlines = false;\n\n constructor(modelType: ClassType<T>, idProperty?: string, titleProperty?: string) {\n this._model = new ModelDescriptor<T>(modelType, idProperty, titleProperty);\n this._dataKeyProperty = idProperty ?? ModelUtil.findIdAttribute(modelType) ?? undefined;\n }\n\n public get filterDisplay() {\n return this._filterDisplay;\n }\n\n public get paginationMode() {\n return this._paginationMode;\n }\n\n get rowsPerPageOptions(): number[] {\n return this._rowsPerPageOptions;\n }\n\n get defaultNumRows(): number {\n return this._defaultNumRows;\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 hideHeader() {\n return this._hideHeader;\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() {\n return this._defaultSortProperty;\n }\n\n public get defaultSortAsc() {\n return this._defaultSortAsc;\n }\n\n public get model() {\n return this._model;\n }\n\n public get className() {\n return this._className;\n }\n\n public get size() {\n return this._size;\n }\n\n public get tableFullHeightOffset() {\n return this._tableFullHeightOffset;\n }\n\n public get rowHeight() {\n return this._rowHeight;\n }\n\n public get hasHover() {\n return this._hasHover;\n }\n\n public get hasGridlines() {\n return this._hasGridlines;\n }\n\n public addColumnDescriptor<CT>(column: ColumnDescriptor<CT, T>): TableDescriptor<T> {\n this._columns.push(column);\n return this;\n }\n\n public addColumn(property: string): ColumnDescriptor<string, T> {\n const column = new ColumnDescriptor<string, T>(this, property);\n this._columns.push(column);\n return column;\n }\n\n public addColumnNumber(property: string, displayFormat?: string): ColumnDescriptor<number, T> {\n const column = new ColumnDescriptor<number, T>(this, property);\n column.asNumber(displayFormat);\n this._columns.push(column);\n return column;\n }\n\n public addColumnDate(property: string, displayFormat?: string): ColumnDescriptor<Date, T> {\n const column = new ColumnDescriptor<Date, T>(this, property);\n column.asDate(displayFormat);\n this._columns.push(column);\n return column;\n }\n\n public addColumnBoolean(property: string, yes?: string, no?: string, asIcon = false): ColumnDescriptor<boolean, T> {\n const column = new ColumnDescriptor<boolean, T>(this, property);\n column.asBoolean(yes, no, asIcon);\n this._columns.push(column);\n return column;\n }\n\n public addColumnEnum(property: string, enumType: EnumType, nameAsValue = false, titlePath?: string | null): ColumnDescriptor<EnumType, T> {\n const column = new ColumnDescriptor<EnumType, T>(this, property);\n column.asEnum(enumType, nameAsValue, titlePath);\n this._columns.push(column);\n return column;\n }\n\n public addColumnCustomComponent(property: string, customComponentType: Type<IColumnValueComponent<T>>): ColumnDescriptor<any, T> {\n const column = new ColumnDescriptor<any, T>(this, property);\n column.asCustomComponent(customComponentType);\n this._columns.push(column);\n return column;\n }\n\n public withFilterDisplay(filterDisplayType: TableFilterDisplayEnum): this {\n this._filterDisplay = filterDisplayType;\n return this;\n }\n\n public withPaginationMode(paginationMode: TablePaginationModeEnum): this {\n this._paginationMode = paginationMode;\n return this;\n }\n\n public withRowsPerPage(rows: number, options?: Array<number>) {\n if (options) {\n this._rowsPerPageOptions = options;\n }\n if (!this._rowsPerPageOptions.includes(rows)) {\n this._defaultNumRows = this._rowsPerPageOptions[0];\n } else {\n this._defaultNumRows = rows;\n }\n return this;\n }\n\n public withTitle(title: string): TableDescriptor<T> {\n this._title = title;\n return this;\n }\n\n public withHideHeader(hideHeader = true) {\n this._hideHeader = hideHeader;\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 = true): TableDescriptor<T> {\n this._hasDefaultSort = true;\n this._defaultSortProperty.push(property);\n this._defaultSortAsc.push(asc);\n return this;\n }\n\n public withClassName(className: string): this {\n this._className = className;\n return this;\n }\n\n public withSize(size: TableSizeEnum = TableSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n public withTableFullHeightOffset(tableFullHeightOffset: number): TableDescriptor<T> {\n this._tableFullHeightOffset = tableFullHeightOffset;\n return this;\n }\n\n public withRowHeight(rowHeight: number): TableDescriptor<T> {\n this._rowHeight = rowHeight;\n return this;\n }\n\n public withHover(hover: boolean): this {\n this._hasHover = hover;\n return this;\n }\n\n public withGridlines(gridlines: boolean): this {\n this._hasGridlines = gridlines;\n return this;\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._hideHeader = this._hideHeader;\n descriptor._dataKeyProperty = this._dataKeyProperty;\n descriptor._hasDefaultSort = this._hasDefaultSort;\n descriptor._defaultSortProperty = this._defaultSortProperty.map(p => p);\n descriptor._defaultSortAsc = this._defaultSortAsc.map(p => p);\n descriptor._filterDisplay = this._filterDisplay;\n descriptor._className = this._className;\n descriptor._size = this._size;\n descriptor._tableFullHeightOffset = this._tableFullHeightOffset;\n descriptor._rowHeight = this._rowHeight;\n descriptor._hasHover = this._hasHover;\n descriptor._hasGridlines = this._hasGridlines;\n return descriptor;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {FieldValidatorFn} from '@ngx-formly/core/lib/models/config';\n\nimport {IColumnValueComponent} from '../models';\nimport {ClassType, EnumConstantType, EnumType} from '../types';\nimport {\n AFieldDescriptor,\n ColumnDescriptor,\n EditorDescriptor,\n FieldInputDescriptor,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor,\n ModelDescriptor,\n TableDescriptor\n} from './';\nimport {TableviewTypeEnum} from './types';\n\nexport class TableviewDescriptor<T> {\n private readonly _model: ModelDescriptor<T>;\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, TableviewTypeEnum.View);\n this._viewEditor.withDisabled();\n this._addEditor = new EditorDescriptor<T>(modelType, idProperty, titleProperty, TableviewTypeEnum.Add);\n this._editEditor = new EditorDescriptor<T>(modelType, idProperty, titleProperty, TableviewTypeEnum.Edit);\n this._tableTitle = `${this._model.typeName}.name`;\n }\n\n private _table: TableDescriptor<T>;\n\n public get table() {\n return this._table;\n }\n\n private _viewEditor: EditorDescriptor<T>;\n\n public get viewEditor() {\n return this._viewEditor;\n }\n\n private _addEditor: EditorDescriptor<T>;\n\n public get addEditor() {\n return this._addEditor;\n }\n\n private _editEditor: EditorDescriptor<T>;\n\n public get editEditor() {\n return this._editEditor;\n }\n\n private _tableTitle: string;\n\n public get tableTitle() {\n return this._tableTitle;\n }\n\n public get model() {\n return this._model;\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: FieldValidatorFn): this {\n this._viewEditor.addValidation(name, expression);\n this._addEditor.addValidation(name, expression);\n this._editEditor.addValidation(name, expression);\n return this;\n }\n\n public addColumnDescriptor<CT>(column: ColumnDescriptor<CT, T>): TableDescriptor<T> {\n return this._table.addColumnDescriptor<CT>(column);\n }\n\n public addColumn(property: string): ColumnDescriptor<string, T> {\n return this._table.addColumn(property);\n }\n\n public addColumnNumber(property: string, displayFormat?: string): ColumnDescriptor<number, T> {\n return this._table.addColumnNumber(property, displayFormat);\n }\n\n public addColumnDate(property: string, displayFormat?: string): ColumnDescriptor<Date, T> {\n return this._table.addColumnDate(property, displayFormat);\n }\n\n public addColumnBoolean(property: string, yes?: string, no?: string, asIcon = false): ColumnDescriptor<boolean, T> {\n return this._table.addColumnBoolean(property, yes, no, asIcon);\n }\n\n public addColumnEnum(property: string, enumType: EnumType, nameAsValue = false, titlePath?: string | null): ColumnDescriptor<EnumType, T> {\n return this._table.addColumnEnum(property, enumType, nameAsValue, titlePath);\n }\n\n public addColumnCustomComponent(property: string, customComponentType: Type<IColumnValueComponent<T>>): ColumnDescriptor<any, T> {\n return this._table.addColumnCustomComponent(property, customComponentType);\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(\n property: string,\n enumType: EnumType,\n options?: Array<EnumConstantType>,\n nameAsValue = false,\n optionsTitlePath?: string | null\n ): FieldLookupEnumDescriptor<T> {\n const field = this._viewEditor.addFieldLookupEnum(property, enumType, options, nameAsValue, optionsTitlePath);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyEditor<FT>(property: string, tableviewDescriptor: TableviewDescriptor<FT>): FieldManyEditorDescriptor<FT, T> {\n const field = this._viewEditor.addFieldManyEditor(property, tableviewDescriptor);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyToManyEditor<FT>(\n property: string,\n mainTableDescriptor: TableDescriptor<FT>,\n lookupTableDescriptor: TableDescriptor<FT>\n ): FieldManyToManyEditorDescriptor<FT, T> {\n const field = this._viewEditor.addFieldManyToManyEditor(property, 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","import {AbstractControl, ValidationErrors} from '@angular/forms';\n\nimport {FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {\n AFieldDescriptor,\n EditorDescriptor,\n FieldGroupDescriptor,\n FieldInputDescriptor,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor,\n FieldTabGroupDescriptor,\n FieldValidationDescriptor\n} from '../descriptors';\nimport {FieldInputTypeEnum, FieldLookupTypeEnum} from '../descriptors/types';\nimport {MngFormlyFieldConfig} from '../models';\nimport {MngFieldAsyncValidator} from '../types';\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: MngFormlyFieldConfig = {\n id: tab.name,\n props: {},\n expressions: {},\n fieldGroup: []\n };\n if (tab.title) {\n tabField.props.label = tab.title;\n }\n tabField.fieldGroup!.push(...EditorFormlyUtil.createFormlyGroupType(tab.fields));\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: MngFormlyFieldConfig = {\n type: 'fieldset',\n fieldGroup: [],\n props: {},\n expressions: {}\n };\n for (const group of groups) {\n const groupField: MngFormlyFieldConfig = {\n id: group.name,\n props: {\n descriptor: group\n },\n expressions: {},\n fieldGroup: []\n };\n if (group.title) {\n groupField.props.label = group.title;\n }\n groupField.fieldGroup!.push(...EditorFormlyUtil.createFormlyFields(group));\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: FormlyFieldConfig = {\n fieldGroupClassName: 'p-fluid formgrid grid',\n fieldGroup: fields\n };\n\n EditorFormlyUtil.addValidationsToFormlyField(wrapperGroup, descriptor.validations);\n\n return [wrapperGroup];\n }\n\n public static createFormlyField(descriptor: AFieldDescriptor<any, any>): FormlyFieldConfig {\n const field: MngFormlyFieldConfig = {\n key: descriptor.property,\n props: {\n descriptor\n },\n expressions: {}\n };\n\n let className = descriptor.className;\n if (!className) {\n // assign default field width through entire row\n className = 'col-12';\n }\n field.className = className;\n\n if (descriptor instanceof FieldInputDescriptor) {\n switch (descriptor.fieldType) {\n case FieldInputTypeEnum.Hidden:\n break;\n case FieldInputTypeEnum.Label:\n field.type = 'label';\n delete field.key;\n break;\n case FieldInputTypeEnum.Textarea:\n field.type = 'textarea';\n field.props.maxLength = descriptor.maxLength;\n field.props.minLength = descriptor.minLength;\n field.props.pattern = descriptor.pattern;\n break;\n case FieldInputTypeEnum.Number:\n field.type = 'number';\n field.props.min = descriptor.numberMin;\n field.props.max = descriptor.numberMax;\n break;\n case FieldInputTypeEnum.Currency:\n field.type = 'currency';\n field.props.min = descriptor.numberMin;\n field.props.max = descriptor.numberMax;\n break;\n case FieldInputTypeEnum.Switch:\n field.type = 'switch';\n break;\n case FieldInputTypeEnum.Radio:\n field.type = 'radio';\n break;\n case FieldInputTypeEnum.Datepicker:\n field.type = 'datepicker';\n break;\n case FieldInputTypeEnum.Mask:\n field.type = 'mask';\n break;\n case FieldInputTypeEnum.File:\n field.type = 'file';\n break;\n case FieldInputTypeEnum.Custom:\n field.type = descriptor.customComponentName;\n break;\n default:\n field.type = 'input';\n field.props.minLength = descriptor.minLength;\n field.props.maxLength = descriptor.maxLength;\n field.props.pattern = descriptor.pattern;\n break;\n }\n } else if (descriptor instanceof FieldLookupEnumDescriptor) {\n field.type = 'enum';\n } else if (descriptor instanceof FieldLookupDescriptor) {\n switch (descriptor.lookupType) {\n case FieldLookupTypeEnum.Autocomplete:\n field.type = 'autocomplete';\n break;\n case FieldLookupTypeEnum.Dialog:\n field.type = 'dialog';\n break;\n case FieldLookupTypeEnum.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) {\n field.props.label = descriptor.label;\n }\n\n if (descriptor.requiredExpression) {\n field.expressions['props.required'] = descriptor.requiredExpression;\n }\n if (descriptor.required) {\n field.props!.required = true;\n if (descriptor.requiredHideLabelMarker) {\n field.props!['hideRequiredMarker'] = true;\n }\n }\n\n if (descriptor.hiddenExpression) {\n field.expressions!['hide'] = descriptor.hiddenExpression;\n }\n\n if (descriptor.disabledExpression) {\n field.expressions['props.disabled'] = descriptor.disabledExpression;\n } else if (descriptor.disabled) {\n field.props.disabled = true;\n } else {\n field.expressions['props.disabled'] = 'formState.disabled';\n }\n\n if (typeof descriptor.defaultValue !== 'undefined') {\n field.defaultValue = descriptor.defaultValue;\n }\n\n EditorFormlyUtil.addValidationsToFormlyField(field, descriptor.validations);\n EditorFormlyUtil.addAsyncValidationsToFormlyField(field, descriptor.asyncValidations);\n\n return field;\n }\n\n public static addValidationsToFormlyField(config: FormlyFieldConfig, validations: Array<FieldValidationDescriptor>) {\n if (!config.validators) {\n config.validators = {};\n }\n\n for (const validation of validations) {\n if (typeof validation.validator === 'function') {\n config.validators[validation.name] = {\n expression: (\n control: AbstractControl,\n field: FormlyFieldConfig,\n options?: {\n [id: string]: any;\n }\n ) => {\n const validatorRes = validation.validator!(control, field, options);\n // formly validator only excepts true/false for validation\n // map possible angular validator result to true/false\n return typeof validatorRes === 'boolean' ? validatorRes : validatorRes === null;\n }\n };\n if (typeof validation.message === 'function') {\n config.validators[validation.name].message = validation.message;\n }\n } else {\n if (!Array.isArray(config.validators.validation)) {\n config.validators.validation = [];\n }\n config.validators.validation.push(validation.name);\n }\n }\n }\n\n public static addAsyncValidationsToFormlyField(config: FormlyFieldConfig, asyncValidations: Array<FieldValidationDescriptor>) {\n if (!config.asyncValidators) {\n config.asyncValidators = {};\n }\n\n for (const validation of asyncValidations) {\n if (typeof validation.validator === 'function') {\n config.asyncValidators[validation.name] = {\n expression: (\n control: AbstractControl,\n field: FormlyFieldConfig,\n options?: {\n [id: string]: any;\n }\n ) => {\n const validator = <MngFieldAsyncValidator>validation.validator;\n\n const validatorObs: Observable<ValidationErrors | boolean | null> = validator(control, field, options);\n // formly validator only excepts true/false for validation\n // map possible angular validator result to true/false\n return validatorObs.pipe(map(value => (typeof value === 'boolean' ? value : value === null)));\n }\n };\n if (typeof validation.message === 'function') {\n config.asyncValidators[validation.name].message = validation.message;\n }\n } else {\n if (!Array.isArray(config.asyncValidators.validation)) {\n config.asyncValidators.validation = [];\n }\n config.asyncValidators.validation.push(validation.name);\n }\n }\n }\n}\n","import {EnumValue} from '../models';\nimport {EnumConstantType, EnumType} from '../types';\n\nexport class EnumUtil {\n /**\n * Returns array of names for constants in enum.\n * @param enumType Enum object.\n */\n public static getConstantNames(enumType: EnumType): Array<string> {\n return EnumUtil.getConstantNamesFromEnumObject(enumType);\n }\n\n /**\n * Returns array of names for constants in enum.\n * @param enumObj Enum object.\n */\n public static getConstantNamesFromEnumObject(enumObj: object): Array<string> {\n // in number enum, the numbers are also represented in objects and should be filtered out\n return Object.keys(enumObj).filter(v => isNaN(+v));\n }\n\n /**\n * Returns array of string values for constants in enum.\n * @param enumType Enum object.\n */\n public static getConstantValuesAsString(enumType: EnumType): Array<string> {\n return Object.keys(enumType).map(v => enumType[v as keyof object] as string);\n }\n\n /**\n * Returns array of number values for constants in enum.\n * @param enumType Enum object.\n */\n public static getConstantValuesAsNumber(enumType: EnumType): Array<number> {\n return Object.keys(enumType)\n .filter(v => !isNaN(+v))\n .map(v => +v);\n }\n\n /**\n * Returns array of type EnumValue for all constants in enum.\n * @param enumType Enum object.\n * @param nameAsValue If use name of constant as value (optional, default: false).\n * @param titlePath Base path for title to use as translation (optional).\n */\n public static fromConstantsAsEnumValueArray(enumType: EnumType, nameAsValue = false, titlePath?: string) {\n return EnumUtil.getConstantNames(enumType).map(\n n => <EnumValue<string | number>>{name: n, title: `${titlePath ? `${titlePath}.` : ''}${n}`, value: nameAsValue ? n : enumType[n]}\n );\n }\n\n /**\n * Returns array of type EnumValue for provided values in enum.\n * @param enumType Enum object.\n * @param nameAsValue If use name of constant as value (optional, default: false).\n * @param titlePath Base path for title to use as translation (optional).\n */\n public static fromValuesAsEnumValueArray(enumType: EnumType, values: Array<EnumConstantType>, nameAsValue = false, titlePath?: string) {\n return values.map(v => {\n const k = EnumUtil.getConstantName(enumType, v);\n return {name: k, title: `${titlePath ? `${titlePath}.` : ''}${k}`, value: nameAsValue ? k : v} as EnumValue<string | number>;\n });\n }\n\n /**\n * Gets constant name for value.\n * @param enumType Enum object.\n * @param value Value of enum constant.\n */\n public static getConstantName(enumType: EnumType, value: EnumConstantType): string | null {\n if (typeof value === 'string') {\n return EnumUtil.getConstantNames(enumType).find(c => enumType[c] === value) ?? null;\n } else {\n return typeof enumType[value] !== 'undefined' ? (enumType[value] as string) : null;\n }\n }\n\n /**\n * Gets constant name for value.\n * @param enumObj Enum object.\n * @param value Value of enum constant.\n */\n public static getConstantNameFromEnumObject(enumObj: object, value: EnumConstantType): string | null {\n const enumObjAny = enumObj as any;\n if (typeof value === 'string') {\n return EnumUtil.getConstantNamesFromEnumObject(enumObj).find(c => enumObjAny[c] === value) ?? null;\n } else {\n return typeof enumObjAny[value] !== 'undefined' ? (enumObjAny[value] as string) : null;\n }\n }\n}\n","export const typeNameDecoratorPropertyName = 'typeName';\n\nexport function TypeName(typeName: string): ClassDecorator {\n return function (target: any) {\n target[typeNameDecoratorPropertyName] = typeName;\n };\n}\n\nexport const enumNameDecoratorPropertyName = 'enumName';\n\nexport function EnumName(typeName: string): ClassDecorator {\n return function (target: any) {\n target[enumNameDecoratorPropertyName] = typeName;\n };\n}\n","import 'reflect-metadata';\n\nimport {ClassType, EnumType, enumNameDecoratorPropertyName, typeNameDecoratorPropertyName} from '../types';\n\nexport class TypeUtil {\n /**\n * Defines type name decorator.\n * @param targetType class.\n * @param typeName Name of the type.\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\n if (!Reflect.hasOwnMetadata(typeNameDecoratorPropertyName, targetType)) {\n Reflect.defineMetadata(typeNameDecoratorPropertyName, typeName, targetType);\n }\n }\n\n /**\n * Defines enum name decorator.\n * @param targetType enum object.\n * @param enumName Name of the enum.\n */\n public static defineReflectEnumName(targetType: EnumType, enumName: string) {\n if (!Reflect.hasOwnMetadata(enumNameDecoratorPropertyName, targetType)) {\n Reflect.defineMetadata(enumNameDecoratorPropertyName, enumName, 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 decoratorName = Reflect.getMetadata(typeNameDecoratorPropertyName, type);\n if (decoratorName) {\n return decoratorName;\n }\n return type.name;\n }\n\n /**\n * Gets enum name from either decorator or reflect metadata.\n * @param enumType Class.\n */\n public static findEnumName(enumType: EnumType): string {\n let decoratorName = TypeUtil.getDecoratorEnumName(enumType);\n if (decoratorName) {\n return decoratorName;\n }\n decoratorName = Reflect.getMetadata(enumNameDecoratorPropertyName, enumType);\n if (decoratorName) {\n return decoratorName;\n }\n throw new Error('Could not fined enum name');\n }\n\n /**\n * Get value from decorator defined property name\n * @param type Class.\n */\n // eslint-disable-next-line @typescript-eslint/ban-types\n public static getDecoratorTypeName(type: Function): string | undefined {\n return (type as any)[typeNameDecoratorPropertyName];\n }\n\n /**\n * Get value from decorator defined property name\n * @param type Enum object.\n */\n public static getDecoratorEnumName(type: EnumType): string | undefined {\n return (type as any)[enumNameDecoratorPropertyName];\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable, of} from 'rxjs';\nimport {map, mergeMap} from 'rxjs/operators';\n\nimport {ActionDescriptor, ActionEditorDescriptor, ModelDescriptor} from '../descriptors';\nimport {MngError} from '../models';\nimport {ClassType} from '../types';\nimport {TypeUtil} from './type.util';\n\nexport namespace I18nUtils {\n export class Common {\n public static getAsync(translate: TranslateService, params?: any, ...keys: Array<string>): Observable<string | null> {\n return translate.stream(keys, params).pipe(map(i18n => I18nUtils.Common.selectI18n(keys, i18n)));\n }\n\n public static get(translate: TranslateService, params?: any, ...keys: Array<string>): string | null {\n const i18n = translate.instant(keys, params);\n return I18nUtils.Common.selectI18n(keys, i18n);\n }\n\n public static populateParams(item?: any, params: any = {}) {\n const paramsRes = {...params};\n if (item) {\n paramsRes.item = item;\n }\n return paramsRes;\n }\n\n public static selectI18n(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\n export class Type {\n public static getClassNameAsync(translate: TranslateService, classType: ClassType<any>, singular?: boolean): Observable<string | null> {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getNameAsync(translate, typeName, singular);\n }\n\n public static getClassName(translate: TranslateService, classType: ClassType<any>, singular?: boolean): string | null {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getName(translate, typeName, singular);\n }\n\n public static getNameAsync(translate: TranslateService, typeName: string, singular?: boolean): Observable<string | null> {\n const keys = I18nUtils.Type.getNameKeys(typeName, singular);\n return I18nUtils.Common.getAsync(translate, undefined, ...keys);\n }\n\n public static getName(translate: TranslateService, typeName: string, singular?: boolean): string | null {\n const keys = I18nUtils.Type.getNameKeys(typeName, singular);\n return I18nUtils.Common.get(translate, undefined, ...keys);\n }\n\n public static getClassTabKey(classType: ClassType<any>, tab: string): string {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getTabKey(typeName, tab);\n }\n\n public static getTabKey(typeName: string, tab: string): string {\n return I18nUtils.Type.getPath(typeName, 'tabs', tab);\n }\n\n public static getClassGroupKey(classType: ClassType<any>, group: string): string {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getGroupKey(typeName, group);\n }\n\n public static getGroupKey(typeName: string, group: string): string {\n return I18nUtils.Type.getPath(typeName, 'groups', group);\n }\n\n public static getClassPropertyKey(classType: ClassType<any>, property: string): string {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getPropertyKey(typeName, property);\n }\n\n public static getPropertyKey(typeName: string, property: string): string {\n return I18nUtils.Type.getPath(typeName, 'properties', property);\n }\n\n public static getClassPath(classType: ClassType<any>, ...path: Array<string>): string {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getPath(typeName, ...path);\n }\n\n public static getPath(typeName: string, ...path: Array<string>): string {\n return `${typeName}.${path.join('.')}`;\n }\n\n public static getClassParams(translate: TranslateService, classType: ClassType<any>, item: any, params: any = {}): any {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getParams(translate, typeName, item, params);\n }\n\n public static getParams(translate: TranslateService, typeName?: string, item?: any, params: any = {}): any {\n const i18nTypeName = typeName ? I18nUtils.Type.getName(translate, typeName, true) : null;\n return I18nUtils.Type.populateParams(i18nTypeName ?? undefined, item, params);\n }\n\n public static getClassParamsAsync(translate: TranslateService, classType: ClassType<any>, item?: any, params: any = {}): Observable<any> {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getParamsAsync(translate, typeName, item, params);\n }\n\n public static getParamsAsync(translate: TranslateService, typeName?: string, item?: any, params: any = {}): Observable<any> {\n return (typeName ? I18nUtils.Type.getNameAsync(translate, typeName, true) : of(null)).pipe(\n map(i18nTypeName => I18nUtils.Type.populateParams(i18nTypeName ?? undefined, item, params))\n );\n }\n\n public static populateParams(i18nTypeName?: string, item?: any, params: any = {}): any {\n const paramsRes = {...params};\n if (i18nTypeName) {\n paramsRes.typeName = i18nTypeName;\n }\n return I18nUtils.Common.populateParams(item, paramsRes);\n }\n\n private static getNameKeys(typeName: string, singular?: boolean): Array<string> {\n const keys = [];\n if (typeof singular !== 'undefined') {\n keys.push(singular ? `${typeName}.nameSingular` : `${typeName}.namePlural`);\n }\n keys.push(`${typeName}.name`);\n return keys;\n }\n }\n\n export class Model {\n public static get(\n translate: TranslateService,\n model: ModelDescriptor<any>,\n keyPath: string,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any\n ): string | null {\n const keys = I18nUtils.Model.getKeysByPriority(model, keyPath, customKey, fallbackKey);\n const i18nParams = I18nUtils.Model.getParams(translate, model, item, params);\n return I18nUtils.Common.get(translate, i18nParams, ...keys);\n }\n\n public static getName(translate: TranslateService, model: ModelDescriptor<any>, singular?: boolean): string | null {\n return I18nUtils.Type.getName(translate, model.typeName, singular);\n }\n\n public static getNameAsync(translate: TranslateService, model: ModelDescriptor<any>, singular?: boolean): Observable<string | null> {\n return I18nUtils.Type.getNameAsync(translate, model.typeName, singular);\n }\n\n public static getParams(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): any {\n const i18nParams = I18nUtils.Type.getParams(translate, model?.typeName, item, params);\n return I18nUtils.Model.populateParams(model?.idPropertyName, model?.titlePropertyName, item, i18nParams);\n }\n\n public static getParamsAsync(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): Observable<any> {\n return I18nUtils.Type.getParamsAsync(translate, model?.typeName, item, params).pipe(\n map(i18nParams => I18nUtils.Model.populateParams(model?.idPropertyName, model?.titlePropertyName, item, i18nParams))\n );\n }\n\n public static populateParams(idProperty?: string, titleProperty?: string, item?: any, params: any = {}): any {\n const paramsRes = {...params, itemId: '', itemTitle: ''};\n if (item) {\n if (idProperty && item[idProperty]) {\n paramsRes.itemId = item[idProperty];\n }\n if (titleProperty && item[titleProperty]) {\n paramsRes.itemTitle = item[titleProperty];\n }\n }\n return paramsRes;\n }\n\n private static getKeysByPriority(model: ModelDescriptor<any>, keyPath: string, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n const modelActionKey = I18nUtils.Type.getPath(model.typeName, ...keyPath);\n keys.push(modelActionKey);\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n }\n }\n\n export class Action {\n public static get(\n translate: TranslateService,\n action: ActionDescriptor<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any\n ): string | null {\n const keys = I18nUtils.Action.getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);\n const i18nParams = I18nUtils.Action.getParams(translate, action, item, params);\n return I18nUtils.Common.get(translate, i18nParams, ...keys);\n }\n\n public static getAsync(\n translate: TranslateService,\n action: ActionDescriptor<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any\n ): Observable<string | null> {\n return I18nUtils.Action.getParamsAsync(translate, action, item, params).pipe(\n mergeMap(i18nParams => {\n const keys = I18nUtils.Action.getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);\n return I18nUtils.Common.getAsync(translate, i18nParams, ...keys);\n })\n );\n }\n\n public static getTitleAsync(translate: TranslateService, action: ActionDescriptor<any>, item?: any): Observable<string | null> {\n return I18nUtils.Action.getAsync(translate, action, 'title', undefined, item);\n }\n\n public static getEditorTitleAsync(translate: TranslateService, action: ActionEditorDescriptor<any>, item?: any): Observable<string | null> {\n return I18nUtils.Action.getAsync(translate, action, ['editor.title', 'title'], action.editorTitle ?? undefined, item);\n }\n\n public static getParams(translate: TranslateService, action: ActionDescriptor<any>, item?: any, params: any = {}): any {\n const i18nParams = I18nUtils.Model.getParams(translate, action.model ?? undefined, item, params);\n return I18nUtils.Action.populateParams(i18nParams);\n }\n\n public static getParamsAsync(translate: TranslateService, action: ActionDescriptor<any>, item?: any, params: any = {}): Observable<any> {\n return I18nUtils.Model.getParamsAsync(translate, action.model ?? undefined, item, params).pipe(map(i18nParams => I18nUtils.Action.populateParams(i18nParams)));\n }\n\n public static populateParams(params: any = {}): any {\n params = {...params};\n return params;\n }\n\n private static getKeysByPriority(action: ActionDescriptor<any>, actionPathKeys: string | Array<string>, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n if (!Array.isArray(actionPathKeys)) {\n actionPathKeys = [actionPathKeys];\n }\n actionPathKeys.forEach(k => {\n const modelActionKey = `${action.i18nModelActionBaseKey}.${k}`;\n const actionKey = `${action.actionName}.${k}`;\n keys.push(modelActionKey, actionKey);\n });\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n }\n }\n\n export class Error {\n public static get(translate: TranslateService, error: MngError, params: any = {}): string | null {\n const i18nParams = I18nUtils.Error.getParams(error, params);\n if (error.messageCode) {\n const keys = [`errors.${error.messageCode}`, `messages.${error.messageCode}`];\n const i18n = I18nUtils.Common.get(translate, i18nParams, ...keys);\n if (i18n) {\n return i18n;\n }\n }\n return I18nUtils.Common.get(translate, i18nParams, error.message);\n }\n\n public static getParams(error: MngError, params: any = {}) {\n const paramsRes = {...params};\n paramsRes.errorStatus = '';\n paramsRes.errorMessage = '';\n\n if (error.status) {\n paramsRes.errorStatus = error.status;\n }\n if (error.message) {\n paramsRes.errorMessage = error.message;\n }\n if (error.statusDescription) {\n paramsRes.errorStatusDescription = error.statusDescription;\n }\n paramsRes.error = error;\n return paramsRes;\n }\n }\n}\n","import {AttributeDef} from '../api/models';\nimport {ObjectSerializer} from '../api/utils';\nimport {ILookupDescriptor} from '../descriptors/interfaces';\nimport {ClassType} from '../types';\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 = ModelUtil.findAttributeByTypeAndName(attributes, 'string', 'id', 'uuid', 'code', 'sifra');\n if (!idAttribute) {\n // if no id or code, take the first attribute\n idAttribute = attributes[0];\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 = ModelUtil.findAttributeByTypeAndName(attributes, 'string', 'name', 'ime', 'title', 'naziv');\n if (!titleAttribute) {\n // if no name or title, take the first attribute\n titleAttribute = attributes[0];\n }\n\n return titleAttribute?.name ?? null;\n }\n\n private static findAttributeByTypeAndName(attributes: AttributeDef[], type: string, ...names: string[]): AttributeDef | null {\n for (const name of names) {\n const attribute = attributes.find(a => a.type === type && a.name === name);\n if (attribute) {\n return attribute;\n }\n }\n return null;\n }\n\n public static trySetLookupItemsProperties<T>(lookup: ILookupDescriptor<T>, idAsDataKey = true) {\n if (lookup.modelType) {\n if (!lookup.itemsValueProperty || !lookup.dataKeyProperty) {\n const idProperty = ModelUtil.findIdAttribute(lookup.modelType) ?? undefined;\n if (idProperty && !lookup.itemsValueProperty && !lookup.dataKeyProperty) {\n if (idAsDataKey) {\n lookup.withDataKeyProperty(idProperty);\n } else {\n lookup.withItemsValueProperty(idProperty);\n }\n }\n }\n if (!lookup.itemsLabelProperty) {\n const labelProperty = ModelUtil.findTitleAttribute(lookup.modelType);\n if (labelProperty) {\n lookup.withItemsLabelProperty(labelProperty);\n }\n }\n }\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\n\nimport {ActionDescriptor, TableDescriptor} from '../descriptors';\nimport {IViewContainer, MngError} from '../models';\nimport {I18nUtils} from './i18n.util';\n\nexport class NotificationUtil {\n public static notification(viewContainer?: IViewContainer<any, any>, title?: string, message?: string, severity: 'success' | 'warn' | 'error' = 'success'): Message {\n const messageService = viewContainer?.getMessageService();\n const notification: Message = {severity: severity, summary: title, detail: message, life: severity === 'error' ? 10000 : 5000};\n if (messageService) {\n messageService.add(notification);\n } else {\n console.warn(`No message service was provided through view container, message will not be displayed.`);\n }\n return notification;\n }\n\n public static tableNotificationError(translate: TranslateService, table: TableDescriptor<any>, error: any, viewContainer?: IViewContainer<any, any>): Message {\n const params: any = {};\n if (error?.message) {\n params.errorMessage = `: ${error.message}`;\n } else {\n params.errorMessage = '.';\n }\n const tableErrorTitle = I18nUtils.Model.get(translate, table.model, 'table.error.title', undefined, undefined, 'general.error', params) ?? undefined;\n const tableErrorMessage = I18nUtils.Model.get(translate, table.model, 'table.error.message', undefined, undefined, 'general.errorMessage', params) ?? undefined;\n return NotificationUtil.notification(viewContainer, tableErrorTitle, tableErrorMessage, 'error');\n }\n\n public static actionNotificationSuccess(\n translate: TranslateService,\n action: ActionDescriptor<any>,\n functionName: string,\n customTitleKey?: string,\n customMessageKey?: string,\n viewContainer?: IViewContainer<any, any>,\n item?: any\n ): Message {\n const actionSuccessTitle = I18nUtils.Action.get(translate, action, 'success.title', customTitleKey, item, 'general.success', functionName) ?? undefined;\n const actionSuccessMessage = I18nUtils.Action.get(translate, action, 'success.message', customMessageKey, item, 'general.successMessage', functionName) ?? undefined;\n return NotificationUtil.notification(viewContainer, actionSuccessTitle, actionSuccessMessage);\n }\n\n public static actionNotificationError(\n translate: TranslateService,\n action: ActionDescriptor<any>,\n error: MngError,\n functionName: string,\n viewContainer?: IViewContainer<any, any>,\n item?: any,\n severity: 'warn' | 'error' = 'error'\n ): Message {\n const params = {\n errorMessage: I18nUtils.Error.get(translate, error) ?? error.message\n };\n const actionErrorTitle =\n I18nUtils.Action.get(translate, action, [`error.${functionName}.title`, 'error.title'], action.runNotificationErrorTitle, item, 'general.error', params) ?? undefined;\n const actionErrorMessage =\n I18nUtils.Action.get(translate, action, [`error.${functionName}.message`, 'error.message'], action.runNotificationErrorMessage, item, 'general.errorMessage', params) ??\n undefined;\n return NotificationUtil.notification(viewContainer, actionErrorTitle, actionErrorMessage, severity);\n }\n\n public static getFormEditorWarningMessage(translate: TranslateService, title: string, message: string): Message {\n const actionErrorTitle = translate.instant(title) ?? undefined;\n const actionErrorMessage = translate.instant(message) ?? undefined;\n return {severity: 'warn', summary: actionErrorTitle, detail: actionErrorMessage};\n }\n}\n","import {ClassType} from '../../types';\nimport {TypeUtil} from '../../utils';\nimport {AttributeDef, SerializableTypeMap, enumsMapBase, typeMapBase} from '../models';\n\nexport class ObjectSerializer {\n private static _instance: ObjectSerializer = new ObjectSerializer();\n private readonly _primitives: string[] = ['string', 'boolean', 'double', 'integer', 'long', 'float', 'number', 'any'];\n private readonly _typeMap: SerializableTypeMap = {\n ...typeMapBase\n };\n private readonly _enumMap: SerializableTypeMap = {\n ...enumsMapBase\n };\n\n public get primitives() {\n return this._primitives;\n }\n\n public get typeMap() {\n return this._typeMap;\n }\n\n public get enumMap() {\n return this._enumMap;\n }\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 findAttributeDefinitionByClassType(type: ClassType<any>, attributeName: string): AttributeDef | null {\n return this.findAttributeDefinition(TypeUtil.findTypeName(type), attributeName);\n }\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 (const attribute of attributeDefs) {\n if (attribute.name === attributeName) {\n return attribute;\n }\n }\n return null;\n }\n\n public findAttributesDefinitionByClassType(type: ClassType<any>): Array<AttributeDef> | null {\n return this.findAttributesDefinition(TypeUtil.findTypeName(type));\n }\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\n public findByClassType(type: ClassType<any>): any {\n return this.findType(TypeUtil.findTypeName(type));\n }\n\n public findType(typeName: string): any {\n return this._typeMap[typeName];\n }\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 this.registerEnum(enums[key], key);\n }\n }\n\n public registerEnum(enumType: any, enumName: string) {\n // try to find name from decorator\n if (typeof this._enumMap[enumName] !== 'undefined') {\n console.warn(`Registering enum ${enumName} skipped, because enum already exists.`);\n } else {\n TypeUtil.defineReflectEnumName(enumType, enumName);\n this._enumMap[enumName] = enumType;\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: T, type: ClassType<T>) {\n return this.serialize(data, TypeUtil.findTypeName(type));\n }\n\n public serializeClassArray<T>(data: Array<T>, type: ClassType<T>) {\n return this.serialize(data, `Array<${TypeUtil.findTypeName(type)}>`);\n }\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) {\n // 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 if (data instanceof Date) {\n return data.toISOString();\n } else {\n return new Date(data).toISOString();\n }\n } else {\n if (this._enumMap[type]) {\n return data;\n }\n if (!this._typeMap[type]) {\n // 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], attributeType.type);\n }\n return instance;\n }\n }\n\n public deserializeClass<T>(data: any, type: ClassType<T>): T {\n return this.deserialize(data, TypeUtil.findTypeName(type));\n }\n\n public deserializeClassArray<T>(data: any, type: ClassType<T>): Array<T> {\n return this.deserialize(data, `Array<${TypeUtil.findTypeName(type)}>`);\n }\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) {\n // 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]) {\n // is Enum\n return data;\n }\n\n if (!this._typeMap[type]) {\n // 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], attributeType.type);\n }\n return instance;\n }\n }\n}\n","import {Params} from '@angular/router';\n\nimport {FilterMatchMode, FilterMetadata, LazyLoadEvent} from 'primeng/api';\n\nimport {FilterDescriptor} from '../../descriptors';\nimport {FilterTypeEnum} from '../../descriptors/types';\nimport {MatchModeMapType} from '../../types';\nimport {MediusFilterMatchType, MediusQueryParam, MediusQueryParamBuilder} from '../models';\n\nexport class MediusRestUtil {\n // first value is from primeNG, second is for use in query params\n private static readonly matchModeMapping: Array<MatchModeMapType> = [\n [FilterMatchMode.CONTAINS, 'c', MediusFilterMatchType.Contains, null],\n [FilterMatchMode.ENDS_WITH, 'ew', MediusFilterMatchType.EndsWith, null],\n [FilterMatchMode.EQUALS, 'eq', MediusFilterMatchType.Equals, null],\n [FilterMatchMode.GREATER_THAN, 'gt', MediusFilterMatchType.GreaterThan, null],\n [FilterMatchMode.LESS_THAN, 'lt', MediusFilterMatchType.SmallerThan, null],\n [FilterMatchMode.STARTS_WITH, 'sw', MediusFilterMatchType.StartsWith, null],\n [FilterMatchMode.IN, 'in', MediusFilterMatchType.In, null],\n [FilterMatchMode.NOT_EQUALS, 'neq', MediusFilterMatchType.NotEquals, null],\n [FilterMatchMode.DATE_IS, 'eq', MediusFilterMatchType.Equals, FilterTypeEnum.Date],\n [FilterMatchMode.DATE_BEFORE, 'lt', MediusFilterMatchType.SmallerThan, FilterTypeEnum.Date],\n [FilterMatchMode.DATE_AFTER, 'gt', MediusFilterMatchType.GreaterThan, FilterTypeEnum.Date],\n [FilterMatchMode.DATE_IS_NOT, 'neq', MediusFilterMatchType.NotEquals, FilterTypeEnum.Date]\n ];\n\n public static fromAngularQueryParamsToMediusQueryParams(\n params: Params,\n filterDescriptors: Array<FilterDescriptor<any>>,\n defaultItemsPerPage = 10,\n defaultOffset = 0\n ): MediusQueryParam {\n const offset = params['first'] ? parseInt(params['first']) : defaultOffset;\n const itemsPerPage = params['rows'] ? parseInt(params['rows']) : defaultItemsPerPage;\n\n const mediusParamsBuilder = MediusQueryParamBuilder.create(itemsPerPage, offset);\n\n if (params['sort']) {\n for (const sort of params['sort'].split(',')) {\n const qpSortSplit = sort.split(':');\n const field = qpSortSplit[0];\n const asc = qpSortSplit.length > 1 ? qpSortSplit[1] === 'asc' : true;\n mediusParamsBuilder.withSort(field, asc);\n }\n }\n if (params['filter']) {\n const filterSplit = params['filter'].split(';');\n for (const filterField of filterSplit) {\n const filterFieldSplit = filterField.split(':');\n const field = filterFieldSplit[0];\n const operator = filterFieldSplit.length > 1 ? filterFieldSplit[1] : 'eq';\n\n // prepare value\n let value: any = filterFieldSplit.length > 2 ? filterFieldSplit.slice(2).join(':') : '';\n const valueTo: any = undefined;\n if (value.startsWith(\"'\")) {\n value = value.substring(1, value.length - 1);\n }\n if (value.startsWith('[') && value.endsWith(']')) {\n value = value\n .substring(1, value.length - 1)\n .split(',')\n .map((v: string) => (v.startsWith(\"'\") ? v.substring(1, v.length - 1) : v));\n }\n\n const filterDescriptor = filterDescriptors.find(f => f.property === field);\n const matchMode = MediusRestUtil.getMapping(operator, filterDescriptor?.filterType, 1);\n if (matchMode && filterDescriptor) {\n const fieldFilterProperty = filterDescriptor.filterProperty ?? filterDescriptor.property;\n mediusParamsBuilder.withFilter(fieldFilterProperty, value, valueTo, MediusRestUtil.getMediusFilterMatchTypeFromPrimeMatchMode(matchMode[0]));\n }\n }\n }\n\n return mediusParamsBuilder.build();\n }\n\n public static fromPrimeLazyLoadEventToAngularQueryParams(event: LazyLoadEvent, defaultItemsPerPage = 10, defaultOffset = 0): Params {\n const params: Params = {\n first: null,\n rows: null,\n sort: null,\n filter: null\n };\n\n if (event.first && event.first !== defaultOffset && event.first > 0) {\n params['first'] = event.first;\n }\n if (event.rows && event.rows !== defaultItemsPerPage && event.rows > 0) {\n params['rows'] = event.rows;\n }\n\n if (event.multiSortMeta?.length ?? 0 > 0) {\n params['sort'] = event.multiSortMeta?.map(s => `${s.field}${s.order === 1 ? '' : ':desc'}`).join(',');\n }\n\n if (event.filters) {\n const filters = [];\n for (const field in event.filters) {\n const primeOperator = event.filters[field].matchMode;\n let value = event.filters[field].value;\n const operatorMapping = primeOperator ? MediusRestUtil.getMapping(primeOperator, undefined, 0) : undefined;\n if (operatorMapping && typeof value !== 'undefined' && value !== null) {\n let doAddFilter = false;\n if (typeof value === 'string' && value.length > 0) {\n value = `'${value}'`;\n doAddFilter = true;\n } else if (typeof value === 'number') {\n doAddFilter = true;\n } else if (Array.isArray(value)) {\n value = `[${value.map(v => `'${v}'`).join(',')}]`;\n doAddFilter = true;\n } else if (value instanceof Date) {\n value = `${value.toISOString()}`;\n doAddFilter = true;\n }\n\n if (doAddFilter) {\n filters.push(`${field}:${operatorMapping[1]}:${value}`);\n }\n }\n }\n if (filters.length > 0) {\n params['filter'] = filters.join(';');\n }\n }\n\n return params;\n }\n\n public static fromPrimeLazyLoadEventToMediusQueryParams(event: LazyLoadEvent): MediusQueryParam {\n const queryParamBuilder = MediusQueryParamBuilder.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).forEach(e => MediusRestUtil.addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, key, e));\n } else if (typeof filterEvent === 'object') {\n if (filterEvent.value) {\n MediusRestUtil.addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, key, filterEvent);\n }\n }\n }\n }\n\n return queryParamBuilder.build();\n }\n\n public static addMediusFilterFromPrimeFilterMetadata(queryParamBuilder: MediusQueryParamBuilder, property: string, filterMetadata: FilterMetadata) {\n const matchType: MediusFilterMatchType = MediusRestUtil.getMediusFilterMatchTypeFromPrimeMatchMode(filterMetadata.matchMode ?? 'equals');\n queryParamBuilder.withFilter(property, filterMetadata.value, undefined, matchType);\n }\n\n public static getMediusFilterMatchTypeFromPrimeMatchMode(matchMode: string, dataType?: FilterTypeEnum): MediusFilterMatchType {\n return MediusRestUtil.getMapping(matchMode, dataType)?.[2] ?? MediusFilterMatchType.Equals;\n }\n\n public static getMapping(matchMode: string, dataType?: FilterTypeEnum, idx = 0): MatchModeMapType | null {\n const mappings = MediusRestUtil.matchModeMapping.filter(m => m[idx] === matchMode && (!dataType || !m[3] || dataType === m[3]));\n if (mappings.length === 0) {\n return null;\n } else if (mappings.length === 1) {\n return mappings[0];\n } else {\n return mappings.sort((m1, m2) => (m2[3] ?? -1) - (m1[3] ?? -1))[0];\n }\n }\n}\n","import {ActivatedRoute} from '@angular/router';\n\nimport {Confirmation, Message} from 'primeng/api';\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged} from 'rxjs';\n\nimport {MediusQueryParam} from '../../../api/models';\nimport {IDataProvider} from '../../../data-providers';\nimport {ActionDescriptor} from '../../../descriptors';\nimport {IViewContainer, MngError} from '../../../models';\nimport {IdType} from '../../../types';\n\nexport class ActionError {\n constructor(\n public readonly error: any, // error details\n public readonly dismissed: boolean = false // by user\n ) {}\n}\n\n/**\n * Action execution instance containing data about execution state of action\n */\nexport class ActionInstance<T, S> {\n public readonly instanceId: string;\n public readonly instanceLongName: string;\n public readonly action: ActionDescriptor<T>;\n\n // function execution\n public readonly isRunLoadingSubject = new BehaviorSubject(false);\n\n // parameters, contexts, states\n public triggerParameters?: ActionParameters<T>;\n public activationParameters?: ActionParameters<T>;\n private readonly contexts: Array<ActionContext<T, S>> = [];\n private readonly executionSubject = new Subject<T | null | undefined>();\n private readonly executionIsRunningSubject = new BehaviorSubject(false);\n private readonly stateSubject = new BehaviorSubject<ActionInstanceStateEnum>(1);\n private readonly resultSubject = new ReplaySubject<T | null>(1);\n private readonly errorSubject = new ReplaySubject<ActionError>(1);\n\n private contextExecutionSubscriptions: Array<Subscription> = [];\n\n // result or error\n private _result?: T | null;\n private _error?: ActionError;\n\n // additional data from trigger/activation\n public triggerRouteNavigation?: Observable<boolean>;\n public activationDialogRef?: DynamicDialogRef;\n\n // linked actions\n public nextActionInstance?: ActionInstance<unknown, unknown>;\n public errorActionInstance?: ActionInstance<unknown, unknown>;\n\n constructor(action: ActionDescriptor<T>, state = ActionInstanceStateEnum.TriggerStart, public debug = false) {\n this.instanceId = Math.random().toString(36).substring(2);\n this.instanceLongName = `${action.actionNameLong}_${this.instanceId}`;\n this.action = action;\n this.state = state;\n }\n\n public get isRunLoading$() {\n return this.isRunLoadingSubject.asObservable();\n }\n\n public get context() {\n return this.contexts.length === 0 ? undefined : this.contexts[this.contexts.length - 1];\n }\n\n public get execution$() {\n return this.executionSubject.asObservable();\n }\n\n public get executionIsRunning$() {\n return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public get state() {\n return this.stateSubject.value;\n }\n\n public set state(state: ActionInstanceStateEnum) {\n if (state > this.stateSubject.value) {\n if (this.debug) {\n console.debug(`ActionInstance ${this.instanceLongName} - state #${state}: ${ActionInstanceStateEnum[state]}`);\n }\n this.stateSubject.next(state);\n }\n }\n\n public get state$() {\n return this.stateSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public get result() {\n return this._result;\n }\n\n public set result(result: T | null | undefined) {\n if (typeof result === 'undefined') {\n return;\n }\n if (this.debug) {\n console.debug(`ActionInstance ${this.instanceLongName} - result`, result);\n }\n this._result = result;\n this.resultSubject.next(result);\n }\n\n public get result$() {\n return this.resultSubject.asObservable();\n }\n\n public get error() {\n return this._error;\n }\n\n public set error(error: ActionError | undefined) {\n if (typeof error === 'undefined') {\n return;\n }\n if (this.debug) {\n console.debug(`ActionInstance ${this.instanceLongName} - error`, error);\n }\n this._error = error;\n this.errorSubject.next(error);\n }\n\n public get error$() {\n return this.errorSubject.asObservable();\n }\n\n public contextAt(idx: number) {\n return idx < this.contexts.length ? this.contexts[idx] : undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public newContext(context: ActionContext<T, S>, finishPrevious = true) {\n if (this.debug) {\n console.debug(`ActionInstance ${this.instanceLongName} - new context ${context.contextLongName}`);\n }\n const currentContext = this.context;\n if (currentContext) {\n currentContext.executionComplete();\n }\n this.contextExecutionSubscriptions.forEach(s => s.unsubscribe());\n this.contextExecutionSubscriptions = [];\n this.contextExecutionSubscriptions.push(\n context.execution$.subscribe({\n next: next => this.executionSubject.next(next),\n error: error => this.executionSubject.error(error)\n })\n );\n this.contextExecutionSubscriptions.push(\n context.executionIsRunning$.subscribe({\n next: next => this.executionIsRunningSubject.next(next)\n })\n );\n this.contexts.push(context);\n }\n\n public finish() {\n if (this.stateSubject.value < ActionInstanceStateEnum.FinishSuccess) {\n this.state = ActionInstanceStateEnum.FinishSuccess;\n }\n // complete all subjects\n this.contexts.forEach(c => c.finish());\n this.executionSubject.complete();\n this.executionIsRunningSubject.complete();\n this.stateSubject.complete();\n this.resultSubject.complete();\n this.errorSubject.complete();\n }\n}\n\n/**\n * Class containing all main data for action to be executed in run/fetch/submit states.\n */\nexport class ActionContext<T, S> {\n public readonly contextLongName: string;\n public previousActionInstance?: ActionInstance<unknown, unknown>;\n public confirmation?: Confirmation;\n public notification?: Message;\n\n constructor(\n public readonly instance: ActionInstance<T, S>,\n public readonly parameters: ActionParameters<T>,\n public readonly functionName: 'run' | 'fetch' | 'submit',\n public readonly dataProvider?: IDataProvider<T, S>,\n public readonly serviceInstance?: S,\n private readonly executionSubject = new ReplaySubject<T | null | undefined>(1),\n private readonly executionIsRunningSubject = new BehaviorSubject(false)\n ) {\n this.contextLongName = `${this.instance.instanceLongName}_${functionName}`;\n }\n\n public get execution$() {\n return this.executionSubject.asObservable();\n }\n\n public get executionIsRunning$() {\n return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public executionStart() {\n if (this.instance.debug) {\n console.debug(`ActionContext ${this.contextLongName} - execution start`);\n }\n this.executionIsRunningSubject.next(true);\n }\n\n public executionNext(next: T | null | undefined, finish = true) {\n if (this.instance.debug) {\n console.debug(`ActionContext ${this.contextLongName} - execution next event`, next, finish);\n }\n this.executionSubject.next(next);\n if (finish) {\n this.executionComplete();\n }\n }\n\n public executionComplete() {\n if (this.instance.debug) {\n console.debug(`ActionContext ${this.contextLongName} - execution complete`);\n }\n this.executionSubject.complete();\n this.executionIsRunningSubject.next(false);\n }\n\n public executionError(err: MngError) {\n if (this.instance.debug) {\n console.debug(`ActionContext ${this.contextLongName} - execution error`, err);\n }\n this.executionSubject.error(err);\n this.executionIsRunningSubject.next(false);\n }\n\n public finish() {\n this.executionSubject.complete();\n this.executionIsRunningSubject.complete();\n }\n}\n\n/**\n * Class containing all main data for action validations (enabled/visible) to be executed in validation states.\n */\nexport class ActionContextValidation<T, S> {\n constructor(\n public readonly descriptor: ActionDescriptor<T>,\n public readonly parameters: ActionParameters<T>,\n public readonly dataProvider?: IDataProvider<T, S>,\n public readonly serviceInstance?: S\n ) {}\n}\n\nexport class ActionParameters<T> {\n public actionData?: ActionData;\n public queryParam?: MediusQueryParam;\n public viewContainer?: IViewContainer<T, unknown>;\n public sourceComponent?: any;\n public route?: ActivatedRoute;\n\n constructor(public itemId?: IdType, public item?: T) {}\n\n public withActionData(actionData?: ActionData) {\n this.actionData = actionData;\n return this;\n }\n\n public withQueryParam(queryParam?: MediusQueryParam) {\n this.queryParam = queryParam;\n return this;\n }\n\n public withViewContainer<S>(viewContainer?: IViewContainer<T, S>) {\n this.viewContainer = viewContainer;\n return this;\n }\n\n public withSourceComponent(sourceComponent?: any) {\n this.sourceComponent = sourceComponent;\n return this;\n }\n\n public withRoute(route?: ActivatedRoute) {\n this.route = route;\n return this;\n }\n}\n\nexport enum ActionInstanceStateEnum {\n TriggerStart, // action was triggered (click or direct)\n TriggerEnd,\n ActivationStart, // action activation started (direct, event or editor)\n ActivationEnd, // action activation ended\n FetchStart, // fetch started\n FetchEnd, // fetch ended\n FetchError, // fetch error\n RunConfirmationStart, // confirmation for run is started\n RunConfirmationEndAccept, // confirmation accepted\n RunConfirmationEndReject, // confirmation rejected\n RunStart, // action was run by calling main function\n RunEnd, // action run function executed\n RunError, // action run function executed\n NextActionStart, // next action started\n NextActionEnd, // next action finished\n FinishSuccess, // action executed successfully\n FinishError, // action executed with error\n FinishDismissed // action was dismissed by user\n}\n\nexport type ActionData = {\n [key: string]: any;\n};\n","import {APermissions, AuthorizationTypeEnum, Permissions} from './model';\n\nexport class AuthorizationUtil {\n public static isPermitted(permissions: APermissions, userRoles: Array<string>): boolean {\n switch (permissions.authorizationType) {\n case AuthorizationTypeEnum.Rbac:\n return AuthorizationUtil.isRbacPermitted(permissions as Permissions.Roles, userRoles);\n default:\n console.error(`Permission type \"${permissions.authorizationType}\" not implemented`);\n return false;\n }\n }\n\n public static isRbacPermitted(permissions: Permissions.Roles, userRoles: Array<string>): boolean {\n return permissions.roles.some(prg => prg.every(pr => userRoles.indexOf(pr) > -1));\n }\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const MNG_BROWSER_STORAGE_IT = new InjectionToken<Storage>('Browser storage', {\n providedIn: 'root',\n factory: () => localStorage\n});\n","import {InjectionToken} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nexport const MNG_COMMONS_INITIALIZER_IT = new InjectionToken<ReadonlyArray<() => Observable<unknown>>>('MNG Commons Initializer');\n","import {InjectionToken, Type} from '@angular/core';\n\nexport const ACTION_EDITOR_DIALOG_COMPONENT_SETTING: InjectionToken<Type<any>> = new InjectionToken<Type<any>>('ACTION_EDITOR_DIALOG_COMPONENT_SETTING');\n","import {InjectionToken} from '@angular/core';\n\nimport {MngModuleConfig} from '../../config/models';\n\nexport const MNG_MODULE_CONFIG_IT = new InjectionToken<MngModuleConfig>('MngModuleConfig');\n","import {HttpClient, HttpErrorResponse} from '@angular/common/http';\n\nimport {Observable, combineLatest, of, tap, throwError} from 'rxjs';\nimport {catchError, map} from 'rxjs/operators';\n\nexport class MngConfigurationService {\n private static _instance: MngConfigurationService | null = null;\n\n public static init(httpClient: HttpClient): MngConfigurationService {\n if (!this._instance) {\n MngConfigurationService._instance = new MngConfigurationService(httpClient);\n }\n return MngConfigurationService.get();\n }\n\n public static get(): MngConfigurationService {\n if (!MngConfigurationService._instance) {\n throw new Error('Configuration service instance not set. Call init first.');\n }\n return MngConfigurationService._instance;\n }\n\n private projectEnvironment?: any;\n private jsonSources: Array<JsonSourceLoadInfo> = [];\n\n private configuration = {...this.projectEnvironment};\n\n private constructor(private http: HttpClient) {}\n\n /**\n * Add project environment source.\n * @param environemnt Environment.\n */\n public addEnvironmentSource(environment: any): void {\n this.projectEnvironment = environment;\n this.mergeConfigs();\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, load = false): Observable<boolean> {\n if (!url) {\n console.debug('No path to configuration file specified. Setting default.');\n url = 'assets/config/env{{environment}}.json';\n }\n\n const sourceInfo: JsonSourceLoadInfo = {\n url: url,\n isEnvironment: false,\n isLoaded: false\n };\n this.jsonSources.push(sourceInfo);\n\n console.debug(`Added JSON source: ${url}`);\n\n if (load) {\n return this.loadJsonSources();\n } else {\n return of(true);\n }\n }\n\n public loadJsonSources(): Observable<boolean> {\n return combineLatest(\n this.jsonSources\n .filter(source => !source.isLoaded)\n .map(sourceInfo => {\n let url = sourceInfo.url;\n if (url.indexOf('{{environment}}') >= 0) {\n sourceInfo.isEnvironment = true;\n sourceInfo.environment = this.projectEnvironment.name || (this.projectEnvironment.production ? 'prod' : 'dev');\n url = url.replace('{{environment}}', '.' + sourceInfo.environment);\n }\n\n console.debug(`Loading JSON source: ${sourceInfo.url} with env ${sourceInfo.environment ?? '/'}`);\n\n return this.http.get<object>(url).pipe(\n catchError((err: HttpErrorResponse) => {\n if (sourceInfo.isEnvironment) {\n const noEnvUrl = sourceInfo.url.replace('{{environment}}', '');\n sourceInfo.environment = null;\n\n console.debug(`Reloading JSON source: ${sourceInfo.url} with env ${sourceInfo.environment ?? '/'}`);\n\n return this.http.get<object>(noEnvUrl);\n } else {\n const message = `Configuration file ${url} not loaded (${err.status}): ${err.message}.`;\n console.error(message);\n return throwError(() => new Error(message));\n }\n }),\n map(configuration => {\n sourceInfo.configuration = configuration;\n sourceInfo.isLoaded = true;\n\n console.debug(`JSON source loaded: ${sourceInfo.url}`);\n\n return true;\n })\n );\n })\n ).pipe(\n map(sourceResults => sourceResults.every(sr => sr)),\n tap(() => this.mergeConfigs())\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 const jsonConfigs = this.jsonSources.filter(source => source.isLoaded && typeof source.configuration === 'object').map(source => source.configuration);\n if (jsonConfigs.length) {\n for (const jsonConfig of jsonConfigs) {\n config = {...config, ...jsonConfig};\n }\n }\n this.configuration = config;\n }\n}\n\ninterface JsonSourceLoadInfo {\n url: string;\n isLoaded: boolean;\n isEnvironment: boolean;\n environment?: string | null;\n configuration?: object;\n}\n","import {Location} from '@angular/common';\nimport {Injectable} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\n\n@Injectable()\nexport class MngNavigationService {\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 }\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 {MngError} from '../models';\n\nexport abstract class MngErrorMapperService {\n abstract toMngError(error?: any, mngError?: MngError): MngError;\n}\n\nexport class DefaultMngErrorMapperService extends MngErrorMapperService {\n toMngError(error?: any, mngError?: MngError): MngError {\n if (!mngError) {\n mngError = {\n name: error?.name ?? 'UnknownError',\n message: error.message ?? 'Unknown error'\n };\n }\n return mngError;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'boolean',\n pure: true\n})\nexport class MngBooleanPipe implements PipeTransform {\n transform(value: any, yes?: string, no?: string, icon = false): any {\n if (typeof value === 'boolean') {\n if (icon) {\n return value ? yes ?? 'pi pi-check' : no ?? 'pi pi-times';\n } else {\n return value ? yes ?? 'general.yes' : no ?? 'general.no';\n }\n } else {\n return value;\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {EnumType} from '../types';\nimport {EnumUtil, TypeUtil} from '../utils';\n\n@Pipe({\n name: 'enum',\n pure: true\n})\nexport class MngEnumPipe implements PipeTransform {\n transform(value: unknown, enumObj: EnumType | undefined, i18nPath?: string | null, nameAsValue = false): any {\n if (!value || (typeof value !== 'number' && typeof value !== 'string') || !enumObj) {\n return value;\n }\n const enumConstantName = nameAsValue ? value : EnumUtil.getConstantNameFromEnumObject(enumObj, value) ?? value;\n if (typeof i18nPath === 'undefined') {\n i18nPath = TypeUtil.findEnumName(enumObj as EnumType);\n }\n return i18nPath ? `${i18nPath}.${enumConstantName}` : enumConstantName;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {ModelDescriptor} from '../descriptors';\nimport {I18nUtils} from '../utils';\n\n@Pipe({\n name: 'i18nProperty',\n pure: true\n})\nexport class MngI18nPropertyPipe implements PipeTransform {\n transform(property: string, model: ModelDescriptor<any>): any {\n return I18nUtils.Type.getPropertyKey(model.typeName, property);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {ActionData} from '../components/action/models';\nimport {ModelDescriptor} from '../descriptors';\nimport {IdType} from '../types';\n\n@Pipe({\n name: 'linkFormatter',\n pure: true\n})\nexport class MngLinkFormatterPipe implements PipeTransform {\n private parseUrl(s: string, itemId?: IdType, itemAny?: any, model?: ModelDescriptor<any> | null, actionData?: ActionData): any {\n if (s === ':itemId') {\n return itemId!;\n } else if (model && s.startsWith(`:${model.typeName}.`)) {\n return itemAny[s.substring(model.typeName.length + 2)] ?? '';\n } else if (s.startsWith(':')) {\n return actionData?.[s.substring(1)] ?? '';\n } else {\n return s;\n }\n }\n\n transform(value: string | string[], itemId?: IdType, item?: any, model?: ModelDescriptor<any> | null, actionData?: ActionData): any {\n const itemAny = (item ?? {}) as any;\n if (typeof value === 'string') {\n return value.split('/').map(s => this.parseUrl(s, itemId, itemAny, model, actionData));\n } else {\n const transformedItems: string[] = [];\n value.forEach(val => transformedItems.push(...val.split('/').map(s => this.parseUrl(s, itemId, itemAny, model, actionData))));\n return transformedItems;\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n/**\n * Imitation of JSONPath Syntax. Supports:\n * - Root object notation with '$'\n * - Dot notation (e.g.: $.foo.bar), no bracket notation for properties\n * - Array notation (e.g.: [0])\n */\n@Pipe({\n name: 'jsonPath',\n pure: true\n})\nexport class JsonPathPipe implements PipeTransform {\n transform(value: any, path = ''): any {\n if (path === '$') {\n // only return the root\n return value;\n }\n\n // Check for leading root object notation\n if (path.startsWith('$')) {\n path = path.substring(1);\n }\n\n // Check for leading .\n if (path.startsWith('.')) {\n path = path.substring(1);\n }\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\n if (!p.length) {\n // empty path, return current value\n return currValue;\n }\n\n const leftBracketIdx = p.indexOf('[');\n if (leftBracketIdx >= 0 && p.endsWith(']')) {\n // should be reference to array\n const arrayPath = p.substring(0, leftBracketIdx);\n const arrayIdx = +p.substring(leftBracketIdx + 1, p.length - 1);\n const array = currValue[arrayPath];\n console.log(arrayPath, arrayIdx, array);\n if (Array.isArray(array)) {\n if (arrayIdx >= 0 && arrayIdx < array.length) {\n // valid index, continue on the path\n currValue = array[arrayIdx];\n continue;\n } else {\n console.warn(`Path ${path} array index at ${p} is not within valid array range`, value);\n }\n } else {\n console.warn(`Path ${path} array at ${p} is not a valid array`, value);\n }\n\n return undefined;\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 value[path];\n }\n }\n}\n","import {HttpErrorResponse} from '@angular/common/http';\nimport {Inject, Injectable, Injector, Type} from '@angular/core';\nimport {ActivatedRoute, Router, UrlTree} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Confirmation, ConfirmationService} from 'primeng/api';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {Observable, from, mergeMap, of, switchMap, throwError} from 'rxjs';\nimport {catchError, filter, first, map} from 'rxjs/operators';\n\nimport {ActionContext, ActionContextValidation, ActionInstance, ActionInstanceStateEnum, ActionParameters, IActionConfirmationService} from '../components/action/models';\nimport {MngTableCellClickEvent} from '../components/tableview/models';\nimport {IDataProvider, IEditorDataProvider} from '../data-providers';\nimport {ActionDescriptor, ActionEditorDescriptor, TableDescriptor} from '../descriptors';\nimport {ActionActivationTriggerEnum, ActionEditorDialogSizeEnum, ActionTypeEnum} from '../descriptors/types';\nimport {MngError} from '../models';\nimport {MngLinkFormatterPipe} from '../pipes';\nimport {I18nUtils, NotificationUtil} from '../utils';\nimport {MngConfigurationService} from './configuration.service';\nimport {MngErrorMapperService} from './error-mapper.service';\nimport {MngNavigationService} from './navigation.service';\nimport {ACTION_EDITOR_DIALOG_COMPONENT_SETTING} from './tokens';\n\n@Injectable()\nexport class MngActionExecutorService {\n private debug = false;\n\n constructor(\n private injector: Injector,\n private router: Router,\n private dialogService: DialogService,\n private confirmationService: ConfirmationService,\n private translate: TranslateService,\n private configurationService: MngConfigurationService,\n private navigationService: MngNavigationService,\n private errorMapper: MngErrorMapperService,\n private linkFormatter: MngLinkFormatterPipe,\n @Inject(ACTION_EDITOR_DIALOG_COMPONENT_SETTING) private defaultEditorDialogComponent: Type<any>\n ) {\n // this.debug = true;\n }\n\n public prepareActionContextValidation<T, S>(action: ActionDescriptor<T>, parameters: ActionParameters<T>, dataProvider?: IDataProvider<T, S>): ActionContextValidation<T, S> {\n const ctxDataProvider = dataProvider ?? action.dataProvider ?? parameters.viewContainer?.getDataProvider();\n const ctx = new ActionContextValidation<T, S>(action, parameters, ctxDataProvider, this.getDataProviderService(ctxDataProvider) ?? undefined);\n return ctx;\n }\n\n public prepareActionContext<T, S>(\n instance: ActionInstance<T, S>,\n parameters: ActionParameters<T>,\n dataProvider?: IDataProvider<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<T, S> {\n const ctxDataProvider = dataProvider ?? instance.action.dataProvider ?? parameters.viewContainer?.getDataProvider();\n const ctx = new ActionContext<T, S>(instance, parameters, 'run', ctxDataProvider, this.getDataProviderService(ctxDataProvider) ?? undefined);\n ctx.previousActionInstance = previousActionInstance;\n instance.newContext(ctx);\n return ctx;\n }\n\n /**\n * Prepares action exec 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 viewContainer View container/service.\n * @param actionData Additional action data.\n */\n private prepareContextForEditor<T, S>(\n instance: ActionInstance<T, S>,\n parameters: ActionParameters<T>,\n functionName: 'submit' | 'fetch',\n dataProvider?: IEditorDataProvider<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<T, S> {\n const editorAction = instance.action as ActionEditorDescriptor<T>;\n let ctxDataProvider = dataProvider;\n if (!ctxDataProvider && editorAction.dataProvider) {\n ctxDataProvider = editorAction.dataProvider;\n }\n if (!ctxDataProvider) {\n const viewContainerDataProvider = parameters.viewContainer?.getDataProvider();\n if (viewContainerDataProvider) {\n ctxDataProvider = viewContainerDataProvider as IEditorDataProvider<T, S>;\n }\n }\n const ctx = new ActionContext<T, S>(instance, parameters, functionName, ctxDataProvider, this.getDataProviderService(ctxDataProvider) ?? undefined);\n ctx.previousActionInstance = previousActionInstance;\n instance.newContext(ctx);\n return ctx;\n }\n\n /**\n * Runs action context by submitting execution results/errors to context, watching over instance results/errors, displaying notifications,\n * running next/error action and triggering dismiss of action.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @return Action context for submit (=run) function.\n */\n public runActionContext<T, S>(ctx: ActionContext<T, S>): Observable<T | null | undefined> {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n let actionEditor: ActionEditorDescriptor<T>;\n\n let fnObs: (ctx: ActionContext<T, S>) => Observable<T | null | undefined>;\n switch (ctx.functionName) {\n case 'submit':\n actionEditor = ctx.instance.action as ActionEditorDescriptor<T>;\n if (typeof actionEditor.submitFunction !== 'function') {\n return throwError(() => new Error(`Submit function for action ${actionEditor.actionNameLong} cannot be invoked.`));\n }\n fnObs = actionEditor.submitFunction;\n break;\n case 'fetch':\n actionEditor = ctx.instance.action as ActionEditorDescriptor<T>;\n fnObs = actionEditor.fetchFunction;\n break;\n case 'run':\n default:\n fnObs = ctx.instance.action.runFunction;\n break;\n }\n\n const retObs = of(void 0).pipe(\n first(),\n switchMap(() => {\n if (isMainRunFn) {\n // if main run function, also set loading to true\n ctx.instance.state = ActionInstanceStateEnum.RunStart;\n ctx.instance.isRunLoadingSubject.next(true);\n } else {\n ctx.instance.state = ActionInstanceStateEnum.FetchStart;\n }\n // start context execution to mark execution loading\n ctx.executionStart();\n\n return fnObs(ctx);\n }),\n mergeMap(runResult => {\n // set next state depending on run\n ctx.instance.state = isMainRunFn ? ActionInstanceStateEnum.RunEnd : ActionInstanceStateEnum.FetchEnd;\n // set execution result\n ctx.executionNext(runResult, isMainRunFn);\n\n if (isMainRunFn) {\n // set instance final result on main run execution\n ctx.instance.result = runResult;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle notification\n if (ctx.instance.action.hasRunNotificationSuccess) {\n ctx.notification = NotificationUtil.actionNotificationSuccess(\n this.translate,\n ctx.instance.action,\n ctx.functionName,\n ctx.instance.action.runNotificationSuccessTitle,\n ctx.instance.action.runNotificationSuccessMessage,\n ctx.parameters.viewContainer ?? undefined,\n ctx.parameters?.item\n );\n }\n\n // handle possible after run action\n if (ctx.instance.action.afterRunAction) {\n // mark new state for next action start\n ctx.instance.state = ActionInstanceStateEnum.NextActionStart;\n const nextActionInstance = this.activateAction(\n ctx.instance.action.afterRunAction,\n new ActionParameters(ctx.parameters.itemId, runResult)\n .withActionData(ctx.parameters.actionData)\n .withRoute(ctx.parameters.route)\n .withSourceComponent(ctx.parameters.sourceComponent)\n .withViewContainer(ctx.parameters.viewContainer),\n undefined,\n ctx.instance as ActionInstance<unknown, unknown>\n );\n ctx.instance.nextActionInstance = nextActionInstance;\n\n // finish current action when next action finishes\n return nextActionInstance.state$.pipe(\n filter(state => state >= ActionInstanceStateEnum.FinishSuccess),\n map(() => {\n ctx.instance.state = ActionInstanceStateEnum.NextActionEnd;\n return runResult;\n })\n );\n }\n }\n\n return of(runResult);\n }),\n map(runResult => {\n if (isMainRunFn) {\n // deactivate action\n this.deactivateAction(ctx.instance);\n }\n return runResult;\n }),\n catchError(err => {\n // transform error to mng action error\n const actionError = this.toMngActionError(err);\n\n // set instance state to error\n ctx.instance.state = isMainRunFn ? ActionInstanceStateEnum.RunError : ActionInstanceStateEnum.FetchError;\n // mark execution error on context\n ctx.executionError(actionError);\n\n let errorObs = of(void 0);\n if (isMainRunFn) {\n ctx.instance.error = err;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle error notification\n if (ctx.instance.action.hasRunNotificationError) {\n actionError.notification = NotificationUtil.actionNotificationError(\n this.translate,\n ctx.instance.action,\n actionError,\n ctx.functionName,\n ctx.parameters.viewContainer ?? undefined,\n ctx.parameters.item\n );\n }\n\n // handle possible error action if run\n if (isMainRunFn && ctx.instance.action.onRunErrorAction) {\n // cannot start with trigger, because routing might be problematic (lousing previous results etc.)\n const errorActionInstance = this.activateAction(\n ctx.instance.action.onRunErrorAction,\n new ActionParameters(ctx.parameters.itemId, ctx.parameters.item)\n .withActionData(ctx.parameters.actionData)\n .withRoute(ctx.parameters.route)\n .withSourceComponent(ctx.parameters.sourceComponent)\n .withViewContainer(ctx.parameters.viewContainer)\n );\n ctx.instance.errorActionInstance = errorActionInstance;\n errorObs = errorActionInstance.state$.pipe(\n filter(state => state >= ActionInstanceStateEnum.FinishSuccess),\n map(() => void 0)\n );\n }\n }\n\n // liste and map only to mark instance state as finished error state\n return errorObs.pipe(\n map(() => {\n // deactivate action\n this.deactivateAction(ctx.instance);\n // rethrow error to propagate furher\n throw actionError;\n })\n );\n })\n );\n\n retObs.subscribe({\n next: res => {\n if (this.debug) {\n console.debug(`ActionContext ${ctx.contextLongName} execution next event`, res);\n }\n },\n error: err => {\n if (this.debug) {\n console.debug(`ActionContext ${ctx.contextLongName} execution error event`, err);\n }\n }\n });\n\n return retObs;\n }\n\n /**\n * Runs editor action's submit (=main run) function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @return Action context for submit (=run) function.\n */\n public runEditorSave<T, S>(\n action: ActionEditorDescriptor<T>,\n parameters: ActionParameters<T>,\n dataProvider?: IEditorDataProvider<T, S>,\n instance?: ActionInstance<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<T, S> {\n if (!instance) {\n // create new instance if non provided\n instance = new ActionInstance<T, S>(action, ActionInstanceStateEnum.ActivationEnd, this.debug);\n }\n const context = this.prepareContextForEditor(instance, parameters, 'submit', dataProvider, previousActionInstance);\n this.runActionContext(context);\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 * Runs editor action's fetch function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @return Action context for fetch function.\n */\n public runEditorFetch<T, S>(\n action: ActionEditorDescriptor<T>,\n parameters: ActionParameters<T>,\n dataProvider?: IEditorDataProvider<T, S>,\n instance?: ActionInstance<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<T, S> {\n if (!instance) {\n // create new instance if non provided\n instance = new ActionInstance<T, S>(action, ActionInstanceStateEnum.ActivationEnd, this.debug);\n }\n const context = this.prepareContextForEditor(instance, parameters, 'fetch', dataProvider, previousActionInstance);\n this.runActionContext(context);\n return context;\n }\n\n /**\n * Runs action's main run function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context run.\n * @param dataProvider Data provider for context run.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @return Action context for run function.\n */\n public runAction<T, S>(\n action: ActionDescriptor<T>,\n parameters: ActionParameters<T>,\n dataProvider?: IDataProvider<T, S>,\n instance?: ActionInstance<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<T, S> {\n if (!instance) {\n // create new instance if non provided\n instance = new ActionInstance<T, S>(action, ActionInstanceStateEnum.ActivationEnd, this.debug);\n }\n const context = this.prepareActionContext(instance, parameters, dataProvider, previousActionInstance);\n if (action.hasRunConfirmation) {\n const sourceComponent = parameters?.sourceComponent;\n if (typeof sourceComponent?.getConfirmationService !== 'function' || typeof sourceComponent?.getConfirmationServiceInstanceKey !== 'function') {\n throw new Error(`Source component ${sourceComponent} should be implementing IConfirmationService interface to be able to provide confirmation functionality.`);\n }\n\n const srcConfirmComponent = sourceComponent as IActionConfirmationService;\n let confirmParams: Confirmation = {\n key: srcConfirmComponent.getConfirmationServiceInstanceKey(action),\n acceptVisible: false,\n rejectVisible: false\n };\n\n const item = parameters.item;\n if (action.runConfirmationTitle !== null) {\n confirmParams.header = I18nUtils.Action.get(this.translate, action, 'confirm.title', action.runConfirmationTitle, item, 'general.confirmation') ?? undefined;\n }\n if (action.runConfirmationMessage !== null) {\n confirmParams.message = I18nUtils.Action.get(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 = I18nUtils.Action.get(this.translate, action, 'confirm.accept', action.runConfirmationAcceptTitle, item, 'general.yes') ?? undefined;\n confirmParams.acceptVisible = true;\n }\n if (action.runConfirmationRejectTitle !== null) {\n confirmParams.rejectLabel = I18nUtils.Action.get(this.translate, action, 'confirm.reject', action.runConfirmationRejectTitle, item, 'general.no') ?? undefined;\n confirmParams.rejectVisible = true;\n }\n\n confirmParams.accept = () => {\n instance!.state = ActionInstanceStateEnum.RunConfirmationEndAccept;\n this.runActionContext(context);\n };\n\n confirmParams.reject = () => {\n instance!.state = ActionInstanceStateEnum.RunConfirmationEndReject;\n this.deactivateAction(instance!);\n };\n\n if (action.runConfirmationConfigMapFn) {\n confirmParams = action.runConfirmationConfigMapFn(context, confirmParams);\n }\n\n context.confirmation = confirmParams;\n instance.state = ActionInstanceStateEnum.RunConfirmationStart;\n srcConfirmComponent.getConfirmationService().confirm(confirmParams);\n } else {\n this.runActionContext(context);\n }\n return context;\n }\n\n /**\n * Activates action (in case of dialog, dialog will be opened).\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for activation of action instance.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @return Action instance - if non provided in parameters, the newly created will be returned.\n */\n public activateAction<T, S>(\n action: ActionDescriptor<T>,\n parameters: ActionParameters<T>,\n instance?: ActionInstance<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionInstance<T, S> {\n if (!instance) {\n // create new instance if non provided\n instance = new ActionInstance<T, S>(action, ActionInstanceStateEnum.ActivationStart, this.debug);\n }\n instance.activationParameters = parameters;\n // start activation instance\n instance.state = ActionInstanceStateEnum.ActivationStart;\n if (action.type === ActionTypeEnum.Editor) {\n let dialogComponent = this.defaultEditorDialogComponent;\n let dialogClassName = '';\n if (action instanceof ActionEditorDescriptor) {\n dialogClassName = action.dialogClassName ?? 'mng-action-editor-dialog';\n let dialogSizeClassName = '';\n switch (action.dialogSize) {\n case ActionEditorDialogSizeEnum.ExtraSmall:\n dialogSizeClassName = 'mng-action-editor-dialog-xs';\n break;\n case ActionEditorDialogSizeEnum.Small:\n dialogSizeClassName = 'mng-action-editor-dialog-sm';\n break;\n case ActionEditorDialogSizeEnum.Large:\n dialogSizeClassName = 'mng-action-editor-dialog-lg';\n break;\n case ActionEditorDialogSizeEnum.ExtraLarge:\n dialogSizeClassName = 'mng-action-editor-dialog-xl';\n break;\n case ActionEditorDialogSizeEnum.Normal:\n default:\n break;\n }\n if (dialogSizeClassName.length) {\n dialogClassName += ` ${dialogSizeClassName}`;\n }\n if (action.editorComponent) {\n dialogComponent = action.editorComponent;\n }\n }\n const dialogConfig: DynamicDialogConfig = {\n data: {},\n styleClass: dialogClassName\n };\n dialogConfig.data.actionInstance = instance;\n dialogConfig.data.previousActionInstance = previousActionInstance;\n const dialogRef = this.dialogService.open(dialogComponent, dialogConfig);\n dialogRef.onClose.pipe(first()).subscribe(() => {\n this.deactivateAction(instance!, true);\n });\n instance.activationDialogRef = dialogRef;\n return instance;\n } else {\n // directly execute action\n instance.state = ActionInstanceStateEnum.ActivationEnd;\n const context = this.runAction<T, S>(action, parameters, undefined, instance, previousActionInstance);\n return context.instance;\n }\n }\n\n /**\n * Deactivates action by choosing final state, closing dialog and completing all subjects in instance and contexts.\n *\n * @param instance Action instance.\n * @param fromDialogListener Deactivation called from dialog listener, in this case deactivation happens only if true.\n */\n public deactivateAction<T, S>(instance: ActionInstance<T, S>, fromDialogListener = false) {\n if (!fromDialogListener && instance.state >= ActionInstanceStateEnum.FinishSuccess) {\n if (this.debug) {\n console.debug(`ActionInstance ${instance.instanceLongName} already finished`);\n }\n return;\n }\n\n let finalState: ActionInstanceStateEnum;\n if (typeof instance.result !== 'undefined') {\n finalState = ActionInstanceStateEnum.FinishSuccess;\n } else if (typeof instance.error !== 'undefined') {\n finalState = ActionInstanceStateEnum.FinishError;\n } else {\n finalState = ActionInstanceStateEnum.FinishDismissed;\n }\n\n if (instance.action.type === ActionTypeEnum.Editor) {\n const hasDialog = typeof instance.activationDialogRef !== 'undefined';\n if (hasDialog && !fromDialogListener) {\n if (finalState === ActionInstanceStateEnum.FinishSuccess) {\n // if state is finish and not called from dialog listener, close the dialog first which will retrigger this function, then finish it\n instance.activationDialogRef!.close(instance.result);\n }\n // error and dismissed must both have fromDialogListener to be able to finish\n return;\n }\n }\n\n // set final state on instance\n instance.state = finalState;\n // complete all subjects\n instance.finish();\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 * @param tableDescriptor Table descriptor.\n * @param dataKeyProperty Data key property.\n */\n public triggerRowClickAction<T>(\n action: ActionDescriptor<T>,\n event: MngTableCellClickEvent<T>,\n route?: ActivatedRoute,\n tableDescriptor?: TableDescriptor<T>,\n dataKeyProperty?: string\n ) {\n const idProperty = dataKeyProperty ?? tableDescriptor?.dataKeyProperty ?? action?.model?.idPropertyName ?? dataKeyProperty;\n if (!idProperty) {\n throw new Error(`Row click action ${action.actionNameLong} can not be triggered, because id property could not be found.`);\n }\n const rowItem = event?.rowItem as any;\n return this.triggerAction(action, new ActionParameters<T>(rowItem[idProperty], event.rowItem).withRoute(route));\n }\n\n /**\n * Triggers action with parameters.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for action execution to construct new route.\n *\n * @return Action instance - if non provided in parameters, the newly created will be returned.\n */\n public triggerAction<T, S>(action: ActionDescriptor<T>, parameters: ActionParameters<T>): ActionInstance<T, S> {\n const instance = new ActionInstance<T, S>(action, undefined, this.debug);\n instance.triggerParameters = parameters;\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n const baseUrl = this.router.url.split('?')[0];\n const parsedUrl: UrlTree = this.router.parseUrl(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\n const actionUrlSegments = this.linkFormatter.transform(actionUrl, parameters.itemId, parameters.item, action.model, parameters.actionData);\n instance.triggerRouteNavigation = from(this.router.navigate([baseUrl, ...actionUrlSegments], {relativeTo: parameters.route, queryParams: parsedUrl.queryParams}));\n\n return instance;\n } else {\n instance.state = ActionInstanceStateEnum.TriggerEnd;\n return this.activateAction(action, parameters);\n }\n }\n\n /**\n * Deactivates on route triggered action by trying to reroute back to location where action was triggered.\n * @param instance Action instance.\n */\n public deactivateOnRouteTriggeredAction<T, S>(instance: ActionInstance<T, S>) {\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n return;\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 = instance.action?.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 }\n\n /**\n * Transform error of any type to mng error by using error mapper that could be provided by final project.\n * @param error error of any type.\n *\n * @return mapped MngError.\n */\n public toMngActionError(error?: any): MngError {\n const actionError: MngError = {\n name: error?.name ?? 'UnknownError',\n message: error?.message ?? 'Unknown error',\n cause: error\n };\n if (error instanceof HttpErrorResponse) {\n actionError.status = error.status;\n actionError.statusDescription = error.statusText;\n actionError.url = error.url ?? undefined;\n }\n return this.errorMapper.toMngError(error, actionError);\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {Title} from '@angular/platform-browser';\nimport {ActivatedRouteSnapshot, NavigationEnd, Router} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {PrimeNGConfig} from 'primeng/api';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {MngModuleConfig} from '../config/models';\nimport {FilterMatchModeEnum} from '../descriptors/types';\nimport {IUser, MngMenuItem} from '../models';\nimport {MngBreadcrumbMenuItem, MngRouterData} from '../router/models';\nimport {MNG_BROWSER_STORAGE_IT, MNG_MODULE_CONFIG_IT} from './tokens';\n\n@Injectable()\nexport class MngCommonsService {\n // internal\n private routerEventsSubscription?: Subscription;\n private translateLangChangeSubscription?: Subscription;\n\n // menu\n private _menuMode: 'static' | 'sidebar' | 'slim' | 'overlay' = 'sidebar';\n private _menuModeSubject: Subject<'static' | 'sidebar' | 'slim' | 'overlay'> = new BehaviorSubject(this._menuMode);\n private _menuItems: MngMenuItem[] = [];\n private _menuPinEnabled = false;\n private _menuActiveKeySubject = new Subject<string>();\n private _menuResetSubject = new Subject();\n\n // breadcrumbs\n private readonly breadcrumbHomeSubject = new BehaviorSubject<MngMenuItem | null>({\n icon: 'pi pi-home',\n routerLink: '/'\n });\n private readonly breadcrumbsSubject = new BehaviorSubject<MngMenuItem[]>([]);\n private breadcrumbsTranslateSubscription?: Subscription;\n private breadcrumbHomeTranslateSubscription?: Subscription;\n\n // visual\n private _colorScheme: 'light' | 'dark' = 'light';\n\n // user\n private _user?: IUser;\n private userSubject: Subject<IUser | undefined> = new ReplaySubject(1);\n private _userRoles: Array<string> = [];\n private userRolesSubject: Subject<Array<string>> = new BehaviorSubject<Array<string>>([]);\n\n constructor(\n private router: Router,\n private primengConfig: PrimeNGConfig,\n private translate: TranslateService,\n private titleService: Title,\n @Inject(MNG_MODULE_CONFIG_IT) private moduleConfig: MngModuleConfig,\n @Inject(MNG_BROWSER_STORAGE_IT) private localStorage: Storage\n ) {}\n\n // APP section\n\n public get appName() {\n return this.moduleConfig?.app?.name ?? 'app.name';\n }\n\n public get appOwner() {\n return this.moduleConfig?.app?.owner ?? 'app.owner';\n }\n\n public get appLogoLight() {\n return this.moduleConfig?.app?.logoPathLight ? this.moduleConfig.app.logoPathLight : this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png';\n }\n\n public get appLogoDark() {\n return this.moduleConfig?.app?.logoPathDark ? this.moduleConfig.app.logoPathDark : this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png';\n }\n\n public get appLogoNameLight() {\n return this.moduleConfig?.app?.logoNamePathLight\n ? this.moduleConfig.app.logoNamePathLight\n : this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png';\n }\n\n public get appLogoNameDark() {\n return this.moduleConfig?.app?.logoNamePathDark ? this.moduleConfig.app.logoNamePathDark : this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png';\n }\n\n public get appLanguages() {\n return this.moduleConfig?.app?.languages ?? ['en'];\n }\n\n public get appLanguage(): string {\n const lang = this.localStorage.getItem('lang');\n if (lang) {\n return lang;\n }\n const browserLang = this.translate.getBrowserLang();\n if (browserLang && this.appLanguages.some(l => l === browserLang)) {\n this.appLanguage = browserLang;\n return browserLang;\n }\n const defaultLanguage = this.appLanguages?.length > 0 ? this.appLanguages[0] : 'en';\n this.appLanguage = defaultLanguage;\n return defaultLanguage;\n }\n\n public set appLanguage(language: string) {\n if (this.appLanguages.some(l => l === language)) {\n this.localStorage.setItem('lang', language);\n this.translate.use(language);\n }\n }\n\n public get appVersion() {\n return this.moduleConfig?.app?.version;\n }\n\n // MENU section\n\n public get menuModeIsStatic() {\n return this._menuMode === 'static';\n }\n\n public get menuModeIsStatic$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'static'));\n }\n\n public get menuModeIsOverlay() {\n return this._menuMode === 'overlay';\n }\n\n public get menuModeIsOverlay$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'overlay'));\n }\n\n public get menuModeIsSlim() {\n return this._menuMode === 'slim';\n }\n\n public get menuModeIsSlim$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'slim'));\n }\n\n public get menuModeIsSidebar() {\n return this._menuMode === 'sidebar';\n }\n\n public get menuModeIsSidebar$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'sidebar'));\n }\n\n public get menuActiveKey$(): Observable<string> {\n return this._menuActiveKeySubject.asObservable();\n }\n\n public get menuReset$(): Observable<any> {\n return this._menuResetSubject.asObservable();\n }\n\n public get menuItems() {\n return this._menuItems;\n }\n\n public set menuItems(menuItems: MngMenuItem[]) {\n this._menuItems = menuItems;\n }\n\n public get menuPinEnabled() {\n return this._menuPinEnabled;\n }\n\n // BREADCRUMB section\n public get breadcrumbHome$() {\n return this.breadcrumbHomeSubject.asObservable();\n }\n\n public get breadcrumbs$() {\n return this.breadcrumbsSubject.asObservable();\n }\n\n // VISUAL section\n\n public get colorSchemeIsLight() {\n return this._colorScheme === 'light';\n }\n\n public get colorSchemeIsDark() {\n return this._colorScheme === 'dark';\n }\n\n // USER section\n\n public get user() {\n return this._user;\n }\n\n public set user(user: IUser | undefined) {\n this._user = user;\n this.userSubject.next(user);\n }\n\n public get user$() {\n return this.userSubject.asObservable();\n }\n\n public get userRoles() {\n return this._userRoles;\n }\n\n public set userRoles(roles: Array<string>) {\n this._userRoles = roles;\n this.userRolesSubject.next(roles);\n }\n\n public get userRoles$() {\n return this.userRolesSubject.asObservable();\n }\n\n public reset() {\n this._menuMode = this.moduleConfig?.menu?.mode ?? 'sidebar';\n this._menuModeSubject.next(this._menuMode);\n this._menuItems = this.moduleConfig?.menu?.menuItems ?? [];\n this._menuPinEnabled = this.moduleConfig?.menu?.pinEnabled ?? false;\n\n // visual\n this._colorScheme = this.moduleConfig?.app?.colorScheme ?? 'light';\n\n // ripple\n this.primengConfig.ripple = true;\n this.primengConfig.filterMatchModeOptions = {\n text: [FilterMatchModeEnum.Contains, FilterMatchModeEnum.Equals, FilterMatchModeEnum.NotEquals, FilterMatchModeEnum.StartsWith, FilterMatchModeEnum.EndsWith],\n numeric: [FilterMatchModeEnum.Equals, FilterMatchModeEnum.NotEquals, FilterMatchModeEnum.LessThan, FilterMatchModeEnum.GreaterThan],\n date: [FilterMatchModeEnum.DateIs, FilterMatchModeEnum.DateIsNot, FilterMatchModeEnum.DateBefore, FilterMatchModeEnum.DateAfter]\n };\n\n // translate\n this.translate.langs = this.appLanguages;\n this.translate.use(this.appLanguage);\n this.translate.get('mngPrime').subscribe(value => this.primengConfig.setTranslation(value));\n\n this.routerEventsSubscription?.unsubscribe();\n this.routerEventsSubscription = this.router.events\n .pipe(\n // Filter the NavigationEnd events as the breadcrumb is updated only when the route reaches its end\n filter(event => event instanceof NavigationEnd)\n )\n .subscribe(() => {\n this.updateBreadcrumbs();\n this.setPageTitle();\n });\n this.translateLangChangeSubscription?.unsubscribe();\n this.translateLangChangeSubscription = this.translate.onLangChange.subscribe(() => {\n this.updateBreadcrumbs();\n this.setPageTitle();\n });\n }\n\n // MENU actions\n\n menuChangeActiveKey(key: string) {\n this._menuActiveKeySubject.next(key);\n }\n\n menuReset() {\n this._menuResetSubject.next(null);\n }\n\n // BREADCRUMB actions\n\n private updateBreadcrumbs() {\n if (this.breadcrumbsTranslateSubscription) {\n this.breadcrumbsTranslateSubscription.unsubscribe();\n this.breadcrumbsTranslateSubscription = undefined;\n }\n if (this.breadcrumbHomeTranslateSubscription) {\n this.breadcrumbHomeTranslateSubscription.unsubscribe();\n this.breadcrumbHomeTranslateSubscription = undefined;\n }\n\n const rootRoute = this.router.routerState.snapshot.root;\n\n const homeBreadcrumb = this.generateHomeBreadcrumb(rootRoute);\n if (homeBreadcrumb) {\n if (homeBreadcrumb.label) {\n this.breadcrumbHomeTranslateSubscription = this.translate.get(homeBreadcrumb.label).subscribe(i18n => {\n homeBreadcrumb.label = i18n;\n this.breadcrumbHomeSubject.next(homeBreadcrumb);\n });\n } else {\n this.breadcrumbHomeSubject.next(homeBreadcrumb);\n }\n }\n\n const breadcrumbs: MngMenuItem[] = [];\n this.generateBreadcrumbs(rootRoute, [], breadcrumbs);\n\n const i18nKeys: Array<string> = breadcrumbs.filter(b => typeof b.label === 'string').map(b => b.label!);\n if (i18nKeys.length > 0) {\n this.breadcrumbsTranslateSubscription = this.translate.get(i18nKeys).subscribe(i18n => {\n // Construct the breadcrumb hierarchy\n breadcrumbs.forEach(b => {\n if (b.label && i18n[b.label]) {\n b.label = i18n[b.label];\n }\n });\n\n // Emit the new breadcrumbs\n this.breadcrumbsSubject.next(breadcrumbs);\n });\n } else {\n this.breadcrumbsSubject.next(breadcrumbs);\n }\n }\n\n private generateHomeBreadcrumb(route: ActivatedRouteSnapshot | null): MngMenuItem | null {\n if (!route) {\n return null;\n }\n\n const routeData = route.data as MngRouterData;\n const breadcrumbRouteData = routeData?.breadcrumb;\n if (breadcrumbRouteData && typeof breadcrumbRouteData === 'object' && 'isHome' in breadcrumbRouteData) {\n if (breadcrumbRouteData.isHome === false) {\n return null;\n }\n const breadcrumb = this.createBreadcrumb('/', breadcrumbRouteData, true);\n if (breadcrumb) {\n if (typeof breadcrumb.icon === 'undefined') {\n breadcrumb.icon = 'pi pi-home';\n }\n return breadcrumb;\n }\n } else {\n return this.generateHomeBreadcrumb(route.firstChild);\n }\n return null;\n }\n\n private generateBreadcrumbs(route: ActivatedRouteSnapshot | null, parentUrlSegments: string[], breadcrumbs: MngMenuItem[]) {\n if (!route) {\n return;\n }\n\n const routeData = route.data as MngRouterData;\n const routeUrlSegments = parentUrlSegments.concat(route.url.map(url => url.path));\n const routeUrl = `/${routeUrlSegments.join('/')}`;\n if (routeData?.breadcrumb) {\n const breadcrumbRouteData = routeData.breadcrumb;\n\n if (Array.isArray(breadcrumbRouteData)) {\n for (const breadcrumbRouteDataItem of breadcrumbRouteData) {\n const breadcrumb = this.createBreadcrumb(routeUrl, breadcrumbRouteDataItem);\n if (breadcrumb) {\n breadcrumbs.push(breadcrumb);\n }\n }\n } else if (typeof breadcrumbRouteData === 'function') {\n breadcrumbs.push(...breadcrumbRouteData(routeUrl, route));\n } else {\n const breadcrumb = this.createBreadcrumb(routeUrl, breadcrumbRouteData);\n if (breadcrumb) {\n breadcrumbs.push(breadcrumb);\n }\n }\n }\n this.generateBreadcrumbs(route.firstChild, routeUrlSegments, breadcrumbs);\n }\n\n private createBreadcrumb(routeUrl: string, routeBreadcrumb: string | MngBreadcrumbMenuItem, includeHome = false): MngMenuItem | null {\n if (typeof routeBreadcrumb === 'string') {\n return {\n label: routeBreadcrumb,\n routerLink: routeUrl\n };\n } else {\n if (!includeHome && typeof routeBreadcrumb.isHome !== 'undefined') {\n // home should not be included\n return null;\n }\n if (typeof routeBreadcrumb.routerLink === 'undefined') {\n routeBreadcrumb.routerLink = routeUrl;\n }\n return routeBreadcrumb;\n }\n }\n\n // TITLE section\n\n public setPageTitle(title?: string) {\n let currentRoute = this.router.routerState.snapshot.root;\n while (currentRoute.firstChild) {\n currentRoute = currentRoute.firstChild;\n }\n\n const routeData = currentRoute.data as MngRouterData;\n const pageTitle = title ?? routeData.pageTitle;\n\n this.titleService.setTitle(this.formatPageTitle(pageTitle));\n }\n\n private formatPageTitle(titlePrefix?: string) {\n const titlePieces = [];\n\n if (titlePrefix) {\n titlePieces.push(this.translate.instant(titlePrefix));\n }\n\n titlePieces.push(this.translate.instant('app.name'));\n\n return titlePieces.join(' - ');\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {MessageService} from 'primeng/api';\nimport {Subject} from 'rxjs';\n\nimport {IDataProvider} from '../data-providers';\nimport {ActionDescriptor} from '../descriptors';\nimport {IViewContainer} from '../models';\n\n/**\n * Should be used with providers defined within component.\n */\n@Injectable()\nexport class MngViewContainerComponentService<T, S> implements IViewContainer<T, S> {\n private _dataProvider?: IDataProvider<T, S>;\n public actions: Array<ActionDescriptor<T>> = [];\n\n private _reloadTableSubject: Subject<any> = new Subject();\n\n constructor(private messageService: MessageService) {}\n\n public set dataProvider(dataProvider: IDataProvider<T, S>) {\n this._dataProvider = dataProvider;\n }\n\n public get reloadTable() {\n return this._reloadTableSubject.asObservable();\n }\n\n public triggerTableReload(event: any) {\n this._reloadTableSubject.next(event);\n }\n\n public getMessageService(): MessageService {\n return this.messageService;\n }\n\n public getDataProvider(): IDataProvider<T, S> | undefined {\n return this._dataProvider;\n }\n}\n","import {Injectable, Injector} from '@angular/core';\nimport {ActivatedRouteSnapshot, Router} from '@angular/router';\n\nimport {Observable, combineLatest, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ActionContextValidation} from '../components/action/models';\nimport {APermissions, AuthorizationTypeEnum, Permissions} from '../security/model';\nimport {MngCommonsService} from '../services';\nimport {AuthorizationUtil} from './authorization.util';\n\n@Injectable()\nexport class MngAuthorizationService {\n constructor(private injector: Injector, private router: Router, private commons: MngCommonsService) {}\n\n public isPermitted(permissions: APermissions, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>): Observable<boolean> {\n switch (permissions.authorizationType) {\n case AuthorizationTypeEnum.All:\n return this.isPermittedAll(permissions as Permissions.All, route, actionCtx);\n case AuthorizationTypeEnum.Any:\n return this.isPermittedAny(permissions as Permissions.Any, route, actionCtx);\n case AuthorizationTypeEnum.Service:\n return this.isPermittedService(permissions as Permissions.Service, route, actionCtx);\n default:\n return this.commons.userRoles$.pipe(map(ur => AuthorizationUtil.isPermitted(permissions, ur)));\n }\n }\n\n private isPermittedAll(permission: Permissions.All, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>) {\n return combineLatest(permission.permissions.map(p => this.isPermitted(p, route, actionCtx))).pipe(map(res => res.every(ip => ip === true)));\n }\n\n private isPermittedAny(permission: Permissions.Any, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>) {\n return combineLatest(permission.permissions.map(p => this.isPermitted(p, route, actionCtx))).pipe(map(res => res.some(ip => ip === true)));\n }\n\n private isPermittedService(permission: Permissions.Service, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>) {\n const serviceInstance = this.injector.get(permission.service);\n if (!serviceInstance) {\n console.warn(`Service instance could not be retreived for type ${permission.service}`);\n return of(false);\n }\n return serviceInstance.isPermitted(route, this.router.routerState.snapshot, actionCtx);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree} from '@angular/router';\n\nimport {Observable, of} from 'rxjs';\nimport {first} from 'rxjs/operators';\n\nimport {MngRouterData} from '../router/models';\nimport {MngAuthorizationService} from './authorization.service';\n\n@Injectable()\nexport class MngAuthorizationGuard implements CanActivate {\n constructor(private authorization: MngAuthorizationService) {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const data = route.data as MngRouterData;\n\n if (data.permissions) {\n return this.authorization.isPermitted(data.permissions).pipe(first());\n } else {\n return of(true);\n }\n }\n}\n","import {ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, OnInit, Optional, Output, SimpleChanges} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfirmationService} from 'primeng/api';\nimport {Observable, ReplaySubject, Subscription, distinctUntilChanged, of} from 'rxjs';\n\nimport {MediusQueryParam} from '../../api/models';\nimport {IDataProvider} from '../../data-providers';\nimport {ActionDescriptor, ActionLinkDescriptor} from '../../descriptors';\nimport {ActionLevelEnum} from '../../descriptors/types';\nimport {IViewContainer} from '../../models';\nimport {MngRouterData} from '../../router/models';\nimport {MngAuthorizationService} from '../../security';\nimport {APermissions, Permissions} from '../../security/model';\nimport {MngActionExecutorService, MngViewContainerComponentService} from '../../services';\nimport {IdType} from '../../types';\nimport {I18nUtils} from '../../utils';\nimport {ActionData, ActionInstance, ActionParameters, IActionConfirmationService} from './models';\n\n@Component({\n selector: 'mng-action',\n templateUrl: './action.component.html',\n styleUrls: ['./action.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfirmationService]\n})\nexport class MngActionComponent<T, S> implements OnInit, OnChanges, OnDestroy, IActionConfirmationService {\n public readonly levelDefault = ActionLevelEnum.Default;\n public readonly levelPrimary = ActionLevelEnum.Primary;\n public readonly levelSecondary = ActionLevelEnum.Secondary;\n public readonly levelInfo = ActionLevelEnum.Info;\n public readonly levelHelp = ActionLevelEnum.Help;\n public readonly levelSuccess = ActionLevelEnum.Success;\n public readonly levelWarning = ActionLevelEnum.Warning;\n public readonly levelDanger = ActionLevelEnum.Danger;\n\n @HostBinding('class') hostClass = 'mng-action-button';\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 @Input() public queryParam?: MediusQueryParam;\n @Input() public dataProvider?: IDataProvider<T, S>;\n @Input('disabled') public inputDisabled: Observable<boolean> = of(false);\n @Input('loading') public inputLoading: Observable<boolean> = of(false);\n @Input('viewContainer') public viewContainerInit?: IViewContainer<T, S>;\n\n @Output('finish') public finishEventEmitter = new EventEmitter<ActionInstance<T, S>>();\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 private isVisibleSubject = new ReplaySubject<boolean>(1);\n private isVisibleSubscription?: Subscription;\n public $isVisible = this.isVisibleSubject.asObservable().pipe(distinctUntilChanged());\n private isPermittedSubject = new ReplaySubject<boolean>(1);\n private isPermittedSubscription?: Subscription;\n public $isPermitted = this.isPermittedSubject.asObservable().pipe(distinctUntilChanged());\n private isEnabledSubject = new ReplaySubject<boolean>(1);\n private isEnabledSubscription?: Subscription;\n public $isEnabled = this.isEnabledSubject.asObservable().pipe(distinctUntilChanged());\n private labelSubject = new ReplaySubject<string | null>(1);\n private labelSubscription?: Subscription;\n public $label = this.labelSubject.asObservable().pipe(distinctUntilChanged());\n private tooltipSubject = new ReplaySubject<string | null>(1);\n private tooltipSubscription?: Subscription;\n public $tooltip = this.tooltipSubject.asObservable().pipe(distinctUntilChanged());\n\n private viewContainer?: IViewContainer<T, S>;\n\n public actionLink?: ActionLinkDescriptor<T>;\n public hasNoTitle = false;\n\n private subscriptions: Subscription[] = [];\n\n private routePermissions?: APermissions;\n\n constructor(\n private route: ActivatedRoute,\n private translate: TranslateService,\n private authorization: MngAuthorizationService,\n private actionExecutor: MngActionExecutorService,\n private confirmationService: ConfirmationService,\n @Optional() private viewContainerService: MngViewContainerComponentService<T, S> | null\n ) {\n this.loadingSubject.next(false);\n }\n\n public ngOnInit() {\n this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;\n\n this.hasNoTitle = this.action.title === null;\n this.isEnabledSubject.next(true);\n this.isVisibleSubject.next(true);\n this.isPermittedSubject.next(true);\n this.labelSubject.next(null);\n this.tooltipSubject.next(null);\n\n const routeData = this.route.snapshot.data as MngRouterData;\n if (this.action instanceof ActionLinkDescriptor) {\n this.actionLink = this.action;\n }\n\n if (this.action.permissionsRouteType && routeData.tableviewPermissions) {\n if (routeData.tableviewPermissions[this.action.permissionsRouteType]) {\n this.routePermissions = routeData.tableviewPermissions[this.action.permissionsRouteType];\n }\n }\n\n this.processSubscriptions();\n\n if (this.action.className) {\n this.hostClass = this.action.className;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!(changes['item']?.firstChange ?? true) || !(changes['itemId']?.firstChange ?? true) || !(changes['actionData']?.firstChange ?? true)) {\n this.processSubscriptions();\n }\n }\n\n ngOnDestroy(): void {\n this.isVisibleSubscription?.unsubscribe();\n this.isPermittedSubscription?.unsubscribe();\n this.isEnabledSubscription?.unsubscribe();\n this.labelSubscription?.unsubscribe();\n this.tooltipSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public triggerAction(event: Event) {\n const actionData = this.actionData ? this.actionData : {};\n actionData['cmpId'] = this.cmpId;\n\n const parameters = new ActionParameters(this.itemId, this.item)\n .withActionData(actionData)\n .withQueryParam(this.queryParam)\n .withRoute(this.route)\n .withViewContainer(this.viewContainer)\n .withSourceComponent(this);\n const instance = this.actionExecutor.triggerAction(this.action, parameters);\n\n this.subscriptions.push(\n instance.result$.subscribe({\n next: () => {\n this.finishEventEmitter.next(instance);\n }\n })\n );\n this.subscriptions.push(\n instance.error$.subscribe({\n next: () => {\n this.finishEventEmitter.next(instance);\n }\n })\n );\n this.subscriptions.push(\n instance.isRunLoading$.subscribe({\n next: res => {\n this.loadingSubject.next(res);\n }\n })\n );\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 private processSubscriptions() {\n const parameters = new ActionParameters(this.itemId, this.item)\n .withActionData(this.actionData)\n .withViewContainer(this.viewContainer ?? undefined)\n .withSourceComponent(this);\n const context = this.actionExecutor.prepareActionContextValidation(this.action, parameters, this.dataProvider);\n\n if (typeof this.action.isVisibleFunction === 'function') {\n this.isVisibleSubscription?.unsubscribe();\n this.isVisibleSubscription = this.action.isVisibleFunction(context).subscribe({\n next: res => this.isVisibleSubject.next(res)\n });\n }\n if (typeof this.action.permissions !== 'undefined' || typeof this.routePermissions !== 'undefined') {\n this.isPermittedSubscription?.unsubscribe();\n const permissions =\n this.action.permissions && this.routePermissions\n ? Permissions.All.of(this.routePermissions, this.action.permissions)\n : this.routePermissions ?? this.action.permissions!;\n this.isVisibleSubscription = this.authorization.isPermitted(permissions, this.route.snapshot, context).subscribe({\n next: res => this.isPermittedSubject.next(res)\n });\n }\n if (typeof this.action.isEnabledFunction === 'function') {\n this.isEnabledSubscription?.unsubscribe();\n this.isEnabledSubscription = this.action.isEnabledFunction(context).subscribe({\n next: res => this.isEnabledSubject.next(res)\n });\n }\n\n if (!this.hasNoTitle) {\n this.labelSubscription?.unsubscribe();\n this.labelSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'title', this.action?.title ?? undefined, this.item).subscribe({\n next: i18n => this.labelSubject.next(i18n)\n });\n }\n\n this.tooltipSubscription?.unsubscribe();\n this.tooltipSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'tooltip', this.action?.tooltip ?? undefined, this.item).subscribe({\n next: i18n => this.tooltipSubject.next(i18n)\n });\n }\n}\n","<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | async)\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : actionLink.url\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"\n ($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | linkFormatter: itemId:item:action.model:actionData)\n \"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></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, Optional} 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';\n\nimport {ActionDescriptor} from '../../../descriptors';\nimport {ActionActivationTriggerEnum} from '../../../descriptors/types';\nimport {MngActionExecutorService, MngNavigationService, MngViewContainerComponentService} from '../../../services';\nimport {ActionData, ActionInstance, ActionInstanceStateEnum, ActionParameters, IActionConfirmationService} from '../models';\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 MngActionRouteComponent<T, S> implements OnInit, OnDestroy, IActionConfirmationService {\n public cmpId: string = Math.random().toString(36).substring(2);\n private actions: Array<ActionDescriptor<T>> = [];\n private activeActionInstance?: ActionInstance<T, S>;\n private dialogRef?: DynamicDialogRef;\n private dialogCloseSubscription?: Subscription;\n private subscriptions: Array<Subscription> = [];\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private confirmationService: ConfirmationService,\n private navigationService: MngNavigationService,\n private actionExecutor: MngActionExecutorService,\n @Optional() private viewContainerService: MngViewContainerComponentService<T, S> | null\n ) {}\n\n public ngOnInit() {\n this.actions = this.viewContainerService?.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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getConfirmationServiceInstanceKey(action: ActionDescriptor<any>) {\n return `actionRoute_${this.cmpId}`;\n }\n\n private activateAction(action: ActionDescriptor<T>, p: Params, qp: Params) {\n const itemId = p['itemId'];\n const actionData: ActionData = {};\n for (const key in p) {\n if (key === 'itemId') {\n continue;\n }\n actionData[key] = p[key];\n }\n for (const key in qp) {\n actionData[key] = p[key];\n }\n const instance = this.actionExecutor.activateAction(\n action,\n new ActionParameters<T>(itemId)\n .withActionData(actionData)\n .withViewContainer(this.viewContainerService ?? undefined)\n .withSourceComponent(this)\n );\n this.activeActionInstance = instance;\n\n if (instance.activationDialogRef) {\n this.dialogCloseSubscription = instance.activationDialogRef.onClose.subscribe(e => {\n const actionEv = e as T | null | undefined;\n if (instance.state === ActionInstanceStateEnum.FinishSuccess) {\n if (!this.viewContainerService) {\n console.warn(`View container service could not be found, table reload will not be triggered.`);\n }\n this.viewContainerService?.triggerTableReload(actionEv); // reload only if no error in action and\n }\n this.untriggerAction();\n });\n }\n }\n\n private untriggerAction() {\n if (this.dialogCloseSubscription) {\n this.dialogCloseSubscription.unsubscribe();\n this.dialogCloseSubscription = undefined;\n }\n this.actionExecutor.deactivateOnRouteTriggeredAction(this.activeActionInstance!);\n this.activeActionInstance = 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 {ComponentRef, Directive, EventEmitter, Input, OnInit, Output, Type, ViewContainerRef} from '@angular/core';\n\nimport {IColumnValueComponent} from '../models';\n\n@Directive({\n selector: '[mngComponent]'\n})\nexport class MngComponentDirective<C> implements OnInit {\n @Input('mngComponent') component!: Type<C>;\n @Input() inputs?: {[key: string]: any};\n @Output('instanceCreated') private componentInstanceEventEmitter = new EventEmitter<C>();\n\n public componentRef!: ComponentRef<C>;\n\n constructor(public viewContainerRef: ViewContainerRef) {}\n\n ngOnInit() {\n this.viewContainerRef.clear();\n this.componentRef = this.viewContainerRef.createComponent<any>(this.component);\n\n if (this.inputs) {\n if (this.isCmpInstanceOfColumnValue(this.componentRef.instance)) {\n this.componentRef.instance.setColumnValue(this.inputs['value'], this.inputs['item'], this.inputs['descriptor']);\n } else {\n const instanceAny = this.componentRef as any;\n for (const input in this.inputs) {\n instanceAny[input as keyof object] = this.inputs[input];\n }\n }\n }\n\n this.componentInstanceEventEmitter.next(this.componentRef.instance);\n }\n\n private isCmpInstanceOfColumnValue(cmp: any): cmp is IColumnValueComponent<any> {\n return typeof cmp.setColumnValue === 'function';\n }\n}\n","import {Directive, Input, TemplateRef, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[mngTemplate]'\n})\nexport class MngTemplateDirective {\n @Input() type!: string;\n @Input('mngTemplate') name!: string;\n\n constructor(public template: TemplateRef<any>, private viewContainerRef: ViewContainerRef) {}\n\n public getType(): string {\n return this.name;\n }\n\n public getViewContainerRef(): ViewContainerRef {\n return this.viewContainerRef;\n }\n}\n","import {ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList, ViewChild} from '@angular/core';\nimport {AbstractControl, FormArray, FormGroup} from '@angular/forms';\n\nimport {FormlyFieldConfig, FormlyFormOptions} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {Observable, Subscription, of} from 'rxjs';\n\nimport {EditorDescriptor} from '../../../descriptors';\nimport {MngTemplateDirective} from '../../../directives';\nimport {MngFormlyFieldConfig} from '../../../models';\nimport {EditorFormlyUtil, NotificationUtil} from '../../../utils';\nimport {MngFormEditorSubmitEvent} from '../models';\n\n@Component({\n selector: 'mng-form-editor',\n templateUrl: './form-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormEditorComponent<T> implements OnInit, OnDestroy {\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('formSubmit') public formSubmitEventEmitter = new EventEmitter<MngFormEditorSubmitEvent<T>>();\n\n // content and view queries\n @ContentChildren(MngTemplateDirective) public templates!: QueryList<MngTemplateDirective>;\n @ViewChild('submitButton') 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(private translateService: TranslateService) {}\n\n public ngOnInit() {\n this.resetFormModel(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 ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n public submit() {\n this.submitButtonElementRef?.nativeElement.click();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onSubmit(event: Event) {\n this.formOptions.formState.submittedOn = Date.now();\n this.formMessages = [];\n\n const formSubmitItem = this.getFormValue();\n if (this.form.valid) {\n this.formSubmitEventEmitter.next(new MngFormEditorSubmitEvent(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.props as MngFormlyFieldConfig).props.label) + '_invalid'] = isInvalid;\n }\n }\n const event = new MngFormEditorSubmitEvent(formSubmitItem);\n event.success = false;\n this.formMessages.push(NotificationUtil.getFormEditorWarningMessage(this.translateService, 'mngEditor.invalidFormToastTitle', 'mngEditor.invalidFormToastMessage'));\n this.formSubmitEventEmitter.next(event);\n }\n }\n\n public getFormValue(): T {\n const formValue = this.form.getRawValue();\n this.descriptor.fields.forEach(field => {\n if (field && field.setter) {\n const splitPath = field.property.split('.');\n let fieldValue = formValue;\n for (let i = 0; i < splitPath.length; i++) {\n const currentSubPath = splitPath[i];\n if (typeof fieldValue[currentSubPath] !== 'object') {\n fieldValue[currentSubPath] = {};\n }\n\n fieldValue = fieldValue[currentSubPath];\n }\n field.setter(formValue, fieldValue);\n }\n });\n return formValue;\n }\n\n public getFormField(key: string) {\n return this.findFormField(this.form, key.split('.'));\n }\n\n public setFormFieldValue(key: string, value: any) {\n const control = this.getFormField(key);\n if (control) {\n control.setValue(value);\n } else {\n console.warn(`Value was not set, because field ${key} was not found.`);\n }\n }\n\n public patchFormFieldValue(key: string, value: any) {\n const control = this.getFormField(key);\n if (control) {\n control.patchValue(value);\n } else {\n console.warn(`Value was not set, because field ${key} was not found.`);\n }\n }\n\n public resetFormFieldValue(key: string, value?: any) {\n const control = this.getFormField(key);\n if (control) {\n control.reset(value);\n } else {\n console.warn(`Value was not set, because field ${key} was not found.`);\n }\n }\n\n private findFormField(control: AbstractControl, keyPath: string[]): AbstractControl | null {\n if (keyPath.length === 0) {\n return control;\n }\n if (keyPath.length === 1) {\n return control.get(keyPath[0]);\n }\n let nextControl: AbstractControl | null = null;\n if (control instanceof FormGroup) {\n nextControl = control.get(keyPath[0]);\n } else if (control instanceof FormArray) {\n const idx = +keyPath[0];\n if (!isNaN(idx)) {\n nextControl = control.at(idx);\n }\n }\n\n if (!control) {\n return null;\n }\n return this.findFormField(nextControl!, keyPath.slice(1));\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 resetFormModel(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 const splitPath = field.property.split('.');\n let currentObject = formModel;\n\n for (let i = 0; i < splitPath.length; i++) {\n const currentSubPath = splitPath[i];\n if (i === splitPath.length - 1) {\n currentObject[currentSubPath] = field.getter(item);\n } else {\n if (typeof currentObject[currentSubPath] !== 'object') {\n currentObject[currentSubPath] = {};\n }\n\n currentObject = currentObject[currentSubPath];\n }\n }\n }\n });\n if (typeof this.formOptions.resetModel === 'function') {\n // 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\" [enableService]=\"false\"></p-messages>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\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 MngFormlyFieldWrapperComponent extends FieldWrapper {}\n","<div [class]=\"to?.['descriptor']?.['fieldClassName'] ?? 'field'\">\n <label *ngIf=\"to?.label\" [for]=\"key\" [class]=\"to?.['descriptor']?.['labelClassName'] ?? ''\"\n >{{ to!.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label\n >\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"to?.['descriptor']?.['helpText']\">{{ to?.['descriptor']?.['helpText'] | translate }}</small>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n</div>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\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 MngFormlyTableWrapperComponent extends FieldWrapper {}\n","<div [class]=\"to?.['descriptor']?.['fieldClassName'] ?? 'field table'\">\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"to?.['descriptor']?.['helpText']\">{{ to?.['descriptor']?.['helpText'] | translate }}</small>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n</div>\n","import {ChangeDetectionStrategy, Component, EventEmitter, ExistingProvider, Injector, Input, OnDestroy, OnInit, Optional, Output, ViewChild, forwardRef} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {AutoComplete} from 'primeng/autocomplete';\nimport {BehaviorSubject, Observable, Subscription, of, switchMap} from 'rxjs';\nimport {first, map} from 'rxjs/operators';\n\nimport {MediusFilterMatchType, MediusQueryParam, MediusQueryParamBuilder} from '../../../api/models';\nimport {ILookupDataProvider} from '../../../data-providers';\nimport {MngFormlyFieldWrapperComponent} from '../formly/wrappers';\n\nexport const MNG_AUTOCOMPLETE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MngAutocompleteComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-autocomplete',\n templateUrl: './autocomplete.component.html',\n providers: [MNG_AUTOCOMPLETE_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngAutocompleteComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() public dataProvider?: ILookupDataProvider<any, any>;\n @Input() public dataKeyProperty?: string;\n @Input('itemsValueProperty') public itemsValuePropertyInit?: string;\n @Input('itemsLabelProperty') public itemsLabelPropertyInit?: string;\n @Input() public itemsLabelTranslate = false;\n @Input() public inlineSearch = false;\n @Input() public openOnFocus = false;\n @Input() public multiselect = false;\n @Input() public placeholder?: string;\n @Input() public className: string | null = null;\n @Input() public dropdownClassName: string | null = null;\n\n @Output('valueChange') public valueChangeEventEmitter = new EventEmitter();\n\n @ViewChild(AutoComplete) public primeAutocomplete?: AutoComplete;\n\n private isInited = false;\n private suggestionsSubject: BehaviorSubject<Array<any>> = new BehaviorSubject<Array<any>>([]);\n private searchSubscription: Subscription | null = null;\n private dataProviderService: any = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n\n public itemsLabelProperty?: string;\n public itemsValueProperty?: string;\n public autocompleteFormControl: FormControl = new FormControl();\n public suggestions$: Observable<Array<any>> = this.suggestionsSubject.asObservable();\n\n constructor(private injector: Injector, private translate: TranslateService, @Optional() private formlyWrapper: MngFormlyFieldWrapperComponent) {}\n\n ngOnInit() {\n this.setItemsAndDataProvider();\n }\n\n ngOnDestroy() {\n this.searchSubscription?.unsubscribe();\n }\n\n onSearch(event: any) {\n this.searchSubscription?.unsubscribe();\n\n if (this.dataProvider) {\n const queryParamBuilder = MediusQueryParamBuilder.create();\n if (this.itemsLabelProperty) {\n queryParamBuilder.withSort(this.itemsLabelProperty);\n }\n if (event.query && event.query.length > 0 && this.itemsLabelProperty) {\n queryParamBuilder.withFilter(this.itemsLabelProperty, event.query, undefined, MediusFilterMatchType.StartsWith);\n }\n this.searchSubscription = this.getLookup(queryParamBuilder.build(), event.query).subscribe({\n next: items => {\n this.setSuggestionsFromItems(items, event.query);\n }\n });\n }\n }\n\n onSelect(value: any) {\n let outputValue = value;\n if (this.itemsValueProperty && typeof value === 'object') {\n outputValue = value[this.itemsValueProperty];\n }\n this.onChangeFn(outputValue);\n this.valueChangeEventEmitter.next(outputValue);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onFocus(event: Event) {\n if (this.openOnFocus) {\n this.primeAutocomplete?.show();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onBlur(event: any) {\n this.formlyWrapper?.formControl?.markAsTouched();\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n this.autocompleteFormControl.disable();\n } else {\n this.autocompleteFormControl.enable();\n }\n }\n\n writeValue(value: any): void {\n this.setItemsAndDataProvider();\n\n if (this.itemsValuePropertyInit && value != null && typeof value !== 'object') {\n const defaultItem: any = {[this.itemsValuePropertyInit]: value};\n if (this.itemsLabelProperty) {\n defaultItem[this.itemsLabelProperty] = value;\n }\n\n const matchedItem = this.suggestionsSubject.value.find(i => i[this.itemsValuePropertyInit!] === value);\n if (matchedItem) {\n this.autocompleteFormControl.setValue(matchedItem, {emitEvent: false});\n } else if (this.dataProvider) {\n const queryParamBuilder = MediusQueryParamBuilder.create();\n queryParamBuilder.withFilter(this.itemsValuePropertyInit, value, undefined, MediusFilterMatchType.Equals);\n\n this.getLookup(queryParamBuilder.build())\n .pipe(first())\n .subscribe({\n next: items => {\n let isMatch = false;\n if (items.length === 1) {\n this.autocompleteFormControl.setValue(items[0]);\n isMatch = true;\n } else if (items.length > 1) {\n // for lookup data providers not using query params\n const matchedItem = items.find(i => i[this.itemsValuePropertyInit!] === value);\n if (matchedItem) {\n this.setAutocompleteValueFromWrite(matchedItem);\n isMatch = true;\n }\n }\n\n if (!isMatch) {\n this.setAutocompleteValueFromWrite(defaultItem);\n }\n },\n error: () => {\n this.setAutocompleteValueFromWrite(defaultItem);\n }\n });\n } else {\n this.setAutocompleteValueFromWrite(defaultItem);\n }\n } else {\n this.setAutocompleteValueFromWrite(value);\n }\n }\n\n private setItemsAndDataProvider() {\n if (this.isInited) {\n return;\n }\n\n this.itemsLabelProperty = this.itemsLabelPropertyInit;\n this.itemsValueProperty = this.itemsValuePropertyInit;\n\n if (this.dataProvider) {\n this.dataProviderService = this.dataProvider.serviceType ? this.injector.get<any>(this.dataProvider.serviceType) : null;\n\n if (this.itemsLabelTranslate) {\n // setup translation properties\n if (this.itemsLabelPropertyInit) {\n this.itemsLabelProperty = `${this.itemsLabelPropertyInit}_i18n`;\n } else if (!this.itemsLabelProperty && !this.itemsValuePropertyInit) {\n this.itemsLabelProperty = 'title_i18n';\n this.itemsValueProperty = 'value';\n } else {\n throw new Error(`Invalid use with value (${this.itemsLabelPropertyInit}) and label (${this.itemsLabelPropertyInit}) property setup.`);\n }\n }\n } else {\n console.warn(`Data provider should be provided for MngAutocompleteComponent.`);\n }\n\n if (this.openOnFocus) {\n this.onSearch({query: ''});\n }\n\n this.isInited = true;\n }\n\n private setAutocompleteValueFromWrite(value: any) {\n if (value && this.itemsLabelTranslate) {\n value = this.i18nPopulateItems([value], this.translate.instant(this.i18nGetItemsKeys([value])))[0];\n }\n this.autocompleteFormControl.setValue(value, {emitEvent: false});\n }\n\n private getLookup(qp: MediusQueryParam, query?: string): Observable<Array<any>> {\n if (this.dataProvider) {\n return this.dataProvider.lookup(qp, this.dataProviderService, query).pipe(\n switchMap(items => {\n if (this.itemsLabelTranslate) {\n return this.translate.stream(this.i18nGetItemsKeys(items)).pipe(map(translations => this.i18nPopulateItems(items, translations)));\n } else {\n return of(items);\n }\n })\n );\n } else {\n return of([]);\n }\n }\n\n private i18nGetItemsKeys(items: Array<any>): Array<string> {\n return items.map(item => (typeof item === 'object' && this.itemsLabelPropertyInit ? (item[this.itemsLabelPropertyInit as keyof object] as string) : item) as string);\n }\n\n private i18nPopulateItems(items: Array<any>, i18nMap: any): Array<any> {\n return items.map(item => {\n if (typeof item === 'object' && this.itemsLabelPropertyInit) {\n const label = item[this.itemsLabelPropertyInit as keyof object] as string;\n const translation: string | undefined = i18nMap[label];\n if (translation) {\n return {...item, [this.itemsLabelProperty!]: translation};\n }\n return {...item};\n } else {\n const translation = i18nMap[item];\n return {\n [this.itemsLabelProperty!]: translation ?? item,\n [this.itemsValueProperty!]: item\n };\n }\n });\n }\n\n private setSuggestionsFromItems(items: Array<any>, query?: string) {\n if (this.inlineSearch) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n if (this.itemsLabelProperty && typeof i === 'object') {\n itemLabel = i[this.itemsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.suggestionsSubject.next([...filteredItems]);\n } else {\n this.suggestionsSubject.next([...items]);\n }\n }\n}\n","<p-autoComplete\n (onFocus)=\"onFocus($event)\"\n [formControl]=\"autocompleteFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dropdown]=\"true\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [field]=\"$any(itemsLabelProperty)\"\n [suggestions]=\"(suggestions$ | async) ?? []\"\n [multiple]=\"multiselect\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [minLength]=\"openOnFocus ? 0 : 1\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n (onBlur)=\"onBlur($event)\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n</p-autoComplete>\n","import {ChangeDetectionStrategy, Component, EventEmitter, ExistingProvider, Injector, Input, OnDestroy, OnInit, Optional, Output, ViewChild, forwardRef} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Dropdown} from 'primeng/dropdown';\nimport {Observable, ReplaySubject, Subject, Subscription, of, switchMap} from 'rxjs';\nimport {first, map} from 'rxjs/operators';\n\nimport {MediusQueryParamBuilder} from '../../../api/models';\nimport {ILookupDataProvider} from '../../../data-providers';\nimport {MngFormlyFieldWrapperComponent} from '../formly/wrappers';\n\nexport const MNG_DROPDOWN_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MngDropdownComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-dropdown',\n templateUrl: './dropdown.component.html',\n providers: [MNG_DROPDOWN_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngDropdownComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() public dataProvider?: ILookupDataProvider<any, any>;\n @Input() public dataKeyProperty?: string;\n @Input('itemsLabelProperty') public itemsLabelPropertyInit?: string;\n @Input() public itemsLabelTranslate = false;\n @Input('itemsValueProperty') public itemsValuePropertyInit?: string;\n @Input() public itemsDisabledProperty?: string;\n @Input() public multiselect = false;\n @Input() public placeholder?: string;\n @Input() public showClear = true;\n @Input() public selectFirstItem = false;\n @Input() public className: string | null = null;\n @Input() public dropdownClassName: string | null = null;\n @Input() public changeValueOnBlur = false;\n\n @Output('valueChange') public valueChangeEventEmitter = new EventEmitter();\n\n @ViewChild(Dropdown) public primeDropdown?: Dropdown;\n\n public itemsLabelProperty?: string;\n public itemsValueProperty?: string;\n private itemsSubject: Subject<Array<any>> = new ReplaySubject<Array<any>>(1);\n private dataProviderService: any = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n\n public dropdownFormControl: FormControl = new FormControl();\n public items$: Observable<Array<any>> = this.itemsSubject.asObservable();\n private itemsSubscription?: Subscription;\n\n constructor(private injector: Injector, private translate: TranslateService, @Optional() private formlyWrapper: MngFormlyFieldWrapperComponent) {}\n\n ngOnInit(): void {\n this.itemsLabelProperty = this.itemsLabelPropertyInit;\n this.itemsValueProperty = this.itemsValuePropertyInit;\n\n this.dropdownFormControl.valueChanges.subscribe(v => {\n if (!this.changeValueOnBlur) {\n this.propagateValueChange(v);\n }\n });\n\n if (this.dataProvider) {\n this.dataProviderService = this.dataProvider.serviceType ? this.injector.get<any>(this.dataProvider.serviceType) : null;\n\n const queryParamBuilder = MediusQueryParamBuilder.create();\n\n if (this.itemsLabelTranslate) {\n // setup translation properties\n if (this.itemsLabelPropertyInit) {\n this.itemsLabelProperty = `${this.itemsLabelPropertyInit}_i18n`;\n } else if (!this.itemsLabelProperty && !this.itemsValuePropertyInit) {\n this.itemsLabelProperty = 'title_i18n';\n this.itemsValueProperty = 'value';\n } else {\n throw new Error(`Invalid use with value (${this.itemsLabelPropertyInit}) and label (${this.itemsLabelPropertyInit}) property setup.`);\n }\n }\n\n this.itemsSubscription = this.dataProvider\n .lookup(queryParamBuilder.build(), this.dataProviderService)\n .pipe(\n switchMap(items => {\n if (this.itemsLabelTranslate) {\n const translationKeys: string[] = items.map(\n item => (typeof item === 'object' && this.itemsLabelPropertyInit ? (item[this.itemsLabelPropertyInit as keyof object] as string) : item) as string\n );\n return this.translate.stream(translationKeys).pipe(\n map(translations =>\n items.map(item => {\n if (typeof item === 'object' && this.itemsLabelPropertyInit) {\n const label = item[this.itemsLabelPropertyInit as keyof object] as string;\n const translation: string | undefined = translations[label];\n if (translation) {\n return {...item, [this.itemsLabelProperty!]: translation};\n }\n return {...item};\n } else {\n const translation = translations[item];\n return {\n [this.itemsLabelProperty!]: translation ?? item,\n [this.itemsValueProperty!]: item\n };\n }\n })\n )\n );\n } else {\n return of(items);\n }\n })\n )\n .subscribe(res => {\n this.itemsSubject.next(res);\n });\n\n if (this.selectFirstItem && !this.dropdownFormControl?.value) {\n this.items$.pipe(first()).subscribe(res => {\n const value = this.itemsValueProperty ? res[0][this.itemsValueProperty] : res[0];\n this.dropdownFormControl?.setValue(value);\n });\n }\n } else {\n console.warn(`Data provider should be provided for MngDropdownComponent.`);\n }\n }\n\n ngOnDestroy() {\n this.itemsSubscription?.unsubscribe();\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n this.dropdownFormControl.disable();\n } else {\n this.dropdownFormControl.enable();\n }\n }\n\n writeValue(obj: any): void {\n this.dropdownFormControl.setValue(obj, {emitEvent: false});\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onDropdownBlur(event: any) {\n if (this.changeValueOnBlur) {\n this.propagateValueChange(this.dropdownFormControl.value);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onPanelHide(event: any) {\n if (this.changeValueOnBlur) {\n this.propagateValueChange(this.dropdownFormControl.value);\n }\n }\n\n private propagateValueChange(value: any) {\n this.formlyWrapper?.formControl?.markAsTouched();\n\n this.onChangeFn(value);\n this.valueChangeEventEmitter.next(value);\n }\n}\n","<p-dropdown\n *ngIf=\"!multiselect; else pMultiselect\"\n [formControl]=\"dropdownFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"$any(items$ | async)\"\n [showClear]=\"showClear\"\n [autoDisplayFirst]=\"false\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n (onBlur)=\"onDropdownBlur($event)\"\n appendTo=\"body\">\n</p-dropdown>\n<ng-template #pMultiselect>\n <p-multiSelect\n [maxSelectedLabels]=\"1\"\n [selectedItemsLabel]=\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\"\n [formControl]=\"dropdownFormControl\"\n [defaultLabel]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"(items$ | async) ?? []\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [filter]=\"true\"\n [showToggleAll]=\"false\"\n (onPanelHide)=\"onPanelHide($event)\"\n appendTo=\"body\">\n </p-multiSelect>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n ViewChild\n} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {DynamicDialogConfig, DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {Observable, ReplaySubject, Subscription, of, throwError} from 'rxjs';\nimport {catchError, finalize, first} from 'rxjs/operators';\n\nimport {IEditorDataProvider} from '../../../data-providers';\nimport {ActionDescriptor, ActionEditorDescriptor, ActionEditorSubmitDescriptor} from '../../../descriptors';\nimport {ActionEditorSubmitTypeEnum, ActionPositionEnum} from '../../../descriptors/types';\nimport {MngTemplateDirective} from '../../../directives';\nimport {IViewContainer} from '../../../models';\nimport {MngActionExecutorService, MngCommonsService, MngNavigationService, MngViewContainerComponentService} from '../../../services';\nimport {IdType} from '../../../types';\nimport {I18nUtils, NotificationUtil} from '../../../utils';\nimport {MngFormEditorComponent} from '../../form';\nimport {MngFormEditorSubmitEvent} from '../../form/models';\nimport {ActionData, ActionInstance, ActionParameters} from '../models';\n\n@Component({\n selector: 'mng-action-editor',\n templateUrl: './action-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngActionEditorComponent<T, S> implements OnInit, OnDestroy {\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 @Input('viewContainer') public viewContainerInit?: IViewContainer<T, S>;\n\n @Output('actionSubmit') public actionRunEventEmitter = new EventEmitter<T | null | undefined>();\n @Output('actionCancel') public actionCancelEventEmitter = new EventEmitter<T | null | undefined>();\n\n // content and view queries\n @ContentChildren(MngTemplateDirective) public templates!: QueryList<MngTemplateDirective>;\n @ViewChild('submitButton') public submitButtonElementRef!: ElementRef;\n @ViewChild(MngFormEditorComponent) public editorComponent!: MngFormEditorComponent<T>;\n\n public cmpId: string = Math.random().toString(36).substring(2);\n public title?: string;\n public isDialog = true;\n public isSaveButton = true;\n\n // actions\n private instance?: ActionInstance<T, S>;\n private previousActionInstance?: ActionInstance<unknown, unknown>;\n public toolbarLeftActions: ActionDescriptor<T>[] = [];\n public toolbarRightActions: ActionDescriptor<T>[] = [];\n public footerLeftActions: ActionDescriptor<T>[] = [];\n public footerRightActions: ActionDescriptor<T>[] = [];\n\n private loadingSubject = new ReplaySubject<boolean>(1);\n public loading$: Observable<boolean> = this.loadingSubject.asObservable();\n private submitLoadingSubject = new ReplaySubject<boolean>(1);\n public submitLoading$: Observable<boolean> = this.submitLoadingSubject.asObservable();\n private isFinished = false;\n\n public viewContainer?: IViewContainer<T, S>;\n private sourceComponent: any = this;\n\n private subscriptions: Array<Subscription> = [];\n\n constructor(\n private injector: Injector,\n private translate: TranslateService,\n private actionExecutor: MngActionExecutorService,\n private mngCommonsService: MngCommonsService,\n private navigationService: MngNavigationService,\n @Optional() private dialogRef: DynamicDialogRef | null,\n @Optional() private dialogConfig: DynamicDialogConfig | null,\n @Optional() private viewContainerService: MngViewContainerComponentService<T, S> | null\n ) {}\n\n public ngOnInit() {\n if (this.dialogConfig?.data) {\n if (this.dialogConfig.data.actionInstance) {\n this.instance = this.dialogConfig.data.actionInstance;\n }\n if (this.instance) {\n this.action = this.instance.action as ActionEditorDescriptor<T>;\n }\n this.itemId = this.instance?.activationParameters?.itemId;\n this.item = this.instance?.activationParameters?.item;\n this.actionData = this.instance?.activationParameters?.actionData;\n this.viewContainer = this.instance?.activationParameters?.viewContainer as IViewContainer<T, S>;\n this.sourceComponent = this.instance?.activationParameters?.sourceComponent;\n if (!this.dataProvider && this.viewContainer) {\n const dataProvider = this.viewContainer.getDataProvider();\n if (dataProvider && typeof dataProvider['fetch' as keyof object] === 'function') {\n this.dataProvider = dataProvider as IEditorDataProvider<T, S>;\n }\n }\n if (this.dialogConfig.data.previousActionInstance) {\n this.previousActionInstance = this.dialogConfig.data.previousActionInstance;\n }\n } else {\n this.isDialog = false;\n this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;\n }\n\n this.isSaveButton = typeof this.action.submitFunction === 'function';\n this.setTitle();\n\n for (const action of this.action.editorActions) {\n if (action instanceof ActionEditorSubmitDescriptor) {\n if (typeof action.icon === 'undefined') {\n action.withIcon(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times');\n }\n if (typeof action.title === 'undefined') {\n action.withTitle(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'general.save' : this.isDialog ? 'general.close' : 'general.cancel');\n }\n\n // assign run operations\n action.withRunNotificationSuccess(undefined, undefined, false);\n if (action.submitType === ActionEditorSubmitTypeEnum.Submit) {\n action.withRunFunction(() => {\n this.triggerSubmit();\n return of(undefined);\n });\n } else {\n action.withRunFunction(() => {\n this.cancel();\n return of(undefined);\n });\n }\n }\n switch (action.position) {\n case ActionPositionEnum.ToolbarLeft:\n this.toolbarLeftActions.push(action);\n break;\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.push(action);\n break;\n case ActionPositionEnum.FooterLeft:\n this.footerLeftActions.push(action);\n break;\n case ActionPositionEnum.FooterRight:\n this.footerRightActions.push(action);\n break;\n }\n }\n\n this.toolbarRightActions = this.toolbarRightActions.reverse();\n this.footerRightActions = this.footerRightActions.reverse();\n\n this.loadItemWithDataProvider();\n }\n\n public ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n public onSubmit(event: MngFormEditorSubmitEvent<T>) {\n if (this.isFinished) {\n return;\n }\n if (event.success) {\n if (typeof this.action.submitFunction !== 'function') {\n return;\n }\n this.submitLoadingSubject.next(true);\n const context = this.actionExecutor.runEditorSave(\n this.action,\n new ActionParameters(this.itemId, event.formItem).withActionData(this.actionData).withViewContainer(this.viewContainer).withSourceComponent(this.sourceComponent),\n this.dataProvider,\n this.instance,\n this.previousActionInstance\n );\n this.instance = context.instance;\n\n context.execution$.subscribe({\n next: res => {\n this.isFinished = true;\n this.submitLoadingSubject.next(false);\n this.actionRunEventEmitter.next(res);\n this.deactivateAction(res);\n },\n error: () => {\n this.submitLoadingSubject.next(false);\n }\n });\n }\n }\n\n public cancel() {\n this.actionCancelEventEmitter.next(undefined);\n this.deactivateAction(undefined, true);\n }\n\n public triggerSubmit() {\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 const context = this.actionExecutor.runEditorFetch(\n this.action,\n new ActionParameters(this.itemId, this.item).withActionData(this.actionData).withViewContainer(this.viewContainer).withSourceComponent(this.sourceComponent),\n this.dataProvider,\n this.instance,\n this.previousActionInstance\n );\n this.instance = context.instance;\n\n context.execution$\n .pipe(\n first(),\n catchError(err => {\n const actionError = this.actionExecutor.toMngActionError(err);\n if (this.action.hasRunNotificationError) {\n NotificationUtil.actionNotificationError(this.translate, this.action, actionError, 'fetch', this.viewContainer, this.item);\n }\n return throwError(() => actionError);\n }),\n finalize(() => this.loadingSubject.next(false))\n )\n .subscribe(res => {\n this.item = res ?? undefined;\n if (this.action.hasFetchNotificationSuccess) {\n NotificationUtil.actionNotificationSuccess(\n this.translate,\n this.action,\n 'fetch',\n this.action.fetchNotificationSuccessTitle,\n this.action.fetchNotificationSuccessMessage,\n this.viewContainer,\n this.item\n );\n }\n this.setTitle();\n });\n }\n\n private setTitle() {\n if (this.action.editorTitle === null) {\n this.title = undefined;\n if (this.dialogConfig) {\n requestAnimationFrame(() => {\n this.dialogConfig!.header = undefined;\n });\n }\n return;\n }\n const subscription = I18nUtils.Action.getEditorTitleAsync(this.translate, this.action, this.item).subscribe(t => {\n this.title = t ?? undefined;\n if (this.dialogConfig) {\n requestAnimationFrame(() => {\n this.dialogConfig!.header = t ?? undefined;\n this.mngCommonsService.setPageTitle(t ?? undefined);\n });\n }\n });\n this.subscriptions.push(subscription);\n }\n\n private deactivateAction(item?: T | null, cancel = false) {\n if (this.isDialog) {\n // if cancel, then force close the dialog\n if (cancel) {\n this.dialogRef?.close(item);\n }\n } else {\n this.actionExecutor.deactivateAction(this.instance!);\n }\n }\n}\n","<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\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) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormControl} from '@angular/forms';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {FieldLookupDescriptor} from '../../../../../descriptors';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\n\n@Component({\n selector: 'mng-formly-field-autocomplete',\n templateUrl: './formly-field-autocomplete.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldAutocompleteComponent<T> extends FieldType implements OnInit, AfterViewInit, OnDestroy {\n public aFormControl!: FormControl;\n public descriptor!: FieldLookupDescriptor<T, any>;\n\n private subscriptions: Subscription[] = [];\n\n public ngOnInit() {\n this.aFormControl = this.formControl as FormControl;\n this.descriptor = this.to['descriptor'];\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldAutocompleteComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.aFormControl.valueChanges.pipe(startWith(this.formControl!.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldAutocompleteComponent, this, {\n value: v\n });\n });\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldAutocompleteComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(value => value.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldAutocompleteComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"aFormControl\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"$any(descriptor.dataProvider)\"\n [dataKeyProperty]=\"$any(descriptor.dataKeyProperty)\"\n [itemsLabelProperty]=\"$any(descriptor.itemsLabelProperty)\"\n [itemsValueProperty]=\"$any(descriptor.itemsValueProperty)\"\n [className]=\"descriptor.inputClassName\">\n</mng-autocomplete>\n","import {ChangeDetectionStrategy, Component, Inject, LOCALE_ID, OnDestroy, OnInit} from '@angular/core';\nimport {FormControl} from '@angular/forms';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {FieldInputDescriptor} from '../../../../../descriptors';\nimport {FieldInputTypeEnum} from '../../../../../descriptors/types';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\n\n@Component({\n selector: 'mng-formly-field-input',\n templateUrl: './formly-field-input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldInputComponent extends FieldType implements OnInit, OnDestroy {\n public iFormControl!: FormControl;\n public descriptor!: FieldInputDescriptor<any>;\n public numberFieldMode: 'decimal' | 'currency' = 'decimal';\n public currency?: string;\n\n private files: File[] = [];\n private subscriptions: Subscription[] = [];\n\n constructor(@Inject(LOCALE_ID) public applicationLocale: string) {\n super();\n }\n\n ngOnInit(): void {\n this.iFormControl = this.formControl as FormControl;\n this.descriptor = this.to['descriptor'];\n\n if (this.descriptor.fieldType === FieldInputTypeEnum.Currency) {\n this.numberFieldMode = 'currency';\n\n if (this.descriptor.currencyFromProperty) {\n const currencyFromPropSubscription = this.iFormControl\n .get(this.descriptor.currencyFromProperty)!\n .valueChanges.pipe(startWith(this.model[this.descriptor.currencyFromProperty]), distinctUntilChanged())\n .subscribe(c => {\n this.currency = c;\n });\n this.subscriptions.push(currencyFromPropSubscription);\n } else {\n this.currency = this.descriptor.currency ?? 'EUR';\n }\n }\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldInputComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n // init values\n if (this.to.type === 'datepicker' && typeof this.iFormControl.value === 'string') {\n const dateObject = new Date(this.iFormControl.value);\n this.iFormControl.setValue(dateObject);\n }\n\n const subscription = this.formControl!.valueChanges.pipe(startWith(this.formControl!.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldInputComponent, this, {\n value: v\n });\n });\n this.subscriptions.push(subscription);\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldInputComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n public onFileSelect(event: any) {\n const files = event.files as File[];\n this.files = [...files];\n this.updateFileFormControl();\n }\n\n public onFileRemove(event: any) {\n const file = event.file as File;\n this.files = this.files.filter(f => f !== file);\n this.updateFileFormControl();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onFileClear(event: Event) {\n this.files = [];\n this.updateFileFormControl();\n }\n\n private updateFileFormControl() {\n const value = this.files.length > 0 ? [...this.files] : null;\n this.iFormControl.setValue(value);\n if (typeof this.descriptor.fileOnSelectHandler === 'function') {\n this.descriptor.fileOnSelectHandler(value, this.iFormControl);\n }\n }\n}\n","<ng-container [ngSwitch]=\"to.type\">\n <p-inputNumber\n *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 [useGrouping]=\"$any(descriptor.numberUseGrouping)\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [locale]=\"$any(descriptor.locale ?? applicationLocale)\"\n [mode]=\"$any(numberFieldMode)\"\n [currency]=\"$any(currency)\"\n [currencyDisplay]=\"$any(descriptor.currencyDisplay)\">\n </p-inputNumber>\n\n <div *ngSwitchCase=\"'switch'\" class=\"field flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"descriptor.inputClassName\"></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 option of descriptor.radioOptions\" [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + descriptor.labelClassName\">{{ option.title | translate }}</label>\n </div>\n </ng-container>\n\n <textarea\n *ngSwitchCase=\"'textarea'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pInputTextarea\n [class]=\"descriptor.inputClassName\">\n </textarea>\n\n <p-calendar\n *ngSwitchCase=\"'datepicker'\"\n appendTo=\"body\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [showSeconds]=\"descriptor.datePickerShowSeconds\"\n [showIcon]=\"true\"\n [inputStyleClass]=\"descriptor.inputClassName\">\n </p-calendar>\n\n <p-inputMask\n *ngSwitchCase=\"'mask'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"$any(descriptor.mask)\"\n [placeholder]=\"$any(descriptor.placeholder)\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName\">\n </p-inputMask>\n\n <p-fileUpload\n *ngSwitchCase=\"'file'\"\n [multiple]=\"descriptor.fileMultiple\"\n [accept]=\"$any(descriptor.fileAccept)\"\n [maxFileSize]=\"descriptor.fileMaxFileSize\"\n [showUploadButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear($event)\">\n </p-fileUpload>\n\n <input *ngSwitchDefault pInputText [id]=\"$any(key)\" [type]=\"to.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" />\n</ng-container>\n","import {ChangeDetectionStrategy, Component, HostBinding, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {FieldInputDescriptor} from '../../../../../descriptors';\n\n@Component({\n selector: 'mng-formly-field-label',\n templateUrl: './formly-field-label.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldLabelComponent extends FieldType implements OnInit {\n @HostBinding('class') public className = 'hidden';\n\n private descriptor!: FieldInputDescriptor<any>;\n\n public ngOnInit() {\n this.descriptor = this.to['descriptor'];\n this.formControl?.patchValue(this.descriptor.label);\n }\n}\n","","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormControl} from '@angular/forms';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {FieldLookupDescriptor} from '../../../../../descriptors';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\n\n@Component({\n selector: 'mng-formly-field-dropdown',\n templateUrl: './formly-field-dropdown.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldDropdownComponent<T> extends FieldType implements OnInit, OnDestroy {\n public dFormControl!: FormControl;\n public descriptor!: FieldLookupDescriptor<T, any>;\n\n private subscriptions: Subscription[] = [];\n\n public ngOnInit() {\n this.dFormControl = this.formControl as FormControl;\n this.descriptor = this.to['descriptor'];\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldDropdownComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.formControl!.valueChanges.pipe(startWith(this.formControl!.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldDropdownComponent, this, {\n value: v\n });\n });\n this.subscriptions.push(subscription);\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldDropdownComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-dropdown\n [id]=\"$any(key)\"\n [formControl]=\"dFormControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"descriptor.placeholder\"\n [dataProvider]=\"descriptor.dataProvider\"\n [itemsLabelProperty]=\"descriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"descriptor.itemsLabelTranslate\"\n [itemsValueProperty]=\"descriptor.itemsValueProperty\"\n [itemsDisabledProperty]=\"descriptor.itemsDisabledProperty\"\n [dataKeyProperty]=\"descriptor.dataKeyProperty\"\n [showClear]=\"!to.required\"\n [className]=\"descriptor.inputClassName\">\n</mng-dropdown>\n","import {ActionDescriptor, TableDescriptor} from '../descriptors';\nimport {ActionSizeEnum, TableSizeEnum} from '../descriptors/types';\n\nexport class StylesUtil {\n public static readonly BUTTON_ROUNDED_WIDTH_XS = 26;\n public static readonly BUTTON_ROUNDED_WIDTH_SM = 28;\n public static readonly BUTTON_ROUNDED_WIDTH = 32;\n public static readonly BUTTON_ROUNDED_WIDTH_LG = 45;\n\n public static readonly ACTION_BUTTON_MARGIN_X = 2;\n\n public static readonly TABLE_CELL_PADDING_X = 8; // left and right paddings are same\n public static readonly TABLE_CELL_PADDING_X_SM = 4;\n public static readonly TABLE_CELL_PADDING_X_LG = 12;\n\n public static calculateTableColumnActionWidth(table: TableDescriptor<unknown>, actions: Array<ActionDescriptor<unknown>>): number {\n const buttonsWidth = actions.reduce((acc, action) => acc + StylesUtil.getActionButtonRoundedWidth(action) + 2 * StylesUtil.ACTION_BUTTON_MARGIN_X, 0);\n const tablePadding = StylesUtil.getTableCellPaddingX(table);\n return buttonsWidth + 2 * tablePadding;\n }\n\n public static getTableCellPaddingX(table: TableDescriptor<unknown>): number {\n switch (table.size) {\n case TableSizeEnum.Small:\n return StylesUtil.TABLE_CELL_PADDING_X_SM;\n case TableSizeEnum.Large:\n return StylesUtil.TABLE_CELL_PADDING_X_LG;\n default:\n return StylesUtil.TABLE_CELL_PADDING_X;\n }\n }\n\n public static getActionButtonRoundedWidth(action: ActionDescriptor<unknown>): number {\n switch (action.size) {\n case ActionSizeEnum.ExtraSmall:\n return StylesUtil.BUTTON_ROUNDED_WIDTH_XS;\n case ActionSizeEnum.Small:\n return StylesUtil.BUTTON_ROUNDED_WIDTH_SM;\n case ActionSizeEnum.Large:\n case ActionSizeEnum.ExtraLarge:\n return StylesUtil.BUTTON_ROUNDED_WIDTH_LG;\n case ActionSizeEnum.Normal:\n default:\n return StylesUtil.BUTTON_ROUNDED_WIDTH;\n }\n }\n}\n","import {LazyLoadEvent} from 'primeng/api';\n\nimport {MediusQueryParam} from '../../../api/models';\nimport {ColumnDescriptor} from '../../../descriptors';\n\nexport class MngTableLoadEvent {\n public queryParam?: MediusQueryParam;\n public originalEvent?: LazyLoadEvent;\n}\n\nexport class MngTableCellClickEvent<T> {\n constructor(public readonly column: ColumnDescriptor<any, T>, public readonly rowItem: T, public readonly rowIndex: number) {}\n}\n\nexport class MngTableReloadEvent {\n public resetParams = false;\n public emitEvent = false;\n}\n","import {ChangeDetectionStrategy, Component, ElementRef, HostBinding, Input, OnInit} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {MessageService} from 'primeng/api';\n\nimport {ColumnDescriptor} from '../../../../descriptors';\nimport {ColumnTypeEnum} from '../../../../descriptors/types';\n\n@Component({\n selector: 'mng-table-column-value',\n templateUrl: './column-value.component.html',\n styleUrls: ['./column-value.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngTableColumnValueComponent<T, TT> implements OnInit {\n public readonly columnTypeString: ColumnTypeEnum = ColumnTypeEnum.String;\n public readonly columnTypeNumber: ColumnTypeEnum = ColumnTypeEnum.Number;\n public readonly columnTypeCurrency: ColumnTypeEnum = ColumnTypeEnum.Currency;\n public readonly columnTypeBoolean: ColumnTypeEnum = ColumnTypeEnum.Boolean;\n public readonly columnTypeDate: ColumnTypeEnum = ColumnTypeEnum.Date;\n public readonly columnTypeEnum: ColumnTypeEnum = ColumnTypeEnum.Enum;\n public readonly columnTypeCustom: ColumnTypeEnum = ColumnTypeEnum.Custom;\n\n @Input() descriptor!: ColumnDescriptor<T, TT>;\n @Input() item!: any;\n\n @HostBinding('style.max-width.px') public styleMaxWidth: number | null = null;\n @HostBinding('class') public className = 'nowrap';\n\n public currency?: string;\n\n public jsonPath = '$';\n\n constructor(private elementRef: ElementRef, private messageService: MessageService, private translate: TranslateService) {}\n\n public ngOnInit() {\n if (this.descriptor.columnType === ColumnTypeEnum.Currency) {\n this.currency = this.descriptor.currencyFromProperty ? this.item[this.descriptor.currencyFromProperty] : this.descriptor.currencyCode ?? 'EUR';\n }\n\n if (this.descriptor.maxWidth) {\n this.styleMaxWidth = this.descriptor.maxWidth;\n }\n\n if (this.descriptor.jsonPath) {\n this.jsonPath = this.descriptor.jsonPath;\n } else {\n this.jsonPath = `$.${this.descriptor.property}`;\n if (this.descriptor.objectModelType) {\n this.jsonPath = `$.${this.descriptor.property}.${this.descriptor.objectTitleProperty}`;\n }\n }\n }\n\n public copyToClipboard(event: Event) {\n event.stopPropagation();\n const value = this.elementRef.nativeElement.innerText.trim();\n navigator.clipboard.writeText(value);\n const title = this.translate.instant('mngTable.copyNotificationTitle');\n const message = this.translate.instant('mngTable.copyNotificationMessage', {value});\n this.messageService.add({severity: 'info', summary: title, detail: message});\n }\n}\n","<ng-container [ngSwitch]=\"descriptor.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeString\">\n {{ item | jsonPath: jsonPath }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeNumber\">\n {{ item | jsonPath: jsonPath | number: descriptor.displayFormat:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCurrency\">\n {{ item | jsonPath: jsonPath | currency: currency:descriptor.currencyDisplay:descriptor.displayFormat:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeDate\">\n {{ item | jsonPath: jsonPath | date: descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeBoolean\">\n <ng-container *ngIf=\"descriptor.booleanAsIcon; else booleanText\"></ng-container>\n <i [class]=\"item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo:true\"></i>\n <ng-template #booleanText>\n {{ item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo | translate }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum\">\n {{ item | jsonPath: jsonPath | enum: descriptor.enumType:descriptor.enumTitlePath:descriptor.enumNameAsValue | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCustom\">\n <ng-container\n [mngComponent]=\"descriptor.customComponentType!\"\n [inputs]=\"{\n value: item | jsonPath: jsonPath,\n item: item,\n descriptor: descriptor\n }\"></ng-container>\n </ng-container>\n</ng-container>\n<div class=\"help-buttons\" *ngIf=\"descriptor.hasCopyToClipboard\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n</div>\n","import {Component, Input, OnInit} from '@angular/core';\n\nimport {FilterMatchMode, PrimeNGConfig, SelectItem} from 'primeng/api';\n\nimport {FilterDescriptor, FilterLookupDescriptor} from '../../../../descriptors';\nimport {FilterLookupTypeEnum, FilterMatchModeEnum, FilterTypeEnum, TableFilterDisplayEnum} from '../../../../descriptors/types';\n\n/**\n * Cannot be on push change detection strategy because of filter updates triggered from route which causes to force update values in force metadata\n * and these must be propagated through to this component and beyond to primeNG.\n */\n@Component({\n selector: 'mng-table-column-filter',\n templateUrl: './column-filter.component.html'\n})\nexport class MngTableColumnFilterComponent<T> implements OnInit {\n public readonly lookupTypeDropdown: FilterLookupTypeEnum = FilterLookupTypeEnum.Dropdown;\n public readonly lookupTypeAutocomplete: FilterLookupTypeEnum = FilterLookupTypeEnum.Autocomplete;\n\n @Input() descriptor!: FilterDescriptor<T>;\n @Input() display!: TableFilterDisplayEnum;\n\n public lookupDescriptor?: FilterLookupDescriptor<T>;\n\n public primeField!: string;\n public primeType = 'text';\n public primeShowMatchMode = true;\n public primeDefaultMatchMode!: string;\n public primeDisplay = 'row';\n public primeMatchModes: SelectItem[] | null = null;\n\n constructor(private primeConfig: PrimeNGConfig) {}\n\n ngOnInit() {\n this.primeDefaultMatchMode = this.descriptor.defaultFilterMatchMode;\n\n switch (this.descriptor.filterType) {\n case FilterTypeEnum.Boolean:\n this.primeType = 'boolean';\n this.primeShowMatchMode = false;\n break;\n case FilterTypeEnum.Number:\n this.primeType = 'numeric';\n break;\n case FilterTypeEnum.Date:\n this.primeType = 'date';\n this.primeDefaultMatchMode = FilterMatchMode.DATE_AFTER;\n break;\n case FilterTypeEnum.Lookup:\n this.primeType = 'lookup';\n this.primeShowMatchMode = false;\n this.lookupDescriptor = this.descriptor as FilterLookupDescriptor<T>;\n this.primeField = `${this.descriptor.property}${this.lookupDescriptor.itemsValueProperty ? `.${this.lookupDescriptor.itemsValueProperty}` : ''}`;\n this.primeMatchModes = [{value: FilterMatchModeEnum.Equals, label: this.primeConfig.getTranslation(FilterMatchModeEnum.Equals)}];\n break;\n case FilterTypeEnum.String:\n this.primeType = 'text';\n this.primeDefaultMatchMode = FilterMatchMode.CONTAINS;\n break;\n }\n\n if (this.descriptor.matchModes) {\n this.primeMatchModes = this.descriptor.matchModes.map(mm => <SelectItem>{value: mm, label: this.primeConfig.getTranslation(mm)});\n\n if (!this.primeMatchModes.map(matchMode => matchMode.value).includes(this.primeDefaultMatchMode)) {\n this.primeDefaultMatchMode = this.descriptor.matchModes[0];\n }\n\n this.primeShowMatchMode = this.primeMatchModes?.length > 1;\n }\n\n if (this.display === TableFilterDisplayEnum.Menu) {\n this.primeDisplay = 'menu';\n }\n }\n\n valueToDate(value: unknown): Date | null {\n console.log('call', this.descriptor.property);\n if (typeof value === 'string' || typeof value === 'number') {\n return new Date(value);\n } else if (value instanceof Date) {\n return value;\n } else {\n return null;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n dateFilter(value: T, filterCallback: Function) {\n filterCallback(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n autocompleteFilter(value: T, filterCallback: Function) {\n filterCallback(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any\n dropdownFilter(value: any, filterCallback: Function) {\n if (Array.isArray(value) && value.length === 0) {\n value = undefined;\n }\n filterCallback(value);\n }\n\n toLookupFilterValue(value?: any) {\n return this.lookupDescriptor!.dataKeyProperty && value ? {[this.lookupDescriptor!.dataKeyProperty]: value} : value;\n }\n}\n","<p-columnFilter\n class=\"ml-auto\"\n [type]=\"primeType\"\n [field]=\"descriptor.property\"\n [display]=\"primeDisplay\"\n [matchMode]=\"primeDefaultMatchMode\"\n [matchModeOptions]=\"$any(primeMatchModes)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showMatchModes]=\"true\"\n [showOperator]=\"false\"\n [showAddButton]=\"false\"\n [hideOnClear]=\"true\"\n [showMenu]=\"primeShowMatchMode\"\n [minFractionDigits]=\"$any(descriptor.numberMinFractionDigits)\"\n [maxFractionDigits]=\"$any(descriptor.numberMaxFractionDigits)\"\n [useGrouping]=\"descriptor.numberUseGrouping\">\n <ng-template *ngIf=\"primeType === 'date'\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <p-calendar\n appendTo=\"body\"\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showIcon]=\"true\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [showTime]=\"descriptor.datePickerShowTime\">\n </p-calendar>\n </ng-template>\n <ng-template *ngIf=\"lookupDescriptor\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container [ngSwitch]=\"lookupDescriptor.lookupType\">\n <mng-autocomplete\n *ngSwitchCase=\"lookupTypeAutocomplete\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [dataKeyProperty]=\"lookupDescriptor.dataKeyProperty\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [openOnFocus]=\"lookupDescriptor.autocompleteOpenOnFocus\"\n [inlineSearch]=\"lookupDescriptor.autocompleteInlineSearch\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.searchToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n (valueChange)=\"autocompleteFilter($event, filterCallback)\">\n </mng-autocomplete>\n <mng-dropdown\n *ngSwitchCase=\"lookupTypeDropdown\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.selectToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n [showClear]=\"false\"\n [changeValueOnBlur]=\"lookupDescriptor.multiselect\"\n (valueChange)=\"dropdownFilter($event, filterCallback)\">\n </mng-dropdown>\n </ng-container>\n </ng-template>\n</p-columnFilter>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport {ActivatedRoute, Params, Router} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {FilterMatchMode, FilterMetadata, LazyLoadEvent, SortMeta} from 'primeng/api';\nimport {Table} from 'primeng/table';\nimport {BehaviorSubject, Observable, ReplaySubject, Subscription, isObservable, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MediusFilterMatchType, MediusQueryParam, MediusQueryParamBuilder, MediusQueryResult} from '../../../api/models';\nimport {MediusRestUtil} from '../../../api/utils';\nimport {ITableDataProvider} from '../../../data-providers';\nimport {ActionDescriptor, ColumnDescriptor, FilterDescriptor, FilterLookupDescriptor, TableDescriptor} from '../../../descriptors';\nimport {ActionPositionEnum, FilterTypeEnum, TableFilterDisplayEnum, TablePaginationModeEnum, TableSizeEnum} from '../../../descriptors/types';\nimport {MngComponentDirective, MngTemplateDirective} from '../../../directives';\nimport {IViewContainer} from '../../../models';\nimport {MngActionExecutorService, MngViewContainerComponentService} from '../../../services';\nimport {NotificationUtil} from '../../../utils';\nimport {StylesUtil} from '../../../utils/styles.util';\nimport {ActionInstance} from '../../action/models';\nimport {MngTableCellClickEvent, MngTableLoadEvent} from '../models';\n\n@Component({\n selector: 'mng-table',\n templateUrl: './table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngTableComponent<T, S> implements OnInit, OnChanges, AfterContentInit, OnDestroy {\n public readonly filterDisplayRow: TableFilterDisplayEnum = TableFilterDisplayEnum.Row;\n public readonly filterDisplayMenu: TableFilterDisplayEnum = TableFilterDisplayEnum.Menu;\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<MediusQueryResult<T>> | MediusQueryResult<T>;\n @Input() public loading?: Observable<boolean> | boolean;\n @Input() public dataProvider?: ITableDataProvider<T, any>;\n @Input() public useQueryParams = false;\n\n // extra features input\n @Input() public selectionMode = 'multiple';\n @Input() public selectionEnabled = false;\n\n // actions\n @Input() public actions: Array<ActionDescriptor<T>> = [];\n\n // visual\n @Input() public isColumnClickable?: boolean;\n\n // component inputs\n @Input('viewContainer') public viewContainerInit?: IViewContainer<T, S>;\n @Input() public captionComponent?: Type<any>;\n @Input() public columnActionComponent?: Type<any>;\n @Input() public columnActionMinWidth: number | null = null;\n\n // event outputs\n @Output('tableLoad') public loadEventEmitter = new EventEmitter<MngTableLoadEvent>();\n @Output('cellClick') public cellClickEventEmitter = new EventEmitter<MngTableCellClickEvent<T>>();\n @Output('selectionChange') public selectionChangeEventEmitter = new EventEmitter<Array<T>>();\n @Output('captionComponentInstance') public captionCmpInstEventEmitter = new EventEmitter<any>();\n @Output('columnActionComponentInstance') public columnActionCmpInstEventEmitter = new EventEmitter<any>();\n\n // content and view queries\n @ContentChildren(MngTemplateDirective) public templates!: QueryList<MngTemplateDirective>;\n @ViewChildren(MngComponentDirective) public components!: QueryList<MngComponentDirective<any>>;\n @ViewChild(Table) public primeTable!: Table;\n\n // templates\n public captionTemplate?: TemplateRef<any>;\n public columnActionTemplate?: TemplateRef<any>;\n\n // data provider and items\n public useDataProvider = false;\n private useQueryParamsInitializedSubejct = new BehaviorSubject(false);\n public useQueryParamsInitialized$ = this.useQueryParamsInitializedSubejct.asObservable();\n public queryResult$?: Observable<MediusQueryResult<T>>;\n public loading$?: Observable<boolean>;\n public dataProviderInfiniteScrollItems: Array<T> = [];\n private itemsSubject = new ReplaySubject<Array<T>>(1);\n\n // pagination, sort and filters\n public rowsPerPageOptions!: Array<number>;\n public rows!: number;\n public offset = 0;\n public multiSortMeta: SortMeta[] | null = null;\n public filterMetadata: {[s: string]: FilterMetadata} = {};\n\n // infinite scroll\n public infiniteScroll = false;\n public scrollHeight: 'flex' | null = null;\n\n // visual\n public className!: string;\n public tableFullHeightOffset: number | null = null;\n public rowHeight: number | null = null;\n\n // selection\n public selection: Array<T> = [];\n\n // data provider\n private dataProviderService: any = null;\n private dataProviderQueryResultSubject = new ReplaySubject<MediusQueryResult<T>>(1);\n private dataProviderLoadingSubject = new ReplaySubject<boolean>(1);\n private dataProviderLatestLazyLoadEvent?: LazyLoadEvent;\n private dataProviderLatestLazyLoadEventVersion = 0;\n private dataProviderLatestQueryParam?: MediusQueryParam;\n private dataProviderLatestQueryParamVersion = 0;\n private dataProviderSubscription?: Subscription;\n\n // filter, sort\n private isFilterChanged = false;\n private isSortChanged = false;\n private filterDescriptors: Array<FilterDescriptor<any>> = [];\n\n // actions\n public showInlineActionsColumn = false;\n public rowClickActions: ActionDescriptor<T>[] = [];\n public rowInlineActions: ActionDescriptor<T>[] = [];\n\n // other\n private viewContainer?: IViewContainer<T, S>;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private injector: Injector,\n private router: Router,\n private route: ActivatedRoute,\n private translate: TranslateService,\n private actionExecutor: MngActionExecutorService,\n @Optional() private viewContainerService: MngViewContainerComponentService<T, S> | null\n ) {}\n\n public ngOnInit() {\n this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;\n this.filterDescriptors = this.descriptor.columns.filter(c => typeof c.filterDescriptor !== 'undefined').map(c => c.filterDescriptor!);\n\n // map row settings\n this.rows = this.descriptor.defaultNumRows;\n this.rowsPerPageOptions = this.descriptor.rowsPerPageOptions;\n\n // process actions\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 }\n }\n this.showInlineActionsColumn = typeof this.columnActionComponent !== 'undefined' || this.rowInlineActions.length > 0;\n\n // define all styles\n this.className = this.descriptor.className;\n this.tableFullHeightOffset = this.descriptor.tableFullHeightOffset ?? null;\n this.rowHeight = this.descriptor.rowHeight ?? null;\n if (typeof this.isColumnClickable === 'undefined') {\n // define if cell click is being observed via output\n this.isColumnClickable = this.rowClickActions.length > 0 || this.cellClickEventEmitter.observed;\n }\n switch (this.descriptor.size) {\n case TableSizeEnum.Small:\n this.className += ' p-datatable-sm';\n break;\n case TableSizeEnum.Large:\n this.className += ' p-datatable-lg';\n break;\n }\n if (this.descriptor.hasGridlines) {\n this.className += ' p-datatable-gridlines';\n }\n if (!this.columnActionMinWidth) {\n this.columnActionMinWidth = StylesUtil.calculateTableColumnActionWidth(this.descriptor, this.rowInlineActions as Array<ActionDescriptor<unknown>>);\n }\n\n // check if infinite scroll\n if (this.descriptor.paginationMode === TablePaginationModeEnum.InfiniteScroll) {\n this.infiniteScroll = true;\n this.scrollHeight = 'flex';\n this.tableFullHeightOffset = this.descriptor.tableFullHeightOffset ?? 315;\n this.rowHeight = this.descriptor.rowHeight ?? 45;\n this.useQueryParams = false;\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 MediusQueryResult<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 {\n this.queryResult$ = (isObservable(this.items) ? this.items : this.itemsSubject.asObservable()).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 MediusQueryResult<T>();\n queryResult.pageData = items;\n queryResult.allDataCount = items.length;\n return queryResult;\n })\n );\n if (!isObservable(this.items)) {\n this.itemsSubject.next(this.items ?? []);\n }\n }\n if (typeof this.loading !== 'undefined') {\n this.loading$ = this.loading instanceof Observable ? this.loading : of(this.loading);\n }\n }\n\n const initialQueryParamMap = this.route.snapshot.queryParamMap;\n if (\n this.useQueryParams &&\n ((!initialQueryParamMap.has('sort') && this.descriptor.hasDefaultSort) ||\n (!initialQueryParamMap.has('filter') && this.filterDescriptors.some(fd => fd.hasDefaultValue)))\n ) {\n // default sort/filters are applied, no additional filtering/sorting is specified in query param\n // redirect must be done at first step\n const mediusQueryParam = MediusRestUtil.fromAngularQueryParamsToMediusQueryParams(this.route.snapshot.queryParams, this.filterDescriptors, this.rowsPerPageOptions[0]);\n\n const event: LazyLoadEvent = {};\n event.multiSortMeta = this.createSortMeta(mediusQueryParam);\n event.filters = this.createFilterMeta(mediusQueryParam);\n\n // first navigate to correct url with default filters/sorts\n this.router\n .navigate([], {\n relativeTo: this.route,\n replaceUrl: true,\n queryParams: MediusRestUtil.fromPrimeLazyLoadEventToAngularQueryParams(event, this.rowsPerPageOptions[0])\n })\n .then(() => {\n this.initializeDataLoadingTriggers();\n });\n } else {\n this.initializeDataLoadingTriggers();\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 if (!this.showInlineActionsColumn) {\n this.showInlineActionsColumn = true;\n }\n break;\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['items'] && !changes['items'].firstChange && Array.isArray(changes['items'].currentValue)) {\n this.itemsSubject.next(changes['items'].currentValue);\n }\n }\n\n public ngOnDestroy() {\n this.dataProviderSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n public reload(emitEvent = false, resetParams = false) {\n this.loadTableWithDataProvider(\n resetParams ? MediusQueryParamBuilder.create(this.rowsPerPageOptions[0], 0).build() : this.dataProviderLatestQueryParam ?? new MediusQueryParam(),\n emitEvent\n );\n }\n\n public onTableLazyLoad(event: LazyLoadEvent) {\n this.dataProviderLatestLazyLoadEvent = event;\n this.dataProviderLatestLazyLoadEventVersion++;\n\n if (this.useQueryParams) {\n if (!event.multiSortMeta || event.multiSortMeta.length === 0) {\n // add default sort meta to event if not multisort meta is present\n event.multiSortMeta = this.createSortMeta();\n }\n if (!event.filters) {\n event.filters = this.createFilterMeta();\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n replaceUrl: true,\n queryParams: MediusRestUtil.fromPrimeLazyLoadEventToAngularQueryParams(event, this.rowsPerPageOptions[0])\n });\n } else {\n const mediusQueryParams = event ? MediusRestUtil.fromPrimeLazyLoadEventToMediusQueryParams(event) : new MediusQueryParam();\n this.loadTableWithDataProvider(mediusQueryParams);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onTableSort(event: any) {\n this.isSortChanged = true;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onTableFilter(event: any) {\n this.isFilterChanged = true;\n }\n\n public onCellClick(event: Event, col: ColumnDescriptor<any, T>, item: T, idx: number) {\n const mngEvent = new MngTableCellClickEvent<T>(col, item, idx);\n this.cellClickEventEmitter.next(mngEvent);\n if (this.rowClickActions.length) {\n for (const action of this.rowClickActions) {\n this.actionExecutor.triggerRowClickAction(action, mngEvent, this.route, this.descriptor);\n }\n }\n }\n\n public onSelectionChange(event: Array<T>) {\n this.selectionChangeEventEmitter.emit(event);\n }\n\n public onCaptionCmpInst<C>(instance: C) {\n this.captionCmpInstEventEmitter.next(instance);\n }\n\n public onColumnActionCmpInst<C>(instance: C) {\n this.columnActionCmpInstEventEmitter.next(instance);\n }\n\n public onActionFinish(runResult: ActionInstance<T, unknown>) {\n if (!runResult.error) {\n this.reload();\n }\n }\n\n private loadTableWithDataProvider(queryParam: MediusQueryParam | null = null, emitEvent = true) {\n if (!this.useDataProvider) {\n return;\n }\n\n this.dataProviderSubscription?.unsubscribe();\n this.dataProviderLoadingSubject.next(true);\n\n if (!queryParam) {\n queryParam = MediusQueryParamBuilder.create(this.rowsPerPageOptions[0]).build();\n }\n this.dataProviderLatestQueryParam = queryParam;\n this.dataProviderLatestQueryParamVersion++;\n\n this.dataProviderSubscription = this.dataProvider?.getAll(queryParam, this.dataProviderService).subscribe({\n next: res => {\n if (this.infiniteScroll) {\n if (this.isFilterChanged || this.isSortChanged) {\n this.dataProviderInfiniteScrollItems = [];\n }\n this.dataProviderInfiniteScrollItems.splice(queryParam!.itemsOffset ?? 0, queryParam!.itemsPerPage ?? this.rows, ...(res.pageData ?? []));\n this.dataProviderInfiniteScrollItems = [...this.dataProviderInfiniteScrollItems];\n } else {\n this.dataProviderQueryResultSubject.next(res);\n }\n this.isFilterChanged = false;\n this.isSortChanged = false;\n this.dataProviderLoadingSubject.next(false);\n },\n error: err => {\n NotificationUtil.tableNotificationError(this.translate, this.descriptor, err, this.viewContainer);\n const emptyQueryResult = new MediusQueryResult<T>();\n emptyQueryResult.pageData = [];\n emptyQueryResult.allDataCount = 0;\n this.dataProviderQueryResultSubject.next(emptyQueryResult);\n this.dataProviderLoadingSubject.next(false);\n }\n });\n\n if (emitEvent) {\n const mngEvent = new MngTableLoadEvent();\n mngEvent.originalEvent = this.dataProviderLatestLazyLoadEvent ?? undefined;\n mngEvent.queryParam = queryParam;\n this.loadEventEmitter.next(mngEvent);\n }\n }\n\n private loadTableFromRouteUpdate(params: Params) {\n const mediusQueryParam = MediusRestUtil.fromAngularQueryParamsToMediusQueryParams(params, this.filterDescriptors, this.rowsPerPageOptions[0]);\n if (this.dataProviderLatestLazyLoadEventVersion < this.dataProviderLatestQueryParamVersion + 1) {\n // update only if new version from query params will be higher\n this.updatePrimeSortAndFilter(mediusQueryParam);\n }\n this.useQueryParamsInitializedSubejct.next(true);\n this.loadTableWithDataProvider(mediusQueryParam);\n }\n\n private updatePrimeSortAndFilter(mediusQueryParam: MediusQueryParam) {\n this.multiSortMeta = this.createSortMeta(mediusQueryParam);\n this.filterMetadata = this.createFilterMeta(mediusQueryParam);\n this.rows = mediusQueryParam?.itemsPerPage ?? this.rowsPerPageOptions[0];\n this.offset = mediusQueryParam?.itemsOffset ?? 0;\n }\n\n private createFilterMeta(mediusQueryParam?: MediusQueryParam) {\n let params: MediusQueryParam;\n if (!mediusQueryParam) {\n params = new MediusQueryParam();\n } else {\n params = mediusQueryParam;\n }\n\n const primeFilterMeta: {[s: string]: FilterMetadata} = {};\n // if any filter is present, no default filters should be applied!\n const applyDefaultFilters = (params.filterParams?.length ?? 0) === 0;\n\n this.filterDescriptors.forEach(f => {\n let matchMode;\n if (f.hasDefaultValue) {\n matchMode = f.defaultFilterMatchMode;\n } else {\n switch (f.filterType) {\n case FilterTypeEnum.String:\n matchMode = FilterMatchMode.CONTAINS;\n break;\n case FilterTypeEnum.Date:\n matchMode = FilterMatchMode.DATE_AFTER;\n break;\n case FilterTypeEnum.Lookup:\n case FilterTypeEnum.LookupEnum: {\n const lookupFilter = f as FilterLookupDescriptor<any>;\n if (lookupFilter.multiselect) {\n matchMode = FilterMatchMode.IN;\n } else {\n matchMode = FilterMatchMode.EQUALS;\n }\n break;\n }\n default:\n matchMode = FilterMatchMode.EQUALS;\n break;\n }\n }\n\n primeFilterMeta[f.property] = {\n value: applyDefaultFilters && f.defaultValue ? f.defaultValue : null,\n matchMode: matchMode\n };\n });\n\n params.filterParams?.forEach(f => {\n const descriptor = this.filterDescriptors.find(fd => fd.filterProperty === f.property || fd.property === f.property);\n const matchMode = f.filterMatchType && descriptor ? MediusRestUtil.getMapping(f.filterMatchType, descriptor.filterType, 2)?.[0] : MediusFilterMatchType.Equals;\n if (descriptor && matchMode) {\n let filterValue = f.filterValue;\n if (descriptor.filterType === FilterTypeEnum.Date && typeof filterValue !== 'undefined') {\n if (typeof filterValue === 'string' || typeof filterValue === 'number') {\n filterValue = new Date(filterValue);\n }\n }\n primeFilterMeta[descriptor.property] = {\n value: filterValue,\n matchMode: matchMode\n };\n }\n });\n return primeFilterMeta;\n }\n\n private createSortMeta(mediusQueryParam?: MediusQueryParam): SortMeta[] {\n let params: MediusQueryParam;\n if (!mediusQueryParam) {\n params = new MediusQueryParam();\n } else {\n params = mediusQueryParam;\n }\n\n let sortMeta: SortMeta[];\n const applyDefaultSorts = (params.sortProperty?.length ?? 0) === 0;\n\n if (applyDefaultSorts && this.descriptor.hasDefaultSort) {\n sortMeta = this.descriptor.defaultSortProperty.map(\n (p, idx) =>\n <SortMeta>{\n field: p,\n order: this.descriptor.defaultSortAsc[idx] ? 1 : -1\n }\n );\n } else {\n sortMeta = [];\n }\n\n params.sortProperty?.forEach((s, idx) => {\n const existingIndex = sortMeta.findIndex(value => value.field === s);\n if (existingIndex > -1) {\n sortMeta[existingIndex].order = params.sortAsc?.[idx] ?? true ? 1 : -1;\n } else {\n sortMeta.push({\n field: s,\n order: params.sortAsc?.[idx] ?? true ? 1 : -1\n });\n }\n });\n\n return sortMeta;\n }\n\n private initializeDataLoadingTriggers() {\n if (this.useQueryParams) {\n // trigger table loads from route updates\n const subscription = this.route.queryParams.subscribe(qp => {\n this.loadTableFromRouteUpdate(qp);\n });\n this.subscriptions.push(subscription);\n } else {\n // load data immediately by creating default sorts and filters (primeng will trigger onLazyLoad event on sort&filter metadata change)\n const defaultSort = this.createSortMeta();\n if (defaultSort.length > 0) {\n this.multiSortMeta = defaultSort;\n }\n\n const defaultFilter = this.createFilterMeta();\n if (defaultFilter) {\n this.filterMetadata = defaultFilter;\n }\n }\n }\n}\n","<div [style.height]=\"scrollHeight === 'flex' ? 'calc(100vh - ' + tableFullHeightOffset + 'px)' : null\">\n <!-- MUST NOT use observable for value when using virtual scroll - does not work for some reason -->\n <p-table\n *ngIf=\"!useQueryParams || (useQueryParamsInitialized$ | async)\"\n [value]=\"infiniteScroll ? dataProviderInfiniteScrollItems : (queryResult$ | async)?.pageData ?? []\"\n [dataKey]=\"$any(descriptor.dataKeyProperty)\"\n [lazy]=\"useDataProvider\"\n [loading]=\"(loading$ | async) ?? false\"\n [paginator]=\"useDataProvider && !infiniteScroll\"\n [rows]=\"$any(infiniteScroll ? 20 : rows)\"\n [first]=\"$any(infiniteScroll ? 0 : offset)\"\n [totalRecords]=\"$any(infiniteScroll ? null : (queryResult$ | async)?.allDataCount ?? 0)\"\n [rowsPerPageOptions]=\"$any(infiniteScroll ? null : rowsPerPageOptions)\"\n [showCurrentPageReport]=\"!infiniteScroll\"\n [currentPageReportTemplate]=\"'mngTable.paginationMsg' | translate\"\n [multiSortMeta]=\"$any(multiSortMeta)\"\n [filters]=\"filterMetadata\"\n [(selection)]=\"selection\"\n (selectionChange)=\"onSelectionChange($event)\"\n [scrollable]=\"infiniteScroll\"\n [virtualScroll]=\"infiniteScroll\"\n [virtualRowHeight]=\"$any(rowHeight)\"\n [scrollHeight]=\"$any(scrollHeight)\"\n [selectionMode]=\"$any(selectionEnabled ? selectionMode : null)\"\n [rowHover]=\"descriptor.hasHover\"\n [styleClass]=\"className\"\n (onLazyLoad)=\"onTableLazyLoad($event)\"\n (onSort)=\"onTableSort($event)\"\n (onFilter)=\"onTableFilter($event)\"\n sortMode=\"multiple\"\n responsiveLayout=\"scroll\"\n [resizableColumns]=\"true\"\n [autoLayout]=\"true\">\n <ng-template *ngIf=\"captionTemplate || captionComponent || descriptor.title\" pTemplate=\"caption\">\n <ng-container *ngIf=\"captionTemplate; else componentOrDefaultCaption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate\"></ng-container>\n </ng-container>\n <ng-template #componentOrDefaultCaption>\n <div *ngIf=\"captionComponent; else defaultCaption\" [mngComponent]=\"captionComponent\" (instanceCreated)=\"onCaptionCmpInst($event)\"></div>\n <ng-template #defaultCaption>\n <h5 class=\"p-0 m-0\">{{ descriptor.title }}</h5>\n </ng-template>\n </ng-template>\n </ng-template>\n\n <ng-template pTemplate=\"header\">\n <tr *ngIf=\"!descriptor.hideHeader\">\n <th *ngIf=\"selectionEnabled && selectionMode === 'multiple'\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"min-width: 36px\"></th>\n <ng-container *ngFor=\"let col of descriptor.columns\">\n <th *ngIf=\"col.isSortEnabled\" [pSortableColumn]=\"col.property\" [class]=\"col.headerClassName\" [style.width.%]=\"col.width\" [style.min-width.px]=\"col.minWidth\">\n <div class=\"flex justify-content-between align-items-center\">\n {{ col.title ?? (col.property | i18nProperty: descriptor.model) | translate }}\n <p-sortIcon [field]=\"col.property\"></p-sortIcon>\n <mng-table-column-filter\n *ngIf=\"col.filterDescriptor && descriptor.filterDisplay === filterDisplayMenu\"\n class=\"ml-auto\"\n [display]=\"descriptor.filterDisplay\"\n [descriptor]=\"col.filterDescriptor\">\n </mng-table-column-filter>\n </div>\n </th>\n <th *ngIf=\"!col.isSortEnabled\">\n {{ col.title ?? (col.property | i18nProperty: descriptor.model) | translate }}\n <ng-container>\n <mng-table-column-filter\n *ngIf=\"col.filterDescriptor && descriptor.filterDisplay === filterDisplayMenu\"\n class=\"ml-auto\"\n [display]=\"descriptor.filterDisplay\"\n [descriptor]=\"col.filterDescriptor\">\n </mng-table-column-filter>\n </ng-container>\n </th>\n </ng-container>\n <th *ngIf=\"showInlineActionsColumn\"></th>\n </tr>\n <tr *ngIf=\"descriptor.filterDisplay === filterDisplayRow\" class=\"mng-column-filter-row\">\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"min-width: 36px\"></th>\n <th\n *ngFor=\"let col of descriptor.columns\"\n [class]=\"(col.filterDescriptor ? 'mng-column-filter-' + col.filterDescriptor.filterType + ' ' : ' ') + col.filterDescriptor?.columnClassName\"\n [style.width.%]=\"col.filterDescriptor?.columnWidth ?? col.width\"\n [style.min-width.px]=\"col.filterDescriptor?.columnMinWidth ?? col.minWidth\">\n <div class=\"flex\" *ngIf=\"col.filterDescriptor\">\n <mng-table-column-filter [display]=\"descriptor.filterDisplay\" [descriptor]=\"col.filterDescriptor\"></mng-table-column-filter>\n </div>\n </th>\n <th *ngIf=\"showInlineActionsColumn\"></th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-item let-idx=\"rowIndex\">\n <tr [style.height.px]=\"rowHeight\">\n <td *ngIf=\"selectionEnabled && selectionMode === 'multiple'\" style=\"width: 3rem\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <td *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"width: 3rem\">\n <p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\n </td>\n <td\n *ngFor=\"let col of descriptor.columns\"\n (click)=\"onCellClick($event, col, item, idx)\"\n [class]=\"col.className\"\n [class.clickable]=\"isColumnClickable\"\n [style.width.%]=\"col.width\"\n [style.min-width.px]=\"col.minWidth\">\n <mng-table-column-value [descriptor]=\"col\" [item]=\"item\"></mng-table-column-value>\n </td>\n <td *ngIf=\"showInlineActionsColumn\" class=\"column-action text-right\" [style.min-width.px]=\"columnActionMinWidth\">\n <ng-container *ngIf=\"columnActionTemplate; else showColumnActionComponentOrDefault\">\n <ng-container *ngTemplateOutlet=\"columnActionTemplate; context: {rowItem: item, rowIndex: idx}\"></ng-container>\n </ng-container>\n <ng-template #showColumnActionComponentOrDefault>\n <span\n *ngIf=\"columnActionComponent; else defaultColumnActions\"\n [mngComponent]=\"columnActionComponent!\"\n (instanceCreated)=\"onColumnActionCmpInst($event)\"></span>\n </ng-template>\n <ng-template #defaultColumnActions>\n <mng-action\n *ngFor=\"let action of rowInlineActions\"\n [action]=\"action\"\n [item]=\"item\"\n [itemId]=\"descriptor.model.idPropertyName ? item[descriptor.model.idPropertyName] : null\"\n [actionData]=\"{itemIndex: idx}\"\n (finish)=\"onActionFinish($event)\">\n </mng-action>\n </ng-template>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"loadingbody\">\n <tr [style.height.px]=\"rowHeight\">\n <td [attr.colspan]=\"descriptor.columns.length + (showInlineActionsColumn ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n <div class=\"loading-text\"></div>\n <p-skeleton [ngStyle]=\"{width: '100%'}\"></p-skeleton>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"emptymessage\">\n <tr [style.height.px]=\"rowHeight\">\n <td [attr.colspan]=\"descriptor.columns.length + (showInlineActionsColumn ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n {{ 'mngTable.noItems' | translate }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n</div>\n","import {Component, Input, OnDestroy, 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';\nimport {Subscription} from 'rxjs';\n\nimport {MediusQueryParam} from '../../api/models';\nimport {IDataProvider, ITableviewDataProvider} from '../../data-providers';\nimport {ActionDescriptor, TableviewDescriptor} from '../../descriptors';\nimport {ActionPositionEnum} from '../../descriptors/types';\nimport {IViewContainer} from '../../models';\nimport {MngActionExecutorService, MngViewContainerComponentService} from '../../services';\nimport {MngTableLoadEvent} from './models';\nimport {MngTableComponent} from './table/table.component';\n\n@Component({\n selector: 'mng-tableview',\n templateUrl: './tableview.component.html',\n providers: [MessageService, ConfirmationService, MngViewContainerComponentService]\n})\nexport class MngTableviewComponent<T, S> implements OnInit, OnDestroy, IViewContainer<T, S> {\n @Input() public descriptor!: TableviewDescriptor<T>;\n @Input() public dataProvider?: ITableviewDataProvider<T, S>;\n @Input() public actions: Array<ActionDescriptor<T>> = [];\n\n @ViewChild(MngTableComponent) public tableComponent?: MngTableComponent<T, S>;\n\n public rowClickActions: ActionDescriptor<T>[] = [];\n public rowInlineActions: ActionDescriptor<T>[] = [];\n public toolbarLeftActions: ActionDescriptor<T>[] = [];\n public toolbarRightActions: ActionDescriptor<T>[] = [];\n\n public tableQueryParam?: MediusQueryParam;\n\n private subscriptions: Subscription[] = [];\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 actionExecutor: MngActionExecutorService,\n private viewContainerService: MngViewContainerComponentService<T, S>\n ) {}\n\n ngOnInit() {\n this.viewContainerService.actions = this.actions;\n\n if (this.dataProvider) {\n this.viewContainerService.dataProvider = this.dataProvider;\n }\n const reloadTableSubscription = this.viewContainerService.reloadTable.subscribe(() => {\n this.reloadTable();\n });\n this.subscriptions.push(reloadTableSubscription);\n\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 this.toolbarRightActions = this.toolbarRightActions.reverse();\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n getMessageService(): MessageService {\n return this.messageService;\n }\n\n getDataProvider(): IDataProvider<T, S> | undefined {\n return this.dataProvider;\n }\n\n public reloadTable() {\n this.tableComponent?.reload();\n }\n\n public onTableLoad(event: MngTableLoadEvent) {\n this.tableQueryParam = event.queryParam;\n }\n}\n","<div class=\"mng-tableview\">\n <p-toast></p-toast>\n\n <div class=\"card\">\n <p-toolbar styleClass=\"mb-4\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [queryParam]=\"tableQueryParam\"> </mng-action>\n </ng-template>\n\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [queryParam]=\"tableQueryParam\"> </mng-action>\n </ng-template>\n </p-toolbar>\n\n <mng-table [descriptor]=\"descriptor.table\" [dataProvider]=\"dataProvider\" [useQueryParams]=\"true\" [actions]=\"actions\" (tableLoad)=\"onTableLoad($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle | translate }}</h5>\n </div>\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n","import {Directive, OnInit} from '@angular/core';\n\nimport * as FileSaver from 'file-saver';\nimport {map} from 'rxjs/operators';\n\nimport {MediusQueryParamBuilder} from '../../../api/models/builders/query-param.builder';\nimport {ITableviewDataProvider} from '../../../data-providers';\nimport {\n ActionDeleteDescriptor,\n ActionDescriptor,\n ActionEditorAddDescriptor,\n ActionEditorDetailsDescriptor,\n ActionEditorEditDescriptor,\n EditorDescriptor,\n ModelDescriptor,\n TableviewDescriptor\n} from '../../../descriptors';\nimport {ActionPositionEnum} from '../../../descriptors/types';\nimport {ActionDataProviderUtil} from '../../../utils';\n\n@Directive()\nexport abstract class AMngTableviewRouteComponent<T, S> implements OnInit {\n public descriptor!: TableviewDescriptor<T>;\n public dataProvider!: ITableviewDataProvider<T, S>;\n public actions!: Array<ActionDescriptor<T>>;\n\n public ngOnInit() {\n this.descriptor = this.createTableviewDescriptor();\n this.dataProvider = this.createTableviewDataProvider();\n this.actions = this.createActionDescriptors();\n }\n\n protected abstract createTableviewDescriptor(): TableviewDescriptor<T>;\n\n protected abstract createTableviewDataProvider(): ITableviewDataProvider<T, S>;\n\n protected createActionDescriptors(): Array<ActionDescriptor<T>> {\n const actions: Array<ActionDescriptor<T>> = [];\n actions.push(this.createActionDescriptorForDetails());\n actions.push(this.createActionDescriptorForAdd());\n actions.push(this.createActionDescriptorForEdit());\n actions.push(this.createActionDescriptorForDelete());\n actions.push(this.createActionDescriptorForExport());\n return actions;\n }\n\n protected createActionDescriptorForDetails(descriptor: EditorDescriptor<T> = this.descriptor.viewEditor): ActionEditorDetailsDescriptor<T> {\n return new ActionEditorDetailsDescriptor(descriptor);\n }\n\n protected createActionDescriptorForAdd(descriptor: EditorDescriptor<T> = this.descriptor.addEditor): ActionEditorAddDescriptor<T> {\n return new ActionEditorAddDescriptor(descriptor);\n }\n\n protected createActionDescriptorForEdit(descriptor: EditorDescriptor<T> = this.descriptor.editEditor): ActionEditorEditDescriptor<T> {\n return new ActionEditorEditDescriptor(descriptor);\n }\n\n protected createActionDescriptorForDelete(descriptor: ModelDescriptor<T> = this.descriptor.model): ActionDeleteDescriptor<T> {\n return new ActionDeleteDescriptor(descriptor);\n }\n\n protected createActionDescriptorForExport(descriptor: ModelDescriptor<T> = this.descriptor.model): ActionDescriptor<T> {\n return new ActionDescriptor(descriptor, 'export')\n .withRunFunction(ctx => {\n const queryParamBuilder = ctx.parameters.queryParam ? MediusQueryParamBuilder.createFromExisting(ctx.parameters.queryParam) : MediusQueryParamBuilder.create();\n queryParamBuilder.withItemsOffset(0).withItemsPerPage(1000);\n ctx.parameters.withQueryParam(queryParamBuilder.build());\n return ActionDataProviderUtil.runGetAllOrFail(ctx).pipe(\n map(res => {\n const blob = new Blob([JSON.stringify(res.pageData, undefined, 4)], {type: 'application/json;charset=utf-8'});\n const typeName = ctx.instance.action.model?.typeName ?? '';\n FileSaver.saveAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.json`);\n return undefined;\n })\n );\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withIcon('pi pi-upload');\n }\n}\n","import {Component, Input, OnInit, ViewChild} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {ITableviewDataProvider} from '../../../data-providers';\nimport {ActionDescriptor, TableviewDescriptor} from '../../../descriptors';\nimport {MngRouterData} from '../../../router/models';\nimport {MngTableviewComponent} from '../tableview.component';\nimport {AMngTableviewRouteComponent} from './tableview-route.abstract.component';\n\n@Component({\n selector: 'mng-tableview-route',\n templateUrl: '../../../../../templates/tableview-route.component.html'\n})\nexport class MngTableviewRouteComponent<T, S> extends AMngTableviewRouteComponent<T, S> implements OnInit {\n @Input('descriptor') public descriptorInit?: TableviewDescriptor<T>;\n @Input('dataProvider') public dataProviderInit?: ITableviewDataProvider<T, S>;\n @Input('actions') public actionsInit?: Array<ActionDescriptor<T>>;\n\n @ViewChild(MngTableviewComponent) public tableviewComponent?: MngTableviewComponent<T, S>;\n\n constructor(private route: ActivatedRoute) {\n super();\n }\n\n public get routeData() {\n return this.route.snapshot.data as MngRouterData;\n }\n\n protected createTableviewDescriptor(): TableviewDescriptor<T> {\n if (this.descriptorInit) {\n return this.descriptorInit;\n }\n if (this.routeData?.tableview?.descriptor) {\n throw Error('Tableview requires a descriptor.');\n }\n return this.routeData.tableview!.descriptor;\n }\n\n protected createTableviewDataProvider(): ITableviewDataProvider<T, S> {\n if (this.dataProviderInit) {\n return this.dataProviderInit;\n }\n if (this.routeData?.tableview?.dataProvider) {\n throw Error('Tableview requires a data provider.');\n }\n return this.routeData.tableview!.dataProvider;\n }\n\n protected override createActionDescriptors(): Array<ActionDescriptor<T>> {\n if (this.actionsInit) {\n return this.actionsInit;\n }\n return this.routeData?.tableview?.actions ?? super.createActionDescriptors();\n }\n\n public reloadTable() {\n this.tableviewComponent?.reloadTable();\n }\n}\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","import {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {FormControl} from '@angular/forms';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {Message} from 'primeng/api';\nimport {Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {MediusQueryParamBuilder, MediusQueryResult} from '../../../../../api/models';\nimport {FieldLookupDescriptor} from '../../../../../descriptors';\nimport {FieldLookupConfig} from '../../../../../descriptors/interfaces';\nimport {MngTableComponent} from '../../../../tableview';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum} from '../../../models';\n\n@Component({\n selector: 'mng-formly-field-lookup-dialog',\n templateUrl: 'formly-field-lookup-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldLookupDialogComponent<T, ET> extends FieldType implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild(MngTableComponent) public mngTable?: MngTableComponent<any, any>;\n\n public descriptor!: FieldLookupDescriptor<T, ET>;\n public config!: FieldLookupConfig;\n public fieldLabelFormControl: FormControl = new FormControl();\n\n public itemsSubject: Subject<T> = new ReplaySubject(1);\n public itemsAsync: Observable<T> = this.itemsSubject.asObservable();\n public addItemsSubject: Subject<MediusQueryResult<T>> = new ReplaySubject(1);\n public addItemsAsync: Observable<MediusQueryResult<T>> = this.addItemsSubject.asObservable();\n\n public dialogUseDataProvider = false;\n private dialogDataProviderService: any = null;\n private dialogIsLoadingSubject = new ReplaySubject<boolean>(1);\n\n public isDialogVisible = false;\n public dialogAreItemsLoaded = false;\n public dialogSelectedItem: any = null;\n public dialogMessages: Message[] = [];\n public dialogIsLoading$ = this.dialogIsLoadingSubject.asObservable();\n\n private lookupDataProviderSubscription?: Subscription;\n private subscriptions: Subscription[] = [];\n\n constructor(private injector: Injector) {\n super();\n }\n\n ngOnInit(): void {\n this.descriptor = this.to['descriptor'];\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n this.config = this.descriptor.config as FieldLookupConfig;\n if (!this.descriptor.dialogTableDataProvider && this.descriptor.dataProvider?.serviceType) {\n this.dialogUseDataProvider = true;\n this.dialogDataProviderService = this.injector.get<any>(this.descriptor.dataProvider.serviceType);\n }\n\n // init values\n this.setFieldLabelValue(this.formControl!.value);\n const subscription = this.formControl!.valueChanges.pipe(\n startWith(this.formControl!.value),\n distinctUntilChanged((prev, curr) => {\n const compareProp = this.descriptor.dialogTableDescriptor!.dataKeyProperty ?? this.descriptor.dialogTableDescriptor!.model.idPropertyName;\n if (compareProp && typeof prev === 'object' && typeof curr === 'object') {\n return prev[compareProp] === curr[compareProp];\n } else {\n return prev === curr;\n }\n })\n ).subscribe(v => {\n this.setFieldLabelValue(v);\n this.itemsSubject.next(v);\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldLookupDialogComponent, this, {\n value: v\n });\n });\n this.subscriptions.push(subscription);\n }\n\n ngAfterViewInit() {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.lookupDataProviderSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openSelectDialog() {\n if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {\n this.dialogIsLoadingSubject.next(true);\n const queryParamBuilder = MediusQueryParamBuilder.create(50);\n if (this.descriptor.dialogTableDescriptor!.hasDefaultSort) {\n this.descriptor.dialogTableDescriptor!.defaultSortProperty.forEach((p, idx) =>\n queryParamBuilder.withSort(p, this.descriptor.dialogTableDescriptor!.defaultSortAsc[idx])\n );\n }\n this.lookupDataProviderSubscription = this.descriptor.dataProvider?.lookup(queryParamBuilder.build(), this.dialogDataProviderService).subscribe({\n next: res => {\n const mqr = new MediusQueryResult<T>();\n mqr.pageData = res;\n mqr.allDataCount = res.length;\n this.addItemsSubject.next(mqr);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoadingSubject.next(false);\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DataProvider, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: 'LookupNext',\n queryResult: mqr\n });\n },\n error: err => {\n this.dialogIsLoadingSubject.next(false);\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DataProvider, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: 'LookupError',\n queryResult: err\n });\n }\n });\n }\n this.dialogSelectedItem = null;\n this.isDialogVisible = true;\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: true\n });\n }\n\n onSelectionChange(item: any) {\n this.dialogSelectedItem = item;\n }\n\n onCaptionCmpInst(instance: any) {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.TABLE_CAPTION_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n onColumnActionCmpInst(instance: any) {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n clear() {\n this.formControl!.setValue(undefined);\n this.dialogSelectedItem = null;\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: false\n });\n }\n\n addItem() {\n this.formControl!.setValue(this.dialogSelectedItem);\n this.dialogSelectedItem = null;\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n private setFieldLabelValue(value: T) {\n if (!value) {\n this.fieldLabelFormControl.setValue('');\n return;\n }\n if (typeof value === 'object') {\n const labelProperty = this.descriptor.itemsLabelProperty ?? this.descriptor.dialogTableDescriptor?.model.titlePropertyName;\n if (!labelProperty) {\n throw new Error('Could not determine label property.');\n }\n this.fieldLabelFormControl.setValue(value[labelProperty as keyof object]);\n } else {\n this.fieldLabelFormControl.setValue(value);\n }\n }\n}\n","<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\" *ngIf=\"!to.required && formControl?.value && !formControl?.disabled\"></i>\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate: {item: ''}\"\n [disabled]=\"formControl?.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate: {item: to?.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\">\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config?.table?.captionComponent\"\n [columnActionComponent]=\"config?.table?.columnActionComponent\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnActionComponentInstance)=\"onColumnActionCmpInst($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\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged, of, throwError} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\n\nimport {ActionDescriptor, ActionEditorDescriptor, ActionEditorSubmitDescriptor, FieldManyEditorDescriptor} from '../../../../../descriptors';\nimport {\n ActionEditorDialogSizeEnum,\n ActionEditorSubmitTypeEnum,\n ActionLevelEnum,\n ActionPositionEnum,\n ActionSizeEnum,\n FieldManyEditorActionEnum\n} from '../../../../../descriptors/types';\nimport {MngActionExecutorService} from '../../../../../services';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\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 MngFormlyFieldTableDialogFormComponent<T, ET> extends FieldType implements OnInit, AfterViewInit, OnDestroy {\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 actions: Array<ActionDescriptor<T>> = [];\n public toolbarRightActions: Array<ActionDescriptor<T>> = [];\n\n private subscriptions: Subscription[] = [];\n private isDisabledSubject = new BehaviorSubject<boolean>(false);\n private isEnabled$ = this.isDisabledSubject.asObservable().pipe(\n distinctUntilChanged(),\n map(e => !e)\n );\n\n constructor(private actionExecutor: MngActionExecutorService) {\n super();\n }\n\n public ngOnInit() {\n this.descriptor = this.to['descriptor'];\n const hasViewAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.View);\n const hasAddAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Add);\n const hasEditAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Edit);\n const hasDeleteAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Delete);\n\n if (hasViewAction) {\n const viewAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.viewEditor, 'details', this.descriptor.editor.model.type, this.descriptor.property)\n .withPosition(ActionPositionEnum.RowClick)\n .withTitle(null)\n .withDialogClassName('mng-field-dialog mng-action-editor-dialog')\n .withDialogSize(ActionEditorDialogSizeEnum.Small);\n viewAction.withEditorActions([new ActionEditorSubmitDescriptor(viewAction, ActionEditorSubmitTypeEnum.Cancel)]);\n this.actions.push(viewAction as ActionDescriptor<T>);\n }\n\n if (hasAddAction) {\n const addAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.addEditor, 'add', this.descriptor.editor.model.type, this.descriptor.property)\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withTitle(null)\n .withIcon('pi pi-plus')\n .withDialogClassName('mng-field-dialog mng-action-editor-dialog')\n .withDialogSize(ActionEditorDialogSizeEnum.Small)\n .withSize(ActionSizeEnum.ExtraSmall)\n .withSubmitFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(() => new Error(`No item was provided in context, edit cannot be done.`));\n }\n this.formState.submittedOn = Date.now();\n let value = this.formControl!.value;\n value = [...value, ctx.parameters.item];\n this.formControl!.patchValue(value);\n return of(ctx.parameters.item);\n })\n .withIsVisibleFunction(() => of(!this.options?.formState.disabled))\n .withIsEnabledFunction(() => this.isEnabled$);\n this.actions.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 .withPosition(ActionPositionEnum.RowInline)\n .withTitle(null)\n .withIcon('pi pi-pencil')\n .withDialogClassName('mng-field-dialog mng-action-editor-dialog')\n .withDialogSize(ActionEditorDialogSizeEnum.Small)\n .withSize(ActionSizeEnum.ExtraSmall)\n .withSubmitFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(() => new Error(`No item was provided in context, edit cannot be done.`));\n }\n this.formState.submittedOn = Date.now();\n const formControlValue = this.formControl!.value;\n formControlValue[ctx.parameters.actionData?.['itemIndex']] = ctx.parameters.item;\n this.formControl!.patchValue(formControlValue);\n return of(ctx.parameters.item);\n })\n .withIsVisibleFunction(() => of(!this.formControl?.disabled))\n .withIsEnabledFunction(() => this.isEnabled$);\n this.actions.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 .withPosition(ActionPositionEnum.RowInline)\n .withLevel(ActionLevelEnum.Danger)\n .withTitle(null)\n .withIcon('pi pi-trash')\n .withSize(ActionSizeEnum.ExtraSmall)\n .withRunFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(() => new Error(`No item was provided in context, delete cannot be done.`));\n }\n let formControlValue = this.formControl!.value as Array<T>;\n const compareProperty = this.descriptor.tableDescriptor.dataKeyProperty\n ? this.descriptor.tableDescriptor.dataKeyProperty\n : this.descriptor.tableDescriptor.model.idPropertyName;\n const ctxItem: any = ctx.parameters.item;\n if (compareProperty && ctxItem?.[compareProperty]) {\n formControlValue = formControlValue.filter((i: any) => i[compareProperty] !== ctxItem[compareProperty]);\n this.formControl!.patchValue(formControlValue);\n } else if (typeof ctx.parameters.actionData?.['itemIndex'] === 'number') {\n formControlValue.splice(ctx.parameters.actionData['itemIndex'], 1);\n this.formControl!.patchValue([...formControlValue]);\n } else {\n return throwError(() => new Error('Cannot compare items, please provide main table data key property or model id property.'));\n }\n return of(ctxItem);\n })\n .withIsVisibleFunction(() => of(!this.options?.formState.disabled))\n .withIsEnabledFunction(() => this.isEnabled$);\n this.actions.push(deleteAction);\n }\n\n this.actions.push(...this.descriptor.actions);\n for (const action of this.actions) {\n switch (action.position) {\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.push(action);\n break;\n }\n }\n\n // init values\n if (typeof this.formControl!.value === 'undefined' || this.formControl!.value === null) {\n this.formControl!.patchValue([]);\n }\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogFormComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n let subscription = this.formControl!.valueChanges.pipe(startWith(this.formControl!.value)).subscribe(v => {\n this.itemsSubject.next(v);\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldTableDialogFormComponent, this, {\n value: v\n });\n });\n this.subscriptions.push(subscription);\n\n this.isDisabledSubject.next(this.formControl!.disabled);\n subscription = this.formControl!.statusChanges.pipe().subscribe(status => {\n if (status === 'DISABLED' && !this.isDisabledSubject.value) {\n this.isDisabledSubject.next(true);\n } else if (status !== 'DISABLED' && this.isDisabledSubject.value) {\n this.isDisabledSubject.next(false);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogFormComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogFormComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" [actions]=\"actions\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"></mng-action>\n </div>\n </ng-template>\n</mng-table>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {Message} from 'primeng/api';\nimport {Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {MediusFilterMatchType, MediusQueryParamBuilder, MediusQueryResult} from '../../../../../api/models';\nimport {FieldManyToManyEditorDescriptor} from '../../../../../descriptors';\nimport {FieldManyToManyEditorActionEnum} from '../../../../../descriptors/types';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum} from '../../../models';\n\n@Component({\n selector: 'mng-formly-table-multiselect-add-field',\n templateUrl: './formly-field-table-dialog-multiselect.component.html',\n styleUrls: ['./formly-field-table-dialog-multiselect.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldTableDialogMultiselectComponent<T, ET> extends FieldType implements OnInit, AfterViewInit, OnDestroy {\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<MediusQueryResult<T>> = new ReplaySubject(1);\n public addItemsAsync: Observable<MediusQueryResult<T>> = this.addItemsSubject.asObservable();\n\n public dialogUseDataProvider = 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 = false;\n public hasDeleteAction = false;\n\n private lookupDataProviderSubscription?: Subscription;\n private subscriptions: Subscription[] = [];\n\n constructor(private injector: Injector) {\n super();\n }\n\n public ngOnInit() {\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 === FieldManyToManyEditorActionEnum.Add);\n this.hasDeleteAction = this.descriptor.actions.some(a => a === FieldManyToManyEditorActionEnum.Delete);\n\n // init values\n if (typeof this.formControl!.value === 'undefined' || this.formControl!.value === null) {\n this.formControl!.patchValue([]);\n }\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.formControl!.valueChanges.pipe(startWith(this.formControl!.value), distinctUntilChanged()).subscribe(v => {\n this.itemsSubject.next(v ?? []);\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldTableDialogMultiselectComponent, this, {\n value: v ?? []\n });\n });\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.lookupDataProviderSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openAddDialog() {\n if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {\n this.dialogIsLoadingSubject.next(true);\n const queryParamBuilder = MediusQueryParamBuilder.create(50);\n if (this.descriptor.lookupTableDescriptor.hasDefaultSort) {\n this.descriptor.lookupTableDescriptor.defaultSortProperty.forEach((p, idx) =>\n queryParamBuilder.withSort(p, this.descriptor.lookupTableDescriptor.defaultSortAsc[idx])\n );\n }\n if (this.descriptor.hasLookupExcludeValues) {\n const filterValues = this.formControl!.value.map((i: any) => i[this.descriptor.excludeValueProperty]);\n queryParamBuilder.withFilter(this.descriptor.excludeFilterProperty, filterValues, undefined, MediusFilterMatchType.NotIn);\n }\n this.lookupDataProviderSubscription = this.descriptor.lookupTableDataProvider?.getAll(queryParamBuilder.build(), this.dialogDataProviderService).subscribe({\n next: res => {\n this.addItemsSubject.next(res);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoadingSubject.next(false);\n },\n error: () => {\n this.dialogIsLoadingSubject.next(false);\n }\n });\n }\n this.dialogSelectedAddItems = [];\n this.isDialogVisible = true;\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: true\n });\n }\n\n onSelectionChange(items: Array<any>) {\n this.dialogSelectedAddItems = items;\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: false\n });\n }\n\n addItems() {\n let value = this.formControl!.value;\n if (!Array.isArray(value)) {\n value = [];\n }\n value = [...value, ...this.dialogSelectedAddItems];\n this.formControl!.patchValue(value);\n this.dialogSelectedAddItems = [];\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n removeItem(item: any) {\n let value = this.formControl!.value;\n if (!Array.isArray(value)) {\n value = [];\n }\n const compareProperty = this.descriptor.mainTableDescriptor.dataKeyProperty\n ? this.descriptor.mainTableDescriptor.dataKeyProperty\n : 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: any) => i[compareProperty] !== item[compareProperty]);\n this.formControl!.patchValue(value);\n this.dialogAreItemsLoaded = false;\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 align-items-center table-header pt-0\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <button\n *ngIf=\"hasAddAction && !options?.formState?.disabled\"\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-plus\"\n class=\"p-button-rounded p-button-success mng-button-xs\"\n (click)=\"openAddDialog()\"\n [disabled]=\"formControl!.disabled\"></button>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n <button\n *ngIf=\"hasDeleteAction && !options?.formState?.disabled\"\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-trash\"\n class=\"p-button-rounded p-button-danger mng-button-xs\"\n (click)=\"removeItem(item)\"\n [disabled]=\"formControl!.disabled\"></button>\n </ng-template>\n</mng-table>\n\n<p-dialog\n *ngIf=\"hasAddAction\"\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.addItem' | translate: {item: to?.label! | translate}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-field-dialog mng-action-editor-dialog mng-action-editor-dialog-sm\">\n <ng-template pTemplate=\"content\" class=\"table-container\">\n <div class=\"table-scroll\">\n <mng-table\n [descriptor]=\"descriptor.mainTableDescriptor\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [loading]=\"dialogIsLoading$\"\n (selectionChange)=\"onSelectionChange($event)\">\n </mng-table>\n </div>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n\n <div class=\"table-footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.add' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-primary\"\n (click)=\"addItems()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n [disabled]=\"form.disabled\"></button>\n </div>\n </ng-template>\n</p-dialog>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\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 MngFormlyFieldTabsComponent extends FieldType {}\n","<p-tabView>\n <p-tabPanel\n *ngFor=\"let tab of field.fieldGroup; let i = index; let last = last\"\n [header]=\"tab.props?.label! | translate\"\n [headerStyleClass]=\"$any(formControl!.valid ? 'p-tabview-title' : null)\">\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.props?.label!) + '_invalid']\">{{\n tab.props?.label! | translate\n }}</span>\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n</p-tabView>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {FieldGroupDescriptor} from '../../../../../descriptors';\nimport {FieldGroupTypeEnum} from '../../../../../descriptors/types';\n\n@Component({\n selector: 'mng-formly-field-fieldset',\n templateUrl: './formly-field-fieldset.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldFieldsetComponent extends FieldType implements OnInit {\n public readonly typeFieldset = FieldGroupTypeEnum.Fieldset;\n public readonly typeLogical = FieldGroupTypeEnum.Logical;\n public descriptor?: FieldGroupDescriptor<any>;\n\n ngOnInit() {\n this.descriptor = this.to['descriptor'];\n }\n}\n","<ng-container *ngFor=\"let group of field.fieldGroup; let i = index; let last = last\">\n <ng-container [ngSwitch]=\"group?.props?.['descriptor']?.type\">\n <p-fieldset *ngSwitchCase=\"typeFieldset\" [legend]=\"group.props?.label! | translate\">\n <formly-field [field]=\"group\"></formly-field>\n </p-fieldset>\n <formly-field *ngSwitchDefault [field]=\"group\"></formly-field>\n </ng-container>\n</ng-container>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {MngCommonsService} from '../../services';\n\n@Component({\n selector: 'mng-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngBreadcrumbComponent {\n constructor(public mngCommons: MngCommonsService) {}\n}\n","<div class=\"layout-breadcrumb-container\">\n <div class=\"layout-breadcrumb\">\n <p-breadcrumb [home]=\"$any(mngCommons.breadcrumbHome$ | async)\" [model]=\"$any(mngCommons.breadcrumbs$ | async)\" styleClass=\"layout-breadcrumb py-2\"></p-breadcrumb>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {MngCommonsService} from '../../services';\n\n@Component({\n selector: 'mng-footer',\n templateUrl: './footer.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFooterComponent {\n public currentYear = new Date().getFullYear();\n\n constructor(public mngCommons: MngCommonsService) {}\n}\n","<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n <img id=\"footer-logo\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" alt=\"atlantis-layout\" />\n <span class=\"app-name\">{{ mngCommons.appName | translate }}</span>\n </div>\n <span class=\"copyright\">© {{ mngCommons.appOwner | translate }} - {{ currentYear }}</span>\n</div>\n","import {Injectable} from '@angular/core';\n\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MngCommonsService} from '../../../services';\n\n@Injectable()\nexport class MngMainLayoutComponentService {\n private _overlayMenuActive = false;\n private _overlayMenuActiveSubject: Subject<boolean> = new BehaviorSubject(this._overlayMenuActive);\n private _staticMenuDesktopInactive = false;\n private _staticMenuDesktopInactiveSubject: Subject<boolean> = new BehaviorSubject(this._staticMenuDesktopInactive);\n private _staticMenuMobileActive = false;\n private _staticMenuMobileActiveSubject: Subject<boolean> = new BehaviorSubject(this._staticMenuMobileActive);\n\n private _sidebarActive = true;\n private _sidebarActiveSubject: Subject<boolean> = new BehaviorSubject(this._sidebarActive);\n private _sidebarStatic = true;\n private _sidebarStaticSubject: Subject<boolean> = new BehaviorSubject(this._sidebarStatic);\n\n private _menuClick = false;\n private _menuHoverActive = false;\n private _topbarItemClick = false;\n\n private _activeTopbarItem: any = null;\n private _activeTopbarItemSubject: Subject<any> = new BehaviorSubject(this._activeTopbarItem);\n\n private _pinActive = true;\n private _pinActiveSubject: Subject<boolean> = new BehaviorSubject(this._pinActive);\n\n private _innerWidth = 1920;\n private _innerWidthSubject: Subject<number> = new BehaviorSubject(this._innerWidth);\n\n constructor(private mngCommons: MngCommonsService) {}\n\n get overlayMenuActive$(): Observable<boolean> {\n return this._overlayMenuActiveSubject.asObservable();\n }\n\n set overlayMenuActive(value: boolean) {\n this._overlayMenuActive = value;\n this._overlayMenuActiveSubject.next(value);\n }\n\n get staticMenuDesktopInactive$(): Observable<boolean> {\n return this._staticMenuDesktopInactiveSubject.asObservable();\n }\n\n set staticMenuDesktopInactive(value: boolean) {\n this._staticMenuDesktopInactive = value;\n this._staticMenuDesktopInactiveSubject.next(value);\n }\n\n get staticMenuMobileActive$(): Observable<boolean> {\n return this._staticMenuMobileActiveSubject.asObservable();\n }\n\n set staticMenuMobileActive(value: boolean) {\n this._staticMenuMobileActive = value;\n this._staticMenuMobileActiveSubject.next(value);\n }\n\n get sidebarActive$(): Observable<boolean> {\n return this._sidebarActiveSubject.asObservable();\n }\n\n set sidebarActive(value: boolean) {\n this._sidebarActive = value;\n this._sidebarActiveSubject.next(value);\n }\n\n get sidebarStatic$(): Observable<boolean> {\n return this._sidebarStaticSubject.asObservable();\n }\n\n set sidebarStatic(value: boolean) {\n this._sidebarStatic = value;\n this._sidebarStaticSubject.next(value);\n }\n\n set menuHoverActive(value: boolean) {\n this._menuHoverActive = value;\n }\n\n set topbarItemClick(value: boolean) {\n this._topbarItemClick = value;\n }\n\n get activeTopbarItem$(): Observable<any> {\n return this._activeTopbarItemSubject.asObservable();\n }\n\n set activeTopbarItem(value: any) {\n this._activeTopbarItem = value;\n this._activeTopbarItemSubject.next(value);\n }\n\n get pinActive$(): Observable<boolean> {\n return this._pinActiveSubject.asObservable();\n }\n\n set pinActive(value: boolean) {\n this._pinActive = value;\n this._pinActiveSubject.next(value);\n }\n\n get isDesktop$() {\n return this._innerWidthSubject.asObservable().pipe(map(e => this.isWidthDesktop(e)));\n }\n\n get isMobile$() {\n return this._innerWidthSubject.asObservable().pipe(map(e => this.isWidthMobile(e)));\n }\n\n set innerWidth(value: number) {\n this._innerWidth = value;\n this._innerWidthSubject.next(value);\n }\n\n onLayoutClick() {\n if (!this._topbarItemClick) {\n this.activeTopbarItem = null;\n }\n\n if (!this._menuClick) {\n if (this.mngCommons.menuModeIsSlim && !this.isMobile()) {\n this.mngCommons.menuReset();\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._menuClick = false;\n this.topbarItemClick = false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onSidebarMouseOver(event: any) {\n if (this.mngCommons.menuModeIsSidebar && !this._sidebarStatic) {\n this.sidebarActive = this.isDesktop();\n setTimeout(() => {\n this.pinActive = this.isDesktop();\n }, 200);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onSidebarMouseLeave(event: any) {\n if (this.mngCommons.menuModeIsSidebar && !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.mngCommons.menuModeIsOverlay) {\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 /**\n * Checks if is desktop width, DO NOT use within HTML templates or within functions called by HTML templates\n */\n public isDesktop() {\n return this.isWidthDesktop(this._innerWidth);\n }\n\n /**\n * Checks if is mobile width, DO NOT use within HTML templates or within functions called by HTML templates\n */\n public isMobile() {\n return this.isWidthMobile(this._innerWidth);\n }\n\n private isWidthDesktop(width: number) {\n return width > 991;\n }\n\n private isWidthMobile(width: number) {\n return width <= 991;\n }\n}\n","import {animate, state, style, transition, trigger} from '@angular/animations';\nimport {Component, HostBinding, Injector, Input, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, CanActivate, GuardsCheckEnd, NavigationEnd, Router, RouterStateSnapshot, UrlTree} from '@angular/router';\n\nimport {BehaviorSubject, Observable, Subscription, combineLatest, distinctUntilChanged, from, of} from 'rxjs';\nimport {first, map} from 'rxjs/operators';\n\nimport {MngMenuItem} from '../../models';\nimport {MngAuthorizationService} from '../../security';\nimport {MngCommonsService} from '../../services';\nimport {MngMainLayoutComponentService} from './services';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[mng-menuitem]',\n templateUrl: './menu-item.component.html',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class.layout-root-menuitem]': 'root',\n '[class.active-menuitem]': 'active'\n },\n animations: [\n trigger('children', [\n state(\n 'void',\n style({\n height: '0px'\n })\n ),\n state(\n 'hiddenAnimated',\n style({\n height: '0px'\n })\n ),\n state(\n 'visibleAnimated',\n style({\n height: '*'\n })\n ),\n state(\n 'visible',\n style({\n height: '*',\n 'z-index': 100\n })\n ),\n state(\n 'hidden',\n style({\n height: '0px',\n 'z-index': '*'\n })\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 // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngMenuItemComponent implements OnInit, OnDestroy {\n @Input() item!: MngMenuItem;\n @Input() index = 0;\n @Input() root = false;\n @Input() parentKey: string | null = null;\n\n @HostBinding('class.py-0') private hostClassNoPadding = false;\n\n public key = '';\n public active = false;\n public hover = false;\n\n private guardsIsAllowedSubject = new BehaviorSubject(true);\n public guardsIsAllowed$: Observable<boolean>;\n private isPermittedSubject = new BehaviorSubject(true);\n public isPermitted$: Observable<boolean>;\n\n private itemUrl?: string | UrlTree;\n private menuSourceSubscription?: Subscription;\n private menuResetSubscription?: Subscription;\n private routerEventsSubscription?: Subscription;\n private guardsIsAllowedSubscription?: Subscription;\n private isPermittedSubscription?: Subscription;\n private isVisibleCombinedSubscription?: Subscription;\n\n constructor(\n private injector: Injector,\n private router: Router,\n private route: ActivatedRoute,\n private authorization: MngAuthorizationService,\n public mngCommons: MngCommonsService,\n public mainLayoutService: MngMainLayoutComponentService\n ) {\n this.guardsIsAllowed$ = this.guardsIsAllowedSubject.asObservable().pipe(distinctUntilChanged());\n this.isPermitted$ = this.isPermittedSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n ngOnInit() {\n if (!this.mngCommons.menuModeIsSlim && this.item.routerLink) {\n this.updateActiveStateFromRoute();\n }\n\n this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);\n if (this.item.routerLink) {\n if (typeof this.item.routerLink === 'string') {\n this.itemUrl = this.item.routerLink;\n } else {\n this.itemUrl = this.router.parseUrl(this.item.routerLink.join('/'));\n }\n }\n\n this.menuSourceSubscription = this.mngCommons.menuActiveKey$.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.mngCommons.menuReset$.subscribe(() => {\n this.active = false;\n });\n\n this.routerEventsSubscription = this.router.events.subscribe(next => {\n if (next instanceof GuardsCheckEnd && next.shouldActivate) {\n this.checkIfMenuItemIsAllowedFromGuard(next.state);\n } else if (next instanceof NavigationEnd) {\n if (this.mngCommons.menuModeIsSlim && !this.mainLayoutService.isMobile()) {\n this.active = false;\n } else {\n this.updateActiveStateFromRoute();\n }\n }\n });\n\n if (this.item.permissions) {\n this.isPermittedSubscription = this.authorization.isPermitted(this.item.permissions).subscribe({\n next: isPermitted => {\n this.isPermittedSubject.next(isPermitted);\n }\n });\n }\n\n this.checkIfMenuItemIsAllowedFromGuard(this.router.routerState.snapshot);\n\n this.isVisibleCombinedSubscription = combineLatest([this.isPermitted$, this.guardsIsAllowed$]).subscribe({\n next: res => {\n this.hostClassNoPadding = res.some(r => r === false);\n }\n });\n }\n\n updateActiveStateFromRoute() {\n if (this.itemUrl) {\n this.active = this.router.isActive(this.itemUrl, this.item.items ? false : true);\n } else {\n this.active = false;\n }\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.mainLayoutService.menuHoverActive = !this.mainLayoutService.menuHoverActive;\n }\n\n // notify other items\n this.mngCommons.menuChangeActiveKey(this.key);\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.mainLayoutService.isMobile()) {\n this.mainLayoutService.staticMenuMobileActive = false;\n }\n\n if (this.mngCommons.menuModeIsOverlay) {\n this.mainLayoutService.overlayMenuActive = false;\n }\n\n // reset horizontal menu\n if (this.mngCommons.menuModeIsSlim && !this.mainLayoutService.isMobile()) {\n this.mngCommons.menuReset();\n this.mainLayoutService.menuHoverActive = false;\n }\n }\n }\n\n onMouseEnter() {\n // activate item on hover\n if (this.root && this.mainLayoutService.menuHoverActive && this.mngCommons.menuModeIsSlim && this.mainLayoutService.isDesktop()) {\n this.mngCommons.menuChangeActiveKey(this.key);\n this.active = true;\n }\n }\n\n ngOnDestroy() {\n this.menuSourceSubscription?.unsubscribe();\n this.menuResetSubscription?.unsubscribe();\n this.routerEventsSubscription?.unsubscribe();\n this.guardsIsAllowedSubscription?.unsubscribe();\n this.isPermittedSubscription?.unsubscribe();\n this.isVisibleCombinedSubscription?.unsubscribe();\n }\n\n private checkIfMenuItemIsAllowedFromGuard(routerState: RouterStateSnapshot) {\n this.guardsIsAllowedSubscription?.unsubscribe();\n if (this.item.guards?.length) {\n const obs = [];\n for (const guard of this.item.guards) {\n const tokenInjectedInstance = this.injector.get(guard);\n if (tokenInjectedInstance && 'canActivate' in tokenInjectedInstance) {\n const guardInstance = tokenInjectedInstance as CanActivate;\n const canActivateRes = guardInstance.canActivate(this.route.snapshot, routerState);\n\n let canActivateObs: Observable<boolean | UrlTree>;\n if (canActivateRes instanceof Observable) {\n canActivateObs = canActivateRes;\n } else if (canActivateRes instanceof Promise) {\n canActivateObs = from(canActivateRes);\n } else {\n canActivateObs = of(canActivateRes);\n }\n obs.push(\n canActivateObs.pipe(\n first(),\n map(res => res === true) // if url tree is present, that means redirect and implies not allowed\n )\n );\n }\n }\n this.guardsIsAllowedSubscription = combineLatest(obs)\n .pipe(first())\n .subscribe(next => {\n const result = next.every(n => n === true);\n this.guardsIsAllowedSubject.next(result);\n });\n } else {\n this.guardsIsAllowedSubject.next(true);\n }\n }\n}\n","<ng-container>\n <div *ngIf=\"root && item.visible !== false && (guardsIsAllowed$ | async) === true && (isPermitted$ | async) === true\" class=\"layout-menuitem-root-text\">\n {{ item.label! | translate }}\n </div>\n <a\n *ngIf=\"(!item.routerLink || item.items) && item.visible !== false && (guardsIsAllowed$ | async) === true && (isPermitted$ | async) === true\"\n [attr.href]=\"item.href\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n 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\n *ngIf=\"item.routerLink && !item.items && item.visible !== false && (guardsIsAllowed$ | async) === true && (isPermitted$ | async) === true\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"hover = true\"\n (mouseleave)=\"hover = false\"\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"active-menuitem-routerlink\"\n [routerLinkActiveOptions]=\"{exact: true}\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n 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\n *ngIf=\"\n ((item.items && active) || (item.items && (mngCommons.menuModeIsStatic$ | async) && (root || active))) &&\n item.visible !== false &&\n (guardsIsAllowed$ | async) === true &&\n (isPermitted$ | async) === true\n \"\n [@children]=\"\n (mngCommons.menuModeIsSlim$ | async) && (mainLayoutService.isMobile$ | async) === false && root\n ? active\n ? 'visible'\n : 'hidden'\n : (mngCommons.menuModeIsStatic$ | async) && root && (mainLayoutService.isMobile$ | async) === false\n ? 'visible'\n : active\n ? 'visibleAnimated'\n : 'hiddenAnimated'\n \">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li mng-menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeClassName\"></li>\n </ng-template>\n </ul>\n</ng-container>\n","import {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\n\nimport {Observable, ReplaySubject} from 'rxjs';\n\nimport {MngConfigurationService} from './configuration.service';\n\n@Injectable()\nexport class MngVersionService {\n private cache: {[key: string]: ReplaySubject<unknown>} = {};\n\n constructor(private http: HttpClient, private configurationService: MngConfigurationService) {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public loadVersion(path: string, baseConfigKey?: string, jsonPath = '$'): Observable<unknown> {\n const urlSegments = [];\n if (baseConfigKey) {\n const baseUrl = this.configurationService.getConfigValue(baseConfigKey);\n urlSegments.push(baseUrl.endsWith('/') ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl);\n }\n if (path) {\n urlSegments.push(!path.startsWith('/') ? `/${path}` : path);\n }\n const url = urlSegments.join('');\n if (!this.cache[url]) {\n this.cache[url] = new ReplaySubject<unknown>(1);\n\n this.http.get(urlSegments.join('')).subscribe({\n next: res => {\n this.cache[url].next(res);\n }\n });\n }\n\n return this.cache[url].asObservable();\n }\n}\n","import {ChangeDetectionStrategy, Component, Input, OnInit} from '@angular/core';\n\nimport {BehaviorSubject} from 'rxjs';\n\nimport {VersionConfig, VersionConfigType, VersionInfo} from '../../models';\nimport {JsonPathPipe} from '../../pipes';\nimport {MngVersionService} from '../../services/version.service';\n\n@Component({\n selector: 'mng-version',\n templateUrl: './version.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngVersionComponent implements OnInit {\n @Input('version') public initVersion?: VersionConfigType;\n\n public displayName?: string;\n public displayVersion?: string;\n public versions?: Array<VersionConfig>;\n\n private loadingSubject = new BehaviorSubject(false);\n public loading$ = this.loadingSubject.asObservable();\n\n constructor(private versionService: MngVersionService, private jsonPathPipe: JsonPathPipe) {}\n\n ngOnInit() {\n if (Array.isArray(this.initVersion)) {\n this.versions = this.initVersion;\n } else if (typeof this.initVersion === 'string') {\n this.displayVersion = this.initVersion;\n } else if (typeof this.initVersion !== 'undefined') {\n if (this.initVersion['info' as keyof object] || this.initVersion['urlPath' as keyof object]) {\n const config = this.initVersion as VersionConfig;\n this.displayName = config.displayName;\n\n if (config.urlPath) {\n this.loadingSubject.next(true);\n this.versionService.loadVersion(config.urlPath, config.urlBaseConfigKey).subscribe({\n next: res => {\n this.displayVersion = this.jsonPathPipe.transform(res, config.infoJsonPath ?? '$');\n this.loadingSubject.next(false);\n },\n error: () => {\n this.displayVersion = '';\n this.loadingSubject.next(false);\n }\n });\n } else {\n this.displayVersion = this.jsonPathPipe.transform(config.info, config.infoJsonPath ?? '$.raw');\n }\n } else {\n const info = this.initVersion as VersionInfo;\n this.displayVersion = this.jsonPathPipe.transform(info, '$.raw');\n }\n }\n }\n}\n","<ng-container *ngIf=\"versions; else version\">\n <ng-container *ngFor=\"let v of versions; let last = last\"> <mng-version [version]=\"v\"></mng-version><br *ngIf=\"!last\" /> </ng-container>\n</ng-container>\n<ng-template #version>\n <ng-container *ngIf=\"displayName\">{{ displayName }}: </ng-container>\n <ng-container *ngIf=\"(loading$ | async) === false\">{{ displayVersion }}</ng-container>\n</ng-template>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {MngCommonsService} from '../../services';\nimport {MngMainLayoutComponentService} from './services';\n\n@Component({\n selector: 'mng-menu',\n templateUrl: './menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngMenuComponent {\n constructor(public mngCommons: MngCommonsService, public mainLayoutService: MngMainLayoutComponentService) {}\n}\n","<div\n class=\"layout-menu-wrapper\"\n [ngClass]=\"{'layout-sidebar-active': (mainLayoutService.sidebarActive$ | async)}\"\n (click)=\"mainLayoutService.onSidebarClick($event)\"\n (mouseover)=\"mainLayoutService.onSidebarMouseOver($event)\"\n (mouseleave)=\"mainLayoutService.onSidebarMouseLeave($event)\">\n <div class=\"menu-logo\">\n <a routerLink=\"/\" class=\"logo\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" />\n </a>\n\n <a routerLink=\"/\" class=\"app-name\" *ngIf=\"(mngCommons.menuModeIsSlim$ | async) === false || (mainLayoutService.isMobile$ | async)\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoNameDark : mngCommons.appLogoNameLight\" />\n </a>\n <a *ngIf=\"mngCommons.menuPinEnabled\" class=\"menu-pin\" (click)=\"mainLayoutService.onToggleMenu($event)\">\n <span *ngIf=\"mngCommons.menuModeIsOverlay$ | async\" class=\"pi pi-times\"></span>\n <span\n *ngIf=\"(mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async) === false && (mainLayoutService.pinActive$ | async)\"\n class=\"pi pi-unlock\"></span>\n <span *ngIf=\"(mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async) && (mainLayoutService.pinActive$ | async)\" 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 mngCommons.menuItems; let i = index\">\n <li mng-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\n <div class=\"menu-version\">\n <mng-version [version]=\"mngCommons.appVersion\"></mng-version>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, OnInit, QueryList, Type, ViewChildren} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {MngTemplateDirective} from '../../directives';\nimport {IUser} from '../../models';\nimport {MngRouterData} from '../../router/models';\nimport {MngCommonsService} from '../../services';\nimport {MngBreadcrumbComponent} from './breadcrumb.component';\nimport {MngMenuComponent} from './menu.component';\nimport {MngMainLayoutComponentService} from './services';\n\n@Component({\n selector: 'mng-topbar',\n templateUrl: './topbar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngTopbarComponent implements OnInit {\n @ViewChildren(MngTemplateDirective) templates!: QueryList<MngTemplateDirective>;\n\n public breadcrumbComponent: Type<any> = MngBreadcrumbComponent;\n public menuComponent: Type<any> = MngMenuComponent;\n\n public languages: Array<string> = ['en'];\n public selectedLanguage = 'en';\n public user?: IUser;\n\n constructor(private route: ActivatedRoute, public mngCommons: MngCommonsService, public mainLayoutService: MngMainLayoutComponentService) {}\n\n ngOnInit(): void {\n const routeData = this.route.snapshot.data as MngRouterData;\n if (routeData?.breadcrumbComponent) {\n this.breadcrumbComponent = routeData.breadcrumbComponent;\n }\n if (routeData?.menuComponent) {\n this.menuComponent = routeData.menuComponent;\n }\n\n this.languages = this.mngCommons.appLanguages;\n this.selectedLanguage = this.mngCommons.appLanguage;\n this.mngCommons.user$.subscribe(u => {\n this.user = u;\n });\n\n this.mainLayoutService.innerWidth = window.innerWidth;\n }\n\n public switchLanguage(language: string) {\n this.mngCommons.appLanguage = language;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public logout(user: IUser, event: Event) {\n if (typeof user.logout === 'function') {\n user.logout();\n }\n }\n}\n","<div class=\"layout-topbar\">\n <div class=\"layout-topbar-left\">\n <a\n href=\"#\"\n class=\"topbar-menu-button\"\n (click)=\"mainLayoutService.onMenuButtonClick($event)\"\n *ngIf=\"(mngCommons.menuModeIsOverlay$ | async) || (mainLayoutService.isMobile$ | async)\">\n <i class=\"pi pi-bars\"></i>\n </a>\n\n <ng-container [mngComponent]=\"breadcrumbComponent\"></ng-container>\n </div>\n\n <ng-container [mngComponent]=\"menuComponent\"></ng-container>\n\n <div class=\"layout-topbar-right\">\n <ul class=\"layout-topbar-right-items\">\n <li #profile class=\"profile-item\" [ngClass]=\"{'active-topmenuitem': (mainLayoutService.activeTopbarItem$ | async) === profile}\">\n <a href=\"#\" (click)=\"mainLayoutService.onTopbarItemClick($event, profile)\">\n <i class=\"pi pi-fw pi-user\"></i>\n </a>\n <ul class=\"fadeInDown\" *ngIf=\"user\">\n <li role=\"menuitem\">\n <a>\n {{ user?.displayName ?? user?.username }}\n </a>\n </li>\n <li role=\"menuitem\" *ngIf=\"user?.logout || user?.logoutUrl\">\n <a [href]=\"user?.logoutUrl\" (click)=\"logout(user, $event)\">\n <i class=\"pi pi-fw pi-sign-out\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n </ul>\n </li>\n <li *ngIf=\"languages.length > 1\" class=\"profile-item\" [ngClass]=\"{'active-topmenuitem': (mainLayoutService.activeTopbarItem$ | async) === profile}\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"selectedLanguage\" [options]=\"languages\" (onChange)=\"switchLanguage($event.value)\"></p-dropdown>\n </li>\n </ul>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, HostListener, OnInit, QueryList, Type, ViewChildren} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {MngTemplateDirective} from '../../directives';\nimport {MngRouterData} from '../../router/models';\nimport {MngCommonsService} from '../../services';\nimport {MngFooterComponent} from './footer.component';\nimport {MngMenuComponent} from './menu.component';\nimport {MngMainLayoutComponentService} from './services';\nimport {MngTopbarComponent} from './topbar.component';\n\n@Component({\n selector: 'mng-main-layout',\n templateUrl: './main-layout.component.html',\n providers: [MngMainLayoutComponentService],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngMainLayoutComponent implements OnInit {\n @ViewChildren(MngTemplateDirective) templates!: QueryList<MngTemplateDirective>;\n\n public topbarComponent: Type<any> = MngTopbarComponent;\n public menuComponent: Type<any> = MngMenuComponent;\n public footerComponent: Type<any> = MngFooterComponent;\n\n constructor(private route: ActivatedRoute, public mngCommons: MngCommonsService, public mainLayoutService: MngMainLayoutComponentService) {}\n\n ngOnInit() {\n const routeData = this.route.snapshot.data as MngRouterData;\n if (routeData?.topbarComponent) {\n this.topbarComponent = routeData.topbarComponent;\n }\n if (routeData?.menuComponent) {\n this.menuComponent = routeData.menuComponent;\n }\n if (routeData?.footerComponent) {\n this.footerComponent = routeData.footerComponent;\n }\n\n this.mainLayoutService.innerWidth = window.innerWidth;\n }\n\n @HostListener('window:resize', ['$event'])\n onWindowResize(event: UIEvent) {\n const target: any = event.target;\n this.mainLayoutService.innerWidth = target?.innerWidth ?? window.innerWidth;\n }\n}\n","<div\n class=\"layout-wrapper\"\n (click)=\"mainLayoutService.onLayoutClick()\"\n [ngClass]=\"{\n 'layout-static': mngCommons.menuModeIsStatic$ | async,\n 'layout-overlay': mngCommons.menuModeIsOverlay$ | async,\n 'layout-slim': mngCommons.menuModeIsSlim$ | async,\n 'layout-sidebar': mngCommons.menuModeIsSidebar$ | async,\n 'layout-sidebar-static': (mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async),\n 'layout-overlay-active': mainLayoutService.overlayMenuActive$ | async,\n 'layout-mobile-active': mainLayoutService.staticMenuMobileActive$ | async,\n 'layout-static-inactive': (mainLayoutService.staticMenuDesktopInactive$ | async) && (mngCommons.menuModeIsStatic$ | async)\n }\">\n <div class=\"layout-main\">\n <ng-container [mngComponent]=\"topbarComponent\"></ng-container>\n\n <ng-container\n *ngIf=\"\n (mainLayoutService.isMobile$ | async) === false &&\n ((mngCommons.menuModeIsStatic$ | async) || (mngCommons.menuModeIsSlim$ | async) || (mngCommons.menuModeIsSidebar$ | async))\n \"\n [mngComponent]=\"menuComponent\">\n </ng-container>\n\n <div class=\"layout-main-content\">\n <router-outlet></router-outlet>\n </div>\n\n <ng-container [mngComponent]=\"footerComponent\"></ng-container>\n </div>\n</div>\n","import {Observable} from 'rxjs';\n\nimport {MngCommonsInitService} from './commons-init.service';\n\nexport function mngCommonsInitializerProvider(mngCommonsInit: MngCommonsInitService): () => Observable<void> {\n return () => mngCommonsInit.initialize();\n}\n","import {Inject, Injectable, Optional} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable, combineLatest, mergeMap, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MngCommonsService} from '../commons.service';\nimport {MngConfigurationService} from '../configuration.service';\nimport {MNG_COMMONS_INITIALIZER_IT} from '../tokens';\n\n@Injectable()\nexport class MngCommonsInitService {\n private isInitialized = false;\n\n constructor(\n private translate: TranslateService,\n private configurationService: MngConfigurationService,\n private mngCommons: MngCommonsService,\n @Inject(MNG_COMMONS_INITIALIZER_IT) @Optional() private readonly commonsInitializers: ReadonlyArray<() => Observable<unknown>>\n ) {}\n\n public initialize(): Observable<void> {\n if (this.isInitialized) {\n return of(void 0);\n }\n\n console.debug(`Initializing @mediusinc/mng-commons.`);\n\n return this.configurationService.loadJsonSources().pipe(\n mergeMap(() => {\n if (this.commonsInitializers) {\n console.debug(`Module initializers for @mediusinc/mng-commons.`);\n return combineLatest(this.commonsInitializers.map(ci => ci())).pipe(map(res => res));\n } else {\n return of(true);\n }\n }),\n map(() => this.mngCommons.reset())\n );\n\n this.isInitialized = true;\n }\n}\n","import {HttpClient} from '@angular/common/http';\n\nimport {Observable, combineLatest, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MngModuleConfig} from '../../config/models';\nimport {MngConfigurationService} from '../configuration.service';\n\nexport const mngConfigurationServiceProvider = (httpClient: HttpClient, moduleConfig: MngModuleConfig): MngConfigurationService => {\n const service = MngConfigurationService.init(httpClient);\n if (moduleConfig?.configuration?.projectEnvironment) {\n service.addEnvironmentSource(moduleConfig.configuration.projectEnvironment);\n }\n return service;\n};\n\nexport function mngConfigJsonAppInitializerProvider(configService: MngConfigurationService, moduleConfig: MngModuleConfig): () => Observable<boolean> {\n return () => {\n if (moduleConfig?.configuration?.skipJsonSourceInit) {\n return of(false);\n } else {\n const jsonSource = moduleConfig?.configuration?.jsonSource;\n if (!jsonSource) {\n return configService.addJsonSource();\n } else if (Array.isArray(jsonSource)) {\n return combineLatest(jsonSource.map(source => configService.addJsonSource(source))).pipe(map(sourcesRes => sourcesRes.every(s => s)));\n } else {\n return configService.addJsonSource(jsonSource);\n }\n }\n };\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\n\nimport {\n MngFormlyFieldAutocompleteComponent,\n MngFormlyFieldDropdownComponent,\n MngFormlyFieldFieldsetComponent,\n MngFormlyFieldInputComponent,\n MngFormlyFieldLabelComponent,\n MngFormlyFieldLookupDialogComponent,\n MngFormlyFieldTableDialogFormComponent,\n MngFormlyFieldTableDialogMultiselectComponent,\n MngFormlyFieldTabsComponent\n} from '../components/form/formly/fields';\nimport {MngFormlyFieldWrapperComponent, MngFormlyTableWrapperComponent} from '../components/form/formly/wrappers';\nimport {MngFormlyFieldConfig} from '../models';\nimport {MngFormlyTypeConfig} from './models';\n\nexport const formlyWrappersConfig = [\n {name: 'field', component: MngFormlyFieldWrapperComponent},\n {name: 'field-table', component: MngFormlyTableWrapperComponent}\n];\n\nexport const formlyTypesConfig: MngFormlyTypeConfig<any>[] = [\n {\n name: 'label',\n component: MngFormlyFieldLabelComponent,\n wrappers: ['field']\n },\n {\n name: 'input',\n component: MngFormlyFieldInputComponent,\n wrappers: ['field']\n },\n {name: 'string', extends: 'input'},\n {\n name: 'number',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'currency',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'integer',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'textarea',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'textarea'\n }\n }\n },\n {\n name: 'switch',\n component: MngFormlyFieldInputComponent,\n defaultOptions: {\n props: {\n type: 'switch'\n }\n }\n },\n {\n name: 'radio',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'radio'\n }\n }\n },\n {\n name: 'datepicker',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'datepicker'\n }\n }\n },\n {\n name: 'mask',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'mask'\n }\n }\n },\n {\n name: 'file',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'file'\n }\n }\n },\n {\n name: 'dropdown',\n component: MngFormlyFieldDropdownComponent,\n wrappers: ['field']\n },\n {name: 'enum', extends: 'dropdown'},\n {\n name: 'autocomplete',\n component: MngFormlyFieldAutocompleteComponent,\n wrappers: ['field']\n },\n {\n name: 'dialog',\n component: MngFormlyFieldLookupDialogComponent,\n wrappers: ['field']\n },\n {\n name: 'table-dialog-multiselect',\n component: MngFormlyFieldTableDialogMultiselectComponent,\n wrappers: ['field-table']\n },\n {\n name: 'table-dialog-form',\n component: MngFormlyFieldTableDialogFormComponent,\n wrappers: ['field-table']\n },\n {\n name: 'tabs',\n component: MngFormlyFieldTabsComponent,\n wrappers: []\n },\n {\n name: 'fieldset',\n component: MngFormlyFieldFieldsetComponent,\n wrappers: []\n }\n];\n\nexport function getRequiredValidationMessage(translate: TranslateService): (error: any, field: MngFormlyFieldConfig) => Observable<string> {\n return (error: any, field: MngFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.required', {field: fieldName});\n };\n}\n\nexport function getMinLengthValidationMessage(translate: TranslateService): (error: any, field: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\n const fieldLabel = field.props.label ?? 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.minLength', {field: fieldName, minLength: field.props.minLength});\n };\n}\n\nexport function getMaxLengthValidationMessage(translate: TranslateService): (error: any, field: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.maxLength', {field: fieldName, maxLength: field.props.maxLength});\n };\n}\n\nexport function getTextPatternValidationMessage(translate: TranslateService): (error: any, field: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\n const fieldLabel = field.props.label ?? 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.pattern', {field: fieldName, pattern: field.props.pattern});\n };\n}\n\nexport function getEmailValidationMessage(translate: TranslateService): (error: any, field: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.email', {field: fieldName});\n };\n}\n\nexport const getFormlyValidationMessages = (translate: TranslateService): any[] => {\n return [\n {name: 'required', message: getRequiredValidationMessage(translate)},\n {name: 'minLength', message: getMinLengthValidationMessage(translate)},\n {name: 'maxLength', message: getMaxLengthValidationMessage(translate)},\n {name: 'pattern', message: getTextPatternValidationMessage(translate)},\n {name: 'email', message: getEmailValidationMessage(translate)}\n ];\n};\n","import {ConfigOption} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {formlyTypesConfig, formlyWrappersConfig, getFormlyValidationMessages} from '../../config';\nimport {MngModuleConfig} from '../../config/models';\n\nexport function mngFormlyConfigProvider(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 {CommonModule} from '@angular/common';\nimport {HttpClient, HttpClientModule} from '@angular/common/http';\nimport {APP_INITIALIZER, ModuleWithProviders, NgModule} from '@angular/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {RouterModule} from '@angular/router';\n\nimport {FORMLY_CONFIG, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {ConfirmationService, MessageService} from 'primeng/api';\nimport {AutoCompleteModule} from 'primeng/autocomplete';\nimport {BreadcrumbModule} from 'primeng/breadcrumb';\nimport {ButtonModule} from 'primeng/button';\nimport {CalendarModule} from 'primeng/calendar';\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 {DropdownModule} from 'primeng/dropdown';\nimport {DialogService, DynamicDialogModule} from 'primeng/dynamicdialog';\nimport {FieldsetModule} from 'primeng/fieldset';\nimport {FileUploadModule} from 'primeng/fileupload';\nimport {InputMaskModule} from 'primeng/inputmask';\nimport {InputNumberModule} from 'primeng/inputnumber';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {InputTextareaModule} from 'primeng/inputtextarea';\nimport {MessagesModule} from 'primeng/messages';\nimport {MultiSelectModule} from 'primeng/multiselect';\nimport {PaginatorModule} from 'primeng/paginator';\nimport {ProgressSpinnerModule} from 'primeng/progressspinner';\nimport {RadioButtonModule} from 'primeng/radiobutton';\nimport {RippleModule} from 'primeng/ripple';\nimport {SelectButtonModule} from 'primeng/selectbutton';\nimport {SkeletonModule} from 'primeng/skeleton';\nimport {TableModule} from 'primeng/table';\nimport {TabViewModule} from 'primeng/tabview';\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';\n\nimport {ObjectSerializer} from './api/utils';\nimport {MngActionComponent, MngActionEditorComponent, MngActionRouteComponent} from './components/action';\nimport {MngAutocompleteComponent, MngDropdownComponent, MngFormEditorComponent} from './components/form';\nimport {\n MngFormlyFieldAutocompleteComponent,\n MngFormlyFieldDropdownComponent,\n MngFormlyFieldFieldsetComponent,\n MngFormlyFieldInputComponent,\n MngFormlyFieldLabelComponent,\n MngFormlyFieldLookupDialogComponent,\n MngFormlyFieldTableDialogFormComponent,\n MngFormlyFieldTableDialogMultiselectComponent,\n MngFormlyFieldTabsComponent\n} from './components/form/formly/fields';\nimport {MngFormlyFieldWrapperComponent, MngFormlyTableWrapperComponent} from './components/form/formly/wrappers';\nimport {\n MngBreadcrumbComponent,\n MngFooterComponent,\n MngMainLayoutComponent,\n MngMenuComponent,\n MngMenuItemComponent,\n MngTopbarComponent,\n MngVersionComponent\n} from './components/layout';\nimport {MngMainLayoutComponentService} from './components/layout/services';\nimport {MngTableColumnFilterComponent, MngTableColumnValueComponent, MngTableComponent, MngTableviewComponent, MngTableviewRouteComponent} from './components/tableview';\nimport {MngModuleConfig} from './config/models';\nimport {MngComponentDirective, MngTemplateDirective} from './directives';\nimport {JsonPathPipe, MngBooleanPipe, MngEnumPipe, MngI18nPropertyPipe, MngLinkFormatterPipe} from './pipes';\nimport {MngAuthorizationGuard, MngAuthorizationService} from './security';\nimport {\n DefaultMngErrorMapperService,\n MngActionExecutorService,\n MngCommonsService,\n MngConfigurationService,\n MngErrorMapperService,\n MngNavigationService,\n MngViewContainerComponentService\n} from './services';\nimport {MngCommonsInitService, mngCommonsInitializerProvider} from './services/internal';\nimport {mngConfigJsonAppInitializerProvider, mngConfigurationServiceProvider, mngFormlyConfigProvider} from './services/providers';\nimport {ACTION_EDITOR_DIALOG_COMPONENT_SETTING, MNG_MODULE_CONFIG_IT} from './services/tokens';\nimport {MngVersionService} from './services/version.service';\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 FileUploadModule,\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 MultiSelectModule,\n SkeletonModule\n];\n\nconst declarations = [\n // directives\n MngComponentDirective,\n MngTemplateDirective,\n\n // pipes\n JsonPathPipe,\n MngEnumPipe,\n MngBooleanPipe,\n MngI18nPropertyPipe,\n MngLinkFormatterPipe,\n\n // layout components\n MngBreadcrumbComponent,\n MngFooterComponent,\n MngMainLayoutComponent,\n MngMenuComponent,\n MngMenuItemComponent,\n MngTopbarComponent,\n MngVersionComponent,\n\n // mng fields\n MngAutocompleteComponent,\n MngDropdownComponent,\n\n // formly wrappers\n MngFormlyFieldWrapperComponent,\n MngFormlyTableWrapperComponent,\n\n // formly fields\n MngFormlyFieldInputComponent,\n MngFormlyFieldLabelComponent,\n MngFormlyFieldDropdownComponent,\n MngFormlyFieldAutocompleteComponent,\n MngFormlyFieldLookupDialogComponent,\n MngFormlyFieldTableDialogMultiselectComponent,\n MngFormlyFieldTableDialogFormComponent,\n MngFormlyFieldTabsComponent,\n MngFormlyFieldFieldsetComponent,\n\n // table components\n MngTableComponent,\n MngTableviewComponent,\n MngTableColumnValueComponent,\n MngTableColumnFilterComponent,\n MngTableviewRouteComponent,\n\n // editor components\n MngFormEditorComponent,\n MngActionComponent,\n MngActionEditorComponent,\n MngActionRouteComponent\n];\n\n@NgModule({\n imports: [\n // angular modules\n CommonModule,\n RouterModule,\n HttpClientModule,\n ReactiveFormsModule,\n\n // other modules\n TranslateModule.forChild({\n extend: true\n }),\n FormlyModule.forChild(),\n ...primeNgModules\n ],\n declarations: [...declarations],\n exports: [...primeNgModules, ...declarations]\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 // services\n MngCommonsInitService,\n MngActionExecutorService,\n MngNavigationService,\n MngCommonsService,\n MngVersionService,\n\n // security\n MngAuthorizationService,\n MngAuthorizationGuard,\n\n // pipes\n JsonPathPipe,\n MngEnumPipe,\n MngBooleanPipe,\n MngI18nPropertyPipe,\n MngLinkFormatterPipe,\n\n // component service\n MngMainLayoutComponentService,\n MngViewContainerComponentService,\n\n {\n provide: MNG_MODULE_CONFIG_IT,\n useValue: config\n },\n {\n provide: ObjectSerializer,\n useFactory: () => ObjectSerializer.get()\n },\n {\n provide: MngConfigurationService,\n useFactory: mngConfigurationServiceProvider,\n deps: [HttpClient, MNG_MODULE_CONFIG_IT]\n },\n {\n provide: APP_INITIALIZER,\n useFactory: mngConfigJsonAppInitializerProvider,\n deps: [MngConfigurationService, MNG_MODULE_CONFIG_IT],\n multi: true\n },\n {\n provide: APP_INITIALIZER,\n useFactory: mngCommonsInitializerProvider,\n deps: [MngCommonsInitService],\n multi: true\n },\n {\n provide: FORMLY_CONFIG,\n multi: true,\n useFactory: mngFormlyConfigProvider,\n deps: [TranslateService, MNG_MODULE_CONFIG_IT]\n },\n {\n provide: ACTION_EDITOR_DIALOG_COMPONENT_SETTING,\n useValue: MngActionEditorComponent\n },\n {\n provide: MngErrorMapperService,\n useClass: DefaultMngErrorMapperService\n }\n ]\n };\n }\n}\n","import {HttpClient} from '@angular/common/http';\n\nimport {ClassType} from '../../types';\nimport {MediusQueryParam} from '../models';\nimport {ObjectSerializer} from '../utils';\n\nexport abstract class AMngBaseApiService {\n protected readonly objectSerializer: ObjectSerializer = ObjectSerializer.get();\n\n protected constructor(protected http: HttpClient) {}\n\n protected abstract getBasePath(): string;\n\n protected abstract getServiceBasePath(): string | null;\n\n protected getUrl(...pathSegments: Array<string>): string {\n let baseUrl = this.getBasePath();\n if (baseUrl.endsWith('/')) {\n baseUrl = baseUrl.substring(0, baseUrl.length - 1);\n }\n const serviceBasePath = this.getServiceBasePath();\n let path = [serviceBasePath, ...pathSegments].filter(s => s && s.length).join('/');\n // omit first and last '/'\n if (path.startsWith('/')) {\n path = path.substring(1);\n }\n if (path.endsWith('/')) {\n path = path.substring(0, path.length - 1);\n }\n // replace any double '//' from path that could come from joining paths\n path = path.replace('//', '/');\n return `${baseUrl}/${path}`;\n }\n\n protected serializeQueryParam(queryParam: MediusQueryParam, type = 'QueryParam') {\n return this.objectSerializer.serialize(queryParam, type);\n }\n\n protected deserializeQueryResult<QR>(item: any, qrType: ClassType<QR>): QR {\n return this.deserializeClass(item, qrType);\n }\n\n protected deserializeClass<C>(item: any, type: ClassType<C>): C {\n return this.objectSerializer.deserializeClass(item, type);\n }\n\n protected deserializeClassArray<C>(item: any, type: ClassType<C>): Array<C> {\n return this.objectSerializer.deserializeClassArray(item, type);\n }\n\n protected serializeClass<C>(item: C, type: ClassType<C>): any {\n return this.objectSerializer.serializeClass(item, type);\n }\n\n protected serializeClassArray<C>(item: Array<C>, type: ClassType<C>): any {\n return this.objectSerializer.serializeClassArray(item, type);\n }\n}\n\nexport abstract class AMngApiService<T> extends AMngBaseApiService {\n protected constructor(protected type: ClassType<T>, http: HttpClient) {\n super(http);\n }\n\n protected deserialize(item: any): T {\n return this.deserializeClass(item, this.type);\n }\n\n protected serialize(item: T): any {\n return this.serializeClass(item, this.type);\n }\n}\n","import {HttpClient, HttpParams} from '@angular/common/http';\n\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ClassType} from '../../types';\nimport {MediusQueryParam, MediusQueryResult} from '../models';\nimport {AMngApiService} from './api.abstract.service';\n\nexport interface IMngGetAllApiService<QRT extends MediusQueryResult<any>> {\n getAllPost(queryParamBody?: MediusQueryParam, params?: HttpParams): Observable<QRT>;\n}\n\nexport abstract class AMngGetAllApiService<T, QRT extends MediusQueryResult<any>> extends AMngApiService<T> implements IMngGetAllApiService<QRT> {\n protected constructor(type: ClassType<T>, protected queryResultType: ClassType<QRT>, http: HttpClient) {\n super(type, http);\n }\n\n public getAllPost(queryParamBody?: MediusQueryParam, params?: HttpParams): Observable<QRT> {\n const url = this.getUrl(this.getGetAllPostPath());\n return this.http\n .post<any>(url, queryParamBody ? this.serializeQueryParam(queryParamBody) : undefined, {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserializeQueryResult(res, this.queryResultType)));\n }\n\n protected getGetAllPostPath(): string {\n return '/get-all';\n }\n}\n","import {HttpClient, HttpParams} from '@angular/common/http';\n\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ClassType, IdType} from '../../types';\nimport {MediusQueryResult} from '../models';\nimport {AMngGetAllApiService} from './get-all-api.abstract.service';\n\nexport interface IMngCrudApiService<T> {\n createPost?(item: T, params?: HttpParams): Observable<T>;\n\n getByIdGet?(id: IdType, params?: HttpParams): Observable<T>;\n\n updatePut?(id: IdType, item: T, params?: HttpParams): Observable<T>;\n\n removeDelete?(id: IdType, item?: T, params?: HttpParams): Observable<T | null>;\n}\n\nexport abstract class AMngCrudApiService<T, QRT extends MediusQueryResult<any>> extends AMngGetAllApiService<T, QRT> implements IMngCrudApiService<T> {\n protected constructor(type: ClassType<T>, queryResultType: ClassType<QRT>, http: HttpClient) {\n super(type, queryResultType, http);\n }\n\n public createPost(item: T, params?: HttpParams): Observable<T> {\n const url = this.getUrl(this.getCreatePostPath(item));\n return this.http\n .post<any>(url, this.serialize(item), {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserialize(res)));\n }\n\n public getByIdGet(id: IdType, params?: HttpParams): Observable<T> {\n const url = this.getUrl(this.getGetByIdGetPath(id));\n return this.http\n .get<any>(url, {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserialize(res)));\n }\n\n public updatePut(id: IdType, item: T, params?: HttpParams): Observable<T> {\n const url = this.getUrl(this.getUpdatePutPath(id, item));\n return this.http\n .put<any>(url, this.serialize(item), {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserialize(res)));\n }\n\n public removeDelete(id: IdType, item?: T, params?: HttpParams): Observable<T | null> {\n const url = this.getUrl(this.getRemoveDeletePath(id, item));\n return this.http\n .request<any>('delete', url, {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n body: item ? this.serialize(item) : undefined,\n params: params\n })\n .pipe(map(res => (res ? this.deserialize(res) : null)));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected getCreatePostPath(item: T): string {\n return '';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected getUpdatePutPath(id: IdType, item: T): string {\n return `/${id}`;\n }\n\n protected getGetByIdGetPath(id: IdType): string {\n return `/${id}`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected getRemoveDeletePath(id: IdType, item?: T) {\n return `/${id}`;\n }\n}\n","export class RouteUtil {\n public static removeEmptyPathSegments(path: Array<string>) {\n const filteredPath = path.filter(ps => typeof ps === 'string' && ps.length > 0);\n return filteredPath.length > 0 ? filteredPath : [''];\n }\n\n public static appendPathToBasePath(basePath: Array<string>, path: Array<string>) {\n if (path.length > 0) {\n if (path[0].startsWith('/')) {\n return path;\n } else if (path[0].startsWith('../')) {\n // TODO: process multi upper folder\n throw new Error('Not implemented');\n } else {\n return RouteUtil.removeEmptyPathSegments([...basePath, ...path]);\n }\n } else {\n return basePath;\n }\n }\n}\n","import {Type} from '@angular/core';\nimport {LoadChildren, Route, Routes} from '@angular/router';\n\nimport {MngActionRouteComponent} from '../components/action';\nimport {MngMainLayoutComponent} from '../components/layout';\nimport {AMngTableviewRouteComponent, MngTableviewRouteComponent} from '../components/tableview';\nimport {ITableviewDataProvider} from '../data-providers';\nimport {ActionDescriptor, TableviewDescriptor} from '../descriptors';\nimport {MngMenuItem} from '../models';\nimport {MngAuthorizationGuard} from '../security';\nimport {APermissions} from '../security/model';\nimport {RouteUtil} from '../utils/route.util';\nimport {BreadcrumbType, MngRouterData} from './models';\nimport {TableviewRouteBuilder} from './tableview-route-builder';\n\nexport class RoutesBuilder {\n private readonly layoutRoute?: RouteBuilder;\n private routes: Array<RouteBuilder> = [];\n private currentRoute?: RouteBuilder;\n\n private constructor(layoutRoute?: RouteBuilder) {\n this.layoutRoute = layoutRoute?.withRoot(this);\n this.currentRoute = layoutRoute;\n }\n\n public static create(): RoutesBuilder {\n return new RoutesBuilder();\n }\n\n public static createWithLayout(\n layoutComponent = MngMainLayoutComponent,\n topbarComponent?: Type<any>,\n breadcrumbComponent?: Type<any>,\n menuComponent?: Type<any>,\n footerComponent?: Type<any>\n ): RoutesBuilder {\n const layoutRoute = RouteBuilder.createLayoutRoute('', layoutComponent, topbarComponent, breadcrumbComponent, menuComponent, footerComponent);\n return new RoutesBuilder(layoutRoute);\n }\n\n public addAngularRoute(route: Route): this {\n return this.addRouteBuilder(RouteBuilder.createFromRoute(route));\n }\n\n public addRouteRedirect(path: string, redirectTo: string, pathMatch: 'full' | 'prefix' = 'prefix'): this {\n return this.addRouteBuilder(RouteBuilder.createRedirect(path, redirectTo, pathMatch));\n }\n\n public addLazyRoute(path: string, loadChildren: LoadChildren, canLoad?: Array<any>): this {\n return this.addRouteBuilder(RouteBuilder.createLazyRoute(path, loadChildren, canLoad));\n }\n\n public addRoute(path: string, component: Type<any>): this {\n return this.addRouteBuilder(RouteBuilder.create(path, component));\n }\n\n public addTableview<C extends AMngTableviewRouteComponent<any, any>>(builder: TableviewRouteBuilder<C>): this {\n return this.addTableview(builder);\n }\n\n /**\n * @deprecated Use TableviewRouteBuilder with addTableview\n */\n public addTableviewRoutes<T, S>(\n path: string,\n descriptor: TableviewDescriptor<T>,\n tableviewDataProvider: ITableviewDataProvider<T, S>,\n actions?: Array<ActionDescriptor<T>>,\n hasDetails = true,\n hasEdit = true,\n hasAdd = true\n ): this {\n return this.addRouteBuilder(RouteBuilder.createTableviewRoutes(path, descriptor, tableviewDataProvider, actions, hasDetails, hasEdit, hasAdd));\n }\n\n /**\n * @deprecated Use TableviewRouteBuilder with addTableview\n */\n public addTableviewRoutesFromComponent(path: string, component: Type<any>, hasDetails = true, hasEdit = true, hasAdd = true): this {\n return this.addRouteBuilder(RouteBuilder.createTableviewRoutesFromComponent(path, component, hasDetails, hasEdit, hasAdd));\n }\n\n public addRouteBuilder(routeBuilder: RouteBuilder): this {\n this.currentRoute = routeBuilder.withRoot(this);\n this.routes.push(routeBuilder);\n return this;\n }\n\n public toRoute(): RouteBuilder {\n if (!this.currentRoute) {\n throw new Error('No routes were added!');\n }\n return this.currentRoute;\n }\n\n public buildRoutes(): Routes {\n let angularRoutes: Routes = [];\n for (const route of this.routes) {\n angularRoutes.push(route.buildRoute());\n }\n\n if (this.layoutRoute) {\n const layoutAngularRoute = this.layoutRoute.buildRoute();\n if (angularRoutes.length > 0) {\n layoutAngularRoute.children = angularRoutes;\n }\n angularRoutes = [layoutAngularRoute];\n }\n\n return angularRoutes;\n }\n\n public buildMenu(): Array<MngMenuItem> {\n const menuItems: Array<MngMenuItem> = [];\n for (const route of this.routes) {\n menuItems.push(...route.buildMenu());\n }\n return menuItems.flat();\n }\n}\n\nexport class RouteBuilder {\n private readonly route: Route;\n private routePath: Array<string> = [];\n private routeData: MngRouterData = {breadcrumb: null};\n private root?: RoutesBuilder;\n private parent?: RouteBuilder;\n private children: Array<RouteBuilder> = [];\n\n private menuItem?: MngMenuItem;\n private menuItemChildren: Array<MngMenuItem> = [];\n\n private breadcrumb?: BreadcrumbType;\n private pageTitle?: string;\n\n private permissions?: APermissions;\n\n private constructor(route: Route) {\n this.route = route;\n if (this.route.path && this.route.path.length > 0) {\n this.routePath = [this.route.path];\n }\n }\n\n public static create(path: string, component: Type<any>): RouteBuilder {\n return new RouteBuilder({\n path: path,\n component: component\n });\n }\n\n public static createRedirect(path: string, redirectTo: string, pathMatch: 'full' | 'prefix' = 'prefix'): RouteBuilder {\n return new RouteBuilder({\n path: path,\n redirectTo: redirectTo,\n pathMatch: pathMatch\n });\n }\n\n public static createLazyRoute(path: string, loadChildren: LoadChildren, canLoad?: Array<any>): RouteBuilder {\n const route: Route = {path: path, loadChildren: loadChildren};\n if (canLoad?.length) {\n route.canLoad = canLoad;\n }\n return new RouteBuilder(route);\n }\n\n public static createFromRoute(route: Route): RouteBuilder {\n return new RouteBuilder(route);\n }\n\n public static createLayoutRoute(\n path: string,\n layoutComponent = MngMainLayoutComponent,\n topbarComponent?: Type<any>,\n breadcrumbComponent?: Type<any>,\n menuComponent?: Type<any>,\n footerComponent?: Type<any>\n ): RouteBuilder {\n const layoutRoute = RouteBuilder.create(path, layoutComponent);\n if (topbarComponent || breadcrumbComponent || menuComponent || footerComponent) {\n const routeData: MngRouterData = {};\n if (topbarComponent) {\n routeData.topbarComponent = topbarComponent;\n }\n if (breadcrumbComponent) {\n routeData.breadcrumbComponent = breadcrumbComponent;\n }\n if (menuComponent) {\n routeData.menuComponent = menuComponent;\n }\n if (footerComponent) {\n routeData.footerComponent = footerComponent;\n }\n layoutRoute.withData(routeData);\n }\n return layoutRoute;\n }\n\n public static createTableview<C extends AMngTableviewRouteComponent<any, any>>(builder: TableviewRouteBuilder<C>): RouteBuilder {\n return builder.toRouteBuilder();\n }\n\n /**\n * @deprecated Use TableviewRouteBuilder\n */\n public static createTableviewRoutes<T, S>(\n path: string,\n descriptor: TableviewDescriptor<T>,\n dataProvider: ITableviewDataProvider<T, S>,\n actions?: Array<ActionDescriptor<T>>,\n hasDetails = true,\n hasEdit = true,\n hasAdd = true\n ): RouteBuilder {\n const tableviewRoute = RouteBuilder.createFromRoute({\n data: {\n tableview: {\n descriptor,\n dataProvider,\n actions\n }\n } as MngRouterData,\n path: path,\n component: MngTableviewRouteComponent\n });\n RouteBuilder.addActionsSubroutesToTableviewParent(tableviewRoute, hasDetails, hasEdit, hasAdd);\n return tableviewRoute;\n }\n\n /**\n * @deprecated Use TableviewRouteBuilder\n */\n public static createTableviewRoutesFromComponent(path: string, component: Type<any>, hasDetails = true, hasEdit = true, hasAdd = true): RouteBuilder {\n const actionCrudRoute = RouteBuilder.create(path, component);\n RouteBuilder.addActionsSubroutesToTableviewParent(actionCrudRoute, hasDetails, hasEdit, hasAdd);\n return actionCrudRoute;\n }\n\n private static addActionsSubroutesToTableviewParent(parentRoute: RouteBuilder, hasDetails: boolean, hasEdit: boolean, hasAdd: boolean) {\n parentRoute.addChild('', MngActionRouteComponent);\n\n if (hasAdd) {\n parentRoute.addChild('add', MngActionRouteComponent);\n }\n if (hasDetails) {\n parentRoute.addChild(':itemId', MngActionRouteComponent);\n }\n if (hasEdit) {\n parentRoute.addChild(':itemId/edit', MngActionRouteComponent);\n }\n }\n\n public withRoot(routesBuilder: RoutesBuilder): this {\n this.root = routesBuilder;\n return this;\n }\n\n public withParent(parent: RouteBuilder): this {\n this.parent = parent;\n this.routePath = RouteUtil.removeEmptyPathSegments([...this.parent.routePath, this.route.path ?? '']);\n return this;\n }\n\n public withBreadcrumb(breadcrumb: BreadcrumbType): this {\n this.breadcrumb = breadcrumb;\n this.routeData.breadcrumb = breadcrumb;\n return this;\n }\n\n public withPageTitle(pageTitle: string): this {\n this.pageTitle = pageTitle;\n this.routeData.pageTitle = pageTitle;\n return this;\n }\n\n public withRedirectTo(redirectTo: string): this {\n this.route.redirectTo = redirectTo;\n return this;\n }\n\n public withPathMatch(pathMatch: 'full' | 'prefix'): this {\n this.route.pathMatch = pathMatch;\n return this;\n }\n\n public withTitle(title: string): this {\n this.withPageTitle(title);\n this.withBreadcrumb(title);\n return this;\n }\n\n public withCanActivate(diToken: any): this {\n if (!this.route.canActivate) {\n this.route.canActivate = [];\n }\n this.route.canActivate.push(diToken);\n return this;\n }\n\n public withCanDeactivate(diToken: any): this {\n if (!this.route.canDeactivate) {\n this.route.canDeactivate = [];\n }\n this.route.canDeactivate.push(diToken);\n return this;\n }\n\n public withResolver(diToken: any, name: string): this {\n if (!this.route.resolve) {\n this.route.resolve = {};\n }\n this.route.resolve[name] = diToken;\n return this;\n }\n\n public withData(data: MngRouterData): this {\n if (!data.breadcrumb) {\n data.breadcrumb = null;\n }\n this.routeData = data;\n return this;\n }\n\n public withMngMenuItem(menuItem: MngMenuItem): this {\n this.menuItem = menuItem;\n return this;\n }\n\n public withMenuItem(icon?: string, label?: string, routerLink?: Array<string>): this {\n this.menuItem = this.createMenuItem(icon, label, routerLink);\n return this;\n }\n\n public withMenuItemChild(label: string, icon?: string, routerLink?: Array<string>): this {\n this.menuItemChildren.push(this.createMenuItem(icon, label, routerLink));\n return this;\n }\n\n public withMenuItemChildren(routesBuilder: RoutesBuilder): this {\n const menu = routesBuilder.buildMenu();\n this.adjustMenuRouterLinksFromBuilder(menu);\n this.menuItemChildren.push(...menu);\n return this;\n }\n\n withPermissions(permissions: APermissions): this {\n this.routeData.permissions = permissions;\n this.withCanActivate(MngAuthorizationGuard);\n return this;\n }\n\n public addChild(path: string, component: Type<any>): RouteBuilder {\n const childRouteBuilder = RouteBuilder.create(path, component);\n this.addChildBuilder(childRouteBuilder);\n return childRouteBuilder;\n }\n\n public addChildBuilder(routeBuilder: RouteBuilder): this {\n routeBuilder.withParent(this);\n if (this.root) {\n routeBuilder.withRoot(this.root);\n }\n this.children.push(routeBuilder);\n return this;\n }\n\n /**\n * @deprecated\n */\n public addTableviewRoutes<T, S>(\n path: string,\n descriptor: TableviewDescriptor<T>,\n tableviewDataProvider: ITableviewDataProvider<T, S>,\n actions?: Array<ActionDescriptor<T>>,\n hasDetails = true,\n hasEdit = true,\n hasAdd = true\n ): RouteBuilder {\n const routeBuilder = RouteBuilder.createTableviewRoutes(path, descriptor, tableviewDataProvider, actions, hasDetails, hasEdit, hasAdd);\n this.addChildBuilder(routeBuilder);\n return routeBuilder;\n }\n\n /**\n * @deprecated\n */\n public addTableviewRoutesFromComponent(path: string, component: Type<any>, hasDetails = true, hasEdit = true, hasAdd = true): RouteBuilder {\n const routeBuilder = RouteBuilder.createTableviewRoutesFromComponent(path, component, hasDetails, hasEdit, hasAdd);\n this.addChildBuilder(routeBuilder);\n return routeBuilder;\n }\n\n public toParent(): RouteBuilder {\n if (!this.parent) {\n throw new Error('Parent was not provided.');\n }\n return this.parent;\n }\n\n public toRoot(): RoutesBuilder {\n if (!this.root) {\n throw new Error('Root was not provided.');\n }\n return this.root;\n }\n\n public finish(): RoutesBuilder {\n return this.toRoot();\n }\n\n public buildRoute(): Route {\n const angularRoute: Route = {\n ...this.route\n };\n\n if (angularRoute.data) {\n angularRoute.data = {\n ...angularRoute.data,\n ...this.routeData\n };\n } else {\n angularRoute.data = {...this.routeData};\n }\n\n if ((this.route.children?.length ?? 0) > 0 || this.children.length > 0) {\n // route has children\n angularRoute.children = [];\n if (this.route.children?.length) {\n angularRoute.children.push(...this.route.children);\n }\n if (this.children.length) {\n for (const childRoute of this.children) {\n angularRoute.children.push(childRoute.buildRoute());\n }\n }\n }\n\n if (this.route.canActivate) {\n angularRoute.canActivate = [...this.route.canActivate];\n }\n if (this.route.canActivateChild) {\n angularRoute.canActivateChild = [...this.route.canActivateChild];\n }\n if (this.route.canLoad) {\n angularRoute.canLoad = [...this.route.canLoad];\n }\n if (this.route.canDeactivate) {\n angularRoute.canDeactivate = [...this.route.canDeactivate];\n }\n if (this.route.resolve) {\n angularRoute.resolve = {...this.route.resolve};\n }\n\n return angularRoute;\n }\n\n public buildMenu(): Array<MngMenuItem> {\n const menuItemBuild: MngMenuItem | null = this.menuItem ? {...this.menuItem} : null;\n const routeChildrenMenuItems: Array<MngMenuItem> = this.children.flatMap(child => child.buildMenu());\n const menuItemChildren: Array<MngMenuItem> = [];\n const menuItemChildrenBuild: Array<MngMenuItem> = [];\n\n if (menuItemBuild?.items) {\n menuItemChildrenBuild.push(...menuItemBuild.items);\n }\n\n for (const menuItemChild of this.menuItemChildren) {\n const finalMenuItemChild: MngMenuItem = {...menuItemChild};\n if (!finalMenuItemChild.routerLink) {\n finalMenuItemChild.routerLink = this.routePath;\n }\n if (typeof finalMenuItemChild.routerLink === 'string') {\n finalMenuItemChild.routerLink = [finalMenuItemChild.routerLink];\n }\n finalMenuItemChild.routerLink = RouteUtil.removeEmptyPathSegments(finalMenuItemChild.routerLink);\n menuItemChildren.push(finalMenuItemChild);\n }\n\n menuItemChildrenBuild.push(...menuItemChildren, ...routeChildrenMenuItems);\n\n if (!menuItemBuild) {\n return menuItemChildrenBuild;\n }\n\n menuItemBuild.label = menuItemBuild.label ?? this.pageTitle;\n if (typeof menuItemBuild.routerLink === 'string') {\n menuItemBuild.routerLink = [menuItemBuild.routerLink];\n }\n menuItemBuild.routerLink = RouteUtil.removeEmptyPathSegments(menuItemBuild.routerLink ?? this.routePath);\n if (menuItemChildrenBuild.length > 0) {\n menuItemBuild.items = menuItemChildrenBuild;\n }\n\n if (!menuItemBuild.guards) {\n const guards = this.findMenuItemGuards();\n if (guards.length > 0) {\n menuItemBuild.guards = guards;\n }\n }\n\n if (!menuItemBuild.permissions && this.routeData.permissions) {\n menuItemBuild.permissions = this.routeData.permissions;\n }\n\n return [menuItemBuild];\n }\n\n private createMenuItem(icon?: string, label?: string, routerLink?: Array<string>) {\n const menuItem: MngMenuItem = {};\n if (icon) {\n menuItem.icon = icon;\n }\n if (label) {\n menuItem.label = label;\n }\n if (routerLink) {\n menuItem.routerLink = routerLink;\n }\n return menuItem;\n }\n\n private adjustMenuRouterLinksFromBuilder(menuItems: Array<MngMenuItem>) {\n for (const menuItem of menuItems) {\n if (menuItem.routerLink) {\n menuItem.routerLink = RouteUtil.appendPathToBasePath(this.routePath, typeof menuItem.routerLink === 'string' ? [menuItem.routerLink] : menuItem.routerLink);\n }\n if (Array.isArray(menuItem.items)) {\n this.adjustMenuRouterLinksFromBuilder(menuItem.items);\n }\n }\n }\n\n private findMenuItemGuards(): Array<any> {\n const guards: Array<any> = [];\n if (this.route.canActivate?.length) {\n guards.push(...this.route.canActivate);\n }\n if (this.parent) {\n // Check for parent guards that should be included in decision to hide menu item!\n // Some parent routes might have guards, but no menu items, so this guards must be taken into account here,\n // because there is no parent menu item to hide.\n this.parent.findMenuItemGuards().forEach(g => {\n if (guards.indexOf(g) < 0) {\n guards.push(g);\n }\n });\n }\n return guards;\n }\n}\n","import {Type} from '@angular/core';\nimport {Route} from '@angular/router';\n\nimport {MngActionRouteComponent} from '../components/action';\nimport {AMngTableviewRouteComponent, MngTableviewRouteComponent} from '../components/tableview';\nimport {ITableviewDataProvider} from '../data-providers';\nimport {ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor, TableviewDescriptor} from '../descriptors';\nimport {APermissions, Permissions} from '../security/model';\nimport {MngRouterData} from './models';\nimport {RouteBuilder} from './route-builder';\n\nexport class TableviewRouteBuilder<C extends AMngTableviewRouteComponent<any, any>> {\n private descriptor?: TableviewDescriptor<any>;\n private dataProvider?: ITableviewDataProvider<any, any>;\n private actions?: Array<ActionDescriptor<any>>;\n\n private component?: Type<C>;\n\n private hasDetails = true;\n private detailsPath = ':itemId';\n private hasEdit = true;\n private editPath = ':itemId/edit';\n private hasAdd = true;\n private addPath = 'add';\n\n private permissions?: {\n [key: string]: APermissions;\n };\n\n private constructor(private path: string) {}\n\n public static fromComponent<C extends AMngTableviewRouteComponent<any, any>>(path: string, component: Type<C>): TableviewRouteBuilder<C> {\n const inst = new TableviewRouteBuilder<C>(path);\n inst.component = component;\n return inst;\n }\n\n public static from(\n path: string,\n descriptor: TableviewDescriptor<any>,\n dataProvider: ITableviewDataProvider<any, any>,\n actions: Array<ActionDescriptor<any>>\n ): TableviewRouteBuilder<never> {\n const inst = new TableviewRouteBuilder<never>(path);\n inst.descriptor = descriptor;\n inst.dataProvider = dataProvider;\n inst.actions = actions;\n\n inst.hasDetails = false;\n inst.hasAdd = false;\n inst.hasEdit = false;\n for (const action of inst.actions) {\n if (action instanceof ActionEditorDetailsDescriptor) {\n inst.hasDetails = true;\n } else if (action instanceof ActionEditorAddDescriptor) {\n inst.hasAdd = true;\n } else if (action instanceof ActionEditorEditDescriptor) {\n inst.hasEdit = true;\n }\n }\n\n return inst;\n }\n\n public withDetails(hasDetails = true, permissions?: APermissions, path?: string): this {\n this.hasDetails = hasDetails;\n if (permissions) {\n this.withPermissions(undefined, undefined, undefined, undefined, permissions);\n }\n if (path) {\n this.detailsPath = path;\n }\n return this;\n }\n\n public withAdd(hasAdd = true, permissions?: APermissions, path?: string): this {\n this.hasAdd = hasAdd;\n if (permissions) {\n this.withPermissions(undefined, permissions);\n }\n if (path) {\n this.addPath = path;\n }\n return this;\n }\n\n public withEdit(hasEdit = true, permissions?: APermissions, path?: string): this {\n this.hasEdit = hasEdit;\n if (permissions) {\n this.withPermissions(undefined, undefined, permissions);\n }\n if (path) {\n this.editPath = path;\n }\n return this;\n }\n\n public withPermissions(read?: APermissions, add?: APermissions, edit?: APermissions, delet?: APermissions, details?: APermissions): this {\n if (!this.permissions) {\n this.permissions = {};\n }\n if (read) {\n this.permissions[Permissions.ActionTypes.READ] = read;\n }\n if (add) {\n this.permissions[Permissions.ActionTypes.ADD] = add;\n }\n if (edit) {\n this.permissions[Permissions.ActionTypes.EDIT] = edit;\n }\n if (delet) {\n this.permissions[Permissions.ActionTypes.DELETE] = delet;\n }\n if (details) {\n this.permissions[Permissions.ActionTypes.DETAILS] = details;\n }\n return this;\n }\n\n public withPermissionsOther(key: string, permissions: APermissions): this {\n if (!this.permissions) {\n this.permissions = {};\n }\n this.permissions[key] = permissions;\n return this;\n }\n\n public withPermissionsObject(permissions: {[key: string]: APermissions}): this {\n this.permissions = permissions;\n return this;\n }\n\n public build(): Route {\n return this.toRouteBuilder().buildRoute();\n }\n\n public toRouteBuilder(): RouteBuilder {\n const tableviewRouteBuilder = RouteBuilder.createFromRoute({\n path: this.path,\n component: this.component ? this.component : MngTableviewRouteComponent\n });\n\n const routeData: MngRouterData = {};\n if (!this.component) {\n routeData.tableview = {\n descriptor: this.descriptor!,\n dataProvider: this.dataProvider!\n };\n if (this.actions) {\n routeData.tableview.actions = this.actions;\n }\n }\n if (this.permissions) {\n routeData.tableviewPermissions = {...this.permissions};\n }\n tableviewRouteBuilder.withData(routeData);\n if (this.permissions?.[Permissions.ActionTypes.READ]) {\n tableviewRouteBuilder.withPermissions(this.permissions[Permissions.ActionTypes.READ]);\n }\n\n // list route\n const rootChildRouteBuilder = RouteBuilder.create('', MngActionRouteComponent);\n if (this.permissions?.[Permissions.ActionTypes.READ]) {\n rootChildRouteBuilder.withPermissions(this.permissions[Permissions.ActionTypes.READ]);\n }\n tableviewRouteBuilder.addChildBuilder(rootChildRouteBuilder);\n\n // add route\n if (this.hasAdd) {\n const routeBuilder = RouteBuilder.create(this.addPath, MngActionRouteComponent);\n if (this.permissions?.[Permissions.ActionTypes.ADD]) {\n routeBuilder.withPermissions(this.permissions[Permissions.ActionTypes.ADD]);\n }\n tableviewRouteBuilder.addChildBuilder(routeBuilder);\n }\n if (this.hasDetails) {\n const routeBuilder = RouteBuilder.create(this.detailsPath, MngActionRouteComponent);\n if (this.permissions?.[Permissions.ActionTypes.DETAILS]) {\n routeBuilder.withPermissions(this.permissions[Permissions.ActionTypes.DETAILS]);\n }\n tableviewRouteBuilder.addChildBuilder(routeBuilder);\n }\n if (this.hasEdit) {\n const routeBuilder = RouteBuilder.create(this.editPath, MngActionRouteComponent);\n if (this.permissions?.[Permissions.ActionTypes.EDIT]) {\n routeBuilder.withPermissions(this.permissions[Permissions.ActionTypes.EDIT]);\n }\n tableviewRouteBuilder.addChildBuilder(routeBuilder);\n }\n\n return tableviewRouteBuilder;\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/components/layout/services';\nexport * from './lib/services';\nexport * from './lib/services/providers';\n\n// injection tokens\nexport * from './lib/services/tokens';\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// api models\nexport * from './lib/api/models';\n\n// component models\nexport * from './lib/components/action/models';\nexport * from './lib/components/form/models';\nexport * from './lib/components/tableview/models';\n\n// config\nexport * from './lib/config/models';\nexport * from './lib/config';\n\n// data providers\nexport * from './lib/data-providers';\n\n// descriptors\nexport * from './lib/descriptors';\nexport * from './lib/descriptors/interfaces';\nexport * from './lib/descriptors/types';\n\n// general models\nexport * from './lib/models';\n\n// router\nexport * from './lib/router';\nexport * from './lib/router/models';\n\n// security\nexport * from './lib/security';\nexport * from './lib/security/model';\n\n// types\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","mergeMap","i3","i1","i2.MngCommonsService","i1.MngAuthorizationService","i3.MngAuthorizationService","i4.MngActionExecutorService","i5","i4.MngViewContainerComponentService","i6","i8","i10","i11.MngLinkFormatterPipe","i3.MngNavigationService","i3.MngActionExecutorService","i3.MngViewContainerComponentService","i4","i2.MngFormlyFieldWrapperComponent","i2.MngActionExecutorService","i2.MngNavigationService","i2.MngViewContainerComponentService","i7","i8.MngFormEditorComponent","i9.MngActionComponent","i3.MngAutocompleteComponent","i9","i12","i3.MngDropdownComponent","i6.MngComponentDirective","i7.JsonPathPipe","i8.MngEnumPipe","i9.MngBooleanPipe","i6.MngAutocompleteComponent","i7.MngDropdownComponent","i8.MngComponentDirective","i9.MngTableColumnValueComponent","i10.MngTableColumnFilterComponent","i11.MngActionComponent","i12.MngI18nPropertyPipe","i5.MngActionExecutorService","i5.MngViewContainerComponentService","i9.MngTemplateDirective","i10.MngTableComponent","i2.MngTableviewComponent","i11","i1.MngActionExecutorService","i3.MngTemplateDirective","i4.MngTableComponent","i5.MngActionComponent","i7.MngTemplateDirective","i8.MngTableComponent","i1.MngCommonsService","i2.MngAuthorizationService","i3.MngCommonsService","i4.MngMainLayoutComponentService","i2.MngConfigurationService","i1.MngVersionService","i2.JsonPathPipe","i2.MngMainLayoutComponentService","i5.MngMenuItemComponent","i6.MngVersionComponent","i3.MngMainLayoutComponentService","i7.MngComponentDirective","i5.MngComponentDirective"],"mappings":"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"}
|