@mediusinc/mng-commons 6.0.0-rc.5 → 6.0.0-rc.6
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/core/components/notification/notification-wrapper.component.d.ts +4 -4
- package/core/error/error.model.d.ts +4 -4
- package/core/helpers/notification.d.ts +2 -2
- package/core/provide.d.ts +3 -3
- package/core/styles/style-constants.d.ts +9 -8
- package/core/styles/style.model.d.ts +2 -1
- package/fesm2022/mediusinc-mng-commons-core.mjs +91 -104
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form-api.mjs +8 -9
- package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form.mjs +149 -49
- package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-DTSBP9WQ.mjs +31 -0
- package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-DTSBP9WQ.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-JZpyiDIL.mjs +2118 -0
- package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-JZpyiDIL.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-table.mjs +1 -2154
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +97 -49
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +326 -290
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
- package/form/api/index.d.ts +1 -0
- package/form/api/models/empty-value.model.d.ts +7 -0
- package/form/components/autocomplete/autocomplete.component.d.ts +1 -2
- package/form/components/date-range/date-range.component.d.ts +4 -3
- package/form/components/dropdown/dropdown.component.d.ts +3 -2
- package/form/components/number-range/number-range.component.d.ts +3 -2
- package/form/directives/input-empty-value.directive.d.ts +40 -0
- package/form/directives/input-trim.directive.d.ts +3 -5
- package/form/index.d.ts +1 -0
- package/i18n/en.json +57 -8
- package/i18n/sl.json +1 -3
- package/package.json +16 -42
- package/provide.d.ts +2 -2
- package/table/components/column-toggle/column-toggle.component.d.ts +12 -0
- package/table/components/filter/filter-form/filter-form.component.d.ts +2 -2
- package/table/components/table/table.component.d.ts +0 -1
- package/table/helpers/filters.d.ts +3 -2
- package/table/helpers/notification.d.ts +2 -2
- package/table/services/table-metadata.service.d.ts +3 -3
- package/tableview/action/components/action/action.component.d.ts +1 -0
- package/tableview/action/components/editor/action-editor.component.d.ts +1 -1
- package/tableview/action/components/table/action-table.component.d.ts +2 -1
- package/tableview/action/helpers/notification.d.ts +3 -3
- package/tableview/action/models/execution/action-context.model.d.ts +2 -2
- package/tableview/action/services/action-executor.service.d.ts +1 -1
- package/tableview/api/action/models/execution/action-context.model.d.ts +2 -2
- package/tableview/api/editor/descriptors/editor.descriptor.d.ts +5 -0
- package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +14 -10
- package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +10 -0
- package/tableview/api/editor/descriptors/field.descriptor.d.ts +36 -9
- package/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.d.ts +1 -1
- package/tableview/api/editor/models/field-action-context.model.d.ts +1 -1
- package/tableview/api/editor/models/field.model.d.ts +1 -2
- package/tableview/api/editor/models/form-editor.interface.d.ts +2 -2
- package/tableview/api/editor/models/formly-custom-field.model.d.ts +1 -1
- package/tableview/api/editor/models/formly-field.model.d.ts +2 -2
- package/tableview/editor/components/editor/form-editor.component.d.ts +2 -2
- package/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.d.ts +1 -1
- package/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.d.ts +2 -1
- package/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +4 -6
- package/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +0 -2
- package/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +2 -2
- package/tableview/editor/components/formly/fields/formly-field-type.abstract.component.d.ts +8 -15
- package/tableview/editor/components/formly/fields/formly-group-type.abstract.component.d.ts +7 -0
- package/tableview/editor/components/formly/fields/formly-type.abstract.component.d.ts +20 -0
- package/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +11 -4
- package/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +2 -1
- package/tableview/editor/helpers/formly-config.d.ts +1 -1
- package/tableview/editor/helpers/notification.d.ts +3 -3
- package/tableview/editor/models/formly-config.model.d.ts +10 -1
- package/tableview/editor/models/formly.model.d.ts +23 -0
- package/tableview/editor/services/form-editor.service.d.ts +2 -2
- package/tableview/tableview/router/tableview-route-builder.d.ts +10 -3
- package/tableview/tableview/services/tableview-feature-config.token.d.ts +1 -1
- package/version-info.json +3 -3
- package/esm2022/core/action/action-data.model.mjs +0 -2
- package/esm2022/core/action/action-parameters.model.mjs +0 -2
- package/esm2022/core/components/notification/notification-wrapper.component.mjs +0 -50
- package/esm2022/core/data-list/data-list-params-helpers.mjs +0 -465
- package/esm2022/core/data-list/data-list.model.mjs +0 -2
- package/esm2022/core/data-list/filter-match.model.mjs +0 -105
- package/esm2022/core/data-list/filter-metadata.model.mjs +0 -2
- package/esm2022/core/data-providers/base.data-provider.mjs +0 -16
- package/esm2022/core/data-providers/lookup.data-provider.mjs +0 -2
- package/esm2022/core/descriptors/action.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/column.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/editor.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/enum.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/filter.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/lookup.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/model.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/table.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/tableview.descriptor.mjs +0 -2
- package/esm2022/core/directives/component.directive.mjs +0 -75
- package/esm2022/core/directives/rerender.directive.mjs +0 -25
- package/esm2022/core/directives/template.directive.mjs +0 -29
- package/esm2022/core/enum/enum-helpers.mjs +0 -90
- package/esm2022/core/enum/enum.model.mjs +0 -2
- package/esm2022/core/error/error-handler.mjs +0 -20
- package/esm2022/core/error/error-helpers.mjs +0 -273
- package/esm2022/core/error/error.model.mjs +0 -33
- package/esm2022/core/helpers/coercion.mjs +0 -55
- package/esm2022/core/helpers/date.mjs +0 -119
- package/esm2022/core/helpers/notification.mjs +0 -21
- package/esm2022/core/helpers/number.mjs +0 -19
- package/esm2022/core/helpers/object.mjs +0 -152
- package/esm2022/core/helpers/route.mjs +0 -58
- package/esm2022/core/helpers/string.mjs +0 -57
- package/esm2022/core/helpers/templates.mjs +0 -4
- package/esm2022/core/helpers/type-helpers.mjs +0 -2
- package/esm2022/core/i18n/i18n-common.mjs +0 -24
- package/esm2022/core/i18n/i18n-error.mjs +0 -29
- package/esm2022/core/i18n/i18n-type.mjs +0 -46
- package/esm2022/core/index.mjs +0 -107
- package/esm2022/core/log/log-publisher-console.service.mjs +0 -40
- package/esm2022/core/log/log.model.mjs +0 -10
- package/esm2022/core/log/logger.service.mjs +0 -131
- package/esm2022/core/mediusinc-mng-commons-core.mjs +0 -5
- package/esm2022/core/models/class-attribute.model.mjs +0 -2
- package/esm2022/core/models/class-service.model.mjs +0 -2
- package/esm2022/core/models/getter.model.mjs +0 -2
- package/esm2022/core/models/i18n.model.mjs +0 -2
- package/esm2022/core/models/menu.model.mjs +0 -2
- package/esm2022/core/models/user.model.mjs +0 -2
- package/esm2022/core/models/version.model.mjs +0 -2
- package/esm2022/core/pipes/boolean.pipe.mjs +0 -34
- package/esm2022/core/pipes/class-map.pipe.mjs +0 -23
- package/esm2022/core/pipes/enum.pipe.mjs +0 -38
- package/esm2022/core/pipes/enumerate-async.pipe.mjs +0 -36
- package/esm2022/core/pipes/enumerate.pipe.mjs +0 -49
- package/esm2022/core/pipes/getter.pipe.mjs +0 -21
- package/esm2022/core/pipes/i18n-property.pipe.mjs +0 -19
- package/esm2022/core/pipes/json-path.pipe.mjs +0 -25
- package/esm2022/core/pipes/parametrize.pipe.mjs +0 -86
- package/esm2022/core/pipes/template.pipe.mjs +0 -25
- package/esm2022/core/provide.mjs +0 -79
- package/esm2022/core/reactivity/effect.mjs +0 -22
- package/esm2022/core/reflect/type-enum-decorator.mjs +0 -12
- package/esm2022/core/reflect/type-enum-metadata.mjs +0 -62
- package/esm2022/core/registry/registry.model.mjs +0 -2
- package/esm2022/core/registry/type-registry.mjs +0 -106
- package/esm2022/core/router/route-builder.mjs +0 -431
- package/esm2022/core/router/router.model.mjs +0 -2
- package/esm2022/core/router/routes-builder.mjs +0 -52
- package/esm2022/core/rxjs/map-data-list-result-operator.mjs +0 -22
- package/esm2022/core/security/permission-helpers.mjs +0 -14
- package/esm2022/core/security/permission.guard.mjs +0 -15
- package/esm2022/core/security/permission.service.mjs +0 -101
- package/esm2022/core/security/permissions.model.mjs +0 -93
- package/esm2022/core/services/commons-configuration.service.mjs +0 -189
- package/esm2022/core/services/commons-init.service.mjs +0 -111
- package/esm2022/core/services/commons-router.service.mjs +0 -181
- package/esm2022/core/services/commons-storage.service.mjs +0 -31
- package/esm2022/core/services/commons.service.mjs +0 -324
- package/esm2022/core/services/providers/commons-init.provider.mjs +0 -4
- package/esm2022/core/services/tokens/browser-storage.token.mjs +0 -3
- package/esm2022/core/services/tokens/commons-init.token.mjs +0 -3
- package/esm2022/core/services/tokens/log-publisher.token.mjs +0 -3
- package/esm2022/core/services/tokens/module-config.token.mjs +0 -3
- package/esm2022/core/styles/style-constants.mjs +0 -11
- package/esm2022/core/styles/style.model.mjs +0 -20
- package/esm2022/filter/descriptors/filter-generic.descriptor.mjs +0 -31
- package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +0 -168
- package/esm2022/filter/descriptors/filter.descriptor.mjs +0 -421
- package/esm2022/filter/index.mjs +0 -8
- package/esm2022/filter/mediusinc-mng-commons-filter.mjs +0 -5
- package/esm2022/filter/models/filter-generic-property.model.mjs +0 -2
- package/esm2022/filter/models/filter.model.mjs +0 -20
- package/esm2022/form/api/data-providers/lookup-data-provider.factory.mjs +0 -15
- package/esm2022/form/api/data-providers/lookup.data-provider.mjs +0 -15
- package/esm2022/form/api/descriptors/action-button.descriptor.mjs +0 -56
- package/esm2022/form/api/descriptors/button-style.builder.mjs +0 -153
- package/esm2022/form/api/index.mjs +0 -10
- package/esm2022/form/api/mediusinc-mng-commons-form-api.mjs +0 -5
- package/esm2022/form/api/models/button.model.mjs +0 -2
- package/esm2022/form/api/models/trim.model.mjs +0 -2
- package/esm2022/form/components/autocomplete/autocomplete.component.mjs +0 -436
- package/esm2022/form/components/date-range/date-range.component.mjs +0 -147
- package/esm2022/form/components/dropdown/dropdown.component.mjs +0 -372
- package/esm2022/form/components/number-range/number-range.component.mjs +0 -123
- package/esm2022/form/directives/input-trim.directive.mjs +0 -50
- package/esm2022/form/index.mjs +0 -8
- package/esm2022/form/mediusinc-mng-commons-form.mjs +0 -5
- package/esm2022/index.mjs +0 -2
- package/esm2022/mediusinc-mng-commons.mjs +0 -5
- package/esm2022/model/class/data-providers/base-from-class-data-provider.factory.mjs +0 -5
- package/esm2022/model/class/descriptors/model-class.descriptor.mjs +0 -28
- package/esm2022/model/class/descriptors/type-class.descriptor.mjs +0 -6
- package/esm2022/model/class/helpers/model.mjs +0 -53
- package/esm2022/model/class/index.mjs +0 -8
- package/esm2022/model/class/mediusinc-mng-commons-model-class.mjs +0 -5
- package/esm2022/model/data-providers/base-from-type-data-provider.factory.mjs +0 -13
- package/esm2022/model/descriptors/enum.descriptor.mjs +0 -28
- package/esm2022/model/descriptors/model.descriptor.mjs +0 -53
- package/esm2022/model/descriptors/type.descriptor.mjs +0 -7
- package/esm2022/model/helpers/i18n.mjs +0 -47
- package/esm2022/model/index.mjs +0 -9
- package/esm2022/model/mediusinc-mng-commons-model.mjs +0 -5
- package/esm2022/provide.mjs +0 -6
- package/esm2022/table/api/class/class-table-attribute-converter.mjs +0 -80
- package/esm2022/table/api/class/class-table-attribute.model.mjs +0 -2
- package/esm2022/table/api/class/class-table-data-provider.factory.mjs +0 -5
- package/esm2022/table/api/class/class-table-descriptor-helpers.mjs +0 -99
- package/esm2022/table/api/class/class-table-descriptor.factory.mjs +0 -21
- package/esm2022/table/api/class/index.mjs +0 -6
- package/esm2022/table/api/class/mediusinc-mng-commons-table-api-class.mjs +0 -5
- package/esm2022/table/api/data-providers/table-data-provider.factory.mjs +0 -15
- package/esm2022/table/api/data-providers/table.data-provider.mjs +0 -33
- package/esm2022/table/api/descriptors/column.descriptor.mjs +0 -475
- package/esm2022/table/api/descriptors/sort.descriptor.mjs +0 -67
- package/esm2022/table/api/descriptors/table-descriptor.factory.mjs +0 -22
- package/esm2022/table/api/descriptors/table.descriptor.mjs +0 -1116
- package/esm2022/table/api/helpers/column-converter.mjs +0 -25
- package/esm2022/table/api/helpers/table-data-provider-descriptor-convert.mjs +0 -7
- package/esm2022/table/api/index.mjs +0 -19
- package/esm2022/table/api/mediusinc-mng-commons-table-api.mjs +0 -5
- package/esm2022/table/api/models/column-value.model.mjs +0 -2
- package/esm2022/table/api/models/column.model.mjs +0 -21
- package/esm2022/table/api/models/row-expandable-component.model.mjs +0 -2
- package/esm2022/table/api/models/table-columns.model.mjs +0 -2
- package/esm2022/table/api/models/table-event.model.mjs +0 -2
- package/esm2022/table/api/models/table.model.mjs +0 -21
- package/esm2022/table/components/column-filter/column-filter.component.mjs +0 -389
- package/esm2022/table/components/column-value/column-value.component.mjs +0 -78
- package/esm2022/table/components/filter/filter-active-tag/filter-active-tag.component.mjs +0 -55
- package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +0 -226
- package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +0 -219
- package/esm2022/table/components/table/table.component.mjs +0 -319
- package/esm2022/table/helpers/filters.mjs +0 -312
- package/esm2022/table/helpers/notification.mjs +0 -21
- package/esm2022/table/helpers/table-layout-prefs.mjs +0 -10
- package/esm2022/table/helpers/table.mjs +0 -24
- package/esm2022/table/index.mjs +0 -24
- package/esm2022/table/mediusinc-mng-commons-table.mjs +0 -5
- package/esm2022/table/models/column-preferences.model.mjs +0 -2
- package/esm2022/table/models/filter.model.mjs +0 -2
- package/esm2022/table/pipes/filter-value.pipe.mjs +0 -77
- package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +0 -27
- package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +0 -25
- package/esm2022/table/provide.mjs +0 -19
- package/esm2022/table/services/table-data.service.mjs +0 -194
- package/esm2022/table/services/table-feature-config.token.mjs +0 -3
- package/esm2022/table/services/table-metadata.service.mjs +0 -136
- package/esm2022/table/services/table-preferences.service.mjs +0 -142
- package/esm2022/tableview/action/components/action/action.component.mjs +0 -277
- package/esm2022/tableview/action/components/editor/action-editor.component.mjs +0 -86
- package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +0 -428
- package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +0 -35
- package/esm2022/tableview/action/components/route/action-route.component.mjs +0 -146
- package/esm2022/tableview/action/components/table/action-table.component.mjs +0 -102
- package/esm2022/tableview/action/guards/unsaved-changes.guard.mjs +0 -4
- package/esm2022/tableview/action/helpers/action-execution.mjs +0 -25
- package/esm2022/tableview/action/helpers/i18n.mjs +0 -102
- package/esm2022/tableview/action/helpers/notification.mjs +0 -78
- package/esm2022/tableview/action/helpers/styles.mjs +0 -32
- package/esm2022/tableview/action/models/action-editor-dialog-data.model.mjs +0 -2
- package/esm2022/tableview/action/models/can-component-deactivate.model.mjs +0 -2
- package/esm2022/tableview/action/models/execution/action-context.model.mjs +0 -64
- package/esm2022/tableview/action/models/execution/action-instance.model.mjs +0 -169
- package/esm2022/tableview/action/services/action-error-mapper.service.mjs +0 -20
- package/esm2022/tableview/action/services/action-executor.service.mjs +0 -772
- package/esm2022/tableview/action/services/component-action-executor.service.mjs +0 -19
- package/esm2022/tableview/action/services/data-provider-executor.service.mjs +0 -41
- package/esm2022/tableview/action/services/navigation.service.mjs +0 -53
- package/esm2022/tableview/action/services/providers/provide-action-executor.mjs +0 -9
- package/esm2022/tableview/action/services/providers/provide-view-container.mjs +0 -17
- package/esm2022/tableview/action/services/root-action-executor.service.mjs +0 -18
- package/esm2022/tableview/action/services/tokens/action-editor.token.mjs +0 -3
- package/esm2022/tableview/action/services/view-container.service.mjs +0 -40
- package/esm2022/tableview/api/action/descriptors/action-descriptor.factory.mjs +0 -28
- package/esm2022/tableview/api/action/descriptors/action-editor-descriptor.factory.mjs +0 -30
- package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +0 -223
- package/esm2022/tableview/api/action/descriptors/action-link-descriptor.factory.mjs +0 -32
- package/esm2022/tableview/api/action/descriptors/action-link.descriptor.mjs +0 -74
- package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +0 -302
- package/esm2022/tableview/api/action/descriptors/editor-action-descriptor.factory.mjs +0 -21
- package/esm2022/tableview/api/action/descriptors/editor-action-editor-descriptor.factory.mjs +0 -21
- package/esm2022/tableview/api/action/descriptors/table-action-descriptor.factory.mjs +0 -37
- package/esm2022/tableview/api/action/descriptors/table-action-editor-descriptor.factory.mjs +0 -40
- package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +0 -100
- package/esm2022/tableview/api/action/models/action-component.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/action-confirmation.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/action-descriptor.types.mjs +0 -2
- package/esm2022/tableview/api/action/models/action-editor.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/action-error.model.mjs +0 -14
- package/esm2022/tableview/api/action/models/action.type.mjs +0 -26
- package/esm2022/tableview/api/action/models/execution/action-context-validation.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/execution/action-context.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/execution/action-execution-error.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/execution/action-instance-state.model.mjs +0 -32
- package/esm2022/tableview/api/action/models/execution/action-instance.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/execution/view-container.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/tableview-action-default-categories.model.mjs +0 -11
- package/esm2022/tableview/api/action/services/data-provider-executor.service.mjs +0 -28
- package/esm2022/tableview/api/action/services/tokens/data-language-dropdown.token.mjs +0 -3
- package/esm2022/tableview/api/class/editor/class-editor-attribute-converter.mjs +0 -85
- package/esm2022/tableview/api/class/editor/class-editor-attribute.model.mjs +0 -2
- package/esm2022/tableview/api/class/editor/class-editor-data-provider.factory.mjs +0 -5
- package/esm2022/tableview/api/class/editor/class-editor-descriptor-helpers.mjs +0 -95
- package/esm2022/tableview/api/class/editor/class-editor-descriptor.factory.mjs +0 -21
- package/esm2022/tableview/api/class/index.mjs +0 -13
- package/esm2022/tableview/api/class/mediusinc-mng-commons-tableview-api-class.mjs +0 -5
- package/esm2022/tableview/api/class/tableview/class-tableview-attribute-converter.mjs +0 -35
- package/esm2022/tableview/api/class/tableview/class-tableview-attribute.model.mjs +0 -2
- package/esm2022/tableview/api/class/tableview/class-tableview-data-provider.factory.mjs +0 -5
- package/esm2022/tableview/api/class/tableview/class-tableview-descriptor-helpers.mjs +0 -111
- package/esm2022/tableview/api/class/tableview/class-tableview-descriptor.factory.mjs +0 -26
- package/esm2022/tableview/api/editor/data-providers/editor-data-provider.factory.mjs +0 -15
- package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +0 -114
- package/esm2022/tableview/api/editor/descriptors/editor-descriptor.factory.mjs +0 -15
- package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +0 -437
- package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +0 -51
- package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +0 -314
- package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +0 -103
- package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +0 -211
- package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +0 -142
- package/esm2022/tableview/api/editor/descriptors/field-validation.descriptor.mjs +0 -25
- package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +0 -402
- package/esm2022/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.mjs +0 -51
- package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +0 -2
- package/esm2022/tableview/api/editor/models/editor.model.mjs +0 -9
- package/esm2022/tableview/api/editor/models/field-action-context.model.mjs +0 -2
- package/esm2022/tableview/api/editor/models/field-image-preview.model.mjs +0 -2
- package/esm2022/tableview/api/editor/models/field-validation.model.mjs +0 -2
- package/esm2022/tableview/api/editor/models/field.model.mjs +0 -57
- package/esm2022/tableview/api/editor/models/form-editor.event.mjs +0 -28
- package/esm2022/tableview/api/editor/models/form-editor.interface.mjs +0 -2
- package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +0 -70
- package/esm2022/tableview/api/editor/models/formly-field.model.mjs +0 -2
- package/esm2022/tableview/api/editor/models/formly-options.model.mjs +0 -2
- package/esm2022/tableview/api/editor/models/radio.model.mjs +0 -2
- package/esm2022/tableview/api/index.mjs +0 -76
- package/esm2022/tableview/api/mediusinc-mng-commons-tableview-api.mjs +0 -5
- package/esm2022/tableview/api/tableview/data-providers/tableview-data-provider.factory.mjs +0 -18
- package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +0 -84
- package/esm2022/tableview/api/tableview/descriptors/tableview-descriptor.factory.mjs +0 -34
- package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +0 -377
- package/esm2022/tableview/api/tableview/helpers/files-export.mjs +0 -34
- package/esm2022/tableview/api/tableview/helpers/tableview-create.mjs +0 -26
- package/esm2022/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.mjs +0 -7
- package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +0 -324
- package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +0 -319
- package/esm2022/tableview/api/tableview/models/tableview-descriptor-fields-manage-helper.type.mjs +0 -2
- package/esm2022/tableview/api/tableview/models/tableview-descriptor-helper.type.mjs +0 -2
- package/esm2022/tableview/api/tableview/models/tableview-input.model.mjs +0 -2
- package/esm2022/tableview/api/tableview/models/tableview-route.model.mjs +0 -2
- package/esm2022/tableview/editor/components/editor/auto-save-status/auto-save-status.component.mjs +0 -82
- package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +0 -480
- package/esm2022/tableview/editor/components/formly/constants.mjs +0 -2
- package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +0 -66
- package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +0 -47
- package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +0 -39
- package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +0 -165
- package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +0 -42
- package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +0 -34
- package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +0 -211
- package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +0 -23
- package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +0 -195
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +0 -239
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +0 -205
- package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +0 -28
- package/esm2022/tableview/editor/components/formly/fields/formly-field-type.abstract.component.mjs +0 -46
- package/esm2022/tableview/editor/components/formly/pipes/formly-field-label.pipe.mjs +0 -19
- package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +0 -33
- package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +0 -59
- package/esm2022/tableview/editor/helpers/editor-autosave.mjs +0 -49
- package/esm2022/tableview/editor/helpers/editor-field.mjs +0 -39
- package/esm2022/tableview/editor/helpers/editor-formly.mjs +0 -388
- package/esm2022/tableview/editor/helpers/editor-validators.mjs +0 -25
- package/esm2022/tableview/editor/helpers/field-create.mjs +0 -21
- package/esm2022/tableview/editor/helpers/formly-config.mjs +0 -260
- package/esm2022/tableview/editor/helpers/notification.mjs +0 -11
- package/esm2022/tableview/editor/models/editor-auto-save-preview.model.mjs +0 -2
- package/esm2022/tableview/editor/models/formly-config.model.mjs +0 -2
- package/esm2022/tableview/editor/services/form-editor.service.mjs +0 -96
- package/esm2022/tableview/editor/services/formly-config.provider.mjs +0 -31
- package/esm2022/tableview/index.mjs +0 -67
- package/esm2022/tableview/mediusinc-mng-commons-tableview.mjs +0 -5
- package/esm2022/tableview/provide.mjs +0 -105
- package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +0 -15
- package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +0 -59
- package/esm2022/tableview/tableview/router/tableview-route-builder.mjs +0 -175
- package/esm2022/tableview/tableview/services/tableview-feature-config.token.mjs +0 -3
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, DestroyRef, inject } from '@angular/core';
|
|
2
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
-
import { ActivatedRoute, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, Router } from '@angular/router';
|
|
4
|
-
import { of } from 'rxjs';
|
|
5
|
-
import { CommonsInternalError } from '@mediusinc/mng-commons/core';
|
|
6
|
-
import { ActionActivationTriggerEnum, ActionInstanceStateEnum, ActionTypeEnum } from '@mediusinc/mng-commons/tableview/api';
|
|
7
|
-
import { ActionInstance } from '../../models/execution/action-instance.model';
|
|
8
|
-
import { ActionExecutorService } from '../../services/action-executor.service';
|
|
9
|
-
import { provideActionExecutor } from '../../services/providers/provide-action-executor';
|
|
10
|
-
import { ViewContainer } from '../../services/view-container.service';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
export default class ActionRouteComponent {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.router = inject(Router);
|
|
15
|
-
this.route = inject(ActivatedRoute);
|
|
16
|
-
this.actionExecutor = inject(ActionExecutorService);
|
|
17
|
-
this.viewContainer = inject((ViewContainer), { optional: true });
|
|
18
|
-
this.destroyRef = inject(DestroyRef);
|
|
19
|
-
this.actions = this.viewContainer?.actions().filter(a => a.activationTrigger === ActionActivationTriggerEnum.OnRoute) ?? [];
|
|
20
|
-
this.isRouterNavigationInProgress = false;
|
|
21
|
-
}
|
|
22
|
-
ngOnInit() {
|
|
23
|
-
this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(p => {
|
|
24
|
-
const action = this.findActionForRoute(p) ?? undefined;
|
|
25
|
-
if (action) {
|
|
26
|
-
this.activateAction(action, p, this.route.snapshot.queryParams);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
this.router.events.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(e => {
|
|
30
|
-
if (e instanceof NavigationStart) {
|
|
31
|
-
this.isRouterNavigationInProgress = true;
|
|
32
|
-
}
|
|
33
|
-
else if (e instanceof NavigationEnd || e instanceof NavigationCancel || e instanceof NavigationError || e instanceof NavigationSkipped) {
|
|
34
|
-
this.isRouterNavigationInProgress = false;
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
ngOnDestroy() {
|
|
39
|
-
const instance = this.instance;
|
|
40
|
-
this.unsetInstance();
|
|
41
|
-
this.actionExecutor.onActionRouteDestroy(instance);
|
|
42
|
-
}
|
|
43
|
-
activateAction(action, p, qp) {
|
|
44
|
-
const itemId = p['itemId'];
|
|
45
|
-
const actionData = {};
|
|
46
|
-
for (const key in p) {
|
|
47
|
-
if (key === 'itemId') {
|
|
48
|
-
continue;
|
|
49
|
-
}
|
|
50
|
-
actionData[key] = p[key];
|
|
51
|
-
}
|
|
52
|
-
for (const key in qp) {
|
|
53
|
-
actionData[key] = p[key];
|
|
54
|
-
}
|
|
55
|
-
this.processActionInstance(this.actionExecutor.activateAction(action, {
|
|
56
|
-
itemId: itemId,
|
|
57
|
-
actionData: actionData,
|
|
58
|
-
sourceComponent: this,
|
|
59
|
-
route: this.route
|
|
60
|
-
}));
|
|
61
|
-
}
|
|
62
|
-
untriggerAction() {
|
|
63
|
-
if (!this.instance || this.isRouterNavigationInProgress) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
const instance = this.instance;
|
|
67
|
-
this.unsetInstance();
|
|
68
|
-
this.actionExecutor.finishActionRouteUntrigger(instance);
|
|
69
|
-
}
|
|
70
|
-
findActionForRoute(params) {
|
|
71
|
-
const urlSegments = this.route.snapshot.url;
|
|
72
|
-
for (const action of this.actions) {
|
|
73
|
-
let actionUrl = action.routeUrl ?? '';
|
|
74
|
-
if (actionUrl.startsWith('/')) {
|
|
75
|
-
actionUrl = actionUrl.substring(1);
|
|
76
|
-
}
|
|
77
|
-
const actionUrlSegments = actionUrl.split('/');
|
|
78
|
-
if (actionUrlSegments.length !== urlSegments.length) {
|
|
79
|
-
continue;
|
|
80
|
-
}
|
|
81
|
-
let isMatch = true;
|
|
82
|
-
for (let i = 0; i < actionUrlSegments.length; i++) {
|
|
83
|
-
if (actionUrlSegments[i].startsWith(':')) {
|
|
84
|
-
const paramName = actionUrlSegments[i].substring(1);
|
|
85
|
-
if (!params[paramName]) {
|
|
86
|
-
isMatch = false;
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
else if (actionUrlSegments[i] !== urlSegments[i].path) {
|
|
91
|
-
isMatch = false;
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
if (isMatch) {
|
|
96
|
-
return action;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
|
-
processActionInstance(instance) {
|
|
102
|
-
if (!(instance instanceof ActionInstance)) {
|
|
103
|
-
throw new CommonsInternalError('Unknown type of action instance received', { details: instance });
|
|
104
|
-
}
|
|
105
|
-
if (!this.instance || this.instance.instanceLongName !== instance.instanceLongName) {
|
|
106
|
-
this.unsetInstance();
|
|
107
|
-
this.instance = instance;
|
|
108
|
-
this.instanceStateSubscription = this.instance.state$.subscribe(s => {
|
|
109
|
-
switch (s) {
|
|
110
|
-
case ActionInstanceStateEnum.FinishSuccessReactivateFinal:
|
|
111
|
-
this.viewContainer?.reloadTable(); // reload only if no error in action and
|
|
112
|
-
break;
|
|
113
|
-
case ActionInstanceStateEnum.FinishSuccessFinal:
|
|
114
|
-
this.viewContainer?.reloadTable(); // reload only if no error in action and
|
|
115
|
-
this.untriggerAction();
|
|
116
|
-
break;
|
|
117
|
-
case ActionInstanceStateEnum.FinishErrorFinal:
|
|
118
|
-
case ActionInstanceStateEnum.FinishDismissedFinal:
|
|
119
|
-
this.untriggerAction();
|
|
120
|
-
break;
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
this.instanceReactivationSubscription = this.instance.reactivationInstance$.subscribe(newInstance => {
|
|
124
|
-
this.processActionInstance(newInstance);
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
canDeactivate() {
|
|
129
|
-
if (this.instance?.action.type === ActionTypeEnum.Editor && this.instance.activationEditorComponentRef) {
|
|
130
|
-
return this.instance.activationEditorComponentRef.closeWithUnsavedChangesConfirmation(true);
|
|
131
|
-
}
|
|
132
|
-
return of(true);
|
|
133
|
-
}
|
|
134
|
-
unsetInstance() {
|
|
135
|
-
this.instance = undefined;
|
|
136
|
-
this.instanceStateSubscription?.unsubscribe();
|
|
137
|
-
this.instanceReactivationSubscription?.unsubscribe();
|
|
138
|
-
}
|
|
139
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionRouteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
140
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ActionRouteComponent, isStandalone: true, selector: "mng-action-route", providers: [provideActionExecutor()], ngImport: i0, template: "", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
141
|
-
}
|
|
142
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionRouteComponent, decorators: [{
|
|
143
|
-
type: Component,
|
|
144
|
-
args: [{ standalone: true, selector: 'mng-action-route', changeDetection: ChangeDetectionStrategy.OnPush, providers: [provideActionExecutor()], template: "" }]
|
|
145
|
-
}] });
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvYWN0aW9uL2NvbXBvbmVudHMvcm91dGUvYWN0aW9uLXJvdXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvYWN0aW9uL2NvbXBvbmVudHMvcm91dGUvYWN0aW9uLXJvdXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBVSxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUVySixPQUFPLEVBQTJCLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVsRCxPQUFPLEVBQStCLG9CQUFvQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDL0YsT0FBTyxFQUFDLDJCQUEyQixFQUF3Qix1QkFBdUIsRUFBRSxjQUFjLEVBQWtCLE1BQU0sc0NBQXNDLENBQUM7QUFHakssT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFTcEUsTUFBTSxDQUFDLE9BQU8sT0FBTyxvQkFBb0I7SUFQekM7UUFRcUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENB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QyxxQkFBcUIsRUFBRSxDQUFDLDBCQ3BCeEMsRUFBQTs7NEZEc0JxQixvQkFBb0I7a0JBUHhDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLGtCQUFrQixtQkFFWCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgT25EZXN0cm95LCBPbkluaXQsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkNhbmNlbCwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvbkVycm9yLCBOYXZpZ2F0aW9uU2tpcHBlZCwgTmF2aWdhdGlvblN0YXJ0LCBQYXJhbXMsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIG9mfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtBY3Rpb25EYXRhLCBBY3Rpb25QYXJhbWV0ZXJzLCBDb21tb25zSW50ZXJuYWxFcnJvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7QWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtLCBBY3Rpb25EZXNjcmlwdG9ySW5zdCwgQWN0aW9uSW5zdGFuY2VTdGF0ZUVudW0sIEFjdGlvblR5cGVFbnVtLCBJQWN0aW9uSW5zdGFuY2V9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGV2aWV3L2FwaSc7XG5cbmltcG9ydCB7Q2FuQ29tcG9uZW50RGVhY3RpdmF0ZX0gZnJvbSAnLi4vLi4vbW9kZWxzL2Nhbi1jb21wb25lbnQtZGVhY3RpdmF0ZS5tb2RlbCc7XG5pbXBvcnQge0FjdGlvbkluc3RhbmNlfSBmcm9tICcuLi8uLi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1pbnN0YW5jZS5tb2RlbCc7XG5pbXBvcnQge0FjdGlvbkV4ZWN1dG9yU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWN0aW9uLWV4ZWN1dG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtwcm92aWRlQWN0aW9uRXhlY3V0b3J9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb3ZpZGVycy9wcm92aWRlLWFjdGlvbi1leGVjdXRvcic7XG5pbXBvcnQge1ZpZXdDb250YWluZXJ9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZpZXctY29udGFpbmVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWFjdGlvbi1yb3V0ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1yb3V0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbcHJvdmlkZUFjdGlvbkV4ZWN1dG9yKCldXG59KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWN0aW9uUm91dGVDb21wb25lbnQ8SXRlbSwgU2VydmljZT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ2FuQ29tcG9uZW50RGVhY3RpdmF0ZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbkV4ZWN1dG9yID0gaW5qZWN0KEFjdGlvbkV4ZWN1dG9yU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyPyA9IGluamVjdChWaWV3Q29udGFpbmVyPEl0ZW0sIFNlcnZpY2U+LCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBwcml2YXRlIGFjdGlvbnM6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+ID0gdGhpcy52aWV3Q29udGFpbmVyPy5hY3Rpb25zKCkuZmlsdGVyKGEgPT4gYS5hY3RpdmF0aW9uVHJpZ2dlciA9PT0gQWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtLk9uUm91dGUpID8/IFtdO1xuICAgIHByaXZhdGUgaW5zdGFuY2U/OiBBY3Rpb25JbnN0YW5jZTxJdGVtLCBTZXJ2aWNlPjtcbiAgICBwcml2YXRlIGluc3RhbmNlU3RhdGVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBpbnN0YW5jZVJlYWN0aXZhdGlvblN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAgIHByaXZhdGUgaXNSb3V0ZXJOYXZpZ2F0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUocCA9PiB7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmZpbmRBY3Rpb25Gb3JSb3V0ZShwKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZUFjdGlvbihhY3Rpb24sIHAsIHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1JvdXRlck5hdmlnYXRpb25JblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgfHwgZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWwgfHwgZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvciB8fCBlIGluc3RhbmNlb2YgTmF2aWdhdGlvblNraXBwZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUm91dGVyTmF2aWdhdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2U7XG4gICAgICAgIHRoaXMudW5zZXRJbnN0YW5jZSgpO1xuICAgICAgICB0aGlzLmFjdGlvbkV4ZWN1dG9yLm9uQWN0aW9uUm91dGVEZXN0cm95KGluc3RhbmNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFjdGl2YXRlQWN0aW9uKGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiwgcDogUGFyYW1zLCBxcDogUGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1JZCA9IHBbJ2l0ZW1JZCddO1xuICAgICAgICBjb25zdCBhY3Rpb25EYXRhOiBBY3Rpb25EYXRhID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHApIHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdpdGVtSWQnKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3Rpb25EYXRhW2tleV0gPSBwW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcXApIHtcbiAgICAgICAgICAgIGFjdGlvbkRhdGFba2V5XSA9IHBba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvY2Vzc0FjdGlvbkluc3RhbmNlKFxuICAgICAgICAgICAgdGhpcy5hY3Rpb25FeGVjdXRvci5hY3RpdmF0ZUFjdGlvbihhY3Rpb24sIDxBY3Rpb25QYXJhbWV0ZXJzPEl0ZW0+PntcbiAgICAgICAgICAgICAgICBpdGVtSWQ6IGl0ZW1JZCxcbiAgICAgICAgICAgICAgICBhY3Rpb25EYXRhOiBhY3Rpb25EYXRhLFxuICAgICAgICAgICAgICAgIHNvdXJjZUNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgICAgICAgICByb3V0ZTogdGhpcy5yb3V0ZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVudHJpZ2dlckFjdGlvbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmluc3RhbmNlIHx8IHRoaXMuaXNSb3V0ZXJOYXZpZ2F0aW9uSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5pbnN0YW5jZTtcbiAgICAgICAgdGhpcy51bnNldEluc3RhbmNlKCk7XG4gICAgICAgIHRoaXMuYWN0aW9uRXhlY3V0b3IuZmluaXNoQWN0aW9uUm91dGVVbnRyaWdnZXIoaW5zdGFuY2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEFjdGlvbkZvclJvdXRlKHBhcmFtczogUGFyYW1zKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiB8IG51bGwge1xuICAgICAgICBjb25zdCB1cmxTZWdtZW50cyA9IHRoaXMucm91dGUuc25hcHNob3QudXJsO1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiB0aGlzLmFjdGlvbnMpIHtcbiAgICAgICAgICAgIGxldCBhY3Rpb25VcmwgPSBhY3Rpb24ucm91dGVVcmwgPz8gJyc7XG4gICAgICAgICAgICBpZiAoYWN0aW9uVXJsLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgIGFjdGlvblVybCA9IGFjdGlvblVybC5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25VcmxTZWdtZW50cyA9IGFjdGlvblVybC5zcGxpdCgnLycpO1xuICAgICAgICAgICAgaWYgKGFjdGlvblVybFNlZ21lbnRzLmxlbmd0aCAhPT0gdXJsU2VnbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgaXNNYXRjaCA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGlvblVybFNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGlvblVybFNlZ21lbnRzW2ldLnN0YXJ0c1dpdGgoJzonKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbU5hbWUgPSBhY3Rpb25VcmxTZWdtZW50c1tpXS5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFyYW1zW3BhcmFtTmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb25VcmxTZWdtZW50c1tpXSAhPT0gdXJsU2VnbWVudHNbaV0ucGF0aCkge1xuICAgICAgICAgICAgICAgICAgICBpc01hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NBY3Rpb25JbnN0YW5jZShpbnN0YW5jZTogSUFjdGlvbkluc3RhbmNlPEl0ZW0sIFNlcnZpY2U+KSB7XG4gICAgICAgIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQWN0aW9uSW5zdGFuY2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoJ1Vua25vd24gdHlwZSBvZiBhY3Rpb24gaW5zdGFuY2UgcmVjZWl2ZWQnLCB7ZGV0YWlsczogaW5zdGFuY2V9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pbnN0YW5jZSB8fCB0aGlzLmluc3RhbmNlLmluc3RhbmNlTG9uZ05hbWUgIT09IGluc3RhbmNlLmluc3RhbmNlTG9uZ05hbWUpIHtcbiAgICAgICAgICAgIHRoaXMudW5zZXRJbnN0YW5jZSgpO1xuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSA9IGluc3RhbmNlO1xuXG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlU3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLmluc3RhbmNlLnN0YXRlJC5zdWJzY3JpYmUocyA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQWN0aW9uSW5zdGFuY2VTdGF0ZUVudW0uRmluaXNoU3VjY2Vzc1JlYWN0aXZhdGVGaW5hbDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lcj8ucmVsb2FkVGFibGUoKTsgLy8gcmVsb2FkIG9ubHkgaWYgbm8gZXJyb3IgaW4gYWN0aW9uIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQWN0aW9uSW5zdGFuY2VTdGF0ZUVudW0uRmluaXNoU3VjY2Vzc0ZpbmFsOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyPy5yZWxvYWRUYWJsZSgpOyAvLyByZWxvYWQgb25seSBpZiBubyBlcnJvciBpbiBhY3Rpb24gYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVudHJpZ2dlckFjdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQWN0aW9uSW5zdGFuY2VTdGF0ZUVudW0uRmluaXNoRXJyb3JGaW5hbDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bS5GaW5pc2hEaXNtaXNzZWRGaW5hbDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudW50cmlnZ2VyQWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZVJlYWN0aXZhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMuaW5zdGFuY2UucmVhY3RpdmF0aW9uSW5zdGFuY2UkLnN1YnNjcmliZShuZXdJbnN0YW5jZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzQWN0aW9uSW5zdGFuY2UobmV3SW5zdGFuY2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuRGVhY3RpdmF0ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2U/LmFjdGlvbi50eXBlID09PSBBY3Rpb25UeXBlRW51bS5FZGl0b3IgJiYgdGhpcy5pbnN0YW5jZS5hY3RpdmF0aW9uRWRpdG9yQ29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZS5hY3RpdmF0aW9uRWRpdG9yQ29tcG9uZW50UmVmLmNsb3NlV2l0aFVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdW5zZXRJbnN0YW5jZSgpIHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pbnN0YW5jZVN0YXRlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmluc3RhbmNlUmVhY3RpdmF0aW9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH1cbn1cbiIsIiJdfQ==
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, QueryList, booleanAttribute, computed, contentChildren, inject, input, output, viewChild, viewChildren } from '@angular/core';
|
|
3
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
-
import { ActivatedRoute } from '@angular/router';
|
|
5
|
-
import { TemplateDirective, findTemplateByName } from '@mediusinc/mng-commons/core';
|
|
6
|
-
import { TableComponent } from '@mediusinc/mng-commons/table';
|
|
7
|
-
import { ActionPositionEnum } from '@mediusinc/mng-commons/tableview/api';
|
|
8
|
-
import { calculateTableColumnActionWidth } from '../../helpers/styles';
|
|
9
|
-
import { ActionExecutorService } from '../../services/action-executor.service';
|
|
10
|
-
import { provideActionExecutor } from '../../services/providers/provide-action-executor';
|
|
11
|
-
import { ViewContainer } from '../../services/view-container.service';
|
|
12
|
-
import { ActionComponent } from '../action/action.component';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
export class ActionTableComponent {
|
|
15
|
-
constructor() {
|
|
16
|
-
this.route = inject(ActivatedRoute);
|
|
17
|
-
this.actionExecutor = inject(ActionExecutorService);
|
|
18
|
-
this.viewContainer = inject((ViewContainer), { optional: true });
|
|
19
|
-
// metadata input
|
|
20
|
-
this.descriptor = input.required();
|
|
21
|
-
// data source inputs
|
|
22
|
-
this.items = input();
|
|
23
|
-
this.result = input();
|
|
24
|
-
this.loading = input(false, { transform: booleanAttribute });
|
|
25
|
-
this.dataProvider = input();
|
|
26
|
-
this.useQueryParams = input(false);
|
|
27
|
-
// extra features input
|
|
28
|
-
this.selectionMode = input('multiple');
|
|
29
|
-
this.selectionEnabled = input(false);
|
|
30
|
-
this.globalFilterFields = input();
|
|
31
|
-
this.rowReorderEnabled = input(true);
|
|
32
|
-
// actions
|
|
33
|
-
this.actions = input([]); // can be anything
|
|
34
|
-
// component inputs
|
|
35
|
-
this.captionComponent = input();
|
|
36
|
-
this.columnActionComponent = input();
|
|
37
|
-
this.columnActionMinWidthInput = input(undefined, { alias: 'columnActionMinWidth' });
|
|
38
|
-
this.columnActionMinWidth = computed(() => this.descriptor() && !this.columnActionMinWidthInput()
|
|
39
|
-
? calculateTableColumnActionWidth(this.descriptor(), this.rowInlineActions())
|
|
40
|
-
: this.columnActionMinWidthInput());
|
|
41
|
-
// event outputs
|
|
42
|
-
this.tableLoad = output();
|
|
43
|
-
this.selectionChange = output();
|
|
44
|
-
this.captionComponentInstance = output();
|
|
45
|
-
this.columnActionComponentInstance = output();
|
|
46
|
-
this.rowReorder = output();
|
|
47
|
-
// content and view queries
|
|
48
|
-
this.templates = contentChildren(TemplateDirective);
|
|
49
|
-
this.components = viewChildren((QueryList));
|
|
50
|
-
this.table = viewChild.required(TableComponent);
|
|
51
|
-
// templates
|
|
52
|
-
this.captionTemplate = computed(() => findTemplateByName([...this.templates()], 'caption'));
|
|
53
|
-
this.footerTemplate = computed(() => findTemplateByName([...this.templates()], 'footer'));
|
|
54
|
-
this.rowExpandTemplate = computed(() => findTemplateByName([...this.templates()], 'rowExpandContent'));
|
|
55
|
-
// actions
|
|
56
|
-
this.rowClickActions = computed(() => {
|
|
57
|
-
return this.actions().filter(action => action.position === ActionPositionEnum.RowClick);
|
|
58
|
-
});
|
|
59
|
-
this.rowInlineActions = computed(() => {
|
|
60
|
-
return this.actions().filter(action => action.position === ActionPositionEnum.RowInline);
|
|
61
|
-
});
|
|
62
|
-
this.viewContainer?.tableReload$.pipe(takeUntilDestroyed()).subscribe(e => this.reload(e));
|
|
63
|
-
}
|
|
64
|
-
reload(e) {
|
|
65
|
-
this.table().reload(e);
|
|
66
|
-
}
|
|
67
|
-
onCellClick(event) {
|
|
68
|
-
if (this.rowClickActions().length) {
|
|
69
|
-
for (const action of this.rowClickActions()) {
|
|
70
|
-
const idProp = this.descriptor()?.trackProperty ?? action?.model?.idProperty;
|
|
71
|
-
const parameters = {
|
|
72
|
-
itemId: idProp ? event.rowItem[idProp] : undefined,
|
|
73
|
-
item: event.rowItem,
|
|
74
|
-
actionData: {
|
|
75
|
-
itemIndex: event.rowIndex
|
|
76
|
-
},
|
|
77
|
-
route: this.route,
|
|
78
|
-
sourceComponent: this
|
|
79
|
-
};
|
|
80
|
-
this.actionExecutor.triggerAction(action, parameters, true);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
onSelectionChange(items) {
|
|
85
|
-
this.selectionChange.emit(items);
|
|
86
|
-
}
|
|
87
|
-
onRowReorder(event) {
|
|
88
|
-
this.rowReorder.emit(event);
|
|
89
|
-
}
|
|
90
|
-
onActionFinish(runResult) {
|
|
91
|
-
if (!runResult.error) {
|
|
92
|
-
this.reload();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: ActionTableComponent, isStandalone: true, selector: "mng-action-table", inputs: { descriptor: { classPropertyName: "descriptor", publicName: "descriptor", isSignal: true, isRequired: true, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, result: { classPropertyName: "result", publicName: "result", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, dataProvider: { classPropertyName: "dataProvider", publicName: "dataProvider", isSignal: true, isRequired: false, transformFunction: null }, useQueryParams: { classPropertyName: "useQueryParams", publicName: "useQueryParams", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, selectionEnabled: { classPropertyName: "selectionEnabled", publicName: "selectionEnabled", isSignal: true, isRequired: false, transformFunction: null }, globalFilterFields: { classPropertyName: "globalFilterFields", publicName: "globalFilterFields", isSignal: true, isRequired: false, transformFunction: null }, rowReorderEnabled: { classPropertyName: "rowReorderEnabled", publicName: "rowReorderEnabled", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, captionComponent: { classPropertyName: "captionComponent", publicName: "captionComponent", isSignal: true, isRequired: false, transformFunction: null }, columnActionComponent: { classPropertyName: "columnActionComponent", publicName: "columnActionComponent", isSignal: true, isRequired: false, transformFunction: null }, columnActionMinWidthInput: { classPropertyName: "columnActionMinWidthInput", publicName: "columnActionMinWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tableLoad: "tableLoad", selectionChange: "selectionChange", captionComponentInstance: "captionComponentInstance", columnActionComponentInstance: "columnActionComponentInstance", rowReorder: "rowReorder" }, providers: [provideActionExecutor()], queries: [{ propertyName: "templates", predicate: TemplateDirective, isSignal: true }], viewQueries: [{ propertyName: "components", predicate: (QueryList), descendants: true, isSignal: true }, { propertyName: "table", first: true, predicate: TableComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<mng-table\n [descriptor]=\"descriptor()\"\n [items]=\"items()\"\n [result]=\"result()\"\n [loading]=\"loading()\"\n [dataProvider]=\"dataProvider()\"\n [useQueryParams]=\"useQueryParams()\"\n [selectionMode]=\"selectionMode()\"\n [selectionEnabled]=\"selectionEnabled()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [captionComponent]=\"captionComponent()\"\n [columnCustomLastComponent]=\"columnActionComponent()\"\n [columnLastMinWidth]=\"columnActionMinWidth()\"\n [cellClickEnabled]=\"this.rowClickActions().length > 0\"\n [rowReorderEnabled]=\"rowReorderEnabled()\"\n (tableLoad)=\"tableLoad.emit($event)\"\n (cellClick)=\"onCellClick($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"captionComponentInstance.emit($event)\"\n (columnCustomLastComponentInstance)=\"columnActionComponentInstance.emit($event)\"\n (rowReorder)=\"onRowReorder($event)\">\n @if (!columnActionComponent() && rowInlineActions().length > 0) {\n <ng-template mngTemplate=\"columnCustomLast\" let-item=\"rowItem\" let-idx=\"rowIndex\">\n @for (action of rowInlineActions(); track action.actionNameLong) {\n <mng-action\n [action]=\"action\"\n [item]=\"item\"\n [hostComponent]=\"this\"\n [itemId]=\"descriptor().model.idProperty ? item[descriptor().model.idProperty!] : null\"\n [actionData]=\"{itemIndex: idx}\"\n (finish)=\"onActionFinish($event)\">\n </mng-action>\n }\n </ng-template>\n }\n @if (captionTemplate() && !captionComponent()) {\n <ng-template mngTemplate=\"caption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate()\"></ng-container>\n </ng-template>\n }\n @if (rowExpandTemplate()) {\n <ng-template mngTemplate=\"rowExpandContent\" let-item=\"rowItem\">\n <ng-container *ngTemplateOutlet=\"rowExpandTemplate(); context: {rowItem: item}\"></ng-container>\n </ng-template>\n }\n @if (footerTemplate()) {\n <ng-template mngTemplate=\"footer\" let-data=\"data\" let-totalCount=\"totalCount\">\n <ng-container *ngTemplateOutlet=\"footerTemplate(); context: {data, totalCount}\"></ng-container>\n </ng-template>\n }\n</mng-table>\n", dependencies: [{ kind: "component", type: TableComponent, selector: "mng-table", inputs: ["descriptor", "items", "result", "loading", "dataProvider", "useQueryParams", "cellClickEnabled", "selectionMode", "selectionEnabled", "rowReorderEnabled", "columnLastMinWidth", "captionComponent", "columnCustomLastComponent", "globalFilterFields"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnCustomLastComponentInstance", "rowReorder"] }, { kind: "component", type: ActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "dataListParams", "dataProvider", "hostComponent", "route", "disabled", "loading", "selectedItems"], outputs: ["finish"] }, { kind: "directive", type: TemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
97
|
-
}
|
|
98
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionTableComponent, decorators: [{
|
|
99
|
-
type: Component,
|
|
100
|
-
args: [{ standalone: true, selector: 'mng-action-table', imports: [TableComponent, ActionComponent, TemplateDirective, NgTemplateOutlet], providers: [provideActionExecutor()], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-table\n [descriptor]=\"descriptor()\"\n [items]=\"items()\"\n [result]=\"result()\"\n [loading]=\"loading()\"\n [dataProvider]=\"dataProvider()\"\n [useQueryParams]=\"useQueryParams()\"\n [selectionMode]=\"selectionMode()\"\n [selectionEnabled]=\"selectionEnabled()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [captionComponent]=\"captionComponent()\"\n [columnCustomLastComponent]=\"columnActionComponent()\"\n [columnLastMinWidth]=\"columnActionMinWidth()\"\n [cellClickEnabled]=\"this.rowClickActions().length > 0\"\n [rowReorderEnabled]=\"rowReorderEnabled()\"\n (tableLoad)=\"tableLoad.emit($event)\"\n (cellClick)=\"onCellClick($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"captionComponentInstance.emit($event)\"\n (columnCustomLastComponentInstance)=\"columnActionComponentInstance.emit($event)\"\n (rowReorder)=\"onRowReorder($event)\">\n @if (!columnActionComponent() && rowInlineActions().length > 0) {\n <ng-template mngTemplate=\"columnCustomLast\" let-item=\"rowItem\" let-idx=\"rowIndex\">\n @for (action of rowInlineActions(); track action.actionNameLong) {\n <mng-action\n [action]=\"action\"\n [item]=\"item\"\n [hostComponent]=\"this\"\n [itemId]=\"descriptor().model.idProperty ? item[descriptor().model.idProperty!] : null\"\n [actionData]=\"{itemIndex: idx}\"\n (finish)=\"onActionFinish($event)\">\n </mng-action>\n }\n </ng-template>\n }\n @if (captionTemplate() && !captionComponent()) {\n <ng-template mngTemplate=\"caption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate()\"></ng-container>\n </ng-template>\n }\n @if (rowExpandTemplate()) {\n <ng-template mngTemplate=\"rowExpandContent\" let-item=\"rowItem\">\n <ng-container *ngTemplateOutlet=\"rowExpandTemplate(); context: {rowItem: item}\"></ng-container>\n </ng-template>\n }\n @if (footerTemplate()) {\n <ng-template mngTemplate=\"footer\" let-data=\"data\" let-totalCount=\"totalCount\">\n <ng-container *ngTemplateOutlet=\"footerTemplate(); context: {data, totalCount}\"></ng-container>\n </ng-template>\n }\n</mng-table>\n" }]
|
|
101
|
-
}], ctorParameters: () => [] });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvYWN0aW9uL2NvbXBvbmVudHMvdGFibGUvYWN0aW9uLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvYWN0aW9uL2NvbXBvbmVudHMvdGFibGUvYWN0aW9uLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFNBQVMsRUFJVCxnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLGVBQWUsRUFDZixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUkvQyxPQUFPLEVBQXVELGlCQUFpQixFQUFFLGtCQUFrQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDeEksT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRTVELE9BQU8sRUFBdUIsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5RixPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUN2RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDcEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxN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WyJpbXBvcnQge05nVGVtcGxhdGVPdXRsZXR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2lnbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFR5cGUsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBjb21wdXRlZCxcbiAgICBjb250ZW50Q2hpbGRyZW4sXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICB2aWV3Q2hpbGQsXG4gICAgdmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VGFibGVSb3dSZW9yZGVyRXZlbnR9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuXG5pbXBvcnQge0FjdGlvblBhcmFtZXRlcnMsIENvbXBvbmVudERpcmVjdGl2ZSwgRGF0YUxpc3RSZXN1bHQsIFRlbXBsYXRlRGlyZWN0aXZlLCBmaW5kVGVtcGxhdGVCeU5hbWV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge1RhYmxlQ29tcG9uZW50fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxlJztcbmltcG9ydCB7SVRhYmxlRGF0YVByb3ZpZGVyLCBUYWJsZUNlbGxDbGlja0V2ZW50LCBUYWJsZURlc2NyaXB0b3JJbnN0LCBUYWJsZUxvYWRFdmVudCwgVGFibGVSZWxvYWRFdmVudH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdCwgQWN0aW9uUG9zaXRpb25FbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxldmlldy9hcGknO1xuXG5pbXBvcnQge2NhbGN1bGF0ZVRhYmxlQ29sdW1uQWN0aW9uV2lkdGh9IGZyb20gJy4uLy4uL2hlbHBlcnMvc3R5bGVzJztcbmltcG9ydCB7QWN0aW9uSW5zdGFuY2V9IGZyb20gJy4uLy4uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWluc3RhbmNlLm1vZGVsJztcbmltcG9ydCB7QWN0aW9uRXhlY3V0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hY3Rpb24tZXhlY3V0b3Iuc2VydmljZSc7XG5pbXBvcnQge3Byb3ZpZGVBY3Rpb25FeGVjdXRvcn0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvdmlkZXJzL3Byb3ZpZGUtYWN0aW9uLWV4ZWN1dG9yJztcbmltcG9ydCB7Vmlld0NvbnRhaW5lcn0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmlldy1jb250YWluZXIuc2VydmljZSc7XG5pbXBvcnQge0FjdGlvbkNvbXBvbmVudH0gZnJvbSAnLi4vYWN0aW9uL2FjdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWFjdGlvbi10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1RhYmxlQ29tcG9uZW50LCBBY3Rpb25Db21wb25lbnQsIFRlbXBsYXRlRGlyZWN0aXZlLCBOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgICBwcm92aWRlcnM6IFtwcm92aWRlQWN0aW9uRXhlY3V0b3IoKV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQWN0aW9uVGFibGVDb21wb25lbnQ8SXRlbSA9IGFueSwgU2VydmljZSA9IHVuZGVmaW5lZCwgU29ydHMgPSBrZXlvZiBJdGVtLCBGaWx0ZXJzIGV4dGVuZHMga2V5b2YgYW55ID0ga2V5b2YgSXRlbT4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uRXhlY3V0b3IgPSBpbmplY3QoQWN0aW9uRXhlY3V0b3JTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXIgPSBpbmplY3QoVmlld0NvbnRhaW5lcjxJdGVtLCBTZXJ2aWNlPiwge29wdGlvbmFsOiB0cnVlfSk7XG5cbiAgICAvLyBtZXRhZGF0YSBpbnB1dFxuICAgIHB1YmxpYyBkZXNjcmlwdG9yID0gaW5wdXQucmVxdWlyZWQ8VGFibGVEZXNjcmlwdG9ySW5zdDxJdGVtLCBTb3J0cywgRmlsdGVycz4+KCk7XG5cbiAgICAvLyBkYXRhIHNvdXJjZSBpbnB1dHNcbiAgICBwdWJsaWMgaXRlbXMgPSBpbnB1dDxBcnJheTxJdGVtPj4oKTtcbiAgICBwdWJsaWMgcmVzdWx0ID0gaW5wdXQ8RGF0YUxpc3RSZXN1bHQ8SXRlbT4+KCk7XG5cbiAgICBwdWJsaWMgbG9hZGluZyA9IGlucHV0PGJvb2xlYW4sIHVua25vd24+KGZhbHNlLCB7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIGRhdGFQcm92aWRlciA9IGlucHV0PElUYWJsZURhdGFQcm92aWRlcjxJdGVtLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4+KCk7XG4gICAgcHVibGljIHVzZVF1ZXJ5UGFyYW1zID0gaW5wdXQoZmFsc2UpO1xuXG4gICAgLy8gZXh0cmEgZmVhdHVyZXMgaW5wdXRcbiAgICBwdWJsaWMgc2VsZWN0aW9uTW9kZSA9IGlucHV0PCdzaW5nbGUnIHwgJ211bHRpcGxlJz4oJ211bHRpcGxlJyk7XG4gICAgcHVibGljIHNlbGVjdGlvbkVuYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gICAgcHVibGljIGdsb2JhbEZpbHRlckZpZWxkcyA9IGlucHV0PHN0cmluZ1tdPigpO1xuICAgIHB1YmxpYyByb3dSZW9yZGVyRW5hYmxlZCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gICAgLy8gYWN0aW9uc1xuICAgIHB1YmxpYyBhY3Rpb25zID0gaW5wdXQ8QXJyYXk8QWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4+KFtdKTsgLy8gY2FuIGJlIGFueXRoaW5nXG5cbiAgICAvLyBjb21wb25lbnQgaW5wdXRzXG4gICAgcHVibGljIGNhcHRpb25Db21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4+KCk7XG4gICAgcHVibGljIGNvbHVtbkFjdGlvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55Pj4oKTtcbiAgICBwdWJsaWMgY29sdW1uQWN0aW9uTWluV2lkdGhJbnB1dCA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7YWxpYXM6ICdjb2x1bW5BY3Rpb25NaW5XaWR0aCd9KTtcbiAgICBwdWJsaWMgY29sdW1uQWN0aW9uTWluV2lkdGggPSBjb21wdXRlZCgoKSA9PlxuICAgICAgICB0aGlzLmRlc2NyaXB0b3IoKSAmJiAhdGhpcy5jb2x1bW5BY3Rpb25NaW5XaWR0aElucHV0KClcbiAgICAgICAgICAgID8gY2FsY3VsYXRlVGFibGVDb2x1bW5BY3Rpb25XaWR0aCh0aGlzLmRlc2NyaXB0b3IoKSBhcyBUYWJsZURlc2NyaXB0b3JJbnN0PGFueT4sIHRoaXMucm93SW5saW5lQWN0aW9ucygpKVxuICAgICAgICAgICAgOiB0aGlzLmNvbHVtbkFjdGlvbk1pbldpZHRoSW5wdXQoKVxuICAgICk7XG5cbiAgICAvLyBldmVudCBvdXRwdXRzXG4gICAgcHVibGljIHRhYmxlTG9hZCA9IG91dHB1dDxUYWJsZUxvYWRFdmVudD4oKTtcbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlID0gb3V0cHV0PEFycmF5PEl0ZW0+PigpO1xuICAgIHB1YmxpYyBjYXB0aW9uQ29tcG9uZW50SW5zdGFuY2UgPSBvdXRwdXQ8YW55PigpO1xuICAgIHB1YmxpYyBjb2x1bW5BY3Rpb25Db21wb25lbnRJbnN0YW5jZSA9IG91dHB1dDxhbnk+KCk7XG4gICAgcHVibGljIHJvd1Jlb3JkZXIgPSBvdXRwdXQ8VGFibGVSb3dSZW9yZGVyRXZlbnQ+KCk7XG5cbiAgICAvLyBjb250ZW50IGFuZCB2aWV3IHF1ZXJpZXNcbiAgICBwdWJsaWMgdGVtcGxhdGVzID0gY29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKTtcbiAgICBwdWJsaWMgY29tcG9uZW50cyA9IHZpZXdDaGlsZHJlbihRdWVyeUxpc3Q8Q29tcG9uZW50RGlyZWN0aXZlPGFueT4+KTtcbiAgICBwdWJsaWMgdGFibGUgPSB2aWV3Q2hpbGQucmVxdWlyZWQoVGFibGVDb21wb25lbnQpO1xuXG4gICAgLy8gdGVtcGxhdGVzXG4gICAgcHVibGljIGNhcHRpb25UZW1wbGF0ZTogU2lnbmFsPFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPiA9IGNvbXB1dGVkKCgpID0+IGZpbmRUZW1wbGF0ZUJ5TmFtZShbLi4udGhpcy50ZW1wbGF0ZXMoKV0sICdjYXB0aW9uJykpO1xuICAgIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogU2lnbmFsPFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPiA9IGNvbXB1dGVkKCgpID0+IGZpbmRUZW1wbGF0ZUJ5TmFtZShbLi4udGhpcy50ZW1wbGF0ZXMoKV0sICdmb290ZXInKSk7XG4gICAgcHVibGljIHJvd0V4cGFuZFRlbXBsYXRlOiBTaWduYWw8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+ID0gY29tcHV0ZWQoKCkgPT4gZmluZFRlbXBsYXRlQnlOYW1lKFsuLi50aGlzLnRlbXBsYXRlcygpXSwgJ3Jvd0V4cGFuZENvbnRlbnQnKSk7XG5cbiAgICAvLyBhY3Rpb25zXG4gICAgcHVibGljIHJvd0NsaWNrQWN0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucygpLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLnBvc2l0aW9uID09PSBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2spO1xuICAgIH0pO1xuXG4gICAgcHVibGljIHJvd0lubGluZUFjdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGlvbnMoKS5maWx0ZXIoYWN0aW9uID0+IGFjdGlvbi5wb3NpdGlvbiA9PT0gQWN0aW9uUG9zaXRpb25FbnVtLlJvd0lubGluZSk7XG4gICAgfSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyPy50YWJsZVJlbG9hZCQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKGUgPT4gdGhpcy5yZWxvYWQoZSBhcyBUYWJsZVJlbG9hZEV2ZW50PFNvcnRzLCBGaWx0ZXJzPikpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWxvYWQoZT86IFRhYmxlUmVsb2FkRXZlbnQ8U29ydHMsIEZpbHRlcnM+KSB7XG4gICAgICAgIHRoaXMudGFibGUoKS5yZWxvYWQoZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2VsbENsaWNrKGV2ZW50OiBUYWJsZUNlbGxDbGlja0V2ZW50PEl0ZW0+KSB7XG4gICAgICAgIGlmICh0aGlzLnJvd0NsaWNrQWN0aW9ucygpLmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgdGhpcy5yb3dDbGlja0FjdGlvbnMoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkUHJvcCA9IHRoaXMuZGVzY3JpcHRvcigpPy50cmFja1Byb3BlcnR5ID8/IGFjdGlvbj8ubW9kZWw/LmlkUHJvcGVydHk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1ldGVyczogQWN0aW9uUGFyYW1ldGVyczxJdGVtPiA9IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUlkOiBpZFByb3AgPyBldmVudC5yb3dJdGVtW2lkUHJvcCBhcyBrZXlvZiBvYmplY3RdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBpdGVtOiBldmVudC5yb3dJdGVtLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25EYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtSW5kZXg6IGV2ZW50LnJvd0luZGV4XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlOiB0aGlzLnJvdXRlLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2VDb21wb25lbnQ6IHRoaXNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uRXhlY3V0b3IudHJpZ2dlckFjdGlvbihhY3Rpb24sIHBhcmFtZXRlcnMsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VsZWN0aW9uQ2hhbmdlKGl0ZW1zOiBBcnJheTxJdGVtPikge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGl0ZW1zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Sb3dSZW9yZGVyKGV2ZW50OiBUYWJsZVJvd1Jlb3JkZXJFdmVudCkge1xuICAgICAgICB0aGlzLnJvd1Jlb3JkZXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQWN0aW9uRmluaXNoKHJ1blJlc3VsdDogQWN0aW9uSW5zdGFuY2U8SXRlbSwgU2VydmljZT4pIHtcbiAgICAgICAgaWYgKCFydW5SZXN1bHQuZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bW5nLXRhYmxlXG4gICAgW2Rlc2NyaXB0b3JdPVwiZGVzY3JpcHRvcigpXCJcbiAgICBbaXRlbXNdPVwiaXRlbXMoKVwiXG4gICAgW3Jlc3VsdF09XCJyZXN1bHQoKVwiXG4gICAgW2xvYWRpbmddPVwibG9hZGluZygpXCJcbiAgICBbZGF0YVByb3ZpZGVyXT1cImRhdGFQcm92aWRlcigpXCJcbiAgICBbdXNlUXVlcnlQYXJhbXNdPVwidXNlUXVlcnlQYXJhbXMoKVwiXG4gICAgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZSgpXCJcbiAgICBbc2VsZWN0aW9uRW5hYmxlZF09XCJzZWxlY3Rpb25FbmFibGVkKClcIlxuICAgIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwiZ2xvYmFsRmlsdGVyRmllbGRzKClcIlxuICAgIFtjYXB0aW9uQ29tcG9uZW50XT1cImNhcHRpb25Db21wb25lbnQoKVwiXG4gICAgW2NvbHVtbkN1c3RvbUxhc3RDb21wb25lbnRdPVwiY29sdW1uQWN0aW9uQ29tcG9uZW50KClcIlxuICAgIFtjb2x1bW5MYXN0TWluV2lkdGhdPVwiY29sdW1uQWN0aW9uTWluV2lkdGgoKVwiXG4gICAgW2NlbGxDbGlja0VuYWJsZWRdPVwidGhpcy5yb3dDbGlja0FjdGlvbnMoKS5sZW5ndGggPiAwXCJcbiAgICBbcm93UmVvcmRlckVuYWJsZWRdPVwicm93UmVvcmRlckVuYWJsZWQoKVwiXG4gICAgKHRhYmxlTG9hZCk9XCJ0YWJsZUxvYWQuZW1pdCgkZXZlbnQpXCJcbiAgICAoY2VsbENsaWNrKT1cIm9uQ2VsbENsaWNrKCRldmVudClcIlxuICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGNhcHRpb25Db21wb25lbnRJbnN0YW5jZSk9XCJjYXB0aW9uQ29tcG9uZW50SW5zdGFuY2UuZW1pdCgkZXZlbnQpXCJcbiAgICAoY29sdW1uQ3VzdG9tTGFzdENvbXBvbmVudEluc3RhbmNlKT1cImNvbHVtbkFjdGlvbkNvbXBvbmVudEluc3RhbmNlLmVtaXQoJGV2ZW50KVwiXG4gICAgKHJvd1Jlb3JkZXIpPVwib25Sb3dSZW9yZGVyKCRldmVudClcIj5cbiAgICBAaWYgKCFjb2x1bW5BY3Rpb25Db21wb25lbnQoKSAmJiByb3dJbmxpbmVBY3Rpb25zKCkubGVuZ3RoID4gMCkge1xuICAgICAgICA8bmctdGVtcGxhdGUgbW5nVGVtcGxhdGU9XCJjb2x1bW5DdXN0b21MYXN0XCIgbGV0LWl0ZW09XCJyb3dJdGVtXCIgbGV0LWlkeD1cInJvd0luZGV4XCI+XG4gICAgICAgICAgICBAZm9yIChhY3Rpb24gb2Ygcm93SW5saW5lQWN0aW9ucygpOyB0cmFjayBhY3Rpb24uYWN0aW9uTmFtZUxvbmcpIHtcbiAgICAgICAgICAgICAgICA8bW5nLWFjdGlvblxuICAgICAgICAgICAgICAgICAgICBbYWN0aW9uXT1cImFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbaG9zdENvbXBvbmVudF09XCJ0aGlzXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1JZF09XCJkZXNjcmlwdG9yKCkubW9kZWwuaWRQcm9wZXJ0eSA/IGl0ZW1bZGVzY3JpcHRvcigpLm1vZGVsLmlkUHJvcGVydHkhXSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7aXRlbUluZGV4OiBpZHh9XCJcbiAgICAgICAgICAgICAgICAgICAgKGZpbmlzaCk9XCJvbkFjdGlvbkZpbmlzaCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9tbmctYWN0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIH1cbiAgICBAaWYgKGNhcHRpb25UZW1wbGF0ZSgpICYmICFjYXB0aW9uQ29tcG9uZW50KCkpIHtcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1uZ1RlbXBsYXRlPVwiY2FwdGlvblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcHRpb25UZW1wbGF0ZSgpXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuICAgIEBpZiAocm93RXhwYW5kVGVtcGxhdGUoKSkge1xuICAgICAgICA8bmctdGVtcGxhdGUgbW5nVGVtcGxhdGU9XCJyb3dFeHBhbmRDb250ZW50XCIgbGV0LWl0ZW09XCJyb3dJdGVtXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicm93RXhwYW5kVGVtcGxhdGUoKTsgY29udGV4dDoge3Jvd0l0ZW06IGl0ZW19XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuICAgIEBpZiAoZm9vdGVyVGVtcGxhdGUoKSkge1xuICAgICAgICA8bmctdGVtcGxhdGUgbW5nVGVtcGxhdGU9XCJmb290ZXJcIiBsZXQtZGF0YT1cImRhdGFcIiBsZXQtdG90YWxDb3VudD1cInRvdGFsQ291bnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZSgpOyBjb250ZXh0OiB7ZGF0YSwgdG90YWxDb3VudH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICB9XG48L21uZy10YWJsZT5cbiJdfQ==
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export const unsavedChangesGuard = (component) => {
|
|
2
|
-
return component.canDeactivate();
|
|
3
|
-
};
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zYXZlZC1jaGFuZ2VzLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L3NyYy9hY3Rpb24vZ3VhcmRzL3Vuc2F2ZWQtY2hhbmdlcy5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBNEMsQ0FBQyxTQUFpQyxFQUFFLEVBQUU7SUFDOUcsT0FBTyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDckMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYW5EZWFjdGl2YXRlRm59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7Q2FuQ29tcG9uZW50RGVhY3RpdmF0ZX0gZnJvbSAnLi4vbW9kZWxzL2Nhbi1jb21wb25lbnQtZGVhY3RpdmF0ZS5tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCB1bnNhdmVkQ2hhbmdlc0d1YXJkOiBDYW5EZWFjdGl2YXRlRm48Q2FuQ29tcG9uZW50RGVhY3RpdmF0ZT4gPSAoY29tcG9uZW50OiBDYW5Db21wb25lbnREZWFjdGl2YXRlKSA9PiB7XG4gICAgcmV0dXJuIGNvbXBvbmVudC5jYW5EZWFjdGl2YXRlKCk7XG59O1xuIl19
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ActionDataProviderSource } from '../models/execution/action-context.model';
|
|
2
|
-
export function actionExecutionSelectDataProvider(action, dataProvider, viewContainer) {
|
|
3
|
-
if (dataProvider) {
|
|
4
|
-
return {
|
|
5
|
-
dataProvider,
|
|
6
|
-
source: ActionDataProviderSource.ParameterOrInput
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
if (action.dataProvider) {
|
|
10
|
-
return {
|
|
11
|
-
dataProvider: action.dataProvider,
|
|
12
|
-
source: ActionDataProviderSource.Descriptor
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
if (viewContainer?.dataProvider()) {
|
|
16
|
-
return {
|
|
17
|
-
dataProvider: viewContainer?.dataProvider(),
|
|
18
|
-
source: ActionDataProviderSource.ViewContainer
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
return {
|
|
22
|
-
source: ActionDataProviderSource.Undefined
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWV4ZWN1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvYWN0aW9uL2hlbHBlcnMvYWN0aW9uLWV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUVsRixNQUFNLFVBQVUsaUNBQWlDLENBQzdDLE1BQTBELEVBQzFELFlBQTJDLEVBQzNDLGFBQStDO0lBSy9DLElBQUksWUFBWSxFQUFFLENBQUM7UUFDZixPQUFPO1lBQ0gsWUFBWTtZQUNaLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQyxnQkFBZ0I7U0FDcEQsQ0FBQztJQUNOLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixPQUFPO1lBQ0gsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1lBQ2pDLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQyxVQUFVO1NBQzlDLENBQUM7SUFDTixDQUFDO0lBQ0QsSUFBSSxhQUFhLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQztRQUNoQyxPQUFPO1lBQ0gsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUU7WUFDM0MsTUFBTSxFQUFFLHdCQUF3QixDQUFDLGFBQWE7U0FDakQsQ0FBQztJQUNOLENBQUM7SUFDRCxPQUFPO1FBQ0gsTUFBTSxFQUFFLHdCQUF3QixDQUFDLFNBQVM7S0FDN0MsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lEYXRhUHJvdmlkZXJ9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0LCBJVmlld0NvbnRhaW5lcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZXZpZXcvYXBpJztcblxuaW1wb3J0IHtBY3Rpb25EYXRhUHJvdmlkZXJTb3VyY2V9IGZyb20gJy4uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWNvbnRleHQubW9kZWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uRXhlY3V0aW9uU2VsZWN0RGF0YVByb3ZpZGVyPEl0ZW0sIFNlcnZpY2U+KFxuICAgIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgYW55LCBhbnksIGFueT4sXG4gICAgZGF0YVByb3ZpZGVyPzogSURhdGFQcm92aWRlcjxJdGVtLCBTZXJ2aWNlPixcbiAgICB2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8YW55LCBhbnk+IHwgbnVsbFxuKToge1xuICAgIGRhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8SXRlbSwgU2VydmljZT47XG4gICAgc291cmNlOiBBY3Rpb25EYXRhUHJvdmlkZXJTb3VyY2U7XG59IHtcbiAgICBpZiAoZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXIsXG4gICAgICAgICAgICBzb3VyY2U6IEFjdGlvbkRhdGFQcm92aWRlclNvdXJjZS5QYXJhbWV0ZXJPcklucHV0XG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChhY3Rpb24uZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IGFjdGlvbi5kYXRhUHJvdmlkZXIsXG4gICAgICAgICAgICBzb3VyY2U6IEFjdGlvbkRhdGFQcm92aWRlclNvdXJjZS5EZXNjcmlwdG9yXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmICh2aWV3Q29udGFpbmVyPy5kYXRhUHJvdmlkZXIoKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiB2aWV3Q29udGFpbmVyPy5kYXRhUHJvdmlkZXIoKSxcbiAgICAgICAgICAgIHNvdXJjZTogQWN0aW9uRGF0YVByb3ZpZGVyU291cmNlLlZpZXdDb250YWluZXJcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiBBY3Rpb25EYXRhUHJvdmlkZXJTb3VyY2UuVW5kZWZpbmVkXG4gICAgfTtcbn1cbiJdfQ==
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { map, mergeMap } from 'rxjs/operators';
|
|
2
|
-
import { getI18n, getI18nAsync } from '@mediusinc/mng-commons/core';
|
|
3
|
-
import { getI18nModelParams, getI18nModelParamsAsync } from '@mediusinc/mng-commons/model';
|
|
4
|
-
/**
|
|
5
|
-
* Asynchronously retrieves internationalized text for a specified action.
|
|
6
|
-
*
|
|
7
|
-
* If no translation is found for actionPathKeys, the fallback is used (if provided).
|
|
8
|
-
* If custom key is provided, no other key will be used.
|
|
9
|
-
* Item can be interpolated under itemTitle, itemId (if specified in action model) or under item.* (JSON-like path to property).
|
|
10
|
-
* Params are interpolated in translation.
|
|
11
|
-
*
|
|
12
|
-
* @param {TranslateService} translate - The translation service used for retrieving localized strings.
|
|
13
|
-
* @param {ActionDescriptorInst<any>} action - The action descriptor that provides context for localization keys and parameters.
|
|
14
|
-
* @param {string | Array<string>} pathKeys - A string or array of strings representing the priority order of localization keys to look up for the action.
|
|
15
|
-
* @param {ActionI18nOptsType} [opts] - Optional settings to customize the localization behavior, including custom keys, fallback keys, parameters, and missing translation strategies.
|
|
16
|
-
* @return {Observable<string | null>} An observable that emits the localized string for the action or null if no appropriate translation is found.
|
|
17
|
-
*/
|
|
18
|
-
export function getI18nForAction(translate, action, pathKeys, opts) {
|
|
19
|
-
const keys = getKeysByPriority(action, pathKeys, opts?.customKey, opts?.fallbackKey);
|
|
20
|
-
const i18nParams = getI18nActionParams(translate, action, opts?.item, opts?.params);
|
|
21
|
-
const i18nValue = getI18n(translate, i18nParams, ...keys);
|
|
22
|
-
return getTranslationDependingOnStrategy(opts?.missingTranslationStrategy, { i18nValue, firstKey: keys[0], fallbackKey: opts?.fallbackKey });
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Asynchronously retrieves internationalized text for a specified action.
|
|
26
|
-
*
|
|
27
|
-
* If no translation is found for actionPathKeys, the fallback is used (if provided).
|
|
28
|
-
* If custom key is provided, no other key will be used.
|
|
29
|
-
* Item can be interpolated under itemTitle, itemId (if specified in action model) or under item.* (JSON-like path to property).
|
|
30
|
-
* Params are interpolated in translation.
|
|
31
|
-
*
|
|
32
|
-
* @param {TranslateService} translate - The translation service used for retrieving localized strings.
|
|
33
|
-
* @param {ActionDescriptorInst<any>} action - The action descriptor that provides context for localization keys and parameters.
|
|
34
|
-
* @param {string | Array<string>} pathKeys - A string or array of strings representing the priority order of localization keys to look up for the action.
|
|
35
|
-
* @param {ActionI18nOptsType} [opts] - Optional settings to customize the localization behavior, including custom keys, fallback keys, parameters, and missing translation strategies.
|
|
36
|
-
* @return {Observable<string | null>} An observable that emits the localized string for the action or null if no appropriate translation is found.
|
|
37
|
-
*/
|
|
38
|
-
export function getI18nForActionAsync(translate, action, pathKeys, opts) {
|
|
39
|
-
return getI18nActionParamsAsync(translate, action, opts?.item, opts?.params).pipe(mergeMap(i18nParams => {
|
|
40
|
-
const keys = getKeysByPriority(action, pathKeys, opts?.customKey, opts?.fallbackKey);
|
|
41
|
-
return getI18nAsync(translate, i18nParams, ...keys).pipe(map(i18nValue => getTranslationDependingOnStrategy(opts?.missingTranslationStrategy, { i18nValue, firstKey: keys[0], fallbackKey: opts?.fallbackKey })));
|
|
42
|
-
}));
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Returns translation depending on missingTranslationStrategy
|
|
46
|
-
* @param missingTranslationStrategy strategy when no translation is found
|
|
47
|
-
* @param values object with values, i18nValue is translation, firstKey is first key in array of keys, fallbackKey is fallback key
|
|
48
|
-
*/
|
|
49
|
-
function getTranslationDependingOnStrategy(missingTranslationStrategy, { i18nValue, firstKey, fallbackKey }) {
|
|
50
|
-
if (i18nValue !== null) {
|
|
51
|
-
return i18nValue;
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
switch (missingTranslationStrategy) {
|
|
55
|
-
case 'returnNull':
|
|
56
|
-
return null;
|
|
57
|
-
case 'returnFallbackKey':
|
|
58
|
-
return fallbackKey ?? null;
|
|
59
|
-
case 'returnFirstKey':
|
|
60
|
-
default:
|
|
61
|
-
return firstKey ?? null;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
export function getI18nActionTitleAsync(translate, action, item) {
|
|
66
|
-
return getI18nForActionAsync(translate, action, 'title', { item });
|
|
67
|
-
}
|
|
68
|
-
export function getI18nActionEditorTitleAsync(translate, action, item) {
|
|
69
|
-
return getI18nForActionAsync(translate, action, ['editor.title', 'title'], { customKey: action.editorTitle ?? undefined, item, params: action.editorTitleParams });
|
|
70
|
-
}
|
|
71
|
-
export function getI18nActionParams(translate, action, item, params = {}) {
|
|
72
|
-
const i18nParams = getI18nModelParams(translate, action.model ?? undefined, item, params);
|
|
73
|
-
return populateI18nActionParams(i18nParams);
|
|
74
|
-
}
|
|
75
|
-
export function getI18nActionParamsAsync(translate, action, item, params = {}) {
|
|
76
|
-
return getI18nModelParamsAsync(translate, action.model ?? undefined, item, params).pipe(map(i18nParams => populateI18nActionParams(i18nParams)));
|
|
77
|
-
}
|
|
78
|
-
export function populateI18nActionParams(params = {}) {
|
|
79
|
-
params = { ...params };
|
|
80
|
-
return params;
|
|
81
|
-
}
|
|
82
|
-
function getKeysByPriority(action, actionPathKeys, customKey, fallbackKey) {
|
|
83
|
-
const keys = [];
|
|
84
|
-
if (customKey) {
|
|
85
|
-
keys.push(customKey);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
if (!Array.isArray(actionPathKeys)) {
|
|
89
|
-
actionPathKeys = [actionPathKeys];
|
|
90
|
-
}
|
|
91
|
-
actionPathKeys.forEach(k => {
|
|
92
|
-
if (action.i18nModelActionBaseKey)
|
|
93
|
-
keys.push(`${action.i18nModelActionBaseKey}.${k}`);
|
|
94
|
-
keys.push(`${action.actionName}.${k}`);
|
|
95
|
-
});
|
|
96
|
-
if (fallbackKey) {
|
|
97
|
-
keys.push(fallbackKey);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return keys;
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvYWN0aW9uL2hlbHBlcnMvaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsR0FBRyxFQUFFLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBaUMsT0FBTyxFQUFFLFlBQVksRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2xHLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBV3pGOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsU0FBMkIsRUFBRSxNQUFpQyxFQUFFLFFBQWdDLEVBQUUsSUFBeUI7SUFDeEosTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNyRixNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BGLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDMUQsT0FBTyxpQ0FBaUMsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsRUFBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7QUFDL0ksQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ2pDLFNBQTJCLEVBQzNCLE1BQWlDLEVBQ2pDLFFBQWdDLEVBQ2hDLElBQXlCO0lBRXpCLE9B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QUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLE1BQWlDLEVBQUUsY0FBc0MsRUFBRSxTQUFrQixFQUFFLFdBQW9CO0lBQzFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNoQixJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QixDQUFDO1NBQU0sQ0FBQztRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDakMsY0FBYyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkIsSUFBSSxNQUFNLENBQUMsc0JBQXNCO2dCQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsc0JBQXNCLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0RixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgbWVyZ2VNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtJMThuTWlzc2luZ1RyYW5zbGF0aW9uU3RyYXRlZ3ksIGdldEkxOG4sIGdldEkxOG5Bc3luY30gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7Z2V0STE4bk1vZGVsUGFyYW1zLCBnZXRJMThuTW9kZWxQYXJhbXNBc3luY30gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0LCBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZXZpZXcvYXBpJztcblxudHlwZSBBY3Rpb25JMThuT3B0c1R5cGUgPSB7XG4gICAgY3VzdG9tS2V5Pzogc3RyaW5nO1xuICAgIGZhbGxiYWNrS2V5Pzogc3RyaW5nO1xuICAgIGl0ZW0/OiBhbnk7XG4gICAgcGFyYW1zPzogYW55O1xuICAgIG1pc3NpbmdUcmFuc2xhdGlvblN0cmF0ZWd5PzogSTE4bk1pc3NpbmdUcmFuc2xhdGlvblN0cmF0ZWd5O1xufTtcblxuLyoqXG4gKiBBc3luY2hyb25vdXNseSByZXRyaWV2ZXMgaW50ZXJuYXRpb25hbGl6ZWQgdGV4dCBmb3IgYSBzcGVjaWZpZWQgYWN0aW9uLlxuICpcbiAqIElmIG5vIHRyYW5zbGF0aW9uIGlzIGZvdW5kIGZvciBhY3Rpb25QYXRoS2V5cywgdGhlIGZhbGxiYWNrIGlzIHVzZWQgKGlmIHByb3ZpZGVkKS5cbiAqIElmIGN1c3RvbSBrZXkgaXMgcHJvdmlkZWQsIG5vIG90aGVyIGtleSB3aWxsIGJlIHVzZWQuXG4gKiBJdGVtIGNhbiBiZSBpbnRlcnBvbGF0ZWQgdW5kZXIgaXRlbVRpdGxlLCBpdGVtSWQgKGlmIHNwZWNpZmllZCBpbiBhY3Rpb24gbW9kZWwpIG9yIHVuZGVyIGl0ZW0uKiAoSlNPTi1saWtlIHBhdGggdG8gcHJvcGVydHkpLlxuICogUGFyYW1zIGFyZSBpbnRlcnBvbGF0ZWQgaW4gdHJhbnNsYXRpb24uXG4gKlxuICogQHBhcmFtIHtUcmFuc2xhdGVTZXJ2aWNlfSB0cmFuc2xhdGUgLSBUaGUgdHJhbnNsYXRpb24gc2VydmljZSB1c2VkIGZvciByZXRyaWV2aW5nIGxvY2FsaXplZCBzdHJpbmdzLlxuICogQHBhcmFtIHtBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+fSBhY3Rpb24gLSBUaGUgYWN0aW9uIGRlc2NyaXB0b3IgdGhhdCBwcm92aWRlcyBjb250ZXh0IGZvciBsb2NhbGl6YXRpb24ga2V5cyBhbmQgcGFyYW1ldGVycy5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgQXJyYXk8c3RyaW5nPn0gcGF0aEtleXMgLSBBIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgcHJpb3JpdHkgb3JkZXIgb2YgbG9jYWxpemF0aW9uIGtleXMgdG8gbG9vayB1cCBmb3IgdGhlIGFjdGlvbi5cbiAqIEBwYXJhbSB7QWN0aW9uSTE4bk9wdHNUeXBlfSBbb3B0c10gLSBPcHRpb25hbCBzZXR0aW5ncyB0byBjdXN0b21pemUgdGhlIGxvY2FsaXphdGlvbiBiZWhhdmlvciwgaW5jbHVkaW5nIGN1c3RvbSBrZXlzLCBmYWxsYmFjayBrZXlzLCBwYXJhbWV0ZXJzLCBhbmQgbWlzc2luZyB0cmFuc2xhdGlvbiBzdHJhdGVnaWVzLlxuICogQHJldHVybiB7T2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBsb2NhbGl6ZWQgc3RyaW5nIGZvciB0aGUgYWN0aW9uIG9yIG51bGwgaWYgbm8gYXBwcm9wcmlhdGUgdHJhbnNsYXRpb24gaXMgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJMThuRm9yQWN0aW9uKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+LCBwYXRoS2V5czogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPiwgb3B0cz86IEFjdGlvbkkxOG5PcHRzVHlwZSk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGtleXMgPSBnZXRLZXlzQnlQcmlvcml0eShhY3Rpb24sIHBhdGhLZXlzLCBvcHRzPy5jdXN0b21LZXksIG9wdHM/LmZhbGxiYWNrS2V5KTtcbiAgICBjb25zdCBpMThuUGFyYW1zID0gZ2V0STE4bkFjdGlvblBhcmFtcyh0cmFuc2xhdGUsIGFjdGlvbiwgb3B0cz8uaXRlbSwgb3B0cz8ucGFyYW1zKTtcbiAgICBjb25zdCBpMThuVmFsdWUgPSBnZXRJMThuKHRyYW5zbGF0ZSwgaTE4blBhcmFtcywgLi4ua2V5cyk7XG4gICAgcmV0dXJuIGdldFRyYW5zbGF0aW9uRGVwZW5kaW5nT25TdHJhdGVneShvcHRzPy5taXNzaW5nVHJhbnNsYXRpb25TdHJhdGVneSwge2kxOG5WYWx1ZSwgZmlyc3RLZXk6IGtleXNbMF0sIGZhbGxiYWNrS2V5OiBvcHRzPy5mYWxsYmFja0tleX0pO1xufVxuXG4vKipcbiAqIEFzeW5jaHJvbm91c2x5IHJldHJpZXZlcyBpbnRlcm5hdGlvbmFsaXplZCB0ZXh0IGZvciBhIHNwZWNpZmllZCBhY3Rpb24uXG4gKlxuICogSWYgbm8gdHJhbnNsYXRpb24gaXMgZm91bmQgZm9yIGFjdGlvblBhdGhLZXlzLCB0aGUgZmFsbGJhY2sgaXMgdXNlZCAoaWYgcHJvdmlkZWQpLlxuICogSWYgY3VzdG9tIGtleSBpcyBwcm92aWRlZCwgbm8gb3RoZXIga2V5IHdpbGwgYmUgdXNlZC5cbiAqIEl0ZW0gY2FuIGJlIGludGVycG9sYXRlZCB1bmRlciBpdGVtVGl0bGUsIGl0ZW1JZCAoaWYgc3BlY2lmaWVkIGluIGFjdGlvbiBtb2RlbCkgb3IgdW5kZXIgaXRlbS4qIChKU09OLWxpa2UgcGF0aCB0byBwcm9wZXJ0eSkuXG4gKiBQYXJhbXMgYXJlIGludGVycG9sYXRlZCBpbiB0cmFuc2xhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge1RyYW5zbGF0ZVNlcnZpY2V9IHRyYW5zbGF0ZSAtIFRoZSB0cmFuc2xhdGlvbiBzZXJ2aWNlIHVzZWQgZm9yIHJldHJpZXZpbmcgbG9jYWxpemVkIHN0cmluZ3MuXG4gKiBAcGFyYW0ge0FjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT59IGFjdGlvbiAtIFRoZSBhY3Rpb24gZGVzY3JpcHRvciB0aGF0IHByb3ZpZGVzIGNvbnRleHQgZm9yIGxvY2FsaXphdGlvbiBrZXlzIGFuZCBwYXJhbWV0ZXJzLlxuICogQHBhcmFtIHtzdHJpbmcgfCBBcnJheTxzdHJpbmc+fSBwYXRoS2V5cyAtIEEgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSBwcmlvcml0eSBvcmRlciBvZiBsb2NhbGl6YXRpb24ga2V5cyB0byBsb29rIHVwIGZvciB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHtBY3Rpb25JMThuT3B0c1R5cGV9IFtvcHRzXSAtIE9wdGlvbmFsIHNldHRpbmdzIHRvIGN1c3RvbWl6ZSB0aGUgbG9jYWxpemF0aW9uIGJlaGF2aW9yLCBpbmNsdWRpbmcgY3VzdG9tIGtleXMsIGZhbGxiYWNrIGtleXMsIHBhcmFtZXRlcnMsIGFuZCBtaXNzaW5nIHRyYW5zbGF0aW9uIHN0cmF0ZWdpZXMuXG4gKiBAcmV0dXJuIHtPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGxvY2FsaXplZCBzdHJpbmcgZm9yIHRoZSBhY3Rpb24gb3IgbnVsbCBpZiBubyBhcHByb3ByaWF0ZSB0cmFuc2xhdGlvbiBpcyBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEkxOG5Gb3JBY3Rpb25Bc3luYyhcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+LFxuICAgIHBhdGhLZXlzOiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+LFxuICAgIG9wdHM/OiBBY3Rpb25JMThuT3B0c1R5cGVcbik6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiBnZXRJMThuQWN0aW9uUGFyYW1zQXN5bmModHJhbnNsYXRlLCBhY3Rpb24sIG9wdHM/Lml0ZW0sIG9wdHM/LnBhcmFtcykucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoaTE4blBhcmFtcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gZ2V0S2V5c0J5UHJpb3JpdHkoYWN0aW9uLCBwYXRoS2V5cywgb3B0cz8uY3VzdG9tS2V5LCBvcHRzPy5mYWxsYmFja0tleSk7XG4gICAgICAgICAgICByZXR1cm4gZ2V0STE4bkFzeW5jKHRyYW5zbGF0ZSwgaTE4blBhcmFtcywgLi4ua2V5cykucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoaTE4blZhbHVlID0+IGdldFRyYW5zbGF0aW9uRGVwZW5kaW5nT25TdHJhdGVneShvcHRzPy5taXNzaW5nVHJhbnNsYXRpb25TdHJhdGVneSwge2kxOG5WYWx1ZSwgZmlyc3RLZXk6IGtleXNbMF0sIGZhbGxiYWNrS2V5OiBvcHRzPy5mYWxsYmFja0tleX0pKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICApO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJhbnNsYXRpb24gZGVwZW5kaW5nIG9uIG1pc3NpbmdUcmFuc2xhdGlvblN0cmF0ZWd5XG4gKiBAcGFyYW0gbWlzc2luZ1RyYW5zbGF0aW9uU3RyYXRlZ3kgc3RyYXRlZ3kgd2hlbiBubyB0cmFuc2xhdGlvbiBpcyBmb3VuZFxuICogQHBhcmFtIHZhbHVlcyBvYmplY3Qgd2l0aCB2YWx1ZXMsIGkxOG5WYWx1ZSBpcyB0cmFuc2xhdGlvbiwgZmlyc3RLZXkgaXMgZmlyc3Qga2V5IGluIGFycmF5IG9mIGtleXMsIGZhbGxiYWNrS2V5IGlzIGZhbGxiYWNrIGtleVxuICovXG5mdW5jdGlvbiBnZXRUcmFuc2xhdGlvbkRlcGVuZGluZ09uU3RyYXRlZ3koXG4gICAgbWlzc2luZ1RyYW5zbGF0aW9uU3RyYXRlZ3k6IEkxOG5NaXNzaW5nVHJhbnNsYXRpb25TdHJhdGVneSB8IHVuZGVmaW5lZCxcbiAgICB7aTE4blZhbHVlLCBmaXJzdEtleSwgZmFsbGJhY2tLZXl9OiB7aTE4blZhbHVlOiBzdHJpbmcgfCBudWxsOyBmaXJzdEtleT86IHN0cmluZzsgZmFsbGJhY2tLZXk/OiBzdHJpbmd9XG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoaTE4blZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBpMThuVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoIChtaXNzaW5nVHJhbnNsYXRpb25TdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAncmV0dXJuTnVsbCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjYXNlICdyZXR1cm5GYWxsYmFja0tleSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrS2V5ID8/IG51bGw7XG4gICAgICAgICAgICBjYXNlICdyZXR1cm5GaXJzdEtleSc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdEtleSA/PyBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0STE4bkFjdGlvblRpdGxlQXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4sIGl0ZW0/OiBhbnkpOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gZ2V0STE4bkZvckFjdGlvbkFzeW5jKHRyYW5zbGF0ZSwgYWN0aW9uLCAndGl0bGUnLCB7aXRlbX0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0STE4bkFjdGlvbkVkaXRvclRpdGxlQXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBhY3Rpb246IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PGFueT4sIGl0ZW0/OiBhbnkpOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gZ2V0STE4bkZvckFjdGlvbkFzeW5jKHRyYW5zbGF0ZSwgYWN0aW9uLCBbJ2VkaXRvci50aXRsZScsICd0aXRsZSddLCB7Y3VzdG9tS2V5OiBhY3Rpb24uZWRpdG9yVGl0bGUgPz8gdW5kZWZpbmVkLCBpdGVtLCBwYXJhbXM6IGFjdGlvbi5lZGl0b3JUaXRsZVBhcmFtc30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0STE4bkFjdGlvblBhcmFtcyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiwgaXRlbT86IGFueSwgcGFyYW1zOiBhbnkgPSB7fSk6IGFueSB7XG4gICAgY29uc3QgaTE4blBhcmFtcyA9IGdldEkxOG5Nb2RlbFBhcmFtcyh0cmFuc2xhdGUsIGFjdGlvbi5tb2RlbCA/PyB1bmRlZmluZWQsIGl0ZW0sIHBhcmFtcyk7XG4gICAgcmV0dXJuIHBvcHVsYXRlSTE4bkFjdGlvblBhcmFtcyhpMThuUGFyYW1zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEkxOG5BY3Rpb25QYXJhbXNBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiwgaXRlbT86IGFueSwgcGFyYW1zOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIGdldEkxOG5Nb2RlbFBhcmFtc0FzeW5jKHRyYW5zbGF0ZSwgYWN0aW9uLm1vZGVsID8/IHVuZGVmaW5lZCwgaXRlbSwgcGFyYW1zKS5waXBlKG1hcChpMThuUGFyYW1zID0+IHBvcHVsYXRlSTE4bkFjdGlvblBhcmFtcyhpMThuUGFyYW1zKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9wdWxhdGVJMThuQWN0aW9uUGFyYW1zKHBhcmFtczogYW55ID0ge30pOiBhbnkge1xuICAgIHBhcmFtcyA9IHsuLi5wYXJhbXN9O1xuICAgIHJldHVybiBwYXJhbXM7XG59XG5cbmZ1bmN0aW9uIGdldEtleXNCeVByaW9yaXR5KGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiwgYWN0aW9uUGF0aEtleXM6IHN0cmluZyB8IEFycmF5PHN0cmluZz4sIGN1c3RvbUtleT86IHN0cmluZywgZmFsbGJhY2tLZXk/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBrZXlzID0gW107XG4gICAgaWYgKGN1c3RvbUtleSkge1xuICAgICAgICBrZXlzLnB1c2goY3VzdG9tS2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYWN0aW9uUGF0aEtleXMpKSB7XG4gICAgICAgICAgICBhY3Rpb25QYXRoS2V5cyA9IFthY3Rpb25QYXRoS2V5c107XG4gICAgICAgIH1cbiAgICAgICAgYWN0aW9uUGF0aEtleXMuZm9yRWFjaChrID0+IHtcbiAgICAgICAgICAgIGlmIChhY3Rpb24uaTE4bk1vZGVsQWN0aW9uQmFzZUtleSkga2V5cy5wdXNoKGAke2FjdGlvbi5pMThuTW9kZWxBY3Rpb25CYXNlS2V5fS4ke2t9YCk7XG4gICAgICAgICAgICBrZXlzLnB1c2goYCR7YWN0aW9uLmFjdGlvbk5hbWV9LiR7a31gKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChmYWxsYmFja0tleSkge1xuICAgICAgICAgICAga2V5cy5wdXNoKGZhbGxiYWNrS2V5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ga2V5cztcbn1cbiJdfQ==
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { getI18nErrorParams, getI18nForError, toastMessage } from '@mediusinc/mng-commons/core';
|
|
2
|
-
import { ActionEditorDescriptorInst } from '@mediusinc/mng-commons/tableview/api';
|
|
3
|
-
import { getI18nForAction } from './i18n';
|
|
4
|
-
/**
|
|
5
|
-
* Executes a notification success action for a given operation, translating
|
|
6
|
-
* and displaying a success message using the specified translation and message services.
|
|
7
|
-
*
|
|
8
|
-
* Provide title or message for custom titles (unrelated to model/action base paths for i18n).
|
|
9
|
-
* Item is interpolated as itemId, itemTitle or item.* for accessing desired properties.
|
|
10
|
-
* Set functionName in order to get specific translations for executing function (run, fetch, submit).
|
|
11
|
-
*
|
|
12
|
-
* @param {TranslateService} translate - The translation service used to retrieve localized messages.
|
|
13
|
-
* @param {MessageService} messageService - The message service responsible for displaying notifications.
|
|
14
|
-
* @param {ActionDescriptorInst<any>} action - The action descriptor instance that defines the operation.
|
|
15
|
-
* @param {ActionNotificationOptsType} [opts] - Optional configuration for customizing the success notification.
|
|
16
|
-
* @return {Message | undefined} The generated message object if a success message is found, otherwise undefined.
|
|
17
|
-
*/
|
|
18
|
-
export function actionNotificationSuccess(translate, messageService, action, opts) {
|
|
19
|
-
const functionName = opts?.functionName ?? 'run';
|
|
20
|
-
const actionSuccessTitle = getI18nForAction(translate, action, getKeysByPriority(action, functionName, 'success', 'title'), {
|
|
21
|
-
customKey: opts?.title,
|
|
22
|
-
item: opts?.item,
|
|
23
|
-
fallbackKey: 'general.success'
|
|
24
|
-
}) ?? undefined;
|
|
25
|
-
const actionSuccessMessage = getI18nForAction(translate, action, getKeysByPriority(action, functionName, 'success', 'message'), {
|
|
26
|
-
customKey: opts?.message,
|
|
27
|
-
item: opts?.item,
|
|
28
|
-
fallbackKey: 'general.successMessage'
|
|
29
|
-
}) ?? undefined;
|
|
30
|
-
if (!actionSuccessMessage) {
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
33
|
-
return toastMessage(actionSuccessMessage, undefined, { messageService: messageService, title: actionSuccessTitle });
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Displays a notification for an error that occurred during an action execution.
|
|
37
|
-
*
|
|
38
|
-
* Provide title or message for custom titles (unrelated to model/action base paths for i18n).
|
|
39
|
-
* Item is interpolated as itemId, itemTitle or item.* for accessing desired properties.
|
|
40
|
-
* Set functionName in order to get specific translations for executing function (run, fetch, submit).
|
|
41
|
-
*
|
|
42
|
-
* @param {TranslateService} translate - The service used for translations.
|
|
43
|
-
* @param {MessageService} messageService - The service used for displaying messages.
|
|
44
|
-
* @param {ActionDescriptorInst<any>} action - The action descriptor instance related to the error.
|
|
45
|
-
* @param {ICommonsError} error - The error object containing details about the error.
|
|
46
|
-
* @param {'warn' | 'error'} [severity='error'] - The severity level of the notification (either 'warn' or 'error').
|
|
47
|
-
* @param {ActionNotificationOptsType} [opts] - Optional parameters for customizing the notification, such as title, message, or function name.
|
|
48
|
-
* @return {Message} - The message object created and displayed as a notification.
|
|
49
|
-
*/
|
|
50
|
-
export function actionNotificationError(translate, messageService, action, error, severity = 'error', opts) {
|
|
51
|
-
const params = {
|
|
52
|
-
errorMessage: getI18nForError(translate, error) ?? error.message,
|
|
53
|
-
...getI18nErrorParams(error)
|
|
54
|
-
};
|
|
55
|
-
const functionName = opts?.functionName ?? 'run';
|
|
56
|
-
const actionErrorTitle = getI18nForAction(translate, action, getKeysByPriority(action, functionName, 'error', 'title'), {
|
|
57
|
-
customKey: opts?.title,
|
|
58
|
-
item: opts?.item,
|
|
59
|
-
fallbackKey: 'general.error',
|
|
60
|
-
params
|
|
61
|
-
}) ?? undefined;
|
|
62
|
-
const actionErrorMessage = getI18nForAction(translate, action, getKeysByPriority(action, functionName, 'error', 'message'), {
|
|
63
|
-
customKey: opts?.message,
|
|
64
|
-
item: opts?.item,
|
|
65
|
-
fallbackKey: 'general.errorMessage',
|
|
66
|
-
params
|
|
67
|
-
});
|
|
68
|
-
return toastMessage(actionErrorMessage ?? error.message, severity, { messageService: messageService, icon: 'pi-exclamation-triangle', title: actionErrorTitle });
|
|
69
|
-
}
|
|
70
|
-
function getKeysByPriority(action, functionName, prefix, suffix) {
|
|
71
|
-
const keys = [functionName];
|
|
72
|
-
if (action instanceof ActionEditorDescriptorInst && (functionName === 'run' || functionName === 'submit')) {
|
|
73
|
-
keys.pop();
|
|
74
|
-
keys.push(`submit`, `run`);
|
|
75
|
-
}
|
|
76
|
-
return keys.map(key => `${prefix}.${key}.${suffix}`).concat(`${prefix}.${suffix}`);
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L3NyYy9hY3Rpb24vaGVscGVycy9ub3RpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFnQixrQkFBa0IsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDN0csT0FBTyxFQUF1QiwwQkFBMEIsRUFBeUIsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5SCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFPeEM7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDckMsU0FBMkIsRUFDM0IsY0FBOEIsRUFDOUIsTUFBaUMsRUFDakMsSUFBaUM7SUFFakMsTUFBTSxZQUFZLEdBQUcsSUFBSSxFQUFFLFlBQVksSUFBSSxLQUFLLENBQUM7SUFDakQsTUFBTSxrQkFBa0IsR0FDcEIsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtRQUM3RixTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUs7UUFDdEIsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO1FBQ2hCLFdBQVcsRUFBRSxpQkFBaUI7S0FDakMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUNwQixNQUFNLG9CQUFvQixHQUN0QixnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxFQUFFO1FBQy9GLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTztRQUN4QixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7UUFDaEIsV0FBVyxFQUFFLHdCQUF3QjtLQUN4QyxDQUFDLElBQUksU0FBUyxDQUFDO0lBQ3BCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxPQUFPLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsRUFBQyxjQUFjLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBQyxDQUFDLENBQUM7QUFDdEgsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNuQyxTQUEyQixFQUMzQixjQUE4QixFQUM5QixNQUFpQyxFQUNqQyxLQUFvQixFQUNwQixXQUE2QixPQUFPLEVBQ3BDLElBQWlDO0lBRWpDLE1BQU0sTUFBTSxHQUFHO1FBQ1gsWUFBWSxFQUFFLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU87UUFDaEUsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7S0FDL0IsQ0FBQztJQUNGLE1BQU0sWUFBWSxHQUFHLElBQUksRUFBRSxZQUFZLElBQUksS0FBSyxDQUFDO0lBQ2pELE1BQU0sZ0JBQWdCLEdBQ2xCLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7UUFDM0YsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLO1FBQ3RCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtRQUNoQixXQUFXLEVBQUUsZUFBZTtRQUM1QixNQUFNO0tBQ1QsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUNwQixNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUU7UUFDeEgsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPO1FBQ3hCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtRQUNoQixXQUFXLEVBQUUsc0JBQXNCO1FBQ25DLE1BQU07S0FDVCxDQUFDLENBQUM7SUFDSCxPQUFPLFlBQVksQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBQyxDQUFDLENBQUM7QUFDbkssQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsTUFBaUMsRUFBRSxZQUFvQixFQUFFLE1BQWMsRUFBRSxNQUFjO0lBQzlHLE1BQU0sSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUIsSUFBSSxNQUFNLFlBQVksMEJBQTBCLElBQUksQ0FBQyxZQUFZLEtBQUssS0FBSyxJQUFJLFlBQVksS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3hHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztBQUN2RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7TWVzc2FnZSwgTWVzc2FnZVNlcnZpY2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuaW1wb3J0IHtJQ29tbW9uc0Vycm9yLCBnZXRJMThuRXJyb3JQYXJhbXMsIGdldEkxOG5Gb3JFcnJvciwgdG9hc3RNZXNzYWdlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdCwgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3QsIEFjdGlvbk5vdGlmaWNhdGlvblR5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGV2aWV3L2FwaSc7XG5cbmltcG9ydCB7Z2V0STE4bkZvckFjdGlvbn0gZnJvbSAnLi9pMThuJztcblxudHlwZSBBY3Rpb25Ob3RpZmljYXRpb25PcHRzVHlwZSA9IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgJiB7XG4gICAgaXRlbT86IGFueTtcbiAgICBmdW5jdGlvbk5hbWU/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEV4ZWN1dGVzIGEgbm90aWZpY2F0aW9uIHN1Y2Nlc3MgYWN0aW9uIGZvciBhIGdpdmVuIG9wZXJhdGlvbiwgdHJhbnNsYXRpbmdcbiAqIGFuZCBkaXNwbGF5aW5nIGEgc3VjY2VzcyBtZXNzYWdlIHVzaW5nIHRoZSBzcGVjaWZpZWQgdHJhbnNsYXRpb24gYW5kIG1lc3NhZ2Ugc2VydmljZXMuXG4gKlxuICogUHJvdmlkZSB0aXRsZSBvciBtZXNzYWdlIGZvciBjdXN0b20gdGl0bGVzICh1bnJlbGF0ZWQgdG8gbW9kZWwvYWN0aW9uIGJhc2UgcGF0aHMgZm9yIGkxOG4pLlxuICogSXRlbSBpcyBpbnRlcnBvbGF0ZWQgYXMgaXRlbUlkLCBpdGVtVGl0bGUgb3IgaXRlbS4qIGZvciBhY2Nlc3NpbmcgZGVzaXJlZCBwcm9wZXJ0aWVzLlxuICogU2V0IGZ1bmN0aW9uTmFtZSBpbiBvcmRlciB0byBnZXQgc3BlY2lmaWMgdHJhbnNsYXRpb25zIGZvciBleGVjdXRpbmcgZnVuY3Rpb24gKHJ1biwgZmV0Y2gsIHN1Ym1pdCkuXG4gKlxuICogQHBhcmFtIHtUcmFuc2xhdGVTZXJ2aWNlfSB0cmFuc2xhdGUgLSBUaGUgdHJhbnNsYXRpb24gc2VydmljZSB1c2VkIHRvIHJldHJpZXZlIGxvY2FsaXplZCBtZXNzYWdlcy5cbiAqIEBwYXJhbSB7TWVzc2FnZVNlcnZpY2V9IG1lc3NhZ2VTZXJ2aWNlIC0gVGhlIG1lc3NhZ2Ugc2VydmljZSByZXNwb25zaWJsZSBmb3IgZGlzcGxheWluZyBub3RpZmljYXRpb25zLlxuICogQHBhcmFtIHtBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+fSBhY3Rpb24gLSBUaGUgYWN0aW9uIGRlc2NyaXB0b3IgaW5zdGFuY2UgdGhhdCBkZWZpbmVzIHRoZSBvcGVyYXRpb24uXG4gKiBAcGFyYW0ge0FjdGlvbk5vdGlmaWNhdGlvbk9wdHNUeXBlfSBbb3B0c10gLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciBjdXN0b21pemluZyB0aGUgc3VjY2VzcyBub3RpZmljYXRpb24uXG4gKiBAcmV0dXJuIHtNZXNzYWdlIHwgdW5kZWZpbmVkfSBUaGUgZ2VuZXJhdGVkIG1lc3NhZ2Ugb2JqZWN0IGlmIGEgc3VjY2VzcyBtZXNzYWdlIGlzIGZvdW5kLCBvdGhlcndpc2UgdW5kZWZpbmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uTm90aWZpY2F0aW9uU3VjY2VzcyhcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PixcbiAgICBvcHRzPzogQWN0aW9uTm90aWZpY2F0aW9uT3B0c1R5cGVcbik6IE1lc3NhZ2UgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IG9wdHM/LmZ1bmN0aW9uTmFtZSA/PyAncnVuJztcbiAgICBjb25zdCBhY3Rpb25TdWNjZXNzVGl0bGUgPVxuICAgICAgICBnZXRJMThuRm9yQWN0aW9uKHRyYW5zbGF0ZSwgYWN0aW9uLCBnZXRLZXlzQnlQcmlvcml0eShhY3Rpb24sIGZ1bmN0aW9uTmFtZSwgJ3N1Y2Nlc3MnLCAndGl0bGUnKSwge1xuICAgICAgICAgICAgY3VzdG9tS2V5OiBvcHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW06IG9wdHM/Lml0ZW0sXG4gICAgICAgICAgICBmYWxsYmFja0tleTogJ2dlbmVyYWwuc3VjY2VzcydcbiAgICAgICAgfSkgPz8gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGFjdGlvblN1Y2Nlc3NNZXNzYWdlID1cbiAgICAgICAgZ2V0STE4bkZvckFjdGlvbih0cmFuc2xhdGUsIGFjdGlvbiwgZ2V0S2V5c0J5UHJpb3JpdHkoYWN0aW9uLCBmdW5jdGlvbk5hbWUsICdzdWNjZXNzJywgJ21lc3NhZ2UnKSwge1xuICAgICAgICAgICAgY3VzdG9tS2V5OiBvcHRzPy5tZXNzYWdlLFxuICAgICAgICAgICAgaXRlbTogb3B0cz8uaXRlbSxcbiAgICAgICAgICAgIGZhbGxiYWNrS2V5OiAnZ2VuZXJhbC5zdWNjZXNzTWVzc2FnZSdcbiAgICAgICAgfSkgPz8gdW5kZWZpbmVkO1xuICAgIGlmICghYWN0aW9uU3VjY2Vzc01lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHRvYXN0TWVzc2FnZShhY3Rpb25TdWNjZXNzTWVzc2FnZSwgdW5kZWZpbmVkLCB7bWVzc2FnZVNlcnZpY2U6IG1lc3NhZ2VTZXJ2aWNlLCB0aXRsZTogYWN0aW9uU3VjY2Vzc1RpdGxlfSk7XG59XG5cbi8qKlxuICogRGlzcGxheXMgYSBub3RpZmljYXRpb24gZm9yIGFuIGVycm9yIHRoYXQgb2NjdXJyZWQgZHVyaW5nIGFuIGFjdGlvbiBleGVjdXRpb24uXG4gKlxuICogUHJvdmlkZSB0aXRsZSBvciBtZXNzYWdlIGZvciBjdXN0b20gdGl0bGVzICh1bnJlbGF0ZWQgdG8gbW9kZWwvYWN0aW9uIGJhc2UgcGF0aHMgZm9yIGkxOG4pLlxuICogSXRlbSBpcyBpbnRlcnBvbGF0ZWQgYXMgaXRlbUlkLCBpdGVtVGl0bGUgb3IgaXRlbS4qIGZvciBhY2Nlc3NpbmcgZGVzaXJlZCBwcm9wZXJ0aWVzLlxuICogU2V0IGZ1bmN0aW9uTmFtZSBpbiBvcmRlciB0byBnZXQgc3BlY2lmaWMgdHJhbnNsYXRpb25zIGZvciBleGVjdXRpbmcgZnVuY3Rpb24gKHJ1biwgZmV0Y2gsIHN1Ym1pdCkuXG4gKlxuICogQHBhcmFtIHtUcmFuc2xhdGVTZXJ2aWNlfSB0cmFuc2xhdGUgLSBUaGUgc2VydmljZSB1c2VkIGZvciB0cmFuc2xhdGlvbnMuXG4gKiBAcGFyYW0ge01lc3NhZ2VTZXJ2aWNlfSBtZXNzYWdlU2VydmljZSAtIFRoZSBzZXJ2aWNlIHVzZWQgZm9yIGRpc3BsYXlpbmcgbWVzc2FnZXMuXG4gKiBAcGFyYW0ge0FjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT59IGFjdGlvbiAtIFRoZSBhY3Rpb24gZGVzY3JpcHRvciBpbnN0YW5jZSByZWxhdGVkIHRvIHRoZSBlcnJvci5cbiAqIEBwYXJhbSB7SUNvbW1vbnNFcnJvcn0gZXJyb3IgLSBUaGUgZXJyb3Igb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCB0aGUgZXJyb3IuXG4gKiBAcGFyYW0geyd3YXJuJyB8ICdlcnJvcid9IFtzZXZlcml0eT0nZXJyb3InXSAtIFRoZSBzZXZlcml0eSBsZXZlbCBvZiB0aGUgbm90aWZpY2F0aW9uIChlaXRoZXIgJ3dhcm4nIG9yICdlcnJvcicpLlxuICogQHBhcmFtIHtBY3Rpb25Ob3RpZmljYXRpb25PcHRzVHlwZX0gW29wdHNdIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgY3VzdG9taXppbmcgdGhlIG5vdGlmaWNhdGlvbiwgc3VjaCBhcyB0aXRsZSwgbWVzc2FnZSwgb3IgZnVuY3Rpb24gbmFtZS5cbiAqIEByZXR1cm4ge01lc3NhZ2V9IC0gVGhlIG1lc3NhZ2Ugb2JqZWN0IGNyZWF0ZWQgYW5kIGRpc3BsYXllZCBhcyBhIG5vdGlmaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbk5vdGlmaWNhdGlvbkVycm9yKFxuICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+LFxuICAgIGVycm9yOiBJQ29tbW9uc0Vycm9yLFxuICAgIHNldmVyaXR5OiAnd2FybicgfCAnZXJyb3InID0gJ2Vycm9yJyxcbiAgICBvcHRzPzogQWN0aW9uTm90aWZpY2F0aW9uT3B0c1R5cGVcbik6IE1lc3NhZ2Uge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgZXJyb3JNZXNzYWdlOiBnZXRJMThuRm9yRXJyb3IodHJhbnNsYXRlLCBlcnJvcikgPz8gZXJyb3IubWVzc2FnZSxcbiAgICAgICAgLi4uZ2V0STE4bkVycm9yUGFyYW1zKGVycm9yKVxuICAgIH07XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gb3B0cz8uZnVuY3Rpb25OYW1lID8/ICdydW4nO1xuICAgIGNvbnN0IGFjdGlvbkVycm9yVGl0bGUgPVxuICAgICAgICBnZXRJMThuRm9yQWN0aW9uKHRyYW5zbGF0ZSwgYWN0aW9uLCBnZXRLZXlzQnlQcmlvcml0eShhY3Rpb24sIGZ1bmN0aW9uTmFtZSwgJ2Vycm9yJywgJ3RpdGxlJyksIHtcbiAgICAgICAgICAgIGN1c3RvbUtleTogb3B0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtOiBvcHRzPy5pdGVtLFxuICAgICAgICAgICAgZmFsbGJhY2tLZXk6ICdnZW5lcmFsLmVycm9yJyxcbiAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICB9KSA/PyB1bmRlZmluZWQ7XG4gICAgY29uc3QgYWN0aW9uRXJyb3JNZXNzYWdlID0gZ2V0STE4bkZvckFjdGlvbih0cmFuc2xhdGUsIGFjdGlvbiwgZ2V0S2V5c0J5UHJpb3JpdHkoYWN0aW9uLCBmdW5jdGlvbk5hbWUsICdlcnJvcicsICdtZXNzYWdlJyksIHtcbiAgICAgICAgY3VzdG9tS2V5OiBvcHRzPy5tZXNzYWdlLFxuICAgICAgICBpdGVtOiBvcHRzPy5pdGVtLFxuICAgICAgICBmYWxsYmFja0tleTogJ2dlbmVyYWwuZXJyb3JNZXNzYWdlJyxcbiAgICAgICAgcGFyYW1zXG4gICAgfSk7XG4gICAgcmV0dXJuIHRvYXN0TWVzc2FnZShhY3Rpb25FcnJvck1lc3NhZ2UgPz8gZXJyb3IubWVzc2FnZSwgc2V2ZXJpdHksIHttZXNzYWdlU2VydmljZTogbWVzc2FnZVNlcnZpY2UsIGljb246ICdwaS1leGNsYW1hdGlvbi10cmlhbmdsZScsIHRpdGxlOiBhY3Rpb25FcnJvclRpdGxlfSk7XG59XG5cbmZ1bmN0aW9uIGdldEtleXNCeVByaW9yaXR5KGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiwgZnVuY3Rpb25OYW1lOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nLCBzdWZmaXg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBrZXlzID0gW2Z1bmN0aW9uTmFtZV07XG4gICAgaWYgKGFjdGlvbiBpbnN0YW5jZW9mIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0ICYmIChmdW5jdGlvbk5hbWUgPT09ICdydW4nIHx8IGZ1bmN0aW9uTmFtZSA9PT0gJ3N1Ym1pdCcpKSB7XG4gICAgICAgIGtleXMucG9wKCk7XG4gICAgICAgIGtleXMucHVzaChgc3VibWl0YCwgYHJ1bmApO1xuICAgIH1cbiAgICByZXR1cm4ga2V5cy5tYXAoa2V5ID0+IGAke3ByZWZpeH0uJHtrZXl9LiR7c3VmZml4fWApLmNvbmNhdChgJHtwcmVmaXh9LiR7c3VmZml4fWApO1xufVxuIl19
|