@mediusinc/mng-commons 7.0.1 → 7.1.0-rc.5-88c730b9
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/fesm2022/mediusinc-mng-commons-core.mjs +57 -57
- package/fesm2022/mediusinc-mng-commons-form.mjs +36 -36
- package/fesm2022/mediusinc-mng-commons-table-api.mjs +3 -7
- package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
- package/fesm2022/{mediusinc-mng-commons-table-column-toggle.component-CxaQlGO0.mjs → mediusinc-mng-commons-table-column-toggle.component-rdm5RU93.mjs} +5 -5
- package/fesm2022/{mediusinc-mng-commons-table-column-toggle.component-CxaQlGO0.mjs.map → mediusinc-mng-commons-table-column-toggle.component-rdm5RU93.mjs.map} +1 -1
- package/fesm2022/{mediusinc-mng-commons-table-mediusinc-mng-commons-table-CCsLTFuJ.mjs → mediusinc-mng-commons-table-mediusinc-mng-commons-table-BTo6h1UZ.mjs} +225 -209
- package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-BTo6h1UZ.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-table.mjs +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +3 -3
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +117 -114
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/package.json +1 -1
- package/types/mediusinc-mng-commons-table-api.d.ts +9 -8
- package/types/mediusinc-mng-commons-table.d.ts +36 -14
- package/types/mediusinc-mng-commons-tableview.d.ts +6 -2
- package/version-info.json +6 -6
- package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-CCsLTFuJ.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediusinc-mng-commons-tableview.mjs","sources":["../../tableview/src/action/helpers/i18n.ts","../../tableview/src/tableview/services/tableview-feature-config.token.ts","../../tableview/src/action/models/execution/action-context.model.ts","../../tableview/src/action/helpers/action-execution.ts","../../tableview/src/action/helpers/notification.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/tableview/components/tableview/tableview.component.ts","../../tableview/src/tableview/components/tableview/tableview.component.html","../../tableview/src/action/helpers/inject.ts","../../tableview/src/action/services/data-provider-executor.service.ts","../../tableview/src/editor/components/formly/fields/formly-type.abstract.component.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-group-type.abstract.component.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/constants.ts","../../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/helpers/field-create.ts","../../tableview/src/editor/services/formly-config.provider.ts","../../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\ntype ActionI18nOptsType = {\n customKey?: string;\n fallbackKey?: string;\n item?: any;\n params?: any;\n missingTranslationStrategy?: I18nMissingTranslationStrategy;\n};\n\n/**\n * Asynchronously retrieves internationalized text for a specified action.\n *\n * If no translation is found for actionPathKeys, the fallback is used (if provided).\n * If custom key is provided, no other key will be used.\n * Item can be interpolated under itemTitle, itemId (if specified in action model) or under item.* (JSON-like path to property).\n * Params are interpolated in translation.\n *\n * @param {TranslateService} translate - The translation service used for retrieving localized strings.\n * @param {ActionDescriptorInst<any>} action - The action descriptor that provides context for localization keys and parameters.\n * @param {string | Array<string>} pathKeys - A string or array of strings representing the priority order of localization keys to look up for the action.\n * @param {ActionI18nOptsType} [opts] - Optional settings to customize the localization behavior, including custom keys, fallback keys, parameters, and missing translation strategies.\n * @return {Observable<string | null>} An observable that emits the localized string for the action or null if no appropriate translation is found.\n */\nexport function getI18nForAction(translate: TranslateService, action: ActionDescriptorInst<any>, pathKeys: string | Array<string>, opts?: ActionI18nOptsType): string | null {\n const keys = getKeysByPriority(action, pathKeys, opts?.customKey, opts?.fallbackKey);\n const i18nParams = getI18nActionParams(translate, action, opts?.item, opts?.params);\n const i18nValue = getI18n(translate, i18nParams, ...keys);\n return getTranslationDependingOnStrategy(opts?.missingTranslationStrategy, {i18nValue, firstKey: keys[0], fallbackKey: opts?.fallbackKey});\n}\n\n/**\n * Asynchronously retrieves internationalized text for a specified action.\n *\n * If no translation is found for actionPathKeys, the fallback is used (if provided).\n * If custom key is provided, no other key will be used.\n * Item can be interpolated under itemTitle, itemId (if specified in action model) or under item.* (JSON-like path to property).\n * Params are interpolated in translation.\n *\n * @param {TranslateService} translate - The translation service used for retrieving localized strings.\n * @param {ActionDescriptorInst<any>} action - The action descriptor that provides context for localization keys and parameters.\n * @param {string | Array<string>} pathKeys - A string or array of strings representing the priority order of localization keys to look up for the action.\n * @param {ActionI18nOptsType} [opts] - Optional settings to customize the localization behavior, including custom keys, fallback keys, parameters, and missing translation strategies.\n * @return {Observable<string | null>} An observable that emits the localized string for the action or null if no appropriate translation is found.\n */\nexport function getI18nForActionAsync(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n pathKeys: string | Array<string>,\n opts?: ActionI18nOptsType\n): Observable<string | null> {\n return getI18nActionParamsAsync(translate, action, opts?.item, opts?.params).pipe(\n mergeMap(i18nParams => {\n const keys = getKeysByPriority(action, pathKeys, opts?.customKey, opts?.fallbackKey);\n return getI18nAsync(translate, i18nParams, ...keys).pipe(\n map(i18nValue => getTranslationDependingOnStrategy(opts?.missingTranslationStrategy, {i18nValue, firstKey: keys[0], fallbackKey: opts?.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 | undefined,\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 default:\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', {item});\n}\n\nexport function getI18nActionEditorTitleAsync(translate: TranslateService, action: ActionEditorDescriptorInst<any>, item?: any): Observable<string | null> {\n return getI18nForActionAsync(translate, action, ['editor.title', 'title'], {customKey: action.editorTitle ?? undefined, item, params: action.editorTitleParams});\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 } else {\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 }\n return keys;\n}\n","import {InjectionToken} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {CommonsFormlyTypeConfig} from '../../editor/models/formly-config.model';\nimport {ValidatorOption, WrapperOption} from '../../editor/models/formly.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 {Injector} from '@angular/core';\n\nimport {Confirmation, ToastMessageOptions} 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, ParametersItem, Service = undefined> implements IActionContext<\n Item,\n ParametersItem,\n Service,\n ActionInstance<Item, Service>,\n ViewContainer<Item, Service>\n> {\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?: ToastMessageOptions;\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<ParametersItem>,\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 {IDataProvider} from '@mediusinc/mng-commons/core';\nimport {ActionDescriptorInst, IViewContainer} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionDataProviderSource} from '../models/execution/action-context.model';\n\nexport function actionExecutionSelectDataProvider<Item, Service>(\n action: ActionDescriptorInst<any>,\n dataProvider?: IDataProvider<Item, Service>,\n viewContainer?: IViewContainer<any, any> | null\n): {\n dataProvider?: IDataProvider<Item, Service>;\n source: ActionDataProviderSource;\n} {\n if (dataProvider) {\n return {\n dataProvider,\n source: ActionDataProviderSource.ParameterOrInput\n };\n }\n if (action.dataProvider) {\n return {\n dataProvider: action.dataProvider,\n source: ActionDataProviderSource.Descriptor\n };\n }\n if (viewContainer?.dataProvider()) {\n return {\n dataProvider: viewContainer?.dataProvider(),\n source: ActionDataProviderSource.ViewContainer\n };\n }\n return {\n source: ActionDataProviderSource.Undefined\n };\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {MessageService, ToastMessageOptions} from 'primeng/api';\n\nimport {ICommonsError, getI18nErrorParams, getI18nForError, toastMessage} from '@mediusinc/mng-commons/core';\nimport {ActionDescriptorInst, ActionEditorDescriptorInst, ActionNotificationType} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getI18nForAction} from './i18n';\n\ntype ActionNotificationOptsType = ActionNotificationType & {\n item?: any;\n functionName?: string;\n};\n\n/**\n * Executes a notification success action for a given operation, translating\n * and displaying a success message using the specified translation and message services.\n *\n * Provide title or message for custom titles (unrelated to model/action base paths for i18n).\n * Item is interpolated as itemId, itemTitle or item.* for accessing desired properties.\n * Set functionName in order to get specific translations for executing function (run, fetch, submit).\n *\n * @param {TranslateService} translate - The translation service used to retrieve localized messages.\n * @param {MessageService} messageService - The message service responsible for displaying notifications.\n * @param {ActionDescriptorInst<any>} action - The action descriptor instance that defines the operation.\n * @param {ActionNotificationOptsType} [opts] - Optional configuration for customizing the success notification.\n * @return {Message | undefined} The generated message object if a success message is found, otherwise undefined.\n */\nexport function actionNotificationSuccess(\n translate: TranslateService,\n messageService: MessageService,\n action: ActionDescriptorInst<any>,\n opts?: ActionNotificationOptsType\n): ToastMessageOptions | undefined {\n const functionName = opts?.functionName ?? 'run';\n const actionSuccessTitle =\n getI18nForAction(translate, action, getKeysByPriority(action, functionName, 'success', 'title'), {\n customKey: opts?.title,\n item: opts?.item,\n fallbackKey: 'general.success'\n }) ?? undefined;\n const actionSuccessMessage =\n getI18nForAction(translate, action, getKeysByPriority(action, functionName, 'success', 'message'), {\n customKey: opts?.message,\n item: opts?.item,\n fallbackKey: 'general.successMessage'\n }) ?? undefined;\n if (!actionSuccessMessage) {\n return undefined;\n }\n return toastMessage(actionSuccessMessage, undefined, {messageService: messageService, title: actionSuccessTitle});\n}\n\n/**\n * Displays a notification for an error that occurred during an action execution.\n *\n * Provide title or message for custom titles (unrelated to model/action base paths for i18n).\n * Item is interpolated as itemId, itemTitle or item.* for accessing desired properties.\n * Set functionName in order to get specific translations for executing function (run, fetch, submit).\n *\n * @param {TranslateService} translate - The service used for translations.\n * @param {MessageService} messageService - The service used for displaying messages.\n * @param {ActionDescriptorInst<any>} action - The action descriptor instance related to the error.\n * @param {ICommonsError} error - The error object containing details about the error.\n * @param {'warn' | 'error'} [severity='error'] - The severity level of the notification (either 'warn' or 'error').\n * @param {ActionNotificationOptsType} [opts] - Optional parameters for customizing the notification, such as title, message, or function name.\n * @return {Message} - The message object created and displayed as a notification.\n */\nexport function actionNotificationError(\n translate: TranslateService,\n messageService: MessageService,\n action: ActionDescriptorInst<any>,\n error: ICommonsError,\n severity: 'warn' | 'error' = 'error',\n opts?: ActionNotificationOptsType\n): ToastMessageOptions {\n const params = {\n errorMessage: getI18nForError(translate, error) ?? error.message,\n ...getI18nErrorParams(error)\n };\n const functionName = opts?.functionName ?? 'run';\n const actionErrorTitle =\n getI18nForAction(translate, action, getKeysByPriority(action, functionName, 'error', 'title'), {\n customKey: opts?.title,\n item: opts?.item,\n fallbackKey: 'general.error',\n params\n }) ?? undefined;\n const actionErrorMessage = getI18nForAction(translate, action, getKeysByPriority(action, functionName, 'error', 'message'), {\n customKey: opts?.message,\n item: opts?.item,\n fallbackKey: 'general.errorMessage',\n params\n });\n return toastMessage(actionErrorMessage ?? error.message, severity, {messageService: messageService, icon: 'pi-exclamation-triangle', title: actionErrorTitle});\n}\n\nfunction getKeysByPriority(action: ActionDescriptorInst<any>, functionName: string, prefix: string, suffix: string): string[] {\n const keys = [functionName];\n if (action instanceof ActionEditorDescriptorInst && (functionName === 'run' || functionName === 'submit')) {\n keys.pop();\n keys.push(`submit`, `run`);\n }\n return keys.map(key => `${prefix}.${key}.${suffix}`).concat(`${prefix}.${suffix}`);\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 ActionInstanceStateEnum,\n ActionTypeEnum,\n IActionEditorComponent,\n IActionInstance\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionContext} from './action-context.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, Service, any, any, any>;\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<any>;\n private readonly contexts: Array<ActionContext<Item, any, 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, Service, any, any, any>, 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, any, 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, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NavigationEnd, Router} from '@angular/router';\n\n@Injectable()\nexport class NavigationService {\n private readonly router = inject(Router);\n private readonly location = inject(Location);\n\n private history: Array<string> = [];\n\n constructor() {\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<any>>>([]);\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 Nullable,\n ParametrizePipe,\n StyleSizeEnum,\n escapeHtmlAny,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {buttonStyleToPrimeStyles} from '@mediusinc/mng-commons/form/api';\nimport {\n ActionActivationTriggerEnum,\n ActionContextValidation,\n ActionDescriptorInst,\n ActionEditorDescriptorInst,\n ActionInstanceStateEnum,\n ActionRunFnType,\n ActionTypeEnum,\n CommonsActionError,\n CommonsActionErrorOptions,\n DataProviderExecutor,\n IActionEditorComponent,\n IActionInstance,\n TableviewActionDefaultCategories\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {COMMONS_TABLEVIEW_FEATURE_CONFIG_IT} from '../../tableview/services/tableview-feature-config.token';\nimport {actionExecutionSelectDataProvider} from '../helpers/action-execution';\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 {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, ParametersItem, Service>(\n action: ActionDescriptorInst<Item>,\n parameters: ActionParameters<ParametersItem>,\n dataProvider?: IDataProvider<Item, Service>\n ): ActionContextValidation<Item, ParametersItem, Service> {\n const ctxDataProvider = actionExecutionSelectDataProvider(action, dataProvider, this.viewContainer);\n return <ActionContextValidation<Item, ParametersItem, Service>>{\n descriptor: action,\n parameters: parameters,\n serviceInstance: this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider.dataProvider) ?? undefined,\n dataProvider: ctxDataProvider.dataProvider\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, ParametersItem, Service = undefined>(ctx: ActionContext<Item, ParametersItem, Service>) {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n\n if (isMainRunFn && ctx.instance.action.runConfirmation != null) {\n if (ctx.instance.action.runConfirmation.shouldShowFn && !ctx.instance.action.runConfirmation.shouldShowFn(ctx)) {\n this.runWithoutConfirmation(ctx);\n return;\n }\n\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 confirmationOpts = ctx.instance.action.runConfirmation;\n\n const item = ctx.parameters.item;\n const escapedItem = escapeHtmlAny(item);\n\n const getTranslationOrUndefined = (label: string | null | undefined, defLabel: string, fallback: string, escapeItem = false) =>\n label !== null\n ? (getI18nForAction(this.translate, ctx.instance.action, defLabel, {\n customKey: label,\n item: escapeItem ? escapedItem : item,\n fallbackKey: fallback\n }) ?? undefined)\n : undefined;\n\n let confirmParams: Confirmation = {\n icon: confirmationOpts.icon !== null ? (confirmationOpts.icon ?? 'pi pi-exclamation-triangle') : undefined,\n header: getTranslationOrUndefined(confirmationOpts.title, 'confirm.title', 'general.confirmation'),\n message: getTranslationOrUndefined(confirmationOpts.message, 'confirm.message', 'general.confirmation', true),\n acceptVisible: true,\n acceptLabel: getTranslationOrUndefined(confirmationOpts.acceptButton?.label, 'confirm.accept', 'general.yes'),\n acceptIcon: confirmationOpts.acceptButton?.icon !== null ? (confirmationOpts.acceptButton?.icon ?? ctx.instance.action.button?.icon ?? 'pi pi-check') : undefined,\n acceptButtonProps: buttonStyleToPrimeStyles({\n severity: ctx.instance.action.button?.style?.severity,\n ...confirmationOpts.acceptButton?.style\n }),\n rejectVisible: !(confirmationOpts.rejectButton === false || (confirmationOpts.rejectButton?.label === null && confirmationOpts.rejectButton?.icon === null)),\n rejectLabel: confirmationOpts.rejectButton !== false ? getTranslationOrUndefined(confirmationOpts.rejectButton?.label, 'confirm.reject', 'general.no') : undefined,\n rejectIcon:\n confirmationOpts.rejectButton !== false && confirmationOpts.rejectButton?.icon !== null ? (confirmationOpts.rejectButton?.icon ?? 'pi pi-times') : undefined,\n rejectButtonProps:\n confirmationOpts.rejectButton !== false\n ? buttonStyleToPrimeStyles({\n severity: 'secondary',\n ...confirmationOpts.rejectButton?.style\n })\n : undefined,\n closeOnEscape: confirmationOpts.closeOnEscape,\n accept: () => {\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationEndAccept;\n this.runWithoutConfirmation(ctx);\n },\n 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\n if (confirmationOpts.configMapFn) {\n confirmParams = confirmationOpts.configMapFn(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, ParametersItem, Service = undefined>(ctx: ActionContext<Item, ParametersItem, 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, Service, any, any, any, any>;\n\n let fnObs: ActionRunFnType<Item, Service, ParametersItem>;\n switch (ctx.functionName) {\n case 'submit':\n actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item, Service, any, any, any, any>;\n if (typeof actionEditor.submitFunction !== 'function') {\n if (actionEditor.tableviewCategory === TableviewActionDefaultCategories.ADD) {\n fnObs = this.dataProviderExecutor.runCreateOrFail.bind(this.dataProviderExecutor);\n } else if (actionEditor.tableviewCategory === TableviewActionDefaultCategories.EDIT) {\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 as Nullable<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 as Nullable<Item>) ?? undefined;\n }\n } else {\n fnObs = actionEditor.submitFunction as unknown as ActionRunFnType<Item, Service, ParametersItem>;\n }\n break;\n case 'fetch':\n actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item, Service, any, any, any, any>;\n if (typeof actionEditor.fetchFunction !== 'function') {\n if (actionEditor.tableviewCategory === TableviewActionDefaultCategories.EDIT || actionEditor.tableviewCategory === TableviewActionDefaultCategories.DETAILS) {\n const isEdit = actionEditor.tableviewCategory === TableviewActionDefaultCategories.EDIT;\n fnObs = ctx => this.dataProviderExecutor.runFetchOrFail(ctx, isEdit ? 'update' : undefined);\n } else if (ctx.dataProviderSource > ActionDataProviderSource.ViewContainer) {\n const defaultFetch = of((ctx.parameters?.item as Nullable<Item>) ?? undefined);\n fnObs = ctx => {\n if (ctx.parameters.itemId || typeof ctx.parameters.item === 'object') {\n return this.dataProviderExecutor.runFetch(ctx, undefined, defaultFetch);\n }\n return defaultFetch;\n };\n } else {\n fnObs = ctx => (ctx.parameters?.item as Nullable<Item>) ?? undefined;\n }\n } else {\n fnObs = actionEditor.fetchFunction as unknown as ActionRunFnType<Item, Service, ParametersItem>;\n }\n break;\n case 'run':\n default:\n if (!ctx.instance.action.hasRunFunction && ctx.instance.action.tableviewCategory === TableviewActionDefaultCategories.DELETE) {\n fnObs = this.dataProviderExecutor.runDeleteOrFail.bind(this.dataProviderExecutor);\n } else {\n fnObs = ctx.instance.action.runFunction as unknown as ActionRunFnType<Item, Service, ParametersItem>;\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 // handle notifications\n const notificationItem = {\n ...ctx.parameters?.item,\n ...ctx.parameters?.formItem,\n ...ctx.parameters?.submitResult,\n ...runResult\n };\n if (isMainRunFn && (ctx.instance.action.runNotificationOnSuccess ?? true)) {\n ctx.notification = actionNotificationSuccess(this.translate, this.messageService, ctx.instance.action, {\n functionName: ctx.functionName,\n item: notificationItem,\n ...(typeof ctx.instance.action.runNotificationOnSuccess === 'object' ? ctx.instance.action.runNotificationOnSuccess : {})\n });\n } else if (!isMainRunFn && (actionEditor.fetchNotificationOnSuccess ?? false)) {\n ctx.notification = actionNotificationSuccess(this.translate, this.messageService, actionEditor, {\n functionName: ctx.functionName,\n item: notificationItem,\n ...(typeof actionEditor.fetchNotificationOnSuccess === 'object' ? actionEditor.fetchNotificationOnSuccess : {})\n });\n }\n\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 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<any, Item, any>(\n afterRunAction,\n <ActionParameters<Item>>{\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 }\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 let errorObs = of(void 0);\n if (isMainRunFn) {\n ctx.instance.error = err;\n ctx.instance.isRunLoadingSubject.next(false);\n\n if (ctx.instance.action.runNotificationOnError ?? true) {\n actionError.notification = actionNotificationError(this.translate, this.messageService, ctx.instance.action, actionError, undefined, {\n functionName: ctx.functionName,\n item: ctx.parameters.item,\n ...(typeof ctx.instance.action.runNotificationOnError === 'object' ? ctx.instance.action.runNotificationOnError : {})\n });\n actionError.notificationEmitSource = ActionExecutorService.className;\n ctx.notification = actionError.notification;\n }\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, ParametersItem, Service>(\n onRunErrorAction,\n <ActionParameters<ParametersItem>>{\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 } else if (actionEditor.fetchNotificationOnError ?? true) {\n ctx.notification = actionNotificationError(this.translate, this.messageService, actionEditor, actionError, undefined, {\n functionName: ctx.functionName,\n item: {\n ...ctx.parameters.item\n },\n ...(typeof actionEditor.fetchNotificationOnError === 'object' ? actionEditor.fetchNotificationOnError : {})\n });\n actionError.notificationEmitSource = ActionExecutorService.className;\n ctx.notification = actionError.notification;\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, ParametersItem, Service>(\n action: ActionEditorDescriptorInst<Item, any, any, ParametersItem, any, any>,\n parameters: ActionParameters<ParametersItem>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, ParametersItem, 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, ParametersItem, Service>(\n action: ActionEditorDescriptorInst<Item, any, ParametersItem, any, any, any>,\n parameters: ActionParameters<ParametersItem>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, ParametersItem, 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, ParametersItem, Service>(\n instance: ActionInstance<Item, Service>,\n parameters: ActionParameters<ParametersItem>,\n functionName: 'submit' | 'fetch',\n dataProvider?: IDataProvider,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, ParametersItem, 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, Service, any, any, any, any>;\n const ctxDataProvider = actionExecutionSelectDataProvider<Item, Service>(editorAction, dataProvider, this.viewContainer);\n const ctx = new ActionContext<Item, ParametersItem, Service>(\n this.injector,\n instance,\n parameters,\n functionName,\n (this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider.dataProvider) ?? undefined) as Service,\n ctxDataProvider.dataProvider,\n this.viewContainer ?? undefined\n );\n ctx.dataProviderSource = ctxDataProvider.source;\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, ParametersItem, Service>(\n action: ActionDescriptorInst<Item, Service, ParametersItem, any, any>,\n parameters: ActionParameters<ParametersItem>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: ActionInstance<any, any>\n ): ActionContext<Item, ParametersItem, Service> {\n instance = this.getOrCreateInstance<Item, Service>(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n\n const ctxDataProvider = actionExecutionSelectDataProvider<Item, Service>(action, undefined, this.viewContainer);\n const ctx = new ActionContext<Item, ParametersItem, Service>(\n this.injector,\n instance,\n parameters,\n 'run',\n (this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider.dataProvider) ?? undefined) as Service,\n ctxDataProvider.dataProvider,\n this.viewContainer ?? undefined\n );\n ctx.dataProviderSource = ctxDataProvider.source;\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, ParametersItem, Service = undefined>(\n action: ActionDescriptorInst<Item, any, ParametersItem, any, any>,\n parameters: ActionParameters<ParametersItem>,\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 closable: 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 dialogConfig.maximizable = action.dialogIsMaximizable ?? true;\n }\n\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n dialogClassNames.push('mng-action-editor-on-route-dialog');\n dialogConfig.closable = false;\n dialogConfig.closeOnEscape = false;\n }\n\n dialogConfig.styleClass = dialogClassNames.join(' ');\n\n // commons has its own focus trap\n // there is also a bug in primeng: https://github.com/primefaces/primeng/issues/17479\n dialogConfig.focusOnShow = false;\n dialogConfig.modal = true;\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 ?? undefined;\n\n return instance;\n } else {\n // directly execute action\n instance.state = ActionInstanceStateEnum.ActivationEnd;\n const context = this.prepareContext<Item, any, 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 // actionUrl must be split to correctly parametrize route parameters by angular:\n // - '@' should not be escaped\n // - '/' must not be escaped\n const actionUrlSegments = this.parametrize.transform(actionUrl.split('/'), parameters.itemId, parameters.item, parameters.actionData);\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, 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, any, any, any>,\n parameters?: ActionParameters<any>,\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 {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OutputRefSubscription,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n inject,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute, RouterLink} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {MenuItem} from 'primeng/api';\nimport {ButtonDirective} from 'primeng/button';\nimport {Menu} from 'primeng/menu';\nimport {SplitButton} from 'primeng/splitbutton';\nimport {Tooltip} 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 effectWithDeps,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {buttonStyleToPrimeStyles} from '@mediusinc/mng-commons/form/api';\nimport {\n ActionContextValidation,\n ActionDescriptorInst,\n ActionInstanceStateEnum,\n ActionLinkDescriptorInst,\n ActionTypeEnum,\n IActionComponent,\n TableviewRouteData\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getI18nForActionAsync} from '../../helpers/i18n';\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\ntype ActionProcessingParamsType = {\n itemId?: IdType;\n item?: any;\n selectedItems: Array<any>;\n actionData?: ActionData;\n dataListParams?: DataListParams;\n routePermissions?: APermissions;\n hostComponent?: any;\n};\n\n@Component({\n selector: 'mng-action',\n templateUrl: './action.component.html',\n styleUrls: ['./action.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ParametrizePipe, ComponentDirective, RouterLink, ButtonDirective, Tooltip, SplitButton, Menu],\n providers: [provideActionExecutor()],\n host: {'[class]': 'hostClass()', '[class.m-0]': 'isHostHidden()'},\n encapsulation: ViewEncapsulation.None\n})\nexport class ActionComponent<Item = any, Service = undefined> implements OnDestroy {\n private readonly routeService = inject(ActivatedRoute);\n private readonly translate = inject(TranslateService);\n private readonly authorization = inject(PermissionService);\n private readonly actionExecutor = inject(ActionExecutorService);\n private readonly viewContainer = inject(ViewContainer<Item, Service>, {optional: true});\n\n // metadata and editor mode input\n public action = input.required<ActionDescriptorInst<Item, Service, any, any, any>>();\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 // eslint-disable-next-line @angular-eslint/no-output-native\n public finish = output<ActionInstance<Item, Service>>();\n\n public subactionsMenu = viewChild(Menu);\n\n public hostClass = computed(() => this.action().button?.style?.class ?? '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 buttonStyles = computed(() => {\n const buttonDescriptor = this.action().button?.style;\n return buttonStyleToPrimeStyles(buttonDescriptor, this.hasNoTitle());\n });\n\n public subactions = signal<MenuItem[]>([]);\n private subactionSubscriptions: Subscription[] = [];\n\n readonly #actionProcessingParams = computed(\n () =>\n <ActionProcessingParamsType>{\n itemId: this.itemId(),\n item: this.item(),\n selectedItems: this.selectedItems(),\n actionData: this.actionData(),\n dataListParams: this.dataListParams(),\n routePermissions: this.routePermissions(),\n hostComponent: this.hostComponent()\n }\n );\n\n private instance?: ActionInstance<Item, Service>;\n\n constructor() {\n effectWithDeps([this.action, this.dataProvider, this.route, this.hasNoTitle, this.#actionProcessingParams], ([action, dataProvider, route, hasNoTitle, processingParams]) =>\n this.processSubscriptions(action, dataProvider, route, hasNoTitle, processingParams)\n );\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 action: ActionDescriptorInst<Item, Service, any, any, any>,\n dataProvider: IDataProvider<Item, Service> | undefined,\n route: ActivatedRoute,\n hasNoTitle: boolean,\n params?: ActionProcessingParamsType\n ) {\n const parameters: ActionParameters<Item> = {\n itemId: params?.itemId,\n item: params?.item,\n actionData: params?.actionData,\n sourceComponent: this\n };\n if (action.hasItemsSelection) {\n parameters.selectedItems = params?.selectedItems;\n }\n\n const context = this.actionExecutor.prepareActionContextValidation(action, parameters, 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 if (typeof action.permissions !== 'undefined' || typeof params?.routePermissions !== 'undefined') {\n this.isPermittedSubscription?.unsubscribe();\n const permissions =\n action.permissions && params?.routePermissions\n ? Permissions.All.of(params.routePermissions, action.permissions)\n : (params?.routePermissions ?? action.permissions!);\n this.isVisibleSubscription = this.authorization.isActionVisible(permissions, context as ActionContextValidation<unknown, unknown>, route.snapshot).subscribe({\n next: res => this.isPermitted.set(res)\n });\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 (!hasNoTitle) {\n this.labelSubscription?.unsubscribe();\n this.labelSubscription = getI18nForActionAsync(this.translate, action, 'title', {customKey: action.button?.label ?? undefined, item: params?.item}).subscribe({\n next: i18n => this.label.set(i18n ?? '')\n });\n }\n\n this.tooltipSubscription?.unsubscribe();\n if (action.button?.tooltip !== null && (action.button?.tooltip ?? true)) {\n this.tooltipSubscription = getI18nForActionAsync(this.translate, action, 'tooltip', {\n customKey: action.button?.tooltip,\n item: params?.item,\n missingTranslationStrategy: 'returnNull'\n }).subscribe({\n next: i18n => {\n this.tooltip.set(i18n ?? action.button?.tooltip ?? '');\n }\n });\n }\n\n this.subactions.set(this.processSubactions(action, dataProvider, route, params));\n }\n\n private processSubactions(\n action: ActionDescriptorInst<Item, Service, any, any, any>,\n dataProvider: IDataProvider<Item, Service> | undefined,\n route: ActivatedRoute,\n params?: ActionProcessingParamsType\n ): MenuItem[] {\n this.subactionSubscriptions.forEach(s => s.unsubscribe());\n this.subactionSubscriptions = [];\n\n return action.subactions.map(subaction => {\n const menuItem = {} as MenuItem;\n\n menuItem.icon = subaction.button?.icon ?? undefined;\n this.subactionSubscriptions.push(\n getI18nForActionAsync(this.translate, subaction, 'title', {customKey: subaction.button?.label ?? undefined, item: params?.item}).subscribe({\n next: res => (menuItem.label = res ?? undefined)\n })\n );\n this.subactionSubscriptions.push(\n getI18nForActionAsync(this.translate, subaction, 'tooltip', {customKey: subaction.button?.tooltip ?? undefined, item: params?.item}).subscribe({\n next: res => (menuItem.tooltip = res ?? undefined)\n })\n );\n\n const parameters: ActionParameters<Item> = {\n itemId: params?.itemId,\n item: params?.item,\n actionData: params?.actionData,\n sourceComponent: this\n };\n\n if (subaction.hasItemsSelection) {\n parameters.selectedItems = params?.selectedItems;\n }\n\n const context = this.actionExecutor.prepareActionContextValidation(subaction, parameters, 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>, 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>, 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 return menuItem;\n });\n }\n}\n","@if (isVisible() && isPermitted()) {\n @if (actionLink(); as actionLink) {\n @if (actionLink.url !== '') {\n <a\n pButton\n [label]=\"label()\"\n [icon]=\"$any(action().button?.icon)\"\n [iconPos]=\"action().button?.iconPosition ?? 'left'\"\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 ?? 'top'\"\n [size]=\"buttonStyles().size\"\n [severity]=\"buttonStyles().severity\"\n [text]=\"buttonStyles().text\"\n [outlined]=\"buttonStyles().outlined\"\n [raised]=\"buttonStyles().raised\"\n [rounded]=\"buttonStyles().rounded\"\n [class]=\"buttonStyles().class\">\n </a>\n } @else {\n <a\n pButton\n [icon]=\"$any(action().button?.icon)\"\n [iconPos]=\"action().button?.iconPosition ?? 'left'\"\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 ?? 'top'\"\n [size]=\"buttonStyles().size\"\n [severity]=\"buttonStyles().severity\"\n [text]=\"buttonStyles().text\"\n [outlined]=\"buttonStyles().outlined\"\n [raised]=\"buttonStyles().raised\"\n [rounded]=\"buttonStyles().rounded\"\n [class]=\"buttonStyles().class\">\n </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 @defer (on idle) {\n <p-splitButton\n [icon]=\"action().button?.icon ?? undefined\"\n [iconPos]=\"action().button?.iconPosition ?? 'left'\"\n [label]=\"label()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button?.tooltipPosition ?? 'top'\"\n [disabled]=\"!isEnabled() || inputDisabled()\"\n (onClick)=\"triggerAction(action())\"\n [size]=\"buttonStyles().size\"\n [severity]=\"buttonStyles().severity\"\n [text]=\"buttonStyles().text\"\n [outlined]=\"buttonStyles().outlined\"\n [raised]=\"buttonStyles().raised\"\n [rounded]=\"buttonStyles().rounded\"\n [class]=\"buttonStyles().class\"\n [model]=\"subactions()\" />\n }\n } @else {\n <button\n pButton\n type=\"button\"\n [icon]=\"$any(action().button?.icon)\"\n [iconPos]=\"action().button?.iconPosition ?? 'left'\"\n [label]=\"label()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button?.tooltipPosition ?? 'top'\"\n [loading]=\"loading() || inputLoading()\"\n [disabled]=\"!isEnabled() || inputDisabled()\"\n [size]=\"buttonStyles().size\"\n [severity]=\"buttonStyles().severity\"\n [text]=\"buttonStyles().text\"\n [outlined]=\"buttonStyles().outlined\"\n [raised]=\"buttonStyles().raised\"\n [rounded]=\"buttonStyles().rounded\"\n [class]=\"buttonStyles().class\"\n (click)=\"triggerAction(action(), undefined, $event)\"></button>\n @defer (on idle) {\n <p-menu #subactionsMenu [model]=\"subactions()\" [popup]=\"true\" appendTo=\"body\" styleClass=\"mng-action-menu\"></p-menu>\n }\n }\n}\n","import {DatePipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\n\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {EditorAutoSaveStatus} from '../../../models/editor-auto-save-preview.model';\n\n@Component({\n selector: 'mng-editor-auto-save-status',\n imports: [DatePipe, TranslatePipe],\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.split('?')[0].split('#')[0];\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, FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable, combineLatest, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {CommonsInternalError, CommonsService} from '@mediusinc/mng-commons/core';\nimport {LookupDataProviderInst} from '@mediusinc/mng-commons/form/api';\nimport {\n AFieldDescriptor,\n CommonsFormlyFieldConfig,\n CommonsFormlyFormState,\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 {ValidationMessageOption} from '../models/formly.model';\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.table.withLocalized().withLocalizationLocaleProperty(descriptor.localizationLocaleProperty);\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 .addFieldLookup(descriptor.localizationLocaleProperty, {serviceProvider: new LookupDataProviderInst<string, CommonsService>(CommonsService)})\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.addTabGroup('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 {props, expressions, ...restConfig} = tab.formlyConfig as CommonsFormlyFieldConfig;\n const tabField: CommonsFormlyFieldConfig = {\n ...restConfig,\n id: tab.name,\n props: {\n ...props,\n formEditorComponent,\n descriptor: tab,\n editorDescriptor: editorDescriptor\n },\n expressions: {\n ...expressions\n },\n fieldGroup: []\n };\n if (tab.title) {\n tabField.props.label = tab.title;\n }\n\n if (tab.hiddenExpression) {\n tabField.expressions!['props.groupHidden'] = 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 fieldGroupClassName: 'field-group-class-name'\n };\n if (group.title) {\n groupField.props.label = group.title;\n }\n\n if (group.hiddenExpression) {\n groupField.expressions!['props.groupHidden'] = 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\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\n const {props, validation, ...restConfig} = descriptor.formlyConfig as CommonsFormlyFieldConfig;\n // wrap in group to be able to use flex grid\n const wrapperGroup: CommonsFormlyFieldConfig = {\n ...restConfig,\n fieldGroupClassName: descriptor?.className?.grid ?? 'grid grid-cols-12 gap-4',\n fieldGroup: fields,\n props: {\n ...props\n },\n validation: {\n ...validation,\n show: descriptor.validationOpts.forceShowMessage\n }\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 {modelOptions, hooks, props, validation, expressions, ...restConfig} = descriptor.formlyConfig as CommonsFormlyFieldConfig<any, Item>;\n const field: CommonsFormlyFieldConfig<any, Item> = {\n ...restConfig,\n key: descriptor.property,\n modelOptions: {\n updateOn: descriptor.updateOn,\n ...modelOptions\n },\n hooks: {\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 ...props,\n descriptor,\n formEditorComponent,\n editorDescriptor: editorDescriptor,\n onValueChange: descriptor.onValueChange\n },\n validation: {\n ...validation,\n show: descriptor.validationOpts.forceShowMessage\n },\n expressions: {\n ...expressions\n }\n };\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 const fieldClasses = ['mng-field', `mng-field-${field.type}`];\n if (descriptor.className?.field) {\n fieldClasses.push(descriptor.className.field);\n }\n fieldClasses.push(descriptor.className?.grid ?? 'col-span-12 basis-full');\n field.className = fieldClasses.join(' ');\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 const disabledExpression = descriptor.disabledExpression;\n if (typeof disabledExpression === 'string') {\n field.expressions!['props.disabled'] = `formState.disabled || (${disabledExpression})`;\n } else if (typeof disabledExpression === 'function') {\n field.expressions!['props.disabled'] = field => field.options?.formState?.disabled === true || disabledExpression(field);\n } else {\n field.expressions!['props.disabled'] = combineLatest([\n ((formEditorComponent.formlyOptions.formState satisfies CommonsFormlyFormState<never> | undefined)?.disabled$ as Observable<boolean> | undefined) ?? of(false),\n disabledExpression\n ]).pipe(map(v => v.some(v => v === true)));\n }\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 {ToastMessageOptions} from 'primeng/api';\n\nexport function getFormEditorInfoMessage(translate: TranslateService, message: string, params?: any): ToastMessageOptions {\n const actionErrorMessage = translate.instant(message, params) ?? undefined;\n return {severity: 'info', detail: actionErrorMessage, icon: 'pi pi-info-circle'};\n}\n\nexport function getFormEditorWarningMessage(translate: TranslateService, message: string): ToastMessageOptions {\n const actionErrorMessage = translate.instant(message) ?? undefined;\n return {severity: 'warn', detail: actionErrorMessage, icon: 'pi pi-exclamation-triangle'};\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 {ToastMessageOptions} 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<ToastMessageOptions[]> {\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 // eslint-disable-next-line @angular-eslint/prefer-inject\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 {DatePipe} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\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, FormlyForm} from '@ngx-formly/core';\nimport {TranslatePipe, TranslateService} from '@ngx-translate/core';\nimport {ToastMessageOptions} from 'primeng/api';\nimport {ButtonDirective} from 'primeng/button';\nimport {Message} from 'primeng/message';\nimport {BehaviorSubject, Subscription, debounceTime, delay, distinctUntilChanged, of, switchMap, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {CommonsService, CommonsStorageService, IdType, LoggerService, narrowPrimeMessageSeverity, objectDeepCopy} from '@mediusinc/mng-commons/core';\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 selector: 'mng-form-editor',\n templateUrl: './form-editor.component.html',\n styleUrl: './form-editor.component.css',\n imports: [FormlyForm, ReactiveFormsModule, TranslatePipe, DatePipe, EditorAutoSaveStatusComponent, Message, ButtonDirective],\n providers: [provideFormComponent()],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class FormEditorComponent<Item = any, ParentItem = any> implements IFormEditorComponent<Item, ParentItem>, OnInit, AfterViewInit, 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 public 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 readonly formMessages = signal<ToastMessageOptions[]>([]);\n protected readonly formMessagesTypeNarrowed = computed(() =>\n this.formMessages().map(m => ({\n severity: narrowPrimeMessageSeverity(m.severity),\n text: m.detail,\n icon: m.icon\n }))\n );\n\n // autosave\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 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.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\n ngAfterViewInit() {\n // mark form as pristine, should be done in next event hook to allow formly to initialize first\n this._form.markAsPristine();\n this.autoSaveLoadSavedFromStorage();\n this.autoSaveStartEventChangeListen(this.autoSaveStorageKeyCompInit);\n this.autoSaveStorageKeyCompInit = false;\n }\n\n public ngOnDestroy() {\n this.autoSaveStopValueChangeListen();\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.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 this.autoSaveStopValueChangeListen();\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 if (!this.autoSaveEventsSubscription) {\n this.autoSaveEventsSubscription = of(void 0)\n .pipe(\n delay(init ? 0 : 500), // delay initial event listening for all the initializations to take place\n switchMap(() => this._form.valueChanges),\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 )\n .subscribe(() => {\n this.autoSaveSaveToStorage();\n });\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-message severity=\"warn\" icon=\"pi pi-save\">\n <ng-template #container>\n <div class=\"flex w-full justify-end items-center\">\n <div class=\"grow\">\n {{\n 'mngEditor.autoSave.restore.title'\n | translate: {lastChange: autoSaveRestore()?.savedAt ? (autoSaveRestore()?.savedAt! | date: 'dd. MM. yyyy HH:mm:ss') : ''}\n }}\n </div>\n <div>\n <button\n pButton\n icon=\"pi pi-sync\"\n size=\"small\"\n [label]=\"'mngEditor.autoSave.restore.restore' | translate\"\n severity=\"success\"\n text=\"true\"\n (click)=\"onAutoSaveRestore()\"></button>\n @if (autoSave()?.state !== 'preview' || autoSave()?.state !== 'previewCurrent') {\n <button\n pButton\n icon=\"pi pi-eye\"\n size=\"small\"\n [label]=\"autoSavePreviewButtonLabel() | translate\"\n severity=\"info\"\n text=\"true\"\n (click)=\"onAutoSavePreview()\"></button>\n }\n <button\n pButton\n icon=\"pi pi-times\"\n size=\"small\"\n [label]=\"'mngEditor.autoSave.restore.dismiss' | translate\"\n severity=\"danger\"\n text=\"true\"\n (click)=\"onAutoSaveDismiss()\"></button>\n </div>\n </div>\n </ng-template>\n </p-message>\n}\n\n@if (autofocusEnabled()) {\n <input type=\"hidden\" class=\"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 type=\"submit\" class=\"hidden!\"></button>\n</form>\n@for (message of formMessagesTypeNarrowed(); track message) {\n <p-message [severity]=\"message.severity\" [icon]=\"message.icon\">{{ message.text }} </p-message>\n}\n\n@if (descriptor().autoSave && showAutoSaveStatus()) {\n <mng-editor-auto-save-status [status]=\"autoSave()\" />\n}\n","import {ChangeDetectionStrategy, Component, HostListener, OnDestroy, ViewEncapsulation, computed, 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 {ButtonDirective} from 'primeng/button';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {ProgressSpinner} from 'primeng/progressspinner';\nimport {Toolbar} 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 IDataProvider,\n IdType,\n LoggerService,\n effectWithDeps,\n objectDeepCopy\n} from '@mediusinc/mng-commons/core';\nimport {\n ActionActivationTriggerEnum,\n ActionDescriptorInst,\n ActionEditorDescriptorInst,\n ActionEditorSubmitDescriptorInst,\n ActionEditorSubmitTypeEnum,\n ActionInstanceStateEnum,\n ActionPositionEnum,\n ActionTypeEnum,\n EditorResetEvent,\n FormEditorSubmitEvent,\n IActionEditorComponent,\n IActionInstance,\n IEditorDataProvider,\n TableviewActionDefaultCategories\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 {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 selector: 'mng-action-editor-injector-context',\n templateUrl: './action-editor-injector-context.component.html',\n styleUrl: 'action-editor-injector-context.component.css',\n imports: [ActionComponent, FormEditorComponent, EditorAutoSaveStatusComponent, ProgressSpinner, Toolbar, ButtonDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [provideActionExecutor()]\n})\nexport class ActionEditorInjectorContextComponent<Item = any, Service = any> implements 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<Item>);\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 = computed(() => this.data().descriptor);\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 action.withButtonOpts({\n ...action.button,\n icon: action.button?.icon === undefined ? (action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times') : action.button.icon,\n label:\n action.button?.label === undefined\n ? action.submitType === ActionEditorSubmitTypeEnum.Submit\n ? 'general.save'\n : this.data().isDialog\n ? 'general.close'\n : 'general.cancel'\n : action.button.label\n });\n\n // assign run operations\n action.withNotifications(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 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 #titleSubscription?: Subscription;\n\n constructor() {\n effectWithDeps(\n [this.data],\n ([data]) => {\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 {firstOnly: true}\n );\n effectWithDeps([this.hasTitle], ([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\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 takeUntilDestroyed()\n )\n .subscribe(title => {\n this.title.set(title ?? undefined);\n\n const dataDialogConfig = this.data().dialogConfig;\n if (dataDialogConfig) {\n setTimeout(() => (dataDialogConfig.header = title ?? undefined));\n }\n if (this.editorAction().activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n this.commonsService.setPageTitle(title ?? undefined);\n }\n });\n toObservable(this.editorAction)\n .pipe(\n switchMap(action => (action.dataProvider as IEditorDataProvider | undefined)?.editorReset$ ?? NEVER),\n takeUntilDestroyed()\n )\n .subscribe({\n next: e => this.onEditorReset(e)\n });\n\n if (this.viewContainer) {\n toObservable(this.editorAction)\n .pipe(\n switchMap(a => (this.isActionMainTwEditor(a) ? (this.viewContainer?.editorReset$ ?? NEVER) : NEVER)),\n takeUntilDestroyed()\n )\n .subscribe({\n next: e => this.onEditorReset(e)\n });\n toObservable(this.editorAction)\n .pipe(\n switchMap(a => (this.isActionMainTwEditor(a) ? (this.viewContainer?.editorClose$ ?? NEVER) : NEVER)),\n takeUntilDestroyed()\n )\n .subscribe({\n next: () => this.cancel()\n });\n toObservable(this.viewContainer.dataProvider)\n .pipe(\n combineLatestWith(toObservable(this.editorAction)),\n switchMap(([dataProvider, action]) =>\n this.isActionMainTwEditor(action) && action.dataProvider == null ? ((dataProvider as IEditorDataProvider | undefined)?.editorReset$ ?? NEVER) : NEVER\n ),\n takeUntilDestroyed()\n )\n .subscribe({\n next: e => this.onEditorReset(e)\n });\n }\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 = this.getActionParams();\n actionParameters.item = event.formItem;\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.data().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().editorDescriptor.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 = this.getActionParams();\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.data().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 private isActionMainTwEditor(action: ActionEditorDescriptorInst<any>) {\n return (\n action.tableviewCategory != null &&\n [TableviewActionDefaultCategories.DETAILS, TableviewActionDefaultCategories.EDIT, TableviewActionDefaultCategories.ADD].includes(action.tableviewCategory)\n );\n }\n\n @HostListener('window:beforeunload')\n protected 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 protected 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.el.nativeElement.querySelector('.p-dialog')?.style?.zIndex) ===\n 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 acceptIcon: 'pi pi-check',\n acceptButtonProps: {severity: 'primary'},\n rejectLabel: this.translate.instant('general.no'),\n rejectIcon: 'pi pi-times',\n rejectButtonProps: {severity: 'secondary'},\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 private getActionParams() {\n return <ActionParameters<Item>>{\n itemId: this.itemId(),\n item: this.item(),\n actionData: this.actionData(),\n sourceComponent: this\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 mng-action-editor-dialog-close-button-wrapper\">\n <button\n pButton\n severity=\"secondary\"\n class=\"p-dialog-header-icon p-button-icon-only p-dialog-close-button\"\n text=\"true\"\n rounded=\"true\"\n type=\"button\"\n (click)=\"closeWithUnsavedChangesConfirmation()\"\n (keydown.enter)=\"closeWithUnsavedChangesConfirmation()\">\n <i class=\"pi pi-times\"></i>\n </button>\n </span>\n}\n<div class=\"h-full flex flex-col\">\n @if (toolbarLeftActions().length > 0 || toolbarRightActions().length > 0) {\n <div class=\"grow mng-action-editor-toolbar-container\">\n <p-toolbar class=\"mng-action-editor-toolbar\">\n <ng-template #start>\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 #end>\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=\"grow 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 }\n </div>\n\n <div class=\"flex flex-row justify-between 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 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 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, ActionInstanceStateEnum, ActionTypeEnum, IActionInstance} from '@mediusinc/mng-commons/tableview/api';\n\nimport {CanComponentDeactivate} from '../../models/can-component-deactivate.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 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<any>>): 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 Math.ceil(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?.style?.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 {ChangeDetectionStrategy, Component, booleanAttribute, computed, contentChildren, inject, input, output, viewChild} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TableRowReorderEvent} from 'primeng/table';\n\nimport {ActionParameters, DataListResult} from '@mediusinc/mng-commons/core';\nimport {TableComponent, TableTemplateDirective} 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 selector: 'mng-action-table',\n templateUrl: './action-table.component.html',\n imports: [TableComponent, ActionComponent, TableTemplateDirective],\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 readonly tableTemplates = input<TableTemplateDirective[]>([]);\n public readonly tableClassName = input<string>();\n public readonly selectionMode = input<'single' | 'multiple'>('multiple');\n public readonly selectionEnabled = input(false);\n public readonly globalFilterFields = input<string[]>();\n public readonly rowReorderEnabled = input<boolean>(true);\n\n // actions\n public actions = input<Array<ActionDescriptorInst<any>>>([]); // can be anything\n\n // component inputs\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 rowReorder = output<TableRowReorderEvent>();\n\n // content and view queries\n public readonly contentTemplates = contentChildren(TableTemplateDirective);\n public readonly table = viewChild.required(TableComponent);\n\n protected readonly tableTemplatesMerged = computed(() => {\n return [...this.contentTemplates(), ...this.tableTemplates()];\n });\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 [columnLastMinWidth]=\"columnActionMinWidth()\"\n [cellClickEnabled]=\"this.rowClickActions().length > 0\"\n [rowReorderEnabled]=\"rowReorderEnabled()\"\n [class]=\"tableClassName()\"\n [templates]=\"tableTemplatesMerged()\"\n (tableLoad)=\"tableLoad.emit($event)\"\n (cellClick)=\"onCellClick($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (rowReorder)=\"onRowReorder($event)\">\n @if (rowInlineActions().length > 0) {\n <ng-template mngTableTemplate name=\"columnCustomLast\" let-item=\"item\" let-idx=\"index\">\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</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 {ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation, computed, contentChildren, inject, input, signal, viewChild} from '@angular/core';\nimport {RouterOutlet} from '@angular/router';\n\nimport {Toolbar} from 'primeng/toolbar';\n\nimport {DataListParams} from '@mediusinc/mng-commons/core';\nimport {TableTemplateDirective} from '@mediusinc/mng-commons/table';\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 selector: 'mng-tableview',\n templateUrl: './tableview.component.html',\n styleUrl: './tableview.component.css',\n imports: [ActionComponent, ActionTableComponent, RouterOutlet, Toolbar],\n providers: [provideViewContainer()],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\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 actionTable = viewChild.required(ActionTableComponent<Item, Service, Sorts, Filters>);\n\n public descriptor = input.required<TableviewDescriptorInst<Item, Sorts, Filters, any, any, any, any, any>>();\n public dataProvider = input<ITableviewDataProvider<Item, Service, Sorts, Filters, any, any, any, any>>();\n public actions = input<Array<ActionDescriptorInst<any>>>([]);\n\n public toolbarLeftActions = computed(() => this.filterActionsByPositions(this.actions(), [ActionPositionEnum.ToolbarLeft]));\n public toolbarRightActions = computed(() => this.filterActionsByPositions(this.actions(), [ActionPositionEnum.ToolbarRight]).reverse());\n public tableActions = computed(() =>\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 protected readonly contentTableTemplates = contentChildren(TableTemplateDirective);\n protected readonly tableTemplates = computed(() => [...this.contentTableTemplates()]);\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<any>[], actionPositions: ActionPositionEnum[]): ActionDescriptorInst<any>[] {\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-6\">\n <ng-template #start>\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 #end>\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 [tableTemplates]=\"tableTemplates()\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n </mng-action-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n","import {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\nimport {TableComponent} from '@mediusinc/mng-commons/table';\nimport {TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\nimport {EditorDescriptorInst, IActionContext, IActionEditorContext} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormEditorService} from '../../editor/services/form-editor.service';\nimport {TableviewComponent} from '../../tableview/components/tableview/tableview.component';\nimport {ActionEditorInjectorContextComponent} from '../components/editor/injector-context/action-editor-injector-context.component';\nimport {ActionTableComponent} from '../components/table/action-table.component';\n\n/**\n * Retrieves the parent form editor service for a given action editor context. Only applicable for action editor with ParentEditorItem type defined.\n *\n * @param {IActionEditorContext<any, ParentItem, any, any>} ctx - The action editor context containing information about the current editor and its parent.\n *\n * @return {FormEditorService<ParentItem> | null} The parent form editor service if available, or null if not found.\n */\nexport function getActionParentFormEditor<ParentItem>(ctx: IActionEditorContext<any, ParentItem, any, any>): FormEditorService<ParentItem> | null;\n/**\n * Retrieves the parent form editor service for a given action context and editor/model/type descriptor.\n *\n * @param {IActionContext<any, any, any, any>} ctx - The action context from which the parent editor is resolved.\n * @param {EditorDescriptorInst<ParentItem> | ModelDescriptor<ParentItem> | TypeDescriptor<ParentItem>} editorType - The editor descriptor or type used to locate the parent form editor.\n *\n * @return {FormEditorService<ParentItem> | null} The parent form editor service instance if found, otherwise null.\n */\nexport function getActionParentFormEditor<ParentItem>(\n ctx: IActionContext<any, any, any, any> | IActionEditorContext<any, any, any, any>,\n editorType: EditorDescriptorInst<ParentItem> | ModelDescriptor<ParentItem> | TypeDescriptor<ParentItem>\n): FormEditorService<ParentItem> | null;\nexport function getActionParentFormEditor<ParentItem>(\n ctx: IActionContext<any, any, any, any> | IActionEditorContext<any, ParentItem, any, any>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n editorType?: EditorDescriptorInst<ParentItem> | ModelDescriptor<ParentItem> | TypeDescriptor<ParentItem>\n): FormEditorService<ParentItem> | null {\n return ctx.injector.get(FormEditorService, null, {optional: true});\n}\n\n/**\n * Retrieves the form editor service associated with a given action editor context. Only applicable for action editor.\n *\n * @param {IActionEditorContext<Item, ParentItem, any, any>} ctx - The action editor context containing parameters and state.\n *\n * @return {FormEditorService<Item, ParentItem> | null} The form editor service if available, or null if not found.\n */\nexport function getActionFormEditor<Item, ParentItem>(ctx: IActionEditorContext<Item, ParentItem, any, any>): FormEditorService<Item, ParentItem> | null {\n if (ctx.parameters.sourceComponent instanceof ActionEditorInjectorContextComponent) {\n return (ctx.parameters.sourceComponent.formEditorCmp()?.formService as FormEditorService<Item, ParentItem>) ?? null;\n }\n return null;\n}\n\n/**\n * Retrieves the parent table associated with the given action context and table descriptor. Applies when actions are placed on table or table within tableview.\n *\n * @param {IActionContext<any, any, any, any>} ctx - The action context from which the table is resolved.\n * @param {TableDescriptorInst<Item, Sorts, Filters> | ModelDescriptor<Item> | TypeDescriptor<Item>} tableType - The descriptor of the table that needs to be retrieved.\n *\n * @return {TableComponent<Item, Sorts, Filters> | null} The parent table associated with the action context and descriptor, or null if not found.\n */\nexport function getActionParentTable<Item, Sorts = keyof Item, Filters = keyof Item>(\n ctx: IActionContext<any, any, any, any>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tableType: TableDescriptorInst<Item, Sorts, Filters> | ModelDescriptor<Item> | TypeDescriptor<Item>\n): TableComponent<Item, Sorts, Filters> | null {\n return (ctx.injector.get(ActionTableComponent, null, {optional: true}) ?? ctx.injector.get(TableviewComponent, null, {optional: true})?.actionTable())?.table() ?? null;\n}\n","import {Injectable} from '@angular/core';\n\nimport {Observable, isObservable} from 'rxjs';\n\nimport {DataListResult, Nullable} from '@mediusinc/mng-commons/core';\nimport {\n DataProviderExecutor,\n IActionContext,\n RunFetchFromDataProviderReasonType,\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, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<DataListResult<Item>> | null;\n public override runGetAll<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback: Observable<DataListResult<Item>>\n ): Observable<DataListResult<Item>>;\n public override runGetAll<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: undefined): Observable<DataListResult<Item>> | null;\n public override runGetAll<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback?: Observable<DataListResult<Item>>\n ): Observable<DataListResult<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runGetAllFromDataProvider, fallback) : runGetAllFromDataProvider(ctx);\n }\n\n public override runFetch<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fetchReason?: RunFetchFromDataProviderReasonType\n ): Observable<Item> | null;\n public override runFetch<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fetchReason: RunFetchFromDataProviderReasonType | undefined,\n fallback: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>>;\n public override runFetch<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fetchReason: RunFetchFromDataProviderReasonType | undefined,\n fallback: undefined\n ): Observable<Nullable<Item>> | null;\n public override runFetch<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fetchReason: RunFetchFromDataProviderReasonType | undefined,\n fallback?: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>> | null {\n const fetchOpts = {\n reason: fetchReason,\n strict: false\n };\n if (fallback) {\n const dataProviderExec = runFetchFromDataProvider(ctx, fetchOpts);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return fallback;\n } else {\n return runFetchFromDataProvider(ctx, fetchOpts);\n }\n // return fallback ? runFnFromDataProviderOrFallback(ctx, runFetchFromDataProvider, fallback) : runFetchFromDataProvider(ctx);\n }\n\n public override runCreate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<Item> | null;\n public override runCreate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runCreate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runCreate<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback?: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runCreateFromDataProvider, fallback) : runCreateFromDataProvider(ctx);\n }\n\n public override runUpdate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<Item> | null;\n public override runUpdate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runUpdate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runUpdate<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback?: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runUpdateFromDataProvider, fallback) : runUpdateFromDataProvider(ctx);\n }\n\n public override runDelete<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<Nullable<Item>> | null;\n public override runDelete<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runDelete<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runDelete<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback?: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runDeleteFromDataProvider, fallback) : runDeleteFromDataProvider(ctx);\n }\n}\n","import {ChangeDetectorRef, DestroyRef, Directive, OnInit, inject, signal} 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 {AGenericFieldDescriptor, CommonsFormlyFieldConfig, CommonsFormlyFormOptions, CommonsFormlyFormState, EditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\n@Directive()\nexport abstract class ACommonsFormlyType<Model, EditorModel, Descriptor extends AGenericFieldDescriptor>\n extends FieldType<CommonsFormlyFieldConfig<Model, EditorModel>>\n implements OnInit\n{\n protected readonly destroyRef = inject(DestroyRef);\n protected readonly cd = inject(ChangeDetectorRef);\n protected formStateDisabledSubject = new BehaviorSubject(false);\n\n protected formStateDisabled$ = this.formStateDisabledSubject.asObservable();\n\n public descriptorSig = signal<Descriptor | undefined>(undefined);\n public fieldSig = signal<CommonsFormlyFieldConfig<Model, EditorModel> | undefined>(undefined);\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 ACommonsFormlyType<Model, EditorModel, Descriptor>;\n if (!this.formState.disabled$) throw new CommonsInternalError('formState.disabled$ must be defined');\n this.descriptorSig.set(this.props.descriptor as Descriptor | undefined);\n this.fieldSig.set(this.field);\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 {Directive, computed} from '@angular/core';\n\nimport {AFieldDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyType} from './formly-type.abstract.component';\n\n@Directive()\nexport abstract class ACommonsFormlyFieldType<\n Model,\n EditorModel,\n Descriptor extends AFieldDescriptor<Model, EditorModel> = AFieldDescriptor<Model, EditorModel>\n> extends ACommonsFormlyType<Model, EditorModel, Descriptor> {\n public controlClassName = computed(() => ['mng-field-control', this.descriptorSig()?.className?.control].filter(c => !!c).join(' '));\n public labelClassName = computed(() => ['mng-field-label', this.descriptorSig()?.className?.label].filter(c => !!c).join(' '));\n public controlInputClassName = computed(() => ['mng-field-control-input', this.descriptorSig()?.className?.input].filter(c => !!c).join(' '));\n public controlWithInputClassName = computed(() => this.controlClassName() + ' ' + this.controlInputClassName());\n}\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit, signal} from '@angular/core';\nimport {AbstractControl, FormControl, FormGroup} from '@angular/forms';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {ButtonDirective} from 'primeng/button';\nimport {Message} from 'primeng/message';\nimport {Tooltip} from 'primeng/tooltip';\nimport {Subscription, isObservable} from 'rxjs';\n\nimport {PrimeButtonStyleProps, buttonStyleToPrimeStyles} from '@mediusinc/mng-commons/form/api';\nimport {FieldActionDescriptor, FieldActionResult, FieldActionResultMessage, IFormEditorComponent} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n selector: 'mng-formly-field-action',\n templateUrl: './formly-field-action.component.html',\n imports: [TranslatePipe, Tooltip, Message, ButtonDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldActionComponent<EditorModel> extends ACommonsFormlyFieldType<void, EditorModel, FieldActionDescriptor<EditorModel>> implements OnInit, OnDestroy {\n protected buttonStyle = signal<PrimeButtonStyleProps>({severity: 'primary'});\n\n protected actionMessage = signal<FieldActionResultMessage | undefined>(undefined);\n\n private resultSubscription?: Subscription;\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n if (this.descriptor.button?.style) {\n this.buttonStyle.set(buttonStyleToPrimeStyles(this.descriptor.button?.style));\n }\n }\n\n ngOnDestroy() {\n this.resultSubscription?.unsubscribe();\n }\n\n onClick() {\n this.actionMessage.set(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.set(res.message);\n }\n }\n}\n","<div class=\"mng-field flex items-center\">\n <button\n type=\"button\"\n pButton\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 [size]=\"buttonStyle().size\"\n [severity]=\"buttonStyle().severity\"\n [text]=\"buttonStyle().text\"\n [outlined]=\"buttonStyle().outlined\"\n [raised]=\"buttonStyle().raised\"\n [rounded]=\"buttonStyle().rounded\"\n [class]=\"buttonStyle().class\"\n (click)=\"onClick()\"></button>\n @if (actionMessage()) {\n <p-message [severity]=\"actionMessage()?.severity ?? 'success'\" closable=\"true\">{{ actionMessage()?.content }}</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 {FormlyAttributes} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/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 selector: 'mng-formly-field-autocomplete',\n templateUrl: './formly-field-autocomplete.component.html',\n imports: [AutocompleteComponent, ReactiveFormsModule, TranslatePipe, FormlyAttributes],\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]=\"controlInputClassName()\"\n [class]=\"controlClassName()\"\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 [placeholder]=\"descriptor.placeholder ?? '' | translate\">\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 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 {FormlyAttributes} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/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 selector: 'mng-formly-field-dropdown',\n templateUrl: './formly-field-dropdown.component.html',\n imports: [DropdownComponent, ReactiveFormsModule, TranslatePipe, FormlyAttributes],\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 ?? '' | translate\"\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]=\"controlInputClassName()\"\n [class]=\"controlClassName()\">\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 (typeof descriptor.label === 'string') {\n return descriptor.labelUseModelBase ? getI18nTypePropertyKey(editorDescriptor?.model.i18nBaseKey ?? '', descriptor.label) : descriptor.label;\n } else {\n return getI18nTypePropertyKey(editorDescriptor?.model.i18nBaseKey ?? '', descriptor.property);\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 name: 'mngFormlyFieldLabel',\n pure: true\n})\nexport class FormlyFieldLabelPipe implements PipeTransform {\n transform(value?: AGenericFieldDescriptor, editorDescriptor?: EditorDescriptorInst<any, any>): string {\n const label = getEditorFieldLabel(value, editorDescriptor) ?? '';\n return label === '' ? '\\u00A0' : label;\n }\n}\n","import {Directive} from '@angular/core';\n\nimport {AFieldGroupDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyType} from './formly-type.abstract.component';\n\n@Directive()\nexport abstract class ACommonsFormlyGroupType<Model, EditorModel, Descriptor extends AFieldGroupDescriptor<Model, EditorModel>> extends ACommonsFormlyType<\n Model,\n EditorModel,\n Descriptor\n> {}\n","import {ChangeDetectionStrategy, Component, computed} from '@angular/core';\n\nimport {FormlyField} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {Fieldset} from 'primeng/fieldset';\n\nimport {CommonsFormlyFieldConfig, FieldGroupDescriptor, FieldGroupTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyGroupType} from '../formly-group-type.abstract.component';\n\n@Component({\n selector: 'mng-formly-field-fieldset',\n templateUrl: './formly-field-fieldset.component.html',\n imports: [TranslatePipe, FormlyFieldLabelPipe, Fieldset, FormlyField],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldFieldsetComponent<ET> extends ACommonsFormlyGroupType<ET, ET, FieldGroupDescriptor<ET>> {\n public readonly typeFieldset = FieldGroupTypeEnum.Fieldset;\n\n public fieldGroup = computed(() => {\n const fieldGroup = this.fieldSig()?.fieldGroup;\n return fieldGroup === undefined\n ? []\n : fieldGroup.map(f => ({\n type: ((f as CommonsFormlyFieldConfig).props.descriptor as FieldGroupDescriptor<any, any>)?.type,\n config: f as CommonsFormlyFieldConfig\n }));\n });\n}\n","@for (group of fieldGroup(); track group) {\n @switch (group.type) {\n @case (typeFieldset) {\n <p-fieldset\n [legend]=\"group.config.props.descriptor | mngFormlyFieldLabel: group.config.props.editorDescriptor | translate\"\n [hidden]=\"group.config.props['groupHidden']\">\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, ViewEncapsulation, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormArray, FormBuilder, FormControl, ReactiveFormsModule, ValidatorFn, Validators} from '@angular/forms';\n\nimport {FormlyAttributes, FormlyValidationMessage} from '@ngx-formly/core';\nimport {TranslatePipe, TranslateService} from '@ngx-translate/core';\nimport {Button} from 'primeng/button';\nimport {FileUpload} from 'primeng/fileupload';\nimport {Image} from 'primeng/image';\nimport {InputGroup} from 'primeng/inputgroup';\nimport {InputGroupAddon} from 'primeng/inputgroupaddon';\nimport {InputMask} from 'primeng/inputmask';\nimport {InputNumber} from 'primeng/inputnumber';\nimport {InputText} from 'primeng/inputtext';\nimport {RadioButton} from 'primeng/radiobutton';\nimport {Textarea} from 'primeng/textarea';\nimport {ToggleSwitch} from 'primeng/toggleswitch';\nimport {distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {ComponentDirective} from '@mediusinc/mng-commons/core';\nimport {InputEmptyValueDirective, 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 selector: 'mng-formly-field-input',\n templateUrl: './formly-field-input.component.html',\n styleUrl: './formly-field-input.component.css',\n imports: [\n InputNumber,\n ReactiveFormsModule,\n TranslatePipe,\n RadioButton,\n InputMask,\n FileUpload,\n InputText,\n ComponentDirective,\n InputTrimDirective,\n FormlyFieldLabelPipe,\n Textarea,\n Button,\n InputGroup,\n InputGroupAddon,\n ToggleSwitch,\n Image,\n InputEmptyValueDirective,\n FormlyAttributes,\n FormlyValidationMessage\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\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, '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 : undefined) ?? NUMBER_MIN_SAFE\"\n [max]=\"(descriptor.numberAutoCorrect ? descriptor.numberMax : undefined) ?? NUMBER_MAX_SAFE\"\n [step]=\"descriptor.numberStep ?? 1\"\n [useGrouping]=\"descriptor.numberUseGrouping\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [styleClass]=\"controlClassName()\"\n [inputStyleClass]=\"controlInputClassName()\"\n [locale]=\"descriptor.locale ?? applicationLocale\"\n [mode]=\"numberFieldMode\"\n [prefix]=\"descriptor.numberPrefix\"\n [suffix]=\"descriptor.numberSuffix\"\n [currency]=\"currency\"\n [currencyDisplay]=\"descriptor.currencyDisplay\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\"\n [mngInputEmptyValue]=\"descriptor.emptyValue ?? 'undefined'\">\n </p-inputNumber>\n }\n @case ('switch') {\n <div class=\"flex flex-col\">\n @if (descriptor.label !== null) {\n <label [for]=\"key\" [class]=\"labelClassName()\"\n >{{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n }\n <p-toggle-switch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"controlClassName()\"></p-toggle-switch>\n @if (showError) {\n <small class=\"mng-field-validation-messages\">\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=\"mb-2\">\n <p-radioButton [name]=\"$any(key)\" [value]=\"option.value\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"controlClassName()\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'ml-2 ' + (descriptor.radioLabelClassName ?? '')\">{{ 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 pTextarea\n [class]=\"controlWithInputClassName()\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\"\n [mngInputTrim]=\"descriptor.textTrim ?? 'both'\"\n [mngInputEmptyValue]=\"descriptor.emptyValue ?? 'undefined'\">\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 ?? '' | translate\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"controlWithInputClassName()\"\n [mngInputEmptyValue]=\"descriptor.emptyValue ?? 'undefined'\" />\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 chooseStyleClass=\"p-button-sm p-button-outlined\"\n cancelStyleClass=\"p-button-sm p-button-outlined\"\n [styleClass]=\"controlClassName()\"\n mode=\"advanced\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear($event)\">\n <ng-template #file let-file let-idx=\"index\">\n <div class=\"p-fileupload-file\">\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 items-center justify-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n }\n } @else {\n <span class=\"flex items-center justify-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n }\n } @else {\n <span class=\"flex items-center justify-center\">\n <i [class]=\"'pi ' + getFileDocumentTypeIcon(file) + ' text-2xl'\"></i>\n </span>\n }\n </div>\n <div class=\"p-fileupload-file-info\">\n <div class=\"p-fileupload-file-name\">{{ file.name }}</div>\n <span class=\"p-fileupload-file-size\">{{ fileUploadInput.formatSize(file.size) }}</span>\n </div>\n <div class=\"p-fileupload-file-actions\">\n <p-button\n icon=\"pi pi-times\"\n severity=\"danger\"\n size=\"small\"\n outlined=\"true\"\n rounded=\"true\"\n (click)=\"fileUploadInput.remove($event, idx)\"\n [disabled]=\"fileUploadInput.uploading\" />\n </div>\n </div>\n </ng-template>\n <ng-template #empty>\n <div class=\"text-gray-300 mng-fileupload-dragdrop-zone\">\n <span><i class=\"pi pi-file-import mr-2\"></i>{{ 'fileUpload.dragAndDrop' | translate }}</span>\n </div>\n </ng-template>\n </p-fileUpload>\n }\n @case ('imageUrl') {\n <div>\n @if (descriptor.imagePreview) {\n <div class=\"flex flex-wrap justify-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 mng-no-image\">\n <div class=\"p-image-preview-indicator\">\n <i class=\"p-image-preview-icon pi 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 <p-inputgroup [styleClass]=\"controlClassName() + ' mb-1'\">\n <input\n pInputText\n [placeholder]=\"'mngEditor.imageUrlPlaceholder' | translate\"\n [id]=\"$any(key)\"\n type=\"text\"\n [class]=\"controlInputClassName()\"\n [formControl]=\"$any(imageFormArray.at(idx))\"\n [formlyAttributes]=\"field\" />\n @if (descriptor.fileMultiple && !iFormControl.disabled && imageFormArray.controls.length > 1) {\n <p-inputgroup-addon>\n <p-button type=\"button\" icon=\"pi pi-minus\" severity=\"secondary\" (click)=\"removeImageUrlAt(idx)\"></p-button>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n }\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <p-button\n type=\"button\"\n icon=\"pi pi-plus\"\n size=\"small\"\n severity=\"primary\"\n outlined=\"true\"\n styleClass=\"mt-2\"\n [label]=\"'mngEditor.imageUrlAdd' | translate\"\n (click)=\"addImageUrl()\"></p-button>\n }\n }\n </div>\n }\n @default {\n <input\n pInputText\n [class]=\"controlWithInputClassName()\"\n [id]=\"$any(key)\"\n [type]=\"props.type || 'text'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mngInputTrim]=\"descriptor.textTrim ?? 'both'\"\n [mngInputEmptyValue]=\"descriptor.emptyValue ?? 'undefined'\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\" />\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 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 {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyAttributes} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {ButtonDirective} from 'primeng/button';\nimport {Dialog} from 'primeng/dialog';\nimport {InputGroup} from 'primeng/inputgroup';\nimport {InputGroupAddon} from 'primeng/inputgroupaddon';\nimport {InputText} from 'primeng/inputtext';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {\n CommonsInternalError,\n ComponentDirective,\n DataListParams,\n DataListResult,\n LoggerService,\n fromSubscribeError,\n getErrorLogLevel,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {TableComponent, TableTemplateDirective} 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 selector: 'mng-formly-field-lookup-dialog',\n templateUrl: 'formly-field-lookup-dialog.component.html',\n imports: [\n TranslatePipe,\n ReactiveFormsModule,\n Dialog,\n TableComponent,\n InputText,\n InputGroup,\n InputGroupAddon,\n ButtonDirective,\n FormlyAttributes,\n TableTemplateDirective,\n ComponentDirective\n ],\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 private readonly injector = inject(Injector);\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 dialogIsLoading = signal(false);\n\n private lookupDataProviderSubscription?: Subscription;\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 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","<p-inputgroup [styleClass]=\"controlClassName()\">\n <p-inputgroup [styleClass]=\"controlClassName()\">\n <p-inputgroup-addon>\n <button pButton type=\"button\" icon=\"pi pi-search\" text=\"true\" severity=\"secondary\" [disabled]=\"formControl.disabled\" (click)=\"openSelectDialog()\"></button>\n </p-inputgroup-addon>\n <input\n pInputText\n type=\"text\"\n (click)=\"openSelectDialog()\"\n [id]=\"$any(key)\"\n [readonly]=\"true\"\n [formlyAttributes]=\"field\"\n [formControl]=\"fieldLabelFormControl\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\" />\n @if (!props.required && formControl.value && !formControl.disabled) {\n <p-inputgroup-addon>\n <button pButton type=\"button\" icon=\"pi pi-times\" text=\"true\" severity=\"secondary\" (click)=\"clear()\"></button>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\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=\"mng-dialog mng-formly-field-lookup-dialog\">\n <ng-template #content>\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [result]=\"addItems()\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading()\"\n (selectionChange)=\"onSelectionChange($event)\">\n @if (config.table?.headerTitleComponent; as captionComponent) {\n <ng-template mngTableTemplate name=\"headerTitle\">\n <ng-container [mngComponent]=\"captionComponent\" attachToHost=\"true\"></ng-container>\n </ng-template>\n }\n @if (config.table?.columnActionComponent; as columnActionComponent) {\n <ng-template mngTableTemplate name=\"columnCustomLast\">\n <ng-container [mngComponent]=\"columnActionComponent\" attachToHost=\"true\"></ng-container>\n </ng-template>\n }\n </mng-table>\n </ng-template>\n\n <ng-template #footer>\n <button pButton type=\"button\" severity=\"secondary\" text=\"true\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n (click)=\"onAddItem()\"\n [loading]=\"dialogIsLoading()\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n </p-dialog>\n</p-inputgroup>\n","export const labelInfoTooltipDefaultIcon = 'pi pi-info-circle';\n","import {NgClass} 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 {TranslatePipe} from '@ngx-translate/core';\nimport {TableRowReorderEvent} from 'primeng/table';\nimport {Tooltip} from 'primeng/tooltip';\nimport {BehaviorSubject, distinctUntilChanged, of, throwError} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\n\nimport {CommonsInternalError, CommonsService, StyleSizeEnum} from '@mediusinc/mng-commons/core';\nimport {TableTemplateDirective} from '@mediusinc/mng-commons/table';\nimport {\n ActionContextValidation,\n ActionDescriptorInst,\n ActionPositionEnum,\n FieldManyEditorActionEnum,\n FieldManyEditorDescriptor,\n FormFieldEventComponentSubtype,\n FormFieldEventTypeEnum,\n action,\n actionEditor,\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 {labelInfoTooltipDefaultIcon} from '../../constants';\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n selector: 'mng-formly-table-dialog-form-field',\n templateUrl: './formly-field-table-dialog-form.component.html',\n styleUrls: ['./formly-field-table-dialog-form.component.css'],\n imports: [TranslatePipe, ActionComponent, ActionTableComponent, FormlyFieldLabelPipe, NgClass, Tooltip, TableTemplateDirective],\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 protected readonly labelInfoTooltipDefaultIcon = labelInfoTooltipDefaultIcon;\n\n public items = signal<T[]>([]);\n\n public actions: Array<ActionDescriptorInst<any>> = [];\n public toolbarRightActions: Array<ActionDescriptorInst<any>> = [];\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 = actionEditor<T, T, undefined, T, T, T>('details', this.descriptor.tableviewDescriptor.detailsEditor, {\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 this.actions.push(viewAction);\n }\n\n if (hasAddAction) {\n const addAction = actionEditor<T, T, undefined, undefined, T, undefined>('add', this.descriptor.tableviewDescriptor.addEditor, {\n parentModel: this.editorDescriptor.model,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withDialogSize(StyleSizeEnum.Small)\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 .withNotifications(false)\n .withIsVisibleFunction(() => this.formStateDisabled$.pipe(map(v => !v)))\n .withIsEnabledFunction(() => this.isEnabled$)\n .withButtonOpts({\n label: null,\n icon: 'pi pi-plus',\n style: {\n size: StyleSizeEnum.ExtraSmall,\n outlined: true\n }\n });\n this.actions.push(addAction);\n }\n if (hasEditAction) {\n const editAction = actionEditor<T, T, undefined, T, T, T>('edit', this.descriptor.tableviewDescriptor.editEditor, {\n parentModel: this.editorDescriptor.model,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowInline)\n .withDialogSize(StyleSizeEnum.Small)\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 .withNotifications(false)\n .withIsVisibleFunction(ctx => (this.hideActionsForRowWithDefaultLocalization(ctx) ? of(false) : this.formStateDisabled$.pipe(map(v => !v))))\n .withIsEnabledFunction(() => this.isEnabled$)\n .withButtonOpts({\n label: null,\n icon: 'pi pi-pencil',\n style: {\n size: StyleSizeEnum.ExtraSmall,\n outlined: true,\n severity: 'secondary'\n }\n });\n this.actions.push(editAction);\n }\n if (hasDeleteAction) {\n const deleteAction = action<T, undefined, T, T, T>('delete', {\n model: this.descriptor.tableviewDescriptor.model,\n parentModel: this.editorDescriptor.model,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowInline)\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 .withNotifications(false)\n .withIsVisibleFunction(ctx => (this.hideActionsForRowWithDefaultLocalization(ctx) ? of(false) : this.formStateDisabled$.pipe(map(v => !v))))\n .withIsEnabledFunction(() => this.isEnabled$)\n .withButtonOpts({\n label: null,\n icon: 'pi pi-trash',\n style: {\n severity: 'danger',\n size: StyleSizeEnum.ExtraSmall,\n outlined: true\n }\n });\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, 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\n [descriptor]=\"descriptor.tableDescriptor\"\n [items]=\"items()\"\n [actions]=\"actions\"\n [rowReorderEnabled]=\"!disableRowReorder()\"\n (rowReorder)=\"onRowReorder($event)\"\n tableClassName=\"mng-table-header-compact pb-2\">\n <ng-template mngTableTemplate name=\"headerTitle\">\n <div class=\"flex justify-end items-center\">\n @if (descriptor.label !== null) {\n <label class=\"grow\" [for]=\"key\"\n >{{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n @if (descriptor.labelInfoTooltip !== undefined) {\n <span [ngClass]=\"{'ml-1': props.required && props['hideRequiredMarker'] !== true}\">\n <i [class]=\"descriptor.labelInfoTooltipIcon ?? labelInfoTooltipDefaultIcon\" [pTooltip]=\"descriptor.labelInfoTooltip | translate\"></i>\n </span>\n }\n </label>\n }\n </div>\n </ng-template>\n <ng-template mngTableTemplate name=\"headerTitleRowRight\">\n <div class=\"flex justify-end items-center grow\">\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\" [hostComponent]=\"this\"></mng-action>\n }\n </div>\n </ng-template>\n</mng-action-table>\n","import {NgClass} 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 {TranslatePipe} from '@ngx-translate/core';\nimport {ButtonDirective} from 'primeng/button';\nimport {Dialog} from 'primeng/dialog';\nimport {TableRowReorderEvent} from 'primeng/table';\nimport {Tooltip} from 'primeng/tooltip';\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 fromSubscribeError,\n getErrorLogLevel,\n getObjectPropertyByPath,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {TableComponent, TableTemplateDirective} 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 {labelInfoTooltipDefaultIcon} from '../../constants';\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n selector: 'mng-formly-table-multiselect-add-field',\n templateUrl: './formly-field-table-dialog-multiselect.component.html',\n styleUrls: ['./formly-field-table-dialog-multiselect.component.css'],\n imports: [TranslatePipe, TableComponent, FormlyFieldLabelPipe, NgClass, ButtonDirective, Tooltip, Dialog, TableTemplateDirective],\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 protected readonly labelInfoTooltipDefaultIcon = labelInfoTooltipDefaultIcon;\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\n [descriptor]=\"descriptor.mainTableDescriptor\"\n [items]=\"items()\"\n [rowReorderEnabled]=\"!disableRowReorder()\"\n (rowReorder)=\"onRowReorder($event)\"\n class=\"mng-table-header-compact\">\n <ng-template mngTableTemplate name=\"headerTitle\">\n @if (descriptor.label !== null) {\n <label [for]=\"key\">\n {{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n @if (descriptor.labelInfoTooltip !== undefined) {\n <span [ngClass]=\"{'ml-1': props.required && props['hideRequiredMarker'] !== true}\">\n <i [class]=\"descriptor.labelInfoTooltipIcon ?? labelInfoTooltipDefaultIcon\" [pTooltip]=\"descriptor.labelInfoTooltip | translate\"></i>\n </span>\n }\n </label>\n }\n </ng-template>\n <ng-template mngTableTemplate name=\"headerTitleRowRight\">\n <div class=\"flex grow justify-end\">\n @if (hasAddAction && !options.formState?.disabled) {\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-plus\"\n rounded=\"true\"\n outlined=\"true\"\n class=\"mng-button-xs\"\n (click)=\"openAddDialog()\"\n [disabled]=\"formControl!.disabled\"></button>\n }\n </div>\n </ng-template>\n <ng-template mngTableTemplate name=\"columnCustomLast\" let-item=\"item\">\n @if (hasDeleteAction && !options.formState?.disabled) {\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-trash\"\n outlined=\"true\"\n severity=\"danger\"\n rounded=\"true\"\n class=\"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=\"mng-dialog mng-dialog-sm mng-formly-field-table-multiselect-dialog\">\n <ng-template #content class=\"table-container\">\n <div class=\"h-full flex flex-col\">\n <div class=\"grow 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-end mng-formly-field-table-multiselect-dialog-footer\">\n <button pButton type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" text=\"true\" severity=\"secondary\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n type=\"button\"\n [label]=\"'general.add' | translate\"\n icon=\"pi pi-check\"\n (click)=\"onAddItems()\"\n [loading]=\"dialogIsLoading()\"\n [disabled]=\"form.disabled\"></button>\n </div>\n </div>\n </ng-template>\n </p-dialog>\n}\n","import {ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation, signal} from '@angular/core';\n\nimport {FormlyField} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {Tab, TabList, TabPanel, TabPanels, Tabs} from 'primeng/tabs';\n\nimport {CommonsFormlyFieldConfig, FieldTabGroupDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyGroupType} from '../formly-group-type.abstract.component';\n\n@Component({\n selector: 'mng-formly-field-tabs',\n templateUrl: './formly-field-tabs.component.html',\n styleUrl: './formly-field-tabs.component.css',\n imports: [TranslatePipe, FormlyFieldLabelPipe, Tabs, TabList, Tab, TabPanels, TabPanel, FormlyField],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class FormlyFieldTabsComponent extends ACommonsFormlyGroupType<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 protected onEscape() {\n window.dispatchEvent(new KeyboardEvent('keydown', {key: 'Escape', bubbles: true, cancelable: true}));\n }\n}\n","<p-tabs scrollable=\"true\" [value]=\"fieldGroup()[0].id ?? 0\">\n <p-tablist>\n @for (tab of fieldGroup(); track tab; let idx = $index) {\n <p-tab [value]=\"tab.id ?? idx\" [class.hidden!]=\"tab.props['groupHidden']\" (keydown.escape)=\"onEscape()\">\n <span class=\"mng-tab-title\" [class.mng-tab-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : (tab.key ?? '')) + '_invalid']\">\n {{ tab.props.descriptor | mngFormlyFieldLabel: tab.props.editorDescriptor | translate }}\n </span>\n </p-tab>\n }\n </p-tablist>\n <p-tabpanels>\n @for (tab of fieldGroup(); track tab; let idx = $index) {\n <p-tabpanel [value]=\"tab.id ?? idx\" [class.hidden!]=\"tab.props['groupHidden']\">\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabpanel>\n }\n </p-tabpanels>\n</p-tabs>\n","import {ChangeDetectionStrategy, Component, DestroyRef, OnInit, inject, signal} from '@angular/core';\n\nimport {FieldWrapper, FormlyFieldConfig, FormlyValidationMessage} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {AFieldDescriptor, CommonsFormlyFieldConfig, EditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n selector: 'mng-formly-field-no-label-wrapper',\n templateUrl: './formly-field-no-label-wrapper.component.html',\n imports: [TranslatePipe, FormlyValidationMessage],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldNoLabelWrapperComponent extends FieldWrapper<CommonsFormlyFieldConfig> implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n\n public wrapperClassName = signal('mng-field-wrapper');\n public helpText = signal<string | undefined>(undefined);\n public shouldShowError = signal(false);\n\n public descriptor?: AFieldDescriptor<any, any, any, any>;\n public editorDescriptor?: EditorDescriptorInst<any, any>;\n\n public ngOnInit() {\n this.descriptor = this.props?.descriptor as AFieldDescriptor<any, any, any, any> | undefined;\n this.editorDescriptor = this.props?.editorDescriptor;\n\n const descriptorWrapperClass = this.descriptor?.className?.wrapper;\n if (descriptorWrapperClass != null) {\n this.wrapperClassName.update(c => c + ' ' + descriptorWrapperClass);\n }\n\n this.shouldShowError.set(this.field.type !== 'formly-group' || (typeof this.field.validators === 'object' && Object.keys(this.field.validators).length > 0));\n this.helpText.set(this.descriptor?.helpText);\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]=\"wrapperClassName()\">\n <ng-container #fieldComponent></ng-container>\n @if (helpText(); as ht) {\n <small class=\"block\">{{ ht | translate }}</small>\n }\n @if (showError && shouldShowError()) {\n <small class=\"block mng-field-validation-messages\">\n <formly-validation-message [field]=\"sanitizeErrorsForGroups(field)\"></formly-validation-message>\n </small>\n }\n</div>\n","import {NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, DestroyRef, OnInit, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {FieldWrapper, FormlyValidationMessage} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {Tooltip} from 'primeng/tooltip';\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 {labelInfoTooltipDefaultIcon} from '../../constants';\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\n\n@Component({\n selector: 'mng-formly-field-wrapper',\n templateUrl: './formly-field-wrapper.component.html',\n imports: [TranslatePipe, FormlyFieldLabelPipe, NgClass, Tooltip, FormlyValidationMessage],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldWrapperComponent extends FieldWrapper<CommonsFormlyFieldConfig> implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n protected readonly labelInfoTooltipDefaultIcon = labelInfoTooltipDefaultIcon;\n\n public wrapperClassName = signal('mng-field-wrapper');\n public helpText = signal<string | undefined>(undefined);\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 const descriptorWrapperClass = this.descriptor.className?.wrapper;\n if (descriptorWrapperClass != null) {\n this.wrapperClassName.update(c => c + ' ' + descriptorWrapperClass);\n }\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.wrapperClassName.update(c => c + ' mng-localized-input-translation-missing');\n }\n } else {\n this.helpText.set(descriptor.helpText);\n }\n });\n } else {\n this.helpText.set(descriptor.helpText);\n }\n }\n}\n","<div [class]=\"wrapperClassName()\">\n <div>\n @if (descriptor.label !== null) {\n <label [for]=\"key\" [class]=\"descriptor.className?.label\">\n {{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n @if (descriptor.labelInfoTooltip !== undefined) {\n <span [ngClass]=\"{'ml-1': props.required && props['hideRequiredMarker'] !== true}\">\n <i [class]=\"descriptor.labelInfoTooltipIcon ?? labelInfoTooltipDefaultIcon\" [pTooltip]=\"descriptor.labelInfoTooltip | translate\"></i>\n </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=\"block mng-field-validation-messages\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n</div>\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit, computed, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyAttributes} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {filter, isObservable} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {COMMONS_MODULE_CONFIG_IT, dateToIsoString} from '@mediusinc/mng-commons/core';\nimport {DatetimePickerComponent} from '@mediusinc/mng-commons/form';\nimport {FieldInputDescriptor, FormFieldEventComponentSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n selector: 'mng-formly-field-datepicker',\n templateUrl: './formly-field-datepicker.component.html',\n imports: [ReactiveFormsModule, TranslatePipe, FormlyAttributes, DatetimePickerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldDatepickerComponent<ET> extends ACommonsFormlyFieldType<any, ET, FieldInputDescriptor<ET>> implements OnInit, OnDestroy {\n public dpFormControl = new FormControl();\n readonly #validationClassName = signal('ng-valid');\n readonly styleClass = computed(() => [this.controlClassName(), this.#validationClassName()].join(' '));\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 this.#validationClassName.set(status === 'INVALID' ? 'ng-invalid' : 'ng-valid');\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 this.dpFormControl.statusChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(status => {\n if (status === 'INVALID') {\n const errors = {...this.formControl.errors};\n if (errors['invalidDate'] == null) {\n // add error and set all of them\n errors['invalidDate'] = true;\n this.formControl.setErrors(errors);\n }\n } else if (status === 'VALID') {\n const errors = {...this.formControl.errors};\n if (errors['invalidDate'] != null && Object.keys(errors).length === 1) {\n // only one error left, null should be set\n this.formControl.setErrors(null);\n } else if (errors['invalidDate'] != null) {\n // there are still others, remove this one and leave others\n delete errors['invalidDate'];\n this.formControl.setErrors(errors);\n }\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","<mng-datetime-picker\n [className]=\"styleClass()\"\n [formControl]=\"dpFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(minDate())\"\n [maxDate]=\"$any(maxDate())\"\n [time]=\"descriptor.datePickerShowTime\"\n [seconds]=\"descriptor.datePickerShowSeconds\"\n [milliseconds]=\"descriptor.datePickerShowMilliseconds\"\n [primeTimePicker]=\"descriptor.datePickerPrimeTimePicker\"\n [timeSelect]=\"descriptor.datePickerTimeSelect\"\n [timeSelectInterval]=\"descriptor.datePickerTimeSelectInterval\"\n showIcon=\"true\"\n showButtonBar=\"true\"\n [showClear]=\"!props.required\"\n [panelStyleClass]=\"controlClassName() + ' mng-field-datepicker'\"\n [inputStyleClass]=\"controlInputClassName()\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\"\n (blur)=\"onBlur()\">\n</mng-datetime-picker>\n","import {DatePipe} from '@angular/common';\n\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 {WrapperOption} from '../models/formly.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 {KeyofAndOfType} from '@mediusinc/mng-commons/core';\nimport {TypeDescriptor} from '@mediusinc/mng-commons/model';\nimport {\n AFieldDescriptor,\n EditorDescriptorInst,\n EditorDescriptorNestedObjectWrapper,\n FieldLookupDescriptor,\n FieldLookupProviderType,\n TableviewDescriptorInst,\n TableviewDescriptorType,\n fieldLookupGetProviderCfgObj\n} from '@mediusinc/mng-commons/tableview/api';\n\nexport function fieldProjectFieldToProperty<EditorModel, ParentEditorModel, ProjectedProp extends keyof EditorModel>(\n editor:\n | EditorDescriptorInst<EditorModel, ParentEditorModel>\n | TableviewDescriptorType<EditorModel, any, any, ParentEditorModel>\n | TableviewDescriptorInst<any, any, any, ParentEditorModel, any, any, any, EditorModel>,\n field: AFieldDescriptor<NonNullable<EditorModel[ProjectedProp]>, EditorModel, EditorModel[ProjectedProp], ParentEditorModel>,\n property: ProjectedProp\n): AFieldDescriptor<NonNullable<EditorModel[ProjectedProp]>, EditorModel, EditorModel[ProjectedProp], ParentEditorModel>;\nexport function fieldProjectFieldToProperty<FieldModel, EditorModel, FieldValue, ParentEditorModel, ProjectedProp extends keyof EditorModel>(\n editor:\n | EditorDescriptorInst<EditorModel, ParentEditorModel>\n | TableviewDescriptorType<EditorModel, any, any, ParentEditorModel>\n | TableviewDescriptorInst<any, any, any, ParentEditorModel, any, any, any, EditorModel>,\n field: AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>,\n property: ProjectedProp,\n mapFn: (value: FieldValue) => EditorModel[ProjectedProp]\n): AFieldDescriptor<NonNullable<EditorModel[ProjectedProp]>, EditorModel, EditorModel[ProjectedProp], ParentEditorModel>;\nexport function fieldProjectFieldToProperty<FieldModel, EditorModel, FieldValue, ParentEditorModel, ProjectedProp extends keyof EditorModel>(\n editor:\n | EditorDescriptorInst<EditorModel, ParentEditorModel>\n | TableviewDescriptorType<EditorModel, any, any, ParentEditorModel>\n | TableviewDescriptorInst<any, any, any, ParentEditorModel, any, any, any, EditorModel>,\n field: AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>,\n property: ProjectedProp,\n mapFn?: (value: FieldValue) => EditorModel[ProjectedProp]\n): AFieldDescriptor<NonNullable<EditorModel[ProjectedProp]>, EditorModel, EditorModel[ProjectedProp], ParentEditorModel> {\n return editor\n .addField<ProjectedProp, NonNullable<EditorModel[ProjectedProp]>, EditorModel[ProjectedProp]>(property)\n .asHidden()\n .withSetter(item => {\n const value = item[field.property as keyof object];\n item[property] = mapFn != null ? mapFn(value) : value;\n });\n}\n\nexport function fieldLookupWithOptionsValueProperty<\n Property extends keyof EditorModel,\n EditorModel,\n ParentEditorModel,\n Service,\n LookupModel,\n LookupValueProperty extends KeyofAndOfType<LookupModel, EditorModel[Property]>,\n FieldValue = EditorModel[Property]\n>(\n editor:\n | EditorDescriptorInst<EditorModel, ParentEditorModel>\n | EditorDescriptorNestedObjectWrapper<any, ParentEditorModel, EditorModel>\n | TableviewDescriptorType<EditorModel, any, any, ParentEditorModel>\n | TableviewDescriptorInst<any, any, any, ParentEditorModel, any, any, any, EditorModel>,\n property: Property,\n opts: {\n serviceProvider?: FieldLookupProviderType<LookupModel, Service>;\n type?: TypeDescriptor<LookupModel>;\n },\n lookupOptionsValueProperty: LookupValueProperty\n): FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel> {\n const fieldProperty = editor instanceof EditorDescriptorNestedObjectWrapper ? editor.getNestedPropertyPath(property) : (property as string);\n const cfg = fieldLookupGetProviderCfgObj(opts?.serviceProvider);\n const field = new FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel>(fieldProperty, {\n optionsValueProperty: lookupOptionsValueProperty as string,\n ...cfg\n });\n editor.addFieldDescriptor(field);\n return field;\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 {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 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, any, any, any, any, any>>();\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\ntype TableviewRoutePermissionObjType = {\n read?: APermissions;\n add?: APermissions;\n edit?: APermissions;\n delete?: APermissions;\n details?: APermissions;\n [key: string]: APermissions | undefined;\n};\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?: Record<string, APermissions>;\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: TableviewRoutePermissionObjType): this {\n return this.withPermissions(\n permissions.read ?? permissions[TableviewActionDefaultCategories.READ],\n permissions.add ?? permissions[TableviewActionDefaultCategories.ADD],\n permissions.edit ?? permissions[TableviewActionDefaultCategories.EDIT],\n permissions.delete ?? permissions[TableviewActionDefaultCategories.DELETE],\n permissions.details ?? permissions[TableviewActionDefaultCategories.DETAILS]\n );\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 super.withPermissions(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';\nimport {Provider} from '@angular/core';\n\nimport {FORMLY_CONFIG, provideFormlyCore} 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 let formlyProviders: Provider[] = [];\n if (config?.formly?.skip !== true) {\n formlyProviders = provideTableviewFormly();\n }\n\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 ...formlyProviders,\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\n/**\n * Prepares providers for usage of the tableview functionalities.\n *\n * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.\n */\nexport function provideTableviewChild(config?: TableviewFeatureConfig): Provider[] {\n let formlyProviders: Provider[] = [];\n if (config?.formly?.skip !== true) {\n formlyProviders = provideTableviewFormly();\n }\n\n return [\n DatePipe,\n NavigationService,\n {\n provide: COMMONS_TABLEVIEW_FEATURE_CONFIG_IT,\n useValue: config\n },\n ...formlyProviders,\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/**\n * Prepares providers for formly, including formly core.\n * If you choose to include formly with custom initialization and with tableview editor features, used this provider.\n * Currently multiple injections of `FORMLY_CONFIG` token won't work because of bug: https://github.com/ngx-formly/ngx-formly/issues/4107\n */\nexport function provideTableviewFormly(): Provider[] {\n const formlyProviders = provideFormlyCore() as Provider[]; // must case, because it wrongly returns Provider\n return [\n ...formlyProviders,\n // add custom provider for commons config\n {\n provide: FORMLY_CONFIG,\n multi: true,\n useFactory: commonsFormlyConfigProvider,\n deps: [TranslateService, DatePipe, COMMONS_TABLEVIEW_FEATURE_CONFIG_IT]\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/inject';\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/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/editor-validators';\nexport * from './editor/helpers/field-create';\nexport * from './editor/helpers/notification';\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":["getKeysByPriority","mergeMap","toObservable","take","filter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons-tableview.mjs","sources":["../../tableview/src/action/helpers/i18n.ts","../../tableview/src/tableview/services/tableview-feature-config.token.ts","../../tableview/src/action/models/execution/action-context.model.ts","../../tableview/src/action/helpers/action-execution.ts","../../tableview/src/action/helpers/notification.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/tableview/components/tableview/tableview.component.ts","../../tableview/src/tableview/components/tableview/tableview.component.html","../../tableview/src/action/helpers/inject.ts","../../tableview/src/action/services/data-provider-executor.service.ts","../../tableview/src/editor/components/formly/fields/formly-type.abstract.component.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-group-type.abstract.component.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/constants.ts","../../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/helpers/field-create.ts","../../tableview/src/editor/services/formly-config.provider.ts","../../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\ntype ActionI18nOptsType = {\n customKey?: string;\n fallbackKey?: string;\n item?: any;\n params?: any;\n missingTranslationStrategy?: I18nMissingTranslationStrategy;\n};\n\n/**\n * Asynchronously retrieves internationalized text for a specified action.\n *\n * If no translation is found for actionPathKeys, the fallback is used (if provided).\n * If custom key is provided, no other key will be used.\n * Item can be interpolated under itemTitle, itemId (if specified in action model) or under item.* (JSON-like path to property).\n * Params are interpolated in translation.\n *\n * @param {TranslateService} translate - The translation service used for retrieving localized strings.\n * @param {ActionDescriptorInst<any>} action - The action descriptor that provides context for localization keys and parameters.\n * @param {string | Array<string>} pathKeys - A string or array of strings representing the priority order of localization keys to look up for the action.\n * @param {ActionI18nOptsType} [opts] - Optional settings to customize the localization behavior, including custom keys, fallback keys, parameters, and missing translation strategies.\n * @return {Observable<string | null>} An observable that emits the localized string for the action or null if no appropriate translation is found.\n */\nexport function getI18nForAction(translate: TranslateService, action: ActionDescriptorInst<any>, pathKeys: string | Array<string>, opts?: ActionI18nOptsType): string | null {\n const keys = getKeysByPriority(action, pathKeys, opts?.customKey, opts?.fallbackKey);\n const i18nParams = getI18nActionParams(translate, action, opts?.item, opts?.params);\n const i18nValue = getI18n(translate, i18nParams, ...keys);\n return getTranslationDependingOnStrategy(opts?.missingTranslationStrategy, {i18nValue, firstKey: keys[0], fallbackKey: opts?.fallbackKey});\n}\n\n/**\n * Asynchronously retrieves internationalized text for a specified action.\n *\n * If no translation is found for actionPathKeys, the fallback is used (if provided).\n * If custom key is provided, no other key will be used.\n * Item can be interpolated under itemTitle, itemId (if specified in action model) or under item.* (JSON-like path to property).\n * Params are interpolated in translation.\n *\n * @param {TranslateService} translate - The translation service used for retrieving localized strings.\n * @param {ActionDescriptorInst<any>} action - The action descriptor that provides context for localization keys and parameters.\n * @param {string | Array<string>} pathKeys - A string or array of strings representing the priority order of localization keys to look up for the action.\n * @param {ActionI18nOptsType} [opts] - Optional settings to customize the localization behavior, including custom keys, fallback keys, parameters, and missing translation strategies.\n * @return {Observable<string | null>} An observable that emits the localized string for the action or null if no appropriate translation is found.\n */\nexport function getI18nForActionAsync(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n pathKeys: string | Array<string>,\n opts?: ActionI18nOptsType\n): Observable<string | null> {\n return getI18nActionParamsAsync(translate, action, opts?.item, opts?.params).pipe(\n mergeMap(i18nParams => {\n const keys = getKeysByPriority(action, pathKeys, opts?.customKey, opts?.fallbackKey);\n return getI18nAsync(translate, i18nParams, ...keys).pipe(\n map(i18nValue => getTranslationDependingOnStrategy(opts?.missingTranslationStrategy, {i18nValue, firstKey: keys[0], fallbackKey: opts?.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 | undefined,\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 default:\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', {item});\n}\n\nexport function getI18nActionEditorTitleAsync(translate: TranslateService, action: ActionEditorDescriptorInst<any>, item?: any): Observable<string | null> {\n return getI18nForActionAsync(translate, action, ['editor.title', 'title'], {customKey: action.editorTitle ?? undefined, item, params: action.editorTitleParams});\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 } else {\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 }\n return keys;\n}\n","import {InjectionToken} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {TableFeatureConfig} from '@mediusinc/mng-commons/table';\n\nimport {CommonsFormlyTypeConfig} from '../../editor/models/formly-config.model';\nimport {ValidatorOption, WrapperOption} from '../../editor/models/formly.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 table?: TableFeatureConfig;\n}\n\nexport const COMMONS_TABLEVIEW_FEATURE_CONFIG_IT = new InjectionToken<TableviewFeatureConfig>('COMMONS_TABLEVIEW_FEATURE_CONFIG');\n","import {Injector} from '@angular/core';\n\nimport {Confirmation, ToastMessageOptions} 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, ParametersItem, Service = undefined> implements IActionContext<\n Item,\n ParametersItem,\n Service,\n ActionInstance<Item, Service>,\n ViewContainer<Item, Service>\n> {\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?: ToastMessageOptions;\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<ParametersItem>,\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 {IDataProvider} from '@mediusinc/mng-commons/core';\nimport {ActionDescriptorInst, IViewContainer} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionDataProviderSource} from '../models/execution/action-context.model';\n\nexport function actionExecutionSelectDataProvider<Item, Service>(\n action: ActionDescriptorInst<any>,\n dataProvider?: IDataProvider<Item, Service>,\n viewContainer?: IViewContainer<any, any> | null\n): {\n dataProvider?: IDataProvider<Item, Service>;\n source: ActionDataProviderSource;\n} {\n if (dataProvider) {\n return {\n dataProvider,\n source: ActionDataProviderSource.ParameterOrInput\n };\n }\n if (action.dataProvider) {\n return {\n dataProvider: action.dataProvider,\n source: ActionDataProviderSource.Descriptor\n };\n }\n if (viewContainer?.dataProvider()) {\n return {\n dataProvider: viewContainer?.dataProvider(),\n source: ActionDataProviderSource.ViewContainer\n };\n }\n return {\n source: ActionDataProviderSource.Undefined\n };\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {MessageService, ToastMessageOptions} from 'primeng/api';\n\nimport {ICommonsError, getI18nErrorParams, getI18nForError, toastMessage} from '@mediusinc/mng-commons/core';\nimport {ActionDescriptorInst, ActionEditorDescriptorInst, ActionNotificationType} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getI18nForAction} from './i18n';\n\ntype ActionNotificationOptsType = ActionNotificationType & {\n item?: any;\n functionName?: string;\n};\n\n/**\n * Executes a notification success action for a given operation, translating\n * and displaying a success message using the specified translation and message services.\n *\n * Provide title or message for custom titles (unrelated to model/action base paths for i18n).\n * Item is interpolated as itemId, itemTitle or item.* for accessing desired properties.\n * Set functionName in order to get specific translations for executing function (run, fetch, submit).\n *\n * @param {TranslateService} translate - The translation service used to retrieve localized messages.\n * @param {MessageService} messageService - The message service responsible for displaying notifications.\n * @param {ActionDescriptorInst<any>} action - The action descriptor instance that defines the operation.\n * @param {ActionNotificationOptsType} [opts] - Optional configuration for customizing the success notification.\n * @return {Message | undefined} The generated message object if a success message is found, otherwise undefined.\n */\nexport function actionNotificationSuccess(\n translate: TranslateService,\n messageService: MessageService,\n action: ActionDescriptorInst<any>,\n opts?: ActionNotificationOptsType\n): ToastMessageOptions | undefined {\n const functionName = opts?.functionName ?? 'run';\n const actionSuccessTitle =\n getI18nForAction(translate, action, getKeysByPriority(action, functionName, 'success', 'title'), {\n customKey: opts?.title,\n item: opts?.item,\n fallbackKey: 'general.success'\n }) ?? undefined;\n const actionSuccessMessage =\n getI18nForAction(translate, action, getKeysByPriority(action, functionName, 'success', 'message'), {\n customKey: opts?.message,\n item: opts?.item,\n fallbackKey: 'general.successMessage'\n }) ?? undefined;\n if (!actionSuccessMessage) {\n return undefined;\n }\n return toastMessage(actionSuccessMessage, undefined, {messageService: messageService, title: actionSuccessTitle});\n}\n\n/**\n * Displays a notification for an error that occurred during an action execution.\n *\n * Provide title or message for custom titles (unrelated to model/action base paths for i18n).\n * Item is interpolated as itemId, itemTitle or item.* for accessing desired properties.\n * Set functionName in order to get specific translations for executing function (run, fetch, submit).\n *\n * @param {TranslateService} translate - The service used for translations.\n * @param {MessageService} messageService - The service used for displaying messages.\n * @param {ActionDescriptorInst<any>} action - The action descriptor instance related to the error.\n * @param {ICommonsError} error - The error object containing details about the error.\n * @param {'warn' | 'error'} [severity='error'] - The severity level of the notification (either 'warn' or 'error').\n * @param {ActionNotificationOptsType} [opts] - Optional parameters for customizing the notification, such as title, message, or function name.\n * @return {Message} - The message object created and displayed as a notification.\n */\nexport function actionNotificationError(\n translate: TranslateService,\n messageService: MessageService,\n action: ActionDescriptorInst<any>,\n error: ICommonsError,\n severity: 'warn' | 'error' = 'error',\n opts?: ActionNotificationOptsType\n): ToastMessageOptions {\n const params = {\n errorMessage: getI18nForError(translate, error) ?? error.message,\n ...getI18nErrorParams(error)\n };\n const functionName = opts?.functionName ?? 'run';\n const actionErrorTitle =\n getI18nForAction(translate, action, getKeysByPriority(action, functionName, 'error', 'title'), {\n customKey: opts?.title,\n item: opts?.item,\n fallbackKey: 'general.error',\n params\n }) ?? undefined;\n const actionErrorMessage = getI18nForAction(translate, action, getKeysByPriority(action, functionName, 'error', 'message'), {\n customKey: opts?.message,\n item: opts?.item,\n fallbackKey: 'general.errorMessage',\n params\n });\n return toastMessage(actionErrorMessage ?? error.message, severity, {messageService: messageService, icon: 'pi-exclamation-triangle', title: actionErrorTitle});\n}\n\nfunction getKeysByPriority(action: ActionDescriptorInst<any>, functionName: string, prefix: string, suffix: string): string[] {\n const keys = [functionName];\n if (action instanceof ActionEditorDescriptorInst && (functionName === 'run' || functionName === 'submit')) {\n keys.pop();\n keys.push(`submit`, `run`);\n }\n return keys.map(key => `${prefix}.${key}.${suffix}`).concat(`${prefix}.${suffix}`);\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 ActionInstanceStateEnum,\n ActionTypeEnum,\n IActionEditorComponent,\n IActionInstance\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionContext} from './action-context.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, Service, any, any, any>;\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<any>;\n private readonly contexts: Array<ActionContext<Item, any, 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, Service, any, any, any>, 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, any, 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, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NavigationEnd, Router} from '@angular/router';\n\n@Injectable()\nexport class NavigationService {\n private readonly router = inject(Router);\n private readonly location = inject(Location);\n\n private history: Array<string> = [];\n\n constructor() {\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<any>>>([]);\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 Nullable,\n ParametrizePipe,\n StyleSizeEnum,\n escapeHtmlAny,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {buttonStyleToPrimeStyles} from '@mediusinc/mng-commons/form/api';\nimport {\n ActionActivationTriggerEnum,\n ActionContextValidation,\n ActionDescriptorInst,\n ActionEditorDescriptorInst,\n ActionInstanceStateEnum,\n ActionRunFnType,\n ActionTypeEnum,\n CommonsActionError,\n CommonsActionErrorOptions,\n DataProviderExecutor,\n IActionEditorComponent,\n IActionInstance,\n TableviewActionDefaultCategories\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {COMMONS_TABLEVIEW_FEATURE_CONFIG_IT} from '../../tableview/services/tableview-feature-config.token';\nimport {actionExecutionSelectDataProvider} from '../helpers/action-execution';\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 {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, ParametersItem, Service>(\n action: ActionDescriptorInst<Item>,\n parameters: ActionParameters<ParametersItem>,\n dataProvider?: IDataProvider<Item, Service>\n ): ActionContextValidation<Item, ParametersItem, Service> {\n const ctxDataProvider = actionExecutionSelectDataProvider(action, dataProvider, this.viewContainer);\n return <ActionContextValidation<Item, ParametersItem, Service>>{\n descriptor: action,\n parameters: parameters,\n serviceInstance: this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider.dataProvider) ?? undefined,\n dataProvider: ctxDataProvider.dataProvider\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, ParametersItem, Service = undefined>(ctx: ActionContext<Item, ParametersItem, Service>) {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n\n if (isMainRunFn && ctx.instance.action.runConfirmation != null) {\n if (ctx.instance.action.runConfirmation.shouldShowFn && !ctx.instance.action.runConfirmation.shouldShowFn(ctx)) {\n this.runWithoutConfirmation(ctx);\n return;\n }\n\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 confirmationOpts = ctx.instance.action.runConfirmation;\n\n const item = ctx.parameters.item;\n const escapedItem = escapeHtmlAny(item);\n\n const getTranslationOrUndefined = (label: string | null | undefined, defLabel: string, fallback: string, escapeItem = false) =>\n label !== null\n ? (getI18nForAction(this.translate, ctx.instance.action, defLabel, {\n customKey: label,\n item: escapeItem ? escapedItem : item,\n fallbackKey: fallback\n }) ?? undefined)\n : undefined;\n\n let confirmParams: Confirmation = {\n icon: confirmationOpts.icon !== null ? (confirmationOpts.icon ?? 'pi pi-exclamation-triangle') : undefined,\n header: getTranslationOrUndefined(confirmationOpts.title, 'confirm.title', 'general.confirmation'),\n message: getTranslationOrUndefined(confirmationOpts.message, 'confirm.message', 'general.confirmation', true),\n acceptVisible: true,\n acceptLabel: getTranslationOrUndefined(confirmationOpts.acceptButton?.label, 'confirm.accept', 'general.yes'),\n acceptIcon: confirmationOpts.acceptButton?.icon !== null ? (confirmationOpts.acceptButton?.icon ?? ctx.instance.action.button?.icon ?? 'pi pi-check') : undefined,\n acceptButtonProps: buttonStyleToPrimeStyles({\n severity: ctx.instance.action.button?.style?.severity,\n ...confirmationOpts.acceptButton?.style\n }),\n rejectVisible: !(confirmationOpts.rejectButton === false || (confirmationOpts.rejectButton?.label === null && confirmationOpts.rejectButton?.icon === null)),\n rejectLabel: confirmationOpts.rejectButton !== false ? getTranslationOrUndefined(confirmationOpts.rejectButton?.label, 'confirm.reject', 'general.no') : undefined,\n rejectIcon:\n confirmationOpts.rejectButton !== false && confirmationOpts.rejectButton?.icon !== null ? (confirmationOpts.rejectButton?.icon ?? 'pi pi-times') : undefined,\n rejectButtonProps:\n confirmationOpts.rejectButton !== false\n ? buttonStyleToPrimeStyles({\n severity: 'secondary',\n ...confirmationOpts.rejectButton?.style\n })\n : undefined,\n closeOnEscape: confirmationOpts.closeOnEscape,\n accept: () => {\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationEndAccept;\n this.runWithoutConfirmation(ctx);\n },\n 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\n if (confirmationOpts.configMapFn) {\n confirmParams = confirmationOpts.configMapFn(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, ParametersItem, Service = undefined>(ctx: ActionContext<Item, ParametersItem, 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, Service, any, any, any, any>;\n\n let fnObs: ActionRunFnType<Item, Service, ParametersItem>;\n switch (ctx.functionName) {\n case 'submit':\n actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item, Service, any, any, any, any>;\n if (typeof actionEditor.submitFunction !== 'function') {\n if (actionEditor.tableviewCategory === TableviewActionDefaultCategories.ADD) {\n fnObs = this.dataProviderExecutor.runCreateOrFail.bind(this.dataProviderExecutor);\n } else if (actionEditor.tableviewCategory === TableviewActionDefaultCategories.EDIT) {\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 as Nullable<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 as Nullable<Item>) ?? undefined;\n }\n } else {\n fnObs = actionEditor.submitFunction as unknown as ActionRunFnType<Item, Service, ParametersItem>;\n }\n break;\n case 'fetch':\n actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item, Service, any, any, any, any>;\n if (typeof actionEditor.fetchFunction !== 'function') {\n if (actionEditor.tableviewCategory === TableviewActionDefaultCategories.EDIT || actionEditor.tableviewCategory === TableviewActionDefaultCategories.DETAILS) {\n const isEdit = actionEditor.tableviewCategory === TableviewActionDefaultCategories.EDIT;\n fnObs = ctx => this.dataProviderExecutor.runFetchOrFail(ctx, isEdit ? 'update' : undefined);\n } else if (ctx.dataProviderSource > ActionDataProviderSource.ViewContainer) {\n const defaultFetch = of((ctx.parameters?.item as Nullable<Item>) ?? undefined);\n fnObs = ctx => {\n if (ctx.parameters.itemId || typeof ctx.parameters.item === 'object') {\n return this.dataProviderExecutor.runFetch(ctx, undefined, defaultFetch);\n }\n return defaultFetch;\n };\n } else {\n fnObs = ctx => (ctx.parameters?.item as Nullable<Item>) ?? undefined;\n }\n } else {\n fnObs = actionEditor.fetchFunction as unknown as ActionRunFnType<Item, Service, ParametersItem>;\n }\n break;\n case 'run':\n default:\n if (!ctx.instance.action.hasRunFunction && ctx.instance.action.tableviewCategory === TableviewActionDefaultCategories.DELETE) {\n fnObs = this.dataProviderExecutor.runDeleteOrFail.bind(this.dataProviderExecutor);\n } else {\n fnObs = ctx.instance.action.runFunction as unknown as ActionRunFnType<Item, Service, ParametersItem>;\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 // handle notifications\n const notificationItem = {\n ...ctx.parameters?.item,\n ...ctx.parameters?.formItem,\n ...ctx.parameters?.submitResult,\n ...runResult\n };\n if (isMainRunFn && (ctx.instance.action.runNotificationOnSuccess ?? true)) {\n ctx.notification = actionNotificationSuccess(this.translate, this.messageService, ctx.instance.action, {\n functionName: ctx.functionName,\n item: notificationItem,\n ...(typeof ctx.instance.action.runNotificationOnSuccess === 'object' ? ctx.instance.action.runNotificationOnSuccess : {})\n });\n } else if (!isMainRunFn && (actionEditor.fetchNotificationOnSuccess ?? false)) {\n ctx.notification = actionNotificationSuccess(this.translate, this.messageService, actionEditor, {\n functionName: ctx.functionName,\n item: notificationItem,\n ...(typeof actionEditor.fetchNotificationOnSuccess === 'object' ? actionEditor.fetchNotificationOnSuccess : {})\n });\n }\n\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 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<any, Item, any>(\n afterRunAction,\n <ActionParameters<Item>>{\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 }\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 let errorObs = of(void 0);\n if (isMainRunFn) {\n ctx.instance.error = err;\n ctx.instance.isRunLoadingSubject.next(false);\n\n if (ctx.instance.action.runNotificationOnError ?? true) {\n actionError.notification = actionNotificationError(this.translate, this.messageService, ctx.instance.action, actionError, undefined, {\n functionName: ctx.functionName,\n item: ctx.parameters.item,\n ...(typeof ctx.instance.action.runNotificationOnError === 'object' ? ctx.instance.action.runNotificationOnError : {})\n });\n actionError.notificationEmitSource = ActionExecutorService.className;\n ctx.notification = actionError.notification;\n }\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, ParametersItem, Service>(\n onRunErrorAction,\n <ActionParameters<ParametersItem>>{\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 } else if (actionEditor.fetchNotificationOnError ?? true) {\n ctx.notification = actionNotificationError(this.translate, this.messageService, actionEditor, actionError, undefined, {\n functionName: ctx.functionName,\n item: {\n ...ctx.parameters.item\n },\n ...(typeof actionEditor.fetchNotificationOnError === 'object' ? actionEditor.fetchNotificationOnError : {})\n });\n actionError.notificationEmitSource = ActionExecutorService.className;\n ctx.notification = actionError.notification;\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, ParametersItem, Service>(\n action: ActionEditorDescriptorInst<Item, any, any, ParametersItem, any, any>,\n parameters: ActionParameters<ParametersItem>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, ParametersItem, 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, ParametersItem, Service>(\n action: ActionEditorDescriptorInst<Item, any, ParametersItem, any, any, any>,\n parameters: ActionParameters<ParametersItem>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, ParametersItem, 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, ParametersItem, Service>(\n instance: ActionInstance<Item, Service>,\n parameters: ActionParameters<ParametersItem>,\n functionName: 'submit' | 'fetch',\n dataProvider?: IDataProvider,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, ParametersItem, 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, Service, any, any, any, any>;\n const ctxDataProvider = actionExecutionSelectDataProvider<Item, Service>(editorAction, dataProvider, this.viewContainer);\n const ctx = new ActionContext<Item, ParametersItem, Service>(\n this.injector,\n instance,\n parameters,\n functionName,\n (this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider.dataProvider) ?? undefined) as Service,\n ctxDataProvider.dataProvider,\n this.viewContainer ?? undefined\n );\n ctx.dataProviderSource = ctxDataProvider.source;\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, ParametersItem, Service>(\n action: ActionDescriptorInst<Item, Service, ParametersItem, any, any>,\n parameters: ActionParameters<ParametersItem>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: ActionInstance<any, any>\n ): ActionContext<Item, ParametersItem, Service> {\n instance = this.getOrCreateInstance<Item, Service>(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n\n const ctxDataProvider = actionExecutionSelectDataProvider<Item, Service>(action, undefined, this.viewContainer);\n const ctx = new ActionContext<Item, ParametersItem, Service>(\n this.injector,\n instance,\n parameters,\n 'run',\n (this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider.dataProvider) ?? undefined) as Service,\n ctxDataProvider.dataProvider,\n this.viewContainer ?? undefined\n );\n ctx.dataProviderSource = ctxDataProvider.source;\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, ParametersItem, Service = undefined>(\n action: ActionDescriptorInst<Item, any, ParametersItem, any, any>,\n parameters: ActionParameters<ParametersItem>,\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 closable: 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 dialogConfig.maximizable = action.dialogIsMaximizable ?? true;\n }\n\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n dialogClassNames.push('mng-action-editor-on-route-dialog');\n dialogConfig.closable = false;\n dialogConfig.closeOnEscape = false;\n }\n\n dialogConfig.styleClass = dialogClassNames.join(' ');\n\n // commons has its own focus trap\n // there is also a bug in primeng: https://github.com/primefaces/primeng/issues/17479\n dialogConfig.focusOnShow = false;\n dialogConfig.modal = true;\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 ?? undefined;\n\n return instance;\n } else {\n // directly execute action\n instance.state = ActionInstanceStateEnum.ActivationEnd;\n const context = this.prepareContext<Item, any, 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 // actionUrl must be split to correctly parametrize route parameters by angular:\n // - '@' should not be escaped\n // - '/' must not be escaped\n const actionUrlSegments = this.parametrize.transform(actionUrl.split('/'), parameters.itemId, parameters.item, parameters.actionData);\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, 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, any, any, any>,\n parameters?: ActionParameters<any>,\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 {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OutputRefSubscription,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n inject,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute, RouterLink} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {MenuItem} from 'primeng/api';\nimport {ButtonDirective} from 'primeng/button';\nimport {Menu} from 'primeng/menu';\nimport {SplitButton} from 'primeng/splitbutton';\nimport {Tooltip} 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 effectWithDeps,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {buttonStyleToPrimeStyles} from '@mediusinc/mng-commons/form/api';\nimport {\n ActionContextValidation,\n ActionDescriptorInst,\n ActionInstanceStateEnum,\n ActionLinkDescriptorInst,\n ActionTypeEnum,\n IActionComponent,\n TableviewRouteData\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getI18nForActionAsync} from '../../helpers/i18n';\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\ntype ActionProcessingParamsType = {\n itemId?: IdType;\n item?: any;\n selectedItems: Array<any>;\n actionData?: ActionData;\n dataListParams?: DataListParams;\n routePermissions?: APermissions;\n hostComponent?: any;\n};\n\n@Component({\n selector: 'mng-action',\n templateUrl: './action.component.html',\n styleUrls: ['./action.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ParametrizePipe, ComponentDirective, RouterLink, ButtonDirective, Tooltip, SplitButton, Menu],\n providers: [provideActionExecutor()],\n host: {'[class]': 'hostClass()', '[class.m-0]': 'isHostHidden()', '[id]': 'id()'},\n encapsulation: ViewEncapsulation.None\n})\nexport class ActionComponent<Item = any, Service = undefined> implements OnDestroy {\n private readonly routeService = inject(ActivatedRoute);\n private readonly translate = inject(TranslateService);\n private readonly authorization = inject(PermissionService);\n private readonly actionExecutor = inject(ActionExecutorService);\n private readonly viewContainer = inject(ViewContainer<Item, Service>, {optional: true});\n\n // metadata and editor mode input\n public action = input.required<ActionDescriptorInst<Item, Service, any, any, any>>();\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 // eslint-disable-next-line @angular-eslint/no-output-native\n public finish = output<ActionInstance<Item, Service>>();\n\n public subactionsMenu = viewChild(Menu);\n\n public hostClass = computed(() => this.action().button?.style?.class ?? 'mng-action-button' + ` ${this.action().actionNameLong} ${this.action().actionName}`);\n public isHostHidden = computed(() => !this.isVisible() || !this.isPermitted());\n public id = computed(() => this.action().actionNameLong);\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 buttonStyles = computed(() => {\n const buttonDescriptor = this.action().button?.style;\n return buttonStyleToPrimeStyles(buttonDescriptor, this.hasNoTitle());\n });\n\n public subactions = signal<MenuItem[]>([]);\n private subactionSubscriptions: Subscription[] = [];\n\n readonly #actionProcessingParams = computed(\n () =>\n <ActionProcessingParamsType>{\n itemId: this.itemId(),\n item: this.item(),\n selectedItems: this.selectedItems(),\n actionData: this.actionData(),\n dataListParams: this.dataListParams(),\n routePermissions: this.routePermissions(),\n hostComponent: this.hostComponent()\n }\n );\n\n private instance?: ActionInstance<Item, Service>;\n\n constructor() {\n effectWithDeps([this.action, this.dataProvider, this.route, this.hasNoTitle, this.#actionProcessingParams], ([action, dataProvider, route, hasNoTitle, processingParams]) =>\n this.processSubscriptions(action, dataProvider, route, hasNoTitle, processingParams)\n );\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 action: ActionDescriptorInst<Item, Service, any, any, any>,\n dataProvider: IDataProvider<Item, Service> | undefined,\n route: ActivatedRoute,\n hasNoTitle: boolean,\n params?: ActionProcessingParamsType\n ) {\n const parameters: ActionParameters<Item> = {\n itemId: params?.itemId,\n item: params?.item,\n actionData: params?.actionData,\n sourceComponent: this\n };\n if (action.hasItemsSelection) {\n parameters.selectedItems = params?.selectedItems;\n }\n\n const context = this.actionExecutor.prepareActionContextValidation(action, parameters, 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 if (typeof action.permissions !== 'undefined' || typeof params?.routePermissions !== 'undefined') {\n this.isPermittedSubscription?.unsubscribe();\n const permissions =\n action.permissions && params?.routePermissions\n ? Permissions.All.of(params.routePermissions, action.permissions)\n : (params?.routePermissions ?? action.permissions!);\n this.isVisibleSubscription = this.authorization.isActionVisible(permissions, context as ActionContextValidation<unknown, unknown>, route.snapshot).subscribe({\n next: res => this.isPermitted.set(res)\n });\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 (!hasNoTitle) {\n this.labelSubscription?.unsubscribe();\n this.labelSubscription = getI18nForActionAsync(this.translate, action, 'title', {customKey: action.button?.label ?? undefined, item: params?.item}).subscribe({\n next: i18n => this.label.set(i18n ?? '')\n });\n }\n\n this.tooltipSubscription?.unsubscribe();\n if (action.button?.tooltip !== null && (action.button?.tooltip ?? true)) {\n this.tooltipSubscription = getI18nForActionAsync(this.translate, action, 'tooltip', {\n customKey: action.button?.tooltip,\n item: params?.item,\n missingTranslationStrategy: 'returnNull'\n }).subscribe({\n next: i18n => {\n this.tooltip.set(i18n ?? action.button?.tooltip ?? '');\n }\n });\n }\n\n this.subactions.set(this.processSubactions(action, dataProvider, route, params));\n }\n\n private processSubactions(\n action: ActionDescriptorInst<Item, Service, any, any, any>,\n dataProvider: IDataProvider<Item, Service> | undefined,\n route: ActivatedRoute,\n params?: ActionProcessingParamsType\n ): MenuItem[] {\n this.subactionSubscriptions.forEach(s => s.unsubscribe());\n this.subactionSubscriptions = [];\n\n return action.subactions.map(subaction => {\n const menuItem = {} as MenuItem;\n\n menuItem.icon = subaction.button?.icon ?? undefined;\n this.subactionSubscriptions.push(\n getI18nForActionAsync(this.translate, subaction, 'title', {customKey: subaction.button?.label ?? undefined, item: params?.item}).subscribe({\n next: res => (menuItem.label = res ?? undefined)\n })\n );\n this.subactionSubscriptions.push(\n getI18nForActionAsync(this.translate, subaction, 'tooltip', {customKey: subaction.button?.tooltip ?? undefined, item: params?.item}).subscribe({\n next: res => (menuItem.tooltip = res ?? undefined)\n })\n );\n\n const parameters: ActionParameters<Item> = {\n itemId: params?.itemId,\n item: params?.item,\n actionData: params?.actionData,\n sourceComponent: this\n };\n\n if (subaction.hasItemsSelection) {\n parameters.selectedItems = params?.selectedItems;\n }\n\n const context = this.actionExecutor.prepareActionContextValidation(subaction, parameters, 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>, 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>, 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 return menuItem;\n });\n }\n}\n","@if (isVisible() && isPermitted()) {\n @if (actionLink(); as actionLink) {\n @if (actionLink.url !== '') {\n <a\n pButton\n [label]=\"label()\"\n [icon]=\"$any(action().button?.icon)\"\n [iconPos]=\"action().button?.iconPosition ?? 'left'\"\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 ?? 'top'\"\n [size]=\"buttonStyles().size\"\n [severity]=\"buttonStyles().severity\"\n [text]=\"buttonStyles().text\"\n [outlined]=\"buttonStyles().outlined\"\n [raised]=\"buttonStyles().raised\"\n [rounded]=\"buttonStyles().rounded\"\n [class]=\"buttonStyles().class\">\n </a>\n } @else {\n <a\n pButton\n [icon]=\"$any(action().button?.icon)\"\n [iconPos]=\"action().button?.iconPosition ?? 'left'\"\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 ?? 'top'\"\n [size]=\"buttonStyles().size\"\n [severity]=\"buttonStyles().severity\"\n [text]=\"buttonStyles().text\"\n [outlined]=\"buttonStyles().outlined\"\n [raised]=\"buttonStyles().raised\"\n [rounded]=\"buttonStyles().rounded\"\n [class]=\"buttonStyles().class\">\n </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 @defer (on idle) {\n <p-splitButton\n [icon]=\"action().button?.icon ?? undefined\"\n [iconPos]=\"action().button?.iconPosition ?? 'left'\"\n [label]=\"label()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button?.tooltipPosition ?? 'top'\"\n [disabled]=\"!isEnabled() || inputDisabled()\"\n (onClick)=\"triggerAction(action())\"\n [size]=\"buttonStyles().size\"\n [severity]=\"buttonStyles().severity\"\n [text]=\"buttonStyles().text\"\n [outlined]=\"buttonStyles().outlined\"\n [raised]=\"buttonStyles().raised\"\n [rounded]=\"buttonStyles().rounded\"\n [class]=\"buttonStyles().class\"\n [model]=\"subactions()\" />\n }\n } @else {\n <button\n pButton\n type=\"button\"\n [icon]=\"$any(action().button?.icon)\"\n [iconPos]=\"action().button?.iconPosition ?? 'left'\"\n [label]=\"label()\"\n [pTooltip]=\"tooltip()\"\n [tooltipPosition]=\"action().button?.tooltipPosition ?? 'top'\"\n [loading]=\"loading() || inputLoading()\"\n [disabled]=\"!isEnabled() || inputDisabled()\"\n [size]=\"buttonStyles().size\"\n [severity]=\"buttonStyles().severity\"\n [text]=\"buttonStyles().text\"\n [outlined]=\"buttonStyles().outlined\"\n [raised]=\"buttonStyles().raised\"\n [rounded]=\"buttonStyles().rounded\"\n [class]=\"buttonStyles().class\"\n (click)=\"triggerAction(action(), undefined, $event)\"></button>\n @defer (on idle) {\n <p-menu #subactionsMenu [model]=\"subactions()\" [popup]=\"true\" appendTo=\"body\" styleClass=\"mng-action-menu\"></p-menu>\n }\n }\n}\n","import {DatePipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\n\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {EditorAutoSaveStatus} from '../../../models/editor-auto-save-preview.model';\n\n@Component({\n selector: 'mng-editor-auto-save-status',\n imports: [DatePipe, TranslatePipe],\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.split('?')[0].split('#')[0];\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, FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable, combineLatest, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {CommonsInternalError, CommonsService} from '@mediusinc/mng-commons/core';\nimport {LookupDataProviderInst} from '@mediusinc/mng-commons/form/api';\nimport {\n AFieldDescriptor,\n CommonsFormlyFieldConfig,\n CommonsFormlyFormState,\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 {ValidationMessageOption} from '../models/formly.model';\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.table.withLocalized().withLocalizationLocaleProperty(descriptor.localizationLocaleProperty);\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 .addFieldLookup(descriptor.localizationLocaleProperty, {serviceProvider: new LookupDataProviderInst<string, CommonsService>(CommonsService)})\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.addTabGroup('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 {props, expressions, ...restConfig} = tab.formlyConfig as CommonsFormlyFieldConfig;\n const tabField: CommonsFormlyFieldConfig = {\n ...restConfig,\n id: tab.name,\n props: {\n ...props,\n formEditorComponent,\n descriptor: tab,\n editorDescriptor: editorDescriptor\n },\n expressions: {\n ...expressions\n },\n fieldGroup: []\n };\n if (tab.title) {\n tabField.props.label = tab.title;\n }\n\n if (tab.hiddenExpression) {\n tabField.expressions!['props.groupHidden'] = 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 fieldGroupClassName: 'field-group-class-name'\n };\n if (group.title) {\n groupField.props.label = group.title;\n }\n\n if (group.hiddenExpression) {\n groupField.expressions!['props.groupHidden'] = 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\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\n const {props, validation, ...restConfig} = descriptor.formlyConfig as CommonsFormlyFieldConfig;\n // wrap in group to be able to use flex grid\n const wrapperGroup: CommonsFormlyFieldConfig = {\n ...restConfig,\n fieldGroupClassName: descriptor?.className?.grid ?? 'grid grid-cols-12 gap-4',\n fieldGroup: fields,\n props: {\n ...props\n },\n validation: {\n ...validation,\n show: descriptor.validationOpts.forceShowMessage\n }\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 {modelOptions, hooks, props, validation, expressions, ...restConfig} = descriptor.formlyConfig as CommonsFormlyFieldConfig<any, Item>;\n const field: CommonsFormlyFieldConfig<any, Item> = {\n ...restConfig,\n key: descriptor.property,\n modelOptions: {\n updateOn: descriptor.updateOn,\n ...modelOptions\n },\n hooks: {\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 ...props,\n descriptor,\n formEditorComponent,\n editorDescriptor: editorDescriptor,\n onValueChange: descriptor.onValueChange\n },\n validation: {\n ...validation,\n show: descriptor.validationOpts.forceShowMessage\n },\n expressions: {\n ...expressions\n }\n };\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 const fieldClasses = ['mng-field', `mng-field-${field.type}`];\n if (descriptor.className?.field) {\n fieldClasses.push(descriptor.className.field);\n }\n fieldClasses.push(descriptor.className?.grid ?? 'col-span-12 basis-full');\n field.className = fieldClasses.join(' ');\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 const disabledExpression = descriptor.disabledExpression;\n if (typeof disabledExpression === 'string') {\n field.expressions!['props.disabled'] = `formState.disabled || (${disabledExpression})`;\n } else if (typeof disabledExpression === 'function') {\n field.expressions!['props.disabled'] = field => field.options?.formState?.disabled === true || disabledExpression(field);\n } else {\n field.expressions!['props.disabled'] = combineLatest([\n ((formEditorComponent.formlyOptions.formState satisfies CommonsFormlyFormState<never> | undefined)?.disabled$ as Observable<boolean> | undefined) ?? of(false),\n disabledExpression\n ]).pipe(map(v => v.some(v => v === true)));\n }\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 {ToastMessageOptions} from 'primeng/api';\n\nexport function getFormEditorInfoMessage(translate: TranslateService, message: string, params?: any): ToastMessageOptions {\n const actionErrorMessage = translate.instant(message, params) ?? undefined;\n return {severity: 'info', detail: actionErrorMessage, icon: 'pi pi-info-circle'};\n}\n\nexport function getFormEditorWarningMessage(translate: TranslateService, message: string): ToastMessageOptions {\n const actionErrorMessage = translate.instant(message) ?? undefined;\n return {severity: 'warn', detail: actionErrorMessage, icon: 'pi pi-exclamation-triangle'};\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 {ToastMessageOptions} 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<ToastMessageOptions[]> {\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 // eslint-disable-next-line @angular-eslint/prefer-inject\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 {DatePipe} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\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, FormlyForm} from '@ngx-formly/core';\nimport {TranslatePipe, TranslateService} from '@ngx-translate/core';\nimport {ToastMessageOptions} from 'primeng/api';\nimport {ButtonDirective} from 'primeng/button';\nimport {Message} from 'primeng/message';\nimport {BehaviorSubject, Subscription, debounceTime, delay, distinctUntilChanged, of, switchMap, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {CommonsService, CommonsStorageService, IdType, LoggerService, narrowPrimeMessageSeverity, objectDeepCopy} from '@mediusinc/mng-commons/core';\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 selector: 'mng-form-editor',\n templateUrl: './form-editor.component.html',\n styleUrl: './form-editor.component.css',\n imports: [FormlyForm, ReactiveFormsModule, TranslatePipe, DatePipe, EditorAutoSaveStatusComponent, Message, ButtonDirective],\n providers: [provideFormComponent()],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class FormEditorComponent<Item = any, ParentItem = any> implements IFormEditorComponent<Item, ParentItem>, OnInit, AfterViewInit, 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 public 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 readonly formMessages = signal<ToastMessageOptions[]>([]);\n protected readonly formMessagesTypeNarrowed = computed(() =>\n this.formMessages().map(m => ({\n severity: narrowPrimeMessageSeverity(m.severity),\n text: m.detail,\n icon: m.icon\n }))\n );\n\n // autosave\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 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.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\n ngAfterViewInit() {\n // mark form as pristine, should be done in next event hook to allow formly to initialize first\n this._form.markAsPristine();\n this.autoSaveLoadSavedFromStorage();\n this.autoSaveStartEventChangeListen(this.autoSaveStorageKeyCompInit);\n this.autoSaveStorageKeyCompInit = false;\n }\n\n public ngOnDestroy() {\n this.autoSaveStopValueChangeListen();\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.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 this.autoSaveStopValueChangeListen();\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 if (!this.autoSaveEventsSubscription) {\n this.autoSaveEventsSubscription = of(void 0)\n .pipe(\n delay(init ? 0 : 500), // delay initial event listening for all the initializations to take place\n switchMap(() => this._form.valueChanges),\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 )\n .subscribe(() => {\n this.autoSaveSaveToStorage();\n });\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-message severity=\"warn\" icon=\"pi pi-save\">\n <ng-template #container>\n <div class=\"flex w-full justify-end items-center\">\n <div class=\"grow\">\n {{\n 'mngEditor.autoSave.restore.title'\n | translate: {lastChange: autoSaveRestore()?.savedAt ? (autoSaveRestore()?.savedAt! | date: 'dd. MM. yyyy HH:mm:ss') : ''}\n }}\n </div>\n <div>\n <button\n pButton\n icon=\"pi pi-sync\"\n size=\"small\"\n [label]=\"'mngEditor.autoSave.restore.restore' | translate\"\n severity=\"success\"\n text=\"true\"\n (click)=\"onAutoSaveRestore()\"></button>\n @if (autoSave()?.state !== 'preview' || autoSave()?.state !== 'previewCurrent') {\n <button\n pButton\n icon=\"pi pi-eye\"\n size=\"small\"\n [label]=\"autoSavePreviewButtonLabel() | translate\"\n severity=\"info\"\n text=\"true\"\n (click)=\"onAutoSavePreview()\"></button>\n }\n <button\n pButton\n icon=\"pi pi-times\"\n size=\"small\"\n [label]=\"'mngEditor.autoSave.restore.dismiss' | translate\"\n severity=\"danger\"\n text=\"true\"\n (click)=\"onAutoSaveDismiss()\"></button>\n </div>\n </div>\n </ng-template>\n </p-message>\n}\n\n@if (autofocusEnabled()) {\n <input type=\"hidden\" class=\"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 type=\"submit\" class=\"hidden!\"></button>\n</form>\n@for (message of formMessagesTypeNarrowed(); track message) {\n <p-message [severity]=\"message.severity\" [icon]=\"message.icon\">{{ message.text }} </p-message>\n}\n\n@if (descriptor().autoSave && showAutoSaveStatus()) {\n <mng-editor-auto-save-status [status]=\"autoSave()\" />\n}\n","import {ChangeDetectionStrategy, Component, HostListener, OnDestroy, ViewEncapsulation, computed, 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 {ButtonDirective} from 'primeng/button';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {ProgressSpinner} from 'primeng/progressspinner';\nimport {Toolbar} 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 IDataProvider,\n IdType,\n LoggerService,\n effectWithDeps,\n objectDeepCopy\n} from '@mediusinc/mng-commons/core';\nimport {\n ActionActivationTriggerEnum,\n ActionDescriptorInst,\n ActionEditorDescriptorInst,\n ActionEditorSubmitDescriptorInst,\n ActionEditorSubmitTypeEnum,\n ActionInstanceStateEnum,\n ActionPositionEnum,\n ActionTypeEnum,\n EditorResetEvent,\n FormEditorSubmitEvent,\n IActionEditorComponent,\n IActionInstance,\n IEditorDataProvider,\n TableviewActionDefaultCategories\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 {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 selector: 'mng-action-editor-injector-context',\n templateUrl: './action-editor-injector-context.component.html',\n styleUrl: 'action-editor-injector-context.component.css',\n imports: [ActionComponent, FormEditorComponent, EditorAutoSaveStatusComponent, ProgressSpinner, Toolbar, ButtonDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [provideActionExecutor()]\n})\nexport class ActionEditorInjectorContextComponent<Item = any, Service = any> implements 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<Item>);\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 = computed(() => this.data().descriptor);\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 action.withButtonOpts({\n ...action.button,\n icon: action.button?.icon === undefined ? (action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times') : action.button.icon,\n label:\n action.button?.label === undefined\n ? action.submitType === ActionEditorSubmitTypeEnum.Submit\n ? 'general.save'\n : this.data().isDialog\n ? 'general.close'\n : 'general.cancel'\n : action.button.label\n });\n\n // assign run operations\n action.withNotifications(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 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 #titleSubscription?: Subscription;\n\n constructor() {\n effectWithDeps(\n [this.data],\n ([data]) => {\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 {firstOnly: true}\n );\n effectWithDeps([this.hasTitle], ([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\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 takeUntilDestroyed()\n )\n .subscribe(title => {\n this.title.set(title ?? undefined);\n\n const dataDialogConfig = this.data().dialogConfig;\n if (dataDialogConfig) {\n setTimeout(() => (dataDialogConfig.header = title ?? undefined));\n }\n if (this.editorAction().activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n this.commonsService.setPageTitle(title ?? undefined);\n }\n });\n toObservable(this.editorAction)\n .pipe(\n switchMap(action => (action.dataProvider as IEditorDataProvider | undefined)?.editorReset$ ?? NEVER),\n takeUntilDestroyed()\n )\n .subscribe({\n next: e => this.onEditorReset(e)\n });\n\n if (this.viewContainer) {\n toObservable(this.editorAction)\n .pipe(\n switchMap(a => (this.isActionMainTwEditor(a) ? (this.viewContainer?.editorReset$ ?? NEVER) : NEVER)),\n takeUntilDestroyed()\n )\n .subscribe({\n next: e => this.onEditorReset(e)\n });\n toObservable(this.editorAction)\n .pipe(\n switchMap(a => (this.isActionMainTwEditor(a) ? (this.viewContainer?.editorClose$ ?? NEVER) : NEVER)),\n takeUntilDestroyed()\n )\n .subscribe({\n next: () => this.cancel()\n });\n toObservable(this.viewContainer.dataProvider)\n .pipe(\n combineLatestWith(toObservable(this.editorAction)),\n switchMap(([dataProvider, action]) =>\n this.isActionMainTwEditor(action) && action.dataProvider == null ? ((dataProvider as IEditorDataProvider | undefined)?.editorReset$ ?? NEVER) : NEVER\n ),\n takeUntilDestroyed()\n )\n .subscribe({\n next: e => this.onEditorReset(e)\n });\n }\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 = this.getActionParams();\n actionParameters.item = event.formItem;\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.data().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().editorDescriptor.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 = this.getActionParams();\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.data().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 private isActionMainTwEditor(action: ActionEditorDescriptorInst<any>) {\n return (\n action.tableviewCategory != null &&\n [TableviewActionDefaultCategories.DETAILS, TableviewActionDefaultCategories.EDIT, TableviewActionDefaultCategories.ADD].includes(action.tableviewCategory)\n );\n }\n\n @HostListener('window:beforeunload')\n protected 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 protected 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.el.nativeElement.querySelector('.p-dialog')?.style?.zIndex) ===\n 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 acceptIcon: 'pi pi-check',\n acceptButtonProps: {severity: 'primary'},\n rejectLabel: this.translate.instant('general.no'),\n rejectIcon: 'pi pi-times',\n rejectButtonProps: {severity: 'secondary'},\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 private getActionParams() {\n return <ActionParameters<Item>>{\n itemId: this.itemId(),\n item: this.item(),\n actionData: this.actionData(),\n sourceComponent: this\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 mng-action-editor-dialog-close-button-wrapper\">\n <button\n pButton\n severity=\"secondary\"\n class=\"p-dialog-header-icon p-button-icon-only p-dialog-close-button\"\n text=\"true\"\n rounded=\"true\"\n type=\"button\"\n (click)=\"closeWithUnsavedChangesConfirmation()\"\n (keydown.enter)=\"closeWithUnsavedChangesConfirmation()\">\n <i class=\"pi pi-times\"></i>\n </button>\n </span>\n}\n<div class=\"h-full flex flex-col\">\n @if (toolbarLeftActions().length > 0 || toolbarRightActions().length > 0) {\n <div class=\"grow mng-action-editor-toolbar-container\">\n <p-toolbar class=\"mng-action-editor-toolbar\">\n <ng-template #start>\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 #end>\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=\"grow 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 }\n </div>\n\n <div class=\"flex flex-row justify-between 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 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 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, ActionInstanceStateEnum, ActionTypeEnum, IActionInstance} from '@mediusinc/mng-commons/tableview/api';\n\nimport {CanComponentDeactivate} from '../../models/can-component-deactivate.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 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<any>>): 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 Math.ceil(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?.style?.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 {ChangeDetectionStrategy, Component, booleanAttribute, computed, contentChildren, inject, input, output, viewChild} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TableRowReorderEvent} from 'primeng/table';\n\nimport {ActionParameters, DataListResult} from '@mediusinc/mng-commons/core';\nimport {TableComponent, TableFeatureConfig, TableTemplateDirective} 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 selector: 'mng-action-table',\n templateUrl: './action-table.component.html',\n imports: [TableComponent, ActionComponent, TableTemplateDirective],\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 readonly tableTemplates = input<TableTemplateDirective[]>([]);\n public readonly tableClassName = input<string>();\n public readonly selectionMode = input<'single' | 'multiple'>('multiple');\n public readonly selectionEnabled = input(false);\n public readonly globalFilterFields = input<string[]>();\n public readonly rowReorderEnabled = input<boolean>(true);\n public readonly featureConfig = input<TableFeatureConfig | undefined>(undefined);\n\n // actions\n public actions = input<Array<ActionDescriptorInst<any>>>([]); // can be anything\n\n // component inputs\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 rowReorder = output<TableRowReorderEvent>();\n\n // content and view queries\n public readonly contentTemplates = contentChildren(TableTemplateDirective);\n public readonly table = viewChild.required(TableComponent);\n\n protected readonly tableTemplatesMerged = computed(() => {\n return [...this.contentTemplates(), ...this.tableTemplates()];\n });\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 [columnLastMinWidth]=\"columnActionMinWidth()\"\n [cellClickEnabled]=\"this.rowClickActions().length > 0\"\n [rowReorderEnabled]=\"rowReorderEnabled()\"\n [featureConfig]=\"featureConfig()\"\n [class]=\"tableClassName()\"\n [templates]=\"tableTemplatesMerged()\"\n (tableLoad)=\"tableLoad.emit($event)\"\n (cellClick)=\"onCellClick($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (rowReorder)=\"onRowReorder($event)\">\n @if (rowInlineActions().length > 0) {\n <ng-template mngTableTemplate name=\"columnCustomLast\" let-item=\"item\" let-idx=\"index\">\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</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 {ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation, computed, contentChildren, inject, input, signal, viewChild} from '@angular/core';\nimport {RouterOutlet} from '@angular/router';\n\nimport {Toolbar} from 'primeng/toolbar';\n\nimport {DataListParams} from '@mediusinc/mng-commons/core';\nimport {TableTemplateDirective} from '@mediusinc/mng-commons/table';\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';\nimport {COMMONS_TABLEVIEW_FEATURE_CONFIG_IT} from '../../services/tableview-feature-config.token';\n\n@Component({\n selector: 'mng-tableview',\n templateUrl: './tableview.component.html',\n styleUrl: './tableview.component.css',\n imports: [ActionComponent, ActionTableComponent, RouterOutlet, Toolbar],\n providers: [provideViewContainer()],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\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 protected readonly config = inject(COMMONS_TABLEVIEW_FEATURE_CONFIG_IT, {optional: true});\n\n public actionTable = viewChild.required(ActionTableComponent<Item, Service, Sorts, Filters>);\n\n public descriptor = input.required<TableviewDescriptorInst<Item, Sorts, Filters, any, any, any, any, any>>();\n public dataProvider = input<ITableviewDataProvider<Item, Service, Sorts, Filters, any, any, any, any>>();\n public actions = input<Array<ActionDescriptorInst<any>>>([]);\n\n public toolbarLeftActions = computed(() => this.filterActionsByPositions(this.actions(), [ActionPositionEnum.ToolbarLeft]));\n public toolbarRightActions = computed(() => this.filterActionsByPositions(this.actions(), [ActionPositionEnum.ToolbarRight]).reverse());\n public tableActions = computed(() =>\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 protected readonly contentTableTemplates = contentChildren(TableTemplateDirective);\n protected readonly tableTemplates = computed(() => [...this.contentTableTemplates()]);\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<any>[], actionPositions: ActionPositionEnum[]): ActionDescriptorInst<any>[] {\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-6\">\n <ng-template #start>\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 #end>\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 [tableTemplates]=\"tableTemplates()\"\n [featureConfig]=\"config?.table\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n </mng-action-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n","import {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\nimport {TableComponent} from '@mediusinc/mng-commons/table';\nimport {TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\nimport {EditorDescriptorInst, IActionContext, IActionEditorContext} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormEditorService} from '../../editor/services/form-editor.service';\nimport {TableviewComponent} from '../../tableview/components/tableview/tableview.component';\nimport {ActionEditorInjectorContextComponent} from '../components/editor/injector-context/action-editor-injector-context.component';\nimport {ActionTableComponent} from '../components/table/action-table.component';\n\n/**\n * Retrieves the parent form editor service for a given action editor context. Only applicable for action editor with ParentEditorItem type defined.\n *\n * @param {IActionEditorContext<any, ParentItem, any, any>} ctx - The action editor context containing information about the current editor and its parent.\n *\n * @return {FormEditorService<ParentItem> | null} The parent form editor service if available, or null if not found.\n */\nexport function getActionParentFormEditor<ParentItem>(ctx: IActionEditorContext<any, ParentItem, any, any>): FormEditorService<ParentItem> | null;\n/**\n * Retrieves the parent form editor service for a given action context and editor/model/type descriptor.\n *\n * @param {IActionContext<any, any, any, any>} ctx - The action context from which the parent editor is resolved.\n * @param {EditorDescriptorInst<ParentItem> | ModelDescriptor<ParentItem> | TypeDescriptor<ParentItem>} editorType - The editor descriptor or type used to locate the parent form editor.\n *\n * @return {FormEditorService<ParentItem> | null} The parent form editor service instance if found, otherwise null.\n */\nexport function getActionParentFormEditor<ParentItem>(\n ctx: IActionContext<any, any, any, any> | IActionEditorContext<any, any, any, any>,\n editorType: EditorDescriptorInst<ParentItem> | ModelDescriptor<ParentItem> | TypeDescriptor<ParentItem>\n): FormEditorService<ParentItem> | null;\nexport function getActionParentFormEditor<ParentItem>(\n ctx: IActionContext<any, any, any, any> | IActionEditorContext<any, ParentItem, any, any>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n editorType?: EditorDescriptorInst<ParentItem> | ModelDescriptor<ParentItem> | TypeDescriptor<ParentItem>\n): FormEditorService<ParentItem> | null {\n return ctx.injector.get(FormEditorService, null, {optional: true});\n}\n\n/**\n * Retrieves the form editor service associated with a given action editor context. Only applicable for action editor.\n *\n * @param {IActionEditorContext<Item, ParentItem, any, any>} ctx - The action editor context containing parameters and state.\n *\n * @return {FormEditorService<Item, ParentItem> | null} The form editor service if available, or null if not found.\n */\nexport function getActionFormEditor<Item, ParentItem>(ctx: IActionEditorContext<Item, ParentItem, any, any>): FormEditorService<Item, ParentItem> | null {\n if (ctx.parameters.sourceComponent instanceof ActionEditorInjectorContextComponent) {\n return (ctx.parameters.sourceComponent.formEditorCmp()?.formService as FormEditorService<Item, ParentItem>) ?? null;\n }\n return null;\n}\n\n/**\n * Retrieves the parent table associated with the given action context and table descriptor. Applies when actions are placed on table or table within tableview.\n *\n * @param {IActionContext<any, any, any, any>} ctx - The action context from which the table is resolved.\n * @param {TableDescriptorInst<Item, Sorts, Filters> | ModelDescriptor<Item> | TypeDescriptor<Item>} tableType - The descriptor of the table that needs to be retrieved.\n *\n * @return {TableComponent<Item, Sorts, Filters> | null} The parent table associated with the action context and descriptor, or null if not found.\n */\nexport function getActionParentTable<Item, Sorts = keyof Item, Filters = keyof Item>(\n ctx: IActionContext<any, any, any, any>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tableType: TableDescriptorInst<Item, Sorts, Filters> | ModelDescriptor<Item> | TypeDescriptor<Item>\n): TableComponent<Item, Sorts, Filters> | null {\n return (ctx.injector.get(ActionTableComponent, null, {optional: true}) ?? ctx.injector.get(TableviewComponent, null, {optional: true})?.actionTable())?.table() ?? null;\n}\n","import {Injectable} from '@angular/core';\n\nimport {Observable, isObservable} from 'rxjs';\n\nimport {DataListResult, Nullable} from '@mediusinc/mng-commons/core';\nimport {\n DataProviderExecutor,\n IActionContext,\n RunFetchFromDataProviderReasonType,\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, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<DataListResult<Item>> | null;\n public override runGetAll<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback: Observable<DataListResult<Item>>\n ): Observable<DataListResult<Item>>;\n public override runGetAll<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: undefined): Observable<DataListResult<Item>> | null;\n public override runGetAll<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback?: Observable<DataListResult<Item>>\n ): Observable<DataListResult<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runGetAllFromDataProvider, fallback) : runGetAllFromDataProvider(ctx);\n }\n\n public override runFetch<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fetchReason?: RunFetchFromDataProviderReasonType\n ): Observable<Item> | null;\n public override runFetch<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fetchReason: RunFetchFromDataProviderReasonType | undefined,\n fallback: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>>;\n public override runFetch<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fetchReason: RunFetchFromDataProviderReasonType | undefined,\n fallback: undefined\n ): Observable<Nullable<Item>> | null;\n public override runFetch<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fetchReason: RunFetchFromDataProviderReasonType | undefined,\n fallback?: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>> | null {\n const fetchOpts = {\n reason: fetchReason,\n strict: false\n };\n if (fallback) {\n const dataProviderExec = runFetchFromDataProvider(ctx, fetchOpts);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return fallback;\n } else {\n return runFetchFromDataProvider(ctx, fetchOpts);\n }\n // return fallback ? runFnFromDataProviderOrFallback(ctx, runFetchFromDataProvider, fallback) : runFetchFromDataProvider(ctx);\n }\n\n public override runCreate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<Item> | null;\n public override runCreate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runCreate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runCreate<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback?: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runCreateFromDataProvider, fallback) : runCreateFromDataProvider(ctx);\n }\n\n public override runUpdate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<Item> | null;\n public override runUpdate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runUpdate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runUpdate<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback?: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runUpdateFromDataProvider, fallback) : runUpdateFromDataProvider(ctx);\n }\n\n public override runDelete<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<Nullable<Item>> | null;\n public override runDelete<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runDelete<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runDelete<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback?: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runDeleteFromDataProvider, fallback) : runDeleteFromDataProvider(ctx);\n }\n}\n","import {ChangeDetectorRef, DestroyRef, Directive, OnInit, inject, signal} 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 {AGenericFieldDescriptor, CommonsFormlyFieldConfig, CommonsFormlyFormOptions, CommonsFormlyFormState, EditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\n@Directive()\nexport abstract class ACommonsFormlyType<Model, EditorModel, Descriptor extends AGenericFieldDescriptor>\n extends FieldType<CommonsFormlyFieldConfig<Model, EditorModel>>\n implements OnInit\n{\n protected readonly destroyRef = inject(DestroyRef);\n protected readonly cd = inject(ChangeDetectorRef);\n protected formStateDisabledSubject = new BehaviorSubject(false);\n\n protected formStateDisabled$ = this.formStateDisabledSubject.asObservable();\n\n public descriptorSig = signal<Descriptor | undefined>(undefined);\n public fieldSig = signal<CommonsFormlyFieldConfig<Model, EditorModel> | undefined>(undefined);\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 ACommonsFormlyType<Model, EditorModel, Descriptor>;\n if (!this.formState.disabled$) throw new CommonsInternalError('formState.disabled$ must be defined');\n this.descriptorSig.set(this.props.descriptor as Descriptor | undefined);\n this.fieldSig.set(this.field);\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 {Directive, computed} from '@angular/core';\n\nimport {AFieldDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyType} from './formly-type.abstract.component';\n\n@Directive()\nexport abstract class ACommonsFormlyFieldType<\n Model,\n EditorModel,\n Descriptor extends AFieldDescriptor<Model, EditorModel> = AFieldDescriptor<Model, EditorModel>\n> extends ACommonsFormlyType<Model, EditorModel, Descriptor> {\n public controlClassName = computed(() => ['mng-field-control', this.descriptorSig()?.className?.control].filter(c => !!c).join(' '));\n public labelClassName = computed(() => ['mng-field-label', this.descriptorSig()?.className?.label].filter(c => !!c).join(' '));\n public controlInputClassName = computed(() => ['mng-field-control-input', this.descriptorSig()?.className?.input].filter(c => !!c).join(' '));\n public controlWithInputClassName = computed(() => this.controlClassName() + ' ' + this.controlInputClassName());\n}\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit, signal} from '@angular/core';\nimport {AbstractControl, FormControl, FormGroup} from '@angular/forms';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {ButtonDirective} from 'primeng/button';\nimport {Message} from 'primeng/message';\nimport {Tooltip} from 'primeng/tooltip';\nimport {Subscription, isObservable} from 'rxjs';\n\nimport {PrimeButtonStyleProps, buttonStyleToPrimeStyles} from '@mediusinc/mng-commons/form/api';\nimport {FieldActionDescriptor, FieldActionResult, FieldActionResultMessage, IFormEditorComponent} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n selector: 'mng-formly-field-action',\n templateUrl: './formly-field-action.component.html',\n imports: [TranslatePipe, Tooltip, Message, ButtonDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldActionComponent<EditorModel> extends ACommonsFormlyFieldType<void, EditorModel, FieldActionDescriptor<EditorModel>> implements OnInit, OnDestroy {\n protected buttonStyle = signal<PrimeButtonStyleProps>({severity: 'primary'});\n\n protected actionMessage = signal<FieldActionResultMessage | undefined>(undefined);\n\n private resultSubscription?: Subscription;\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n if (this.descriptor.button?.style) {\n this.buttonStyle.set(buttonStyleToPrimeStyles(this.descriptor.button?.style));\n }\n }\n\n ngOnDestroy() {\n this.resultSubscription?.unsubscribe();\n }\n\n onClick() {\n this.actionMessage.set(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.set(res.message);\n }\n }\n}\n","<div class=\"mng-field flex items-center\">\n <button\n type=\"button\"\n pButton\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 [size]=\"buttonStyle().size\"\n [severity]=\"buttonStyle().severity\"\n [text]=\"buttonStyle().text\"\n [outlined]=\"buttonStyle().outlined\"\n [raised]=\"buttonStyle().raised\"\n [rounded]=\"buttonStyle().rounded\"\n [class]=\"buttonStyle().class\"\n (click)=\"onClick()\"></button>\n @if (actionMessage()) {\n <p-message [severity]=\"actionMessage()?.severity ?? 'success'\" closable=\"true\">{{ actionMessage()?.content }}</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 {FormlyAttributes} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/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 selector: 'mng-formly-field-autocomplete',\n templateUrl: './formly-field-autocomplete.component.html',\n imports: [AutocompleteComponent, ReactiveFormsModule, TranslatePipe, FormlyAttributes],\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]=\"descriptor.property\"\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]=\"controlInputClassName()\"\n [class]=\"controlClassName()\"\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 [placeholder]=\"descriptor.placeholder ?? '' | translate\">\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 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 {FormlyAttributes} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/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 selector: 'mng-formly-field-dropdown',\n templateUrl: './formly-field-dropdown.component.html',\n imports: [DropdownComponent, ReactiveFormsModule, TranslatePipe, FormlyAttributes],\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]=\"descriptor.property\"\n [formControl]=\"$any(formControl)\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\"\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]=\"controlInputClassName()\"\n [class]=\"controlClassName()\">\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 (typeof descriptor.label === 'string') {\n return descriptor.labelUseModelBase ? getI18nTypePropertyKey(editorDescriptor?.model.i18nBaseKey ?? '', descriptor.label) : descriptor.label;\n } else {\n return getI18nTypePropertyKey(editorDescriptor?.model.i18nBaseKey ?? '', descriptor.property);\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 name: 'mngFormlyFieldLabel',\n pure: true\n})\nexport class FormlyFieldLabelPipe implements PipeTransform {\n transform(value?: AGenericFieldDescriptor, editorDescriptor?: EditorDescriptorInst<any, any>): string {\n const label = getEditorFieldLabel(value, editorDescriptor) ?? '';\n return label === '' ? '\\u00A0' : label;\n }\n}\n","import {Directive} from '@angular/core';\n\nimport {AFieldGroupDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyType} from './formly-type.abstract.component';\n\n@Directive()\nexport abstract class ACommonsFormlyGroupType<Model, EditorModel, Descriptor extends AFieldGroupDescriptor<Model, EditorModel>> extends ACommonsFormlyType<\n Model,\n EditorModel,\n Descriptor\n> {}\n","import {ChangeDetectionStrategy, Component, computed} from '@angular/core';\n\nimport {FormlyField} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {Fieldset} from 'primeng/fieldset';\n\nimport {CommonsFormlyFieldConfig, FieldGroupDescriptor, FieldGroupTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyGroupType} from '../formly-group-type.abstract.component';\n\n@Component({\n selector: 'mng-formly-field-fieldset',\n templateUrl: './formly-field-fieldset.component.html',\n imports: [TranslatePipe, FormlyFieldLabelPipe, Fieldset, FormlyField],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldFieldsetComponent<ET> extends ACommonsFormlyGroupType<ET, ET, FieldGroupDescriptor<ET>> {\n public readonly typeFieldset = FieldGroupTypeEnum.Fieldset;\n\n public fieldGroup = computed(() => {\n const fieldGroup = this.fieldSig()?.fieldGroup;\n return fieldGroup === undefined\n ? []\n : fieldGroup.map(f => ({\n type: ((f as CommonsFormlyFieldConfig).props.descriptor as FieldGroupDescriptor<any, any>)?.type,\n config: f as CommonsFormlyFieldConfig\n }));\n });\n}\n","@for (group of fieldGroup(); track group) {\n @switch (group.type) {\n @case (typeFieldset) {\n <p-fieldset\n [legend]=\"group.config.props.descriptor | mngFormlyFieldLabel: group.config.props.editorDescriptor | translate\"\n [hidden]=\"group.config.props['groupHidden']\">\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, ViewEncapsulation, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormArray, FormBuilder, FormControl, ReactiveFormsModule, ValidatorFn, Validators} from '@angular/forms';\n\nimport {FormlyAttributes, FormlyValidationMessage} from '@ngx-formly/core';\nimport {TranslatePipe, TranslateService} from '@ngx-translate/core';\nimport {Button} from 'primeng/button';\nimport {FileUpload} from 'primeng/fileupload';\nimport {Image} from 'primeng/image';\nimport {InputGroup} from 'primeng/inputgroup';\nimport {InputGroupAddon} from 'primeng/inputgroupaddon';\nimport {InputMask} from 'primeng/inputmask';\nimport {InputNumber} from 'primeng/inputnumber';\nimport {InputText} from 'primeng/inputtext';\nimport {RadioButton} from 'primeng/radiobutton';\nimport {Textarea} from 'primeng/textarea';\nimport {ToggleSwitch} from 'primeng/toggleswitch';\nimport {distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {ComponentDirective} from '@mediusinc/mng-commons/core';\nimport {InputEmptyValueDirective, 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 selector: 'mng-formly-field-input',\n templateUrl: './formly-field-input.component.html',\n styleUrl: './formly-field-input.component.css',\n imports: [\n InputNumber,\n ReactiveFormsModule,\n TranslatePipe,\n RadioButton,\n InputMask,\n FileUpload,\n InputText,\n ComponentDirective,\n InputTrimDirective,\n FormlyFieldLabelPipe,\n Textarea,\n Button,\n InputGroup,\n InputGroupAddon,\n ToggleSwitch,\n Image,\n InputEmptyValueDirective,\n FormlyAttributes,\n FormlyValidationMessage\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\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, '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]=\"descriptor.property\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"(descriptor.numberAutoCorrect ? descriptor.numberMin : undefined) ?? NUMBER_MIN_SAFE\"\n [max]=\"(descriptor.numberAutoCorrect ? descriptor.numberMax : undefined) ?? NUMBER_MAX_SAFE\"\n [step]=\"descriptor.numberStep ?? 1\"\n [useGrouping]=\"descriptor.numberUseGrouping\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [styleClass]=\"controlClassName()\"\n [inputStyleClass]=\"controlInputClassName()\"\n [locale]=\"descriptor.locale ?? applicationLocale\"\n [mode]=\"numberFieldMode\"\n [prefix]=\"descriptor.numberPrefix\"\n [suffix]=\"descriptor.numberSuffix\"\n [currency]=\"currency\"\n [currencyDisplay]=\"descriptor.currencyDisplay\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\"\n [mngInputEmptyValue]=\"descriptor.emptyValue ?? 'undefined'\">\n </p-inputNumber>\n }\n @case ('switch') {\n <div class=\"flex flex-col\">\n @if (descriptor.label !== null) {\n <label [for]=\"descriptor.property\" [class]=\"labelClassName()\"\n >{{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n }\n <p-toggle-switch [id]=\"descriptor.property\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"controlClassName()\"></p-toggle-switch>\n @if (showError) {\n <small class=\"mng-field-validation-messages\">\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]=\"descriptor.property\" class=\"mb-2\">\n <p-radioButton [name]=\"$any(key)\" [value]=\"option.value\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"controlClassName()\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'ml-2 ' + (descriptor.radioLabelClassName ?? '')\">{{ option.title | translate }}</label>\n </div>\n }\n }\n @case ('textarea') {\n <textarea\n [id]=\"descriptor.property\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pTextarea\n [class]=\"controlWithInputClassName()\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\"\n [mngInputTrim]=\"descriptor.textTrim ?? 'both'\"\n [mngInputEmptyValue]=\"descriptor.emptyValue ?? 'undefined'\">\n </textarea>\n }\n @case ('mask') {\n <p-inputMask\n [id]=\"descriptor.property\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"descriptor.mask\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"controlWithInputClassName()\"\n [mngInputEmptyValue]=\"descriptor.emptyValue ?? 'undefined'\" />\n }\n @case ('file') {\n <p-fileUpload\n #fileUploadInput\n [id]=\"descriptor.property\"\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 chooseStyleClass=\"p-button-sm p-button-outlined\"\n cancelStyleClass=\"p-button-sm p-button-outlined\"\n [styleClass]=\"controlClassName()\"\n mode=\"advanced\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear($event)\">\n <ng-template #file let-file let-idx=\"index\">\n <div class=\"p-fileupload-file\">\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 items-center justify-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n }\n } @else {\n <span class=\"flex items-center justify-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n }\n } @else {\n <span class=\"flex items-center justify-center\">\n <i [class]=\"'pi ' + getFileDocumentTypeIcon(file) + ' text-2xl'\"></i>\n </span>\n }\n </div>\n <div class=\"p-fileupload-file-info\">\n <div class=\"p-fileupload-file-name\">{{ file.name }}</div>\n <span class=\"p-fileupload-file-size\">{{ fileUploadInput.formatSize(file.size) }}</span>\n </div>\n <div class=\"p-fileupload-file-actions\">\n <p-button\n icon=\"pi pi-times\"\n severity=\"danger\"\n size=\"small\"\n outlined=\"true\"\n rounded=\"true\"\n (click)=\"fileUploadInput.remove($event, idx)\"\n [disabled]=\"fileUploadInput.uploading\" />\n </div>\n </div>\n </ng-template>\n <ng-template #empty>\n <div class=\"text-gray-300 mng-fileupload-dragdrop-zone\">\n <span><i class=\"pi pi-file-import mr-2\"></i>{{ 'fileUpload.dragAndDrop' | translate }}</span>\n </div>\n </ng-template>\n </p-fileUpload>\n }\n @case ('imageUrl') {\n <div>\n @if (descriptor.imagePreview) {\n <div class=\"flex flex-wrap justify-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 mng-no-image\">\n <div class=\"p-image-preview-indicator\">\n <i class=\"p-image-preview-icon pi 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 <p-inputgroup [styleClass]=\"controlClassName() + ' mb-1'\">\n <input\n pInputText\n [placeholder]=\"'mngEditor.imageUrlPlaceholder' | translate\"\n [id]=\"descriptor.property\"\n type=\"text\"\n [class]=\"controlInputClassName()\"\n [formControl]=\"$any(imageFormArray.at(idx))\"\n [formlyAttributes]=\"field\" />\n @if (descriptor.fileMultiple && !iFormControl.disabled && imageFormArray.controls.length > 1) {\n <p-inputgroup-addon>\n <p-button type=\"button\" icon=\"pi pi-minus\" severity=\"secondary\" (click)=\"removeImageUrlAt(idx)\"></p-button>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n }\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <p-button\n type=\"button\"\n icon=\"pi pi-plus\"\n size=\"small\"\n severity=\"primary\"\n outlined=\"true\"\n styleClass=\"mt-2\"\n [label]=\"'mngEditor.imageUrlAdd' | translate\"\n (click)=\"addImageUrl()\"></p-button>\n }\n }\n </div>\n }\n @default {\n <input\n pInputText\n [class]=\"controlWithInputClassName()\"\n [id]=\"descriptor.property\"\n [type]=\"props.type || 'text'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mngInputTrim]=\"descriptor.textTrim ?? 'both'\"\n [mngInputEmptyValue]=\"descriptor.emptyValue ?? 'undefined'\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\" />\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 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 {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyAttributes} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {ButtonDirective} from 'primeng/button';\nimport {Dialog} from 'primeng/dialog';\nimport {InputGroup} from 'primeng/inputgroup';\nimport {InputGroupAddon} from 'primeng/inputgroupaddon';\nimport {InputText} from 'primeng/inputtext';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {\n CommonsInternalError,\n ComponentDirective,\n DataListParams,\n DataListResult,\n LoggerService,\n fromSubscribeError,\n getErrorLogLevel,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {TableComponent, TableTemplateDirective} 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 selector: 'mng-formly-field-lookup-dialog',\n templateUrl: 'formly-field-lookup-dialog.component.html',\n imports: [\n TranslatePipe,\n ReactiveFormsModule,\n Dialog,\n TableComponent,\n InputText,\n InputGroup,\n InputGroupAddon,\n ButtonDirective,\n FormlyAttributes,\n TableTemplateDirective,\n ComponentDirective\n ],\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 private readonly injector = inject(Injector);\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 dialogIsLoading = signal(false);\n\n private lookupDataProviderSubscription?: Subscription;\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 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","<p-inputgroup [styleClass]=\"controlClassName()\">\n <p-inputgroup [styleClass]=\"controlClassName()\">\n <p-inputgroup-addon>\n <button pButton type=\"button\" icon=\"pi pi-search\" text=\"true\" severity=\"secondary\" [disabled]=\"formControl.disabled\" (click)=\"openSelectDialog()\"></button>\n </p-inputgroup-addon>\n <input\n pInputText\n type=\"text\"\n (click)=\"openSelectDialog()\"\n [id]=\"descriptor.property\"\n [readonly]=\"true\"\n [formlyAttributes]=\"field\"\n [formControl]=\"fieldLabelFormControl\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\" />\n @if (!props.required && formControl.value && !formControl.disabled) {\n <p-inputgroup-addon>\n <button pButton type=\"button\" icon=\"pi pi-times\" text=\"true\" severity=\"secondary\" (click)=\"clear()\"></button>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\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=\"mng-dialog mng-formly-field-lookup-dialog\">\n <ng-template #content>\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [result]=\"addItems()\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading()\"\n (selectionChange)=\"onSelectionChange($event)\">\n @if (config.table?.headerTitleComponent; as captionComponent) {\n <ng-template mngTableTemplate name=\"headerTitle\">\n <ng-container [mngComponent]=\"captionComponent\" attachToHost=\"true\"></ng-container>\n </ng-template>\n }\n @if (config.table?.columnActionComponent; as columnActionComponent) {\n <ng-template mngTableTemplate name=\"columnCustomLast\">\n <ng-container [mngComponent]=\"columnActionComponent\" attachToHost=\"true\"></ng-container>\n </ng-template>\n }\n </mng-table>\n </ng-template>\n\n <ng-template #footer>\n <button pButton type=\"button\" severity=\"secondary\" text=\"true\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n (click)=\"onAddItem()\"\n [loading]=\"dialogIsLoading()\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n </p-dialog>\n</p-inputgroup>\n","export const labelInfoTooltipDefaultIcon = 'pi pi-info-circle';\n","import {NgClass} 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 {TranslatePipe} from '@ngx-translate/core';\nimport {TableRowReorderEvent} from 'primeng/table';\nimport {Tooltip} from 'primeng/tooltip';\nimport {BehaviorSubject, distinctUntilChanged, of, throwError} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\n\nimport {CommonsInternalError, CommonsService, StyleSizeEnum} from '@mediusinc/mng-commons/core';\nimport {TableTemplateDirective} from '@mediusinc/mng-commons/table';\nimport {\n ActionContextValidation,\n ActionDescriptorInst,\n ActionPositionEnum,\n FieldManyEditorActionEnum,\n FieldManyEditorDescriptor,\n FormFieldEventComponentSubtype,\n FormFieldEventTypeEnum,\n action,\n actionEditor,\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 {labelInfoTooltipDefaultIcon} from '../../constants';\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n selector: 'mng-formly-table-dialog-form-field',\n templateUrl: './formly-field-table-dialog-form.component.html',\n styleUrls: ['./formly-field-table-dialog-form.component.css'],\n imports: [TranslatePipe, ActionComponent, ActionTableComponent, FormlyFieldLabelPipe, NgClass, Tooltip, TableTemplateDirective],\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 protected readonly labelInfoTooltipDefaultIcon = labelInfoTooltipDefaultIcon;\n\n public items = signal<T[]>([]);\n\n public actions: Array<ActionDescriptorInst<any>> = [];\n public toolbarRightActions: Array<ActionDescriptorInst<any>> = [];\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 = actionEditor<T, T, undefined, T, T, T>('details', this.descriptor.tableviewDescriptor.detailsEditor, {\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 this.actions.push(viewAction);\n }\n\n if (hasAddAction) {\n const addAction = actionEditor<T, T, undefined, undefined, T, undefined>('add', this.descriptor.tableviewDescriptor.addEditor, {\n parentModel: this.editorDescriptor.model,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withDialogSize(StyleSizeEnum.Small)\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 .withNotifications(false)\n .withIsVisibleFunction(() => this.formStateDisabled$.pipe(map(v => !v)))\n .withIsEnabledFunction(() => this.isEnabled$)\n .withButtonOpts({\n label: null,\n icon: 'pi pi-plus',\n style: {\n size: StyleSizeEnum.ExtraSmall,\n outlined: true\n }\n });\n this.actions.push(addAction);\n }\n if (hasEditAction) {\n const editAction = actionEditor<T, T, undefined, T, T, T>('edit', this.descriptor.tableviewDescriptor.editEditor, {\n parentModel: this.editorDescriptor.model,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowInline)\n .withDialogSize(StyleSizeEnum.Small)\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 .withNotifications(false)\n .withIsVisibleFunction(ctx => (this.hideActionsForRowWithDefaultLocalization(ctx) ? of(false) : this.formStateDisabled$.pipe(map(v => !v))))\n .withIsEnabledFunction(() => this.isEnabled$)\n .withButtonOpts({\n label: null,\n icon: 'pi pi-pencil',\n style: {\n size: StyleSizeEnum.ExtraSmall,\n outlined: true,\n severity: 'secondary'\n }\n });\n this.actions.push(editAction);\n }\n if (hasDeleteAction) {\n const deleteAction = action<T, undefined, T, T, T>('delete', {\n model: this.descriptor.tableviewDescriptor.model,\n parentModel: this.editorDescriptor.model,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowInline)\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 .withNotifications(false)\n .withIsVisibleFunction(ctx => (this.hideActionsForRowWithDefaultLocalization(ctx) ? of(false) : this.formStateDisabled$.pipe(map(v => !v))))\n .withIsEnabledFunction(() => this.isEnabled$)\n .withButtonOpts({\n label: null,\n icon: 'pi pi-trash',\n style: {\n severity: 'danger',\n size: StyleSizeEnum.ExtraSmall,\n outlined: true\n }\n });\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, 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\n [id]=\"descriptor.property\"\n [descriptor]=\"descriptor.tableDescriptor\"\n [items]=\"items()\"\n [actions]=\"actions\"\n [rowReorderEnabled]=\"!disableRowReorder()\"\n (rowReorder)=\"onRowReorder($event)\"\n tableClassName=\"mng-table-header-compact pb-2\">\n <ng-template mngTableTemplate name=\"headerTitle\">\n <div class=\"flex justify-end items-center\">\n @if (descriptor.label !== null) {\n <label class=\"grow\" [for]=\"descriptor.property\"\n >{{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n @if (descriptor.labelInfoTooltip !== undefined) {\n <span [ngClass]=\"{'ml-1': props.required && props['hideRequiredMarker'] !== true}\">\n <i [class]=\"descriptor.labelInfoTooltipIcon ?? labelInfoTooltipDefaultIcon\" [pTooltip]=\"descriptor.labelInfoTooltip | translate\"></i>\n </span>\n }\n </label>\n }\n </div>\n </ng-template>\n <ng-template mngTableTemplate name=\"headerTitleRowRight\">\n <div class=\"flex justify-end items-center grow\">\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\" [hostComponent]=\"this\"></mng-action>\n }\n </div>\n </ng-template>\n</mng-action-table>\n","import {NgClass} 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 {TranslatePipe} from '@ngx-translate/core';\nimport {ButtonDirective} from 'primeng/button';\nimport {Dialog} from 'primeng/dialog';\nimport {TableRowReorderEvent} from 'primeng/table';\nimport {Tooltip} from 'primeng/tooltip';\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 fromSubscribeError,\n getErrorLogLevel,\n getObjectPropertyByPath,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {TableComponent, TableTemplateDirective} 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 {labelInfoTooltipDefaultIcon} from '../../constants';\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n selector: 'mng-formly-table-multiselect-add-field',\n templateUrl: './formly-field-table-dialog-multiselect.component.html',\n styleUrls: ['./formly-field-table-dialog-multiselect.component.css'],\n imports: [TranslatePipe, TableComponent, FormlyFieldLabelPipe, NgClass, ButtonDirective, Tooltip, Dialog, TableTemplateDirective],\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 protected readonly labelInfoTooltipDefaultIcon = labelInfoTooltipDefaultIcon;\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\n [id]=\"descriptor.property\"\n [descriptor]=\"descriptor.mainTableDescriptor\"\n [items]=\"items()\"\n [rowReorderEnabled]=\"!disableRowReorder()\"\n (rowReorder)=\"onRowReorder($event)\"\n class=\"mng-table-header-compact\">\n <ng-template mngTableTemplate name=\"headerTitle\">\n @if (descriptor.label !== null) {\n <label [for]=\"descriptor.property\">\n {{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n @if (descriptor.labelInfoTooltip !== undefined) {\n <span [ngClass]=\"{'ml-1': props.required && props['hideRequiredMarker'] !== true}\">\n <i [class]=\"descriptor.labelInfoTooltipIcon ?? labelInfoTooltipDefaultIcon\" [pTooltip]=\"descriptor.labelInfoTooltip | translate\"></i>\n </span>\n }\n </label>\n }\n </ng-template>\n <ng-template mngTableTemplate name=\"headerTitleRowRight\">\n <div class=\"flex grow justify-end\">\n @if (hasAddAction && !options.formState?.disabled) {\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-plus\"\n rounded=\"true\"\n outlined=\"true\"\n class=\"mng-button-xs\"\n (click)=\"openAddDialog()\"\n [disabled]=\"formControl!.disabled\"></button>\n }\n </div>\n </ng-template>\n <ng-template mngTableTemplate name=\"columnCustomLast\" let-item=\"item\">\n @if (hasDeleteAction && !options.formState?.disabled) {\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-trash\"\n outlined=\"true\"\n severity=\"danger\"\n rounded=\"true\"\n class=\"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=\"mng-dialog mng-dialog-sm mng-formly-field-table-multiselect-dialog\">\n <ng-template #content class=\"table-container\">\n <div class=\"h-full flex flex-col\">\n <div class=\"grow 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-end mng-formly-field-table-multiselect-dialog-footer\">\n <button pButton type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" text=\"true\" severity=\"secondary\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n type=\"button\"\n [label]=\"'general.add' | translate\"\n icon=\"pi pi-check\"\n (click)=\"onAddItems()\"\n [loading]=\"dialogIsLoading()\"\n [disabled]=\"form.disabled\"></button>\n </div>\n </div>\n </ng-template>\n </p-dialog>\n}\n","import {ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation, signal} from '@angular/core';\n\nimport {FormlyField} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {Tab, TabList, TabPanel, TabPanels, Tabs} from 'primeng/tabs';\n\nimport {CommonsFormlyFieldConfig, FieldTabGroupDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\nimport {ACommonsFormlyGroupType} from '../formly-group-type.abstract.component';\n\n@Component({\n selector: 'mng-formly-field-tabs',\n templateUrl: './formly-field-tabs.component.html',\n styleUrl: './formly-field-tabs.component.css',\n imports: [TranslatePipe, FormlyFieldLabelPipe, Tabs, TabList, Tab, TabPanels, TabPanel, FormlyField],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class FormlyFieldTabsComponent extends ACommonsFormlyGroupType<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 protected onEscape() {\n window.dispatchEvent(new KeyboardEvent('keydown', {key: 'Escape', bubbles: true, cancelable: true}));\n }\n}\n","<p-tabs scrollable=\"true\" [value]=\"fieldGroup()[0].id ?? 0\">\n <p-tablist>\n @for (tab of fieldGroup(); track tab; let idx = $index) {\n <p-tab [value]=\"tab.id ?? idx\" [class.hidden!]=\"tab.props['groupHidden']\" (keydown.escape)=\"onEscape()\">\n <span class=\"mng-tab-title\" [class.mng-tab-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : (tab.key ?? '')) + '_invalid']\">\n {{ tab.props.descriptor | mngFormlyFieldLabel: tab.props.editorDescriptor | translate }}\n </span>\n </p-tab>\n }\n </p-tablist>\n <p-tabpanels>\n @for (tab of fieldGroup(); track tab; let idx = $index) {\n <p-tabpanel [value]=\"tab.id ?? idx\" [class.hidden!]=\"tab.props['groupHidden']\">\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabpanel>\n }\n </p-tabpanels>\n</p-tabs>\n","import {ChangeDetectionStrategy, Component, DestroyRef, OnInit, inject, signal} from '@angular/core';\n\nimport {FieldWrapper, FormlyFieldConfig, FormlyValidationMessage} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {AFieldDescriptor, CommonsFormlyFieldConfig, EditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n selector: 'mng-formly-field-no-label-wrapper',\n templateUrl: './formly-field-no-label-wrapper.component.html',\n imports: [TranslatePipe, FormlyValidationMessage],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldNoLabelWrapperComponent extends FieldWrapper<CommonsFormlyFieldConfig> implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n\n public wrapperClassName = signal('mng-field-wrapper');\n public helpText = signal<string | undefined>(undefined);\n public shouldShowError = signal(false);\n\n public descriptor?: AFieldDescriptor<any, any, any, any>;\n public editorDescriptor?: EditorDescriptorInst<any, any>;\n\n public ngOnInit() {\n this.descriptor = this.props?.descriptor as AFieldDescriptor<any, any, any, any> | undefined;\n this.editorDescriptor = this.props?.editorDescriptor;\n\n const descriptorWrapperClass = this.descriptor?.className?.wrapper;\n if (descriptorWrapperClass != null) {\n this.wrapperClassName.update(c => c + ' ' + descriptorWrapperClass);\n }\n\n this.shouldShowError.set(this.field.type !== 'formly-group' || (typeof this.field.validators === 'object' && Object.keys(this.field.validators).length > 0));\n this.helpText.set(this.descriptor?.helpText);\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]=\"wrapperClassName()\">\n <ng-container #fieldComponent></ng-container>\n @if (helpText(); as ht) {\n <small class=\"block\">{{ ht | translate }}</small>\n }\n @if (showError && shouldShowError()) {\n <small class=\"block mng-field-validation-messages\">\n <formly-validation-message [field]=\"sanitizeErrorsForGroups(field)\"></formly-validation-message>\n </small>\n }\n</div>\n","import {NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, DestroyRef, OnInit, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {FieldWrapper, FormlyValidationMessage} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {Tooltip} from 'primeng/tooltip';\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 {labelInfoTooltipDefaultIcon} from '../../constants';\nimport {FormlyFieldLabelPipe} from '../../pipes/formly-field-label.pipe';\n\n@Component({\n selector: 'mng-formly-field-wrapper',\n templateUrl: './formly-field-wrapper.component.html',\n imports: [TranslatePipe, FormlyFieldLabelPipe, NgClass, Tooltip, FormlyValidationMessage],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldWrapperComponent extends FieldWrapper<CommonsFormlyFieldConfig> implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n protected readonly labelInfoTooltipDefaultIcon = labelInfoTooltipDefaultIcon;\n\n public wrapperClassName = signal('mng-field-wrapper');\n public helpText = signal<string | undefined>(undefined);\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 const descriptorWrapperClass = this.descriptor.className?.wrapper;\n if (descriptorWrapperClass != null) {\n this.wrapperClassName.update(c => c + ' ' + descriptorWrapperClass);\n }\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.wrapperClassName.update(c => c + ' mng-localized-input-translation-missing');\n }\n } else {\n this.helpText.set(descriptor.helpText);\n }\n });\n } else {\n this.helpText.set(descriptor.helpText);\n }\n }\n}\n","<div [class]=\"wrapperClassName()\">\n <div>\n @if (descriptor.label !== null) {\n <label [for]=\"key\" [class]=\"descriptor.className?.label\">\n {{ descriptor | mngFormlyFieldLabel: editorDescriptor | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n @if (descriptor.labelInfoTooltip !== undefined) {\n <span [ngClass]=\"{'ml-1': props.required && props['hideRequiredMarker'] !== true}\">\n <i [class]=\"descriptor.labelInfoTooltipIcon ?? labelInfoTooltipDefaultIcon\" [pTooltip]=\"descriptor.labelInfoTooltip | translate\"></i>\n </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=\"block mng-field-validation-messages\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n</div>\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit, computed, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyAttributes} from '@ngx-formly/core';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {filter, isObservable} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {COMMONS_MODULE_CONFIG_IT, dateToIsoString} from '@mediusinc/mng-commons/core';\nimport {DatetimePickerComponent} from '@mediusinc/mng-commons/form';\nimport {FieldInputDescriptor, FormFieldEventComponentSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ACommonsFormlyFieldType} from '../formly-field-type.abstract.component';\n\n@Component({\n selector: 'mng-formly-field-datepicker',\n templateUrl: './formly-field-datepicker.component.html',\n imports: [ReactiveFormsModule, TranslatePipe, FormlyAttributes, DatetimePickerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldDatepickerComponent<ET> extends ACommonsFormlyFieldType<any, ET, FieldInputDescriptor<ET>> implements OnInit, OnDestroy {\n public dpFormControl = new FormControl();\n readonly #validationClassName = signal('ng-valid');\n readonly styleClass = computed(() => [this.controlClassName(), this.#validationClassName()].join(' '));\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 this.#validationClassName.set(status === 'INVALID' ? 'ng-invalid' : 'ng-valid');\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 this.dpFormControl.statusChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(status => {\n if (status === 'INVALID') {\n const errors = {...this.formControl.errors};\n if (errors['invalidDate'] == null) {\n // add error and set all of them\n errors['invalidDate'] = true;\n this.formControl.setErrors(errors);\n }\n } else if (status === 'VALID') {\n const errors = {...this.formControl.errors};\n if (errors['invalidDate'] != null && Object.keys(errors).length === 1) {\n // only one error left, null should be set\n this.formControl.setErrors(null);\n } else if (errors['invalidDate'] != null) {\n // there are still others, remove this one and leave others\n delete errors['invalidDate'];\n this.formControl.setErrors(errors);\n }\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","<mng-datetime-picker\n [id]=\"descriptor.property\"\n [className]=\"styleClass()\"\n [formControl]=\"dpFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(minDate())\"\n [maxDate]=\"$any(maxDate())\"\n [time]=\"descriptor.datePickerShowTime\"\n [seconds]=\"descriptor.datePickerShowSeconds\"\n [milliseconds]=\"descriptor.datePickerShowMilliseconds\"\n [primeTimePicker]=\"descriptor.datePickerPrimeTimePicker\"\n [timeSelect]=\"descriptor.datePickerTimeSelect\"\n [timeSelectInterval]=\"descriptor.datePickerTimeSelectInterval\"\n showIcon=\"true\"\n showButtonBar=\"true\"\n [showClear]=\"!props.required\"\n [panelStyleClass]=\"controlClassName() + ' mng-field-datepicker'\"\n [inputStyleClass]=\"controlInputClassName()\"\n [placeholder]=\"descriptor.placeholder ?? '' | translate\"\n (blur)=\"onBlur()\">\n</mng-datetime-picker>\n","import {DatePipe} from '@angular/common';\n\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 {WrapperOption} from '../models/formly.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 {KeyofAndOfType} from '@mediusinc/mng-commons/core';\nimport {TypeDescriptor} from '@mediusinc/mng-commons/model';\nimport {\n AFieldDescriptor,\n EditorDescriptorInst,\n EditorDescriptorNestedObjectWrapper,\n FieldLookupDescriptor,\n FieldLookupProviderType,\n TableviewDescriptorInst,\n TableviewDescriptorType,\n fieldLookupGetProviderCfgObj\n} from '@mediusinc/mng-commons/tableview/api';\n\nexport function fieldProjectFieldToProperty<EditorModel, ParentEditorModel, ProjectedProp extends keyof EditorModel>(\n editor:\n | EditorDescriptorInst<EditorModel, ParentEditorModel>\n | TableviewDescriptorType<EditorModel, any, any, ParentEditorModel>\n | TableviewDescriptorInst<any, any, any, ParentEditorModel, any, any, any, EditorModel>,\n field: AFieldDescriptor<NonNullable<EditorModel[ProjectedProp]>, EditorModel, EditorModel[ProjectedProp], ParentEditorModel>,\n property: ProjectedProp\n): AFieldDescriptor<NonNullable<EditorModel[ProjectedProp]>, EditorModel, EditorModel[ProjectedProp], ParentEditorModel>;\nexport function fieldProjectFieldToProperty<FieldModel, EditorModel, FieldValue, ParentEditorModel, ProjectedProp extends keyof EditorModel>(\n editor:\n | EditorDescriptorInst<EditorModel, ParentEditorModel>\n | TableviewDescriptorType<EditorModel, any, any, ParentEditorModel>\n | TableviewDescriptorInst<any, any, any, ParentEditorModel, any, any, any, EditorModel>,\n field: AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>,\n property: ProjectedProp,\n mapFn: (value: FieldValue) => EditorModel[ProjectedProp]\n): AFieldDescriptor<NonNullable<EditorModel[ProjectedProp]>, EditorModel, EditorModel[ProjectedProp], ParentEditorModel>;\nexport function fieldProjectFieldToProperty<FieldModel, EditorModel, FieldValue, ParentEditorModel, ProjectedProp extends keyof EditorModel>(\n editor:\n | EditorDescriptorInst<EditorModel, ParentEditorModel>\n | TableviewDescriptorType<EditorModel, any, any, ParentEditorModel>\n | TableviewDescriptorInst<any, any, any, ParentEditorModel, any, any, any, EditorModel>,\n field: AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>,\n property: ProjectedProp,\n mapFn?: (value: FieldValue) => EditorModel[ProjectedProp]\n): AFieldDescriptor<NonNullable<EditorModel[ProjectedProp]>, EditorModel, EditorModel[ProjectedProp], ParentEditorModel> {\n return editor\n .addField<ProjectedProp, NonNullable<EditorModel[ProjectedProp]>, EditorModel[ProjectedProp]>(property)\n .asHidden()\n .withSetter(item => {\n const value = item[field.property as keyof object];\n item[property] = mapFn != null ? mapFn(value) : value;\n });\n}\n\nexport function fieldLookupWithOptionsValueProperty<\n Property extends keyof EditorModel,\n EditorModel,\n ParentEditorModel,\n Service,\n LookupModel,\n LookupValueProperty extends KeyofAndOfType<LookupModel, EditorModel[Property]>,\n FieldValue = EditorModel[Property]\n>(\n editor:\n | EditorDescriptorInst<EditorModel, ParentEditorModel>\n | EditorDescriptorNestedObjectWrapper<any, ParentEditorModel, EditorModel>\n | TableviewDescriptorType<EditorModel, any, any, ParentEditorModel>\n | TableviewDescriptorInst<any, any, any, ParentEditorModel, any, any, any, EditorModel>,\n property: Property,\n opts: {\n serviceProvider?: FieldLookupProviderType<LookupModel, Service>;\n type?: TypeDescriptor<LookupModel>;\n },\n lookupOptionsValueProperty: LookupValueProperty\n): FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel> {\n const fieldProperty = editor instanceof EditorDescriptorNestedObjectWrapper ? editor.getNestedPropertyPath(property) : (property as string);\n const cfg = fieldLookupGetProviderCfgObj(opts?.serviceProvider);\n const field = new FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel>(fieldProperty, {\n optionsValueProperty: lookupOptionsValueProperty as string,\n ...cfg\n });\n editor.addFieldDescriptor(field);\n return field;\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 {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 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, any, any, any, any, any>>();\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\ntype TableviewRoutePermissionObjType = {\n read?: APermissions;\n add?: APermissions;\n edit?: APermissions;\n delete?: APermissions;\n details?: APermissions;\n [key: string]: APermissions | undefined;\n};\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?: Record<string, APermissions>;\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: TableviewRoutePermissionObjType): this {\n return this.withPermissions(\n permissions.read ?? permissions[TableviewActionDefaultCategories.READ],\n permissions.add ?? permissions[TableviewActionDefaultCategories.ADD],\n permissions.edit ?? permissions[TableviewActionDefaultCategories.EDIT],\n permissions.delete ?? permissions[TableviewActionDefaultCategories.DELETE],\n permissions.details ?? permissions[TableviewActionDefaultCategories.DETAILS]\n );\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 super.withPermissions(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';\nimport {Provider} from '@angular/core';\n\nimport {FORMLY_CONFIG, provideFormlyCore} 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 let formlyProviders: Provider[] = [];\n if (config?.formly?.skip !== true) {\n formlyProviders = provideTableviewFormly();\n }\n\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 ...formlyProviders,\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\n/**\n * Prepares providers for usage of the tableview functionalities.\n *\n * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.\n */\nexport function provideTableviewChild(config?: TableviewFeatureConfig): Provider[] {\n let formlyProviders: Provider[] = [];\n if (config?.formly?.skip !== true) {\n formlyProviders = provideTableviewFormly();\n }\n\n return [\n DatePipe,\n NavigationService,\n {\n provide: COMMONS_TABLEVIEW_FEATURE_CONFIG_IT,\n useValue: config\n },\n ...formlyProviders,\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/**\n * Prepares providers for formly, including formly core.\n * If you choose to include formly with custom initialization and with tableview editor features, used this provider.\n * Currently multiple injections of `FORMLY_CONFIG` token won't work because of bug: https://github.com/ngx-formly/ngx-formly/issues/4107\n */\nexport function provideTableviewFormly(): Provider[] {\n const formlyProviders = provideFormlyCore() as Provider[]; // must case, because it wrongly returns Provider\n return [\n ...formlyProviders,\n // add custom provider for commons config\n {\n provide: FORMLY_CONFIG,\n multi: true,\n useFactory: commonsFormlyConfigProvider,\n deps: [TranslateService, DatePipe, COMMONS_TABLEVIEW_FEATURE_CONFIG_IT]\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/inject';\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/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/editor-validators';\nexport * from './editor/helpers/field-create';\nexport * from './editor/helpers/notification';\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":["getKeysByPriority","mergeMap","toObservable","take","filter"],"mappings":"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"}
|