@mediusinc/mng-commons 5.4.0-rc.4 → 5.4.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/data-list/data-list-params-helpers.d.ts +12 -2
- package/esm2022/core/data-list/data-list-params-helpers.mjs +14 -8
- package/esm2022/filter/descriptors/filter-generic.descriptor.mjs +11 -1
- package/esm2022/form/components/autocomplete/autocomplete.component.mjs +10 -5
- package/esm2022/form/components/dropdown/dropdown.component.mjs +67 -99
- package/esm2022/table/api/descriptors/table.descriptor.mjs +6 -2
- package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +11 -11
- package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +4 -3
- package/esm2022/table/components/table/table.component.mjs +48 -12
- package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +4 -18
- package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +9 -1
- package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +10 -1
- package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +14 -2
- package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +24 -5
- package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +23 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +3 -3
- package/esm2022/tableview/editor/helpers/editor-formly.mjs +7 -1
- package/fesm2022/mediusinc-mng-commons-core.mjs +13 -7
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-filter.mjs +10 -0
- package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form.mjs +75 -103
- package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs +5 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table.mjs +60 -23
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +30 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +57 -26
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/filter/descriptors/filter-generic.descriptor.d.ts +5 -2
- package/form/components/autocomplete/autocomplete.component.d.ts +1 -0
- package/form/components/dropdown/dropdown.component.d.ts +5 -10
- package/package.json +1 -1
- package/table/api/descriptors/table.descriptor.d.ts +1 -0
- package/table/components/filter/filter-form/filter-form.component.d.ts +11 -8
- package/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.d.ts +3 -2
- package/table/components/table/table.component.d.ts +8 -4
- package/tableview/action/components/editor/injector-context/action-editor-injector-context.component.d.ts +0 -2
- package/tableview/api/editor/descriptors/editor.descriptor.d.ts +3 -0
- package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +5 -0
- package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +8 -0
- package/tableview/editor/components/editor/form-editor.component.d.ts +5 -1
- package/version-info.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediusinc-mng-commons-tableview.mjs","sources":["../../tableview/src/action/helpers/i18n.ts","../../tableview/src/action/models/execution/action-instance-state.model.ts","../../tableview/src/tableview/services/tableview-feature-config.token.ts","../../tableview/src/action/helpers/notification.ts","../../tableview/src/action/models/execution/action-context.model.ts","../../tableview/src/action/models/execution/action-instance.model.ts","../../tableview/src/action/services/action-error-mapper.service.ts","../../tableview/src/action/services/navigation.service.ts","../../tableview/src/action/services/tokens/action-editor.token.ts","../../tableview/src/action/services/view-container.service.ts","../../tableview/src/action/services/action-executor.service.ts","../../tableview/src/action/services/root-action-executor.service.ts","../../tableview/src/action/services/component-action-executor.service.ts","../../tableview/src/action/services/providers/provide-action-executor.ts","../../tableview/src/action/components/action/action.component.ts","../../tableview/src/action/components/action/action.component.html","../../tableview/src/editor/components/editor/auto-save-status/auto-save-status.component.ts","../../tableview/src/editor/helpers/editor-autosave.ts","../../tableview/src/editor/helpers/editor-validators.ts","../../tableview/src/editor/helpers/editor-formly.ts","../../tableview/src/editor/helpers/notification.ts","../../tableview/src/editor/services/form-editor.service.ts","../../tableview/src/editor/components/editor/form-editor.component.ts","../../tableview/src/editor/components/editor/form-editor.component.html","../../tableview/src/action/components/editor/injector-context/action-editor-injector-context.component.ts","../../tableview/src/action/components/editor/injector-context/action-editor-injector-context.component.html","../../tableview/src/action/components/editor/action-editor.component.ts","../../tableview/src/action/components/editor/action-editor.component.html","../../tableview/src/action/components/localization/data-language-dropdown.component.ts","../../tableview/src/action/components/localization/data-language-dropdown.component.html","../../tableview/src/action/components/route/action-route.component.ts","../../tableview/src/action/components/route/action-route.component.html","../../tableview/src/action/helpers/styles.ts","../../tableview/src/action/components/table/action-table.component.ts","../../tableview/src/action/components/table/action-table.component.html","../../tableview/src/action/guards/unsaved-changes.guard.ts","../../tableview/src/action/services/providers/provide-view-container.ts","../../tableview/src/action/services/data-provider-executor.service.ts","../../tableview/src/editor/components/formly/fields/formly-field-type.abstract.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-action/formly-field-action.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-action/formly-field-action.component.html","../../tableview/src/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.html","../../tableview/src/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.html","../../tableview/src/editor/helpers/editor-field.ts","../../tableview/src/editor/components/formly/pipes/formly-field-label.pipe.ts","../../tableview/src/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.html","../../tableview/src/editor/components/formly/fields/formly-field-input/formly-field-input.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-input/formly-field-input.component.html","../../tableview/src/editor/components/formly/fields/formly-field-label/formly-field-label.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-label/formly-field-label.component.html","../../tableview/src/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.html","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.html","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.html","../../tableview/src/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.html","../../tableview/src/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.ts","../../tableview/src/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.html","../../tableview/src/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.ts","../../tableview/src/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.html","../../tableview/src/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.html","../../tableview/src/editor/helpers/formly-config.ts","../../tableview/src/editor/services/formly-config.provider.ts","../../tableview/src/tableview/components/tableview/tableview.component.ts","../../tableview/src/tableview/components/tableview/tableview.component.html","../../tableview/src/tableview/components/route/tableview-route.component.ts","../../tableview/src/tableview/components/route/tableview-route.component.html","../../tableview/src/tableview/router/tableview-route-builder.ts","../../tableview/src/provide.ts","../../tableview/src/index.ts","../../tableview/src/mediusinc-mng-commons-tableview.ts"],"sourcesContent":["import {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\nimport {map, mergeMap} from 'rxjs/operators';\n\nimport {I18nMissingTranslationStrategy, getI18n, getI18nAsync} from '@mediusinc/mng-commons/core';\nimport {getI18nModelParams, getI18nModelParamsAsync} from '@mediusinc/mng-commons/model';\nimport {ActionDescriptorInst, ActionEditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nexport function getI18nForAction(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any,\n missingTranslationStrategy: I18nMissingTranslationStrategy = 'returnFirstKey'\n): string | null {\n const keys = getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);\n const i18nParams = getI18nActionParams(translate, action, item, params);\n const i18nValue = getI18n(translate, i18nParams, ...keys);\n return getTranslationDependingOnStrategy(missingTranslationStrategy, {i18nValue, firstKey: keys[0], fallbackKey});\n}\n\n/**\n * Returns async translation for given keys with given params.\n * @param translate TranslateService\n * @param action action descriptor\n * @param actionPathKeys action path keys\n * @param customKey custom key\n * @param item item\n * @param fallbackKey fallback key, used as fallback key\n * @param params additional params for translation\n * @param missingTranslationStrategy strategy when no translation is found\n */\nexport function getI18nForActionAsync(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any,\n missingTranslationStrategy: I18nMissingTranslationStrategy = 'returnFirstKey'\n): Observable<string | null> {\n return getI18nActionParamsAsync(translate, action, item, params).pipe(\n mergeMap(i18nParams => {\n const keys = getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);\n return getI18nAsync(translate, i18nParams, ...keys).pipe(\n map(i18nValue => getTranslationDependingOnStrategy(missingTranslationStrategy, {i18nValue, firstKey: keys[0], fallbackKey}))\n );\n })\n );\n}\n\n/**\n * Returns translation depending on missingTranslationStrategy\n * @param missingTranslationStrategy strategy when no translation is found\n * @param values object with values, i18nValue is translation, firstKey is first key in array of keys, fallbackKey is fallback key\n */\nfunction getTranslationDependingOnStrategy(\n missingTranslationStrategy: I18nMissingTranslationStrategy,\n {i18nValue, firstKey, fallbackKey}: {i18nValue: string | null; firstKey?: string; fallbackKey?: string}\n): string | null {\n if (i18nValue !== null) {\n return i18nValue;\n } else {\n switch (missingTranslationStrategy) {\n case 'returnNull':\n return null;\n case 'returnFallbackKey':\n return fallbackKey ?? null;\n case 'returnFirstKey':\n return firstKey ?? null;\n }\n }\n}\n\nexport function getI18nActionTitleAsync(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any): Observable<string | null> {\n return getI18nForActionAsync(translate, action, 'title', undefined, item);\n}\n\nexport function getI18nActionEditorTitleAsync(translate: TranslateService, action: ActionEditorDescriptorInst<any>, item?: any): Observable<string | null> {\n return getI18nForActionAsync(translate, action, ['editor.title', 'title'], action.editorTitle ?? undefined, item, undefined, action.editorTitleParams ?? undefined);\n}\n\nexport function getI18nActionParams(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any, params: any = {}): any {\n const i18nParams = getI18nModelParams(translate, action.model ?? undefined, item, params);\n return populateI18nActionParams(i18nParams);\n}\n\nexport function getI18nActionParamsAsync(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any, params: any = {}): Observable<any> {\n return getI18nModelParamsAsync(translate, action.model ?? undefined, item, params).pipe(map(i18nParams => populateI18nActionParams(i18nParams)));\n}\n\nexport function populateI18nActionParams(params: any = {}): any {\n params = {...params};\n return params;\n}\n\nfunction getKeysByPriority(action: ActionDescriptorInst<any>, actionPathKeys: string | Array<string>, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n if (!Array.isArray(actionPathKeys)) {\n actionPathKeys = [actionPathKeys];\n }\n actionPathKeys.forEach(k => {\n if (action.i18nModelActionBaseKey) keys.push(`${action.i18nModelActionBaseKey}.${k}`);\n keys.push(`${action.actionName}.${k}`);\n });\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n}\n","/**\n * States of action. Enums ending with `*Final` are supposed to be final.\n */\nexport enum ActionInstanceStateEnum {\n TriggerStart, // action was triggered (click or direct)\n TriggerEnd,\n ActivationStart, // action activation started (direct, event or editor)\n ActivationEnd, // action activation ended\n FetchStart, // fetch started\n FetchEnd, // fetch ended\n FetchError, // fetch error\n RunConfirmationStart, // confirmation for run is started\n RunConfirmationEndAccept, // confirmation accepted\n RunConfirmationEndReject, // confirmation rejected\n RunStart, // action was run by calling main function\n RunEnd, // action run function executed\n RunError, // action run function executed with error\n NextActionStart, // next action started\n NextActionEnd, // next action finished\n ErrorActionStart, // error action started\n ErrorActionEnd, // error action finished\n FinishSuccessFinal, // action executed successfully\n FinishErrorFinal, // action executed with error\n FinishDismissedFinal, // action was dismissed by user\n FinishSuccessReactivateFinal, // action executed successfully, another instance will directly start from previous\n FinishComponentDestroyFinal, // action was dismissed by destroying component that was executing it\n FinishRouteUntriggerStart,\n FinishRouteUntriggerEndFinal,\n FinishRouteUntriggerTimeoutFinal\n}\n","import {InjectionToken} from '@angular/core';\n\nimport {ValidatorOption, WrapperOption} from '@ngx-formly/core/lib/models';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {CommonsFormlyTypeConfig} from '../../editor/models/formly-config.model';\n\nexport interface TableviewFeatureConfig {\n formly?: {\n skip?: boolean;\n merge?: boolean;\n types?: CommonsFormlyTypeConfig[];\n wrappers?: WrapperOption[];\n validators?: ValidatorOption[];\n getValidationMessages?: (translate: TranslateService) => any[];\n };\n actions?: {\n debugInstances?: boolean;\n };\n}\n\nexport const COMMONS_TABLEVIEW_FEATURE_CONFIG_IT = new InjectionToken<TableviewFeatureConfig>('COMMONS_TABLEVIEW_FEATURE_CONFIG');\n","import {TranslateService} from '@ngx-translate/core';\nimport {Message, MessageService} from 'primeng/api';\n\nimport {ICommonsError, getI18nForError, toastMessage} from '@mediusinc/mng-commons/core';\nimport {ActionDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getI18nForAction} from './i18n';\n\nexport function actionNotificationSuccess(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n functionName: string,\n messageService: MessageService,\n customTitleKey?: string,\n customMessageKey?: string,\n item?: any\n): Message {\n const actionSuccessTitle = getI18nForAction(translate, action, 'success.title', customTitleKey, item, 'general.success', functionName) ?? undefined;\n const actionSuccessMessage = getI18nForAction(translate, action, 'success.message', customMessageKey, item, 'general.successMessage', functionName) ?? undefined;\n return toastMessage(messageService, actionSuccessTitle, actionSuccessMessage);\n}\n\nexport function actionNotificationError(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n error: ICommonsError,\n functionName: string,\n messageService: MessageService,\n item?: any,\n severity: 'warn' | 'error' = 'error'\n): Message {\n const params = {\n errorMessage: getI18nForError(translate, error) ?? error.message\n };\n const actionErrorTitle =\n getI18nForAction(translate, action, [`error.${functionName}.title`, 'error.title'], action.runNotificationErrorTitle, item, 'general.error', params) ?? undefined;\n const actionErrorMessage =\n getI18nForAction(translate, action, [`error.${functionName}.message`, 'error.message'], action.runNotificationErrorMessage, item, 'general.errorMessage', params) ??\n undefined;\n return toastMessage(messageService, actionErrorTitle, actionErrorMessage, severity, 'pi-exclamation-triangle');\n}\n","import {Injector} from '@angular/core';\n\nimport {Confirmation, Message} from 'primeng/api';\nimport {BehaviorSubject, ReplaySubject, Subscription, distinctUntilChanged} from 'rxjs';\n\nimport {ActionParameters, ICommonsError, IDataProvider, LoggerService} from '@mediusinc/mng-commons/core';\nimport {IActionContext, IActionInstance} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ViewContainer} from '../../services/view-container.service';\nimport {ActionInstance} from './action-instance.model';\n\n/**\n * Class containing all main data for action to be executed in run/fetch/submit states.\n */\nexport class ActionContext<Item, Service = undefined> implements IActionContext<Item, Service, ActionInstance<Item, Service>, ViewContainer<Item, Service>> {\n private readonly logger = LoggerService.get().create('ActionContext');\n public readonly contextLongName: string;\n public previousActionInstance?: IActionInstance<any, any>;\n public confirmation?: Confirmation;\n public notification?: Message;\n public runSubscription?: Subscription;\n public dataProviderSource = ActionDataProviderSource.Undefined;\n\n constructor(\n public readonly injector: Injector,\n public readonly instance: ActionInstance<Item, Service>,\n public readonly parameters: ActionParameters<Item>,\n public readonly functionName: 'run' | 'fetch' | 'submit',\n public readonly serviceInstance: Service,\n public readonly dataProvider?: IDataProvider<Item, Service>,\n public readonly viewContainer?: ViewContainer<Item, Service>,\n private readonly executionSubject = new ReplaySubject<Item | null | undefined>(1),\n private readonly executionIsRunningSubject = new BehaviorSubject(false)\n ) {\n this.contextLongName = `${this.instance.instanceLongName}_${functionName}`;\n }\n\n public get execution$() {\n return this.executionSubject.asObservable();\n }\n\n public get executionIsRunning$() {\n return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public executionStart() {\n this.logger.trace(`Context ${this.contextLongName} - execution start`);\n this.executionIsRunningSubject.next(true);\n }\n\n public executionNext(next: Item | null | undefined, finish = true) {\n this.logger.trace(`Context ${this.contextLongName} - execution next event`, next, finish);\n\n this.executionSubject.next(next);\n if (finish) {\n this.executionComplete();\n }\n }\n\n public executionComplete() {\n this.logger.trace(`Context ${this.contextLongName} - execution complete`);\n\n this.executionSubject.complete();\n this.executionIsRunningSubject.next(false);\n }\n\n public executionError(err: ICommonsError) {\n this.logger.trace(`Context ${this.contextLongName} - execution error`, err);\n this.executionSubject.error(err);\n this.executionIsRunningSubject.next(false);\n }\n\n public finish() {\n this.runSubscription?.unsubscribe();\n this.executionSubject.complete();\n this.executionIsRunningSubject.complete();\n }\n\n public isClosed() {\n return this.executionSubject.isStopped && this.executionIsRunningSubject.isStopped && (this.runSubscription?.closed ?? true);\n }\n}\n\nexport enum ActionDataProviderSource {\n Undefined,\n ViewContainer,\n Descriptor,\n ParameterOrInput\n}\n","import {DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged, take} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {ActionParameters, LoggerService} from '@mediusinc/mng-commons/core';\nimport {\n ActionActivationTriggerEnum,\n ActionDescriptorInst,\n ActionExecutionError,\n ActionTypeEnum,\n IActionEditorComponent,\n IActionInstance\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionContext} from './action-context.model';\nimport {ActionInstanceStateEnum} from './action-instance-state.model';\n\n/**\n * Action execution instance containing data about execution state of action\n */\nexport class ActionInstance<Item, Service = undefined> implements IActionInstance<Item, Service> {\n public readonly instanceId: string;\n public readonly instanceLongName: string;\n public readonly action: ActionDescriptorInst<Item>;\n public readonly createdDate: Date = new Date();\n private readonly logger = LoggerService.get().create('ActionInstance');\n\n // function execution\n public readonly isRunLoadingSubject = new BehaviorSubject(false);\n\n // parameters, contexts, states\n public triggerParameters?: ActionParameters<Item>;\n public activationParameters?: ActionParameters<Item>;\n private readonly contexts: Array<ActionContext<Item, Service>> = [];\n private readonly executionSubject = new Subject<Item | null | undefined>();\n private readonly executionIsRunningSubject = new BehaviorSubject(false);\n private readonly stateSubject = new BehaviorSubject<ActionInstanceStateEnum>(1);\n private readonly resultSubject = new ReplaySubject<Item | null>(1);\n private readonly errorSubject = new ReplaySubject<ActionExecutionError>(1);\n\n private contextExecutionSubscriptions: Array<Subscription> = [];\n\n // result or error\n private _result?: Item | null;\n private _error?: ActionExecutionError;\n\n // additional data from trigger/activation\n public activationDialogRef?: DynamicDialogRef;\n public activationEditorComponentRef?: IActionEditorComponent;\n\n // linked actions\n private _reactivationInstanceSubject = new BehaviorSubject<IActionInstance<Item, Service> | undefined>(undefined); // editor action with resubmit enabled\n public reactivationPreviousInstance?: IActionInstance<Item, Service>; // used when linking to previous instance in case of action reactivation (within same editor)\n public previousInstance?: IActionInstance<any, any>; // linking to previous action when using next action feature\n public nextActionInstance?: IActionInstance<any, any>; // as defined in action descriptor\n public errorActionInstance?: IActionInstance<Item, Service>; // error action must rely on same type, as defined in action descriptor\n\n constructor(action: ActionDescriptorInst<Item>, state = ActionInstanceStateEnum.TriggerStart) {\n this.instanceId = Math.random().toString(36).substring(2);\n this.instanceLongName = `${action.actionNameLong}_${this.instanceId}`;\n this.action = action;\n this.state = state;\n }\n\n public get isRunLoading$() {\n return this.isRunLoadingSubject.asObservable();\n }\n\n public get context() {\n return this.contexts.length === 0 ? undefined : this.contexts[this.contexts.length - 1];\n }\n\n public get execution$() {\n return this.executionSubject.asObservable();\n }\n\n public get executionIsRunning$() {\n return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public get state() {\n return this.stateSubject.value;\n }\n\n public set state(state: ActionInstanceStateEnum) {\n if (state > this.stateSubject.value || (this.stateSubject.value === ActionInstanceStateEnum.RunError && state === ActionInstanceStateEnum.RunStart)) {\n this.logger.trace(`Instance ${this.instanceLongName} - state #${state}: ${ActionInstanceStateEnum[state]}`);\n this.stateSubject.next(state);\n switch (state) {\n case ActionInstanceStateEnum.FinishSuccessFinal:\n case ActionInstanceStateEnum.FinishErrorFinal:\n case ActionInstanceStateEnum.FinishDismissedFinal:\n if (this.action.activationTrigger === ActionActivationTriggerEnum.OnClick) {\n this.finish();\n }\n break;\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n // partially finish reactivation because new instance event must still be emitted\n if (this.action.type === ActionTypeEnum.Editor) {\n this.finish(true);\n }\n break;\n case ActionInstanceStateEnum.FinishComponentDestroyFinal:\n this.finish();\n break;\n case ActionInstanceStateEnum.FinishRouteUntriggerEndFinal:\n case ActionInstanceStateEnum.FinishRouteUntriggerTimeoutFinal:\n if (this.action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n this.finish();\n }\n break;\n }\n }\n }\n\n public get state$() {\n return this.stateSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public get result() {\n return this._result;\n }\n\n public set result(result: Item | null | undefined) {\n if (typeof result === 'undefined') {\n return;\n }\n\n this.logger.trace(`Instance ${this.instanceLongName} - result`, result);\n\n this._result = result;\n this.resultSubject.next(result);\n }\n\n public get result$() {\n return this.resultSubject.asObservable();\n }\n\n public get error() {\n return this._error;\n }\n\n public set error(error: ActionExecutionError | undefined) {\n if (typeof error === 'undefined') {\n return;\n }\n\n this.logger.trace(`Instance ${this.instanceLongName} - error`, error);\n\n this._error = error;\n this.errorSubject.next(error);\n }\n\n public get error$() {\n return this.errorSubject.asObservable();\n }\n\n public set reactivationInstance(instance: IActionInstance<Item, Service> | undefined) {\n // this is allowed to only be executed once for subject and must be in correct status!\n if (this.state !== ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n return;\n }\n this._reactivationInstanceSubject.next(instance);\n this._reactivationInstanceSubject.complete();\n }\n\n public get reactivationInstance() {\n return this._reactivationInstanceSubject.value;\n }\n\n public get reactivationInstance$(): Observable<IActionInstance<Item, Service>> {\n return this._reactivationInstanceSubject.asObservable().pipe(\n filter(i => !!i), // ignore undefined events (usually initial)\n map(i => i!),\n take(1)\n );\n }\n\n public contextAt(idx: number) {\n return idx < this.contexts.length ? this.contexts[idx] : undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public newContext(context: ActionContext<Item, Service>, finishPrevious = true) {\n this.logger.trace(`Instance ${this.instanceLongName} - new context ${context.contextLongName}`);\n\n const currentContext = this.context;\n if (currentContext) {\n currentContext.executionComplete();\n }\n this.contextExecutionSubscriptions.forEach(s => s.unsubscribe());\n this.contextExecutionSubscriptions = [];\n this.contextExecutionSubscriptions.push(\n context.execution$.subscribe({\n next: next => this.executionSubject.next(next),\n error: error => this.executionSubject.error(error)\n })\n );\n this.contextExecutionSubscriptions.push(\n context.executionIsRunning$.subscribe({\n next: next => this.executionIsRunningSubject.next(next)\n })\n );\n this.contexts.push(context);\n }\n\n public forceFinish() {\n this.logger.warn(`Force finishing instance '${this.instanceLongName}'. Try completing instance with states instead.`);\n this.state = ActionInstanceStateEnum.FinishDismissedFinal;\n this.finish();\n }\n\n private finish(reactivate = false) {\n // complete all subjects\n this.contexts.forEach(c => c.finish());\n this.executionSubject.complete();\n this.executionIsRunningSubject.complete();\n this.stateSubject.complete();\n this.resultSubject.complete();\n this.errorSubject.complete();\n if (!reactivate) {\n // allow reactivation instance to be emitted separately\n this._reactivationInstanceSubject.complete();\n }\n }\n\n public isClosed(): boolean {\n return (\n this.executionSubject.isStopped &&\n this.executionIsRunningSubject.isStopped &&\n this.stateSubject.isStopped &&\n this.resultSubject.isStopped &&\n this.errorSubject.isStopped &&\n this._reactivationInstanceSubject.isStopped &&\n this.contextExecutionSubscriptions.every(s => s.closed) &&\n this.contexts.every(c => c.isClosed())\n );\n }\n}\n","import {ICommonsError} from '@mediusinc/mng-commons/core';\n\n/**\n * Service for transforming errors in action execution.\n * Can be used to transform errors to Commons Error interface for correct error message display.\n */\nexport abstract class ActionErrorMapperService {\n /**\n * Can be used to enrich data from error and make it more \"stable\". Most use cases cover extracting message or message code of an\n * error out of http response body/headers.\n *\n * @param error Original error (cause).\n * @param commonsError Commons error that wraps original error.\n */\n abstract toCommonsError(error?: any, commonsError?: ICommonsError): ICommonsError;\n}\n\nexport class DefaultActionErrorMapperService extends ActionErrorMapperService {\n toCommonsError(error?: any, commonsError?: ICommonsError): ICommonsError {\n if (!commonsError) {\n commonsError = {\n type: 'CommonsActionError',\n name: error?.name ?? 'UnknownError',\n message: error.message ?? 'Unknown error',\n cause: error\n };\n }\n\n return commonsError;\n }\n}\n","import {Location} from '@angular/common';\nimport {Injectable} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NavigationEnd, Router} from '@angular/router';\n\n@Injectable()\nexport class NavigationService {\n private history: Array<string> = [];\n\n constructor(\n private router: Router,\n private location: Location\n ) {\n this.router.events.pipe(takeUntilDestroyed()).subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.history.push(event.urlAfterRedirects);\n }\n });\n }\n\n public getCurrentLocationFromHistory(): string | null {\n if (this.history.length > 0) {\n return this.history[this.history.length - 1];\n } else {\n return null;\n }\n }\n\n public getCurrentLocationFromUrl() {\n return this.location.path(true);\n }\n\n public getPreviousLocationFromHistory(): string | null {\n if (this.history.length > 1) {\n return this.history[this.history.length - 2];\n } else {\n return null;\n }\n }\n\n public back(): void {\n this.history.pop();\n if (this.history.length > 0) {\n this.location.back();\n } else {\n this.router.navigateByUrl('/');\n }\n }\n}\n","import {InjectionToken, Type} from '@angular/core';\n\nexport const ACTION_EDITOR_COMPONENT_IT: InjectionToken<Type<any>> = new InjectionToken<Type<any>>('ACTION_EDITOR_COMPONENT');\n","import {Injectable, signal} from '@angular/core';\n\nimport {Observable, Subject} from 'rxjs';\n\nimport {IDataProvider} from '@mediusinc/mng-commons/core';\nimport {TableReloadEvent} from '@mediusinc/mng-commons/table/api';\nimport {ActionDescriptorInst, EditorResetEvent, IViewContainer, ViewContainerEditorCloseEvent} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionInstance} from '../models/execution/action-instance.model';\n\n/**\n * Should be used with providers defined within component.\n */\n@Injectable()\nexport class ViewContainer<Item, Service = undefined> implements IViewContainer<Item, Service, ActionInstance<Item, Service>> {\n public dataProvider = signal<IDataProvider<Item, Service> | undefined>(undefined);\n public routeTriggeredActionInstance = signal<ActionInstance<Item, Service> | undefined>(undefined);\n public actions = signal<Array<ActionDescriptorInst<Item>>>([]);\n\n private _tableReloadSubject: Subject<TableReloadEvent> = new Subject();\n private _editorResetSubject: Subject<EditorResetEvent<Item>> = new Subject();\n private _editorCloseSubject: Subject<ViewContainerEditorCloseEvent<Item>> = new Subject();\n\n public get tableReload$(): Observable<TableReloadEvent> {\n return this._tableReloadSubject.asObservable();\n }\n\n public reloadTable(event?: TableReloadEvent): void {\n this._tableReloadSubject.next(event ?? {});\n }\n\n public get editorReset$(): Observable<EditorResetEvent<Item>> {\n return this._editorResetSubject.asObservable();\n }\n\n public resetEditor(event?: EditorResetEvent<Item> | undefined): void {\n this._editorResetSubject.next(event ?? {});\n }\n\n public get editorClose$(): Observable<ViewContainerEditorCloseEvent<Item>> {\n return this._editorCloseSubject.asObservable();\n }\n\n public closeEditor(event?: ViewContainerEditorCloseEvent<Item>): void {\n this._editorCloseSubject.next(event ?? {});\n }\n}\n","import {HttpErrorResponse} from '@angular/common/http';\nimport {Injector, inject} from '@angular/core';\nimport {Router, UrlTree} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Confirmation, ConfirmationService, MessageService} from 'primeng/api';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {Observable, from, mergeMap, of, switchMap, take, timeout} from 'rxjs';\nimport {catchError, filter, first, map, startWith} from 'rxjs/operators';\n\nimport {\n ActionParameters,\n CommonsHttpError,\n CommonsInternalError,\n CommonsService,\n ICommonsError,\n IDataProvider,\n LoggerService,\n ParametrizePipe,\n StyleSizeEnum,\n escapeHtmlAny,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {\n ActionActivationTriggerEnum,\n ActionConfirmationDescriptor,\n ActionContextValidation,\n ActionDeleteDescriptorInst,\n ActionDescriptorInst,\n ActionEditorAddDescriptorInst,\n ActionEditorDescriptorInst,\n ActionEditorDetailsDescriptorInst,\n ActionEditorEditDescriptorInst,\n ActionRunFnType,\n ActionTypeEnum,\n CommonsActionError,\n CommonsActionErrorOptions,\n DataProviderExecutor,\n IActionEditorComponent,\n IActionInstance\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {COMMONS_TABLEVIEW_FEATURE_CONFIG_IT} from '../../tableview/services/tableview-feature-config.token';\nimport {getI18nForAction} from '../helpers/i18n';\nimport {actionNotificationError, actionNotificationSuccess} from '../helpers/notification';\nimport {ActionEditorDialogData} from '../models/action-editor-dialog-data.model';\nimport {ActionContext, ActionDataProviderSource} from '../models/execution/action-context.model';\nimport {ActionInstanceStateEnum} from '../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../models/execution/action-instance.model';\nimport {ActionErrorMapperService} from './action-error-mapper.service';\nimport {NavigationService} from './navigation.service';\nimport {ACTION_EDITOR_COMPONENT_IT} from './tokens/action-editor.token';\nimport {ViewContainer} from './view-container.service';\n\nexport abstract class ActionExecutorService {\n private static readonly className = 'ActionExecutorService';\n protected readonly injector = inject(Injector);\n protected readonly router = inject(Router);\n protected readonly dialogService = inject(DialogService);\n protected readonly translate = inject(TranslateService);\n protected readonly commons = inject(CommonsService);\n protected readonly dataProviderExecutor = inject(DataProviderExecutor);\n protected readonly navigationService = inject(NavigationService);\n protected readonly errorMapper = inject(ActionErrorMapperService);\n protected readonly config = inject(COMMONS_TABLEVIEW_FEATURE_CONFIG_IT, {optional: true});\n protected readonly defaultEditorDialogComponent = inject(ACTION_EDITOR_COMPONENT_IT);\n protected readonly messageService = inject(MessageService);\n protected readonly confirmationService = inject(ConfirmationService);\n protected readonly viewContainer = inject(ViewContainer, {optional: true});\n protected readonly parametrize = new ParametrizePipe();\n\n protected readonly instancesBufferMax = 100;\n protected logger = inject(LoggerService).create(ActionExecutorService.className);\n\n public abstract get instances(): ActionInstance<any, any>[];\n\n /**\n * Prepares action context for usage in validation.\n * @param action Action descriptor.\n * @param parameters Action parameters.\n * @param dataProvider Data provider.\n */\n public prepareActionContextValidation<Item, Service>(\n action: ActionDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>\n ): ActionContextValidation<Item, Service> {\n const ctxDataProvider = dataProvider ?? action.dataProvider ?? this.viewContainer?.dataProvider();\n return <ActionContextValidation<Item, Service>>{\n descriptor: action,\n parameters: parameters,\n serviceInstance: this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider) ?? undefined,\n dataProvider: ctxDataProvider\n };\n }\n\n /**\n * Runs action context by submitting execution results/errors to context, watching over instance results/errors, displaying notifications,\n * running next/error action and triggering dismiss of action. Confirmation is also processed here.\n *\n * @param ctx Action context to run.\n */\n public run<Item, Service = undefined>(ctx: ActionContext<Item, Service>) {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n\n // if (ctx.instance.action.type === ActionTypeEnum.Direct && ctx.instance.action.hasRunConfirmation) {\n if (isMainRunFn && ctx.instance.action.hasRunConfirmation) {\n // only direct action can be configured with run confirmation\n // if editor, then run confirmation is mapped to submit action and ignored as editor run\n const confirmationDescriptor = ctx.instance.action.runConfirmationDialogDescriptor as ActionConfirmationDescriptor<Item>;\n\n const item = ctx.parameters.item;\n let confirmParams: Confirmation = {\n icon: confirmationDescriptor.icon,\n acceptVisible: true,\n acceptIcon: confirmationDescriptor.acceptButton.icon ?? undefined,\n acceptButtonStyleClass: confirmationDescriptor.acceptButton.styleClass.build(),\n rejectVisible: true,\n rejectIcon: confirmationDescriptor.rejectButton?.icon ?? undefined,\n rejectButtonStyleClass: confirmationDescriptor.rejectButton?.styleClass.build(),\n closeOnEscape: confirmationDescriptor.closeOnEscape\n };\n\n if (confirmationDescriptor.title !== null) {\n confirmParams.header =\n getI18nForAction(this.translate, ctx.instance.action, 'confirm.title', confirmationDescriptor.title, item, 'general.confirmation') ?? undefined;\n }\n\n if (confirmationDescriptor.message !== null) {\n confirmParams.message =\n getI18nForAction(this.translate, ctx.instance.action, 'confirm.message', confirmationDescriptor.message, escapeHtmlAny(item), 'general.confirmation') ??\n undefined;\n }\n\n if (confirmationDescriptor.acceptButton.label !== null) {\n confirmParams.acceptLabel =\n getI18nForAction(this.translate, ctx.instance.action, 'confirm.accept', confirmationDescriptor.acceptButton.label, item, 'general.yes') ?? undefined;\n }\n\n if (confirmationDescriptor.acceptButton.icon !== null) {\n confirmParams.acceptIcon = confirmationDescriptor.acceptButton.icon;\n }\n\n if (confirmationDescriptor.rejectButton?.icon !== null) {\n confirmParams.rejectIcon = confirmationDescriptor.rejectButton?.icon;\n }\n\n if (confirmationDescriptor.rejectButton?.label !== null) {\n confirmParams.rejectLabel =\n getI18nForAction(this.translate, ctx.instance.action, 'confirm.reject', confirmationDescriptor.rejectButton?.label, item, 'general.no') ?? undefined;\n }\n\n if (confirmationDescriptor.rejectButton == null || (confirmationDescriptor.rejectButton.label === null && confirmationDescriptor.rejectButton.icon === null)) {\n confirmParams.rejectVisible = false;\n }\n\n confirmParams.accept = () => {\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationEndAccept;\n this.runWithoutConfirmation(ctx);\n };\n\n confirmParams.reject = () => {\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationEndReject;\n if (ctx.instance.action.type !== ActionTypeEnum.Editor) {\n // if not editor, the it can be closed\n this.finishAction(ctx.instance);\n }\n };\n\n if (confirmationDescriptor.runConfirmationConfigMapFn) {\n confirmParams = confirmationDescriptor.runConfirmationConfigMapFn(ctx, confirmParams);\n }\n\n ctx.confirmation = confirmParams;\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationStart;\n\n this.confirmationService.confirm(confirmParams);\n } else {\n this.runWithoutConfirmation(ctx);\n }\n }\n\n /**\n * Runs action context by submitting execution results/errors to context, watching over instance results/errors, displaying notifications,\n * running next/error action and triggering dismiss of action. Confirmation\n *\n * @param ctx Action context to run.\n *\n * @returns Action context for submit (=run) function.\n */\n private runWithoutConfirmation<Item, Service = undefined>(ctx: ActionContext<Item, Service>): Observable<Item | null | undefined> {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n const isErrorCriticalRunFn = ctx.functionName === 'run';\n let actionEditor: ActionEditorDescriptorInst<Item>;\n\n let fnObs: ActionRunFnType<Item, Service>;\n\n switch (ctx.functionName) {\n case 'submit':\n actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item>;\n if (typeof actionEditor.submitFunction !== 'function') {\n if (actionEditor instanceof ActionEditorAddDescriptorInst) {\n fnObs = this.dataProviderExecutor.runCreateOrFail.bind(this.dataProviderExecutor);\n } else if (actionEditor instanceof ActionEditorEditDescriptorInst) {\n fnObs = this.dataProviderExecutor.runUpdateOrFail.bind(this.dataProviderExecutor);\n } else if (ctx.dataProviderSource > ActionDataProviderSource.ViewContainer) {\n // if data provider is given directly on descriptor or as input, use it\n const defaultSubmit = of(ctx.parameters?.item ?? undefined);\n fnObs = ctx => {\n if (ctx.parameters.itemId) {\n return this.dataProviderExecutor.runUpdate(ctx, defaultSubmit);\n } else {\n return this.dataProviderExecutor.runCreate(ctx, defaultSubmit);\n }\n };\n } else {\n fnObs = ctx => ctx.parameters?.item ?? undefined;\n }\n } else {\n fnObs = actionEditor.submitFunction;\n }\n break;\n case 'fetch':\n actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item>;\n if (typeof actionEditor.fetchFunction !== 'function') {\n if (actionEditor instanceof ActionEditorEditDescriptorInst || actionEditor instanceof ActionEditorDetailsDescriptorInst) {\n fnObs = this.dataProviderExecutor.runFetchOrFail.bind(this.dataProviderExecutor);\n } else if (ctx.dataProviderSource > ActionDataProviderSource.ViewContainer) {\n const defaultFetch = of(ctx.parameters?.item ? ctx.parameters.item : undefined);\n fnObs = ctx => {\n if (ctx.parameters.itemId || typeof ctx.parameters.item === 'object') {\n return this.dataProviderExecutor.runFetch(ctx, defaultFetch);\n }\n return defaultFetch;\n };\n } else {\n fnObs = ctx => ctx.parameters?.item ?? undefined;\n }\n } else {\n fnObs = actionEditor.fetchFunction;\n }\n break;\n case 'run':\n default:\n if (!ctx.instance.action.hasRunFunction && ctx.instance.action instanceof ActionDeleteDescriptorInst) {\n fnObs = this.dataProviderExecutor.runDeleteOrFail.bind(this.dataProviderExecutor);\n } else {\n fnObs = ctx.instance.action.runFunction;\n }\n break;\n }\n\n // switch (ctx.functionName) {\n // case 'submit':\n // actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item>;\n // if (typeof actionEditor.submitFunction !== 'function') {\n // if (actionEditor instanceof ActionEditorAddDescriptorInst) {\n // fnObs = this.dataProviderExecutor.runCreateOrFail.bind(this.dataProviderExecutor);\n // } else if (actionEditor instanceof ActionEditorEditDescriptorInst) {\n // fnObs = this.dataProviderExecutor.runUpdateOrFail.bind(this.dataProviderExecutor);\n // } else {\n // fnObs = ctx => ctx.parameters?.item ?? undefined;\n // }\n // } else {\n // fnObs = actionEditor.submitFunction;\n // }\n // break;\n // case 'fetch':\n // actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item>;\n // if (typeof actionEditor.fetchFunction !== 'function') {\n // if (actionEditor instanceof ActionEditorEditDescriptorInst || actionEditor instanceof ActionEditorDetailsDescriptorInst) {\n // fnObs = this.dataProviderExecutor.runFetchOrFail.bind(this.dataProviderExecutor);\n // } else {\n // fnObs = ctx => ctx.parameters?.item ?? undefined;\n // }\n // } else {\n // fnObs = actionEditor.fetchFunction;\n // }\n // break;\n // case 'run':\n // default:\n // if (!ctx.instance.action.hasRunFunction && ctx.instance.action instanceof ActionDeleteDescriptorInst) {\n // fnObs = this.dataProviderExecutor.runDeleteOrFail.bind(this.dataProviderExecutor);\n // } else {\n // fnObs = ctx.instance.action.runFunction;\n // }\n // break;\n // }\n\n const retObs = of(void 0).pipe(\n take(1),\n switchMap(() => {\n if (isMainRunFn) {\n // if main run function, also set loading to true\n ctx.instance.state = ActionInstanceStateEnum.RunStart;\n ctx.instance.isRunLoadingSubject.next(true);\n } else {\n ctx.instance.state = ActionInstanceStateEnum.FetchStart;\n }\n // start context execution to mark execution loading\n ctx.executionStart();\n\n return toObservable(fnObs(ctx));\n }),\n mergeMap(runResult => {\n // set next state depending on run\n ctx.instance.state = isMainRunFn ? ActionInstanceStateEnum.RunEnd : ActionInstanceStateEnum.FetchEnd;\n // set execution result\n ctx.executionNext(runResult, isMainRunFn);\n\n if (isMainRunFn) {\n // set instance final result on main run execution\n ctx.instance.result = runResult;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle notification\n if (ctx.instance.action.hasRunNotificationSuccess) {\n ctx.notification = actionNotificationSuccess(\n this.translate,\n ctx.instance.action,\n ctx.functionName,\n this.messageService,\n ctx.instance.action.runNotificationSuccessTitle,\n ctx.instance.action.runNotificationSuccessMessage,\n {\n ...ctx.parameters?.item,\n ...runResult\n }\n );\n }\n\n // handle possible after run action\n if (ctx.instance.action.afterRunAction) {\n // mark new state for next action start\n const afterRunAction =\n typeof ctx.instance.action.afterRunAction === 'function' ? ctx.instance.action.afterRunAction(ctx) : ctx.instance.action.afterRunAction;\n const nextActionInstance = this.activateAction(\n afterRunAction,\n <ActionParameters<unknown>>{\n itemId: ctx.parameters.itemId,\n item: runResult,\n actionData: ctx.parameters.actionData,\n route: ctx.parameters.route,\n sourceComponent: ctx.parameters.sourceComponent\n },\n undefined,\n ctx.instance as ActionInstance<unknown, unknown>,\n true\n );\n ctx.instance.nextActionInstance = nextActionInstance;\n\n ctx.instance.state = ActionInstanceStateEnum.NextActionStart;\n\n // finish current action when next action finishes\n return nextActionInstance.state$.pipe(\n startWith(nextActionInstance.state), // provide first state cause it might be finished already\n filter(state => state >= ActionInstanceStateEnum.FinishSuccessFinal),\n take(1),\n map(() => {\n ctx.instance.state = ActionInstanceStateEnum.NextActionEnd;\n return runResult;\n })\n );\n }\n } else {\n if (actionEditor.hasFetchNotificationSuccess) {\n actionNotificationSuccess(\n this.translate,\n actionEditor,\n 'fetch',\n this.messageService,\n actionEditor.fetchNotificationSuccessTitle,\n actionEditor.fetchNotificationSuccessMessage,\n ctx.parameters.item\n );\n }\n }\n\n return of(runResult);\n }),\n map(runResult => {\n if (isMainRunFn) {\n // deactivate action\n this.finishAction(ctx.instance);\n }\n return runResult;\n }),\n catchError(err => {\n // transform error to action error\n const actionError = this.toActionError(err, ctx);\n\n // set instance state to error\n ctx.instance.state = isMainRunFn ? ActionInstanceStateEnum.RunError : ActionInstanceStateEnum.FetchError;\n // mark execution error on context\n ctx.executionError(actionError);\n\n if (ctx.instance.action.hasRunNotificationError) {\n const message = actionNotificationError(this.translate, ctx.instance.action, actionError, 'fetch', this.messageService, ctx.parameters.item);\n actionError.notification = message;\n actionError.notificationEmitSource = ActionExecutorService.className;\n }\n\n let errorObs = of(void 0);\n if (isMainRunFn) {\n ctx.instance.error = err;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle possible error action if run\n if (isMainRunFn && ctx.instance.action.onRunErrorAction) {\n const onRunErrorAction =\n typeof ctx.instance.action.onRunErrorAction === 'function' ? ctx.instance.action.onRunErrorAction(ctx) : ctx.instance.action.onRunErrorAction;\n // cannot start with trigger, because routing might be problematic (lousing previous results etc.)\n const errorActionInstance = this.activateAction<Item, Service>(\n onRunErrorAction,\n <ActionParameters<Item>>{\n itemId: ctx.parameters.itemId,\n item: ctx.parameters.item,\n actionData: ctx.parameters.actionData,\n route: ctx.parameters.route,\n sourceComponent: ctx.parameters.sourceComponent\n },\n undefined,\n undefined,\n true\n );\n ctx.instance.errorActionInstance = errorActionInstance;\n\n ctx.instance.state = ActionInstanceStateEnum.ErrorActionStart;\n\n errorObs = errorActionInstance.state$.pipe(\n startWith(errorActionInstance.state), // provide first state cause it might be finished already\n filter(state => state >= ActionInstanceStateEnum.FinishSuccessFinal),\n take(1),\n map(() => {\n ctx.instance.state = ActionInstanceStateEnum.ErrorActionEnd;\n return void 0;\n })\n );\n }\n }\n\n // list and map only to mark instance state as finished error state\n return errorObs.pipe(\n map(() => {\n // deactivate action only if critical (fetch on editor or run on button actions)\n if (isErrorCriticalRunFn) {\n this.finishAction(ctx.instance);\n }\n // rethrow error to propagate further\n throw actionError;\n })\n );\n })\n );\n\n ctx.runSubscription = retObs.subscribe({\n next: res => {\n this.logger.debug(`ActionContext ${ctx.contextLongName} execution next event`, res);\n },\n error: err => {\n if ((err as ICommonsError | undefined)?.type !== 'CommonsActionError') {\n this.logger.error(`Non action error occurred`, err);\n } else {\n this.logger.debug(`Action context ${ctx.contextLongName} execution error event`, err);\n }\n }\n });\n\n return retObs;\n }\n\n /**\n * Prepares editor action's fetch function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for fetch function.\n */\n public prepareContextForEditorFetch<Item, Service>(\n action: ActionEditorDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n return this.prepareContextForEditor(instance, parameters, 'fetch', dataProvider, previousActionInstance);\n }\n\n /**\n * Runs editor action's submit (=main run) function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for submit (=run) function.\n */\n public prepareContextForEditorSubmit<Item, Service>(\n action: ActionEditorDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n return this.prepareContextForEditor(instance, parameters, 'submit', dataProvider, previousActionInstance);\n }\n\n /**\n * Prepares action exec context for action of type editor.\n *\n * @param instance Action instance.\n * @param parameters Action parameters for context.\n * @param functionName Action function name parameter.\n * @param dataProvider Optional data provider. If not provided data provider from either the action editor or view container will be used.\n * @param previousActionInstance Optional previous action instance to link in next instance.\n */\n private prepareContextForEditor<Item, Service>(\n instance: ActionInstance<Item, Service>,\n parameters: ActionParameters<Item>,\n functionName: 'submit' | 'fetch',\n dataProvider?: IDataProvider,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, Service> {\n if (instance.action.type !== ActionTypeEnum.Editor) {\n throw new CommonsInternalError(`Cannot create editor context for action ${instance.action.actionNameLong} of type ${instance.action.type}.`);\n }\n const editorAction = instance.action as ActionEditorDescriptorInst<Item>;\n let ctxDataProvider = dataProvider;\n let dataProviderSource = ActionDataProviderSource.ParameterOrInput;\n if (!ctxDataProvider && editorAction.dataProvider) {\n ctxDataProvider = editorAction.dataProvider;\n dataProviderSource = ActionDataProviderSource.Descriptor;\n }\n if (!ctxDataProvider) {\n const viewContainerDataProvider = this.viewContainer?.dataProvider();\n if (viewContainerDataProvider) {\n ctxDataProvider = viewContainerDataProvider;\n dataProviderSource = ActionDataProviderSource.ViewContainer;\n } else {\n dataProviderSource = ActionDataProviderSource.Undefined;\n }\n }\n const ctx = new ActionContext<Item, Service>(\n this.injector,\n instance,\n parameters,\n functionName,\n this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider) ?? undefined,\n ctxDataProvider,\n this.viewContainer ?? undefined\n );\n ctx.dataProviderSource = dataProviderSource;\n ctx.previousActionInstance = previousActionInstance;\n instance.newContext(ctx);\n return ctx;\n }\n\n /**\n * Runs action's main run function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context run.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for run function.\n */\n private prepareContext<Item, Service = undefined>(\n action: ActionDescriptorInst<Item, Service>,\n parameters: ActionParameters<Item>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: ActionInstance<any, any>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance<Item, Service>(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n\n let ctxDataProvider = instance.action.dataProvider;\n let dataProviderSource = ActionDataProviderSource.Descriptor;\n if (!ctxDataProvider) {\n ctxDataProvider = this.viewContainer?.dataProvider();\n dataProviderSource = ActionDataProviderSource.ViewContainer;\n }\n\n let service: Service | undefined = undefined;\n if (ctxDataProvider != null) {\n const dataProviderService = this.dataProviderExecutor.getDataProviderService<Item, Service>(this.injector, ctxDataProvider);\n if (!dataProviderService) {\n throw new CommonsInternalError('');\n }\n service = dataProviderService;\n } else {\n dataProviderSource = ActionDataProviderSource.Undefined;\n }\n\n const ctx = new ActionContext<Item, Service>(this.injector, instance, parameters, 'run', service as Service, ctxDataProvider, this.viewContainer ?? undefined);\n ctx.dataProviderSource = dataProviderSource;\n ctx.previousActionInstance = previousActionInstance;\n instance.newContext(ctx);\n\n return ctx;\n }\n\n /**\n * Activates action (in case of dialog, dialog will be opened).\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for activation of action instance.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n * @param runContext Marks if context should be run.\n *\n * @returns Action instance - if non provided in parameters, the newly created will be returned.\n */\n public activateAction<Item, Service = undefined>(\n action: ActionDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: ActionInstance<any, any>,\n runContext = false\n ): ActionInstance<Item, Service> {\n instance = this.getOrCreateInstance<Item, Service>(instance, action, parameters, ActionInstanceStateEnum.ActivationStart);\n instance.state = ActionInstanceStateEnum.ActivationStart;\n instance.activationParameters = parameters;\n // start activation instance\n if (action.type === ActionTypeEnum.Editor) {\n let dialogComponent = this.defaultEditorDialogComponent;\n const dialogClassNames = ['mng-dialog'];\n const dialogConfig: DynamicDialogConfig = {\n duplicate: true\n };\n\n if (action instanceof ActionEditorDescriptorInst) {\n dialogClassNames.push(action.dialogClassName ?? 'mng-action-editor-dialog');\n switch (action.dialogSize) {\n case StyleSizeEnum.ExtraSmall:\n dialogClassNames.push('mng-dialog-xs');\n break;\n case StyleSizeEnum.Small:\n dialogClassNames.push('mng-dialog-sm');\n break;\n case StyleSizeEnum.Large:\n dialogClassNames.push('mng-dialog-lg');\n break;\n case StyleSizeEnum.ExtraLarge:\n dialogClassNames.push('mng-dialog-xl');\n break;\n case StyleSizeEnum.Normal:\n default:\n break;\n }\n if (action.editorComponent) {\n dialogComponent = action.editorComponent;\n }\n dialogConfig.data = <ActionEditorDialogData<Item, Service>>{\n action: {\n descriptor: action,\n instance: instance,\n previousInstance: previousActionInstance\n },\n injector: this.injector\n };\n }\n\n dialogConfig.styleClass = dialogClassNames.join(' ');\n\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n dialogConfig.closable = false;\n dialogConfig.closeOnEscape = false;\n }\n\n const dialogRef = this.dialogService.open(dialogComponent, dialogConfig);\n dialogRef.onClose.pipe(take(1)).subscribe(() => {\n // to close dialog on 'X' click or esc button\n this.finishAction(instance!);\n });\n instance.activationDialogRef = dialogRef;\n return instance;\n } else {\n // directly execute action\n instance.state = ActionInstanceStateEnum.ActivationEnd;\n const context = this.prepareContext<Item, Service>(action, parameters, instance, previousActionInstance);\n\n if (runContext) {\n this.run(context);\n }\n\n return context.instance;\n }\n }\n\n /**\n * To be called when action editor is initialized to correctly activate action.\n * @param action Action descriptor.\n * @param instance Action instance (if available).\n * @param componentRef Optional action editor component reference.\n */\n public onActionEditorInit<T, S>(action: ActionDescriptorInst<T>, instance?: ActionInstance<T, S>, componentRef?: IActionEditorComponent): ActionInstance<T, S> {\n if (action.type !== ActionTypeEnum.Editor) {\n throw new Error(`Action ${action.actionName} is not of type editor, cannot be activated through \"onActionEditorOnInit\"`);\n }\n if (instance && action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n const triggeredInstance = this.viewContainer?.routeTriggeredActionInstance();\n if (triggeredInstance && triggeredInstance.instanceLongName !== instance.instanceLongName) {\n this.logger.debug(\n `WARNING: Found triggered parameters view container instance ${triggeredInstance.instanceLongName} and it does not match instance ${instance.instanceLongName} retrieved on editor init.`\n );\n }\n }\n instance = this.getOrCreateInstance(instance, action, undefined, ActionInstanceStateEnum.ActivationStart);\n instance.state = ActionInstanceStateEnum.ActivationEnd;\n instance.activationEditorComponentRef = componentRef;\n\n return instance;\n }\n\n /**\n * To be called when action editor cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnClick) {\n return;\n }\n this.finishAction(instance, true);\n }\n\n /**\n * To be called when action editor cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionEditorDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.type !== ActionTypeEnum.Editor) {\n throw new Error(`Action instance ${instance.instanceLongName} is not of type editor, cannot be deactivated through \"onActionEditorOnDestroy\"`);\n }\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n this.finishAction(instance, true);\n }\n }\n\n /**\n * To be called when action route cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionRouteDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n throw new Error(`Action instance ${instance.instanceLongName} is not triggered on route, cannot be deactivated through \"onActionRouteOnDestroy\"`);\n }\n this.finishAction(instance, true);\n }\n\n /**\n * Deactivates action by choosing final state, closing dialog and completing all subjects in instance and contexts.\n *\n * @param instance Action instance.\n * @param onDestroy Marks if finish is called on component destroy lifecycle hook.\n */\n public finishAction<Item, Service = undefined>(instance: ActionInstance<Item, Service>, onDestroy = false) {\n instance = this.getOrCreateInstance(instance);\n if (instance.state >= ActionInstanceStateEnum.FinishSuccessFinal) {\n this.logger.trace(`ActionInstance ${instance.instanceLongName} already finished`);\n return;\n }\n\n let finalState: ActionInstanceStateEnum;\n if (typeof instance.result !== 'undefined') {\n finalState = ActionInstanceStateEnum.FinishSuccessFinal;\n } else if (typeof instance.error !== 'undefined') {\n finalState = ActionInstanceStateEnum.FinishErrorFinal;\n } else if (onDestroy) {\n finalState = ActionInstanceStateEnum.FinishComponentDestroyFinal;\n } else {\n finalState = ActionInstanceStateEnum.FinishDismissedFinal;\n }\n\n if (instance.action.type === ActionTypeEnum.Editor) {\n const hasDialog = typeof instance.activationDialogRef !== 'undefined';\n const resubmitEnabled = (instance.action as ActionEditorDescriptorInst<Item>).resubmitEnabled;\n\n if (finalState === ActionInstanceStateEnum.FinishSuccessFinal) {\n if ((hasDialog && resubmitEnabled === true) || (!hasDialog && resubmitEnabled !== false)) {\n finalState = ActionInstanceStateEnum.FinishSuccessReactivateFinal;\n }\n }\n\n if (hasDialog && finalState !== ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n // if state is finish and not called from dialog listener, close the dialog first which will retrigger this function, then finish it\n instance.activationDialogRef!.close(instance.result);\n }\n }\n\n // unset instance in view container\n if (this.viewContainer) {\n this.viewContainer.routeTriggeredActionInstance.set(undefined);\n }\n\n // set final state on instance\n instance.state = finalState;\n\n if (finalState === ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n // prepare reactivation instance\n const newInstanceStatus = (instance.action as ActionEditorDescriptorInst<Item>).resubmitRefetch\n ? ActionInstanceStateEnum.ActivationEnd\n : ActionInstanceStateEnum.FetchEnd;\n // must skip initialization from view container, because it would only get old instance.\n // we need new instance before we can set new one on the view container.\n const newInstance = this.getOrCreateInstance<Item, Service>(undefined, instance.action, undefined, newInstanceStatus, true);\n newInstance.reactivationPreviousInstance = instance;\n // copy some additional settings\n newInstance.activationDialogRef = instance.activationDialogRef;\n newInstance.triggerParameters = instance.triggerParameters;\n newInstance.activationParameters = instance.activationParameters;\n\n if (this.viewContainer) {\n this.viewContainer.routeTriggeredActionInstance.set(newInstance);\n }\n\n instance.reactivationInstance = newInstance;\n }\n\n // finish related actions\n if (instance.nextActionInstance && instance.nextActionInstance instanceof ActionInstance) {\n this.logger.debug(`Finishing instance ${instance.instanceLongName} related next action instance: ${instance.nextActionInstance.instanceLongName}`);\n this.finishAction(instance.nextActionInstance, onDestroy);\n }\n if (instance.errorActionInstance && instance.errorActionInstance instanceof ActionInstance) {\n this.logger.debug(`Finishing instance ${instance.instanceLongName} related error action instance: ${instance.errorActionInstance.instanceLongName}`);\n this.finishAction(instance.errorActionInstance, onDestroy);\n }\n }\n\n /**\n * Triggers action with parameters.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for action execution to construct new route.\n * @param runContext Marks if context should be run.\n *\n * @returns Action instance - if non provided in parameters, the newly created will be returned.\n */\n public triggerAction<Item, Service = undefined>(action: ActionDescriptorInst<Item>, parameters: ActionParameters<Item>, runContext = false): ActionInstance<Item, Service> {\n const instance = this.getOrCreateInstance<Item, Service>(undefined, action, parameters);\n instance.triggerParameters = parameters;\n instance.state = ActionInstanceStateEnum.TriggerStart;\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n const baseUrl = this.router.url.split('?')[0];\n const parsedUrl: UrlTree = this.router.parseUrl(this.router.url);\n let actionUrl = action.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n\n const actionUrlSegments = this.parametrize.transform(actionUrl, parameters.itemId, parameters.item, parameters.actionData).split('/');\n\n // set instance in view container\n if (this.viewContainer) {\n this.viewContainer.routeTriggeredActionInstance.set(instance);\n }\n\n from(this.router.navigate([baseUrl, ...actionUrlSegments], {relativeTo: parameters.route, queryParams: parsedUrl.queryParams}))\n .pipe(take(1))\n .subscribe(() => (instance.state = ActionInstanceStateEnum.TriggerEnd));\n\n return instance;\n } else {\n instance.state = ActionInstanceStateEnum.TriggerEnd;\n this.activateAction(action, parameters, instance);\n\n if (runContext) {\n const context = instance.context;\n if (context) {\n this.run(context);\n }\n }\n\n return instance;\n }\n }\n\n /**\n * Deactivates on route triggered action by trying to reroute back to location where action was triggered.\n * @param instance Action instance.\n */\n public finishActionRouteUntrigger<Item, Service = undefined>(instance: ActionInstance<Item, Service>) {\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n return;\n }\n\n instance = this.getOrCreateInstance<Item, Service>(instance);\n\n instance.state = ActionInstanceStateEnum.FinishRouteUntriggerStart;\n\n let url = this.navigationService.getCurrentLocationFromHistory() ?? this.navigationService.getCurrentLocationFromUrl();\n if (!url) {\n this.navigationService.back();\n } else {\n if (url.startsWith('/')) {\n url = url.substring(1);\n }\n\n const splitUrlQueryParam = url.split('?');\n const urlPathSegments = splitUrlQueryParam[0].split('#')[0].split('/');\n const queryParam = splitUrlQueryParam[1]?.split('#')[0];\n\n let actionUrl = instance.action?.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n const actionUrlSegments = actionUrl.split('/');\n let redirectUrl = '/' + urlPathSegments.slice(0, urlPathSegments.length - actionUrlSegments.length).join('/');\n if (typeof queryParam !== 'undefined') {\n redirectUrl = `${redirectUrl}?${queryParam}`;\n }\n\n // No URL replaces, probably ok, to allow going back\n from(this.router.navigateByUrl(redirectUrl))\n .pipe(first(), timeout(1000))\n .subscribe({\n next: () => (instance.state = ActionInstanceStateEnum.FinishRouteUntriggerEndFinal),\n error: () => (instance.state = ActionInstanceStateEnum.FinishRouteUntriggerTimeoutFinal)\n });\n }\n }\n\n /**\n * Transform error of any type to error by using error mapper that could be provided by final project.\n * @param error error of any type.\n * @param context Action context.\n *\n * @returns mapped ICommonsError.\n */\n public toActionError(error?: any, context?: ActionContext<any, any>): ICommonsError {\n let commonsError: ICommonsError;\n if (context) {\n const options: CommonsActionErrorOptions = {\n cause: error,\n location: this.router.url\n };\n if (error instanceof HttpErrorResponse) {\n options.httpError = error;\n }\n\n commonsError = new CommonsActionError(error?.message ?? 'Unknown error', context.contextLongName);\n } else if (error instanceof HttpErrorResponse) {\n // should not really happen (should always be wrapped in MngActionError), just in case\n commonsError = new CommonsHttpError(`Http Error occurred in action`, error, {\n location: this.router.url\n });\n } else {\n // not from action, so unknown source of error\n commonsError = new CommonsInternalError(error?.message ?? 'Unknown error', {\n name: error?.name ?? 'UnknownError',\n location: this.router.url,\n cause: error\n });\n }\n\n // just trace it, allow user to set if this is error or not\n this.logger.trace(commonsError);\n\n return this.errorMapper.toCommonsError(error, commonsError);\n }\n\n /**\n * Creates or gets existing action instance.\n * @param instance Action instance.\n * @param action Action descriptor.\n * @param parameters Action parameters.\n * @param instanceInitialStatus Action instance initial status.\n * @param skipInitializationFromViewContainer If initialization of instance from view container should be skipped.\n * @private\n */\n protected getOrCreateInstance<Item, Service = undefined>(\n instance: ActionInstance<Item, Service> | undefined,\n action?: ActionDescriptorInst<Item, Service>,\n parameters?: ActionParameters<Item>,\n instanceInitialStatus?: ActionInstanceStateEnum,\n skipInitializationFromViewContainer = false\n ): ActionInstance<Item, Service> {\n if (!skipInitializationFromViewContainer && !instance && action?.activationTrigger === ActionActivationTriggerEnum.OnRoute && parameters) {\n instance = this.viewContainer?.routeTriggeredActionInstance();\n }\n if (!instance) {\n if (!action) {\n throw new CommonsInternalError('Action descriptor is not provided, instance cannot be created.', {name: 'ActionExecutorServiceError'});\n }\n // create new instance if non provided\n instance = new ActionInstance<Item, Service>(action, instanceInitialStatus);\n }\n\n if (this.config?.actions?.debugInstances && !this.instances.some(i => i.instanceLongName === instance!.instanceLongName)) {\n if (this.instances.length >= this.instancesBufferMax) {\n const lastInstance = this.instances.shift();\n\n if (lastInstance!.state < ActionInstanceStateEnum.FinishSuccessFinal) {\n this.logger.debug(`ERROR: Not all instances are finished! Finishing instance ${instance.instanceLongName} with dismissal.`);\n lastInstance!.forceFinish();\n }\n }\n\n this.instances.push(instance);\n }\n\n return instance;\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {ActionInstance} from '../models/execution/action-instance.model';\nimport {ActionExecutorService} from './action-executor.service';\n\n@Injectable()\nexport class RootActionExecutorService extends ActionExecutorService {\n private readonly _instances: ActionInstance<any, any>[] = [];\n\n public get instances(): ActionInstance<any, any>[] {\n return this._instances;\n }\n}\n","import {Injectable, inject} from '@angular/core';\n\nimport {ActionInstance} from '../models/execution/action-instance.model';\nimport {ActionExecutorService} from './action-executor.service';\nimport {RootActionExecutorService} from './root-action-executor.service';\n\n@Injectable()\nexport class ComponentActionExecutorService extends ActionExecutorService {\n private readonly rootActionExecutorService = inject(RootActionExecutorService);\n\n public get instances(): ActionInstance<any, any>[] {\n return this.rootActionExecutorService.instances;\n }\n}\n","import {Provider} from '@angular/core';\n\nimport {ActionExecutorService} from '../action-executor.service';\nimport {ComponentActionExecutorService} from '../component-action-executor.service';\n\nexport function provideActionExecutor(): Provider {\n return {\n provide: ActionExecutorService,\n useClass: ComponentActionExecutorService\n };\n}\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnDestroy, Optional, OutputRefSubscription, booleanAttribute, computed, effect, input, output, signal, viewChild} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {MenuItem} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {Menu, MenuModule} from 'primeng/menu';\nimport {RippleModule} from 'primeng/ripple';\nimport {SplitButtonModule} from 'primeng/splitbutton';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {Observable, Subscription, combineLatest} from 'rxjs';\n\nimport {\n APermissions,\n ActionData,\n ActionParameters,\n ComponentDirective,\n DataListParams,\n IDataProvider,\n IdType,\n ParametrizePipe,\n PermissionService,\n Permissions,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {ActionContextValidation, ActionDescriptorInst, ActionLinkDescriptorInst, ActionTypeEnum, IActionComponent, TableviewRouteData} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getI18nForActionAsync} from '../../helpers/i18n';\nimport {ActionInstanceStateEnum} from '../../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../services/action-executor.service';\nimport {provideActionExecutor} from '../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-action',\n templateUrl: './action.component.html',\n styleUrls: ['./action.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, ButtonModule, RippleModule, TooltipModule, ParametrizePipe, ComponentDirective, SplitButtonModule, MenuModule],\n providers: [provideActionExecutor()],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {'[class]': 'hostClass()', '[class.m-0]': 'isHostHidden()'}\n})\nexport class ActionComponent<Item = any, Service = undefined> implements OnDestroy {\n // metadata and editor mode input\n public action = input.required<ActionDescriptorInst<Item, Service>>();\n public item = input<Item>();\n public itemId = input<IdType>();\n public actionData = input<ActionData>();\n public dataListParams = input<DataListParams>();\n public dataProvider = input<IDataProvider<Item, Service>>();\n public hostComponent = input<any>();\n public routeInit = input<ActivatedRoute | undefined>(undefined, {alias: 'route'});\n public inputDisabled = input<boolean, unknown>(false, {alias: 'disabled', transform: booleanAttribute});\n public inputLoading = input<boolean, unknown>(false, {alias: 'loading', transform: booleanAttribute});\n public selectedItems = input<Array<Item>>([]);\n\n public finish = output<ActionInstance<Item, Service>>();\n\n public subactionsMenu = viewChild(Menu);\n\n public hostClass = computed(() => this.action().className ?? 'mng-action-button');\n public isHostHidden = computed(() => !this.isVisible() || !this.isPermitted());\n\n public loading = signal(false);\n\n private isVisibleSubscription?: Subscription;\n public isVisible = signal(true);\n private isPermittedSubscription?: Subscription;\n public isPermitted = signal(true);\n private isEnabledSubscription?: Subscription;\n public isEnabled = signal(true);\n private labelSubscription?: Subscription;\n public label = signal<string>('');\n private tooltipSubscription?: Subscription;\n public tooltip = signal<string>('');\n\n public actionLink = computed<ActionLinkDescriptorInst<Item> | undefined>(() => {\n const action = this.action();\n return action instanceof ActionLinkDescriptorInst ? action : undefined;\n });\n\n public hasNoTitle = computed(() => this.action().button.label === null);\n\n private resultSubscription?: Subscription;\n private errorSubscription?: Subscription;\n private stateSubscription?: Subscription;\n private cmpInstSubscription?: OutputRefSubscription;\n\n public route = computed<ActivatedRoute>(() => this.routeInit() ?? this.routeService);\n public routeData = toSignal(this.route().data);\n private routePermissions = computed<APermissions | undefined>(() => {\n const routeData = this.routeData();\n const action = this.action();\n if (action.tableviewCategory && routeData && routeData['tableviewPermissions']) {\n const tableviewPermissions = routeData['tableviewPermissions'];\n if (tableviewPermissions[action.tableviewCategory]) {\n return tableviewPermissions[action.tableviewCategory];\n }\n }\n return undefined;\n });\n\n public buttonClass = computed<string>(() => this.action().button.styleClass.build(this.hasNoTitle()));\n public subactions = signal<MenuItem[]>([]);\n private subactionSubscriptions: Subscription[] = [];\n\n private instance?: ActionInstance<Item, Service>;\n\n constructor(\n private routeService: ActivatedRoute,\n private translate: TranslateService,\n private authorization: PermissionService,\n private actionExecutor: ActionExecutorService,\n @Optional() private viewContainer: ViewContainer<Item, Service> | null\n ) {\n effect(() => this.processSubscriptions(), {allowSignalWrites: true});\n }\n\n ngOnDestroy(): void {\n this.actionExecutor.onActionDestroy(this.instance);\n this.isVisibleSubscription?.unsubscribe();\n this.isPermittedSubscription?.unsubscribe();\n this.isEnabledSubscription?.unsubscribe();\n this.labelSubscription?.unsubscribe();\n this.tooltipSubscription?.unsubscribe();\n this.resultSubscription?.unsubscribe();\n this.errorSubscription?.unsubscribe();\n this.stateSubscription?.unsubscribe();\n this.cmpInstSubscription?.unsubscribe();\n this.subactionSubscriptions.forEach(s => s.unsubscribe());\n }\n\n public triggerAction(action: ActionDescriptorInst<Item, Service>, parameters?: ActionParameters<Item>, event?: Event) {\n if (action.subactionsAsMenu) {\n this.subactionsMenu()?.toggle(event ?? new Event('trigger'));\n return;\n }\n\n const actionData = this.actionData() ? this.actionData() : {};\n\n parameters ??= {\n itemId: this.itemId(),\n item: this.item(),\n actionData: actionData,\n dataListParams: this.dataListParams(),\n route: this.route(),\n sourceComponent: this,\n hostComponent: this.hostComponent(),\n selectedItems: this.selectedItems()\n };\n\n const instance = this.actionExecutor.triggerAction<Item, Service>(action, parameters);\n this.instance = instance;\n const context = instance.context;\n if (!context) {\n // no context is provided if routing is triggered or editor is opened via dialog\n // it is in another component jurisdiction to handle contexts\n return;\n }\n\n this.resultSubscription?.unsubscribe();\n this.resultSubscription = instance.result$.subscribe({\n next: () => {\n this.finish.emit(instance);\n if (action.hasItemsSelection) {\n this.viewContainer?.reloadTable();\n }\n }\n });\n\n this.errorSubscription?.unsubscribe();\n this.errorSubscription = instance.error$.subscribe({\n next: () => {\n this.finish.emit(instance);\n }\n });\n\n this.stateSubscription?.unsubscribe();\n this.stateSubscription = this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.RunStart:\n this.loading.set(true);\n break;\n case ActionInstanceStateEnum.RunEnd:\n case ActionInstanceStateEnum.RunError:\n this.loading.set(false);\n break;\n case ActionInstanceStateEnum.NextActionStart:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loading.set(true);\n }\n break;\n case ActionInstanceStateEnum.NextActionEnd:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loading.set(false);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionStart:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loading.set(true);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionEnd:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loading.set(false);\n }\n break;\n }\n });\n\n this.actionExecutor.run(context);\n }\n\n public onCustomActionCmpInst(instance: IActionComponent<Item>) {\n this.cmpInstSubscription?.unsubscribe();\n this.cmpInstSubscription = instance.trigger.subscribe(params => this.triggerAction(this.action(), params));\n }\n\n private processSubscriptions() {\n const parameters: ActionParameters<Item> = {\n itemId: this.itemId(),\n item: this.item(),\n actionData: this.actionData(),\n sourceComponent: this\n };\n const action = this.action();\n if (action.hasItemsSelection) {\n parameters.selectedItems = this.selectedItems();\n }\n\n const context = this.actionExecutor.prepareActionContextValidation(action, parameters, this.dataProvider());\n\n if (typeof action.isVisibleFunction === 'function') {\n this.isVisibleSubscription?.unsubscribe();\n this.isVisibleSubscription = toObservable(action.isVisibleFunction(context)).subscribe({\n next: res => this.isVisible.set(res)\n });\n }\n\n const routePermissions = this.routePermissions();\n\n if (typeof action.permissions !== 'undefined' || typeof routePermissions !== 'undefined') {\n this.isPermittedSubscription?.unsubscribe();\n const permissions = action.permissions && routePermissions ? Permissions.All.of(routePermissions, action.permissions) : routePermissions ?? action.permissions!;\n this.isVisibleSubscription = this.authorization.isActionVisible(permissions, context as ActionContextValidation<unknown, unknown>, this.route().snapshot).subscribe({\n next: res => this.isPermitted.set(res)\n });\n }\n if (typeof action.isEnabledFunction === 'function') {\n this.isEnabledSubscription?.unsubscribe();\n this.isEnabledSubscription = toObservable(action.isEnabledFunction(context)).subscribe({\n next: res => this.isEnabled.set(res)\n });\n }\n\n if (!this.hasNoTitle()) {\n this.labelSubscription?.unsubscribe();\n this.labelSubscription = getI18nForActionAsync(this.translate, action, 'title', action.button.label ?? undefined, this.item()).subscribe({\n next: i18n => this.label.set(i18n ?? '')\n });\n }\n\n this.tooltipSubscription?.unsubscribe();\n if (action.button.tooltip) {\n this.tooltipSubscription = getI18nForActionAsync(this.translate, action, 'tooltip', action.button.tooltip, this.item()).subscribe({\n next: i18n => this.tooltip.set(i18n ?? '')\n });\n }\n\n this.subactions.set(this.processSubactions());\n }\n\n private processSubactions(): MenuItem[] {\n this.subactionSubscriptions.forEach(s => s.unsubscribe());\n this.subactionSubscriptions = [];\n\n const menuItems: MenuItem[] = [];\n for (const subaction of this.action().subactions) {\n const menuItem = {} as MenuItem;\n\n menuItem.icon = subaction.button.icon ?? undefined;\n this.subactionSubscriptions.push(\n getI18nForActionAsync(this.translate, subaction, 'title', subaction.button.label ?? undefined, this.item()).subscribe({\n next: res => (menuItem.label = res!)\n })\n );\n this.subactionSubscriptions.push(\n getI18nForActionAsync(this.translate, subaction, 'tooltip', this.action().button.tooltip, this.item()).subscribe({\n next: res => (menuItem.tooltip = res!)\n })\n );\n\n const parameters: ActionParameters<Item> = {\n itemId: this.itemId(),\n item: this.item(),\n actionData: this.actionData(),\n sourceComponent: this\n };\n\n if (subaction.hasItemsSelection) {\n parameters.selectedItems = this.selectedItems();\n }\n\n const context = this.actionExecutor.prepareActionContextValidation(subaction, parameters, this.dataProvider());\n\n if (typeof subaction.isEnabledFunction === 'function') {\n this.subactionSubscriptions.push(\n toObservable(subaction.isEnabledFunction(context)).subscribe({\n next: res => (menuItem.disabled = !res)\n })\n );\n }\n\n const visibilityObservables: Observable<boolean>[] = [];\n if (typeof subaction.isVisibleFunction === 'function') {\n visibilityObservables.push(toObservable(subaction.isVisibleFunction(context)));\n }\n if (typeof subaction.permissions !== 'undefined') {\n visibilityObservables.push(this.authorization.isActionVisible(subaction.permissions, context as ActionContextValidation<unknown, unknown>, this.route().snapshot));\n }\n\n const routeData = this.route().snapshot.data as TableviewRouteData;\n if (subaction.tableviewCategory && routeData.tableviewPermissions && routeData.tableviewPermissions[subaction.tableviewCategory]) {\n const routePermissions = routeData.tableviewPermissions[subaction.tableviewCategory];\n visibilityObservables.push(this.authorization.isActionVisible(routePermissions, context as ActionContextValidation<unknown, unknown>, this.route().snapshot));\n }\n\n this.subactionSubscriptions.push(\n combineLatest(visibilityObservables).subscribe(visibilities => {\n menuItem.visible = visibilities.every(value => value);\n })\n );\n\n menuItem.command = () => this.triggerAction(subaction);\n\n menuItems.push(menuItem);\n }\n return menuItems;\n }\n}\n","@if (isVisible() && isPermitted()) {\n @if (actionLink(); as actionLink) {\n @if (actionLink.url !== '') {\n <a\n pButton\n pRipple\n [label]=\"label()\"\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [href]=\"!isEnabled() || inputDisabled() ? null : (actionLink.url | mngParametrize: itemId() : item() : actionData())\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"!isEnabled() || inputDisabled()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass()\"></a>\n } @else {\n <a\n pButton\n pRipple\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [label]=\"label()\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"!isEnabled() || inputDisabled() ? null : (actionLink.pathSegments | mngParametrize: itemId() : item() : actionData())\"\n [relativeTo]=\"route()\"\n [queryParams]=\"actionLink.queryParams | mngParametrize: itemId() : item() : actionData()\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"!isEnabled() || inputDisabled()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass()\"></a>\n }\n } @else if (action().component || action().componentFromDi) {\n <ng-container\n [mngComponent]=\"action().component\"\n [injectionToken]=\"action().componentFromDi\"\n [inputs]=\"{\n action: action(),\n item: item(),\n itemId: itemId(),\n actionData: actionData(),\n enabled: isEnabled(),\n loading: loading()\n }\"\n (instanceCreated)=\"onCustomActionCmpInst($event)\">\n </ng-container>\n } @else if (action().subactions.length > 0 && !action().subactionsAsMenu) {\n <p-splitButton\n [icon]=\"action().button.icon ?? undefined\"\n [iconPos]=\"action().button.iconPosition\"\n [label]=\"label()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [disabled]=\"!isEnabled() || inputDisabled()\"\n (onClick)=\"triggerAction(action())\"\n [class]=\"buttonClass()\"\n [model]=\"subactions()\">\n </p-splitButton>\n } @else {\n <button\n pButton\n pRipple\n type=\"button\"\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [label]=\"label()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [loading]=\"loading() || inputLoading()\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"!isEnabled() || inputDisabled()\"\n (click)=\"triggerAction(action(), undefined, $event)\"\n [class]=\"buttonClass()\"></button>\n <p-menu #subactionsMenu [model]=\"subactions()\" [popup]=\"true\" appendTo=\"body\" styleClass=\"mng-action-menu\"></p-menu>\n }\n}\n","import {DatePipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\n\nimport {EditorAutoSaveStatus} from '../../../models/editor-auto-save-preview.model';\n\n@Component({\n standalone: true,\n selector: 'mng-editor-auto-save-status',\n imports: [DatePipe, TranslateModule],\n template: `\n <span>\n @if (icon(); as icon) {\n <i [class]=\"icon\"></i>\n }\n @if (label(); as label) {\n \n <span [innerHTML]=\"label | translate: {timestamp: status()?.timestamp | date: timestampDateFormat()}\"></span>\n }\n </span>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EditorAutoSaveStatusComponent {\n status = input<EditorAutoSaveStatus>();\n\n label = computed(() => {\n switch (this.status()?.state) {\n case 'saving':\n case 'saved':\n return 'mngEditor.autoSave.autosavedAt';\n case 'preview':\n return 'mngEditor.autoSave.preview';\n case 'previewCurrent':\n return 'mngEditor.autoSave.previewCurrent';\n case 'restored':\n return 'mngEditor.autoSave.restored';\n default:\n return undefined;\n }\n });\n timestampDateFormat = computed(() => {\n switch (this.status()?.state) {\n case 'saving':\n case 'saved':\n return 'HH:mm:ss';\n default:\n return 'dd. MM. yyyy HH:mm:ss';\n }\n });\n icon = computed(() => {\n switch (this.status()?.state) {\n case 'saved':\n return 'pi pi-save';\n case 'saving':\n return 'pi pi-hourglass pi-spin';\n case 'preview':\n case 'previewCurrent':\n return 'pi pi-eye';\n case 'restored':\n return 'pi pi-sync';\n default:\n return undefined;\n }\n });\n}\n","import {IdType} from '@mediusinc/mng-commons/core';\nimport {EditorDescriptorInst, TableviewEditorTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\n/**\n * Generates a unique key for autosave data of an editor.\n *\n * @param {EditorDescriptorInst<Item>} descriptor - The editor descriptor instance.\n * @param {Item | undefined} item - The item associated with the editor.\n * @param {string} url - The URL of the editor.\n * @param {Object} [opts] - An optional object containing additional options.\n * @param {string} [opts.editorId] - The custom editor ID.\n * @param {IdType} [opts.itemId] - The custom item ID.\n * @return {string} - The generated autosave editor key.\n */\nexport function generateAutosaveEditorKey<Item>(descriptor: EditorDescriptorInst<Item>, item: Item | undefined, url: string, opts?: {editorId?: string; itemId?: IdType}): string {\n const autoSaveIdentifier = descriptor.autoSaveIdentifier ?? url;\n const editorId = generateEditorId(descriptor, opts?.editorId);\n const itemId = generateItemId(descriptor, item, opts?.itemId);\n return `autoSave~~${editorId}${itemId}~~${autoSaveIdentifier}`;\n}\n\n/**\n * Generates an ID for the editor based on the provided parameters.\n *\n * @template Item - The type of the item.\n * @param {EditorDescriptorInst<Item>} descriptor - The editor descriptor instance.\n * @param {string} [editorId] - The optional editor ID.\n * @returns {string} - The generated editor ID.\n */\nfunction generateEditorId<Item>({model, tableviewEditorType}: EditorDescriptorInst<Item>, editorId?: string): string {\n if (editorId !== undefined) {\n return editorId;\n }\n const editorTypeString = TableviewEditorTypeEnum[tableviewEditorType ?? TableviewEditorTypeEnum.None];\n return `${model.i18nBaseKey}::${editorTypeString}`;\n}\n\n/**\n * Generates an item ID.\n *\n * @param {EditorDescriptorInst<Item>} model - The model descriptor.\n * @param {Item} [item] - The item to generate an ID for.\n * @param {IdType} [itemId] - The existing item ID (if any).\n * @returns {string} - The generated item ID, prefixed with \"::\" or an empty string if no item ID exists.\n */\nfunction generateItemId<Item>({model}: EditorDescriptorInst<Item>, item?: Item, itemId?: IdType): string {\n if (itemId === undefined && item) {\n const idProperty = model?.idProperty;\n itemId = item?.[idProperty as keyof typeof item]?.toString();\n }\n return itemId ? `::${itemId}` : '';\n}\n","import {Validators} from '@angular/forms';\n\nimport {FieldInputDatePickerDynamicMinMaxFnType, FieldValidator} from '@mediusinc/mng-commons/tableview/api';\n\nexport const minDateValidationName = 'minDate';\nexport const minDateValidator = (\n min: Date | FieldInputDatePickerDynamicMinMaxFnType<Date | string | number | undefined | null, Date | string | number | undefined | null, undefined> | undefined\n): FieldValidator<Date | string | number | undefined | null, any> => {\n return ({fieldFormControl, fieldFormlyConfig}) => {\n const minDate = fieldFormlyConfig.props.minDate ?? min;\n const date: Date | undefined = fieldFormControl?.value == null ? undefined : new Date(fieldFormControl.value);\n return !date || !minDate || !(minDate instanceof Date) || date >= minDate;\n };\n};\n\nexport const maxDateValidationName = 'maxDate';\nexport const maxDateValidator = (\n max: Date | FieldInputDatePickerDynamicMinMaxFnType<Date | string | number | undefined | null, Date | string | number | undefined | null, undefined> | undefined\n): FieldValidator<Date | string | number | undefined | null, any> => {\n return ({fieldFormControl, fieldFormlyConfig}) => {\n const maxDate = fieldFormlyConfig.props.maxDate ?? max;\n const date: Date | undefined = fieldFormControl?.value == null ? undefined : new Date(fieldFormControl.value);\n return !date || !maxDate || !(maxDate instanceof Date) || date <= maxDate;\n };\n};\n\nexport const emailValidationName = 'email';\nexport const emailValidator = (): FieldValidator<string | undefined | null, any> => {\n return ({fieldFormControl}) => {\n const error = fieldFormControl ? Validators.email(fieldFormControl) : null;\n return error === null;\n };\n};\n","import {AbstractControl, FormGroup, Validators} from '@angular/forms';\n\nimport {FormlyConfig} from '@ngx-formly/core';\nimport {ValidationMessageOption} from '@ngx-formly/core/lib/models';\nimport {FormlyFieldConfig} from '@ngx-formly/core/lib/models/fieldconfig';\n\nimport {CommonsInternalError, CommonsService} from '@mediusinc/mng-commons/core';\nimport {type} from '@mediusinc/mng-commons/model';\nimport {\n AFieldDescriptor,\n CommonsFormlyFieldConfig,\n CommonsFormlyValidation,\n EditorDescriptorInst,\n FieldActionDescriptor,\n FieldBaseValidator,\n FieldGroupDescriptor,\n FieldInputDescriptor,\n FieldInputTypeEnum,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldLookupTypeEnum,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor,\n FieldTabGroupDescriptor,\n FieldValidationDescriptor,\n IFormEditorComponent,\n TableviewDescriptorInst,\n TableviewEditorTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {emailValidationName, emailValidator, maxDateValidationName, maxDateValidator, minDateValidationName, minDateValidator} from './editor-validators';\n\nexport function createFormlyConfigFromDescriptor<Item>(\n descriptor: EditorDescriptorInst<any>,\n formlyConfig: FormlyConfig,\n formEditorComponent: IFormEditorComponent<Item>\n): CommonsFormlyFieldConfig[] {\n const fields: CommonsFormlyFieldConfig[] = [];\n\n if (descriptor.isLocalized) {\n descriptor = createFormlyLocalizationsTab(descriptor);\n }\n\n if (!descriptor.isLocalized && descriptor.tabs.length === 1 && descriptor.tabs[0].default) {\n // dont use tabs\n fields.push(...createFormlyGroupType(descriptor.tabs[0].fields, descriptor, formlyConfig, formEditorComponent));\n } else {\n fields.push(...createFormlyTabType(descriptor.tabs, descriptor, formlyConfig, formEditorComponent));\n }\n\n return fields;\n}\n\nexport function createFormlyLocalizationsTab<Item>(descriptor: EditorDescriptorInst<Item>) {\n if (descriptor.isLocalized && descriptor.tableviewEditorType !== TableviewEditorTypeEnum.Details) {\n if (!descriptor.localizationModel) {\n throw new CommonsInternalError('Localization model must be defined.');\n }\n const localizationsTableViewDescriptor = new TableviewDescriptorInst<any, never, never, Item>(descriptor.localizationModel);\n if (!descriptor.localizationLocaleProperty) {\n throw new CommonsInternalError('Localization locale property must be defined.');\n }\n localizationsTableViewDescriptor.addColumn(descriptor.localizationLocaleProperty);\n localizationsTableViewDescriptor.editEditor.addField(descriptor.localizationLocaleProperty).withDisabled(true);\n localizationsTableViewDescriptor.detailsEditor.addField(descriptor.localizationLocaleProperty).withDisabled(true);\n localizationsTableViewDescriptor.addEditor\n .addFieldLookupWithProvider(descriptor.localizationLocaleProperty, CommonsService, type<string>())\n .withLookup((qp, service) => service.appDataLocales())\n .withDisabled(false)\n .withRequired();\n descriptor.fields.forEach(field => {\n if (field.isLocalized) {\n localizationsTableViewDescriptor.addColumn(field.property);\n localizationsTableViewDescriptor.addField(field.property);\n }\n });\n const descriptorWithLocalizations = descriptor.copy();\n descriptorWithLocalizations.createTabGroup('localizations');\n if (!descriptor.localizationLocalizationProperty) {\n throw new CommonsInternalError('Localization localization property must be defined');\n }\n descriptorWithLocalizations.addFieldManyEditorUnsafe(descriptor.localizationLocalizationProperty, localizationsTableViewDescriptor);\n\n return descriptorWithLocalizations;\n }\n return descriptor;\n}\n\nexport function createFormlyTabType<Item>(\n tabGroups: FieldTabGroupDescriptor<any>[],\n editorDescriptor: EditorDescriptorInst<any>,\n formlyConfig: FormlyConfig,\n formEditorComponent: IFormEditorComponent<Item>\n): CommonsFormlyFieldConfig[] {\n const tabsField: CommonsFormlyFieldConfig = {\n type: 'tabs',\n fieldGroup: [],\n props: {\n formEditorComponent,\n editorDescriptor: editorDescriptor\n }\n };\n for (const tab of tabGroups) {\n const tabField: CommonsFormlyFieldConfig = {\n id: tab.name,\n props: {\n formEditorComponent,\n descriptor: tab,\n editorDescriptor: editorDescriptor\n },\n expressions: {},\n fieldGroup: []\n };\n if (tab.title) {\n tabField.props.label = tab.title;\n }\n tabField.fieldGroup!.push(...createFormlyGroupType(tab.fields, editorDescriptor, formlyConfig, formEditorComponent));\n tabsField.fieldGroup!.push(tabField);\n }\n return [tabsField];\n}\n\nexport function createFormlyGroupType<Item>(\n groups: FieldGroupDescriptor<any>[],\n editorDescriptor: EditorDescriptorInst<any>,\n formlyConfig: FormlyConfig,\n formEditorComponent: IFormEditorComponent<Item>\n): CommonsFormlyFieldConfig[] {\n if (groups.length === 1 && groups[0].default) {\n // dont use fieldset, just create fields\n return createFormlyFields(groups[0], editorDescriptor, formlyConfig, formEditorComponent);\n } else {\n const groupsField: CommonsFormlyFieldConfig = {\n type: 'fieldset',\n fieldGroup: [],\n props: {\n formEditorComponent,\n editorDescriptor: editorDescriptor\n },\n expressions: {}\n };\n for (const group of groups) {\n const groupField: CommonsFormlyFieldConfig<any, Item> = {\n id: group.name,\n props: {\n descriptor: group,\n editorDescriptor: editorDescriptor\n },\n expressions: {},\n fieldGroup: []\n };\n if (group.title) {\n groupField.props.label = group.title;\n }\n groupField.fieldGroup!.push(...createFormlyFields(group, editorDescriptor, formlyConfig, formEditorComponent));\n groupsField.fieldGroup!.push(groupField);\n }\n return [groupsField];\n }\n}\n\nexport function createFormlyFields<Item>(\n descriptor: FieldGroupDescriptor<any>,\n editorDescriptor: EditorDescriptorInst<any>,\n formlyConfig: FormlyConfig,\n formEditorComponent: IFormEditorComponent<Item>\n): CommonsFormlyFieldConfig[] {\n const fields: CommonsFormlyFieldConfig[] = [];\n for (const descriptorField of descriptor.fields) {\n fields.push(createFormlyField(descriptorField, editorDescriptor, formlyConfig, formEditorComponent));\n }\n // wrap in group to be able to use flex grid\n const wrapperGroup: CommonsFormlyFieldConfig = {\n fieldGroupClassName: 'p-fluid formgrid grid',\n fieldGroup: fields,\n props: {}\n };\n\n addValidationsToFormlyField(wrapperGroup, descriptor.validations, formlyConfig);\n\n return [wrapperGroup];\n}\n\nexport function createFormlyField<Item>(\n descriptor: AFieldDescriptor<any, any>,\n editorDescriptor: EditorDescriptorInst<any>,\n formlyConfig: FormlyConfig,\n formEditorComponent: IFormEditorComponent<Item>\n): CommonsFormlyFieldConfig {\n const field: CommonsFormlyFieldConfig<any, Item> = {\n key: descriptor.property,\n modelOptions: {\n updateOn: descriptor.updateOn\n },\n hooks: {\n onInit: () => (descriptor.onInit ? descriptor.onInit(field) : undefined),\n onChanges: () => (descriptor.onChanges ? descriptor.onChanges(field) : undefined),\n afterContentInit: () => (descriptor.afterContentInit ? descriptor.afterContentInit(field) : undefined),\n afterViewInit: () => (descriptor.afterViewInit ? descriptor.afterViewInit(field) : undefined),\n onDestroy: () => (descriptor.onDestroy ? descriptor.onDestroy(field) : undefined)\n },\n props: {\n descriptor,\n formEditorComponent,\n editorDescriptor: editorDescriptor,\n onValueChange: descriptor.onValueChange\n },\n expressions: {}\n };\n\n let className = descriptor.className;\n if (!className) {\n // assign default field width through entire row\n className = 'col-12';\n }\n field.className = className;\n\n if (descriptor instanceof FieldInputDescriptor) {\n switch (descriptor.fieldType) {\n case FieldInputTypeEnum.Hidden:\n break;\n case FieldInputTypeEnum.Label:\n field.type = 'label';\n delete field.key;\n break;\n case FieldInputTypeEnum.Textarea:\n field.type = 'textarea';\n field.props.maxLength = descriptor.maxLength;\n field.props.minLength = descriptor.minLength;\n field.props.pattern = descriptor.pattern;\n break;\n case FieldInputTypeEnum.Number:\n field.type = 'number';\n field.props.min = descriptor.numberMin;\n field.props.max = descriptor.numberMax;\n break;\n case FieldInputTypeEnum.Currency:\n field.type = 'currency';\n field.props.min = descriptor.numberMin;\n field.props.max = descriptor.numberMax;\n break;\n case FieldInputTypeEnum.Switch:\n field.type = 'switch';\n field.defaultValue = false;\n break;\n case FieldInputTypeEnum.Radio:\n field.type = 'radio';\n break;\n case FieldInputTypeEnum.Datepicker:\n field.type = 'datepicker';\n break;\n case FieldInputTypeEnum.Mask:\n field.type = 'mask';\n break;\n case FieldInputTypeEnum.File:\n case FieldInputTypeEnum.ImageFile:\n field.type = 'file';\n break;\n case FieldInputTypeEnum.ImageUrl:\n field.type = 'imageUrl';\n break;\n case FieldInputTypeEnum.Custom:\n if (descriptor.customComponentType) {\n field.type = 'custom';\n field.props['customComponentType'] = descriptor.customComponentType;\n if (Array.isArray(descriptor.customComponentWrappers)) {\n field.wrappers = descriptor.customComponentWrappers;\n } else {\n // default wrapper\n field.wrappers = ['field'];\n }\n }\n break;\n default:\n field.type = 'input';\n field.props.minLength = descriptor.minLength;\n field.props.maxLength = descriptor.maxLength;\n field.props.pattern = descriptor.pattern;\n break;\n }\n } else if (descriptor instanceof FieldActionDescriptor) {\n field.type = 'action';\n field.wrappers = descriptor.wrappers;\n delete field.key;\n } else if (descriptor instanceof FieldLookupEnumDescriptor) {\n switch (descriptor.lookupType) {\n case FieldLookupTypeEnum.Custom:\n field.type = descriptor.customComponentName;\n break;\n default:\n field.type = 'enum';\n break;\n }\n } else if (descriptor instanceof FieldLookupDescriptor) {\n switch (descriptor.lookupType) {\n case FieldLookupTypeEnum.Autocomplete:\n field.type = 'autocomplete';\n break;\n case FieldLookupTypeEnum.Dialog:\n field.type = 'dialog';\n break;\n case FieldLookupTypeEnum.Custom:\n field.type = descriptor.customComponentName;\n break;\n case FieldLookupTypeEnum.Dropdown:\n default:\n field.type = 'dropdown';\n break;\n }\n } else if (descriptor instanceof FieldManyToManyEditorDescriptor) {\n field.type = 'table-dialog-multiselect';\n } else if (descriptor instanceof FieldManyEditorDescriptor) {\n field.type = 'table-dialog-form';\n }\n\n if (descriptor.label) {\n field.props.label = descriptor.label;\n }\n\n if (descriptor.requiredExpression) {\n field.expressions!['props.required'] = descriptor.requiredExpression;\n }\n if (descriptor.required) {\n field.props!.required = true;\n if (descriptor.requiredHideLabelMarker) {\n field.props!['hideRequiredMarker'] = true;\n }\n }\n\n if (descriptor.hiddenExpression) {\n field.expressions!['hide'] = descriptor.hiddenExpression;\n field.expressions!['resetOnHide'] = () => descriptor.hiddenResetOnHide ?? true;\n }\n\n if (descriptor.disabledExpression) {\n field.expressions!['props.disabled'] = descriptor.disabledExpression;\n } else if (descriptor.disabled) {\n field.props.disabled = true;\n } else {\n field.expressions!['props.disabled'] = 'formState.disabled';\n }\n\n if (typeof descriptor.defaultValue !== 'undefined') {\n field.defaultValue = descriptor.defaultValue;\n }\n\n if (descriptor instanceof FieldInputDescriptor) {\n if (descriptor.validationEmail) {\n descriptor.validations.push(new FieldValidationDescriptor(emailValidationName, emailValidator() as FieldBaseValidator<string | null | undefined, any>));\n }\n if (descriptor.datePickerMin) {\n descriptor.validations.push(\n new FieldValidationDescriptor(minDateValidationName, minDateValidator(descriptor.datePickerMin) as FieldBaseValidator<string | null | undefined, any>)\n );\n }\n if (descriptor.datePickerMax) {\n descriptor.validations.push(\n new FieldValidationDescriptor(maxDateValidationName, maxDateValidator(descriptor.datePickerMax) as FieldBaseValidator<string | null | undefined, any>)\n );\n }\n }\n\n addValidationsToFormlyField(field, descriptor.validations, formlyConfig);\n addAsyncValidationsToFormlyField(field, descriptor.asyncValidations, formlyConfig);\n\n return field;\n}\n\nexport function addValidationsToFormlyField(config: CommonsFormlyFieldConfig, validations: Array<FieldValidationDescriptor<any, any>>, formlyConfig: FormlyConfig) {\n if (!config.validators) {\n config.validators = {};\n }\n\n for (const validation of validations) {\n createFormlyValidation(config.validators, validation, formlyConfig);\n }\n}\n\nexport function addAsyncValidationsToFormlyField(config: CommonsFormlyFieldConfig, asyncValidations: Array<FieldValidationDescriptor<any, any>>, formlyConfig: FormlyConfig) {\n if (!config.asyncValidators) {\n config.asyncValidators = {};\n }\n\n for (const validation of asyncValidations) {\n createFormlyValidation(config.asyncValidators, validation, formlyConfig);\n }\n}\n\nexport function createFormlyValidation(config: NonNullable<CommonsFormlyValidation>, validation: FieldValidationDescriptor<any, any>, formlyConfig: FormlyConfig) {\n if (typeof validation.validator === 'function') {\n if (validation.options?.errorPath && validation.message != null) {\n // if this is used, the validator and message must be registered globally\n if (!formlyConfig.getValidatorMessage(validation.name)) {\n formlyConfig.addValidatorMessage(validation.name, validation.message as ValidationMessageOption['message']);\n }\n\n if (!formlyConfig.validators[validation.name]) {\n formlyConfig.setValidator({\n name: validation.name,\n validation: (control, field) => {\n const commonsFieldFormlyConfig = field as CommonsFormlyFieldConfig;\n return validation.validator!({\n fieldFormControl: control,\n form: commonsFieldFormlyConfig.form as FormGroup,\n fieldFormlyConfig: field as CommonsFormlyFieldConfig,\n formComponent: commonsFieldFormlyConfig.props?.formEditorComponent,\n fieldComponent: commonsFieldFormlyConfig.props?.fieldComponent\n })\n ? null\n : <Validators>{[validation.name]: true};\n }\n });\n }\n\n if (!Array.isArray(config.validation)) {\n config.validation = [];\n }\n config.validation.push({\n name: validation.name,\n options: {errorPath: validation.options.errorPath}\n });\n } else {\n config[validation.name] = {\n expression: (control: AbstractControl, field: FormlyFieldConfig) => {\n const commonsFieldFormlyConfig = field as CommonsFormlyFieldConfig;\n return validation.validator!({\n fieldFormControl: control,\n form: commonsFieldFormlyConfig.form as FormGroup,\n fieldFormlyConfig: commonsFieldFormlyConfig,\n formComponent: commonsFieldFormlyConfig.props?.formEditorComponent,\n fieldComponent: commonsFieldFormlyConfig.props?.fieldComponent\n });\n }\n };\n if (validation.message != null) {\n config[validation.name].message = validation.message;\n }\n }\n } else {\n if (!Array.isArray(config.validation)) {\n config.validation = [];\n }\n if (validation.options?.errorPath) {\n config.validation.push({\n name: validation.name,\n options: {errorPath: validation.options.errorPath}\n });\n } else {\n config.validation.push(validation.name);\n }\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\n\nexport function getFormEditorInfoMessage(translate: TranslateService, title: string, message: string, params?: any): Message {\n const actionErrorTitle = translate.instant(title) ?? undefined;\n const actionErrorMessage = translate.instant(message, params) ?? undefined;\n return {severity: 'info', summary: actionErrorTitle, detail: actionErrorMessage};\n}\n\nexport function getFormEditorWarningMessage(translate: TranslateService, title: string, message: string): Message {\n const actionErrorTitle = translate.instant(title) ?? undefined;\n const actionErrorMessage = translate.instant(message) ?? undefined;\n return {severity: 'warn', summary: actionErrorTitle, detail: actionErrorMessage};\n}\n","import {Injectable, Injector, InputSignal, InputSignalWithTransform, Provider, WritableSignal} from '@angular/core';\nimport {AbstractControl, FormGroup, UntypedFormGroup} from '@angular/forms';\n\nimport {FormlyFieldConfig, FormlyFormOptions} from '@ngx-formly/core';\nimport {Message} from 'primeng/api';\n\nimport {CommonsInternalError} from '@mediusinc/mng-commons/core';\nimport {CommonsFormlyFormOptions, EditorDescriptorInst, FormEditorGetFormValueOpts, FormEditorResetFormModelOpts, IFormEditorComponent} from '@mediusinc/mng-commons/tableview/api';\n\n@Injectable()\nexport class FormEditorService<Item, ParentItem = any> implements IFormEditorComponent<Item, ParentItem> {\n private readonly _parentForm?: FormEditorService<ParentItem, any>;\n private _formComponent?: IFormEditorComponent<Item>;\n\n public get parent(): IFormEditorComponent<ParentItem> | undefined {\n return this._parentForm;\n }\n\n public get parentService() {\n return this._parentForm;\n }\n\n public get formComponent(): IFormEditorComponent<Item> {\n if (!this._formComponent) {\n throw new CommonsInternalError(`Form service was not initialized`);\n }\n return this._formComponent;\n }\n\n public get descriptor(): InputSignal<EditorDescriptorInst<Item>> {\n return this.formComponent.descriptor;\n }\n\n public get isFormDisabled(): InputSignalWithTransform<boolean, unknown> {\n return this.formComponent.isFormDisabled;\n }\n\n public get formMessages(): WritableSignal<Message[]> {\n return this.formComponent.formMessages;\n }\n\n public get form(): FormGroup<{\n [K in keyof Item]: AbstractControl<Item[K]>;\n }> {\n return this.formComponent.form;\n }\n\n public get formUnsafe(): UntypedFormGroup {\n return this.formComponent.formUnsafe;\n }\n\n public get formlyOptions(): FormlyFormOptions & CommonsFormlyFormOptions<Item> {\n return this.formComponent.formlyOptions;\n }\n\n public get formlyFields(): FormlyFieldConfig[] {\n return this.formComponent.formlyFields;\n }\n\n public get formlyInitialItem(): any {\n return this.formComponent.formlyInitialItem;\n }\n\n public submit(): void {\n this.formComponent.submit();\n }\n\n public getFormValue(opts?: FormEditorGetFormValueOpts): Item {\n return this.formComponent.getFormValue(opts);\n }\n\n public resetFormModel(item?: Item, opts?: FormEditorResetFormModelOpts): void {\n this.formComponent.resetFormModel(item, opts);\n }\n\n public getField(key: keyof Item): AbstractControl | null {\n return this.formComponent.getField(key);\n }\n\n public getFieldUnsafe(key: string): AbstractControl | null {\n return this.formComponent.getFieldUnsafe(key);\n }\n\n public setFieldValue<Property extends keyof Item>(key: Property, value: Item[Property]): boolean {\n return this.formComponent.setFieldValue(key, value);\n }\n\n public setFieldValueUnsafe(key: string, value: any): boolean {\n return this.formComponent.setFieldValueUnsafe(key, value);\n }\n\n public patchFieldValue<Property extends keyof Item>(key: Property, value: Item[Property]): boolean {\n return this.formComponent.patchFieldValue(key, value);\n }\n\n public patchFieldValueUnsafe(key: string, value: any): boolean {\n return this.formComponent.patchFieldValueUnsafe(key, value);\n }\n\n public resetFieldValue<Property extends keyof Item>(key: Property, value?: Item[Property]): boolean {\n return this.formComponent.resetFieldValue(key, value);\n }\n\n public resetFieldValueUnsafe(key: string, value?: any): boolean {\n return this.formComponent.resetFieldValueUnsafe(key, value);\n }\n\n public constructor(parentForm?: FormEditorService<ParentItem>) {\n this._parentForm = parentForm;\n }\n\n public init(formComponent: IFormEditorComponent<Item>) {\n this._formComponent = formComponent;\n }\n}\n\nexport function provideFormComponent(): Provider {\n return {\n provide: FormEditorService,\n useFactory: (injector: Injector) => {\n const parent = injector.get(FormEditorService, null, {optional: true, skipSelf: true});\n return new FormEditorService<any>(parent ?? undefined);\n },\n deps: [Injector]\n };\n}\n","import {AsyncPipe, DatePipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n OnDestroy,\n OnInit,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n viewChild\n} from '@angular/core';\nimport {outputFromObservable, takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\nimport {AbstractControl, FormArray, FormGroup, ReactiveFormsModule, UntypedFormGroup} from '@angular/forms';\nimport {Router} from '@angular/router';\n\nimport {FormlyConfig, FormlyFieldConfig, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {MessagesModule} from 'primeng/messages';\nimport {BehaviorSubject, Subscription, debounceTime, distinctUntilChanged, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {CommonsService, CommonsStorageService, IdType, LoggerService, StyleLevelEnum, StyleSizeEnum, objectDeepCopy} from '@mediusinc/mng-commons/core';\nimport {ButtonStyleBuilder, ButtonStyleRoundedEnum} from '@mediusinc/mng-commons/form/api';\nimport {\n CommonsFormlyFormOptions,\n EditorDescriptorInst,\n FormEditorPatchFieldValueOpts,\n FormEditorResetFieldValueOpts,\n FormEditorResetFormModelOpts,\n FormEditorSetFieldValueOpts,\n FormEditorSubmitEvent,\n FormEventTypeEnum,\n FormFieldEventComponentSubtype,\n IFormEditorComponent,\n TableviewEditorTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {generateAutosaveEditorKey} from '../../helpers/editor-autosave';\nimport {createFormlyConfigFromDescriptor} from '../../helpers/editor-formly';\nimport {getFormEditorInfoMessage, getFormEditorWarningMessage} from '../../helpers/notification';\nimport {EditorAutoSavePreviewModel, EditorAutoSaveStatus} from '../../models/editor-auto-save-preview.model';\nimport {FormEditorService, provideFormComponent} from '../../services/form-editor.service';\nimport {EditorAutoSaveStatusComponent} from './auto-save-status/auto-save-status.component';\n\n@Component({\n standalone: true,\n selector: 'mng-form-editor',\n templateUrl: './form-editor.component.html',\n imports: [FormlyModule, ReactiveFormsModule, MessagesModule, AsyncPipe, ButtonModule, TranslateModule, DatePipe, EditorAutoSaveStatusComponent],\n providers: [provideFormComponent()],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormEditorComponent<Item = any, ParentItem = any> implements IFormEditorComponent<Item, ParentItem>, OnInit, OnDestroy {\n private readonly formlyConfig = inject(FormlyConfig);\n private readonly translateService = inject(TranslateService);\n private readonly commons = inject(CommonsService);\n public readonly cmpTypeName = 'FormEditorComponent';\n private readonly logger = inject(LoggerService).create(this.cmpTypeName);\n private readonly destroyRef = inject(DestroyRef);\n private readonly formService = inject(FormEditorService<Item, ParentItem>);\n\n private readonly commonsStorageService = inject(CommonsStorageService);\n private readonly router = inject(Router);\n\n private autoSaveStorageKeyCompInit = true;\n private autoSaveStorageKey = computed(() => generateAutosaveEditorKey(this.descriptor(), this.item(), this.router.url, {editorId: this.editorId(), itemId: this.itemId()}));\n\n public descriptor = input.required<EditorDescriptorInst<Item>>();\n public submitLoading = input(false, {transform: booleanAttribute});\n public item = model<Item | undefined>(undefined);\n public isFormDisabled = input(false, {transform: booleanAttribute});\n public editorId = input<string | undefined>(undefined);\n public itemId = input<IdType | undefined>(undefined);\n public showAutoSaveStatus = input(true, {transform: booleanAttribute});\n\n // event outputs\n public formSubmit = output<FormEditorSubmitEvent<Item>>();\n public valueChange = output<Item>();\n private autoSaveStatusSubject = new BehaviorSubject<EditorAutoSaveStatus>({state: 'initial', timestamp: new Date()});\n public autoSaveStatus = outputFromObservable(this.autoSaveStatusSubject.asObservable());\n\n // content and view queries\n public submitButtonElementRef = viewChild<ElementRef | undefined>('submitButton');\n\n // formly specifics\n private readonly _form = new UntypedFormGroup({});\n private readonly _formlyStateDisabledSubject = new BehaviorSubject(false);\n private readonly _formlyOptions: CommonsFormlyFormOptions<Item> = {\n formState: {\n add: false,\n edit: false,\n disabled: false,\n disabled$: this._formlyStateDisabledSubject.asObservable().pipe(distinctUntilChanged())\n }\n };\n private _formlyFields: FormlyFieldConfig[] = []; // initialized in ngOnInit, should not be changed after\n private _formlyInitialItem = {}; // initialized in ngOnInit, should not be changed after\n private initialItemInput: Item | undefined;\n\n private setterFields = computed(() => this.descriptor().fields.filter(f => typeof f.setter === 'function'));\n\n public formMessages = signal<Message[]>([]);\n\n // autosave\n public readonly restoreLocalStateButtonStyle = ButtonStyleBuilder.create(StyleLevelEnum.Success, StyleSizeEnum.Small).build();\n public readonly previewLocalStateButtonStyle = ButtonStyleBuilder.create(StyleLevelEnum.Info, StyleSizeEnum.Small).build();\n public readonly clearLocalStateButtonStyle = ButtonStyleBuilder.create(StyleLevelEnum.Danger, StyleSizeEnum.Small)\n .withRoundedButton(ButtonStyleRoundedEnum.SQUARE)\n .withTextButton()\n .build();\n public autoSaveRestore = signal<EditorAutoSavePreviewModel<Item> | null>(null);\n public autoSave = toSignal(this.autoSaveStatusSubject);\n public autoSavePreviewButtonLabel = computed(() => {\n switch (this.autoSave()?.state) {\n case 'preview':\n return 'mngEditor.autoSave.restore.previewCurrent';\n case 'previewCurrent':\n return 'mngEditor.autoSave.restore.previewAutosaved';\n default:\n return 'mngEditor.autoSave.restore.preview';\n }\n });\n public autoSaveShowRestore = computed(() => this.autoSaveRestore()?.saved != null);\n private autoSavePreviewDisabledForm = signal(false);\n private autoSaveEventsSubscription?: Subscription;\n\n get parent() {\n return this.formService.parent;\n }\n\n get form(): FormGroup<{[K in keyof Item]: AbstractControl<Item[K]>}> {\n return this._form;\n }\n\n get formUnsafe(): UntypedFormGroup {\n return this._form;\n }\n\n get formlyOptions() {\n return this._formlyOptions;\n }\n\n get formlyFields() {\n return this._formlyFields;\n }\n\n /**\n * Only used for form initialization. Further changes should be done using {resetFormModel}.\n */\n get formlyInitialItem() {\n return this._formlyInitialItem;\n }\n\n constructor() {\n this.formService.init(this);\n\n effect(() => {\n const item = this.item();\n if (item !== this.initialItemInput) {\n // new item is different from the one the form was initialized with. Must trigger reset of form model.\n // should be executed in untracked mode, because it updates multiple components underneath\n untracked(() => this.resetFormModel(item));\n }\n });\n\n effect(() => {\n this._formlyOptions.formState.disabled =\n this.isFormDisabled() || this.autoSavePreviewDisabledForm() || this._formlyOptions.formState.descriptor?.disabled === true || this._formlyOptions.formState.details;\n untracked(() => {\n this._formlyStateDisabledSubject.next(this._formlyOptions.formState.disabled);\n });\n });\n\n effect(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const key = this.autoSaveStorageKey();\n untracked(() => {\n this.autoSaveStopValueChangeListen();\n this.autoSaveLoadSavedFromStorage();\n this.autoSaveStartEventChangeListen(this.autoSaveStorageKeyCompInit);\n this.autoSaveStorageKeyCompInit = false;\n });\n });\n }\n\n public ngOnInit() {\n // init form state\n if (this.descriptor().tableviewEditorType === TableviewEditorTypeEnum.Add) {\n this._formlyOptions.formState.add = true;\n } else if (this.descriptor().tableviewEditorType === TableviewEditorTypeEnum.Edit) {\n this._formlyOptions.formState.edit = true;\n } else if (this.descriptor().tableviewEditorType === TableviewEditorTypeEnum.Details) {\n this._formlyOptions.formState.details = true;\n }\n this._formlyOptions.formState.descriptor = this.descriptor();\n\n // init fields for formly\n this._formlyFields = createFormlyConfigFromDescriptor(this.descriptor(), this.formlyConfig, this);\n\n // int form model (only initial, no further changes to formModel should be allowed!)\n this.initialItemInput = this.item();\n this._formlyInitialItem = this.getFormModelFromItem(this.item());\n\n // handle localizations edit/add message\n if (\n this.descriptor().isLocalized &&\n (this.descriptor().tableviewEditorType === TableviewEditorTypeEnum.Add || this.descriptor().tableviewEditorType === TableviewEditorTypeEnum.Edit)\n ) {\n this.formMessages.set([\n ...this.formMessages(),\n getFormEditorInfoMessage(this.translateService, 'mngEditor.localizations.addInDefaultLanguageTitle', 'mngEditor.localizations.addInDefaultLanguageDescription', {\n defaultLanguage: this.commons.getDefaultLocale()\n })\n ]);\n }\n\n // emit lifecycle event\n this.descriptor().nextEvent(FormEventTypeEnum.ComponentLifecycle, this as IFormEditorComponent<any>, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this._form.valueChanges\n .pipe(\n debounceTime(100),\n distinctUntilChanged(),\n map(() => this._form.getRawValue()),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(v => {\n this.valueChange?.emit(v);\n this.descriptor().nextEvent(FormEventTypeEnum.ValueChange, this as IFormEditorComponent<any>, {\n value: v,\n formValue: () => this.getFormValue()\n });\n });\n\n // mark form as pristine, should be done in next event hook to allow formly to initialize first\n setTimeout(() => {\n this._form.markAsPristine();\n });\n }\n\n public ngOnDestroy() {\n // emit lifecycle event\n this.descriptor().nextEvent(FormEventTypeEnum.ComponentLifecycle, this as IFormEditorComponent<any>, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n public submit() {\n this.submitButtonElementRef()?.nativeElement.click();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onSubmit(event: Event) {\n this._formlyOptions.formState.submittedOn = Date.now();\n this.formMessages.set([]);\n\n const formSubmitItem = this.getFormValue();\n if (this._form.valid) {\n this.formSubmit.emit({\n success: true,\n formItem: formSubmitItem\n });\n this.descriptor().nextEvent(FormEventTypeEnum.Submit, this as IFormEditorComponent<any>, {\n submitValid: true,\n submitValue: formSubmitItem\n });\n this.onAutoSaveDismiss();\n } else {\n // find and mark invalid tabs\n const formFields = this._formlyFields;\n if (formFields[0].type === 'tabs' && formFields[0].fieldGroup) {\n for (const tab of formFields[0].fieldGroup) {\n this._formlyOptions.formState['tab_' + (tab.id ? tab.id : tab.key ?? '') + '_invalid'] = this.isAnyFieldInvalid(tab.fieldGroup);\n }\n }\n\n const event: FormEditorSubmitEvent<Item> = {success: false, formItem: formSubmitItem};\n event.success = false;\n this.formMessages().push(getFormEditorWarningMessage(this.translateService, 'mngEditor.invalidFormToastTitle', 'mngEditor.invalidFormToastMessage'));\n\n this.formSubmit.emit(event);\n this.descriptor().nextEvent(FormEventTypeEnum.Submit, this as IFormEditorComponent<any>, {\n submitValid: false,\n submitValue: formSubmitItem\n });\n }\n }\n\n public getFormValue(opts?: {omitSetters?: boolean}): Item {\n const formValue = objectDeepCopy(this._form.getRawValue(), {mapGettersToProperties: true});\n\n if (opts?.omitSetters !== true) {\n this.setterFields().forEach(field => {\n const splitPath = field.property.split('.');\n let fieldValue = formValue;\n for (let i = 0; i < splitPath.length - 1; i++) {\n const currentSubPath = splitPath[i];\n if (typeof fieldValue[currentSubPath] !== 'object') {\n fieldValue[currentSubPath] = {};\n }\n\n fieldValue = fieldValue[currentSubPath];\n }\n\n fieldValue = fieldValue[splitPath[splitPath.length - 1]];\n field.setter?.(formValue, fieldValue);\n });\n }\n\n return formValue;\n }\n\n public resetFormModel(item?: Item, opts?: FormEditorResetFormModelOpts) {\n // have to use formly's reset model, because _form.reset() does not reset the values correctly\n this._formlyOptions.resetModel?.(this.getFormModelFromItem(item));\n\n if (opts?.markAsPristine !== false) {\n // mark form as pristine, should be done in next event hook to allow formly to initialize first\n setTimeout(() => {\n this._form.markAsPristine({onlySelf: opts?.onlySelf});\n });\n }\n }\n\n public getField(key: keyof Item) {\n return this.getFieldUnsafe(key as string);\n }\n\n public getFieldUnsafe(key: string) {\n return this.findFormField(this._form, key.split('.'));\n }\n\n public setFieldValue<Property extends keyof Item>(key: Property, value: Item[Property], opts?: FormEditorSetFieldValueOpts) {\n return this.setFieldValueUnsafe(key as string, value, opts);\n }\n\n public setFieldValueUnsafe(key: string, value: any, opts?: FormEditorSetFieldValueOpts) {\n const control = this.getFieldUnsafe(key);\n if (control) {\n control.setValue(value, opts);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n public patchFieldValue<Property extends keyof Item>(key: Property, value: Item[Property], opts?: FormEditorPatchFieldValueOpts) {\n return this.patchFieldValueUnsafe(key as string, value, opts);\n }\n\n public patchFieldValueUnsafe(key: string, value: any, opts?: FormEditorPatchFieldValueOpts) {\n const control = this.getFieldUnsafe(key);\n if (control) {\n control.patchValue(value, opts);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n public resetFieldValue<Property extends keyof Item>(key: Property, value?: Item[Property], opts?: FormEditorResetFieldValueOpts) {\n return this.resetFieldValueUnsafe(key as string, value, opts);\n }\n\n public resetFieldValueUnsafe(key: string, value?: any, opts?: FormEditorResetFieldValueOpts) {\n const control = this.getFieldUnsafe(key);\n if (control) {\n control.reset(value, opts);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n /**\n * Restores the saved local state.\n * If local storage keys exist for local state and local timestamp, restore their corresponding values.\n */\n public onAutoSaveRestore() {\n const restore = this.autoSaveRestore();\n if (restore?.saved) {\n this.autoSaveStopValueChangeListen();\n this.resetFormModel(restore.saved);\n this.autoSaveRestore.set(null);\n this.autoSaveStatusSubject.next({state: 'restored', timestamp: restore.savedAt ?? new Date()});\n this.autoSavePreviewDisabledForm.set(false);\n this.autoSaveStartEventChangeListen();\n }\n }\n\n /**\n * Previews the saved local state.\n * If local storage keys exist for local state and local timestamp, restore their corresponding values.\n */\n public onAutoSavePreview() {\n if (!this.autoSaveRestore()?.saved) {\n return;\n }\n\n this.autoSaveStopValueChangeListen();\n this.autoSavePreviewDisabledForm.set(true);\n const state = this.autoSaveStatusSubject.value.state;\n if (state !== 'preview' && state !== 'previewCurrent') {\n // must store original value from current value form\n this.autoSaveRestore.update(i => ({...i, original: this.getFormValue()}));\n }\n\n const restore = this.autoSaveRestore();\n if (state === 'preview' && restore?.original) {\n this.resetFormModel(restore.original);\n this.autoSaveStatusSubject.next({state: 'previewCurrent'});\n } else if (state !== 'preview' && restore?.saved) {\n this.resetFormModel(restore.saved);\n this.autoSaveStatusSubject.next({state: 'preview', timestamp: restore.savedAt ?? new Date()});\n }\n }\n\n /**\n * Removes local state from local storage.\n * If local storage keys exist for local state and local timestamp, remove their corresponding values.\n */\n public onAutoSaveDismiss(): void {\n if (this.autoSaveStorageKey()) {\n const restore = this.autoSaveRestore();\n if (this.autoSaveStatusSubject.value.state === 'preview' && restore?.original) {\n this.resetFormModel(restore.original);\n this.autoSaveStatusSubject.next({state: 'initial', timestamp: new Date()});\n }\n this.commonsStorageService.removeItem(this.cmpTypeName, this.autoSaveStorageKey());\n this.autoSaveRestore.set(null);\n this.autoSavePreviewDisabledForm.set(false);\n this.autoSaveStartEventChangeListen();\n }\n }\n\n private getFormModelFromItem(item: Item | undefined): any {\n const formModel = (objectDeepCopy(item, {mapGettersToProperties: true}) as Record<string, any>) ?? {};\n\n const descriptor = this.descriptor();\n descriptor.fields.forEach(field => {\n if (field.getter && formModel) {\n const splitPath = field.property.split('.');\n let currentObject = formModel;\n\n for (let i = 0; i < splitPath.length; i++) {\n const currentSubPath = splitPath[i];\n if (i === splitPath.length - 1) {\n currentObject[currentSubPath] = field.getter(formModel?.[field.property as keyof object], formModel as Item);\n } else {\n if (typeof currentObject[currentSubPath] !== 'object') {\n currentObject[currentSubPath] = {};\n }\n\n currentObject = currentObject[currentSubPath];\n }\n }\n }\n });\n\n return formModel;\n }\n\n private findFormField(control: AbstractControl, keyPath: string[]): AbstractControl | null {\n if (keyPath.length === 0) {\n return control;\n }\n if (keyPath.length === 1) {\n return control.get(keyPath[0]);\n }\n let nextControl: AbstractControl | null = null;\n if (control instanceof FormGroup) {\n nextControl = control.get(keyPath[0]);\n } else if (control instanceof FormArray) {\n const idx = +keyPath[0];\n if (!isNaN(idx)) {\n nextControl = control.at(idx);\n }\n }\n\n if (!control) {\n return null;\n }\n return this.findFormField(nextControl!, keyPath.slice(1));\n }\n\n private isAnyFieldInvalid(fields: FormlyFieldConfig[] = []): boolean {\n for (const field of fields) {\n let fieldInvalid = false;\n if (Array.isArray(field.fieldGroup)) {\n fieldInvalid = this.isAnyFieldInvalid(field.fieldGroup);\n } else if (typeof field.type !== 'undefined') {\n fieldInvalid = !field.formControl?.valid;\n }\n if (fieldInvalid) {\n return true;\n }\n }\n return false;\n }\n\n private autoSaveStartEventChangeListen(init = false) {\n if (!this.descriptor().autoSave) {\n return;\n }\n\n setTimeout(\n () => {\n if (!this.autoSaveEventsSubscription) {\n this.autoSaveEventsSubscription = this._form.valueChanges\n .pipe(\n debounceTime(250),\n distinctUntilChanged(),\n // skip first one on init\n tap(() => {\n if (this.autoSaveStatusSubject.value.state !== 'saved' && this.autoSaveStatusSubject.value.state !== 'preview')\n this.autoSaveStatusSubject.next({...this.autoSaveStatusSubject.value, state: 'saving'});\n }),\n debounceTime(750),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.autoSaveSaveToStorage();\n });\n }\n },\n init ? 0 : 500 // delay initial event listening for all the initializations to take place\n );\n }\n\n private autoSaveStopValueChangeListen() {\n this.autoSaveEventsSubscription?.unsubscribe();\n this.autoSaveEventsSubscription = undefined;\n }\n\n /**\n * Saves the form value to localStorage if autoSave is enabled and the required keys are defined.\n * @returns {void}\n */\n private autoSaveSaveToStorage(): void {\n if (this.descriptor().autoSave !== true || this.autoSaveStatusSubject.value.state === 'preview' || this.autoSaveStatusSubject.value.state === 'previewCurrent') {\n return;\n }\n\n this.commonsStorageService.setItem<EditorAutoSavePreviewModel<Item>>(this.cmpTypeName, this.autoSaveStorageKey(), {saved: this.getFormValue(), savedAt: new Date()});\n this.autoSaveStatusSubject.next({state: 'saved', timestamp: new Date()});\n }\n\n /**\n * Loads the value from the local storage if available\n */\n private autoSaveLoadSavedFromStorage(): void {\n const {autoSave, model} = this.descriptor();\n if (autoSave && model.i18nBaseKey) {\n this.autoSaveRestore.set(this.commonsStorageService.getItem<EditorAutoSavePreviewModel<Item>>(this.cmpTypeName, this.autoSaveStorageKey()) ?? null);\n }\n }\n}\n","@if (autoSaveShowRestore()) {\n <p-messages severity=\"warn\">\n <ng-template pTemplate>\n <div class=\"flex flex-grow-1 justify-content-between align-items-center\">\n <h6 class=\"m-0 p-0\">\n <em class=\"pi pi-save mr-4\"></em>\n {{\n 'mngEditor.autoSave.restore.title'\n | translate: {lastChange: autoSaveRestore()?.savedAt ? (autoSaveRestore()?.savedAt! | date: 'dd. MM. YYYY HH:mm:ss') : ''}\n }}\n </h6>\n <div>\n <p-button\n icon=\"pi pi-sync\"\n size=\"small\"\n [label]=\"'mngEditor.autoSave.restore.restore' | translate\"\n [styleClass]=\"restoreLocalStateButtonStyle\"\n [text]=\"true\"\n (click)=\"onAutoSaveRestore()\"></p-button>\n @if (autoSave()?.state !== 'preview' || autoSave()?.state !== 'previewCurrent') {\n <p-button\n icon=\"pi pi-eye\"\n size=\"small\"\n [label]=\"autoSavePreviewButtonLabel() | translate\"\n [styleClass]=\"previewLocalStateButtonStyle\"\n [text]=\"true\"\n (click)=\"onAutoSavePreview()\"></p-button>\n }\n <p-button\n icon=\"pi pi-times\"\n size=\"small\"\n [label]=\"'mngEditor.autoSave.restore.dismiss' | translate\"\n [styleClass]=\"clearLocalStateButtonStyle\"\n (click)=\"onAutoSaveDismiss()\"></p-button>\n </div>\n </div>\n </ng-template>\n </p-messages>\n}\n\n<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit($event)\">\n <formly-form [form]=\"form\" [fields]=\"formlyFields\" [options]=\"formlyOptions\" [model]=\"formlyInitialItem\"></formly-form>\n <button #submitButton pButton type=\"submit\" class=\"hidden\" [disabled]=\"form.disabled\" [loading]=\"submitLoading()\" loadingIcon=\"pi pi-spin pi-spinner\"></button>\n</form>\n<p-messages [value]=\"formMessages()\" [enableService]=\"false\"></p-messages>\n\n@if (descriptor().autoSave && showAutoSaveStatus()) {\n <mng-editor-auto-save-status [status]=\"autoSave()\"></mng-editor-auto-save-status>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n OnInit,\n afterNextRender,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfirmationService} from 'primeng/api';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {ProgressSpinnerModule} from 'primeng/progressspinner';\nimport {ToolbarModule} from 'primeng/toolbar';\nimport {ZIndexUtils} from 'primeng/utils';\nimport {NEVER, Observable, Subject, Subscription, combineLatestWith, mergeMap, of, switchMap} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {\n ActionData,\n ActionParameters,\n CommonsInternalError,\n CommonsService,\n ComponentDirective,\n IDataProvider,\n IdType,\n LoggerService,\n objectDeepCopy\n} from '@mediusinc/mng-commons/core';\nimport {\n ActionActivationTriggerEnum,\n ActionDescriptorInst,\n ActionEditorDescriptorInst,\n ActionEditorSubmitDescriptorInst,\n ActionEditorSubmitTypeEnum,\n ActionPositionEnum,\n ActionTypeEnum,\n EditorResetEvent,\n FormEditorSubmitEvent,\n IActionEditorComponent,\n IActionInstance,\n IEditorDataProvider\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {EditorAutoSaveStatusComponent} from '../../../../editor/components/editor/auto-save-status/auto-save-status.component';\nimport {FormEditorComponent} from '../../../../editor/components/editor/form-editor.component';\nimport {EditorAutoSaveStatus} from '../../../../editor/models/editor-auto-save-preview.model';\nimport {getI18nActionEditorTitleAsync} from '../../../helpers/i18n';\nimport {ActionInstanceStateEnum} from '../../../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../../services/action-executor.service';\nimport {provideActionExecutor} from '../../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../../services/view-container.service';\nimport {ActionComponent} from '../../action/action.component';\n\n@Component({\n standalone: true,\n selector: 'mng-action-editor-injector-context',\n templateUrl: './action-editor-injector-context.component.html',\n styleUrls: ['action-editor-injector-context.component.scss'],\n imports: [ActionComponent, ProgressSpinnerModule, FormEditorComponent, ComponentDirective, ToolbarModule, EditorAutoSaveStatusComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideActionExecutor()]\n})\nexport class ActionEditorInjectorContextComponent<Item = any, Service = any> implements OnInit, OnDestroy, IActionEditorComponent {\n protected readonly ActionActivationTriggerEnum = ActionActivationTriggerEnum;\n public readonly actionEditorSubmitTypeSubmit = ActionEditorSubmitTypeEnum.Submit;\n\n private readonly elementRef = inject(ElementRef);\n private readonly translate = inject(TranslateService);\n private readonly confirmationService = inject(ConfirmationService);\n private readonly dialogService = inject(DialogService);\n private readonly logger = inject(LoggerService).create('ActionEditorInjectorContextComponent');\n private readonly commonsService = inject(CommonsService);\n private readonly actionExecutor = inject(ActionExecutorService);\n private readonly viewContainer = inject(ViewContainer, {optional: true});\n\n // metadata and editor mode input\n data = input.required<ActionEditorInjectorContextInputData<Item, Service>>();\n\n public actionRun = output<Item | null | undefined>();\n public actionCancel = output<Item | null | undefined>();\n\n // content and view queries\n public formEditorCmp = viewChild(FormEditorComponent);\n private focusThiefElRef = viewChild.required<ElementRef>('focusThiefInput');\n\n private hasTitle = computed(() => this.editorAction().editorTitle !== null);\n public title = signal<string | undefined>(undefined);\n public isFormDisabled = signal(false);\n\n // data\n public item = signal<Item | undefined>(undefined);\n public itemId = signal<IdType | undefined>(undefined);\n public actionData = signal<ActionData | undefined>(undefined);\n public editorAction = signal<ActionEditorDescriptorInst<Item, Service>>({} as ActionEditorDescriptorInst<Item, Service>); // fake initial value\n\n // actions\n private actions = computed(() => {\n const actions: ActionDescriptorInst<Item>[] = [];\n for (const action of this.editorAction().editorActions) {\n if (action instanceof ActionEditorSubmitDescriptorInst) {\n if (typeof action.button.icon === 'undefined') {\n action.button.withIcon(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times');\n }\n if (typeof action.button.label === 'undefined') {\n action.button.withLabel(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'general.save' : this.data().isDialog ? 'general.close' : 'general.cancel');\n }\n\n // assign run operations\n action.withRunNotificationSuccess(undefined, undefined, false);\n if (action.submitType === ActionEditorSubmitTypeEnum.Submit) {\n action.withRunFunction(() => {\n this.triggerSubmit();\n return of(null);\n });\n } else {\n action.withRunFunction(() => {\n this.closeWithUnsavedChangesConfirmation();\n return of(null);\n });\n }\n }\n actions.push(action);\n }\n\n for (const action of this.viewContainer?.actions().filter(value => value.positionTableviewCategories?.includes(this.editorAction().tableviewCategory!)) ?? []) {\n actions.push(action);\n }\n\n return actions;\n });\n public toolbarLeftActions = computed(() => this.actions().filter(a => a.position === ActionPositionEnum.ToolbarLeft));\n public toolbarRightActions = computed(() =>\n this.actions()\n .filter(a => a.position === ActionPositionEnum.ToolbarRight)\n .reverse()\n );\n public footerLeftActions = computed(() => this.actions().filter(a => a.position === ActionPositionEnum.FooterLeft));\n public footerRightActions = computed(() =>\n this.actions()\n .filter(a => a.position === ActionPositionEnum.FooterRight)\n .reverse()\n );\n\n private instance?: ActionInstance<Item, Service>;\n private instanceStateSubscription?: Subscription;\n private instanceReactivationSubscription?: Subscription;\n\n private dataProvider = computed(() => this.data().dataProvider ?? this.viewContainer?.dataProvider());\n\n public loading = signal(false);\n private fetchExecutionSubscription?: Subscription;\n public formValue = signal<Item | undefined>(undefined);\n public submitLoading = signal(false);\n public autoSaveStatus = signal<EditorAutoSaveStatus | undefined>(undefined);\n private submitExecutionSubscription?: Subscription;\n private lastSubmitItem?: Item;\n\n private titleSubscription?: Subscription;\n\n constructor() {\n // updates for title\n effect(\n () => {\n const hasTitle = this.hasTitle();\n if (!hasTitle) {\n this.title.set(undefined);\n } else {\n this.titleSubscription?.unsubscribe();\n this.titleSubscription = getI18nActionEditorTitleAsync(this.translate, this.editorAction(), this.item()).subscribe(t => {\n this.title.set(t ?? undefined);\n });\n }\n },\n {allowSignalWrites: true}\n );\n\n toObservable(this.hasTitle)\n .pipe(\n combineLatestWith(toObservable(this.editorAction), toObservable(this.item)),\n mergeMap(([hasTitle, editorAction, item]) => (hasTitle ? getI18nActionEditorTitleAsync(this.translate, editorAction, item) : of(undefined)))\n )\n .subscribe(title => {\n this.title.set(title ?? undefined);\n\n const dataDialogConfig = this.data().dialogConfig;\n if (dataDialogConfig) {\n dataDialogConfig.header = title ?? undefined;\n }\n if (this.editorAction().activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n this.commonsService.setPageTitle(title ?? undefined);\n }\n });\n\n // subscribe to events that could be triggered from outside from any reason\n this.viewContainer?.editorReset$.pipe(takeUntilDestroyed()).subscribe({\n next: e => this.onEditorReset(e)\n });\n\n toObservable(this.dataProvider)\n .pipe(\n switchMap(dp => (dp as IEditorDataProvider)?.editorReset$ ?? NEVER),\n takeUntilDestroyed()\n )\n .subscribe({\n next: e => this.onEditorReset(e)\n });\n\n this.viewContainer?.editorClose$.pipe(takeUntilDestroyed()).subscribe({\n next: () => {\n this.cancel();\n }\n });\n\n afterNextRender(() => {\n setTimeout(() => {\n const formFields = this.elementRef.nativeElement.querySelectorAll(\n 'input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [role=\"combobox\"]:not([disabled])'\n );\n const activeEl = document.activeElement;\n const activeInputIdx = activeEl ? [...formFields].findIndex(el => activeEl.isEqualNode(el)) : 0;\n if (activeInputIdx <= 0 && this.focusThiefElRef().nativeElement.isEqualNode(formFields[0])) {\n // only if focus on focus theif (or no focus), go the next field (of first on)\n const targetIndex = (activeInputIdx <= 0 ? 1 : activeInputIdx + 1) % formFields.length;\n formFields[targetIndex].focus();\n }\n }, 500);\n });\n }\n\n ngOnInit() {\n const data = this.data();\n this.editorAction.set(data.descriptor);\n this.item.set(data.item);\n this.itemId.set(data.itemId);\n this.actionData.set(data.actionData);\n\n if (data.actionInstance) {\n this.processActionInstance(data.actionInstance);\n }\n\n // notify executor to for activation to end\n this.processActionInstance(this.actionExecutor.onActionEditorInit(this.editorAction(), this.instance, this));\n }\n\n public ngOnDestroy() {\n this.titleSubscription?.unsubscribe();\n this.fetchExecutionSubscription?.unsubscribe();\n this.submitExecutionSubscription?.unsubscribe();\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.onActionEditorDestroy(instance);\n }\n\n public onSubmit(event: FormEditorSubmitEvent<Item>) {\n if (!this.instance) {\n throw new CommonsInternalError(`Action is not instantiated in action editor for action ${this.editorAction().actionName}.`);\n }\n if (event.success) {\n // prepare parameters\n const actionParameters: ActionParameters<Item> = {\n itemId: this.itemId(),\n item: event.formItem,\n actionData: this.actionData()\n };\n if (this.editorAction().editorDescriptor.isLocalized) {\n actionParameters.locale = this.commonsService.getDefaultLocale();\n }\n\n const context = this.actionExecutor.prepareContextForEditorSubmit(\n this.editorAction(),\n actionParameters,\n this.dataProvider(),\n this.instance,\n this.data().previousActionInstance\n );\n\n this.submitExecutionSubscription?.unsubscribe();\n this.submitExecutionSubscription = context.execution$.pipe(take(1)).subscribe({\n next: res => {\n this.lastSubmitItem = event.formItem;\n const modelIdProp = this.editorAction().model?.idProperty;\n if (res && typeof res === 'object' && !this.itemId() && modelIdProp) {\n // to cover creation!\n this.updateItemId(res[modelIdProp as keyof object]);\n }\n this.actionRun.emit(res);\n }\n });\n\n this.actionExecutor.run(context);\n }\n }\n\n public cancel() {\n if (!this.instance) {\n this.logger.warn(`Action editor cannot be canceled for ${this.editorAction().actionName}, because no action instance is present`);\n return;\n }\n this.actionCancel.emit(undefined);\n this.actionExecutor.finishAction(this.instance);\n }\n\n public updateItemId(itemId: IdType | undefined) {\n this.itemId.set(itemId);\n }\n\n public updateItem(item: Item | undefined) {\n this.item.set(item);\n }\n\n public triggerSubmit() {\n this.formEditorCmp()?.submit();\n }\n\n public onValueChange(value: Item) {\n this.formValue.set(value);\n }\n\n public onAutoSave(value: EditorAutoSaveStatus) {\n this.autoSaveStatus.set(value);\n }\n\n private fetchItem() {\n if (!this.instance) {\n throw new CommonsInternalError(`Action is not instantiated in action editor for action ${this.editorAction().actionName}.`);\n }\n\n const actionParameters: ActionParameters<Item> = {\n itemId: this.itemId(),\n item: this.item(),\n actionData: this.actionData()\n };\n if (this.editorAction().editorDescriptor.isLocalized) {\n if (this.editorAction().editorDescriptor.disabled) {\n actionParameters.locale = this.commonsService.appDataLocale()!;\n } else {\n actionParameters.locale = this.commonsService.getDefaultLocale();\n }\n }\n if (this.instance?.previousInstance instanceof ActionInstance && this.instance.previousInstance.context?.parameters.item) {\n actionParameters.formItem = this.instance.previousInstance.context.parameters.item;\n }\n if (typeof this.instance?.previousInstance?.result !== 'undefined') {\n actionParameters.submitResult = this.instance?.previousInstance?.result;\n }\n\n const context = this.actionExecutor.prepareContextForEditorFetch(\n this.editorAction(),\n actionParameters,\n this.dataProvider(),\n this.instance,\n this.data().previousActionInstance\n );\n this.fetchExecutionSubscription?.unsubscribe();\n this.fetchExecutionSubscription = context.execution$.pipe(take(1)).subscribe(res => {\n this.updateItem(res ?? undefined);\n });\n\n this.actionExecutor.run(context);\n }\n\n private setEditorEnabled(isEnabled = true) {\n this.isFormDisabled.set(!isEnabled);\n }\n\n private processActionInstance(instance: IActionInstance<Item, Service>) {\n if (!(instance instanceof ActionInstance)) {\n throw new CommonsInternalError('Unknown type of action instance received', {details: instance});\n }\n if (!this.instance || this.instance.instanceLongName !== instance.instanceLongName) {\n this.unsetInstance();\n this.instance = instance;\n\n this.instanceStateSubscription = this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.ActivationEnd:\n this.fetchItem();\n break;\n case ActionInstanceStateEnum.FetchStart:\n this.setEditorEnabled(false);\n this.loading.set(true);\n break;\n case ActionInstanceStateEnum.FetchError:\n this.loading.set(false);\n break;\n case ActionInstanceStateEnum.FetchEnd:\n this.setEditorEnabled(true);\n this.loading.set(false);\n break;\n case ActionInstanceStateEnum.RunStart:\n this.setEditorEnabled(false);\n this.submitLoading.set(true);\n break;\n case ActionInstanceStateEnum.RunEnd:\n case ActionInstanceStateEnum.RunError:\n this.setEditorEnabled(true);\n this.submitLoading.set(false);\n break;\n case ActionInstanceStateEnum.NextActionStart:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(true);\n }\n break;\n case ActionInstanceStateEnum.NextActionEnd:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(false);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionStart:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(true);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionEnd:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(false);\n }\n break;\n case ActionInstanceStateEnum.FinishErrorFinal:\n this.setEditorEnabled(false);\n break;\n case ActionInstanceStateEnum.FinishSuccessFinal:\n case ActionInstanceStateEnum.FinishDismissedFinal:\n this.setEditorEnabled(false);\n this.unsetInstance();\n break;\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n this.setEditorEnabled(false);\n // make copy of item and update title to be on the latest\n this.updateItem(objectDeepCopy(this.lastSubmitItem));\n // should also unsetInstance, but let this for reactivationInstance$ listener to not interfere\n break;\n }\n });\n\n this.instanceReactivationSubscription = this.instance.reactivationInstance$.subscribe(newInstance => {\n this.processActionInstance(newInstance);\n });\n }\n }\n\n private unsetInstance() {\n this.instance = undefined;\n this.instanceStateSubscription?.unsubscribe();\n this.instanceReactivationSubscription?.unsubscribe();\n }\n\n @HostListener('window:beforeunload')\n private beforeWindowUnload() {\n if (this.data().isDialog && this.formEditorCmp()?.form.pristine === false) {\n return confirm(this.translate.instant('mngEditor.unsavedChangesConfirmation.message'));\n }\n return true;\n }\n\n @HostListener('window:keydown.Escape')\n private onEscapePressed() {\n if (\n this.data().isDialog &&\n this.editorAction().activationTrigger === ActionActivationTriggerEnum.OnRoute &&\n this.instance?.activationDialogRef &&\n parseInt(this.dialogService.dialogComponentRefMap.get(this.instance?.activationDialogRef)?.instance.container?.style.zIndex ?? '') === ZIndexUtils.getCurrent()\n )\n this.closeWithUnsavedChangesConfirmation();\n }\n\n public closeWithUnsavedChangesConfirmation(callFromGuard = false): Observable<boolean> {\n if (this.formEditorCmp()?.form.pristine === false && this.editorAction().unsavedChangesConfirmation) {\n return this.showUnsavedChangesConfirmationDialog(callFromGuard);\n } else {\n if (!callFromGuard) {\n this.cancel();\n }\n }\n\n return of(true);\n }\n\n private showUnsavedChangesConfirmationDialog(callFromGuard: boolean): Observable<boolean> {\n const subject = new Subject<boolean>();\n this.confirmationService.confirm({\n header: this.translate.instant('mngEditor.unsavedChangesConfirmation.header'),\n message: this.translate.instant('mngEditor.unsavedChangesConfirmation.message'),\n acceptLabel: this.translate.instant('general.yes'),\n rejectLabel: this.translate.instant('general.no'),\n icon: 'pi pi-exclamation-triangle',\n accept: () => {\n if (!callFromGuard) {\n this.cancel();\n }\n subject.next(true);\n subject.complete();\n },\n reject: () => {\n subject.next(false);\n subject.complete();\n }\n });\n return subject.asObservable();\n }\n\n private onEditorReset(event?: EditorResetEvent<Item>) {\n if (event?.fetch) {\n this.fetchItem();\n } else if (event?.item) {\n this.formEditorCmp()?.resetFormModel(event.item);\n } else if (event?.fields) {\n for (const key in event.fields) {\n this.formEditorCmp()?.resetFieldValue(key, event.fields[key]);\n }\n } else {\n this.formEditorCmp()?.resetFormModel();\n }\n }\n}\n\nexport interface ActionEditorInjectorContextInputData<Item, Service> {\n descriptor: ActionEditorDescriptorInst<Item, Service>;\n isDialog: boolean;\n dialogConfig?: DynamicDialogConfig;\n itemId?: IdType;\n item?: Item;\n actionData?: ActionData;\n dataProvider?: IDataProvider<Item, Service>;\n actionInstance?: ActionInstance<Item, Service>;\n previousActionInstance?: IActionInstance<any, any>;\n}\n","@if (!data().isDialog && title()) {\n <h5>{{ title() }}</h5>\n}\n@if (data().isDialog && editorAction().activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n <span class=\"p-dialog-header dialog-close-button-wrapper\">\n <button\n class=\"p-dialog-header-icon p-dialog-header-maximize p-link\"\n type=\"button\"\n (click)=\"closeWithUnsavedChangesConfirmation()\"\n (keydown.enter)=\"closeWithUnsavedChangesConfirmation()\">\n <span class=\"p-dialog-header-close-icon pi pi-times\"></span>\n </button>\n </span>\n}\n<div class=\"h-full flex flex-column\">\n @if (toolbarLeftActions().length > 0 || toolbarRightActions().length > 0) {\n <div class=\"flex-grow-1 mng-action-editor-toolbar-container\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"formValue()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"formValue()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n </div>\n }\n\n <div class=\"flex-grow-1 mng-action-editor-form-container\">\n @if (loading()) {\n <div class=\"text-center\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n }\n <input type=\"hidden\" #focusThiefInput tabindex=\"0\" />\n @if (editorAction().editorDescriptor && !loading()) {\n <mng-form-editor\n [descriptor]=\"editorAction().editorDescriptor\"\n [editorId]=\"editorAction().actionNameLong\"\n [item]=\"item()\"\n [itemId]=\"itemId()\"\n [isFormDisabled]=\"isFormDisabled()\"\n showAutoSaveStatus=\"false\"\n (valueChange)=\"onValueChange($event)\"\n (formSubmit)=\"onSubmit($event)\"\n (autoSaveStatus)=\"onAutoSave($event)\">\n </mng-form-editor>\n }\n </div>\n\n <div class=\"flex flex-row justify-content-between align-items-center mng-action-editor-footer-container\">\n <div>\n @for (action of footerLeftActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"formValue()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n @if (editorAction().editorDescriptor.autoSave) {\n <mng-editor-auto-save-status [status]=\"autoSaveStatus()\"></mng-editor-auto-save-status>\n }\n </div>\n <div>\n @for (action of footerRightActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"formValue()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </div>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, Type, computed, effect, inject, input, output} from '@angular/core';\n\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\n\nimport {ActionData, CommonsInternalError, ComponentDirective, IDataProvider, IdType} from '@mediusinc/mng-commons/core';\nimport {ActionEditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionEditorDialogData} from '../../models/action-editor-dialog-data.model';\nimport {ActionEditorInjectorContextComponent, ActionEditorInjectorContextInputData} from './injector-context/action-editor-injector-context.component';\n\n@Component({\n standalone: true,\n selector: 'mng-action-editor',\n templateUrl: './action-editor.component.html',\n imports: [ComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ActionEditorComponent<T = any, S = any> {\n public readonly injContextCmpType = ActionEditorInjectorContextComponent as Type<any>;\n\n public readonly dialogConfig = inject(DynamicDialogConfig, {optional: true});\n\n public action = input.required<ActionEditorDescriptorInst<T, S>>();\n\n private readonly dialogData = this.dialogConfig?.data as ActionEditorDialogData<T, S> | undefined;\n private readonly isDialog = !!this.dialogData;\n public readonly parentInjector = this.dialogData?.injector;\n\n // data source inputs\n public itemId = input<IdType>();\n public item = input<T>();\n public actionData = input<ActionData>();\n public dataProvider = input<IDataProvider<T, S>>();\n\n public actionRun = output<T | null | undefined>();\n public actionCancel = output<T | null | undefined>();\n\n private actionEditorWInjContextCmp?: ActionEditorInjectorContextComponent<T, S>;\n public actionEditorWInjContextInputData = computed(() => {\n return <ActionEditorInjectorContextInputData<T, S>>{\n isDialog: this.isDialog,\n dialogConfig: this.dialogConfig ?? undefined,\n descriptor: this.dialogData?.action.descriptor ?? this.action(),\n actionInstance: this.dialogData?.action.instance,\n previousActionInstance: this.dialogData?.action.previousInstance,\n itemId: this.dialogData?.action.instance.activationParameters?.itemId ?? this.itemId(),\n item: this.dialogData?.action.instance.activationParameters?.item ?? this.item(),\n actionData: this.dialogData?.action.instance.activationParameters?.actionData ?? this.actionData,\n dataProvider: this.dataProvider()\n };\n });\n\n private itemIdFirstUpdate = true;\n private itemFirstUpdate = true;\n\n public get actionEditor() {\n return this.actionEditorWInjContextCmp;\n }\n\n public get formEditorCmp() {\n return this.actionEditor?.formEditorCmp;\n }\n\n constructor() {\n effect(() => {\n const itemId = this.itemId();\n if (!this.itemIdFirstUpdate) {\n this.actionEditorWInjContextCmp?.updateItemId(itemId);\n } else {\n this.itemIdFirstUpdate = false;\n }\n });\n\n effect(() => {\n const item = this.item();\n if (!this.itemFirstUpdate) {\n this.actionEditorWInjContextCmp?.updateItem(item);\n } else {\n this.itemFirstUpdate = false;\n }\n });\n }\n\n public onActionEditorWInjContextCmp(cmp: ActionEditorInjectorContextComponent<T, S>) {\n if (this.actionEditorWInjContextCmp) {\n throw new CommonsInternalError('Action editor injection context component is already initialized');\n }\n this.actionEditorWInjContextCmp = cmp;\n this.actionEditorWInjContextCmp.actionCancel.subscribe(action => {\n this.actionCancel.emit(action);\n });\n this.actionEditorWInjContextCmp.actionRun.subscribe(action => {\n this.actionRun.emit(action);\n });\n }\n\n public cancel() {\n this.actionEditorWInjContextCmp?.cancel();\n }\n\n public triggerSubmit() {\n this.actionEditorWInjContextCmp?.triggerSubmit();\n }\n}\n","<div\n [mngComponent]=\"injContextCmpType\"\n [inputs]=\"{\n data: actionEditorWInjContextInputData()\n }\"\n [parentInjector]=\"parentInjector\"\n (instanceCreated)=\"onActionEditorWInjContextCmp($event)\"></div>\n","import {ChangeDetectionStrategy, Component, computed, inject, input, output} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {of} from 'rxjs';\n\nimport {ActionData, ActionParameters, CommonsService, IdType} from '@mediusinc/mng-commons/core';\nimport {DropdownComponent} from '@mediusinc/mng-commons/form';\nimport {LookupDataProviderInst, lookupDataProvider} from '@mediusinc/mng-commons/form/api';\nimport {ActionDescriptorInst, IActionComponent} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ViewContainer} from '../../services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-data-language-dropdown',\n imports: [DropdownComponent, FormsModule],\n templateUrl: 'data-language-dropdown.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataLanguageDropdownComponent<T = any> implements IActionComponent<T> {\n private readonly viewContainer = inject(ViewContainer, {optional: true});\n public readonly commons = inject(CommonsService);\n\n public action = input.required<ActionDescriptorInst<T>>();\n public actionData = input.required<ActionData>();\n public item = input.required<T>();\n public itemId = input.required<IdType>();\n public enabled = input.required<boolean>();\n public loading = input.required<boolean>();\n\n public trigger = output<ActionParameters<T>>();\n\n // dropdown properties\n public selectionItemsDataProvider = computed<LookupDataProviderInst<string>>(() => lookupDataProvider<string>().withLookup(() => of(this.commons.appDataLocales())));\n\n public updateDataLocale(dataLang: string): void {\n this.commons.setAppDataLocale(dataLang);\n this.viewContainer?.reloadTable({});\n }\n}\n","<mng-dropdown [dataProvider]=\"selectionItemsDataProvider()\" [ngModel]=\"commons.appDataLocale()\" [showClear]=\"false\" (valueChange)=\"updateDataLocale($event)\"></mng-dropdown>\n","import {ChangeDetectionStrategy, Component, DestroyRef, OnDestroy, OnInit, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, Params, Router} from '@angular/router';\n\nimport {Observable, Subscription, of} from 'rxjs';\n\nimport {ActionData, ActionParameters, CommonsInternalError} from '@mediusinc/mng-commons/core';\nimport {ActionActivationTriggerEnum, ActionDescriptorInst, ActionTypeEnum, IActionInstance} from '@mediusinc/mng-commons/tableview/api';\n\nimport {CanComponentDeactivate} from '../../models/can-component-deactivate.model';\nimport {ActionInstanceStateEnum} from '../../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../services/action-executor.service';\nimport {provideActionExecutor} from '../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-action-route',\n templateUrl: './action-route.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideActionExecutor()]\n})\nexport default class ActionRouteComponent<Item, Service> implements OnInit, OnDestroy, CanComponentDeactivate {\n private readonly router = inject(Router);\n private readonly route = inject(ActivatedRoute);\n private readonly actionExecutor = inject(ActionExecutorService);\n private readonly viewContainer? = inject(ViewContainer<Item, Service>, {optional: true});\n private readonly destroyRef = inject(DestroyRef);\n\n private actions: Array<ActionDescriptorInst<any>> = this.viewContainer?.actions().filter(a => a.activationTrigger === ActionActivationTriggerEnum.OnRoute) ?? [];\n private instance?: ActionInstance<Item, Service>;\n private instanceStateSubscription?: Subscription;\n private instanceReactivationSubscription?: Subscription;\n\n private isRouterNavigationInProgress = false;\n\n public ngOnInit() {\n this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(p => {\n const action = this.findActionForRoute(p) ?? undefined;\n if (action) {\n this.activateAction(action, p, this.route.snapshot.queryParams);\n }\n });\n this.router.events.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(e => {\n if (e instanceof NavigationStart) {\n this.isRouterNavigationInProgress = true;\n } else if (e instanceof NavigationEnd || e instanceof NavigationCancel || e instanceof NavigationError || e instanceof NavigationSkipped) {\n this.isRouterNavigationInProgress = false;\n }\n });\n }\n\n public ngOnDestroy() {\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.onActionRouteDestroy(instance);\n }\n\n private activateAction(action: ActionDescriptorInst<any>, p: Params, qp: Params) {\n const itemId = p['itemId'];\n const actionData: ActionData = {};\n for (const key in p) {\n if (key === 'itemId') {\n continue;\n }\n actionData[key] = p[key];\n }\n for (const key in qp) {\n actionData[key] = p[key];\n }\n\n this.processActionInstance(\n this.actionExecutor.activateAction(action, <ActionParameters<Item>>{\n itemId: itemId,\n actionData: actionData,\n sourceComponent: this,\n route: this.route\n })\n );\n }\n\n private untriggerAction() {\n if (!this.instance || this.isRouterNavigationInProgress) {\n return;\n }\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.finishActionRouteUntrigger(instance);\n }\n\n private findActionForRoute(params: Params): ActionDescriptorInst<any> | null {\n const urlSegments = this.route.snapshot.url;\n for (const action of this.actions) {\n let actionUrl = action.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n const actionUrlSegments = actionUrl.split('/');\n if (actionUrlSegments.length !== urlSegments.length) {\n continue;\n }\n let isMatch = true;\n for (let i = 0; i < actionUrlSegments.length; i++) {\n if (actionUrlSegments[i].startsWith(':')) {\n const paramName = actionUrlSegments[i].substring(1);\n if (!params[paramName]) {\n isMatch = false;\n break;\n }\n } else if (actionUrlSegments[i] !== urlSegments[i].path) {\n isMatch = false;\n break;\n }\n }\n if (isMatch) {\n return action;\n }\n }\n return null;\n }\n\n private processActionInstance(instance: IActionInstance<Item, Service>) {\n if (!(instance instanceof ActionInstance)) {\n throw new CommonsInternalError('Unknown type of action instance received', {details: instance});\n }\n\n if (!this.instance || this.instance.instanceLongName !== instance.instanceLongName) {\n this.unsetInstance();\n this.instance = instance;\n\n this.instanceStateSubscription = this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n this.viewContainer?.reloadTable(); // reload only if no error in action and\n break;\n case ActionInstanceStateEnum.FinishSuccessFinal:\n this.viewContainer?.reloadTable(); // reload only if no error in action and\n this.untriggerAction();\n break;\n case ActionInstanceStateEnum.FinishErrorFinal:\n case ActionInstanceStateEnum.FinishDismissedFinal:\n this.untriggerAction();\n break;\n }\n });\n\n this.instanceReactivationSubscription = this.instance.reactivationInstance$.subscribe(newInstance => {\n this.processActionInstance(newInstance);\n });\n }\n }\n\n public canDeactivate(): Observable<boolean> {\n if (this.instance?.action.type === ActionTypeEnum.Editor && this.instance.activationEditorComponentRef) {\n return this.instance.activationEditorComponentRef.closeWithUnsavedChangesConfirmation(true);\n }\n\n return of(true);\n }\n\n private unsetInstance() {\n this.instance = undefined;\n this.instanceStateSubscription?.unsubscribe();\n this.instanceReactivationSubscription?.unsubscribe();\n }\n}\n","","import {StyleSizeEnum, Styles} from '@mediusinc/mng-commons/core';\nimport {TableDescriptorInst, TableSizeEnum} from '@mediusinc/mng-commons/table/api';\nimport {ActionDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nexport function calculateTableColumnActionWidth(table: TableDescriptorInst<unknown>, actions: Array<ActionDescriptorInst<unknown>>): number {\n const buttonsWidth = actions.reduce((acc, action) => acc + getActionButtonRoundedWidth(action) + 2 * Styles.ACTION_BUTTON_MARGIN_X, 0);\n const tablePadding = getTableCellPaddingX(table);\n return buttonsWidth + 2 * tablePadding;\n}\n\nexport function getTableCellPaddingX(table: TableDescriptorInst<unknown>): number {\n switch (table.size) {\n case TableSizeEnum.Small:\n return Styles.TABLE_CELL_PADDING_X_SM;\n case TableSizeEnum.Large:\n return Styles.TABLE_CELL_PADDING_X_LG;\n default:\n return Styles.TABLE_CELL_PADDING_X;\n }\n}\n\nexport function getActionButtonRoundedWidth(action: ActionDescriptorInst<any>): number {\n switch (action.button.styleClass.size) {\n case StyleSizeEnum.ExtraSmall:\n return Styles.BUTTON_ROUNDED_WIDTH_XS;\n case StyleSizeEnum.Small:\n return Styles.BUTTON_ROUNDED_WIDTH_SM;\n case StyleSizeEnum.Large:\n case StyleSizeEnum.ExtraLarge:\n return Styles.BUTTON_ROUNDED_WIDTH_LG;\n case StyleSizeEnum.Normal:\n default:\n return Styles.BUTTON_ROUNDED_WIDTH;\n }\n}\n","import {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n QueryList,\n Signal,\n TemplateRef,\n Type,\n booleanAttribute,\n computed,\n contentChildren,\n inject,\n input,\n output,\n viewChild,\n viewChildren\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TableRowReorderEvent} from 'primeng/table';\n\nimport {ActionParameters, ComponentDirective, DataListResult, TemplateDirective, findTemplateByName} from '@mediusinc/mng-commons/core';\nimport {TableComponent} from '@mediusinc/mng-commons/table';\nimport {ITableDataProvider, TableCellClickEvent, TableDescriptorInst, TableLoadEvent, TableReloadEvent} from '@mediusinc/mng-commons/table/api';\nimport {ActionDescriptorInst, ActionPositionEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {calculateTableColumnActionWidth} from '../../helpers/styles';\nimport {ActionInstance} from '../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../services/action-executor.service';\nimport {provideActionExecutor} from '../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../services/view-container.service';\nimport {ActionComponent} from '../action/action.component';\n\n@Component({\n standalone: true,\n selector: 'mng-action-table',\n templateUrl: './action-table.component.html',\n imports: [TableComponent, ActionComponent, TemplateDirective, NgTemplateOutlet, AsyncPipe],\n providers: [provideActionExecutor()],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ActionTableComponent<Item = any, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> {\n private readonly route = inject(ActivatedRoute);\n private readonly actionExecutor = inject(ActionExecutorService);\n private readonly viewContainer = inject(ViewContainer<Item, Service>, {optional: true});\n\n // metadata input\n public descriptor = input.required<TableDescriptorInst<Item, Sorts, Filters>>();\n\n // data source inputs\n public items = input<Array<Item>>();\n public result = input<DataListResult<Item>>();\n\n public loading = input<boolean, unknown>(false, {transform: booleanAttribute});\n public dataProvider = input<ITableDataProvider<Item, Service, Sorts, Filters>>();\n public useQueryParams = input(false);\n\n // extra features input\n public selectionMode = input<'single' | 'multiple'>('multiple');\n public selectionEnabled = input(false);\n public globalFilterFields = input<string[]>();\n public rowReorderEnabled = input<boolean>(true);\n\n // actions\n public actions = input<Array<ActionDescriptorInst<any>>>([]); // can be anything\n\n // component inputs\n public captionComponent = input<Type<any>>();\n public columnActionComponent = input<Type<any>>();\n public columnActionMinWidthInput = input<number | undefined>(undefined, {alias: 'columnActionMinWidth'});\n public columnActionMinWidth = computed(() =>\n this.descriptor() && !this.columnActionMinWidthInput()\n ? calculateTableColumnActionWidth(this.descriptor() as TableDescriptorInst<any>, this.rowInlineActions())\n : this.columnActionMinWidthInput()\n );\n\n // event outputs\n public tableLoad = output<TableLoadEvent>();\n public selectionChange = output<Array<Item>>();\n public captionComponentInstance = output<any>();\n public columnActionComponentInstance = output<any>();\n public rowReorder = output<TableRowReorderEvent>();\n\n // content and view queries\n public templates = contentChildren(TemplateDirective);\n public components = viewChildren(QueryList<ComponentDirective<any>>);\n public table = viewChild.required(TableComponent);\n\n // templates\n public captionTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'caption'));\n public footerTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'footer'));\n public rowExpandTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'rowExpandContent'));\n\n // actions\n public rowClickActions = computed(() => {\n return this.actions().filter(action => action.position === ActionPositionEnum.RowClick);\n });\n\n public rowInlineActions = computed(() => {\n return this.actions().filter(action => action.position === ActionPositionEnum.RowInline);\n });\n\n constructor() {\n this.viewContainer?.tableReload$.pipe(takeUntilDestroyed()).subscribe(e => this.reload(e as TableReloadEvent<Sorts, Filters>));\n }\n\n public reload(e?: TableReloadEvent<Sorts, Filters>) {\n this.table().reload(e);\n }\n\n public onCellClick(event: TableCellClickEvent<Item>) {\n if (this.rowClickActions().length) {\n for (const action of this.rowClickActions()) {\n const idProp = this.descriptor()?.trackProperty ?? action?.model?.idProperty;\n const parameters: ActionParameters<Item> = {\n itemId: idProp ? event.rowItem[idProp as keyof object] : undefined,\n item: event.rowItem,\n actionData: {\n itemIndex: event.rowIndex\n },\n route: this.route,\n sourceComponent: this\n };\n this.actionExecutor.triggerAction(action, parameters, true);\n }\n }\n }\n\n public onSelectionChange(items: Array<Item>) {\n this.selectionChange.emit(items);\n }\n\n public onRowReorder(event: TableRowReorderEvent) {\n this.rowReorder.emit(event);\n }\n\n public onActionFinish(runResult: ActionInstance<Item, Service>) {\n if (!runResult.error) {\n this.reload();\n }\n }\n}\n","<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","import {CanDeactivateFn} from '@angular/router';\n\nimport {CanComponentDeactivate} from '../models/can-component-deactivate.model';\n\nexport const unsavedChangesGuard: CanDeactivateFn<CanComponentDeactivate> = (component: CanComponentDeactivate) => {\n return component.canDeactivate();\n};\n","import {Injector, Provider} from '@angular/core';\n\nimport {ViewContainer} from '../view-container.service';\n\nexport function provideViewContainer(provideParentIfPresent = true): Provider {\n return {\n provide: ViewContainer,\n useFactory: (injector: Injector) => {\n if (provideParentIfPresent) {\n return injector.get(ViewContainer, null, {optional: true, skipSelf: true}) ?? new ViewContainer();\n } else {\n return new ViewContainer();\n }\n },\n deps: [Injector]\n };\n}\n","import {Injectable} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nimport {DataListResult, Nullable} from '@mediusinc/mng-commons/core';\nimport {\n DataProviderExecutor,\n IActionContext,\n runCreateFromDataProvider,\n runDeleteFromDataProvider,\n runFetchFromDataProvider,\n runFnFromDataProviderOrFallback,\n runGetAllFromDataProvider,\n runUpdateFromDataProvider\n} from '@mediusinc/mng-commons/tableview/api';\n\n@Injectable()\nexport class DefaultDataProviderExecutor extends DataProviderExecutor {\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>): Observable<DataListResult<Item>> | null;\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<DataListResult<Item>>): Observable<DataListResult<Item>>;\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<DataListResult<Item>> | null;\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<DataListResult<Item>>): Observable<DataListResult<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runGetAllFromDataProvider, fallback) : runGetAllFromDataProvider(ctx);\n }\n\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runFetchFromDataProvider, fallback) : runFetchFromDataProvider(ctx);\n }\n\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runCreateFromDataProvider, fallback) : runCreateFromDataProvider(ctx);\n }\n\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runUpdateFromDataProvider, fallback) : runUpdateFromDataProvider(ctx);\n }\n\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Nullable<Item>> | null;\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runDeleteFromDataProvider, fallback) : runDeleteFromDataProvider(ctx);\n }\n}\n","import {DestroyRef, Directive, OnInit, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {BehaviorSubject} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {CommonsInternalError} from '@mediusinc/mng-commons/core';\nimport {AFieldDescriptor, CommonsFormlyFieldConfig, CommonsFormlyFormOptions, CommonsFormlyFormState, EditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\n// eslint-disable-next-line @angular-eslint/prefer-standalone\n@Directive()\nexport abstract class ACommonsFormlyFieldType<Model, EditorModel, Descriptor = AFieldDescriptor<Model, EditorModel>>\n extends FieldType<CommonsFormlyFieldConfig<Model, EditorModel>>\n implements OnInit\n{\n protected readonly destroyRef = inject(DestroyRef);\n protected formStateDisabledSubject = new BehaviorSubject(false);\n\n protected formStateDisabled$ = this.formStateDisabledSubject.asObservable();\n\n get descriptor(): Descriptor {\n return this.props.descriptor as Descriptor;\n }\n\n get editorDescriptor(): EditorDescriptorInst<EditorModel, any> {\n return this.props.editorDescriptor!;\n }\n\n override get options(): CommonsFormlyFormOptions<EditorModel> {\n return this.field.options as CommonsFormlyFormOptions<EditorModel>;\n }\n\n override get formState(): CommonsFormlyFormState<EditorModel> {\n return this.options?.formState ?? {};\n }\n\n ngOnInit() {\n if (!this.props.editorDescriptor) {\n throw new CommonsInternalError(`Editor descriptor is not defined for key ${this.key}.`);\n }\n\n this.props.fieldComponent = this as ACommonsFormlyFieldType<Model, EditorModel>;\n if (!this.formState.disabled$) throw new CommonsInternalError('formState.disabled$ must be defined');\n\n this.formState.disabled$\n .pipe(startWith(this.formState.disabled ?? false), takeUntilDestroyed(this.destroyRef))\n .subscribe(value => this.formStateDisabledSubject.next(value));\n }\n}\n","import {JsonPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {AbstractControl, FormControl, FormGroup} from '@angular/forms';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\nimport {MessageModule} from 'primeng/message';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {Subscription, isObservable} from 'rxjs';\n\nimport {FieldActionDescriptor, FieldActionResult, FieldActionResultMessage, IFormEditorComponent} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-action',\n templateUrl: './formly-field-action.component.html',\n imports: [ButtonModule, RippleModule, TranslateModule, TooltipModule, JsonPipe, MessageModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldActionComponent<EditorModel> extends ACommonsFormlyFieldType<void, EditorModel, FieldActionDescriptor<EditorModel>> implements OnInit, OnDestroy {\n public buttonClass = 'p-button-primary';\n\n public actionMessage?: FieldActionResultMessage;\n\n private resultSubscription?: Subscription;\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n this.buttonClass = this.descriptor.button.styleClass.build();\n }\n\n ngOnDestroy() {\n this.resultSubscription?.unsubscribe();\n }\n\n onClick() {\n this.actionMessage = undefined;\n\n const result = this.descriptor.runFunction?.({\n descriptor: this.descriptor,\n formEditorComponent: this.props.formEditorComponent as IFormEditorComponent<EditorModel>,\n formly: {\n model: this.model,\n formControl: this.formControl as FormControl<void>,\n form: this.form as FormGroup<{[K in keyof EditorModel]: AbstractControl<EditorModel[K]>}>,\n formState: this.formState,\n options: this.options,\n props: this.props\n }\n });\n\n if (result) {\n if (isObservable(result)) {\n this.resultSubscription?.unsubscribe();\n this.resultSubscription = result.subscribe(res => this.processResult(res));\n } else {\n this.processResult(result);\n }\n }\n }\n\n private processResult(res: FieldActionResult) {\n if (res.message) {\n this.actionMessage = res.message;\n }\n }\n}\n","<div class=\"flex\">\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(descriptor.button.icon)\"\n [label]=\"$any(descriptor.button.label === null ? null : descriptor.button.label ?? props!.label) | translate\"\n [pTooltip]=\"$any(descriptor.button.tooltip) | translate\"\n [disabled]=\"formControl.disabled\"\n (click)=\"onClick()\"\n [class]=\"buttonClass + (actionMessage ? ' mr-2' : '')\"></button>\n @if (actionMessage) {\n <p-message [text]=\"actionMessage.content\" [severity]=\"actionMessage.severity ?? 'success'\"></p-message>\n }\n</div>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {AutocompleteComponent} from '@mediusinc/mng-commons/form';\nimport {FieldLookupDescriptor, FormFieldEventComponentSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-autocomplete',\n templateUrl: './formly-field-autocomplete.component.html',\n imports: [AutocompleteComponent, ReactiveFormsModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldAutocompleteComponent<T, ET> extends ACommonsFormlyFieldType<T, ET, FieldLookupDescriptor<T, ET>> implements OnInit, AfterViewInit, OnDestroy {\n public override ngOnInit() {\n super.ngOnInit();\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.formControl.valueChanges.pipe(startWith(this.formControl.value), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef)).subscribe(v => {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {\n value: v\n });\n\n this.props.onValueChange?.(this.field, v);\n });\n }\n\n public ngAfterViewInit() {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"$any(formControl)\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [className]=\"descriptor.inputClassName ?? 'mng-formly-field-autocomplete'\"\n [showClear]=\"!props.required\"\n [selectFirst]=\"descriptor.autocompleteSelectFirst ?? false\"\n [autoClear]=\"descriptor.autocompleteAutoClear ?? false\"\n [openOnFocus]=\"descriptor.autocompleteAutoClear ?? true\"\n [inlineSearch]=\"descriptor.autocompleteInlineSearch ?? false\">\n</mng-autocomplete>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {ComponentDirective} from '@mediusinc/mng-commons/core';\nimport {FieldInputDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-custom',\n template: ` <ng-container [mngComponent]=\"descriptor.customComponentType!\" [inputs]=\"inputs\"></ng-container> `,\n imports: [ComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldCustomComponent<ET> extends ACommonsFormlyFieldType<any, ET, FieldInputDescriptor<ET>> implements OnInit {\n public inputs: Record<string, any> = {};\n\n override ngOnInit() {\n super.ngOnInit();\n\n this.inputs = {\n field: this.field,\n model: this.model,\n form: this.form,\n options: this.options,\n key: this.key,\n formControl: this.formControl,\n props: this.props,\n showError: this.showError,\n id: this.id,\n formState: this.formState,\n ...this.descriptor.customComponentInputs\n };\n }\n}\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {DropdownComponent} from '@mediusinc/mng-commons/form';\nimport {FieldLookupDescriptor, FormFieldEventComponentSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-dropdown',\n templateUrl: './formly-field-dropdown.component.html',\n imports: [DropdownComponent, ReactiveFormsModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldDropdownComponent<T, ET> extends ACommonsFormlyFieldType<T, ET, FieldLookupDescriptor<T, ET>> implements OnInit, OnDestroy {\n public override ngOnInit() {\n super.ngOnInit();\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.formControl.valueChanges.pipe(startWith(this.formControl.value), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef)).subscribe(v => {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {\n value: v\n });\n\n this.props.onValueChange?.(this.field, v);\n });\n }\n\n ngOnDestroy(): void {\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-dropdown\n [id]=\"$any(key)\"\n [formControl]=\"$any(formControl)\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"descriptor.placeholder\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsLabelTranslate]=\"descriptor.optionsLabelTranslate\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [optionsDisabledProperty]=\"descriptor.optionsDisabledProperty\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [showClear]=\"!props.required\"\n [className]=\"descriptor.inputClassName ?? 'mng-formly-field-dropdown'\">\n</mng-dropdown>\n","import {CommonsInternalError, getI18nTypeGroupKey, getI18nTypePropertyKey, getI18nTypeTabKey} from '@mediusinc/mng-commons/core';\nimport {AFieldDescriptor, AFieldGroupDescriptor, AGenericFieldDescriptor, EditorDescriptorInst, FieldGroupTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nexport function getEditorFieldLabel(descriptor?: AGenericFieldDescriptor, editorDescriptor?: EditorDescriptorInst<any, any>) {\n if (descriptor instanceof AFieldDescriptor) {\n if (descriptor.label === null) {\n return null;\n } else if (!descriptor.label) {\n return getI18nTypePropertyKey(editorDescriptor?.model.i18nBaseKey ?? '', descriptor.property);\n } else {\n return descriptor.label;\n }\n } else if (descriptor instanceof AFieldGroupDescriptor) {\n if (descriptor.title === null) {\n return null;\n } else if (!descriptor.title) {\n switch (descriptor.type) {\n case FieldGroupTypeEnum.Tab:\n return getI18nTypeTabKey(editorDescriptor?.model.i18nBaseKey ?? '', descriptor.name);\n case FieldGroupTypeEnum.Fieldset:\n return getI18nTypeGroupKey(editorDescriptor?.model.i18nBaseKey ?? '', descriptor.name);\n case FieldGroupTypeEnum.Logical:\n return null;\n default:\n throw new CommonsInternalError(`Label not implemented for type ${descriptor.type}`);\n }\n } else {\n return descriptor.title;\n }\n } else {\n return null;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {AGenericFieldDescriptor, EditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getEditorFieldLabel} from '../../../helpers/editor-field';\n\n@Pipe({\n standalone: true,\n name: 'mngFormlyFieldLabel',\n pure: true\n})\nexport class FormlyFieldLabelPipe implements PipeTransform {\n transform(value?: AGenericFieldDescriptor, editorDescriptor?: EditorDescriptorInst<any, any>): string {\n return getEditorFieldLabel(value, editorDescriptor) ?? '';\n }\n}\n","import {ChangeDetectionStrategy, Component, OnInit, signal} from '@angular/core';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {FieldsetModule} from 'primeng/fieldset';\n\nimport {CommonsFormlyFieldConfig, FieldGroupDescriptor, FieldGroupTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-fieldset',\n templateUrl: './formly-field-fieldset.component.html',\n imports: [FieldsetModule, FormlyModule, TranslateModule, FormlyFieldLabelPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldFieldsetComponent<ET> extends ACommonsFormlyFieldType<ET, ET, FieldGroupDescriptor<ET>> implements OnInit {\n public readonly typeFieldset = FieldGroupTypeEnum.Fieldset;\n\n public fieldGroup = signal<{config: CommonsFormlyFieldConfig; type?: FieldGroupTypeEnum}[]>([]);\n\n override ngOnInit() {\n super.ngOnInit();\n\n this.fieldGroup.set(\n this.field.fieldGroup === undefined\n ? []\n : this.field.fieldGroup.map(f => ({\n type: ((f as CommonsFormlyFieldConfig).props.descriptor as FieldGroupDescriptor<any, any>)?.type,\n config: f as CommonsFormlyFieldConfig\n }))\n );\n }\n}\n","@for (group of fieldGroup(); track group) {\n @switch (group.type) {\n @case (typeFieldset) {\n <p-fieldset [legend]=\"group.config.props.descriptor | mngFormlyFieldLabel: group.config.props.editorDescriptor | translate\">\n <formly-field [field]=\"group.config\"></formly-field>\n </p-fieldset>\n }\n @default {\n <formly-field [field]=\"group.config\"></formly-field>\n }\n }\n}\n","import {ChangeDetectionStrategy, Component, LOCALE_ID, OnDestroy, OnInit, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormArray, FormBuilder, FormControl, ReactiveFormsModule, ValidatorFn, Validators} from '@angular/forms';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {FileUploadModule} from 'primeng/fileupload';\nimport {TimesIcon} from 'primeng/icons/times';\nimport {ImageModule} from 'primeng/image';\nimport {InputMaskModule} from 'primeng/inputmask';\nimport {InputNumberModule} from 'primeng/inputnumber';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {InputTextareaModule} from 'primeng/inputtextarea';\nimport {RadioButtonModule} from 'primeng/radiobutton';\nimport {RippleModule} from 'primeng/ripple';\nimport {distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {ComponentDirective} from '@mediusinc/mng-commons/core';\nimport {InputTrimDirective} from '@mediusinc/mng-commons/form';\nimport {FieldInputDescriptor, FieldInputTypeEnum, FormFieldEventComponentSubtype, FormFieldEventTypeEnum, IFormEditorComponent} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getFormEditorWarningMessage} from '../../../../helpers/notification';\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-input',\n templateUrl: './formly-field-input.component.html',\n imports: [\n InputNumberModule,\n ReactiveFormsModule,\n FormlyModule,\n TranslateModule,\n InputSwitchModule,\n RadioButtonModule,\n InputMaskModule,\n FileUploadModule,\n ImageModule,\n InputTextareaModule,\n InputTextModule,\n RippleModule,\n TimesIcon,\n InputTrimDirective,\n ComponentDirective,\n InputTrimDirective,\n FormlyFieldLabelPipe\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldInputComponent<ET> extends ACommonsFormlyFieldType<any, ET, FieldInputDescriptor<ET>> implements OnInit, OnDestroy {\n public readonly NUMBER_MIN_SAFE = Number.MIN_SAFE_INTEGER;\n public readonly NUMBER_MAX_SAFE = Number.MAX_SAFE_INTEGER;\n public readonly DESC_INPUT_TYPE_IMAGE_FILE = FieldInputTypeEnum.ImageFile;\n\n public readonly applicationLocale = inject(LOCALE_ID);\n private readonly formBuilder = inject(FormBuilder);\n private readonly translateService = inject(TranslateService);\n\n public iFormControl!: FormControl;\n public numberFieldMode: 'decimal' | 'currency' = 'decimal';\n public currency?: string;\n\n private files: File[] = [];\n public imageFormArray: FormArray = this.formBuilder.array([]);\n\n public formEditorComponent?: IFormEditorComponent<ET, any>;\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.iFormControl = this.formControl as FormControl;\n\n this.props.fieldComponent = this;\n this.formEditorComponent = this.props.formEditorComponent;\n\n if (this.descriptor.fieldType === FieldInputTypeEnum.Currency) {\n this.numberFieldMode = 'currency';\n\n if (this.descriptor.currencyFromProperty) {\n this.iFormControl\n .get(this.descriptor.currencyFromProperty)!\n .valueChanges.pipe(takeUntilDestroyed(this.destroyRef), startWith(this.model[this.descriptor.currencyFromProperty]), distinctUntilChanged())\n .subscribe(c => {\n this.currency = c;\n });\n } else {\n this.currency = this.descriptor.currency ?? 'EUR';\n }\n }\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.formControl!.valueChanges.pipe(takeUntilDestroyed(this.destroyRef), startWith(this.formControl!.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {\n value: v\n });\n this.props.onValueChange?.(this.field, v);\n });\n\n if (this.props.type === 'imageUrl') {\n const startValue = this.iFormControl.value;\n if (this.descriptor.fileMultiple) {\n if (Array.isArray(startValue) && startValue.length > 0) {\n startValue.forEach(v => this.addImageUrl(v));\n } else if (typeof startValue === 'string' && startValue.length > 0) {\n this.addImageUrl(startValue);\n } else {\n this.addImageUrl();\n }\n } else {\n if (typeof startValue === 'string' && startValue.length > 0) {\n this.addImageUrl(startValue);\n } else {\n this.addImageUrl();\n }\n }\n\n this.imageFormArray!.valueChanges.pipe(takeUntilDestroyed(this.destroyRef), distinctUntilChanged()).subscribe(v => {\n const fcv = v.filter((i: unknown) => !!i && typeof i === 'string' && i.length > 0);\n this.iFormControl.setValue(fcv.length > 0 ? (this.descriptor.fileMultiple ? fcv : fcv[0]) : undefined);\n this.iFormControl.updateValueAndValidity();\n });\n }\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n public onFileSelect(event: any) {\n const files = event.files as File[];\n if (this.descriptor.fileMultiple) {\n this.files = [...this.files, ...files];\n } else {\n this.files = [...files];\n }\n this.updateFileFormControl();\n }\n\n public onFileRemove(event: any) {\n const file = event.file as File;\n this.files = this.files.filter(f => f !== file);\n this.updateFileFormControl();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onFileClear(event: Event) {\n this.files = [];\n this.updateFileFormControl();\n }\n\n public addImageUrl(value: string | null = null) {\n const validators: ValidatorFn[] = [];\n validators.push(Validators.pattern(/^(http|https):\\/\\/[^ \"]+$/));\n validators.push(Validators.minLength(1));\n this.imageFormArray.push(this.formBuilder.control(value, validators));\n }\n\n public removeImageUrlAt(idx: number) {\n this.imageFormArray.removeAt(idx);\n }\n\n public onImageUrlLoadError() {\n if (this.formEditorComponent) {\n const message = getFormEditorWarningMessage(this.translateService, 'general.error', 'mngEditor.imageLoadError');\n this.formEditorComponent.formMessages.set([...this.formEditorComponent.formMessages(), message]);\n }\n }\n\n private updateFileFormControl() {\n const value = this.files.length > 0 ? [...this.files] : null;\n this.iFormControl.setValue(value);\n if (typeof this.descriptor.fileOnSelectHandler === 'function') {\n this.descriptor.fileOnSelectHandler(value, this.iFormControl);\n }\n }\n\n public isUrlSvgImage(url: string) {\n return url.endsWith('.svg');\n }\n\n public isFileImageSvg(file: File) {\n return /^image\\/svg/.test(file.type);\n }\n\n public getFileDocumentTypeIcon(file: File) {\n if (/^video\\//.test(file.type)) {\n return 'pi-video';\n }\n if (/^audio\\//.test(file.type)) {\n return 'pi-volume-up';\n }\n switch (file.type) {\n case 'application/pdf':\n return 'pi-file-pdf';\n case 'application/msword':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n case 'application/vnd.oasis.opendocument.presentation':\n return 'pi-file-word';\n case 'application/vnd.oasis.opendocument.spreadsheet':\n case 'application/vnd.ms-excel':\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n return 'pi-file-excel';\n default:\n return 'pi-file';\n }\n }\n}\n","@switch (props.type) {\n @case ('number') {\n <p-inputNumber\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"descriptor.numberAutoCorrect ? descriptor.numberMin ?? NUMBER_MIN_SAFE : undefined\"\n [max]=\"descriptor.numberAutoCorrect ? descriptor.numberMax ?? NUMBER_MAX_SAFE : undefined\"\n [step]=\"$any(descriptor.numberStep)\"\n [useGrouping]=\"descriptor.numberUseGrouping\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-number'\"\n [locale]=\"descriptor.locale ?? applicationLocale\"\n [mode]=\"numberFieldMode\"\n [prefix]=\"descriptor.numberPrefix\"\n [suffix]=\"descriptor.numberSuffix\"\n [currency]=\"currency\"\n [currencyDisplay]=\"descriptor.currencyDisplay\">\n </p-inputNumber>\n }\n @case ('switch') {\n <div class=\"field flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName ?? ''\"\n >{{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n <p-inputSwitch\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-switch'\"></p-inputSwitch>\n @if (showError) {\n <small class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n </div>\n }\n @case ('radio') {\n @for (option of descriptor.radioOptions; track option) {\n <div [id]=\"key\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-radio'\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + (descriptor.labelClassName ?? '')\">{{ option.title | translate }}</label>\n </div>\n }\n }\n @case ('textarea') {\n <textarea\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pInputTextarea\n [class]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-textarea'\">\n </textarea>\n }\n @case ('mask') {\n <p-inputMask\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"descriptor.mask\"\n [placeholder]=\"descriptor.placeholder\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-mask'\">\n </p-inputMask>\n }\n @case ('file') {\n <p-fileUpload\n #fileUploadInput\n [id]=\"$any(key)\"\n [disabled]=\"iFormControl.disabled\"\n [multiple]=\"descriptor.fileMultiple ?? false\"\n [accept]=\"descriptor.fileAccept ?? (descriptor.fieldType === DESC_INPUT_TYPE_IMAGE_FILE ? 'image/*' : undefined)\"\n [maxFileSize]=\"descriptor.fileMaxFileSize ?? 500000\"\n [showUploadButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear($event)\">\n <ng-template let-file let-idx=\"index\" pTemplate=\"file\">\n <div class=\"p-fileupload-row\">\n <div>\n @if (fileUploadInput.isImage(file)) {\n @if (descriptor.imagePreview) {\n @if (descriptor.imagePreviewComponent) {\n <ng-container\n [mngComponent]=\"descriptor.imagePreviewComponent\"\n [inputs]=\"{\n imageUrl: file.objectURL\n }\">\n </ng-container>\n } @else if (!isFileImageSvg(file) || descriptor.imagePreviewAllowSvg) {\n <img [src]=\"file.objectURL\" [width]=\"fileUploadInput.previewWidth\" (error)=\"fileUploadInput.imageError($event)\" />\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n }\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n }\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i [class]=\"'pi ' + getFileDocumentTypeIcon(file) + ' text-2xl'\"></i>\n </span>\n }\n </div>\n <div class=\"p-fileupload-filename\">{{ file.name }}</div>\n <div>{{ fileUploadInput.formatSize(file.size) }}</div>\n <div>\n <button\n type=\"button\"\n pButton\n (click)=\"fileUploadInput.remove($event, idx)\"\n [disabled]=\"fileUploadInput.uploading\"\n class=\"p-button-icon-only\"\n [class]=\"fileUploadInput.removeStyleClass\">\n @if (!fileUploadInput.cancelIconTemplate) {\n <TimesIcon />\n }\n </button>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"content\" let-files>\n @if (files.length === 0) {\n <div class=\"text-gray-300 dropdown-area\">\n <span><i class=\"pi pi-file-import mr-2\"></i>{{ 'fileUpload.dragAndDrop' | translate }}</span>\n </div>\n }\n </ng-template>\n </p-fileUpload>\n }\n @case ('imageUrl') {\n <div>\n @if (descriptor.imagePreview) {\n <div class=\"flex flex-wrap justify-content-start\">\n @for (image of imageFormArray.controls; track image; let idx = $index) {\n @if (imageFormArray.at(idx).valid && imageFormArray.at(idx).value) {\n @if (descriptor.imagePreviewComponent) {\n <ng-container\n [mngComponent]=\"descriptor.imagePreviewComponent\"\n [inputs]=\"{\n imageUrl: imageFormArray.at(idx).value\n }\">\n </ng-container>\n } @else if (!isUrlSvgImage(imageFormArray.at(idx).value) || descriptor.imagePreviewAllowSvg) {\n <p-image [src]=\"imageFormArray.at(idx).value\" [preview]=\"true\" (onImageError)=\"onImageUrlLoadError()\" styleClass=\"mng-image m-2\"></p-image>\n } @else {\n <span class=\"mng-image m-2 p-image-preview-container no-image\">\n <div class=\"p-image-preview-indicator\">\n <i class=\"p-image-preview-icon pi ban\"></i>\n </div>\n </span>\n }\n }\n }\n </div>\n }\n @if (!descriptor.imagePreview || descriptor.imageUrlInputVisibleOnDisabled || !iFormControl.disabled) {\n @for (imageCtrlName of imageFormArray.controls; track imageCtrlName; let idx = $index) {\n <div class=\"p-inputgroup\">\n <input\n pInputText\n [placeholder]=\"'mngEditor.imageUrlPlaceholder' | translate\"\n [id]=\"$any(key)\"\n type=\"text\"\n [formControl]=\"$any(imageFormArray.at(idx))\"\n [formlyAttributes]=\"field\" />\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <button type=\"button\" pButton pRipple icon=\"pi pi-minus\" (click)=\"removeImageUrlAt(idx)\"></button>\n }\n </div>\n }\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <button\n type=\"button\"\n pButton\n pRipple\n icon=\"pi pi-plus\"\n class=\"p-button-primary w-auto\"\n [label]=\"'mngEditor.imageUrlAdd' | translate\"\n (click)=\"addImageUrl()\"></button>\n }\n }\n </div>\n }\n @default {\n <input pInputText [id]=\"$any(key)\" [type]=\"props.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [mngInputTrim]=\"descriptor.trimOption\" />\n }\n}\n","import {ChangeDetectionStrategy, Component, HostBinding, OnInit} from '@angular/core';\n\nimport {FieldInputDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-label',\n templateUrl: './formly-field-label.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldLabelComponent extends ACommonsFormlyFieldType<any, any, FieldInputDescriptor<any>> implements OnInit {\n @HostBinding('class') public className = 'hidden';\n\n public override ngOnInit() {\n super.ngOnInit();\n\n this.formControl?.patchValue(this.descriptor.label);\n }\n}\n","","import {AsyncPipe} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewChild, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {DialogModule} from 'primeng/dialog';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {MessagesModule} from 'primeng/messages';\nimport {RippleModule} from 'primeng/ripple';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {CommonsInternalError, DataListParams, DataListResult, LoggerService, fromSubscribeError, getErrorLogLevel, toObservable} from '@mediusinc/mng-commons/core';\nimport {TableComponent} from '@mediusinc/mng-commons/table';\nimport {FieldLookupConfig, FieldLookupDescriptor, FormFieldEventComponentSubtype, FormFieldEventDialogSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {provideViewContainer} from '../../../../../action/services/providers/provide-view-container';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-lookup-dialog',\n templateUrl: 'formly-field-lookup-dialog.component.html',\n imports: [TranslateModule, FormlyModule, ReactiveFormsModule, ButtonModule, RippleModule, DialogModule, AsyncPipe, TableComponent, MessagesModule, InputTextModule],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldLookupDialogComponent<T, ET> extends ACommonsFormlyFieldType<T, ET, FieldLookupDescriptor<T, ET>> implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild(TableComponent) public table?: TableComponent;\n\n private readonly logger = inject(LoggerService).create('FormlyFieldLookupDialogComponent');\n\n public config!: FieldLookupConfig;\n public fieldLabelFormControl: FormControl = new FormControl();\n\n public addItems = signal<DataListResult<T>>({data: [], totalCount: 0});\n\n public dialogUseDataProvider = false;\n private dialogDataProviderService: any = null;\n\n public isDialogVisible = false;\n public dialogAreItemsLoaded = false;\n public dialogSelectedItem: any = null;\n public dialogMessages: Message[] = [];\n public dialogIsLoading = signal(false);\n\n private lookupDataProviderSubscription?: Subscription;\n\n constructor(private injector: Injector) {\n super();\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.config = this.descriptor.config as FieldLookupConfig;\n if (!this.descriptor.dialogTableDataProvider && this.descriptor.dataProvider?.serviceType) {\n this.dialogUseDataProvider = true;\n this.dialogDataProviderService = this.injector.get<any>(this.descriptor.dataProvider.serviceType);\n }\n\n // init values\n this.setFieldLabelValue(this.formControl!.value);\n this.formControl!.valueChanges.pipe(\n startWith(this.formControl!.value),\n distinctUntilChanged((prev, curr) => {\n const compareProp = this.descriptor.dialogTableDescriptor!.trackProperty ?? this.descriptor.dialogTableDescriptor!.model.idProperty;\n if (compareProp && typeof prev === 'object' && typeof curr === 'object') {\n return prev![compareProp as keyof object] === curr![compareProp as keyof object];\n } else {\n return prev === curr;\n }\n }),\n takeUntilDestroyed(this.destroyRef)\n ).subscribe(v => {\n this.setFieldLabelValue(v);\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {\n value: v\n });\n\n this.props.onValueChange?.(this.field, v);\n });\n }\n\n ngAfterViewInit() {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n ngOnDestroy(): void {\n this.lookupDataProviderSubscription?.unsubscribe();\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openSelectDialog() {\n if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {\n this.dialogIsLoading.set(true);\n\n const params: DataListParams<any, any> = {\n limit: 50,\n sort: this.descriptor\n .dialogTableDescriptor!.sorts.filter(s => s.defaultIsEnabled)\n .map(s => ({\n property: s.property,\n ascending: s.defaultIsAscending\n }))\n };\n\n this.lookupDataProviderSubscription = toObservable(this.descriptor.dataProvider?.lookup(params, this.dialogDataProviderService)).subscribe({\n next: res => {\n const dataList = {\n data: res ?? [],\n totalCount: res?.length ?? 0\n };\n this.addItems.set(dataList);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoading.set(false);\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DataProvider, this, {\n eventSubtype: 'LookupNext',\n queryResult: dataList\n });\n },\n error: err => {\n this.dialogIsLoading.set(false);\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DataProvider, this, {\n eventSubtype: 'LookupError',\n queryResult: err\n });\n\n const error = fromSubscribeError(err, 'FormlyFieldLookupDialogComponentError', {\n params: params\n });\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n }\n this.dialogSelectedItem = null;\n this.isDialogVisible = true;\n\n this.formControl.markAsTouched();\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: true\n });\n }\n\n onSelectionChange(item: any) {\n this.dialogSelectedItem = item;\n }\n\n onCaptionCmpInst(instance: any) {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, this, {\n eventSubtype: FormFieldEventDialogSubtype.TABLE_CAPTION_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n onColumnActionCmpInst(instance: any) {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, this, {\n eventSubtype: FormFieldEventDialogSubtype.TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n clear() {\n this.formControl.setValue(undefined as T);\n this.formControl.markAsTouched();\n this.formControl.markAsDirty();\n this.dialogSelectedItem = null;\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: false\n });\n }\n\n onAddItem() {\n this.formControl.setValue(this.dialogSelectedItem);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n this.dialogSelectedItem = null;\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n private setFieldLabelValue(value: T) {\n if (!value) {\n this.fieldLabelFormControl.setValue('');\n return;\n }\n if (typeof value === 'object') {\n const labelProperty = this.descriptor.optionsLabelProperty ?? this.descriptor.dialogTableDescriptor?.model.titleProperty;\n if (!labelProperty) {\n throw new CommonsInternalError('Could not determine label property.', {name: 'FormlyFieldLookupDialogError'});\n }\n this.fieldLabelFormControl.setValue(value[labelProperty as keyof object]);\n } else {\n this.fieldLabelFormControl.setValue(value);\n }\n }\n}\n","<div\n [class]=\"'p-inputgroup mng-dropdown-dialog' + (descriptor.inputClassName ?? 'mng-formly-field-lookup-dialog')\"\n [class.p-inputtext-sm]=\"descriptor.isSizeSmall\"\n [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n @if (!props.required && formControl.value && !formControl.disabled) {\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\"></i>\n }\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate: {item: ''}\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate: {item: props.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\" mngDialogKeydownHandler>\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [result]=\"addItems()\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading()\"\n [captionComponent]=\"config.table?.captionComponent\"\n [columnCustomLastComponent]=\"config.table?.columnActionComponent\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnCustomLastComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"onAddItem()\"\n [loading]=\"dialogIsLoading()\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n","import {AsyncPipe} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TableRowReorderEvent} from 'primeng/table';\nimport {BehaviorSubject, distinctUntilChanged, of, throwError} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\n\nimport {CommonsInternalError, CommonsService, StyleLevelEnum, StyleSizeEnum, TemplateDirective} from '@mediusinc/mng-commons/core';\nimport {ActionButtonDescriptor, ButtonStyleBuilder} from '@mediusinc/mng-commons/form/api';\nimport {\n ActionContextValidation,\n ActionDescriptorInst,\n ActionEditorDescriptor,\n ActionPositionEnum,\n FieldManyEditorActionEnum,\n FieldManyEditorDescriptor,\n FormFieldEventComponentSubtype,\n FormFieldEventTypeEnum,\n actionEditorCancel\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionComponent} from '../../../../../action/components/action/action.component';\nimport {ActionTableComponent} from '../../../../../action/components/table/action-table.component';\nimport {provideViewContainer} from '../../../../../action/services/providers/provide-view-container';\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-table-dialog-form-field',\n templateUrl: './formly-field-table-dialog-form.component.html',\n styleUrls: ['./formly-field-table-dialog-form.component.scss'],\n imports: [TranslateModule, ActionComponent, ActionTableComponent, TemplateDirective, AsyncPipe, FormlyFieldLabelPipe],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldTableDialogFormComponent<T = any, ET = any>\n extends ACommonsFormlyFieldType<T[], ET, FieldManyEditorDescriptor<T, ET>>\n implements OnInit, AfterViewInit, OnDestroy\n{\n private readonly injector = inject(Injector);\n\n public items = signal<T[]>([]);\n\n public actions: Array<ActionDescriptorInst<T>> = [];\n public toolbarRightActions: Array<ActionDescriptorInst<T>> = [];\n\n private isDisabledSubject = new BehaviorSubject<boolean>(false);\n private isEnabled$ = this.isDisabledSubject.asObservable().pipe(\n distinctUntilChanged(),\n map(e => !e)\n );\n\n public disableRowReorder = toSignal<boolean>(this.formStateDisabled$);\n\n public override ngOnInit() {\n super.ngOnInit();\n\n const hasViewAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.View);\n const hasAddAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Add);\n const hasEditAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Edit);\n const hasDeleteAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Delete);\n\n if (hasViewAction) {\n const viewAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.detailsEditor, 'details', {\n parentModel: this.editorDescriptor.model,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowClick)\n .withDialogSize(StyleSizeEnum.Small)\n .withFetchFunction(ctx => {\n this.formControl.markAsTouched();\n return of(ctx.parameters.item || ({} as T));\n });\n viewAction.withEditorActions([actionEditorCancel(viewAction)]);\n viewAction.button.withLabel(null);\n this.actions.push(viewAction);\n }\n\n if (hasAddAction) {\n const addAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.addEditor, 'add', {\n parentModel: this.editorDescriptor.model,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withDialogSize(StyleSizeEnum.Small)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(StyleSizeEnum.ExtraSmall)))\n .withFetchFunction(ctx => {\n setTimeout(this.formControl.markAsTouched, 0);\n return of(ctx.parameters.item || ({} as T));\n })\n .withSubmitFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(\n () => new CommonsInternalError(`No item was provided in context, add cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'})\n );\n }\n this.formState.submittedOn = Date.now();\n let value = this.formControl.value;\n value = [...value, ctx.parameters.item];\n this.formControl.patchValue(value);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n return of(ctx.parameters.item);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(() => this.formStateDisabled$.pipe(map(v => !v)))\n .withIsEnabledFunction(() => this.isEnabled$);\n addAction.button.withLabel(null).withIcon('pi pi-plus');\n this.actions.push(addAction);\n }\n if (hasEditAction) {\n const editAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.editEditor, 'edit', {\n parentModel: this.editorDescriptor.model,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowInline)\n .withDialogSize(StyleSizeEnum.Small)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(StyleSizeEnum.ExtraSmall)))\n .withFetchFunction(ctx => {\n this.formControl.markAsTouched();\n return of(ctx.parameters.item || ({} as T));\n })\n .withSubmitFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(\n () => new CommonsInternalError(`No item was provided in context, edit cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'})\n );\n }\n this.formState.submittedOn = Date.now();\n const formControlValue = [...this.formControl.value];\n formControlValue[ctx.parameters.actionData?.['itemIndex']] = ctx.parameters.item;\n this.formControl.patchValue(formControlValue);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n return of(ctx.parameters.item);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(ctx => (this.hideActionsForRowWithDefaultLocalization(ctx) ? of(false) : this.formStateDisabled$.pipe(map(v => !v))))\n .withIsEnabledFunction(() => this.isEnabled$);\n editAction.button.withLabel(null).withIcon('pi pi-pencil');\n this.actions.push(editAction);\n }\n if (hasDeleteAction) {\n const deleteAction = new ActionDescriptorInst('delete', {\n model: this.descriptor.tableviewDescriptor.model,\n parentModel: this.editorDescriptor.model,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowInline)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder(StyleLevelEnum.Danger).withSize(StyleSizeEnum.ExtraSmall)))\n .withRunFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(\n () => new CommonsInternalError(`No item was provided in context, delete cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'})\n );\n }\n let formControlValue = this.formControl.value;\n const compareProperty = this.descriptor.tableDescriptor.trackProperty\n ? this.descriptor.tableDescriptor.trackProperty\n : this.descriptor.tableDescriptor.model.idProperty;\n const ctxItem: any = ctx.parameters.item;\n if (compareProperty && ctxItem?.[compareProperty]) {\n formControlValue = formControlValue.filter((i: any) => i[compareProperty] !== ctxItem[compareProperty]);\n this.formControl.patchValue(formControlValue);\n this.formControl.markAsDirty();\n } else if (typeof ctx.parameters.actionData?.['itemIndex'] === 'number') {\n formControlValue.splice(ctx.parameters.actionData['itemIndex'], 1);\n this.formControl.patchValue([...formControlValue]);\n this.formControl.markAsDirty();\n } else {\n return throwError(\n () =>\n new CommonsInternalError('Cannot compare items, please provide main table data key property or model id property.', {\n name: 'FormlyFieldTableDialogFormComponentError'\n })\n );\n }\n\n this.formControl.markAsTouched();\n\n return of(ctxItem);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(ctx => (this.hideActionsForRowWithDefaultLocalization(ctx) ? of(false) : this.formStateDisabled$.pipe(map(v => !v))))\n .withIsEnabledFunction(() => this.isEnabled$);\n deleteAction.button.withLabel(null).withIcon('pi pi-trash');\n this.actions.push(deleteAction);\n }\n\n this.actions.push(...this.descriptor.actions);\n for (const action of this.actions) {\n switch (action.position) {\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.push(action);\n break;\n }\n }\n\n // init values\n if (typeof this.formControl.value === 'undefined' || this.formControl.value === null) {\n this.formControl.patchValue([]);\n }\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.formControl.valueChanges.pipe(startWith(this.formControl.value), takeUntilDestroyed(this.destroyRef)).subscribe(v => {\n this.items.set(v ?? []);\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {\n value: v\n });\n\n this.props.onValueChange?.(this.field, v);\n });\n\n this.isDisabledSubject.next(this.formControl.disabled);\n this.formControl.statusChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(status => {\n if (status === 'DISABLED' && !this.isDisabledSubject.value) {\n this.isDisabledSubject.next(true);\n } else if (status !== 'DISABLED' && this.isDisabledSubject.value) {\n this.isDisabledSubject.next(false);\n }\n });\n }\n\n public onRowReorder(event: TableRowReorderEvent): void {\n if (event.dragIndex === undefined || event.dropIndex === undefined) return;\n // update formControl\n const newValue = [...this.formControl.value];\n const draggedItem = newValue[event.dragIndex];\n newValue.splice(event.dragIndex, 1);\n newValue.splice(event.dropIndex, 0, draggedItem);\n this.formControl.setValue(newValue);\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.RowReorder, this, {dragIndex: event.dragIndex, dropIndex: event.dropIndex});\n }\n\n public ngAfterViewInit() {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n private hideActionsForRowWithDefaultLocalization(ctx: ActionContextValidation<T>) {\n if (this.descriptor.tableDescriptor.isLocalized) {\n if (ctx.parameters.item?.[this.descriptor.tableDescriptor.localizationLocaleProperty! as keyof object] === this.injector.get(CommonsService).getDefaultLocale()) {\n return true;\n }\n }\n return false;\n }\n}\n","<mng-action-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items()\" [actions]=\"actions\" [rowReorderEnabled]=\"!disableRowReorder()\" (rowReorder)=\"onRowReorder($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex justify-content-end align-items-center\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\"\n >{{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n <div>\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\"></mng-action>\n }\n </div>\n </div>\n </ng-template>\n</mng-action-table>\n","import {AsyncPipe, NgStyle} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewChild, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\nimport {DialogModule} from 'primeng/dialog';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {RippleModule} from 'primeng/ripple';\nimport {TableRowReorderEvent} from 'primeng/table';\nimport {Subject, Subscription, debounceTime, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {\n CommonsInternalError,\n DataListParams,\n DataListResult,\n FilterMatchMode,\n LoggerService,\n TemplateDirective,\n fromSubscribeError,\n getErrorLogLevel,\n getObjectPropertyByPath,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {TableComponent} from '@mediusinc/mng-commons/table';\nimport {\n FieldManyToManyEditorActionEnum,\n FieldManyToManyEditorDescriptor,\n FormFieldEventComponentSubtype,\n FormFieldEventDialogSubtype,\n FormFieldEventTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {provideViewContainer} from '../../../../../action/services/providers/provide-view-container';\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-table-multiselect-add-field',\n templateUrl: './formly-field-table-dialog-multiselect.component.html',\n styleUrls: ['./formly-field-table-dialog-multiselect.component.scss'],\n imports: [TranslateModule, AsyncPipe, TableComponent, DialogModule, ButtonModule, RippleModule, TemplateDirective, InputTextModule, NgStyle, FormlyFieldLabelPipe],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldTableDialogMultiselectComponent\n extends ACommonsFormlyFieldType<any, any, FieldManyToManyEditorDescriptor<any, any>>\n implements OnInit, AfterViewInit, OnDestroy\n{\n private readonly injector = inject(Injector);\n private readonly logger = inject(LoggerService).create('FormlyFieldTableDialogMultiselectComponent');\n\n public items = signal<any[]>([]);\n public addItems = signal<DataListResult>({data: [], totalCount: 0});\n\n private dialogDataProviderService: any = null;\n\n public isDialogVisible = false;\n public dialogAreItemsLoaded = false;\n public dialogSelectedAddItems: Array<any> = [];\n public dialogIsLoading = signal(false);\n\n public hasAddAction = false;\n public hasDeleteAction = false;\n\n private searchDebounceSubject = new Subject<string>();\n\n private lookupDataProviderSubscription?: Subscription;\n\n @ViewChild('addTableComponent') addTableComponent?: TableComponent;\n\n public disableRowReorder = toSignal<boolean>(this.formStateDisabled$);\n\n public override ngOnInit() {\n super.ngOnInit();\n\n if (this.descriptor.lookupTableDataProvider.serviceType) {\n this.dialogDataProviderService = this.injector.get<any>(this.descriptor.lookupTableDataProvider.serviceType);\n }\n this.hasAddAction = this.descriptor.actions.some(a => a === FieldManyToManyEditorActionEnum.Add);\n this.hasDeleteAction = this.descriptor.actions.some(a => a === FieldManyToManyEditorActionEnum.Delete);\n\n // init values\n if (typeof this.formControl.value === 'undefined' || this.formControl.value === null) {\n this.formControl.patchValue([]);\n }\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.formControl.valueChanges.pipe(startWith(this.formControl.value), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef)).subscribe(v => {\n this.items.set(v ?? []);\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {\n value: v ?? []\n });\n\n this.props.onValueChange?.(this.field, v);\n });\n\n this.searchDebounceSubject.pipe(debounceTime(200), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef)).subscribe(query => {\n this.addTableComponent?.primeTable().filterGlobal(query, 'contains');\n });\n }\n\n public ngAfterViewInit() {\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n this.lookupDataProviderSubscription?.unsubscribe();\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openAddDialog() {\n this.dialogSelectedAddItems = [];\n this.isDialogVisible = true;\n\n if (!this.dialogAreItemsLoaded) {\n // wrapped in request animation frame due to primeng bug: https://github.com/primefaces/primeng/issues/12980\n requestAnimationFrame(() => {\n this.dialogIsLoading.set(true);\n const params: DataListParams = {limit: 50, sort: []};\n if (this.descriptor.lookupTableDescriptor.sorts.some(s => s.defaultIsEnabled)) {\n this.descriptor.lookupTableDescriptor.sorts.forEach(s => {\n if (s.defaultIsEnabled) {\n params.sort?.push({\n property: s.property,\n ascending: s.defaultIsAscending\n });\n }\n });\n }\n if (this.descriptor.hasLookupExcludeValues && this.descriptor.lookupTableDataProvider.isLazy) {\n const filterValues = this.formControl.value.map((i: any) => getObjectPropertyByPath(i, this.descriptor.excludeValueProperty));\n params.filters = {\n [this.descriptor.excludeFilterProperty as keyof object]: {\n matchMode: FilterMatchMode.NotIn,\n value: filterValues\n }\n };\n }\n this.lookupDataProviderSubscription = toObservable(this.descriptor.lookupTableDataProvider?.getAll(params, this.dialogDataProviderService)).subscribe({\n next: res => {\n if (this.descriptor.hasLookupExcludeValues && !this.descriptor.lookupTableDataProvider.isLazy && res && Array.isArray(res.data) && res.data.length > 0) {\n const filterValues = this.formControl.value.map((i: any) => getObjectPropertyByPath(i, this.descriptor.excludeValueProperty));\n res.data = res.data.filter(i => filterValues.indexOf(i[this.descriptor.excludeFilterProperty]) < 0);\n res.totalCount = res.data.length;\n }\n\n this.addItems.set(res);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoading.set(false);\n },\n error: err => {\n this.dialogIsLoading.set(false);\n\n const error = fromSubscribeError(err, 'FormlyFieldTableDialogMultiselectComponent', {\n params: params\n });\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n });\n }\n\n this.formControl.markAsTouched();\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: true\n });\n }\n\n onSelectionChange(items: Array<any>) {\n this.dialogSelectedAddItems = items;\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: false\n });\n }\n\n onAddItems() {\n let value = this.formControl.value;\n if (!Array.isArray(value)) {\n value = [];\n }\n value = [...value, ...this.dialogSelectedAddItems];\n this.formControl.patchValue(value);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n this.dialogSelectedAddItems = [];\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n removeItem(item: any) {\n let value = this.formControl.value;\n if (!Array.isArray(value)) {\n value = [];\n }\n const compareProperty = this.descriptor.mainTableDescriptor.trackProperty\n ? this.descriptor.mainTableDescriptor.trackProperty\n : this.descriptor.mainTableDescriptor.model.idProperty;\n if (!compareProperty) {\n throw new CommonsInternalError('Cannot compare items, please provide main table data key property or model id property.', {\n name: 'FormlyFieldTableDialogMultiselectComponentError'\n });\n }\n value = value.filter((i: any) => getObjectPropertyByPath(i, compareProperty) !== getObjectPropertyByPath(item, compareProperty));\n this.formControl.patchValue(value);\n this.formControl.markAsTouched();\n this.formControl.markAsDirty();\n this.dialogAreItemsLoaded = false;\n }\n\n public onSearch(event: Event) {\n const query = (event.target as HTMLInputElement).value;\n this.searchDebounceSubject.next(query);\n }\n\n public onRowReorder(event: TableRowReorderEvent): void {\n if (event.dragIndex === undefined || event.dropIndex === undefined) return;\n // update formControl\n const newValue = [...this.formControl.value];\n const draggedItem = newValue[event.dragIndex];\n newValue.splice(event.dragIndex, 1);\n newValue.splice(event.dropIndex, 0, draggedItem);\n this.formControl.setValue(newValue);\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.RowReorder, this, {dragIndex: event.dragIndex, dropIndex: event.dropIndex});\n }\n}\n","<mng-table [descriptor]=\"descriptor.mainTableDescriptor\" [items]=\"items()\" [rowReorderEnabled]=\"!disableRowReorder()\" (rowReorder)=\"onRowReorder($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex justify-content-end align-items-center\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">\n {{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n <div>\n @if (hasAddAction && !options.formState?.disabled) {\n <button\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-plus\"\n class=\"p-button-rounded mng-button-xs\"\n (click)=\"openAddDialog()\"\n [disabled]=\"formControl!.disabled\"></button>\n }\n </div>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnCustomLast\" let-item=\"rowItem\">\n @if (hasDeleteAction && !options.formState?.disabled) {\n <button\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-trash\"\n class=\"p-button-rounded p-button-danger mng-button-xs\"\n (click)=\"removeItem(item)\"\n [disabled]=\"formControl!.disabled\"></button>\n }\n </ng-template>\n</mng-table>\n\n@if (hasAddAction) {\n <p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.addItem' | translate: {item: props.label! | translate}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-dialog-sm mng-formly-field-table-multiselect-dialog\">\n <ng-template pTemplate=\"content\" class=\"table-container\" mngDialogKeydownHandler>\n <div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1 formly-field-table-multiselect-dialog-form-container\">\n <div class=\"mng-formly-field-table-multiselect-dialog-table\">\n <mng-table\n #addTableComponent\n [descriptor]=\"descriptor.lookupTableDescriptor\"\n [result]=\"addItems()\"\n [selectionEnabled]=\"true\"\n [loading]=\"dialogIsLoading()\"\n (selectionChange)=\"onSelectionChange($event)\">\n </mng-table>\n </div>\n </div>\n <div class=\"flex flex-row justify-content-end mng-formly-field-table-multiselect-dialog-footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.add' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-primary\"\n (click)=\"onAddItems()\"\n [loading]=\"dialogIsLoading()\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"form.disabled\"></button>\n </div>\n </div>\n </ng-template>\n </p-dialog>\n}\n","import {ChangeDetectionStrategy, Component, OnInit, signal} from '@angular/core';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TabViewModule} from 'primeng/tabview';\n\nimport {CommonsFormlyFieldConfig, FieldTabGroupDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-tabs',\n templateUrl: './formly-field-tabs.component.html',\n imports: [TabViewModule, TranslateModule, FormlyModule, FormlyFieldLabelPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldTabsComponent extends ACommonsFormlyFieldType<any, any, FieldTabGroupDescriptor<any>> implements OnInit {\n public fieldGroup = signal<CommonsFormlyFieldConfig[]>([]);\n\n override ngOnInit() {\n super.ngOnInit();\n\n this.fieldGroup.set(this.field.fieldGroup === undefined ? [] : (this.field.fieldGroup as CommonsFormlyFieldConfig[]));\n }\n}\n","<p-tabView [scrollable]=\"true\">\n @for (tab of fieldGroup(); track tab) {\n <p-tabPanel\n [header]=\"tab.props.descriptor | mngFormlyFieldLabel: tab.props.editorDescriptor | translate\"\n [headerStyleClass]=\"formControl!.valid ? 'p-tabview-title' : undefined\">\n <ng-template pTemplate=\"header\">\n <span class=\"p-tabview-title\" [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.key ?? '') + '_invalid']\">{{\n tab.props.descriptor | mngFormlyFieldLabel: tab.props.editorDescriptor | translate\n }}</span>\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n }\n</p-tabView>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {FieldWrapper, FormlyModule} from '@ngx-formly/core';\nimport {FormlyFieldConfig} from '@ngx-formly/core/lib/models/fieldconfig';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-no-label-wrapper',\n templateUrl: './formly-field-no-label-wrapper.component.html',\n imports: [FormlyModule, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldNoLabelWrapperComponent extends FieldWrapper {\n public shouldShowError() {\n if (this.field.type !== 'formly-group' || (this.field.validators && Object.keys(this.field.validators).length > 0)) {\n return true;\n }\n return false;\n }\n\n public sanitizeErrorsForGroups(field: FormlyFieldConfig) {\n if (field.type === 'formly-group' && field.formControl?.errors && field.validators) {\n const errors: {[key: string]: any} = {};\n for (const key of Object.keys(field.formControl.errors)) {\n if (Object.prototype.hasOwnProperty.call(field.validators, key)) {\n errors[key] = field.validators[key];\n }\n }\n\n return {...field, formControl: {...field.formControl, errors}} as FormlyFieldConfig;\n }\n\n return field;\n }\n}\n","<div [class]=\"props['descriptor']?.['fieldClassName'] ?? 'field table'\">\n <ng-container #fieldComponent></ng-container>\n @if (props['descriptor']?.['helpText']) {\n <small class=\"block\">{{ props['descriptor']?.['helpText'] | translate }}</small>\n }\n @if (showError && shouldShowError()) {\n <small class=\"block p-error\">\n <formly-validation-message [field]=\"sanitizeErrorsForGroups(field)\"></formly-validation-message>\n </small>\n }\n</div>\n","import {ChangeDetectionStrategy, Component, DestroyRef, OnInit, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {FieldWrapper, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Observable, isObservable} from 'rxjs';\n\nimport {CommonsInternalError} from '@mediusinc/mng-commons/core';\nimport {AFieldDescriptor, CommonsFormlyFieldConfig, EditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-wrapper',\n templateUrl: './formly-field-wrapper.component.html',\n imports: [TranslateModule, FormlyModule, FormlyFieldLabelPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldWrapperComponent extends FieldWrapper<CommonsFormlyFieldConfig> implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n\n public helpText = signal<string | undefined>(undefined);\n public fieldClassName = signal<string>('');\n\n public descriptor!: AFieldDescriptor<any, any, any, any>;\n public editorDescriptor!: EditorDescriptorInst<any, any>;\n\n public ngOnInit() {\n const descriptor = this.props?.descriptor as AFieldDescriptor<any, any, any, any> | undefined;\n const editorDescriptor = this.props?.editorDescriptor;\n\n if (!descriptor) {\n throw new CommonsInternalError('Descriptor is not defined.');\n }\n if (!editorDescriptor) {\n throw new CommonsInternalError('Editor descriptor is not defined.');\n }\n\n this.descriptor = descriptor;\n this.editorDescriptor = editorDescriptor;\n\n if (descriptor.isLocalized && isObservable(this.formState?.disabled$)) {\n (this.formState.disabled$ as Observable<boolean>).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(d => {\n if (d) {\n if (!this.model[this.descriptor.property + 'Translated'] && this.descriptor.property !== 'id') {\n this.helpText.set('mngEditor.localizations.missingTranslation');\n this.fieldClassName.set((this.field.className ?? '') + ' localized-input-border-orange');\n }\n } else {\n this.helpText.set(descriptor.helpText);\n this.fieldClassName.set(this.field.className ?? '');\n }\n });\n } else {\n this.helpText.set(descriptor.helpText);\n }\n }\n}\n","<div [class]=\"'field ' + fieldClassName()\">\n <div class=\"grid mt-0\">\n @if (descriptor.label !== null) {\n <label [for]=\"key\" class=\"col\" [class]=\"descriptor.labelClassName\"\n >{{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n }\n </div>\n <ng-container #fieldComponent></ng-container>\n @if (helpText(); as ht) {\n <small class=\"block\">{{ ht | translate }}</small>\n }\n @if (showError) {\n <small class=\"p-error block\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n</div>\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {CalendarModule} from 'primeng/calendar';\nimport {filter, isObservable} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {COMMONS_MODULE_CONFIG_IT, dateToIsoString} from '@mediusinc/mng-commons/core';\nimport {FieldInputDescriptor, FormFieldEventComponentSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-datepicker',\n templateUrl: './formly-field-datepicker.component.html',\n imports: [ReactiveFormsModule, FormlyModule, CalendarModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldDatepickerComponent<ET> extends ACommonsFormlyFieldType<any, ET, FieldInputDescriptor<ET>> implements OnInit, OnDestroy {\n public dpFormControl = new FormControl();\n public styleClass = signal('');\n private readonly moduleConfig = inject(COMMONS_MODULE_CONFIG_IT, {optional: true});\n\n private dateTimeInUtc = this.moduleConfig?.serialization?.dateTimeInUtc ?? false;\n private dateTimeWithTimezone = this.moduleConfig?.serialization?.dateTimeWithTimezone ?? true;\n private dateTimeWithMillis = this.moduleConfig?.serialization?.dateTimeWithMillis ?? true;\n\n public minDate = signal<Date | undefined>(undefined);\n public maxDate = signal<Date | undefined>(undefined);\n\n public override ngOnInit() {\n super.ngOnInit();\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n // init status changes\n this.formControl.statusChanges.pipe(takeUntilDestroyed(this.destroyRef), startWith(this.formControl.status)).subscribe(status => {\n if (status === 'INVALID') {\n this.styleClass.set('ng-invalid');\n } else {\n this.styleClass.set('ng-valid');\n }\n\n if (status === 'DISABLED' && this.dpFormControl.enabled) {\n this.dpFormControl.disable({emitEvent: false});\n } else if (status !== 'DISABLED' && this.dpFormControl.disabled) {\n this.dpFormControl.enable({emitEvent: false});\n }\n });\n\n // init values from form to datepicker\n if (typeof this.formControl?.value === 'string' || typeof this.formControl?.value === 'number') {\n this.dpFormControl.setValue(new Date(this.formControl.value));\n this.dpFormControl.markAsPristine(); // mark as pristine only on component initialization\n }\n this.formControl.valueChanges\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter(formValue => !this.areDateValuesEqual(formValue, this.dpFormControl.value))\n )\n .subscribe(v => {\n this.dpFormControl.setValue(new Date(v), {emitEvent: false}); // do not emit event, because it can trigger infinite loop\n });\n\n // listen for changes from datepicker to form\n this.dpFormControl.valueChanges\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter(value => !this.areDateValuesEqual(value, this.formControl.value))\n )\n .subscribe(v => {\n v = this.convertDateValue(v);\n (this.formControl as FormControl).setValue(v);\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {\n value: v\n });\n\n this.props.onValueChange?.(this.field, v);\n });\n\n this.initializeMinMaxValidators();\n }\n\n onBlur() {\n this.formControl.markAsTouched();\n }\n\n private initializeMinMaxValidators() {\n if (this.descriptor.datePickerMin instanceof Date || !this.descriptor.datePickerMin) {\n this.minDate.set(this.descriptor.datePickerMin);\n } else {\n const itemOrObservable = this.descriptor.datePickerMin(this.formControl, this.field);\n if (isObservable(itemOrObservable)) {\n itemOrObservable.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(value => {\n if (value?.getTime() !== this.minDate()?.getTime()) {\n this.minDate.set(value);\n this.props.minDate = value;\n\n this.formControl.updateValueAndValidity();\n }\n });\n } else {\n this.minDate.set(itemOrObservable);\n }\n }\n\n if (this.descriptor.datePickerMax instanceof Date || !this.descriptor.datePickerMax) {\n this.maxDate.set(this.descriptor.datePickerMax);\n } else {\n const itemOrObservable = this.descriptor.datePickerMax(this.formControl, this.field);\n if (isObservable(itemOrObservable)) {\n itemOrObservable.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(value => {\n if (value?.getTime() !== this.maxDate()?.getTime()) {\n this.maxDate.set(value);\n this.props.maxDate = value;\n\n this.formControl.updateValueAndValidity();\n }\n });\n } else {\n this.maxDate.set(itemOrObservable);\n }\n }\n }\n\n private convertDateValue(value: Date | string | number | null | undefined) {\n const convertDateType = this.descriptor.datePickerValueNoTime || !this.descriptor.datePickerShowTime ? 'date' : 'date-time';\n const convertDateTimeOpts = {\n utc: this.descriptor.datePickerValueUtc ?? this.dateTimeInUtc,\n noMillis: !this.dateTimeWithMillis,\n noTimezone: this.descriptor.datePickerValueNoTimezone ?? !this.dateTimeWithTimezone\n };\n if (!this.descriptor.datePickerValueAsDateObj) {\n return dateToIsoString(value, convertDateType, convertDateTimeOpts);\n }\n return value;\n }\n\n private areDateValuesEqual(val1: Date | string | number | null | undefined, val2: Date | string | number | null | undefined): boolean {\n const date1 = this.convertDateValue(val1);\n const date2 = this.convertDateValue(val2);\n return (date1 instanceof Date && date2 instanceof Date && date1.toISOString() === date2.toISOString()) || date1 === date2;\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<p-calendar\n appendTo=\"body\"\n [class]=\"styleClass()\"\n [formControl]=\"dpFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(minDate())\"\n [maxDate]=\"$any(maxDate())\"\n [showTime]=\"descriptor.datePickerShowTime ?? false\"\n [showSeconds]=\"descriptor.datePickerShowSeconds ?? false\"\n showIcon=\"true\"\n showButtonBar=\"true\"\n [showClear]=\"!props.required\"\n styleClass=\"mng-formly-field-datepicker\"\n [inputStyleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-datepicker-input'\"\n [firstDayOfWeek]=\"1\"\n (onBlur)=\"onBlur()\">\n</p-calendar>\n","import {DatePipe} from '@angular/common';\n\nimport {WrapperOption} from '@ngx-formly/core/lib/models/config';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\n\nimport {CommonsFormlyFieldConfig, FieldInputDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormlyFieldActionComponent} from '../components/formly/fields/formly-field-action/formly-field-action.component';\nimport {FormlyFieldAutocompleteComponent} from '../components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component';\nimport {FormlyFieldCustomComponent} from '../components/formly/fields/formly-field-custom/formly-field-custom.component';\nimport {FormlyFieldDatepickerComponent} from '../components/formly/fields/formly-field-datepicker/formly-field-datepicker.component';\nimport {FormlyFieldDropdownComponent} from '../components/formly/fields/formly-field-dropdown/formly-field-dropdown.component';\nimport {FormlyFieldFieldsetComponent} from '../components/formly/fields/formly-field-fieldset/formly-field-fieldset.component';\nimport {FormlyFieldInputComponent} from '../components/formly/fields/formly-field-input/formly-field-input.component';\nimport {FormlyFieldLabelComponent} from '../components/formly/fields/formly-field-label/formly-field-label.component';\nimport {FormlyFieldLookupDialogComponent} from '../components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component';\nimport {FormlyFieldTableDialogFormComponent} from '../components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component';\nimport {FormlyFieldTableDialogMultiselectComponent} from '../components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component';\nimport {FormlyFieldTabsComponent} from '../components/formly/fields/formly-field-tabs/formly-field-tabs.component';\nimport {FormlyFieldNoLabelWrapperComponent} from '../components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component';\nimport {FormlyFieldWrapperComponent} from '../components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component';\nimport {CommonsFormlyTypeConfig} from '../models/formly-config.model';\nimport {getEditorFieldLabel} from './editor-field';\n\nexport const formlyWrappersConfig: WrapperOption[] = [\n {name: 'field', component: FormlyFieldWrapperComponent},\n {name: 'field-no-label', component: FormlyFieldNoLabelWrapperComponent}\n];\n\nexport const formlyTypesConfig: CommonsFormlyTypeConfig[] = [\n {\n name: 'label',\n component: FormlyFieldLabelComponent,\n wrappers: ['field']\n },\n {\n name: 'input',\n component: FormlyFieldInputComponent,\n wrappers: ['field']\n },\n {name: 'string', extends: 'input'},\n {\n name: 'number',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'currency',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'integer',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'textarea',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'textarea'\n }\n }\n },\n {\n name: 'switch',\n component: FormlyFieldInputComponent,\n defaultOptions: {\n props: {\n type: 'switch'\n }\n }\n },\n {\n name: 'radio',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'radio'\n }\n }\n },\n {\n name: 'datepicker',\n component: FormlyFieldDatepickerComponent,\n defaultOptions: {\n props: {\n type: 'datepicker'\n }\n },\n wrappers: ['field']\n },\n {\n name: 'mask',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'mask'\n }\n }\n },\n {\n name: 'file',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'file'\n }\n }\n },\n {\n name: 'imageUrl',\n component: FormlyFieldInputComponent,\n defaultOptions: {\n props: {\n type: 'imageUrl'\n }\n },\n wrappers: ['field']\n },\n {\n name: 'dropdown',\n component: FormlyFieldDropdownComponent,\n wrappers: ['field']\n },\n {name: 'enum', extends: 'dropdown'},\n {\n name: 'autocomplete',\n component: FormlyFieldAutocompleteComponent,\n wrappers: ['field']\n },\n {\n name: 'action',\n component: FormlyFieldActionComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'dialog',\n component: FormlyFieldLookupDialogComponent,\n wrappers: ['field']\n },\n {\n name: 'table-dialog-multiselect',\n component: FormlyFieldTableDialogMultiselectComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'table-dialog-form',\n component: FormlyFieldTableDialogFormComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'tabs',\n component: FormlyFieldTabsComponent,\n wrappers: []\n },\n {\n name: 'fieldset',\n component: FormlyFieldFieldsetComponent,\n wrappers: []\n },\n {\n name: 'formly-group',\n wrappers: ['field-no-label']\n },\n {\n name: 'custom',\n component: FormlyFieldCustomComponent,\n wrappers: []\n }\n];\n\nexport function getRequiredValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.required', {field: fieldName});\n };\n}\n\nexport function getMinLengthValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.minLength', {field: fieldName, minLength: field.props.minLength});\n };\n}\n\nexport function getMaxLengthValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.maxLength', {field: fieldName, maxLength: field.props.maxLength});\n };\n}\n\nexport function getMinValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.min', {field: fieldName, min: field.props.min});\n };\n}\n\nexport function getMaxValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.max', {field: fieldName, max: field.props.max});\n };\n}\n\nexport function getTextPatternValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.pattern', {field: fieldName, pattern: field.props.pattern});\n };\n}\n\nexport function getEmailValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.email', {field: fieldName});\n };\n}\n\nexport function getMinDateValidationMessage(translate: TranslateService, datePipe: DatePipe): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const inputDescriptor = field.props.descriptor as FieldInputDescriptor<any>;\n const minDate = field.props.minDate ?? inputDescriptor.datePickerMin;\n\n if (!minDate || !(minDate instanceof Date)) {\n return '';\n }\n let dateString = datePipe.transform(minDate, 'dd. MM. yyyy') ?? '';\n\n if (inputDescriptor.datePickerShowTime) {\n dateString += datePipe.transform(minDate, ' HH:mm:ss');\n }\n\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.minDate', {field: fieldName, min: dateString});\n };\n}\n\nexport function getMaxDateValidationMessage(translate: TranslateService, datePipe: DatePipe): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const inputDescriptor = field.props.descriptor as FieldInputDescriptor<any>;\n const maxDate = field.props.maxDate ?? inputDescriptor.datePickerMax;\n\n if (!maxDate || !(maxDate instanceof Date)) {\n return '';\n }\n let dateString = datePipe.transform(maxDate, 'dd. MM. yyyy') ?? '';\n\n if (inputDescriptor.datePickerShowTime) {\n dateString += datePipe.transform(maxDate, ' HH:mm:ss');\n }\n\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.maxDate', {field: fieldName, max: dateString});\n };\n}\n\nexport const getFormlyValidationMessages = (translate: TranslateService, datePipe: DatePipe): any[] => {\n return [\n {name: 'required', message: getRequiredValidationMessage(translate)},\n {name: 'minLength', message: getMinLengthValidationMessage(translate)},\n {name: 'maxLength', message: getMaxLengthValidationMessage(translate)},\n {name: 'min', message: getMinValidationMessage(translate)},\n {name: 'max', message: getMaxValidationMessage(translate)},\n {name: 'pattern', message: getTextPatternValidationMessage(translate)},\n {name: 'email', message: getEmailValidationMessage(translate)},\n {name: 'minDate', message: getMinDateValidationMessage(translate, datePipe)},\n {name: 'maxDate', message: getMaxDateValidationMessage(translate, datePipe)}\n ];\n};\n","import {DatePipe} from '@angular/common';\n\nimport {ConfigOption} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {TableviewFeatureConfig} from '../../tableview/services/tableview-feature-config.token';\nimport {formlyTypesConfig, formlyWrappersConfig, getFormlyValidationMessages} from '../helpers/formly-config';\n\nexport function commonsFormlyConfigProvider(translate: TranslateService, datePipe: DatePipe, config: TableviewFeatureConfig = {}): ConfigOption {\n const merge = config.formly?.merge ?? true;\n\n let types = formlyTypesConfig;\n if (config.formly?.types) {\n if (!merge) {\n types = [];\n }\n types = [...types, ...config.formly.types];\n }\n\n let wrappers = formlyWrappersConfig;\n if (config.formly?.wrappers) {\n if (!merge) {\n wrappers = [];\n }\n wrappers = [...wrappers, ...config.formly.wrappers];\n }\n\n let validationMessages = getFormlyValidationMessages(translate, datePipe);\n if (typeof config.formly?.getValidationMessages === 'function') {\n if (!merge) {\n validationMessages = [];\n }\n validationMessages = [...validationMessages, ...config.formly.getValidationMessages(translate)];\n }\n\n return {\n types: types,\n wrappers: wrappers,\n validationMessages: validationMessages\n };\n}\n","import {NgTemplateOutlet} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnInit, Signal, TemplateRef, computed, contentChildren, inject, input, signal} from '@angular/core';\nimport {RouterOutlet} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {SharedModule} from 'primeng/api';\nimport {ToolbarModule} from 'primeng/toolbar';\n\nimport {DataListParams, TemplateDirective, findTemplateByName} from '@mediusinc/mng-commons/core';\nimport {TableLoadEvent} from '@mediusinc/mng-commons/table/api';\nimport {ActionDescriptorInst, ActionPositionEnum, ITableviewDataProvider, TableviewActionDefaultCategories, TableviewDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionComponent} from '../../../action/components/action/action.component';\nimport {ActionTableComponent} from '../../../action/components/table/action-table.component';\nimport {provideViewContainer} from '../../../action/services/providers/provide-view-container';\nimport {ViewContainer} from '../../../action/services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-tableview',\n templateUrl: './tableview.component.html',\n imports: [ToolbarModule, SharedModule, TranslateModule, NgTemplateOutlet, ActionComponent, ActionTableComponent, TemplateDirective, RouterOutlet],\n providers: [provideViewContainer()],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableviewComponent<Item = any, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> implements OnInit {\n public readonly viewContainer = inject(ViewContainer, {optional: true});\n\n public descriptor = input.required<TableviewDescriptorInst<Item, Sorts, Filters>>();\n public dataProvider = input<ITableviewDataProvider<Item, Service, Sorts, Filters>>();\n public actions = input<Array<ActionDescriptorInst<any>>>([]);\n\n public toolbarLeftActions = computed<ActionDescriptorInst<Item>[]>(() => this.filterActionsByPositions(this.actions(), [ActionPositionEnum.ToolbarLeft]));\n public toolbarRightActions = computed<ActionDescriptorInst<Item>[]>(() => this.filterActionsByPositions(this.actions(), [ActionPositionEnum.ToolbarRight]).reverse());\n public tableActions = computed<ActionDescriptorInst<Item>[]>(() =>\n this.filterActionsByPositions(this.actions(), [ActionPositionEnum.TableHeader, ActionPositionEnum.RowInline, ActionPositionEnum.RowClick])\n );\n\n public tableParams = signal<DataListParams | undefined>(undefined);\n\n public hasItemSelectionAction = computed(() => [...this.toolbarLeftActions(), ...this.toolbarRightActions()].some(e => e.hasItemsSelection));\n public selectedItems = signal<Item[]>([]);\n\n public templates = contentChildren(TemplateDirective);\n public footerTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'footer'));\n public rowExpandTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'rowExpandContent'));\n\n ngOnInit() {\n if (this.viewContainer) {\n this.viewContainer.actions.set(this.actions());\n }\n\n const dataProvider = this.dataProvider();\n if (this.viewContainer && dataProvider) {\n this.viewContainer.dataProvider.set(dataProvider);\n }\n }\n\n public onTableLoad(event: TableLoadEvent) {\n this.tableParams.set(event.params);\n }\n\n public selectionChange(selectedItems: Array<Item>): void {\n this.selectedItems.set(selectedItems);\n }\n\n private filterActionsByPositions(actions: ActionDescriptorInst<Item>[], actionPositions: ActionPositionEnum[]): ActionDescriptorInst<Item>[] {\n return actions.filter(action => (action.positionTableviewCategories?.includes(TableviewActionDefaultCategories.READ) ?? true) && actionPositions.includes(action.position));\n }\n}\n","<div class=\"mng-tableview\">\n <div class=\"card\">\n @if (toolbarLeftActions().length > 0 || toolbarRightActions().length > 0) {\n <p-toolbar styleClass=\"mb-4\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions(); track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams()\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems()\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions(); track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams()\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems()\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n }\n\n <mng-action-table\n [descriptor]=\"descriptor().table\"\n [dataProvider]=\"dataProvider()\"\n [useQueryParams]=\"true\"\n [actions]=\"tableActions()\"\n [selectionEnabled]=\"hasItemSelectionAction()\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\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\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-action-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n","import {ChangeDetectionStrategy, Component, input} from '@angular/core';\n\nimport {TableviewInput} from '@mediusinc/mng-commons/tableview/api';\n\nimport {TableviewComponent} from '../tableview/tableview.component';\n\n@Component({\n standalone: true,\n selector: 'mng-tableview-route',\n imports: [TableviewComponent],\n templateUrl: './tableview-route.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableviewRouteComponent<Item, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> {\n public tableview = input.required<TableviewInput<Item, Service, Sorts, Filters>>();\n}\n","<mng-tableview [descriptor]=\"tableview().descriptor\" [dataProvider]=\"tableview().dataProvider\" [actions]=\"tableview().actions\"> </mng-tableview>\n","import {Type} from '@angular/core';\nimport {DefaultExport, Route} from '@angular/router';\n\nimport {Observable} from 'rxjs';\n\nimport {APermissions, CommonsRouteData, RouteBuilder, createLazyRoute} from '@mediusinc/mng-commons/core';\nimport {ActionDescriptorInst, ITableviewDataProvider, TableviewActionDefaultCategories, TableviewDescriptorInst, TableviewRouteData} from '@mediusinc/mng-commons/tableview/api';\n\nimport {unsavedChangesGuard} from '../../action/guards/unsaved-changes.guard';\n\nexport class TableviewRouteBuilder extends RouteBuilder {\n private readonly descriptor?: TableviewDescriptorInst<any>;\n private readonly dataProvider?: ITableviewDataProvider;\n private readonly actions?: Array<ActionDescriptorInst<any>>;\n private readonly isFromComponent: boolean = true;\n\n protected override routeData: TableviewRouteData = {breadcrumb: null};\n private hasDetails = true;\n private detailsPath = ':itemId';\n private hasEdit = true;\n private editPath = ':itemId/edit';\n private hasAdd = true;\n private addPath = 'add';\n private hasDelete = true;\n\n private tableviewPermissions?: {\n [key: string]: APermissions;\n };\n\n public constructor(\n private path: string,\n component?: Type<any>,\n loadComponent?: () => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>\n ) {\n super({path: path, component, loadComponent});\n }\n\n public withReadOnly(permissions?: APermissions): this {\n if (permissions) {\n this.withPermissions(permissions);\n }\n this.withAdd(false);\n this.withEdit(false);\n this.withDelete(false);\n return this;\n }\n\n public withDetails(hasDetails = true, permissions?: APermissions, path?: string): this {\n this.hasDetails = hasDetails;\n if (permissions) {\n this.withPermissions(undefined, undefined, undefined, undefined, permissions);\n }\n if (path) {\n this.detailsPath = path;\n }\n return this;\n }\n\n public withAdd(hasAdd = true, permissions?: APermissions, path?: string): this {\n this.hasAdd = hasAdd;\n if (permissions) {\n this.withPermissions(undefined, permissions);\n }\n if (path) {\n this.addPath = path;\n }\n return this;\n }\n\n public withEdit(hasEdit = true, permissions?: APermissions, path?: string): this {\n this.hasEdit = hasEdit;\n if (permissions) {\n this.withPermissions(undefined, undefined, permissions);\n }\n if (path) {\n this.editPath = path;\n }\n return this;\n }\n\n public withDelete(hasDelete = true, permissions?: APermissions): this {\n this.hasDelete = hasDelete;\n if (permissions) {\n this.withPermissions(undefined, undefined, undefined, permissions);\n }\n return this;\n }\n\n public override withPermissions(read?: APermissions, add?: APermissions, edit?: APermissions, delet?: APermissions, details?: APermissions): this {\n if (!this.tableviewPermissions) {\n this.tableviewPermissions = {};\n }\n if (read) {\n this.tableviewPermissions[TableviewActionDefaultCategories.READ] = read;\n }\n if (add) {\n this.tableviewPermissions[TableviewActionDefaultCategories.ADD] = add;\n }\n if (edit) {\n this.tableviewPermissions[TableviewActionDefaultCategories.EDIT] = edit;\n }\n if (delet) {\n this.tableviewPermissions[TableviewActionDefaultCategories.DELETE] = delet;\n }\n if (details) {\n this.tableviewPermissions[TableviewActionDefaultCategories.DETAILS] = details;\n }\n return this;\n }\n\n public withPermissionByCategory(key: string, permissions: APermissions): this {\n if (!this.tableviewPermissions) {\n this.tableviewPermissions = {};\n }\n this.tableviewPermissions[key] = permissions;\n return this;\n }\n\n public withPermissionsObject(permissions: {[key: string]: APermissions}): this {\n this.tableviewPermissions = permissions;\n return this;\n }\n\n public override build(): Route {\n if (!this.isFromComponent) {\n this.routeData.tableview = {\n descriptor: this.descriptor!,\n dataProvider: this.dataProvider!\n };\n if (this.actions) {\n this.routeData.tableview.actions = this.actions;\n }\n }\n if (this.tableviewPermissions) {\n this.routeData.tableviewPermissions = {...this.tableviewPermissions};\n }\n this.routeData.tableviewActions = {\n hasAdd: this.hasAdd,\n hasEdit: this.hasEdit,\n hasDetails: this.hasDetails,\n hasDelete: this.hasDelete\n };\n this.withData(this.routeData);\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.READ]) {\n this.routeData.permissions = this.tableviewPermissions[TableviewActionDefaultCategories.READ];\n }\n\n // copy route data for children, reset breadcrumbs menu items and permission\n const childrenRouteData: CommonsRouteData = {\n ...this.routeData,\n breadcrumb: null\n };\n\n const loadActionRoute = () => import('../../action/components/route/action-route.component');\n\n // list route\n const rootChildRouteBuilder = createLazyRoute('', loadActionRoute);\n rootChildRouteBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.READ]) {\n rootChildRouteBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.READ]);\n }\n this.addChildBuilder(rootChildRouteBuilder);\n\n // add route\n if (this.hasAdd) {\n const routeBuilder = createLazyRoute(this.addPath, loadActionRoute);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.ADD]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.ADD]);\n }\n this.addChildBuilder(routeBuilder);\n routeBuilder.withCanDeactivate(unsavedChangesGuard);\n }\n if (this.hasDetails) {\n const routeBuilder = createLazyRoute(this.detailsPath, loadActionRoute);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.DETAILS]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.DETAILS]);\n }\n this.addChildBuilder(routeBuilder);\n }\n if (this.hasEdit) {\n const routeBuilder = createLazyRoute(this.editPath, loadActionRoute);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.EDIT]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.EDIT]);\n }\n this.addChildBuilder(routeBuilder);\n routeBuilder.withCanDeactivate(unsavedChangesGuard);\n }\n\n return super.build();\n }\n\n protected override findMenuItemPermissions() {\n const menuItemPermission = super.findMenuItemPermissions();\n if (!menuItemPermission) {\n return this.tableviewPermissions?.[TableviewActionDefaultCategories.READ];\n }\n return menuItemPermission;\n }\n}\n\nexport function createTableviewRoute(path: string, component: Type<any>): TableviewRouteBuilder {\n return new TableviewRouteBuilder(path, component);\n}\n\nexport function createTableviewLazyRoute(\n path: string,\n loadComponent: () => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>\n): TableviewRouteBuilder {\n return new TableviewRouteBuilder(path, undefined, loadComponent);\n}\n","import {DatePipe} from '@angular/common';\n\nimport {FORMLY_CONFIG} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {CommonsFeature, CommonsFeatureTypeEnum} from '@mediusinc/mng-commons/core';\nimport {DATA_LANGUAGE_DROPDOWN_COMPONENT_IT, DataProviderExecutor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionEditorComponent} from './action/components/editor/action-editor.component';\nimport {DataLanguageDropdownComponent} from './action/components/localization/data-language-dropdown.component';\nimport {ActionErrorMapperService, DefaultActionErrorMapperService} from './action/services/action-error-mapper.service';\nimport {ActionExecutorService} from './action/services/action-executor.service';\nimport {DefaultDataProviderExecutor} from './action/services/data-provider-executor.service';\nimport {NavigationService} from './action/services/navigation.service';\nimport {RootActionExecutorService} from './action/services/root-action-executor.service';\nimport {ACTION_EDITOR_COMPONENT_IT} from './action/services/tokens/action-editor.token';\nimport {commonsFormlyConfigProvider} from './editor/services/formly-config.provider';\nimport {COMMONS_TABLEVIEW_FEATURE_CONFIG_IT, TableviewFeatureConfig} from './tableview/services/tableview-feature-config.token';\n\n/**\n * Prepares providers for usage of the tableview functionalities.\n *\n * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.\n */\nexport function withTableview(config?: TableviewFeatureConfig): CommonsFeature {\n return {\n type: CommonsFeatureTypeEnum.Tableview,\n providers: [\n DatePipe,\n NavigationService,\n {\n provide: COMMONS_TABLEVIEW_FEATURE_CONFIG_IT,\n useValue: config\n },\n {\n provide: FORMLY_CONFIG,\n multi: true,\n useFactory: commonsFormlyConfigProvider,\n deps: [TranslateService, DatePipe, COMMONS_TABLEVIEW_FEATURE_CONFIG_IT]\n },\n {\n provide: ACTION_EDITOR_COMPONENT_IT,\n useValue: ActionEditorComponent\n },\n {\n provide: DATA_LANGUAGE_DROPDOWN_COMPONENT_IT,\n useValue: DataLanguageDropdownComponent\n },\n {\n provide: ActionErrorMapperService,\n useClass: DefaultActionErrorMapperService\n },\n RootActionExecutorService,\n {\n provide: ActionExecutorService,\n useExisting: RootActionExecutorService\n },\n DefaultDataProviderExecutor,\n {\n provide: DataProviderExecutor,\n useExisting: DefaultDataProviderExecutor\n }\n ]\n };\n}\n","// action components\nexport * from './action/components/action/action.component';\nexport * from './action/components/editor/action-editor.component';\nexport * from './action/components/localization/data-language-dropdown.component';\nexport * from './action/components/route/action-route.component';\nexport * from './action/components/table/action-table.component';\n\n// action guards\nexport * from './action/guards/unsaved-changes.guard';\n\n// action helpers\nexport * from './action/helpers/i18n';\nexport * from './action/helpers/notification';\nexport * from './action/helpers/styles';\n\n// action models\nexport * from './action/models/execution/action-context.model';\nexport * from './action/models/execution/action-instance.model';\nexport * from './action/models/execution/action-instance-state.model';\nexport * from './action/models/action-editor-dialog-data.model';\nexport * from './action/models/can-component-deactivate.model';\n\n// action services\nexport * from './action/services/providers/provide-action-executor';\nexport * from './action/services/providers/provide-view-container';\nexport * from './action/services/tokens/action-editor.token';\nexport * from './action/services/action-error-mapper.service';\nexport * from './action/services/action-executor.service';\nexport * from './action/services/component-action-executor.service';\nexport * from './action/services/data-provider-executor.service';\nexport * from './action/services/navigation.service';\nexport * from './action/services/root-action-executor.service';\nexport * from './action/services/view-container.service';\n\n// editor components\nexport * from './editor/components/editor/auto-save-status/auto-save-status.component';\nexport * from './editor/components/editor/form-editor.component';\nexport * from './editor/components/formly/fields/formly-field-action/formly-field-action.component';\nexport * from './editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component';\nexport * from './editor/components/formly/fields/formly-field-custom/formly-field-custom.component';\nexport * from './editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component';\nexport * from './editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component';\nexport * from './editor/components/formly/fields/formly-field-input/formly-field-input.component';\nexport * from './editor/components/formly/fields/formly-field-label/formly-field-label.component';\nexport * from './editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component';\nexport * from './editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component';\nexport * from './editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component';\nexport * from './editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component';\nexport * from './editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component';\nexport * from './editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component';\n\n// editor helpers\nexport * from './editor/helpers/editor-field';\nexport * from './editor/helpers/editor-formly';\nexport * from './editor/helpers/formly-config';\nexport * from './editor/helpers/notification';\nexport * from './editor/helpers/editor-validators';\n\n// editor models\nexport * from './editor/models/editor-auto-save-preview.model';\nexport * from './editor/models/formly-config.model';\n\n// editor services\nexport * from './editor/services/form-editor.service';\nexport * from './editor/services/formly-config.provider';\n\n// tableview components\nexport * from './tableview/components/route/tableview-route.component';\nexport * from './tableview/components/tableview/tableview.component';\n\n// tableview router\nexport * from './tableview/router/tableview-route-builder';\n\n// tableview services\nexport * from './tableview/services/tableview-feature-config.token';\n\n// provide\nexport * from './provide';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["mergeMap","i2","i4.ActionExecutorService","i5.ViewContainer","i1","i5","i6","toObservable","take","i3","i4","i7","i8","i9","i10","i14","filter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons-tableview.mjs","sources":["../../tableview/src/action/helpers/i18n.ts","../../tableview/src/action/models/execution/action-instance-state.model.ts","../../tableview/src/tableview/services/tableview-feature-config.token.ts","../../tableview/src/action/helpers/notification.ts","../../tableview/src/action/models/execution/action-context.model.ts","../../tableview/src/action/models/execution/action-instance.model.ts","../../tableview/src/action/services/action-error-mapper.service.ts","../../tableview/src/action/services/navigation.service.ts","../../tableview/src/action/services/tokens/action-editor.token.ts","../../tableview/src/action/services/view-container.service.ts","../../tableview/src/action/services/action-executor.service.ts","../../tableview/src/action/services/root-action-executor.service.ts","../../tableview/src/action/services/component-action-executor.service.ts","../../tableview/src/action/services/providers/provide-action-executor.ts","../../tableview/src/action/components/action/action.component.ts","../../tableview/src/action/components/action/action.component.html","../../tableview/src/editor/components/editor/auto-save-status/auto-save-status.component.ts","../../tableview/src/editor/helpers/editor-autosave.ts","../../tableview/src/editor/helpers/editor-validators.ts","../../tableview/src/editor/helpers/editor-formly.ts","../../tableview/src/editor/helpers/notification.ts","../../tableview/src/editor/services/form-editor.service.ts","../../tableview/src/editor/components/editor/form-editor.component.ts","../../tableview/src/editor/components/editor/form-editor.component.html","../../tableview/src/action/components/editor/injector-context/action-editor-injector-context.component.ts","../../tableview/src/action/components/editor/injector-context/action-editor-injector-context.component.html","../../tableview/src/action/components/editor/action-editor.component.ts","../../tableview/src/action/components/editor/action-editor.component.html","../../tableview/src/action/components/localization/data-language-dropdown.component.ts","../../tableview/src/action/components/localization/data-language-dropdown.component.html","../../tableview/src/action/components/route/action-route.component.ts","../../tableview/src/action/components/route/action-route.component.html","../../tableview/src/action/helpers/styles.ts","../../tableview/src/action/components/table/action-table.component.ts","../../tableview/src/action/components/table/action-table.component.html","../../tableview/src/action/guards/unsaved-changes.guard.ts","../../tableview/src/action/services/providers/provide-view-container.ts","../../tableview/src/action/services/data-provider-executor.service.ts","../../tableview/src/editor/components/formly/fields/formly-field-type.abstract.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-action/formly-field-action.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-action/formly-field-action.component.html","../../tableview/src/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.html","../../tableview/src/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.html","../../tableview/src/editor/helpers/editor-field.ts","../../tableview/src/editor/components/formly/pipes/formly-field-label.pipe.ts","../../tableview/src/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.html","../../tableview/src/editor/components/formly/fields/formly-field-input/formly-field-input.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-input/formly-field-input.component.html","../../tableview/src/editor/components/formly/fields/formly-field-label/formly-field-label.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-label/formly-field-label.component.html","../../tableview/src/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.html","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.html","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.html","../../tableview/src/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.html","../../tableview/src/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.ts","../../tableview/src/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.html","../../tableview/src/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.ts","../../tableview/src/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.html","../../tableview/src/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.html","../../tableview/src/editor/helpers/formly-config.ts","../../tableview/src/editor/services/formly-config.provider.ts","../../tableview/src/tableview/components/tableview/tableview.component.ts","../../tableview/src/tableview/components/tableview/tableview.component.html","../../tableview/src/tableview/components/route/tableview-route.component.ts","../../tableview/src/tableview/components/route/tableview-route.component.html","../../tableview/src/tableview/router/tableview-route-builder.ts","../../tableview/src/provide.ts","../../tableview/src/index.ts","../../tableview/src/mediusinc-mng-commons-tableview.ts"],"sourcesContent":["import {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\nimport {map, mergeMap} from 'rxjs/operators';\n\nimport {I18nMissingTranslationStrategy, getI18n, getI18nAsync} from '@mediusinc/mng-commons/core';\nimport {getI18nModelParams, getI18nModelParamsAsync} from '@mediusinc/mng-commons/model';\nimport {ActionDescriptorInst, ActionEditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nexport function getI18nForAction(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any,\n missingTranslationStrategy: I18nMissingTranslationStrategy = 'returnFirstKey'\n): string | null {\n const keys = getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);\n const i18nParams = getI18nActionParams(translate, action, item, params);\n const i18nValue = getI18n(translate, i18nParams, ...keys);\n return getTranslationDependingOnStrategy(missingTranslationStrategy, {i18nValue, firstKey: keys[0], fallbackKey});\n}\n\n/**\n * Returns async translation for given keys with given params.\n * @param translate TranslateService\n * @param action action descriptor\n * @param actionPathKeys action path keys\n * @param customKey custom key\n * @param item item\n * @param fallbackKey fallback key, used as fallback key\n * @param params additional params for translation\n * @param missingTranslationStrategy strategy when no translation is found\n */\nexport function getI18nForActionAsync(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any,\n missingTranslationStrategy: I18nMissingTranslationStrategy = 'returnFirstKey'\n): Observable<string | null> {\n return getI18nActionParamsAsync(translate, action, item, params).pipe(\n mergeMap(i18nParams => {\n const keys = getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);\n return getI18nAsync(translate, i18nParams, ...keys).pipe(\n map(i18nValue => getTranslationDependingOnStrategy(missingTranslationStrategy, {i18nValue, firstKey: keys[0], fallbackKey}))\n );\n })\n );\n}\n\n/**\n * Returns translation depending on missingTranslationStrategy\n * @param missingTranslationStrategy strategy when no translation is found\n * @param values object with values, i18nValue is translation, firstKey is first key in array of keys, fallbackKey is fallback key\n */\nfunction getTranslationDependingOnStrategy(\n missingTranslationStrategy: I18nMissingTranslationStrategy,\n {i18nValue, firstKey, fallbackKey}: {i18nValue: string | null; firstKey?: string; fallbackKey?: string}\n): string | null {\n if (i18nValue !== null) {\n return i18nValue;\n } else {\n switch (missingTranslationStrategy) {\n case 'returnNull':\n return null;\n case 'returnFallbackKey':\n return fallbackKey ?? null;\n case 'returnFirstKey':\n return firstKey ?? null;\n }\n }\n}\n\nexport function getI18nActionTitleAsync(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any): Observable<string | null> {\n return getI18nForActionAsync(translate, action, 'title', undefined, item);\n}\n\nexport function getI18nActionEditorTitleAsync(translate: TranslateService, action: ActionEditorDescriptorInst<any>, item?: any): Observable<string | null> {\n return getI18nForActionAsync(translate, action, ['editor.title', 'title'], action.editorTitle ?? undefined, item, undefined, action.editorTitleParams ?? undefined);\n}\n\nexport function getI18nActionParams(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any, params: any = {}): any {\n const i18nParams = getI18nModelParams(translate, action.model ?? undefined, item, params);\n return populateI18nActionParams(i18nParams);\n}\n\nexport function getI18nActionParamsAsync(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any, params: any = {}): Observable<any> {\n return getI18nModelParamsAsync(translate, action.model ?? undefined, item, params).pipe(map(i18nParams => populateI18nActionParams(i18nParams)));\n}\n\nexport function populateI18nActionParams(params: any = {}): any {\n params = {...params};\n return params;\n}\n\nfunction getKeysByPriority(action: ActionDescriptorInst<any>, actionPathKeys: string | Array<string>, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n if (!Array.isArray(actionPathKeys)) {\n actionPathKeys = [actionPathKeys];\n }\n actionPathKeys.forEach(k => {\n if (action.i18nModelActionBaseKey) keys.push(`${action.i18nModelActionBaseKey}.${k}`);\n keys.push(`${action.actionName}.${k}`);\n });\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n}\n","/**\n * States of action. Enums ending with `*Final` are supposed to be final.\n */\nexport enum ActionInstanceStateEnum {\n TriggerStart, // action was triggered (click or direct)\n TriggerEnd,\n ActivationStart, // action activation started (direct, event or editor)\n ActivationEnd, // action activation ended\n FetchStart, // fetch started\n FetchEnd, // fetch ended\n FetchError, // fetch error\n RunConfirmationStart, // confirmation for run is started\n RunConfirmationEndAccept, // confirmation accepted\n RunConfirmationEndReject, // confirmation rejected\n RunStart, // action was run by calling main function\n RunEnd, // action run function executed\n RunError, // action run function executed with error\n NextActionStart, // next action started\n NextActionEnd, // next action finished\n ErrorActionStart, // error action started\n ErrorActionEnd, // error action finished\n FinishSuccessFinal, // action executed successfully\n FinishErrorFinal, // action executed with error\n FinishDismissedFinal, // action was dismissed by user\n FinishSuccessReactivateFinal, // action executed successfully, another instance will directly start from previous\n FinishComponentDestroyFinal, // action was dismissed by destroying component that was executing it\n FinishRouteUntriggerStart,\n FinishRouteUntriggerEndFinal,\n FinishRouteUntriggerTimeoutFinal\n}\n","import {InjectionToken} from '@angular/core';\n\nimport {ValidatorOption, WrapperOption} from '@ngx-formly/core/lib/models';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {CommonsFormlyTypeConfig} from '../../editor/models/formly-config.model';\n\nexport interface TableviewFeatureConfig {\n formly?: {\n skip?: boolean;\n merge?: boolean;\n types?: CommonsFormlyTypeConfig[];\n wrappers?: WrapperOption[];\n validators?: ValidatorOption[];\n getValidationMessages?: (translate: TranslateService) => any[];\n };\n actions?: {\n debugInstances?: boolean;\n };\n}\n\nexport const COMMONS_TABLEVIEW_FEATURE_CONFIG_IT = new InjectionToken<TableviewFeatureConfig>('COMMONS_TABLEVIEW_FEATURE_CONFIG');\n","import {TranslateService} from '@ngx-translate/core';\nimport {Message, MessageService} from 'primeng/api';\n\nimport {ICommonsError, getI18nForError, toastMessage} from '@mediusinc/mng-commons/core';\nimport {ActionDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getI18nForAction} from './i18n';\n\nexport function actionNotificationSuccess(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n functionName: string,\n messageService: MessageService,\n customTitleKey?: string,\n customMessageKey?: string,\n item?: any\n): Message {\n const actionSuccessTitle = getI18nForAction(translate, action, 'success.title', customTitleKey, item, 'general.success', functionName) ?? undefined;\n const actionSuccessMessage = getI18nForAction(translate, action, 'success.message', customMessageKey, item, 'general.successMessage', functionName) ?? undefined;\n return toastMessage(messageService, actionSuccessTitle, actionSuccessMessage);\n}\n\nexport function actionNotificationError(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n error: ICommonsError,\n functionName: string,\n messageService: MessageService,\n item?: any,\n severity: 'warn' | 'error' = 'error'\n): Message {\n const params = {\n errorMessage: getI18nForError(translate, error) ?? error.message\n };\n const actionErrorTitle =\n getI18nForAction(translate, action, [`error.${functionName}.title`, 'error.title'], action.runNotificationErrorTitle, item, 'general.error', params) ?? undefined;\n const actionErrorMessage =\n getI18nForAction(translate, action, [`error.${functionName}.message`, 'error.message'], action.runNotificationErrorMessage, item, 'general.errorMessage', params) ??\n undefined;\n return toastMessage(messageService, actionErrorTitle, actionErrorMessage, severity, 'pi-exclamation-triangle');\n}\n","import {Injector} from '@angular/core';\n\nimport {Confirmation, Message} from 'primeng/api';\nimport {BehaviorSubject, ReplaySubject, Subscription, distinctUntilChanged} from 'rxjs';\n\nimport {ActionParameters, ICommonsError, IDataProvider, LoggerService} from '@mediusinc/mng-commons/core';\nimport {IActionContext, IActionInstance} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ViewContainer} from '../../services/view-container.service';\nimport {ActionInstance} from './action-instance.model';\n\n/**\n * Class containing all main data for action to be executed in run/fetch/submit states.\n */\nexport class ActionContext<Item, Service = undefined> implements IActionContext<Item, Service, ActionInstance<Item, Service>, ViewContainer<Item, Service>> {\n private readonly logger = LoggerService.get().create('ActionContext');\n public readonly contextLongName: string;\n public previousActionInstance?: IActionInstance<any, any>;\n public confirmation?: Confirmation;\n public notification?: Message;\n public runSubscription?: Subscription;\n public dataProviderSource = ActionDataProviderSource.Undefined;\n\n constructor(\n public readonly injector: Injector,\n public readonly instance: ActionInstance<Item, Service>,\n public readonly parameters: ActionParameters<Item>,\n public readonly functionName: 'run' | 'fetch' | 'submit',\n public readonly serviceInstance: Service,\n public readonly dataProvider?: IDataProvider<Item, Service>,\n public readonly viewContainer?: ViewContainer<Item, Service>,\n private readonly executionSubject = new ReplaySubject<Item | null | undefined>(1),\n private readonly executionIsRunningSubject = new BehaviorSubject(false)\n ) {\n this.contextLongName = `${this.instance.instanceLongName}_${functionName}`;\n }\n\n public get execution$() {\n return this.executionSubject.asObservable();\n }\n\n public get executionIsRunning$() {\n return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public executionStart() {\n this.logger.trace(`Context ${this.contextLongName} - execution start`);\n this.executionIsRunningSubject.next(true);\n }\n\n public executionNext(next: Item | null | undefined, finish = true) {\n this.logger.trace(`Context ${this.contextLongName} - execution next event`, next, finish);\n\n this.executionSubject.next(next);\n if (finish) {\n this.executionComplete();\n }\n }\n\n public executionComplete() {\n this.logger.trace(`Context ${this.contextLongName} - execution complete`);\n\n this.executionSubject.complete();\n this.executionIsRunningSubject.next(false);\n }\n\n public executionError(err: ICommonsError) {\n this.logger.trace(`Context ${this.contextLongName} - execution error`, err);\n this.executionSubject.error(err);\n this.executionIsRunningSubject.next(false);\n }\n\n public finish() {\n this.runSubscription?.unsubscribe();\n this.executionSubject.complete();\n this.executionIsRunningSubject.complete();\n }\n\n public isClosed() {\n return this.executionSubject.isStopped && this.executionIsRunningSubject.isStopped && (this.runSubscription?.closed ?? true);\n }\n}\n\nexport enum ActionDataProviderSource {\n Undefined,\n ViewContainer,\n Descriptor,\n ParameterOrInput\n}\n","import {DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged, take} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {ActionParameters, LoggerService} from '@mediusinc/mng-commons/core';\nimport {\n ActionActivationTriggerEnum,\n ActionDescriptorInst,\n ActionExecutionError,\n ActionTypeEnum,\n IActionEditorComponent,\n IActionInstance\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionContext} from './action-context.model';\nimport {ActionInstanceStateEnum} from './action-instance-state.model';\n\n/**\n * Action execution instance containing data about execution state of action\n */\nexport class ActionInstance<Item, Service = undefined> implements IActionInstance<Item, Service> {\n public readonly instanceId: string;\n public readonly instanceLongName: string;\n public readonly action: ActionDescriptorInst<Item>;\n public readonly createdDate: Date = new Date();\n private readonly logger = LoggerService.get().create('ActionInstance');\n\n // function execution\n public readonly isRunLoadingSubject = new BehaviorSubject(false);\n\n // parameters, contexts, states\n public triggerParameters?: ActionParameters<Item>;\n public activationParameters?: ActionParameters<Item>;\n private readonly contexts: Array<ActionContext<Item, Service>> = [];\n private readonly executionSubject = new Subject<Item | null | undefined>();\n private readonly executionIsRunningSubject = new BehaviorSubject(false);\n private readonly stateSubject = new BehaviorSubject<ActionInstanceStateEnum>(1);\n private readonly resultSubject = new ReplaySubject<Item | null>(1);\n private readonly errorSubject = new ReplaySubject<ActionExecutionError>(1);\n\n private contextExecutionSubscriptions: Array<Subscription> = [];\n\n // result or error\n private _result?: Item | null;\n private _error?: ActionExecutionError;\n\n // additional data from trigger/activation\n public activationDialogRef?: DynamicDialogRef;\n public activationEditorComponentRef?: IActionEditorComponent;\n\n // linked actions\n private _reactivationInstanceSubject = new BehaviorSubject<IActionInstance<Item, Service> | undefined>(undefined); // editor action with resubmit enabled\n public reactivationPreviousInstance?: IActionInstance<Item, Service>; // used when linking to previous instance in case of action reactivation (within same editor)\n public previousInstance?: IActionInstance<any, any>; // linking to previous action when using next action feature\n public nextActionInstance?: IActionInstance<any, any>; // as defined in action descriptor\n public errorActionInstance?: IActionInstance<Item, Service>; // error action must rely on same type, as defined in action descriptor\n\n constructor(action: ActionDescriptorInst<Item>, state = ActionInstanceStateEnum.TriggerStart) {\n this.instanceId = Math.random().toString(36).substring(2);\n this.instanceLongName = `${action.actionNameLong}_${this.instanceId}`;\n this.action = action;\n this.state = state;\n }\n\n public get isRunLoading$() {\n return this.isRunLoadingSubject.asObservable();\n }\n\n public get context() {\n return this.contexts.length === 0 ? undefined : this.contexts[this.contexts.length - 1];\n }\n\n public get execution$() {\n return this.executionSubject.asObservable();\n }\n\n public get executionIsRunning$() {\n return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public get state() {\n return this.stateSubject.value;\n }\n\n public set state(state: ActionInstanceStateEnum) {\n if (state > this.stateSubject.value || (this.stateSubject.value === ActionInstanceStateEnum.RunError && state === ActionInstanceStateEnum.RunStart)) {\n this.logger.trace(`Instance ${this.instanceLongName} - state #${state}: ${ActionInstanceStateEnum[state]}`);\n this.stateSubject.next(state);\n switch (state) {\n case ActionInstanceStateEnum.FinishSuccessFinal:\n case ActionInstanceStateEnum.FinishErrorFinal:\n case ActionInstanceStateEnum.FinishDismissedFinal:\n if (this.action.activationTrigger === ActionActivationTriggerEnum.OnClick) {\n this.finish();\n }\n break;\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n // partially finish reactivation because new instance event must still be emitted\n if (this.action.type === ActionTypeEnum.Editor) {\n this.finish(true);\n }\n break;\n case ActionInstanceStateEnum.FinishComponentDestroyFinal:\n this.finish();\n break;\n case ActionInstanceStateEnum.FinishRouteUntriggerEndFinal:\n case ActionInstanceStateEnum.FinishRouteUntriggerTimeoutFinal:\n if (this.action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n this.finish();\n }\n break;\n }\n }\n }\n\n public get state$() {\n return this.stateSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public get result() {\n return this._result;\n }\n\n public set result(result: Item | null | undefined) {\n if (typeof result === 'undefined') {\n return;\n }\n\n this.logger.trace(`Instance ${this.instanceLongName} - result`, result);\n\n this._result = result;\n this.resultSubject.next(result);\n }\n\n public get result$() {\n return this.resultSubject.asObservable();\n }\n\n public get error() {\n return this._error;\n }\n\n public set error(error: ActionExecutionError | undefined) {\n if (typeof error === 'undefined') {\n return;\n }\n\n this.logger.trace(`Instance ${this.instanceLongName} - error`, error);\n\n this._error = error;\n this.errorSubject.next(error);\n }\n\n public get error$() {\n return this.errorSubject.asObservable();\n }\n\n public set reactivationInstance(instance: IActionInstance<Item, Service> | undefined) {\n // this is allowed to only be executed once for subject and must be in correct status!\n if (this.state !== ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n return;\n }\n this._reactivationInstanceSubject.next(instance);\n this._reactivationInstanceSubject.complete();\n }\n\n public get reactivationInstance() {\n return this._reactivationInstanceSubject.value;\n }\n\n public get reactivationInstance$(): Observable<IActionInstance<Item, Service>> {\n return this._reactivationInstanceSubject.asObservable().pipe(\n filter(i => !!i), // ignore undefined events (usually initial)\n map(i => i!),\n take(1)\n );\n }\n\n public contextAt(idx: number) {\n return idx < this.contexts.length ? this.contexts[idx] : undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public newContext(context: ActionContext<Item, Service>, finishPrevious = true) {\n this.logger.trace(`Instance ${this.instanceLongName} - new context ${context.contextLongName}`);\n\n const currentContext = this.context;\n if (currentContext) {\n currentContext.executionComplete();\n }\n this.contextExecutionSubscriptions.forEach(s => s.unsubscribe());\n this.contextExecutionSubscriptions = [];\n this.contextExecutionSubscriptions.push(\n context.execution$.subscribe({\n next: next => this.executionSubject.next(next),\n error: error => this.executionSubject.error(error)\n })\n );\n this.contextExecutionSubscriptions.push(\n context.executionIsRunning$.subscribe({\n next: next => this.executionIsRunningSubject.next(next)\n })\n );\n this.contexts.push(context);\n }\n\n public forceFinish() {\n this.logger.warn(`Force finishing instance '${this.instanceLongName}'. Try completing instance with states instead.`);\n this.state = ActionInstanceStateEnum.FinishDismissedFinal;\n this.finish();\n }\n\n private finish(reactivate = false) {\n // complete all subjects\n this.contexts.forEach(c => c.finish());\n this.executionSubject.complete();\n this.executionIsRunningSubject.complete();\n this.stateSubject.complete();\n this.resultSubject.complete();\n this.errorSubject.complete();\n if (!reactivate) {\n // allow reactivation instance to be emitted separately\n this._reactivationInstanceSubject.complete();\n }\n }\n\n public isClosed(): boolean {\n return (\n this.executionSubject.isStopped &&\n this.executionIsRunningSubject.isStopped &&\n this.stateSubject.isStopped &&\n this.resultSubject.isStopped &&\n this.errorSubject.isStopped &&\n this._reactivationInstanceSubject.isStopped &&\n this.contextExecutionSubscriptions.every(s => s.closed) &&\n this.contexts.every(c => c.isClosed())\n );\n }\n}\n","import {ICommonsError} from '@mediusinc/mng-commons/core';\n\n/**\n * Service for transforming errors in action execution.\n * Can be used to transform errors to Commons Error interface for correct error message display.\n */\nexport abstract class ActionErrorMapperService {\n /**\n * Can be used to enrich data from error and make it more \"stable\". Most use cases cover extracting message or message code of an\n * error out of http response body/headers.\n *\n * @param error Original error (cause).\n * @param commonsError Commons error that wraps original error.\n */\n abstract toCommonsError(error?: any, commonsError?: ICommonsError): ICommonsError;\n}\n\nexport class DefaultActionErrorMapperService extends ActionErrorMapperService {\n toCommonsError(error?: any, commonsError?: ICommonsError): ICommonsError {\n if (!commonsError) {\n commonsError = {\n type: 'CommonsActionError',\n name: error?.name ?? 'UnknownError',\n message: error.message ?? 'Unknown error',\n cause: error\n };\n }\n\n return commonsError;\n }\n}\n","import {Location} from '@angular/common';\nimport {Injectable} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NavigationEnd, Router} from '@angular/router';\n\n@Injectable()\nexport class NavigationService {\n private history: Array<string> = [];\n\n constructor(\n private router: Router,\n private location: Location\n ) {\n this.router.events.pipe(takeUntilDestroyed()).subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.history.push(event.urlAfterRedirects);\n }\n });\n }\n\n public getCurrentLocationFromHistory(): string | null {\n if (this.history.length > 0) {\n return this.history[this.history.length - 1];\n } else {\n return null;\n }\n }\n\n public getCurrentLocationFromUrl() {\n return this.location.path(true);\n }\n\n public getPreviousLocationFromHistory(): string | null {\n if (this.history.length > 1) {\n return this.history[this.history.length - 2];\n } else {\n return null;\n }\n }\n\n public back(): void {\n this.history.pop();\n if (this.history.length > 0) {\n this.location.back();\n } else {\n this.router.navigateByUrl('/');\n }\n }\n}\n","import {InjectionToken, Type} from '@angular/core';\n\nexport const ACTION_EDITOR_COMPONENT_IT: InjectionToken<Type<any>> = new InjectionToken<Type<any>>('ACTION_EDITOR_COMPONENT');\n","import {Injectable, signal} from '@angular/core';\n\nimport {Observable, Subject} from 'rxjs';\n\nimport {IDataProvider} from '@mediusinc/mng-commons/core';\nimport {TableReloadEvent} from '@mediusinc/mng-commons/table/api';\nimport {ActionDescriptorInst, EditorResetEvent, IViewContainer, ViewContainerEditorCloseEvent} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionInstance} from '../models/execution/action-instance.model';\n\n/**\n * Should be used with providers defined within component.\n */\n@Injectable()\nexport class ViewContainer<Item, Service = undefined> implements IViewContainer<Item, Service, ActionInstance<Item, Service>> {\n public dataProvider = signal<IDataProvider<Item, Service> | undefined>(undefined);\n public routeTriggeredActionInstance = signal<ActionInstance<Item, Service> | undefined>(undefined);\n public actions = signal<Array<ActionDescriptorInst<Item>>>([]);\n\n private _tableReloadSubject: Subject<TableReloadEvent> = new Subject();\n private _editorResetSubject: Subject<EditorResetEvent<Item>> = new Subject();\n private _editorCloseSubject: Subject<ViewContainerEditorCloseEvent<Item>> = new Subject();\n\n public get tableReload$(): Observable<TableReloadEvent> {\n return this._tableReloadSubject.asObservable();\n }\n\n public reloadTable(event?: TableReloadEvent): void {\n this._tableReloadSubject.next(event ?? {});\n }\n\n public get editorReset$(): Observable<EditorResetEvent<Item>> {\n return this._editorResetSubject.asObservable();\n }\n\n public resetEditor(event?: EditorResetEvent<Item> | undefined): void {\n this._editorResetSubject.next(event ?? {});\n }\n\n public get editorClose$(): Observable<ViewContainerEditorCloseEvent<Item>> {\n return this._editorCloseSubject.asObservable();\n }\n\n public closeEditor(event?: ViewContainerEditorCloseEvent<Item>): void {\n this._editorCloseSubject.next(event ?? {});\n }\n}\n","import {HttpErrorResponse} from '@angular/common/http';\nimport {Injector, inject} from '@angular/core';\nimport {Router, UrlTree} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Confirmation, ConfirmationService, MessageService} from 'primeng/api';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {Observable, from, mergeMap, of, switchMap, take, timeout} from 'rxjs';\nimport {catchError, filter, first, map, startWith} from 'rxjs/operators';\n\nimport {\n ActionParameters,\n CommonsHttpError,\n CommonsInternalError,\n CommonsService,\n ICommonsError,\n IDataProvider,\n LoggerService,\n ParametrizePipe,\n StyleSizeEnum,\n escapeHtmlAny,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {\n ActionActivationTriggerEnum,\n ActionConfirmationDescriptor,\n ActionContextValidation,\n ActionDeleteDescriptorInst,\n ActionDescriptorInst,\n ActionEditorAddDescriptorInst,\n ActionEditorDescriptorInst,\n ActionEditorDetailsDescriptorInst,\n ActionEditorEditDescriptorInst,\n ActionRunFnType,\n ActionTypeEnum,\n CommonsActionError,\n CommonsActionErrorOptions,\n DataProviderExecutor,\n IActionEditorComponent,\n IActionInstance\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {COMMONS_TABLEVIEW_FEATURE_CONFIG_IT} from '../../tableview/services/tableview-feature-config.token';\nimport {getI18nForAction} from '../helpers/i18n';\nimport {actionNotificationError, actionNotificationSuccess} from '../helpers/notification';\nimport {ActionEditorDialogData} from '../models/action-editor-dialog-data.model';\nimport {ActionContext, ActionDataProviderSource} from '../models/execution/action-context.model';\nimport {ActionInstanceStateEnum} from '../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../models/execution/action-instance.model';\nimport {ActionErrorMapperService} from './action-error-mapper.service';\nimport {NavigationService} from './navigation.service';\nimport {ACTION_EDITOR_COMPONENT_IT} from './tokens/action-editor.token';\nimport {ViewContainer} from './view-container.service';\n\nexport abstract class ActionExecutorService {\n private static readonly className = 'ActionExecutorService';\n protected readonly injector = inject(Injector);\n protected readonly router = inject(Router);\n protected readonly dialogService = inject(DialogService);\n protected readonly translate = inject(TranslateService);\n protected readonly commons = inject(CommonsService);\n protected readonly dataProviderExecutor = inject(DataProviderExecutor);\n protected readonly navigationService = inject(NavigationService);\n protected readonly errorMapper = inject(ActionErrorMapperService);\n protected readonly config = inject(COMMONS_TABLEVIEW_FEATURE_CONFIG_IT, {optional: true});\n protected readonly defaultEditorDialogComponent = inject(ACTION_EDITOR_COMPONENT_IT);\n protected readonly messageService = inject(MessageService);\n protected readonly confirmationService = inject(ConfirmationService);\n protected readonly viewContainer = inject(ViewContainer, {optional: true});\n protected readonly parametrize = new ParametrizePipe();\n\n protected readonly instancesBufferMax = 100;\n protected logger = inject(LoggerService).create(ActionExecutorService.className);\n\n public abstract get instances(): ActionInstance<any, any>[];\n\n /**\n * Prepares action context for usage in validation.\n * @param action Action descriptor.\n * @param parameters Action parameters.\n * @param dataProvider Data provider.\n */\n public prepareActionContextValidation<Item, Service>(\n action: ActionDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>\n ): ActionContextValidation<Item, Service> {\n const ctxDataProvider = dataProvider ?? action.dataProvider ?? this.viewContainer?.dataProvider();\n return <ActionContextValidation<Item, Service>>{\n descriptor: action,\n parameters: parameters,\n serviceInstance: this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider) ?? undefined,\n dataProvider: ctxDataProvider\n };\n }\n\n /**\n * Runs action context by submitting execution results/errors to context, watching over instance results/errors, displaying notifications,\n * running next/error action and triggering dismiss of action. Confirmation is also processed here.\n *\n * @param ctx Action context to run.\n */\n public run<Item, Service = undefined>(ctx: ActionContext<Item, Service>) {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n\n // if (ctx.instance.action.type === ActionTypeEnum.Direct && ctx.instance.action.hasRunConfirmation) {\n if (isMainRunFn && ctx.instance.action.hasRunConfirmation) {\n // only direct action can be configured with run confirmation\n // if editor, then run confirmation is mapped to submit action and ignored as editor run\n const confirmationDescriptor = ctx.instance.action.runConfirmationDialogDescriptor as ActionConfirmationDescriptor<Item>;\n\n const item = ctx.parameters.item;\n let confirmParams: Confirmation = {\n icon: confirmationDescriptor.icon,\n acceptVisible: true,\n acceptIcon: confirmationDescriptor.acceptButton.icon ?? undefined,\n acceptButtonStyleClass: confirmationDescriptor.acceptButton.styleClass.build(),\n rejectVisible: true,\n rejectIcon: confirmationDescriptor.rejectButton?.icon ?? undefined,\n rejectButtonStyleClass: confirmationDescriptor.rejectButton?.styleClass.build(),\n closeOnEscape: confirmationDescriptor.closeOnEscape\n };\n\n if (confirmationDescriptor.title !== null) {\n confirmParams.header =\n getI18nForAction(this.translate, ctx.instance.action, 'confirm.title', confirmationDescriptor.title, item, 'general.confirmation') ?? undefined;\n }\n\n if (confirmationDescriptor.message !== null) {\n confirmParams.message =\n getI18nForAction(this.translate, ctx.instance.action, 'confirm.message', confirmationDescriptor.message, escapeHtmlAny(item), 'general.confirmation') ??\n undefined;\n }\n\n if (confirmationDescriptor.acceptButton.label !== null) {\n confirmParams.acceptLabel =\n getI18nForAction(this.translate, ctx.instance.action, 'confirm.accept', confirmationDescriptor.acceptButton.label, item, 'general.yes') ?? undefined;\n }\n\n if (confirmationDescriptor.acceptButton.icon !== null) {\n confirmParams.acceptIcon = confirmationDescriptor.acceptButton.icon;\n }\n\n if (confirmationDescriptor.rejectButton?.icon !== null) {\n confirmParams.rejectIcon = confirmationDescriptor.rejectButton?.icon;\n }\n\n if (confirmationDescriptor.rejectButton?.label !== null) {\n confirmParams.rejectLabel =\n getI18nForAction(this.translate, ctx.instance.action, 'confirm.reject', confirmationDescriptor.rejectButton?.label, item, 'general.no') ?? undefined;\n }\n\n if (confirmationDescriptor.rejectButton == null || (confirmationDescriptor.rejectButton.label === null && confirmationDescriptor.rejectButton.icon === null)) {\n confirmParams.rejectVisible = false;\n }\n\n confirmParams.accept = () => {\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationEndAccept;\n this.runWithoutConfirmation(ctx);\n };\n\n confirmParams.reject = () => {\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationEndReject;\n if (ctx.instance.action.type !== ActionTypeEnum.Editor) {\n // if not editor, the it can be closed\n this.finishAction(ctx.instance);\n }\n };\n\n if (confirmationDescriptor.runConfirmationConfigMapFn) {\n confirmParams = confirmationDescriptor.runConfirmationConfigMapFn(ctx, confirmParams);\n }\n\n ctx.confirmation = confirmParams;\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationStart;\n\n this.confirmationService.confirm(confirmParams);\n } else {\n this.runWithoutConfirmation(ctx);\n }\n }\n\n /**\n * Runs action context by submitting execution results/errors to context, watching over instance results/errors, displaying notifications,\n * running next/error action and triggering dismiss of action. Confirmation\n *\n * @param ctx Action context to run.\n *\n * @returns Action context for submit (=run) function.\n */\n private runWithoutConfirmation<Item, Service = undefined>(ctx: ActionContext<Item, Service>): Observable<Item | null | undefined> {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n const isErrorCriticalRunFn = ctx.functionName === 'run';\n let actionEditor: ActionEditorDescriptorInst<Item>;\n\n let fnObs: ActionRunFnType<Item, Service>;\n\n switch (ctx.functionName) {\n case 'submit':\n actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item>;\n if (typeof actionEditor.submitFunction !== 'function') {\n if (actionEditor instanceof ActionEditorAddDescriptorInst) {\n fnObs = this.dataProviderExecutor.runCreateOrFail.bind(this.dataProviderExecutor);\n } else if (actionEditor instanceof ActionEditorEditDescriptorInst) {\n fnObs = this.dataProviderExecutor.runUpdateOrFail.bind(this.dataProviderExecutor);\n } else if (ctx.dataProviderSource > ActionDataProviderSource.ViewContainer) {\n // if data provider is given directly on descriptor or as input, use it\n const defaultSubmit = of(ctx.parameters?.item ?? undefined);\n fnObs = ctx => {\n if (ctx.parameters.itemId) {\n return this.dataProviderExecutor.runUpdate(ctx, defaultSubmit);\n } else {\n return this.dataProviderExecutor.runCreate(ctx, defaultSubmit);\n }\n };\n } else {\n fnObs = ctx => ctx.parameters?.item ?? undefined;\n }\n } else {\n fnObs = actionEditor.submitFunction;\n }\n break;\n case 'fetch':\n actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item>;\n if (typeof actionEditor.fetchFunction !== 'function') {\n if (actionEditor instanceof ActionEditorEditDescriptorInst || actionEditor instanceof ActionEditorDetailsDescriptorInst) {\n fnObs = this.dataProviderExecutor.runFetchOrFail.bind(this.dataProviderExecutor);\n } else if (ctx.dataProviderSource > ActionDataProviderSource.ViewContainer) {\n const defaultFetch = of(ctx.parameters?.item ? ctx.parameters.item : undefined);\n fnObs = ctx => {\n if (ctx.parameters.itemId || typeof ctx.parameters.item === 'object') {\n return this.dataProviderExecutor.runFetch(ctx, defaultFetch);\n }\n return defaultFetch;\n };\n } else {\n fnObs = ctx => ctx.parameters?.item ?? undefined;\n }\n } else {\n fnObs = actionEditor.fetchFunction;\n }\n break;\n case 'run':\n default:\n if (!ctx.instance.action.hasRunFunction && ctx.instance.action instanceof ActionDeleteDescriptorInst) {\n fnObs = this.dataProviderExecutor.runDeleteOrFail.bind(this.dataProviderExecutor);\n } else {\n fnObs = ctx.instance.action.runFunction;\n }\n break;\n }\n\n // switch (ctx.functionName) {\n // case 'submit':\n // actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item>;\n // if (typeof actionEditor.submitFunction !== 'function') {\n // if (actionEditor instanceof ActionEditorAddDescriptorInst) {\n // fnObs = this.dataProviderExecutor.runCreateOrFail.bind(this.dataProviderExecutor);\n // } else if (actionEditor instanceof ActionEditorEditDescriptorInst) {\n // fnObs = this.dataProviderExecutor.runUpdateOrFail.bind(this.dataProviderExecutor);\n // } else {\n // fnObs = ctx => ctx.parameters?.item ?? undefined;\n // }\n // } else {\n // fnObs = actionEditor.submitFunction;\n // }\n // break;\n // case 'fetch':\n // actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item>;\n // if (typeof actionEditor.fetchFunction !== 'function') {\n // if (actionEditor instanceof ActionEditorEditDescriptorInst || actionEditor instanceof ActionEditorDetailsDescriptorInst) {\n // fnObs = this.dataProviderExecutor.runFetchOrFail.bind(this.dataProviderExecutor);\n // } else {\n // fnObs = ctx => ctx.parameters?.item ?? undefined;\n // }\n // } else {\n // fnObs = actionEditor.fetchFunction;\n // }\n // break;\n // case 'run':\n // default:\n // if (!ctx.instance.action.hasRunFunction && ctx.instance.action instanceof ActionDeleteDescriptorInst) {\n // fnObs = this.dataProviderExecutor.runDeleteOrFail.bind(this.dataProviderExecutor);\n // } else {\n // fnObs = ctx.instance.action.runFunction;\n // }\n // break;\n // }\n\n const retObs = of(void 0).pipe(\n take(1),\n switchMap(() => {\n if (isMainRunFn) {\n // if main run function, also set loading to true\n ctx.instance.state = ActionInstanceStateEnum.RunStart;\n ctx.instance.isRunLoadingSubject.next(true);\n } else {\n ctx.instance.state = ActionInstanceStateEnum.FetchStart;\n }\n // start context execution to mark execution loading\n ctx.executionStart();\n\n return toObservable(fnObs(ctx));\n }),\n mergeMap(runResult => {\n // set next state depending on run\n ctx.instance.state = isMainRunFn ? ActionInstanceStateEnum.RunEnd : ActionInstanceStateEnum.FetchEnd;\n // set execution result\n ctx.executionNext(runResult, isMainRunFn);\n\n if (isMainRunFn) {\n // set instance final result on main run execution\n ctx.instance.result = runResult;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle notification\n if (ctx.instance.action.hasRunNotificationSuccess) {\n ctx.notification = actionNotificationSuccess(\n this.translate,\n ctx.instance.action,\n ctx.functionName,\n this.messageService,\n ctx.instance.action.runNotificationSuccessTitle,\n ctx.instance.action.runNotificationSuccessMessage,\n {\n ...ctx.parameters?.item,\n ...runResult\n }\n );\n }\n\n // handle possible after run action\n if (ctx.instance.action.afterRunAction) {\n // mark new state for next action start\n const afterRunAction =\n typeof ctx.instance.action.afterRunAction === 'function' ? ctx.instance.action.afterRunAction(ctx) : ctx.instance.action.afterRunAction;\n const nextActionInstance = this.activateAction(\n afterRunAction,\n <ActionParameters<unknown>>{\n itemId: ctx.parameters.itemId,\n item: runResult,\n actionData: ctx.parameters.actionData,\n route: ctx.parameters.route,\n sourceComponent: ctx.parameters.sourceComponent\n },\n undefined,\n ctx.instance as ActionInstance<unknown, unknown>,\n true\n );\n ctx.instance.nextActionInstance = nextActionInstance;\n\n ctx.instance.state = ActionInstanceStateEnum.NextActionStart;\n\n // finish current action when next action finishes\n return nextActionInstance.state$.pipe(\n startWith(nextActionInstance.state), // provide first state cause it might be finished already\n filter(state => state >= ActionInstanceStateEnum.FinishSuccessFinal),\n take(1),\n map(() => {\n ctx.instance.state = ActionInstanceStateEnum.NextActionEnd;\n return runResult;\n })\n );\n }\n } else {\n if (actionEditor.hasFetchNotificationSuccess) {\n actionNotificationSuccess(\n this.translate,\n actionEditor,\n 'fetch',\n this.messageService,\n actionEditor.fetchNotificationSuccessTitle,\n actionEditor.fetchNotificationSuccessMessage,\n ctx.parameters.item\n );\n }\n }\n\n return of(runResult);\n }),\n map(runResult => {\n if (isMainRunFn) {\n // deactivate action\n this.finishAction(ctx.instance);\n }\n return runResult;\n }),\n catchError(err => {\n // transform error to action error\n const actionError = this.toActionError(err, ctx);\n\n // set instance state to error\n ctx.instance.state = isMainRunFn ? ActionInstanceStateEnum.RunError : ActionInstanceStateEnum.FetchError;\n // mark execution error on context\n ctx.executionError(actionError);\n\n if (ctx.instance.action.hasRunNotificationError) {\n const message = actionNotificationError(this.translate, ctx.instance.action, actionError, 'fetch', this.messageService, ctx.parameters.item);\n actionError.notification = message;\n actionError.notificationEmitSource = ActionExecutorService.className;\n }\n\n let errorObs = of(void 0);\n if (isMainRunFn) {\n ctx.instance.error = err;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle possible error action if run\n if (isMainRunFn && ctx.instance.action.onRunErrorAction) {\n const onRunErrorAction =\n typeof ctx.instance.action.onRunErrorAction === 'function' ? ctx.instance.action.onRunErrorAction(ctx) : ctx.instance.action.onRunErrorAction;\n // cannot start with trigger, because routing might be problematic (lousing previous results etc.)\n const errorActionInstance = this.activateAction<Item, Service>(\n onRunErrorAction,\n <ActionParameters<Item>>{\n itemId: ctx.parameters.itemId,\n item: ctx.parameters.item,\n actionData: ctx.parameters.actionData,\n route: ctx.parameters.route,\n sourceComponent: ctx.parameters.sourceComponent\n },\n undefined,\n undefined,\n true\n );\n ctx.instance.errorActionInstance = errorActionInstance;\n\n ctx.instance.state = ActionInstanceStateEnum.ErrorActionStart;\n\n errorObs = errorActionInstance.state$.pipe(\n startWith(errorActionInstance.state), // provide first state cause it might be finished already\n filter(state => state >= ActionInstanceStateEnum.FinishSuccessFinal),\n take(1),\n map(() => {\n ctx.instance.state = ActionInstanceStateEnum.ErrorActionEnd;\n return void 0;\n })\n );\n }\n }\n\n // list and map only to mark instance state as finished error state\n return errorObs.pipe(\n map(() => {\n // deactivate action only if critical (fetch on editor or run on button actions)\n if (isErrorCriticalRunFn) {\n this.finishAction(ctx.instance);\n }\n // rethrow error to propagate further\n throw actionError;\n })\n );\n })\n );\n\n ctx.runSubscription = retObs.subscribe({\n next: res => {\n this.logger.debug(`ActionContext ${ctx.contextLongName} execution next event`, res);\n },\n error: err => {\n if ((err as ICommonsError | undefined)?.type !== 'CommonsActionError') {\n this.logger.error(`Non action error occurred`, err);\n } else {\n this.logger.debug(`Action context ${ctx.contextLongName} execution error event`, err);\n }\n }\n });\n\n return retObs;\n }\n\n /**\n * Prepares editor action's fetch function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for fetch function.\n */\n public prepareContextForEditorFetch<Item, Service>(\n action: ActionEditorDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n return this.prepareContextForEditor(instance, parameters, 'fetch', dataProvider, previousActionInstance);\n }\n\n /**\n * Runs editor action's submit (=main run) function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for submit (=run) function.\n */\n public prepareContextForEditorSubmit<Item, Service>(\n action: ActionEditorDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n return this.prepareContextForEditor(instance, parameters, 'submit', dataProvider, previousActionInstance);\n }\n\n /**\n * Prepares action exec context for action of type editor.\n *\n * @param instance Action instance.\n * @param parameters Action parameters for context.\n * @param functionName Action function name parameter.\n * @param dataProvider Optional data provider. If not provided data provider from either the action editor or view container will be used.\n * @param previousActionInstance Optional previous action instance to link in next instance.\n */\n private prepareContextForEditor<Item, Service>(\n instance: ActionInstance<Item, Service>,\n parameters: ActionParameters<Item>,\n functionName: 'submit' | 'fetch',\n dataProvider?: IDataProvider,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, Service> {\n if (instance.action.type !== ActionTypeEnum.Editor) {\n throw new CommonsInternalError(`Cannot create editor context for action ${instance.action.actionNameLong} of type ${instance.action.type}.`);\n }\n const editorAction = instance.action as ActionEditorDescriptorInst<Item>;\n let ctxDataProvider = dataProvider;\n let dataProviderSource = ActionDataProviderSource.ParameterOrInput;\n if (!ctxDataProvider && editorAction.dataProvider) {\n ctxDataProvider = editorAction.dataProvider;\n dataProviderSource = ActionDataProviderSource.Descriptor;\n }\n if (!ctxDataProvider) {\n const viewContainerDataProvider = this.viewContainer?.dataProvider();\n if (viewContainerDataProvider) {\n ctxDataProvider = viewContainerDataProvider;\n dataProviderSource = ActionDataProviderSource.ViewContainer;\n } else {\n dataProviderSource = ActionDataProviderSource.Undefined;\n }\n }\n const ctx = new ActionContext<Item, Service>(\n this.injector,\n instance,\n parameters,\n functionName,\n this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider) ?? undefined,\n ctxDataProvider,\n this.viewContainer ?? undefined\n );\n ctx.dataProviderSource = dataProviderSource;\n ctx.previousActionInstance = previousActionInstance;\n instance.newContext(ctx);\n return ctx;\n }\n\n /**\n * Runs action's main run function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context run.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for run function.\n */\n private prepareContext<Item, Service = undefined>(\n action: ActionDescriptorInst<Item, Service>,\n parameters: ActionParameters<Item>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: ActionInstance<any, any>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance<Item, Service>(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n\n let ctxDataProvider = instance.action.dataProvider;\n let dataProviderSource = ActionDataProviderSource.Descriptor;\n if (!ctxDataProvider) {\n ctxDataProvider = this.viewContainer?.dataProvider();\n dataProviderSource = ActionDataProviderSource.ViewContainer;\n }\n\n let service: Service | undefined = undefined;\n if (ctxDataProvider != null) {\n const dataProviderService = this.dataProviderExecutor.getDataProviderService<Item, Service>(this.injector, ctxDataProvider);\n if (!dataProviderService) {\n throw new CommonsInternalError('');\n }\n service = dataProviderService;\n } else {\n dataProviderSource = ActionDataProviderSource.Undefined;\n }\n\n const ctx = new ActionContext<Item, Service>(this.injector, instance, parameters, 'run', service as Service, ctxDataProvider, this.viewContainer ?? undefined);\n ctx.dataProviderSource = dataProviderSource;\n ctx.previousActionInstance = previousActionInstance;\n instance.newContext(ctx);\n\n return ctx;\n }\n\n /**\n * Activates action (in case of dialog, dialog will be opened).\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for activation of action instance.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n * @param runContext Marks if context should be run.\n *\n * @returns Action instance - if non provided in parameters, the newly created will be returned.\n */\n public activateAction<Item, Service = undefined>(\n action: ActionDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: ActionInstance<any, any>,\n runContext = false\n ): ActionInstance<Item, Service> {\n instance = this.getOrCreateInstance<Item, Service>(instance, action, parameters, ActionInstanceStateEnum.ActivationStart);\n instance.state = ActionInstanceStateEnum.ActivationStart;\n instance.activationParameters = parameters;\n // start activation instance\n if (action.type === ActionTypeEnum.Editor) {\n let dialogComponent = this.defaultEditorDialogComponent;\n const dialogClassNames = ['mng-dialog'];\n const dialogConfig: DynamicDialogConfig = {\n duplicate: true\n };\n\n if (action instanceof ActionEditorDescriptorInst) {\n dialogClassNames.push(action.dialogClassName ?? 'mng-action-editor-dialog');\n switch (action.dialogSize) {\n case StyleSizeEnum.ExtraSmall:\n dialogClassNames.push('mng-dialog-xs');\n break;\n case StyleSizeEnum.Small:\n dialogClassNames.push('mng-dialog-sm');\n break;\n case StyleSizeEnum.Large:\n dialogClassNames.push('mng-dialog-lg');\n break;\n case StyleSizeEnum.ExtraLarge:\n dialogClassNames.push('mng-dialog-xl');\n break;\n case StyleSizeEnum.Normal:\n default:\n break;\n }\n if (action.editorComponent) {\n dialogComponent = action.editorComponent;\n }\n dialogConfig.data = <ActionEditorDialogData<Item, Service>>{\n action: {\n descriptor: action,\n instance: instance,\n previousInstance: previousActionInstance\n },\n injector: this.injector\n };\n }\n\n dialogConfig.styleClass = dialogClassNames.join(' ');\n\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n dialogConfig.closable = false;\n dialogConfig.closeOnEscape = false;\n }\n\n const dialogRef = this.dialogService.open(dialogComponent, dialogConfig);\n dialogRef.onClose.pipe(take(1)).subscribe(() => {\n // to close dialog on 'X' click or esc button\n this.finishAction(instance!);\n });\n instance.activationDialogRef = dialogRef;\n return instance;\n } else {\n // directly execute action\n instance.state = ActionInstanceStateEnum.ActivationEnd;\n const context = this.prepareContext<Item, Service>(action, parameters, instance, previousActionInstance);\n\n if (runContext) {\n this.run(context);\n }\n\n return context.instance;\n }\n }\n\n /**\n * To be called when action editor is initialized to correctly activate action.\n * @param action Action descriptor.\n * @param instance Action instance (if available).\n * @param componentRef Optional action editor component reference.\n */\n public onActionEditorInit<T, S>(action: ActionDescriptorInst<T>, instance?: ActionInstance<T, S>, componentRef?: IActionEditorComponent): ActionInstance<T, S> {\n if (action.type !== ActionTypeEnum.Editor) {\n throw new Error(`Action ${action.actionName} is not of type editor, cannot be activated through \"onActionEditorOnInit\"`);\n }\n if (instance && action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n const triggeredInstance = this.viewContainer?.routeTriggeredActionInstance();\n if (triggeredInstance && triggeredInstance.instanceLongName !== instance.instanceLongName) {\n this.logger.debug(\n `WARNING: Found triggered parameters view container instance ${triggeredInstance.instanceLongName} and it does not match instance ${instance.instanceLongName} retrieved on editor init.`\n );\n }\n }\n instance = this.getOrCreateInstance(instance, action, undefined, ActionInstanceStateEnum.ActivationStart);\n instance.state = ActionInstanceStateEnum.ActivationEnd;\n instance.activationEditorComponentRef = componentRef;\n\n return instance;\n }\n\n /**\n * To be called when action editor cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnClick) {\n return;\n }\n this.finishAction(instance, true);\n }\n\n /**\n * To be called when action editor cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionEditorDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.type !== ActionTypeEnum.Editor) {\n throw new Error(`Action instance ${instance.instanceLongName} is not of type editor, cannot be deactivated through \"onActionEditorOnDestroy\"`);\n }\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n this.finishAction(instance, true);\n }\n }\n\n /**\n * To be called when action route cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionRouteDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n throw new Error(`Action instance ${instance.instanceLongName} is not triggered on route, cannot be deactivated through \"onActionRouteOnDestroy\"`);\n }\n this.finishAction(instance, true);\n }\n\n /**\n * Deactivates action by choosing final state, closing dialog and completing all subjects in instance and contexts.\n *\n * @param instance Action instance.\n * @param onDestroy Marks if finish is called on component destroy lifecycle hook.\n */\n public finishAction<Item, Service = undefined>(instance: ActionInstance<Item, Service>, onDestroy = false) {\n instance = this.getOrCreateInstance(instance);\n if (instance.state >= ActionInstanceStateEnum.FinishSuccessFinal) {\n this.logger.trace(`ActionInstance ${instance.instanceLongName} already finished`);\n return;\n }\n\n let finalState: ActionInstanceStateEnum;\n if (typeof instance.result !== 'undefined') {\n finalState = ActionInstanceStateEnum.FinishSuccessFinal;\n } else if (typeof instance.error !== 'undefined') {\n finalState = ActionInstanceStateEnum.FinishErrorFinal;\n } else if (onDestroy) {\n finalState = ActionInstanceStateEnum.FinishComponentDestroyFinal;\n } else {\n finalState = ActionInstanceStateEnum.FinishDismissedFinal;\n }\n\n if (instance.action.type === ActionTypeEnum.Editor) {\n const hasDialog = typeof instance.activationDialogRef !== 'undefined';\n const resubmitEnabled = (instance.action as ActionEditorDescriptorInst<Item>).resubmitEnabled;\n\n if (finalState === ActionInstanceStateEnum.FinishSuccessFinal) {\n if ((hasDialog && resubmitEnabled === true) || (!hasDialog && resubmitEnabled !== false)) {\n finalState = ActionInstanceStateEnum.FinishSuccessReactivateFinal;\n }\n }\n\n if (hasDialog && finalState !== ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n // if state is finish and not called from dialog listener, close the dialog first which will retrigger this function, then finish it\n instance.activationDialogRef!.close(instance.result);\n }\n }\n\n // unset instance in view container\n if (this.viewContainer) {\n this.viewContainer.routeTriggeredActionInstance.set(undefined);\n }\n\n // set final state on instance\n instance.state = finalState;\n\n if (finalState === ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n // prepare reactivation instance\n const newInstanceStatus = (instance.action as ActionEditorDescriptorInst<Item>).resubmitRefetch\n ? ActionInstanceStateEnum.ActivationEnd\n : ActionInstanceStateEnum.FetchEnd;\n // must skip initialization from view container, because it would only get old instance.\n // we need new instance before we can set new one on the view container.\n const newInstance = this.getOrCreateInstance<Item, Service>(undefined, instance.action, undefined, newInstanceStatus, true);\n newInstance.reactivationPreviousInstance = instance;\n // copy some additional settings\n newInstance.activationDialogRef = instance.activationDialogRef;\n newInstance.triggerParameters = instance.triggerParameters;\n newInstance.activationParameters = instance.activationParameters;\n\n if (this.viewContainer) {\n this.viewContainer.routeTriggeredActionInstance.set(newInstance);\n }\n\n instance.reactivationInstance = newInstance;\n }\n\n // finish related actions\n if (instance.nextActionInstance && instance.nextActionInstance instanceof ActionInstance) {\n this.logger.debug(`Finishing instance ${instance.instanceLongName} related next action instance: ${instance.nextActionInstance.instanceLongName}`);\n this.finishAction(instance.nextActionInstance, onDestroy);\n }\n if (instance.errorActionInstance && instance.errorActionInstance instanceof ActionInstance) {\n this.logger.debug(`Finishing instance ${instance.instanceLongName} related error action instance: ${instance.errorActionInstance.instanceLongName}`);\n this.finishAction(instance.errorActionInstance, onDestroy);\n }\n }\n\n /**\n * Triggers action with parameters.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for action execution to construct new route.\n * @param runContext Marks if context should be run.\n *\n * @returns Action instance - if non provided in parameters, the newly created will be returned.\n */\n public triggerAction<Item, Service = undefined>(action: ActionDescriptorInst<Item>, parameters: ActionParameters<Item>, runContext = false): ActionInstance<Item, Service> {\n const instance = this.getOrCreateInstance<Item, Service>(undefined, action, parameters);\n instance.triggerParameters = parameters;\n instance.state = ActionInstanceStateEnum.TriggerStart;\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n const baseUrl = this.router.url.split('?')[0];\n const parsedUrl: UrlTree = this.router.parseUrl(this.router.url);\n let actionUrl = action.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n\n const actionUrlSegments = this.parametrize.transform(actionUrl, parameters.itemId, parameters.item, parameters.actionData).split('/');\n\n // set instance in view container\n if (this.viewContainer) {\n this.viewContainer.routeTriggeredActionInstance.set(instance);\n }\n\n from(this.router.navigate([baseUrl, ...actionUrlSegments], {relativeTo: parameters.route, queryParams: parsedUrl.queryParams}))\n .pipe(take(1))\n .subscribe(() => (instance.state = ActionInstanceStateEnum.TriggerEnd));\n\n return instance;\n } else {\n instance.state = ActionInstanceStateEnum.TriggerEnd;\n this.activateAction(action, parameters, instance);\n\n if (runContext) {\n const context = instance.context;\n if (context) {\n this.run(context);\n }\n }\n\n return instance;\n }\n }\n\n /**\n * Deactivates on route triggered action by trying to reroute back to location where action was triggered.\n * @param instance Action instance.\n */\n public finishActionRouteUntrigger<Item, Service = undefined>(instance: ActionInstance<Item, Service>) {\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n return;\n }\n\n instance = this.getOrCreateInstance<Item, Service>(instance);\n\n instance.state = ActionInstanceStateEnum.FinishRouteUntriggerStart;\n\n let url = this.navigationService.getCurrentLocationFromHistory() ?? this.navigationService.getCurrentLocationFromUrl();\n if (!url) {\n this.navigationService.back();\n } else {\n if (url.startsWith('/')) {\n url = url.substring(1);\n }\n\n const splitUrlQueryParam = url.split('?');\n const urlPathSegments = splitUrlQueryParam[0].split('#')[0].split('/');\n const queryParam = splitUrlQueryParam[1]?.split('#')[0];\n\n let actionUrl = instance.action?.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n const actionUrlSegments = actionUrl.split('/');\n let redirectUrl = '/' + urlPathSegments.slice(0, urlPathSegments.length - actionUrlSegments.length).join('/');\n if (typeof queryParam !== 'undefined') {\n redirectUrl = `${redirectUrl}?${queryParam}`;\n }\n\n // No URL replaces, probably ok, to allow going back\n from(this.router.navigateByUrl(redirectUrl))\n .pipe(first(), timeout(1000))\n .subscribe({\n next: () => (instance.state = ActionInstanceStateEnum.FinishRouteUntriggerEndFinal),\n error: () => (instance.state = ActionInstanceStateEnum.FinishRouteUntriggerTimeoutFinal)\n });\n }\n }\n\n /**\n * Transform error of any type to error by using error mapper that could be provided by final project.\n * @param error error of any type.\n * @param context Action context.\n *\n * @returns mapped ICommonsError.\n */\n public toActionError(error?: any, context?: ActionContext<any, any>): ICommonsError {\n let commonsError: ICommonsError;\n if (context) {\n const options: CommonsActionErrorOptions = {\n cause: error,\n location: this.router.url\n };\n if (error instanceof HttpErrorResponse) {\n options.httpError = error;\n }\n\n commonsError = new CommonsActionError(error?.message ?? 'Unknown error', context.contextLongName);\n } else if (error instanceof HttpErrorResponse) {\n // should not really happen (should always be wrapped in MngActionError), just in case\n commonsError = new CommonsHttpError(`Http Error occurred in action`, error, {\n location: this.router.url\n });\n } else {\n // not from action, so unknown source of error\n commonsError = new CommonsInternalError(error?.message ?? 'Unknown error', {\n name: error?.name ?? 'UnknownError',\n location: this.router.url,\n cause: error\n });\n }\n\n // just trace it, allow user to set if this is error or not\n this.logger.trace(commonsError);\n\n return this.errorMapper.toCommonsError(error, commonsError);\n }\n\n /**\n * Creates or gets existing action instance.\n * @param instance Action instance.\n * @param action Action descriptor.\n * @param parameters Action parameters.\n * @param instanceInitialStatus Action instance initial status.\n * @param skipInitializationFromViewContainer If initialization of instance from view container should be skipped.\n * @private\n */\n protected getOrCreateInstance<Item, Service = undefined>(\n instance: ActionInstance<Item, Service> | undefined,\n action?: ActionDescriptorInst<Item, Service>,\n parameters?: ActionParameters<Item>,\n instanceInitialStatus?: ActionInstanceStateEnum,\n skipInitializationFromViewContainer = false\n ): ActionInstance<Item, Service> {\n if (!skipInitializationFromViewContainer && !instance && action?.activationTrigger === ActionActivationTriggerEnum.OnRoute && parameters) {\n instance = this.viewContainer?.routeTriggeredActionInstance();\n }\n if (!instance) {\n if (!action) {\n throw new CommonsInternalError('Action descriptor is not provided, instance cannot be created.', {name: 'ActionExecutorServiceError'});\n }\n // create new instance if non provided\n instance = new ActionInstance<Item, Service>(action, instanceInitialStatus);\n }\n\n if (this.config?.actions?.debugInstances && !this.instances.some(i => i.instanceLongName === instance!.instanceLongName)) {\n if (this.instances.length >= this.instancesBufferMax) {\n const lastInstance = this.instances.shift();\n\n if (lastInstance!.state < ActionInstanceStateEnum.FinishSuccessFinal) {\n this.logger.debug(`ERROR: Not all instances are finished! Finishing instance ${instance.instanceLongName} with dismissal.`);\n lastInstance!.forceFinish();\n }\n }\n\n this.instances.push(instance);\n }\n\n return instance;\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {ActionInstance} from '../models/execution/action-instance.model';\nimport {ActionExecutorService} from './action-executor.service';\n\n@Injectable()\nexport class RootActionExecutorService extends ActionExecutorService {\n private readonly _instances: ActionInstance<any, any>[] = [];\n\n public get instances(): ActionInstance<any, any>[] {\n return this._instances;\n }\n}\n","import {Injectable, inject} from '@angular/core';\n\nimport {ActionInstance} from '../models/execution/action-instance.model';\nimport {ActionExecutorService} from './action-executor.service';\nimport {RootActionExecutorService} from './root-action-executor.service';\n\n@Injectable()\nexport class ComponentActionExecutorService extends ActionExecutorService {\n private readonly rootActionExecutorService = inject(RootActionExecutorService);\n\n public get instances(): ActionInstance<any, any>[] {\n return this.rootActionExecutorService.instances;\n }\n}\n","import {Provider} from '@angular/core';\n\nimport {ActionExecutorService} from '../action-executor.service';\nimport {ComponentActionExecutorService} from '../component-action-executor.service';\n\nexport function provideActionExecutor(): Provider {\n return {\n provide: ActionExecutorService,\n useClass: ComponentActionExecutorService\n };\n}\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnDestroy, Optional, OutputRefSubscription, booleanAttribute, computed, effect, input, output, signal, viewChild} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {MenuItem} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {Menu, MenuModule} from 'primeng/menu';\nimport {RippleModule} from 'primeng/ripple';\nimport {SplitButtonModule} from 'primeng/splitbutton';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {Observable, Subscription, combineLatest} from 'rxjs';\n\nimport {\n APermissions,\n ActionData,\n ActionParameters,\n ComponentDirective,\n DataListParams,\n IDataProvider,\n IdType,\n ParametrizePipe,\n PermissionService,\n Permissions,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {ActionContextValidation, ActionDescriptorInst, ActionLinkDescriptorInst, ActionTypeEnum, IActionComponent, TableviewRouteData} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getI18nForActionAsync} from '../../helpers/i18n';\nimport {ActionInstanceStateEnum} from '../../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../services/action-executor.service';\nimport {provideActionExecutor} from '../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-action',\n templateUrl: './action.component.html',\n styleUrls: ['./action.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, ButtonModule, RippleModule, TooltipModule, ParametrizePipe, ComponentDirective, SplitButtonModule, MenuModule],\n providers: [provideActionExecutor()],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {'[class]': 'hostClass()', '[class.m-0]': 'isHostHidden()'}\n})\nexport class ActionComponent<Item = any, Service = undefined> implements OnDestroy {\n // metadata and editor mode input\n public action = input.required<ActionDescriptorInst<Item, Service>>();\n public item = input<Item>();\n public itemId = input<IdType>();\n public actionData = input<ActionData>();\n public dataListParams = input<DataListParams>();\n public dataProvider = input<IDataProvider<Item, Service>>();\n public hostComponent = input<any>();\n public routeInit = input<ActivatedRoute | undefined>(undefined, {alias: 'route'});\n public inputDisabled = input<boolean, unknown>(false, {alias: 'disabled', transform: booleanAttribute});\n public inputLoading = input<boolean, unknown>(false, {alias: 'loading', transform: booleanAttribute});\n public selectedItems = input<Array<Item>>([]);\n\n public finish = output<ActionInstance<Item, Service>>();\n\n public subactionsMenu = viewChild(Menu);\n\n public hostClass = computed(() => this.action().className ?? 'mng-action-button');\n public isHostHidden = computed(() => !this.isVisible() || !this.isPermitted());\n\n public loading = signal(false);\n\n private isVisibleSubscription?: Subscription;\n public isVisible = signal(true);\n private isPermittedSubscription?: Subscription;\n public isPermitted = signal(true);\n private isEnabledSubscription?: Subscription;\n public isEnabled = signal(true);\n private labelSubscription?: Subscription;\n public label = signal<string>('');\n private tooltipSubscription?: Subscription;\n public tooltip = signal<string>('');\n\n public actionLink = computed<ActionLinkDescriptorInst<Item> | undefined>(() => {\n const action = this.action();\n return action instanceof ActionLinkDescriptorInst ? action : undefined;\n });\n\n public hasNoTitle = computed(() => this.action().button.label === null);\n\n private resultSubscription?: Subscription;\n private errorSubscription?: Subscription;\n private stateSubscription?: Subscription;\n private cmpInstSubscription?: OutputRefSubscription;\n\n public route = computed<ActivatedRoute>(() => this.routeInit() ?? this.routeService);\n public routeData = toSignal(this.route().data);\n private routePermissions = computed<APermissions | undefined>(() => {\n const routeData = this.routeData();\n const action = this.action();\n if (action.tableviewCategory && routeData && routeData['tableviewPermissions']) {\n const tableviewPermissions = routeData['tableviewPermissions'];\n if (tableviewPermissions[action.tableviewCategory]) {\n return tableviewPermissions[action.tableviewCategory];\n }\n }\n return undefined;\n });\n\n public buttonClass = computed<string>(() => this.action().button.styleClass.build(this.hasNoTitle()));\n public subactions = signal<MenuItem[]>([]);\n private subactionSubscriptions: Subscription[] = [];\n\n private instance?: ActionInstance<Item, Service>;\n\n constructor(\n private routeService: ActivatedRoute,\n private translate: TranslateService,\n private authorization: PermissionService,\n private actionExecutor: ActionExecutorService,\n @Optional() private viewContainer: ViewContainer<Item, Service> | null\n ) {\n effect(() => this.processSubscriptions(), {allowSignalWrites: true});\n }\n\n ngOnDestroy(): void {\n this.actionExecutor.onActionDestroy(this.instance);\n this.isVisibleSubscription?.unsubscribe();\n this.isPermittedSubscription?.unsubscribe();\n this.isEnabledSubscription?.unsubscribe();\n this.labelSubscription?.unsubscribe();\n this.tooltipSubscription?.unsubscribe();\n this.resultSubscription?.unsubscribe();\n this.errorSubscription?.unsubscribe();\n this.stateSubscription?.unsubscribe();\n this.cmpInstSubscription?.unsubscribe();\n this.subactionSubscriptions.forEach(s => s.unsubscribe());\n }\n\n public triggerAction(action: ActionDescriptorInst<Item, Service>, parameters?: ActionParameters<Item>, event?: Event) {\n if (action.subactionsAsMenu) {\n this.subactionsMenu()?.toggle(event ?? new Event('trigger'));\n return;\n }\n\n const actionData = this.actionData() ? this.actionData() : {};\n\n parameters ??= {\n itemId: this.itemId(),\n item: this.item(),\n actionData: actionData,\n dataListParams: this.dataListParams(),\n route: this.route(),\n sourceComponent: this,\n hostComponent: this.hostComponent(),\n selectedItems: this.selectedItems()\n };\n\n const instance = this.actionExecutor.triggerAction<Item, Service>(action, parameters);\n this.instance = instance;\n const context = instance.context;\n if (!context) {\n // no context is provided if routing is triggered or editor is opened via dialog\n // it is in another component jurisdiction to handle contexts\n return;\n }\n\n this.resultSubscription?.unsubscribe();\n this.resultSubscription = instance.result$.subscribe({\n next: () => {\n this.finish.emit(instance);\n if (action.hasItemsSelection) {\n this.viewContainer?.reloadTable();\n }\n }\n });\n\n this.errorSubscription?.unsubscribe();\n this.errorSubscription = instance.error$.subscribe({\n next: () => {\n this.finish.emit(instance);\n }\n });\n\n this.stateSubscription?.unsubscribe();\n this.stateSubscription = this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.RunStart:\n this.loading.set(true);\n break;\n case ActionInstanceStateEnum.RunEnd:\n case ActionInstanceStateEnum.RunError:\n this.loading.set(false);\n break;\n case ActionInstanceStateEnum.NextActionStart:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loading.set(true);\n }\n break;\n case ActionInstanceStateEnum.NextActionEnd:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loading.set(false);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionStart:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loading.set(true);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionEnd:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loading.set(false);\n }\n break;\n }\n });\n\n this.actionExecutor.run(context);\n }\n\n public onCustomActionCmpInst(instance: IActionComponent<Item>) {\n this.cmpInstSubscription?.unsubscribe();\n this.cmpInstSubscription = instance.trigger.subscribe(params => this.triggerAction(this.action(), params));\n }\n\n private processSubscriptions() {\n const parameters: ActionParameters<Item> = {\n itemId: this.itemId(),\n item: this.item(),\n actionData: this.actionData(),\n sourceComponent: this\n };\n const action = this.action();\n if (action.hasItemsSelection) {\n parameters.selectedItems = this.selectedItems();\n }\n\n const context = this.actionExecutor.prepareActionContextValidation(action, parameters, this.dataProvider());\n\n if (typeof action.isVisibleFunction === 'function') {\n this.isVisibleSubscription?.unsubscribe();\n this.isVisibleSubscription = toObservable(action.isVisibleFunction(context)).subscribe({\n next: res => this.isVisible.set(res)\n });\n }\n\n const routePermissions = this.routePermissions();\n\n if (typeof action.permissions !== 'undefined' || typeof routePermissions !== 'undefined') {\n this.isPermittedSubscription?.unsubscribe();\n const permissions = action.permissions && routePermissions ? Permissions.All.of(routePermissions, action.permissions) : routePermissions ?? action.permissions!;\n this.isVisibleSubscription = this.authorization.isActionVisible(permissions, context as ActionContextValidation<unknown, unknown>, this.route().snapshot).subscribe({\n next: res => this.isPermitted.set(res)\n });\n }\n if (typeof action.isEnabledFunction === 'function') {\n this.isEnabledSubscription?.unsubscribe();\n this.isEnabledSubscription = toObservable(action.isEnabledFunction(context)).subscribe({\n next: res => this.isEnabled.set(res)\n });\n }\n\n if (!this.hasNoTitle()) {\n this.labelSubscription?.unsubscribe();\n this.labelSubscription = getI18nForActionAsync(this.translate, action, 'title', action.button.label ?? undefined, this.item()).subscribe({\n next: i18n => this.label.set(i18n ?? '')\n });\n }\n\n this.tooltipSubscription?.unsubscribe();\n if (action.button.tooltip) {\n this.tooltipSubscription = getI18nForActionAsync(this.translate, action, 'tooltip', action.button.tooltip, this.item()).subscribe({\n next: i18n => this.tooltip.set(i18n ?? '')\n });\n }\n\n this.subactions.set(this.processSubactions());\n }\n\n private processSubactions(): MenuItem[] {\n this.subactionSubscriptions.forEach(s => s.unsubscribe());\n this.subactionSubscriptions = [];\n\n const menuItems: MenuItem[] = [];\n for (const subaction of this.action().subactions) {\n const menuItem = {} as MenuItem;\n\n menuItem.icon = subaction.button.icon ?? undefined;\n this.subactionSubscriptions.push(\n getI18nForActionAsync(this.translate, subaction, 'title', subaction.button.label ?? undefined, this.item()).subscribe({\n next: res => (menuItem.label = res!)\n })\n );\n this.subactionSubscriptions.push(\n getI18nForActionAsync(this.translate, subaction, 'tooltip', this.action().button.tooltip, this.item()).subscribe({\n next: res => (menuItem.tooltip = res!)\n })\n );\n\n const parameters: ActionParameters<Item> = {\n itemId: this.itemId(),\n item: this.item(),\n actionData: this.actionData(),\n sourceComponent: this\n };\n\n if (subaction.hasItemsSelection) {\n parameters.selectedItems = this.selectedItems();\n }\n\n const context = this.actionExecutor.prepareActionContextValidation(subaction, parameters, this.dataProvider());\n\n if (typeof subaction.isEnabledFunction === 'function') {\n this.subactionSubscriptions.push(\n toObservable(subaction.isEnabledFunction(context)).subscribe({\n next: res => (menuItem.disabled = !res)\n })\n );\n }\n\n const visibilityObservables: Observable<boolean>[] = [];\n if (typeof subaction.isVisibleFunction === 'function') {\n visibilityObservables.push(toObservable(subaction.isVisibleFunction(context)));\n }\n if (typeof subaction.permissions !== 'undefined') {\n visibilityObservables.push(this.authorization.isActionVisible(subaction.permissions, context as ActionContextValidation<unknown, unknown>, this.route().snapshot));\n }\n\n const routeData = this.route().snapshot.data as TableviewRouteData;\n if (subaction.tableviewCategory && routeData.tableviewPermissions && routeData.tableviewPermissions[subaction.tableviewCategory]) {\n const routePermissions = routeData.tableviewPermissions[subaction.tableviewCategory];\n visibilityObservables.push(this.authorization.isActionVisible(routePermissions, context as ActionContextValidation<unknown, unknown>, this.route().snapshot));\n }\n\n this.subactionSubscriptions.push(\n combineLatest(visibilityObservables).subscribe(visibilities => {\n menuItem.visible = visibilities.every(value => value);\n })\n );\n\n menuItem.command = () => this.triggerAction(subaction);\n\n menuItems.push(menuItem);\n }\n return menuItems;\n }\n}\n","@if (isVisible() && isPermitted()) {\n @if (actionLink(); as actionLink) {\n @if (actionLink.url !== '') {\n <a\n pButton\n pRipple\n [label]=\"label()\"\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [href]=\"!isEnabled() || inputDisabled() ? null : (actionLink.url | mngParametrize: itemId() : item() : actionData())\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"!isEnabled() || inputDisabled()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass()\"></a>\n } @else {\n <a\n pButton\n pRipple\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [label]=\"label()\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"!isEnabled() || inputDisabled() ? null : (actionLink.pathSegments | mngParametrize: itemId() : item() : actionData())\"\n [relativeTo]=\"route()\"\n [queryParams]=\"actionLink.queryParams | mngParametrize: itemId() : item() : actionData()\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"!isEnabled() || inputDisabled()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass()\"></a>\n }\n } @else if (action().component || action().componentFromDi) {\n <ng-container\n [mngComponent]=\"action().component\"\n [injectionToken]=\"action().componentFromDi\"\n [inputs]=\"{\n action: action(),\n item: item(),\n itemId: itemId(),\n actionData: actionData(),\n enabled: isEnabled(),\n loading: loading()\n }\"\n (instanceCreated)=\"onCustomActionCmpInst($event)\">\n </ng-container>\n } @else if (action().subactions.length > 0 && !action().subactionsAsMenu) {\n <p-splitButton\n [icon]=\"action().button.icon ?? undefined\"\n [iconPos]=\"action().button.iconPosition\"\n [label]=\"label()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [disabled]=\"!isEnabled() || inputDisabled()\"\n (onClick)=\"triggerAction(action())\"\n [class]=\"buttonClass()\"\n [model]=\"subactions()\">\n </p-splitButton>\n } @else {\n <button\n pButton\n pRipple\n type=\"button\"\n [icon]=\"$any(action().button.icon)\"\n [iconPos]=\"action().button.iconPosition\"\n [label]=\"label()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button.tooltipPosition ?? undefined\"\n [loading]=\"loading() || inputLoading()\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"!isEnabled() || inputDisabled()\"\n (click)=\"triggerAction(action(), undefined, $event)\"\n [class]=\"buttonClass()\"></button>\n <p-menu #subactionsMenu [model]=\"subactions()\" [popup]=\"true\" appendTo=\"body\" styleClass=\"mng-action-menu\"></p-menu>\n }\n}\n","import {DatePipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\n\nimport {EditorAutoSaveStatus} from '../../../models/editor-auto-save-preview.model';\n\n@Component({\n standalone: true,\n selector: 'mng-editor-auto-save-status',\n imports: [DatePipe, TranslateModule],\n template: `\n <span>\n @if (icon(); as icon) {\n <i [class]=\"icon\"></i>\n }\n @if (label(); as label) {\n \n <span [innerHTML]=\"label | translate: {timestamp: status()?.timestamp | date: timestampDateFormat()}\"></span>\n }\n </span>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EditorAutoSaveStatusComponent {\n status = input<EditorAutoSaveStatus>();\n\n label = computed(() => {\n switch (this.status()?.state) {\n case 'saving':\n case 'saved':\n return 'mngEditor.autoSave.autosavedAt';\n case 'preview':\n return 'mngEditor.autoSave.preview';\n case 'previewCurrent':\n return 'mngEditor.autoSave.previewCurrent';\n case 'restored':\n return 'mngEditor.autoSave.restored';\n default:\n return undefined;\n }\n });\n timestampDateFormat = computed(() => {\n switch (this.status()?.state) {\n case 'saving':\n case 'saved':\n return 'HH:mm:ss';\n default:\n return 'dd. MM. yyyy HH:mm:ss';\n }\n });\n icon = computed(() => {\n switch (this.status()?.state) {\n case 'saved':\n return 'pi pi-save';\n case 'saving':\n return 'pi pi-hourglass pi-spin';\n case 'preview':\n case 'previewCurrent':\n return 'pi pi-eye';\n case 'restored':\n return 'pi pi-sync';\n default:\n return undefined;\n }\n });\n}\n","import {IdType} from '@mediusinc/mng-commons/core';\nimport {EditorDescriptorInst, TableviewEditorTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\n/**\n * Generates a unique key for autosave data of an editor.\n *\n * @param {EditorDescriptorInst<Item>} descriptor - The editor descriptor instance.\n * @param {Item | undefined} item - The item associated with the editor.\n * @param {string} url - The URL of the editor.\n * @param {Object} [opts] - An optional object containing additional options.\n * @param {string} [opts.editorId] - The custom editor ID.\n * @param {IdType} [opts.itemId] - The custom item ID.\n * @return {string} - The generated autosave editor key.\n */\nexport function generateAutosaveEditorKey<Item>(descriptor: EditorDescriptorInst<Item>, item: Item | undefined, url: string, opts?: {editorId?: string; itemId?: IdType}): string {\n const autoSaveIdentifier = descriptor.autoSaveIdentifier ?? url;\n const editorId = generateEditorId(descriptor, opts?.editorId);\n const itemId = generateItemId(descriptor, item, opts?.itemId);\n return `autoSave~~${editorId}${itemId}~~${autoSaveIdentifier}`;\n}\n\n/**\n * Generates an ID for the editor based on the provided parameters.\n *\n * @template Item - The type of the item.\n * @param {EditorDescriptorInst<Item>} descriptor - The editor descriptor instance.\n * @param {string} [editorId] - The optional editor ID.\n * @returns {string} - The generated editor ID.\n */\nfunction generateEditorId<Item>({model, tableviewEditorType}: EditorDescriptorInst<Item>, editorId?: string): string {\n if (editorId !== undefined) {\n return editorId;\n }\n const editorTypeString = TableviewEditorTypeEnum[tableviewEditorType ?? TableviewEditorTypeEnum.None];\n return `${model.i18nBaseKey}::${editorTypeString}`;\n}\n\n/**\n * Generates an item ID.\n *\n * @param {EditorDescriptorInst<Item>} model - The model descriptor.\n * @param {Item} [item] - The item to generate an ID for.\n * @param {IdType} [itemId] - The existing item ID (if any).\n * @returns {string} - The generated item ID, prefixed with \"::\" or an empty string if no item ID exists.\n */\nfunction generateItemId<Item>({model}: EditorDescriptorInst<Item>, item?: Item, itemId?: IdType): string {\n if (itemId === undefined && item) {\n const idProperty = model?.idProperty;\n itemId = item?.[idProperty as keyof typeof item]?.toString();\n }\n return itemId ? `::${itemId}` : '';\n}\n","import {Validators} from '@angular/forms';\n\nimport {FieldInputDatePickerDynamicMinMaxFnType, FieldValidator} from '@mediusinc/mng-commons/tableview/api';\n\nexport const minDateValidationName = 'minDate';\nexport const minDateValidator = (\n min: Date | FieldInputDatePickerDynamicMinMaxFnType<Date | string | number | undefined | null, Date | string | number | undefined | null, undefined> | undefined\n): FieldValidator<Date | string | number | undefined | null, any> => {\n return ({fieldFormControl, fieldFormlyConfig}) => {\n const minDate = fieldFormlyConfig.props.minDate ?? min;\n const date: Date | undefined = fieldFormControl?.value == null ? undefined : new Date(fieldFormControl.value);\n return !date || !minDate || !(minDate instanceof Date) || date >= minDate;\n };\n};\n\nexport const maxDateValidationName = 'maxDate';\nexport const maxDateValidator = (\n max: Date | FieldInputDatePickerDynamicMinMaxFnType<Date | string | number | undefined | null, Date | string | number | undefined | null, undefined> | undefined\n): FieldValidator<Date | string | number | undefined | null, any> => {\n return ({fieldFormControl, fieldFormlyConfig}) => {\n const maxDate = fieldFormlyConfig.props.maxDate ?? max;\n const date: Date | undefined = fieldFormControl?.value == null ? undefined : new Date(fieldFormControl.value);\n return !date || !maxDate || !(maxDate instanceof Date) || date <= maxDate;\n };\n};\n\nexport const emailValidationName = 'email';\nexport const emailValidator = (): FieldValidator<string | undefined | null, any> => {\n return ({fieldFormControl}) => {\n const error = fieldFormControl ? Validators.email(fieldFormControl) : null;\n return error === null;\n };\n};\n","import {AbstractControl, FormGroup, Validators} from '@angular/forms';\n\nimport {FormlyConfig} from '@ngx-formly/core';\nimport {ValidationMessageOption} from '@ngx-formly/core/lib/models';\nimport {FormlyFieldConfig} from '@ngx-formly/core/lib/models/fieldconfig';\nimport {Observable} from 'rxjs';\n\nimport {CommonsInternalError, CommonsService} from '@mediusinc/mng-commons/core';\nimport {type} from '@mediusinc/mng-commons/model';\nimport {\n AFieldDescriptor,\n CommonsFormlyFieldConfig,\n CommonsFormlyValidation,\n EditorDescriptorInst,\n FieldActionDescriptor,\n FieldBaseValidator,\n FieldGroupDescriptor,\n FieldInputDescriptor,\n FieldInputTypeEnum,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldLookupTypeEnum,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor,\n FieldTabGroupDescriptor,\n FieldValidationDescriptor,\n IFormEditorComponent,\n TableviewDescriptorInst,\n TableviewEditorTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {emailValidationName, emailValidator, maxDateValidationName, maxDateValidator, minDateValidationName, minDateValidator} from './editor-validators';\n\nexport function createFormlyConfigFromDescriptor<Item>(\n descriptor: EditorDescriptorInst<any>,\n formlyConfig: FormlyConfig,\n formEditorComponent: IFormEditorComponent<Item>\n): CommonsFormlyFieldConfig[] {\n const fields: CommonsFormlyFieldConfig[] = [];\n\n if (descriptor.isLocalized) {\n descriptor = createFormlyLocalizationsTab(descriptor);\n }\n\n if (!descriptor.isLocalized && descriptor.tabs.length === 1 && descriptor.tabs[0].default) {\n // dont use tabs\n fields.push(...createFormlyGroupType(descriptor.tabs[0].fields, descriptor, formlyConfig, formEditorComponent));\n } else {\n fields.push(...createFormlyTabType(descriptor.tabs, descriptor, formlyConfig, formEditorComponent));\n }\n\n return fields;\n}\n\nexport function createFormlyLocalizationsTab<Item>(descriptor: EditorDescriptorInst<Item>) {\n if (descriptor.isLocalized && descriptor.tableviewEditorType !== TableviewEditorTypeEnum.Details) {\n if (!descriptor.localizationModel) {\n throw new CommonsInternalError('Localization model must be defined.');\n }\n const localizationsTableViewDescriptor = new TableviewDescriptorInst<any, never, never, Item>(descriptor.localizationModel);\n if (!descriptor.localizationLocaleProperty) {\n throw new CommonsInternalError('Localization locale property must be defined.');\n }\n localizationsTableViewDescriptor.addColumn(descriptor.localizationLocaleProperty);\n localizationsTableViewDescriptor.editEditor.addField(descriptor.localizationLocaleProperty).withDisabled(true);\n localizationsTableViewDescriptor.detailsEditor.addField(descriptor.localizationLocaleProperty).withDisabled(true);\n localizationsTableViewDescriptor.addEditor\n .addFieldLookupWithProvider(descriptor.localizationLocaleProperty, CommonsService, type<string>())\n .withLookup((qp, service) => service.appDataLocales())\n .withDisabled(false)\n .withRequired();\n descriptor.fields.forEach(field => {\n if (field.isLocalized) {\n localizationsTableViewDescriptor.addColumn(field.property);\n localizationsTableViewDescriptor.addField(field.property);\n }\n });\n const descriptorWithLocalizations = descriptor.copy();\n descriptorWithLocalizations.createTabGroup('localizations');\n if (!descriptor.localizationLocalizationProperty) {\n throw new CommonsInternalError('Localization localization property must be defined');\n }\n descriptorWithLocalizations.addFieldManyEditorUnsafe(descriptor.localizationLocalizationProperty, localizationsTableViewDescriptor);\n\n return descriptorWithLocalizations;\n }\n return descriptor;\n}\n\nexport function createFormlyTabType<Item>(\n tabGroups: FieldTabGroupDescriptor<any>[],\n editorDescriptor: EditorDescriptorInst<any>,\n formlyConfig: FormlyConfig,\n formEditorComponent: IFormEditorComponent<Item>\n): CommonsFormlyFieldConfig[] {\n const tabsField: CommonsFormlyFieldConfig = {\n type: 'tabs',\n fieldGroup: [],\n props: {\n formEditorComponent,\n editorDescriptor: editorDescriptor\n }\n };\n for (const tab of tabGroups) {\n const tabField: CommonsFormlyFieldConfig = {\n id: tab.name,\n props: {\n formEditorComponent,\n descriptor: tab,\n editorDescriptor: editorDescriptor\n },\n expressions: {},\n fieldGroup: []\n };\n if (tab.title) {\n tabField.props.label = tab.title;\n }\n\n if (tab.hiddenExpression) {\n tabField.expressions!['hide'] = tab.hiddenExpression as string | ((field: FormlyFieldConfig) => any) | Observable<any>;\n }\n\n tabField.fieldGroup!.push(...createFormlyGroupType(tab.fields, editorDescriptor, formlyConfig, formEditorComponent));\n tabsField.fieldGroup!.push(tabField);\n }\n return [tabsField];\n}\n\nexport function createFormlyGroupType<Item>(\n groups: FieldGroupDescriptor<any>[],\n editorDescriptor: EditorDescriptorInst<any>,\n formlyConfig: FormlyConfig,\n formEditorComponent: IFormEditorComponent<Item>\n): CommonsFormlyFieldConfig[] {\n if (groups.length === 1 && groups[0].default) {\n // dont use fieldset, just create fields\n return createFormlyFields(groups[0], editorDescriptor, formlyConfig, formEditorComponent);\n } else {\n const groupsField: CommonsFormlyFieldConfig = {\n type: 'fieldset',\n fieldGroup: [],\n props: {\n formEditorComponent,\n editorDescriptor: editorDescriptor\n },\n expressions: {}\n };\n\n for (const group of groups) {\n const groupField: CommonsFormlyFieldConfig<any, Item> = {\n id: group.name,\n props: {\n descriptor: group,\n editorDescriptor: editorDescriptor\n },\n expressions: {},\n fieldGroup: []\n };\n if (group.title) {\n groupField.props.label = group.title;\n }\n\n if (group.hiddenExpression) {\n groupField.expressions!['hide'] = group.hiddenExpression as string | ((field: FormlyFieldConfig) => any) | Observable<any>;\n }\n\n groupField.fieldGroup!.push(...createFormlyFields(group, editorDescriptor, formlyConfig, formEditorComponent));\n groupsField.fieldGroup!.push(groupField);\n }\n return [groupsField];\n }\n}\n\nexport function createFormlyFields<Item>(\n descriptor: FieldGroupDescriptor<any>,\n editorDescriptor: EditorDescriptorInst<any>,\n formlyConfig: FormlyConfig,\n formEditorComponent: IFormEditorComponent<Item>\n): CommonsFormlyFieldConfig[] {\n const fields: CommonsFormlyFieldConfig[] = [];\n for (const descriptorField of descriptor.fields) {\n fields.push(createFormlyField(descriptorField, editorDescriptor, formlyConfig, formEditorComponent));\n }\n // wrap in group to be able to use flex grid\n const wrapperGroup: CommonsFormlyFieldConfig = {\n fieldGroupClassName: 'p-fluid formgrid grid',\n fieldGroup: fields,\n props: {}\n };\n\n addValidationsToFormlyField(wrapperGroup, descriptor.validations, formlyConfig);\n\n return [wrapperGroup];\n}\n\nexport function createFormlyField<Item>(\n descriptor: AFieldDescriptor<any, any>,\n editorDescriptor: EditorDescriptorInst<any>,\n formlyConfig: FormlyConfig,\n formEditorComponent: IFormEditorComponent<Item>\n): CommonsFormlyFieldConfig {\n const field: CommonsFormlyFieldConfig<any, Item> = {\n key: descriptor.property,\n modelOptions: {\n updateOn: descriptor.updateOn\n },\n hooks: {\n onInit: () => (descriptor.onInit ? descriptor.onInit(field) : undefined),\n onChanges: () => (descriptor.onChanges ? descriptor.onChanges(field) : undefined),\n afterContentInit: () => (descriptor.afterContentInit ? descriptor.afterContentInit(field) : undefined),\n afterViewInit: () => (descriptor.afterViewInit ? descriptor.afterViewInit(field) : undefined),\n onDestroy: () => (descriptor.onDestroy ? descriptor.onDestroy(field) : undefined)\n },\n props: {\n descriptor,\n formEditorComponent,\n editorDescriptor: editorDescriptor,\n onValueChange: descriptor.onValueChange\n },\n expressions: {}\n };\n\n let className = descriptor.className;\n if (!className) {\n // assign default field width through entire row\n className = 'col-12';\n }\n field.className = className;\n\n if (descriptor instanceof FieldInputDescriptor) {\n switch (descriptor.fieldType) {\n case FieldInputTypeEnum.Hidden:\n break;\n case FieldInputTypeEnum.Label:\n field.type = 'label';\n delete field.key;\n break;\n case FieldInputTypeEnum.Textarea:\n field.type = 'textarea';\n field.props.maxLength = descriptor.maxLength;\n field.props.minLength = descriptor.minLength;\n field.props.pattern = descriptor.pattern;\n break;\n case FieldInputTypeEnum.Number:\n field.type = 'number';\n field.props.min = descriptor.numberMin;\n field.props.max = descriptor.numberMax;\n break;\n case FieldInputTypeEnum.Currency:\n field.type = 'currency';\n field.props.min = descriptor.numberMin;\n field.props.max = descriptor.numberMax;\n break;\n case FieldInputTypeEnum.Switch:\n field.type = 'switch';\n field.defaultValue = false;\n break;\n case FieldInputTypeEnum.Radio:\n field.type = 'radio';\n break;\n case FieldInputTypeEnum.Datepicker:\n field.type = 'datepicker';\n break;\n case FieldInputTypeEnum.Mask:\n field.type = 'mask';\n break;\n case FieldInputTypeEnum.File:\n case FieldInputTypeEnum.ImageFile:\n field.type = 'file';\n break;\n case FieldInputTypeEnum.ImageUrl:\n field.type = 'imageUrl';\n break;\n case FieldInputTypeEnum.Custom:\n if (descriptor.customComponentType) {\n field.type = 'custom';\n field.props['customComponentType'] = descriptor.customComponentType;\n if (Array.isArray(descriptor.customComponentWrappers)) {\n field.wrappers = descriptor.customComponentWrappers;\n } else {\n // default wrapper\n field.wrappers = ['field'];\n }\n }\n break;\n default:\n field.type = 'input';\n field.props.minLength = descriptor.minLength;\n field.props.maxLength = descriptor.maxLength;\n field.props.pattern = descriptor.pattern;\n break;\n }\n } else if (descriptor instanceof FieldActionDescriptor) {\n field.type = 'action';\n field.wrappers = descriptor.wrappers;\n delete field.key;\n } else if (descriptor instanceof FieldLookupEnumDescriptor) {\n switch (descriptor.lookupType) {\n case FieldLookupTypeEnum.Custom:\n field.type = descriptor.customComponentName;\n break;\n default:\n field.type = 'enum';\n break;\n }\n } else if (descriptor instanceof FieldLookupDescriptor) {\n switch (descriptor.lookupType) {\n case FieldLookupTypeEnum.Autocomplete:\n field.type = 'autocomplete';\n break;\n case FieldLookupTypeEnum.Dialog:\n field.type = 'dialog';\n break;\n case FieldLookupTypeEnum.Custom:\n field.type = descriptor.customComponentName;\n break;\n case FieldLookupTypeEnum.Dropdown:\n default:\n field.type = 'dropdown';\n break;\n }\n } else if (descriptor instanceof FieldManyToManyEditorDescriptor) {\n field.type = 'table-dialog-multiselect';\n } else if (descriptor instanceof FieldManyEditorDescriptor) {\n field.type = 'table-dialog-form';\n }\n\n if (descriptor.label) {\n field.props.label = descriptor.label;\n }\n\n if (descriptor.requiredExpression) {\n field.expressions!['props.required'] = descriptor.requiredExpression;\n }\n if (descriptor.required) {\n field.props!.required = true;\n if (descriptor.requiredHideLabelMarker) {\n field.props!['hideRequiredMarker'] = true;\n }\n }\n\n if (descriptor.hiddenExpression) {\n field.expressions!['hide'] = descriptor.hiddenExpression;\n field.expressions!['resetOnHide'] = () => descriptor.hiddenResetOnHide ?? true;\n }\n\n if (descriptor.disabledExpression) {\n field.expressions!['props.disabled'] = descriptor.disabledExpression;\n } else if (descriptor.disabled) {\n field.props.disabled = true;\n } else {\n field.expressions!['props.disabled'] = 'formState.disabled';\n }\n\n if (typeof descriptor.defaultValue !== 'undefined') {\n field.defaultValue = descriptor.defaultValue;\n }\n\n if (descriptor instanceof FieldInputDescriptor) {\n if (descriptor.validationEmail) {\n descriptor.validations.push(new FieldValidationDescriptor(emailValidationName, emailValidator() as FieldBaseValidator<string | null | undefined, any>));\n }\n if (descriptor.datePickerMin) {\n descriptor.validations.push(\n new FieldValidationDescriptor(minDateValidationName, minDateValidator(descriptor.datePickerMin) as FieldBaseValidator<string | null | undefined, any>)\n );\n }\n if (descriptor.datePickerMax) {\n descriptor.validations.push(\n new FieldValidationDescriptor(maxDateValidationName, maxDateValidator(descriptor.datePickerMax) as FieldBaseValidator<string | null | undefined, any>)\n );\n }\n }\n\n addValidationsToFormlyField(field, descriptor.validations, formlyConfig);\n addAsyncValidationsToFormlyField(field, descriptor.asyncValidations, formlyConfig);\n\n return field;\n}\n\nexport function addValidationsToFormlyField(config: CommonsFormlyFieldConfig, validations: Array<FieldValidationDescriptor<any, any>>, formlyConfig: FormlyConfig) {\n if (!config.validators) {\n config.validators = {};\n }\n\n for (const validation of validations) {\n createFormlyValidation(config.validators, validation, formlyConfig);\n }\n}\n\nexport function addAsyncValidationsToFormlyField(config: CommonsFormlyFieldConfig, asyncValidations: Array<FieldValidationDescriptor<any, any>>, formlyConfig: FormlyConfig) {\n if (!config.asyncValidators) {\n config.asyncValidators = {};\n }\n\n for (const validation of asyncValidations) {\n createFormlyValidation(config.asyncValidators, validation, formlyConfig);\n }\n}\n\nexport function createFormlyValidation(config: NonNullable<CommonsFormlyValidation>, validation: FieldValidationDescriptor<any, any>, formlyConfig: FormlyConfig) {\n if (typeof validation.validator === 'function') {\n if (validation.options?.errorPath && validation.message != null) {\n // if this is used, the validator and message must be registered globally\n if (!formlyConfig.getValidatorMessage(validation.name)) {\n formlyConfig.addValidatorMessage(validation.name, validation.message as ValidationMessageOption['message']);\n }\n\n if (!formlyConfig.validators[validation.name]) {\n formlyConfig.setValidator({\n name: validation.name,\n validation: (control, field) => {\n const commonsFieldFormlyConfig = field as CommonsFormlyFieldConfig;\n return validation.validator!({\n fieldFormControl: control,\n form: commonsFieldFormlyConfig.form as FormGroup,\n fieldFormlyConfig: field as CommonsFormlyFieldConfig,\n formComponent: commonsFieldFormlyConfig.props?.formEditorComponent,\n fieldComponent: commonsFieldFormlyConfig.props?.fieldComponent\n })\n ? null\n : <Validators>{[validation.name]: true};\n }\n });\n }\n\n if (!Array.isArray(config.validation)) {\n config.validation = [];\n }\n config.validation.push({\n name: validation.name,\n options: {errorPath: validation.options.errorPath}\n });\n } else {\n config[validation.name] = {\n expression: (control: AbstractControl, field: FormlyFieldConfig) => {\n const commonsFieldFormlyConfig = field as CommonsFormlyFieldConfig;\n return validation.validator!({\n fieldFormControl: control,\n form: commonsFieldFormlyConfig.form as FormGroup,\n fieldFormlyConfig: commonsFieldFormlyConfig,\n formComponent: commonsFieldFormlyConfig.props?.formEditorComponent,\n fieldComponent: commonsFieldFormlyConfig.props?.fieldComponent\n });\n }\n };\n if (validation.message != null) {\n config[validation.name].message = validation.message;\n }\n }\n } else {\n if (!Array.isArray(config.validation)) {\n config.validation = [];\n }\n if (validation.options?.errorPath) {\n config.validation.push({\n name: validation.name,\n options: {errorPath: validation.options.errorPath}\n });\n } else {\n config.validation.push(validation.name);\n }\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\n\nexport function getFormEditorInfoMessage(translate: TranslateService, title: string, message: string, params?: any): Message {\n const actionErrorTitle = translate.instant(title) ?? undefined;\n const actionErrorMessage = translate.instant(message, params) ?? undefined;\n return {severity: 'info', summary: actionErrorTitle, detail: actionErrorMessage};\n}\n\nexport function getFormEditorWarningMessage(translate: TranslateService, title: string, message: string): Message {\n const actionErrorTitle = translate.instant(title) ?? undefined;\n const actionErrorMessage = translate.instant(message) ?? undefined;\n return {severity: 'warn', summary: actionErrorTitle, detail: actionErrorMessage};\n}\n","import {Injectable, Injector, InputSignal, InputSignalWithTransform, Provider, WritableSignal} from '@angular/core';\nimport {AbstractControl, FormGroup, UntypedFormGroup} from '@angular/forms';\n\nimport {FormlyFieldConfig, FormlyFormOptions} from '@ngx-formly/core';\nimport {Message} from 'primeng/api';\n\nimport {CommonsInternalError} from '@mediusinc/mng-commons/core';\nimport {CommonsFormlyFormOptions, EditorDescriptorInst, FormEditorGetFormValueOpts, FormEditorResetFormModelOpts, IFormEditorComponent} from '@mediusinc/mng-commons/tableview/api';\n\n@Injectable()\nexport class FormEditorService<Item, ParentItem = any> implements IFormEditorComponent<Item, ParentItem> {\n private readonly _parentForm?: FormEditorService<ParentItem, any>;\n private _formComponent?: IFormEditorComponent<Item>;\n\n public get parent(): IFormEditorComponent<ParentItem> | undefined {\n return this._parentForm;\n }\n\n public get parentService() {\n return this._parentForm;\n }\n\n public get formComponent(): IFormEditorComponent<Item> {\n if (!this._formComponent) {\n throw new CommonsInternalError(`Form service was not initialized`);\n }\n return this._formComponent;\n }\n\n public get descriptor(): InputSignal<EditorDescriptorInst<Item>> {\n return this.formComponent.descriptor;\n }\n\n public get isFormDisabled(): InputSignalWithTransform<boolean, unknown> {\n return this.formComponent.isFormDisabled;\n }\n\n public get formMessages(): WritableSignal<Message[]> {\n return this.formComponent.formMessages;\n }\n\n public get form(): FormGroup<{\n [K in keyof Item]: AbstractControl<Item[K]>;\n }> {\n return this.formComponent.form;\n }\n\n public get formUnsafe(): UntypedFormGroup {\n return this.formComponent.formUnsafe;\n }\n\n public get formlyOptions(): FormlyFormOptions & CommonsFormlyFormOptions<Item> {\n return this.formComponent.formlyOptions;\n }\n\n public get formlyFields(): FormlyFieldConfig[] {\n return this.formComponent.formlyFields;\n }\n\n public get formlyInitialItem(): any {\n return this.formComponent.formlyInitialItem;\n }\n\n public submit(): void {\n this.formComponent.submit();\n }\n\n public getFormValue(opts?: FormEditorGetFormValueOpts): Item {\n return this.formComponent.getFormValue(opts);\n }\n\n public resetFormModel(item?: Item, opts?: FormEditorResetFormModelOpts): void {\n this.formComponent.resetFormModel(item, opts);\n }\n\n public getField(key: keyof Item): AbstractControl | null {\n return this.formComponent.getField(key);\n }\n\n public getFieldUnsafe(key: string): AbstractControl | null {\n return this.formComponent.getFieldUnsafe(key);\n }\n\n public setFieldValue<Property extends keyof Item>(key: Property, value: Item[Property]): boolean {\n return this.formComponent.setFieldValue(key, value);\n }\n\n public setFieldValueUnsafe(key: string, value: any): boolean {\n return this.formComponent.setFieldValueUnsafe(key, value);\n }\n\n public patchFieldValue<Property extends keyof Item>(key: Property, value: Item[Property]): boolean {\n return this.formComponent.patchFieldValue(key, value);\n }\n\n public patchFieldValueUnsafe(key: string, value: any): boolean {\n return this.formComponent.patchFieldValueUnsafe(key, value);\n }\n\n public resetFieldValue<Property extends keyof Item>(key: Property, value?: Item[Property]): boolean {\n return this.formComponent.resetFieldValue(key, value);\n }\n\n public resetFieldValueUnsafe(key: string, value?: any): boolean {\n return this.formComponent.resetFieldValueUnsafe(key, value);\n }\n\n public constructor(parentForm?: FormEditorService<ParentItem>) {\n this._parentForm = parentForm;\n }\n\n public init(formComponent: IFormEditorComponent<Item>) {\n this._formComponent = formComponent;\n }\n}\n\nexport function provideFormComponent(): Provider {\n return {\n provide: FormEditorService,\n useFactory: (injector: Injector) => {\n const parent = injector.get(FormEditorService, null, {optional: true, skipSelf: true});\n return new FormEditorService<any>(parent ?? undefined);\n },\n deps: [Injector]\n };\n}\n","import {AsyncPipe, DatePipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n OnDestroy,\n OnInit,\n afterNextRender,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n viewChild\n} from '@angular/core';\nimport {outputFromObservable, takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\nimport {AbstractControl, FormArray, FormGroup, ReactiveFormsModule, UntypedFormGroup} from '@angular/forms';\nimport {Router} from '@angular/router';\n\nimport {FormlyConfig, FormlyFieldConfig, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {MessagesModule} from 'primeng/messages';\nimport {BehaviorSubject, Subscription, debounceTime, distinctUntilChanged, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {CommonsService, CommonsStorageService, IdType, LoggerService, StyleLevelEnum, StyleSizeEnum, objectDeepCopy} from '@mediusinc/mng-commons/core';\nimport {ButtonStyleBuilder, ButtonStyleRoundedEnum} from '@mediusinc/mng-commons/form/api';\nimport {\n CommonsFormlyFormOptions,\n EditorDescriptorInst,\n FormEditorPatchFieldValueOpts,\n FormEditorResetFieldValueOpts,\n FormEditorResetFormModelOpts,\n FormEditorSetFieldValueOpts,\n FormEditorSubmitEvent,\n FormEventTypeEnum,\n FormFieldEventComponentSubtype,\n IFormEditorComponent,\n TableviewEditorTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {generateAutosaveEditorKey} from '../../helpers/editor-autosave';\nimport {createFormlyConfigFromDescriptor} from '../../helpers/editor-formly';\nimport {getFormEditorInfoMessage, getFormEditorWarningMessage} from '../../helpers/notification';\nimport {EditorAutoSavePreviewModel, EditorAutoSaveStatus} from '../../models/editor-auto-save-preview.model';\nimport {FormEditorService, provideFormComponent} from '../../services/form-editor.service';\nimport {EditorAutoSaveStatusComponent} from './auto-save-status/auto-save-status.component';\n\n@Component({\n standalone: true,\n selector: 'mng-form-editor',\n templateUrl: './form-editor.component.html',\n imports: [FormlyModule, ReactiveFormsModule, MessagesModule, AsyncPipe, ButtonModule, TranslateModule, DatePipe, EditorAutoSaveStatusComponent],\n providers: [provideFormComponent()],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormEditorComponent<Item = any, ParentItem = any> implements IFormEditorComponent<Item, ParentItem>, OnInit, OnDestroy {\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject(ElementRef);\n private readonly formlyConfig = inject(FormlyConfig);\n private readonly translateService = inject(TranslateService);\n private readonly commons = inject(CommonsService);\n public readonly cmpTypeName = 'FormEditorComponent';\n private readonly logger = inject(LoggerService).create(this.cmpTypeName);\n private readonly formService = inject(FormEditorService<Item, ParentItem>);\n\n private readonly commonsStorageService = inject(CommonsStorageService);\n private readonly router = inject(Router);\n\n private autoSaveStorageKeyCompInit = true;\n private autoSaveStorageKey = computed(() => generateAutosaveEditorKey(this.descriptor(), this.item(), this.router.url, {editorId: this.editorId(), itemId: this.itemId()}));\n\n public descriptor = input.required<EditorDescriptorInst<Item>>();\n public submitLoading = input(false, {transform: booleanAttribute});\n public item = model<Item | undefined>(undefined);\n public isFormDisabled = input(false, {transform: booleanAttribute});\n public editorId = input<string | undefined>(undefined);\n public itemId = input<IdType | undefined>(undefined);\n public showAutoSaveStatus = input(true, {transform: booleanAttribute});\n\n // event outputs\n public formSubmit = output<FormEditorSubmitEvent<Item>>();\n public valueChange = output<Item>();\n private autoSaveStatusSubject = new BehaviorSubject<EditorAutoSaveStatus>({state: 'initial', timestamp: new Date()});\n public autoSaveStatus = outputFromObservable(this.autoSaveStatusSubject.asObservable());\n\n // content and view queries\n public submitButtonElementRef = viewChild<ElementRef | undefined>('submitButton');\n private focusThiefElRef = viewChild<ElementRef | undefined>('focusThiefInput');\n\n // formly specifics\n private readonly _form = new UntypedFormGroup({});\n private readonly _formlyStateDisabledSubject = new BehaviorSubject(false);\n private readonly _formlyStateDisabled = toSignal(this._formlyStateDisabledSubject);\n private readonly _formlyOptions: CommonsFormlyFormOptions<Item> = {\n formState: {\n add: false,\n edit: false,\n disabled: false,\n disabled$: this._formlyStateDisabledSubject.asObservable().pipe(distinctUntilChanged())\n }\n };\n private _formlyFields: FormlyFieldConfig[] = []; // initialized in ngOnInit, should not be changed after\n private _formlyInitialItem = {}; // initialized in ngOnInit, should not be changed after\n private initialItemInput: Item | undefined;\n\n private setterFields = computed(() => this.descriptor().fields.filter(f => typeof f.setter === 'function'));\n\n public formMessages = signal<Message[]>([]);\n\n // autosave\n public readonly restoreLocalStateButtonStyle = ButtonStyleBuilder.create(StyleLevelEnum.Success, StyleSizeEnum.Small).build();\n public readonly previewLocalStateButtonStyle = ButtonStyleBuilder.create(StyleLevelEnum.Info, StyleSizeEnum.Small).build();\n public readonly clearLocalStateButtonStyle = ButtonStyleBuilder.create(StyleLevelEnum.Danger, StyleSizeEnum.Small)\n .withRoundedButton(ButtonStyleRoundedEnum.SQUARE)\n .withTextButton()\n .build();\n public autoSaveRestore = signal<EditorAutoSavePreviewModel<Item> | null>(null);\n public autoSave = toSignal(this.autoSaveStatusSubject);\n public autoSavePreviewButtonLabel = computed(() => {\n switch (this.autoSave()?.state) {\n case 'preview':\n return 'mngEditor.autoSave.restore.previewCurrent';\n case 'previewCurrent':\n return 'mngEditor.autoSave.restore.previewAutosaved';\n default:\n return 'mngEditor.autoSave.restore.preview';\n }\n });\n public autoSaveShowRestore = computed(() => this.autoSaveRestore()?.saved != null);\n private autoSavePreviewDisabledForm = signal(false);\n private autoSaveEventsSubscription?: Subscription;\n\n // autofocus\n public autofocusEnabled = computed(() => (this.descriptor().autofocusOnField ?? true) && !this._formlyStateDisabled());\n\n get parent() {\n return this.formService.parent;\n }\n\n get form(): FormGroup<{[K in keyof Item]: AbstractControl<Item[K]>}> {\n return this._form;\n }\n\n get formUnsafe(): UntypedFormGroup {\n return this._form;\n }\n\n get formlyOptions() {\n return this._formlyOptions;\n }\n\n get formlyFields() {\n return this._formlyFields;\n }\n\n /**\n * Only used for form initialization. Further changes should be done using {resetFormModel}.\n */\n get formlyInitialItem() {\n return this._formlyInitialItem;\n }\n\n constructor() {\n this.formService.init(this);\n\n effect(() => {\n const item = this.item();\n if (item !== this.initialItemInput) {\n // new item is different from the one the form was initialized with. Must trigger reset of form model.\n // should be executed in untracked mode, because it updates multiple components underneath\n untracked(() => this.resetFormModel(item));\n }\n });\n\n effect(() => {\n this._formlyOptions.formState.disabled =\n this.isFormDisabled() || this.autoSavePreviewDisabledForm() || this._formlyOptions.formState.descriptor?.disabled === true || this._formlyOptions.formState.details;\n untracked(() => {\n this._formlyStateDisabledSubject.next(this._formlyOptions.formState.disabled);\n });\n });\n\n effect(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const key = this.autoSaveStorageKey();\n untracked(() => {\n this.autoSaveStopValueChangeListen();\n this.autoSaveLoadSavedFromStorage();\n this.autoSaveStartEventChangeListen(this.autoSaveStorageKeyCompInit);\n this.autoSaveStorageKeyCompInit = false;\n });\n });\n\n afterNextRender(() => {\n if (this.autofocusEnabled()) {\n setTimeout(() => {\n const formFields = this.elementRef.nativeElement.querySelectorAll(\n 'input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [role=\"combobox\"]:not([disabled])'\n );\n const activeEl = document.activeElement;\n const activeInputIdx = activeEl ? [...formFields].findIndex(el => activeEl.isEqualNode(el)) : 0;\n if (activeInputIdx <= 0 && this.focusThiefElRef()?.nativeElement.isEqualNode(formFields[0])) {\n // only if focus on focus theif (or no focus), go the next field (of first on)\n const targetIndex = (activeInputIdx <= 0 ? 1 : activeInputIdx + 1) % formFields.length;\n formFields[targetIndex].focus();\n }\n }, 500);\n }\n });\n }\n\n public ngOnInit() {\n // init form state\n if (this.descriptor().tableviewEditorType === TableviewEditorTypeEnum.Add) {\n this._formlyOptions.formState.add = true;\n } else if (this.descriptor().tableviewEditorType === TableviewEditorTypeEnum.Edit) {\n this._formlyOptions.formState.edit = true;\n } else if (this.descriptor().tableviewEditorType === TableviewEditorTypeEnum.Details) {\n this._formlyOptions.formState.details = true;\n }\n this._formlyOptions.formState.descriptor = this.descriptor();\n\n // init fields for formly\n this._formlyFields = createFormlyConfigFromDescriptor(this.descriptor(), this.formlyConfig, this);\n\n // int form model (only initial, no further changes to formModel should be allowed!)\n this.initialItemInput = this.item();\n this._formlyInitialItem = this.getFormModelFromItem(this.item());\n\n // handle localizations edit/add message\n if (\n this.descriptor().isLocalized &&\n (this.descriptor().tableviewEditorType === TableviewEditorTypeEnum.Add || this.descriptor().tableviewEditorType === TableviewEditorTypeEnum.Edit)\n ) {\n this.formMessages.set([\n ...this.formMessages(),\n getFormEditorInfoMessage(this.translateService, 'mngEditor.localizations.addInDefaultLanguageTitle', 'mngEditor.localizations.addInDefaultLanguageDescription', {\n defaultLanguage: this.commons.getDefaultLocale()\n })\n ]);\n }\n\n // emit lifecycle event\n this.descriptor().nextEvent(FormEventTypeEnum.ComponentLifecycle, this as IFormEditorComponent<any>, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this._form.valueChanges\n .pipe(\n debounceTime(100),\n distinctUntilChanged(),\n map(() => this._form.getRawValue()),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(v => {\n this.valueChange?.emit(v);\n this.descriptor().nextEvent(FormEventTypeEnum.ValueChange, this as IFormEditorComponent<any>, {\n value: v,\n formValue: () => this.getFormValue()\n });\n });\n\n // mark form as pristine, should be done in next event hook to allow formly to initialize first\n setTimeout(() => {\n this._form.markAsPristine();\n });\n }\n\n public ngOnDestroy() {\n // emit lifecycle event\n this.descriptor().nextEvent(FormEventTypeEnum.ComponentLifecycle, this as IFormEditorComponent<any>, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n public submit() {\n this.submitButtonElementRef()?.nativeElement.click();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onSubmit(event: Event) {\n this._formlyOptions.formState.submittedOn = Date.now();\n this.formMessages.set([]);\n\n const formSubmitItem = this.getFormValue();\n if (this._form.valid) {\n this.formSubmit.emit({\n success: true,\n formItem: formSubmitItem\n });\n this.descriptor().nextEvent(FormEventTypeEnum.Submit, this as IFormEditorComponent<any>, {\n submitValid: true,\n submitValue: formSubmitItem\n });\n this.onAutoSaveDismiss();\n } else {\n // find and mark invalid tabs\n const formFields = this._formlyFields;\n if (formFields[0].type === 'tabs' && formFields[0].fieldGroup) {\n for (const tab of formFields[0].fieldGroup) {\n this._formlyOptions.formState['tab_' + (tab.id ? tab.id : tab.key ?? '') + '_invalid'] = this.isAnyFieldInvalid(tab.fieldGroup);\n }\n }\n\n const event: FormEditorSubmitEvent<Item> = {success: false, formItem: formSubmitItem};\n event.success = false;\n this.formMessages().push(getFormEditorWarningMessage(this.translateService, 'mngEditor.invalidFormToastTitle', 'mngEditor.invalidFormToastMessage'));\n\n this.formSubmit.emit(event);\n this.descriptor().nextEvent(FormEventTypeEnum.Submit, this as IFormEditorComponent<any>, {\n submitValid: false,\n submitValue: formSubmitItem\n });\n }\n }\n\n public getFormValue(opts?: {omitSetters?: boolean}): Item {\n const formValue = objectDeepCopy(this._form.getRawValue(), {mapGettersToProperties: true});\n\n if (opts?.omitSetters !== true) {\n this.setterFields().forEach(field => {\n const splitPath = field.property.split('.');\n let fieldValue = formValue;\n for (let i = 0; i < splitPath.length - 1; i++) {\n const currentSubPath = splitPath[i];\n if (typeof fieldValue[currentSubPath] !== 'object') {\n fieldValue[currentSubPath] = {};\n }\n\n fieldValue = fieldValue[currentSubPath];\n }\n\n fieldValue = fieldValue[splitPath[splitPath.length - 1]];\n field.setter?.(formValue, fieldValue);\n });\n }\n\n return formValue;\n }\n\n public resetFormModel(item?: Item, opts?: FormEditorResetFormModelOpts) {\n // have to use formly's reset model, because _form.reset() does not reset the values correctly\n this._formlyOptions.resetModel?.(this.getFormModelFromItem(item));\n\n if (opts?.markAsPristine !== false) {\n // mark form as pristine, should be done in next event hook to allow formly to initialize first\n setTimeout(() => {\n this._form.markAsPristine({onlySelf: opts?.onlySelf});\n });\n }\n }\n\n public getField(key: keyof Item) {\n return this.getFieldUnsafe(key as string);\n }\n\n public getFieldUnsafe(key: string) {\n return this.findFormField(this._form, key.split('.'));\n }\n\n public setFieldValue<Property extends keyof Item>(key: Property, value: Item[Property], opts?: FormEditorSetFieldValueOpts) {\n return this.setFieldValueUnsafe(key as string, value, opts);\n }\n\n public setFieldValueUnsafe(key: string, value: any, opts?: FormEditorSetFieldValueOpts) {\n const control = this.getFieldUnsafe(key);\n if (control) {\n control.setValue(value, opts);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n public patchFieldValue<Property extends keyof Item>(key: Property, value: Item[Property], opts?: FormEditorPatchFieldValueOpts) {\n return this.patchFieldValueUnsafe(key as string, value, opts);\n }\n\n public patchFieldValueUnsafe(key: string, value: any, opts?: FormEditorPatchFieldValueOpts) {\n const control = this.getFieldUnsafe(key);\n if (control) {\n control.patchValue(value, opts);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n public resetFieldValue<Property extends keyof Item>(key: Property, value?: Item[Property], opts?: FormEditorResetFieldValueOpts) {\n return this.resetFieldValueUnsafe(key as string, value, opts);\n }\n\n public resetFieldValueUnsafe(key: string, value?: any, opts?: FormEditorResetFieldValueOpts) {\n const control = this.getFieldUnsafe(key);\n if (control) {\n control.reset(value, opts);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n /**\n * Restores the saved local state.\n * If local storage keys exist for local state and local timestamp, restore their corresponding values.\n */\n public onAutoSaveRestore() {\n const restore = this.autoSaveRestore();\n if (restore?.saved) {\n this.autoSaveStopValueChangeListen();\n this.resetFormModel(restore.saved);\n this.autoSaveRestore.set(null);\n this.autoSaveStatusSubject.next({state: 'restored', timestamp: restore.savedAt ?? new Date()});\n this.autoSavePreviewDisabledForm.set(false);\n this.autoSaveStartEventChangeListen();\n }\n }\n\n /**\n * Previews the saved local state.\n * If local storage keys exist for local state and local timestamp, restore their corresponding values.\n */\n public onAutoSavePreview() {\n if (!this.autoSaveRestore()?.saved) {\n return;\n }\n\n this.autoSaveStopValueChangeListen();\n this.autoSavePreviewDisabledForm.set(true);\n const state = this.autoSaveStatusSubject.value.state;\n if (state !== 'preview' && state !== 'previewCurrent') {\n // must store original value from current value form\n this.autoSaveRestore.update(i => ({...i, original: this.getFormValue()}));\n }\n\n const restore = this.autoSaveRestore();\n if (state === 'preview' && restore?.original) {\n this.resetFormModel(restore.original);\n this.autoSaveStatusSubject.next({state: 'previewCurrent'});\n } else if (state !== 'preview' && restore?.saved) {\n this.resetFormModel(restore.saved);\n this.autoSaveStatusSubject.next({state: 'preview', timestamp: restore.savedAt ?? new Date()});\n }\n }\n\n /**\n * Removes local state from local storage.\n * If local storage keys exist for local state and local timestamp, remove their corresponding values.\n */\n public onAutoSaveDismiss(): void {\n if (this.autoSaveStorageKey()) {\n const restore = this.autoSaveRestore();\n if (this.autoSaveStatusSubject.value.state === 'preview' && restore?.original) {\n this.resetFormModel(restore.original);\n this.autoSaveStatusSubject.next({state: 'initial', timestamp: new Date()});\n }\n this.commonsStorageService.removeItem(this.cmpTypeName, this.autoSaveStorageKey());\n this.autoSaveRestore.set(null);\n this.autoSavePreviewDisabledForm.set(false);\n this.autoSaveStartEventChangeListen();\n }\n }\n\n private getFormModelFromItem(item: Item | undefined): any {\n const formModel = (objectDeepCopy(item, {mapGettersToProperties: true}) as Record<string, any>) ?? {};\n\n const descriptor = this.descriptor();\n descriptor.fields.forEach(field => {\n if (field.getter && formModel) {\n const splitPath = field.property.split('.');\n let currentObject = formModel;\n\n for (let i = 0; i < splitPath.length; i++) {\n const currentSubPath = splitPath[i];\n if (i === splitPath.length - 1) {\n currentObject[currentSubPath] = field.getter(formModel?.[field.property as keyof object], formModel as Item);\n } else {\n if (typeof currentObject[currentSubPath] !== 'object') {\n currentObject[currentSubPath] = {};\n }\n\n currentObject = currentObject[currentSubPath];\n }\n }\n }\n });\n\n return formModel;\n }\n\n private findFormField(control: AbstractControl, keyPath: string[]): AbstractControl | null {\n if (keyPath.length === 0) {\n return control;\n }\n if (keyPath.length === 1) {\n return control.get(keyPath[0]);\n }\n let nextControl: AbstractControl | null = null;\n if (control instanceof FormGroup) {\n nextControl = control.get(keyPath[0]);\n } else if (control instanceof FormArray) {\n const idx = +keyPath[0];\n if (!isNaN(idx)) {\n nextControl = control.at(idx);\n }\n }\n\n if (!control) {\n return null;\n }\n return this.findFormField(nextControl!, keyPath.slice(1));\n }\n\n private isAnyFieldInvalid(fields: FormlyFieldConfig[] = []): boolean {\n for (const field of fields) {\n let fieldInvalid = false;\n if (Array.isArray(field.fieldGroup)) {\n fieldInvalid = this.isAnyFieldInvalid(field.fieldGroup);\n } else if (typeof field.type !== 'undefined') {\n fieldInvalid = !field.formControl?.valid;\n }\n if (fieldInvalid) {\n return true;\n }\n }\n return false;\n }\n\n private autoSaveStartEventChangeListen(init = false) {\n if (!this.descriptor().autoSave) {\n return;\n }\n\n setTimeout(\n () => {\n if (!this.autoSaveEventsSubscription) {\n this.autoSaveEventsSubscription = this._form.valueChanges\n .pipe(\n debounceTime(250),\n distinctUntilChanged(),\n // skip first one on init\n tap(() => {\n if (this.autoSaveStatusSubject.value.state !== 'saved' && this.autoSaveStatusSubject.value.state !== 'preview')\n this.autoSaveStatusSubject.next({...this.autoSaveStatusSubject.value, state: 'saving'});\n }),\n debounceTime(750),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.autoSaveSaveToStorage();\n });\n }\n },\n init ? 0 : 500 // delay initial event listening for all the initializations to take place\n );\n }\n\n private autoSaveStopValueChangeListen() {\n this.autoSaveEventsSubscription?.unsubscribe();\n this.autoSaveEventsSubscription = undefined;\n }\n\n /**\n * Saves the form value to localStorage if autoSave is enabled and the required keys are defined.\n * @returns {void}\n */\n private autoSaveSaveToStorage(): void {\n if (this.descriptor().autoSave !== true || this.autoSaveStatusSubject.value.state === 'preview' || this.autoSaveStatusSubject.value.state === 'previewCurrent') {\n return;\n }\n\n this.commonsStorageService.setItem<EditorAutoSavePreviewModel<Item>>(this.cmpTypeName, this.autoSaveStorageKey(), {saved: this.getFormValue(), savedAt: new Date()});\n this.autoSaveStatusSubject.next({state: 'saved', timestamp: new Date()});\n }\n\n /**\n * Loads the value from the local storage if available\n */\n private autoSaveLoadSavedFromStorage(): void {\n const {autoSave, model} = this.descriptor();\n if (autoSave && model.i18nBaseKey) {\n this.autoSaveRestore.set(this.commonsStorageService.getItem<EditorAutoSavePreviewModel<Item>>(this.cmpTypeName, this.autoSaveStorageKey()) ?? null);\n }\n }\n}\n","@if (autoSaveShowRestore()) {\n <p-messages severity=\"warn\">\n <ng-template pTemplate>\n <div class=\"flex flex-grow-1 justify-content-between align-items-center\">\n <h6 class=\"m-0 p-0\">\n <em class=\"pi pi-save mr-4\"></em>\n {{\n 'mngEditor.autoSave.restore.title'\n | translate: {lastChange: autoSaveRestore()?.savedAt ? (autoSaveRestore()?.savedAt! | date: 'dd. MM. YYYY HH:mm:ss') : ''}\n }}\n </h6>\n <div>\n <p-button\n icon=\"pi pi-sync\"\n size=\"small\"\n [label]=\"'mngEditor.autoSave.restore.restore' | translate\"\n [styleClass]=\"restoreLocalStateButtonStyle\"\n [text]=\"true\"\n (click)=\"onAutoSaveRestore()\"></p-button>\n @if (autoSave()?.state !== 'preview' || autoSave()?.state !== 'previewCurrent') {\n <p-button\n icon=\"pi pi-eye\"\n size=\"small\"\n [label]=\"autoSavePreviewButtonLabel() | translate\"\n [styleClass]=\"previewLocalStateButtonStyle\"\n [text]=\"true\"\n (click)=\"onAutoSavePreview()\"></p-button>\n }\n <p-button\n icon=\"pi pi-times\"\n size=\"small\"\n [label]=\"'mngEditor.autoSave.restore.dismiss' | translate\"\n [styleClass]=\"clearLocalStateButtonStyle\"\n (click)=\"onAutoSaveDismiss()\"></p-button>\n </div>\n </div>\n </ng-template>\n </p-messages>\n}\n\n@if (autofocusEnabled()) {\n <input type=\"hidden\" #focusThiefInput tabindex=\"0\" />\n}\n<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit($event)\">\n <formly-form [form]=\"form\" [fields]=\"formlyFields\" [options]=\"formlyOptions\" [model]=\"formlyInitialItem\"></formly-form>\n <button #submitButton pButton type=\"submit\" class=\"hidden\" [disabled]=\"form.disabled\" [loading]=\"submitLoading()\" loadingIcon=\"pi pi-spin pi-spinner\"></button>\n</form>\n<p-messages [value]=\"formMessages()\" [enableService]=\"false\"></p-messages>\n\n@if (descriptor().autoSave && showAutoSaveStatus()) {\n <mng-editor-auto-save-status [status]=\"autoSave()\"></mng-editor-auto-save-status>\n}\n","import {ChangeDetectionStrategy, Component, HostListener, OnDestroy, OnInit, computed, effect, inject, input, output, signal, viewChild} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfirmationService} from 'primeng/api';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {ProgressSpinnerModule} from 'primeng/progressspinner';\nimport {ToolbarModule} from 'primeng/toolbar';\nimport {ZIndexUtils} from 'primeng/utils';\nimport {NEVER, Observable, Subject, Subscription, combineLatestWith, mergeMap, of, switchMap} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {\n ActionData,\n ActionParameters,\n CommonsInternalError,\n CommonsService,\n ComponentDirective,\n IDataProvider,\n IdType,\n LoggerService,\n objectDeepCopy\n} from '@mediusinc/mng-commons/core';\nimport {\n ActionActivationTriggerEnum,\n ActionDescriptorInst,\n ActionEditorDescriptorInst,\n ActionEditorSubmitDescriptorInst,\n ActionEditorSubmitTypeEnum,\n ActionPositionEnum,\n ActionTypeEnum,\n EditorResetEvent,\n FormEditorSubmitEvent,\n IActionEditorComponent,\n IActionInstance,\n IEditorDataProvider\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {EditorAutoSaveStatusComponent} from '../../../../editor/components/editor/auto-save-status/auto-save-status.component';\nimport {FormEditorComponent} from '../../../../editor/components/editor/form-editor.component';\nimport {EditorAutoSaveStatus} from '../../../../editor/models/editor-auto-save-preview.model';\nimport {getI18nActionEditorTitleAsync} from '../../../helpers/i18n';\nimport {ActionInstanceStateEnum} from '../../../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../../services/action-executor.service';\nimport {provideActionExecutor} from '../../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../../services/view-container.service';\nimport {ActionComponent} from '../../action/action.component';\n\n@Component({\n standalone: true,\n selector: 'mng-action-editor-injector-context',\n templateUrl: './action-editor-injector-context.component.html',\n styleUrls: ['action-editor-injector-context.component.scss'],\n imports: [ActionComponent, ProgressSpinnerModule, FormEditorComponent, ComponentDirective, ToolbarModule, EditorAutoSaveStatusComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideActionExecutor()]\n})\nexport class ActionEditorInjectorContextComponent<Item = any, Service = any> implements OnInit, OnDestroy, IActionEditorComponent {\n protected readonly ActionActivationTriggerEnum = ActionActivationTriggerEnum;\n public readonly actionEditorSubmitTypeSubmit = ActionEditorSubmitTypeEnum.Submit;\n\n private readonly translate = inject(TranslateService);\n private readonly confirmationService = inject(ConfirmationService);\n private readonly dialogService = inject(DialogService);\n private readonly logger = inject(LoggerService).create('ActionEditorInjectorContextComponent');\n private readonly commonsService = inject(CommonsService);\n private readonly actionExecutor = inject(ActionExecutorService);\n private readonly viewContainer = inject(ViewContainer, {optional: true});\n\n // metadata and editor mode input\n data = input.required<ActionEditorInjectorContextInputData<Item, Service>>();\n\n public actionRun = output<Item | null | undefined>();\n public actionCancel = output<Item | null | undefined>();\n\n // content and view queries\n public formEditorCmp = viewChild(FormEditorComponent);\n\n private hasTitle = computed(() => this.editorAction().editorTitle !== null);\n public title = signal<string | undefined>(undefined);\n public isFormDisabled = signal(false);\n\n // data\n public item = signal<Item | undefined>(undefined);\n public itemId = signal<IdType | undefined>(undefined);\n public actionData = signal<ActionData | undefined>(undefined);\n public editorAction = signal<ActionEditorDescriptorInst<Item, Service>>({} as ActionEditorDescriptorInst<Item, Service>); // fake initial value\n\n // actions\n private actions = computed(() => {\n const actions: ActionDescriptorInst<Item>[] = [];\n for (const action of this.editorAction().editorActions) {\n if (action instanceof ActionEditorSubmitDescriptorInst) {\n if (typeof action.button.icon === 'undefined') {\n action.button.withIcon(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times');\n }\n if (typeof action.button.label === 'undefined') {\n action.button.withLabel(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'general.save' : this.data().isDialog ? 'general.close' : 'general.cancel');\n }\n\n // assign run operations\n action.withRunNotificationSuccess(undefined, undefined, false);\n if (action.submitType === ActionEditorSubmitTypeEnum.Submit) {\n action.withRunFunction(() => {\n this.triggerSubmit();\n return of(null);\n });\n } else {\n action.withRunFunction(() => {\n this.closeWithUnsavedChangesConfirmation();\n return of(null);\n });\n }\n }\n actions.push(action);\n }\n\n for (const action of this.viewContainer?.actions().filter(value => value.positionTableviewCategories?.includes(this.editorAction().tableviewCategory!)) ?? []) {\n actions.push(action);\n }\n\n return actions;\n });\n public toolbarLeftActions = computed(() => this.actions().filter(a => a.position === ActionPositionEnum.ToolbarLeft));\n public toolbarRightActions = computed(() =>\n this.actions()\n .filter(a => a.position === ActionPositionEnum.ToolbarRight)\n .reverse()\n );\n public footerLeftActions = computed(() => this.actions().filter(a => a.position === ActionPositionEnum.FooterLeft));\n public footerRightActions = computed(() =>\n this.actions()\n .filter(a => a.position === ActionPositionEnum.FooterRight)\n .reverse()\n );\n\n private instance?: ActionInstance<Item, Service>;\n private instanceStateSubscription?: Subscription;\n private instanceReactivationSubscription?: Subscription;\n\n private dataProvider = computed(() => this.data().dataProvider ?? this.viewContainer?.dataProvider());\n\n public loading = signal(false);\n private fetchExecutionSubscription?: Subscription;\n public formValue = signal<Item | undefined>(undefined);\n public submitLoading = signal(false);\n public autoSaveStatus = signal<EditorAutoSaveStatus | undefined>(undefined);\n private submitExecutionSubscription?: Subscription;\n private lastSubmitItem?: Item;\n\n private titleSubscription?: Subscription;\n\n constructor() {\n // updates for title\n effect(\n () => {\n const hasTitle = this.hasTitle();\n if (!hasTitle) {\n this.title.set(undefined);\n } else {\n this.titleSubscription?.unsubscribe();\n this.titleSubscription = getI18nActionEditorTitleAsync(this.translate, this.editorAction(), this.item()).subscribe(t => {\n this.title.set(t ?? undefined);\n });\n }\n },\n {allowSignalWrites: true}\n );\n\n toObservable(this.hasTitle)\n .pipe(\n combineLatestWith(toObservable(this.editorAction), toObservable(this.item)),\n mergeMap(([hasTitle, editorAction, item]) => (hasTitle ? getI18nActionEditorTitleAsync(this.translate, editorAction, item) : of(undefined)))\n )\n .subscribe(title => {\n this.title.set(title ?? undefined);\n\n const dataDialogConfig = this.data().dialogConfig;\n if (dataDialogConfig) {\n dataDialogConfig.header = title ?? undefined;\n }\n if (this.editorAction().activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n this.commonsService.setPageTitle(title ?? undefined);\n }\n });\n\n // subscribe to events that could be triggered from outside from any reason\n this.viewContainer?.editorReset$.pipe(takeUntilDestroyed()).subscribe({\n next: e => this.onEditorReset(e)\n });\n\n toObservable(this.dataProvider)\n .pipe(\n switchMap(dp => (dp as IEditorDataProvider)?.editorReset$ ?? NEVER),\n takeUntilDestroyed()\n )\n .subscribe({\n next: e => this.onEditorReset(e)\n });\n\n this.viewContainer?.editorClose$.pipe(takeUntilDestroyed()).subscribe({\n next: () => {\n this.cancel();\n }\n });\n }\n\n ngOnInit() {\n const data = this.data();\n this.editorAction.set(data.descriptor);\n this.item.set(data.item);\n this.itemId.set(data.itemId);\n this.actionData.set(data.actionData);\n\n if (data.actionInstance) {\n this.processActionInstance(data.actionInstance);\n }\n\n // notify executor to for activation to end\n this.processActionInstance(this.actionExecutor.onActionEditorInit(this.editorAction(), this.instance, this));\n }\n\n public ngOnDestroy() {\n this.titleSubscription?.unsubscribe();\n this.fetchExecutionSubscription?.unsubscribe();\n this.submitExecutionSubscription?.unsubscribe();\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.onActionEditorDestroy(instance);\n }\n\n public onSubmit(event: FormEditorSubmitEvent<Item>) {\n if (!this.instance) {\n throw new CommonsInternalError(`Action is not instantiated in action editor for action ${this.editorAction().actionName}.`);\n }\n if (event.success) {\n // prepare parameters\n const actionParameters: ActionParameters<Item> = {\n itemId: this.itemId(),\n item: event.formItem,\n actionData: this.actionData()\n };\n if (this.editorAction().editorDescriptor.isLocalized) {\n actionParameters.locale = this.commonsService.getDefaultLocale();\n }\n\n const context = this.actionExecutor.prepareContextForEditorSubmit(\n this.editorAction(),\n actionParameters,\n this.dataProvider(),\n this.instance,\n this.data().previousActionInstance\n );\n\n this.submitExecutionSubscription?.unsubscribe();\n this.submitExecutionSubscription = context.execution$.pipe(take(1)).subscribe({\n next: res => {\n this.lastSubmitItem = event.formItem;\n const modelIdProp = this.editorAction().model?.idProperty;\n if (res && typeof res === 'object' && !this.itemId() && modelIdProp) {\n // to cover creation!\n this.updateItemId(res[modelIdProp as keyof object]);\n }\n this.actionRun.emit(res);\n }\n });\n\n this.actionExecutor.run(context);\n }\n }\n\n public cancel() {\n if (!this.instance) {\n this.logger.warn(`Action editor cannot be canceled for ${this.editorAction().actionName}, because no action instance is present`);\n return;\n }\n this.actionCancel.emit(undefined);\n this.actionExecutor.finishAction(this.instance);\n }\n\n public updateItemId(itemId: IdType | undefined) {\n this.itemId.set(itemId);\n }\n\n public updateItem(item: Item | undefined) {\n this.item.set(item);\n }\n\n public triggerSubmit() {\n this.formEditorCmp()?.submit();\n }\n\n public onValueChange(value: Item) {\n this.formValue.set(value);\n }\n\n public onAutoSave(value: EditorAutoSaveStatus) {\n this.autoSaveStatus.set(value);\n }\n\n private fetchItem() {\n if (!this.instance) {\n throw new CommonsInternalError(`Action is not instantiated in action editor for action ${this.editorAction().actionName}.`);\n }\n\n const actionParameters: ActionParameters<Item> = {\n itemId: this.itemId(),\n item: this.item(),\n actionData: this.actionData()\n };\n if (this.editorAction().editorDescriptor.isLocalized) {\n if (this.editorAction().editorDescriptor.disabled) {\n actionParameters.locale = this.commonsService.appDataLocale()!;\n } else {\n actionParameters.locale = this.commonsService.getDefaultLocale();\n }\n }\n if (this.instance?.previousInstance instanceof ActionInstance && this.instance.previousInstance.context?.parameters.item) {\n actionParameters.formItem = this.instance.previousInstance.context.parameters.item;\n }\n if (typeof this.instance?.previousInstance?.result !== 'undefined') {\n actionParameters.submitResult = this.instance?.previousInstance?.result;\n }\n\n const context = this.actionExecutor.prepareContextForEditorFetch(\n this.editorAction(),\n actionParameters,\n this.dataProvider(),\n this.instance,\n this.data().previousActionInstance\n );\n this.fetchExecutionSubscription?.unsubscribe();\n this.fetchExecutionSubscription = context.execution$.pipe(take(1)).subscribe(res => {\n this.updateItem(res ?? undefined);\n });\n\n this.actionExecutor.run(context);\n }\n\n private setEditorEnabled(isEnabled = true) {\n this.isFormDisabled.set(!isEnabled);\n }\n\n private processActionInstance(instance: IActionInstance<Item, Service>) {\n if (!(instance instanceof ActionInstance)) {\n throw new CommonsInternalError('Unknown type of action instance received', {details: instance});\n }\n if (!this.instance || this.instance.instanceLongName !== instance.instanceLongName) {\n this.unsetInstance();\n this.instance = instance;\n\n this.instanceStateSubscription = this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.ActivationEnd:\n this.fetchItem();\n break;\n case ActionInstanceStateEnum.FetchStart:\n this.setEditorEnabled(false);\n this.loading.set(true);\n break;\n case ActionInstanceStateEnum.FetchError:\n this.loading.set(false);\n break;\n case ActionInstanceStateEnum.FetchEnd:\n this.setEditorEnabled(true);\n this.loading.set(false);\n break;\n case ActionInstanceStateEnum.RunStart:\n this.setEditorEnabled(false);\n this.submitLoading.set(true);\n break;\n case ActionInstanceStateEnum.RunEnd:\n case ActionInstanceStateEnum.RunError:\n this.setEditorEnabled(true);\n this.submitLoading.set(false);\n break;\n case ActionInstanceStateEnum.NextActionStart:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(true);\n }\n break;\n case ActionInstanceStateEnum.NextActionEnd:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(false);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionStart:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(true);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionEnd:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(false);\n }\n break;\n case ActionInstanceStateEnum.FinishErrorFinal:\n this.setEditorEnabled(false);\n break;\n case ActionInstanceStateEnum.FinishSuccessFinal:\n case ActionInstanceStateEnum.FinishDismissedFinal:\n this.setEditorEnabled(false);\n this.unsetInstance();\n break;\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n this.setEditorEnabled(false);\n // make copy of item and update title to be on the latest\n this.updateItem(objectDeepCopy(this.lastSubmitItem));\n // should also unsetInstance, but let this for reactivationInstance$ listener to not interfere\n break;\n }\n });\n\n this.instanceReactivationSubscription = this.instance.reactivationInstance$.subscribe(newInstance => {\n this.processActionInstance(newInstance);\n });\n }\n }\n\n private unsetInstance() {\n this.instance = undefined;\n this.instanceStateSubscription?.unsubscribe();\n this.instanceReactivationSubscription?.unsubscribe();\n }\n\n @HostListener('window:beforeunload')\n private beforeWindowUnload() {\n if (this.data().isDialog && this.formEditorCmp()?.form.pristine === false) {\n return confirm(this.translate.instant('mngEditor.unsavedChangesConfirmation.message'));\n }\n return true;\n }\n\n @HostListener('window:keydown.Escape')\n private onEscapePressed() {\n if (\n this.data().isDialog &&\n this.editorAction().activationTrigger === ActionActivationTriggerEnum.OnRoute &&\n this.instance?.activationDialogRef &&\n parseInt(this.dialogService.dialogComponentRefMap.get(this.instance?.activationDialogRef)?.instance.container?.style.zIndex ?? '') === ZIndexUtils.getCurrent()\n )\n this.closeWithUnsavedChangesConfirmation();\n }\n\n public closeWithUnsavedChangesConfirmation(callFromGuard = false): Observable<boolean> {\n if (this.formEditorCmp()?.form.pristine === false && this.editorAction().unsavedChangesConfirmation) {\n return this.showUnsavedChangesConfirmationDialog(callFromGuard);\n } else {\n if (!callFromGuard) {\n this.cancel();\n }\n }\n\n return of(true);\n }\n\n private showUnsavedChangesConfirmationDialog(callFromGuard: boolean): Observable<boolean> {\n const subject = new Subject<boolean>();\n this.confirmationService.confirm({\n header: this.translate.instant('mngEditor.unsavedChangesConfirmation.header'),\n message: this.translate.instant('mngEditor.unsavedChangesConfirmation.message'),\n acceptLabel: this.translate.instant('general.yes'),\n rejectLabel: this.translate.instant('general.no'),\n icon: 'pi pi-exclamation-triangle',\n accept: () => {\n if (!callFromGuard) {\n this.cancel();\n }\n subject.next(true);\n subject.complete();\n },\n reject: () => {\n subject.next(false);\n subject.complete();\n }\n });\n return subject.asObservable();\n }\n\n private onEditorReset(event?: EditorResetEvent<Item>) {\n if (event?.fetch) {\n this.fetchItem();\n } else if (event?.item) {\n this.formEditorCmp()?.resetFormModel(event.item);\n } else if (event?.fields) {\n for (const key in event.fields) {\n this.formEditorCmp()?.resetFieldValue(key, event.fields[key]);\n }\n } else {\n this.formEditorCmp()?.resetFormModel();\n }\n }\n}\n\nexport interface ActionEditorInjectorContextInputData<Item, Service> {\n descriptor: ActionEditorDescriptorInst<Item, Service>;\n isDialog: boolean;\n dialogConfig?: DynamicDialogConfig;\n itemId?: IdType;\n item?: Item;\n actionData?: ActionData;\n dataProvider?: IDataProvider<Item, Service>;\n actionInstance?: ActionInstance<Item, Service>;\n previousActionInstance?: IActionInstance<any, any>;\n}\n","@if (!data().isDialog && title()) {\n <h5>{{ title() }}</h5>\n}\n@if (data().isDialog && editorAction().activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n <span class=\"p-dialog-header dialog-close-button-wrapper\">\n <button\n class=\"p-dialog-header-icon p-dialog-header-maximize p-link\"\n type=\"button\"\n (click)=\"closeWithUnsavedChangesConfirmation()\"\n (keydown.enter)=\"closeWithUnsavedChangesConfirmation()\">\n <span class=\"p-dialog-header-close-icon pi pi-times\"></span>\n </button>\n </span>\n}\n<div class=\"h-full flex flex-column\">\n @if (toolbarLeftActions().length > 0 || toolbarRightActions().length > 0) {\n <div class=\"flex-grow-1 mng-action-editor-toolbar-container\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"formValue()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"formValue()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n </div>\n }\n\n <div class=\"flex-grow-1 mng-action-editor-form-container\">\n @if (loading()) {\n <div class=\"text-center\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n }\n @if (editorAction().editorDescriptor && !loading()) {\n <mng-form-editor\n [descriptor]=\"editorAction().editorDescriptor\"\n [editorId]=\"editorAction().actionNameLong\"\n [item]=\"item()\"\n [itemId]=\"itemId()\"\n [isFormDisabled]=\"isFormDisabled()\"\n showAutoSaveStatus=\"false\"\n (valueChange)=\"onValueChange($event)\"\n (formSubmit)=\"onSubmit($event)\"\n (autoSaveStatus)=\"onAutoSave($event)\">\n </mng-form-editor>\n }\n </div>\n\n <div class=\"flex flex-row justify-content-between align-items-center mng-action-editor-footer-container\">\n <div>\n @for (action of footerLeftActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"formValue()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n @if (editorAction().editorDescriptor.autoSave) {\n <mng-editor-auto-save-status [status]=\"autoSaveStatus()\"></mng-editor-auto-save-status>\n }\n </div>\n <div>\n @for (action of footerRightActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"formValue()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </div>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, Type, computed, effect, inject, input, output} from '@angular/core';\n\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\n\nimport {ActionData, CommonsInternalError, ComponentDirective, IDataProvider, IdType} from '@mediusinc/mng-commons/core';\nimport {ActionEditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionEditorDialogData} from '../../models/action-editor-dialog-data.model';\nimport {ActionEditorInjectorContextComponent, ActionEditorInjectorContextInputData} from './injector-context/action-editor-injector-context.component';\n\n@Component({\n standalone: true,\n selector: 'mng-action-editor',\n templateUrl: './action-editor.component.html',\n imports: [ComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ActionEditorComponent<T = any, S = any> {\n public readonly injContextCmpType = ActionEditorInjectorContextComponent as Type<any>;\n\n public readonly dialogConfig = inject(DynamicDialogConfig, {optional: true});\n\n public action = input.required<ActionEditorDescriptorInst<T, S>>();\n\n private readonly dialogData = this.dialogConfig?.data as ActionEditorDialogData<T, S> | undefined;\n private readonly isDialog = !!this.dialogData;\n public readonly parentInjector = this.dialogData?.injector;\n\n // data source inputs\n public itemId = input<IdType>();\n public item = input<T>();\n public actionData = input<ActionData>();\n public dataProvider = input<IDataProvider<T, S>>();\n\n public actionRun = output<T | null | undefined>();\n public actionCancel = output<T | null | undefined>();\n\n private actionEditorWInjContextCmp?: ActionEditorInjectorContextComponent<T, S>;\n public actionEditorWInjContextInputData = computed(() => {\n return <ActionEditorInjectorContextInputData<T, S>>{\n isDialog: this.isDialog,\n dialogConfig: this.dialogConfig ?? undefined,\n descriptor: this.dialogData?.action.descriptor ?? this.action(),\n actionInstance: this.dialogData?.action.instance,\n previousActionInstance: this.dialogData?.action.previousInstance,\n itemId: this.dialogData?.action.instance.activationParameters?.itemId ?? this.itemId(),\n item: this.dialogData?.action.instance.activationParameters?.item ?? this.item(),\n actionData: this.dialogData?.action.instance.activationParameters?.actionData ?? this.actionData,\n dataProvider: this.dataProvider()\n };\n });\n\n private itemIdFirstUpdate = true;\n private itemFirstUpdate = true;\n\n public get actionEditor() {\n return this.actionEditorWInjContextCmp;\n }\n\n public get formEditorCmp() {\n return this.actionEditor?.formEditorCmp;\n }\n\n constructor() {\n effect(() => {\n const itemId = this.itemId();\n if (!this.itemIdFirstUpdate) {\n this.actionEditorWInjContextCmp?.updateItemId(itemId);\n } else {\n this.itemIdFirstUpdate = false;\n }\n });\n\n effect(() => {\n const item = this.item();\n if (!this.itemFirstUpdate) {\n this.actionEditorWInjContextCmp?.updateItem(item);\n } else {\n this.itemFirstUpdate = false;\n }\n });\n }\n\n public onActionEditorWInjContextCmp(cmp: ActionEditorInjectorContextComponent<T, S>) {\n if (this.actionEditorWInjContextCmp) {\n throw new CommonsInternalError('Action editor injection context component is already initialized');\n }\n this.actionEditorWInjContextCmp = cmp;\n this.actionEditorWInjContextCmp.actionCancel.subscribe(action => {\n this.actionCancel.emit(action);\n });\n this.actionEditorWInjContextCmp.actionRun.subscribe(action => {\n this.actionRun.emit(action);\n });\n }\n\n public cancel() {\n this.actionEditorWInjContextCmp?.cancel();\n }\n\n public triggerSubmit() {\n this.actionEditorWInjContextCmp?.triggerSubmit();\n }\n}\n","<div\n [mngComponent]=\"injContextCmpType\"\n [inputs]=\"{\n data: actionEditorWInjContextInputData()\n }\"\n [parentInjector]=\"parentInjector\"\n (instanceCreated)=\"onActionEditorWInjContextCmp($event)\"></div>\n","import {ChangeDetectionStrategy, Component, computed, inject, input, output} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {of} from 'rxjs';\n\nimport {ActionData, ActionParameters, CommonsService, IdType} from '@mediusinc/mng-commons/core';\nimport {DropdownComponent} from '@mediusinc/mng-commons/form';\nimport {LookupDataProviderInst, lookupDataProvider} from '@mediusinc/mng-commons/form/api';\nimport {ActionDescriptorInst, IActionComponent} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ViewContainer} from '../../services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-data-language-dropdown',\n imports: [DropdownComponent, FormsModule],\n templateUrl: 'data-language-dropdown.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataLanguageDropdownComponent<T = any> implements IActionComponent<T> {\n private readonly viewContainer = inject(ViewContainer, {optional: true});\n public readonly commons = inject(CommonsService);\n\n public action = input.required<ActionDescriptorInst<T>>();\n public actionData = input.required<ActionData>();\n public item = input.required<T>();\n public itemId = input.required<IdType>();\n public enabled = input.required<boolean>();\n public loading = input.required<boolean>();\n\n public trigger = output<ActionParameters<T>>();\n\n // dropdown properties\n public selectionItemsDataProvider = computed<LookupDataProviderInst<string>>(() => lookupDataProvider<string>().withLookup(() => of(this.commons.appDataLocales())));\n\n public updateDataLocale(dataLang: string): void {\n this.commons.setAppDataLocale(dataLang);\n this.viewContainer?.reloadTable({});\n }\n}\n","<mng-dropdown [dataProvider]=\"selectionItemsDataProvider()\" [ngModel]=\"commons.appDataLocale()\" [showClear]=\"false\" (valueChange)=\"updateDataLocale($event)\"></mng-dropdown>\n","import {ChangeDetectionStrategy, Component, DestroyRef, OnDestroy, OnInit, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, Params, Router} from '@angular/router';\n\nimport {Observable, Subscription, of} from 'rxjs';\n\nimport {ActionData, ActionParameters, CommonsInternalError} from '@mediusinc/mng-commons/core';\nimport {ActionActivationTriggerEnum, ActionDescriptorInst, ActionTypeEnum, IActionInstance} from '@mediusinc/mng-commons/tableview/api';\n\nimport {CanComponentDeactivate} from '../../models/can-component-deactivate.model';\nimport {ActionInstanceStateEnum} from '../../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../services/action-executor.service';\nimport {provideActionExecutor} from '../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-action-route',\n templateUrl: './action-route.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideActionExecutor()]\n})\nexport default class ActionRouteComponent<Item, Service> implements OnInit, OnDestroy, CanComponentDeactivate {\n private readonly router = inject(Router);\n private readonly route = inject(ActivatedRoute);\n private readonly actionExecutor = inject(ActionExecutorService);\n private readonly viewContainer? = inject(ViewContainer<Item, Service>, {optional: true});\n private readonly destroyRef = inject(DestroyRef);\n\n private actions: Array<ActionDescriptorInst<any>> = this.viewContainer?.actions().filter(a => a.activationTrigger === ActionActivationTriggerEnum.OnRoute) ?? [];\n private instance?: ActionInstance<Item, Service>;\n private instanceStateSubscription?: Subscription;\n private instanceReactivationSubscription?: Subscription;\n\n private isRouterNavigationInProgress = false;\n\n public ngOnInit() {\n this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(p => {\n const action = this.findActionForRoute(p) ?? undefined;\n if (action) {\n this.activateAction(action, p, this.route.snapshot.queryParams);\n }\n });\n this.router.events.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(e => {\n if (e instanceof NavigationStart) {\n this.isRouterNavigationInProgress = true;\n } else if (e instanceof NavigationEnd || e instanceof NavigationCancel || e instanceof NavigationError || e instanceof NavigationSkipped) {\n this.isRouterNavigationInProgress = false;\n }\n });\n }\n\n public ngOnDestroy() {\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.onActionRouteDestroy(instance);\n }\n\n private activateAction(action: ActionDescriptorInst<any>, p: Params, qp: Params) {\n const itemId = p['itemId'];\n const actionData: ActionData = {};\n for (const key in p) {\n if (key === 'itemId') {\n continue;\n }\n actionData[key] = p[key];\n }\n for (const key in qp) {\n actionData[key] = p[key];\n }\n\n this.processActionInstance(\n this.actionExecutor.activateAction(action, <ActionParameters<Item>>{\n itemId: itemId,\n actionData: actionData,\n sourceComponent: this,\n route: this.route\n })\n );\n }\n\n private untriggerAction() {\n if (!this.instance || this.isRouterNavigationInProgress) {\n return;\n }\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.finishActionRouteUntrigger(instance);\n }\n\n private findActionForRoute(params: Params): ActionDescriptorInst<any> | null {\n const urlSegments = this.route.snapshot.url;\n for (const action of this.actions) {\n let actionUrl = action.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n const actionUrlSegments = actionUrl.split('/');\n if (actionUrlSegments.length !== urlSegments.length) {\n continue;\n }\n let isMatch = true;\n for (let i = 0; i < actionUrlSegments.length; i++) {\n if (actionUrlSegments[i].startsWith(':')) {\n const paramName = actionUrlSegments[i].substring(1);\n if (!params[paramName]) {\n isMatch = false;\n break;\n }\n } else if (actionUrlSegments[i] !== urlSegments[i].path) {\n isMatch = false;\n break;\n }\n }\n if (isMatch) {\n return action;\n }\n }\n return null;\n }\n\n private processActionInstance(instance: IActionInstance<Item, Service>) {\n if (!(instance instanceof ActionInstance)) {\n throw new CommonsInternalError('Unknown type of action instance received', {details: instance});\n }\n\n if (!this.instance || this.instance.instanceLongName !== instance.instanceLongName) {\n this.unsetInstance();\n this.instance = instance;\n\n this.instanceStateSubscription = this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n this.viewContainer?.reloadTable(); // reload only if no error in action and\n break;\n case ActionInstanceStateEnum.FinishSuccessFinal:\n this.viewContainer?.reloadTable(); // reload only if no error in action and\n this.untriggerAction();\n break;\n case ActionInstanceStateEnum.FinishErrorFinal:\n case ActionInstanceStateEnum.FinishDismissedFinal:\n this.untriggerAction();\n break;\n }\n });\n\n this.instanceReactivationSubscription = this.instance.reactivationInstance$.subscribe(newInstance => {\n this.processActionInstance(newInstance);\n });\n }\n }\n\n public canDeactivate(): Observable<boolean> {\n if (this.instance?.action.type === ActionTypeEnum.Editor && this.instance.activationEditorComponentRef) {\n return this.instance.activationEditorComponentRef.closeWithUnsavedChangesConfirmation(true);\n }\n\n return of(true);\n }\n\n private unsetInstance() {\n this.instance = undefined;\n this.instanceStateSubscription?.unsubscribe();\n this.instanceReactivationSubscription?.unsubscribe();\n }\n}\n","","import {StyleSizeEnum, Styles} from '@mediusinc/mng-commons/core';\nimport {TableDescriptorInst, TableSizeEnum} from '@mediusinc/mng-commons/table/api';\nimport {ActionDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nexport function calculateTableColumnActionWidth(table: TableDescriptorInst<unknown>, actions: Array<ActionDescriptorInst<unknown>>): number {\n const buttonsWidth = actions.reduce((acc, action) => acc + getActionButtonRoundedWidth(action) + 2 * Styles.ACTION_BUTTON_MARGIN_X, 0);\n const tablePadding = getTableCellPaddingX(table);\n return buttonsWidth + 2 * tablePadding;\n}\n\nexport function getTableCellPaddingX(table: TableDescriptorInst<unknown>): number {\n switch (table.size) {\n case TableSizeEnum.Small:\n return Styles.TABLE_CELL_PADDING_X_SM;\n case TableSizeEnum.Large:\n return Styles.TABLE_CELL_PADDING_X_LG;\n default:\n return Styles.TABLE_CELL_PADDING_X;\n }\n}\n\nexport function getActionButtonRoundedWidth(action: ActionDescriptorInst<any>): number {\n switch (action.button.styleClass.size) {\n case StyleSizeEnum.ExtraSmall:\n return Styles.BUTTON_ROUNDED_WIDTH_XS;\n case StyleSizeEnum.Small:\n return Styles.BUTTON_ROUNDED_WIDTH_SM;\n case StyleSizeEnum.Large:\n case StyleSizeEnum.ExtraLarge:\n return Styles.BUTTON_ROUNDED_WIDTH_LG;\n case StyleSizeEnum.Normal:\n default:\n return Styles.BUTTON_ROUNDED_WIDTH;\n }\n}\n","import {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n QueryList,\n Signal,\n TemplateRef,\n Type,\n booleanAttribute,\n computed,\n contentChildren,\n inject,\n input,\n output,\n viewChild,\n viewChildren\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TableRowReorderEvent} from 'primeng/table';\n\nimport {ActionParameters, ComponentDirective, DataListResult, TemplateDirective, findTemplateByName} from '@mediusinc/mng-commons/core';\nimport {TableComponent} from '@mediusinc/mng-commons/table';\nimport {ITableDataProvider, TableCellClickEvent, TableDescriptorInst, TableLoadEvent, TableReloadEvent} from '@mediusinc/mng-commons/table/api';\nimport {ActionDescriptorInst, ActionPositionEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {calculateTableColumnActionWidth} from '../../helpers/styles';\nimport {ActionInstance} from '../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../services/action-executor.service';\nimport {provideActionExecutor} from '../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../services/view-container.service';\nimport {ActionComponent} from '../action/action.component';\n\n@Component({\n standalone: true,\n selector: 'mng-action-table',\n templateUrl: './action-table.component.html',\n imports: [TableComponent, ActionComponent, TemplateDirective, NgTemplateOutlet, AsyncPipe],\n providers: [provideActionExecutor()],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ActionTableComponent<Item = any, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> {\n private readonly route = inject(ActivatedRoute);\n private readonly actionExecutor = inject(ActionExecutorService);\n private readonly viewContainer = inject(ViewContainer<Item, Service>, {optional: true});\n\n // metadata input\n public descriptor = input.required<TableDescriptorInst<Item, Sorts, Filters>>();\n\n // data source inputs\n public items = input<Array<Item>>();\n public result = input<DataListResult<Item>>();\n\n public loading = input<boolean, unknown>(false, {transform: booleanAttribute});\n public dataProvider = input<ITableDataProvider<Item, Service, Sorts, Filters>>();\n public useQueryParams = input(false);\n\n // extra features input\n public selectionMode = input<'single' | 'multiple'>('multiple');\n public selectionEnabled = input(false);\n public globalFilterFields = input<string[]>();\n public rowReorderEnabled = input<boolean>(true);\n\n // actions\n public actions = input<Array<ActionDescriptorInst<any>>>([]); // can be anything\n\n // component inputs\n public captionComponent = input<Type<any>>();\n public columnActionComponent = input<Type<any>>();\n public columnActionMinWidthInput = input<number | undefined>(undefined, {alias: 'columnActionMinWidth'});\n public columnActionMinWidth = computed(() =>\n this.descriptor() && !this.columnActionMinWidthInput()\n ? calculateTableColumnActionWidth(this.descriptor() as TableDescriptorInst<any>, this.rowInlineActions())\n : this.columnActionMinWidthInput()\n );\n\n // event outputs\n public tableLoad = output<TableLoadEvent>();\n public selectionChange = output<Array<Item>>();\n public captionComponentInstance = output<any>();\n public columnActionComponentInstance = output<any>();\n public rowReorder = output<TableRowReorderEvent>();\n\n // content and view queries\n public templates = contentChildren(TemplateDirective);\n public components = viewChildren(QueryList<ComponentDirective<any>>);\n public table = viewChild.required(TableComponent);\n\n // templates\n public captionTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'caption'));\n public footerTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'footer'));\n public rowExpandTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'rowExpandContent'));\n\n // actions\n public rowClickActions = computed(() => {\n return this.actions().filter(action => action.position === ActionPositionEnum.RowClick);\n });\n\n public rowInlineActions = computed(() => {\n return this.actions().filter(action => action.position === ActionPositionEnum.RowInline);\n });\n\n constructor() {\n this.viewContainer?.tableReload$.pipe(takeUntilDestroyed()).subscribe(e => this.reload(e as TableReloadEvent<Sorts, Filters>));\n }\n\n public reload(e?: TableReloadEvent<Sorts, Filters>) {\n this.table().reload(e);\n }\n\n public onCellClick(event: TableCellClickEvent<Item>) {\n if (this.rowClickActions().length) {\n for (const action of this.rowClickActions()) {\n const idProp = this.descriptor()?.trackProperty ?? action?.model?.idProperty;\n const parameters: ActionParameters<Item> = {\n itemId: idProp ? event.rowItem[idProp as keyof object] : undefined,\n item: event.rowItem,\n actionData: {\n itemIndex: event.rowIndex\n },\n route: this.route,\n sourceComponent: this\n };\n this.actionExecutor.triggerAction(action, parameters, true);\n }\n }\n }\n\n public onSelectionChange(items: Array<Item>) {\n this.selectionChange.emit(items);\n }\n\n public onRowReorder(event: TableRowReorderEvent) {\n this.rowReorder.emit(event);\n }\n\n public onActionFinish(runResult: ActionInstance<Item, Service>) {\n if (!runResult.error) {\n this.reload();\n }\n }\n}\n","<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","import {CanDeactivateFn} from '@angular/router';\n\nimport {CanComponentDeactivate} from '../models/can-component-deactivate.model';\n\nexport const unsavedChangesGuard: CanDeactivateFn<CanComponentDeactivate> = (component: CanComponentDeactivate) => {\n return component.canDeactivate();\n};\n","import {Injector, Provider} from '@angular/core';\n\nimport {ViewContainer} from '../view-container.service';\n\nexport function provideViewContainer(provideParentIfPresent = true): Provider {\n return {\n provide: ViewContainer,\n useFactory: (injector: Injector) => {\n if (provideParentIfPresent) {\n return injector.get(ViewContainer, null, {optional: true, skipSelf: true}) ?? new ViewContainer();\n } else {\n return new ViewContainer();\n }\n },\n deps: [Injector]\n };\n}\n","import {Injectable} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nimport {DataListResult, Nullable} from '@mediusinc/mng-commons/core';\nimport {\n DataProviderExecutor,\n IActionContext,\n runCreateFromDataProvider,\n runDeleteFromDataProvider,\n runFetchFromDataProvider,\n runFnFromDataProviderOrFallback,\n runGetAllFromDataProvider,\n runUpdateFromDataProvider\n} from '@mediusinc/mng-commons/tableview/api';\n\n@Injectable()\nexport class DefaultDataProviderExecutor extends DataProviderExecutor {\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>): Observable<DataListResult<Item>> | null;\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<DataListResult<Item>>): Observable<DataListResult<Item>>;\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<DataListResult<Item>> | null;\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<DataListResult<Item>>): Observable<DataListResult<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runGetAllFromDataProvider, fallback) : runGetAllFromDataProvider(ctx);\n }\n\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runFetchFromDataProvider, fallback) : runFetchFromDataProvider(ctx);\n }\n\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runCreateFromDataProvider, fallback) : runCreateFromDataProvider(ctx);\n }\n\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runUpdateFromDataProvider, fallback) : runUpdateFromDataProvider(ctx);\n }\n\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Nullable<Item>> | null;\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runDeleteFromDataProvider, fallback) : runDeleteFromDataProvider(ctx);\n }\n}\n","import {DestroyRef, Directive, OnInit, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {BehaviorSubject} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {CommonsInternalError} from '@mediusinc/mng-commons/core';\nimport {AFieldDescriptor, CommonsFormlyFieldConfig, CommonsFormlyFormOptions, CommonsFormlyFormState, EditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\n// eslint-disable-next-line @angular-eslint/prefer-standalone\n@Directive()\nexport abstract class ACommonsFormlyFieldType<Model, EditorModel, Descriptor = AFieldDescriptor<Model, EditorModel>>\n extends FieldType<CommonsFormlyFieldConfig<Model, EditorModel>>\n implements OnInit\n{\n protected readonly destroyRef = inject(DestroyRef);\n protected formStateDisabledSubject = new BehaviorSubject(false);\n\n protected formStateDisabled$ = this.formStateDisabledSubject.asObservable();\n\n get descriptor(): Descriptor {\n return this.props.descriptor as Descriptor;\n }\n\n get editorDescriptor(): EditorDescriptorInst<EditorModel, any> {\n return this.props.editorDescriptor!;\n }\n\n override get options(): CommonsFormlyFormOptions<EditorModel> {\n return this.field.options as CommonsFormlyFormOptions<EditorModel>;\n }\n\n override get formState(): CommonsFormlyFormState<EditorModel> {\n return this.options?.formState ?? {};\n }\n\n ngOnInit() {\n if (!this.props.editorDescriptor) {\n throw new CommonsInternalError(`Editor descriptor is not defined for key ${this.key}.`);\n }\n\n this.props.fieldComponent = this as ACommonsFormlyFieldType<Model, EditorModel>;\n if (!this.formState.disabled$) throw new CommonsInternalError('formState.disabled$ must be defined');\n\n this.formState.disabled$\n .pipe(startWith(this.formState.disabled ?? false), takeUntilDestroyed(this.destroyRef))\n .subscribe(value => this.formStateDisabledSubject.next(value));\n }\n}\n","import {JsonPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {AbstractControl, FormControl, FormGroup} from '@angular/forms';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\nimport {MessageModule} from 'primeng/message';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {Subscription, isObservable} from 'rxjs';\n\nimport {FieldActionDescriptor, FieldActionResult, FieldActionResultMessage, IFormEditorComponent} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-action',\n templateUrl: './formly-field-action.component.html',\n imports: [ButtonModule, RippleModule, TranslateModule, TooltipModule, JsonPipe, MessageModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldActionComponent<EditorModel> extends ACommonsFormlyFieldType<void, EditorModel, FieldActionDescriptor<EditorModel>> implements OnInit, OnDestroy {\n public buttonClass = 'p-button-primary';\n\n public actionMessage?: FieldActionResultMessage;\n\n private resultSubscription?: Subscription;\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n this.buttonClass = this.descriptor.button.styleClass.build();\n }\n\n ngOnDestroy() {\n this.resultSubscription?.unsubscribe();\n }\n\n onClick() {\n this.actionMessage = undefined;\n\n const result = this.descriptor.runFunction?.({\n descriptor: this.descriptor,\n formEditorComponent: this.props.formEditorComponent as IFormEditorComponent<EditorModel>,\n formly: {\n model: this.model,\n formControl: this.formControl as FormControl<void>,\n form: this.form as FormGroup<{[K in keyof EditorModel]: AbstractControl<EditorModel[K]>}>,\n formState: this.formState,\n options: this.options,\n props: this.props\n }\n });\n\n if (result) {\n if (isObservable(result)) {\n this.resultSubscription?.unsubscribe();\n this.resultSubscription = result.subscribe(res => this.processResult(res));\n } else {\n this.processResult(result);\n }\n }\n }\n\n private processResult(res: FieldActionResult) {\n if (res.message) {\n this.actionMessage = res.message;\n }\n }\n}\n","<div class=\"flex\">\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(descriptor.button.icon)\"\n [label]=\"$any(descriptor.button.label === null ? null : descriptor.button.label ?? props!.label) | translate\"\n [pTooltip]=\"$any(descriptor.button.tooltip) | translate\"\n [disabled]=\"formControl.disabled\"\n (click)=\"onClick()\"\n [class]=\"buttonClass + (actionMessage ? ' mr-2' : '')\"></button>\n @if (actionMessage) {\n <p-message [text]=\"actionMessage.content\" [severity]=\"actionMessage.severity ?? 'success'\"></p-message>\n }\n</div>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {AutocompleteComponent} from '@mediusinc/mng-commons/form';\nimport {FieldLookupDescriptor, FormFieldEventComponentSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-autocomplete',\n templateUrl: './formly-field-autocomplete.component.html',\n imports: [AutocompleteComponent, ReactiveFormsModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldAutocompleteComponent<T, ET> extends ACommonsFormlyFieldType<T, ET, FieldLookupDescriptor<T, ET>> implements OnInit, AfterViewInit, OnDestroy {\n public override ngOnInit() {\n super.ngOnInit();\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.formControl.valueChanges.pipe(startWith(this.formControl.value), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef)).subscribe(v => {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {\n value: v\n });\n\n this.props.onValueChange?.(this.field, v);\n });\n }\n\n public ngAfterViewInit() {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"$any(formControl)\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [className]=\"descriptor.inputClassName ?? 'mng-formly-field-autocomplete'\"\n [showClear]=\"!props.required\"\n [selectFirst]=\"descriptor.autocompleteSelectFirst ?? false\"\n [autoClear]=\"descriptor.autocompleteAutoClear ?? false\"\n [openOnFocus]=\"descriptor.autocompleteAutoClear ?? true\"\n [inlineSearch]=\"descriptor.autocompleteInlineSearch ?? false\">\n</mng-autocomplete>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {ComponentDirective} from '@mediusinc/mng-commons/core';\nimport {FieldInputDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-custom',\n template: ` <ng-container [mngComponent]=\"descriptor.customComponentType!\" [inputs]=\"inputs\"></ng-container> `,\n imports: [ComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldCustomComponent<ET> extends ACommonsFormlyFieldType<any, ET, FieldInputDescriptor<ET>> implements OnInit {\n public inputs: Record<string, any> = {};\n\n override ngOnInit() {\n super.ngOnInit();\n\n this.inputs = {\n field: this.field,\n model: this.model,\n form: this.form,\n options: this.options,\n key: this.key,\n formControl: this.formControl,\n props: this.props,\n showError: this.showError,\n id: this.id,\n formState: this.formState,\n ...this.descriptor.customComponentInputs\n };\n }\n}\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {DropdownComponent} from '@mediusinc/mng-commons/form';\nimport {FieldLookupDescriptor, FormFieldEventComponentSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-dropdown',\n templateUrl: './formly-field-dropdown.component.html',\n imports: [DropdownComponent, ReactiveFormsModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldDropdownComponent<T, ET> extends ACommonsFormlyFieldType<T, ET, FieldLookupDescriptor<T, ET>> implements OnInit, OnDestroy {\n public override ngOnInit() {\n super.ngOnInit();\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.formControl.valueChanges.pipe(startWith(this.formControl.value), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef)).subscribe(v => {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {\n value: v\n });\n\n this.props.onValueChange?.(this.field, v);\n });\n }\n\n ngOnDestroy(): void {\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-dropdown\n [id]=\"$any(key)\"\n [formControl]=\"$any(formControl)\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"descriptor.placeholder\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsLabelTranslate]=\"descriptor.optionsLabelTranslate\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [optionsDisabledProperty]=\"descriptor.optionsDisabledProperty\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [showClear]=\"!props.required\"\n [className]=\"descriptor.inputClassName ?? 'mng-formly-field-dropdown'\">\n</mng-dropdown>\n","import {CommonsInternalError, getI18nTypeGroupKey, getI18nTypePropertyKey, getI18nTypeTabKey} from '@mediusinc/mng-commons/core';\nimport {AFieldDescriptor, AFieldGroupDescriptor, AGenericFieldDescriptor, EditorDescriptorInst, FieldGroupTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nexport function getEditorFieldLabel(descriptor?: AGenericFieldDescriptor, editorDescriptor?: EditorDescriptorInst<any, any>) {\n if (descriptor instanceof AFieldDescriptor) {\n if (descriptor.label === null) {\n return null;\n } else if (!descriptor.label) {\n return getI18nTypePropertyKey(editorDescriptor?.model.i18nBaseKey ?? '', descriptor.property);\n } else {\n return descriptor.label;\n }\n } else if (descriptor instanceof AFieldGroupDescriptor) {\n if (descriptor.title === null) {\n return null;\n } else if (!descriptor.title) {\n switch (descriptor.type) {\n case FieldGroupTypeEnum.Tab:\n return getI18nTypeTabKey(editorDescriptor?.model.i18nBaseKey ?? '', descriptor.name);\n case FieldGroupTypeEnum.Fieldset:\n return getI18nTypeGroupKey(editorDescriptor?.model.i18nBaseKey ?? '', descriptor.name);\n case FieldGroupTypeEnum.Logical:\n return null;\n default:\n throw new CommonsInternalError(`Label not implemented for type ${descriptor.type}`);\n }\n } else {\n return descriptor.title;\n }\n } else {\n return null;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {AGenericFieldDescriptor, EditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getEditorFieldLabel} from '../../../helpers/editor-field';\n\n@Pipe({\n standalone: true,\n name: 'mngFormlyFieldLabel',\n pure: true\n})\nexport class FormlyFieldLabelPipe implements PipeTransform {\n transform(value?: AGenericFieldDescriptor, editorDescriptor?: EditorDescriptorInst<any, any>): string {\n return getEditorFieldLabel(value, editorDescriptor) ?? '';\n }\n}\n","import {ChangeDetectionStrategy, Component, OnInit, signal} from '@angular/core';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {FieldsetModule} from 'primeng/fieldset';\n\nimport {CommonsFormlyFieldConfig, FieldGroupDescriptor, FieldGroupTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-fieldset',\n templateUrl: './formly-field-fieldset.component.html',\n imports: [FieldsetModule, FormlyModule, TranslateModule, FormlyFieldLabelPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldFieldsetComponent<ET> extends ACommonsFormlyFieldType<ET, ET, FieldGroupDescriptor<ET>> implements OnInit {\n public readonly typeFieldset = FieldGroupTypeEnum.Fieldset;\n\n public fieldGroup = signal<{config: CommonsFormlyFieldConfig; type?: FieldGroupTypeEnum}[]>([]);\n\n override ngOnInit() {\n super.ngOnInit();\n\n this.fieldGroup.set(\n this.field.fieldGroup === undefined\n ? []\n : this.field.fieldGroup.map(f => ({\n type: ((f as CommonsFormlyFieldConfig).props.descriptor as FieldGroupDescriptor<any, any>)?.type,\n config: f as CommonsFormlyFieldConfig\n }))\n );\n }\n}\n","@for (group of fieldGroup(); track group) {\n @switch (group.type) {\n @case (typeFieldset) {\n <p-fieldset [legend]=\"group.config.props.descriptor | mngFormlyFieldLabel: group.config.props.editorDescriptor | translate\" [hidden]=\"group.config.props.hidden\">\n <formly-field [field]=\"group.config\"></formly-field>\n </p-fieldset>\n }\n @default {\n <formly-field [field]=\"group.config\"></formly-field>\n }\n }\n}\n","import {ChangeDetectionStrategy, Component, LOCALE_ID, OnDestroy, OnInit, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormArray, FormBuilder, FormControl, ReactiveFormsModule, ValidatorFn, Validators} from '@angular/forms';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {FileUploadModule} from 'primeng/fileupload';\nimport {TimesIcon} from 'primeng/icons/times';\nimport {ImageModule} from 'primeng/image';\nimport {InputMaskModule} from 'primeng/inputmask';\nimport {InputNumberModule} from 'primeng/inputnumber';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {InputTextareaModule} from 'primeng/inputtextarea';\nimport {RadioButtonModule} from 'primeng/radiobutton';\nimport {RippleModule} from 'primeng/ripple';\nimport {distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {ComponentDirective} from '@mediusinc/mng-commons/core';\nimport {InputTrimDirective} from '@mediusinc/mng-commons/form';\nimport {FieldInputDescriptor, FieldInputTypeEnum, FormFieldEventComponentSubtype, FormFieldEventTypeEnum, IFormEditorComponent} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getFormEditorWarningMessage} from '../../../../helpers/notification';\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-input',\n templateUrl: './formly-field-input.component.html',\n imports: [\n InputNumberModule,\n ReactiveFormsModule,\n FormlyModule,\n TranslateModule,\n InputSwitchModule,\n RadioButtonModule,\n InputMaskModule,\n FileUploadModule,\n ImageModule,\n InputTextareaModule,\n InputTextModule,\n RippleModule,\n TimesIcon,\n InputTrimDirective,\n ComponentDirective,\n InputTrimDirective,\n FormlyFieldLabelPipe\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldInputComponent<ET> extends ACommonsFormlyFieldType<any, ET, FieldInputDescriptor<ET>> implements OnInit, OnDestroy {\n public readonly NUMBER_MIN_SAFE = Number.MIN_SAFE_INTEGER;\n public readonly NUMBER_MAX_SAFE = Number.MAX_SAFE_INTEGER;\n public readonly DESC_INPUT_TYPE_IMAGE_FILE = FieldInputTypeEnum.ImageFile;\n\n public readonly applicationLocale = inject(LOCALE_ID);\n private readonly formBuilder = inject(FormBuilder);\n private readonly translateService = inject(TranslateService);\n\n public iFormControl!: FormControl;\n public numberFieldMode: 'decimal' | 'currency' = 'decimal';\n public currency?: string;\n\n private files: File[] = [];\n public imageFormArray: FormArray = this.formBuilder.array([]);\n\n public formEditorComponent?: IFormEditorComponent<ET, any>;\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.iFormControl = this.formControl as FormControl;\n\n this.props.fieldComponent = this;\n this.formEditorComponent = this.props.formEditorComponent;\n\n if (this.descriptor.fieldType === FieldInputTypeEnum.Currency) {\n this.numberFieldMode = 'currency';\n\n if (this.descriptor.currencyFromProperty) {\n this.iFormControl\n .get(this.descriptor.currencyFromProperty)!\n .valueChanges.pipe(takeUntilDestroyed(this.destroyRef), startWith(this.model[this.descriptor.currencyFromProperty]), distinctUntilChanged())\n .subscribe(c => {\n this.currency = c;\n });\n } else {\n this.currency = this.descriptor.currency ?? 'EUR';\n }\n }\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.formControl!.valueChanges.pipe(takeUntilDestroyed(this.destroyRef), startWith(this.formControl!.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {\n value: v\n });\n this.props.onValueChange?.(this.field, v);\n });\n\n if (this.props.type === 'imageUrl') {\n const startValue = this.iFormControl.value;\n if (this.descriptor.fileMultiple) {\n if (Array.isArray(startValue) && startValue.length > 0) {\n startValue.forEach(v => this.addImageUrl(v));\n } else if (typeof startValue === 'string' && startValue.length > 0) {\n this.addImageUrl(startValue);\n } else {\n this.addImageUrl();\n }\n } else {\n if (typeof startValue === 'string' && startValue.length > 0) {\n this.addImageUrl(startValue);\n } else {\n this.addImageUrl();\n }\n }\n\n this.imageFormArray!.valueChanges.pipe(takeUntilDestroyed(this.destroyRef), distinctUntilChanged()).subscribe(v => {\n const fcv = v.filter((i: unknown) => !!i && typeof i === 'string' && i.length > 0);\n this.iFormControl.setValue(fcv.length > 0 ? (this.descriptor.fileMultiple ? fcv : fcv[0]) : undefined);\n this.iFormControl.updateValueAndValidity();\n });\n }\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n public onFileSelect(event: any) {\n const files = event.files as File[];\n if (this.descriptor.fileMultiple) {\n this.files = [...this.files, ...files];\n } else {\n this.files = [...files];\n }\n this.updateFileFormControl();\n }\n\n public onFileRemove(event: any) {\n const file = event.file as File;\n this.files = this.files.filter(f => f !== file);\n this.updateFileFormControl();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onFileClear(event: Event) {\n this.files = [];\n this.updateFileFormControl();\n }\n\n public addImageUrl(value: string | null = null) {\n const validators: ValidatorFn[] = [];\n validators.push(Validators.pattern(/^(http|https):\\/\\/[^ \"]+$/));\n validators.push(Validators.minLength(1));\n this.imageFormArray.push(this.formBuilder.control(value, validators));\n }\n\n public removeImageUrlAt(idx: number) {\n this.imageFormArray.removeAt(idx);\n }\n\n public onImageUrlLoadError() {\n if (this.formEditorComponent) {\n const message = getFormEditorWarningMessage(this.translateService, 'general.error', 'mngEditor.imageLoadError');\n this.formEditorComponent.formMessages.set([...this.formEditorComponent.formMessages(), message]);\n }\n }\n\n private updateFileFormControl() {\n const value = this.files.length > 0 ? [...this.files] : null;\n this.iFormControl.setValue(value);\n if (typeof this.descriptor.fileOnSelectHandler === 'function') {\n this.descriptor.fileOnSelectHandler(value, this.iFormControl);\n }\n }\n\n public isUrlSvgImage(url: string) {\n return url.endsWith('.svg');\n }\n\n public isFileImageSvg(file: File) {\n return /^image\\/svg/.test(file.type);\n }\n\n public getFileDocumentTypeIcon(file: File) {\n if (/^video\\//.test(file.type)) {\n return 'pi-video';\n }\n if (/^audio\\//.test(file.type)) {\n return 'pi-volume-up';\n }\n switch (file.type) {\n case 'application/pdf':\n return 'pi-file-pdf';\n case 'application/msword':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n case 'application/vnd.oasis.opendocument.presentation':\n return 'pi-file-word';\n case 'application/vnd.oasis.opendocument.spreadsheet':\n case 'application/vnd.ms-excel':\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n return 'pi-file-excel';\n default:\n return 'pi-file';\n }\n }\n}\n","@switch (props.type) {\n @case ('number') {\n <p-inputNumber\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"descriptor.numberAutoCorrect ? descriptor.numberMin ?? NUMBER_MIN_SAFE : undefined\"\n [max]=\"descriptor.numberAutoCorrect ? descriptor.numberMax ?? NUMBER_MAX_SAFE : undefined\"\n [step]=\"$any(descriptor.numberStep)\"\n [useGrouping]=\"descriptor.numberUseGrouping\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-number'\"\n [locale]=\"descriptor.locale ?? applicationLocale\"\n [mode]=\"numberFieldMode\"\n [prefix]=\"descriptor.numberPrefix\"\n [suffix]=\"descriptor.numberSuffix\"\n [currency]=\"currency\"\n [currencyDisplay]=\"descriptor.currencyDisplay\">\n </p-inputNumber>\n }\n @case ('switch') {\n <div class=\"field flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName ?? ''\"\n >{{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n <p-inputSwitch\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-switch'\"></p-inputSwitch>\n @if (showError) {\n <small class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n </div>\n }\n @case ('radio') {\n @for (option of descriptor.radioOptions; track option) {\n <div [id]=\"key\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-radio'\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + (descriptor.labelClassName ?? '')\">{{ option.title | translate }}</label>\n </div>\n }\n }\n @case ('textarea') {\n <textarea\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pInputTextarea\n [class]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-textarea'\">\n </textarea>\n }\n @case ('mask') {\n <p-inputMask\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"descriptor.mask\"\n [placeholder]=\"descriptor.placeholder\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-input mng-formly-field-input-mask'\">\n </p-inputMask>\n }\n @case ('file') {\n <p-fileUpload\n #fileUploadInput\n [id]=\"$any(key)\"\n [disabled]=\"iFormControl.disabled\"\n [multiple]=\"descriptor.fileMultiple ?? false\"\n [accept]=\"descriptor.fileAccept ?? (descriptor.fieldType === DESC_INPUT_TYPE_IMAGE_FILE ? 'image/*' : undefined)\"\n [maxFileSize]=\"descriptor.fileMaxFileSize ?? 500000\"\n [showUploadButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear($event)\">\n <ng-template let-file let-idx=\"index\" pTemplate=\"file\">\n <div class=\"p-fileupload-row\">\n <div>\n @if (fileUploadInput.isImage(file)) {\n @if (descriptor.imagePreview) {\n @if (descriptor.imagePreviewComponent) {\n <ng-container\n [mngComponent]=\"descriptor.imagePreviewComponent\"\n [inputs]=\"{\n imageUrl: file.objectURL\n }\">\n </ng-container>\n } @else if (!isFileImageSvg(file) || descriptor.imagePreviewAllowSvg) {\n <img [src]=\"file.objectURL\" [width]=\"fileUploadInput.previewWidth\" (error)=\"fileUploadInput.imageError($event)\" />\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n }\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n }\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i [class]=\"'pi ' + getFileDocumentTypeIcon(file) + ' text-2xl'\"></i>\n </span>\n }\n </div>\n <div class=\"p-fileupload-filename\">{{ file.name }}</div>\n <div>{{ fileUploadInput.formatSize(file.size) }}</div>\n <div>\n <button\n type=\"button\"\n pButton\n (click)=\"fileUploadInput.remove($event, idx)\"\n [disabled]=\"fileUploadInput.uploading\"\n class=\"p-button-icon-only\"\n [class]=\"fileUploadInput.removeStyleClass\">\n @if (!fileUploadInput.cancelIconTemplate) {\n <TimesIcon />\n }\n </button>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"content\" let-files>\n @if (files.length === 0) {\n <div class=\"text-gray-300 dropdown-area\">\n <span><i class=\"pi pi-file-import mr-2\"></i>{{ 'fileUpload.dragAndDrop' | translate }}</span>\n </div>\n }\n </ng-template>\n </p-fileUpload>\n }\n @case ('imageUrl') {\n <div>\n @if (descriptor.imagePreview) {\n <div class=\"flex flex-wrap justify-content-start\">\n @for (image of imageFormArray.controls; track image; let idx = $index) {\n @if (imageFormArray.at(idx).valid && imageFormArray.at(idx).value) {\n @if (descriptor.imagePreviewComponent) {\n <ng-container\n [mngComponent]=\"descriptor.imagePreviewComponent\"\n [inputs]=\"{\n imageUrl: imageFormArray.at(idx).value\n }\">\n </ng-container>\n } @else if (!isUrlSvgImage(imageFormArray.at(idx).value) || descriptor.imagePreviewAllowSvg) {\n <p-image [src]=\"imageFormArray.at(idx).value\" [preview]=\"true\" (onImageError)=\"onImageUrlLoadError()\" styleClass=\"mng-image m-2\"></p-image>\n } @else {\n <span class=\"mng-image m-2 p-image-preview-container no-image\">\n <div class=\"p-image-preview-indicator\">\n <i class=\"p-image-preview-icon pi ban\"></i>\n </div>\n </span>\n }\n }\n }\n </div>\n }\n @if (!descriptor.imagePreview || descriptor.imageUrlInputVisibleOnDisabled || !iFormControl.disabled) {\n @for (imageCtrlName of imageFormArray.controls; track imageCtrlName; let idx = $index) {\n <div class=\"p-inputgroup\">\n <input\n pInputText\n [placeholder]=\"'mngEditor.imageUrlPlaceholder' | translate\"\n [id]=\"$any(key)\"\n type=\"text\"\n [formControl]=\"$any(imageFormArray.at(idx))\"\n [formlyAttributes]=\"field\" />\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <button type=\"button\" pButton pRipple icon=\"pi pi-minus\" (click)=\"removeImageUrlAt(idx)\"></button>\n }\n </div>\n }\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <button\n type=\"button\"\n pButton\n pRipple\n icon=\"pi pi-plus\"\n class=\"p-button-primary w-auto\"\n [label]=\"'mngEditor.imageUrlAdd' | translate\"\n (click)=\"addImageUrl()\"></button>\n }\n }\n </div>\n }\n @default {\n <input pInputText [id]=\"$any(key)\" [type]=\"props.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [mngInputTrim]=\"descriptor.trimOption\" />\n }\n}\n","import {ChangeDetectionStrategy, Component, HostBinding, OnInit} from '@angular/core';\n\nimport {FieldInputDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-label',\n templateUrl: './formly-field-label.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldLabelComponent extends ACommonsFormlyFieldType<any, any, FieldInputDescriptor<any>> implements OnInit {\n @HostBinding('class') public className = 'hidden';\n\n public override ngOnInit() {\n super.ngOnInit();\n\n this.formControl?.patchValue(this.descriptor.label);\n }\n}\n","","import {AsyncPipe} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewChild, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {DialogModule} from 'primeng/dialog';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {MessagesModule} from 'primeng/messages';\nimport {RippleModule} from 'primeng/ripple';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {CommonsInternalError, DataListParams, DataListResult, LoggerService, fromSubscribeError, getErrorLogLevel, toObservable} from '@mediusinc/mng-commons/core';\nimport {TableComponent} from '@mediusinc/mng-commons/table';\nimport {FieldLookupConfig, FieldLookupDescriptor, FormFieldEventComponentSubtype, FormFieldEventDialogSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {provideViewContainer} from '../../../../../action/services/providers/provide-view-container';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-lookup-dialog',\n templateUrl: 'formly-field-lookup-dialog.component.html',\n imports: [TranslateModule, FormlyModule, ReactiveFormsModule, ButtonModule, RippleModule, DialogModule, AsyncPipe, TableComponent, MessagesModule, InputTextModule],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldLookupDialogComponent<T, ET> extends ACommonsFormlyFieldType<T, ET, FieldLookupDescriptor<T, ET>> implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild(TableComponent) public table?: TableComponent;\n\n private readonly logger = inject(LoggerService).create('FormlyFieldLookupDialogComponent');\n\n public config!: FieldLookupConfig;\n public fieldLabelFormControl: FormControl = new FormControl();\n\n public addItems = signal<DataListResult<T>>({data: [], totalCount: 0});\n\n public dialogUseDataProvider = false;\n private dialogDataProviderService: any = null;\n\n public isDialogVisible = false;\n public dialogAreItemsLoaded = false;\n public dialogSelectedItem: any = null;\n public dialogMessages: Message[] = [];\n public dialogIsLoading = signal(false);\n\n private lookupDataProviderSubscription?: Subscription;\n\n constructor(private injector: Injector) {\n super();\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.config = this.descriptor.config as FieldLookupConfig;\n if (!this.descriptor.dialogTableDataProvider && this.descriptor.dataProvider?.serviceType) {\n this.dialogUseDataProvider = true;\n this.dialogDataProviderService = this.injector.get<any>(this.descriptor.dataProvider.serviceType);\n }\n\n // init values\n this.setFieldLabelValue(this.formControl!.value);\n this.formControl!.valueChanges.pipe(\n startWith(this.formControl!.value),\n distinctUntilChanged((prev, curr) => {\n const compareProp = this.descriptor.dialogTableDescriptor!.trackProperty ?? this.descriptor.dialogTableDescriptor!.model.idProperty;\n if (compareProp && typeof prev === 'object' && typeof curr === 'object') {\n return prev![compareProp as keyof object] === curr![compareProp as keyof object];\n } else {\n return prev === curr;\n }\n }),\n takeUntilDestroyed(this.destroyRef)\n ).subscribe(v => {\n this.setFieldLabelValue(v);\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {\n value: v\n });\n\n this.props.onValueChange?.(this.field, v);\n });\n }\n\n ngAfterViewInit() {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n ngOnDestroy(): void {\n this.lookupDataProviderSubscription?.unsubscribe();\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openSelectDialog() {\n if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {\n this.dialogIsLoading.set(true);\n\n const params: DataListParams<any, any> = {\n limit: 50,\n sort: this.descriptor\n .dialogTableDescriptor!.sorts.filter(s => s.defaultIsEnabled)\n .map(s => ({\n property: s.property,\n ascending: s.defaultIsAscending\n }))\n };\n\n this.lookupDataProviderSubscription = toObservable(this.descriptor.dataProvider?.lookup(params, this.dialogDataProviderService)).subscribe({\n next: res => {\n const dataList = {\n data: res ?? [],\n totalCount: res?.length ?? 0\n };\n this.addItems.set(dataList);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoading.set(false);\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DataProvider, this, {\n eventSubtype: 'LookupNext',\n queryResult: dataList\n });\n },\n error: err => {\n this.dialogIsLoading.set(false);\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DataProvider, this, {\n eventSubtype: 'LookupError',\n queryResult: err\n });\n\n const error = fromSubscribeError(err, 'FormlyFieldLookupDialogComponentError', {\n params: params\n });\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n }\n this.dialogSelectedItem = null;\n this.isDialogVisible = true;\n\n this.formControl.markAsTouched();\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: true\n });\n }\n\n onSelectionChange(item: any) {\n this.dialogSelectedItem = item;\n }\n\n onCaptionCmpInst(instance: any) {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, this, {\n eventSubtype: FormFieldEventDialogSubtype.TABLE_CAPTION_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n onColumnActionCmpInst(instance: any) {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, this, {\n eventSubtype: FormFieldEventDialogSubtype.TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n clear() {\n this.formControl.setValue(undefined as T);\n this.formControl.markAsTouched();\n this.formControl.markAsDirty();\n this.dialogSelectedItem = null;\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: false\n });\n }\n\n onAddItem() {\n this.formControl.setValue(this.dialogSelectedItem);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n this.dialogSelectedItem = null;\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n private setFieldLabelValue(value: T) {\n if (!value) {\n this.fieldLabelFormControl.setValue('');\n return;\n }\n if (typeof value === 'object') {\n const labelProperty = this.descriptor.optionsLabelProperty ?? this.descriptor.dialogTableDescriptor?.model.titleProperty;\n if (!labelProperty) {\n throw new CommonsInternalError('Could not determine label property.', {name: 'FormlyFieldLookupDialogError'});\n }\n this.fieldLabelFormControl.setValue(value[labelProperty as keyof object]);\n } else {\n this.fieldLabelFormControl.setValue(value);\n }\n }\n}\n","<div\n [class]=\"'p-inputgroup mng-dropdown-dialog' + (descriptor.inputClassName ?? 'mng-formly-field-lookup-dialog')\"\n [class.p-inputtext-sm]=\"descriptor.isSizeSmall\"\n [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n @if (!props.required && formControl.value && !formControl.disabled) {\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\"></i>\n }\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate: {item: ''}\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate: {item: props.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\" mngDialogKeydownHandler>\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [result]=\"addItems()\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading()\"\n [captionComponent]=\"config.table?.captionComponent\"\n [columnCustomLastComponent]=\"config.table?.columnActionComponent\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnCustomLastComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"onAddItem()\"\n [loading]=\"dialogIsLoading()\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n","import {AsyncPipe} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TableRowReorderEvent} from 'primeng/table';\nimport {BehaviorSubject, distinctUntilChanged, of, throwError} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\n\nimport {CommonsInternalError, CommonsService, StyleLevelEnum, StyleSizeEnum, TemplateDirective} from '@mediusinc/mng-commons/core';\nimport {ActionButtonDescriptor, ButtonStyleBuilder} from '@mediusinc/mng-commons/form/api';\nimport {\n ActionContextValidation,\n ActionDescriptorInst,\n ActionEditorDescriptor,\n ActionPositionEnum,\n FieldManyEditorActionEnum,\n FieldManyEditorDescriptor,\n FormFieldEventComponentSubtype,\n FormFieldEventTypeEnum,\n actionEditorCancel\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionComponent} from '../../../../../action/components/action/action.component';\nimport {ActionTableComponent} from '../../../../../action/components/table/action-table.component';\nimport {provideViewContainer} from '../../../../../action/services/providers/provide-view-container';\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-table-dialog-form-field',\n templateUrl: './formly-field-table-dialog-form.component.html',\n styleUrls: ['./formly-field-table-dialog-form.component.scss'],\n imports: [TranslateModule, ActionComponent, ActionTableComponent, TemplateDirective, AsyncPipe, FormlyFieldLabelPipe],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldTableDialogFormComponent<T = any, ET = any>\n extends ACommonsFormlyFieldType<T[], ET, FieldManyEditorDescriptor<T, ET>>\n implements OnInit, AfterViewInit, OnDestroy\n{\n private readonly injector = inject(Injector);\n\n public items = signal<T[]>([]);\n\n public actions: Array<ActionDescriptorInst<T>> = [];\n public toolbarRightActions: Array<ActionDescriptorInst<T>> = [];\n\n private isDisabledSubject = new BehaviorSubject<boolean>(false);\n private isEnabled$ = this.isDisabledSubject.asObservable().pipe(\n distinctUntilChanged(),\n map(e => !e)\n );\n\n public disableRowReorder = toSignal<boolean>(this.formStateDisabled$);\n\n public override ngOnInit() {\n super.ngOnInit();\n\n const hasViewAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.View);\n const hasAddAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Add);\n const hasEditAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Edit);\n const hasDeleteAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Delete);\n\n if (hasViewAction) {\n const viewAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.detailsEditor, 'details', {\n parentModel: this.editorDescriptor.model,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowClick)\n .withDialogSize(StyleSizeEnum.Small)\n .withFetchFunction(ctx => {\n this.formControl.markAsTouched();\n return of(ctx.parameters.item || ({} as T));\n });\n viewAction.withEditorActions([actionEditorCancel(viewAction)]);\n viewAction.button.withLabel(null);\n this.actions.push(viewAction);\n }\n\n if (hasAddAction) {\n const addAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.addEditor, 'add', {\n parentModel: this.editorDescriptor.model,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withDialogSize(StyleSizeEnum.Small)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(StyleSizeEnum.ExtraSmall)))\n .withFetchFunction(ctx => {\n setTimeout(this.formControl.markAsTouched, 0);\n return of(ctx.parameters.item || ({} as T));\n })\n .withSubmitFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(\n () => new CommonsInternalError(`No item was provided in context, add cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'})\n );\n }\n this.formState.submittedOn = Date.now();\n let value = this.formControl.value;\n value = [...value, ctx.parameters.item];\n this.formControl.patchValue(value);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n return of(ctx.parameters.item);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(() => this.formStateDisabled$.pipe(map(v => !v)))\n .withIsEnabledFunction(() => this.isEnabled$);\n addAction.button.withLabel(null).withIcon('pi pi-plus');\n this.actions.push(addAction);\n }\n if (hasEditAction) {\n const editAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.editEditor, 'edit', {\n parentModel: this.editorDescriptor.model,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowInline)\n .withDialogSize(StyleSizeEnum.Small)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(StyleSizeEnum.ExtraSmall)))\n .withFetchFunction(ctx => {\n this.formControl.markAsTouched();\n return of(ctx.parameters.item || ({} as T));\n })\n .withSubmitFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(\n () => new CommonsInternalError(`No item was provided in context, edit cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'})\n );\n }\n this.formState.submittedOn = Date.now();\n const formControlValue = [...this.formControl.value];\n formControlValue[ctx.parameters.actionData?.['itemIndex']] = ctx.parameters.item;\n this.formControl.patchValue(formControlValue);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n return of(ctx.parameters.item);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(ctx => (this.hideActionsForRowWithDefaultLocalization(ctx) ? of(false) : this.formStateDisabled$.pipe(map(v => !v))))\n .withIsEnabledFunction(() => this.isEnabled$);\n editAction.button.withLabel(null).withIcon('pi pi-pencil');\n this.actions.push(editAction);\n }\n if (hasDeleteAction) {\n const deleteAction = new ActionDescriptorInst('delete', {\n model: this.descriptor.tableviewDescriptor.model,\n parentModel: this.editorDescriptor.model,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowInline)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder(StyleLevelEnum.Danger).withSize(StyleSizeEnum.ExtraSmall)))\n .withRunFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(\n () => new CommonsInternalError(`No item was provided in context, delete cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'})\n );\n }\n let formControlValue = this.formControl.value;\n const compareProperty = this.descriptor.tableDescriptor.trackProperty\n ? this.descriptor.tableDescriptor.trackProperty\n : this.descriptor.tableDescriptor.model.idProperty;\n const ctxItem: any = ctx.parameters.item;\n if (compareProperty && ctxItem?.[compareProperty]) {\n formControlValue = formControlValue.filter((i: any) => i[compareProperty] !== ctxItem[compareProperty]);\n this.formControl.patchValue(formControlValue);\n this.formControl.markAsDirty();\n } else if (typeof ctx.parameters.actionData?.['itemIndex'] === 'number') {\n formControlValue.splice(ctx.parameters.actionData['itemIndex'], 1);\n this.formControl.patchValue([...formControlValue]);\n this.formControl.markAsDirty();\n } else {\n return throwError(\n () =>\n new CommonsInternalError('Cannot compare items, please provide main table data key property or model id property.', {\n name: 'FormlyFieldTableDialogFormComponentError'\n })\n );\n }\n\n this.formControl.markAsTouched();\n\n return of(ctxItem);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(ctx => (this.hideActionsForRowWithDefaultLocalization(ctx) ? of(false) : this.formStateDisabled$.pipe(map(v => !v))))\n .withIsEnabledFunction(() => this.isEnabled$);\n deleteAction.button.withLabel(null).withIcon('pi pi-trash');\n this.actions.push(deleteAction);\n }\n\n this.actions.push(...this.descriptor.actions);\n for (const action of this.actions) {\n switch (action.position) {\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.push(action);\n break;\n }\n }\n\n // init values\n if (typeof this.formControl.value === 'undefined' || this.formControl.value === null) {\n this.formControl.patchValue([]);\n }\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.formControl.valueChanges.pipe(startWith(this.formControl.value), takeUntilDestroyed(this.destroyRef)).subscribe(v => {\n this.items.set(v ?? []);\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {\n value: v\n });\n\n this.props.onValueChange?.(this.field, v);\n });\n\n this.isDisabledSubject.next(this.formControl.disabled);\n this.formControl.statusChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(status => {\n if (status === 'DISABLED' && !this.isDisabledSubject.value) {\n this.isDisabledSubject.next(true);\n } else if (status !== 'DISABLED' && this.isDisabledSubject.value) {\n this.isDisabledSubject.next(false);\n }\n });\n }\n\n public onRowReorder(event: TableRowReorderEvent): void {\n if (event.dragIndex === undefined || event.dropIndex === undefined) return;\n // update formControl\n const newValue = [...this.formControl.value];\n const draggedItem = newValue[event.dragIndex];\n newValue.splice(event.dragIndex, 1);\n newValue.splice(event.dropIndex, 0, draggedItem);\n this.formControl.setValue(newValue);\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.RowReorder, this, {dragIndex: event.dragIndex, dropIndex: event.dropIndex});\n }\n\n public ngAfterViewInit() {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n private hideActionsForRowWithDefaultLocalization(ctx: ActionContextValidation<T>) {\n if (this.descriptor.tableDescriptor.isLocalized) {\n if (ctx.parameters.item?.[this.descriptor.tableDescriptor.localizationLocaleProperty! as keyof object] === this.injector.get(CommonsService).getDefaultLocale()) {\n return true;\n }\n }\n return false;\n }\n}\n","<mng-action-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items()\" [actions]=\"actions\" [rowReorderEnabled]=\"!disableRowReorder()\" (rowReorder)=\"onRowReorder($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex justify-content-end align-items-center\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\"\n >{{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n <div>\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\"></mng-action>\n }\n </div>\n </div>\n </ng-template>\n</mng-action-table>\n","import {AsyncPipe, NgStyle} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewChild, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\nimport {DialogModule} from 'primeng/dialog';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {RippleModule} from 'primeng/ripple';\nimport {TableRowReorderEvent} from 'primeng/table';\nimport {Subject, Subscription, debounceTime, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {\n CommonsInternalError,\n DataListParams,\n DataListResult,\n FilterMatchMode,\n LoggerService,\n TemplateDirective,\n fromSubscribeError,\n getErrorLogLevel,\n getObjectPropertyByPath,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {TableComponent} from '@mediusinc/mng-commons/table';\nimport {\n FieldManyToManyEditorActionEnum,\n FieldManyToManyEditorDescriptor,\n FormFieldEventComponentSubtype,\n FormFieldEventDialogSubtype,\n FormFieldEventTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {provideViewContainer} from '../../../../../action/services/providers/provide-view-container';\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-table-multiselect-add-field',\n templateUrl: './formly-field-table-dialog-multiselect.component.html',\n styleUrls: ['./formly-field-table-dialog-multiselect.component.scss'],\n imports: [TranslateModule, AsyncPipe, TableComponent, DialogModule, ButtonModule, RippleModule, TemplateDirective, InputTextModule, NgStyle, FormlyFieldLabelPipe],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldTableDialogMultiselectComponent\n extends ACommonsFormlyFieldType<any, any, FieldManyToManyEditorDescriptor<any, any>>\n implements OnInit, AfterViewInit, OnDestroy\n{\n private readonly injector = inject(Injector);\n private readonly logger = inject(LoggerService).create('FormlyFieldTableDialogMultiselectComponent');\n\n public items = signal<any[]>([]);\n public addItems = signal<DataListResult>({data: [], totalCount: 0});\n\n private dialogDataProviderService: any = null;\n\n public isDialogVisible = false;\n public dialogAreItemsLoaded = false;\n public dialogSelectedAddItems: Array<any> = [];\n public dialogIsLoading = signal(false);\n\n public hasAddAction = false;\n public hasDeleteAction = false;\n\n private searchDebounceSubject = new Subject<string>();\n\n private lookupDataProviderSubscription?: Subscription;\n\n @ViewChild('addTableComponent') addTableComponent?: TableComponent;\n\n public disableRowReorder = toSignal<boolean>(this.formStateDisabled$);\n\n public override ngOnInit() {\n super.ngOnInit();\n\n if (this.descriptor.lookupTableDataProvider.serviceType) {\n this.dialogDataProviderService = this.injector.get<any>(this.descriptor.lookupTableDataProvider.serviceType);\n }\n this.hasAddAction = this.descriptor.actions.some(a => a === FieldManyToManyEditorActionEnum.Add);\n this.hasDeleteAction = this.descriptor.actions.some(a => a === FieldManyToManyEditorActionEnum.Delete);\n\n // init values\n if (typeof this.formControl.value === 'undefined' || this.formControl.value === null) {\n this.formControl.patchValue([]);\n }\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.formControl.valueChanges.pipe(startWith(this.formControl.value), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef)).subscribe(v => {\n this.items.set(v ?? []);\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {\n value: v ?? []\n });\n\n this.props.onValueChange?.(this.field, v);\n });\n\n this.searchDebounceSubject.pipe(debounceTime(200), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef)).subscribe(query => {\n this.addTableComponent?.primeTable().filterGlobal(query, 'contains');\n });\n }\n\n public ngAfterViewInit() {\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n this.lookupDataProviderSubscription?.unsubscribe();\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openAddDialog() {\n this.dialogSelectedAddItems = [];\n this.isDialogVisible = true;\n\n if (!this.dialogAreItemsLoaded) {\n // wrapped in request animation frame due to primeng bug: https://github.com/primefaces/primeng/issues/12980\n requestAnimationFrame(() => {\n this.dialogIsLoading.set(true);\n const params: DataListParams = {limit: 50, sort: []};\n if (this.descriptor.lookupTableDescriptor.sorts.some(s => s.defaultIsEnabled)) {\n this.descriptor.lookupTableDescriptor.sorts.forEach(s => {\n if (s.defaultIsEnabled) {\n params.sort?.push({\n property: s.property,\n ascending: s.defaultIsAscending\n });\n }\n });\n }\n if (this.descriptor.hasLookupExcludeValues && this.descriptor.lookupTableDataProvider.isLazy) {\n const filterValues = this.formControl.value.map((i: any) => getObjectPropertyByPath(i, this.descriptor.excludeValueProperty));\n params.filters = {\n [this.descriptor.excludeFilterProperty as keyof object]: {\n matchMode: FilterMatchMode.NotIn,\n value: filterValues\n }\n };\n }\n this.lookupDataProviderSubscription = toObservable(this.descriptor.lookupTableDataProvider?.getAll(params, this.dialogDataProviderService)).subscribe({\n next: res => {\n if (this.descriptor.hasLookupExcludeValues && !this.descriptor.lookupTableDataProvider.isLazy && res && Array.isArray(res.data) && res.data.length > 0) {\n const filterValues = this.formControl.value.map((i: any) => getObjectPropertyByPath(i, this.descriptor.excludeValueProperty));\n res.data = res.data.filter(i => filterValues.indexOf(i[this.descriptor.excludeFilterProperty]) < 0);\n res.totalCount = res.data.length;\n }\n\n this.addItems.set(res);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoading.set(false);\n },\n error: err => {\n this.dialogIsLoading.set(false);\n\n const error = fromSubscribeError(err, 'FormlyFieldTableDialogMultiselectComponent', {\n params: params\n });\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n });\n }\n\n this.formControl.markAsTouched();\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: true\n });\n }\n\n onSelectionChange(items: Array<any>) {\n this.dialogSelectedAddItems = items;\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: false\n });\n }\n\n onAddItems() {\n let value = this.formControl.value;\n if (!Array.isArray(value)) {\n value = [];\n }\n value = [...value, ...this.dialogSelectedAddItems];\n this.formControl.patchValue(value);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n this.dialogSelectedAddItems = [];\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n removeItem(item: any) {\n let value = this.formControl.value;\n if (!Array.isArray(value)) {\n value = [];\n }\n const compareProperty = this.descriptor.mainTableDescriptor.trackProperty\n ? this.descriptor.mainTableDescriptor.trackProperty\n : this.descriptor.mainTableDescriptor.model.idProperty;\n if (!compareProperty) {\n throw new CommonsInternalError('Cannot compare items, please provide main table data key property or model id property.', {\n name: 'FormlyFieldTableDialogMultiselectComponentError'\n });\n }\n value = value.filter((i: any) => getObjectPropertyByPath(i, compareProperty) !== getObjectPropertyByPath(item, compareProperty));\n this.formControl.patchValue(value);\n this.formControl.markAsTouched();\n this.formControl.markAsDirty();\n this.dialogAreItemsLoaded = false;\n }\n\n public onSearch(event: Event) {\n const query = (event.target as HTMLInputElement).value;\n this.searchDebounceSubject.next(query);\n }\n\n public onRowReorder(event: TableRowReorderEvent): void {\n if (event.dragIndex === undefined || event.dropIndex === undefined) return;\n // update formControl\n const newValue = [...this.formControl.value];\n const draggedItem = newValue[event.dragIndex];\n newValue.splice(event.dragIndex, 1);\n newValue.splice(event.dropIndex, 0, draggedItem);\n this.formControl.setValue(newValue);\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.RowReorder, this, {dragIndex: event.dragIndex, dropIndex: event.dropIndex});\n }\n}\n","<mng-table [descriptor]=\"descriptor.mainTableDescriptor\" [items]=\"items()\" [rowReorderEnabled]=\"!disableRowReorder()\" (rowReorder)=\"onRowReorder($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex justify-content-end align-items-center\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">\n {{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n <div>\n @if (hasAddAction && !options.formState?.disabled) {\n <button\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-plus\"\n class=\"p-button-rounded mng-button-xs\"\n (click)=\"openAddDialog()\"\n [disabled]=\"formControl!.disabled\"></button>\n }\n </div>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnCustomLast\" let-item=\"rowItem\">\n @if (hasDeleteAction && !options.formState?.disabled) {\n <button\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-trash\"\n class=\"p-button-rounded p-button-danger mng-button-xs\"\n (click)=\"removeItem(item)\"\n [disabled]=\"formControl!.disabled\"></button>\n }\n </ng-template>\n</mng-table>\n\n@if (hasAddAction) {\n <p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.addItem' | translate: {item: props.label! | translate}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-dialog-sm mng-formly-field-table-multiselect-dialog\">\n <ng-template pTemplate=\"content\" class=\"table-container\" mngDialogKeydownHandler>\n <div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1 formly-field-table-multiselect-dialog-form-container\">\n <div class=\"mng-formly-field-table-multiselect-dialog-table\">\n <mng-table\n #addTableComponent\n [descriptor]=\"descriptor.lookupTableDescriptor\"\n [result]=\"addItems()\"\n [selectionEnabled]=\"true\"\n [loading]=\"dialogIsLoading()\"\n (selectionChange)=\"onSelectionChange($event)\">\n </mng-table>\n </div>\n </div>\n <div class=\"flex flex-row justify-content-end mng-formly-field-table-multiselect-dialog-footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.add' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-primary\"\n (click)=\"onAddItems()\"\n [loading]=\"dialogIsLoading()\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"form.disabled\"></button>\n </div>\n </div>\n </ng-template>\n </p-dialog>\n}\n","import {ChangeDetectionStrategy, Component, OnInit, signal} from '@angular/core';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TabViewModule} from 'primeng/tabview';\n\nimport {CommonsFormlyFieldConfig, FieldTabGroupDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-tabs',\n templateUrl: './formly-field-tabs.component.html',\n imports: [TabViewModule, TranslateModule, FormlyModule, FormlyFieldLabelPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldTabsComponent extends ACommonsFormlyFieldType<any, any, FieldTabGroupDescriptor<any>> implements OnInit {\n public fieldGroup = signal<CommonsFormlyFieldConfig[]>([]);\n\n override ngOnInit() {\n super.ngOnInit();\n\n this.fieldGroup.set(this.field.fieldGroup === undefined ? [] : (this.field.fieldGroup as CommonsFormlyFieldConfig[]));\n }\n}\n","<p-tabView [scrollable]=\"true\">\n @for (tab of fieldGroup(); track tab) {\n <p-tabPanel\n [header]=\"tab.props.descriptor | mngFormlyFieldLabel: tab.props.editorDescriptor | translate\"\n [headerStyleClass]=\"(formControl!.valid ? 'p-tabview-title' : '') + (tab.props.hidden ? ' hidden' : '')\"\n [hidden]=\"tab.props.hidden\">\n <ng-template pTemplate=\"header\">\n <span class=\"p-tabview-title\" [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.key ?? '') + '_invalid']\">{{\n tab.props.descriptor | mngFormlyFieldLabel: tab.props.editorDescriptor | translate\n }}</span>\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n }\n</p-tabView>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {FieldWrapper, FormlyModule} from '@ngx-formly/core';\nimport {FormlyFieldConfig} from '@ngx-formly/core/lib/models/fieldconfig';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-no-label-wrapper',\n templateUrl: './formly-field-no-label-wrapper.component.html',\n imports: [FormlyModule, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldNoLabelWrapperComponent extends FieldWrapper {\n public shouldShowError() {\n if (this.field.type !== 'formly-group' || (this.field.validators && Object.keys(this.field.validators).length > 0)) {\n return true;\n }\n return false;\n }\n\n public sanitizeErrorsForGroups(field: FormlyFieldConfig) {\n if (field.type === 'formly-group' && field.formControl?.errors && field.validators) {\n const errors: {[key: string]: any} = {};\n for (const key of Object.keys(field.formControl.errors)) {\n if (Object.prototype.hasOwnProperty.call(field.validators, key)) {\n errors[key] = field.validators[key];\n }\n }\n\n return {...field, formControl: {...field.formControl, errors}} as FormlyFieldConfig;\n }\n\n return field;\n }\n}\n","<div [class]=\"props['descriptor']?.['fieldClassName'] ?? 'field table'\">\n <ng-container #fieldComponent></ng-container>\n @if (props['descriptor']?.['helpText']) {\n <small class=\"block\">{{ props['descriptor']?.['helpText'] | translate }}</small>\n }\n @if (showError && shouldShowError()) {\n <small class=\"block p-error\">\n <formly-validation-message [field]=\"sanitizeErrorsForGroups(field)\"></formly-validation-message>\n </small>\n }\n</div>\n","import {ChangeDetectionStrategy, Component, DestroyRef, OnInit, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {FieldWrapper, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Observable, isObservable} from 'rxjs';\n\nimport {CommonsInternalError} from '@mediusinc/mng-commons/core';\nimport {AFieldDescriptor, CommonsFormlyFieldConfig, EditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-wrapper',\n templateUrl: './formly-field-wrapper.component.html',\n imports: [TranslateModule, FormlyModule, FormlyFieldLabelPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldWrapperComponent extends FieldWrapper<CommonsFormlyFieldConfig> implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n\n public helpText = signal<string | undefined>(undefined);\n public fieldClassName = signal<string>('');\n\n public descriptor!: AFieldDescriptor<any, any, any, any>;\n public editorDescriptor!: EditorDescriptorInst<any, any>;\n\n public ngOnInit() {\n const descriptor = this.props?.descriptor as AFieldDescriptor<any, any, any, any> | undefined;\n const editorDescriptor = this.props?.editorDescriptor;\n\n if (!descriptor) {\n throw new CommonsInternalError('Descriptor is not defined.');\n }\n if (!editorDescriptor) {\n throw new CommonsInternalError('Editor descriptor is not defined.');\n }\n\n this.descriptor = descriptor;\n this.editorDescriptor = editorDescriptor;\n\n if (descriptor.isLocalized && isObservable(this.formState?.disabled$)) {\n (this.formState.disabled$ as Observable<boolean>).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(d => {\n if (d) {\n if (!this.model[this.descriptor.property + 'Translated'] && this.descriptor.property !== 'id') {\n this.helpText.set('mngEditor.localizations.missingTranslation');\n this.fieldClassName.set((this.field.className ?? '') + ' localized-input-border-orange');\n }\n } else {\n this.helpText.set(descriptor.helpText);\n this.fieldClassName.set(this.field.className ?? '');\n }\n });\n } else {\n this.helpText.set(descriptor.helpText);\n }\n }\n}\n","<div [class]=\"'field ' + fieldClassName()\">\n <div class=\"grid mt-0\">\n @if (descriptor.label !== null) {\n <label [for]=\"key\" class=\"col\" [class]=\"descriptor.labelClassName\"\n >{{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n }\n </div>\n <ng-container #fieldComponent></ng-container>\n @if (helpText(); as ht) {\n <small class=\"block\">{{ ht | translate }}</small>\n }\n @if (showError) {\n <small class=\"p-error block\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n</div>\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {CalendarModule} from 'primeng/calendar';\nimport {filter, isObservable} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {COMMONS_MODULE_CONFIG_IT, dateToIsoString} from '@mediusinc/mng-commons/core';\nimport {FieldInputDescriptor, FormFieldEventComponentSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-datepicker',\n templateUrl: './formly-field-datepicker.component.html',\n imports: [ReactiveFormsModule, FormlyModule, CalendarModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldDatepickerComponent<ET> extends ACommonsFormlyFieldType<any, ET, FieldInputDescriptor<ET>> implements OnInit, OnDestroy {\n public dpFormControl = new FormControl();\n public styleClass = signal('');\n private readonly moduleConfig = inject(COMMONS_MODULE_CONFIG_IT, {optional: true});\n\n private dateTimeInUtc = this.moduleConfig?.serialization?.dateTimeInUtc ?? false;\n private dateTimeWithTimezone = this.moduleConfig?.serialization?.dateTimeWithTimezone ?? true;\n private dateTimeWithMillis = this.moduleConfig?.serialization?.dateTimeWithMillis ?? true;\n\n public minDate = signal<Date | undefined>(undefined);\n public maxDate = signal<Date | undefined>(undefined);\n\n public override ngOnInit() {\n super.ngOnInit();\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n // init status changes\n this.formControl.statusChanges.pipe(takeUntilDestroyed(this.destroyRef), startWith(this.formControl.status)).subscribe(status => {\n if (status === 'INVALID') {\n this.styleClass.set('ng-invalid');\n } else {\n this.styleClass.set('ng-valid');\n }\n\n if (status === 'DISABLED' && this.dpFormControl.enabled) {\n this.dpFormControl.disable({emitEvent: false});\n } else if (status !== 'DISABLED' && this.dpFormControl.disabled) {\n this.dpFormControl.enable({emitEvent: false});\n }\n });\n\n // init values from form to datepicker\n if (typeof this.formControl?.value === 'string' || typeof this.formControl?.value === 'number') {\n this.dpFormControl.setValue(new Date(this.formControl.value));\n this.dpFormControl.markAsPristine(); // mark as pristine only on component initialization\n }\n this.formControl.valueChanges\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter(formValue => !this.areDateValuesEqual(formValue, this.dpFormControl.value))\n )\n .subscribe(v => {\n this.dpFormControl.setValue(new Date(v), {emitEvent: false}); // do not emit event, because it can trigger infinite loop\n });\n\n // listen for changes from datepicker to form\n this.dpFormControl.valueChanges\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter(value => !this.areDateValuesEqual(value, this.formControl.value))\n )\n .subscribe(v => {\n v = this.convertDateValue(v);\n (this.formControl as FormControl).setValue(v);\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, this, {\n value: v\n });\n\n this.props.onValueChange?.(this.field, v);\n });\n\n this.initializeMinMaxValidators();\n }\n\n onBlur() {\n this.formControl.markAsTouched();\n }\n\n private initializeMinMaxValidators() {\n if (this.descriptor.datePickerMin instanceof Date || !this.descriptor.datePickerMin) {\n this.minDate.set(this.descriptor.datePickerMin);\n } else {\n const itemOrObservable = this.descriptor.datePickerMin(this.formControl, this.field);\n if (isObservable(itemOrObservable)) {\n itemOrObservable.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(value => {\n if (value?.getTime() !== this.minDate()?.getTime()) {\n this.minDate.set(value);\n this.props.minDate = value;\n\n this.formControl.updateValueAndValidity();\n }\n });\n } else {\n this.minDate.set(itemOrObservable);\n }\n }\n\n if (this.descriptor.datePickerMax instanceof Date || !this.descriptor.datePickerMax) {\n this.maxDate.set(this.descriptor.datePickerMax);\n } else {\n const itemOrObservable = this.descriptor.datePickerMax(this.formControl, this.field);\n if (isObservable(itemOrObservable)) {\n itemOrObservable.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(value => {\n if (value?.getTime() !== this.maxDate()?.getTime()) {\n this.maxDate.set(value);\n this.props.maxDate = value;\n\n this.formControl.updateValueAndValidity();\n }\n });\n } else {\n this.maxDate.set(itemOrObservable);\n }\n }\n }\n\n private convertDateValue(value: Date | string | number | null | undefined) {\n const convertDateType = this.descriptor.datePickerValueNoTime || !this.descriptor.datePickerShowTime ? 'date' : 'date-time';\n const convertDateTimeOpts = {\n utc: this.descriptor.datePickerValueUtc ?? this.dateTimeInUtc,\n noMillis: !this.dateTimeWithMillis,\n noTimezone: this.descriptor.datePickerValueNoTimezone ?? !this.dateTimeWithTimezone\n };\n\n let dateValue: Date | null | undefined;\n\n if (typeof value === 'string' || typeof value === 'number') {\n dateValue = new Date(value);\n } else {\n dateValue = value;\n }\n\n if (dateValue !== null && dateValue !== undefined) {\n if (this.descriptor.datePickerShowTime) {\n if (this.descriptor.datePickerShowSeconds) {\n dateValue.setMilliseconds(0);\n } else {\n dateValue.setSeconds(0, 0);\n }\n } else {\n dateValue.setHours(0, 0, 0, 0);\n }\n }\n\n if (!this.descriptor.datePickerValueAsDateObj) {\n return dateToIsoString(dateValue, convertDateType, convertDateTimeOpts);\n }\n\n return dateValue;\n }\n\n private areDateValuesEqual(val1: Date | string | number | null | undefined, val2: Date | string | number | null | undefined): boolean {\n const date1 = this.convertDateValue(val1);\n const date2 = this.convertDateValue(val2);\n return (date1 instanceof Date && date2 instanceof Date && date1.toISOString() === date2.toISOString()) || date1 === date2;\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<p-calendar\n appendTo=\"body\"\n [class]=\"styleClass()\"\n [formControl]=\"dpFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(minDate())\"\n [maxDate]=\"$any(maxDate())\"\n [showTime]=\"descriptor.datePickerShowTime ?? false\"\n [showSeconds]=\"descriptor.datePickerShowSeconds ?? false\"\n showIcon=\"true\"\n showButtonBar=\"true\"\n [showClear]=\"!props.required\"\n styleClass=\"mng-formly-field-datepicker\"\n [inputStyleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-datepicker-input'\"\n [firstDayOfWeek]=\"1\"\n (onBlur)=\"onBlur()\">\n</p-calendar>\n","import {DatePipe} from '@angular/common';\n\nimport {WrapperOption} from '@ngx-formly/core/lib/models/config';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\n\nimport {CommonsFormlyFieldConfig, FieldInputDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormlyFieldActionComponent} from '../components/formly/fields/formly-field-action/formly-field-action.component';\nimport {FormlyFieldAutocompleteComponent} from '../components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component';\nimport {FormlyFieldCustomComponent} from '../components/formly/fields/formly-field-custom/formly-field-custom.component';\nimport {FormlyFieldDatepickerComponent} from '../components/formly/fields/formly-field-datepicker/formly-field-datepicker.component';\nimport {FormlyFieldDropdownComponent} from '../components/formly/fields/formly-field-dropdown/formly-field-dropdown.component';\nimport {FormlyFieldFieldsetComponent} from '../components/formly/fields/formly-field-fieldset/formly-field-fieldset.component';\nimport {FormlyFieldInputComponent} from '../components/formly/fields/formly-field-input/formly-field-input.component';\nimport {FormlyFieldLabelComponent} from '../components/formly/fields/formly-field-label/formly-field-label.component';\nimport {FormlyFieldLookupDialogComponent} from '../components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component';\nimport {FormlyFieldTableDialogFormComponent} from '../components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component';\nimport {FormlyFieldTableDialogMultiselectComponent} from '../components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component';\nimport {FormlyFieldTabsComponent} from '../components/formly/fields/formly-field-tabs/formly-field-tabs.component';\nimport {FormlyFieldNoLabelWrapperComponent} from '../components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component';\nimport {FormlyFieldWrapperComponent} from '../components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component';\nimport {CommonsFormlyTypeConfig} from '../models/formly-config.model';\nimport {getEditorFieldLabel} from './editor-field';\n\nexport const formlyWrappersConfig: WrapperOption[] = [\n {name: 'field', component: FormlyFieldWrapperComponent},\n {name: 'field-no-label', component: FormlyFieldNoLabelWrapperComponent}\n];\n\nexport const formlyTypesConfig: CommonsFormlyTypeConfig[] = [\n {\n name: 'label',\n component: FormlyFieldLabelComponent,\n wrappers: ['field']\n },\n {\n name: 'input',\n component: FormlyFieldInputComponent,\n wrappers: ['field']\n },\n {name: 'string', extends: 'input'},\n {\n name: 'number',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'currency',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'integer',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'textarea',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'textarea'\n }\n }\n },\n {\n name: 'switch',\n component: FormlyFieldInputComponent,\n defaultOptions: {\n props: {\n type: 'switch'\n }\n }\n },\n {\n name: 'radio',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'radio'\n }\n }\n },\n {\n name: 'datepicker',\n component: FormlyFieldDatepickerComponent,\n defaultOptions: {\n props: {\n type: 'datepicker'\n }\n },\n wrappers: ['field']\n },\n {\n name: 'mask',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'mask'\n }\n }\n },\n {\n name: 'file',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'file'\n }\n }\n },\n {\n name: 'imageUrl',\n component: FormlyFieldInputComponent,\n defaultOptions: {\n props: {\n type: 'imageUrl'\n }\n },\n wrappers: ['field']\n },\n {\n name: 'dropdown',\n component: FormlyFieldDropdownComponent,\n wrappers: ['field']\n },\n {name: 'enum', extends: 'dropdown'},\n {\n name: 'autocomplete',\n component: FormlyFieldAutocompleteComponent,\n wrappers: ['field']\n },\n {\n name: 'action',\n component: FormlyFieldActionComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'dialog',\n component: FormlyFieldLookupDialogComponent,\n wrappers: ['field']\n },\n {\n name: 'table-dialog-multiselect',\n component: FormlyFieldTableDialogMultiselectComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'table-dialog-form',\n component: FormlyFieldTableDialogFormComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'tabs',\n component: FormlyFieldTabsComponent,\n wrappers: []\n },\n {\n name: 'fieldset',\n component: FormlyFieldFieldsetComponent,\n wrappers: []\n },\n {\n name: 'formly-group',\n wrappers: ['field-no-label']\n },\n {\n name: 'custom',\n component: FormlyFieldCustomComponent,\n wrappers: []\n }\n];\n\nexport function getRequiredValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.required', {field: fieldName});\n };\n}\n\nexport function getMinLengthValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.minLength', {field: fieldName, minLength: field.props.minLength});\n };\n}\n\nexport function getMaxLengthValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.maxLength', {field: fieldName, maxLength: field.props.maxLength});\n };\n}\n\nexport function getMinValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.min', {field: fieldName, min: field.props.min});\n };\n}\n\nexport function getMaxValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.max', {field: fieldName, max: field.props.max});\n };\n}\n\nexport function getTextPatternValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.pattern', {field: fieldName, pattern: field.props.pattern});\n };\n}\n\nexport function getEmailValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.email', {field: fieldName});\n };\n}\n\nexport function getMinDateValidationMessage(translate: TranslateService, datePipe: DatePipe): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const inputDescriptor = field.props.descriptor as FieldInputDescriptor<any>;\n const minDate = field.props.minDate ?? inputDescriptor.datePickerMin;\n\n if (!minDate || !(minDate instanceof Date)) {\n return '';\n }\n let dateString = datePipe.transform(minDate, 'dd. MM. yyyy') ?? '';\n\n if (inputDescriptor.datePickerShowTime) {\n dateString += datePipe.transform(minDate, ' HH:mm:ss');\n }\n\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.minDate', {field: fieldName, min: dateString});\n };\n}\n\nexport function getMaxDateValidationMessage(translate: TranslateService, datePipe: DatePipe): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const inputDescriptor = field.props.descriptor as FieldInputDescriptor<any>;\n const maxDate = field.props.maxDate ?? inputDescriptor.datePickerMax;\n\n if (!maxDate || !(maxDate instanceof Date)) {\n return '';\n }\n let dateString = datePipe.transform(maxDate, 'dd. MM. yyyy') ?? '';\n\n if (inputDescriptor.datePickerShowTime) {\n dateString += datePipe.transform(maxDate, ' HH:mm:ss');\n }\n\n const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);\n return translate.instant('mngEditor.validation.maxDate', {field: fieldName, max: dateString});\n };\n}\n\nexport const getFormlyValidationMessages = (translate: TranslateService, datePipe: DatePipe): any[] => {\n return [\n {name: 'required', message: getRequiredValidationMessage(translate)},\n {name: 'minLength', message: getMinLengthValidationMessage(translate)},\n {name: 'maxLength', message: getMaxLengthValidationMessage(translate)},\n {name: 'min', message: getMinValidationMessage(translate)},\n {name: 'max', message: getMaxValidationMessage(translate)},\n {name: 'pattern', message: getTextPatternValidationMessage(translate)},\n {name: 'email', message: getEmailValidationMessage(translate)},\n {name: 'minDate', message: getMinDateValidationMessage(translate, datePipe)},\n {name: 'maxDate', message: getMaxDateValidationMessage(translate, datePipe)}\n ];\n};\n","import {DatePipe} from '@angular/common';\n\nimport {ConfigOption} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {TableviewFeatureConfig} from '../../tableview/services/tableview-feature-config.token';\nimport {formlyTypesConfig, formlyWrappersConfig, getFormlyValidationMessages} from '../helpers/formly-config';\n\nexport function commonsFormlyConfigProvider(translate: TranslateService, datePipe: DatePipe, config: TableviewFeatureConfig = {}): ConfigOption {\n const merge = config.formly?.merge ?? true;\n\n let types = formlyTypesConfig;\n if (config.formly?.types) {\n if (!merge) {\n types = [];\n }\n types = [...types, ...config.formly.types];\n }\n\n let wrappers = formlyWrappersConfig;\n if (config.formly?.wrappers) {\n if (!merge) {\n wrappers = [];\n }\n wrappers = [...wrappers, ...config.formly.wrappers];\n }\n\n let validationMessages = getFormlyValidationMessages(translate, datePipe);\n if (typeof config.formly?.getValidationMessages === 'function') {\n if (!merge) {\n validationMessages = [];\n }\n validationMessages = [...validationMessages, ...config.formly.getValidationMessages(translate)];\n }\n\n return {\n types: types,\n wrappers: wrappers,\n validationMessages: validationMessages\n };\n}\n","import {NgTemplateOutlet} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnInit, Signal, TemplateRef, computed, contentChildren, inject, input, signal} from '@angular/core';\nimport {RouterOutlet} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {SharedModule} from 'primeng/api';\nimport {ToolbarModule} from 'primeng/toolbar';\n\nimport {DataListParams, TemplateDirective, findTemplateByName} from '@mediusinc/mng-commons/core';\nimport {TableLoadEvent} from '@mediusinc/mng-commons/table/api';\nimport {ActionDescriptorInst, ActionPositionEnum, ITableviewDataProvider, TableviewActionDefaultCategories, TableviewDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionComponent} from '../../../action/components/action/action.component';\nimport {ActionTableComponent} from '../../../action/components/table/action-table.component';\nimport {provideViewContainer} from '../../../action/services/providers/provide-view-container';\nimport {ViewContainer} from '../../../action/services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-tableview',\n templateUrl: './tableview.component.html',\n imports: [ToolbarModule, SharedModule, TranslateModule, NgTemplateOutlet, ActionComponent, ActionTableComponent, TemplateDirective, RouterOutlet],\n providers: [provideViewContainer()],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableviewComponent<Item = any, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> implements OnInit {\n public readonly viewContainer = inject(ViewContainer, {optional: true});\n\n public descriptor = input.required<TableviewDescriptorInst<Item, Sorts, Filters>>();\n public dataProvider = input<ITableviewDataProvider<Item, Service, Sorts, Filters>>();\n public actions = input<Array<ActionDescriptorInst<any>>>([]);\n\n public toolbarLeftActions = computed<ActionDescriptorInst<Item>[]>(() => this.filterActionsByPositions(this.actions(), [ActionPositionEnum.ToolbarLeft]));\n public toolbarRightActions = computed<ActionDescriptorInst<Item>[]>(() => this.filterActionsByPositions(this.actions(), [ActionPositionEnum.ToolbarRight]).reverse());\n public tableActions = computed<ActionDescriptorInst<Item>[]>(() =>\n this.filterActionsByPositions(this.actions(), [ActionPositionEnum.TableHeader, ActionPositionEnum.RowInline, ActionPositionEnum.RowClick])\n );\n\n public tableParams = signal<DataListParams | undefined>(undefined);\n\n public hasItemSelectionAction = computed(() => [...this.toolbarLeftActions(), ...this.toolbarRightActions()].some(e => e.hasItemsSelection));\n public selectedItems = signal<Item[]>([]);\n\n public templates = contentChildren(TemplateDirective);\n public footerTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'footer'));\n public rowExpandTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'rowExpandContent'));\n\n ngOnInit() {\n if (this.viewContainer) {\n this.viewContainer.actions.set(this.actions());\n }\n\n const dataProvider = this.dataProvider();\n if (this.viewContainer && dataProvider) {\n this.viewContainer.dataProvider.set(dataProvider);\n }\n }\n\n public onTableLoad(event: TableLoadEvent) {\n this.tableParams.set(event.params);\n }\n\n public selectionChange(selectedItems: Array<Item>): void {\n this.selectedItems.set(selectedItems);\n }\n\n private filterActionsByPositions(actions: ActionDescriptorInst<Item>[], actionPositions: ActionPositionEnum[]): ActionDescriptorInst<Item>[] {\n return actions.filter(action => (action.positionTableviewCategories?.includes(TableviewActionDefaultCategories.READ) ?? true) && actionPositions.includes(action.position));\n }\n}\n","<div class=\"mng-tableview\">\n <div class=\"card\">\n @if (toolbarLeftActions().length > 0 || toolbarRightActions().length > 0) {\n <p-toolbar styleClass=\"mb-4\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions(); track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams()\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems()\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions(); track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams()\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems()\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n }\n\n <mng-action-table\n [descriptor]=\"descriptor().table\"\n [dataProvider]=\"dataProvider()\"\n [useQueryParams]=\"true\"\n [actions]=\"tableActions()\"\n [selectionEnabled]=\"hasItemSelectionAction()\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\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\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-action-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n","import {ChangeDetectionStrategy, Component, input} from '@angular/core';\n\nimport {TableviewInput} from '@mediusinc/mng-commons/tableview/api';\n\nimport {TableviewComponent} from '../tableview/tableview.component';\n\n@Component({\n standalone: true,\n selector: 'mng-tableview-route',\n imports: [TableviewComponent],\n templateUrl: './tableview-route.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableviewRouteComponent<Item, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> {\n public tableview = input.required<TableviewInput<Item, Service, Sorts, Filters>>();\n}\n","<mng-tableview [descriptor]=\"tableview().descriptor\" [dataProvider]=\"tableview().dataProvider\" [actions]=\"tableview().actions\"> </mng-tableview>\n","import {Type} from '@angular/core';\nimport {DefaultExport, Route} from '@angular/router';\n\nimport {Observable} from 'rxjs';\n\nimport {APermissions, CommonsRouteData, RouteBuilder, createLazyRoute} from '@mediusinc/mng-commons/core';\nimport {ActionDescriptorInst, ITableviewDataProvider, TableviewActionDefaultCategories, TableviewDescriptorInst, TableviewRouteData} from '@mediusinc/mng-commons/tableview/api';\n\nimport {unsavedChangesGuard} from '../../action/guards/unsaved-changes.guard';\n\nexport class TableviewRouteBuilder extends RouteBuilder {\n private readonly descriptor?: TableviewDescriptorInst<any>;\n private readonly dataProvider?: ITableviewDataProvider;\n private readonly actions?: Array<ActionDescriptorInst<any>>;\n private readonly isFromComponent: boolean = true;\n\n protected override routeData: TableviewRouteData = {breadcrumb: null};\n private hasDetails = true;\n private detailsPath = ':itemId';\n private hasEdit = true;\n private editPath = ':itemId/edit';\n private hasAdd = true;\n private addPath = 'add';\n private hasDelete = true;\n\n private tableviewPermissions?: {\n [key: string]: APermissions;\n };\n\n public constructor(\n private path: string,\n component?: Type<any>,\n loadComponent?: () => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>\n ) {\n super({path: path, component, loadComponent});\n }\n\n public withReadOnly(permissions?: APermissions): this {\n if (permissions) {\n this.withPermissions(permissions);\n }\n this.withAdd(false);\n this.withEdit(false);\n this.withDelete(false);\n return this;\n }\n\n public withDetails(hasDetails = true, permissions?: APermissions, path?: string): this {\n this.hasDetails = hasDetails;\n if (permissions) {\n this.withPermissions(undefined, undefined, undefined, undefined, permissions);\n }\n if (path) {\n this.detailsPath = path;\n }\n return this;\n }\n\n public withAdd(hasAdd = true, permissions?: APermissions, path?: string): this {\n this.hasAdd = hasAdd;\n if (permissions) {\n this.withPermissions(undefined, permissions);\n }\n if (path) {\n this.addPath = path;\n }\n return this;\n }\n\n public withEdit(hasEdit = true, permissions?: APermissions, path?: string): this {\n this.hasEdit = hasEdit;\n if (permissions) {\n this.withPermissions(undefined, undefined, permissions);\n }\n if (path) {\n this.editPath = path;\n }\n return this;\n }\n\n public withDelete(hasDelete = true, permissions?: APermissions): this {\n this.hasDelete = hasDelete;\n if (permissions) {\n this.withPermissions(undefined, undefined, undefined, permissions);\n }\n return this;\n }\n\n public override withPermissions(read?: APermissions, add?: APermissions, edit?: APermissions, delet?: APermissions, details?: APermissions): this {\n if (!this.tableviewPermissions) {\n this.tableviewPermissions = {};\n }\n if (read) {\n this.tableviewPermissions[TableviewActionDefaultCategories.READ] = read;\n }\n if (add) {\n this.tableviewPermissions[TableviewActionDefaultCategories.ADD] = add;\n }\n if (edit) {\n this.tableviewPermissions[TableviewActionDefaultCategories.EDIT] = edit;\n }\n if (delet) {\n this.tableviewPermissions[TableviewActionDefaultCategories.DELETE] = delet;\n }\n if (details) {\n this.tableviewPermissions[TableviewActionDefaultCategories.DETAILS] = details;\n }\n return this;\n }\n\n public withPermissionByCategory(key: string, permissions: APermissions): this {\n if (!this.tableviewPermissions) {\n this.tableviewPermissions = {};\n }\n this.tableviewPermissions[key] = permissions;\n return this;\n }\n\n public withPermissionsObject(permissions: {[key: string]: APermissions}): this {\n this.tableviewPermissions = permissions;\n return this;\n }\n\n public override build(): Route {\n if (!this.isFromComponent) {\n this.routeData.tableview = {\n descriptor: this.descriptor!,\n dataProvider: this.dataProvider!\n };\n if (this.actions) {\n this.routeData.tableview.actions = this.actions;\n }\n }\n if (this.tableviewPermissions) {\n this.routeData.tableviewPermissions = {...this.tableviewPermissions};\n }\n this.routeData.tableviewActions = {\n hasAdd: this.hasAdd,\n hasEdit: this.hasEdit,\n hasDetails: this.hasDetails,\n hasDelete: this.hasDelete\n };\n this.withData(this.routeData);\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.READ]) {\n this.routeData.permissions = this.tableviewPermissions[TableviewActionDefaultCategories.READ];\n }\n\n // copy route data for children, reset breadcrumbs menu items and permission\n const childrenRouteData: CommonsRouteData = {\n ...this.routeData,\n breadcrumb: null\n };\n\n const loadActionRoute = () => import('../../action/components/route/action-route.component');\n\n // list route\n const rootChildRouteBuilder = createLazyRoute('', loadActionRoute);\n rootChildRouteBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.READ]) {\n rootChildRouteBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.READ]);\n }\n this.addChildBuilder(rootChildRouteBuilder);\n\n // add route\n if (this.hasAdd) {\n const routeBuilder = createLazyRoute(this.addPath, loadActionRoute);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.ADD]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.ADD]);\n }\n this.addChildBuilder(routeBuilder);\n routeBuilder.withCanDeactivate(unsavedChangesGuard);\n }\n if (this.hasDetails) {\n const routeBuilder = createLazyRoute(this.detailsPath, loadActionRoute);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.DETAILS]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.DETAILS]);\n }\n this.addChildBuilder(routeBuilder);\n }\n if (this.hasEdit) {\n const routeBuilder = createLazyRoute(this.editPath, loadActionRoute);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.EDIT]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.EDIT]);\n }\n this.addChildBuilder(routeBuilder);\n routeBuilder.withCanDeactivate(unsavedChangesGuard);\n }\n\n return super.build();\n }\n\n protected override findMenuItemPermissions() {\n const menuItemPermission = super.findMenuItemPermissions();\n if (!menuItemPermission) {\n return this.tableviewPermissions?.[TableviewActionDefaultCategories.READ];\n }\n return menuItemPermission;\n }\n}\n\nexport function createTableviewRoute(path: string, component: Type<any>): TableviewRouteBuilder {\n return new TableviewRouteBuilder(path, component);\n}\n\nexport function createTableviewLazyRoute(\n path: string,\n loadComponent: () => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>\n): TableviewRouteBuilder {\n return new TableviewRouteBuilder(path, undefined, loadComponent);\n}\n","import {DatePipe} from '@angular/common';\n\nimport {FORMLY_CONFIG} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {CommonsFeature, CommonsFeatureTypeEnum} from '@mediusinc/mng-commons/core';\nimport {DATA_LANGUAGE_DROPDOWN_COMPONENT_IT, DataProviderExecutor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionEditorComponent} from './action/components/editor/action-editor.component';\nimport {DataLanguageDropdownComponent} from './action/components/localization/data-language-dropdown.component';\nimport {ActionErrorMapperService, DefaultActionErrorMapperService} from './action/services/action-error-mapper.service';\nimport {ActionExecutorService} from './action/services/action-executor.service';\nimport {DefaultDataProviderExecutor} from './action/services/data-provider-executor.service';\nimport {NavigationService} from './action/services/navigation.service';\nimport {RootActionExecutorService} from './action/services/root-action-executor.service';\nimport {ACTION_EDITOR_COMPONENT_IT} from './action/services/tokens/action-editor.token';\nimport {commonsFormlyConfigProvider} from './editor/services/formly-config.provider';\nimport {COMMONS_TABLEVIEW_FEATURE_CONFIG_IT, TableviewFeatureConfig} from './tableview/services/tableview-feature-config.token';\n\n/**\n * Prepares providers for usage of the tableview functionalities.\n *\n * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.\n */\nexport function withTableview(config?: TableviewFeatureConfig): CommonsFeature {\n return {\n type: CommonsFeatureTypeEnum.Tableview,\n providers: [\n DatePipe,\n NavigationService,\n {\n provide: COMMONS_TABLEVIEW_FEATURE_CONFIG_IT,\n useValue: config\n },\n {\n provide: FORMLY_CONFIG,\n multi: true,\n useFactory: commonsFormlyConfigProvider,\n deps: [TranslateService, DatePipe, COMMONS_TABLEVIEW_FEATURE_CONFIG_IT]\n },\n {\n provide: ACTION_EDITOR_COMPONENT_IT,\n useValue: ActionEditorComponent\n },\n {\n provide: DATA_LANGUAGE_DROPDOWN_COMPONENT_IT,\n useValue: DataLanguageDropdownComponent\n },\n {\n provide: ActionErrorMapperService,\n useClass: DefaultActionErrorMapperService\n },\n RootActionExecutorService,\n {\n provide: ActionExecutorService,\n useExisting: RootActionExecutorService\n },\n DefaultDataProviderExecutor,\n {\n provide: DataProviderExecutor,\n useExisting: DefaultDataProviderExecutor\n }\n ]\n };\n}\n","// action components\nexport * from './action/components/action/action.component';\nexport * from './action/components/editor/action-editor.component';\nexport * from './action/components/localization/data-language-dropdown.component';\nexport * from './action/components/route/action-route.component';\nexport * from './action/components/table/action-table.component';\n\n// action guards\nexport * from './action/guards/unsaved-changes.guard';\n\n// action helpers\nexport * from './action/helpers/i18n';\nexport * from './action/helpers/notification';\nexport * from './action/helpers/styles';\n\n// action models\nexport * from './action/models/execution/action-context.model';\nexport * from './action/models/execution/action-instance.model';\nexport * from './action/models/execution/action-instance-state.model';\nexport * from './action/models/action-editor-dialog-data.model';\nexport * from './action/models/can-component-deactivate.model';\n\n// action services\nexport * from './action/services/providers/provide-action-executor';\nexport * from './action/services/providers/provide-view-container';\nexport * from './action/services/tokens/action-editor.token';\nexport * from './action/services/action-error-mapper.service';\nexport * from './action/services/action-executor.service';\nexport * from './action/services/component-action-executor.service';\nexport * from './action/services/data-provider-executor.service';\nexport * from './action/services/navigation.service';\nexport * from './action/services/root-action-executor.service';\nexport * from './action/services/view-container.service';\n\n// editor components\nexport * from './editor/components/editor/auto-save-status/auto-save-status.component';\nexport * from './editor/components/editor/form-editor.component';\nexport * from './editor/components/formly/fields/formly-field-action/formly-field-action.component';\nexport * from './editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component';\nexport * from './editor/components/formly/fields/formly-field-custom/formly-field-custom.component';\nexport * from './editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component';\nexport * from './editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component';\nexport * from './editor/components/formly/fields/formly-field-input/formly-field-input.component';\nexport * from './editor/components/formly/fields/formly-field-label/formly-field-label.component';\nexport * from './editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component';\nexport * from './editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component';\nexport * from './editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component';\nexport * from './editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component';\nexport * from './editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component';\nexport * from './editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component';\n\n// editor helpers\nexport * from './editor/helpers/editor-field';\nexport * from './editor/helpers/editor-formly';\nexport * from './editor/helpers/formly-config';\nexport * from './editor/helpers/notification';\nexport * from './editor/helpers/editor-validators';\n\n// editor models\nexport * from './editor/models/editor-auto-save-preview.model';\nexport * from './editor/models/formly-config.model';\n\n// editor services\nexport * from './editor/services/form-editor.service';\nexport * from './editor/services/formly-config.provider';\n\n// tableview components\nexport * from './tableview/components/route/tableview-route.component';\nexport * from './tableview/components/tableview/tableview.component';\n\n// tableview router\nexport * from './tableview/router/tableview-route-builder';\n\n// tableview services\nexport * from './tableview/services/tableview-feature-config.token';\n\n// provide\nexport * from './provide';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["mergeMap","i2","i4.ActionExecutorService","i5.ViewContainer","i1","i5","i6","toObservable","take","i3","i4","i7","i8","i9","i10","i14","filter"],"mappings":"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"}
|