@mediusinc/mng-commons 5.4.0-rc.3 → 5.4.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/data-list/data-list-params-helpers.d.ts +1 -1
- package/core/data-list/data-list.model.d.ts +1 -0
- package/core/helpers/type-helpers.d.ts +12 -0
- package/esm2022/core/data-list/data-list-params-helpers.mjs +29 -5
- package/esm2022/core/data-list/data-list.model.mjs +1 -1
- package/esm2022/core/helpers/type-helpers.mjs +1 -1
- package/esm2022/filter/descriptors/filter-generic.descriptor.mjs +21 -0
- package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +1 -1
- package/esm2022/filter/descriptors/filter.descriptor.mjs +40 -1
- package/esm2022/filter/index.mjs +3 -1
- package/esm2022/filter/models/filter-generic-property.model.mjs +2 -0
- package/esm2022/form/components/dropdown/dropdown.component.mjs +159 -10
- package/esm2022/table/api/descriptors/table.descriptor.mjs +51 -2
- package/esm2022/table/components/column-filter/column-filter.component.mjs +2 -2
- package/esm2022/table/components/filter/filter-active-tag/filter-active-tag.component.mjs +4 -1
- package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +42 -9
- package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +95 -11
- package/esm2022/table/components/table/table.component.mjs +54 -10
- package/esm2022/table/helpers/filters.mjs +32 -2
- package/esm2022/table/services/table-feature-config.token.mjs +1 -1
- package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +2 -2
- package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +11 -10
- package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +16 -2
- package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +2 -1
- package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +2 -2
- package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +3 -4
- package/esm2022/tableview/editor/components/formly/fields/formly-field-type.abstract.component.mjs +2 -1
- package/fesm2022/mediusinc-mng-commons-core.mjs +28 -4
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-filter.mjs +61 -1
- package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form.mjs +156 -7
- package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs +50 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table.mjs +227 -42
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +26 -10
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +7 -6
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/filter/descriptors/filter-generic.descriptor.d.ts +11 -0
- package/filter/descriptors/filter.descriptor.d.ts +21 -2
- package/filter/index.d.ts +2 -0
- package/filter/models/filter-generic-property.model.d.ts +7 -0
- package/form/components/dropdown/dropdown.component.d.ts +27 -1
- package/i18n/en.json +4 -0
- package/i18n/sl.json +4 -0
- package/package.json +7 -7
- package/table/api/descriptors/table.descriptor.d.ts +33 -1
- package/table/components/filter/filter-form/filter-form.component.d.ts +11 -2
- package/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.d.ts +21 -1
- package/table/components/table/table.component.d.ts +18 -3
- package/table/helpers/filters.d.ts +9 -1
- package/table/services/table-feature-config.token.d.ts +1 -0
- package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +6 -4
- package/tableview/api/editor/descriptors/field.descriptor.d.ts +10 -1
- package/version-info.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediusinc-mng-commons-tableview-api.mjs","sources":["../../tableview/api/src/action/models/action.type.ts","../../tableview/api/src/action/models/tableview-action-default-categories.model.ts","../../tableview/api/src/action/descriptors/action-confirmation.descriptor.ts","../../tableview/api/src/action/descriptors/action.descriptor.ts","../../tableview/api/src/action/descriptors/action-descriptor.factory.ts","../../tableview/api/src/editor/data-providers/editor.data-provider.ts","../../tableview/api/src/action/descriptors/action-editor.descriptor.ts","../../tableview/api/src/action/descriptors/action-editor-descriptor.factory.ts","../../tableview/api/src/action/descriptors/action-link.descriptor.ts","../../tableview/api/src/action/descriptors/action-link-descriptor.factory.ts","../../tableview/api/src/action/models/action-error.model.ts","../../tableview/api/src/action/helpers/data-provider-executors.ts","../../tableview/api/src/action/models/execution/action-instance-state.model.ts","../../tableview/api/src/action/services/tokens/data-language-dropdown.token.ts","../../tableview/api/src/action/services/data-provider-executor.service.ts","../../tableview/api/src/editor/data-providers/editor-data-provider.factory.ts","../../tableview/api/src/editor/models/editor.model.ts","../../tableview/api/src/editor/models/field.model.ts","../../tableview/api/src/editor/descriptors/field-validation.descriptor.ts","../../tableview/api/src/editor/descriptors/field-base.descriptor.ts","../../tableview/api/src/editor/descriptors/field-action.descriptor.ts","../../tableview/api/src/editor/descriptors/field-group.descriptor.ts","../../tableview/api/src/editor/descriptors/field-lookup.descriptor.ts","../../tableview/api/src/editor/descriptors/field-many.descriptor.ts","../../tableview/api/src/editor/descriptors/field.descriptor.ts","../../tableview/api/src/editor/descriptors/editor.descriptor.ts","../../tableview/api/src/editor/helpers/class-attribute-converter.ts","../../tableview/api/src/editor/helpers/editor-descriptor-helpers.ts","../../tableview/api/src/editor/descriptors/editor-descriptor.factory.ts","../../tableview/api/src/editor/models/form-editor.event.ts","../../tableview/api/src/editor/models/formly-custom-field.model.ts","../../tableview/api/src/tableview/data-providers/tableview.data-provider.ts","../../tableview/api/src/tableview/data-providers/tableview-data-provider.factory.ts","../../tableview/api/src/tableview/descriptors/tableview.descriptor.ts","../../tableview/api/src/tableview/descriptors/tableview-descriptor.factory.ts","../../tableview/api/src/tableview/helpers/class-attribute-converter.ts","../../tableview/api/src/tableview/helpers/files-export.ts","../../tableview/api/src/tableview/helpers/tableview-default-actions.ts","../../tableview/api/src/tableview/helpers/tableview-input-builder.ts","../../tableview/api/src/tableview/helpers/tableview-create.ts","../../tableview/api/src/tableview/helpers/tableview-data-provider-descriptor-convert.ts","../../tableview/api/src/tableview/helpers/tableview-descriptor-helpers.ts","../../tableview/api/src/index.ts","../../tableview/api/src/mediusinc-mng-commons-tableview-api.ts"],"sourcesContent":["export enum ActionPositionEnum {\n ToolbarLeft,\n ToolbarRight,\n TableHeader,\n RowInline,\n RowClick,\n FooterLeft,\n FooterRight\n}\n\nexport enum ActionActivationTriggerEnum {\n OnClick, // action is triggered for activation on click\n OnRoute // action is triggered for activation by route url\n}\n\nexport enum ActionTypeEnum {\n Direct, // action is directly activated and executed\n Editor // editor providing middle step for activation\n}\n\nexport enum ActionEditorSubmitTypeEnum {\n Submit,\n Cancel\n}\n","/**\n * Default categories for tableview actions\n */\nexport class TableviewActionDefaultCategories {\n public static readonly READ = 'read';\n public static readonly ADD = 'add';\n public static readonly EDIT = 'edit';\n public static readonly DELETE = 'delete';\n public static readonly DETAILS = 'details';\n}\n","import {Confirmation} from 'primeng/api';\n\nimport {StyleLevelEnum} from '@mediusinc/mng-commons/core';\nimport {ActionButtonDescriptor, ButtonStyleBuilder} from '@mediusinc/mng-commons/form/api';\n\nimport {IActionContext} from '../models/execution/action-context.model';\n\nexport class ActionConfirmationDescriptor<Model> {\n private _icon?: string; // Icon to display next to message.\n private _title?: string | null; // Translation for title text of the dialog.\n private _message?: string | null; // Translation for body text of the dialog.\n\n private _acceptButton: ActionButtonDescriptor;\n private _rejectButton?: ActionButtonDescriptor;\n\n private _closeOnEscape = true; // Defines if dialog closes when esc key is pressed.\n private _closable = true; // Defines if dialog is closable.\n private _runConfirmationConfigMapFn?: ConfigurationConfigMapFn<Model>; //function used to generate the confirmation dialogue. **WARNING** changing the *accept* and *reject* methods of the *confirmConfig* parameter may lead to unexpected behaviour\n\n constructor() {\n this._acceptButton = new ActionButtonDescriptor().withIcon('pi pi-check').withStyleClass(new ButtonStyleBuilder(StyleLevelEnum.Default));\n this._rejectButton = new ActionButtonDescriptor().withIcon('pi pi-times').withStyleClass(new ButtonStyleBuilder(StyleLevelEnum.Default).withTextButton());\n this._icon = 'pi pi-exclamation-triangle';\n }\n\n public withIcon(icon?: string): this {\n this._icon = icon;\n return this;\n }\n\n public withTitle(title?: string | null): this {\n this._title = title;\n return this;\n }\n\n public withMessage(message?: string | null): this {\n this._message = message;\n return this;\n }\n\n public withAcceptButton(actionButtonDescriptor: ActionButtonDescriptor): this {\n this._acceptButton = actionButtonDescriptor;\n return this;\n }\n\n public withRejectButton(actionButtonDescriptor?: ActionButtonDescriptor): this {\n this._rejectButton = actionButtonDescriptor;\n return this;\n }\n\n /**\n * set if dialog can be closed on escaped pressed\n * if true, then closable is also set to true\n * @param closeOnEscape\n */\n public withCloseOnEscape(closeOnEscape: boolean): this {\n if (closeOnEscape) {\n this._closable = true;\n }\n this._closeOnEscape = closeOnEscape;\n return this;\n }\n\n public withClosable(closable: boolean): this {\n this._closable = closable;\n return this;\n }\n\n public withRunConfirmationConfigMapFn(runConfirmationConfigMapFn?: ConfigurationConfigMapFn<Model>): this {\n this._runConfirmationConfigMapFn = runConfirmationConfigMapFn;\n return this;\n }\n\n public get icon() {\n return this._icon;\n }\n\n public get title() {\n return this._title;\n }\n\n public get message() {\n return this._message;\n }\n\n public get closeOnEscape() {\n return this._closeOnEscape;\n }\n\n public get closable() {\n return this._closable;\n }\n\n public get runConfirmationConfigMapFn() {\n return this._runConfirmationConfigMapFn;\n }\n\n public get acceptButton() {\n return this._acceptButton;\n }\n\n public get rejectButton() {\n return this._rejectButton;\n }\n}\n\nexport type ConfigurationConfigMapFn<Item> = (ctx: IActionContext<Item, any>, confirmConfig: Confirmation) => Confirmation;\n","import {InjectionToken, Type} from '@angular/core';\n\nimport {of} from 'rxjs';\n\nimport {\n APermissions,\n ClassType,\n CommonsInternalError,\n DataProviderInst,\n IActionDescriptor,\n IDataProvider,\n LoggerService,\n ServiceClassType,\n StyleLevelEnum,\n StyleSizeEnum,\n findReflectTypeName\n} from '@mediusinc/mng-commons/core';\nimport {ActionButtonDescriptor, ButtonStyleBuilder} from '@mediusinc/mng-commons/form/api';\nimport {ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {IActionComponent} from '../models/action-component.model';\nimport {ActionRunFnType, ActionValidationFnType} from '../models/action-descriptor.types';\nimport {ActionActivationTriggerEnum, ActionPositionEnum, ActionTypeEnum} from '../models/action.type';\nimport {IActionContext} from '../models/execution/action-context.model';\nimport {TableviewActionDefaultCategories} from '../models/tableview-action-default-categories.model';\nimport {ActionConfirmationDescriptor} from './action-confirmation.descriptor';\n\nexport type ActionDescriptorCreateOptsProviderType<Item, Service> = {\n serviceType?: ServiceClassType<Service>;\n dataProvider?: IDataProvider<Item, Service>;\n};\n\nexport type ActionDescriptorCreateOptsParentType = {\n parentModel?: ModelDescriptor<any>;\n parentProperty?: string;\n};\n\nexport type ActionDescriptorConstructorOptsType<Item, Service> = ActionDescriptorCreateOptsParentType &\n ActionDescriptorCreateOptsProviderType<Item, Service> & {\n model?: ModelDescriptor<Item>;\n };\n\nexport class ActionDescriptorInst<Item, Service = any, ReturnItem = Item> implements IActionDescriptor<Item, Service> {\n protected readonly _model?: ModelDescriptor<Item>;\n protected readonly _actionName: string;\n protected readonly _actionNameLong: string;\n protected readonly _parentModel?: ModelDescriptor<any>;\n protected readonly _parentProperty?: string;\n\n protected readonly _dataProvider?: IDataProvider<Item, Service>;\n\n protected _i18nModelActionBaseKey?: string;\n\n protected _type: ActionTypeEnum = ActionTypeEnum.Direct;\n protected _activationTrigger: ActionActivationTriggerEnum = ActionActivationTriggerEnum.OnClick;\n protected _position: ActionPositionEnum = ActionPositionEnum.ToolbarRight;\n protected _level: StyleLevelEnum = StyleLevelEnum.Default;\n private _positionTableviewCategories?: string[];\n protected _tableviewCategory?: string;\n\n protected _routeUrl: string | null = null;\n\n protected _runFunction?: ActionRunFnType<Item, Service, ReturnItem>;\n protected _isVisibleFunction?: ActionValidationFnType<Item, Service>;\n protected _isEnabledFunction?: ActionValidationFnType<Item, Service>;\n\n protected _runConfirmationDialogDescriptor?: ActionConfirmationDescriptor<Item>;\n\n protected _hasRunNotificationSuccess = true;\n protected _runNotificationSuccessTitle?: string;\n protected _runNotificationSuccessMessage?: string;\n\n protected _hasRunNotificationError = true;\n protected _runNotificationErrorTitle?: string;\n protected _runNotificationErrorMessage?: string;\n\n protected _afterRunAction?: ActionDescriptorInst<any> | ((ctx: IActionContext<Item, any>) => ActionDescriptorInst<any>);\n protected _onRunErrorAction?: ActionDescriptorInst<Item> | ((ctx: IActionContext<Item, any>) => ActionDescriptorInst<Item>);\n\n // security\n protected _permissions?: APermissions;\n\n //button\n protected _button = new ActionButtonDescriptor();\n\n // multiple row selection\n protected _hasItemsSelection = false;\n\n // custom action component\n protected _component?: Type<IActionComponent<Item>>;\n protected _componentFromDi?: InjectionToken<Type<any>>;\n\n // subactions\n protected _subactionsAsMenu = false;\n protected _subactions: Array<ActionDescriptorInst<Item>> = [];\n\n public constructor(actionName: string, cfg?: ActionDescriptorConstructorOptsType<Item, Service>) {\n this._model = cfg?.model;\n this._actionName = actionName;\n\n if ((cfg?.parentModel && !cfg?.parentProperty) || (!cfg?.parentProperty && cfg?.parentProperty)) {\n throw new CommonsInternalError(\n `Provide both the parent model and parent property or none: ${this._actionName}, ${cfg?.parentModel?.i18nBaseKey}, ${cfg?.parentProperty}.`\n );\n }\n this._parentModel = cfg?.parentModel;\n this._parentProperty = cfg?.parentProperty;\n\n this.setI18nModelActionBaseKey();\n\n if (cfg?.serviceType) {\n this._dataProvider = new DataProviderInst<Item, Service>(this._model?.type, cfg.serviceType);\n } else if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n\n let displayName = actionName;\n if (this._model) displayName = this._model.i18nBaseKey ? `${this._model.i18nBaseKey}.${displayName}` : displayName;\n if (this._parentModel) {\n displayName = `${this._parentModel.i18nBaseKey}.${this._parentProperty}_${displayName}`;\n }\n this._actionNameLong = displayName;\n }\n\n public get model() {\n return this._model;\n }\n\n public get parentModel() {\n return this._parentModel;\n }\n\n public get parentProperty() {\n return this._parentProperty;\n }\n\n public get i18nModelActionBaseKey() {\n return this._i18nModelActionBaseKey;\n }\n\n public get type() {\n return this._type;\n }\n\n public get activationTrigger() {\n return this._activationTrigger;\n }\n\n public get position() {\n return this._position;\n }\n\n public get level() {\n return this._level;\n }\n\n public get routeUrl() {\n return this._routeUrl;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get hasRunFunction(): boolean {\n return typeof this._runFunction === 'function';\n }\n\n public get runFunction(): ActionRunFnType<Item, Service, ReturnItem> {\n if (!this._runFunction) {\n throw new CommonsInternalError(`Run function is not defined for action ${this._actionNameLong} and cannot be invoked`);\n }\n return this._runFunction;\n }\n\n public get isVisibleFunction() {\n return this._isVisibleFunction;\n }\n\n public get isEnabledFunction() {\n return this._isEnabledFunction;\n }\n\n public get actionName() {\n return this._actionName;\n }\n\n public get actionNameLong() {\n return this._actionNameLong;\n }\n\n public get className() {\n return this.button.styleClass.customClass;\n }\n\n public get runConfirmationDialogDescriptor() {\n return this._runConfirmationDialogDescriptor;\n }\n\n public get hasRunConfirmation() {\n return this._runConfirmationDialogDescriptor !== null && this._runConfirmationDialogDescriptor !== undefined;\n }\n\n public get hasRunNotificationSuccess() {\n return this._hasRunNotificationSuccess;\n }\n\n public get runNotificationSuccessTitle() {\n return this._runNotificationSuccessTitle;\n }\n\n public get runNotificationSuccessMessage() {\n return this._runNotificationSuccessMessage;\n }\n\n public get hasRunNotificationError() {\n return this._hasRunNotificationError;\n }\n\n public get runNotificationErrorTitle() {\n return this._runNotificationErrorTitle;\n }\n\n public get runNotificationErrorMessage() {\n return this._runNotificationErrorMessage;\n }\n\n public get afterRunAction() {\n return this._afterRunAction;\n }\n\n public get onRunErrorAction() {\n return this._onRunErrorAction;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public get tableviewCategory() {\n return this._tableviewCategory;\n }\n\n public get hasItemsSelection() {\n return this._hasItemsSelection;\n }\n\n public get button() {\n return this._button;\n }\n\n public get component() {\n return this._component;\n }\n\n public get componentFromDi() {\n return this._componentFromDi;\n }\n\n public get positionTableviewCategories() {\n return this._positionTableviewCategories;\n }\n\n public get subactionsAsMenu() {\n return this._subactionsAsMenu;\n }\n\n public get subactions() {\n return this._subactions;\n }\n\n protected setI18nModelActionBaseKey(base?: string) {\n if (this._parentModel || this._model) {\n this._i18nModelActionBaseKey = this._parentModel\n ? `${this._parentModel.i18nBaseKey}.actions.${this._parentProperty}_${this._actionName}`\n : `${base ?? this._model!.i18nBaseKey}.actions.${this._actionName}`;\n }\n }\n\n public withRunFunction(fn: ActionRunFnType<Item, Service, ReturnItem>): this {\n this._runFunction = fn;\n return this;\n }\n\n public withIsVisibleFunction(fn?: ActionValidationFnType<Item, Service>): this {\n this._isVisibleFunction = fn;\n return this;\n }\n\n public withIsEnabledFunction(fn?: ActionValidationFnType<Item, Service>): this {\n this._isEnabledFunction = fn;\n return this;\n }\n\n public withRouteTrigger(routeUrl: string): this {\n this._activationTrigger = ActionActivationTriggerEnum.OnRoute;\n this._routeUrl = routeUrl;\n return this;\n }\n\n public withPosition(position: ActionPositionEnum): this {\n this._position = position;\n return this;\n }\n\n /**\n * creates confirmation action with default style based on action descriptor\n */\n public withRunConfirmation(): ActionConfirmationDescriptor<Item> {\n this._runConfirmationDialogDescriptor = new ActionConfirmationDescriptor<Item>();\n this._runConfirmationDialogDescriptor.acceptButton.styleClass.withActionLevel(this._level);\n this._runConfirmationDialogDescriptor.rejectButton?.styleClass.withActionLevel(this._level);\n\n return this._runConfirmationDialogDescriptor;\n }\n\n /**\n * Add a configuration dialogue to action using ActionConfigurationDescriptor\n * @param runConfirmationDialogDescriptor descriptor with customizable information for dialog\n */\n public withRunConfirmationDescriptor(runConfirmationDialogDescriptor?: ActionConfirmationDescriptor<Item>): this {\n this._runConfirmationDialogDescriptor = runConfirmationDialogDescriptor;\n return this;\n }\n\n public withRunNotificationSuccess(title?: string, message?: string, hasNotification = true): this {\n this._hasRunNotificationSuccess = hasNotification;\n this._runNotificationSuccessTitle = title;\n this._runNotificationSuccessMessage = message;\n return this;\n }\n\n public withRunNotificationError(title?: string, message?: string, hasNotification = true): this {\n this._hasRunNotificationError = hasNotification;\n this._runNotificationErrorTitle = title;\n this._runNotificationErrorMessage = message;\n return this;\n }\n\n public withAfterRunAction<Return, Service = any>(action?: ActionDescriptorInst<Return> | ((ctx: IActionContext<Item, Service>) => ActionDescriptorInst<Return>)): this {\n this._afterRunAction = action;\n return this;\n }\n\n public withOnRunErrorAction<S = any>(action?: ActionDescriptorInst<Item> | ((ctx: IActionContext<Item, S>) => ActionDescriptorInst<Item>)): this {\n this._onRunErrorAction = action;\n return this;\n }\n\n public withPermissions(permissions: APermissions): this {\n if (this._tableviewCategory) {\n LoggerService.get().debug(\n `WARNING: Permissions set on action ${this._actionNameLong} with route type '${this._tableviewCategory}' will be omitted in route guard validation.`\n );\n }\n this._permissions = permissions;\n return this;\n }\n\n public withTableviewCategory(permissionsRouteType: string): this {\n this._tableviewCategory = permissionsRouteType;\n return this;\n }\n\n public withButtonDescriptor(button: ActionButtonDescriptor): this {\n this._button = button;\n return this;\n }\n\n public withButton(label?: string | null, icon: string | null = null, styleLevel = StyleLevelEnum.Default, styleText = false): this {\n this._button = new ActionButtonDescriptor().withLabel(label).withIcon(icon).withStyleClass(new ButtonStyleBuilder(styleLevel).withTextButton(styleText));\n return this;\n }\n\n public withItemsSelection(hasSelection = true): this {\n this._hasItemsSelection = hasSelection;\n this._isEnabledFunction = this._isEnabledFunction ?? (ctx => of((ctx.parameters.selectedItems?.length ?? 0) > 0));\n return this;\n }\n\n public withComponent(component: Type<IActionComponent<Item>>): this {\n this._component = component;\n return this;\n }\n\n public withComponentFromDi(injectionToken: InjectionToken<Type<any>>): this {\n this._componentFromDi = injectionToken;\n return this;\n }\n\n public withPositionTableviewCategories(positionTableviewCategories: string[]): this {\n this._positionTableviewCategories = positionTableviewCategories;\n return this;\n }\n\n public withI18nBase(base: ClassType<unknown> | string): this {\n if (typeof base !== 'string') {\n const typeName = findReflectTypeName(base);\n if (!typeName) {\n throw new CommonsInternalError(`Could not find define i18nBaseKey for ${base} on action ${this.actionNameLong}`);\n }\n base = typeName;\n }\n this.setI18nModelActionBaseKey(base);\n return this;\n }\n\n public withSubactionsAsMenu(subactionsAsMenu = true): this {\n this._subactionsAsMenu = subactionsAsMenu;\n return this;\n }\n\n public withSubactions(...subactions: Array<ActionDescriptorInst<Item>>): this {\n this._subactions.push(...subactions);\n return this;\n }\n\n public copyTo(descriptor: ActionDescriptorInst<Item, Service, ReturnItem>): ActionDescriptorInst<Item, Service, ReturnItem> {\n descriptor._i18nModelActionBaseKey = this._i18nModelActionBaseKey;\n descriptor._type = this._type;\n descriptor._activationTrigger = this._activationTrigger;\n descriptor._position = this._position;\n descriptor._level = this._level;\n descriptor._positionTableviewCategories = this._positionTableviewCategories;\n\n descriptor._tableviewCategory = this._tableviewCategory;\n descriptor._routeUrl = this._routeUrl;\n\n descriptor._runFunction = this._runFunction;\n descriptor._isVisibleFunction = this._isVisibleFunction;\n descriptor._isEnabledFunction = this._isEnabledFunction;\n\n descriptor._runConfirmationDialogDescriptor = this._runConfirmationDialogDescriptor;\n\n descriptor._hasRunNotificationSuccess = this._hasRunNotificationSuccess;\n descriptor._runNotificationSuccessTitle = this._runNotificationSuccessTitle;\n descriptor._runNotificationSuccessMessage = this._runNotificationSuccessMessage;\n\n descriptor._hasRunNotificationError = this._hasRunNotificationError;\n descriptor._runNotificationErrorTitle = this._runNotificationErrorTitle;\n descriptor._runNotificationErrorMessage = this._runNotificationErrorMessage;\n\n descriptor._afterRunAction = this._afterRunAction;\n descriptor._onRunErrorAction = this._onRunErrorAction;\n\n descriptor._permissions = this._permissions;\n\n descriptor._button = this._button.copy();\n\n descriptor._hasItemsSelection = this._hasItemsSelection;\n descriptor._component = this._component;\n descriptor._subactionsAsMenu = this._subactionsAsMenu;\n descriptor._subactions = this._subactions;\n\n return descriptor;\n }\n}\n\nexport class ActionDeleteDescriptorInst<Item, Service = any> extends ActionDescriptorInst<Item, Service> {\n public static readonly ACTION_NAME = 'delete';\n\n constructor(model: ModelDescriptor<Item>, cfg?: ActionDescriptorCreateOptsProviderType<Item, Service>) {\n super(ActionDeleteDescriptorInst.ACTION_NAME, {model, ...cfg});\n this.withPosition(ActionPositionEnum.RowInline);\n this.button.styleClass.withSize(StyleSizeEnum.Small);\n this.button.styleClass.withActionLevel(StyleLevelEnum.Danger);\n this.withRunConfirmation();\n this.withTableviewCategory(TableviewActionDefaultCategories.DELETE);\n this.button.withLabel(null).withIcon('pi pi-trash');\n }\n}\n","import {ClassType, IDataProvider, ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {ActionDeleteDescriptorInst, ActionDescriptorCreateOptsParentType, ActionDescriptorCreateOptsProviderType, ActionDescriptorInst} from './action.descriptor';\n\nexport type ActionDescriptorCreateFromClassOpts<Model> = ActionDescriptorCreateOptsModel<Model> & ActionDescriptorCreateOptsI18nType & ActionDescriptorCreateOptsParentType;\n\nexport type ActionDescriptorCreateOptsI18nType = {\n i18nBaseKey?: string | ClassType<any>;\n};\n\nexport type ActionDescriptorCreateOptsModel<Model> = {\n idProperty?: keyof Model;\n titleProperty?: keyof Model;\n};\n\nexport type ActionProviderType<Model, Service> = ServiceClassType<Service> | IDataProvider<Model, Service>;\n\nexport const actionGetProviderCfgObj = <Model, Service>(serviceOrDataProvider?: ActionProviderType<Model, Service>) => {\n const cfg: ActionDescriptorCreateOptsProviderType<Model, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider as IDataProvider<Model, Service>;\n } else {\n cfg.serviceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\nexport class ActionDescriptor extends ActionDescriptorInst<any> {\n protected constructor() {\n super('internal');\n }\n\n public static create<Model>(actionName: string, cfg?: ActionDescriptorCreateOptsParentType): ActionDescriptorInst<Model, undefined> {\n return action<Model>(actionName, {\n ...cfg\n });\n }\n\n public static createWithProvider<Model, Service>(\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n ): ActionDescriptorInst<Model, Service> {\n return actionWithProvider<Model, Service>(serviceProvider, actionName, cfg);\n }\n\n public static fromModel<Model>(model: ModelDescriptor<Model>, actionName: string, cfg?: ActionDescriptorCreateOptsParentType): ActionDescriptorInst<Model, undefined> {\n return actionFromModel<Model>(model, actionName, cfg);\n }\n\n public static fromModelWithProvider<Model, Service>(\n model: ModelDescriptor<Model>,\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n ): ActionDescriptorInst<Model, Service> {\n return actionFromModel<Model, Service>(model, serviceProvider, actionName, cfg);\n }\n\n public static fromClass<Model>(type: ClassType<Model>, actionName: string, cfg?: ActionDescriptorCreateFromClassOpts<Model>): ActionDescriptorInst<Model, undefined> {\n return actionFromClass<Model>(type, actionName, cfg);\n }\n\n public static fromClassWithProvider<Model, Service>(\n type: ClassType<Model>,\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateFromClassOpts<Model>\n ): ActionDescriptorInst<Model, Service> {\n return actionFromClass<Model, Service>(type, serviceProvider, actionName, cfg);\n }\n}\n\nexport function action<Model>(actionName: string, cfg?: ActionDescriptorCreateOptsParentType): ActionDescriptorInst<Model, undefined>;\nexport function action<Model>(type: TypeDescriptor<Model>, actionName: string, cfg?: ActionDescriptorCreateOptsParentType): ActionDescriptorInst<Model, undefined>;\nexport function action<Model>(\n typeOrActionName: TypeDescriptor<Model> | string,\n actionNameOrCfg?: string | ActionDescriptorCreateOptsParentType,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionDescriptorInst<Model, undefined> {\n if (typeof typeOrActionName === 'string') {\n return new ActionDescriptorInst<Model, undefined>(\n typeOrActionName,\n typeof actionNameOrCfg === 'string'\n ? undefined\n : {\n ...actionNameOrCfg\n }\n );\n } else {\n return new ActionDescriptorInst<Model, undefined>(typeof actionNameOrCfg === 'string' ? actionNameOrCfg : 'default', {\n ...cfg\n });\n }\n}\n\nexport function actionWithProvider<Model, Service>(\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionDescriptorInst<Model, Service>;\nexport function actionWithProvider<Model, Service>(\n type: TypeDescriptor<Model>,\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionDescriptorInst<Model, Service>;\nexport function actionWithProvider<Model, Service>(\n typeOrServiceProvider: TypeDescriptor<Model> | ActionProviderType<Model, Service>,\n serviceProviderOrActionName: ActionProviderType<Model, Service> | string,\n actionNameOrCfg?: string | ActionDescriptorCreateOptsParentType,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionDescriptorInst<Model, Service> {\n const actionName = typeof serviceProviderOrActionName === 'string' ? serviceProviderOrActionName : typeof actionNameOrCfg === 'string' ? actionNameOrCfg : 'default';\n if (typeOrServiceProvider instanceof TypeDescriptor) {\n return new ActionDescriptorInst<Model, Service>(actionName, {\n ...(typeof serviceProviderOrActionName === 'string' ? {} : actionGetProviderCfgObj(serviceProviderOrActionName)),\n ...(typeof actionNameOrCfg === 'string' ? {} : actionNameOrCfg),\n ...cfg\n });\n } else {\n return new ActionDescriptorInst<Model, Service>(actionName, {\n ...actionGetProviderCfgObj(typeOrServiceProvider),\n ...cfg\n });\n }\n}\n\nexport function actionFromModel<Model>(model: ModelDescriptor<Model>, actionName: string, cfg?: ActionDescriptorCreateOptsParentType): ActionDescriptorInst<Model, undefined>;\nexport function actionFromModel<Model, Service>(\n model: ModelDescriptor<Model>,\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionDescriptorInst<Model, Service>;\nexport function actionFromModel<Model, Service>(\n model: ModelDescriptor<Model>,\n actionNameOrServiceProvider: string | ActionProviderType<Model, Service>,\n cfgOrActionName?: string | ActionDescriptorCreateOptsParentType,\n cfg?: ActionDescriptorCreateOptsParentType\n) {\n if (typeof actionNameOrServiceProvider === 'string') {\n // no provider\n return new ActionDescriptorInst<Model, undefined>(actionNameOrServiceProvider, {\n model,\n ...(typeof cfgOrActionName === 'object' ? cfgOrActionName : {}),\n ...cfg\n });\n } else {\n return new ActionDescriptorInst<Model, Service>(typeof cfgOrActionName === 'string' ? cfgOrActionName : 'default', {\n model,\n ...actionGetProviderCfgObj(actionNameOrServiceProvider),\n ...cfg\n });\n }\n}\n\nexport function actionFromClass<Model>(type: ClassType<Model>, actionName: string, cfg?: ActionDescriptorCreateFromClassOpts<Model>): ActionDescriptorInst<Model, undefined>;\nexport function actionFromClass<Model, Service>(\n type: ClassType<Model>,\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateFromClassOpts<Model>\n): ActionDescriptorInst<Model, Service>;\nexport function actionFromClass<Model, Service>(\n type: ClassType<Model>,\n actionNameOrServiceProvider: string | ActionProviderType<Model, Service>,\n cfgOrActionName?: string | ActionDescriptorCreateFromClassOpts<Model>,\n cfg?: ActionDescriptorCreateFromClassOpts<Model>\n): ActionDescriptorInst<Model, Service> {\n if (typeof actionNameOrServiceProvider === 'string') {\n // no provider\n const finalCfg = typeof cfgOrActionName === 'object' ? cfgOrActionName : cfg;\n return new ActionDescriptorInst<Model, Service>(actionNameOrServiceProvider, {\n model: new ModelDescriptor<Model>(type, finalCfg?.idProperty as string, finalCfg?.titleProperty as string, finalCfg?.i18nBaseKey),\n ...(typeof cfgOrActionName === 'object' ? cfgOrActionName : {}),\n ...cfg\n });\n } else {\n return new ActionDescriptorInst<Model, Service>(typeof cfgOrActionName === 'string' ? cfgOrActionName : 'default', {\n model: new ModelDescriptor<Model>(type, cfg?.idProperty as string, cfg?.titleProperty as string, cfg?.i18nBaseKey),\n ...actionGetProviderCfgObj(actionNameOrServiceProvider),\n ...cfg\n });\n }\n}\n\nexport class ActionDeleteDescriptor {\n public static create<Model>(model: ModelDescriptor<Model>): ActionDeleteDescriptorInst<Model, undefined> {\n return actionDelete(model);\n }\n\n public static createWithProvider<Model, Service>(\n model: ModelDescriptor<Model>,\n serviceProvider: ActionProviderType<Model, Service>\n ): ActionDeleteDescriptorInst<Model, Service> {\n return actionDelete(model, serviceProvider);\n }\n}\n\nexport function actionDelete<Model>(model: ModelDescriptor<Model>): ActionDeleteDescriptorInst<Model, undefined>;\nexport function actionDelete<Model, Service>(model: ModelDescriptor<Model>, serviceProvider: ActionProviderType<Model, Service>): ActionDeleteDescriptorInst<Model, Service>;\nexport function actionDelete<Model, Service>(model: ModelDescriptor<Model>, serviceProvider?: ActionProviderType<Model, Service>): ActionDeleteDescriptorInst<Model, Service> {\n return new ActionDeleteDescriptorInst<Model, Service>(model, {\n ...(serviceProvider ? actionGetProviderCfgObj(serviceProvider) : {})\n });\n}\n","import {Observable, Subject, throwError} from 'rxjs';\n\nimport {ClassOptType, CommonsInternalError, DataProviderInst, IDataProvider, IdType, ItemOrObservable, ServiceClassOptType} from '@mediusinc/mng-commons/core';\n\nimport {EditorResetEvent} from '../models/form-editor.event';\n\nexport type EditorDataProviderFetchFnType<Model = any, Service = undefined, Id = IdType, Return = ItemOrObservable<Model>> = (\n id: Id,\n service: Service,\n locale: string | undefined\n) => Return;\nexport type EditorDataProviderCreateFnType<Model = any, Service = undefined, Item = Model | undefined, Return = ItemOrObservable<Model>> = (item: Item, service: Service) => Return;\nexport type EditorDataProviderUpdateFnType<Model = any, Service = undefined, Id = IdType, Item = Model | undefined, Return = ItemOrObservable<Model>> = (\n id: Id,\n item: Item,\n service: Service\n) => Return;\nexport type EditorDataProviderDeleteFnType<Model = any, Service = undefined, Id = IdType, Item = Model | undefined, Return = ItemOrObservable<Model | null>> = (\n id: Id,\n item: Item,\n service: Service\n) => Return;\n\nexport interface IEditorDataProviderFetch<Model, Service> {\n fetch: EditorDataProviderFetchFnType<Model, Service>;\n\n withFetch(fn: EditorDataProviderFetchFnType<Model, Service>): this;\n}\n\nexport interface IEditorDataProviderCreate<Model, Service> {\n create?: EditorDataProviderCreateFnType<Model, Service>;\n\n withCreate(fn?: EditorDataProviderCreateFnType<Model, Service>): this;\n}\n\nexport interface IEditorDataProviderUpdate<Model, Service> {\n update?: EditorDataProviderUpdateFnType<Model, Service>;\n\n withUpdate(fn?: EditorDataProviderUpdateFnType<Model, Service>): this;\n}\n\nexport interface IEditorDataProviderDelete<Model, Service> {\n delete?: EditorDataProviderDeleteFnType<Model, Service>;\n\n withDelete(fn?: EditorDataProviderDeleteFnType<Model, Service>): this;\n}\n\nexport type IEditorDataProviderFnsType<Model, Service> = IEditorDataProviderFetch<Model, Service> &\n IEditorDataProviderCreate<Model, Service> &\n IEditorDataProviderUpdate<Model, Service> &\n IEditorDataProviderDelete<Model, Service>;\n\nexport interface IEditorDataProviderSupport<Model> {\n get editorReset$(): Observable<EditorResetEvent<Model>>;\n\n resetEditor(event?: EditorResetEvent<Model>): void;\n}\n\nexport type IEditorDataProvider<Model = any, Service = any, ModelClass = ClassOptType<Model>, ServiceClass = ServiceClassOptType<Service>> = IDataProvider<\n Model,\n Service,\n ModelClass,\n ServiceClass\n> &\n IEditorDataProviderFnsType<Model, Service> &\n IEditorDataProviderSupport<Model>;\n\nexport class EditorDataProviderInst<Model, Service = any, ModelClass = ClassOptType<Model>, ServiceClass = ServiceClassOptType<Service>>\n extends DataProviderInst<Model, Service, ModelClass, ServiceClass>\n implements IEditorDataProvider<Model, Service, ModelClass, ServiceClass>\n{\n protected readonly _editorResetSubject = new Subject<EditorResetEvent<Model>>();\n\n protected _fetch: EditorDataProviderFetchFnType<Model, Service> = id => throwError(() => new CommonsInternalError(`No fetch function provided for id ${id}.`));\n protected _create?: EditorDataProviderCreateFnType<Model, Service>;\n protected _update?: EditorDataProviderUpdateFnType<Model, Service>;\n protected _delete?: EditorDataProviderDeleteFnType<Model, Service>;\n\n public constructor(type: ModelClass, serviceType: ServiceClass) {\n super(type, serviceType);\n }\n\n get fetch() {\n return this._fetch;\n }\n\n get create() {\n return this._create;\n }\n\n get update() {\n return this._update;\n }\n\n get delete() {\n return this._delete;\n }\n\n get editorReset$() {\n return this._editorResetSubject.asObservable();\n }\n\n /**\n * Sets the fetch function for the EditorDataProvider instance.\n *\n * @param {EditorDataProviderFetchFnType<Model, Service>} fn - The fetch function to be set.\n * @returns {this} - The instance of the EditorDataProvider with the fetch function set.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withFetch(fn: EditorDataProviderFetchFnType<Model, Service>): this {\n this._fetch = fn;\n return this;\n }\n\n /**\n * Sets the create function for the EditorDataProvider.\n *\n * @param {EditorDataProviderCreateFnType<Model, Service>} fn - The function used for creating new items.\n * @returns {this} - Returns the instance of the class.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withCreate(fn?: EditorDataProviderCreateFnType<Model, Service>): this {\n this._create = fn;\n return this;\n }\n\n /**\n * Sets the update function for the EditorDataProvider.\n *\n * @param {EditorDataProviderUpdateFnType<Model, Service>} fn - The update function to be set.\n * @returns {this} - Returns the instance of the object calling this method.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withUpdate(fn?: EditorDataProviderUpdateFnType<Model, Service>): this {\n this._update = fn;\n return this;\n }\n\n /**\n * Sets the delete function for the editor data provider.\n *\n * @param {EditorDataProviderDeleteFnType<Model, Service>} fn - The delete function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withDelete(fn?: EditorDataProviderDeleteFnType<Model, Service>): this {\n this._delete = fn;\n return this;\n }\n\n resetEditor(event?: EditorResetEvent<Model>): void {\n this._editorResetSubject.next(event ?? {});\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nimport {CommonsInternalError, ServiceClassType, StyleSizeEnum} from '@mediusinc/mng-commons/core';\nimport {ActionButtonDescriptor, ButtonStyleBuilder} from '@mediusinc/mng-commons/form/api';\nimport {ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {EditorDataProviderInst, IEditorDataProvider} from '../../editor/data-providers/editor.data-provider';\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {ActionEditorSubmitTypeEnum, ActionPositionEnum, ActionTypeEnum} from '../models/action.type';\nimport {IActionContext} from '../models/execution/action-context.model';\nimport {TableviewActionDefaultCategories} from '../models/tableview-action-default-categories.model';\nimport {ActionDescriptorCreateOptsParentType, ActionDescriptorInst} from './action.descriptor';\n\nexport type ActionEditorDescriptorConstructorOptsType<Model, Service> = ActionDescriptorCreateOptsParentType &\n ActionEditorDescriptorCreateOptsProviderType<Model, Service> & {\n model?: ModelDescriptor<Model>;\n };\n\nexport type ActionEditorDescriptorCreateOptsProviderType<Model, Service> = {\n serviceType?: ServiceClassType<Service>;\n dataProvider?: IEditorDataProvider<Model, Service>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class ActionEditorDescriptorInst<Item, Service = any, FetchInputItem = Item, SubmitReturnItem = Item> extends ActionDescriptorInst<Item, Service> {\n private readonly _editorDescriptor: EditorDescriptorInst<Item, any>;\n protected override readonly _dataProvider?: IEditorDataProvider<Item, any> = undefined;\n\n protected _editorActions: ActionDescriptorInst<Item>[] = [];\n protected _editorTitle?: string | null = undefined;\n protected _editorTitleParams?: any = undefined;\n\n protected _hasFetchNotificationSuccess = false;\n protected _fetchNotificationSuccessTitle?: string;\n protected _fetchNotificationSuccessMessage?: string;\n\n protected _dialogSize = StyleSizeEnum.Normal;\n protected _dialogClassName?: string;\n\n protected _fetchFunction?: (ctx: IActionContext<Item, Service>) => Observable<Item>;\n protected _submitFunction?: (ctx: IActionContext<Item, Service>) => Observable<Item>;\n\n protected _editorComponent?: Type<any>;\n\n protected _resubmitEnabled?: boolean;\n protected _resubmitRefetch = true;\n protected _unsavedChangesConfirmation = false;\n\n public constructor(editorDescriptor: EditorDescriptorInst<Item, any>, actionName: string, cfg?: ActionEditorDescriptorConstructorOptsType<Item, Service>) {\n super(actionName, {\n model: editorDescriptor.model,\n ...cfg\n });\n\n if (cfg?.serviceType) {\n this._dataProvider = new EditorDataProviderInst<Item, Service>(this._model?.type, cfg.serviceType);\n } else if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n\n this._type = ActionTypeEnum.Editor;\n this._editorDescriptor = editorDescriptor;\n this._editorActions.push(actionEditorSubmit(this), actionEditorCancel(this));\n }\n\n public get editorTitle() {\n return this._editorTitle;\n }\n\n public get editorTitleParams() {\n return this._editorTitleParams;\n }\n\n public get editorDescriptor() {\n return this._editorDescriptor;\n }\n\n public get dialogSize() {\n return this._dialogSize;\n }\n\n public get dialogClassName() {\n return this._dialogClassName;\n }\n\n public get hasFetchNotificationSuccess() {\n return this._hasFetchNotificationSuccess;\n }\n\n public get fetchNotificationSuccessTitle() {\n return this._fetchNotificationSuccessTitle;\n }\n\n public get fetchNotificationSuccessMessage() {\n return this._fetchNotificationSuccessMessage;\n }\n\n public override get dataProvider() {\n return this._dataProvider;\n }\n\n public override get hasRunFunction(): boolean {\n throw new CommonsInternalError(`Run function cannot be used in editor action for ${this._actionNameLong}. Use submit function instead`);\n }\n\n public override get runFunction(): (ctx: IActionContext<Item, unknown>) => Observable<Item> {\n throw new CommonsInternalError(`Run function cannot be used in editor action for ${this._actionNameLong}. Use submit function instead`);\n }\n\n public get hasFetchFunction(): boolean {\n return typeof this._fetchFunction === 'function';\n }\n\n public get fetchFunction() {\n return this._fetchFunction;\n }\n\n public get hasSubmitFunction(): boolean {\n return typeof this._fetchFunction === 'function';\n }\n\n public get submitFunction() {\n return this._submitFunction;\n }\n\n public get editorActions() {\n return this._editorActions;\n }\n\n public get editorComponent() {\n return this._editorComponent;\n }\n\n public get resubmitEnabled() {\n return this._resubmitEnabled;\n }\n\n public get resubmitRefetch() {\n return this._resubmitRefetch;\n }\n\n public get unsavedChangesConfirmation() {\n return this._unsavedChangesConfirmation;\n }\n\n public withEditorTitle(title: string | null, params?: any): this {\n this._editorTitle = title;\n this._editorTitleParams = params;\n return this;\n }\n\n public withDialogSize(size = StyleSizeEnum.Normal): this {\n this._dialogSize = size;\n return this;\n }\n\n public withDialogClassName(className: string): this {\n this._dialogClassName = className;\n return this;\n }\n\n public override withRunFunction(fn: (ctx: IActionContext<Item, Service>) => Observable<Item>): this {\n return this.withSubmitFunction(fn as (ctx: IActionContext<Item, Service>) => Observable<Item>);\n }\n\n public withFetchFunction(fn: (ctx: IActionContext<Item, Service>) => Observable<Item>): this {\n this._fetchFunction = fn;\n return this;\n }\n\n public withSubmitFunction(fn: (ctx: IActionContext<Item, Service>) => Observable<Item>): this {\n this._submitFunction = fn;\n return this;\n }\n\n public withFetchNotificationError(title?: string, message?: string, hasNotification = true): this {\n this._hasFetchNotificationSuccess = hasNotification;\n this._fetchNotificationSuccessTitle = title;\n this._fetchNotificationSuccessMessage = message;\n return this;\n }\n\n public withEditorAction(action: ActionDescriptorInst<Item>): this {\n this._editorActions.push(action);\n return this;\n }\n\n public withEditorActions(actions: ActionDescriptorInst<Item>[]): this {\n this._editorActions = actions;\n return this;\n }\n\n public withEditorComponent(editorComponent: Type<any>): this {\n this._editorComponent = editorComponent;\n return this;\n }\n\n /**\n * Enables or disables resubmit resubmit - this means the form will not exit after successful submission, but will instead remain open.\n *\n * @param {boolean} [enabled=true] - Specifies whether resubmit is enabled or disabled. Defaults to true if not provided.\n * @param {boolean} [refetch=true] - Specifies whether the data should be refetched after resubmit. If not, the data in the form stays as is. Defaults to true if not provided.\n *\n * @returns {this} - Returns the current instance with the resubmit configuration updated.\n */\n public withResubmit(enabled?: boolean, refetch = true): this {\n this._resubmitEnabled = enabled;\n this._resubmitRefetch = refetch;\n return this;\n }\n\n public withUnsavedChangesConfirmation(unsavedChangesConfirmation = true): this {\n this._unsavedChangesConfirmation = unsavedChangesConfirmation;\n return this;\n }\n}\n\nexport class ActionEditorSubmitDescriptorInst<Model> extends ActionDescriptorInst<Model> {\n private readonly _editorAction: ActionEditorDescriptorInst<Model>;\n private readonly _submitType: ActionEditorSubmitTypeEnum;\n\n public constructor(editorAction: ActionEditorDescriptorInst<Model>, submitType = ActionEditorSubmitTypeEnum.Submit) {\n super(submitType === ActionEditorSubmitTypeEnum.Submit ? `${editorAction.actionName}.submit` : `${editorAction.actionName}.cancel`, {model: editorAction.model});\n this._editorAction = editorAction;\n this._submitType = submitType;\n this._position = ActionPositionEnum.FooterRight;\n\n this.button.styleClass.withActionLevel(editorAction.level).withTextButton();\n }\n\n public get submitType() {\n return this._submitType;\n }\n}\n\n/**\n * creates primary action with primary button style\n * @param editorAction\n * @param submitType\n */\nexport function actionEditorSubmit<Model>(\n editorAction: ActionEditorDescriptorInst<Model>,\n submitType = ActionEditorSubmitTypeEnum.Submit\n): ActionEditorSubmitDescriptorInst<Model> {\n return new ActionEditorSubmitDescriptorInst(editorAction, submitType).withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder()));\n}\n\n/**\n * creates secondary button with text button style\n * @param editorAction\n * @param submitType\n */\nexport function actionEditorCancel<Model>(\n editorAction: ActionEditorDescriptorInst<Model>,\n submitType = ActionEditorSubmitTypeEnum.Cancel\n): ActionEditorSubmitDescriptorInst<Model> {\n return new ActionEditorSubmitDescriptorInst(editorAction, submitType).withButtonDescriptor(\n new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withTextButton())\n );\n}\n\nexport class ActionEditorDetailsDescriptorInst<Model, Service = any> extends ActionEditorDescriptorInst<Model, Service> {\n public static readonly ACTION_NAME = 'details';\n\n constructor(editorDescriptor: EditorDescriptorInst<Model, any>, cfg?: ActionEditorDescriptorCreateOptsProviderType<Model, Service>) {\n super(editorDescriptor, ActionEditorDetailsDescriptorInst.ACTION_NAME, cfg);\n this.withPosition(ActionPositionEnum.RowClick);\n this.withRouteTrigger(':itemId');\n this.withEditorActions([actionEditorCancel(this)]);\n this.withTableviewCategory(TableviewActionDefaultCategories.DETAILS);\n }\n}\n\nexport class ActionEditorAddDescriptorInst<Model, Service = any> extends ActionEditorDescriptorInst<Model, Service> {\n public static readonly ACTION_NAME = 'add';\n\n constructor(editorDescriptor: EditorDescriptorInst<Model, any>, cfg?: ActionEditorDescriptorCreateOptsProviderType<Model, Service>) {\n super(editorDescriptor, ActionEditorAddDescriptorInst.ACTION_NAME, cfg);\n this.withPosition(ActionPositionEnum.ToolbarLeft);\n this.withRouteTrigger('add');\n this.button.withIcon('pi pi-plus');\n this.withTableviewCategory(TableviewActionDefaultCategories.ADD);\n this.withUnsavedChangesConfirmation();\n }\n}\n\nexport class ActionEditorEditDescriptorInst<Model, Service = any> extends ActionEditorDescriptorInst<Model, Service> {\n public static readonly ACTION_NAME = 'edit';\n\n constructor(editorDescriptor: EditorDescriptorInst<Model, any>, cfg?: ActionEditorDescriptorCreateOptsProviderType<Model, Service>) {\n super(editorDescriptor, ActionEditorEditDescriptorInst.ACTION_NAME, cfg);\n this.withPosition(ActionPositionEnum.RowInline);\n this.button.styleClass.withSize(StyleSizeEnum.Small);\n this.withRouteTrigger(':itemId/edit');\n this.withTableviewCategory(TableviewActionDefaultCategories.EDIT);\n this.button.withLabel(null).withIcon('pi pi-pencil');\n this.withUnsavedChangesConfirmation();\n }\n}\n","import {ServiceClassType} from '@mediusinc/mng-commons/core';\n\nimport {IEditorDataProvider} from '../../editor/data-providers/editor.data-provider';\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {\n ActionEditorAddDescriptorInst,\n ActionEditorDescriptorCreateOptsProviderType,\n ActionEditorDescriptorInst,\n ActionEditorDetailsDescriptorInst,\n ActionEditorEditDescriptorInst\n} from './action-editor.descriptor';\nimport {ActionDescriptorCreateOptsParentType} from './action.descriptor';\n\nexport type ActionEditorProviderType<Model, Service> = ServiceClassType<Service> | IEditorDataProvider<Model, Service>;\n\nexport const actionEditorGetProviderCfgObj = <Model, Service>(serviceOrDataProvider?: ActionEditorProviderType<Model, Service>) => {\n const cfg: ActionEditorDescriptorCreateOptsProviderType<Model, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IEditorDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider as IEditorDataProvider<Model, Service>;\n } else {\n cfg.serviceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\nexport class ActionEditorDescriptor {\n public static create<Model>(\n editor: EditorDescriptorInst<Model, any>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n ): ActionEditorDescriptorInst<Model, undefined> {\n return actionEditor(editor, actionName, cfg);\n }\n\n public static createWithProvider<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n ): ActionEditorDescriptorInst<Model, Service> {\n return actionEditor(editor, serviceProvider, actionName, cfg);\n }\n}\n\nexport function actionEditor<Model>(\n editor: EditorDescriptorInst<Model, any>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionEditorDescriptorInst<Model, undefined>;\nexport function actionEditor<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionEditorDescriptorInst<Model, Service>;\nexport function actionEditor<Model, Service>(\n editor: EditorDescriptorInst<Model, Service>,\n actionNameOrServiceProvider: string | ActionEditorProviderType<Model, Service>,\n cfgOrActionName?: string | ActionDescriptorCreateOptsParentType,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionEditorDescriptorInst<Model, Service> {\n if (typeof actionNameOrServiceProvider === 'string') {\n // no provider\n return new ActionEditorDescriptorInst<Model, Service>(editor, actionNameOrServiceProvider, {\n ...(typeof cfgOrActionName === 'object' ? cfgOrActionName : {}),\n ...cfg\n });\n } else {\n return new ActionEditorDescriptorInst<Model, Service>(editor, typeof cfgOrActionName === 'string' ? cfgOrActionName : 'default', {\n ...actionEditorGetProviderCfgObj(actionNameOrServiceProvider),\n ...cfg\n });\n }\n}\n\nexport class ActionEditorDetailsDescriptor {\n public static create<Model>(editor: EditorDescriptorInst<Model, any>): ActionEditorDescriptorInst<Model, undefined> {\n return actionEditorDetails(editor);\n }\n\n public static createWithProvider<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>\n ): ActionEditorDescriptorInst<Model, Service> {\n return actionEditorDetails(editor, serviceProvider);\n }\n}\n\nexport function actionEditorDetails<Model>(editor: EditorDescriptorInst<Model, any>): ActionEditorDetailsDescriptorInst<Model, undefined>;\nexport function actionEditorDetails<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>\n): ActionEditorDetailsDescriptorInst<Model, Service>;\nexport function actionEditorDetails<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider?: ActionEditorProviderType<Model, Service>\n): ActionEditorDetailsDescriptorInst<Model, Service> {\n return new ActionEditorDetailsDescriptorInst<Model, Service>(editor, {\n ...(serviceProvider ? actionEditorGetProviderCfgObj(serviceProvider) : {})\n });\n}\n\nexport class ActionEditorAddDescriptor {\n public static create<Model>(editor: EditorDescriptorInst<Model, any>): ActionEditorAddDescriptorInst<Model, undefined> {\n return actionEditorAdd(editor);\n }\n\n public static createWithProvider<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>\n ): ActionEditorAddDescriptorInst<Model, Service> {\n return actionEditorAdd(editor, serviceProvider);\n }\n}\n\nexport function actionEditorAdd<Model>(editor: EditorDescriptorInst<Model, any>): ActionEditorDetailsDescriptorInst<Model, undefined>;\nexport function actionEditorAdd<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>\n): ActionEditorAddDescriptorInst<Model, Service>;\nexport function actionEditorAdd<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider?: ActionEditorProviderType<Model, Service>\n): ActionEditorAddDescriptorInst<Model, Service> {\n return new ActionEditorAddDescriptorInst<Model, Service>(editor, {\n ...(serviceProvider ? actionEditorGetProviderCfgObj(serviceProvider) : {})\n });\n}\n\nexport class ActionEditorEditDescriptor {\n public static create<Model>(editor: EditorDescriptorInst<Model, any>): ActionEditorEditDescriptorInst<Model, undefined> {\n return actionEditorEdit(editor);\n }\n\n public static createWithProvider<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>\n ): ActionEditorEditDescriptorInst<Model, Service> {\n return actionEditorEdit(editor, serviceProvider);\n }\n}\n\nexport function actionEditorEdit<Model>(editor: EditorDescriptorInst<Model, any>): ActionEditorDetailsDescriptorInst<Model, undefined>;\nexport function actionEditorEdit<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>\n): ActionEditorEditDescriptorInst<Model, Service>;\nexport function actionEditorEdit<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider?: ActionEditorProviderType<Model, Service>\n): ActionEditorEditDescriptorInst<Model, Service> {\n return new ActionEditorEditDescriptorInst<Model, Service>(editor, {\n ...(serviceProvider ? actionEditorGetProviderCfgObj(serviceProvider) : {})\n });\n}\n","import {Params, QueryParamsHandling} from '@angular/router';\n\nimport {ActionDescriptorConstructorOptsType, ActionDescriptorInst} from './action.descriptor';\n\nexport type ActionLinkDescriptorConstructorOpts<Model> = Omit<ActionDescriptorConstructorOptsType<Model, undefined>, 'serviceType' | 'dataProvider'>;\n\nexport class ActionLinkDescriptorInst<Model> extends ActionDescriptorInst<Model, undefined> {\n private _url = '';\n private _pathSegments: string[] = [];\n private _queryParams?: Params;\n private _queryParamsHandling?: QueryParamsHandling;\n private _replaceUrl = false;\n private _target = '_self';\n private _isStyleLink = false;\n\n constructor(actionName = 'link', cfg?: ActionLinkDescriptorConstructorOpts<Model>) {\n super(actionName, cfg);\n }\n\n public get url(): string {\n return this._url;\n }\n\n public get pathSegments(): string[] {\n return this._pathSegments;\n }\n\n public get queryParams(): Params | undefined {\n return this._queryParams;\n }\n\n public get queryParamsHandling(): QueryParamsHandling | undefined {\n return this._queryParamsHandling;\n }\n\n public get replaceUrl(): boolean {\n return this._replaceUrl;\n }\n\n public get target(): string {\n return this._target;\n }\n\n public get isStyleLink(): boolean {\n return this._isStyleLink;\n }\n\n public withHref(url: string): this {\n this._url = url;\n return this;\n }\n\n public withRouterLink(...pathSegments: string[]): this {\n this._pathSegments = pathSegments;\n return this;\n }\n\n public withQueryParams(queryParams: Params, queryParamsHandling?: QueryParamsHandling): this {\n this._queryParams = queryParams;\n this._queryParamsHandling = queryParamsHandling;\n return this;\n }\n\n public withReplaceUrl(replaceUrl = false): this {\n this._replaceUrl = replaceUrl;\n return this;\n }\n\n public withTarget(target: '_self' | '_blank' = '_self'): this {\n this._target = target;\n return this;\n }\n\n public withStyleLink(isStyleLink: boolean): this {\n this._isStyleLink = isStyleLink;\n return this;\n }\n}\n","import {ClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {ActionDescriptorCreateFromClassOpts} from './action-descriptor.factory';\nimport {ActionLinkDescriptorInst} from './action-link.descriptor';\nimport {ActionDescriptorCreateOptsParentType, ActionDescriptorInst} from './action.descriptor';\n\nexport class ActionLinkDescriptor {\n public static create<Model = any>(actionName: string, cfg?: ActionDescriptorCreateOptsParentType) {\n return actionLink<Model>(actionName, cfg);\n }\n\n public static fromModel<Model>(model: ModelDescriptor<Model>, actionName: string, cfg?: ActionDescriptorCreateOptsParentType) {\n return actionLinkFromModel(model, actionName, cfg);\n }\n\n public static fromClass<Model>(type: ClassType<Model>, actionName: string, cfg?: ActionDescriptorCreateFromClassOpts<Model>) {\n return actionLinkFromClass(type, actionName, cfg);\n }\n\n public static fromAction<Model>(action: ActionDescriptorInst<Model>) {\n return actionLinkFromAction(action);\n }\n}\n\nexport function actionLink<Model = any>(actionName: string, cfg?: ActionDescriptorCreateOptsParentType) {\n return new ActionLinkDescriptorInst<Model>(actionName, {\n ...cfg\n });\n}\n\nexport function actionLinkFromModel<Model>(model: ModelDescriptor<Model>, actionName: string, cfg?: ActionDescriptorCreateOptsParentType) {\n return new ActionLinkDescriptorInst<Model>(actionName, {\n model,\n ...cfg\n });\n}\n\nexport function actionLinkFromClass<Model>(type: ClassType<Model>, actionName: string, cfg?: ActionDescriptorCreateFromClassOpts<Model>) {\n return new ActionLinkDescriptorInst<Model>(actionName, {\n model: ModelDescriptor.fromClass<Model>(type, cfg?.idProperty, cfg?.titleProperty, cfg?.i18nBaseKey),\n ...cfg\n });\n}\n\nexport function actionLinkFromAction<Model>(action: ActionDescriptorInst<Model>) {\n const descriptor = new ActionLinkDescriptorInst<Model>(action.actionName, {model: action.model});\n\n action.copyTo(descriptor);\n\n descriptor.withRunConfirmationDescriptor();\n\n descriptor.withRunNotificationSuccess(undefined, undefined, false);\n descriptor.withRunNotificationError(undefined, undefined, false);\n\n descriptor.withAfterRunAction();\n descriptor.withOnRunErrorAction();\n\n descriptor.withSubactionsAsMenu(false);\n\n return descriptor;\n}\n","import {HttpErrorResponse} from '@angular/common/http';\n\nimport {ACommonsErrorBase, CommonsErrorBaseOptions, ICommonsActionError} from '@mediusinc/mng-commons/core';\n\nimport {IActionContext} from './execution/action-context.model';\n\nexport interface CommonsActionErrorOptions extends CommonsErrorBaseOptions {\n actionContext?: IActionContext<any, any>;\n httpError?: HttpErrorResponse;\n}\n\nexport class CommonsActionError extends ACommonsErrorBase implements ICommonsActionError {\n public readonly type = 'CommonsActionError';\n public readonly actionId: string;\n\n public readonly actionContext?: IActionContext<any, any>;\n public readonly httpError?: HttpErrorResponse;\n\n constructor(message: string, actionName: string, options?: CommonsActionErrorOptions) {\n super(message, {\n name: 'CommonsActionError_' + actionName,\n ...options\n });\n\n this.actionId = actionName;\n this.actionContext = options?.actionContext;\n this.httpError = options?.httpError;\n }\n}\n","import {Injector} from '@angular/core';\n\nimport {Observable, isObservable, throwError} from 'rxjs';\n\nimport {CommonsInternalError, DataListResult, IDataProvider, toObservable} from '@mediusinc/mng-commons/core';\nimport {ITableDataProvider} from '@mediusinc/mng-commons/table/api';\n\nimport {IEditorDataProvider} from '../../editor/data-providers/editor.data-provider';\nimport {CommonsActionError} from '../models/action-error.model';\nimport {IActionContext} from '../models/execution/action-context.model';\n\nexport function runFnFromDataProviderOrFallback<Item, Service, Return, FallbackReturn = Return>(\n ctx: IActionContext<Item, Service>,\n fn: (ctx: IActionContext<Item, Service>) => Observable<Return> | null,\n fallback: Observable<FallbackReturn>\n): Observable<Return | FallbackReturn> {\n const dataProviderExec = fn(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return fallback;\n}\n\nexport function runFnFromDataProviderOrFail<Item, Service, Return>(\n ctx: IActionContext<Item, Service>,\n fn: (ctx: IActionContext<Item, Service>) => Observable<Return> | null\n): Observable<Return> {\n const dataProviderExec = fn(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return throwError(\n () =>\n new CommonsActionError(\n `Data provider could not extract function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.i18nBaseKey}) for item id ${ctx.parameters?.itemId}.`,\n ctx.contextLongName,\n {actionContext: ctx}\n )\n );\n}\n\nexport function runGetAllFromDataProvider<Item, Service>(ctx: IActionContext<Item, Service>): Observable<DataListResult<Item>> | null {\n if (typeof ctx.dataProvider !== 'undefined' && typeof ctx.dataProvider['getAll' as keyof object] === 'function') {\n const tableDataProvider = ctx.dataProvider as ITableDataProvider<Item, any>;\n const queryParam = ctx.parameters?.dataListParams ?? {};\n return toObservable(tableDataProvider.getAll(queryParam, ctx.serviceInstance));\n }\n return null;\n}\n\nexport function runFetchFromDataProvider<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any>;\n if (typeof editorDataProvider.fetch === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.fetch(ctx.parameters.itemId, ctx.serviceInstance, ctx.parameters.locale)) : null;\n }\n }\n return null;\n}\n\nexport function runCreateFromDataProvider<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any>;\n if (typeof editorDataProvider.create === 'function') {\n return ctx.parameters?.item ? toObservable(editorDataProvider.create(ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\n\nexport function runUpdateFromDataProvider<Item, service>(ctx: IActionContext<Item, service>): Observable<Item> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any>;\n if (typeof editorDataProvider.update === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.update(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\n\nexport function runDeleteFromDataProvider<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item | null> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any>;\n if (typeof editorDataProvider.delete === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.delete(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\n\n/**\n * Gets service instance of data provider.\n *\n * @param injector Injector instance\n * @param dataProvider Data provider instance.\n */\nexport function getDataProviderService<Item, Service>(injector: Injector, dataProvider?: IDataProvider<Item, Service>): Service | null {\n if (dataProvider?.serviceType) {\n const service = injector.get<Service>(dataProvider.serviceType, undefined, {optional: true});\n if (!service) {\n throw new CommonsInternalError(`Data provider service type ${dataProvider.serviceType} could not be injected.`);\n }\n return service;\n } else {\n return null;\n }\n}\n","/**\n * States of action. Enums ending with `*Final` are supposed to be final.\n */\nexport enum ActionInstanceStateEnum {\n TriggerStart, // action was triggered (click or direct)\n TriggerEnd,\n ActivationStart, // action activation started (direct, event or editor)\n ActivationEnd, // action activation ended\n FetchStart, // fetch started\n FetchEnd, // fetch ended\n FetchError, // fetch error\n RunConfirmationStart, // confirmation for run is started\n RunConfirmationEndAccept, // confirmation accepted\n RunConfirmationEndReject, // confirmation rejected\n RunStart, // action was run by calling main function\n RunEnd, // action run function executed\n RunError, // action run function executed with error\n NextActionStart, // next action started\n NextActionEnd, // next action finished\n ErrorActionStart, // error action started\n ErrorActionEnd, // error action finished\n FinishSuccessFinal, // action executed successfully\n FinishErrorFinal, // action executed with error\n FinishDismissedFinal, // action was dismissed by user\n FinishSuccessReactivateFinal, // action executed successfully, another instance will directly start from previous\n FinishComponentDestroyFinal, // action was dismissed by destroying component that was executing it\n FinishRouteUntriggerStart,\n FinishRouteUntriggerEndFinal,\n FinishRouteUntriggerTimeoutFinal\n}\n","import {InjectionToken, Type} from '@angular/core';\n\nexport const DATA_LANGUAGE_DROPDOWN_COMPONENT_IT: InjectionToken<Type<any>> = new InjectionToken<Type<any>>('DATA_LANGUAGE_DROPDOWN_COMPONENT');\n","import {Injector} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nimport {DataListResult, IDataProvider, Nullable} from '@mediusinc/mng-commons/core';\n\nimport {getDataProviderService, runFnFromDataProviderOrFail} from '../helpers/data-provider-executors';\nimport {IActionContext} from '../models/execution/action-context.model';\n\nexport abstract class DataProviderExecutor {\n public runGetAllOrFail<Item, Service>(ctx: IActionContext<Item, Service>): Observable<DataListResult<Item>> {\n return runFnFromDataProviderOrFail<Item, Service, DataListResult<Item>>(ctx, this.runGetAll.bind(this));\n }\n\n public abstract runGetAll<Item, Service>(ctx: IActionContext<Item, Service>): Observable<DataListResult<Item>> | null;\n public abstract runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<DataListResult<Item>>): Observable<DataListResult<Item>>;\n public abstract runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<DataListResult<Item>> | null;\n public abstract runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<DataListResult<Item>>): Observable<DataListResult<Item>> | null;\n\n public runFetchOrFail<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> {\n return runFnFromDataProviderOrFail<Item, Service, Item>(ctx, this.runFetch.bind(this));\n }\n\n public abstract runFetch<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public abstract runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null;\n\n public runCreateOrFail<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> {\n return runFnFromDataProviderOrFail<Item, Service, Item>(ctx, this.runCreate.bind(this));\n }\n\n public abstract runCreate<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public abstract runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null;\n\n public runUpdateOrFail<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> {\n return runFnFromDataProviderOrFail<Item, Service, Item>(ctx, this.runUpdate.bind(this));\n }\n\n public abstract runUpdate<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public abstract runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null;\n\n public runDeleteOrFail<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item | null> {\n return runFnFromDataProviderOrFail<Item, Service, Item>(ctx, this.runDelete.bind(this));\n }\n\n public abstract runDelete<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Nullable<Item>> | null;\n public abstract runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null;\n\n /**\n * Gets service instance of data provider.\n *\n * @param injector Injector instance\n * @param dataProvider Data provider instance.\n */\n public getDataProviderService<Item, Service>(injector: Injector, dataProvider?: IDataProvider<Item, Service>): Service | null {\n return getDataProviderService(injector, dataProvider);\n }\n}\n","import {ClassType, ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {EditorDataProviderInst} from './editor.data-provider';\n\nexport class EditorDataProvider extends EditorDataProviderInst<any> {\n protected constructor() {\n super(undefined, undefined);\n }\n\n public static create<Model>(): EditorDataProviderInst<Model, undefined, undefined, undefined> {\n return editorDataProvider();\n }\n\n public static fromClass<Model>(type: ClassType<Model>): EditorDataProviderInst<Model, undefined, ClassType<Model>, undefined> {\n return editorDataProviderFromClass(type);\n }\n\n public static fromClassWithService<Model, Service>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ): EditorDataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>> {\n return editorDataProviderFromClass(type, serviceType);\n }\n\n public static fromService<Service, Model>(serviceType: ServiceClassType<Service>): EditorDataProviderInst<Model, Service, undefined, ServiceClassType<Service>> {\n return editorDataProviderWithService<Service, Model>(serviceType);\n }\n}\n\nexport function editorDataProvider<Model>(): EditorDataProviderInst<Model, undefined, undefined, undefined>;\nexport function editorDataProvider<Model>(type: TypeDescriptor<Model>): EditorDataProviderInst<Model, undefined, undefined, undefined>;\nexport function editorDataProvider<Model, Service = any>(\n type: TypeDescriptor<Model>,\n serviceType: ServiceClassType<Service>\n): EditorDataProviderInst<Model, Service, undefined, ServiceClassType<Service>>;\nexport function editorDataProvider<Model, Service = any, ServiceClass = ServiceClassType<Service>>(type?: TypeDescriptor<Model>, serviceType?: ServiceClass) {\n return new EditorDataProviderInst<Model, Service, undefined, ServiceClass>(undefined, serviceType as ServiceClass);\n}\n\nexport function editorDataProviderWithService<Service, Model>(\n serviceType: ServiceClassType<Service>\n): EditorDataProviderInst<Model, Service, undefined, ServiceClassType<Service>> {\n return new EditorDataProviderInst<Model, Service, undefined, ServiceClassType<Service>>(undefined, serviceType);\n}\n\nexport function editorDataProviderFromClass<Model>(type: ClassType<Model>): EditorDataProviderInst<Model, undefined, ClassType<Model>, undefined>;\nexport function editorDataProviderFromClass<Model, Service = any>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n): EditorDataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>>;\nexport function editorDataProviderFromClass<Model, Service = any, ServiceClass = ServiceClassType<Service>>(type: ClassType<Model>, serviceType?: ServiceClass) {\n return new EditorDataProviderInst<Model, Service, ClassType<Model>, ServiceClass>(type, serviceType as ServiceClass);\n}\n\nexport function editorDataProviderFromModel<Model, ModelClass = ClassType<Model>>(\n model: ModelDescriptor<Model, ModelClass>\n): EditorDataProviderInst<Model, undefined, ModelClass, undefined>;\nexport function editorDataProviderFromModel<Model, Service = any, ModelClass = ClassType<Model>>(\n model: ModelDescriptor<Model, ModelClass>,\n ServiceClass: ServiceClassType<Service>\n): EditorDataProviderInst<Model, Service, ModelClass, ServiceClassType<Service>>;\nexport function editorDataProviderFromModel<Model, Service = any, ModelClass = ClassType<Model>, ServiceClass = ServiceClassType<Service>>(\n model: ModelDescriptor<Model, ModelClass>,\n serviceType?: ServiceClass\n) {\n return typeof serviceType !== 'undefined'\n ? new EditorDataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>>(model.type as ClassType<Model>, serviceType as ServiceClassType<Service>)\n : new EditorDataProviderInst<Model, undefined, ClassType<Model>, undefined>(model.type as ClassType<Model>, undefined);\n}\n","export enum TableviewEditorTypeEnum {\n None,\n Details,\n Edit,\n Add\n}\n\nexport const EDITOR_DEFAULT_GROUP_NAME = '_default';\n","import {Type} from '@angular/core';\n\nexport enum FieldSizeEnum {\n Small,\n Normal,\n Large\n}\n\nexport enum FieldInputTypeEnum {\n Hidden,\n Label,\n Text,\n Textarea,\n Number,\n Currency,\n Switch,\n Radio,\n Datepicker,\n Mask,\n File,\n ImageFile,\n ImageUrl,\n Custom\n}\n\nexport enum FieldLookupTypeEnum {\n Dropdown,\n Autocomplete,\n Dialog,\n Custom\n}\n\nexport enum FieldManyToManyEditorTypeEnum {\n DialogTableMultiselect\n}\n\nexport enum FieldManyToManyEditorActionEnum {\n Add,\n Delete\n}\n\nexport enum FieldManyEditorTypeEnum {\n DialogEditor\n}\n\nexport enum FieldManyEditorActionEnum {\n View,\n Add,\n Edit,\n Delete\n}\n\nexport enum FieldGroupTypeEnum {\n Tab,\n Fieldset,\n Logical\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface FieldConfig {}\n\nexport interface FieldLookupConfig extends FieldConfig {\n table?: {\n captionComponent?: Type<any>;\n columnActionComponent?: Type<any>;\n };\n}\n","import {FieldAsyncBaseValidator, FieldBaseValidator, FieldValidationMessage} from '../models/field-validation.model';\n\nexport type FieldValidationDescriptorOptsType<Property = string> = {errorPath?: Property};\n\nexport class FieldValidationDescriptor<FieldValue, EditorValue, ParentEditorModel = undefined> {\n private readonly _name: string;\n private readonly _validator?: FieldBaseValidator<FieldValue, EditorValue, ParentEditorModel> | FieldAsyncBaseValidator<FieldValue, EditorValue, ParentEditorModel>;\n private readonly _message?: FieldValidationMessage<FieldValue, EditorValue, ParentEditorModel>;\n private readonly _options?: FieldValidationDescriptorOptsType;\n\n constructor(\n name: string,\n validator?: FieldBaseValidator<FieldValue, EditorValue, ParentEditorModel> | FieldAsyncBaseValidator<FieldValue, EditorValue, ParentEditorModel>,\n message?: FieldValidationMessage<FieldValue, EditorValue, ParentEditorModel>,\n options?: FieldValidationDescriptorOptsType\n ) {\n this._name = name;\n this._validator = validator;\n this._message = message;\n this._options = options;\n }\n\n public get name(): string {\n return this._name;\n }\n\n public get validator() {\n return this._validator;\n }\n\n public get message() {\n return this._message;\n }\n\n public get options() {\n return this._options;\n }\n\n public copy(): FieldValidationDescriptor<FieldValue, EditorValue, ParentEditorModel> {\n const opt = this._options ? {...this._options} : undefined;\n return new FieldValidationDescriptor<FieldValue, EditorValue, ParentEditorModel>(this._name, this._validator, this._message, opt);\n }\n}\n","import {FormControl, FormGroup} from '@angular/forms';\n\nimport {FieldType, FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable, Subject} from 'rxjs';\n\nimport {GetterFn} from '@mediusinc/mng-commons/core';\n\nimport {FieldAsyncBaseValidator, FieldAsyncValidator, FieldBaseValidator, FieldValidationMessage, FieldValidator} from '../models/field-validation.model';\nimport {FieldConfig, FieldSizeEnum} from '../models/field.model';\nimport {FormFieldEvent, FormFieldEventData, FormFieldEventTypeEnum} from '../models/form-editor.event';\nimport {CommonsFormlyFieldConfig, CommonsFormlyHookFn} from '../models/formly-field.model';\nimport {FieldValidationDescriptor} from './field-validation.descriptor';\n\nexport abstract class AGenericFieldDescriptor {\n protected _config: FieldConfig = {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected constructor() {}\n\n public get config() {\n return this._config;\n }\n\n public withConfig(config: FieldConfig): this {\n this._config = config;\n return this;\n }\n\n /**\n * Override toJSON implementation to prevent overflow with circular dependency.\n * @ignore\n */\n protected toJSON(): string {\n const jsonObj = {\n ...this,\n _editor: undefined\n };\n const jsonObjStr = JSON.stringify(jsonObj);\n return jsonObjStr;\n }\n}\n\nexport abstract class AFieldDescriptor<FieldModel, EditorModel, FieldValue = FieldModel, ParentEditorModel = undefined> extends AGenericFieldDescriptor {\n /** @ignore */ protected readonly _property: string;\n /** @ignore */ protected _label?: string | null;\n\n /** @ignore */ protected _placeholder?: string;\n /** @ignore */ protected _helpText?: string;\n\n /** @ignore */ protected _required = false;\n /** @ignore */ protected _requiredHideLabelMarker = false;\n /** @ignore */ protected _disabled = false;\n /** @ignore */ protected _defaultValue?: FieldValue;\n /** @ignore */ protected _getter?: GetterFn<FieldValue, EditorModel>;\n /** @ignore */ protected _setter?: (item: EditorModel, value: FieldValue) => void;\n /** @ignore */ protected _validations: Array<FieldValidationDescriptor<any, any, any>> = [];\n /** @ignore */ protected _asyncValidations: Array<FieldValidationDescriptor<any, any, any>> = [];\n /** @ignore */ protected _requiredExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n /** @ignore */ protected _disabledExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n /** @ignore */ protected _hiddenExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n /** @ignore */ protected _hiddenResetOnHide?: boolean;\n /** @ignore */ protected _updateOn: 'change' | 'blur' | 'submit' = 'change';\n\n /** @ignore */ protected _onInit?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n /** @ignore */ protected _onChanges?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n /** @ignore */ protected _afterContentInit?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n /** @ignore */ protected _afterViewInit?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n /** @ignore */ protected _onDestroy?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n\n /** @ignore */ protected _onValueChange?: (field: CommonsFormlyFieldConfig<FieldValue, EditorModel>, value: any) => void;\n\n /** @ignore */ protected _className = '';\n /** @ignore */ protected _fieldClassName?: string;\n /** @ignore */ protected _labelClassName?: string;\n /** @ignore */ protected _inputClassName?: string;\n /** @ignore */ protected _size: FieldSizeEnum = FieldSizeEnum.Normal;\n\n // localization\n /** @ignore */ protected _isLocalized = false;\n\n /** @ignore */ protected readonly _eventsSubject = new Subject<FormFieldEvent<FieldValue, EditorModel, ParentEditorModel>>();\n\n protected constructor(property: string) {\n super();\n this._property = property;\n }\n\n public get property() {\n return this._property;\n }\n\n public get label() {\n return this._label;\n }\n\n public get placeholder() {\n return this._placeholder;\n }\n\n public get helpText() {\n return this._helpText;\n }\n\n public get required() {\n return this._required;\n }\n\n public get requiredHideLabelMarker() {\n return this._requiredHideLabelMarker;\n }\n\n public get disabled() {\n return this._disabled;\n }\n\n public get defaultValue() {\n return this._defaultValue;\n }\n\n public get getter() {\n return this._getter;\n }\n\n public get setter() {\n return this._setter;\n }\n\n public get validations() {\n return this._validations;\n }\n\n public get asyncValidations() {\n return this._asyncValidations;\n }\n\n public get requiredExpression() {\n return this._requiredExpression;\n }\n\n public get disabledExpression() {\n return this._disabledExpression;\n }\n\n public get hiddenExpression() {\n return this._hiddenExpression;\n }\n\n public get hiddenResetOnHide() {\n return this._hiddenResetOnHide;\n }\n\n public get updateOn() {\n return this._updateOn;\n }\n\n public get onInit() {\n return this._onInit;\n }\n\n public get onChanges() {\n return this._onChanges;\n }\n\n public get afterContentInit() {\n return this._afterContentInit;\n }\n\n public get afterViewInit() {\n return this._afterViewInit;\n }\n\n public get onDestroy() {\n return this._onDestroy;\n }\n\n public get onValueChange() {\n return this._onValueChange;\n }\n\n public get className() {\n return this._className;\n }\n\n public get fieldClassName() {\n return this._fieldClassName;\n }\n\n public get labelClassName() {\n return this._labelClassName;\n }\n\n public get inputClassName() {\n return this._inputClassName;\n }\n\n public get size() {\n return this._size;\n }\n\n public get isSizeSmall() {\n return this._size === FieldSizeEnum.Small;\n }\n\n public get isSizeLarge() {\n return this._size === FieldSizeEnum.Large;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public abstract copy(): AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>;\n\n public withLabel(label: string | null): this {\n this._label = label;\n return this;\n }\n\n public withPlaceholder(placeholder: string): this {\n this._placeholder = placeholder;\n return this;\n }\n\n public withHelpText(helpText: string): this {\n this._helpText = helpText;\n return this;\n }\n\n public withRequired(required = true, requiredExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>, hideLabelMarker = false): this {\n this._required = required;\n if (requiredExpression) {\n this._requiredExpression = requiredExpression;\n }\n this._requiredHideLabelMarker = hideLabelMarker;\n return this;\n }\n\n public withDisabled(disabled = true, disabledExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>): this {\n this._disabled = disabled;\n if (disabledExpression) {\n this._disabledExpression = disabledExpression;\n }\n return this;\n }\n\n public withHidden(hiddenExpression: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>, resetOnHide?: boolean): this {\n this._hiddenExpression = hiddenExpression;\n this._hiddenResetOnHide = resetOnHide;\n return this;\n }\n\n public withUpdateOn(updateOn: 'change' | 'blur' | 'submit'): this {\n this._updateOn = updateOn;\n return this;\n }\n\n public withOnInit(onInit?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._onInit = onInit;\n return this;\n }\n\n public withOnChanges(onChanges?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._onChanges = onChanges;\n return this;\n }\n\n public withAfterContentInit(afterContentInit?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._afterContentInit = afterContentInit;\n return this;\n }\n\n public withAfterViewInit(afterViewInit?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._afterViewInit = afterViewInit;\n return this;\n }\n\n public withOnDestroy(onDestroy?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._onDestroy = onDestroy;\n return this;\n }\n\n public withOnValueChange(onValueChange?: (field: CommonsFormlyFieldConfig<FieldValue, EditorModel>, value: FieldValue) => void): this {\n this._onValueChange = onValueChange;\n return this;\n }\n\n public withDefaultValue(defaultValue: FieldValue): this {\n this._defaultValue = defaultValue;\n return this;\n }\n\n public withGetter(fn?: GetterFn<FieldValue, EditorModel>): this {\n this._getter = fn;\n return this;\n }\n\n public withSetter(fn?: (item: EditorModel, value: FieldValue) => void): this {\n this._setter = fn;\n return this;\n }\n\n public withValidation<Value = FieldValue, EditorValue = EditorModel>(\n name: string,\n validator?: FieldValidator<Value, EditorValue, ParentEditorModel>,\n message?: FieldValidationMessage<Value, EditorValue, ParentEditorModel>\n ): this {\n this._validations.push(new FieldValidationDescriptor(name, validator as FieldBaseValidator<Value, EditorValue, ParentEditorModel>, message));\n return this;\n }\n\n public removeValidation(name: string): this {\n this._validations = this._validations.filter(v => v.name !== name);\n return this;\n }\n\n public withAsyncValidation<Value = FieldValue, EditorValue = EditorModel>(\n name: string,\n asyncValidator?: FieldAsyncValidator<Value, EditorValue>,\n message?: FieldValidationMessage<Value, EditorValue>\n ): this {\n this._asyncValidations.push(new FieldValidationDescriptor(name, asyncValidator as FieldAsyncBaseValidator<Value, EditorValue>, message));\n return this;\n }\n\n public removeAsyncValidation(name: string): this {\n this._asyncValidations = this._asyncValidations.filter(v => v.name !== name);\n return this;\n }\n\n public withClassName(className: string, labelClassName = '', inputClassName = '', fieldClassName?: string): this {\n this._className = className;\n this._labelClassName = labelClassName;\n this._inputClassName = inputClassName;\n this._fieldClassName = fieldClassName;\n return this;\n }\n\n public withSize(size: FieldSizeEnum = FieldSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n /**\n * This function adds an icon with text Show all translations above the field and after clicking on it, it displays a new dialog with tableview.\n * This new table view shows all available translations for specific property and allows editing it.\n */\n public localized(): this {\n this._isLocalized = true;\n return this;\n }\n\n public nextEvent(\n type: FormFieldEventTypeEnum,\n component: FieldType<CommonsFormlyFieldConfig<FieldValue, EditorModel, any>>,\n data?: FormFieldEventData<FieldValue, EditorModel>\n ) {\n this._eventsSubject.next({\n type: type,\n fieldComponent: component,\n formComponent: component.props.formEditorComponent,\n form: component?.form as FormGroup,\n fieldFormControl: component.formControl as FormControl,\n fieldFormlyConfig: component.field,\n data: data\n });\n }\n\n public get events$() {\n return this._eventsSubject.asObservable();\n }\n\n protected copyFieldsTo(obj: AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>) {\n obj._label = this._label;\n obj._placeholder = this._placeholder;\n obj._helpText = this._helpText;\n obj._required = this._required;\n obj._disabled = this._disabled;\n obj._defaultValue = this._defaultValue;\n obj._requiredExpression = this._requiredExpression;\n obj._hiddenExpression = this._hiddenExpression;\n obj._hiddenResetOnHide = this._hiddenResetOnHide;\n obj._updateOn = this._updateOn;\n obj._onInit = this._onInit;\n obj._onChanges = this._onChanges;\n obj._onDestroy = this._onDestroy;\n obj._afterContentInit = this._afterContentInit;\n obj._afterViewInit = this._afterViewInit;\n obj._onValueChange = this._onValueChange;\n obj._disabledExpression = this._disabledExpression;\n obj._className = this._className;\n obj._size = this.size;\n obj._getter = this._getter;\n obj._setter = this._setter;\n obj._isLocalized = this._isLocalized;\n obj._validations = this._validations.map(value => value.copy());\n obj._asyncValidations = this._asyncValidations.map(value => value.copy());\n }\n}\n","import {Observable} from 'rxjs';\n\nimport {StyleLevelEnum} from '@mediusinc/mng-commons/core';\nimport {ActionButtonDescriptor, ButtonStyleBuilder} from '@mediusinc/mng-commons/form/api';\n\nimport {FieldActionContext, FieldActionResult} from '../models/field-action-context.model';\nimport {AFieldDescriptor} from './field-base.descriptor';\n\nexport type FieldActionRunFnType<EditorModel, ParentEditorModel = undefined> = (\n ctx: FieldActionContext<EditorModel, ParentEditorModel>\n) => void | FieldActionResult | Observable<FieldActionResult>;\n\nexport class FieldActionDescriptor<EditorModel, ParentEditorModel = undefined> extends AFieldDescriptor<void, EditorModel, void, ParentEditorModel> {\n protected readonly _fieldActionName: string;\n\n protected _button = new ActionButtonDescriptor();\n\n protected _runFunction?: FieldActionRunFnType<EditorModel>;\n\n private _wrappers = ['field'];\n\n constructor(property: string) {\n super(property);\n this._fieldActionName = property;\n }\n\n public get button() {\n return this._button;\n }\n\n public get runFunction() {\n return this._runFunction;\n }\n\n public get wrappers() {\n return this._wrappers;\n }\n\n public withButtonDescriptor(button: ActionButtonDescriptor): this {\n this._button = button;\n return this;\n }\n\n public withButton(label?: string | null, icon: string | null = null, styleLevel = StyleLevelEnum.Default, styleText = false): this {\n this._button = new ActionButtonDescriptor().withLabel(label).withIcon(icon).withStyleClass(new ButtonStyleBuilder(styleLevel).withTextButton(styleText));\n return this;\n }\n\n public withRunFunction(fn: FieldActionRunFnType<EditorModel>): this {\n this._runFunction = fn;\n return this;\n }\n\n public withWrappers(wrappers: string[]): this {\n this._wrappers = wrappers;\n return this;\n }\n\n public copy(): FieldActionDescriptor<EditorModel, ParentEditorModel> {\n const field = new FieldActionDescriptor<EditorModel, ParentEditorModel>(this._property);\n this.copyFieldsTo(field);\n field._button = this._button.copy();\n field._runFunction = this._runFunction?.bind(field);\n field._wrappers = [...this._wrappers];\n return field;\n }\n}\n","import {EDITOR_DEFAULT_GROUP_NAME} from '../models/editor.model';\nimport {FieldBaseValidator, FormValidationMessage, FormValidator} from '../models/field-validation.model';\nimport {FieldGroupTypeEnum} from '../models/field.model';\nimport {AFieldDescriptor, AGenericFieldDescriptor} from './field-base.descriptor';\nimport {FieldValidationDescriptor, FieldValidationDescriptorOptsType} from './field-validation.descriptor';\n\nexport abstract class AFieldGroupDescriptor<EditorModel, ParentEditorModel = undefined> extends AGenericFieldDescriptor {\n protected readonly _name: string;\n protected readonly _default: boolean;\n protected _title?: string | null;\n protected _fields: AGenericFieldDescriptor[] = [];\n protected _validations: Array<FieldValidationDescriptor<any, any, any>> = [];\n\n protected constructor(name: string) {\n super();\n this._name = name;\n this._default = name === EDITOR_DEFAULT_GROUP_NAME;\n }\n\n public removeField(property: string, filterFunction: (fields: AGenericFieldDescriptor[]) => AGenericFieldDescriptor[]): AGenericFieldDescriptor[] {\n this._fields = filterFunction(this._fields);\n return this._fields;\n }\n\n public get title() {\n return this._title;\n }\n\n abstract get type(): FieldGroupTypeEnum;\n\n abstract get fields(): AGenericFieldDescriptor[];\n\n public get validations() {\n return this._validations;\n }\n\n public get name() {\n return this._name;\n }\n\n public get default() {\n return this._default;\n }\n\n abstract addField(field: AGenericFieldDescriptor): this;\n\n abstract copy(): AFieldGroupDescriptor<EditorModel, ParentEditorModel>;\n\n public withTitle(title?: string | null): this {\n this._title = title;\n return this;\n }\n\n public withValidation<Value = EditorModel, ParentValue = ParentEditorModel>(\n name: string,\n validator?: FormValidator<Value, ParentValue>,\n message?: FormValidationMessage<Value, ParentValue>,\n opts?: FieldValidationDescriptorOptsType\n ) {\n this._validations.push(\n new FieldValidationDescriptor<Value, Value, ParentValue>(name, validator as FieldBaseValidator<Value, Value, ParentValue> | undefined, message, opts)\n );\n return this;\n }\n}\n\nexport class FieldTabGroupDescriptor<EditorModel> extends AFieldGroupDescriptor<EditorModel> {\n protected override _fields: FieldGroupDescriptor<EditorModel>[] = [];\n\n constructor(name: string) {\n super(name);\n }\n\n public override get type() {\n return FieldGroupTypeEnum.Tab;\n }\n\n public get fields(): Array<FieldGroupDescriptor<EditorModel>> {\n return this._fields as Array<FieldGroupDescriptor<EditorModel>>;\n }\n\n public addField(field: FieldGroupDescriptor<EditorModel>): this {\n this._fields.push(field);\n return this;\n }\n\n public copy(skipFields = false): FieldTabGroupDescriptor<EditorModel> {\n const tab = new FieldTabGroupDescriptor<EditorModel>(this.name);\n tab._title = this._title;\n tab._fields = this.fields.map(f => f.copy(skipFields));\n tab._validations = this.validations.map(v => v.copy());\n return tab;\n }\n}\n\nexport class FieldGroupDescriptor<EditorModel, ParentEditorModel = undefined> extends AFieldGroupDescriptor<EditorModel, ParentEditorModel> {\n private _type = FieldGroupTypeEnum.Fieldset;\n\n constructor(name: string) {\n super(name);\n if (this._default) {\n this.asLogical();\n }\n }\n\n public override get type() {\n return this._type;\n }\n\n public get fields(): Array<AFieldDescriptor<any, EditorModel>> {\n return this._fields as Array<AFieldDescriptor<any, EditorModel>>;\n }\n\n public addField(field: AFieldDescriptor<any, EditorModel>): this {\n this._fields.push(field);\n return this;\n }\n\n public asLogical(): this {\n this._type = FieldGroupTypeEnum.Logical;\n return this;\n }\n\n public copy(skipFields = false): FieldGroupDescriptor<EditorModel> {\n const group = new FieldGroupDescriptor<EditorModel>(this.name);\n group._type = this._type;\n group._title = this._title;\n if (!skipFields) {\n group._fields = this.fields.map(f => f.copy());\n }\n group._validations = this.validations.map(v => v.copy());\n return group;\n }\n}\n","import {\n ClassType,\n EnumConstantType,\n EnumValue,\n IDataProvider,\n ILookupDataProvider,\n ILookupDescriptor,\n LookupDataProviderLookupFnType,\n ServiceClassType,\n fromEnumConstantsAsValueArray,\n fromEnumValuesAsValueArray,\n getEnumConstantName\n} from '@mediusinc/mng-commons/core';\nimport {InputTrimType, LookupDataProviderInst} from '@mediusinc/mng-commons/form/api';\nimport {EnumDescriptor, trySetLookupItemsProperties} from '@mediusinc/mng-commons/model';\nimport {ITableDataProvider, TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {FieldLookupConfig, FieldLookupTypeEnum} from '../models/field.model';\nimport {AFieldDescriptor} from './field-base.descriptor';\n\nexport type FieldLookupDescriptorConstructorOptsType<EditorModel, Service, Sorts, Filters extends keyof any> = FieldLookupDescriptorCreateOptsProviderType<\n EditorModel,\n Service,\n Sorts,\n Filters\n> & {\n type?: ClassType<EditorModel>;\n optionsValueProperty?: string;\n};\n\nexport type FieldLookupDescriptorCreateOptsProviderType<FieldModel, Service, Sorts = keyof FieldModel, Filters extends keyof any = keyof FieldModel> = {\n serviceType?: ServiceClassType<Service>;\n dataProvider?: ILookupDataProvider<FieldModel, Service, Sorts, Filters>;\n};\n\nexport type FieldLookupProviderType<FieldModel, Service> = ServiceClassType<Service> | ILookupDataProvider<FieldModel, Service>;\n\nexport type FieldLookupAutocompleteOptsType = {\n openOnFocus?: boolean;\n inlineSearch?: boolean;\n selectFirst?: boolean;\n autoClear?: boolean;\n};\n\nexport const fieldLookupGetProviderCfgObj = <FieldModel, Service>(serviceOrDataProvider?: FieldLookupProviderType<FieldModel, Service>) => {\n const cfg: FieldLookupDescriptorCreateOptsProviderType<FieldModel, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider as ILookupDataProvider<FieldModel, Service>;\n } else {\n cfg.serviceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\nexport class FieldLookupDescriptor<\n FieldModel,\n EditorModel,\n Service = any,\n FieldValue = FieldModel,\n ParentEditorModel = undefined,\n Sorts = keyof FieldModel,\n Filters extends keyof any = keyof FieldModel\n >\n extends AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>\n implements ILookupDescriptor<FieldModel, Service, Sorts, Filters>\n{\n protected readonly _dataProvider: ILookupDataProvider<FieldModel, Service, Sorts, Filters>;\n protected readonly _optionsValueProperty?: string; // this defines VT!\n\n protected _lookupType: FieldLookupTypeEnum = FieldLookupTypeEnum.Dropdown;\n protected _optionsLabelProperty?: string;\n protected _optionsLabelTranslate = false;\n protected _optionsDisabledProperty?: string;\n protected _optionsTrackProperty?: string;\n\n protected _dropdownClassName = 'mng-filter-lookup-dropdown';\n\n protected _autocompleteOpenOnFocus?: boolean;\n protected _autocompleteInlineSearch?: boolean;\n protected _autocompleteAutoClear?: boolean;\n protected _autocompleteSelectFirst?: boolean;\n protected _autocompleteInputTrim?: InputTrimType;\n\n // TODO: address ParentEditorModel\n protected _dialogTableDescriptor?: TableDescriptorInst<FieldModel, any, any>;\n protected _dialogTableDataProvider?: ITableDataProvider<FieldModel, any, any, any>;\n\n protected _customComponentName?: string;\n\n constructor(property: string, cfg?: FieldLookupDescriptorConstructorOptsType<FieldModel, Service, Sorts, Filters>) {\n super(property as string);\n\n if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n } else {\n this._dataProvider = new LookupDataProviderInst(cfg?.type, cfg?.serviceType);\n }\n\n this._optionsValueProperty = cfg?.optionsValueProperty;\n\n trySetLookupItemsProperties(this);\n }\n\n public get lookupType() {\n return this._lookupType;\n }\n\n public get optionsLabelProperty() {\n return this._optionsLabelProperty;\n }\n\n public get optionsLabelTranslate() {\n return this._optionsLabelTranslate;\n }\n\n public get optionsValueProperty() {\n return this._optionsValueProperty;\n }\n\n public get optionsDisabledProperty() {\n return this._optionsDisabledProperty;\n }\n\n public get optionsTrackProperty() {\n return this._optionsTrackProperty;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get autocompleteOpenOnFocus() {\n return this._autocompleteOpenOnFocus;\n }\n\n public get autocompleteInlineSearch() {\n return this._autocompleteInlineSearch;\n }\n\n public get autocompleteAutoClear() {\n return this._autocompleteAutoClear;\n }\n\n public get autocompleteSelectFirst() {\n return this._autocompleteSelectFirst;\n }\n\n public get dropdownClassName() {\n return this._dropdownClassName;\n }\n\n public get dialogTableDescriptor() {\n return this._dialogTableDescriptor;\n }\n\n public get dialogTableDataProvider() {\n return this._dialogTableDataProvider;\n }\n\n public get customComponentName() {\n return this._customComponentName;\n }\n\n public get trimOption() {\n return this._autocompleteInputTrim;\n }\n\n public withOptionsLabelProperty(property: keyof FieldModel, translate = false): this {\n return this.withOptionsLabelPropertyUnsafe(property as string, translate);\n }\n\n public withOptionsLabelPropertyUnsafe(property: string, translate = false): this {\n this._optionsLabelProperty = property;\n this._optionsLabelTranslate = translate;\n return this;\n }\n\n public withOptionsDisabledProperty(property: keyof FieldModel): this {\n return this.withOptionsDisabledPropertyUnsafe(property as string);\n }\n\n public withOptionsDisabledPropertyUnsafe(property: string): this {\n this._optionsDisabledProperty = property;\n return this;\n }\n\n public withOptionsTrackProperty(property: keyof FieldModel): this {\n return this.withOptionsTrackPropertyUnsafe(property as string);\n }\n\n public withOptionsTrackPropertyUnsafe(property: string): this {\n if (this._optionsValueProperty) {\n return this;\n }\n this._optionsTrackProperty = property;\n return this;\n }\n\n public withLookup(lookup?: LookupDataProviderLookupFnType<FieldModel, Service, Sorts, Filters>): this {\n this._dataProvider.withLookup(lookup);\n return this;\n }\n\n public withInputTrim(trimOption: InputTrimType = 'both'): this {\n this._autocompleteInputTrim = trimOption;\n return this;\n }\n\n public override withConfig(config: FieldLookupConfig): this {\n return super.withConfig(config);\n }\n\n public asAutocomplete(opts?: FieldLookupAutocompleteOptsType): this {\n this._lookupType = FieldLookupTypeEnum.Autocomplete;\n this._autocompleteAutoClear = opts?.autoClear;\n this._autocompleteSelectFirst = opts?.selectFirst;\n this._autocompleteOpenOnFocus = opts?.openOnFocus;\n this._autocompleteInlineSearch = opts?.inlineSearch;\n return this;\n }\n\n public asDialog<Sorts = keyof FieldModel, Filters extends keyof any = keyof FieldModel>(\n lookupTableDescriptor: TableDescriptorInst<FieldModel, Sorts, Filters>,\n tableDataProvider?: ITableDataProvider<FieldModel, any, Sorts, Filters>\n ): this {\n this._lookupType = FieldLookupTypeEnum.Dialog;\n this._dialogTableDescriptor = lookupTableDescriptor;\n this._dialogTableDataProvider = tableDataProvider;\n return this;\n }\n\n public asCustomComponent(customComponentName: string): this {\n this._lookupType = FieldLookupTypeEnum.Custom;\n this._customComponentName = customComponentName;\n return this;\n }\n\n public copy(): FieldLookupDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel, Sorts, Filters> {\n const field = new FieldLookupDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel, Sorts, Filters>(this._property, {\n dataProvider: this._dataProvider,\n optionsValueProperty: this._optionsValueProperty\n });\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._optionsLabelProperty = this._optionsLabelProperty;\n field._optionsLabelTranslate = this._optionsLabelTranslate;\n field._optionsDisabledProperty = this._optionsDisabledProperty;\n field._optionsTrackProperty = this._optionsTrackProperty;\n field._dropdownClassName = this._dropdownClassName;\n field._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;\n field._autocompleteInlineSearch = this._autocompleteInlineSearch;\n field._dialogTableDescriptor = this._dialogTableDescriptor;\n return field;\n }\n}\n\nexport class FieldLookupEnumDescriptor<Enum, EditorModel, ParentEditorModel = undefined> extends FieldLookupDescriptor<\n EnumValue,\n EditorModel,\n undefined,\n EnumConstantType,\n ParentEditorModel,\n never,\n never\n> {\n private readonly _enumModel: EnumDescriptor<Enum>;\n private readonly _optionEnumValues: EnumValue[];\n private readonly _options: Enum[] | undefined; // used to ensure proper copying\n\n constructor(property: string, enumModel: EnumDescriptor<Enum>, options?: Array<Enum>) {\n super(property, {\n dataProvider: new LookupDataProviderInst<EnumValue, undefined, never, never, undefined, undefined>(undefined, undefined),\n optionsValueProperty: 'value'\n });\n this._enumModel = enumModel;\n this._options = options;\n this._optionEnumValues = Array.isArray(options)\n ? fromEnumValuesAsValueArray<Enum>(this._enumModel.type, options, this._enumModel.nameAsValue, this._enumModel.i18nBaseKey ?? undefined)\n : fromEnumConstantsAsValueArray(this._enumModel.type, this._enumModel.nameAsValue, this._enumModel.i18nBaseKey ?? undefined);\n this.withLookup(() => this._optionEnumValues);\n this.withOptionsLabelProperty('title', this._enumModel.i18nBaseKey !== null);\n this.withOptionsDisabledProperty('disabled');\n }\n\n public get enumModel() {\n return this._enumModel;\n }\n\n public withDisabledOptions(...disabledOptions: Array<EnumConstantType>): this {\n for (const disabledOption of disabledOptions) {\n const disabledOptionValue = this._enumModel.nameAsValue ? getEnumConstantName(this._enumModel.type, disabledOption) : disabledOption;\n if (disabledOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === disabledOptionValue);\n if (option) {\n option.disabled = true;\n }\n }\n }\n return this;\n }\n\n public withDefaultValueEnum(defaultValue: EnumConstantType): this {\n const defaultOptionValue = this._enumModel.nameAsValue ? getEnumConstantName(this._enumModel.type, defaultValue) : defaultValue;\n if (defaultOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === defaultOptionValue);\n if (option) {\n this.withDefaultValue(option[this._optionsValueProperty as keyof object]);\n }\n }\n return this;\n }\n\n public override asAutocomplete(opts?: FieldLookupAutocompleteOptsType): this {\n super.asAutocomplete({\n ...opts,\n openOnFocus: opts?.openOnFocus ?? true,\n inlineSearch: opts?.inlineSearch ?? true\n });\n return this;\n }\n\n public override copy(): FieldLookupEnumDescriptor<Enum, EditorModel, ParentEditorModel> {\n const field = new FieldLookupEnumDescriptor<Enum, EditorModel, ParentEditorModel>(this._property, this._enumModel, this._options);\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._optionsLabelProperty = this._optionsLabelProperty;\n field._optionsDisabledProperty = this._optionsDisabledProperty;\n field._optionsTrackProperty = this._optionsTrackProperty;\n return field;\n }\n}\n","import {IDataProvider, ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ITableDataProvider, TableDataProviderGetAllFnType, TableDataProviderInst, TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {ActionDescriptorInst} from '../../action/descriptors/action.descriptor';\nimport {TableviewDescriptorInst} from '../../tableview/descriptors/tableview.descriptor';\nimport {FieldManyEditorActionEnum, FieldManyEditorTypeEnum, FieldManyToManyEditorActionEnum, FieldManyToManyEditorTypeEnum} from '../models/field.model';\nimport {AFieldDescriptor} from './field-base.descriptor';\n\nexport type FieldManyToManyEditorDescriptorConstructorOptsType<FieldModel, Service> = FieldManyToManyEditorDescriptorCreateOptsProviderType<FieldModel, Service>;\n\nexport type FieldManyToManyEditorDescriptorCreateOptsProviderType<FieldModel, Service> = {\n lookupServiceType?: ServiceClassType<Service>;\n lookupDataProvider?: ITableDataProvider<FieldModel, Service>;\n};\n\nexport type FieldManyToManyEditorProviderType<FieldModel, Service> = ServiceClassType<Service> | ITableDataProvider<FieldModel, Service>;\n\nexport const fieldManyToManyGetProviderCfgObj = <FieldModel, Service>(serviceOrDataProvider?: FieldManyToManyEditorProviderType<FieldModel, Service>) => {\n const cfg: FieldManyToManyEditorDescriptorCreateOptsProviderType<FieldModel, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.lookupDataProvider = serviceOrDataProvider as ITableDataProvider<FieldModel, Service>;\n } else {\n cfg.lookupServiceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\nexport class FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service = any, FieldValue = FieldModel[], ParentEditorModel = undefined> extends AFieldDescriptor<\n FieldModel,\n EditorModel,\n FieldValue,\n ParentEditorModel\n> {\n private readonly _mainTableDescriptor: TableDescriptorInst<FieldModel>; // table descriptor for main table component\n private readonly _lookupTableDescriptor: TableDescriptorInst<FieldModel>; // table descriptor for where select will be applied\n private readonly _lookupTableDataProvider: ITableDataProvider<FieldModel, Service>;\n private _fieldType: FieldManyToManyEditorTypeEnum = FieldManyToManyEditorTypeEnum.DialogTableMultiselect;\n private _actions: Array<FieldManyToManyEditorActionEnum> = [FieldManyToManyEditorActionEnum.Add, FieldManyToManyEditorActionEnum.Delete];\n private _hasLookupExcludeValues = false;\n private _excludeFilterProperty = '';\n private _excludeValueProperty = '';\n private _searchEnabled = false;\n private _searchFields?: string[];\n\n constructor(\n property: string,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n cfg?: FieldManyToManyEditorDescriptorConstructorOptsType<FieldModel, Service>\n ) {\n super(property);\n this._mainTableDescriptor = mainTableDescriptor;\n this._lookupTableDescriptor = lookupTableDescriptor;\n\n if (cfg?.lookupDataProvider) {\n this._lookupTableDataProvider = cfg.lookupDataProvider;\n } else {\n this._lookupTableDataProvider = new TableDataProviderInst(lookupTableDescriptor.model.type, cfg?.lookupServiceType);\n }\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get actions() {\n return this._actions;\n }\n\n public get hasLookupExcludeValues() {\n return this._hasLookupExcludeValues;\n }\n\n public get excludeFilterProperty() {\n return this._excludeFilterProperty;\n }\n\n public get excludeValueProperty() {\n return this._excludeValueProperty;\n }\n\n public get mainTableDescriptor() {\n return this._mainTableDescriptor;\n }\n\n public get lookupTableDescriptor() {\n return this._lookupTableDescriptor;\n }\n\n public get lookupTableDataProvider() {\n return this._lookupTableDataProvider;\n }\n\n public get searchEnabled() {\n return this._searchEnabled;\n }\n\n public get searchFields() {\n return this._searchFields;\n }\n\n public withLookup(fn: TableDataProviderGetAllFnType<FieldModel, Service>): this {\n this._lookupTableDataProvider.withGetAll(fn);\n return this;\n }\n\n public withActions(actions: Array<FieldManyToManyEditorActionEnum> = []): this {\n this.actions.push(...actions);\n return this;\n }\n\n public withLookupExclude(filterProperty: keyof FieldModel, valueProperty: keyof FieldModel, hasLookupExclude = true): this {\n return this.withLookupExcludeUnsafe(filterProperty as string, valueProperty as string, hasLookupExclude);\n }\n\n public withLookupExcludeUnsafe(filterProperty: string, valueProperty: string, hasLookupExclude = true): this {\n this._hasLookupExcludeValues = hasLookupExclude;\n this._excludeFilterProperty = filterProperty;\n this._excludeValueProperty = valueProperty;\n return this;\n }\n\n public withSearch(enabled = true, searchFields?: (keyof FieldModel)[]): this {\n return this.withSearchUnsafe(enabled, searchFields as string[] | undefined);\n }\n\n public withSearchUnsafe(enabled = true, searchFields?: string[]): this {\n this._searchEnabled = enabled;\n this._searchFields = searchFields;\n return this;\n }\n\n public copy(): FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel> {\n const field = new FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel>(\n this._property,\n this._mainTableDescriptor.copy(),\n this._lookupTableDescriptor.copy(),\n {\n lookupDataProvider: this.lookupTableDataProvider\n }\n );\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._actions = this._actions.map(a => a);\n field._hasLookupExcludeValues = this._hasLookupExcludeValues;\n field._excludeFilterProperty = this._excludeFilterProperty;\n field._excludeValueProperty = this._excludeValueProperty;\n return field;\n }\n}\n\nexport class FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue = FieldModel[], ParentEditorModel = undefined> extends AFieldDescriptor<\n FieldModel,\n EditorModel,\n FieldValue,\n ParentEditorModel\n> {\n private readonly _tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, EditorModel>;\n private _fieldType: FieldManyEditorTypeEnum = FieldManyEditorTypeEnum.DialogEditor;\n private _fieldActions: Array<FieldManyEditorActionEnum> = [];\n private _actions: Array<ActionDescriptorInst<FieldModel>> = [];\n\n constructor(property: string, tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, EditorModel>) {\n super(property);\n this._tableviewDescriptor = tableviewDescriptor;\n this._fieldActions.push(FieldManyEditorActionEnum.View, FieldManyEditorActionEnum.Add, FieldManyEditorActionEnum.Edit, FieldManyEditorActionEnum.Delete);\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get fieldActions() {\n return this._fieldActions;\n }\n\n public get actions() {\n return this._actions;\n }\n\n public get tableviewDescriptor() {\n return this._tableviewDescriptor;\n }\n\n public get tableDescriptor() {\n return this._tableviewDescriptor.table;\n }\n\n public get editorForCreate() {\n return this._tableviewDescriptor.addEditor;\n }\n\n public get editorForRead() {\n return this._tableviewDescriptor.detailsEditor;\n }\n\n public get editorForUpdate() {\n return this._tableviewDescriptor.editEditor;\n }\n\n public withFieldAction(action: FieldManyEditorActionEnum): this {\n this._fieldActions.push(action);\n return this;\n }\n\n public withFieldActions(actions: FieldManyEditorActionEnum[]): this {\n this._fieldActions = actions;\n return this;\n }\n\n public withAction(action: ActionDescriptorInst<FieldModel>): this {\n this._actions.push(action);\n return this;\n }\n\n public copy(): FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel> {\n const field = new FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>(this._property, this._tableviewDescriptor.copy());\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._fieldActions = this._fieldActions.map(a => a);\n return field;\n }\n}\n","import {Type} from '@angular/core';\nimport {AbstractControl} from '@angular/forms';\n\nimport {ItemOrObservable, fromEnumConstantsAsValueArray, fromEnumValuesAsValueArray} from '@mediusinc/mng-commons/core';\nimport {InputTrimType} from '@mediusinc/mng-commons/form/api';\nimport {EnumDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {FieldImagePreviewComponent} from '../models/field-image-preview.model';\nimport {FieldInputTypeEnum} from '../models/field.model';\nimport {AFormlyCustomFieldComponent} from '../models/formly-custom-field.model';\nimport {CommonsFormlyFieldConfig} from '../models/formly-field.model';\nimport {RadioValue} from '../models/radio.model';\nimport {AFieldDescriptor} from './field-base.descriptor';\n\nexport type FieldInputDescriptorType = string | string[] | number | boolean | Date | File | File[];\n\nexport type FieldInputTextOptsType = {\n email?: boolean;\n} & FieldInputTextValidationOptsType;\n\nexport type FieldInputTextareaOptsType = {\n rows?: number;\n} & FieldInputTextValidationOptsType;\n\nexport type FieldInputTextValidationOptsType = {\n minLength?: number;\n maxLength?: number;\n pattern?: string | RegExp;\n};\n\nexport type FieldInputDatePickerDisplayOptsType = {\n format?: string;\n showTime?: boolean;\n showSeconds?: boolean;\n};\n\nexport type FieldInputDateValidationOptsType<FieldValue, EditorModel, ParentEditorModel> = {\n min?: Date | FieldInputDatePickerDynamicMinMaxFnType<FieldValue, EditorModel, ParentEditorModel>;\n max?: Date | FieldInputDatePickerDynamicMinMaxFnType<FieldValue, EditorModel, ParentEditorModel>;\n};\n\nexport type FieldInputCurrencyOptsType<Property = string> = {\n currencyProperty?: Property;\n currency?: string;\n currencyDisplay?: 'symbol' | 'code' | 'name';\n} & FieldInputNumberGroupingOptsType &\n FieldInputNumberFractionOptsType &\n FieldInputNumberValidationOptsType &\n FieldInputLocaleOptsType;\n\nexport type FieldInputNumberOptsType = FieldInputNumberGroupingOptsType & FieldInputNumberFractionOptsType & FieldInputNumberValidationOptsType & FieldInputLocaleOptsType;\n\nexport type FieldInputNumberGroupingOptsType = {\n groupSeparator?: boolean;\n};\n\nexport type FieldInputNumberValidationOptsType = {\n min?: number;\n max?: number;\n step?: number;\n autoCorrect?: boolean;\n};\n\nexport type FieldInputNumberFractionOptsType = {\n minFractionDigits?: number;\n maxFractionDigits?: number;\n};\n\nexport type FieldInputLocaleOptsType = {\n locale?: string;\n};\n\nexport type FieldInputDatePickerOptsType<FieldValue, EditorModel, ParentEditorModel> = FieldInputDatePickerDisplayOptsType &\n FieldInputDateValidationOptsType<FieldValue, EditorModel, ParentEditorModel> &\n FieldDateOptsType;\n\nexport type FieldDateOptsType = {\n asDateObj?: boolean;\n utc?: boolean;\n noTime?: boolean;\n noTimeZone?: boolean;\n};\n\nexport type FieldInputFileOpts = {\n multiple?: boolean;\n maxFileSize?: number;\n accept?: string;\n onFileSelectHandlerFn?: FieldInputFileOnSelectHandlerFnType;\n preview?: boolean;\n previewAllowSvg?: boolean;\n previewComponent?: Type<FieldImagePreviewComponent>;\n};\n\nexport type FieldInputImageUrlOpts = {\n multiple?: boolean;\n preview?: boolean;\n inputVisibleOnDisabled?: boolean;\n previewAllowSvg?: boolean;\n previewComponent?: Type<FieldImagePreviewComponent>;\n};\n\nexport type FieldInputComponentOpts = {\n fieldWrappers?: string[];\n inputs?: Record<string, any>;\n};\n\nexport type FieldInputFileOnSelectHandlerFnType = (file: File[] | null, control: AbstractControl) => void;\nexport type FieldInputDatePickerDynamicMinMaxFnType<Value, FormValue, ParentFormValue> = (\n control: AbstractControl<Value>,\n field: CommonsFormlyFieldConfig<Value, FormValue, ParentFormValue>\n) => ItemOrObservable<Date | undefined>;\n\nexport class FieldInputDescriptor<EditorModel, FieldModel = FieldInputDescriptorType, FieldValue = FieldModel, ParentEditorModel = undefined> extends AFieldDescriptor<\n FieldModel,\n EditorModel,\n FieldValue,\n ParentEditorModel\n> {\n private _fieldType: FieldInputTypeEnum = FieldInputTypeEnum.Text;\n\n // textarea specific properties\n private _rows?: number;\n\n // number specific properties\n private _numberMin?: number;\n private _numberMax?: number;\n private _numberStep?: number;\n private _numberAutoCorrect?: boolean;\n private _numberMinFractionDigits?: number;\n private _numberMaxFractionDigits?: number;\n private _numberUseGrouping = true;\n private _locale?: string;\n\n // currency specific properties\n private _currency?: string;\n private _currencyDisplay: 'symbol' | 'code' | 'name' = 'symbol';\n private _currencyFromProperty?: string;\n\n // radio specific properties\n private _radioOptions: Array<RadioValue> = [];\n\n // datepicker specific properties\n private _datePickerFormat?: string;\n private _datePickerMin?: Date | FieldInputDatePickerDynamicMinMaxFnType<FieldValue, EditorModel, ParentEditorModel>;\n private _datePickerMax?: Date | FieldInputDatePickerDynamicMinMaxFnType<FieldValue, EditorModel, ParentEditorModel>;\n private _datePickerShowTime?: boolean;\n private _datePickerShowSeconds?: boolean;\n private _datePickerValueUtc?: boolean;\n private _datePickerValueNoTimezone?: boolean;\n private _datePickerValueNoTime?: boolean;\n private _datePickerValueAsDateObj?: boolean;\n\n // input specific properties\n private _maxLength?: number;\n private _minLength?: number;\n private _pattern?: string | RegExp;\n private _inputTrim?: InputTrimType;\n private _validationEmail?: boolean;\n\n // mask specific properties\n private _mask?: string;\n private _slotChar?: string;\n\n // file specific properties\n private _fileMultiple?: boolean;\n private _fileMaxFileSize?: number;\n private _fileAccept?: string;\n private _fileOnSelectHandler?: FieldInputFileOnSelectHandlerFnType;\n\n // image specific properties\n private _imagePreview?: boolean;\n private _imageUrlInputHiddenOnDisabled?: boolean;\n private _imagePreviewAllowSvg?: boolean;\n private _imagePreviewComponent?: Type<FieldImagePreviewComponent>;\n\n // custom component properties\n private _customComponentType?: Type<AFormlyCustomFieldComponent<FieldValue, EditorModel, ParentEditorModel>>;\n private _customComponentInputs?: Record<string, any>;\n private _customComponentWrappers?: string[];\n\n constructor(property: string) {\n super(property);\n }\n\n /**\n * converts field to given type with additional arguments\n * @param fieldType field type enum\n * @param args any additional arguments for field (optional)\n */\n public asType(fieldType: FieldInputTypeEnum, ...args: any[]): this {\n switch (fieldType) {\n case FieldInputTypeEnum.Hidden:\n return this.asHidden();\n case FieldInputTypeEnum.Label:\n return this.asLabel();\n case FieldInputTypeEnum.Textarea:\n return this.asTextarea(...args);\n case FieldInputTypeEnum.Number:\n return this.asNumber(...args);\n case FieldInputTypeEnum.Currency:\n return this.asCurrency(...args);\n case FieldInputTypeEnum.Switch:\n return this.asSwitch();\n case FieldInputTypeEnum.Radio:\n return this.asRadio(args[0], args[1]);\n case FieldInputTypeEnum.Datepicker:\n return this.asDatePicker(...args);\n case FieldInputTypeEnum.Mask:\n return this.asMask(args[0], args[1]);\n case FieldInputTypeEnum.File:\n return this.asFile(...args);\n case FieldInputTypeEnum.ImageFile:\n return this.asImageFile(...args);\n case FieldInputTypeEnum.ImageUrl:\n return this.asImageUrl(...args);\n case FieldInputTypeEnum.Custom:\n return this.asCustomComponent(args[0], args[1]);\n case FieldInputTypeEnum.Text:\n return this.asText(args[0]);\n }\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get rows() {\n return this._rows;\n }\n\n public get numberMin() {\n return this._numberMin;\n }\n\n public get numberMax() {\n return this._numberMax;\n }\n\n public get numberStep() {\n return this._numberStep;\n }\n\n public get numberAutoCorrect() {\n return this._numberAutoCorrect;\n }\n\n public get numberMinFractionDigits() {\n return this._numberMinFractionDigits;\n }\n\n public get numberMaxFractionDigits() {\n return this._numberMaxFractionDigits;\n }\n\n public get numberUseGrouping() {\n return this._numberUseGrouping;\n }\n\n public get radioOptions() {\n return this._radioOptions;\n }\n\n public get datePickerFormat() {\n return this._datePickerFormat;\n }\n\n public get datePickerMin() {\n return this._datePickerMin;\n }\n\n public get datePickerMax() {\n return this._datePickerMax;\n }\n\n public get datePickerShowTime() {\n return this._datePickerShowTime;\n }\n\n public get datePickerShowSeconds() {\n return this._datePickerShowSeconds;\n }\n\n public get datePickerValueUtc() {\n return this._datePickerValueUtc;\n }\n\n public get datePickerValueNoTimezone() {\n return this._datePickerValueNoTimezone;\n }\n\n public get datePickerValueNoTime() {\n return this._datePickerValueNoTime;\n }\n\n public get datePickerValueAsDateObj() {\n return this._datePickerValueAsDateObj;\n }\n\n public get maxLength() {\n return this._maxLength;\n }\n\n public get minLength() {\n return this._minLength;\n }\n\n public get pattern() {\n return this._pattern;\n }\n\n public get trimOption() {\n return this._inputTrim;\n }\n\n public get validationEmail() {\n return this._validationEmail;\n }\n\n public get mask() {\n return this._mask;\n }\n\n public get slotChar() {\n return this._slotChar;\n }\n\n public get fileMultiple() {\n return this._fileMultiple;\n }\n\n public get fileMaxFileSize() {\n return this._fileMaxFileSize;\n }\n\n public get fileAccept() {\n return this._fileAccept;\n }\n\n public get fileOnSelectHandler() {\n return this._fileOnSelectHandler;\n }\n\n public get imagePreview() {\n return this._imagePreview;\n }\n\n public get imageUrlInputVisibleOnDisabled() {\n return this._imageUrlInputHiddenOnDisabled;\n }\n\n public get imagePreviewAllowSvg() {\n return this._imagePreviewAllowSvg;\n }\n\n public get imagePreviewComponent() {\n return this._imagePreviewComponent;\n }\n\n public get customComponentType() {\n return this._customComponentType;\n }\n\n public get customComponentInputs() {\n return this._customComponentInputs;\n }\n\n public get customComponentWrappers() {\n return this._customComponentWrappers;\n }\n\n public get locale() {\n return this._locale;\n }\n\n public get currency() {\n return this._currency;\n }\n\n public get currencyFromProperty() {\n return this._currencyFromProperty;\n }\n\n public get currencyDisplay() {\n return this._currencyDisplay;\n }\n\n public asHidden(): this {\n this._fieldType = FieldInputTypeEnum.Hidden;\n return this;\n }\n\n public asLabel(): this {\n this._fieldType = FieldInputTypeEnum.Label;\n return this;\n }\n\n public asText(opts?: FieldInputTextOptsType): this {\n this._fieldType = FieldInputTypeEnum.Text;\n return this.withTextValidation(opts).withTextValidationEmail(opts?.email ?? false);\n }\n\n public asTextarea(opts?: FieldInputTextareaOptsType): this {\n this._fieldType = FieldInputTypeEnum.Textarea;\n this._rows = opts?.rows;\n return this.withTextValidation(opts);\n }\n\n public asNumber(opts?: FieldInputNumberOptsType): this {\n this._fieldType = FieldInputTypeEnum.Number;\n return this.withNumberGrouping(opts?.groupSeparator ?? false)\n .withNumberFractions(opts)\n .withNumberValidation(opts)\n .withLocale(opts?.locale);\n }\n\n public asCurrency(opts?: FieldInputCurrencyOptsType<keyof EditorModel>): this {\n return this.asCurrencyUnsafe(<FieldInputCurrencyOptsType>{\n ...opts,\n currencyProperty: opts?.currencyProperty ? (opts.currencyProperty as string) : undefined\n });\n }\n\n public asCurrencyUnsafe(opts?: FieldInputCurrencyOptsType): this {\n this._fieldType = FieldInputTypeEnum.Currency;\n this._currencyFromProperty = opts?.currencyProperty;\n this._currency = opts?.currency ?? this._currency;\n this._currencyDisplay = opts?.currencyDisplay ?? this._currencyDisplay;\n return this.withNumberGrouping(opts?.groupSeparator ?? false)\n .withNumberFractions({\n maxFractionDigits: opts?.maxFractionDigits ?? 2,\n minFractionDigits: opts?.minFractionDigits ?? 2\n })\n .withNumberValidation(opts)\n .withLocale(opts?.locale);\n }\n\n public asSwitch(): this {\n this._fieldType = FieldInputTypeEnum.Switch;\n return this;\n }\n\n public asRadio(options: Array<string | number | boolean>, optionsTitlePath?: string): this {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = options.map(o => <RadioValue>{value: o, title: `${optionsTitlePath ? `${optionsTitlePath}.` : ''}${o}`});\n return this;\n }\n\n public asRadioFromEnum<Enum>(enumModel: EnumDescriptor<Enum>, values?: Array<Enum>): this {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = Array.isArray(values)\n ? fromEnumValuesAsValueArray<Enum>(enumModel.type, values, enumModel.nameAsValue, enumModel.i18nBaseKey ?? undefined)\n : fromEnumConstantsAsValueArray(enumModel.type, enumModel.nameAsValue, enumModel.i18nBaseKey ?? undefined);\n return this;\n }\n\n public asDatePicker(opts?: FieldInputDatePickerOptsType<FieldValue, EditorModel, ParentEditorModel>): this {\n this._fieldType = FieldInputTypeEnum.Datepicker;\n this.withDateValidation(opts);\n this.withDatePickerDisplay(opts);\n this.withDateValue({\n asDateObj: opts?.asDateObj,\n utc: opts?.utc,\n noTimeZone: opts?.noTimeZone,\n noTime: opts?.noTime\n });\n\n return this;\n }\n\n public asMask(mask: string, slotChar: string): this {\n this._fieldType = FieldInputTypeEnum.Mask;\n this._mask = mask;\n this._slotChar = slotChar;\n return this;\n }\n\n public asFile(opts?: FieldInputFileOpts): this {\n this._fieldType = FieldInputTypeEnum.File;\n this._fileMultiple = opts?.multiple;\n this._fileMaxFileSize = opts?.maxFileSize;\n this._fileAccept = opts?.accept;\n return this.withFileOnSelectHandler(opts?.onFileSelectHandlerFn);\n }\n\n public asImageFile(opts?: FieldInputFileOpts): this {\n this.asFile(opts);\n this._fieldType = FieldInputTypeEnum.ImageFile;\n this._imagePreview = opts?.preview;\n this._imagePreviewAllowSvg = opts?.previewAllowSvg;\n this._imagePreviewComponent = opts?.previewComponent;\n return this;\n }\n\n public asImageUrl(opts?: FieldInputImageUrlOpts): this {\n this._fieldType = FieldInputTypeEnum.ImageUrl;\n this._fileMultiple = opts?.multiple;\n this._imagePreview = opts?.preview;\n this._imagePreviewAllowSvg = opts?.previewAllowSvg;\n this._imagePreviewComponent = opts?.previewComponent;\n this._imageUrlInputHiddenOnDisabled = opts?.inputVisibleOnDisabled;\n return this;\n }\n\n public asCustomComponent(component: Type<AFormlyCustomFieldComponent<FieldValue, EditorModel, ParentEditorModel>>, opts?: FieldInputComponentOpts): this {\n this._fieldType = FieldInputTypeEnum.Custom;\n this._customComponentType = component;\n this._customComponentInputs = opts?.inputs;\n this._customComponentWrappers = opts?.fieldWrappers;\n return this;\n }\n\n public withNumberValidation(opts?: FieldInputNumberValidationOptsType): this {\n this._numberStep = opts?.step;\n this._numberAutoCorrect = opts?.autoCorrect;\n this._numberMin = opts?.min;\n this._numberMax = opts?.max;\n return this;\n }\n\n public withLocale(locale?: string): this {\n this._locale = locale;\n return this;\n }\n\n public withNumberFractions(opts?: FieldInputNumberFractionOptsType) {\n this._numberMinFractionDigits = opts?.minFractionDigits;\n this._numberMaxFractionDigits = opts?.maxFractionDigits;\n return this;\n }\n\n public withNumberGrouping(useGrouping = true): this {\n this._numberUseGrouping = useGrouping;\n return this;\n }\n\n public withTextareaRows(rows?: number): this {\n this._rows = rows;\n return this;\n }\n\n public withTextValidation(opts?: FieldInputTextValidationOptsType): this {\n this._minLength = opts?.minLength;\n this._maxLength = opts?.maxLength;\n this._pattern = opts?.pattern;\n return this;\n }\n\n public withDatePickerDisplay(opts?: FieldInputDatePickerDisplayOptsType): this {\n this._datePickerFormat = opts?.format;\n this._datePickerShowTime = opts?.showTime;\n this._datePickerShowSeconds = opts?.showSeconds;\n return this;\n }\n\n public withDateValidation(opts?: FieldInputDateValidationOptsType<FieldValue, EditorModel, ParentEditorModel>): this {\n this._datePickerMin = opts?.min;\n this._datePickerMax = opts?.max;\n return this;\n }\n\n public withInputTrim(trimOption: InputTrimType = 'both'): this {\n this._inputTrim = trimOption;\n return this;\n }\n\n public withDateValue(opts?: FieldDateOptsType): this {\n this._datePickerValueAsDateObj = opts?.asDateObj;\n this._datePickerValueUtc = opts?.utc;\n this._datePickerValueNoTimezone = opts?.noTimeZone;\n this._datePickerValueNoTime = opts?.noTime;\n return this;\n }\n\n public withTextValidationEmail(email = true): this {\n this._validationEmail = email;\n return this;\n }\n\n public withFileOnSelectHandler(fn?: FieldInputFileOnSelectHandlerFnType): this {\n this._fileOnSelectHandler = fn;\n return this;\n }\n\n public copy(): FieldInputDescriptor<EditorModel, FieldModel, FieldValue, ParentEditorModel> {\n const field = new FieldInputDescriptor<EditorModel, FieldModel, FieldValue, ParentEditorModel>(this._property);\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._rows = this._rows;\n field._numberMin = this._numberMin;\n field._numberMax = this._numberMax;\n field._numberStep = this._numberStep;\n field._numberAutoCorrect = this._numberAutoCorrect;\n field._numberMinFractionDigits = this._numberMinFractionDigits;\n field._numberMaxFractionDigits = this._numberMaxFractionDigits;\n field._numberUseGrouping = this._numberUseGrouping;\n field._radioOptions = [...this._radioOptions];\n field._datePickerFormat = this._datePickerFormat;\n field._datePickerMin = this._datePickerMin;\n field._datePickerMax = this._datePickerMax;\n field._datePickerShowTime = this._datePickerShowTime;\n field._datePickerShowSeconds = this._datePickerShowSeconds;\n field._datePickerValueUtc = this._datePickerValueUtc;\n field._datePickerValueNoTimezone = this._datePickerValueNoTimezone;\n field._datePickerValueNoTime = this._datePickerValueNoTime;\n field._datePickerValueAsDateObj = this._datePickerValueAsDateObj;\n field._maxLength = this._maxLength;\n field._minLength = this._minLength;\n field._pattern = this._pattern;\n field._mask = this._mask;\n field._slotChar = this._slotChar;\n field._fileMultiple = this._fileMultiple;\n field._fileMaxFileSize = this._fileMaxFileSize;\n field._fileAccept = this._fileAccept;\n field._fileOnSelectHandler = this._fileOnSelectHandler;\n field._imagePreview = this._imagePreview;\n field._imageUrlInputHiddenOnDisabled = this._imageUrlInputHiddenOnDisabled;\n field._imagePreviewAllowSvg = this._imagePreviewAllowSvg;\n field._imagePreviewComponent = this._imagePreviewComponent;\n field._customComponentType = this._customComponentType;\n field._customComponentInputs = this._customComponentInputs;\n field._customComponentWrappers = this._customComponentWrappers;\n field._locale = this._locale;\n field._currency = this._currency;\n field._currencyDisplay = this._currencyDisplay;\n field._currencyFromProperty = this._currencyFromProperty;\n field._inputTrim = this._inputTrim;\n field._validationEmail = this._validationEmail;\n return field;\n }\n}\n","import {FormGroup} from '@angular/forms';\n\nimport {Subject} from 'rxjs';\n\nimport {ArrayItemType, CommonsInternalError, EnumConstantType, IEditorDescriptor, IdType, KeyofAndOfType, Nullable} from '@mediusinc/mng-commons/core';\nimport {EnumDescriptor, ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\nimport {ITableDataProvider, TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {TableviewDescriptorInst} from '../../tableview/descriptors/tableview.descriptor';\nimport {IFieldsManageInterface} from '../models/editor-fields.model';\nimport {EDITOR_DEFAULT_GROUP_NAME, TableviewEditorTypeEnum} from '../models/editor.model';\nimport {FormValidationMessage, FormValidator} from '../models/field-validation.model';\nimport {FormEvent, FormEventData, FormEventTypeEnum} from '../models/form-editor.event';\nimport {IFormEditorComponent} from '../models/form-editor.interface';\nimport {FieldActionDescriptor} from './field-action.descriptor';\nimport {AFieldDescriptor} from './field-base.descriptor';\nimport {FieldGroupDescriptor, FieldTabGroupDescriptor} from './field-group.descriptor';\nimport {FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldLookupProviderType, fieldLookupGetProviderCfgObj} from './field-lookup.descriptor';\nimport {FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, fieldManyToManyGetProviderCfgObj} from './field-many.descriptor';\nimport {FieldValidationDescriptorOptsType} from './field-validation.descriptor';\nimport {FieldInputDescriptor, FieldInputDescriptorType} from './field.descriptor';\n\nexport class EditorDescriptorInst<EditorModel, ParentEditorModel = undefined>\n implements IEditorDescriptor<EditorModel, ParentEditorModel>, IFieldsManageInterface<EditorModel, ParentEditorModel>\n{\n public static readonly defaultGroupName = EDITOR_DEFAULT_GROUP_NAME;\n\n /** @ignore */ protected readonly _model: ModelDescriptor<EditorModel>;\n /** @ignore */ protected readonly _tableviewEditorType: TableviewEditorTypeEnum;\n /** @ignore */ protected readonly _tabs: Array<FieldTabGroupDescriptor<EditorModel>> = [];\n /** @ignore */ protected readonly _groups: Array<FieldGroupDescriptor<EditorModel, ParentEditorModel>> = [];\n /** @ignore */ protected _fields: Array<AFieldDescriptor<any, EditorModel>> = [];\n /** @ignore */ protected _currentTabGroup?: FieldTabGroupDescriptor<EditorModel>;\n /** @ignore */ protected _currentGroup?: FieldGroupDescriptor<EditorModel>;\n\n /** @ignore */ protected _autoSave?: boolean;\n /** @ignore */ protected _autoSaveIdentifier?: string;\n\n /** @ignore */ protected _disabled = false;\n\n /** @ignore */ protected _isLocalized = false;\n /** @ignore */ protected _localizationLocaleProperty?: string;\n /** @ignore */ protected _localizationModel?: ModelDescriptor<any>;\n /** @ignore */ protected _localizationLocalizationProperty?: string;\n\n /** @ignore */ protected readonly _eventsSubject = new Subject<FormEvent<EditorModel, ParentEditorModel>>();\n\n /**\n * Creates new instance of editor descriptor.\n * @param model Model descriptor.\n * @param tableviewEditorType Type of editor in tableview (add, edit, view or none).\n */\n public constructor(model: ModelDescriptor<EditorModel>, tableviewEditorType = TableviewEditorTypeEnum.None) {\n this._model = model;\n this._tableviewEditorType = tableviewEditorType;\n }\n\n /**\n * Model descriptor for editor.\n */\n public get model() {\n return this._model;\n }\n\n /**\n * Editor's tabs.\n */\n public get tabs() {\n return this._tabs;\n }\n\n /**\n * Editor's fields.\n */\n public get fields() {\n return this._fields;\n }\n\n /**\n * Type of editor for tableview.\n */\n public get tableviewEditorType() {\n return this._tableviewEditorType;\n }\n\n /**\n * If editor is disabled.\n */\n public get disabled() {\n return this._disabled;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public get localizationLocaleProperty() {\n return this._localizationLocaleProperty;\n }\n\n public get localizationLocalizationProperty() {\n return this._localizationLocalizationProperty;\n }\n\n public get localizationModel() {\n return this._localizationModel;\n }\n\n public get autoSave() {\n return this._autoSave;\n }\n\n public get autoSaveIdentifier() {\n return this._autoSaveIdentifier;\n }\n\n /**\n * Creates new tab group. Next added fields are added to newly created tab group.\n * @param name Name of the group.\n * @param title Title key for the tab.\n */\n public createTabGroup(name: string, title?: string): FieldTabGroupDescriptor<EditorModel> {\n const tabGroup = new FieldTabGroupDescriptor<EditorModel>(name);\n tabGroup.withTitle(title);\n this.createTabGroupDescriptor(tabGroup);\n return tabGroup;\n }\n\n /**\n * Creates new field group. Next added fields are added to newly created field group.\n * @param name Name of the group.\n * @param title Title key for the group.\n */\n public createFieldGroup(name: string, title?: string | null): FieldGroupDescriptor<EditorModel> {\n const fieldGroup = new FieldGroupDescriptor<EditorModel>(name);\n fieldGroup.withTitle(title);\n this.createFieldGroupDescriptor(fieldGroup);\n return fieldGroup;\n }\n\n /**\n * Gets field by the model property name.\n * @param property Model property name.\n */\n public getField(property: keyof EditorModel) {\n return this.getFieldUnsafe(property as string);\n }\n\n /**\n * Gets field by the model property name (UNSAFE).\n * @param property Model property name.\n */\n public getFieldUnsafe(property: string): AFieldDescriptor<any, EditorModel, ParentEditorModel> | null {\n return this._fields.find(f => f.property === property) ?? null;\n }\n\n /**\n * Removes field by the model property name.\n * @param property Model property name.\n */\n public removeField(property: keyof EditorModel): void {\n return this.removeFieldUnsafe(property as string);\n }\n\n /**\n * Removes field by the model property name (UNSAFE).\n * @param property Model property name.\n */\n public removeFieldUnsafe(property: string): void {\n const fieldIdx = this._fields.findIndex(f => f.property === property);\n if (fieldIdx < 0) {\n throw new CommonsInternalError(`Field ${property} does not exist.`, {name: 'EditorDescriptorError'});\n }\n for (const group of this._groups) {\n const groupFieldIdx = group.fields.findIndex(f => f instanceof AFieldDescriptor && f.property === property);\n if (groupFieldIdx >= 0) {\n group.fields.splice(groupFieldIdx, 1);\n break;\n }\n }\n this._fields.splice(fieldIdx, 1);\n }\n\n /**\n * Adds field by the descriptor.\n * @param field Field descriptor.\n */\n public addFieldDescriptor<FieldModel, FieldValue = FieldModel>(field: AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>): this {\n if (this._fields.some(f => f.property === field.property)) {\n throw new CommonsInternalError(`Field '${field.property}' already exists.`);\n }\n this.createDefaultGroup();\n this._fields.push(field);\n this._currentGroup?.addField(field);\n return this;\n }\n\n /**\n * Adds field by the model property name.\n * @param property Model property name.\n */\n public addField<Property extends keyof EditorModel, FieldModel = NonNullable<EditorModel[Property]>, FieldValue = EditorModel[Property]>(property: Property) {\n return this.addFieldUnsafe<FieldModel, FieldValue>(property as string);\n }\n\n /**\n * Adds field by the model property name (UNSAFE). Property is not checked on editor model.\n * Use {addField} for safe usage.\n * @param property Model property name.\n */\n public addFieldUnsafe<FieldModel = FieldInputDescriptorType, FieldValue = FieldModel>(property: string) {\n const field = new FieldInputDescriptor<EditorModel, FieldModel, FieldValue, ParentEditorModel>(property);\n this.addFieldDescriptor<FieldModel, FieldValue>(field);\n return field;\n }\n\n public addFields(...properties: (keyof EditorModel)[]): this {\n properties.forEach(p => this.addField(p));\n return this;\n }\n\n public addFieldAction(actionName: string): FieldActionDescriptor<EditorModel, ParentEditorModel> {\n const field = new FieldActionDescriptor<EditorModel, ParentEditorModel>(actionName);\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Adds lookup field.\n *\n * @param {Property} property - The property key of the editor.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, undefined, FieldValue>} - The field lookup descriptor.\n */\n public addFieldLookup<Property extends keyof EditorModel, LookupModel = NonNullable<EditorModel[Property]>, FieldValue = EditorModel[Property]>(\n property: Property,\n type?: TypeDescriptor<LookupModel>\n ) {\n return this.addFieldLookupUnsafe<LookupModel, FieldValue>(property as string, type);\n }\n\n /**\n * [UNSAFE] Adds lookup field.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property Model property name.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model (defines 2nd generic).\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, undefined, FieldValue>} - The field lookup descriptor.\n */\n public addFieldLookupUnsafe<LookupModel, FieldValue = LookupModel>(property: string, type?: TypeDescriptor<LookupModel>) {\n const field = new FieldLookupDescriptor<LookupModel, EditorModel, undefined, FieldValue, ParentEditorModel>(property, {\n type: type?.classType\n });\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Adds a field lookup with options value property for lookup model.\n *\n * @param {Property} property - The property key of the editor.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {LookupValueProperty} lookupOptionsValueProperty - The value property used as value in the lookup options.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam LookupValueProperty - The property of lookup model type.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, undefined, FieldValue>} - The field lookup descriptor.\n */\n public addFieldLookupWithOptionsValueProperty<\n Property extends keyof EditorModel,\n LookupModel,\n LookupValueProperty extends KeyofAndOfType<LookupModel, EditorModel[Property]>,\n FieldValue = EditorModel[Property]\n >(property: Property, type: TypeDescriptor<LookupModel>, lookupOptionsValueProperty: LookupValueProperty) {\n return this.addFieldLookupWithOptionsValuePropertyUnsafe<LookupModel, FieldValue>(property as string, type, lookupOptionsValueProperty as string);\n }\n\n /**\n * [UNSAFE] Adds a field lookup with options value property for lookup model.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {Property} property - The property key of the editor.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {LookupValueProperty} lookupOptionsValueProperty - The value property used as value in the lookup options.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam LookupValueProperty - The property of lookup model type.\n * @typeparam FieldValue - The value type of field on editor.\n * @typeparam ParentEditorModel - The value type of parent form.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, undefined, FieldValue, ParentEditorModel>} - The field lookup descriptor.\n */\n public addFieldLookupWithOptionsValuePropertyUnsafe<LookupModel, FieldValue = Nullable<IdType>>(\n property: string,\n type: TypeDescriptor<LookupModel>,\n lookupOptionsValueProperty: string\n ) {\n const field = new FieldLookupDescriptor<LookupModel, EditorModel, undefined, FieldValue, ParentEditorModel>(property, {\n type: type?.classType,\n optionsValueProperty: lookupOptionsValueProperty\n });\n this.addFieldDescriptor<LookupModel, FieldValue>(field);\n return field;\n }\n\n /**\n * Adds a field lookup with a data provider or service to the editor model.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldLookupProviderType<LookupModel, Service>} provider - The field lookup data provider or service.\n * @param {TypeDescriptor<LookupModel>} [type] - The type of lookup - if data provider is passed as previous parameter, type can be omitted. If service is provider, type parameter is proposed in favour of correct typing.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam Service - The lookup service type.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The field value type, defaults to the editor's property type.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} Created field lookup descriptor.\n */\n public addFieldLookupWithProvider<Property extends keyof EditorModel, Service, LookupModel = NonNullable<EditorModel[Property]>, FieldValue = EditorModel[Property]>(\n property: Property,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type?: TypeDescriptor<LookupModel>\n ) {\n return this.addFieldLookupWithProviderUnsafe<LookupModel, Service, FieldValue>(property as string, provider, type);\n }\n\n /**\n * [UNSAFE] Adds a field lookup with a data provider or service to the editor model.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property - The property key of the editor.\n * @param {FieldLookupProviderType<LookupModel, Service>} provider - The lookup provider or service for the field lookup.\n * @param {TypeDescriptor<LookupModel>?} type - Optional type descriptor for the field lookup.\n * @typeparam LookupModel - The field lookup model type.\n * @typeparam Service - The lookup service type.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor added to the instance.\n */\n public addFieldLookupWithProviderUnsafe<LookupModel, Service, FieldValue = LookupModel>(\n property: string,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type?: TypeDescriptor<LookupModel>\n ) {\n const cfg = fieldLookupGetProviderCfgObj(provider);\n const field = new FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel>(property, {\n type: type?.classType,\n ...cfg\n });\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Adds a field lookup with data provider or service and options value property for lookup model.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldLookupProviderType<FieldModel, Service>} provider - The lookup provider.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {LookupValueProperty} lookupOptionsValueProperty - The value property used as value in the lookup options.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam Service - The lookup service type.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam LookupValueProperty - The property of lookup model type.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel>} - The field lookup descriptor.\n */\n addFieldLookupWithProviderAndOptionsValueProperty<\n Property extends keyof EditorModel,\n Service,\n LookupModel,\n LookupValueProperty extends KeyofAndOfType<LookupModel, EditorModel[Property]>,\n FieldValue = EditorModel[Property]\n >(\n property: Property,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type: TypeDescriptor<LookupModel>,\n lookupOptionsValueProperty: LookupValueProperty\n ): FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel> {\n return this.addFieldLookupWithProviderAndOptionsValuePropertyUnsafe(property as string, provider, type, lookupOptionsValueProperty as string);\n }\n\n /**\n * [UNSAFE] Adds a field lookup with data provider or service and options value property for lookup model.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property - The property key of the editor.\n * @param {FieldLookupProviderType<FieldModel, Service>} provider - The lookup provider.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {string} lookupOptionsValueProperty - The value property used in the lookup options.\n * @typeparam Service - The service type.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel>} - The field lookup descriptor.\n */\n addFieldLookupWithProviderAndOptionsValuePropertyUnsafe<Service, LookupModel, FieldValue = LookupModel>(\n property: string,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type: TypeDescriptor<LookupModel>,\n lookupOptionsValueProperty: string\n ): FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel> {\n const cfg = fieldLookupGetProviderCfgObj(provider);\n const field = new FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel>(property, {\n type: type?.classType,\n optionsValueProperty: lookupOptionsValueProperty,\n ...cfg\n });\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldLookupEnum<Property extends keyof EditorModel, Enum extends NonNullable<EditorModel[Property]>>(\n property: keyof EditorModel,\n enumDesc: EnumDescriptor<Enum>,\n options?: Array<Enum>\n ) {\n return this.addFieldLookupEnumUnsafe<Enum>(property as string, enumDesc, options);\n }\n\n /**\n * Adds enum lookup field.\n * @param property Model's property name.\n * @param enumDesc Type of enum or enum descriptor.\n * @param options Provides subset of enum's available constants.\n */\n public addFieldLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n const field = new FieldLookupEnumDescriptor<Enum, EditorModel, ParentEditorModel>(property, enumDesc, options);\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Adds table/details/add/edit field for one-to-many (1:n) relations.\n * @param property Model's property name.\n * @param tableviewDescriptor Tableview descriptor for related model.\n */\n public addFieldManyEditor<Property extends keyof EditorModel, FieldModel = ArrayItemType<EditorModel[Property]>, FieldValue = EditorModel[Property]>(\n property: Property,\n tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, EditorModel>\n ) {\n return this.addFieldManyEditorUnsafe<FieldModel, FieldValue>(property as string, tableviewDescriptor);\n }\n\n /**\n * Adds table/details/add/edit field for one-to-many (1:n) relations (UNSAFE).\n * @param property Model's property name.\n * @param tableviewDescriptor Tableview descriptor for related model.\n */\n public addFieldManyEditorUnsafe<FieldModel, FieldValue = FieldModel[]>(\n property: string,\n tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, EditorModel>\n ): FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel> {\n const field = new FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>(property, tableviewDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyToManyEditor<Property extends keyof EditorModel, ServiceType, FieldModel = ArrayItemType<EditorModel[Property]>, FieldValue = EditorModel[Property]>(\n property: Property,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupDataProvider: ITableDataProvider<FieldModel, ServiceType>\n ) {\n return this.addFieldManyToManyEditorUnsafe<FieldModel, ServiceType, FieldValue>(property as string, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n }\n\n public addFieldManyToManyEditorUnsafe<FieldModel, ServiceType, FieldValue = FieldModel[]>(\n property: string,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupDataProvider: ITableDataProvider<FieldModel, ServiceType>\n ): FieldManyToManyEditorDescriptor<FieldModel, EditorModel, ServiceType, FieldValue, ParentEditorModel> {\n const cfg = fieldManyToManyGetProviderCfgObj(lookupDataProvider);\n const field = new FieldManyToManyEditorDescriptor<FieldModel, EditorModel, ServiceType, FieldValue, ParentEditorModel>(\n property,\n mainTableDescriptor,\n lookupTableDescriptor,\n {\n ...cfg\n }\n );\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Disables field on editor.\n * @param disabled\n */\n public withDisabled(disabled = true): this {\n this._disabled = disabled;\n return this;\n }\n\n /**\n * Adds group validator to editor.\n * @param name Name of the validation.\n * @param validator Field validator function.\n * @param message Field validation message.\n * @param opts Additional configuration for validation.\n */\n public withValidation<Value = EditorModel>(\n name: string,\n validator?: FormValidator<Value, ParentEditorModel>,\n message?: FormValidationMessage<Value, ParentEditorModel>,\n opts?: FieldValidationDescriptorOptsType<keyof EditorModel>\n ) {\n return this.withValidationUnsafe(name, validator, message, opts as FieldValidationDescriptorOptsType);\n }\n\n /**\n * Adds group validator to editor.\n * @param name Name of the validation.\n * @param validator Field validator function.\n * @param message Field validation message.\n * @param opts Additional configuration for validation.\n */\n public withValidationUnsafe<Value = EditorModel>(\n name: string,\n validator?: FormValidator<Value, ParentEditorModel>,\n message?: FormValidationMessage<Value, ParentEditorModel>,\n opts?: FieldValidationDescriptorOptsType\n ) {\n if (this._currentGroup) {\n this._currentGroup.withValidation(name, validator, message, opts);\n }\n return this;\n }\n\n public withAutoSave(enabled = true, autoSaveIdentifier?: string): this {\n this._autoSave = enabled;\n this._autoSaveIdentifier = autoSaveIdentifier;\n return this;\n }\n\n /**\n * Creates a copy of editor descriptor object.\n */\n public copy(): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n const editor = new EditorDescriptorInst<EditorModel, ParentEditorModel>(this.model.copy(), this.tableviewEditorType);\n\n editor._fields = this._fields.map(f => f.copy());\n const fieldsMap = editor.fields.reduce((map, field) => {\n map.set(field.property, field);\n return map;\n }, new Map<string, any>());\n\n for (const tabGroup of this._tabs) {\n const tabGroupCopy = tabGroup.copy(true);\n // set fields\n for (let i = 0; i < tabGroup.fields.length; i++) {\n const group = tabGroup.fields[i];\n const groupCopy = tabGroupCopy.fields[i];\n\n for (let j = 0; j < group.fields.length; j++) {\n const fieldCopy = fieldsMap.get(group.fields[j].property);\n if (!fieldCopy) {\n throw new CommonsInternalError(`Could not copy editor descriptor: field '${group.fields[j].property}' (tab '${tabGroup.name}', group ${group.name}').`);\n }\n groupCopy.addField(fieldCopy);\n }\n editor._groups.push(groupCopy);\n }\n editor._tabs.push(tabGroupCopy);\n }\n\n editor._currentTabGroup = editor._tabs.length > 0 ? editor._tabs[editor._tabs.length - 1] : undefined;\n if (editor._currentTabGroup) {\n editor._currentGroup = editor._currentTabGroup.fields.length > 0 ? editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1] : undefined;\n }\n\n editor._disabled = this._disabled;\n editor._autoSave = this._autoSave;\n editor._autoSaveIdentifier = this._autoSaveIdentifier;\n editor._isLocalized = this._isLocalized;\n editor._localizationLocaleProperty = this._localizationLocaleProperty;\n editor._localizationModel = this._localizationModel;\n editor._localizationLocalizationProperty = this._localizationLocalizationProperty;\n\n return editor;\n }\n\n /**\n * Created group from field group descriptor.\n * @param fieldGroup Field group descriptor.\n * @internal\n */\n public createFieldGroupDescriptor(fieldGroup: FieldGroupDescriptor<EditorModel, ParentEditorModel>): this {\n this.createDefaultTabGroup();\n this._currentGroup = fieldGroup;\n this._groups.push(fieldGroup);\n this._currentTabGroup?.addField(fieldGroup);\n return this;\n }\n\n /**\n * Creates tab group from tab group descriptor.\n * @param tabGroup Tab group descriptor.\n * @internal\n */\n protected createTabGroupDescriptor(tabGroup: FieldTabGroupDescriptor<EditorModel>): this {\n this._currentTabGroup = tabGroup;\n this._tabs.push(tabGroup);\n return this;\n }\n\n /**\n * Creates default field group.\n * @internal\n */\n private createDefaultGroup() {\n this.createDefaultTabGroup();\n if (this._currentTabGroup?.fields.length === 0) {\n this.createFieldGroup(EditorDescriptorInst.defaultGroupName, null);\n }\n }\n\n /**\n * Creates default tab group.\n * @internal\n */\n private createDefaultTabGroup() {\n if (this._tabs.length === 0) {\n this.createTabGroup(EditorDescriptorInst.defaultGroupName, 'general.general');\n }\n }\n\n /**\n * This function takes care of displaying correct/localized data in the editor\n * @param property property that tells us where on the model are localizations accessible\n * @param model Model for localizations\n * @param localeProperty property by which we find the locale\n */\n public localized<Property extends keyof EditorModel, LocalizationModel = ArrayItemType<EditorModel[Property]>>(\n property: Property,\n model: ModelDescriptor<LocalizationModel>,\n localeProperty: keyof LocalizationModel\n ): this {\n return this.localizedUnsafe(property as string, model, localeProperty as string);\n }\n\n public localizedUnsafe<LocalizationType>(property: string, model: ModelDescriptor<LocalizationType>, localeProperty: string): this {\n this._localizationLocalizationProperty = property as string;\n this._localizationModel = model;\n this._localizationLocaleProperty = localeProperty as string;\n this._isLocalized = true;\n\n return this;\n }\n\n public nextEvent(type: FormEventTypeEnum, component: IFormEditorComponent<any, any>, data?: FormEventData<EditorModel>) {\n this._eventsSubject.next({\n type: type,\n formComponent: component,\n form: component.form as FormGroup,\n data: data\n });\n }\n\n public get events$() {\n return this._eventsSubject.asObservable();\n }\n}\n","import {ClassAttributeDef, ClassType, CommonsInternalError, EnumType, TypeRegistry} from '@mediusinc/mng-commons/core';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum} from '@mediusinc/mng-commons/table/api';\n\nimport {EditorClassAttributeDef} from '../models/class-tableview-attribute.model';\nimport {FieldInputTypeEnum} from '../models/field.model';\n\n/**\n * converts string type to type enum, default is text\n * @param attributeType\n */\nexport function getFieldInputTypeFromClassAttributeDefType(attributeType: string): FieldInputTypeEnum {\n switch (attributeType) {\n case 'hidden':\n return FieldInputTypeEnum.Hidden;\n case 'label':\n return FieldInputTypeEnum.Label;\n case 'textarea':\n return FieldInputTypeEnum.Textarea;\n case 'number':\n return FieldInputTypeEnum.Number;\n case 'currency':\n return FieldInputTypeEnum.Currency;\n case 'switch':\n case 'boolean':\n return FieldInputTypeEnum.Switch;\n case 'radio':\n return FieldInputTypeEnum.Radio;\n case 'datepicker':\n return FieldInputTypeEnum.Datepicker;\n case 'mask':\n return FieldInputTypeEnum.Mask;\n case 'file':\n return FieldInputTypeEnum.File;\n case 'custom':\n return FieldInputTypeEnum.Custom;\n case 'text':\n default:\n return FieldInputTypeEnum.Text;\n }\n}\n\n/**\n * convert column type to equivalent field input type\n * @param type column type\n * @param displayType column display type\n */\nexport function getFieldInputTypeFromColumnType(type: ColumnTypeEnum, displayType?: ColumnDisplayTypeEnum): FieldInputTypeEnum {\n switch (type) {\n case ColumnTypeEnum.Number:\n return displayType === ColumnDisplayTypeEnum.Currency ? FieldInputTypeEnum.Currency : FieldInputTypeEnum.Number;\n case ColumnTypeEnum.Boolean:\n return FieldInputTypeEnum.Switch;\n case ColumnTypeEnum.Date:\n return FieldInputTypeEnum.Datepicker;\n case ColumnTypeEnum.Custom:\n return FieldInputTypeEnum.Custom;\n case ColumnTypeEnum.String:\n case ColumnTypeEnum.Enum:\n default:\n return FieldInputTypeEnum.Text;\n }\n}\n\nexport function expandClassAttributeDefWithEditorDef(attributes?: Array<ClassAttributeDef> | null): EditorClassAttributeDef[] {\n if (!attributes) {\n throw new CommonsInternalError('Class attribute definition is null, problem with TypeRegistry::findAttributesDefinitionByClassType?', {name: 'TableviewUtilsError'});\n }\n\n const typeRegistry = TypeRegistry.get();\n const editorClassAttributeDef: EditorClassAttributeDef[] = [];\n for (const attribute of attributes) {\n editorClassAttributeDef.push({\n name: attribute.name,\n baseName: attribute.baseName,\n type: attribute.type,\n subtype: attribute.subtype,\n fieldType: getFieldInputTypeFromClassAttributeDefType(attribute.type),\n classType: typeRegistry.findType(attribute.type) as ClassType<any>,\n enumType: typeRegistry.findEnum(attribute.type) as EnumType\n });\n }\n\n return editorClassAttributeDef;\n}\n\n/**\n * returns attributes from class type and extends to typed def with column and field enum type\n * @param type class type\n */\nexport function getEditorClassAttributeDef<T>(type: ClassType<T>): EditorClassAttributeDef[] {\n return expandClassAttributeDefWithEditorDef(TypeRegistry.get().findAttributesDefinitionByClassType(type));\n}\n","import {CommonsInternalError, EnumType, ILookupDataProvider, TypeRegistry} from '@mediusinc/mng-commons/core';\nimport {EnumDescriptor, enumModelGeneric} from '@mediusinc/mng-commons/model';\nimport {getColumnDisplayTypeFromColumnType, getColumnTypeFromClassAttributeDefType} from '@mediusinc/mng-commons/table/api';\n\nimport {EditorDescriptorInst} from '../descriptors/editor.descriptor';\nimport {AFieldDescriptor} from '../descriptors/field-base.descriptor';\nimport {FieldLookupDescriptor} from '../descriptors/field-lookup.descriptor';\nimport {FieldInputDescriptor} from '../descriptors/field.descriptor';\nimport {EditorClassAttributeDef} from '../models/class-tableview-attribute.model';\nimport {FieldInputTypeEnum} from '../models/field.model';\nimport {getEditorClassAttributeDef, getFieldInputTypeFromColumnType} from './class-attribute-converter';\n\n/**\n * Generates field based on attribute definition, used for auto model\n * @param descriptor Editor descriptor instance.\n * @param attribute Attribute definition.\n * @param field Optional, if defined will be replaced, otherwise new will be generated.\n * @param args Optional additional arguments mapped to filed type. Arguments depend on possible arguments on fields.\n * @internal\n */\nexport function upsertEditorFieldFromAttributeDef<T>(\n descriptor: EditorDescriptorInst<T, any>,\n attribute: EditorClassAttributeDef,\n field?: AFieldDescriptor<any, T>,\n ...args: any[]\n): AFieldDescriptor<any, T> {\n if (field == null) {\n field = descriptor.addFieldUnsafe(attribute.name);\n }\n\n if (field instanceof FieldInputDescriptor) {\n if (attribute.enumType) {\n return field.asRadioFromEnum(enumModelGeneric(attribute.enumType));\n } else {\n const tableColumnType = getColumnTypeFromClassAttributeDefType(attribute.type);\n const tableColumnDisplayType = getColumnDisplayTypeFromColumnType(tableColumnType, attribute.type);\n return field.asType(attribute.fieldType ?? getFieldInputTypeFromColumnType(tableColumnType, tableColumnDisplayType), ...args);\n }\n }\n\n return field;\n}\n\n/**\n * Modifies selected field by field property. For enums use {withFieldModifiedEnum} instead.\n * @param descriptor Editor descriptor.\n * @param property Model's property name.\n * @param fieldType new field type for selected field\n * @param args additional parameters for field\n */\nexport function modifyEditorClassAttributeFieldType<\n EditorModel,\n Property extends keyof EditorModel,\n FieldModel = NonNullable<EditorModel[Property]>,\n FieldValue = EditorModel[Property]\n>(\n descriptor: EditorDescriptorInst<EditorModel, any>,\n property: Property,\n fieldType: FieldInputTypeEnum,\n ...args: any[]\n): AFieldDescriptor<FieldModel, EditorModel, FieldValue> | null {\n return modifyEditorClassAttributeFieldTypeUnsafe<EditorModel, FieldModel, FieldValue>(descriptor, property as string, fieldType, ...args);\n}\n\nexport function modifyEditorClassAttributeFieldTypeUnsafe<EditorModel, FieldModel = any, FieldValue = FieldModel>(\n descriptor: EditorDescriptorInst<EditorModel, any>,\n property: string,\n fieldType: FieldInputTypeEnum,\n ...args: any[]\n): AFieldDescriptor<FieldModel, EditorModel, FieldValue> | null {\n if (!descriptor.model.type) {\n throw new CommonsInternalError(`withFieldModifiedType cannot be executed for property ${property}: Model type is not defined.`);\n }\n\n const attribute = getEditorClassAttributeDef(descriptor.model.type).find(attribute => attribute.name === property);\n if (attribute) {\n attribute.fieldType = fieldType;\n return upsertEditorFieldFromAttributeDef(\n descriptor,\n attribute,\n descriptor.fields.find(fi => fi.property === property),\n ...args\n );\n }\n\n return null;\n}\n\n/**\n * Modifies selected field with enum type.\n * @param descriptor Editor descriptor.\n * @param property Model's property name.\n * @param enumModel Enum descriptor.\n * @param values\n */\nexport function modifyEditorClassAttributeFieldEnum<\n EditorModel,\n Property extends keyof EditorModel,\n Enum extends NonNullable<EditorModel[Property]>,\n FieldModel = NonNullable<EditorModel[Property]>,\n FieldValue = EditorModel[Property]\n>(\n descriptor: EditorDescriptorInst<EditorModel, any>,\n property: Property,\n enumModel?: EnumDescriptor<Enum>,\n values?: Array<Enum>\n): AFieldDescriptor<FieldModel, EditorModel, FieldValue> | null {\n return modifyEditorClassAttributeFieldEnumUnsafe<EditorModel, Enum, FieldModel, FieldValue>(descriptor, property as string, enumModel, values);\n}\n\nexport function modifyEditorClassAttributeFieldEnumUnsafe<EditorModel, Enum = any, FieldModel = any, FieldValue = FieldModel>(\n descriptor: EditorDescriptorInst<EditorModel, any>,\n property: string,\n enumDesc?: EnumDescriptor<Enum>,\n values?: Array<Enum>\n): AFieldDescriptor<FieldModel, EditorModel, FieldValue> | null {\n if (!descriptor.model.type) {\n throw new CommonsInternalError(`withFieldModifiedEnum cannot be executed for property ${property}: Model type is not defined.`);\n }\n const attribute = getEditorClassAttributeDef(descriptor.model.type).find(a => a.name === property);\n if (attribute) {\n attribute.fieldType = FieldInputTypeEnum.Radio;\n const field = descriptor.fields.find(f => f.property === property);\n if (field && field instanceof FieldInputDescriptor) {\n field.asRadioFromEnum(enumDesc ?? enumModelGeneric(TypeRegistry.get().findEnum(attribute.type) as EnumType), values);\n }\n return field ?? null;\n }\n\n return null;\n}\n\n/**\n * Modifies selected field with lookup field.\n * @param descriptor Editor descriptor.\n * @param property Model's property name.\n * @param lookupProvider provider to be added to field\n * @param titleProperty\n */\nexport function modifyEditorFieldLookup<\n EditorModel,\n Property extends keyof EditorModel,\n Service,\n FieldModel = NonNullable<EditorModel[Property]>,\n FieldValue = EditorModel[Property]\n>(\n descriptor: EditorDescriptorInst<EditorModel, any>,\n property: Property,\n lookupProvider: ILookupDataProvider<FieldModel, Service>,\n titleProperty?: keyof FieldModel\n): FieldLookupDescriptor<FieldModel, EditorModel, Service, FieldValue> {\n return modifyEditorFieldLookupUnsafe<EditorModel, Service, FieldModel, FieldValue>(descriptor, property as string, lookupProvider, titleProperty as string);\n}\n\nexport function modifyEditorFieldLookupUnsafe<EditorModel, Service, FieldModel = any, FieldValue = FieldModel>(\n descriptor: EditorDescriptorInst<EditorModel, any>,\n property: string,\n lookupProvider: ILookupDataProvider<FieldModel, Service>,\n titleProperty?: string\n): FieldLookupDescriptor<FieldModel, EditorModel, Service, FieldValue> {\n descriptor.removeFieldUnsafe(property);\n const field = descriptor.addFieldLookupWithProviderUnsafe<FieldModel, Service, FieldValue>(property, lookupProvider).asAutocomplete();\n\n if (titleProperty) {\n field.withOptionsLabelPropertyUnsafe(titleProperty);\n }\n\n return field;\n}\n","import {ClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, ModelDescriptorCreateOpts, TypeDescriptor, model} from '@mediusinc/mng-commons/model';\n\nimport {getEditorClassAttributeDef} from '../helpers/class-attribute-converter';\nimport {upsertEditorFieldFromAttributeDef} from '../helpers/editor-descriptor-helpers';\nimport {EditorClassAttributeDef} from '../models/class-tableview-attribute.model';\nimport {TableviewEditorTypeEnum} from '../models/editor.model';\nimport {EditorDescriptorInst} from './editor.descriptor';\n\nexport class EditorDescriptor extends EditorDescriptorInst<any> {\n protected constructor() {\n super(ModelDescriptor.create());\n }\n\n public static create<EditorModel, ParentEditorModel = undefined>(\n idProperty?: keyof EditorModel,\n titleProperty?: keyof EditorModel,\n i18nBaseKey?: string | ClassType<unknown>,\n tableviewEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n return editorDescriptor<EditorModel, ParentEditorModel>({id: idProperty, title: titleProperty, i18nBase: i18nBaseKey, tableviewEditorType: tableviewEditorType});\n }\n\n public static fromClass<EditorModel, ParentEditorModel = undefined>(\n type: ClassType<EditorModel>,\n idProperty?: keyof EditorModel,\n titleProperty?: keyof EditorModel,\n i18nBaseKey?: ClassType<unknown> | string,\n tableviewEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n return editorDescriptorFromClass<EditorModel, ParentEditorModel>(type, {\n id: idProperty,\n title: titleProperty,\n i18nBase: i18nBaseKey,\n tableviewEditorType: tableviewEditorType\n });\n }\n\n public static fromModel<EditorModel, ParentEditorModel = undefined>(\n model: ModelDescriptor<EditorModel>,\n tableviewEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n return editorDescriptor<EditorModel, ParentEditorModel>(model, {tableviewEditorType: tableviewEditorType});\n }\n\n /**\n * Creates editor descriptor automatically based on openapi model's attributes definition which is automatically extracted. All fields will be included.\n * @param type Model's class.\n * @param idProperty Id property representing model (optional).\n * @param titleProperty Title property representing model (optional). If not provided, it will be automatically chosen.\n * @param tableEditorType Type of editor in tableview (add, edit, view or none).\n */\n public static fromClassWithAutoAttrsDef<EditorModel, ParentEditorModel = undefined>(\n type: ClassType<EditorModel>,\n idProperty?: keyof EditorModel,\n titleProperty?: keyof EditorModel,\n tableEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n return EditorDescriptor.fromClassWithCustomAttrsDef<EditorModel, ParentEditorModel>(type, getEditorClassAttributeDef(type), idProperty, titleProperty, tableEditorType);\n }\n\n /**\n * Creates editor descriptor automatically based on openapi model's attributes definition provided in parameters. Only fields for provided attributes will be included.\n * @param type Model's class.\n * @param attributes List of attribute definitions from which fields should be created.\n * @param idProperty Id property representing model (optional).\n * @param titleProperty Title property representing model (optional). If not provided, it will be automatically chosen.\n * @param tableviewEditorType Type of editor in tableview (add, edit, view or none).\n */\n public static fromClassWithCustomAttrsDef<EditorModel, ParentEditorModel = undefined>(\n type: ClassType<EditorModel>,\n attributes: EditorClassAttributeDef[],\n idProperty?: keyof EditorModel,\n titleProperty?: keyof EditorModel,\n tableviewEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n return editorDescriptorFromClassAttrsDef<EditorModel, ParentEditorModel>(type, attributes, {\n id: idProperty,\n title: titleProperty,\n tableviewEditorType: tableviewEditorType\n });\n }\n}\n\nexport type EditorDescriptorCreateBaseOptsType = {\n tableviewEditorType?: TableviewEditorTypeEnum;\n};\nexport type EditorDescriptorCreateOptsType<EditorModel> = ModelDescriptorCreateOpts<EditorModel> & EditorDescriptorCreateBaseOptsType;\n\nexport function editorDescriptor<EditorModel, ParentEditorModel = undefined>(): EditorDescriptorInst<EditorModel, ParentEditorModel>;\nexport function editorDescriptor<EditorModel, ParentEditorModel = undefined>(\n opts: EditorDescriptorCreateOptsType<EditorModel>\n): EditorDescriptorInst<EditorModel, ParentEditorModel>;\nexport function editorDescriptor<EditorModel, ParentEditorModel = undefined>(\n model: ModelDescriptor<EditorModel>,\n opts?: EditorDescriptorCreateBaseOptsType\n): EditorDescriptorInst<EditorModel, ParentEditorModel>;\nexport function editorDescriptor<EditorModel, ParentEditorModel = undefined>(\n type: TypeDescriptor<EditorModel>,\n opts?: EditorDescriptorCreateOptsType<EditorModel>\n): EditorDescriptorInst<EditorModel, ParentEditorModel>;\nexport function editorDescriptor<EditorModel, ParentEditorModel = undefined>(\n typeOrModelOrClassOrOpts?: TypeDescriptor<EditorModel> | ModelDescriptor<EditorModel> | EditorDescriptorCreateOptsType<EditorModel>,\n opts?: EditorDescriptorCreateOptsType<EditorModel>\n) {\n if (typeOrModelOrClassOrOpts == null) {\n return new EditorDescriptorInst<EditorModel, ParentEditorModel>(model<EditorModel>(), opts?.tableviewEditorType);\n } else if (typeOrModelOrClassOrOpts instanceof TypeDescriptor) {\n return new EditorDescriptorInst<EditorModel, ParentEditorModel>(\n model<EditorModel>((opts as EditorDescriptorCreateOptsType<EditorModel> | undefined) ?? {}),\n opts?.tableviewEditorType\n );\n } else if (typeOrModelOrClassOrOpts instanceof ModelDescriptor) {\n return new EditorDescriptorInst<EditorModel, ParentEditorModel>(typeOrModelOrClassOrOpts, opts?.tableviewEditorType);\n } else {\n // this could have autoGenerated if model descriptor is class\n return new EditorDescriptorInst<EditorModel, ParentEditorModel>(model<EditorModel>(typeOrModelOrClassOrOpts), typeOrModelOrClassOrOpts?.tableviewEditorType);\n }\n}\n\nexport function editorDescriptorFromClass<EditorModel, ParentEditorModel = undefined>(\n type: ClassType<EditorModel>,\n opts?: EditorDescriptorCreateOptsType<EditorModel>\n): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n return new EditorDescriptorInst<EditorModel, ParentEditorModel>(model<EditorModel>(type as ClassType<EditorModel>, opts), opts?.tableviewEditorType);\n}\n\n/**\n * Generates descriptor based on type attribute definition\n * @param type class type\n * @param attributes\n * @param opts\n */\nexport function editorDescriptorFromClassAttrsDef<EditorModel, ParentEditorModel = undefined>(\n type: ClassType<EditorModel>,\n attributes?: EditorClassAttributeDef[],\n opts?: EditorDescriptorCreateOptsType<EditorModel>\n): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n const descriptor = new EditorDescriptorInst<EditorModel, ParentEditorModel>(model(type, opts), opts?.tableviewEditorType);\n (attributes ?? getEditorClassAttributeDef(type))\n .filter(attr => !attr.type.includes('Set') && !attr.type.includes('Array'))\n .forEach(attr => upsertEditorFieldFromAttributeDef(descriptor, attr));\n return descriptor;\n}\n","import {AbstractControl, FormControl, FormGroup} from '@angular/forms';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {IFormEditorComponent} from './form-editor.interface';\nimport {CommonsFormlyFieldConfig} from './formly-field.model';\n\nexport interface FormEditorSubmitEvent<Item> {\n formItem: Item;\n success: boolean;\n}\n\nexport enum FormFieldEventTypeEnum {\n ComponentLifecycle = 'ComponentLifecycle',\n ValueChange = 'ValueChange',\n DataProvider = 'DataProvider',\n DialogLifecycle = 'DialogLifecycle',\n RowReorder = 'RowReorder',\n Other = 'Other'\n}\n\nexport enum FormEventTypeEnum {\n ComponentLifecycle = 'ComponentLifecycle',\n ValueChange = 'ValueChange',\n Submit = 'Submit',\n Other = 'Other'\n}\n\nexport class FormFieldEventComponentSubtype {\n public static readonly ON_INIT = 'Component.OnInit';\n public static readonly ON_VIEW_INIT = 'Component.OnViewInit';\n public static readonly ON_CONTENT_INIT = 'Component.OnContentInit';\n public static readonly ON_DESTROY = 'Component.OnDestroy';\n}\n\nexport class FormFieldEventDialogSubtype {\n public static readonly VISIBILITY = 'Dialog.Visibility';\n public static readonly TABLE_CAPTION_COMPONENT_INSTANCE = 'Dialog.MngTable.CaptionComponentInstance';\n public static readonly TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE = 'Dialog.MngTable.ColumnActionsComponentInstance';\n}\n\nexport interface FormFieldEventData<FieldModel, EditorModel> {\n eventSubtype?: string;\n value?: FieldModel;\n formValue?: EditorModel;\n [key: string]: any;\n}\n\nexport interface FormEventData<EditorModel> {\n eventSubtype?: string;\n value?: EditorModel; // direct value from form.valueChanges, disabled field values and setters are not included\n /**\n * @deprecated Use event's ${formComponent.getFormValue()} instead.\n */\n formValue?: () => EditorModel; // function that returns calculated form value\n submitValid?: boolean; // true if form is valid\n submitValue?: EditorModel; // value on submit\n [key: string]: any;\n}\n\nexport interface FormFieldEvent<FieldValue, FormValue, ParentFormValue = undefined> {\n type: FormFieldEventTypeEnum;\n fieldComponent?: FieldType<CommonsFormlyFieldConfig<FieldValue, FormValue, ParentFormValue>>;\n formComponent?: IFormEditorComponent<FormValue, ParentFormValue>;\n fieldFormControl: FormControl<FieldValue>;\n form: FormGroup<{[K in keyof FormValue]: AbstractControl<FormValue[K]>}>;\n fieldFormlyConfig: CommonsFormlyFieldConfig<FieldValue, FormValue, ParentFormValue>;\n data?: FormFieldEventData<FieldValue, FormValue>;\n}\n\nexport interface FormEvent<FormValue, ParentFormValue = undefined> {\n type: FormEventTypeEnum;\n formComponent?: IFormEditorComponent<FormValue, ParentFormValue>;\n form: FormGroup<{[K in keyof FormValue]: AbstractControl<FormValue[K]>}>;\n data?: FormEventData<FormValue>;\n}\n\nexport interface EditorResetEvent<Item> {\n emitEvent?: boolean;\n fetch?: boolean; // if item should be re-fetched again through data provider\n item?: Item; // if present, item value will be used to reset form\n fields?: Partial<Item>;\n data?: {\n [key: string]: any;\n };\n}\n","import {Directive, Input} from '@angular/core';\nimport {AbstractControl, FormControl, FormGroup} from '@angular/forms';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {CommonsFormlyFieldConfig, CommonsFormlyFieldProps} from './formly-field.model';\nimport {CommonsFormlyFormOptions, CommonsFormlyFormState} from './formly-options.model';\n\n@Directive()\nexport abstract class AFormlyCustomFieldComponent<Value, FormValue, ParentFormValue = undefined> extends FieldType<CommonsFormlyFieldConfig<Value, FormValue, ParentFormValue>> {\n @Input('field') override field!: CommonsFormlyFieldConfig<Value, FormValue, ParentFormValue>;\n @Input('model') _model!: Value;\n @Input('form') _form!: FormGroup<{[K in keyof FormValue]: AbstractControl<FormValue[K]>}>;\n @Input('options') _options!: CommonsFormlyFormOptions<FormValue>;\n @Input('key') _key!: string | number | (string | number)[];\n @Input('formControl') _formControl!: FormControl<Value>;\n @Input('props') _props!: CommonsFormlyFieldProps<Value, FormValue, ParentFormValue>;\n @Input('showError') _showError!: boolean;\n @Input('id') _id!: string;\n @Input('formState') _formState!: CommonsFormlyFormState<FormValue>;\n\n override get model() {\n return this._model;\n }\n\n override get form() {\n return this._form;\n }\n\n override get options() {\n return this._options;\n }\n\n override get key() {\n return this._key;\n }\n\n override get formControl() {\n return this._formControl;\n }\n\n override get props() {\n return this._props;\n }\n\n override get showError() {\n return this._showError;\n }\n\n override get id() {\n return this._id;\n }\n\n override get formState() {\n return this._formState;\n }\n}\n","import {ClassOptType, DataListParams, DataProviderInst, ServiceClassOptType} from '@mediusinc/mng-commons/core';\nimport {ITableDataProvider, TableDataProviderGetAllEagerFnType, TableDataProviderGetAllFnType, TableDataProviderInst, TableReloadEvent} from '@mediusinc/mng-commons/table/api';\n\nimport {\n EditorDataProviderCreateFnType,\n EditorDataProviderDeleteFnType,\n EditorDataProviderFetchFnType,\n EditorDataProviderInst,\n EditorDataProviderUpdateFnType,\n IEditorDataProvider\n} from '../../editor/data-providers/editor.data-provider';\nimport {EditorResetEvent} from '../../editor/models/form-editor.event';\n\nexport type ITableviewDataProvider<\n Model = any,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassOptType<Model>,\n ServiceClass = ServiceClassOptType<Service>\n> = IEditorDataProvider<Model, Service, ModelClass, ServiceClass> & ITableDataProvider<Model, Service, Sorts, Filters, ModelClass, ServiceClass>;\n\nexport class TableviewDataProviderInst<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassOptType<Model>,\n ServiceClass = ServiceClassOptType<Service>\n >\n extends DataProviderInst<Model, Service, ModelClass, ServiceClass>\n implements ITableviewDataProvider<Model, Service, Sorts, Filters, ModelClass, ServiceClass>\n{\n protected readonly editorDataProvider: EditorDataProviderInst<Model, Service, ModelClass, ServiceClass>;\n protected readonly tableDataProvider: TableDataProviderInst<Model, Service, Sorts, Filters, ModelClass, ServiceClass>;\n\n public constructor(type: ModelClass, serviceType: ServiceClass) {\n super(type, serviceType);\n this.editorDataProvider = new EditorDataProviderInst<Model, Service, ModelClass, ServiceClass>(type, serviceType);\n this.tableDataProvider = new TableDataProviderInst<Model, Service, Sorts, Filters, ModelClass, ServiceClass>(type, serviceType);\n }\n\n get isLazy() {\n return this.tableDataProvider.isLazy;\n }\n\n get tableReload$() {\n return this.tableDataProvider.tableReload$;\n }\n\n get editorReset$() {\n return this.editorDataProvider.editorReset$;\n }\n\n get getAll() {\n return this.tableDataProvider.getAll;\n }\n\n get fetch() {\n return this.editorDataProvider.fetch;\n }\n\n get create() {\n return this.editorDataProvider.create;\n }\n\n get update() {\n return this.editorDataProvider.update;\n }\n\n get delete() {\n return this.editorDataProvider.delete;\n }\n\n withGetAll(fn: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters>): this {\n this.tableDataProvider.withGetAll(fn);\n return this;\n }\n\n withGetAllEagerly(fn: TableDataProviderGetAllEagerFnType<Model, Service>): this {\n this.tableDataProvider.withGetAllEagerly(fn);\n return this;\n }\n\n withFetch(fn: EditorDataProviderFetchFnType<Model, Service>): this {\n this.editorDataProvider.withFetch(fn);\n return this;\n }\n\n withCreate(fn?: EditorDataProviderCreateFnType<Model, Service>): this {\n this.editorDataProvider.withCreate(fn);\n return this;\n }\n\n withUpdate(fn?: EditorDataProviderUpdateFnType<Model, Service>): this {\n this.editorDataProvider.withUpdate(fn);\n return this;\n }\n\n withDelete(fn?: EditorDataProviderDeleteFnType<Model, Service>): this {\n this.editorDataProvider.withDelete(fn);\n return this;\n }\n\n /**\n * @deprecated Use ${reloadTable} instead.\n */\n getAllReload(params?: DataListParams<Sorts, Filters>): void {\n this.tableDataProvider.getAllReload(params);\n }\n\n reloadTable(event?: TableReloadEvent<Sorts, Filters>): void {\n this.tableDataProvider.reloadTable(event);\n }\n\n resetEditor(event?: EditorResetEvent<Model>): void {\n this.editorDataProvider.resetEditor(event);\n }\n}\n\nexport class DynamicTableviewDataProviderInst<Service = any, ServiceClass = ServiceClassOptType<Service>> extends TableviewDataProviderInst<\n any,\n Service,\n any,\n any,\n undefined,\n ServiceClass\n> {\n public constructor(serviceType: ServiceClass) {\n super(undefined, serviceType);\n }\n}\n","import {ClassType, ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {DynamicTableviewDataProviderInst, TableviewDataProviderInst} from './tableview.data-provider';\n\nexport class TableviewDataProvider extends TableviewDataProviderInst<any> {\n protected constructor() {\n super(undefined, undefined);\n }\n\n public static create<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(): TableviewDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined> {\n return tableviewDataProvider<Model, Sorts, Filters>();\n }\n\n public static fromClass<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>\n ): TableviewDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined> {\n return tableviewDataProviderFromClass<Model, Sorts, Filters>(type);\n }\n\n public static fromClassWithService<Model, Service, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ): TableviewDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>> {\n return tableviewDataProviderFromClass<Model, Service, Sorts, Filters>(type, serviceType);\n }\n\n public static fromService<Service, Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n serviceType: ServiceClassType<Service>\n ): TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>> {\n return tableviewDataProviderWithService<Service, Model, Sorts, Filters>(serviceType);\n }\n}\n\nexport type TableviewDataProviderCreateOptsType<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel> = {\n filtersType?: TypeDescriptor<Filters>;\n sortsType?: TypeDescriptor<Sorts>;\n};\n\nexport function tableviewDataProvider<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(): TableviewDataProviderInst<\n Model,\n undefined,\n Sorts,\n Filters,\n undefined,\n undefined\n>;\nexport function tableviewDataProvider<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: TypeDescriptor<Model>,\n opts?: TableviewDataProviderCreateOptsType<Model, Sorts, Filters>\n): TableviewDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined>;\nexport function tableviewDataProvider<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: TypeDescriptor<Model>,\n serviceType: ServiceClassType<Service>,\n opts?: TableviewDataProviderCreateOptsType<Model, Sorts, Filters>\n): TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>;\nexport function tableviewDataProvider<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model, ServiceClass = ServiceClassType<Service>>(\n type?: TypeDescriptor<Model>,\n serviceTypeOrOpts?: ServiceClass | TableviewDataProviderCreateOptsType<Model, Sorts, Filters>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n opts?: TableviewDataProviderCreateOptsType<Model, Sorts, Filters>\n) {\n if (serviceTypeOrOpts === undefined || typeof serviceTypeOrOpts === 'function') {\n return new TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClass>(undefined, serviceTypeOrOpts as ServiceClass);\n } else {\n return new TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClass>(undefined, undefined as ServiceClass);\n }\n}\n\nexport function tableviewDataProviderWithService<Service, Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n serviceType: ServiceClassType<Service>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n opts?: TableviewDataProviderCreateOptsType<Model, Sorts, Filters>\n): TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>> {\n return new TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>(undefined, serviceType);\n}\n\nexport function tableviewDataProviderFromClass<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>\n): TableviewDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined>;\nexport function tableviewDataProviderFromClass<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n): TableviewDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>>;\nexport function tableviewDataProviderFromClass<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model, ServiceClass = ServiceClassType<Service>>(\n type: ClassType<Model>,\n serviceType?: ServiceClass\n) {\n return new TableviewDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClass>(type, serviceType as ServiceClass);\n}\n\nexport function tableviewDataProviderFromModel<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model, ModelClass = ClassType<Model>>(\n model: ModelDescriptor<Model, ModelClass>,\n opts?: TableviewDataProviderCreateOptsType<Model, Sorts, Filters>\n): TableviewDataProviderInst<Model, undefined, Sorts, Filters, ModelClass, undefined>;\nexport function tableviewDataProviderFromModel<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model, ModelClass = ClassType<Model>>(\n model: ModelDescriptor<Model, ModelClass>,\n serviceClass: ServiceClassType<Service>,\n opts?: TableviewDataProviderCreateOptsType<Model, Sorts, Filters>\n): TableviewDataProviderInst<Model, Service, Sorts, Filters, ModelClass, ServiceClassType<Service>>;\nexport function tableviewDataProviderFromModel<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassType<Model>,\n ServiceClass = ServiceClassType<Service>\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n>(model: ModelDescriptor<Model, ModelClass>, serviceTypeOrOpts?: ServiceClass, opts?: TableviewDataProviderCreateOptsType<Model, Sorts, Filters>) {\n return typeof serviceTypeOrOpts === 'function'\n ? new TableviewDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>>(\n model.type as ClassType<Model>,\n serviceTypeOrOpts as ServiceClassType<Service>\n )\n : new TableviewDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined>(model.type as ClassType<Model>, undefined);\n}\n\nexport class DynamicTableviewDataProvider extends DynamicTableviewDataProviderInst {\n protected constructor() {\n super(undefined);\n }\n\n public static create(): DynamicTableviewDataProviderInst<undefined, undefined> {\n return tableviewDynamicDataProvider();\n }\n\n public static fromService<Service>(serviceType: ServiceClassType<Service>): DynamicTableviewDataProviderInst<Service, ServiceClassType<Service>> {\n return tableviewDynamicDataProvider(serviceType);\n }\n}\n\nexport function tableviewDynamicDataProvider(): DynamicTableviewDataProviderInst<undefined, undefined>;\nexport function tableviewDynamicDataProvider<Service>(serviceType: ServiceClassType<Service>): DynamicTableviewDataProviderInst<Service, ServiceClassType<Service>>;\nexport function tableviewDynamicDataProvider<Service, ServiceClass = ServiceClassType<Service>>(\n serviceType?: ServiceClass\n): DynamicTableviewDataProviderInst<Service, ServiceClass> {\n return new DynamicTableviewDataProviderInst<Service, ServiceClass>(serviceType as ServiceClass);\n}\n","import {ArrayItemType, EnumConstantType, ILookupDataProvider, ITableviewDescriptor, IdType, KeyofAndOfType, Nullable} from '@mediusinc/mng-commons/core';\nimport {FilterDescriptor, FilterDisplayTypeEnum} from '@mediusinc/mng-commons/filter';\nimport {EnumDescriptor, ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\nimport {ColumnDescriptor, IColumnsManageInterface, ITableDataProvider, TableDescriptorInst, TableDynamicDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {FieldActionDescriptor} from '../../editor/descriptors/field-action.descriptor';\nimport {AFieldDescriptor} from '../../editor/descriptors/field-base.descriptor';\nimport {FieldLookupDescriptor, FieldLookupProviderType} from '../../editor/descriptors/field-lookup.descriptor';\nimport {FieldValidationDescriptorOptsType} from '../../editor/descriptors/field-validation.descriptor';\nimport {FieldInputDescriptorType} from '../../editor/descriptors/field.descriptor';\nimport {IFieldsManageInterface} from '../../editor/models/editor-fields.model';\nimport {TableviewEditorTypeEnum} from '../../editor/models/editor.model';\nimport {FormValidationMessage, FormValidator} from '../../editor/models/field-validation.model';\n\nexport class TableviewDescriptorInst<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel, ParentEditorModel = undefined>\n implements\n ITableviewDescriptor<TableviewModel, Sorts, Filters, ParentEditorModel>,\n IColumnsManageInterface<TableviewModel, Sorts, Filters>,\n IFieldsManageInterface<TableviewModel, ParentEditorModel>\n{\n private readonly _model: ModelDescriptor<TableviewModel>;\n\n protected _table: TableDescriptorInst<TableviewModel, Sorts, Filters>;\n protected _detailsEditor: EditorDescriptorInst<TableviewModel, ParentEditorModel>;\n protected _addEditor: EditorDescriptorInst<TableviewModel, ParentEditorModel>;\n protected _editEditor: EditorDescriptorInst<TableviewModel, ParentEditorModel>;\n\n protected _isLocalized = false;\n\n public constructor(model: ModelDescriptor<TableviewModel>) {\n this._model = model;\n this._table = new TableDescriptorInst<TableviewModel, Sorts, Filters>(model);\n this._table.withTitle(`${this._model.i18nBaseKey}.name`);\n this._detailsEditor = new EditorDescriptorInst<TableviewModel, ParentEditorModel>(model, TableviewEditorTypeEnum.Details);\n this._detailsEditor.withDisabled();\n this._addEditor = new EditorDescriptorInst<TableviewModel, ParentEditorModel>(model, TableviewEditorTypeEnum.Add);\n this._editEditor = new EditorDescriptorInst<TableviewModel, ParentEditorModel>(model, TableviewEditorTypeEnum.Edit);\n }\n\n public get table() {\n return this._table;\n }\n\n public get detailsEditor() {\n return this._detailsEditor;\n }\n\n public get addEditor() {\n return this._addEditor;\n }\n\n public get editEditor() {\n return this._editEditor;\n }\n\n public get model() {\n return this._model;\n }\n\n public isLocalized() {\n return this._isLocalized;\n }\n\n public withTableDescriptor(descriptor: TableDescriptorInst<TableviewModel, Sorts, Filters>): this {\n this._table = descriptor;\n return this;\n }\n\n public withEditorDescriptors(descriptor: EditorDescriptorInst<TableviewModel, ParentEditorModel>): this {\n this._detailsEditor = descriptor;\n this._editEditor = descriptor;\n this._addEditor = descriptor;\n return this;\n }\n\n public withDetailsDescriptor(descriptor: EditorDescriptorInst<TableviewModel, ParentEditorModel>): this {\n this._detailsEditor = descriptor;\n return this;\n }\n\n public withAddDescriptor(descriptor: EditorDescriptorInst<TableviewModel, ParentEditorModel>): this {\n this._addEditor = descriptor;\n return this;\n }\n\n public withEditDescriptor(descriptor: EditorDescriptorInst<TableviewModel, ParentEditorModel>): this {\n this._editEditor = descriptor;\n return this;\n }\n\n /**\n * creates new copy of editor descriptor and makes it disabled\n * usable in combination with this::withEditorDescriptors, where detailsDescriptor is made non-disabled\n * @param type which editor type to set to disabled\n */\n public withDisabledEditorDescriptor(type = TableviewEditorTypeEnum.Details): this {\n if (type === TableviewEditorTypeEnum.Edit) {\n this._editEditor = this._editEditor.copy().withDisabled();\n } else if (type === TableviewEditorTypeEnum.Details) {\n this._detailsEditor = this._detailsEditor.copy().withDisabled();\n } else if (type === TableviewEditorTypeEnum.Add) {\n this._addEditor = this._addEditor.copy().withDisabled();\n }\n return this;\n }\n\n /**\n * @deprecated Use {table.withTitle} directly\n * @param title\n */\n public withTableTitle(title: string | undefined): this {\n this._table.withTitle(title);\n return this;\n }\n\n public withValidation<Value = TableviewModel>(\n name: string,\n expression: FormValidator<Value, ParentEditorModel>,\n message?: FormValidationMessage<Value, ParentEditorModel>,\n opts?: FieldValidationDescriptorOptsType<keyof TableviewModel>\n ): this {\n return this.withValidationUnsafe(name, expression, message, opts as FieldValidationDescriptorOptsType);\n }\n\n public withValidationUnsafe<Value = TableviewModel>(\n name: string,\n expression: FormValidator<Value, ParentEditorModel>,\n message?: FormValidationMessage<Value, ParentEditorModel>,\n opts?: FieldValidationDescriptorOptsType\n ): this {\n this._detailsEditor.withValidationUnsafe<Value>(name, expression, message, opts);\n this._addEditor.withValidationUnsafe<Value>(name, expression, message, opts);\n this._editEditor.withValidationUnsafe<Value>(name, expression, message, opts);\n return this;\n }\n\n public getColumn<Property extends keyof TableviewModel, ColumnModel = NonNullable<TableviewModel[Property]>, ColumnValue = TableviewModel[Property]>(property: Property) {\n return this._table.getColumn<Property, ColumnModel, ColumnValue>(property);\n }\n\n public getColumnUnsafe<ColumnModel = any, ColumnValue = ColumnModel>(property: string) {\n return this._table.getColumnUnsafe<ColumnModel, ColumnValue>(property);\n }\n\n public removeColumn(property: keyof TableviewModel): void {\n this._table.removeColumn(property);\n }\n\n public removeColumnUnsafe(property: string): void {\n this._table.removeColumnUnsafe(property);\n }\n\n public withColumn<ColumnModel, ColumnValue = ColumnModel>(column: ColumnDescriptor<ColumnModel, TableviewModel, ColumnValue>): this {\n this._table.withColumn<ColumnModel, ColumnValue>(column);\n return this;\n }\n\n public addColumn<Property extends keyof TableviewModel>(property: Property): ColumnDescriptor<NonNullable<TableviewModel[Property]>, TableviewModel, TableviewModel[Property]> {\n return this._table.addColumn(property);\n }\n\n public addColumnEnum<PropertyKey extends keyof TableviewModel, Enum extends NonNullable<TableviewModel[PropertyKey]>>(property: PropertyKey, enumDesc: EnumDescriptor<Enum>) {\n return this._table.addColumnEnum(property, enumDesc);\n }\n\n public addColumnUnsafe<ColumnModel = any>(property: string): ColumnDescriptor<ColumnModel, TableviewModel> {\n return this._table.addColumnUnsafe(property);\n }\n\n public withColumns(...properties: (keyof TableviewModel)[]): this {\n this._table.withColumns(...properties);\n return this;\n }\n\n public getSort(property: Sorts) {\n return this._table.getSort(property);\n }\n\n public getSortUnsafe(property: string) {\n return this._table.getSortUnsafe(property);\n }\n\n public removeSort(property: Sorts) {\n this._table.removeSort(property);\n }\n\n public removeSortUnsafe(property: string) {\n this._table.removeSortUnsafe(property);\n }\n\n public addSort(property: Sorts, isDefault = false, ascending?: boolean) {\n return this._table.addSort(property, isDefault, ascending);\n }\n\n public addSortUnsafe(property: string, isDefault = false, ascending?: boolean) {\n return this._table.addSortUnsafe(property, isDefault, ascending);\n }\n\n public withSort(property: Sorts, isDefault = false, ascending?: boolean): this {\n this._table.withSort(property, isDefault, ascending);\n return this;\n }\n\n public withSortUnsafe(property: string, isDefault = false, ascending?: boolean): this {\n this._table.withSortUnsafe(property, isDefault, ascending);\n return this;\n }\n\n public withDefaultSort(property: Sorts, ascending?: boolean, order?: number, enabled?: boolean): this {\n this._table.withDefaultSort(property, ascending, order, enabled);\n return this;\n }\n\n public withDefaultSortUnsafe(property: string, ascending?: boolean, order?: number, enabled?: boolean): this {\n this._table.withDefaultSortUnsafe(property, ascending, order, enabled);\n return this;\n }\n\n public withSorts(...properties: Sorts[]): this {\n this._table.withSorts(...properties);\n return this;\n }\n\n public withSortsUnsafe(...properties: string[]): this {\n this._table.withSortsUnsafe(...properties);\n return this;\n }\n\n public getFilter<FilterModel = Filters extends keyof TableviewModel ? NonNullable<TableviewModel[Filters]> : any>(property: Filters) {\n return this._table.getFilter<FilterModel>(property);\n }\n\n public getFilterUnsafe<FilterModel = any>(property: string) {\n return this._table.getFilterUnsafe<FilterModel>(property);\n }\n\n public removeFilter(property: Filters) {\n this._table.removeFilter(property);\n }\n\n public removeFilterUnsafe(property: string) {\n this._table.removeFilterUnsafe(property);\n }\n\n public addFilter<FilterModel = Filters extends keyof TableviewModel ? TableviewModel[Filters] : never>(property: Filters) {\n return this._table.addFilter<FilterModel>(property);\n }\n\n public addFilterUnsafe<FilterModel>(property: string) {\n return this._table.addFilterUnsafe<FilterModel>(property);\n }\n\n public addFilterLookup<FilterModel = Filters extends keyof TableviewModel ? NonNullable<TableviewModel[Filters]> : never, Service = undefined>(\n property: Filters,\n provider?: ILookupDataProvider<FilterModel, Service>,\n optionsValueProperty?: keyof FilterModel\n ) {\n return this._table.addFilterLookup<FilterModel, Service>(property, provider, optionsValueProperty);\n }\n\n public addFilterLookupUnsafe<FilterModel, Service = undefined>(property: string, provider?: ILookupDataProvider<FilterModel, Service>, optionsValueProperty?: string) {\n return this._table.addFilterLookupUnsafe<FilterModel, Service>(property, provider, optionsValueProperty);\n }\n\n public addFilterLookupEnum<Enum>(property: Filters, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n return this._table.addFilterLookupEnum<Enum>(property, enumDesc, options);\n }\n\n public addFilterLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n return this._table.addFilterLookupEnumUnsafe<Enum>(property, enumDesc, options);\n }\n\n public addFilterFromColumn<Property extends keyof TableviewModel, FilterModel = NonNullable<TableviewModel[Property]>>(\n property: Extract<Filters, Property>,\n displayType?: FilterDisplayTypeEnum,\n forceSimple = false\n ) {\n return this._table.addFilterFromColumn<Property, FilterModel>(property, displayType, forceSimple);\n }\n\n public withFiltersFromColumns(...properties: Extract<Filters, keyof TableviewModel>[]): this {\n this._table.withFiltersFromColumns(...properties);\n return this;\n }\n\n public withFiltersFromColumnsUnsafe(...properties: string[]): this {\n this._table.withFiltersFromColumnsUnsafe(...properties);\n return this;\n }\n\n public addFilterFromColumnUnsafe(property: string, displayType?: FilterDisplayTypeEnum, forceSimple = false) {\n return this._table.addFilterFromColumnUnsafe(property, displayType, forceSimple);\n }\n\n public withFilter<FilterModel>(property: Filters, filter: FilterDescriptor<FilterModel, TableviewModel>): this {\n this._table.withFilter<FilterModel>(property, filter);\n return this;\n }\n\n public withFilterUnsafe<FilterModel>(filter: FilterDescriptor<FilterModel, TableviewModel>): this {\n this._table.withFilterUnsafe<FilterModel>(filter);\n return this;\n }\n\n public getField(property: keyof TableviewModel, editorType: TableviewEditorTypeEnum) {\n return this.getFieldUnsafe(property as string, editorType);\n }\n\n public getFieldUnsafe(property: string, editorType: TableviewEditorTypeEnum): AFieldDescriptor<any, TableviewModel, ParentEditorModel> | null {\n switch (editorType) {\n case TableviewEditorTypeEnum.Edit:\n return this._editEditor.getFieldUnsafe(property);\n case TableviewEditorTypeEnum.Add:\n return this._addEditor.getFieldUnsafe(property);\n case TableviewEditorTypeEnum.Details:\n return this._detailsEditor.getFieldUnsafe(property);\n case TableviewEditorTypeEnum.None:\n return null;\n }\n }\n\n public removeField(property: keyof TableviewModel): void {\n this.removeFieldUnsafe(property as string);\n }\n\n public removeFieldUnsafe(property: string): void {\n this._editEditor.removeFieldUnsafe(property);\n this._addEditor.removeFieldUnsafe(property);\n this._detailsEditor.removeFieldUnsafe(property);\n }\n\n public addFieldDescriptor<FieldModel, FieldValue = FieldModel>(field: AFieldDescriptor<FieldModel, TableviewModel, FieldValue, ParentEditorModel>): this {\n this._detailsEditor.addFieldDescriptor(field);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return this;\n }\n\n public addField<Property extends keyof TableviewModel, FieldModel = NonNullable<TableviewModel[Property]>, FieldValue = TableviewModel[Property]>(property: Property) {\n const field = this._detailsEditor.addField<Property, FieldModel, FieldValue>(property);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldUnsafe<FieldModel = FieldInputDescriptorType, FieldValue = FieldModel>(property: string) {\n const field = this._detailsEditor.addFieldUnsafe<FieldModel, FieldValue>(property);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFields(...properties: (keyof TableviewModel)[]): this {\n properties.forEach(p => this.addField(p));\n return this;\n }\n\n public addFieldAction(actionName: string): FieldActionDescriptor<TableviewModel, ParentEditorModel> {\n const field = this._detailsEditor.addFieldAction(actionName);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n private addFieldToEditAndAdd<FieldModel, FieldValue = FieldModel>(field: AFieldDescriptor<FieldModel, TableviewModel, FieldValue, ParentEditorModel>) {\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n }\n\n /**\n * Adds lookup field.\n *\n * @param {Property} property - The property key of the editor.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, TableviewModel, undefined, FieldValue, ParentEditorModel>} - The field lookup descriptor.\n */\n public addFieldLookup<Property extends keyof TableviewModel, LookupModel = NonNullable<TableviewModel[Property]>, FieldValue = TableviewModel[Property]>(\n property: Property,\n type?: TypeDescriptor<LookupModel>\n ) {\n const field = this._detailsEditor.addFieldLookup<Property, LookupModel, FieldValue>(property, type);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n /**\n * [UNSAFE] Adds lookup field.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property Model property name.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model (defines 2nd generic).\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, TableviewModel, undefined, FieldValue, ParentEditorModel>} - The field lookup descriptor.\n */\n public addFieldLookupUnsafe<LookupModel, FieldValue = LookupModel>(property: string, type?: TypeDescriptor<LookupModel>) {\n const field = this._detailsEditor.addFieldLookupUnsafe<LookupModel, FieldValue>(property, type);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n /**\n * Adds a field lookup with options value property for lookup model.\n *\n * @param {Property} property - The property key of the editor.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {LookupValueProperty} lookupOptionsValueProperty - The value property used as value in the lookup options.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam LookupValueProperty - The property of lookup model type.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, TableviewModel, undefined, FieldValue>} - The field lookup descriptor.\n */\n public addFieldLookupWithOptionsValueProperty<\n Property extends keyof TableviewModel,\n LookupModel,\n LookupValueProperty extends KeyofAndOfType<LookupModel, TableviewModel[Property]>,\n FieldValue = TableviewModel[Property]\n >(property: Property, type: TypeDescriptor<LookupModel>, lookupOptionsValueProperty: LookupValueProperty) {\n const field = this._detailsEditor.addFieldLookupWithOptionsValueProperty<Property, LookupModel, LookupValueProperty, FieldValue>(\n property,\n type,\n lookupOptionsValueProperty\n );\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n /**\n * [UNSAFE] Adds a field lookup with options value property for lookup model.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {Property} property - The property key of the editor.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {LookupValueProperty} lookupOptionsValueProperty - The value property used as value in the lookup options.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam LookupValueProperty - The property of lookup model type.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, TableviewModel, undefined, FieldValue>} - The field lookup descriptor.\n */\n public addFieldLookupWithOptionsValuePropertyUnsafe<LookupModel, FieldValue = Nullable<IdType>>(\n property: string,\n type: TypeDescriptor<LookupModel>,\n lookupOptionsValueProperty: string\n ) {\n const field = this._detailsEditor.addFieldLookupWithOptionsValuePropertyUnsafe<LookupModel, FieldValue>(property, type, lookupOptionsValueProperty);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n /**\n * Adds a field lookup with a data provider or service to the editor model.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldLookupProviderType<LookupModel, Service>} provider - The field lookup data provider or service.\n * @param {TypeDescriptor<LookupModel>} [type] - The type of lookup - if data provider is passed as previous parameter, type can be omitted. If service is provider, type parameter is proposed in favour of correct typing.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam Service - The lookup service type.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The field value type, defaults to the editor's property type.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} Created field lookup descriptor.\n */\n public addFieldLookupWithProvider<Property extends keyof TableviewModel, Service, LookupModel = NonNullable<TableviewModel[Property]>, FieldValue = TableviewModel[Property]>(\n property: Property,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type?: TypeDescriptor<LookupModel>\n ) {\n const field = this._detailsEditor.addFieldLookupWithProvider<Property, Service, LookupModel, FieldValue>(property, provider, type);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n /**\n * [UNSAFE] Adds a field lookup with a data provider or service to the editor model.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property - The property key of the editor.\n * @param {FieldLookupProviderType<LookupModel, Service>} provider - The lookup provider or service for the field lookup.\n * @param {TypeDescriptor<LookupModel>?} type - Optional type descriptor for the field lookup.\n * @typeparam LookupModel - The field lookup model type.\n * @typeparam Service - The lookup service type.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, TableviewModel, Service, FieldValue>} - The field lookup descriptor added to the instance.\n */\n public addFieldLookupWithProviderUnsafe<LookupModel, Service, FieldValue = LookupModel>(\n property: string,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type?: TypeDescriptor<LookupModel>\n ) {\n const field = this._detailsEditor.addFieldLookupWithProviderUnsafe<LookupModel, Service, FieldValue>(property, provider, type);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n /**\n * Adds a field lookup with data provider or service and options value property for lookup model.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldLookupProviderType<FieldModel, Service>} provider - The lookup provider.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {LookupValueProperty} lookupOptionsValueProperty - The value property used as value in the lookup options.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam Service - The lookup service type.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam LookupValueProperty - The property of lookup model type.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, TableviewModel, Service, FieldValue, ParentEditorModel>} - The field lookup descriptor.\n */\n addFieldLookupWithProviderAndOptionsValueProperty<\n Property extends keyof TableviewModel,\n Service,\n LookupModel,\n LookupValueProperty extends KeyofAndOfType<LookupModel, TableviewModel[Property]>,\n FieldValue = TableviewModel[Property]\n >(\n property: Property,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type: TypeDescriptor<LookupModel>,\n lookupOptionsValueProperty: LookupValueProperty\n ): FieldLookupDescriptor<LookupModel, TableviewModel, Service, FieldValue, ParentEditorModel> {\n const field = this._detailsEditor.addFieldLookupWithProviderAndOptionsValueProperty<Property, Service, LookupModel, LookupValueProperty, FieldValue>(\n property,\n provider,\n type,\n lookupOptionsValueProperty\n );\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n /**\n * [UNSAFE] Adds a field lookup with data provider or service and options value property for lookup model.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property - The property key of the editor.\n * @param {FieldLookupProviderType<FieldModel, Service>} provider - The lookup provider.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {string} lookupOptionsValueProperty - The value property used in the lookup options.\n * @typeparam Service - The service type.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel>} - The field lookup descriptor.\n */\n addFieldLookupWithProviderAndOptionsValuePropertyUnsafe<Service, LookupModel, FieldValue = LookupModel>(\n property: string,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type: TypeDescriptor<LookupModel>,\n lookupOptionsValueProperty: string\n ): FieldLookupDescriptor<LookupModel, TableviewModel, Service, FieldValue, ParentEditorModel> {\n const field = this._detailsEditor.addFieldLookupWithProviderAndOptionsValuePropertyUnsafe<Service, LookupModel, FieldValue>(\n property,\n provider,\n type,\n lookupOptionsValueProperty\n );\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldLookupEnum<Property extends keyof TableviewModel, Enum extends NonNullable<TableviewModel[Property]>>(\n property: Property,\n enumDesc: EnumDescriptor<Enum>,\n options?: Array<Enum>\n ) {\n const field = this._detailsEditor.addFieldLookupEnum(property, enumDesc, options);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n const field = this._detailsEditor.addFieldLookupEnumUnsafe<Enum>(property, enumDesc, options);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldManyEditor<Property extends keyof TableviewModel, FieldModel = ArrayItemType<TableviewModel[Property]>, FieldValue = TableviewModel[Property]>(\n property: Property,\n tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, TableviewModel>\n ) {\n const field = this._detailsEditor.addFieldManyEditor<Property, FieldModel, FieldValue>(property, tableviewDescriptor);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldManyEditorUnsafe<FieldModel, FieldValue = FieldModel[]>(property: string, tableviewDescriptor: TableviewDescriptorInst<FieldModel>) {\n const field = this._detailsEditor.addFieldManyEditorUnsafe<FieldModel, FieldValue>(property, tableviewDescriptor);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldManyToManyEditor<Property extends keyof TableviewModel, Service, FieldModel = ArrayItemType<TableviewModel[Property]>, FieldValue = TableviewModel[Property]>(\n property: Property,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupDataProvider: ITableDataProvider<FieldModel, Service>\n ) {\n const field = this._detailsEditor.addFieldManyToManyEditor<Property, Service, FieldModel, FieldValue>(\n property,\n mainTableDescriptor,\n lookupTableDescriptor,\n lookupDataProvider\n );\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldManyToManyEditorUnsafe<FieldModel, Service, FieldValue = FieldModel[]>(\n property: string,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupDataProvider: ITableDataProvider<FieldModel, Service>\n ) {\n const field = this._detailsEditor.addFieldManyToManyEditorUnsafe<FieldModel, Service, FieldValue>(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public createTabGroup(name: string, title?: string): this {\n this._detailsEditor.createTabGroup(name, title);\n this._addEditor.createTabGroup(name, title);\n this._editEditor.createTabGroup(name, title);\n return this;\n }\n\n public createFieldGroup(name: string, title?: string): this {\n this._detailsEditor.createFieldGroup(name, title);\n this._addEditor.createFieldGroup(name, title);\n this._editEditor.createFieldGroup(name, title);\n return this;\n }\n\n public copy(): TableviewDescriptorInst<TableviewModel, Sorts, Filters, ParentEditorModel> {\n const tableview = new TableviewDescriptorInst<TableviewModel, Sorts, Filters, ParentEditorModel>(this._model.copy());\n tableview._table = this._table.copy();\n tableview._detailsEditor = this._detailsEditor.copy();\n tableview._addEditor = this._addEditor.copy();\n tableview._editEditor = this._editEditor.copy();\n tableview._isLocalized = this._isLocalized;\n return tableview;\n }\n\n public localized<Property extends keyof TableviewModel, LocalizationModel = ArrayItemType<TableviewModel[Property]>>(\n property: Property,\n model: ModelDescriptor<LocalizationModel>,\n localeProperty: keyof LocalizationModel\n ): this {\n return this.localizedUnsafe(property as string, model, localeProperty as string);\n }\n\n public localizedUnsafe<LocalizationModel>(property: string, model: ModelDescriptor<LocalizationModel>, localeProperty: string): this {\n this._isLocalized = true;\n this._table.withLocalizationLocaleProperty(localeProperty as string);\n this.detailsEditor.localizedUnsafe(property, model, localeProperty);\n this.addEditor.localizedUnsafe(property, model, localeProperty);\n this.editEditor.localizedUnsafe(property, model, localeProperty);\n\n return this;\n }\n}\n\nexport class TableviewDynamicDescriptorInt extends TableviewDescriptorInst<any> {\n protected override _table: TableDynamicDescriptorInst;\n\n public constructor(model: ModelDescriptor<any>) {\n super(model);\n this._table = new TableDynamicDescriptorInst(this.model);\n }\n\n public override get table() {\n return this._table;\n }\n\n /**\n * sets custom table descriptor\n * @param descriptor\n */\n public override withTableDescriptor(descriptor: TableDynamicDescriptorInst): this {\n this._table = descriptor;\n return this;\n }\n\n /**\n * sets visibility hidden state to column with given property\n * equals to be removing in auto and base tableview descriptor\n * * @param property column's property\n */\n public override removeColumn(property: string): this {\n this._table.removeColumn(property);\n return this;\n }\n\n public withEntityForTranslations(i18nBaseKey: string): this {\n this._table.model.withI18nBase(i18nBaseKey);\n this._detailsEditor.model.withI18nBase(i18nBaseKey);\n return this;\n }\n\n /**\n * creates deep copy of tableview object and its children\n */\n public override copy(): TableviewDynamicDescriptorInt {\n const descriptor = new TableviewDynamicDescriptorInt(this.model.copy());\n descriptor._table = this._table.copy();\n return descriptor;\n }\n}\n","import {ClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, ModelDescriptorCreateOpts, TypeDescriptor, model} from '@mediusinc/mng-commons/model';\nimport {tableDescriptorFromClassAttrsDef} from '@mediusinc/mng-commons/table/api';\n\nimport {editorDescriptorFromClassAttrsDef} from '../../editor/descriptors/editor-descriptor.factory';\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {TableviewEditorTypeEnum} from '../../editor/models/editor.model';\nimport {TableviewClassAttributeDef} from '../models/class-tableview-attribute.model';\nimport {TableviewDescriptorInst, TableviewDynamicDescriptorInt} from './tableview.descriptor';\n\nexport class TableviewDescriptor extends TableviewDescriptorInst<any> {\n protected constructor() {\n super(ModelDescriptor.create());\n }\n\n public static create<TableviewModel, SortProperty = keyof TableviewModel, FilterProperty = keyof TableviewModel, ParentEditorModel = undefined>(\n idProperty?: keyof TableviewModel,\n titleProperty?: keyof TableviewModel,\n i18nBaseKey?: string | ClassType<unknown>\n ): TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty, ParentEditorModel> {\n return new TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty, ParentEditorModel>(\n ModelDescriptor.create<TableviewModel>(idProperty, titleProperty, i18nBaseKey)\n );\n }\n\n public static fromClass<TableviewModel, SortProperty = keyof TableviewModel, FilterProperty = keyof TableviewModel, ParentEditorModel = undefined>(\n type: ClassType<TableviewModel>,\n idProperty?: keyof TableviewModel,\n titleProperty?: keyof TableviewModel,\n i18nBaseKey?: ClassType<unknown> | string\n ): TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty, ParentEditorModel> {\n return new TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty, ParentEditorModel>(\n ModelDescriptor.fromClass(type, idProperty, titleProperty, i18nBaseKey)\n );\n }\n\n public static fromModel<TableviewModel, SortProperty = keyof TableviewModel, FilterProperty = keyof TableviewModel, ParentEditorModel = undefined>(\n model: ModelDescriptor<TableviewModel>\n ): TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty, ParentEditorModel> {\n return new TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty, ParentEditorModel>(model);\n }\n\n /**\n * generates descriptor from attribute definition of openapi model\n * @param type class type\n * @param idProperty\n * @param titleProperty\n */\n public static fromClassWithAutoAttrsDef<TableviewModel>(\n type: ClassType<TableviewModel>,\n idProperty?: keyof TableviewModel,\n titleProperty?: keyof TableviewModel\n ): TableviewDescriptorInst<TableviewModel> {\n const descriptor = tableviewDescriptor(model(type, {id: idProperty, title: titleProperty}));\n const optsBase = {id: idProperty, title: titleProperty};\n descriptor.withTableDescriptor(tableDescriptorFromClassAttrsDef(type, undefined, optsBase));\n descriptor.withEditDescriptor(editorDescriptorFromClassAttrsDef(type, undefined, {...optsBase, tableviewEditorType: TableviewEditorTypeEnum.Edit}));\n descriptor.withDetailsDescriptor(editorDescriptorFromClassAttrsDef(type, undefined, {...optsBase, tableviewEditorType: TableviewEditorTypeEnum.Details}).withDisabled());\n descriptor.withAddDescriptor(editorDescriptorFromClassAttrsDef(type, undefined, {...optsBase, tableviewEditorType: TableviewEditorTypeEnum.Add}));\n\n return descriptor;\n }\n\n /**\n * generates descriptor from given attribute definition\n * @param type class type\n * @param columnAttributes attribute definition to generate columns\n * @param fieldAttributes attribute definition to generate fields, if undefined columnDefinition is used, if null editors are not generated\n * @param idProperty\n * @param titleProperty\n */\n public static fromClassWithCustomAttrsDef<TableviewModel>(\n type: ClassType<TableviewModel>,\n columnAttributes: TableviewClassAttributeDef[],\n fieldAttributes?: TableviewClassAttributeDef[] | null,\n idProperty?: keyof TableviewModel,\n titleProperty?: keyof TableviewModel\n ): TableviewDescriptorInst<TableviewModel> {\n const optsBase = {id: idProperty, title: titleProperty};\n const descriptor = tableviewDescriptor(model(type, optsBase));\n descriptor.withTableDescriptor(tableDescriptorFromClassAttrsDef(type, columnAttributes, optsBase));\n\n if (fieldAttributes !== null) {\n descriptor.withEditDescriptor(\n editorDescriptorFromClassAttrsDef(type, fieldAttributes ?? columnAttributes, {...optsBase, tableviewEditorType: TableviewEditorTypeEnum.Edit})\n );\n descriptor.withDetailsDescriptor(\n editorDescriptorFromClassAttrsDef(type, fieldAttributes ?? columnAttributes, {...optsBase, tableviewEditorType: TableviewEditorTypeEnum.Details})\n );\n descriptor.withAddDescriptor(\n editorDescriptorFromClassAttrsDef(type, fieldAttributes ?? columnAttributes, {...optsBase, tableviewEditorType: TableviewEditorTypeEnum.Add})\n );\n }\n\n return descriptor;\n }\n}\n\nexport type TableviewDescriptorSortsFiltersCreateOptsType<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel> = {\n filtersType?: TypeDescriptor<Filters>;\n sortsType?: TypeDescriptor<Sorts>;\n};\n\nexport type TableviewDescriptorCreateOptsType<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel> = TableviewDescriptorSortsFiltersCreateOptsType<\n TableviewModel,\n Sorts,\n Filters\n> &\n ModelDescriptorCreateOpts<TableviewModel>;\n\nexport function tableviewDescriptor<Model, Sorts = keyof Model, Filters = keyof Model>(): TableviewDescriptorInst<Model, Sorts, Filters>;\nexport function tableviewDescriptor<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel>(\n opts: TableviewDescriptorCreateOptsType<TableviewModel>\n): TableviewDescriptorInst<TableviewModel, Sorts, Filters>;\nexport function tableviewDescriptor<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel>(\n model: ModelDescriptor<TableviewModel>,\n opts?: TableviewDescriptorSortsFiltersCreateOptsType<TableviewModel, Sorts, Filters>\n): TableviewDescriptorInst<TableviewModel, Sorts, Filters>;\nexport function tableviewDescriptor<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel>(\n type: TypeDescriptor<TableviewModel>,\n opts?: TableviewDescriptorCreateOptsType<TableviewModel>\n): TableviewDescriptorInst<TableviewModel, Sorts, Filters>;\nexport function tableviewDescriptor<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel>(\n typeOrModelOrClassOrOpts?: TypeDescriptor<TableviewModel> | ModelDescriptor<TableviewModel> | TableviewDescriptorCreateOptsType<TableviewModel>,\n opts?: TableviewDescriptorCreateOptsType<TableviewModel>\n) {\n if (typeOrModelOrClassOrOpts == null) {\n return new TableviewDescriptorInst<TableviewModel, Sorts, Filters>(model<TableviewModel>());\n } else if (typeOrModelOrClassOrOpts instanceof TypeDescriptor) {\n return new TableviewDescriptorInst<TableviewModel, Sorts, Filters>(model<TableviewModel>((opts as TableviewDescriptorCreateOptsType<TableviewModel> | undefined) ?? {}));\n } else if (typeOrModelOrClassOrOpts instanceof ModelDescriptor) {\n return new TableviewDescriptorInst<TableviewModel, Sorts, Filters>(typeOrModelOrClassOrOpts);\n } else {\n // this could have autoGenerated if model descriptor is class\n return new TableviewDescriptorInst<TableviewModel, Sorts, Filters>(model<TableviewModel>(typeOrModelOrClassOrOpts));\n }\n}\n\nexport function tableviewDescriptorFromClass<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel>(\n type: ClassType<TableviewModel>,\n opts?: TableviewDescriptorCreateOptsType<TableviewModel>\n): TableviewDescriptorInst<TableviewModel, Sorts, Filters> {\n return new TableviewDescriptorInst<TableviewModel, Sorts, Filters>(model<TableviewModel>(type as ClassType<TableviewModel>, opts));\n}\n\n/**\n * generates descriptor based on type attribute definition\n * @param type class type\n * @param columnAttributes\n * @param fieldAttributes\n * @param opts\n */\nexport function tableviewDescriptorFromClassAttrsDef<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel>(\n type: ClassType<TableviewModel>,\n columnAttributes?: TableviewClassAttributeDef[],\n fieldAttributes?: TableviewClassAttributeDef[] | null,\n opts?: TableviewDescriptorCreateOptsType<TableviewModel>\n): TableviewDescriptorInst<TableviewModel, Sorts, Filters> {\n const model = new ModelDescriptor(type, opts?.id as string | undefined, opts?.title as string | undefined, opts?.i18nBase as string | undefined);\n const descriptor = new TableviewDescriptorInst<TableviewModel, Sorts, Filters>(model);\n descriptor.withTableDescriptor(tableDescriptorFromClassAttrsDef<TableviewModel, Sorts, Filters>(type, columnAttributes, opts));\n\n if (fieldAttributes !== null) {\n descriptor.withEditDescriptor(editorDescriptorFromClassAttrsDef(type, fieldAttributes ?? columnAttributes, {...opts, tableviewEditorType: TableviewEditorTypeEnum.Edit}));\n descriptor.withDetailsDescriptor(\n editorDescriptorFromClassAttrsDef(type, fieldAttributes ?? columnAttributes, {...opts, tableviewEditorType: TableviewEditorTypeEnum.Details}).withDisabled()\n );\n descriptor.withAddDescriptor(editorDescriptorFromClassAttrsDef(type, fieldAttributes ?? columnAttributes, {...opts, tableviewEditorType: TableviewEditorTypeEnum.Add}));\n }\n\n return descriptor;\n}\n\nexport function tableviewDescriptorFromParent<TableviewModel, ChildModel>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any, any> | EditorDescriptorInst<TableviewModel> | ModelDescriptor<TableviewModel>,\n model: ModelDescriptor<ChildModel>\n): TableviewDescriptorInst<ChildModel, keyof ChildModel, keyof ChildModel, TableviewModel>;\nexport function tableviewDescriptorFromParent<TableviewModel, ChildModel>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any, any> | EditorDescriptorInst<TableviewModel> | ModelDescriptor<TableviewModel>,\n type: ClassType<ChildModel>,\n idProperty?: keyof ChildModel,\n titleProperty?: keyof ChildModel,\n i18nBaseKey?: ClassType<unknown> | string\n): TableviewDescriptorInst<ChildModel, keyof ChildModel, keyof ChildModel, TableviewModel>;\nexport function tableviewDescriptorFromParent<TableviewModel, ChildModel>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any, any> | EditorDescriptorInst<TableviewModel> | ModelDescriptor<TableviewModel>,\n classOrType: ModelDescriptor<ChildModel> | ClassType<ChildModel>,\n idProperty?: keyof ChildModel,\n titleProperty?: keyof ChildModel,\n i18nBaseKey?: ClassType<unknown> | string\n): TableviewDescriptorInst<ChildModel, keyof ChildModel, keyof ChildModel, TableviewModel> {\n return classOrType instanceof ModelDescriptor\n ? new TableviewDescriptorInst<ChildModel, keyof ChildModel, keyof ChildModel, TableviewModel>(classOrType)\n : new TableviewDescriptorInst<ChildModel, keyof ChildModel, keyof ChildModel, TableviewModel>(\n model(classOrType, {id: idProperty, title: titleProperty, i18nBase: i18nBaseKey})\n );\n}\n\nexport class TableviewDynamicDescriptor extends TableviewDynamicDescriptorInt {\n protected constructor() {\n super(ModelDescriptor.create());\n }\n\n public static create(idProperty?: string, titleProperty?: string, i18nBaseKey?: string | ClassType<any>): TableviewDynamicDescriptorInt {\n return tableviewDynamicDescriptor({id: idProperty, title: titleProperty, i18nBase: i18nBaseKey});\n }\n\n public static fromModel(model: ModelDescriptor<any>): TableviewDynamicDescriptorInt {\n return tableviewDynamicDescriptor(model);\n }\n}\n\nexport function tableviewDynamicDescriptor(modelOrOpts?: ModelDescriptor<any> | TableviewDescriptorCreateOptsType<any>): TableviewDynamicDescriptorInt {\n return modelOrOpts instanceof ModelDescriptor\n ? new TableviewDynamicDescriptorInt(modelOrOpts)\n : new TableviewDynamicDescriptorInt(new ModelDescriptor<any>(undefined, modelOrOpts?.id as string, modelOrOpts?.title as string, modelOrOpts?.i18nBase as string));\n}\n","import {ClassAttributeDef, ClassType, CommonsInternalError, EnumType, TypeRegistry} from '@mediusinc/mng-commons/core';\nimport {ColumnTypeEnum, getColumnDisplayTypeFromColumnType, getColumnTypeFromClassAttributeDefType} from '@mediusinc/mng-commons/table/api';\n\nimport {getFieldInputTypeFromClassAttributeDefType} from '../../editor/helpers/class-attribute-converter';\nimport {TableviewClassAttributeDef} from '../models/class-tableview-attribute.model';\n\nexport function expandClassAttributeDefWithTableviewDef(attributes?: Array<ClassAttributeDef> | null): TableviewClassAttributeDef[] {\n if (!attributes) {\n throw new CommonsInternalError('Class attribute definition is null, problem with TypeRegistry::findAttributesDefinitionByClassType?', {name: 'TableviewUtilsError'});\n }\n\n const typeRegistry = TypeRegistry.get();\n const tableClassAttributeDef: TableviewClassAttributeDef[] = [];\n for (const attribute of attributes) {\n const enumType = typeRegistry.findEnum(attribute.type);\n const columnType = enumType ? ColumnTypeEnum.Enum : getColumnTypeFromClassAttributeDefType(attribute.type);\n tableClassAttributeDef.push({\n name: attribute.name,\n baseName: attribute.baseName,\n type: attribute.type,\n subtype: attribute.subtype,\n columnType: enumType ? ColumnTypeEnum.Enum : getColumnTypeFromClassAttributeDefType(attribute.type),\n columnDisplayType: getColumnDisplayTypeFromColumnType(columnType, attribute.type),\n fieldType: getFieldInputTypeFromClassAttributeDefType(attribute.type),\n enumType: typeRegistry.findEnum(attribute.type) as EnumType,\n classType: typeRegistry.findType(attribute.type) as ClassType<any>\n });\n }\n\n return tableClassAttributeDef;\n}\n\n/**\n * returns attributes from class type and extends to typed def with column and field enum type\n * @param type class type\n */\nexport function getTableviewClassAttributeDef<T>(type: ClassType<T>): TableviewClassAttributeDef[] {\n return expandClassAttributeDefWithTableviewDef(TypeRegistry.get().findAttributesDefinitionByClassType(type));\n}\n","import {TranslateService} from '@ngx-translate/core';\n\nimport {GetterPipe} from '@mediusinc/mng-commons/core';\n\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\n\nexport function convertDataToStringWithDelimiter(data: any[], delimiter: string, descriptor: TableviewDescriptorInst<any, any, any>, translate: TranslateService): string {\n const replaceNullValue = (key: any, value: any) => (value === null ? '' : value);\n const getterPipe = new GetterPipe();\n return [\n descriptor.table.columns.map(col => translate.instant(descriptor.model.i18nBaseKey + '.properties.' + col.property)).join(delimiter),\n ...data.map((row: any) =>\n descriptor.table.columns\n .map(column => {\n if (typeof column.getter === 'function') {\n return JSON.stringify(getterPipe.transform(row[column.property], column.getter, row), replaceNullValue);\n } else {\n return JSON.stringify(row[column.property], replaceNullValue);\n }\n })\n .join(delimiter)\n )\n ].join('\\r\\n');\n}\n\nexport function saveFileAs(blob: Blob, filename: string) {\n const blobUrl = URL.createObjectURL(blob);\n const link = document.createElement('a');\n\n link.style.display = 'none';\n link.target = '_blank';\n link.href = blobUrl;\n link.download = filename;\n\n document.body.appendChild(link);\n\n link.dispatchEvent(\n new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n );\n\n document.body.removeChild(link);\n}\n","import {Injector, inject} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {of, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {CommonsInternalError, StyleLevelEnum, StyleSizeEnum, copyDataListParams} from '@mediusinc/mng-commons/core';\nimport {ActionButtonDescriptor, ButtonStyleRoundedEnum} from '@mediusinc/mng-commons/form/api';\nimport {ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {ActionProviderType, actionGetProviderCfgObj} from '../../action/descriptors/action-descriptor.factory';\nimport {ActionEditorProviderType, actionEditorGetProviderCfgObj} from '../../action/descriptors/action-editor-descriptor.factory';\nimport {ActionEditorAddDescriptorInst, ActionEditorDetailsDescriptorInst, ActionEditorEditDescriptorInst} from '../../action/descriptors/action-editor.descriptor';\nimport {actionLinkFromAction} from '../../action/descriptors/action-link-descriptor.factory';\nimport {ActionLinkDescriptorInst} from '../../action/descriptors/action-link.descriptor';\nimport {ActionDeleteDescriptorInst, ActionDescriptorInst} from '../../action/descriptors/action.descriptor';\nimport {ActionPositionEnum} from '../../action/models/action.type';\nimport {TableviewActionDefaultCategories} from '../../action/models/tableview-action-default-categories.model';\nimport {DataProviderExecutor} from '../../action/services/data-provider-executor.service';\nimport {DATA_LANGUAGE_DROPDOWN_COMPONENT_IT} from '../../action/services/tokens/data-language-dropdown.token';\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\nimport {TableviewRouteData} from '../models/tableview-route.model';\nimport {convertDataToStringWithDelimiter, saveFileAs} from './files-export';\n\nexport enum TableviewDefaultActionsEnum {\n Details,\n Add,\n Edit,\n EditOnDetails,\n Delete,\n DeleteOnDetails,\n Refresh,\n Export,\n ExportJson,\n ExportCsv,\n LocalizationLanguageSelect\n}\n\nconst tableviewDefaultActions = [\n TableviewDefaultActionsEnum.Details,\n TableviewDefaultActionsEnum.Add,\n TableviewDefaultActionsEnum.Edit,\n TableviewDefaultActionsEnum.EditOnDetails,\n TableviewDefaultActionsEnum.Delete,\n TableviewDefaultActionsEnum.DeleteOnDetails,\n TableviewDefaultActionsEnum.Refresh,\n TableviewDefaultActionsEnum.Export,\n TableviewDefaultActionsEnum.ExportJson,\n TableviewDefaultActionsEnum.ExportCsv,\n TableviewDefaultActionsEnum.LocalizationLanguageSelect\n];\n\nexport function getTableviewDefaultActions() {\n return [...tableviewDefaultActions];\n}\n\nexport function createTableviewActions(\n tableview: TableviewDescriptorInst<any, any, any>,\n defaultActions?: TableviewDefaultActionsEnum[],\n defaultActionsOverrides?: Record<number, ActionDescriptorInst<any>>,\n injector?: Injector | null\n): Array<ActionDescriptorInst<any>> {\n return (defaultActions ?? getTableviewDefaultActions())\n .map(t => createTableviewAction(t, tableview, defaultActions, defaultActionsOverrides, injector))\n .filter(e => e != null) as Array<ActionDescriptorInst<any>>;\n}\n\nexport function createTableviewAction(\n type: TableviewDefaultActionsEnum,\n tableview: TableviewDescriptorInst<any, any, any>,\n defaultActions?: TableviewDefaultActionsEnum[],\n defaultActionsOverrides?: Record<number, ActionDescriptorInst<any>>,\n injector?: Injector | null\n): ActionDescriptorInst<any> | null {\n if (defaultActionsOverrides != null && defaultActionsOverrides[type] !== undefined) {\n return defaultActionsOverrides[type];\n }\n\n switch (type) {\n // table row actions\n case TableviewDefaultActionsEnum.Details:\n return tableviewDetailsAction(tableview.detailsEditor, injector);\n case TableviewDefaultActionsEnum.Edit:\n return tableviewEditAction(tableview.editEditor, injector);\n case TableviewDefaultActionsEnum.Delete:\n return tableviewDeleteAction(tableview.model, injector);\n // table toolbar actions\n case TableviewDefaultActionsEnum.Add:\n return tableviewAddAction(tableview.addEditor, injector);\n case TableviewDefaultActionsEnum.LocalizationLanguageSelect:\n return tableviewLocalizationLanguageSelectAction(tableview);\n case TableviewDefaultActionsEnum.Refresh:\n return tableviewRefreshAction(tableview.model);\n case TableviewDefaultActionsEnum.Export:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson) || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv)\n ? tableviewExportAction(tableview, injector, defaultActions)\n : null;\n //details actions\n case TableviewDefaultActionsEnum.EditOnDetails:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Edit)\n ? tableviewEditOnDetailsAction(tableview.model, tableviewEditAction(tableview.editEditor, injector), injector)\n : null;\n case TableviewDefaultActionsEnum.DeleteOnDetails:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Delete) ? tableviewDeleteOnDetailsAction(tableview.model, injector) : null;\n // subactions\n case TableviewDefaultActionsEnum.ExportJson:\n case TableviewDefaultActionsEnum.ExportCsv:\n return null;\n default:\n throw new CommonsInternalError(`Tableview default action of type ${type} not supported`);\n }\n}\n\nfunction getInjector(injector?: Injector | null): Injector | null {\n return injector === undefined ? inject(Injector) : injector;\n}\n\nfunction getRouteData(injector?: Injector | null) {\n return getInjector(injector)?.get(ActivatedRoute)?.snapshot.data as TableviewRouteData | undefined;\n}\n\nexport function tableviewDetailsAction<Model, Service = undefined>(\n descriptor: EditorDescriptorInst<Model>,\n injector?: Injector | null\n): ActionEditorDetailsDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasDetails ? new ActionEditorDetailsDescriptorInst<Model, Service>(descriptor) : null;\n}\n\nexport function tableviewDetailsActionWithProvider<Model, Service>(\n descriptor: EditorDescriptorInst<Model>,\n serviceProvider: ActionEditorProviderType<Model, Service>,\n injector?: Injector | null\n): ActionEditorDetailsDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasDetails\n ? new ActionEditorDetailsDescriptorInst<Model, Service>(descriptor, {\n ...actionEditorGetProviderCfgObj(serviceProvider)\n })\n : null;\n}\n\nexport function tableviewAddAction<Model, Service = undefined>(\n descriptor: EditorDescriptorInst<Model>,\n injector?: Injector | null\n): ActionEditorAddDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasAdd ? new ActionEditorAddDescriptorInst<Model, Service>(descriptor) : null;\n}\n\nexport function tableviewAddActionWithProvider<Model, Service>(\n descriptor: EditorDescriptorInst<Model>,\n serviceProvider: ActionEditorProviderType<Model, Service>,\n injector?: Injector | null\n): ActionEditorAddDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasAdd\n ? new ActionEditorAddDescriptorInst<Model, Service>(descriptor, {\n ...actionEditorGetProviderCfgObj(serviceProvider)\n })\n : null;\n}\n\nexport function tableviewEditAction<Model, Service = undefined>(\n descriptor: EditorDescriptorInst<Model>,\n injector?: Injector | null\n): ActionEditorEditDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasEdit ? new ActionEditorEditDescriptorInst<Model, Service>(descriptor) : null;\n}\n\nexport function tableviewEditActionWithProvider<Model, Service>(\n descriptor: EditorDescriptorInst<Model>,\n serviceProvider: ActionEditorProviderType<Model, Service>,\n injector?: Injector | null\n): ActionEditorEditDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasEdit\n ? new ActionEditorEditDescriptorInst<Model, Service>(descriptor, {\n ...actionEditorGetProviderCfgObj(serviceProvider)\n })\n : null;\n}\n\nexport function tableviewEditOnDetailsAction<Model>(\n descriptor: ModelDescriptor<Model>,\n editDescriptor: ActionEditorEditDescriptorInst<Model> | null,\n injector?: Injector | null\n): ActionLinkDescriptorInst<Model> | null {\n const routeData = getRouteData(injector);\n if (routeData?.tableviewActions && !routeData.tableviewActions.hasEdit) {\n return null;\n }\n\n const action = editDescriptor\n ? actionLinkFromAction(editDescriptor)\n : new ActionLinkDescriptorInst<Model>(ActionEditorEditDescriptorInst.ACTION_NAME, {\n model: descriptor\n });\n action\n .withTableviewCategory(TableviewActionDefaultCategories.EDIT)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(ActionPositionEnum.FooterLeft)\n .withRouterLink('./edit');\n action.button.styleClass.withActionLevel(StyleLevelEnum.Secondary);\n action.button.styleClass.withSize(StyleSizeEnum.Normal);\n action.button.styleClass.withRoundedButton(ButtonStyleRoundedEnum.DEFAULT);\n action.button.withLabel();\n if (!editDescriptor) action.button.withIcon('pi pi-pencil');\n\n return action;\n}\n\nexport function tableviewDeleteAction<Model, Service = undefined>(\n descriptor: ModelDescriptor<Model>,\n injector?: Injector | null\n): ActionDeleteDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasDelete ? new ActionDeleteDescriptorInst<Model, Service>(descriptor) : null;\n}\n\nexport function tableviewDeleteActionWithProvider<Model, Service>(\n descriptor: ModelDescriptor<Model>,\n serviceProvider: ActionProviderType<Model, Service>,\n injector?: Injector | null\n): ActionDeleteDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasDelete\n ? new ActionDeleteDescriptorInst<Model, Service>(descriptor, {\n ...actionGetProviderCfgObj(serviceProvider)\n })\n : null;\n}\n\nexport function tableviewDeleteOnDetailsAction<Model, Service = undefined>(model: ModelDescriptor<Model>, injector?: Injector | null): ActionDescriptorInst<Model, Service> | null {\n const action = tableviewDeleteAction<Model, Service>(model, injector);\n const dataProviderExecutor = getInjector(injector)?.get(DataProviderExecutor);\n if (action) {\n action\n .withTableviewCategory(TableviewActionDefaultCategories.DELETE)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(ActionPositionEnum.FooterLeft)\n .withRunFunction(ctx =>\n dataProviderExecutor\n ? dataProviderExecutor.runDeleteOrFail(ctx).pipe(\n tap(() => {\n ctx.viewContainer?.reloadTable({});\n ctx.viewContainer?.closeEditor();\n })\n )\n : null\n );\n action.button.withLabel(undefined);\n action.button.styleClass.withSize(StyleSizeEnum.Normal);\n\n return action;\n }\n\n return null;\n}\n\nexport function tableviewExportAction<Model>(\n descriptor: TableviewDescriptorInst<Model>,\n injector?: Injector | null,\n defaultActions?: TableviewDefaultActionsEnum[]\n): ActionDescriptorInst<Model> | null {\n const exportAction = new ActionDescriptorInst<Model, undefined>('export', {\n model: descriptor.model\n })\n .withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-download'))\n .withSubactionsAsMenu();\n\n const subactions: ActionDescriptorInst<Model>[] = [];\n\n if (defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson)) subactions.push(tableviewExportJsonAction(descriptor, injector));\n if (defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv)) subactions.push(tableviewExportCsvAction(descriptor, injector));\n\n exportAction.withSubactions(...subactions);\n return exportAction;\n}\n\nexport function tableviewExportJsonAction<Model>(descriptor: TableviewDescriptorInst<Model>, injector?: Injector | null): ActionDescriptorInst<Model> {\n const dataProviderExecutor = getInjector(injector)?.get(DataProviderExecutor);\n return new ActionDescriptorInst<Model, undefined>('exportJson', {\n model: descriptor.model\n })\n .withRunFunction(ctx => {\n const params = ctx.parameters.dataListParams ? copyDataListParams(ctx.parameters.dataListParams) : {};\n params.offset = 0;\n params.limit = 500;\n ctx.parameters.dataListParams = params;\n return dataProviderExecutor\n ? dataProviderExecutor.runGetAllOrFail(ctx).pipe(\n map(res => {\n const blob = new Blob([JSON.stringify(res.data, undefined, 4)], {type: 'application/json;charset=utf-8'});\n const typeName = ctx.instance.action.model?.i18nBaseKey ?? '';\n saveFileAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.json`);\n return undefined;\n })\n )\n : ctx.parameters.item;\n })\n .withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-code'))\n .withPosition(ActionPositionEnum.ToolbarRight);\n}\n\nexport function tableviewExportCsvAction<Model>(descriptor: TableviewDescriptorInst<Model>, injector?: Injector | null): ActionDescriptorInst<Model> {\n const dataProviderExecutor = getInjector(injector)?.get(DataProviderExecutor);\n return new ActionDescriptorInst<Model, undefined>('exportCsv', {\n model: descriptor.model\n })\n .withRunFunction(ctx => {\n const params = ctx.parameters.dataListParams ? copyDataListParams(ctx.parameters.dataListParams) : {};\n params.offset = 0;\n params.limit = 500;\n ctx.parameters.dataListParams = params;\n return dataProviderExecutor\n ? dataProviderExecutor.runGetAllOrFail(ctx).pipe(\n map(res => {\n if (!res.data) {\n return undefined;\n }\n const blob = new Blob([convertDataToStringWithDelimiter(res.data, ',', descriptor, ctx.injector.get(TranslateService))], {\n type: 'text/csv;charset=utf-8'\n });\n const typeName = ctx.instance.action.model?.i18nBaseKey ?? '';\n saveFileAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.csv`);\n return undefined;\n })\n )\n : ctx.parameters.item;\n })\n .withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-file'))\n .withPosition(ActionPositionEnum.ToolbarRight);\n}\n\nexport function tableviewRefreshAction<Model>(descriptor: ModelDescriptor<Model>): ActionDescriptorInst<Model> | null {\n const action = new ActionDescriptorInst<Model, undefined>('refresh', {\n model: descriptor\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withTableviewCategory(TableviewActionDefaultCategories.READ)\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunFunction(ctx => {\n ctx.viewContainer?.reloadTable({});\n return of(null);\n });\n action.button.withIcon('pi pi-refresh').styleClass.withActionLevel(StyleLevelEnum.Secondary);\n return action;\n}\n\nexport function tableviewLocalizationLanguageSelectAction<Model>(descriptor: TableviewDescriptorInst<Model>): ActionDescriptorInst<Model> | null {\n return descriptor.isLocalized()\n ? new ActionDescriptorInst<Model, undefined>('translator', {\n model: descriptor.model\n })\n .withPosition(ActionPositionEnum.ToolbarLeft)\n .withComponentFromDi(DATA_LANGUAGE_DROPDOWN_COMPONENT_IT)\n : null;\n}\n","import {Injector} from '@angular/core';\n\nimport {IDataProvider, Nullable} from '@mediusinc/mng-commons/core';\n\nimport {ActionDescriptorInst} from '../../action/descriptors/action.descriptor';\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\nimport {TableviewInput} from '../models/tableview-input.model';\nimport {TableviewDefaultActionsEnum, createTableviewActions, getTableviewDefaultActions} from './tableview-default-actions';\n\nexport type TvBuilderSetterParamsType<Descriptor, DataProvider> = {descriptor: Descriptor; dataProvider: DataProvider; injector: Injector};\nexport type TvBuilderActionSetterFnType<ActionModel, ActionService, Descriptor, DataProvider> = (\n params: TvBuilderSetterParamsType<Descriptor, DataProvider>\n) => Nullable<ActionDescriptorInst<ActionModel, ActionService>>;\nexport type TvBuilderDescriptorSetterFnType<Descriptor, DataProvider> = (params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => Descriptor;\nexport type TvBuilderDataProviderSetterFnType<Descriptor, DataProvider> = (params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => DataProvider;\n\ntype DefaultAction = {\n type: TableviewDefaultActionsEnum;\n descriptor: ActionDescriptorInst<any, any> | null | undefined;\n};\n\n/**\n * The `TableviewBuilder` class is used to build a tableview configuration.\n * It allows you to set various options such as the descriptor, data provider,\n * default actions, and custom actions for the tableview.\n *\n * @typeparam Model - The main model type.\n * @typeparam Service - The API service type.\n * @typeparam Descriptor - The descriptor type.\n * @typeparam DataProvider - The data provider type.\n * @typeparam Sorts - The sort type representing available sort keys.\n * @typeparam Filters - The filter type representing available filter keys.\n */\nexport class TableviewInputBuilder<\n Model,\n Service,\n Descriptor extends TableviewDescriptorInst<Model, Sorts, Filters>,\n DataProvider extends IDataProvider<Model, Service>,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model\n> {\n private defaultActions: DefaultAction[] = getTableviewDefaultActions().map(a => ({type: a, descriptor: undefined}));\n private readonly _customActions: ActionDescriptorInst<any>[] = [];\n\n constructor(\n private _descriptor: Descriptor,\n private _dataProvider: DataProvider,\n private readonly injector: Injector\n ) {}\n\n private prepareSetterParams(): TvBuilderSetterParamsType<Descriptor, DataProvider> {\n return {descriptor: this._descriptor, dataProvider: this._dataProvider, injector: this.injector};\n }\n\n /**\n * Sets a descriptor instead of the default one.\n *\n * @param {TvBuilderDescriptorSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new descriptor. It should accept a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withDescriptor(fn: TvBuilderDescriptorSetterFnType<Descriptor, DataProvider>): this {\n this._descriptor = fn(this.prepareSetterParams());\n return this;\n }\n\n /**\n * Adjusts the descriptor using the provided adjust function.\n *\n * @param {(descriptor: Descriptor) => void} adjustFn - The function used to adjust the descriptor. It accepts a single parameter of type `Descriptor`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjustDescriptor(adjustFn: (descriptor: Descriptor) => void): this {\n adjustFn(this._descriptor);\n return this;\n }\n\n /**\n * Sets the data provider for the TvBuilder instance\n *\n * @param {TvBuilderDataProviderSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * * @returns {this} - Returns the current instance of the builder.\n */\n withDataProvider(fn: TvBuilderDataProviderSetterFnType<Descriptor, DataProvider>): this {\n this._dataProvider = fn(this.prepareSetterParams());\n return this;\n }\n\n /**\n * Adjusts the data provider using the provided adjust function.\n *\n * @param {(dataProvider: DataProvider) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `DataProvider`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjustDataProvider(adjustFn: (dataProvider: DataProvider) => void): this {\n adjustFn(this._dataProvider);\n return this;\n }\n\n /**\n * Adjusts the data provider and/or descriptor using the provided adjust function.\n *\n * @param {(params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjust(adjustFn: (params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => void): this {\n adjustFn(this.prepareSetterParams());\n return this;\n }\n\n /**\n * Removes all the default tableview actions.\n *\n * @returns {this} - Returns the current instance of the builder.\n */\n withNoDefaultActions(): this {\n this.defaultActions.forEach(a => (a.descriptor = null));\n return this;\n }\n\n /**\n * Adds the default actions specified in parameters.\n *\n * @param {TableviewDefaultActionsEnum[]} types - The default actions to add.\n * @returns {this} - Returns the current instance of the builder.\n */\n withDefaultActions(...types: TableviewDefaultActionsEnum[]): this {\n types.forEach(type => {\n const action = this.defaultActions.find(a => a.type === type);\n if (action?.descriptor === null) {\n action.descriptor = undefined;\n }\n });\n return this;\n }\n\n /**\n * Removes the default actions specified in parameters.\n *\n * @param {TableviewDefaultActionsEnum[]} types - The default actions to remove.\n * @returns {this} - Returns the current instance of the builder.\n */\n withoutDefaultActions(...types: TableviewDefaultActionsEnum[]): this {\n types.forEach(type => {\n const action = this.defaultActions.find(a => a.type === type);\n if (action) {\n action.descriptor = null;\n }\n });\n return this;\n }\n\n /**\n * Overrides the default action.\n *\n * @param {TableviewDefaultActionsEnum} type - The default actions to override.\n * @param {TvBuilderActionSetterFnType<Model, ActionService, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withDefaultActionOverride<ActionService = Service>(type: TableviewDefaultActionsEnum, fn: TvBuilderActionSetterFnType<Model, ActionService, Descriptor, DataProvider>): this {\n const action = this.defaultActions.find(a => a.type === type);\n if (action) {\n action.descriptor = fn(this.prepareSetterParams()) ?? null;\n }\n return this;\n }\n\n /**\n * Adds a custom action.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withAction<ActionModel = Model, ActionService = Service>(fn: TvBuilderActionSetterFnType<ActionModel, ActionService, Descriptor, DataProvider>): this {\n const action = fn(this.prepareSetterParams());\n if (action) {\n this._customActions.push(action);\n }\n return this;\n }\n\n /**\n * Builds and returns an instance of ITableview.\n * DO NOT CALL this within tableview create callback function!\n *\n * @return {TableviewInput<Model, Service, Sorts, Filters, Descriptor, DataProvider>} - The built ITableview instance.\n */\n build() {\n return <TableviewInput<Model, Service, Sorts, Filters, Descriptor, DataProvider>>{\n actions: createTableviewActions(\n this._descriptor as TableviewDescriptorInst<any, any, any>,\n this.defaultActions.filter(a => a.descriptor !== null).map(a => a.type),\n this.defaultActions\n .filter(a => a.descriptor != null)\n .reduce(\n (acc, a) => ({\n ...acc,\n [a.type]: a.descriptor!\n }),\n <Record<number, ActionDescriptorInst<any>>>{}\n ),\n this.injector\n ).concat(this._customActions),\n dataProvider: this._dataProvider,\n descriptor: this._descriptor\n };\n }\n}\n","import {Injector, inject} from '@angular/core';\n\nimport {ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {TableviewDataProviderInst} from '../data-providers/tableview.data-provider';\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\nimport {TableviewInputBuilder} from './tableview-input-builder';\n\n/**\n * Creates a tableview with the given model, service.\n *\n * @param {ModelDescriptor<Model>} model - The model descriptor.\n * @param {ServiceClassType<Service>} service - The class type of the service.\n * @param {(builder: TableviewBuilder) => void} [buildFn] - The optional callback function to customize the tableview using the prepared builder.\n *\n * @returns A tableview instance with descriptor, data provider and actions.\n */\nexport function tableview<Model, Service, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n model: ModelDescriptor<Model>,\n service: ServiceClassType<Service>,\n buildFn?: (\n builder: TableviewInputBuilder<Model, Service, TableviewDescriptorInst<Model, Sorts, Filters>, TableviewDataProviderInst<Model, Service, Sorts, Filters>, Sorts, Filters>\n ) => void\n) {\n const builder = new TableviewInputBuilder<\n Model,\n Service,\n TableviewDescriptorInst<Model, Sorts, Filters>,\n TableviewDataProviderInst<Model, Service, Sorts, Filters>,\n Sorts,\n Filters\n >(new TableviewDescriptorInst<Model, Sorts, Filters>(model), new TableviewDataProviderInst<Model, Service, Sorts, Filters>(undefined, service), inject(Injector));\n buildFn?.(builder);\n return builder.build();\n}\n\nexport function tableviewWithSortAndFilter<Model, Service, Sorts, Filters extends keyof any>(\n model: ModelDescriptor<Model>,\n service: ServiceClassType<Service>,\n sorts: TypeDescriptor<Sorts>,\n filters: TypeDescriptor<Filters>,\n buildFn?: (\n builder: TableviewInputBuilder<Model, Service, TableviewDescriptorInst<Model, Sorts, Filters>, TableviewDataProviderInst<Model, Service, Sorts, Filters>, Sorts, Filters>\n ) => void\n) {\n const builder = new TableviewInputBuilder<\n Model,\n Service,\n TableviewDescriptorInst<Model, Sorts, Filters>,\n TableviewDataProviderInst<Model, Service, Sorts, Filters>,\n Sorts,\n Filters\n >(new TableviewDescriptorInst<Model, Sorts, Filters>(model), new TableviewDataProviderInst<Model, Service, Sorts, Filters>(undefined, service), inject(Injector));\n buildFn?.(builder);\n return builder.build();\n}\n","import {ServiceClassType} from '@mediusinc/mng-commons/core';\n\nimport {TableviewDataProviderInst} from '../data-providers/tableview.data-provider';\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\n\n/**\n * Creates a data provider for from descriptor. DO NOT use if the model is class, because the type (from model descriptor) will not be set in data provider.\n *\n * @param {TableviewDescriptorInst<Model, Sorts, Filters>} descriptor - The table descriptor.\n *\n * @return {TableviewDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined>} - The data provider for the table component.\n */\nexport function tableviewToDataProvider<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n descriptor: TableviewDescriptorInst<Model, Sorts, Filters>\n): TableviewDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined>;\n/**\n * Creates a data provider for from descriptor. DO NOT use if the model is class, because the type (from model descriptor) will not be set in data provider.\n *\n * @param {TableviewDescriptorInst<Model, Sorts, Filters>} descriptor - The table descriptor.\n * @param {ServiceClassType<Service>} serviceClass - The service class type.\n *\n * @return {TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>} - The data provider for the table component.\n */\nexport function tableviewToDataProvider<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n descriptor: TableviewDescriptorInst<Model, Sorts, Filters>,\n serviceClass: ServiceClassType<Service>\n): TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>;\nexport function tableviewToDataProvider<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model, ServiceClass = ServiceClassType<Service>>(\n descriptor: TableviewDescriptorInst<Model, Sorts, Filters>,\n serviceType?: ServiceClass\n) {\n return typeof serviceType !== 'undefined'\n ? new TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>(undefined, serviceType as ServiceClassType<Service>)\n : new TableviewDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined>(undefined, undefined);\n}\n","import {ClassType, CommonsInternalError, ILookupDataProvider, TypeRegistry} from '@mediusinc/mng-commons/core';\nimport {EnumDescriptor, findClassTitleAttribute} from '@mediusinc/mng-commons/model';\nimport {\n ColumnDisplayTypeEnum,\n ColumnTypeEnum,\n modifyTableClassAttributeColumnTypeUnsafe,\n modifyTableColumnFilterLookupUnsafe,\n tableDescriptorModifyEnumColumnUnsafe\n} from '@mediusinc/mng-commons/table/api';\n\nimport {getFieldInputTypeFromColumnType} from '../../editor/helpers/class-attribute-converter';\nimport {modifyEditorClassAttributeFieldEnumUnsafe, modifyEditorClassAttributeFieldTypeUnsafe, modifyEditorFieldLookupUnsafe} from '../../editor/helpers/editor-descriptor-helpers';\nimport {FieldInputTypeEnum} from '../../editor/models/field.model';\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\nimport {getTableviewClassAttributeDef} from './class-attribute-converter';\n\n/**\n * creates column and field with custom type, for example currency\n * if field exists, it is replaced\n * DO NOT USE WITH TYPES WHERE ARGS ARE REQUIRED - ERROR WILL BE THROWN\n * for enum use withEnumType\n * for custom class use withClassType\n * @param descriptor Tableview descriptor\n * @param property name of field\n * @param columnType required column type\n * @param fieldType optional, if not provided it is converted from column type\n * @param columnDisplayType optional\n */\nexport function modifyTableviewClassAttributeType<TableviewModel>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any>,\n property: keyof TableviewModel,\n columnType: ColumnTypeEnum,\n fieldType?: FieldInputTypeEnum,\n columnDisplayType?: ColumnDisplayTypeEnum\n): boolean {\n return modifyTableviewClassAttributeTypeUnsafe(descriptor, property as string, columnType, fieldType, columnDisplayType);\n}\n\nexport function modifyTableviewClassAttributeTypeUnsafe<TableviewModel>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any>,\n property: string,\n columnType: ColumnTypeEnum,\n fieldType?: FieldInputTypeEnum,\n columnDisplayType?: ColumnDisplayTypeEnum\n): boolean {\n if (!descriptor.model.type) {\n throw new CommonsInternalError(`withModifiedType cannot be executed for property ${property}: Model type is not defined.`);\n }\n if (columnType === ColumnTypeEnum.Enum) {\n throw new CommonsInternalError('Do not use with types where args are required', {name: 'TableviewDescriptorError'});\n }\n\n const attributeDef = getTableviewClassAttributeDef(descriptor.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n fieldType ??= getFieldInputTypeFromColumnType(columnType, columnDisplayType);\n attributeDef.fieldType = fieldType;\n modifyTableClassAttributeColumnTypeUnsafe(descriptor.table, property, columnType, columnDisplayType);\n modifyEditorClassAttributeFieldTypeUnsafe(descriptor.editEditor, property, fieldType);\n modifyEditorClassAttributeFieldTypeUnsafe(descriptor.addEditor, property, fieldType);\n modifyEditorClassAttributeFieldTypeUnsafe(descriptor.detailsEditor, property, fieldType);\n return true;\n }\n\n return false;\n}\n\n/**\n * creates column with enum type\n * if fields exists, it is replaced\n * @param descriptor Tableview descriptor\n * @param property property name\n * @param enumDesc type of enum\n * @param fieldType type of field, optional, default is Text\n */\nexport function modifyTableviewClassAttributeEnum<TableviewModel, Property extends keyof TableviewModel, Enum extends NonNullable<TableviewModel[Property]>>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any>,\n property: Property,\n enumDesc?: EnumDescriptor<Enum>,\n fieldType?: FieldInputTypeEnum\n): boolean {\n return modifyTableviewClassAttributeEnumUnsafe<TableviewModel, Enum>(descriptor, property as string, enumDesc, fieldType);\n}\n\nexport function modifyTableviewClassAttributeEnumUnsafe<TableviewModel, Enum = any>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any>,\n property: string,\n enumDesc?: EnumDescriptor<Enum>,\n fieldType?: FieldInputTypeEnum\n): boolean {\n if (!descriptor.model.type) {\n throw new CommonsInternalError(`withModifiedEnum cannot be executed for property ${property}: Model type is not defined.`);\n }\n const attributeDef = getTableviewClassAttributeDef(descriptor.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n attributeDef.fieldType = fieldType ?? FieldInputTypeEnum.Text;\n tableDescriptorModifyEnumColumnUnsafe(descriptor.table, property, enumDesc);\n modifyEditorClassAttributeFieldEnumUnsafe(descriptor.editEditor, property, enumDesc);\n modifyEditorClassAttributeFieldEnumUnsafe(descriptor.addEditor, property, enumDesc);\n modifyEditorClassAttributeFieldEnumUnsafe(descriptor.detailsEditor, property, enumDesc);\n return true;\n }\n\n return false;\n}\n\n/**\n * generates column with custom class type\n * field is generated only if lookupProvider is provided\n * @param descriptor Tableview descriptor\n * @param property property name\n * @param type class type of object\n * @param titleProperty\n * @param lookupProvider\n * @param optionsLabelProperty\n * @param filterProperty\n */\nexport function modifyTableviewLookup<TableviewModel, Property extends keyof TableviewModel, LookupModel = NonNullable<TableviewModel[Property]>>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any>,\n property: Property,\n type?: ClassType<LookupModel>,\n lookupProvider?: ILookupDataProvider<LookupModel>,\n titleProperty?: keyof LookupModel,\n optionsLabelProperty?: keyof LookupModel,\n filterProperty?: keyof LookupModel\n): boolean {\n return modifyTableviewLookupUnsafe(descriptor, property as string, type, lookupProvider, titleProperty as string, optionsLabelProperty as string, filterProperty as string);\n}\n\nexport function modifyTableviewLookupUnsafe<TableviewModel, LookupModel>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any>,\n property: string,\n type?: ClassType<LookupModel>,\n lookupProvider?: ILookupDataProvider<LookupModel>,\n titleProperty?: string,\n optionsLabelProperty?: string,\n filterProperty?: string\n): boolean {\n if (!descriptor.model.type) {\n throw new CommonsInternalError(`withModifiedLookup cannot be executed for property ${property}: Model type is not defined.`);\n }\n\n const attributeDef = getTableviewClassAttributeDef(descriptor.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n type ??= attributeDef.classType ?? TypeRegistry.get().findType(attributeDef.type);\n titleProperty ??= type ? findClassTitleAttribute(type) ?? undefined : undefined;\n optionsLabelProperty ??= titleProperty;\n attributeDef.columnType = ColumnTypeEnum.String;\n attributeDef.fieldType = FieldInputTypeEnum.Text;\n\n if (lookupProvider != null) {\n modifyTableColumnFilterLookupUnsafe(descriptor.table, property, lookupProvider, optionsLabelProperty, filterProperty);\n modifyEditorFieldLookupUnsafe(descriptor.addEditor, property, lookupProvider, optionsLabelProperty);\n modifyEditorFieldLookupUnsafe(descriptor.detailsEditor, property, lookupProvider, optionsLabelProperty);\n modifyEditorFieldLookupUnsafe(descriptor.editEditor, property, lookupProvider, optionsLabelProperty);\n return true;\n } else {\n const column = descriptor.table.getColumnUnsafe(property) ?? descriptor.addColumnUnsafe(property);\n if (titleProperty) {\n column.withGetter(value => value?.[titleProperty as keyof object]);\n }\n return true;\n }\n }\n\n return false;\n}\n","// action descriptors\nexport * from './action/descriptors/action.descriptor';\nexport * from './action/descriptors/action-confirmation.descriptor';\nexport * from './action/descriptors/action-descriptor.factory';\nexport * from './action/descriptors/action-editor.descriptor';\nexport * from './action/descriptors/action-editor-descriptor.factory';\nexport * from './action/descriptors/action-link.descriptor';\nexport * from './action/descriptors/action-link-descriptor.factory';\n\n// action helpers\nexport * from './action/helpers/data-provider-executors';\n\n// action model execution\nexport * from './action/models/execution/action-context.model';\nexport * from './action/models/execution/action-context-validation.model';\nexport * from './action/models/execution/action-execution-error.model';\nexport * from './action/models/execution/action-instance.model';\nexport * from './action/models/execution/action-instance-state.model';\nexport * from './action/models/execution/view-container.model';\n\n// action model\nexport * from './action/models/action.type';\nexport * from './action/models/action-component.model';\nexport * from './action/models/action-descriptor.types';\nexport * from './action/models/action-editor.model';\nexport * from './action/models/action-error.model';\nexport * from './action/models/tableview-action-default-categories.model';\n\n// action services\nexport * from './action/services/tokens/data-language-dropdown.token';\nexport * from './action/services/data-provider-executor.service';\n\n// editor data providers\nexport * from './editor/data-providers/editor.data-provider';\nexport * from './editor/data-providers/editor-data-provider.factory';\n\n// editor descriptors\nexport * from './editor/descriptors/editor.descriptor';\nexport * from './editor/descriptors/editor-descriptor.factory';\nexport * from './editor/descriptors/field.descriptor';\nexport * from './editor/descriptors/field-action.descriptor';\nexport * from './editor/descriptors/field-base.descriptor';\nexport * from './editor/descriptors/field-group.descriptor';\nexport * from './editor/descriptors/field-lookup.descriptor';\nexport * from './editor/descriptors/field-many.descriptor';\nexport * from './editor/descriptors/field-validation.descriptor';\n\n// editor helpers\nexport * from './editor/helpers/class-attribute-converter';\nexport * from './editor/helpers/editor-descriptor-helpers';\n\n// editor models\nexport * from './editor/models/class-tableview-attribute.model';\nexport * from './editor/models/editor.model';\nexport * from './editor/models/editor-fields.model';\nexport * from './editor/models/field.model';\nexport * from './editor/models/field-action-context.model';\nexport * from './editor/models/field-validation.model';\nexport * from './editor/models/form-editor.event';\nexport * from './editor/models/form-editor.interface';\nexport * from './editor/models/formly-custom-field.model';\nexport * from './editor/models/formly-field.model';\nexport * from './editor/models/formly-options.model';\nexport * from './editor/models/radio.model';\nexport * from './editor/models/field-image-preview.model';\n\n// tableview data providers\nexport * from './tableview/data-providers/tableview.data-provider';\nexport * from './tableview/data-providers/tableview-data-provider.factory';\n\n// tableview descriptors\nexport * from './tableview/descriptors/tableview.descriptor';\nexport * from './tableview/descriptors/tableview-descriptor.factory';\n\n// tableview helpers\nexport * from './tableview/helpers/class-attribute-converter';\nexport * from './tableview/helpers/files-export';\nexport * from './tableview/helpers/tableview-create';\nexport * from './tableview/helpers/tableview-data-provider-descriptor-convert';\nexport * from './tableview/helpers/tableview-default-actions';\nexport * from './tableview/helpers/tableview-descriptor-helpers';\nexport * from './tableview/helpers/tableview-input-builder';\n\n// tableview models\nexport * from './tableview/models/class-tableview-attribute.model';\nexport * from './tableview/models/tableview-input.model';\nexport * from './tableview/models/tableview-route.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons-tableview-api.mjs","sources":["../../tableview/api/src/action/models/action.type.ts","../../tableview/api/src/action/models/tableview-action-default-categories.model.ts","../../tableview/api/src/action/descriptors/action-confirmation.descriptor.ts","../../tableview/api/src/action/descriptors/action.descriptor.ts","../../tableview/api/src/action/descriptors/action-descriptor.factory.ts","../../tableview/api/src/editor/data-providers/editor.data-provider.ts","../../tableview/api/src/action/descriptors/action-editor.descriptor.ts","../../tableview/api/src/action/descriptors/action-editor-descriptor.factory.ts","../../tableview/api/src/action/descriptors/action-link.descriptor.ts","../../tableview/api/src/action/descriptors/action-link-descriptor.factory.ts","../../tableview/api/src/action/models/action-error.model.ts","../../tableview/api/src/action/helpers/data-provider-executors.ts","../../tableview/api/src/action/models/execution/action-instance-state.model.ts","../../tableview/api/src/action/services/tokens/data-language-dropdown.token.ts","../../tableview/api/src/action/services/data-provider-executor.service.ts","../../tableview/api/src/editor/data-providers/editor-data-provider.factory.ts","../../tableview/api/src/editor/models/editor.model.ts","../../tableview/api/src/editor/models/field.model.ts","../../tableview/api/src/editor/descriptors/field-validation.descriptor.ts","../../tableview/api/src/editor/descriptors/field-base.descriptor.ts","../../tableview/api/src/editor/descriptors/field-action.descriptor.ts","../../tableview/api/src/editor/descriptors/field-group.descriptor.ts","../../tableview/api/src/editor/descriptors/field-lookup.descriptor.ts","../../tableview/api/src/editor/descriptors/field-many.descriptor.ts","../../tableview/api/src/editor/descriptors/field.descriptor.ts","../../tableview/api/src/editor/descriptors/editor.descriptor.ts","../../tableview/api/src/editor/helpers/class-attribute-converter.ts","../../tableview/api/src/editor/helpers/editor-descriptor-helpers.ts","../../tableview/api/src/editor/descriptors/editor-descriptor.factory.ts","../../tableview/api/src/editor/models/form-editor.event.ts","../../tableview/api/src/editor/models/formly-custom-field.model.ts","../../tableview/api/src/tableview/data-providers/tableview.data-provider.ts","../../tableview/api/src/tableview/data-providers/tableview-data-provider.factory.ts","../../tableview/api/src/tableview/descriptors/tableview.descriptor.ts","../../tableview/api/src/tableview/descriptors/tableview-descriptor.factory.ts","../../tableview/api/src/tableview/helpers/class-attribute-converter.ts","../../tableview/api/src/tableview/helpers/files-export.ts","../../tableview/api/src/tableview/helpers/tableview-default-actions.ts","../../tableview/api/src/tableview/helpers/tableview-input-builder.ts","../../tableview/api/src/tableview/helpers/tableview-create.ts","../../tableview/api/src/tableview/helpers/tableview-data-provider-descriptor-convert.ts","../../tableview/api/src/tableview/helpers/tableview-descriptor-helpers.ts","../../tableview/api/src/index.ts","../../tableview/api/src/mediusinc-mng-commons-tableview-api.ts"],"sourcesContent":["export enum ActionPositionEnum {\n ToolbarLeft,\n ToolbarRight,\n TableHeader,\n RowInline,\n RowClick,\n FooterLeft,\n FooterRight\n}\n\nexport enum ActionActivationTriggerEnum {\n OnClick, // action is triggered for activation on click\n OnRoute // action is triggered for activation by route url\n}\n\nexport enum ActionTypeEnum {\n Direct, // action is directly activated and executed\n Editor // editor providing middle step for activation\n}\n\nexport enum ActionEditorSubmitTypeEnum {\n Submit,\n Cancel\n}\n","/**\n * Default categories for tableview actions\n */\nexport class TableviewActionDefaultCategories {\n public static readonly READ = 'read';\n public static readonly ADD = 'add';\n public static readonly EDIT = 'edit';\n public static readonly DELETE = 'delete';\n public static readonly DETAILS = 'details';\n}\n","import {Confirmation} from 'primeng/api';\n\nimport {StyleLevelEnum} from '@mediusinc/mng-commons/core';\nimport {ActionButtonDescriptor, ButtonStyleBuilder} from '@mediusinc/mng-commons/form/api';\n\nimport {IActionContext} from '../models/execution/action-context.model';\n\nexport class ActionConfirmationDescriptor<Model> {\n private _icon?: string; // Icon to display next to message.\n private _title?: string | null; // Translation for title text of the dialog.\n private _message?: string | null; // Translation for body text of the dialog.\n\n private _acceptButton: ActionButtonDescriptor;\n private _rejectButton?: ActionButtonDescriptor;\n\n private _closeOnEscape = true; // Defines if dialog closes when esc key is pressed.\n private _closable = true; // Defines if dialog is closable.\n private _runConfirmationConfigMapFn?: ConfigurationConfigMapFn<Model>; //function used to generate the confirmation dialogue. **WARNING** changing the *accept* and *reject* methods of the *confirmConfig* parameter may lead to unexpected behaviour\n\n constructor() {\n this._acceptButton = new ActionButtonDescriptor().withIcon('pi pi-check').withStyleClass(new ButtonStyleBuilder(StyleLevelEnum.Default));\n this._rejectButton = new ActionButtonDescriptor().withIcon('pi pi-times').withStyleClass(new ButtonStyleBuilder(StyleLevelEnum.Default).withTextButton());\n this._icon = 'pi pi-exclamation-triangle';\n }\n\n public withIcon(icon?: string): this {\n this._icon = icon;\n return this;\n }\n\n public withTitle(title?: string | null): this {\n this._title = title;\n return this;\n }\n\n public withMessage(message?: string | null): this {\n this._message = message;\n return this;\n }\n\n public withAcceptButton(actionButtonDescriptor: ActionButtonDescriptor): this {\n this._acceptButton = actionButtonDescriptor;\n return this;\n }\n\n public withRejectButton(actionButtonDescriptor?: ActionButtonDescriptor): this {\n this._rejectButton = actionButtonDescriptor;\n return this;\n }\n\n /**\n * set if dialog can be closed on escaped pressed\n * if true, then closable is also set to true\n * @param closeOnEscape\n */\n public withCloseOnEscape(closeOnEscape: boolean): this {\n if (closeOnEscape) {\n this._closable = true;\n }\n this._closeOnEscape = closeOnEscape;\n return this;\n }\n\n public withClosable(closable: boolean): this {\n this._closable = closable;\n return this;\n }\n\n public withRunConfirmationConfigMapFn(runConfirmationConfigMapFn?: ConfigurationConfigMapFn<Model>): this {\n this._runConfirmationConfigMapFn = runConfirmationConfigMapFn;\n return this;\n }\n\n public get icon() {\n return this._icon;\n }\n\n public get title() {\n return this._title;\n }\n\n public get message() {\n return this._message;\n }\n\n public get closeOnEscape() {\n return this._closeOnEscape;\n }\n\n public get closable() {\n return this._closable;\n }\n\n public get runConfirmationConfigMapFn() {\n return this._runConfirmationConfigMapFn;\n }\n\n public get acceptButton() {\n return this._acceptButton;\n }\n\n public get rejectButton() {\n return this._rejectButton;\n }\n}\n\nexport type ConfigurationConfigMapFn<Item> = (ctx: IActionContext<Item, any>, confirmConfig: Confirmation) => Confirmation;\n","import {InjectionToken, Type} from '@angular/core';\n\nimport {of} from 'rxjs';\n\nimport {\n APermissions,\n ClassType,\n CommonsInternalError,\n DataProviderInst,\n IActionDescriptor,\n IDataProvider,\n LoggerService,\n ServiceClassType,\n StyleLevelEnum,\n StyleSizeEnum,\n findReflectTypeName\n} from '@mediusinc/mng-commons/core';\nimport {ActionButtonDescriptor, ButtonStyleBuilder} from '@mediusinc/mng-commons/form/api';\nimport {ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {IActionComponent} from '../models/action-component.model';\nimport {ActionRunFnType, ActionValidationFnType} from '../models/action-descriptor.types';\nimport {ActionActivationTriggerEnum, ActionPositionEnum, ActionTypeEnum} from '../models/action.type';\nimport {IActionContext} from '../models/execution/action-context.model';\nimport {TableviewActionDefaultCategories} from '../models/tableview-action-default-categories.model';\nimport {ActionConfirmationDescriptor} from './action-confirmation.descriptor';\n\nexport type ActionDescriptorCreateOptsProviderType<Item, Service> = {\n serviceType?: ServiceClassType<Service>;\n dataProvider?: IDataProvider<Item, Service>;\n};\n\nexport type ActionDescriptorCreateOptsParentType = {\n parentModel?: ModelDescriptor<any>;\n parentProperty?: string;\n};\n\nexport type ActionDescriptorConstructorOptsType<Item, Service> = ActionDescriptorCreateOptsParentType &\n ActionDescriptorCreateOptsProviderType<Item, Service> & {\n model?: ModelDescriptor<Item>;\n };\n\nexport class ActionDescriptorInst<Item, Service = any, ReturnItem = Item> implements IActionDescriptor<Item, Service> {\n protected readonly _model?: ModelDescriptor<Item>;\n protected readonly _actionName: string;\n protected readonly _actionNameLong: string;\n protected readonly _parentModel?: ModelDescriptor<any>;\n protected readonly _parentProperty?: string;\n\n protected readonly _dataProvider?: IDataProvider<Item, Service>;\n\n protected _i18nModelActionBaseKey?: string;\n\n protected _type: ActionTypeEnum = ActionTypeEnum.Direct;\n protected _activationTrigger: ActionActivationTriggerEnum = ActionActivationTriggerEnum.OnClick;\n protected _position: ActionPositionEnum = ActionPositionEnum.ToolbarRight;\n protected _level: StyleLevelEnum = StyleLevelEnum.Default;\n private _positionTableviewCategories?: string[];\n protected _tableviewCategory?: string;\n\n protected _routeUrl: string | null = null;\n\n protected _runFunction?: ActionRunFnType<Item, Service, ReturnItem>;\n protected _isVisibleFunction?: ActionValidationFnType<Item, Service>;\n protected _isEnabledFunction?: ActionValidationFnType<Item, Service>;\n\n protected _runConfirmationDialogDescriptor?: ActionConfirmationDescriptor<Item>;\n\n protected _hasRunNotificationSuccess = true;\n protected _runNotificationSuccessTitle?: string;\n protected _runNotificationSuccessMessage?: string;\n\n protected _hasRunNotificationError = true;\n protected _runNotificationErrorTitle?: string;\n protected _runNotificationErrorMessage?: string;\n\n protected _afterRunAction?: ActionDescriptorInst<any> | ((ctx: IActionContext<Item, any>) => ActionDescriptorInst<any>);\n protected _onRunErrorAction?: ActionDescriptorInst<Item> | ((ctx: IActionContext<Item, any>) => ActionDescriptorInst<Item>);\n\n // security\n protected _permissions?: APermissions;\n\n //button\n protected _button = new ActionButtonDescriptor();\n\n // multiple row selection\n protected _hasItemsSelection = false;\n\n // custom action component\n protected _component?: Type<IActionComponent<Item>>;\n protected _componentFromDi?: InjectionToken<Type<any>>;\n\n // subactions\n protected _subactionsAsMenu = false;\n protected _subactions: Array<ActionDescriptorInst<Item>> = [];\n\n public constructor(actionName: string, cfg?: ActionDescriptorConstructorOptsType<Item, Service>) {\n this._model = cfg?.model;\n this._actionName = actionName;\n\n if ((cfg?.parentModel && !cfg?.parentProperty) || (!cfg?.parentProperty && cfg?.parentProperty)) {\n throw new CommonsInternalError(\n `Provide both the parent model and parent property or none: ${this._actionName}, ${cfg?.parentModel?.i18nBaseKey}, ${cfg?.parentProperty}.`\n );\n }\n this._parentModel = cfg?.parentModel;\n this._parentProperty = cfg?.parentProperty;\n\n this.setI18nModelActionBaseKey();\n\n if (cfg?.serviceType) {\n this._dataProvider = new DataProviderInst<Item, Service>(this._model?.type, cfg.serviceType);\n } else if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n\n let displayName = actionName;\n if (this._model) displayName = this._model.i18nBaseKey ? `${this._model.i18nBaseKey}.${displayName}` : displayName;\n if (this._parentModel) {\n displayName = `${this._parentModel.i18nBaseKey}.${this._parentProperty}_${displayName}`;\n }\n this._actionNameLong = displayName;\n }\n\n public get model() {\n return this._model;\n }\n\n public get parentModel() {\n return this._parentModel;\n }\n\n public get parentProperty() {\n return this._parentProperty;\n }\n\n public get i18nModelActionBaseKey() {\n return this._i18nModelActionBaseKey;\n }\n\n public get type() {\n return this._type;\n }\n\n public get activationTrigger() {\n return this._activationTrigger;\n }\n\n public get position() {\n return this._position;\n }\n\n public get level() {\n return this._level;\n }\n\n public get routeUrl() {\n return this._routeUrl;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get hasRunFunction(): boolean {\n return typeof this._runFunction === 'function';\n }\n\n public get runFunction(): ActionRunFnType<Item, Service, ReturnItem> {\n if (!this._runFunction) {\n throw new CommonsInternalError(`Run function is not defined for action ${this._actionNameLong} and cannot be invoked`);\n }\n return this._runFunction;\n }\n\n public get isVisibleFunction() {\n return this._isVisibleFunction;\n }\n\n public get isEnabledFunction() {\n return this._isEnabledFunction;\n }\n\n public get actionName() {\n return this._actionName;\n }\n\n public get actionNameLong() {\n return this._actionNameLong;\n }\n\n public get className() {\n return this.button.styleClass.customClass;\n }\n\n public get runConfirmationDialogDescriptor() {\n return this._runConfirmationDialogDescriptor;\n }\n\n public get hasRunConfirmation() {\n return this._runConfirmationDialogDescriptor !== null && this._runConfirmationDialogDescriptor !== undefined;\n }\n\n public get hasRunNotificationSuccess() {\n return this._hasRunNotificationSuccess;\n }\n\n public get runNotificationSuccessTitle() {\n return this._runNotificationSuccessTitle;\n }\n\n public get runNotificationSuccessMessage() {\n return this._runNotificationSuccessMessage;\n }\n\n public get hasRunNotificationError() {\n return this._hasRunNotificationError;\n }\n\n public get runNotificationErrorTitle() {\n return this._runNotificationErrorTitle;\n }\n\n public get runNotificationErrorMessage() {\n return this._runNotificationErrorMessage;\n }\n\n public get afterRunAction() {\n return this._afterRunAction;\n }\n\n public get onRunErrorAction() {\n return this._onRunErrorAction;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public get tableviewCategory() {\n return this._tableviewCategory;\n }\n\n public get hasItemsSelection() {\n return this._hasItemsSelection;\n }\n\n public get button() {\n return this._button;\n }\n\n public get component() {\n return this._component;\n }\n\n public get componentFromDi() {\n return this._componentFromDi;\n }\n\n public get positionTableviewCategories() {\n return this._positionTableviewCategories;\n }\n\n public get subactionsAsMenu() {\n return this._subactionsAsMenu;\n }\n\n public get subactions() {\n return this._subactions;\n }\n\n protected setI18nModelActionBaseKey(base?: string) {\n if (this._parentModel || this._model) {\n this._i18nModelActionBaseKey = this._parentModel\n ? `${this._parentModel.i18nBaseKey}.actions.${this._parentProperty}_${this._actionName}`\n : `${base ?? this._model!.i18nBaseKey}.actions.${this._actionName}`;\n }\n }\n\n public withRunFunction(fn: ActionRunFnType<Item, Service, ReturnItem>): this {\n this._runFunction = fn;\n return this;\n }\n\n public withIsVisibleFunction(fn?: ActionValidationFnType<Item, Service>): this {\n this._isVisibleFunction = fn;\n return this;\n }\n\n public withIsEnabledFunction(fn?: ActionValidationFnType<Item, Service>): this {\n this._isEnabledFunction = fn;\n return this;\n }\n\n public withRouteTrigger(routeUrl: string): this {\n this._activationTrigger = ActionActivationTriggerEnum.OnRoute;\n this._routeUrl = routeUrl;\n return this;\n }\n\n public withPosition(position: ActionPositionEnum): this {\n this._position = position;\n return this;\n }\n\n /**\n * creates confirmation action with default style based on action descriptor\n */\n public withRunConfirmation(): ActionConfirmationDescriptor<Item> {\n this._runConfirmationDialogDescriptor = new ActionConfirmationDescriptor<Item>();\n this._runConfirmationDialogDescriptor.acceptButton.styleClass.withActionLevel(this._level);\n this._runConfirmationDialogDescriptor.rejectButton?.styleClass.withActionLevel(this._level);\n\n return this._runConfirmationDialogDescriptor;\n }\n\n /**\n * Add a configuration dialogue to action using ActionConfigurationDescriptor\n * @param runConfirmationDialogDescriptor descriptor with customizable information for dialog\n */\n public withRunConfirmationDescriptor(runConfirmationDialogDescriptor?: ActionConfirmationDescriptor<Item>): this {\n this._runConfirmationDialogDescriptor = runConfirmationDialogDescriptor;\n return this;\n }\n\n public withRunNotificationSuccess(title?: string, message?: string, hasNotification = true): this {\n this._hasRunNotificationSuccess = hasNotification;\n this._runNotificationSuccessTitle = title;\n this._runNotificationSuccessMessage = message;\n return this;\n }\n\n public withRunNotificationError(title?: string, message?: string, hasNotification = true): this {\n this._hasRunNotificationError = hasNotification;\n this._runNotificationErrorTitle = title;\n this._runNotificationErrorMessage = message;\n return this;\n }\n\n public withAfterRunAction<Return, Service = any>(action?: ActionDescriptorInst<Return> | ((ctx: IActionContext<Item, Service>) => ActionDescriptorInst<Return>)): this {\n this._afterRunAction = action;\n return this;\n }\n\n public withOnRunErrorAction<S = any>(action?: ActionDescriptorInst<Item> | ((ctx: IActionContext<Item, S>) => ActionDescriptorInst<Item>)): this {\n this._onRunErrorAction = action;\n return this;\n }\n\n public withPermissions(permissions: APermissions): this {\n if (this._tableviewCategory) {\n LoggerService.get().debug(\n `WARNING: Permissions set on action ${this._actionNameLong} with route type '${this._tableviewCategory}' will be omitted in route guard validation.`\n );\n }\n this._permissions = permissions;\n return this;\n }\n\n public withTableviewCategory(permissionsRouteType: string): this {\n this._tableviewCategory = permissionsRouteType;\n return this;\n }\n\n public withButtonDescriptor(button: ActionButtonDescriptor): this {\n this._button = button;\n return this;\n }\n\n public withButton(label?: string | null, icon: string | null = null, styleLevel = StyleLevelEnum.Default, styleText = false): this {\n this._button = new ActionButtonDescriptor().withLabel(label).withIcon(icon).withStyleClass(new ButtonStyleBuilder(styleLevel).withTextButton(styleText));\n return this;\n }\n\n public withItemsSelection(hasSelection = true): this {\n this._hasItemsSelection = hasSelection;\n this._isEnabledFunction = this._isEnabledFunction ?? (ctx => of((ctx.parameters.selectedItems?.length ?? 0) > 0));\n return this;\n }\n\n public withComponent(component: Type<IActionComponent<Item>>): this {\n this._component = component;\n return this;\n }\n\n public withComponentFromDi(injectionToken: InjectionToken<Type<any>>): this {\n this._componentFromDi = injectionToken;\n return this;\n }\n\n public withPositionTableviewCategories(positionTableviewCategories: string[]): this {\n this._positionTableviewCategories = positionTableviewCategories;\n return this;\n }\n\n public withI18nBase(base: ClassType<unknown> | string): this {\n if (typeof base !== 'string') {\n const typeName = findReflectTypeName(base);\n if (!typeName) {\n throw new CommonsInternalError(`Could not find define i18nBaseKey for ${base} on action ${this.actionNameLong}`);\n }\n base = typeName;\n }\n this.setI18nModelActionBaseKey(base);\n return this;\n }\n\n public withSubactionsAsMenu(subactionsAsMenu = true): this {\n this._subactionsAsMenu = subactionsAsMenu;\n return this;\n }\n\n public withSubactions(...subactions: Array<ActionDescriptorInst<Item>>): this {\n this._subactions.push(...subactions);\n return this;\n }\n\n public copyTo(descriptor: ActionDescriptorInst<Item, Service, ReturnItem>): ActionDescriptorInst<Item, Service, ReturnItem> {\n descriptor._i18nModelActionBaseKey = this._i18nModelActionBaseKey;\n descriptor._type = this._type;\n descriptor._activationTrigger = this._activationTrigger;\n descriptor._position = this._position;\n descriptor._level = this._level;\n descriptor._positionTableviewCategories = this._positionTableviewCategories;\n\n descriptor._tableviewCategory = this._tableviewCategory;\n descriptor._routeUrl = this._routeUrl;\n\n descriptor._runFunction = this._runFunction;\n descriptor._isVisibleFunction = this._isVisibleFunction;\n descriptor._isEnabledFunction = this._isEnabledFunction;\n\n descriptor._runConfirmationDialogDescriptor = this._runConfirmationDialogDescriptor;\n\n descriptor._hasRunNotificationSuccess = this._hasRunNotificationSuccess;\n descriptor._runNotificationSuccessTitle = this._runNotificationSuccessTitle;\n descriptor._runNotificationSuccessMessage = this._runNotificationSuccessMessage;\n\n descriptor._hasRunNotificationError = this._hasRunNotificationError;\n descriptor._runNotificationErrorTitle = this._runNotificationErrorTitle;\n descriptor._runNotificationErrorMessage = this._runNotificationErrorMessage;\n\n descriptor._afterRunAction = this._afterRunAction;\n descriptor._onRunErrorAction = this._onRunErrorAction;\n\n descriptor._permissions = this._permissions;\n\n descriptor._button = this._button.copy();\n\n descriptor._hasItemsSelection = this._hasItemsSelection;\n descriptor._component = this._component;\n descriptor._subactionsAsMenu = this._subactionsAsMenu;\n descriptor._subactions = this._subactions;\n\n return descriptor;\n }\n}\n\nexport class ActionDeleteDescriptorInst<Item, Service = any> extends ActionDescriptorInst<Item, Service> {\n public static readonly ACTION_NAME = 'delete';\n\n constructor(model: ModelDescriptor<Item>, cfg?: ActionDescriptorCreateOptsProviderType<Item, Service>) {\n super(ActionDeleteDescriptorInst.ACTION_NAME, {model, ...cfg});\n this.withPosition(ActionPositionEnum.RowInline);\n this.button.styleClass.withSize(StyleSizeEnum.Small);\n this.button.styleClass.withActionLevel(StyleLevelEnum.Danger);\n this.withRunConfirmation();\n this.withTableviewCategory(TableviewActionDefaultCategories.DELETE);\n this.button.withLabel(null).withIcon('pi pi-trash');\n }\n}\n","import {ClassType, IDataProvider, ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {ActionDeleteDescriptorInst, ActionDescriptorCreateOptsParentType, ActionDescriptorCreateOptsProviderType, ActionDescriptorInst} from './action.descriptor';\n\nexport type ActionDescriptorCreateFromClassOpts<Model> = ActionDescriptorCreateOptsModel<Model> & ActionDescriptorCreateOptsI18nType & ActionDescriptorCreateOptsParentType;\n\nexport type ActionDescriptorCreateOptsI18nType = {\n i18nBaseKey?: string | ClassType<any>;\n};\n\nexport type ActionDescriptorCreateOptsModel<Model> = {\n idProperty?: keyof Model;\n titleProperty?: keyof Model;\n};\n\nexport type ActionProviderType<Model, Service> = ServiceClassType<Service> | IDataProvider<Model, Service>;\n\nexport const actionGetProviderCfgObj = <Model, Service>(serviceOrDataProvider?: ActionProviderType<Model, Service>) => {\n const cfg: ActionDescriptorCreateOptsProviderType<Model, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider as IDataProvider<Model, Service>;\n } else {\n cfg.serviceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\nexport class ActionDescriptor extends ActionDescriptorInst<any> {\n protected constructor() {\n super('internal');\n }\n\n public static create<Model>(actionName: string, cfg?: ActionDescriptorCreateOptsParentType): ActionDescriptorInst<Model, undefined> {\n return action<Model>(actionName, {\n ...cfg\n });\n }\n\n public static createWithProvider<Model, Service>(\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n ): ActionDescriptorInst<Model, Service> {\n return actionWithProvider<Model, Service>(serviceProvider, actionName, cfg);\n }\n\n public static fromModel<Model>(model: ModelDescriptor<Model>, actionName: string, cfg?: ActionDescriptorCreateOptsParentType): ActionDescriptorInst<Model, undefined> {\n return actionFromModel<Model>(model, actionName, cfg);\n }\n\n public static fromModelWithProvider<Model, Service>(\n model: ModelDescriptor<Model>,\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n ): ActionDescriptorInst<Model, Service> {\n return actionFromModel<Model, Service>(model, serviceProvider, actionName, cfg);\n }\n\n public static fromClass<Model>(type: ClassType<Model>, actionName: string, cfg?: ActionDescriptorCreateFromClassOpts<Model>): ActionDescriptorInst<Model, undefined> {\n return actionFromClass<Model>(type, actionName, cfg);\n }\n\n public static fromClassWithProvider<Model, Service>(\n type: ClassType<Model>,\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateFromClassOpts<Model>\n ): ActionDescriptorInst<Model, Service> {\n return actionFromClass<Model, Service>(type, serviceProvider, actionName, cfg);\n }\n}\n\nexport function action<Model>(actionName: string, cfg?: ActionDescriptorCreateOptsParentType): ActionDescriptorInst<Model, undefined>;\nexport function action<Model>(type: TypeDescriptor<Model>, actionName: string, cfg?: ActionDescriptorCreateOptsParentType): ActionDescriptorInst<Model, undefined>;\nexport function action<Model>(\n typeOrActionName: TypeDescriptor<Model> | string,\n actionNameOrCfg?: string | ActionDescriptorCreateOptsParentType,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionDescriptorInst<Model, undefined> {\n if (typeof typeOrActionName === 'string') {\n return new ActionDescriptorInst<Model, undefined>(\n typeOrActionName,\n typeof actionNameOrCfg === 'string'\n ? undefined\n : {\n ...actionNameOrCfg\n }\n );\n } else {\n return new ActionDescriptorInst<Model, undefined>(typeof actionNameOrCfg === 'string' ? actionNameOrCfg : 'default', {\n ...cfg\n });\n }\n}\n\nexport function actionWithProvider<Model, Service>(\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionDescriptorInst<Model, Service>;\nexport function actionWithProvider<Model, Service>(\n type: TypeDescriptor<Model>,\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionDescriptorInst<Model, Service>;\nexport function actionWithProvider<Model, Service>(\n typeOrServiceProvider: TypeDescriptor<Model> | ActionProviderType<Model, Service>,\n serviceProviderOrActionName: ActionProviderType<Model, Service> | string,\n actionNameOrCfg?: string | ActionDescriptorCreateOptsParentType,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionDescriptorInst<Model, Service> {\n const actionName = typeof serviceProviderOrActionName === 'string' ? serviceProviderOrActionName : typeof actionNameOrCfg === 'string' ? actionNameOrCfg : 'default';\n if (typeOrServiceProvider instanceof TypeDescriptor) {\n return new ActionDescriptorInst<Model, Service>(actionName, {\n ...(typeof serviceProviderOrActionName === 'string' ? {} : actionGetProviderCfgObj(serviceProviderOrActionName)),\n ...(typeof actionNameOrCfg === 'string' ? {} : actionNameOrCfg),\n ...cfg\n });\n } else {\n return new ActionDescriptorInst<Model, Service>(actionName, {\n ...actionGetProviderCfgObj(typeOrServiceProvider),\n ...cfg\n });\n }\n}\n\nexport function actionFromModel<Model>(model: ModelDescriptor<Model>, actionName: string, cfg?: ActionDescriptorCreateOptsParentType): ActionDescriptorInst<Model, undefined>;\nexport function actionFromModel<Model, Service>(\n model: ModelDescriptor<Model>,\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionDescriptorInst<Model, Service>;\nexport function actionFromModel<Model, Service>(\n model: ModelDescriptor<Model>,\n actionNameOrServiceProvider: string | ActionProviderType<Model, Service>,\n cfgOrActionName?: string | ActionDescriptorCreateOptsParentType,\n cfg?: ActionDescriptorCreateOptsParentType\n) {\n if (typeof actionNameOrServiceProvider === 'string') {\n // no provider\n return new ActionDescriptorInst<Model, undefined>(actionNameOrServiceProvider, {\n model,\n ...(typeof cfgOrActionName === 'object' ? cfgOrActionName : {}),\n ...cfg\n });\n } else {\n return new ActionDescriptorInst<Model, Service>(typeof cfgOrActionName === 'string' ? cfgOrActionName : 'default', {\n model,\n ...actionGetProviderCfgObj(actionNameOrServiceProvider),\n ...cfg\n });\n }\n}\n\nexport function actionFromClass<Model>(type: ClassType<Model>, actionName: string, cfg?: ActionDescriptorCreateFromClassOpts<Model>): ActionDescriptorInst<Model, undefined>;\nexport function actionFromClass<Model, Service>(\n type: ClassType<Model>,\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateFromClassOpts<Model>\n): ActionDescriptorInst<Model, Service>;\nexport function actionFromClass<Model, Service>(\n type: ClassType<Model>,\n actionNameOrServiceProvider: string | ActionProviderType<Model, Service>,\n cfgOrActionName?: string | ActionDescriptorCreateFromClassOpts<Model>,\n cfg?: ActionDescriptorCreateFromClassOpts<Model>\n): ActionDescriptorInst<Model, Service> {\n if (typeof actionNameOrServiceProvider === 'string') {\n // no provider\n const finalCfg = typeof cfgOrActionName === 'object' ? cfgOrActionName : cfg;\n return new ActionDescriptorInst<Model, Service>(actionNameOrServiceProvider, {\n model: new ModelDescriptor<Model>(type, finalCfg?.idProperty as string, finalCfg?.titleProperty as string, finalCfg?.i18nBaseKey),\n ...(typeof cfgOrActionName === 'object' ? cfgOrActionName : {}),\n ...cfg\n });\n } else {\n return new ActionDescriptorInst<Model, Service>(typeof cfgOrActionName === 'string' ? cfgOrActionName : 'default', {\n model: new ModelDescriptor<Model>(type, cfg?.idProperty as string, cfg?.titleProperty as string, cfg?.i18nBaseKey),\n ...actionGetProviderCfgObj(actionNameOrServiceProvider),\n ...cfg\n });\n }\n}\n\nexport class ActionDeleteDescriptor {\n public static create<Model>(model: ModelDescriptor<Model>): ActionDeleteDescriptorInst<Model, undefined> {\n return actionDelete(model);\n }\n\n public static createWithProvider<Model, Service>(\n model: ModelDescriptor<Model>,\n serviceProvider: ActionProviderType<Model, Service>\n ): ActionDeleteDescriptorInst<Model, Service> {\n return actionDelete(model, serviceProvider);\n }\n}\n\nexport function actionDelete<Model>(model: ModelDescriptor<Model>): ActionDeleteDescriptorInst<Model, undefined>;\nexport function actionDelete<Model, Service>(model: ModelDescriptor<Model>, serviceProvider: ActionProviderType<Model, Service>): ActionDeleteDescriptorInst<Model, Service>;\nexport function actionDelete<Model, Service>(model: ModelDescriptor<Model>, serviceProvider?: ActionProviderType<Model, Service>): ActionDeleteDescriptorInst<Model, Service> {\n return new ActionDeleteDescriptorInst<Model, Service>(model, {\n ...(serviceProvider ? actionGetProviderCfgObj(serviceProvider) : {})\n });\n}\n","import {Observable, Subject, throwError} from 'rxjs';\n\nimport {ClassOptType, CommonsInternalError, DataProviderInst, IDataProvider, IdType, ItemOrObservable, ServiceClassOptType} from '@mediusinc/mng-commons/core';\n\nimport {EditorResetEvent} from '../models/form-editor.event';\n\nexport type EditorDataProviderFetchFnType<Model = any, Service = undefined, Id = IdType, Return = ItemOrObservable<Model>> = (\n id: Id,\n service: Service,\n locale: string | undefined\n) => Return;\nexport type EditorDataProviderCreateFnType<Model = any, Service = undefined, Item = Model | undefined, Return = ItemOrObservable<Model>> = (item: Item, service: Service) => Return;\nexport type EditorDataProviderUpdateFnType<Model = any, Service = undefined, Id = IdType, Item = Model | undefined, Return = ItemOrObservable<Model>> = (\n id: Id,\n item: Item,\n service: Service\n) => Return;\nexport type EditorDataProviderDeleteFnType<Model = any, Service = undefined, Id = IdType, Item = Model | undefined, Return = ItemOrObservable<Model | null>> = (\n id: Id,\n item: Item,\n service: Service\n) => Return;\n\nexport interface IEditorDataProviderFetch<Model, Service> {\n fetch: EditorDataProviderFetchFnType<Model, Service>;\n\n withFetch(fn: EditorDataProviderFetchFnType<Model, Service>): this;\n}\n\nexport interface IEditorDataProviderCreate<Model, Service> {\n create?: EditorDataProviderCreateFnType<Model, Service>;\n\n withCreate(fn?: EditorDataProviderCreateFnType<Model, Service>): this;\n}\n\nexport interface IEditorDataProviderUpdate<Model, Service> {\n update?: EditorDataProviderUpdateFnType<Model, Service>;\n\n withUpdate(fn?: EditorDataProviderUpdateFnType<Model, Service>): this;\n}\n\nexport interface IEditorDataProviderDelete<Model, Service> {\n delete?: EditorDataProviderDeleteFnType<Model, Service>;\n\n withDelete(fn?: EditorDataProviderDeleteFnType<Model, Service>): this;\n}\n\nexport type IEditorDataProviderFnsType<Model, Service> = IEditorDataProviderFetch<Model, Service> &\n IEditorDataProviderCreate<Model, Service> &\n IEditorDataProviderUpdate<Model, Service> &\n IEditorDataProviderDelete<Model, Service>;\n\nexport interface IEditorDataProviderSupport<Model> {\n get editorReset$(): Observable<EditorResetEvent<Model>>;\n\n resetEditor(event?: EditorResetEvent<Model>): void;\n}\n\nexport type IEditorDataProvider<Model = any, Service = any, ModelClass = ClassOptType<Model>, ServiceClass = ServiceClassOptType<Service>> = IDataProvider<\n Model,\n Service,\n ModelClass,\n ServiceClass\n> &\n IEditorDataProviderFnsType<Model, Service> &\n IEditorDataProviderSupport<Model>;\n\nexport class EditorDataProviderInst<Model, Service = any, ModelClass = ClassOptType<Model>, ServiceClass = ServiceClassOptType<Service>>\n extends DataProviderInst<Model, Service, ModelClass, ServiceClass>\n implements IEditorDataProvider<Model, Service, ModelClass, ServiceClass>\n{\n protected readonly _editorResetSubject = new Subject<EditorResetEvent<Model>>();\n\n protected _fetch: EditorDataProviderFetchFnType<Model, Service> = id => throwError(() => new CommonsInternalError(`No fetch function provided for id ${id}.`));\n protected _create?: EditorDataProviderCreateFnType<Model, Service>;\n protected _update?: EditorDataProviderUpdateFnType<Model, Service>;\n protected _delete?: EditorDataProviderDeleteFnType<Model, Service>;\n\n public constructor(type: ModelClass, serviceType: ServiceClass) {\n super(type, serviceType);\n }\n\n get fetch() {\n return this._fetch;\n }\n\n get create() {\n return this._create;\n }\n\n get update() {\n return this._update;\n }\n\n get delete() {\n return this._delete;\n }\n\n get editorReset$() {\n return this._editorResetSubject.asObservable();\n }\n\n /**\n * Sets the fetch function for the EditorDataProvider instance.\n *\n * @param {EditorDataProviderFetchFnType<Model, Service>} fn - The fetch function to be set.\n * @returns {this} - The instance of the EditorDataProvider with the fetch function set.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withFetch(fn: EditorDataProviderFetchFnType<Model, Service>): this {\n this._fetch = fn;\n return this;\n }\n\n /**\n * Sets the create function for the EditorDataProvider.\n *\n * @param {EditorDataProviderCreateFnType<Model, Service>} fn - The function used for creating new items.\n * @returns {this} - Returns the instance of the class.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withCreate(fn?: EditorDataProviderCreateFnType<Model, Service>): this {\n this._create = fn;\n return this;\n }\n\n /**\n * Sets the update function for the EditorDataProvider.\n *\n * @param {EditorDataProviderUpdateFnType<Model, Service>} fn - The update function to be set.\n * @returns {this} - Returns the instance of the object calling this method.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withUpdate(fn?: EditorDataProviderUpdateFnType<Model, Service>): this {\n this._update = fn;\n return this;\n }\n\n /**\n * Sets the delete function for the editor data provider.\n *\n * @param {EditorDataProviderDeleteFnType<Model, Service>} fn - The delete function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withDelete(fn?: EditorDataProviderDeleteFnType<Model, Service>): this {\n this._delete = fn;\n return this;\n }\n\n resetEditor(event?: EditorResetEvent<Model>): void {\n this._editorResetSubject.next(event ?? {});\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nimport {CommonsInternalError, ServiceClassType, StyleSizeEnum} from '@mediusinc/mng-commons/core';\nimport {ActionButtonDescriptor, ButtonStyleBuilder} from '@mediusinc/mng-commons/form/api';\nimport {ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {EditorDataProviderInst, IEditorDataProvider} from '../../editor/data-providers/editor.data-provider';\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {ActionEditorSubmitTypeEnum, ActionPositionEnum, ActionTypeEnum} from '../models/action.type';\nimport {IActionContext} from '../models/execution/action-context.model';\nimport {TableviewActionDefaultCategories} from '../models/tableview-action-default-categories.model';\nimport {ActionDescriptorCreateOptsParentType, ActionDescriptorInst} from './action.descriptor';\n\nexport type ActionEditorDescriptorConstructorOptsType<Model, Service> = ActionDescriptorCreateOptsParentType &\n ActionEditorDescriptorCreateOptsProviderType<Model, Service> & {\n model?: ModelDescriptor<Model>;\n };\n\nexport type ActionEditorDescriptorCreateOptsProviderType<Model, Service> = {\n serviceType?: ServiceClassType<Service>;\n dataProvider?: IEditorDataProvider<Model, Service>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class ActionEditorDescriptorInst<Item, Service = any, FetchInputItem = Item, SubmitReturnItem = Item> extends ActionDescriptorInst<Item, Service> {\n private readonly _editorDescriptor: EditorDescriptorInst<Item, any>;\n protected override readonly _dataProvider?: IEditorDataProvider<Item, any> = undefined;\n\n protected _editorActions: ActionDescriptorInst<Item>[] = [];\n protected _editorTitle?: string | null = undefined;\n protected _editorTitleParams?: any = undefined;\n\n protected _hasFetchNotificationSuccess = false;\n protected _fetchNotificationSuccessTitle?: string;\n protected _fetchNotificationSuccessMessage?: string;\n\n protected _dialogSize = StyleSizeEnum.Normal;\n protected _dialogClassName?: string;\n\n protected _fetchFunction?: (ctx: IActionContext<Item, Service>) => Observable<Item>;\n protected _submitFunction?: (ctx: IActionContext<Item, Service>) => Observable<Item>;\n\n protected _editorComponent?: Type<any>;\n\n protected _resubmitEnabled?: boolean;\n protected _resubmitRefetch = true;\n protected _unsavedChangesConfirmation = false;\n\n public constructor(editorDescriptor: EditorDescriptorInst<Item, any>, actionName: string, cfg?: ActionEditorDescriptorConstructorOptsType<Item, Service>) {\n super(actionName, {\n model: editorDescriptor.model,\n ...cfg\n });\n\n if (cfg?.serviceType) {\n this._dataProvider = new EditorDataProviderInst<Item, Service>(this._model?.type, cfg.serviceType);\n } else if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n\n this._type = ActionTypeEnum.Editor;\n this._editorDescriptor = editorDescriptor;\n this._editorActions.push(actionEditorSubmit(this), actionEditorCancel(this));\n }\n\n public get editorTitle() {\n return this._editorTitle;\n }\n\n public get editorTitleParams() {\n return this._editorTitleParams;\n }\n\n public get editorDescriptor() {\n return this._editorDescriptor;\n }\n\n public get dialogSize() {\n return this._dialogSize;\n }\n\n public get dialogClassName() {\n return this._dialogClassName;\n }\n\n public get hasFetchNotificationSuccess() {\n return this._hasFetchNotificationSuccess;\n }\n\n public get fetchNotificationSuccessTitle() {\n return this._fetchNotificationSuccessTitle;\n }\n\n public get fetchNotificationSuccessMessage() {\n return this._fetchNotificationSuccessMessage;\n }\n\n public override get dataProvider() {\n return this._dataProvider;\n }\n\n public override get hasRunFunction(): boolean {\n throw new CommonsInternalError(`Run function cannot be used in editor action for ${this._actionNameLong}. Use submit function instead`);\n }\n\n public override get runFunction(): (ctx: IActionContext<Item, unknown>) => Observable<Item> {\n throw new CommonsInternalError(`Run function cannot be used in editor action for ${this._actionNameLong}. Use submit function instead`);\n }\n\n public get hasFetchFunction(): boolean {\n return typeof this._fetchFunction === 'function';\n }\n\n public get fetchFunction() {\n return this._fetchFunction;\n }\n\n public get hasSubmitFunction(): boolean {\n return typeof this._fetchFunction === 'function';\n }\n\n public get submitFunction() {\n return this._submitFunction;\n }\n\n public get editorActions() {\n return this._editorActions;\n }\n\n public get editorComponent() {\n return this._editorComponent;\n }\n\n public get resubmitEnabled() {\n return this._resubmitEnabled;\n }\n\n public get resubmitRefetch() {\n return this._resubmitRefetch;\n }\n\n public get unsavedChangesConfirmation() {\n return this._unsavedChangesConfirmation;\n }\n\n public withEditorTitle(title: string | null, params?: any): this {\n this._editorTitle = title;\n this._editorTitleParams = params;\n return this;\n }\n\n public withDialogSize(size = StyleSizeEnum.Normal): this {\n this._dialogSize = size;\n return this;\n }\n\n public withDialogClassName(className: string): this {\n this._dialogClassName = className;\n return this;\n }\n\n public override withRunFunction(fn: (ctx: IActionContext<Item, Service>) => Observable<Item>): this {\n return this.withSubmitFunction(fn as (ctx: IActionContext<Item, Service>) => Observable<Item>);\n }\n\n public withFetchFunction(fn: (ctx: IActionContext<Item, Service>) => Observable<Item>): this {\n this._fetchFunction = fn;\n return this;\n }\n\n public withSubmitFunction(fn: (ctx: IActionContext<Item, Service>) => Observable<Item>): this {\n this._submitFunction = fn;\n return this;\n }\n\n public withFetchNotificationError(title?: string, message?: string, hasNotification = true): this {\n this._hasFetchNotificationSuccess = hasNotification;\n this._fetchNotificationSuccessTitle = title;\n this._fetchNotificationSuccessMessage = message;\n return this;\n }\n\n public withEditorAction(action: ActionDescriptorInst<Item>): this {\n this._editorActions.push(action);\n return this;\n }\n\n public withEditorActions(actions: ActionDescriptorInst<Item>[]): this {\n this._editorActions = actions;\n return this;\n }\n\n public withEditorComponent(editorComponent: Type<any>): this {\n this._editorComponent = editorComponent;\n return this;\n }\n\n /**\n * Enables or disables resubmit resubmit - this means the form will not exit after successful submission, but will instead remain open.\n *\n * @param {boolean} [enabled=true] - Specifies whether resubmit is enabled or disabled. Defaults to true if not provided.\n * @param {boolean} [refetch=true] - Specifies whether the data should be refetched after resubmit. If not, the data in the form stays as is. Defaults to true if not provided.\n *\n * @returns {this} - Returns the current instance with the resubmit configuration updated.\n */\n public withResubmit(enabled?: boolean, refetch = true): this {\n this._resubmitEnabled = enabled;\n this._resubmitRefetch = refetch;\n return this;\n }\n\n public withUnsavedChangesConfirmation(unsavedChangesConfirmation = true): this {\n this._unsavedChangesConfirmation = unsavedChangesConfirmation;\n return this;\n }\n}\n\nexport class ActionEditorSubmitDescriptorInst<Model> extends ActionDescriptorInst<Model> {\n private readonly _editorAction: ActionEditorDescriptorInst<Model>;\n private readonly _submitType: ActionEditorSubmitTypeEnum;\n\n public constructor(editorAction: ActionEditorDescriptorInst<Model>, submitType = ActionEditorSubmitTypeEnum.Submit) {\n super(submitType === ActionEditorSubmitTypeEnum.Submit ? `${editorAction.actionName}.submit` : `${editorAction.actionName}.cancel`, {model: editorAction.model});\n this._editorAction = editorAction;\n this._submitType = submitType;\n this._position = ActionPositionEnum.FooterRight;\n\n this.button.styleClass.withActionLevel(editorAction.level).withTextButton();\n }\n\n public get submitType() {\n return this._submitType;\n }\n}\n\n/**\n * creates primary action with primary button style\n * @param editorAction\n * @param submitType\n */\nexport function actionEditorSubmit<Model>(\n editorAction: ActionEditorDescriptorInst<Model>,\n submitType = ActionEditorSubmitTypeEnum.Submit\n): ActionEditorSubmitDescriptorInst<Model> {\n return new ActionEditorSubmitDescriptorInst(editorAction, submitType).withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder()));\n}\n\n/**\n * creates secondary button with text button style\n * @param editorAction\n * @param submitType\n */\nexport function actionEditorCancel<Model>(\n editorAction: ActionEditorDescriptorInst<Model>,\n submitType = ActionEditorSubmitTypeEnum.Cancel\n): ActionEditorSubmitDescriptorInst<Model> {\n return new ActionEditorSubmitDescriptorInst(editorAction, submitType).withButtonDescriptor(\n new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withTextButton())\n );\n}\n\nexport class ActionEditorDetailsDescriptorInst<Model, Service = any> extends ActionEditorDescriptorInst<Model, Service> {\n public static readonly ACTION_NAME = 'details';\n\n constructor(editorDescriptor: EditorDescriptorInst<Model, any>, cfg?: ActionEditorDescriptorCreateOptsProviderType<Model, Service>) {\n super(editorDescriptor, ActionEditorDetailsDescriptorInst.ACTION_NAME, cfg);\n this.withPosition(ActionPositionEnum.RowClick);\n this.withRouteTrigger(':itemId');\n this.withEditorActions([actionEditorCancel(this)]);\n this.withTableviewCategory(TableviewActionDefaultCategories.DETAILS);\n }\n}\n\nexport class ActionEditorAddDescriptorInst<Model, Service = any> extends ActionEditorDescriptorInst<Model, Service> {\n public static readonly ACTION_NAME = 'add';\n\n constructor(editorDescriptor: EditorDescriptorInst<Model, any>, cfg?: ActionEditorDescriptorCreateOptsProviderType<Model, Service>) {\n super(editorDescriptor, ActionEditorAddDescriptorInst.ACTION_NAME, cfg);\n this.withPosition(ActionPositionEnum.ToolbarLeft);\n this.withRouteTrigger('add');\n this.button.withIcon('pi pi-plus');\n this.withTableviewCategory(TableviewActionDefaultCategories.ADD);\n this.withUnsavedChangesConfirmation();\n }\n}\n\nexport class ActionEditorEditDescriptorInst<Model, Service = any> extends ActionEditorDescriptorInst<Model, Service> {\n public static readonly ACTION_NAME = 'edit';\n\n constructor(editorDescriptor: EditorDescriptorInst<Model, any>, cfg?: ActionEditorDescriptorCreateOptsProviderType<Model, Service>) {\n super(editorDescriptor, ActionEditorEditDescriptorInst.ACTION_NAME, cfg);\n this.withPosition(ActionPositionEnum.RowInline);\n this.button.styleClass.withSize(StyleSizeEnum.Small);\n this.withRouteTrigger(':itemId/edit');\n this.withTableviewCategory(TableviewActionDefaultCategories.EDIT);\n this.button.withLabel(null).withIcon('pi pi-pencil');\n this.withUnsavedChangesConfirmation();\n }\n}\n","import {ServiceClassType} from '@mediusinc/mng-commons/core';\n\nimport {IEditorDataProvider} from '../../editor/data-providers/editor.data-provider';\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {\n ActionEditorAddDescriptorInst,\n ActionEditorDescriptorCreateOptsProviderType,\n ActionEditorDescriptorInst,\n ActionEditorDetailsDescriptorInst,\n ActionEditorEditDescriptorInst\n} from './action-editor.descriptor';\nimport {ActionDescriptorCreateOptsParentType} from './action.descriptor';\n\nexport type ActionEditorProviderType<Model, Service> = ServiceClassType<Service> | IEditorDataProvider<Model, Service>;\n\nexport const actionEditorGetProviderCfgObj = <Model, Service>(serviceOrDataProvider?: ActionEditorProviderType<Model, Service>) => {\n const cfg: ActionEditorDescriptorCreateOptsProviderType<Model, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IEditorDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider as IEditorDataProvider<Model, Service>;\n } else {\n cfg.serviceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\nexport class ActionEditorDescriptor {\n public static create<Model>(\n editor: EditorDescriptorInst<Model, any>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n ): ActionEditorDescriptorInst<Model, undefined> {\n return actionEditor(editor, actionName, cfg);\n }\n\n public static createWithProvider<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n ): ActionEditorDescriptorInst<Model, Service> {\n return actionEditor(editor, serviceProvider, actionName, cfg);\n }\n}\n\nexport function actionEditor<Model>(\n editor: EditorDescriptorInst<Model, any>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionEditorDescriptorInst<Model, undefined>;\nexport function actionEditor<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionEditorDescriptorInst<Model, Service>;\nexport function actionEditor<Model, Service>(\n editor: EditorDescriptorInst<Model, Service>,\n actionNameOrServiceProvider: string | ActionEditorProviderType<Model, Service>,\n cfgOrActionName?: string | ActionDescriptorCreateOptsParentType,\n cfg?: ActionDescriptorCreateOptsParentType\n): ActionEditorDescriptorInst<Model, Service> {\n if (typeof actionNameOrServiceProvider === 'string') {\n // no provider\n return new ActionEditorDescriptorInst<Model, Service>(editor, actionNameOrServiceProvider, {\n ...(typeof cfgOrActionName === 'object' ? cfgOrActionName : {}),\n ...cfg\n });\n } else {\n return new ActionEditorDescriptorInst<Model, Service>(editor, typeof cfgOrActionName === 'string' ? cfgOrActionName : 'default', {\n ...actionEditorGetProviderCfgObj(actionNameOrServiceProvider),\n ...cfg\n });\n }\n}\n\nexport class ActionEditorDetailsDescriptor {\n public static create<Model>(editor: EditorDescriptorInst<Model, any>): ActionEditorDescriptorInst<Model, undefined> {\n return actionEditorDetails(editor);\n }\n\n public static createWithProvider<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>\n ): ActionEditorDescriptorInst<Model, Service> {\n return actionEditorDetails(editor, serviceProvider);\n }\n}\n\nexport function actionEditorDetails<Model>(editor: EditorDescriptorInst<Model, any>): ActionEditorDetailsDescriptorInst<Model, undefined>;\nexport function actionEditorDetails<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>\n): ActionEditorDetailsDescriptorInst<Model, Service>;\nexport function actionEditorDetails<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider?: ActionEditorProviderType<Model, Service>\n): ActionEditorDetailsDescriptorInst<Model, Service> {\n return new ActionEditorDetailsDescriptorInst<Model, Service>(editor, {\n ...(serviceProvider ? actionEditorGetProviderCfgObj(serviceProvider) : {})\n });\n}\n\nexport class ActionEditorAddDescriptor {\n public static create<Model>(editor: EditorDescriptorInst<Model, any>): ActionEditorAddDescriptorInst<Model, undefined> {\n return actionEditorAdd(editor);\n }\n\n public static createWithProvider<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>\n ): ActionEditorAddDescriptorInst<Model, Service> {\n return actionEditorAdd(editor, serviceProvider);\n }\n}\n\nexport function actionEditorAdd<Model>(editor: EditorDescriptorInst<Model, any>): ActionEditorDetailsDescriptorInst<Model, undefined>;\nexport function actionEditorAdd<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>\n): ActionEditorAddDescriptorInst<Model, Service>;\nexport function actionEditorAdd<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider?: ActionEditorProviderType<Model, Service>\n): ActionEditorAddDescriptorInst<Model, Service> {\n return new ActionEditorAddDescriptorInst<Model, Service>(editor, {\n ...(serviceProvider ? actionEditorGetProviderCfgObj(serviceProvider) : {})\n });\n}\n\nexport class ActionEditorEditDescriptor {\n public static create<Model>(editor: EditorDescriptorInst<Model, any>): ActionEditorEditDescriptorInst<Model, undefined> {\n return actionEditorEdit(editor);\n }\n\n public static createWithProvider<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>\n ): ActionEditorEditDescriptorInst<Model, Service> {\n return actionEditorEdit(editor, serviceProvider);\n }\n}\n\nexport function actionEditorEdit<Model>(editor: EditorDescriptorInst<Model, any>): ActionEditorDetailsDescriptorInst<Model, undefined>;\nexport function actionEditorEdit<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider: ActionEditorProviderType<Model, Service>\n): ActionEditorEditDescriptorInst<Model, Service>;\nexport function actionEditorEdit<Model, Service>(\n editor: EditorDescriptorInst<Model, any>,\n serviceProvider?: ActionEditorProviderType<Model, Service>\n): ActionEditorEditDescriptorInst<Model, Service> {\n return new ActionEditorEditDescriptorInst<Model, Service>(editor, {\n ...(serviceProvider ? actionEditorGetProviderCfgObj(serviceProvider) : {})\n });\n}\n","import {Params, QueryParamsHandling} from '@angular/router';\n\nimport {ActionDescriptorConstructorOptsType, ActionDescriptorInst} from './action.descriptor';\n\nexport type ActionLinkDescriptorConstructorOpts<Model> = Omit<ActionDescriptorConstructorOptsType<Model, undefined>, 'serviceType' | 'dataProvider'>;\n\nexport class ActionLinkDescriptorInst<Model> extends ActionDescriptorInst<Model, undefined> {\n private _url = '';\n private _pathSegments: string[] = [];\n private _queryParams?: Params;\n private _queryParamsHandling?: QueryParamsHandling;\n private _replaceUrl = false;\n private _target = '_self';\n private _isStyleLink = false;\n\n constructor(actionName = 'link', cfg?: ActionLinkDescriptorConstructorOpts<Model>) {\n super(actionName, cfg);\n }\n\n public get url(): string {\n return this._url;\n }\n\n public get pathSegments(): string[] {\n return this._pathSegments;\n }\n\n public get queryParams(): Params | undefined {\n return this._queryParams;\n }\n\n public get queryParamsHandling(): QueryParamsHandling | undefined {\n return this._queryParamsHandling;\n }\n\n public get replaceUrl(): boolean {\n return this._replaceUrl;\n }\n\n public get target(): string {\n return this._target;\n }\n\n public get isStyleLink(): boolean {\n return this._isStyleLink;\n }\n\n public withHref(url: string): this {\n this._url = url;\n return this;\n }\n\n public withRouterLink(...pathSegments: string[]): this {\n this._pathSegments = pathSegments;\n return this;\n }\n\n public withQueryParams(queryParams: Params, queryParamsHandling?: QueryParamsHandling): this {\n this._queryParams = queryParams;\n this._queryParamsHandling = queryParamsHandling;\n return this;\n }\n\n public withReplaceUrl(replaceUrl = false): this {\n this._replaceUrl = replaceUrl;\n return this;\n }\n\n public withTarget(target: '_self' | '_blank' = '_self'): this {\n this._target = target;\n return this;\n }\n\n public withStyleLink(isStyleLink: boolean): this {\n this._isStyleLink = isStyleLink;\n return this;\n }\n}\n","import {ClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {ActionDescriptorCreateFromClassOpts} from './action-descriptor.factory';\nimport {ActionLinkDescriptorInst} from './action-link.descriptor';\nimport {ActionDescriptorCreateOptsParentType, ActionDescriptorInst} from './action.descriptor';\n\nexport class ActionLinkDescriptor {\n public static create<Model = any>(actionName: string, cfg?: ActionDescriptorCreateOptsParentType) {\n return actionLink<Model>(actionName, cfg);\n }\n\n public static fromModel<Model>(model: ModelDescriptor<Model>, actionName: string, cfg?: ActionDescriptorCreateOptsParentType) {\n return actionLinkFromModel(model, actionName, cfg);\n }\n\n public static fromClass<Model>(type: ClassType<Model>, actionName: string, cfg?: ActionDescriptorCreateFromClassOpts<Model>) {\n return actionLinkFromClass(type, actionName, cfg);\n }\n\n public static fromAction<Model>(action: ActionDescriptorInst<Model>) {\n return actionLinkFromAction(action);\n }\n}\n\nexport function actionLink<Model = any>(actionName: string, cfg?: ActionDescriptorCreateOptsParentType) {\n return new ActionLinkDescriptorInst<Model>(actionName, {\n ...cfg\n });\n}\n\nexport function actionLinkFromModel<Model>(model: ModelDescriptor<Model>, actionName: string, cfg?: ActionDescriptorCreateOptsParentType) {\n return new ActionLinkDescriptorInst<Model>(actionName, {\n model,\n ...cfg\n });\n}\n\nexport function actionLinkFromClass<Model>(type: ClassType<Model>, actionName: string, cfg?: ActionDescriptorCreateFromClassOpts<Model>) {\n return new ActionLinkDescriptorInst<Model>(actionName, {\n model: ModelDescriptor.fromClass<Model>(type, cfg?.idProperty, cfg?.titleProperty, cfg?.i18nBaseKey),\n ...cfg\n });\n}\n\nexport function actionLinkFromAction<Model>(action: ActionDescriptorInst<Model>) {\n const descriptor = new ActionLinkDescriptorInst<Model>(action.actionName, {model: action.model});\n\n action.copyTo(descriptor);\n\n descriptor.withRunConfirmationDescriptor();\n\n descriptor.withRunNotificationSuccess(undefined, undefined, false);\n descriptor.withRunNotificationError(undefined, undefined, false);\n\n descriptor.withAfterRunAction();\n descriptor.withOnRunErrorAction();\n\n descriptor.withSubactionsAsMenu(false);\n\n return descriptor;\n}\n","import {HttpErrorResponse} from '@angular/common/http';\n\nimport {ACommonsErrorBase, CommonsErrorBaseOptions, ICommonsActionError} from '@mediusinc/mng-commons/core';\n\nimport {IActionContext} from './execution/action-context.model';\n\nexport interface CommonsActionErrorOptions extends CommonsErrorBaseOptions {\n actionContext?: IActionContext<any, any>;\n httpError?: HttpErrorResponse;\n}\n\nexport class CommonsActionError extends ACommonsErrorBase implements ICommonsActionError {\n public readonly type = 'CommonsActionError';\n public readonly actionId: string;\n\n public readonly actionContext?: IActionContext<any, any>;\n public readonly httpError?: HttpErrorResponse;\n\n constructor(message: string, actionName: string, options?: CommonsActionErrorOptions) {\n super(message, {\n name: 'CommonsActionError_' + actionName,\n ...options\n });\n\n this.actionId = actionName;\n this.actionContext = options?.actionContext;\n this.httpError = options?.httpError;\n }\n}\n","import {Injector} from '@angular/core';\n\nimport {Observable, isObservable, throwError} from 'rxjs';\n\nimport {CommonsInternalError, DataListResult, IDataProvider, toObservable} from '@mediusinc/mng-commons/core';\nimport {ITableDataProvider} from '@mediusinc/mng-commons/table/api';\n\nimport {IEditorDataProvider} from '../../editor/data-providers/editor.data-provider';\nimport {CommonsActionError} from '../models/action-error.model';\nimport {IActionContext} from '../models/execution/action-context.model';\n\nexport function runFnFromDataProviderOrFallback<Item, Service, Return, FallbackReturn = Return>(\n ctx: IActionContext<Item, Service>,\n fn: (ctx: IActionContext<Item, Service>) => Observable<Return> | null,\n fallback: Observable<FallbackReturn>\n): Observable<Return | FallbackReturn> {\n const dataProviderExec = fn(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return fallback;\n}\n\nexport function runFnFromDataProviderOrFail<Item, Service, Return>(\n ctx: IActionContext<Item, Service>,\n fn: (ctx: IActionContext<Item, Service>) => Observable<Return> | null\n): Observable<Return> {\n const dataProviderExec = fn(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return throwError(\n () =>\n new CommonsActionError(\n `Data provider could not extract function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.i18nBaseKey}) for item id ${ctx.parameters?.itemId}.`,\n ctx.contextLongName,\n {actionContext: ctx}\n )\n );\n}\n\nexport function runGetAllFromDataProvider<Item, Service>(ctx: IActionContext<Item, Service>): Observable<DataListResult<Item>> | null {\n if (typeof ctx.dataProvider !== 'undefined' && typeof ctx.dataProvider['getAll' as keyof object] === 'function') {\n const tableDataProvider = ctx.dataProvider as ITableDataProvider<Item, any>;\n const queryParam = ctx.parameters?.dataListParams ?? {};\n return toObservable(tableDataProvider.getAll(queryParam, ctx.serviceInstance));\n }\n return null;\n}\n\nexport function runFetchFromDataProvider<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any>;\n if (typeof editorDataProvider.fetch === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.fetch(ctx.parameters.itemId, ctx.serviceInstance, ctx.parameters.locale)) : null;\n }\n }\n return null;\n}\n\nexport function runCreateFromDataProvider<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any>;\n if (typeof editorDataProvider.create === 'function') {\n return ctx.parameters?.item ? toObservable(editorDataProvider.create(ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\n\nexport function runUpdateFromDataProvider<Item, service>(ctx: IActionContext<Item, service>): Observable<Item> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any>;\n if (typeof editorDataProvider.update === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.update(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\n\nexport function runDeleteFromDataProvider<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item | null> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any>;\n if (typeof editorDataProvider.delete === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.delete(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\n\n/**\n * Gets service instance of data provider.\n *\n * @param injector Injector instance\n * @param dataProvider Data provider instance.\n */\nexport function getDataProviderService<Item, Service>(injector: Injector, dataProvider?: IDataProvider<Item, Service>): Service | null {\n if (dataProvider?.serviceType) {\n const service = injector.get<Service>(dataProvider.serviceType, undefined, {optional: true});\n if (!service) {\n throw new CommonsInternalError(`Data provider service type ${dataProvider.serviceType} could not be injected.`);\n }\n return service;\n } else {\n return null;\n }\n}\n","/**\n * States of action. Enums ending with `*Final` are supposed to be final.\n */\nexport enum ActionInstanceStateEnum {\n TriggerStart, // action was triggered (click or direct)\n TriggerEnd,\n ActivationStart, // action activation started (direct, event or editor)\n ActivationEnd, // action activation ended\n FetchStart, // fetch started\n FetchEnd, // fetch ended\n FetchError, // fetch error\n RunConfirmationStart, // confirmation for run is started\n RunConfirmationEndAccept, // confirmation accepted\n RunConfirmationEndReject, // confirmation rejected\n RunStart, // action was run by calling main function\n RunEnd, // action run function executed\n RunError, // action run function executed with error\n NextActionStart, // next action started\n NextActionEnd, // next action finished\n ErrorActionStart, // error action started\n ErrorActionEnd, // error action finished\n FinishSuccessFinal, // action executed successfully\n FinishErrorFinal, // action executed with error\n FinishDismissedFinal, // action was dismissed by user\n FinishSuccessReactivateFinal, // action executed successfully, another instance will directly start from previous\n FinishComponentDestroyFinal, // action was dismissed by destroying component that was executing it\n FinishRouteUntriggerStart,\n FinishRouteUntriggerEndFinal,\n FinishRouteUntriggerTimeoutFinal\n}\n","import {InjectionToken, Type} from '@angular/core';\n\nexport const DATA_LANGUAGE_DROPDOWN_COMPONENT_IT: InjectionToken<Type<any>> = new InjectionToken<Type<any>>('DATA_LANGUAGE_DROPDOWN_COMPONENT');\n","import {Injector} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nimport {DataListResult, IDataProvider, Nullable} from '@mediusinc/mng-commons/core';\n\nimport {getDataProviderService, runFnFromDataProviderOrFail} from '../helpers/data-provider-executors';\nimport {IActionContext} from '../models/execution/action-context.model';\n\nexport abstract class DataProviderExecutor {\n public runGetAllOrFail<Item, Service>(ctx: IActionContext<Item, Service>): Observable<DataListResult<Item>> {\n return runFnFromDataProviderOrFail<Item, Service, DataListResult<Item>>(ctx, this.runGetAll.bind(this));\n }\n\n public abstract runGetAll<Item, Service>(ctx: IActionContext<Item, Service>): Observable<DataListResult<Item>> | null;\n public abstract runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<DataListResult<Item>>): Observable<DataListResult<Item>>;\n public abstract runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<DataListResult<Item>> | null;\n public abstract runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<DataListResult<Item>>): Observable<DataListResult<Item>> | null;\n\n public runFetchOrFail<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> {\n return runFnFromDataProviderOrFail<Item, Service, Item>(ctx, this.runFetch.bind(this));\n }\n\n public abstract runFetch<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public abstract runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null;\n\n public runCreateOrFail<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> {\n return runFnFromDataProviderOrFail<Item, Service, Item>(ctx, this.runCreate.bind(this));\n }\n\n public abstract runCreate<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public abstract runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null;\n\n public runUpdateOrFail<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> {\n return runFnFromDataProviderOrFail<Item, Service, Item>(ctx, this.runUpdate.bind(this));\n }\n\n public abstract runUpdate<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public abstract runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null;\n\n public runDeleteOrFail<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item | null> {\n return runFnFromDataProviderOrFail<Item, Service, Item>(ctx, this.runDelete.bind(this));\n }\n\n public abstract runDelete<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Nullable<Item>> | null;\n public abstract runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null;\n\n /**\n * Gets service instance of data provider.\n *\n * @param injector Injector instance\n * @param dataProvider Data provider instance.\n */\n public getDataProviderService<Item, Service>(injector: Injector, dataProvider?: IDataProvider<Item, Service>): Service | null {\n return getDataProviderService(injector, dataProvider);\n }\n}\n","import {ClassType, ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {EditorDataProviderInst} from './editor.data-provider';\n\nexport class EditorDataProvider extends EditorDataProviderInst<any> {\n protected constructor() {\n super(undefined, undefined);\n }\n\n public static create<Model>(): EditorDataProviderInst<Model, undefined, undefined, undefined> {\n return editorDataProvider();\n }\n\n public static fromClass<Model>(type: ClassType<Model>): EditorDataProviderInst<Model, undefined, ClassType<Model>, undefined> {\n return editorDataProviderFromClass(type);\n }\n\n public static fromClassWithService<Model, Service>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ): EditorDataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>> {\n return editorDataProviderFromClass(type, serviceType);\n }\n\n public static fromService<Service, Model>(serviceType: ServiceClassType<Service>): EditorDataProviderInst<Model, Service, undefined, ServiceClassType<Service>> {\n return editorDataProviderWithService<Service, Model>(serviceType);\n }\n}\n\nexport function editorDataProvider<Model>(): EditorDataProviderInst<Model, undefined, undefined, undefined>;\nexport function editorDataProvider<Model>(type: TypeDescriptor<Model>): EditorDataProviderInst<Model, undefined, undefined, undefined>;\nexport function editorDataProvider<Model, Service = any>(\n type: TypeDescriptor<Model>,\n serviceType: ServiceClassType<Service>\n): EditorDataProviderInst<Model, Service, undefined, ServiceClassType<Service>>;\nexport function editorDataProvider<Model, Service = any, ServiceClass = ServiceClassType<Service>>(type?: TypeDescriptor<Model>, serviceType?: ServiceClass) {\n return new EditorDataProviderInst<Model, Service, undefined, ServiceClass>(undefined, serviceType as ServiceClass);\n}\n\nexport function editorDataProviderWithService<Service, Model>(\n serviceType: ServiceClassType<Service>\n): EditorDataProviderInst<Model, Service, undefined, ServiceClassType<Service>> {\n return new EditorDataProviderInst<Model, Service, undefined, ServiceClassType<Service>>(undefined, serviceType);\n}\n\nexport function editorDataProviderFromClass<Model>(type: ClassType<Model>): EditorDataProviderInst<Model, undefined, ClassType<Model>, undefined>;\nexport function editorDataProviderFromClass<Model, Service = any>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n): EditorDataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>>;\nexport function editorDataProviderFromClass<Model, Service = any, ServiceClass = ServiceClassType<Service>>(type: ClassType<Model>, serviceType?: ServiceClass) {\n return new EditorDataProviderInst<Model, Service, ClassType<Model>, ServiceClass>(type, serviceType as ServiceClass);\n}\n\nexport function editorDataProviderFromModel<Model, ModelClass = ClassType<Model>>(\n model: ModelDescriptor<Model, ModelClass>\n): EditorDataProviderInst<Model, undefined, ModelClass, undefined>;\nexport function editorDataProviderFromModel<Model, Service = any, ModelClass = ClassType<Model>>(\n model: ModelDescriptor<Model, ModelClass>,\n ServiceClass: ServiceClassType<Service>\n): EditorDataProviderInst<Model, Service, ModelClass, ServiceClassType<Service>>;\nexport function editorDataProviderFromModel<Model, Service = any, ModelClass = ClassType<Model>, ServiceClass = ServiceClassType<Service>>(\n model: ModelDescriptor<Model, ModelClass>,\n serviceType?: ServiceClass\n) {\n return typeof serviceType !== 'undefined'\n ? new EditorDataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>>(model.type as ClassType<Model>, serviceType as ServiceClassType<Service>)\n : new EditorDataProviderInst<Model, undefined, ClassType<Model>, undefined>(model.type as ClassType<Model>, undefined);\n}\n","export enum TableviewEditorTypeEnum {\n None,\n Details,\n Edit,\n Add\n}\n\nexport const EDITOR_DEFAULT_GROUP_NAME = '_default';\n","import {Type} from '@angular/core';\n\nexport enum FieldSizeEnum {\n Small,\n Normal,\n Large\n}\n\nexport enum FieldInputTypeEnum {\n Hidden,\n Label,\n Text,\n Textarea,\n Number,\n Currency,\n Switch,\n Radio,\n Datepicker,\n Mask,\n File,\n ImageFile,\n ImageUrl,\n Custom\n}\n\nexport enum FieldLookupTypeEnum {\n Dropdown,\n Autocomplete,\n Dialog,\n Custom\n}\n\nexport enum FieldManyToManyEditorTypeEnum {\n DialogTableMultiselect\n}\n\nexport enum FieldManyToManyEditorActionEnum {\n Add,\n Delete\n}\n\nexport enum FieldManyEditorTypeEnum {\n DialogEditor\n}\n\nexport enum FieldManyEditorActionEnum {\n View,\n Add,\n Edit,\n Delete\n}\n\nexport enum FieldGroupTypeEnum {\n Tab,\n Fieldset,\n Logical\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface FieldConfig {}\n\nexport interface FieldLookupConfig extends FieldConfig {\n table?: {\n captionComponent?: Type<any>;\n columnActionComponent?: Type<any>;\n };\n}\n","import {FieldAsyncBaseValidator, FieldBaseValidator, FieldValidationMessage} from '../models/field-validation.model';\n\nexport type FieldValidationDescriptorOptsType<Property = string> = {errorPath?: Property};\n\nexport class FieldValidationDescriptor<FieldValue, EditorValue, ParentEditorModel = undefined> {\n private readonly _name: string;\n private readonly _validator?: FieldBaseValidator<FieldValue, EditorValue, ParentEditorModel> | FieldAsyncBaseValidator<FieldValue, EditorValue, ParentEditorModel>;\n private readonly _message?: FieldValidationMessage<FieldValue, EditorValue, ParentEditorModel>;\n private readonly _options?: FieldValidationDescriptorOptsType;\n\n constructor(\n name: string,\n validator?: FieldBaseValidator<FieldValue, EditorValue, ParentEditorModel> | FieldAsyncBaseValidator<FieldValue, EditorValue, ParentEditorModel>,\n message?: FieldValidationMessage<FieldValue, EditorValue, ParentEditorModel>,\n options?: FieldValidationDescriptorOptsType\n ) {\n this._name = name;\n this._validator = validator;\n this._message = message;\n this._options = options;\n }\n\n public get name(): string {\n return this._name;\n }\n\n public get validator() {\n return this._validator;\n }\n\n public get message() {\n return this._message;\n }\n\n public get options() {\n return this._options;\n }\n\n public copy(): FieldValidationDescriptor<FieldValue, EditorValue, ParentEditorModel> {\n const opt = this._options ? {...this._options} : undefined;\n return new FieldValidationDescriptor<FieldValue, EditorValue, ParentEditorModel>(this._name, this._validator, this._message, opt);\n }\n}\n","import {FormControl, FormGroup} from '@angular/forms';\n\nimport {FieldType, FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable, Subject} from 'rxjs';\n\nimport {GetterFn} from '@mediusinc/mng-commons/core';\n\nimport {FieldAsyncBaseValidator, FieldAsyncValidator, FieldBaseValidator, FieldValidationMessage, FieldValidator} from '../models/field-validation.model';\nimport {FieldConfig, FieldSizeEnum} from '../models/field.model';\nimport {FormFieldEvent, FormFieldEventData, FormFieldEventTypeEnum} from '../models/form-editor.event';\nimport {CommonsFormlyFieldConfig, CommonsFormlyHookFn} from '../models/formly-field.model';\nimport {FieldValidationDescriptor} from './field-validation.descriptor';\n\nexport abstract class AGenericFieldDescriptor {\n protected _config: FieldConfig = {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected constructor() {}\n\n public get config() {\n return this._config;\n }\n\n public withConfig(config: FieldConfig): this {\n this._config = config;\n return this;\n }\n\n /**\n * Override toJSON implementation to prevent overflow with circular dependency.\n * @ignore\n */\n protected toJSON(): string {\n const jsonObj = {\n ...this,\n _editor: undefined\n };\n const jsonObjStr = JSON.stringify(jsonObj);\n return jsonObjStr;\n }\n}\n\nexport abstract class AFieldDescriptor<FieldModel, EditorModel, FieldValue = FieldModel, ParentEditorModel = undefined> extends AGenericFieldDescriptor {\n /** @ignore */ protected readonly _property: string;\n /** @ignore */ protected _label?: string | null;\n\n /** @ignore */ protected _placeholder?: string;\n /** @ignore */ protected _helpText?: string;\n\n /** @ignore */ protected _required = false;\n /** @ignore */ protected _requiredHideLabelMarker = false;\n /** @ignore */ protected _disabled = false;\n /** @ignore */ protected _defaultValue?: FieldValue;\n /** @ignore */ protected _getter?: GetterFn<FieldValue, EditorModel>;\n /** @ignore */ protected _setter?: (item: EditorModel, value: FieldValue) => void;\n /** @ignore */ protected _validations: Array<FieldValidationDescriptor<any, any, any>> = [];\n /** @ignore */ protected _asyncValidations: Array<FieldValidationDescriptor<any, any, any>> = [];\n /** @ignore */ protected _requiredExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n /** @ignore */ protected _disabledExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n /** @ignore */ protected _hiddenExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n /** @ignore */ protected _hiddenResetOnHide?: boolean;\n /** @ignore */ protected _updateOn: 'change' | 'blur' | 'submit' = 'change';\n\n /** @ignore */ protected _onInit?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n /** @ignore */ protected _onChanges?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n /** @ignore */ protected _afterContentInit?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n /** @ignore */ protected _afterViewInit?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n /** @ignore */ protected _onDestroy?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n\n /** @ignore */ protected _onValueChange?: (field: CommonsFormlyFieldConfig<FieldValue, EditorModel>, value: any) => void;\n\n /** @ignore */ protected _className = '';\n /** @ignore */ protected _fieldClassName?: string;\n /** @ignore */ protected _labelClassName?: string;\n /** @ignore */ protected _inputClassName?: string;\n /** @ignore */ protected _size: FieldSizeEnum = FieldSizeEnum.Normal;\n\n // localization\n /** @ignore */ protected _isLocalized = false;\n\n /** @ignore */ protected readonly _eventsSubject = new Subject<FormFieldEvent<FieldValue, EditorModel, ParentEditorModel>>();\n\n protected constructor(property: string) {\n super();\n this._property = property;\n }\n\n public get property() {\n return this._property;\n }\n\n public get label() {\n return this._label;\n }\n\n public get placeholder() {\n return this._placeholder;\n }\n\n public get helpText() {\n return this._helpText;\n }\n\n public get required() {\n return this._required;\n }\n\n public get requiredHideLabelMarker() {\n return this._requiredHideLabelMarker;\n }\n\n public get disabled() {\n return this._disabled;\n }\n\n public get defaultValue() {\n return this._defaultValue;\n }\n\n public get getter() {\n return this._getter;\n }\n\n public get setter() {\n return this._setter;\n }\n\n public get validations() {\n return this._validations;\n }\n\n public get asyncValidations() {\n return this._asyncValidations;\n }\n\n public get requiredExpression() {\n return this._requiredExpression;\n }\n\n public get disabledExpression() {\n return this._disabledExpression;\n }\n\n public get hiddenExpression() {\n return this._hiddenExpression;\n }\n\n public get hiddenResetOnHide() {\n return this._hiddenResetOnHide;\n }\n\n public get updateOn() {\n return this._updateOn;\n }\n\n public get onInit() {\n return this._onInit;\n }\n\n public get onChanges() {\n return this._onChanges;\n }\n\n public get afterContentInit() {\n return this._afterContentInit;\n }\n\n public get afterViewInit() {\n return this._afterViewInit;\n }\n\n public get onDestroy() {\n return this._onDestroy;\n }\n\n public get onValueChange() {\n return this._onValueChange;\n }\n\n public get className() {\n return this._className;\n }\n\n public get fieldClassName() {\n return this._fieldClassName;\n }\n\n public get labelClassName() {\n return this._labelClassName;\n }\n\n public get inputClassName() {\n return this._inputClassName;\n }\n\n public get size() {\n return this._size;\n }\n\n public get isSizeSmall() {\n return this._size === FieldSizeEnum.Small;\n }\n\n public get isSizeLarge() {\n return this._size === FieldSizeEnum.Large;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public abstract copy(): AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>;\n\n public withLabel(label: string | null): this {\n this._label = label;\n return this;\n }\n\n public withPlaceholder(placeholder: string): this {\n this._placeholder = placeholder;\n return this;\n }\n\n public withHelpText(helpText: string): this {\n this._helpText = helpText;\n return this;\n }\n\n public withRequired(required = true, requiredExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>, hideLabelMarker = false): this {\n this._required = required;\n if (requiredExpression) {\n this._requiredExpression = requiredExpression;\n }\n this._requiredHideLabelMarker = hideLabelMarker;\n return this;\n }\n\n public withDisabled(disabled = true, disabledExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>): this {\n this._disabled = disabled;\n if (disabledExpression) {\n this._disabledExpression = disabledExpression;\n }\n return this;\n }\n\n public withHidden(hiddenExpression: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>, resetOnHide?: boolean): this {\n this._hiddenExpression = hiddenExpression;\n this._hiddenResetOnHide = resetOnHide;\n return this;\n }\n\n public withUpdateOn(updateOn: 'change' | 'blur' | 'submit'): this {\n this._updateOn = updateOn;\n return this;\n }\n\n public withOnInit(onInit?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._onInit = onInit;\n return this;\n }\n\n public withOnChanges(onChanges?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._onChanges = onChanges;\n return this;\n }\n\n public withAfterContentInit(afterContentInit?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._afterContentInit = afterContentInit;\n return this;\n }\n\n public withAfterViewInit(afterViewInit?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._afterViewInit = afterViewInit;\n return this;\n }\n\n public withOnDestroy(onDestroy?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._onDestroy = onDestroy;\n return this;\n }\n\n public withOnValueChange(onValueChange?: (field: CommonsFormlyFieldConfig<FieldValue, EditorModel>, value: FieldValue) => void): this {\n this._onValueChange = onValueChange;\n return this;\n }\n\n public withDefaultValue(defaultValue: FieldValue): this {\n this._defaultValue = defaultValue;\n return this;\n }\n\n public withGetter(fn?: GetterFn<FieldValue, EditorModel>): this {\n this._getter = fn;\n return this;\n }\n\n public withSetter(fn?: (item: EditorModel, value: FieldValue) => void): this {\n this._setter = fn;\n return this;\n }\n\n public withValidation<Value = FieldValue, EditorValue = EditorModel>(\n name: string,\n validator?: FieldValidator<Value, EditorValue, ParentEditorModel>,\n message?: FieldValidationMessage<Value, EditorValue, ParentEditorModel>\n ): this {\n this._validations.push(new FieldValidationDescriptor(name, validator as FieldBaseValidator<Value, EditorValue, ParentEditorModel>, message));\n return this;\n }\n\n public removeValidation(name: string): this {\n this._validations = this._validations.filter(v => v.name !== name);\n return this;\n }\n\n public withAsyncValidation<Value = FieldValue, EditorValue = EditorModel>(\n name: string,\n asyncValidator?: FieldAsyncValidator<Value, EditorValue>,\n message?: FieldValidationMessage<Value, EditorValue>\n ): this {\n this._asyncValidations.push(new FieldValidationDescriptor(name, asyncValidator as FieldAsyncBaseValidator<Value, EditorValue>, message));\n return this;\n }\n\n public removeAsyncValidation(name: string): this {\n this._asyncValidations = this._asyncValidations.filter(v => v.name !== name);\n return this;\n }\n\n public withClassName(className: string, labelClassName = '', inputClassName = '', fieldClassName?: string): this {\n this._className = className;\n this._labelClassName = labelClassName;\n this._inputClassName = inputClassName;\n this._fieldClassName = fieldClassName;\n return this;\n }\n\n public withSize(size: FieldSizeEnum = FieldSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n /**\n * This function adds an icon with text Show all translations above the field and after clicking on it, it displays a new dialog with tableview.\n * This new table view shows all available translations for specific property and allows editing it.\n */\n public localized(): this {\n this._isLocalized = true;\n return this;\n }\n\n public nextEvent(\n type: FormFieldEventTypeEnum,\n component: FieldType<CommonsFormlyFieldConfig<FieldValue, EditorModel, any>>,\n data?: FormFieldEventData<FieldValue, EditorModel>\n ) {\n this._eventsSubject.next({\n type: type,\n fieldComponent: component,\n formComponent: component.props.formEditorComponent,\n form: component?.form as FormGroup,\n fieldFormControl: component.formControl as FormControl,\n fieldFormlyConfig: component.field,\n data: data\n });\n }\n\n public get events$() {\n return this._eventsSubject.asObservable();\n }\n\n protected copyFieldsTo(obj: AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>) {\n obj._label = this._label;\n obj._placeholder = this._placeholder;\n obj._helpText = this._helpText;\n obj._required = this._required;\n obj._disabled = this._disabled;\n obj._defaultValue = this._defaultValue;\n obj._requiredExpression = this._requiredExpression;\n obj._hiddenExpression = this._hiddenExpression;\n obj._hiddenResetOnHide = this._hiddenResetOnHide;\n obj._updateOn = this._updateOn;\n obj._onInit = this._onInit;\n obj._onChanges = this._onChanges;\n obj._onDestroy = this._onDestroy;\n obj._afterContentInit = this._afterContentInit;\n obj._afterViewInit = this._afterViewInit;\n obj._onValueChange = this._onValueChange;\n obj._disabledExpression = this._disabledExpression;\n obj._className = this._className;\n obj._size = this.size;\n obj._getter = this._getter;\n obj._setter = this._setter;\n obj._isLocalized = this._isLocalized;\n obj._validations = this._validations.map(value => value.copy());\n obj._asyncValidations = this._asyncValidations.map(value => value.copy());\n }\n}\n","import {Observable} from 'rxjs';\n\nimport {StyleLevelEnum} from '@mediusinc/mng-commons/core';\nimport {ActionButtonDescriptor, ButtonStyleBuilder} from '@mediusinc/mng-commons/form/api';\n\nimport {FieldActionContext, FieldActionResult} from '../models/field-action-context.model';\nimport {AFieldDescriptor} from './field-base.descriptor';\n\nexport type FieldActionRunFnType<EditorModel, ParentEditorModel = undefined> = (\n ctx: FieldActionContext<EditorModel, ParentEditorModel>\n) => void | FieldActionResult | Observable<FieldActionResult>;\n\nexport class FieldActionDescriptor<EditorModel, ParentEditorModel = undefined> extends AFieldDescriptor<void, EditorModel, void, ParentEditorModel> {\n protected readonly _fieldActionName: string;\n\n protected _button = new ActionButtonDescriptor();\n\n protected _runFunction?: FieldActionRunFnType<EditorModel>;\n\n private _wrappers = ['field'];\n\n constructor(property: string) {\n super(property);\n this._fieldActionName = property;\n }\n\n public get button() {\n return this._button;\n }\n\n public get runFunction() {\n return this._runFunction;\n }\n\n public get wrappers() {\n return this._wrappers;\n }\n\n public withButtonDescriptor(button: ActionButtonDescriptor): this {\n this._button = button;\n return this;\n }\n\n public withButton(label?: string | null, icon: string | null = null, styleLevel = StyleLevelEnum.Default, styleText = false): this {\n this._button = new ActionButtonDescriptor().withLabel(label).withIcon(icon).withStyleClass(new ButtonStyleBuilder(styleLevel).withTextButton(styleText));\n return this;\n }\n\n public withRunFunction(fn: FieldActionRunFnType<EditorModel>): this {\n this._runFunction = fn;\n return this;\n }\n\n public withWrappers(wrappers: string[]): this {\n this._wrappers = wrappers;\n return this;\n }\n\n public copy(): FieldActionDescriptor<EditorModel, ParentEditorModel> {\n const field = new FieldActionDescriptor<EditorModel, ParentEditorModel>(this._property);\n this.copyFieldsTo(field);\n field._button = this._button.copy();\n field._runFunction = this._runFunction?.bind(field);\n field._wrappers = [...this._wrappers];\n return field;\n }\n}\n","import {EDITOR_DEFAULT_GROUP_NAME} from '../models/editor.model';\nimport {FieldBaseValidator, FormValidationMessage, FormValidator} from '../models/field-validation.model';\nimport {FieldGroupTypeEnum} from '../models/field.model';\nimport {AFieldDescriptor, AGenericFieldDescriptor} from './field-base.descriptor';\nimport {FieldValidationDescriptor, FieldValidationDescriptorOptsType} from './field-validation.descriptor';\n\nexport abstract class AFieldGroupDescriptor<EditorModel, ParentEditorModel = undefined> extends AGenericFieldDescriptor {\n protected readonly _name: string;\n protected readonly _default: boolean;\n protected _title?: string | null;\n protected _fields: AGenericFieldDescriptor[] = [];\n protected _validations: Array<FieldValidationDescriptor<any, any, any>> = [];\n\n protected constructor(name: string) {\n super();\n this._name = name;\n this._default = name === EDITOR_DEFAULT_GROUP_NAME;\n }\n\n public removeField(property: string, filterFunction: (fields: AGenericFieldDescriptor[]) => AGenericFieldDescriptor[]): AGenericFieldDescriptor[] {\n this._fields = filterFunction(this._fields);\n return this._fields;\n }\n\n public get title() {\n return this._title;\n }\n\n abstract get type(): FieldGroupTypeEnum;\n\n abstract get fields(): AGenericFieldDescriptor[];\n\n public get validations() {\n return this._validations;\n }\n\n public get name() {\n return this._name;\n }\n\n public get default() {\n return this._default;\n }\n\n abstract addField(field: AGenericFieldDescriptor): this;\n\n abstract copy(): AFieldGroupDescriptor<EditorModel, ParentEditorModel>;\n\n public withTitle(title?: string | null): this {\n this._title = title;\n return this;\n }\n\n public withValidation<Value = EditorModel, ParentValue = ParentEditorModel>(\n name: string,\n validator?: FormValidator<Value, ParentValue>,\n message?: FormValidationMessage<Value, ParentValue>,\n opts?: FieldValidationDescriptorOptsType\n ) {\n this._validations.push(\n new FieldValidationDescriptor<Value, Value, ParentValue>(name, validator as FieldBaseValidator<Value, Value, ParentValue> | undefined, message, opts)\n );\n return this;\n }\n}\n\nexport class FieldTabGroupDescriptor<EditorModel> extends AFieldGroupDescriptor<EditorModel> {\n protected override _fields: FieldGroupDescriptor<EditorModel>[] = [];\n\n constructor(name: string) {\n super(name);\n }\n\n public override get type() {\n return FieldGroupTypeEnum.Tab;\n }\n\n public get fields(): Array<FieldGroupDescriptor<EditorModel>> {\n return this._fields as Array<FieldGroupDescriptor<EditorModel>>;\n }\n\n public addField(field: FieldGroupDescriptor<EditorModel>): this {\n this._fields.push(field);\n return this;\n }\n\n public copy(skipFields = false): FieldTabGroupDescriptor<EditorModel> {\n const tab = new FieldTabGroupDescriptor<EditorModel>(this.name);\n tab._title = this._title;\n tab._fields = this.fields.map(f => f.copy(skipFields));\n tab._validations = this.validations.map(v => v.copy());\n return tab;\n }\n}\n\nexport class FieldGroupDescriptor<EditorModel, ParentEditorModel = undefined> extends AFieldGroupDescriptor<EditorModel, ParentEditorModel> {\n private _type = FieldGroupTypeEnum.Fieldset;\n\n constructor(name: string) {\n super(name);\n if (this._default) {\n this.asLogical();\n }\n }\n\n public override get type() {\n return this._type;\n }\n\n public get fields(): Array<AFieldDescriptor<any, EditorModel>> {\n return this._fields as Array<AFieldDescriptor<any, EditorModel>>;\n }\n\n public addField(field: AFieldDescriptor<any, EditorModel>): this {\n this._fields.push(field);\n return this;\n }\n\n public asLogical(): this {\n this._type = FieldGroupTypeEnum.Logical;\n return this;\n }\n\n public copy(skipFields = false): FieldGroupDescriptor<EditorModel> {\n const group = new FieldGroupDescriptor<EditorModel>(this.name);\n group._type = this._type;\n group._title = this._title;\n if (!skipFields) {\n group._fields = this.fields.map(f => f.copy());\n }\n group._validations = this.validations.map(v => v.copy());\n return group;\n }\n}\n","import {\n ClassType,\n EnumConstantType,\n EnumValue,\n IDataProvider,\n ILookupDataProvider,\n ILookupDescriptor,\n LookupDataProviderLookupFnType,\n ServiceClassType,\n fromEnumConstantsAsValueArray,\n fromEnumValuesAsValueArray,\n getEnumConstantName\n} from '@mediusinc/mng-commons/core';\nimport {InputTrimType, LookupDataProviderInst} from '@mediusinc/mng-commons/form/api';\nimport {EnumDescriptor, trySetLookupItemsProperties} from '@mediusinc/mng-commons/model';\nimport {ITableDataProvider, TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {FieldLookupConfig, FieldLookupTypeEnum} from '../models/field.model';\nimport {AFieldDescriptor} from './field-base.descriptor';\n\nexport type FieldLookupDescriptorConstructorOptsType<EditorModel, Service, Sorts, Filters extends keyof any> = FieldLookupDescriptorCreateOptsProviderType<\n EditorModel,\n Service,\n Sorts,\n Filters\n> & {\n type?: ClassType<EditorModel>;\n optionsValueProperty?: string;\n};\n\nexport type FieldLookupDescriptorCreateOptsProviderType<FieldModel, Service, Sorts = keyof FieldModel, Filters extends keyof any = keyof FieldModel> = {\n serviceType?: ServiceClassType<Service>;\n dataProvider?: ILookupDataProvider<FieldModel, Service, Sorts, Filters>;\n};\n\nexport type FieldLookupProviderType<FieldModel, Service> = ServiceClassType<Service> | ILookupDataProvider<FieldModel, Service>;\n\nexport type FieldLookupAutocompleteOptsType = {\n openOnFocus?: boolean;\n inlineSearch?: boolean;\n selectFirst?: boolean;\n autoClear?: boolean;\n};\n\nexport const fieldLookupGetProviderCfgObj = <FieldModel, Service>(serviceOrDataProvider?: FieldLookupProviderType<FieldModel, Service>) => {\n const cfg: FieldLookupDescriptorCreateOptsProviderType<FieldModel, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider as ILookupDataProvider<FieldModel, Service>;\n } else {\n cfg.serviceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\nexport class FieldLookupDescriptor<\n FieldModel,\n EditorModel,\n Service = any,\n FieldValue = FieldModel,\n ParentEditorModel = undefined,\n Sorts = keyof FieldModel,\n Filters extends keyof any = keyof FieldModel\n >\n extends AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>\n implements ILookupDescriptor<FieldModel, Service, Sorts, Filters>\n{\n protected readonly _dataProvider: ILookupDataProvider<FieldModel, Service, Sorts, Filters>;\n protected readonly _optionsValueProperty?: string; // this defines VT!\n\n protected _lookupType: FieldLookupTypeEnum = FieldLookupTypeEnum.Dropdown;\n protected _optionsLabelProperty?: string;\n protected _optionsLabelTranslate = false;\n protected _optionsDisabledProperty?: string;\n protected _optionsTrackProperty?: string;\n\n protected _dropdownClassName = 'mng-filter-lookup-dropdown';\n\n protected _autocompleteOpenOnFocus?: boolean;\n protected _autocompleteInlineSearch?: boolean;\n protected _autocompleteAutoClear?: boolean;\n protected _autocompleteSelectFirst?: boolean;\n protected _autocompleteInputTrim?: InputTrimType;\n\n // TODO: address ParentEditorModel\n protected _dialogTableDescriptor?: TableDescriptorInst<FieldModel, any, any>;\n protected _dialogTableDataProvider?: ITableDataProvider<FieldModel, any, any, any>;\n\n protected _customComponentName?: string;\n\n constructor(property: string, cfg?: FieldLookupDescriptorConstructorOptsType<FieldModel, Service, Sorts, Filters>) {\n super(property as string);\n\n if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n } else {\n this._dataProvider = new LookupDataProviderInst(cfg?.type, cfg?.serviceType);\n }\n\n this._optionsValueProperty = cfg?.optionsValueProperty;\n\n trySetLookupItemsProperties(this);\n }\n\n public get lookupType() {\n return this._lookupType;\n }\n\n public get optionsLabelProperty() {\n return this._optionsLabelProperty;\n }\n\n public get optionsLabelTranslate() {\n return this._optionsLabelTranslate;\n }\n\n public get optionsValueProperty() {\n return this._optionsValueProperty;\n }\n\n public get optionsDisabledProperty() {\n return this._optionsDisabledProperty;\n }\n\n public get optionsTrackProperty() {\n return this._optionsTrackProperty;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get autocompleteOpenOnFocus() {\n return this._autocompleteOpenOnFocus;\n }\n\n public get autocompleteInlineSearch() {\n return this._autocompleteInlineSearch;\n }\n\n public get autocompleteAutoClear() {\n return this._autocompleteAutoClear;\n }\n\n public get autocompleteSelectFirst() {\n return this._autocompleteSelectFirst;\n }\n\n public get dropdownClassName() {\n return this._dropdownClassName;\n }\n\n public get dialogTableDescriptor() {\n return this._dialogTableDescriptor;\n }\n\n public get dialogTableDataProvider() {\n return this._dialogTableDataProvider;\n }\n\n public get customComponentName() {\n return this._customComponentName;\n }\n\n public get trimOption() {\n return this._autocompleteInputTrim;\n }\n\n public withOptionsLabelProperty(property: keyof FieldModel, translate = false): this {\n return this.withOptionsLabelPropertyUnsafe(property as string, translate);\n }\n\n public withOptionsLabelPropertyUnsafe(property: string, translate = false): this {\n this._optionsLabelProperty = property;\n this._optionsLabelTranslate = translate;\n return this;\n }\n\n public withOptionsDisabledProperty(property: keyof FieldModel): this {\n return this.withOptionsDisabledPropertyUnsafe(property as string);\n }\n\n public withOptionsDisabledPropertyUnsafe(property: string): this {\n this._optionsDisabledProperty = property;\n return this;\n }\n\n public withOptionsTrackProperty(property: keyof FieldModel): this {\n return this.withOptionsTrackPropertyUnsafe(property as string);\n }\n\n public withOptionsTrackPropertyUnsafe(property: string): this {\n if (this._optionsValueProperty) {\n return this;\n }\n this._optionsTrackProperty = property;\n return this;\n }\n\n public withLookup(lookup?: LookupDataProviderLookupFnType<FieldModel, Service, Sorts, Filters>): this {\n this._dataProvider.withLookup(lookup);\n return this;\n }\n\n public withInputTrim(trimOption: InputTrimType = 'both'): this {\n this._autocompleteInputTrim = trimOption;\n return this;\n }\n\n public override withConfig(config: FieldLookupConfig): this {\n return super.withConfig(config);\n }\n\n public asAutocomplete(opts?: FieldLookupAutocompleteOptsType): this {\n this._lookupType = FieldLookupTypeEnum.Autocomplete;\n this._autocompleteAutoClear = opts?.autoClear;\n this._autocompleteSelectFirst = opts?.selectFirst;\n this._autocompleteOpenOnFocus = opts?.openOnFocus;\n this._autocompleteInlineSearch = opts?.inlineSearch;\n return this;\n }\n\n public asDialog<Sorts = keyof FieldModel, Filters extends keyof any = keyof FieldModel>(\n lookupTableDescriptor: TableDescriptorInst<FieldModel, Sorts, Filters>,\n tableDataProvider?: ITableDataProvider<FieldModel, any, Sorts, Filters>\n ): this {\n this._lookupType = FieldLookupTypeEnum.Dialog;\n this._dialogTableDescriptor = lookupTableDescriptor;\n this._dialogTableDataProvider = tableDataProvider;\n return this;\n }\n\n public asCustomComponent(customComponentName: string): this {\n this._lookupType = FieldLookupTypeEnum.Custom;\n this._customComponentName = customComponentName;\n return this;\n }\n\n public copy(): FieldLookupDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel, Sorts, Filters> {\n const field = new FieldLookupDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel, Sorts, Filters>(this._property, {\n dataProvider: this._dataProvider,\n optionsValueProperty: this._optionsValueProperty\n });\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._optionsLabelProperty = this._optionsLabelProperty;\n field._optionsLabelTranslate = this._optionsLabelTranslate;\n field._optionsDisabledProperty = this._optionsDisabledProperty;\n field._optionsTrackProperty = this._optionsTrackProperty;\n field._dropdownClassName = this._dropdownClassName;\n field._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;\n field._autocompleteInlineSearch = this._autocompleteInlineSearch;\n field._dialogTableDescriptor = this._dialogTableDescriptor;\n return field;\n }\n}\n\nexport class FieldLookupEnumDescriptor<Enum, EditorModel, ParentEditorModel = undefined> extends FieldLookupDescriptor<\n EnumValue,\n EditorModel,\n undefined,\n EnumConstantType,\n ParentEditorModel,\n never,\n never\n> {\n private readonly _enumModel: EnumDescriptor<Enum>;\n private readonly _optionEnumValues: EnumValue[];\n private readonly _options: Enum[] | undefined; // used to ensure proper copying\n\n constructor(property: string, enumModel: EnumDescriptor<Enum>, options?: Array<Enum>) {\n super(property, {\n dataProvider: new LookupDataProviderInst<EnumValue, undefined, never, never, undefined, undefined>(undefined, undefined),\n optionsValueProperty: 'value'\n });\n this._enumModel = enumModel;\n this._options = options;\n this._optionEnumValues = Array.isArray(options)\n ? fromEnumValuesAsValueArray<Enum>(this._enumModel.type, options, this._enumModel.nameAsValue, this._enumModel.i18nBaseKey ?? undefined)\n : fromEnumConstantsAsValueArray(this._enumModel.type, this._enumModel.nameAsValue, this._enumModel.i18nBaseKey ?? undefined);\n this.withLookup(() => this._optionEnumValues);\n this.withOptionsLabelProperty('title', this._enumModel.i18nBaseKey !== null);\n this.withOptionsDisabledProperty('disabled');\n }\n\n public get enumModel() {\n return this._enumModel;\n }\n\n public withDisabledOptions(...disabledOptions: Array<EnumConstantType>): this {\n for (const disabledOption of disabledOptions) {\n const disabledOptionValue = this._enumModel.nameAsValue ? getEnumConstantName(this._enumModel.type, disabledOption) : disabledOption;\n if (disabledOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === disabledOptionValue);\n if (option) {\n option.disabled = true;\n }\n }\n }\n return this;\n }\n\n public withDefaultValueEnum(defaultValue: EnumConstantType): this {\n const defaultOptionValue = this._enumModel.nameAsValue ? getEnumConstantName(this._enumModel.type, defaultValue) : defaultValue;\n if (defaultOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === defaultOptionValue);\n if (option) {\n this.withDefaultValue(option[this._optionsValueProperty as keyof object]);\n }\n }\n return this;\n }\n\n public override asAutocomplete(opts?: FieldLookupAutocompleteOptsType): this {\n super.asAutocomplete({\n ...opts,\n openOnFocus: opts?.openOnFocus ?? true,\n inlineSearch: opts?.inlineSearch ?? true\n });\n return this;\n }\n\n public override copy(): FieldLookupEnumDescriptor<Enum, EditorModel, ParentEditorModel> {\n const field = new FieldLookupEnumDescriptor<Enum, EditorModel, ParentEditorModel>(this._property, this._enumModel, this._options);\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._optionsLabelProperty = this._optionsLabelProperty;\n field._optionsDisabledProperty = this._optionsDisabledProperty;\n field._optionsTrackProperty = this._optionsTrackProperty;\n return field;\n }\n}\n","import {IDataProvider, ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ITableDataProvider, TableDataProviderGetAllFnType, TableDataProviderInst, TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {ActionDescriptorInst} from '../../action/descriptors/action.descriptor';\nimport {TableviewDescriptorInst} from '../../tableview/descriptors/tableview.descriptor';\nimport {FieldManyEditorActionEnum, FieldManyEditorTypeEnum, FieldManyToManyEditorActionEnum, FieldManyToManyEditorTypeEnum} from '../models/field.model';\nimport {AFieldDescriptor} from './field-base.descriptor';\n\nexport type FieldManyToManyEditorDescriptorConstructorOptsType<FieldModel, Service> = FieldManyToManyEditorDescriptorCreateOptsProviderType<FieldModel, Service>;\n\nexport type FieldManyToManyEditorDescriptorCreateOptsProviderType<FieldModel, Service> = {\n lookupServiceType?: ServiceClassType<Service>;\n lookupDataProvider?: ITableDataProvider<FieldModel, Service>;\n};\n\nexport type FieldManyToManyEditorProviderType<FieldModel, Service> = ServiceClassType<Service> | ITableDataProvider<FieldModel, Service>;\n\nexport const fieldManyToManyGetProviderCfgObj = <FieldModel, Service>(serviceOrDataProvider?: FieldManyToManyEditorProviderType<FieldModel, Service>) => {\n const cfg: FieldManyToManyEditorDescriptorCreateOptsProviderType<FieldModel, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.lookupDataProvider = serviceOrDataProvider as ITableDataProvider<FieldModel, Service>;\n } else {\n cfg.lookupServiceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\nexport class FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service = any, FieldValue = FieldModel[], ParentEditorModel = undefined> extends AFieldDescriptor<\n FieldModel,\n EditorModel,\n FieldValue,\n ParentEditorModel\n> {\n private readonly _mainTableDescriptor: TableDescriptorInst<FieldModel>; // table descriptor for main table component\n private readonly _lookupTableDescriptor: TableDescriptorInst<FieldModel>; // table descriptor for where select will be applied\n private readonly _lookupTableDataProvider: ITableDataProvider<FieldModel, Service>;\n private _fieldType: FieldManyToManyEditorTypeEnum = FieldManyToManyEditorTypeEnum.DialogTableMultiselect;\n private _actions: Array<FieldManyToManyEditorActionEnum> = [FieldManyToManyEditorActionEnum.Add, FieldManyToManyEditorActionEnum.Delete];\n private _hasLookupExcludeValues = false;\n private _excludeFilterProperty = '';\n private _excludeValueProperty = '';\n\n constructor(\n property: string,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n cfg?: FieldManyToManyEditorDescriptorConstructorOptsType<FieldModel, Service>\n ) {\n super(property);\n this._mainTableDescriptor = mainTableDescriptor;\n this._lookupTableDescriptor = lookupTableDescriptor;\n\n if (cfg?.lookupDataProvider) {\n this._lookupTableDataProvider = cfg.lookupDataProvider;\n } else {\n this._lookupTableDataProvider = new TableDataProviderInst(lookupTableDescriptor.model.type, cfg?.lookupServiceType);\n }\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get actions() {\n return this._actions;\n }\n\n public get hasLookupExcludeValues() {\n return this._hasLookupExcludeValues;\n }\n\n public get excludeFilterProperty() {\n return this._excludeFilterProperty;\n }\n\n public get excludeValueProperty() {\n return this._excludeValueProperty;\n }\n\n public get mainTableDescriptor() {\n return this._mainTableDescriptor;\n }\n\n public get lookupTableDescriptor() {\n return this._lookupTableDescriptor;\n }\n\n public get lookupTableDataProvider() {\n return this._lookupTableDataProvider;\n }\n\n public withLookup(fn: TableDataProviderGetAllFnType<FieldModel, Service>): this {\n this._lookupTableDataProvider.withGetAll(fn);\n return this;\n }\n\n public withActions(actions: Array<FieldManyToManyEditorActionEnum> = []): this {\n this.actions.push(...actions);\n return this;\n }\n\n public withLookupExclude(filterProperty: keyof FieldModel, valueProperty: keyof FieldModel, hasLookupExclude = true): this {\n return this.withLookupExcludeUnsafe(filterProperty as string, valueProperty as string, hasLookupExclude);\n }\n\n public withLookupExcludeUnsafe(filterProperty: string, valueProperty: string, hasLookupExclude = true): this {\n this._hasLookupExcludeValues = hasLookupExclude;\n this._excludeFilterProperty = filterProperty;\n this._excludeValueProperty = valueProperty;\n return this;\n }\n\n /**\n * @deprecated Use directly on lookup table descriptor.\n */\n public withSearch(enabled = true, searchFields?: (keyof FieldModel)[]): this {\n return this.withSearchUnsafe(enabled, searchFields as string[] | undefined);\n }\n\n /**\n * @deprecated Use directly on lookup table descriptor.\n */\n public withSearchUnsafe(enabled = true, searchFields?: string[]): this {\n this.lookupTableDescriptor.withSearchUnsafe(enabled, {\n fields: searchFields,\n limitMaxWords: 100\n });\n return this;\n }\n\n public copy(): FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel> {\n const field = new FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel>(\n this._property,\n this._mainTableDescriptor.copy(),\n this._lookupTableDescriptor.copy(),\n {\n lookupDataProvider: this.lookupTableDataProvider\n }\n );\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._actions = this._actions.map(a => a);\n field._hasLookupExcludeValues = this._hasLookupExcludeValues;\n field._excludeFilterProperty = this._excludeFilterProperty;\n field._excludeValueProperty = this._excludeValueProperty;\n return field;\n }\n}\n\nexport class FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue = FieldModel[], ParentEditorModel = undefined> extends AFieldDescriptor<\n FieldModel,\n EditorModel,\n FieldValue,\n ParentEditorModel\n> {\n private readonly _tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, EditorModel>;\n private _fieldType: FieldManyEditorTypeEnum = FieldManyEditorTypeEnum.DialogEditor;\n private _fieldActions: Array<FieldManyEditorActionEnum> = [];\n private _actions: Array<ActionDescriptorInst<FieldModel>> = [];\n\n constructor(property: string, tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, EditorModel>) {\n super(property);\n this._tableviewDescriptor = tableviewDescriptor;\n this._fieldActions.push(FieldManyEditorActionEnum.View, FieldManyEditorActionEnum.Add, FieldManyEditorActionEnum.Edit, FieldManyEditorActionEnum.Delete);\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get fieldActions() {\n return this._fieldActions;\n }\n\n public get actions() {\n return this._actions;\n }\n\n public get tableviewDescriptor() {\n return this._tableviewDescriptor;\n }\n\n public get tableDescriptor() {\n return this._tableviewDescriptor.table;\n }\n\n public get editorForCreate() {\n return this._tableviewDescriptor.addEditor;\n }\n\n public get editorForRead() {\n return this._tableviewDescriptor.detailsEditor;\n }\n\n public get editorForUpdate() {\n return this._tableviewDescriptor.editEditor;\n }\n\n public withFieldAction(action: FieldManyEditorActionEnum): this {\n this._fieldActions.push(action);\n return this;\n }\n\n public withFieldActions(actions: FieldManyEditorActionEnum[]): this {\n this._fieldActions = actions;\n return this;\n }\n\n public withAction(action: ActionDescriptorInst<FieldModel>): this {\n this._actions.push(action);\n return this;\n }\n\n public copy(): FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel> {\n const field = new FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>(this._property, this._tableviewDescriptor.copy());\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._fieldActions = this._fieldActions.map(a => a);\n return field;\n }\n}\n","import {Type} from '@angular/core';\nimport {AbstractControl} from '@angular/forms';\n\nimport {ItemOrObservable, fromEnumConstantsAsValueArray, fromEnumValuesAsValueArray} from '@mediusinc/mng-commons/core';\nimport {InputTrimType} from '@mediusinc/mng-commons/form/api';\nimport {EnumDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {FieldImagePreviewComponent} from '../models/field-image-preview.model';\nimport {FieldInputTypeEnum} from '../models/field.model';\nimport {AFormlyCustomFieldComponent} from '../models/formly-custom-field.model';\nimport {CommonsFormlyFieldConfig} from '../models/formly-field.model';\nimport {RadioValue} from '../models/radio.model';\nimport {AFieldDescriptor} from './field-base.descriptor';\n\nexport type FieldInputDescriptorType = string | string[] | number | boolean | Date | File | File[];\n\nexport type FieldInputTextOptsType = {\n email?: boolean;\n} & FieldInputTextValidationOptsType;\n\nexport type FieldInputTextareaOptsType = {\n rows?: number;\n} & FieldInputTextValidationOptsType;\n\nexport type FieldInputTextValidationOptsType = {\n minLength?: number;\n maxLength?: number;\n pattern?: string | RegExp;\n};\n\nexport type FieldInputDatePickerDisplayOptsType = {\n format?: string;\n showTime?: boolean;\n showSeconds?: boolean;\n};\n\nexport type FieldInputDateValidationOptsType<FieldValue, EditorModel, ParentEditorModel> = {\n min?: Date | FieldInputDatePickerDynamicMinMaxFnType<FieldValue, EditorModel, ParentEditorModel>;\n max?: Date | FieldInputDatePickerDynamicMinMaxFnType<FieldValue, EditorModel, ParentEditorModel>;\n};\n\nexport type FieldInputCurrencyOptsType<Property = string> = {\n currencyProperty?: Property;\n currency?: string;\n currencyDisplay?: 'symbol' | 'code' | 'name';\n} & FieldInputNumberGroupingOptsType &\n FieldInputNumberFractionOptsType &\n FieldInputNumberValidationOptsType &\n FieldInputLocaleOptsType;\n\nexport type FieldInputNumberOptsType = FieldInputNumberGroupingOptsType &\n FieldInputNumberFractionOptsType &\n FieldInputNumberValidationOptsType &\n FieldInputLocaleOptsType &\n FieldInputNumberDisplayOptsType;\n\nexport type FieldInputNumberGroupingOptsType = {\n groupSeparator?: boolean;\n};\n\nexport type FieldInputNumberValidationOptsType = {\n min?: number;\n max?: number;\n step?: number;\n autoCorrect?: boolean;\n};\n\nexport type FieldInputNumberFractionOptsType = {\n minFractionDigits?: number;\n maxFractionDigits?: number;\n};\n\nexport type FieldInputLocaleOptsType = {\n locale?: string;\n};\n\nexport type FieldInputNumberDisplayOptsType = {\n prefix?: string;\n suffix?: string;\n};\n\nexport type FieldInputDatePickerOptsType<FieldValue, EditorModel, ParentEditorModel> = FieldInputDatePickerDisplayOptsType &\n FieldInputDateValidationOptsType<FieldValue, EditorModel, ParentEditorModel> &\n FieldDateOptsType;\n\nexport type FieldDateOptsType = {\n asDateObj?: boolean;\n utc?: boolean;\n noTime?: boolean;\n noTimeZone?: boolean;\n};\n\nexport type FieldInputFileOpts = {\n multiple?: boolean;\n maxFileSize?: number;\n accept?: string;\n onFileSelectHandlerFn?: FieldInputFileOnSelectHandlerFnType;\n preview?: boolean;\n previewAllowSvg?: boolean;\n previewComponent?: Type<FieldImagePreviewComponent>;\n};\n\nexport type FieldInputImageUrlOpts = {\n multiple?: boolean;\n preview?: boolean;\n inputVisibleOnDisabled?: boolean;\n previewAllowSvg?: boolean;\n previewComponent?: Type<FieldImagePreviewComponent>;\n};\n\nexport type FieldInputComponentOpts = {\n fieldWrappers?: string[];\n inputs?: Record<string, any>;\n};\n\nexport type FieldInputFileOnSelectHandlerFnType = (file: File[] | null, control: AbstractControl) => void;\nexport type FieldInputDatePickerDynamicMinMaxFnType<Value, FormValue, ParentFormValue> = (\n control: AbstractControl<Value>,\n field: CommonsFormlyFieldConfig<Value, FormValue, ParentFormValue>\n) => ItemOrObservable<Date | undefined>;\n\nexport class FieldInputDescriptor<EditorModel, FieldModel = FieldInputDescriptorType, FieldValue = FieldModel, ParentEditorModel = undefined> extends AFieldDescriptor<\n FieldModel,\n EditorModel,\n FieldValue,\n ParentEditorModel\n> {\n private _fieldType: FieldInputTypeEnum = FieldInputTypeEnum.Text;\n\n // textarea specific properties\n private _rows?: number;\n\n // number specific properties\n private _numberMin?: number;\n private _numberMax?: number;\n private _numberStep?: number;\n private _numberAutoCorrect?: boolean;\n private _numberMinFractionDigits?: number;\n private _numberMaxFractionDigits?: number;\n private _numberUseGrouping = true;\n private _locale?: string;\n private _numberPrefix?: string;\n private _numberSuffix?: string;\n\n // currency specific properties\n private _currency?: string;\n private _currencyDisplay: 'symbol' | 'code' | 'name' = 'symbol';\n private _currencyFromProperty?: string;\n\n // radio specific properties\n private _radioOptions: Array<RadioValue> = [];\n\n // datepicker specific properties\n private _datePickerFormat?: string;\n private _datePickerMin?: Date | FieldInputDatePickerDynamicMinMaxFnType<FieldValue, EditorModel, ParentEditorModel>;\n private _datePickerMax?: Date | FieldInputDatePickerDynamicMinMaxFnType<FieldValue, EditorModel, ParentEditorModel>;\n private _datePickerShowTime?: boolean;\n private _datePickerShowSeconds?: boolean;\n private _datePickerValueUtc?: boolean;\n private _datePickerValueNoTimezone?: boolean;\n private _datePickerValueNoTime?: boolean;\n private _datePickerValueAsDateObj?: boolean;\n\n // input specific properties\n private _maxLength?: number;\n private _minLength?: number;\n private _pattern?: string | RegExp;\n private _inputTrim?: InputTrimType;\n private _validationEmail?: boolean;\n\n // mask specific properties\n private _mask?: string;\n private _slotChar?: string;\n\n // file specific properties\n private _fileMultiple?: boolean;\n private _fileMaxFileSize?: number;\n private _fileAccept?: string;\n private _fileOnSelectHandler?: FieldInputFileOnSelectHandlerFnType;\n\n // image specific properties\n private _imagePreview?: boolean;\n private _imageUrlInputHiddenOnDisabled?: boolean;\n private _imagePreviewAllowSvg?: boolean;\n private _imagePreviewComponent?: Type<FieldImagePreviewComponent>;\n\n // custom component properties\n private _customComponentType?: Type<AFormlyCustomFieldComponent<FieldValue, EditorModel, ParentEditorModel>>;\n private _customComponentInputs?: Record<string, any>;\n private _customComponentWrappers?: string[];\n\n constructor(property: string) {\n super(property);\n }\n\n /**\n * converts field to given type with additional arguments\n * @param fieldType field type enum\n * @param args any additional arguments for field (optional)\n */\n public asType(fieldType: FieldInputTypeEnum, ...args: any[]): this {\n switch (fieldType) {\n case FieldInputTypeEnum.Hidden:\n return this.asHidden();\n case FieldInputTypeEnum.Label:\n return this.asLabel();\n case FieldInputTypeEnum.Textarea:\n return this.asTextarea(...args);\n case FieldInputTypeEnum.Number:\n return this.asNumber(...args);\n case FieldInputTypeEnum.Currency:\n return this.asCurrency(...args);\n case FieldInputTypeEnum.Switch:\n return this.asSwitch();\n case FieldInputTypeEnum.Radio:\n return this.asRadio(args[0], args[1]);\n case FieldInputTypeEnum.Datepicker:\n return this.asDatePicker(...args);\n case FieldInputTypeEnum.Mask:\n return this.asMask(args[0], args[1]);\n case FieldInputTypeEnum.File:\n return this.asFile(...args);\n case FieldInputTypeEnum.ImageFile:\n return this.asImageFile(...args);\n case FieldInputTypeEnum.ImageUrl:\n return this.asImageUrl(...args);\n case FieldInputTypeEnum.Custom:\n return this.asCustomComponent(args[0], args[1]);\n case FieldInputTypeEnum.Text:\n return this.asText(args[0]);\n }\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get rows() {\n return this._rows;\n }\n\n public get numberMin() {\n return this._numberMin;\n }\n\n public get numberMax() {\n return this._numberMax;\n }\n\n public get numberStep() {\n return this._numberStep;\n }\n\n public get numberAutoCorrect() {\n return this._numberAutoCorrect;\n }\n\n public get numberMinFractionDigits() {\n return this._numberMinFractionDigits;\n }\n\n public get numberMaxFractionDigits() {\n return this._numberMaxFractionDigits;\n }\n\n public get numberUseGrouping() {\n return this._numberUseGrouping;\n }\n\n public get numberPrefix() {\n return this._numberPrefix;\n }\n\n public get numberSuffix() {\n return this._numberSuffix;\n }\n\n public get radioOptions() {\n return this._radioOptions;\n }\n\n public get datePickerFormat() {\n return this._datePickerFormat;\n }\n\n public get datePickerMin() {\n return this._datePickerMin;\n }\n\n public get datePickerMax() {\n return this._datePickerMax;\n }\n\n public get datePickerShowTime() {\n return this._datePickerShowTime;\n }\n\n public get datePickerShowSeconds() {\n return this._datePickerShowSeconds;\n }\n\n public get datePickerValueUtc() {\n return this._datePickerValueUtc;\n }\n\n public get datePickerValueNoTimezone() {\n return this._datePickerValueNoTimezone;\n }\n\n public get datePickerValueNoTime() {\n return this._datePickerValueNoTime;\n }\n\n public get datePickerValueAsDateObj() {\n return this._datePickerValueAsDateObj;\n }\n\n public get maxLength() {\n return this._maxLength;\n }\n\n public get minLength() {\n return this._minLength;\n }\n\n public get pattern() {\n return this._pattern;\n }\n\n public get trimOption() {\n return this._inputTrim;\n }\n\n public get validationEmail() {\n return this._validationEmail;\n }\n\n public get mask() {\n return this._mask;\n }\n\n public get slotChar() {\n return this._slotChar;\n }\n\n public get fileMultiple() {\n return this._fileMultiple;\n }\n\n public get fileMaxFileSize() {\n return this._fileMaxFileSize;\n }\n\n public get fileAccept() {\n return this._fileAccept;\n }\n\n public get fileOnSelectHandler() {\n return this._fileOnSelectHandler;\n }\n\n public get imagePreview() {\n return this._imagePreview;\n }\n\n public get imageUrlInputVisibleOnDisabled() {\n return this._imageUrlInputHiddenOnDisabled;\n }\n\n public get imagePreviewAllowSvg() {\n return this._imagePreviewAllowSvg;\n }\n\n public get imagePreviewComponent() {\n return this._imagePreviewComponent;\n }\n\n public get customComponentType() {\n return this._customComponentType;\n }\n\n public get customComponentInputs() {\n return this._customComponentInputs;\n }\n\n public get customComponentWrappers() {\n return this._customComponentWrappers;\n }\n\n public get locale() {\n return this._locale;\n }\n\n public get currency() {\n return this._currency;\n }\n\n public get currencyFromProperty() {\n return this._currencyFromProperty;\n }\n\n public get currencyDisplay() {\n return this._currencyDisplay;\n }\n\n public asHidden(): this {\n this._fieldType = FieldInputTypeEnum.Hidden;\n return this;\n }\n\n public asLabel(): this {\n this._fieldType = FieldInputTypeEnum.Label;\n return this;\n }\n\n public asText(opts?: FieldInputTextOptsType): this {\n this._fieldType = FieldInputTypeEnum.Text;\n return this.withTextValidation(opts).withTextValidationEmail(opts?.email ?? false);\n }\n\n public asTextarea(opts?: FieldInputTextareaOptsType): this {\n this._fieldType = FieldInputTypeEnum.Textarea;\n this._rows = opts?.rows;\n return this.withTextValidation(opts);\n }\n\n public asNumber(opts?: FieldInputNumberOptsType): this {\n this._fieldType = FieldInputTypeEnum.Number;\n return this.withNumberGrouping(opts?.groupSeparator ?? false)\n .withNumberFractions(opts)\n .withNumberValidation(opts)\n .withLocale(opts?.locale)\n .withNumberDisplay(opts);\n }\n\n public asCurrency(opts?: FieldInputCurrencyOptsType<keyof EditorModel>): this {\n return this.asCurrencyUnsafe(<FieldInputCurrencyOptsType>{\n ...opts,\n currencyProperty: opts?.currencyProperty ? (opts.currencyProperty as string) : undefined\n });\n }\n\n public asCurrencyUnsafe(opts?: FieldInputCurrencyOptsType): this {\n this._fieldType = FieldInputTypeEnum.Currency;\n this._currencyFromProperty = opts?.currencyProperty;\n this._currency = opts?.currency ?? this._currency;\n this._currencyDisplay = opts?.currencyDisplay ?? this._currencyDisplay;\n return this.withNumberGrouping(opts?.groupSeparator ?? false)\n .withNumberFractions({\n maxFractionDigits: opts?.maxFractionDigits ?? 2,\n minFractionDigits: opts?.minFractionDigits ?? 2\n })\n .withNumberValidation(opts)\n .withLocale(opts?.locale);\n }\n\n public asSwitch(): this {\n this._fieldType = FieldInputTypeEnum.Switch;\n return this;\n }\n\n public asRadio(options: Array<string | number | boolean>, optionsTitlePath?: string): this {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = options.map(o => <RadioValue>{value: o, title: `${optionsTitlePath ? `${optionsTitlePath}.` : ''}${o}`});\n return this;\n }\n\n public asRadioFromEnum<Enum>(enumModel: EnumDescriptor<Enum>, values?: Array<Enum>): this {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = Array.isArray(values)\n ? fromEnumValuesAsValueArray<Enum>(enumModel.type, values, enumModel.nameAsValue, enumModel.i18nBaseKey ?? undefined)\n : fromEnumConstantsAsValueArray(enumModel.type, enumModel.nameAsValue, enumModel.i18nBaseKey ?? undefined);\n return this;\n }\n\n public asDatePicker(opts?: FieldInputDatePickerOptsType<FieldValue, EditorModel, ParentEditorModel>): this {\n this._fieldType = FieldInputTypeEnum.Datepicker;\n this.withDateValidation(opts);\n this.withDatePickerDisplay(opts);\n this.withDateValue({\n asDateObj: opts?.asDateObj,\n utc: opts?.utc,\n noTimeZone: opts?.noTimeZone,\n noTime: opts?.noTime\n });\n\n return this;\n }\n\n public asMask(mask: string, slotChar: string): this {\n this._fieldType = FieldInputTypeEnum.Mask;\n this._mask = mask;\n this._slotChar = slotChar;\n return this;\n }\n\n public asFile(opts?: FieldInputFileOpts): this {\n this._fieldType = FieldInputTypeEnum.File;\n this._fileMultiple = opts?.multiple;\n this._fileMaxFileSize = opts?.maxFileSize;\n this._fileAccept = opts?.accept;\n return this.withFileOnSelectHandler(opts?.onFileSelectHandlerFn);\n }\n\n public asImageFile(opts?: FieldInputFileOpts): this {\n this.asFile(opts);\n this._fieldType = FieldInputTypeEnum.ImageFile;\n this._imagePreview = opts?.preview;\n this._imagePreviewAllowSvg = opts?.previewAllowSvg;\n this._imagePreviewComponent = opts?.previewComponent;\n return this;\n }\n\n public asImageUrl(opts?: FieldInputImageUrlOpts): this {\n this._fieldType = FieldInputTypeEnum.ImageUrl;\n this._fileMultiple = opts?.multiple;\n this._imagePreview = opts?.preview;\n this._imagePreviewAllowSvg = opts?.previewAllowSvg;\n this._imagePreviewComponent = opts?.previewComponent;\n this._imageUrlInputHiddenOnDisabled = opts?.inputVisibleOnDisabled;\n return this;\n }\n\n public asCustomComponent(component: Type<AFormlyCustomFieldComponent<FieldValue, EditorModel, ParentEditorModel>>, opts?: FieldInputComponentOpts): this {\n this._fieldType = FieldInputTypeEnum.Custom;\n this._customComponentType = component;\n this._customComponentInputs = opts?.inputs;\n this._customComponentWrappers = opts?.fieldWrappers;\n return this;\n }\n\n public withNumberValidation(opts?: FieldInputNumberValidationOptsType): this {\n this._numberStep = opts?.step;\n this._numberAutoCorrect = opts?.autoCorrect;\n this._numberMin = opts?.min;\n this._numberMax = opts?.max;\n return this;\n }\n\n public withLocale(locale?: string): this {\n this._locale = locale;\n return this;\n }\n\n public withNumberFractions(opts?: FieldInputNumberFractionOptsType) {\n this._numberMinFractionDigits = opts?.minFractionDigits;\n this._numberMaxFractionDigits = opts?.maxFractionDigits;\n return this;\n }\n\n public withNumberGrouping(useGrouping = true): this {\n this._numberUseGrouping = useGrouping;\n return this;\n }\n\n public withNumberDisplay(opts?: FieldInputNumberDisplayOptsType): this {\n this._numberPrefix = opts?.prefix;\n this._numberSuffix = opts?.suffix;\n return this;\n }\n\n public withTextareaRows(rows?: number): this {\n this._rows = rows;\n return this;\n }\n\n public withTextValidation(opts?: FieldInputTextValidationOptsType): this {\n this._minLength = opts?.minLength;\n this._maxLength = opts?.maxLength;\n this._pattern = opts?.pattern;\n return this;\n }\n\n public withDatePickerDisplay(opts?: FieldInputDatePickerDisplayOptsType): this {\n this._datePickerFormat = opts?.format;\n this._datePickerShowTime = opts?.showTime;\n this._datePickerShowSeconds = opts?.showSeconds;\n return this;\n }\n\n public withDateValidation(opts?: FieldInputDateValidationOptsType<FieldValue, EditorModel, ParentEditorModel>): this {\n this._datePickerMin = opts?.min;\n this._datePickerMax = opts?.max;\n return this;\n }\n\n public withInputTrim(trimOption: InputTrimType = 'both'): this {\n this._inputTrim = trimOption;\n return this;\n }\n\n public withDateValue(opts?: FieldDateOptsType): this {\n this._datePickerValueAsDateObj = opts?.asDateObj;\n this._datePickerValueUtc = opts?.utc;\n this._datePickerValueNoTimezone = opts?.noTimeZone;\n this._datePickerValueNoTime = opts?.noTime;\n return this;\n }\n\n public withTextValidationEmail(email = true): this {\n this._validationEmail = email;\n return this;\n }\n\n public withFileOnSelectHandler(fn?: FieldInputFileOnSelectHandlerFnType): this {\n this._fileOnSelectHandler = fn;\n return this;\n }\n\n public copy(): FieldInputDescriptor<EditorModel, FieldModel, FieldValue, ParentEditorModel> {\n const field = new FieldInputDescriptor<EditorModel, FieldModel, FieldValue, ParentEditorModel>(this._property);\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._rows = this._rows;\n field._numberMin = this._numberMin;\n field._numberMax = this._numberMax;\n field._numberStep = this._numberStep;\n field._numberAutoCorrect = this._numberAutoCorrect;\n field._numberMinFractionDigits = this._numberMinFractionDigits;\n field._numberMaxFractionDigits = this._numberMaxFractionDigits;\n field._numberUseGrouping = this._numberUseGrouping;\n field._numberPrefix = this._numberPrefix;\n field._numberSuffix = this._numberSuffix;\n field._radioOptions = [...this._radioOptions];\n field._datePickerFormat = this._datePickerFormat;\n field._datePickerMin = this._datePickerMin;\n field._datePickerMax = this._datePickerMax;\n field._datePickerShowTime = this._datePickerShowTime;\n field._datePickerShowSeconds = this._datePickerShowSeconds;\n field._datePickerValueUtc = this._datePickerValueUtc;\n field._datePickerValueNoTimezone = this._datePickerValueNoTimezone;\n field._datePickerValueNoTime = this._datePickerValueNoTime;\n field._datePickerValueAsDateObj = this._datePickerValueAsDateObj;\n field._maxLength = this._maxLength;\n field._minLength = this._minLength;\n field._pattern = this._pattern;\n field._mask = this._mask;\n field._slotChar = this._slotChar;\n field._fileMultiple = this._fileMultiple;\n field._fileMaxFileSize = this._fileMaxFileSize;\n field._fileAccept = this._fileAccept;\n field._fileOnSelectHandler = this._fileOnSelectHandler;\n field._imagePreview = this._imagePreview;\n field._imageUrlInputHiddenOnDisabled = this._imageUrlInputHiddenOnDisabled;\n field._imagePreviewAllowSvg = this._imagePreviewAllowSvg;\n field._imagePreviewComponent = this._imagePreviewComponent;\n field._customComponentType = this._customComponentType;\n field._customComponentInputs = this._customComponentInputs;\n field._customComponentWrappers = this._customComponentWrappers;\n field._locale = this._locale;\n field._currency = this._currency;\n field._currencyDisplay = this._currencyDisplay;\n field._currencyFromProperty = this._currencyFromProperty;\n field._inputTrim = this._inputTrim;\n field._validationEmail = this._validationEmail;\n return field;\n }\n}\n","import {FormGroup} from '@angular/forms';\n\nimport {Subject} from 'rxjs';\n\nimport {ArrayItemType, CommonsInternalError, EnumConstantType, IEditorDescriptor, IdType, KeyofAndOfType, Nullable} from '@mediusinc/mng-commons/core';\nimport {EnumDescriptor, ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\nimport {ITableDataProvider, TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {TableviewDescriptorInst} from '../../tableview/descriptors/tableview.descriptor';\nimport {IFieldsManageInterface} from '../models/editor-fields.model';\nimport {EDITOR_DEFAULT_GROUP_NAME, TableviewEditorTypeEnum} from '../models/editor.model';\nimport {FormValidationMessage, FormValidator} from '../models/field-validation.model';\nimport {FormEvent, FormEventData, FormEventTypeEnum} from '../models/form-editor.event';\nimport {IFormEditorComponent} from '../models/form-editor.interface';\nimport {FieldActionDescriptor} from './field-action.descriptor';\nimport {AFieldDescriptor} from './field-base.descriptor';\nimport {FieldGroupDescriptor, FieldTabGroupDescriptor} from './field-group.descriptor';\nimport {FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldLookupProviderType, fieldLookupGetProviderCfgObj} from './field-lookup.descriptor';\nimport {FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, fieldManyToManyGetProviderCfgObj} from './field-many.descriptor';\nimport {FieldValidationDescriptorOptsType} from './field-validation.descriptor';\nimport {FieldInputDescriptor, FieldInputDescriptorType} from './field.descriptor';\n\nexport class EditorDescriptorInst<EditorModel, ParentEditorModel = undefined>\n implements IEditorDescriptor<EditorModel, ParentEditorModel>, IFieldsManageInterface<EditorModel, ParentEditorModel>\n{\n public static readonly defaultGroupName = EDITOR_DEFAULT_GROUP_NAME;\n\n /** @ignore */ protected readonly _model: ModelDescriptor<EditorModel>;\n /** @ignore */ protected readonly _tableviewEditorType: TableviewEditorTypeEnum;\n /** @ignore */ protected readonly _tabs: Array<FieldTabGroupDescriptor<EditorModel>> = [];\n /** @ignore */ protected readonly _groups: Array<FieldGroupDescriptor<EditorModel, ParentEditorModel>> = [];\n /** @ignore */ protected _fields: Array<AFieldDescriptor<any, EditorModel>> = [];\n /** @ignore */ protected _currentTabGroup?: FieldTabGroupDescriptor<EditorModel>;\n /** @ignore */ protected _currentGroup?: FieldGroupDescriptor<EditorModel>;\n\n /** @ignore */ protected _autoSave?: boolean;\n /** @ignore */ protected _autoSaveIdentifier?: string;\n\n /** @ignore */ protected _disabled = false;\n\n /** @ignore */ protected _isLocalized = false;\n /** @ignore */ protected _localizationLocaleProperty?: string;\n /** @ignore */ protected _localizationModel?: ModelDescriptor<any>;\n /** @ignore */ protected _localizationLocalizationProperty?: string;\n\n /** @ignore */ protected readonly _eventsSubject = new Subject<FormEvent<EditorModel, ParentEditorModel>>();\n\n /**\n * Creates new instance of editor descriptor.\n * @param model Model descriptor.\n * @param tableviewEditorType Type of editor in tableview (add, edit, view or none).\n */\n public constructor(model: ModelDescriptor<EditorModel>, tableviewEditorType = TableviewEditorTypeEnum.None) {\n this._model = model;\n this._tableviewEditorType = tableviewEditorType;\n }\n\n /**\n * Model descriptor for editor.\n */\n public get model() {\n return this._model;\n }\n\n /**\n * Editor's tabs.\n */\n public get tabs() {\n return this._tabs;\n }\n\n /**\n * Editor's fields.\n */\n public get fields() {\n return this._fields;\n }\n\n /**\n * Type of editor for tableview.\n */\n public get tableviewEditorType() {\n return this._tableviewEditorType;\n }\n\n /**\n * If editor is disabled.\n */\n public get disabled() {\n return this._disabled;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public get localizationLocaleProperty() {\n return this._localizationLocaleProperty;\n }\n\n public get localizationLocalizationProperty() {\n return this._localizationLocalizationProperty;\n }\n\n public get localizationModel() {\n return this._localizationModel;\n }\n\n public get autoSave() {\n return this._autoSave;\n }\n\n public get autoSaveIdentifier() {\n return this._autoSaveIdentifier;\n }\n\n /**\n * Creates new tab group. Next added fields are added to newly created tab group.\n * @param name Name of the group.\n * @param title Title key for the tab.\n */\n public createTabGroup(name: string, title?: string): FieldTabGroupDescriptor<EditorModel> {\n const tabGroup = new FieldTabGroupDescriptor<EditorModel>(name);\n tabGroup.withTitle(title);\n this.createTabGroupDescriptor(tabGroup);\n return tabGroup;\n }\n\n /**\n * Creates new field group. Next added fields are added to newly created field group.\n * @param name Name of the group.\n * @param title Title key for the group.\n */\n public createFieldGroup(name: string, title?: string | null): FieldGroupDescriptor<EditorModel> {\n const fieldGroup = new FieldGroupDescriptor<EditorModel>(name);\n fieldGroup.withTitle(title);\n this.createFieldGroupDescriptor(fieldGroup);\n return fieldGroup;\n }\n\n /**\n * Gets field by the model property name.\n * @param property Model property name.\n */\n public getField(property: keyof EditorModel) {\n return this.getFieldUnsafe(property as string);\n }\n\n /**\n * Gets field by the model property name (UNSAFE).\n * @param property Model property name.\n */\n public getFieldUnsafe(property: string): AFieldDescriptor<any, EditorModel, ParentEditorModel> | null {\n return this._fields.find(f => f.property === property) ?? null;\n }\n\n /**\n * Removes field by the model property name.\n * @param property Model property name.\n */\n public removeField(property: keyof EditorModel): void {\n return this.removeFieldUnsafe(property as string);\n }\n\n /**\n * Removes field by the model property name (UNSAFE).\n * @param property Model property name.\n */\n public removeFieldUnsafe(property: string): void {\n const fieldIdx = this._fields.findIndex(f => f.property === property);\n if (fieldIdx < 0) {\n throw new CommonsInternalError(`Field ${property} does not exist.`, {name: 'EditorDescriptorError'});\n }\n for (const group of this._groups) {\n const groupFieldIdx = group.fields.findIndex(f => f instanceof AFieldDescriptor && f.property === property);\n if (groupFieldIdx >= 0) {\n group.fields.splice(groupFieldIdx, 1);\n break;\n }\n }\n this._fields.splice(fieldIdx, 1);\n }\n\n /**\n * Adds field by the descriptor.\n * @param field Field descriptor.\n */\n public addFieldDescriptor<FieldModel, FieldValue = FieldModel>(field: AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>): this {\n if (this._fields.some(f => f.property === field.property)) {\n throw new CommonsInternalError(`Field '${field.property}' already exists.`);\n }\n this.createDefaultGroup();\n this._fields.push(field);\n this._currentGroup?.addField(field);\n return this;\n }\n\n /**\n * Adds field by the model property name.\n * @param property Model property name.\n */\n public addField<Property extends keyof EditorModel, FieldModel = NonNullable<EditorModel[Property]>, FieldValue = EditorModel[Property]>(property: Property) {\n return this.addFieldUnsafe<FieldModel, FieldValue>(property as string);\n }\n\n /**\n * Adds field by the model property name (UNSAFE). Property is not checked on editor model.\n * Use {addField} for safe usage.\n * @param property Model property name.\n */\n public addFieldUnsafe<FieldModel = FieldInputDescriptorType, FieldValue = FieldModel>(property: string) {\n const field = new FieldInputDescriptor<EditorModel, FieldModel, FieldValue, ParentEditorModel>(property);\n this.addFieldDescriptor<FieldModel, FieldValue>(field);\n return field;\n }\n\n public addFields(...properties: (keyof EditorModel)[]): this {\n properties.forEach(p => this.addField(p));\n return this;\n }\n\n public addFieldAction(actionName: string): FieldActionDescriptor<EditorModel, ParentEditorModel> {\n const field = new FieldActionDescriptor<EditorModel, ParentEditorModel>(actionName);\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Adds lookup field.\n *\n * @param {Property} property - The property key of the editor.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, undefined, FieldValue>} - The field lookup descriptor.\n */\n public addFieldLookup<Property extends keyof EditorModel, LookupModel = NonNullable<EditorModel[Property]>, FieldValue = EditorModel[Property]>(\n property: Property,\n type?: TypeDescriptor<LookupModel>\n ) {\n return this.addFieldLookupUnsafe<LookupModel, FieldValue>(property as string, type);\n }\n\n /**\n * [UNSAFE] Adds lookup field.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property Model property name.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model (defines 2nd generic).\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, undefined, FieldValue>} - The field lookup descriptor.\n */\n public addFieldLookupUnsafe<LookupModel, FieldValue = LookupModel>(property: string, type?: TypeDescriptor<LookupModel>) {\n const field = new FieldLookupDescriptor<LookupModel, EditorModel, undefined, FieldValue, ParentEditorModel>(property, {\n type: type?.classType\n });\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Adds a field lookup with options value property for lookup model.\n *\n * @param {Property} property - The property key of the editor.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {LookupValueProperty} lookupOptionsValueProperty - The value property used as value in the lookup options.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam LookupValueProperty - The property of lookup model type.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, undefined, FieldValue>} - The field lookup descriptor.\n */\n public addFieldLookupWithOptionsValueProperty<\n Property extends keyof EditorModel,\n LookupModel,\n LookupValueProperty extends KeyofAndOfType<LookupModel, EditorModel[Property]>,\n FieldValue = EditorModel[Property]\n >(property: Property, type: TypeDescriptor<LookupModel>, lookupOptionsValueProperty: LookupValueProperty) {\n return this.addFieldLookupWithOptionsValuePropertyUnsafe<LookupModel, FieldValue>(property as string, type, lookupOptionsValueProperty as string);\n }\n\n /**\n * [UNSAFE] Adds a field lookup with options value property for lookup model.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {Property} property - The property key of the editor.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {LookupValueProperty} lookupOptionsValueProperty - The value property used as value in the lookup options.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam LookupValueProperty - The property of lookup model type.\n * @typeparam FieldValue - The value type of field on editor.\n * @typeparam ParentEditorModel - The value type of parent form.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, undefined, FieldValue, ParentEditorModel>} - The field lookup descriptor.\n */\n public addFieldLookupWithOptionsValuePropertyUnsafe<LookupModel, FieldValue = Nullable<IdType>>(\n property: string,\n type: TypeDescriptor<LookupModel>,\n lookupOptionsValueProperty: string\n ) {\n const field = new FieldLookupDescriptor<LookupModel, EditorModel, undefined, FieldValue, ParentEditorModel>(property, {\n type: type?.classType,\n optionsValueProperty: lookupOptionsValueProperty\n });\n this.addFieldDescriptor<LookupModel, FieldValue>(field);\n return field;\n }\n\n /**\n * Adds a field lookup with a data provider or service to the editor model.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldLookupProviderType<LookupModel, Service>} provider - The field lookup data provider or service.\n * @param {TypeDescriptor<LookupModel>} [type] - The type of lookup - if data provider is passed as previous parameter, type can be omitted. If service is provider, type parameter is proposed in favour of correct typing.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam Service - The lookup service type.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The field value type, defaults to the editor's property type.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} Created field lookup descriptor.\n */\n public addFieldLookupWithProvider<Property extends keyof EditorModel, Service, LookupModel = NonNullable<EditorModel[Property]>, FieldValue = EditorModel[Property]>(\n property: Property,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type?: TypeDescriptor<LookupModel>\n ) {\n return this.addFieldLookupWithProviderUnsafe<LookupModel, Service, FieldValue>(property as string, provider, type);\n }\n\n /**\n * [UNSAFE] Adds a field lookup with a data provider or service to the editor model.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property - The property key of the editor.\n * @param {FieldLookupProviderType<LookupModel, Service>} provider - The lookup provider or service for the field lookup.\n * @param {TypeDescriptor<LookupModel>?} type - Optional type descriptor for the field lookup.\n * @typeparam LookupModel - The field lookup model type.\n * @typeparam Service - The lookup service type.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor added to the instance.\n */\n public addFieldLookupWithProviderUnsafe<LookupModel, Service, FieldValue = LookupModel>(\n property: string,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type?: TypeDescriptor<LookupModel>\n ) {\n const cfg = fieldLookupGetProviderCfgObj(provider);\n const field = new FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel>(property, {\n type: type?.classType,\n ...cfg\n });\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Adds a field lookup with data provider or service and options value property for lookup model.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldLookupProviderType<FieldModel, Service>} provider - The lookup provider.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {LookupValueProperty} lookupOptionsValueProperty - The value property used as value in the lookup options.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam Service - The lookup service type.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam LookupValueProperty - The property of lookup model type.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel>} - The field lookup descriptor.\n */\n addFieldLookupWithProviderAndOptionsValueProperty<\n Property extends keyof EditorModel,\n Service,\n LookupModel,\n LookupValueProperty extends KeyofAndOfType<LookupModel, EditorModel[Property]>,\n FieldValue = EditorModel[Property]\n >(\n property: Property,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type: TypeDescriptor<LookupModel>,\n lookupOptionsValueProperty: LookupValueProperty\n ): FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel> {\n return this.addFieldLookupWithProviderAndOptionsValuePropertyUnsafe(property as string, provider, type, lookupOptionsValueProperty as string);\n }\n\n /**\n * [UNSAFE] Adds a field lookup with data provider or service and options value property for lookup model.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property - The property key of the editor.\n * @param {FieldLookupProviderType<FieldModel, Service>} provider - The lookup provider.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {string} lookupOptionsValueProperty - The value property used in the lookup options.\n * @typeparam Service - The service type.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel>} - The field lookup descriptor.\n */\n addFieldLookupWithProviderAndOptionsValuePropertyUnsafe<Service, LookupModel, FieldValue = LookupModel>(\n property: string,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type: TypeDescriptor<LookupModel>,\n lookupOptionsValueProperty: string\n ): FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel> {\n const cfg = fieldLookupGetProviderCfgObj(provider);\n const field = new FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel>(property, {\n type: type?.classType,\n optionsValueProperty: lookupOptionsValueProperty,\n ...cfg\n });\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldLookupEnum<Property extends keyof EditorModel, Enum extends NonNullable<EditorModel[Property]>>(\n property: keyof EditorModel,\n enumDesc: EnumDescriptor<Enum>,\n options?: Array<Enum>\n ) {\n return this.addFieldLookupEnumUnsafe<Enum>(property as string, enumDesc, options);\n }\n\n /**\n * Adds enum lookup field.\n * @param property Model's property name.\n * @param enumDesc Type of enum or enum descriptor.\n * @param options Provides subset of enum's available constants.\n */\n public addFieldLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n const field = new FieldLookupEnumDescriptor<Enum, EditorModel, ParentEditorModel>(property, enumDesc, options);\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Adds table/details/add/edit field for one-to-many (1:n) relations.\n * @param property Model's property name.\n * @param tableviewDescriptor Tableview descriptor for related model.\n */\n public addFieldManyEditor<Property extends keyof EditorModel, FieldModel = ArrayItemType<EditorModel[Property]>, FieldValue = EditorModel[Property]>(\n property: Property,\n tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, EditorModel>\n ) {\n return this.addFieldManyEditorUnsafe<FieldModel, FieldValue>(property as string, tableviewDescriptor);\n }\n\n /**\n * Adds table/details/add/edit field for one-to-many (1:n) relations (UNSAFE).\n * @param property Model's property name.\n * @param tableviewDescriptor Tableview descriptor for related model.\n */\n public addFieldManyEditorUnsafe<FieldModel, FieldValue = FieldModel[]>(\n property: string,\n tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, EditorModel>\n ): FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel> {\n const field = new FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>(property, tableviewDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyToManyEditor<Property extends keyof EditorModel, ServiceType, FieldModel = ArrayItemType<EditorModel[Property]>, FieldValue = EditorModel[Property]>(\n property: Property,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupDataProvider: ITableDataProvider<FieldModel, ServiceType>\n ) {\n return this.addFieldManyToManyEditorUnsafe<FieldModel, ServiceType, FieldValue>(property as string, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n }\n\n public addFieldManyToManyEditorUnsafe<FieldModel, ServiceType, FieldValue = FieldModel[]>(\n property: string,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupDataProvider: ITableDataProvider<FieldModel, ServiceType>\n ): FieldManyToManyEditorDescriptor<FieldModel, EditorModel, ServiceType, FieldValue, ParentEditorModel> {\n const cfg = fieldManyToManyGetProviderCfgObj(lookupDataProvider);\n const field = new FieldManyToManyEditorDescriptor<FieldModel, EditorModel, ServiceType, FieldValue, ParentEditorModel>(\n property,\n mainTableDescriptor,\n lookupTableDescriptor,\n {\n ...cfg\n }\n );\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Disables field on editor.\n * @param disabled\n */\n public withDisabled(disabled = true): this {\n this._disabled = disabled;\n return this;\n }\n\n /**\n * Adds group validator to editor.\n * @param name Name of the validation.\n * @param validator Field validator function.\n * @param message Field validation message.\n * @param opts Additional configuration for validation.\n */\n public withValidation<Value = EditorModel>(\n name: string,\n validator?: FormValidator<Value, ParentEditorModel>,\n message?: FormValidationMessage<Value, ParentEditorModel>,\n opts?: FieldValidationDescriptorOptsType<keyof EditorModel>\n ) {\n return this.withValidationUnsafe(name, validator, message, opts as FieldValidationDescriptorOptsType);\n }\n\n /**\n * Adds group validator to editor.\n * @param name Name of the validation.\n * @param validator Field validator function.\n * @param message Field validation message.\n * @param opts Additional configuration for validation.\n */\n public withValidationUnsafe<Value = EditorModel>(\n name: string,\n validator?: FormValidator<Value, ParentEditorModel>,\n message?: FormValidationMessage<Value, ParentEditorModel>,\n opts?: FieldValidationDescriptorOptsType\n ) {\n if (this._currentGroup) {\n this._currentGroup.withValidation(name, validator, message, opts);\n }\n return this;\n }\n\n public withAutoSave(enabled = true, autoSaveIdentifier?: string): this {\n this._autoSave = enabled;\n this._autoSaveIdentifier = autoSaveIdentifier;\n return this;\n }\n\n /**\n * Creates a copy of editor descriptor object.\n */\n public copy(): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n const editor = new EditorDescriptorInst<EditorModel, ParentEditorModel>(this.model.copy(), this.tableviewEditorType);\n\n editor._fields = this._fields.map(f => f.copy());\n const fieldsMap = editor.fields.reduce((map, field) => {\n map.set(field.property, field);\n return map;\n }, new Map<string, any>());\n\n for (const tabGroup of this._tabs) {\n const tabGroupCopy = tabGroup.copy(true);\n // set fields\n for (let i = 0; i < tabGroup.fields.length; i++) {\n const group = tabGroup.fields[i];\n const groupCopy = tabGroupCopy.fields[i];\n\n for (let j = 0; j < group.fields.length; j++) {\n const fieldCopy = fieldsMap.get(group.fields[j].property);\n if (!fieldCopy) {\n throw new CommonsInternalError(`Could not copy editor descriptor: field '${group.fields[j].property}' (tab '${tabGroup.name}', group ${group.name}').`);\n }\n groupCopy.addField(fieldCopy);\n }\n editor._groups.push(groupCopy);\n }\n editor._tabs.push(tabGroupCopy);\n }\n\n editor._currentTabGroup = editor._tabs.length > 0 ? editor._tabs[editor._tabs.length - 1] : undefined;\n if (editor._currentTabGroup) {\n editor._currentGroup = editor._currentTabGroup.fields.length > 0 ? editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1] : undefined;\n }\n\n editor._disabled = this._disabled;\n editor._autoSave = this._autoSave;\n editor._autoSaveIdentifier = this._autoSaveIdentifier;\n editor._isLocalized = this._isLocalized;\n editor._localizationLocaleProperty = this._localizationLocaleProperty;\n editor._localizationModel = this._localizationModel;\n editor._localizationLocalizationProperty = this._localizationLocalizationProperty;\n\n return editor;\n }\n\n /**\n * Created group from field group descriptor.\n * @param fieldGroup Field group descriptor.\n * @internal\n */\n public createFieldGroupDescriptor(fieldGroup: FieldGroupDescriptor<EditorModel, ParentEditorModel>): this {\n this.createDefaultTabGroup();\n this._currentGroup = fieldGroup;\n this._groups.push(fieldGroup);\n this._currentTabGroup?.addField(fieldGroup);\n return this;\n }\n\n /**\n * Creates tab group from tab group descriptor.\n * @param tabGroup Tab group descriptor.\n * @internal\n */\n protected createTabGroupDescriptor(tabGroup: FieldTabGroupDescriptor<EditorModel>): this {\n this._currentTabGroup = tabGroup;\n this._tabs.push(tabGroup);\n return this;\n }\n\n /**\n * Creates default field group.\n * @internal\n */\n private createDefaultGroup() {\n this.createDefaultTabGroup();\n if (this._currentTabGroup?.fields.length === 0) {\n this.createFieldGroup(EditorDescriptorInst.defaultGroupName, null);\n }\n }\n\n /**\n * Creates default tab group.\n * @internal\n */\n private createDefaultTabGroup() {\n if (this._tabs.length === 0) {\n this.createTabGroup(EditorDescriptorInst.defaultGroupName, 'general.general');\n }\n }\n\n /**\n * This function takes care of displaying correct/localized data in the editor\n * @param property property that tells us where on the model are localizations accessible\n * @param model Model for localizations\n * @param localeProperty property by which we find the locale\n */\n public localized<Property extends keyof EditorModel, LocalizationModel = ArrayItemType<EditorModel[Property]>>(\n property: Property,\n model: ModelDescriptor<LocalizationModel>,\n localeProperty: keyof LocalizationModel\n ): this {\n return this.localizedUnsafe(property as string, model, localeProperty as string);\n }\n\n public localizedUnsafe<LocalizationType>(property: string, model: ModelDescriptor<LocalizationType>, localeProperty: string): this {\n this._localizationLocalizationProperty = property as string;\n this._localizationModel = model;\n this._localizationLocaleProperty = localeProperty as string;\n this._isLocalized = true;\n\n return this;\n }\n\n public nextEvent(type: FormEventTypeEnum, component: IFormEditorComponent<any, any>, data?: FormEventData<EditorModel>) {\n this._eventsSubject.next({\n type: type,\n formComponent: component,\n form: component.form as FormGroup,\n data: data\n });\n }\n\n public get events$() {\n return this._eventsSubject.asObservable();\n }\n}\n","import {ClassAttributeDef, ClassType, CommonsInternalError, EnumType, TypeRegistry} from '@mediusinc/mng-commons/core';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum} from '@mediusinc/mng-commons/table/api';\n\nimport {EditorClassAttributeDef} from '../models/class-tableview-attribute.model';\nimport {FieldInputTypeEnum} from '../models/field.model';\n\n/**\n * converts string type to type enum, default is text\n * @param attributeType\n */\nexport function getFieldInputTypeFromClassAttributeDefType(attributeType: string): FieldInputTypeEnum {\n switch (attributeType) {\n case 'hidden':\n return FieldInputTypeEnum.Hidden;\n case 'label':\n return FieldInputTypeEnum.Label;\n case 'textarea':\n return FieldInputTypeEnum.Textarea;\n case 'number':\n return FieldInputTypeEnum.Number;\n case 'currency':\n return FieldInputTypeEnum.Currency;\n case 'switch':\n case 'boolean':\n return FieldInputTypeEnum.Switch;\n case 'radio':\n return FieldInputTypeEnum.Radio;\n case 'datepicker':\n return FieldInputTypeEnum.Datepicker;\n case 'mask':\n return FieldInputTypeEnum.Mask;\n case 'file':\n return FieldInputTypeEnum.File;\n case 'custom':\n return FieldInputTypeEnum.Custom;\n case 'text':\n default:\n return FieldInputTypeEnum.Text;\n }\n}\n\n/**\n * convert column type to equivalent field input type\n * @param type column type\n * @param displayType column display type\n */\nexport function getFieldInputTypeFromColumnType(type: ColumnTypeEnum, displayType?: ColumnDisplayTypeEnum): FieldInputTypeEnum {\n switch (type) {\n case ColumnTypeEnum.Number:\n return displayType === ColumnDisplayTypeEnum.Currency ? FieldInputTypeEnum.Currency : FieldInputTypeEnum.Number;\n case ColumnTypeEnum.Boolean:\n return FieldInputTypeEnum.Switch;\n case ColumnTypeEnum.Date:\n return FieldInputTypeEnum.Datepicker;\n case ColumnTypeEnum.Custom:\n return FieldInputTypeEnum.Custom;\n case ColumnTypeEnum.String:\n case ColumnTypeEnum.Enum:\n default:\n return FieldInputTypeEnum.Text;\n }\n}\n\nexport function expandClassAttributeDefWithEditorDef(attributes?: Array<ClassAttributeDef> | null): EditorClassAttributeDef[] {\n if (!attributes) {\n throw new CommonsInternalError('Class attribute definition is null, problem with TypeRegistry::findAttributesDefinitionByClassType?', {name: 'TableviewUtilsError'});\n }\n\n const typeRegistry = TypeRegistry.get();\n const editorClassAttributeDef: EditorClassAttributeDef[] = [];\n for (const attribute of attributes) {\n editorClassAttributeDef.push({\n name: attribute.name,\n baseName: attribute.baseName,\n type: attribute.type,\n subtype: attribute.subtype,\n fieldType: getFieldInputTypeFromClassAttributeDefType(attribute.type),\n classType: typeRegistry.findType(attribute.type) as ClassType<any>,\n enumType: typeRegistry.findEnum(attribute.type) as EnumType\n });\n }\n\n return editorClassAttributeDef;\n}\n\n/**\n * returns attributes from class type and extends to typed def with column and field enum type\n * @param type class type\n */\nexport function getEditorClassAttributeDef<T>(type: ClassType<T>): EditorClassAttributeDef[] {\n return expandClassAttributeDefWithEditorDef(TypeRegistry.get().findAttributesDefinitionByClassType(type));\n}\n","import {CommonsInternalError, EnumType, ILookupDataProvider, TypeRegistry} from '@mediusinc/mng-commons/core';\nimport {EnumDescriptor, enumModelGeneric} from '@mediusinc/mng-commons/model';\nimport {getColumnDisplayTypeFromColumnType, getColumnTypeFromClassAttributeDefType} from '@mediusinc/mng-commons/table/api';\n\nimport {EditorDescriptorInst} from '../descriptors/editor.descriptor';\nimport {AFieldDescriptor} from '../descriptors/field-base.descriptor';\nimport {FieldLookupDescriptor} from '../descriptors/field-lookup.descriptor';\nimport {FieldInputDescriptor} from '../descriptors/field.descriptor';\nimport {EditorClassAttributeDef} from '../models/class-tableview-attribute.model';\nimport {FieldInputTypeEnum} from '../models/field.model';\nimport {getEditorClassAttributeDef, getFieldInputTypeFromColumnType} from './class-attribute-converter';\n\n/**\n * Generates field based on attribute definition, used for auto model\n * @param descriptor Editor descriptor instance.\n * @param attribute Attribute definition.\n * @param field Optional, if defined will be replaced, otherwise new will be generated.\n * @param args Optional additional arguments mapped to filed type. Arguments depend on possible arguments on fields.\n * @internal\n */\nexport function upsertEditorFieldFromAttributeDef<T>(\n descriptor: EditorDescriptorInst<T, any>,\n attribute: EditorClassAttributeDef,\n field?: AFieldDescriptor<any, T>,\n ...args: any[]\n): AFieldDescriptor<any, T> {\n if (field == null) {\n field = descriptor.addFieldUnsafe(attribute.name);\n }\n\n if (field instanceof FieldInputDescriptor) {\n if (attribute.enumType) {\n return field.asRadioFromEnum(enumModelGeneric(attribute.enumType));\n } else {\n const tableColumnType = getColumnTypeFromClassAttributeDefType(attribute.type);\n const tableColumnDisplayType = getColumnDisplayTypeFromColumnType(tableColumnType, attribute.type);\n return field.asType(attribute.fieldType ?? getFieldInputTypeFromColumnType(tableColumnType, tableColumnDisplayType), ...args);\n }\n }\n\n return field;\n}\n\n/**\n * Modifies selected field by field property. For enums use {withFieldModifiedEnum} instead.\n * @param descriptor Editor descriptor.\n * @param property Model's property name.\n * @param fieldType new field type for selected field\n * @param args additional parameters for field\n */\nexport function modifyEditorClassAttributeFieldType<\n EditorModel,\n Property extends keyof EditorModel,\n FieldModel = NonNullable<EditorModel[Property]>,\n FieldValue = EditorModel[Property]\n>(\n descriptor: EditorDescriptorInst<EditorModel, any>,\n property: Property,\n fieldType: FieldInputTypeEnum,\n ...args: any[]\n): AFieldDescriptor<FieldModel, EditorModel, FieldValue> | null {\n return modifyEditorClassAttributeFieldTypeUnsafe<EditorModel, FieldModel, FieldValue>(descriptor, property as string, fieldType, ...args);\n}\n\nexport function modifyEditorClassAttributeFieldTypeUnsafe<EditorModel, FieldModel = any, FieldValue = FieldModel>(\n descriptor: EditorDescriptorInst<EditorModel, any>,\n property: string,\n fieldType: FieldInputTypeEnum,\n ...args: any[]\n): AFieldDescriptor<FieldModel, EditorModel, FieldValue> | null {\n if (!descriptor.model.type) {\n throw new CommonsInternalError(`withFieldModifiedType cannot be executed for property ${property}: Model type is not defined.`);\n }\n\n const attribute = getEditorClassAttributeDef(descriptor.model.type).find(attribute => attribute.name === property);\n if (attribute) {\n attribute.fieldType = fieldType;\n return upsertEditorFieldFromAttributeDef(\n descriptor,\n attribute,\n descriptor.fields.find(fi => fi.property === property),\n ...args\n );\n }\n\n return null;\n}\n\n/**\n * Modifies selected field with enum type.\n * @param descriptor Editor descriptor.\n * @param property Model's property name.\n * @param enumModel Enum descriptor.\n * @param values\n */\nexport function modifyEditorClassAttributeFieldEnum<\n EditorModel,\n Property extends keyof EditorModel,\n Enum extends NonNullable<EditorModel[Property]>,\n FieldModel = NonNullable<EditorModel[Property]>,\n FieldValue = EditorModel[Property]\n>(\n descriptor: EditorDescriptorInst<EditorModel, any>,\n property: Property,\n enumModel?: EnumDescriptor<Enum>,\n values?: Array<Enum>\n): AFieldDescriptor<FieldModel, EditorModel, FieldValue> | null {\n return modifyEditorClassAttributeFieldEnumUnsafe<EditorModel, Enum, FieldModel, FieldValue>(descriptor, property as string, enumModel, values);\n}\n\nexport function modifyEditorClassAttributeFieldEnumUnsafe<EditorModel, Enum = any, FieldModel = any, FieldValue = FieldModel>(\n descriptor: EditorDescriptorInst<EditorModel, any>,\n property: string,\n enumDesc?: EnumDescriptor<Enum>,\n values?: Array<Enum>\n): AFieldDescriptor<FieldModel, EditorModel, FieldValue> | null {\n if (!descriptor.model.type) {\n throw new CommonsInternalError(`withFieldModifiedEnum cannot be executed for property ${property}: Model type is not defined.`);\n }\n const attribute = getEditorClassAttributeDef(descriptor.model.type).find(a => a.name === property);\n if (attribute) {\n attribute.fieldType = FieldInputTypeEnum.Radio;\n const field = descriptor.fields.find(f => f.property === property);\n if (field && field instanceof FieldInputDescriptor) {\n field.asRadioFromEnum(enumDesc ?? enumModelGeneric(TypeRegistry.get().findEnum(attribute.type) as EnumType), values);\n }\n return field ?? null;\n }\n\n return null;\n}\n\n/**\n * Modifies selected field with lookup field.\n * @param descriptor Editor descriptor.\n * @param property Model's property name.\n * @param lookupProvider provider to be added to field\n * @param titleProperty\n */\nexport function modifyEditorFieldLookup<\n EditorModel,\n Property extends keyof EditorModel,\n Service,\n FieldModel = NonNullable<EditorModel[Property]>,\n FieldValue = EditorModel[Property]\n>(\n descriptor: EditorDescriptorInst<EditorModel, any>,\n property: Property,\n lookupProvider: ILookupDataProvider<FieldModel, Service>,\n titleProperty?: keyof FieldModel\n): FieldLookupDescriptor<FieldModel, EditorModel, Service, FieldValue> {\n return modifyEditorFieldLookupUnsafe<EditorModel, Service, FieldModel, FieldValue>(descriptor, property as string, lookupProvider, titleProperty as string);\n}\n\nexport function modifyEditorFieldLookupUnsafe<EditorModel, Service, FieldModel = any, FieldValue = FieldModel>(\n descriptor: EditorDescriptorInst<EditorModel, any>,\n property: string,\n lookupProvider: ILookupDataProvider<FieldModel, Service>,\n titleProperty?: string\n): FieldLookupDescriptor<FieldModel, EditorModel, Service, FieldValue> {\n descriptor.removeFieldUnsafe(property);\n const field = descriptor.addFieldLookupWithProviderUnsafe<FieldModel, Service, FieldValue>(property, lookupProvider).asAutocomplete();\n\n if (titleProperty) {\n field.withOptionsLabelPropertyUnsafe(titleProperty);\n }\n\n return field;\n}\n","import {ClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, ModelDescriptorCreateOpts, TypeDescriptor, model} from '@mediusinc/mng-commons/model';\n\nimport {getEditorClassAttributeDef} from '../helpers/class-attribute-converter';\nimport {upsertEditorFieldFromAttributeDef} from '../helpers/editor-descriptor-helpers';\nimport {EditorClassAttributeDef} from '../models/class-tableview-attribute.model';\nimport {TableviewEditorTypeEnum} from '../models/editor.model';\nimport {EditorDescriptorInst} from './editor.descriptor';\n\nexport class EditorDescriptor extends EditorDescriptorInst<any> {\n protected constructor() {\n super(ModelDescriptor.create());\n }\n\n public static create<EditorModel, ParentEditorModel = undefined>(\n idProperty?: keyof EditorModel,\n titleProperty?: keyof EditorModel,\n i18nBaseKey?: string | ClassType<unknown>,\n tableviewEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n return editorDescriptor<EditorModel, ParentEditorModel>({id: idProperty, title: titleProperty, i18nBase: i18nBaseKey, tableviewEditorType: tableviewEditorType});\n }\n\n public static fromClass<EditorModel, ParentEditorModel = undefined>(\n type: ClassType<EditorModel>,\n idProperty?: keyof EditorModel,\n titleProperty?: keyof EditorModel,\n i18nBaseKey?: ClassType<unknown> | string,\n tableviewEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n return editorDescriptorFromClass<EditorModel, ParentEditorModel>(type, {\n id: idProperty,\n title: titleProperty,\n i18nBase: i18nBaseKey,\n tableviewEditorType: tableviewEditorType\n });\n }\n\n public static fromModel<EditorModel, ParentEditorModel = undefined>(\n model: ModelDescriptor<EditorModel>,\n tableviewEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n return editorDescriptor<EditorModel, ParentEditorModel>(model, {tableviewEditorType: tableviewEditorType});\n }\n\n /**\n * Creates editor descriptor automatically based on openapi model's attributes definition which is automatically extracted. All fields will be included.\n * @param type Model's class.\n * @param idProperty Id property representing model (optional).\n * @param titleProperty Title property representing model (optional). If not provided, it will be automatically chosen.\n * @param tableEditorType Type of editor in tableview (add, edit, view or none).\n */\n public static fromClassWithAutoAttrsDef<EditorModel, ParentEditorModel = undefined>(\n type: ClassType<EditorModel>,\n idProperty?: keyof EditorModel,\n titleProperty?: keyof EditorModel,\n tableEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n return EditorDescriptor.fromClassWithCustomAttrsDef<EditorModel, ParentEditorModel>(type, getEditorClassAttributeDef(type), idProperty, titleProperty, tableEditorType);\n }\n\n /**\n * Creates editor descriptor automatically based on openapi model's attributes definition provided in parameters. Only fields for provided attributes will be included.\n * @param type Model's class.\n * @param attributes List of attribute definitions from which fields should be created.\n * @param idProperty Id property representing model (optional).\n * @param titleProperty Title property representing model (optional). If not provided, it will be automatically chosen.\n * @param tableviewEditorType Type of editor in tableview (add, edit, view or none).\n */\n public static fromClassWithCustomAttrsDef<EditorModel, ParentEditorModel = undefined>(\n type: ClassType<EditorModel>,\n attributes: EditorClassAttributeDef[],\n idProperty?: keyof EditorModel,\n titleProperty?: keyof EditorModel,\n tableviewEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n return editorDescriptorFromClassAttrsDef<EditorModel, ParentEditorModel>(type, attributes, {\n id: idProperty,\n title: titleProperty,\n tableviewEditorType: tableviewEditorType\n });\n }\n}\n\nexport type EditorDescriptorCreateBaseOptsType = {\n tableviewEditorType?: TableviewEditorTypeEnum;\n};\nexport type EditorDescriptorCreateOptsType<EditorModel> = ModelDescriptorCreateOpts<EditorModel> & EditorDescriptorCreateBaseOptsType;\n\nexport function editorDescriptor<EditorModel, ParentEditorModel = undefined>(): EditorDescriptorInst<EditorModel, ParentEditorModel>;\nexport function editorDescriptor<EditorModel, ParentEditorModel = undefined>(\n opts: EditorDescriptorCreateOptsType<EditorModel>\n): EditorDescriptorInst<EditorModel, ParentEditorModel>;\nexport function editorDescriptor<EditorModel, ParentEditorModel = undefined>(\n model: ModelDescriptor<EditorModel>,\n opts?: EditorDescriptorCreateBaseOptsType\n): EditorDescriptorInst<EditorModel, ParentEditorModel>;\nexport function editorDescriptor<EditorModel, ParentEditorModel = undefined>(\n type: TypeDescriptor<EditorModel>,\n opts?: EditorDescriptorCreateOptsType<EditorModel>\n): EditorDescriptorInst<EditorModel, ParentEditorModel>;\nexport function editorDescriptor<EditorModel, ParentEditorModel = undefined>(\n typeOrModelOrClassOrOpts?: TypeDescriptor<EditorModel> | ModelDescriptor<EditorModel> | EditorDescriptorCreateOptsType<EditorModel>,\n opts?: EditorDescriptorCreateOptsType<EditorModel>\n) {\n if (typeOrModelOrClassOrOpts == null) {\n return new EditorDescriptorInst<EditorModel, ParentEditorModel>(model<EditorModel>(), opts?.tableviewEditorType);\n } else if (typeOrModelOrClassOrOpts instanceof TypeDescriptor) {\n return new EditorDescriptorInst<EditorModel, ParentEditorModel>(\n model<EditorModel>((opts as EditorDescriptorCreateOptsType<EditorModel> | undefined) ?? {}),\n opts?.tableviewEditorType\n );\n } else if (typeOrModelOrClassOrOpts instanceof ModelDescriptor) {\n return new EditorDescriptorInst<EditorModel, ParentEditorModel>(typeOrModelOrClassOrOpts, opts?.tableviewEditorType);\n } else {\n // this could have autoGenerated if model descriptor is class\n return new EditorDescriptorInst<EditorModel, ParentEditorModel>(model<EditorModel>(typeOrModelOrClassOrOpts), typeOrModelOrClassOrOpts?.tableviewEditorType);\n }\n}\n\nexport function editorDescriptorFromClass<EditorModel, ParentEditorModel = undefined>(\n type: ClassType<EditorModel>,\n opts?: EditorDescriptorCreateOptsType<EditorModel>\n): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n return new EditorDescriptorInst<EditorModel, ParentEditorModel>(model<EditorModel>(type as ClassType<EditorModel>, opts), opts?.tableviewEditorType);\n}\n\n/**\n * Generates descriptor based on type attribute definition\n * @param type class type\n * @param attributes\n * @param opts\n */\nexport function editorDescriptorFromClassAttrsDef<EditorModel, ParentEditorModel = undefined>(\n type: ClassType<EditorModel>,\n attributes?: EditorClassAttributeDef[],\n opts?: EditorDescriptorCreateOptsType<EditorModel>\n): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n const descriptor = new EditorDescriptorInst<EditorModel, ParentEditorModel>(model(type, opts), opts?.tableviewEditorType);\n (attributes ?? getEditorClassAttributeDef(type))\n .filter(attr => !attr.type.includes('Set') && !attr.type.includes('Array'))\n .forEach(attr => upsertEditorFieldFromAttributeDef(descriptor, attr));\n return descriptor;\n}\n","import {AbstractControl, FormControl, FormGroup} from '@angular/forms';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {IFormEditorComponent} from './form-editor.interface';\nimport {CommonsFormlyFieldConfig} from './formly-field.model';\n\nexport interface FormEditorSubmitEvent<Item> {\n formItem: Item;\n success: boolean;\n}\n\nexport enum FormFieldEventTypeEnum {\n ComponentLifecycle = 'ComponentLifecycle',\n ValueChange = 'ValueChange',\n DataProvider = 'DataProvider',\n DialogLifecycle = 'DialogLifecycle',\n RowReorder = 'RowReorder',\n Other = 'Other'\n}\n\nexport enum FormEventTypeEnum {\n ComponentLifecycle = 'ComponentLifecycle',\n ValueChange = 'ValueChange',\n Submit = 'Submit',\n Other = 'Other'\n}\n\nexport class FormFieldEventComponentSubtype {\n public static readonly ON_INIT = 'Component.OnInit';\n public static readonly ON_VIEW_INIT = 'Component.OnViewInit';\n public static readonly ON_CONTENT_INIT = 'Component.OnContentInit';\n public static readonly ON_DESTROY = 'Component.OnDestroy';\n}\n\nexport class FormFieldEventDialogSubtype {\n public static readonly VISIBILITY = 'Dialog.Visibility';\n public static readonly TABLE_CAPTION_COMPONENT_INSTANCE = 'Dialog.MngTable.CaptionComponentInstance';\n public static readonly TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE = 'Dialog.MngTable.ColumnActionsComponentInstance';\n}\n\nexport interface FormFieldEventData<FieldModel, EditorModel> {\n eventSubtype?: string;\n value?: FieldModel;\n formValue?: EditorModel;\n [key: string]: any;\n}\n\nexport interface FormEventData<EditorModel> {\n eventSubtype?: string;\n value?: EditorModel; // direct value from form.valueChanges, disabled field values and setters are not included\n /**\n * @deprecated Use event's ${formComponent.getFormValue()} instead.\n */\n formValue?: () => EditorModel; // function that returns calculated form value\n submitValid?: boolean; // true if form is valid\n submitValue?: EditorModel; // value on submit\n [key: string]: any;\n}\n\nexport interface FormFieldEvent<FieldValue, FormValue, ParentFormValue = undefined> {\n type: FormFieldEventTypeEnum;\n fieldComponent?: FieldType<CommonsFormlyFieldConfig<FieldValue, FormValue, ParentFormValue>>;\n formComponent?: IFormEditorComponent<FormValue, ParentFormValue>;\n fieldFormControl: FormControl<FieldValue>;\n form: FormGroup<{[K in keyof FormValue]: AbstractControl<FormValue[K]>}>;\n fieldFormlyConfig: CommonsFormlyFieldConfig<FieldValue, FormValue, ParentFormValue>;\n data?: FormFieldEventData<FieldValue, FormValue>;\n}\n\nexport interface FormEvent<FormValue, ParentFormValue = undefined> {\n type: FormEventTypeEnum;\n formComponent?: IFormEditorComponent<FormValue, ParentFormValue>;\n form: FormGroup<{[K in keyof FormValue]: AbstractControl<FormValue[K]>}>;\n data?: FormEventData<FormValue>;\n}\n\nexport interface EditorResetEvent<Item> {\n emitEvent?: boolean;\n fetch?: boolean; // if item should be re-fetched again through data provider\n item?: Item; // if present, item value will be used to reset form\n fields?: Partial<Item>;\n data?: {\n [key: string]: any;\n };\n}\n","import {Directive, Input} from '@angular/core';\nimport {AbstractControl, FormControl, FormGroup} from '@angular/forms';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {CommonsFormlyFieldConfig, CommonsFormlyFieldProps} from './formly-field.model';\nimport {CommonsFormlyFormOptions, CommonsFormlyFormState} from './formly-options.model';\n\n// eslint-disable-next-line @angular-eslint/prefer-standalone\n@Directive()\nexport abstract class AFormlyCustomFieldComponent<Value, FormValue, ParentFormValue = undefined> extends FieldType<CommonsFormlyFieldConfig<Value, FormValue, ParentFormValue>> {\n @Input('field') override field!: CommonsFormlyFieldConfig<Value, FormValue, ParentFormValue>;\n @Input('model') _model!: Value;\n @Input('form') _form!: FormGroup<{[K in keyof FormValue]: AbstractControl<FormValue[K]>}>;\n @Input('options') _options!: CommonsFormlyFormOptions<FormValue>;\n @Input('key') _key!: string | number | (string | number)[];\n @Input('formControl') _formControl!: FormControl<Value>;\n @Input('props') _props!: CommonsFormlyFieldProps<Value, FormValue, ParentFormValue>;\n @Input('showError') _showError!: boolean;\n @Input('id') _id!: string;\n @Input('formState') _formState!: CommonsFormlyFormState<FormValue>;\n\n override get model() {\n return this._model;\n }\n\n override get form() {\n return this._form;\n }\n\n override get options() {\n return this._options;\n }\n\n override get key() {\n return this._key;\n }\n\n override get formControl() {\n return this._formControl;\n }\n\n override get props() {\n return this._props;\n }\n\n override get showError() {\n return this._showError;\n }\n\n override get id() {\n return this._id;\n }\n\n override get formState() {\n return this._formState;\n }\n}\n","import {ClassOptType, DataListParams, DataProviderInst, ServiceClassOptType} from '@mediusinc/mng-commons/core';\nimport {ITableDataProvider, TableDataProviderGetAllEagerFnType, TableDataProviderGetAllFnType, TableDataProviderInst, TableReloadEvent} from '@mediusinc/mng-commons/table/api';\n\nimport {\n EditorDataProviderCreateFnType,\n EditorDataProviderDeleteFnType,\n EditorDataProviderFetchFnType,\n EditorDataProviderInst,\n EditorDataProviderUpdateFnType,\n IEditorDataProvider\n} from '../../editor/data-providers/editor.data-provider';\nimport {EditorResetEvent} from '../../editor/models/form-editor.event';\n\nexport type ITableviewDataProvider<\n Model = any,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassOptType<Model>,\n ServiceClass = ServiceClassOptType<Service>\n> = IEditorDataProvider<Model, Service, ModelClass, ServiceClass> & ITableDataProvider<Model, Service, Sorts, Filters, ModelClass, ServiceClass>;\n\nexport class TableviewDataProviderInst<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassOptType<Model>,\n ServiceClass = ServiceClassOptType<Service>\n >\n extends DataProviderInst<Model, Service, ModelClass, ServiceClass>\n implements ITableviewDataProvider<Model, Service, Sorts, Filters, ModelClass, ServiceClass>\n{\n protected readonly editorDataProvider: EditorDataProviderInst<Model, Service, ModelClass, ServiceClass>;\n protected readonly tableDataProvider: TableDataProviderInst<Model, Service, Sorts, Filters, ModelClass, ServiceClass>;\n\n public constructor(type: ModelClass, serviceType: ServiceClass) {\n super(type, serviceType);\n this.editorDataProvider = new EditorDataProviderInst<Model, Service, ModelClass, ServiceClass>(type, serviceType);\n this.tableDataProvider = new TableDataProviderInst<Model, Service, Sorts, Filters, ModelClass, ServiceClass>(type, serviceType);\n }\n\n get isLazy() {\n return this.tableDataProvider.isLazy;\n }\n\n get tableReload$() {\n return this.tableDataProvider.tableReload$;\n }\n\n get editorReset$() {\n return this.editorDataProvider.editorReset$;\n }\n\n get getAll() {\n return this.tableDataProvider.getAll;\n }\n\n get fetch() {\n return this.editorDataProvider.fetch;\n }\n\n get create() {\n return this.editorDataProvider.create;\n }\n\n get update() {\n return this.editorDataProvider.update;\n }\n\n get delete() {\n return this.editorDataProvider.delete;\n }\n\n withGetAll(fn: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters>): this {\n this.tableDataProvider.withGetAll(fn);\n return this;\n }\n\n withGetAllEagerly(fn: TableDataProviderGetAllEagerFnType<Model, Service>): this {\n this.tableDataProvider.withGetAllEagerly(fn);\n return this;\n }\n\n withFetch(fn: EditorDataProviderFetchFnType<Model, Service>): this {\n this.editorDataProvider.withFetch(fn);\n return this;\n }\n\n withCreate(fn?: EditorDataProviderCreateFnType<Model, Service>): this {\n this.editorDataProvider.withCreate(fn);\n return this;\n }\n\n withUpdate(fn?: EditorDataProviderUpdateFnType<Model, Service>): this {\n this.editorDataProvider.withUpdate(fn);\n return this;\n }\n\n withDelete(fn?: EditorDataProviderDeleteFnType<Model, Service>): this {\n this.editorDataProvider.withDelete(fn);\n return this;\n }\n\n /**\n * @deprecated Use ${reloadTable} instead.\n */\n getAllReload(params?: DataListParams<Sorts, Filters>): void {\n this.tableDataProvider.getAllReload(params);\n }\n\n reloadTable(event?: TableReloadEvent<Sorts, Filters>): void {\n this.tableDataProvider.reloadTable(event);\n }\n\n resetEditor(event?: EditorResetEvent<Model>): void {\n this.editorDataProvider.resetEditor(event);\n }\n}\n\nexport class DynamicTableviewDataProviderInst<Service = any, ServiceClass = ServiceClassOptType<Service>> extends TableviewDataProviderInst<\n any,\n Service,\n any,\n any,\n undefined,\n ServiceClass\n> {\n public constructor(serviceType: ServiceClass) {\n super(undefined, serviceType);\n }\n}\n","import {ClassType, ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {DynamicTableviewDataProviderInst, TableviewDataProviderInst} from './tableview.data-provider';\n\nexport class TableviewDataProvider extends TableviewDataProviderInst<any> {\n protected constructor() {\n super(undefined, undefined);\n }\n\n public static create<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(): TableviewDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined> {\n return tableviewDataProvider<Model, Sorts, Filters>();\n }\n\n public static fromClass<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>\n ): TableviewDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined> {\n return tableviewDataProviderFromClass<Model, Sorts, Filters>(type);\n }\n\n public static fromClassWithService<Model, Service, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ): TableviewDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>> {\n return tableviewDataProviderFromClass<Model, Service, Sorts, Filters>(type, serviceType);\n }\n\n public static fromService<Service, Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n serviceType: ServiceClassType<Service>\n ): TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>> {\n return tableviewDataProviderWithService<Service, Model, Sorts, Filters>(serviceType);\n }\n}\n\nexport type TableviewDataProviderCreateOptsType<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel> = {\n filtersType?: TypeDescriptor<Filters>;\n sortsType?: TypeDescriptor<Sorts>;\n};\n\nexport function tableviewDataProvider<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(): TableviewDataProviderInst<\n Model,\n undefined,\n Sorts,\n Filters,\n undefined,\n undefined\n>;\nexport function tableviewDataProvider<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: TypeDescriptor<Model>,\n opts?: TableviewDataProviderCreateOptsType<Model, Sorts, Filters>\n): TableviewDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined>;\nexport function tableviewDataProvider<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: TypeDescriptor<Model>,\n serviceType: ServiceClassType<Service>,\n opts?: TableviewDataProviderCreateOptsType<Model, Sorts, Filters>\n): TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>;\nexport function tableviewDataProvider<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model, ServiceClass = ServiceClassType<Service>>(\n type?: TypeDescriptor<Model>,\n serviceTypeOrOpts?: ServiceClass | TableviewDataProviderCreateOptsType<Model, Sorts, Filters>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n opts?: TableviewDataProviderCreateOptsType<Model, Sorts, Filters>\n) {\n if (serviceTypeOrOpts === undefined || typeof serviceTypeOrOpts === 'function') {\n return new TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClass>(undefined, serviceTypeOrOpts as ServiceClass);\n } else {\n return new TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClass>(undefined, undefined as ServiceClass);\n }\n}\n\nexport function tableviewDataProviderWithService<Service, Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n serviceType: ServiceClassType<Service>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n opts?: TableviewDataProviderCreateOptsType<Model, Sorts, Filters>\n): TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>> {\n return new TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>(undefined, serviceType);\n}\n\nexport function tableviewDataProviderFromClass<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>\n): TableviewDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined>;\nexport function tableviewDataProviderFromClass<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n): TableviewDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>>;\nexport function tableviewDataProviderFromClass<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model, ServiceClass = ServiceClassType<Service>>(\n type: ClassType<Model>,\n serviceType?: ServiceClass\n) {\n return new TableviewDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClass>(type, serviceType as ServiceClass);\n}\n\nexport function tableviewDataProviderFromModel<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model, ModelClass = ClassType<Model>>(\n model: ModelDescriptor<Model, ModelClass>,\n opts?: TableviewDataProviderCreateOptsType<Model, Sorts, Filters>\n): TableviewDataProviderInst<Model, undefined, Sorts, Filters, ModelClass, undefined>;\nexport function tableviewDataProviderFromModel<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model, ModelClass = ClassType<Model>>(\n model: ModelDescriptor<Model, ModelClass>,\n serviceClass: ServiceClassType<Service>,\n opts?: TableviewDataProviderCreateOptsType<Model, Sorts, Filters>\n): TableviewDataProviderInst<Model, Service, Sorts, Filters, ModelClass, ServiceClassType<Service>>;\nexport function tableviewDataProviderFromModel<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassType<Model>,\n ServiceClass = ServiceClassType<Service>\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n>(model: ModelDescriptor<Model, ModelClass>, serviceTypeOrOpts?: ServiceClass, opts?: TableviewDataProviderCreateOptsType<Model, Sorts, Filters>) {\n return typeof serviceTypeOrOpts === 'function'\n ? new TableviewDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>>(\n model.type as ClassType<Model>,\n serviceTypeOrOpts as ServiceClassType<Service>\n )\n : new TableviewDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined>(model.type as ClassType<Model>, undefined);\n}\n\nexport class DynamicTableviewDataProvider extends DynamicTableviewDataProviderInst {\n protected constructor() {\n super(undefined);\n }\n\n public static create(): DynamicTableviewDataProviderInst<undefined, undefined> {\n return tableviewDynamicDataProvider();\n }\n\n public static fromService<Service>(serviceType: ServiceClassType<Service>): DynamicTableviewDataProviderInst<Service, ServiceClassType<Service>> {\n return tableviewDynamicDataProvider(serviceType);\n }\n}\n\nexport function tableviewDynamicDataProvider(): DynamicTableviewDataProviderInst<undefined, undefined>;\nexport function tableviewDynamicDataProvider<Service>(serviceType: ServiceClassType<Service>): DynamicTableviewDataProviderInst<Service, ServiceClassType<Service>>;\nexport function tableviewDynamicDataProvider<Service, ServiceClass = ServiceClassType<Service>>(\n serviceType?: ServiceClass\n): DynamicTableviewDataProviderInst<Service, ServiceClass> {\n return new DynamicTableviewDataProviderInst<Service, ServiceClass>(serviceType as ServiceClass);\n}\n","import {ArrayItemType, EnumConstantType, ILookupDataProvider, ITableviewDescriptor, IdType, KeyofAndOfType, Nullable} from '@mediusinc/mng-commons/core';\nimport {FilterDescriptor, FilterDisplayTypeEnum} from '@mediusinc/mng-commons/filter';\nimport {EnumDescriptor, ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\nimport {ColumnDescriptor, IColumnsManageInterface, ITableDataProvider, TableDescriptorInst, TableDynamicDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {FieldActionDescriptor} from '../../editor/descriptors/field-action.descriptor';\nimport {AFieldDescriptor} from '../../editor/descriptors/field-base.descriptor';\nimport {FieldLookupDescriptor, FieldLookupProviderType} from '../../editor/descriptors/field-lookup.descriptor';\nimport {FieldValidationDescriptorOptsType} from '../../editor/descriptors/field-validation.descriptor';\nimport {FieldInputDescriptorType} from '../../editor/descriptors/field.descriptor';\nimport {IFieldsManageInterface} from '../../editor/models/editor-fields.model';\nimport {TableviewEditorTypeEnum} from '../../editor/models/editor.model';\nimport {FormValidationMessage, FormValidator} from '../../editor/models/field-validation.model';\n\nexport class TableviewDescriptorInst<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel, ParentEditorModel = undefined>\n implements\n ITableviewDescriptor<TableviewModel, Sorts, Filters, ParentEditorModel>,\n IColumnsManageInterface<TableviewModel, Sorts, Filters>,\n IFieldsManageInterface<TableviewModel, ParentEditorModel>\n{\n private readonly _model: ModelDescriptor<TableviewModel>;\n\n protected _table: TableDescriptorInst<TableviewModel, Sorts, Filters>;\n protected _detailsEditor: EditorDescriptorInst<TableviewModel, ParentEditorModel>;\n protected _addEditor: EditorDescriptorInst<TableviewModel, ParentEditorModel>;\n protected _editEditor: EditorDescriptorInst<TableviewModel, ParentEditorModel>;\n\n protected _isLocalized = false;\n\n public constructor(model: ModelDescriptor<TableviewModel>) {\n this._model = model;\n this._table = new TableDescriptorInst<TableviewModel, Sorts, Filters>(model);\n this._table.withTitle(`${this._model.i18nBaseKey}.name`);\n this._detailsEditor = new EditorDescriptorInst<TableviewModel, ParentEditorModel>(model, TableviewEditorTypeEnum.Details);\n this._detailsEditor.withDisabled();\n this._addEditor = new EditorDescriptorInst<TableviewModel, ParentEditorModel>(model, TableviewEditorTypeEnum.Add);\n this._editEditor = new EditorDescriptorInst<TableviewModel, ParentEditorModel>(model, TableviewEditorTypeEnum.Edit);\n }\n\n public get table() {\n return this._table;\n }\n\n public get detailsEditor() {\n return this._detailsEditor;\n }\n\n public get addEditor() {\n return this._addEditor;\n }\n\n public get editEditor() {\n return this._editEditor;\n }\n\n public get model() {\n return this._model;\n }\n\n public isLocalized() {\n return this._isLocalized;\n }\n\n public withTableDescriptor(descriptor: TableDescriptorInst<TableviewModel, Sorts, Filters>): this {\n this._table = descriptor;\n return this;\n }\n\n public withEditorDescriptors(descriptor: EditorDescriptorInst<TableviewModel, ParentEditorModel>): this {\n this._detailsEditor = descriptor;\n this._editEditor = descriptor;\n this._addEditor = descriptor;\n return this;\n }\n\n public withDetailsDescriptor(descriptor: EditorDescriptorInst<TableviewModel, ParentEditorModel>): this {\n this._detailsEditor = descriptor;\n return this;\n }\n\n public withAddDescriptor(descriptor: EditorDescriptorInst<TableviewModel, ParentEditorModel>): this {\n this._addEditor = descriptor;\n return this;\n }\n\n public withEditDescriptor(descriptor: EditorDescriptorInst<TableviewModel, ParentEditorModel>): this {\n this._editEditor = descriptor;\n return this;\n }\n\n /**\n * creates new copy of editor descriptor and makes it disabled\n * usable in combination with this::withEditorDescriptors, where detailsDescriptor is made non-disabled\n * @param type which editor type to set to disabled\n */\n public withDisabledEditorDescriptor(type = TableviewEditorTypeEnum.Details): this {\n if (type === TableviewEditorTypeEnum.Edit) {\n this._editEditor = this._editEditor.copy().withDisabled();\n } else if (type === TableviewEditorTypeEnum.Details) {\n this._detailsEditor = this._detailsEditor.copy().withDisabled();\n } else if (type === TableviewEditorTypeEnum.Add) {\n this._addEditor = this._addEditor.copy().withDisabled();\n }\n return this;\n }\n\n /**\n * @deprecated Use {table.withTitle} directly\n * @param title\n */\n public withTableTitle(title: string | undefined): this {\n this._table.withTitle(title);\n return this;\n }\n\n public withValidation<Value = TableviewModel>(\n name: string,\n expression: FormValidator<Value, ParentEditorModel>,\n message?: FormValidationMessage<Value, ParentEditorModel>,\n opts?: FieldValidationDescriptorOptsType<keyof TableviewModel>\n ): this {\n return this.withValidationUnsafe(name, expression, message, opts as FieldValidationDescriptorOptsType);\n }\n\n public withValidationUnsafe<Value = TableviewModel>(\n name: string,\n expression: FormValidator<Value, ParentEditorModel>,\n message?: FormValidationMessage<Value, ParentEditorModel>,\n opts?: FieldValidationDescriptorOptsType\n ): this {\n this._detailsEditor.withValidationUnsafe<Value>(name, expression, message, opts);\n this._addEditor.withValidationUnsafe<Value>(name, expression, message, opts);\n this._editEditor.withValidationUnsafe<Value>(name, expression, message, opts);\n return this;\n }\n\n public getColumn<Property extends keyof TableviewModel, ColumnModel = NonNullable<TableviewModel[Property]>, ColumnValue = TableviewModel[Property]>(property: Property) {\n return this._table.getColumn<Property, ColumnModel, ColumnValue>(property);\n }\n\n public getColumnUnsafe<ColumnModel = any, ColumnValue = ColumnModel>(property: string) {\n return this._table.getColumnUnsafe<ColumnModel, ColumnValue>(property);\n }\n\n public removeColumn(property: keyof TableviewModel): void {\n this._table.removeColumn(property);\n }\n\n public removeColumnUnsafe(property: string): void {\n this._table.removeColumnUnsafe(property);\n }\n\n public withColumn<ColumnModel, ColumnValue = ColumnModel>(column: ColumnDescriptor<ColumnModel, TableviewModel, ColumnValue>): this {\n this._table.withColumn<ColumnModel, ColumnValue>(column);\n return this;\n }\n\n public addColumn<Property extends keyof TableviewModel>(property: Property): ColumnDescriptor<NonNullable<TableviewModel[Property]>, TableviewModel, TableviewModel[Property]> {\n return this._table.addColumn(property);\n }\n\n public addColumnEnum<PropertyKey extends keyof TableviewModel, Enum extends NonNullable<TableviewModel[PropertyKey]>>(property: PropertyKey, enumDesc: EnumDescriptor<Enum>) {\n return this._table.addColumnEnum(property, enumDesc);\n }\n\n public addColumnUnsafe<ColumnModel = any>(property: string): ColumnDescriptor<ColumnModel, TableviewModel> {\n return this._table.addColumnUnsafe(property);\n }\n\n public withColumns(...properties: (keyof TableviewModel)[]): this {\n this._table.withColumns(...properties);\n return this;\n }\n\n public getSort(property: Sorts) {\n return this._table.getSort(property);\n }\n\n public getSortUnsafe(property: string) {\n return this._table.getSortUnsafe(property);\n }\n\n public removeSort(property: Sorts) {\n this._table.removeSort(property);\n }\n\n public removeSortUnsafe(property: string) {\n this._table.removeSortUnsafe(property);\n }\n\n public addSort(property: Sorts, isDefault = false, ascending?: boolean) {\n return this._table.addSort(property, isDefault, ascending);\n }\n\n public addSortUnsafe(property: string, isDefault = false, ascending?: boolean) {\n return this._table.addSortUnsafe(property, isDefault, ascending);\n }\n\n public withSort(property: Sorts, isDefault = false, ascending?: boolean): this {\n this._table.withSort(property, isDefault, ascending);\n return this;\n }\n\n public withSortUnsafe(property: string, isDefault = false, ascending?: boolean): this {\n this._table.withSortUnsafe(property, isDefault, ascending);\n return this;\n }\n\n public withDefaultSort(property: Sorts, ascending?: boolean, order?: number, enabled?: boolean): this {\n this._table.withDefaultSort(property, ascending, order, enabled);\n return this;\n }\n\n public withDefaultSortUnsafe(property: string, ascending?: boolean, order?: number, enabled?: boolean): this {\n this._table.withDefaultSortUnsafe(property, ascending, order, enabled);\n return this;\n }\n\n public withSorts(...properties: Sorts[]): this {\n this._table.withSorts(...properties);\n return this;\n }\n\n public withSortsUnsafe(...properties: string[]): this {\n this._table.withSortsUnsafe(...properties);\n return this;\n }\n\n public getFilter<FilterModel = Filters extends keyof TableviewModel ? NonNullable<TableviewModel[Filters]> : any>(property: Filters) {\n return this._table.getFilter<FilterModel>(property);\n }\n\n public getFilterUnsafe<FilterModel = any>(property: string) {\n return this._table.getFilterUnsafe<FilterModel>(property);\n }\n\n public removeFilter(property: Filters) {\n this._table.removeFilter(property);\n }\n\n public removeFilterUnsafe(property: string) {\n this._table.removeFilterUnsafe(property);\n }\n\n public addFilter<FilterModel = Filters extends keyof TableviewModel ? TableviewModel[Filters] : never>(property: Filters) {\n return this._table.addFilter<FilterModel>(property);\n }\n\n public addFilterUnsafe<FilterModel>(property: string) {\n return this._table.addFilterUnsafe<FilterModel>(property);\n }\n\n public addFilterLookup<FilterModel = Filters extends keyof TableviewModel ? NonNullable<TableviewModel[Filters]> : never, Service = undefined>(\n property: Filters,\n provider?: ILookupDataProvider<FilterModel, Service>,\n optionsValueProperty?: keyof FilterModel\n ) {\n return this._table.addFilterLookup<FilterModel, Service>(property, provider, optionsValueProperty);\n }\n\n public addFilterLookupUnsafe<FilterModel, Service = undefined>(property: string, provider?: ILookupDataProvider<FilterModel, Service>, optionsValueProperty?: string) {\n return this._table.addFilterLookupUnsafe<FilterModel, Service>(property, provider, optionsValueProperty);\n }\n\n public addFilterLookupEnum<Enum>(property: Filters, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n return this._table.addFilterLookupEnum<Enum>(property, enumDesc, options);\n }\n\n public addFilterLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n return this._table.addFilterLookupEnumUnsafe<Enum>(property, enumDesc, options);\n }\n\n public addFilterFromColumn<Property extends keyof TableviewModel, FilterModel = NonNullable<TableviewModel[Property]>>(\n property: Extract<Filters, Property>,\n displayType?: FilterDisplayTypeEnum,\n forceSimple = false\n ) {\n return this._table.addFilterFromColumn<Property, FilterModel>(property, displayType, forceSimple);\n }\n\n public withFiltersFromColumns(...properties: Extract<Filters, keyof TableviewModel>[]): this {\n this._table.withFiltersFromColumns(...properties);\n return this;\n }\n\n public withFiltersFromColumnsUnsafe(...properties: string[]): this {\n this._table.withFiltersFromColumnsUnsafe(...properties);\n return this;\n }\n\n public addFilterFromColumnUnsafe(property: string, displayType?: FilterDisplayTypeEnum, forceSimple = false) {\n return this._table.addFilterFromColumnUnsafe(property, displayType, forceSimple);\n }\n\n public withFilter<FilterModel>(property: Filters, filter: FilterDescriptor<FilterModel, TableviewModel>): this {\n this._table.withFilter<FilterModel>(property, filter);\n return this;\n }\n\n public withFilterUnsafe<FilterModel>(filter: FilterDescriptor<FilterModel, TableviewModel>): this {\n this._table.withFilterUnsafe<FilterModel>(filter);\n return this;\n }\n\n public getField(property: keyof TableviewModel, editorType: TableviewEditorTypeEnum) {\n return this.getFieldUnsafe(property as string, editorType);\n }\n\n public getFieldUnsafe(property: string, editorType: TableviewEditorTypeEnum): AFieldDescriptor<any, TableviewModel, ParentEditorModel> | null {\n switch (editorType) {\n case TableviewEditorTypeEnum.Edit:\n return this._editEditor.getFieldUnsafe(property);\n case TableviewEditorTypeEnum.Add:\n return this._addEditor.getFieldUnsafe(property);\n case TableviewEditorTypeEnum.Details:\n return this._detailsEditor.getFieldUnsafe(property);\n case TableviewEditorTypeEnum.None:\n return null;\n }\n }\n\n public removeField(property: keyof TableviewModel): void {\n this.removeFieldUnsafe(property as string);\n }\n\n public removeFieldUnsafe(property: string): void {\n this._editEditor.removeFieldUnsafe(property);\n this._addEditor.removeFieldUnsafe(property);\n this._detailsEditor.removeFieldUnsafe(property);\n }\n\n public addFieldDescriptor<FieldModel, FieldValue = FieldModel>(field: AFieldDescriptor<FieldModel, TableviewModel, FieldValue, ParentEditorModel>): this {\n this._detailsEditor.addFieldDescriptor(field);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return this;\n }\n\n public addField<Property extends keyof TableviewModel, FieldModel = NonNullable<TableviewModel[Property]>, FieldValue = TableviewModel[Property]>(property: Property) {\n const field = this._detailsEditor.addField<Property, FieldModel, FieldValue>(property);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldUnsafe<FieldModel = FieldInputDescriptorType, FieldValue = FieldModel>(property: string) {\n const field = this._detailsEditor.addFieldUnsafe<FieldModel, FieldValue>(property);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFields(...properties: (keyof TableviewModel)[]): this {\n properties.forEach(p => this.addField(p));\n return this;\n }\n\n public addFieldAction(actionName: string): FieldActionDescriptor<TableviewModel, ParentEditorModel> {\n const field = this._detailsEditor.addFieldAction(actionName);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n private addFieldToEditAndAdd<FieldModel, FieldValue = FieldModel>(field: AFieldDescriptor<FieldModel, TableviewModel, FieldValue, ParentEditorModel>) {\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n }\n\n /**\n * Adds lookup field.\n *\n * @param {Property} property - The property key of the editor.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, TableviewModel, undefined, FieldValue, ParentEditorModel>} - The field lookup descriptor.\n */\n public addFieldLookup<Property extends keyof TableviewModel, LookupModel = NonNullable<TableviewModel[Property]>, FieldValue = TableviewModel[Property]>(\n property: Property,\n type?: TypeDescriptor<LookupModel>\n ) {\n const field = this._detailsEditor.addFieldLookup<Property, LookupModel, FieldValue>(property, type);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n /**\n * [UNSAFE] Adds lookup field.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property Model property name.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model (defines 2nd generic).\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, TableviewModel, undefined, FieldValue, ParentEditorModel>} - The field lookup descriptor.\n */\n public addFieldLookupUnsafe<LookupModel, FieldValue = LookupModel>(property: string, type?: TypeDescriptor<LookupModel>) {\n const field = this._detailsEditor.addFieldLookupUnsafe<LookupModel, FieldValue>(property, type);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n /**\n * Adds a field lookup with options value property for lookup model.\n *\n * @param {Property} property - The property key of the editor.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {LookupValueProperty} lookupOptionsValueProperty - The value property used as value in the lookup options.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam LookupValueProperty - The property of lookup model type.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, TableviewModel, undefined, FieldValue>} - The field lookup descriptor.\n */\n public addFieldLookupWithOptionsValueProperty<\n Property extends keyof TableviewModel,\n LookupModel,\n LookupValueProperty extends KeyofAndOfType<LookupModel, TableviewModel[Property]>,\n FieldValue = TableviewModel[Property]\n >(property: Property, type: TypeDescriptor<LookupModel>, lookupOptionsValueProperty: LookupValueProperty) {\n const field = this._detailsEditor.addFieldLookupWithOptionsValueProperty<Property, LookupModel, LookupValueProperty, FieldValue>(\n property,\n type,\n lookupOptionsValueProperty\n );\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n /**\n * [UNSAFE] Adds a field lookup with options value property for lookup model.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {Property} property - The property key of the editor.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {LookupValueProperty} lookupOptionsValueProperty - The value property used as value in the lookup options.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam LookupValueProperty - The property of lookup model type.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, TableviewModel, undefined, FieldValue>} - The field lookup descriptor.\n */\n public addFieldLookupWithOptionsValuePropertyUnsafe<LookupModel, FieldValue = Nullable<IdType>>(\n property: string,\n type: TypeDescriptor<LookupModel>,\n lookupOptionsValueProperty: string\n ) {\n const field = this._detailsEditor.addFieldLookupWithOptionsValuePropertyUnsafe<LookupModel, FieldValue>(property, type, lookupOptionsValueProperty);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n /**\n * Adds a field lookup with a data provider or service to the editor model.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldLookupProviderType<LookupModel, Service>} provider - The field lookup data provider or service.\n * @param {TypeDescriptor<LookupModel>} [type] - The type of lookup - if data provider is passed as previous parameter, type can be omitted. If service is provider, type parameter is proposed in favour of correct typing.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam Service - The lookup service type.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The field value type, defaults to the editor's property type.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} Created field lookup descriptor.\n */\n public addFieldLookupWithProvider<Property extends keyof TableviewModel, Service, LookupModel = NonNullable<TableviewModel[Property]>, FieldValue = TableviewModel[Property]>(\n property: Property,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type?: TypeDescriptor<LookupModel>\n ) {\n const field = this._detailsEditor.addFieldLookupWithProvider<Property, Service, LookupModel, FieldValue>(property, provider, type);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n /**\n * [UNSAFE] Adds a field lookup with a data provider or service to the editor model.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property - The property key of the editor.\n * @param {FieldLookupProviderType<LookupModel, Service>} provider - The lookup provider or service for the field lookup.\n * @param {TypeDescriptor<LookupModel>?} type - Optional type descriptor for the field lookup.\n * @typeparam LookupModel - The field lookup model type.\n * @typeparam Service - The lookup service type.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, TableviewModel, Service, FieldValue>} - The field lookup descriptor added to the instance.\n */\n public addFieldLookupWithProviderUnsafe<LookupModel, Service, FieldValue = LookupModel>(\n property: string,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type?: TypeDescriptor<LookupModel>\n ) {\n const field = this._detailsEditor.addFieldLookupWithProviderUnsafe<LookupModel, Service, FieldValue>(property, provider, type);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n /**\n * Adds a field lookup with data provider or service and options value property for lookup model.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldLookupProviderType<FieldModel, Service>} provider - The lookup provider.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {LookupValueProperty} lookupOptionsValueProperty - The value property used as value in the lookup options.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam Service - The lookup service type.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam LookupValueProperty - The property of lookup model type.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, TableviewModel, Service, FieldValue, ParentEditorModel>} - The field lookup descriptor.\n */\n addFieldLookupWithProviderAndOptionsValueProperty<\n Property extends keyof TableviewModel,\n Service,\n LookupModel,\n LookupValueProperty extends KeyofAndOfType<LookupModel, TableviewModel[Property]>,\n FieldValue = TableviewModel[Property]\n >(\n property: Property,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type: TypeDescriptor<LookupModel>,\n lookupOptionsValueProperty: LookupValueProperty\n ): FieldLookupDescriptor<LookupModel, TableviewModel, Service, FieldValue, ParentEditorModel> {\n const field = this._detailsEditor.addFieldLookupWithProviderAndOptionsValueProperty<Property, Service, LookupModel, LookupValueProperty, FieldValue>(\n property,\n provider,\n type,\n lookupOptionsValueProperty\n );\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n /**\n * [UNSAFE] Adds a field lookup with data provider or service and options value property for lookup model.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property - The property key of the editor.\n * @param {FieldLookupProviderType<FieldModel, Service>} provider - The lookup provider.\n * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.\n * @param {string} lookupOptionsValueProperty - The value property used in the lookup options.\n * @typeparam Service - The service type.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel>} - The field lookup descriptor.\n */\n addFieldLookupWithProviderAndOptionsValuePropertyUnsafe<Service, LookupModel, FieldValue = LookupModel>(\n property: string,\n provider: FieldLookupProviderType<LookupModel, Service>,\n type: TypeDescriptor<LookupModel>,\n lookupOptionsValueProperty: string\n ): FieldLookupDescriptor<LookupModel, TableviewModel, Service, FieldValue, ParentEditorModel> {\n const field = this._detailsEditor.addFieldLookupWithProviderAndOptionsValuePropertyUnsafe<Service, LookupModel, FieldValue>(\n property,\n provider,\n type,\n lookupOptionsValueProperty\n );\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldLookupEnum<Property extends keyof TableviewModel, Enum extends NonNullable<TableviewModel[Property]>>(\n property: Property,\n enumDesc: EnumDescriptor<Enum>,\n options?: Array<Enum>\n ) {\n const field = this._detailsEditor.addFieldLookupEnum(property, enumDesc, options);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n const field = this._detailsEditor.addFieldLookupEnumUnsafe<Enum>(property, enumDesc, options);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldManyEditor<Property extends keyof TableviewModel, FieldModel = ArrayItemType<TableviewModel[Property]>, FieldValue = TableviewModel[Property]>(\n property: Property,\n tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, TableviewModel>\n ) {\n const field = this._detailsEditor.addFieldManyEditor<Property, FieldModel, FieldValue>(property, tableviewDescriptor);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldManyEditorUnsafe<FieldModel, FieldValue = FieldModel[]>(property: string, tableviewDescriptor: TableviewDescriptorInst<FieldModel>) {\n const field = this._detailsEditor.addFieldManyEditorUnsafe<FieldModel, FieldValue>(property, tableviewDescriptor);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldManyToManyEditor<Property extends keyof TableviewModel, Service, FieldModel = ArrayItemType<TableviewModel[Property]>, FieldValue = TableviewModel[Property]>(\n property: Property,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupDataProvider: ITableDataProvider<FieldModel, Service>\n ) {\n const field = this._detailsEditor.addFieldManyToManyEditor<Property, Service, FieldModel, FieldValue>(\n property,\n mainTableDescriptor,\n lookupTableDescriptor,\n lookupDataProvider\n );\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldManyToManyEditorUnsafe<FieldModel, Service, FieldValue = FieldModel[]>(\n property: string,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupDataProvider: ITableDataProvider<FieldModel, Service>\n ) {\n const field = this._detailsEditor.addFieldManyToManyEditorUnsafe<FieldModel, Service, FieldValue>(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public createTabGroup(name: string, title?: string): this {\n this._detailsEditor.createTabGroup(name, title);\n this._addEditor.createTabGroup(name, title);\n this._editEditor.createTabGroup(name, title);\n return this;\n }\n\n public createFieldGroup(name: string, title?: string): this {\n this._detailsEditor.createFieldGroup(name, title);\n this._addEditor.createFieldGroup(name, title);\n this._editEditor.createFieldGroup(name, title);\n return this;\n }\n\n public copy(): TableviewDescriptorInst<TableviewModel, Sorts, Filters, ParentEditorModel> {\n const tableview = new TableviewDescriptorInst<TableviewModel, Sorts, Filters, ParentEditorModel>(this._model.copy());\n tableview._table = this._table.copy();\n tableview._detailsEditor = this._detailsEditor.copy();\n tableview._addEditor = this._addEditor.copy();\n tableview._editEditor = this._editEditor.copy();\n tableview._isLocalized = this._isLocalized;\n return tableview;\n }\n\n public localized<Property extends keyof TableviewModel, LocalizationModel = ArrayItemType<TableviewModel[Property]>>(\n property: Property,\n model: ModelDescriptor<LocalizationModel>,\n localeProperty: keyof LocalizationModel\n ): this {\n return this.localizedUnsafe(property as string, model, localeProperty as string);\n }\n\n public localizedUnsafe<LocalizationModel>(property: string, model: ModelDescriptor<LocalizationModel>, localeProperty: string): this {\n this._isLocalized = true;\n this._table.withLocalizationLocaleProperty(localeProperty as string);\n this.detailsEditor.localizedUnsafe(property, model, localeProperty);\n this.addEditor.localizedUnsafe(property, model, localeProperty);\n this.editEditor.localizedUnsafe(property, model, localeProperty);\n\n return this;\n }\n}\n\nexport class TableviewDynamicDescriptorInt extends TableviewDescriptorInst<any> {\n protected override _table: TableDynamicDescriptorInst;\n\n public constructor(model: ModelDescriptor<any>) {\n super(model);\n this._table = new TableDynamicDescriptorInst(this.model);\n }\n\n public override get table() {\n return this._table;\n }\n\n /**\n * sets custom table descriptor\n * @param descriptor\n */\n public override withTableDescriptor(descriptor: TableDynamicDescriptorInst): this {\n this._table = descriptor;\n return this;\n }\n\n /**\n * sets visibility hidden state to column with given property\n * equals to be removing in auto and base tableview descriptor\n * * @param property column's property\n */\n public override removeColumn(property: string): this {\n this._table.removeColumn(property);\n return this;\n }\n\n public withEntityForTranslations(i18nBaseKey: string): this {\n this._table.model.withI18nBase(i18nBaseKey);\n this._detailsEditor.model.withI18nBase(i18nBaseKey);\n return this;\n }\n\n /**\n * creates deep copy of tableview object and its children\n */\n public override copy(): TableviewDynamicDescriptorInt {\n const descriptor = new TableviewDynamicDescriptorInt(this.model.copy());\n descriptor._table = this._table.copy();\n return descriptor;\n }\n}\n","import {ClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, ModelDescriptorCreateOpts, TypeDescriptor, model} from '@mediusinc/mng-commons/model';\nimport {tableDescriptorFromClassAttrsDef} from '@mediusinc/mng-commons/table/api';\n\nimport {editorDescriptorFromClassAttrsDef} from '../../editor/descriptors/editor-descriptor.factory';\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {TableviewEditorTypeEnum} from '../../editor/models/editor.model';\nimport {TableviewClassAttributeDef} from '../models/class-tableview-attribute.model';\nimport {TableviewDescriptorInst, TableviewDynamicDescriptorInt} from './tableview.descriptor';\n\nexport class TableviewDescriptor extends TableviewDescriptorInst<any> {\n protected constructor() {\n super(ModelDescriptor.create());\n }\n\n public static create<TableviewModel, SortProperty = keyof TableviewModel, FilterProperty = keyof TableviewModel, ParentEditorModel = undefined>(\n idProperty?: keyof TableviewModel,\n titleProperty?: keyof TableviewModel,\n i18nBaseKey?: string | ClassType<unknown>\n ): TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty, ParentEditorModel> {\n return new TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty, ParentEditorModel>(\n ModelDescriptor.create<TableviewModel>(idProperty, titleProperty, i18nBaseKey)\n );\n }\n\n public static fromClass<TableviewModel, SortProperty = keyof TableviewModel, FilterProperty = keyof TableviewModel, ParentEditorModel = undefined>(\n type: ClassType<TableviewModel>,\n idProperty?: keyof TableviewModel,\n titleProperty?: keyof TableviewModel,\n i18nBaseKey?: ClassType<unknown> | string\n ): TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty, ParentEditorModel> {\n return new TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty, ParentEditorModel>(\n ModelDescriptor.fromClass(type, idProperty, titleProperty, i18nBaseKey)\n );\n }\n\n public static fromModel<TableviewModel, SortProperty = keyof TableviewModel, FilterProperty = keyof TableviewModel, ParentEditorModel = undefined>(\n model: ModelDescriptor<TableviewModel>\n ): TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty, ParentEditorModel> {\n return new TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty, ParentEditorModel>(model);\n }\n\n /**\n * generates descriptor from attribute definition of openapi model\n * @param type class type\n * @param idProperty\n * @param titleProperty\n */\n public static fromClassWithAutoAttrsDef<TableviewModel>(\n type: ClassType<TableviewModel>,\n idProperty?: keyof TableviewModel,\n titleProperty?: keyof TableviewModel\n ): TableviewDescriptorInst<TableviewModel> {\n const descriptor = tableviewDescriptor(model(type, {id: idProperty, title: titleProperty}));\n const optsBase = {id: idProperty, title: titleProperty};\n descriptor.withTableDescriptor(tableDescriptorFromClassAttrsDef(type, undefined, optsBase));\n descriptor.withEditDescriptor(editorDescriptorFromClassAttrsDef(type, undefined, {...optsBase, tableviewEditorType: TableviewEditorTypeEnum.Edit}));\n descriptor.withDetailsDescriptor(editorDescriptorFromClassAttrsDef(type, undefined, {...optsBase, tableviewEditorType: TableviewEditorTypeEnum.Details}).withDisabled());\n descriptor.withAddDescriptor(editorDescriptorFromClassAttrsDef(type, undefined, {...optsBase, tableviewEditorType: TableviewEditorTypeEnum.Add}));\n\n return descriptor;\n }\n\n /**\n * generates descriptor from given attribute definition\n * @param type class type\n * @param columnAttributes attribute definition to generate columns\n * @param fieldAttributes attribute definition to generate fields, if undefined columnDefinition is used, if null editors are not generated\n * @param idProperty\n * @param titleProperty\n */\n public static fromClassWithCustomAttrsDef<TableviewModel>(\n type: ClassType<TableviewModel>,\n columnAttributes: TableviewClassAttributeDef[],\n fieldAttributes?: TableviewClassAttributeDef[] | null,\n idProperty?: keyof TableviewModel,\n titleProperty?: keyof TableviewModel\n ): TableviewDescriptorInst<TableviewModel> {\n const optsBase = {id: idProperty, title: titleProperty};\n const descriptor = tableviewDescriptor(model(type, optsBase));\n descriptor.withTableDescriptor(tableDescriptorFromClassAttrsDef(type, columnAttributes, optsBase));\n\n if (fieldAttributes !== null) {\n descriptor.withEditDescriptor(\n editorDescriptorFromClassAttrsDef(type, fieldAttributes ?? columnAttributes, {...optsBase, tableviewEditorType: TableviewEditorTypeEnum.Edit})\n );\n descriptor.withDetailsDescriptor(\n editorDescriptorFromClassAttrsDef(type, fieldAttributes ?? columnAttributes, {...optsBase, tableviewEditorType: TableviewEditorTypeEnum.Details})\n );\n descriptor.withAddDescriptor(\n editorDescriptorFromClassAttrsDef(type, fieldAttributes ?? columnAttributes, {...optsBase, tableviewEditorType: TableviewEditorTypeEnum.Add})\n );\n }\n\n return descriptor;\n }\n}\n\nexport type TableviewDescriptorSortsFiltersCreateOptsType<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel> = {\n filtersType?: TypeDescriptor<Filters>;\n sortsType?: TypeDescriptor<Sorts>;\n};\n\nexport type TableviewDescriptorCreateOptsType<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel> = TableviewDescriptorSortsFiltersCreateOptsType<\n TableviewModel,\n Sorts,\n Filters\n> &\n ModelDescriptorCreateOpts<TableviewModel>;\n\nexport function tableviewDescriptor<Model, Sorts = keyof Model, Filters = keyof Model>(): TableviewDescriptorInst<Model, Sorts, Filters>;\nexport function tableviewDescriptor<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel>(\n opts: TableviewDescriptorCreateOptsType<TableviewModel>\n): TableviewDescriptorInst<TableviewModel, Sorts, Filters>;\nexport function tableviewDescriptor<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel>(\n model: ModelDescriptor<TableviewModel>,\n opts?: TableviewDescriptorSortsFiltersCreateOptsType<TableviewModel, Sorts, Filters>\n): TableviewDescriptorInst<TableviewModel, Sorts, Filters>;\nexport function tableviewDescriptor<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel>(\n type: TypeDescriptor<TableviewModel>,\n opts?: TableviewDescriptorCreateOptsType<TableviewModel>\n): TableviewDescriptorInst<TableviewModel, Sorts, Filters>;\nexport function tableviewDescriptor<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel>(\n typeOrModelOrClassOrOpts?: TypeDescriptor<TableviewModel> | ModelDescriptor<TableviewModel> | TableviewDescriptorCreateOptsType<TableviewModel>,\n opts?: TableviewDescriptorCreateOptsType<TableviewModel>\n) {\n if (typeOrModelOrClassOrOpts == null) {\n return new TableviewDescriptorInst<TableviewModel, Sorts, Filters>(model<TableviewModel>());\n } else if (typeOrModelOrClassOrOpts instanceof TypeDescriptor) {\n return new TableviewDescriptorInst<TableviewModel, Sorts, Filters>(model<TableviewModel>((opts as TableviewDescriptorCreateOptsType<TableviewModel> | undefined) ?? {}));\n } else if (typeOrModelOrClassOrOpts instanceof ModelDescriptor) {\n return new TableviewDescriptorInst<TableviewModel, Sorts, Filters>(typeOrModelOrClassOrOpts);\n } else {\n // this could have autoGenerated if model descriptor is class\n return new TableviewDescriptorInst<TableviewModel, Sorts, Filters>(model<TableviewModel>(typeOrModelOrClassOrOpts));\n }\n}\n\nexport function tableviewDescriptorFromClass<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel>(\n type: ClassType<TableviewModel>,\n opts?: TableviewDescriptorCreateOptsType<TableviewModel>\n): TableviewDescriptorInst<TableviewModel, Sorts, Filters> {\n return new TableviewDescriptorInst<TableviewModel, Sorts, Filters>(model<TableviewModel>(type as ClassType<TableviewModel>, opts));\n}\n\n/**\n * generates descriptor based on type attribute definition\n * @param type class type\n * @param columnAttributes\n * @param fieldAttributes\n * @param opts\n */\nexport function tableviewDescriptorFromClassAttrsDef<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel>(\n type: ClassType<TableviewModel>,\n columnAttributes?: TableviewClassAttributeDef[],\n fieldAttributes?: TableviewClassAttributeDef[] | null,\n opts?: TableviewDescriptorCreateOptsType<TableviewModel>\n): TableviewDescriptorInst<TableviewModel, Sorts, Filters> {\n const model = new ModelDescriptor(type, opts?.id as string | undefined, opts?.title as string | undefined, opts?.i18nBase as string | undefined);\n const descriptor = new TableviewDescriptorInst<TableviewModel, Sorts, Filters>(model);\n descriptor.withTableDescriptor(tableDescriptorFromClassAttrsDef<TableviewModel, Sorts, Filters>(type, columnAttributes, opts));\n\n if (fieldAttributes !== null) {\n descriptor.withEditDescriptor(editorDescriptorFromClassAttrsDef(type, fieldAttributes ?? columnAttributes, {...opts, tableviewEditorType: TableviewEditorTypeEnum.Edit}));\n descriptor.withDetailsDescriptor(\n editorDescriptorFromClassAttrsDef(type, fieldAttributes ?? columnAttributes, {...opts, tableviewEditorType: TableviewEditorTypeEnum.Details}).withDisabled()\n );\n descriptor.withAddDescriptor(editorDescriptorFromClassAttrsDef(type, fieldAttributes ?? columnAttributes, {...opts, tableviewEditorType: TableviewEditorTypeEnum.Add}));\n }\n\n return descriptor;\n}\n\nexport function tableviewDescriptorFromParent<TableviewModel, ChildModel>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any, any> | EditorDescriptorInst<TableviewModel> | ModelDescriptor<TableviewModel>,\n model: ModelDescriptor<ChildModel>\n): TableviewDescriptorInst<ChildModel, keyof ChildModel, keyof ChildModel, TableviewModel>;\nexport function tableviewDescriptorFromParent<TableviewModel, ChildModel>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any, any> | EditorDescriptorInst<TableviewModel> | ModelDescriptor<TableviewModel>,\n type: ClassType<ChildModel>,\n idProperty?: keyof ChildModel,\n titleProperty?: keyof ChildModel,\n i18nBaseKey?: ClassType<unknown> | string\n): TableviewDescriptorInst<ChildModel, keyof ChildModel, keyof ChildModel, TableviewModel>;\nexport function tableviewDescriptorFromParent<TableviewModel, ChildModel>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any, any> | EditorDescriptorInst<TableviewModel> | ModelDescriptor<TableviewModel>,\n classOrType: ModelDescriptor<ChildModel> | ClassType<ChildModel>,\n idProperty?: keyof ChildModel,\n titleProperty?: keyof ChildModel,\n i18nBaseKey?: ClassType<unknown> | string\n): TableviewDescriptorInst<ChildModel, keyof ChildModel, keyof ChildModel, TableviewModel> {\n return classOrType instanceof ModelDescriptor\n ? new TableviewDescriptorInst<ChildModel, keyof ChildModel, keyof ChildModel, TableviewModel>(classOrType)\n : new TableviewDescriptorInst<ChildModel, keyof ChildModel, keyof ChildModel, TableviewModel>(\n model(classOrType, {id: idProperty, title: titleProperty, i18nBase: i18nBaseKey})\n );\n}\n\nexport class TableviewDynamicDescriptor extends TableviewDynamicDescriptorInt {\n protected constructor() {\n super(ModelDescriptor.create());\n }\n\n public static create(idProperty?: string, titleProperty?: string, i18nBaseKey?: string | ClassType<any>): TableviewDynamicDescriptorInt {\n return tableviewDynamicDescriptor({id: idProperty, title: titleProperty, i18nBase: i18nBaseKey});\n }\n\n public static fromModel(model: ModelDescriptor<any>): TableviewDynamicDescriptorInt {\n return tableviewDynamicDescriptor(model);\n }\n}\n\nexport function tableviewDynamicDescriptor(modelOrOpts?: ModelDescriptor<any> | TableviewDescriptorCreateOptsType<any>): TableviewDynamicDescriptorInt {\n return modelOrOpts instanceof ModelDescriptor\n ? new TableviewDynamicDescriptorInt(modelOrOpts)\n : new TableviewDynamicDescriptorInt(new ModelDescriptor<any>(undefined, modelOrOpts?.id as string, modelOrOpts?.title as string, modelOrOpts?.i18nBase as string));\n}\n","import {ClassAttributeDef, ClassType, CommonsInternalError, EnumType, TypeRegistry} from '@mediusinc/mng-commons/core';\nimport {ColumnTypeEnum, getColumnDisplayTypeFromColumnType, getColumnTypeFromClassAttributeDefType} from '@mediusinc/mng-commons/table/api';\n\nimport {getFieldInputTypeFromClassAttributeDefType} from '../../editor/helpers/class-attribute-converter';\nimport {TableviewClassAttributeDef} from '../models/class-tableview-attribute.model';\n\nexport function expandClassAttributeDefWithTableviewDef(attributes?: Array<ClassAttributeDef> | null): TableviewClassAttributeDef[] {\n if (!attributes) {\n throw new CommonsInternalError('Class attribute definition is null, problem with TypeRegistry::findAttributesDefinitionByClassType?', {name: 'TableviewUtilsError'});\n }\n\n const typeRegistry = TypeRegistry.get();\n const tableClassAttributeDef: TableviewClassAttributeDef[] = [];\n for (const attribute of attributes) {\n const enumType = typeRegistry.findEnum(attribute.type);\n const columnType = enumType ? ColumnTypeEnum.Enum : getColumnTypeFromClassAttributeDefType(attribute.type);\n tableClassAttributeDef.push({\n name: attribute.name,\n baseName: attribute.baseName,\n type: attribute.type,\n subtype: attribute.subtype,\n columnType: enumType ? ColumnTypeEnum.Enum : getColumnTypeFromClassAttributeDefType(attribute.type),\n columnDisplayType: getColumnDisplayTypeFromColumnType(columnType, attribute.type),\n fieldType: getFieldInputTypeFromClassAttributeDefType(attribute.type),\n enumType: typeRegistry.findEnum(attribute.type) as EnumType,\n classType: typeRegistry.findType(attribute.type) as ClassType<any>\n });\n }\n\n return tableClassAttributeDef;\n}\n\n/**\n * returns attributes from class type and extends to typed def with column and field enum type\n * @param type class type\n */\nexport function getTableviewClassAttributeDef<T>(type: ClassType<T>): TableviewClassAttributeDef[] {\n return expandClassAttributeDefWithTableviewDef(TypeRegistry.get().findAttributesDefinitionByClassType(type));\n}\n","import {TranslateService} from '@ngx-translate/core';\n\nimport {GetterPipe} from '@mediusinc/mng-commons/core';\n\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\n\nexport function convertDataToStringWithDelimiter(data: any[], delimiter: string, descriptor: TableviewDescriptorInst<any, any, any>, translate: TranslateService): string {\n const replaceNullValue = (key: any, value: any) => (value === null ? '' : value);\n const getterPipe = new GetterPipe();\n return [\n descriptor.table.columns.map(col => translate.instant(descriptor.model.i18nBaseKey + '.properties.' + col.property)).join(delimiter),\n ...data.map((row: any) =>\n descriptor.table.columns\n .map(column => {\n if (typeof column.getter === 'function') {\n return JSON.stringify(getterPipe.transform(row[column.property], column.getter, row), replaceNullValue);\n } else {\n return JSON.stringify(row[column.property], replaceNullValue);\n }\n })\n .join(delimiter)\n )\n ].join('\\r\\n');\n}\n\nexport function saveFileAs(blob: Blob, filename: string) {\n const blobUrl = URL.createObjectURL(blob);\n const link = document.createElement('a');\n\n link.style.display = 'none';\n link.target = '_blank';\n link.href = blobUrl;\n link.download = filename;\n\n document.body.appendChild(link);\n\n link.dispatchEvent(\n new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n );\n\n document.body.removeChild(link);\n}\n","import {Injector, inject} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {of, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {CommonsInternalError, StyleLevelEnum, StyleSizeEnum, copyDataListParams} from '@mediusinc/mng-commons/core';\nimport {ActionButtonDescriptor, ButtonStyleRoundedEnum} from '@mediusinc/mng-commons/form/api';\nimport {ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {ActionProviderType, actionGetProviderCfgObj} from '../../action/descriptors/action-descriptor.factory';\nimport {ActionEditorProviderType, actionEditorGetProviderCfgObj} from '../../action/descriptors/action-editor-descriptor.factory';\nimport {ActionEditorAddDescriptorInst, ActionEditorDetailsDescriptorInst, ActionEditorEditDescriptorInst} from '../../action/descriptors/action-editor.descriptor';\nimport {actionLinkFromAction} from '../../action/descriptors/action-link-descriptor.factory';\nimport {ActionLinkDescriptorInst} from '../../action/descriptors/action-link.descriptor';\nimport {ActionDeleteDescriptorInst, ActionDescriptorInst} from '../../action/descriptors/action.descriptor';\nimport {ActionPositionEnum} from '../../action/models/action.type';\nimport {TableviewActionDefaultCategories} from '../../action/models/tableview-action-default-categories.model';\nimport {DataProviderExecutor} from '../../action/services/data-provider-executor.service';\nimport {DATA_LANGUAGE_DROPDOWN_COMPONENT_IT} from '../../action/services/tokens/data-language-dropdown.token';\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\nimport {TableviewRouteData} from '../models/tableview-route.model';\nimport {convertDataToStringWithDelimiter, saveFileAs} from './files-export';\n\nexport enum TableviewDefaultActionsEnum {\n Details,\n Add,\n Edit,\n EditOnDetails,\n Delete,\n DeleteOnDetails,\n Refresh,\n Export,\n ExportJson,\n ExportCsv,\n LocalizationLanguageSelect\n}\n\nconst tableviewDefaultActions = [\n TableviewDefaultActionsEnum.Details,\n TableviewDefaultActionsEnum.Add,\n TableviewDefaultActionsEnum.Edit,\n TableviewDefaultActionsEnum.EditOnDetails,\n TableviewDefaultActionsEnum.Delete,\n TableviewDefaultActionsEnum.DeleteOnDetails,\n TableviewDefaultActionsEnum.Refresh,\n TableviewDefaultActionsEnum.Export,\n TableviewDefaultActionsEnum.ExportJson,\n TableviewDefaultActionsEnum.ExportCsv,\n TableviewDefaultActionsEnum.LocalizationLanguageSelect\n];\n\nexport function getTableviewDefaultActions() {\n return [...tableviewDefaultActions];\n}\n\nexport function createTableviewActions(\n tableview: TableviewDescriptorInst<any, any, any>,\n defaultActions?: TableviewDefaultActionsEnum[],\n defaultActionsOverrides?: Record<number, ActionDescriptorInst<any>>,\n injector?: Injector | null\n): Array<ActionDescriptorInst<any>> {\n return (defaultActions ?? getTableviewDefaultActions())\n .map(t => createTableviewAction(t, tableview, defaultActions, defaultActionsOverrides, injector))\n .filter(e => e != null) as Array<ActionDescriptorInst<any>>;\n}\n\nexport function createTableviewAction(\n type: TableviewDefaultActionsEnum,\n tableview: TableviewDescriptorInst<any, any, any>,\n defaultActions?: TableviewDefaultActionsEnum[],\n defaultActionsOverrides?: Record<number, ActionDescriptorInst<any>>,\n injector?: Injector | null\n): ActionDescriptorInst<any> | null {\n if (defaultActionsOverrides != null && defaultActionsOverrides[type] !== undefined) {\n return defaultActionsOverrides[type];\n }\n\n switch (type) {\n // table row actions\n case TableviewDefaultActionsEnum.Details:\n return tableviewDetailsAction(tableview.detailsEditor, injector);\n case TableviewDefaultActionsEnum.Edit:\n return tableviewEditAction(tableview.editEditor, injector);\n case TableviewDefaultActionsEnum.Delete:\n return tableviewDeleteAction(tableview.model, injector);\n // table toolbar actions\n case TableviewDefaultActionsEnum.Add:\n return tableviewAddAction(tableview.addEditor, injector);\n case TableviewDefaultActionsEnum.LocalizationLanguageSelect:\n return tableviewLocalizationLanguageSelectAction(tableview);\n case TableviewDefaultActionsEnum.Refresh:\n return tableviewRefreshAction(tableview.model);\n case TableviewDefaultActionsEnum.Export:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson) || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv)\n ? tableviewExportAction(tableview, injector, defaultActions)\n : null;\n //details actions\n case TableviewDefaultActionsEnum.EditOnDetails:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Edit)\n ? tableviewEditOnDetailsAction(tableview.model, tableviewEditAction(tableview.editEditor, injector), injector)\n : null;\n case TableviewDefaultActionsEnum.DeleteOnDetails:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Delete) ? tableviewDeleteOnDetailsAction(tableview.model, injector) : null;\n // subactions\n case TableviewDefaultActionsEnum.ExportJson:\n case TableviewDefaultActionsEnum.ExportCsv:\n return null;\n default:\n throw new CommonsInternalError(`Tableview default action of type ${type} not supported`);\n }\n}\n\nfunction getInjector(injector?: Injector | null): Injector | null {\n return injector === undefined ? inject(Injector) : injector;\n}\n\nfunction getRouteData(injector?: Injector | null) {\n return getInjector(injector)?.get(ActivatedRoute)?.snapshot.data as TableviewRouteData | undefined;\n}\n\nexport function tableviewDetailsAction<Model, Service = undefined>(\n descriptor: EditorDescriptorInst<Model>,\n injector?: Injector | null\n): ActionEditorDetailsDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasDetails ? new ActionEditorDetailsDescriptorInst<Model, Service>(descriptor) : null;\n}\n\nexport function tableviewDetailsActionWithProvider<Model, Service>(\n descriptor: EditorDescriptorInst<Model>,\n serviceProvider: ActionEditorProviderType<Model, Service>,\n injector?: Injector | null\n): ActionEditorDetailsDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasDetails\n ? new ActionEditorDetailsDescriptorInst<Model, Service>(descriptor, {\n ...actionEditorGetProviderCfgObj(serviceProvider)\n })\n : null;\n}\n\nexport function tableviewAddAction<Model, Service = undefined>(\n descriptor: EditorDescriptorInst<Model>,\n injector?: Injector | null\n): ActionEditorAddDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasAdd ? new ActionEditorAddDescriptorInst<Model, Service>(descriptor) : null;\n}\n\nexport function tableviewAddActionWithProvider<Model, Service>(\n descriptor: EditorDescriptorInst<Model>,\n serviceProvider: ActionEditorProviderType<Model, Service>,\n injector?: Injector | null\n): ActionEditorAddDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasAdd\n ? new ActionEditorAddDescriptorInst<Model, Service>(descriptor, {\n ...actionEditorGetProviderCfgObj(serviceProvider)\n })\n : null;\n}\n\nexport function tableviewEditAction<Model, Service = undefined>(\n descriptor: EditorDescriptorInst<Model>,\n injector?: Injector | null\n): ActionEditorEditDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasEdit ? new ActionEditorEditDescriptorInst<Model, Service>(descriptor) : null;\n}\n\nexport function tableviewEditActionWithProvider<Model, Service>(\n descriptor: EditorDescriptorInst<Model>,\n serviceProvider: ActionEditorProviderType<Model, Service>,\n injector?: Injector | null\n): ActionEditorEditDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasEdit\n ? new ActionEditorEditDescriptorInst<Model, Service>(descriptor, {\n ...actionEditorGetProviderCfgObj(serviceProvider)\n })\n : null;\n}\n\nexport function tableviewEditOnDetailsAction<Model>(\n descriptor: ModelDescriptor<Model>,\n editDescriptor: ActionEditorEditDescriptorInst<Model> | null,\n injector?: Injector | null\n): ActionLinkDescriptorInst<Model> | null {\n const routeData = getRouteData(injector);\n if (routeData?.tableviewActions && !routeData.tableviewActions.hasEdit) {\n return null;\n }\n\n const action = editDescriptor\n ? actionLinkFromAction(editDescriptor)\n : new ActionLinkDescriptorInst<Model>(ActionEditorEditDescriptorInst.ACTION_NAME, {\n model: descriptor\n });\n action\n .withTableviewCategory(TableviewActionDefaultCategories.EDIT)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(ActionPositionEnum.FooterLeft)\n .withRouterLink('./edit');\n action.button.styleClass.withActionLevel(StyleLevelEnum.Secondary);\n action.button.styleClass.withSize(StyleSizeEnum.Normal);\n action.button.styleClass.withRoundedButton(ButtonStyleRoundedEnum.DEFAULT);\n action.button.withLabel();\n if (!editDescriptor) action.button.withIcon('pi pi-pencil');\n\n return action;\n}\n\nexport function tableviewDeleteAction<Model, Service = undefined>(\n descriptor: ModelDescriptor<Model>,\n injector?: Injector | null\n): ActionDeleteDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasDelete ? new ActionDeleteDescriptorInst<Model, Service>(descriptor) : null;\n}\n\nexport function tableviewDeleteActionWithProvider<Model, Service>(\n descriptor: ModelDescriptor<Model>,\n serviceProvider: ActionProviderType<Model, Service>,\n injector?: Injector | null\n): ActionDeleteDescriptorInst<Model, Service> | null {\n const routeData = getRouteData(injector);\n return !routeData?.tableviewActions || routeData.tableviewActions.hasDelete\n ? new ActionDeleteDescriptorInst<Model, Service>(descriptor, {\n ...actionGetProviderCfgObj(serviceProvider)\n })\n : null;\n}\n\nexport function tableviewDeleteOnDetailsAction<Model, Service = undefined>(model: ModelDescriptor<Model>, injector?: Injector | null): ActionDescriptorInst<Model, Service> | null {\n const action = tableviewDeleteAction<Model, Service>(model, injector);\n const dataProviderExecutor = getInjector(injector)?.get(DataProviderExecutor);\n if (action) {\n action\n .withTableviewCategory(TableviewActionDefaultCategories.DELETE)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(ActionPositionEnum.FooterLeft)\n .withRunFunction(ctx =>\n dataProviderExecutor\n ? dataProviderExecutor.runDeleteOrFail(ctx).pipe(\n tap(() => {\n ctx.viewContainer?.reloadTable({});\n ctx.viewContainer?.closeEditor();\n })\n )\n : null\n );\n action.button.withLabel(undefined);\n action.button.styleClass.withSize(StyleSizeEnum.Normal);\n\n return action;\n }\n\n return null;\n}\n\nexport function tableviewExportAction<Model>(\n descriptor: TableviewDescriptorInst<Model>,\n injector?: Injector | null,\n defaultActions?: TableviewDefaultActionsEnum[]\n): ActionDescriptorInst<Model> | null {\n const exportAction = new ActionDescriptorInst<Model, undefined>('export', {\n model: descriptor.model\n })\n .withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-download'))\n .withSubactionsAsMenu();\n\n const subactions: ActionDescriptorInst<Model>[] = [];\n\n if (defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson)) subactions.push(tableviewExportJsonAction(descriptor, injector));\n if (defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv)) subactions.push(tableviewExportCsvAction(descriptor, injector));\n\n exportAction.withSubactions(...subactions);\n return exportAction;\n}\n\nexport function tableviewExportJsonAction<Model>(descriptor: TableviewDescriptorInst<Model>, injector?: Injector | null): ActionDescriptorInst<Model> {\n const dataProviderExecutor = getInjector(injector)?.get(DataProviderExecutor);\n return new ActionDescriptorInst<Model, undefined>('exportJson', {\n model: descriptor.model\n })\n .withRunFunction(ctx => {\n const params = ctx.parameters.dataListParams ? copyDataListParams(ctx.parameters.dataListParams) : {};\n params.offset = 0;\n params.limit = 500;\n ctx.parameters.dataListParams = params;\n return dataProviderExecutor\n ? dataProviderExecutor.runGetAllOrFail(ctx).pipe(\n map(res => {\n const blob = new Blob([JSON.stringify(res.data, undefined, 4)], {type: 'application/json;charset=utf-8'});\n const typeName = ctx.instance.action.model?.i18nBaseKey ?? '';\n saveFileAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.json`);\n return undefined;\n })\n )\n : ctx.parameters.item;\n })\n .withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-code'))\n .withPosition(ActionPositionEnum.ToolbarRight);\n}\n\nexport function tableviewExportCsvAction<Model>(descriptor: TableviewDescriptorInst<Model>, injector?: Injector | null): ActionDescriptorInst<Model> {\n const dataProviderExecutor = getInjector(injector)?.get(DataProviderExecutor);\n return new ActionDescriptorInst<Model, undefined>('exportCsv', {\n model: descriptor.model\n })\n .withRunFunction(ctx => {\n const params = ctx.parameters.dataListParams ? copyDataListParams(ctx.parameters.dataListParams) : {};\n params.offset = 0;\n params.limit = 500;\n ctx.parameters.dataListParams = params;\n return dataProviderExecutor\n ? dataProviderExecutor.runGetAllOrFail(ctx).pipe(\n map(res => {\n if (!res.data) {\n return undefined;\n }\n const blob = new Blob([convertDataToStringWithDelimiter(res.data, ',', descriptor, ctx.injector.get(TranslateService))], {\n type: 'text/csv;charset=utf-8'\n });\n const typeName = ctx.instance.action.model?.i18nBaseKey ?? '';\n saveFileAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.csv`);\n return undefined;\n })\n )\n : ctx.parameters.item;\n })\n .withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-file'))\n .withPosition(ActionPositionEnum.ToolbarRight);\n}\n\nexport function tableviewRefreshAction<Model>(descriptor: ModelDescriptor<Model>): ActionDescriptorInst<Model> | null {\n const action = new ActionDescriptorInst<Model, undefined>('refresh', {\n model: descriptor\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withTableviewCategory(TableviewActionDefaultCategories.READ)\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunFunction(ctx => {\n ctx.viewContainer?.reloadTable({});\n return of(null);\n });\n action.button.withIcon('pi pi-refresh').styleClass.withActionLevel(StyleLevelEnum.Secondary);\n return action;\n}\n\nexport function tableviewLocalizationLanguageSelectAction<Model>(descriptor: TableviewDescriptorInst<Model>): ActionDescriptorInst<Model> | null {\n return descriptor.isLocalized()\n ? new ActionDescriptorInst<Model, undefined>('translator', {\n model: descriptor.model\n })\n .withPosition(ActionPositionEnum.ToolbarLeft)\n .withComponentFromDi(DATA_LANGUAGE_DROPDOWN_COMPONENT_IT)\n : null;\n}\n","import {Injector} from '@angular/core';\n\nimport {IDataProvider, Nullable} from '@mediusinc/mng-commons/core';\n\nimport {ActionDescriptorInst} from '../../action/descriptors/action.descriptor';\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\nimport {TableviewInput} from '../models/tableview-input.model';\nimport {TableviewDefaultActionsEnum, createTableviewActions, getTableviewDefaultActions} from './tableview-default-actions';\n\nexport type TvBuilderSetterParamsType<Descriptor, DataProvider> = {descriptor: Descriptor; dataProvider: DataProvider; injector: Injector};\nexport type TvBuilderActionSetterFnType<ActionModel, ActionService, Descriptor, DataProvider> = (\n params: TvBuilderSetterParamsType<Descriptor, DataProvider>\n) => Nullable<ActionDescriptorInst<ActionModel, ActionService>>;\nexport type TvBuilderDescriptorSetterFnType<Descriptor, DataProvider> = (params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => Descriptor;\nexport type TvBuilderDataProviderSetterFnType<Descriptor, DataProvider> = (params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => DataProvider;\n\ntype DefaultAction = {\n type: TableviewDefaultActionsEnum;\n descriptor: ActionDescriptorInst<any, any> | null | undefined;\n};\n\n/**\n * The `TableviewBuilder` class is used to build a tableview configuration.\n * It allows you to set various options such as the descriptor, data provider,\n * default actions, and custom actions for the tableview.\n *\n * @typeparam Model - The main model type.\n * @typeparam Service - The API service type.\n * @typeparam Descriptor - The descriptor type.\n * @typeparam DataProvider - The data provider type.\n * @typeparam Sorts - The sort type representing available sort keys.\n * @typeparam Filters - The filter type representing available filter keys.\n */\nexport class TableviewInputBuilder<\n Model,\n Service,\n Descriptor extends TableviewDescriptorInst<Model, Sorts, Filters>,\n DataProvider extends IDataProvider<Model, Service>,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model\n> {\n private defaultActions: DefaultAction[] = getTableviewDefaultActions().map(a => ({type: a, descriptor: undefined}));\n private readonly _customActions: ActionDescriptorInst<any>[] = [];\n\n constructor(\n private _descriptor: Descriptor,\n private _dataProvider: DataProvider,\n private readonly injector: Injector\n ) {}\n\n private prepareSetterParams(): TvBuilderSetterParamsType<Descriptor, DataProvider> {\n return {descriptor: this._descriptor, dataProvider: this._dataProvider, injector: this.injector};\n }\n\n /**\n * Sets a descriptor instead of the default one.\n *\n * @param {TvBuilderDescriptorSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new descriptor. It should accept a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withDescriptor(fn: TvBuilderDescriptorSetterFnType<Descriptor, DataProvider>): this {\n this._descriptor = fn(this.prepareSetterParams());\n return this;\n }\n\n /**\n * Adjusts the descriptor using the provided adjust function.\n *\n * @param {(descriptor: Descriptor) => void} adjustFn - The function used to adjust the descriptor. It accepts a single parameter of type `Descriptor`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjustDescriptor(adjustFn: (descriptor: Descriptor) => void): this {\n adjustFn(this._descriptor);\n return this;\n }\n\n /**\n * Sets the data provider for the TvBuilder instance\n *\n * @param {TvBuilderDataProviderSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * * @returns {this} - Returns the current instance of the builder.\n */\n withDataProvider(fn: TvBuilderDataProviderSetterFnType<Descriptor, DataProvider>): this {\n this._dataProvider = fn(this.prepareSetterParams());\n return this;\n }\n\n /**\n * Adjusts the data provider using the provided adjust function.\n *\n * @param {(dataProvider: DataProvider) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `DataProvider`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjustDataProvider(adjustFn: (dataProvider: DataProvider) => void): this {\n adjustFn(this._dataProvider);\n return this;\n }\n\n /**\n * Adjusts the data provider and/or descriptor using the provided adjust function.\n *\n * @param {(params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjust(adjustFn: (params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => void): this {\n adjustFn(this.prepareSetterParams());\n return this;\n }\n\n /**\n * Removes all the default tableview actions.\n *\n * @returns {this} - Returns the current instance of the builder.\n */\n withNoDefaultActions(): this {\n this.defaultActions.forEach(a => (a.descriptor = null));\n return this;\n }\n\n /**\n * Adds the default actions specified in parameters.\n *\n * @param {TableviewDefaultActionsEnum[]} types - The default actions to add.\n * @returns {this} - Returns the current instance of the builder.\n */\n withDefaultActions(...types: TableviewDefaultActionsEnum[]): this {\n types.forEach(type => {\n const action = this.defaultActions.find(a => a.type === type);\n if (action?.descriptor === null) {\n action.descriptor = undefined;\n }\n });\n return this;\n }\n\n /**\n * Removes the default actions specified in parameters.\n *\n * @param {TableviewDefaultActionsEnum[]} types - The default actions to remove.\n * @returns {this} - Returns the current instance of the builder.\n */\n withoutDefaultActions(...types: TableviewDefaultActionsEnum[]): this {\n types.forEach(type => {\n const action = this.defaultActions.find(a => a.type === type);\n if (action) {\n action.descriptor = null;\n }\n });\n return this;\n }\n\n /**\n * Overrides the default action.\n *\n * @param {TableviewDefaultActionsEnum} type - The default actions to override.\n * @param {TvBuilderActionSetterFnType<Model, ActionService, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withDefaultActionOverride<ActionService = Service>(type: TableviewDefaultActionsEnum, fn: TvBuilderActionSetterFnType<Model, ActionService, Descriptor, DataProvider>): this {\n const action = this.defaultActions.find(a => a.type === type);\n if (action) {\n action.descriptor = fn(this.prepareSetterParams()) ?? null;\n }\n return this;\n }\n\n /**\n * Adds a custom action.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withAction<ActionModel = Model, ActionService = Service>(fn: TvBuilderActionSetterFnType<ActionModel, ActionService, Descriptor, DataProvider>): this {\n const action = fn(this.prepareSetterParams());\n if (action) {\n this._customActions.push(action);\n }\n return this;\n }\n\n /**\n * Builds and returns an instance of ITableview.\n * DO NOT CALL this within tableview create callback function!\n *\n * @return {TableviewInput<Model, Service, Sorts, Filters, Descriptor, DataProvider>} - The built ITableview instance.\n */\n build() {\n return <TableviewInput<Model, Service, Sorts, Filters, Descriptor, DataProvider>>{\n actions: createTableviewActions(\n this._descriptor as TableviewDescriptorInst<any, any, any>,\n this.defaultActions.filter(a => a.descriptor !== null).map(a => a.type),\n this.defaultActions\n .filter(a => a.descriptor != null)\n .reduce(\n (acc, a) => ({\n ...acc,\n [a.type]: a.descriptor!\n }),\n <Record<number, ActionDescriptorInst<any>>>{}\n ),\n this.injector\n ).concat(this._customActions),\n dataProvider: this._dataProvider,\n descriptor: this._descriptor\n };\n }\n}\n","import {Injector, inject} from '@angular/core';\n\nimport {ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {TableviewDataProviderInst} from '../data-providers/tableview.data-provider';\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\nimport {TableviewInputBuilder} from './tableview-input-builder';\n\n/**\n * Creates a tableview with the given model, service.\n *\n * @param {ModelDescriptor<Model>} model - The model descriptor.\n * @param {ServiceClassType<Service>} service - The class type of the service.\n * @param {(builder: TableviewBuilder) => void} [buildFn] - The optional callback function to customize the tableview using the prepared builder.\n *\n * @returns A tableview instance with descriptor, data provider and actions.\n */\nexport function tableview<Model, Service, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n model: ModelDescriptor<Model>,\n service: ServiceClassType<Service>,\n buildFn?: (\n builder: TableviewInputBuilder<Model, Service, TableviewDescriptorInst<Model, Sorts, Filters>, TableviewDataProviderInst<Model, Service, Sorts, Filters>, Sorts, Filters>\n ) => void\n) {\n const builder = new TableviewInputBuilder<\n Model,\n Service,\n TableviewDescriptorInst<Model, Sorts, Filters>,\n TableviewDataProviderInst<Model, Service, Sorts, Filters>,\n Sorts,\n Filters\n >(new TableviewDescriptorInst<Model, Sorts, Filters>(model), new TableviewDataProviderInst<Model, Service, Sorts, Filters>(undefined, service), inject(Injector));\n buildFn?.(builder);\n return builder.build();\n}\n\nexport function tableviewWithSortAndFilter<Model, Service, Sorts, Filters extends keyof any>(\n model: ModelDescriptor<Model>,\n service: ServiceClassType<Service>,\n sorts: TypeDescriptor<Sorts>,\n filters: TypeDescriptor<Filters>,\n buildFn?: (\n builder: TableviewInputBuilder<Model, Service, TableviewDescriptorInst<Model, Sorts, Filters>, TableviewDataProviderInst<Model, Service, Sorts, Filters>, Sorts, Filters>\n ) => void\n) {\n const builder = new TableviewInputBuilder<\n Model,\n Service,\n TableviewDescriptorInst<Model, Sorts, Filters>,\n TableviewDataProviderInst<Model, Service, Sorts, Filters>,\n Sorts,\n Filters\n >(new TableviewDescriptorInst<Model, Sorts, Filters>(model), new TableviewDataProviderInst<Model, Service, Sorts, Filters>(undefined, service), inject(Injector));\n buildFn?.(builder);\n return builder.build();\n}\n","import {ServiceClassType} from '@mediusinc/mng-commons/core';\n\nimport {TableviewDataProviderInst} from '../data-providers/tableview.data-provider';\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\n\n/**\n * Creates a data provider for from descriptor. DO NOT use if the model is class, because the type (from model descriptor) will not be set in data provider.\n *\n * @param {TableviewDescriptorInst<Model, Sorts, Filters>} descriptor - The table descriptor.\n *\n * @return {TableviewDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined>} - The data provider for the table component.\n */\nexport function tableviewToDataProvider<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n descriptor: TableviewDescriptorInst<Model, Sorts, Filters>\n): TableviewDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined>;\n/**\n * Creates a data provider for from descriptor. DO NOT use if the model is class, because the type (from model descriptor) will not be set in data provider.\n *\n * @param {TableviewDescriptorInst<Model, Sorts, Filters>} descriptor - The table descriptor.\n * @param {ServiceClassType<Service>} serviceClass - The service class type.\n *\n * @return {TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>} - The data provider for the table component.\n */\nexport function tableviewToDataProvider<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n descriptor: TableviewDescriptorInst<Model, Sorts, Filters>,\n serviceClass: ServiceClassType<Service>\n): TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>;\nexport function tableviewToDataProvider<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model, ServiceClass = ServiceClassType<Service>>(\n descriptor: TableviewDescriptorInst<Model, Sorts, Filters>,\n serviceType?: ServiceClass\n) {\n return typeof serviceType !== 'undefined'\n ? new TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>(undefined, serviceType as ServiceClassType<Service>)\n : new TableviewDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined>(undefined, undefined);\n}\n","import {ClassType, CommonsInternalError, ILookupDataProvider, TypeRegistry} from '@mediusinc/mng-commons/core';\nimport {EnumDescriptor, findClassTitleAttribute} from '@mediusinc/mng-commons/model';\nimport {\n ColumnDisplayTypeEnum,\n ColumnTypeEnum,\n modifyTableClassAttributeColumnTypeUnsafe,\n modifyTableColumnFilterLookupUnsafe,\n tableDescriptorModifyEnumColumnUnsafe\n} from '@mediusinc/mng-commons/table/api';\n\nimport {getFieldInputTypeFromColumnType} from '../../editor/helpers/class-attribute-converter';\nimport {modifyEditorClassAttributeFieldEnumUnsafe, modifyEditorClassAttributeFieldTypeUnsafe, modifyEditorFieldLookupUnsafe} from '../../editor/helpers/editor-descriptor-helpers';\nimport {FieldInputTypeEnum} from '../../editor/models/field.model';\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\nimport {getTableviewClassAttributeDef} from './class-attribute-converter';\n\n/**\n * creates column and field with custom type, for example currency\n * if field exists, it is replaced\n * DO NOT USE WITH TYPES WHERE ARGS ARE REQUIRED - ERROR WILL BE THROWN\n * for enum use withEnumType\n * for custom class use withClassType\n * @param descriptor Tableview descriptor\n * @param property name of field\n * @param columnType required column type\n * @param fieldType optional, if not provided it is converted from column type\n * @param columnDisplayType optional\n */\nexport function modifyTableviewClassAttributeType<TableviewModel>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any>,\n property: keyof TableviewModel,\n columnType: ColumnTypeEnum,\n fieldType?: FieldInputTypeEnum,\n columnDisplayType?: ColumnDisplayTypeEnum\n): boolean {\n return modifyTableviewClassAttributeTypeUnsafe(descriptor, property as string, columnType, fieldType, columnDisplayType);\n}\n\nexport function modifyTableviewClassAttributeTypeUnsafe<TableviewModel>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any>,\n property: string,\n columnType: ColumnTypeEnum,\n fieldType?: FieldInputTypeEnum,\n columnDisplayType?: ColumnDisplayTypeEnum\n): boolean {\n if (!descriptor.model.type) {\n throw new CommonsInternalError(`withModifiedType cannot be executed for property ${property}: Model type is not defined.`);\n }\n if (columnType === ColumnTypeEnum.Enum) {\n throw new CommonsInternalError('Do not use with types where args are required', {name: 'TableviewDescriptorError'});\n }\n\n const attributeDef = getTableviewClassAttributeDef(descriptor.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n fieldType ??= getFieldInputTypeFromColumnType(columnType, columnDisplayType);\n attributeDef.fieldType = fieldType;\n modifyTableClassAttributeColumnTypeUnsafe(descriptor.table, property, columnType, columnDisplayType);\n modifyEditorClassAttributeFieldTypeUnsafe(descriptor.editEditor, property, fieldType);\n modifyEditorClassAttributeFieldTypeUnsafe(descriptor.addEditor, property, fieldType);\n modifyEditorClassAttributeFieldTypeUnsafe(descriptor.detailsEditor, property, fieldType);\n return true;\n }\n\n return false;\n}\n\n/**\n * creates column with enum type\n * if fields exists, it is replaced\n * @param descriptor Tableview descriptor\n * @param property property name\n * @param enumDesc type of enum\n * @param fieldType type of field, optional, default is Text\n */\nexport function modifyTableviewClassAttributeEnum<TableviewModel, Property extends keyof TableviewModel, Enum extends NonNullable<TableviewModel[Property]>>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any>,\n property: Property,\n enumDesc?: EnumDescriptor<Enum>,\n fieldType?: FieldInputTypeEnum\n): boolean {\n return modifyTableviewClassAttributeEnumUnsafe<TableviewModel, Enum>(descriptor, property as string, enumDesc, fieldType);\n}\n\nexport function modifyTableviewClassAttributeEnumUnsafe<TableviewModel, Enum = any>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any>,\n property: string,\n enumDesc?: EnumDescriptor<Enum>,\n fieldType?: FieldInputTypeEnum\n): boolean {\n if (!descriptor.model.type) {\n throw new CommonsInternalError(`withModifiedEnum cannot be executed for property ${property}: Model type is not defined.`);\n }\n const attributeDef = getTableviewClassAttributeDef(descriptor.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n attributeDef.fieldType = fieldType ?? FieldInputTypeEnum.Text;\n tableDescriptorModifyEnumColumnUnsafe(descriptor.table, property, enumDesc);\n modifyEditorClassAttributeFieldEnumUnsafe(descriptor.editEditor, property, enumDesc);\n modifyEditorClassAttributeFieldEnumUnsafe(descriptor.addEditor, property, enumDesc);\n modifyEditorClassAttributeFieldEnumUnsafe(descriptor.detailsEditor, property, enumDesc);\n return true;\n }\n\n return false;\n}\n\n/**\n * generates column with custom class type\n * field is generated only if lookupProvider is provided\n * @param descriptor Tableview descriptor\n * @param property property name\n * @param type class type of object\n * @param titleProperty\n * @param lookupProvider\n * @param optionsLabelProperty\n * @param filterProperty\n */\nexport function modifyTableviewLookup<TableviewModel, Property extends keyof TableviewModel, LookupModel = NonNullable<TableviewModel[Property]>>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any>,\n property: Property,\n type?: ClassType<LookupModel>,\n lookupProvider?: ILookupDataProvider<LookupModel>,\n titleProperty?: keyof LookupModel,\n optionsLabelProperty?: keyof LookupModel,\n filterProperty?: keyof LookupModel\n): boolean {\n return modifyTableviewLookupUnsafe(descriptor, property as string, type, lookupProvider, titleProperty as string, optionsLabelProperty as string, filterProperty as string);\n}\n\nexport function modifyTableviewLookupUnsafe<TableviewModel, LookupModel>(\n descriptor: TableviewDescriptorInst<TableviewModel, any, any>,\n property: string,\n type?: ClassType<LookupModel>,\n lookupProvider?: ILookupDataProvider<LookupModel>,\n titleProperty?: string,\n optionsLabelProperty?: string,\n filterProperty?: string\n): boolean {\n if (!descriptor.model.type) {\n throw new CommonsInternalError(`withModifiedLookup cannot be executed for property ${property}: Model type is not defined.`);\n }\n\n const attributeDef = getTableviewClassAttributeDef(descriptor.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n type ??= attributeDef.classType ?? TypeRegistry.get().findType(attributeDef.type);\n titleProperty ??= type ? findClassTitleAttribute(type) ?? undefined : undefined;\n optionsLabelProperty ??= titleProperty;\n attributeDef.columnType = ColumnTypeEnum.String;\n attributeDef.fieldType = FieldInputTypeEnum.Text;\n\n if (lookupProvider != null) {\n modifyTableColumnFilterLookupUnsafe(descriptor.table, property, lookupProvider, optionsLabelProperty, filterProperty);\n modifyEditorFieldLookupUnsafe(descriptor.addEditor, property, lookupProvider, optionsLabelProperty);\n modifyEditorFieldLookupUnsafe(descriptor.detailsEditor, property, lookupProvider, optionsLabelProperty);\n modifyEditorFieldLookupUnsafe(descriptor.editEditor, property, lookupProvider, optionsLabelProperty);\n return true;\n } else {\n const column = descriptor.table.getColumnUnsafe(property) ?? descriptor.addColumnUnsafe(property);\n if (titleProperty) {\n column.withGetter(value => value?.[titleProperty as keyof object]);\n }\n return true;\n }\n }\n\n return false;\n}\n","// action descriptors\nexport * from './action/descriptors/action.descriptor';\nexport * from './action/descriptors/action-confirmation.descriptor';\nexport * from './action/descriptors/action-descriptor.factory';\nexport * from './action/descriptors/action-editor.descriptor';\nexport * from './action/descriptors/action-editor-descriptor.factory';\nexport * from './action/descriptors/action-link.descriptor';\nexport * from './action/descriptors/action-link-descriptor.factory';\n\n// action helpers\nexport * from './action/helpers/data-provider-executors';\n\n// action model execution\nexport * from './action/models/execution/action-context.model';\nexport * from './action/models/execution/action-context-validation.model';\nexport * from './action/models/execution/action-execution-error.model';\nexport * from './action/models/execution/action-instance.model';\nexport * from './action/models/execution/action-instance-state.model';\nexport * from './action/models/execution/view-container.model';\n\n// action model\nexport * from './action/models/action.type';\nexport * from './action/models/action-component.model';\nexport * from './action/models/action-descriptor.types';\nexport * from './action/models/action-editor.model';\nexport * from './action/models/action-error.model';\nexport * from './action/models/tableview-action-default-categories.model';\n\n// action services\nexport * from './action/services/tokens/data-language-dropdown.token';\nexport * from './action/services/data-provider-executor.service';\n\n// editor data providers\nexport * from './editor/data-providers/editor.data-provider';\nexport * from './editor/data-providers/editor-data-provider.factory';\n\n// editor descriptors\nexport * from './editor/descriptors/editor.descriptor';\nexport * from './editor/descriptors/editor-descriptor.factory';\nexport * from './editor/descriptors/field.descriptor';\nexport * from './editor/descriptors/field-action.descriptor';\nexport * from './editor/descriptors/field-base.descriptor';\nexport * from './editor/descriptors/field-group.descriptor';\nexport * from './editor/descriptors/field-lookup.descriptor';\nexport * from './editor/descriptors/field-many.descriptor';\nexport * from './editor/descriptors/field-validation.descriptor';\n\n// editor helpers\nexport * from './editor/helpers/class-attribute-converter';\nexport * from './editor/helpers/editor-descriptor-helpers';\n\n// editor models\nexport * from './editor/models/class-tableview-attribute.model';\nexport * from './editor/models/editor.model';\nexport * from './editor/models/editor-fields.model';\nexport * from './editor/models/field.model';\nexport * from './editor/models/field-action-context.model';\nexport * from './editor/models/field-validation.model';\nexport * from './editor/models/form-editor.event';\nexport * from './editor/models/form-editor.interface';\nexport * from './editor/models/formly-custom-field.model';\nexport * from './editor/models/formly-field.model';\nexport * from './editor/models/formly-options.model';\nexport * from './editor/models/radio.model';\nexport * from './editor/models/field-image-preview.model';\n\n// tableview data providers\nexport * from './tableview/data-providers/tableview.data-provider';\nexport * from './tableview/data-providers/tableview-data-provider.factory';\n\n// tableview descriptors\nexport * from './tableview/descriptors/tableview.descriptor';\nexport * from './tableview/descriptors/tableview-descriptor.factory';\n\n// tableview helpers\nexport * from './tableview/helpers/class-attribute-converter';\nexport * from './tableview/helpers/files-export';\nexport * from './tableview/helpers/tableview-create';\nexport * from './tableview/helpers/tableview-data-provider-descriptor-convert';\nexport * from './tableview/helpers/tableview-default-actions';\nexport * from './tableview/helpers/tableview-descriptor-helpers';\nexport * from './tableview/helpers/tableview-input-builder';\n\n// tableview models\nexport * from './tableview/models/class-tableview-attribute.model';\nexport * from './tableview/models/tableview-input.model';\nexport * from './tableview/models/tableview-route.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|