{"version":3,"file":"messaia-cdk-base.mjs","sources":["../../../projects/cdk-base/src/lib/components/audit/audit.ts","../../../projects/cdk-base/src/lib/components/audit/audit.html","../../../projects/cdk-base/src/lib/components/audit-panel/audit-panel.ts","../../../projects/cdk-base/src/lib/components/audit-panel/audit-panel.html","../../../projects/cdk-base/src/lib/components/dynamic-edit-form/dynamic-edit-form.ts","../../../projects/cdk-base/src/lib/components/dynamic-edit-form/dynamic-edit-form.html","../../../projects/cdk-base/src/lib/components/dynamic-form/dynamic-form.ts","../../../projects/cdk-base/src/lib/components/dynamic-form/dynamic-form.html","../../../projects/cdk-base/src/lib/templates/dynamic-list.template.ts","../../../projects/cdk-base/src/lib/components/dynamic-list/dynamic-list.ts","../../../projects/cdk-base/src/lib/models/entity-export-column.ts","../../../projects/cdk-base/src/lib/models/entity-export.ts","../../../projects/cdk-base/src/lib/services/entity-export.ts","../../../projects/cdk-base/src/lib/components/export-dialog/export-dialog.ts","../../../projects/cdk-base/src/lib/components/export-dialog/export-dialog.html","../../../projects/cdk-base/src/lib/constants/common.ts","../../../projects/cdk-base/src/lib/enums/document-type.ts","../../../projects/cdk-base/src/lib/models/address-base.ts","../../../projects/cdk-base/src/lib/models/address.ts","../../../projects/cdk-base/src/lib/models/address-extended.ts","../../../projects/cdk-base/src/lib/models/attachment.ts","../../../projects/cdk-base/src/lib/models/document-base.ts","../../../projects/cdk-base/src/lib/templates/table.template.ts","../../../projects/cdk-base/src/lib/public_api.ts","../../../projects/cdk-base/src/public_api.ts","../../../projects/cdk-base/src/messaia-cdk-base.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'vd-audit',\r\n\ttemplateUrl: './audit.html',\r\n\tstyleUrls: ['./audit.scss'],\r\n\timports: [\r\n\t\tCommonModule\r\n\t]\r\n})\r\nexport class VdAuditComponent {\r\n\t/**\r\n\t * The audit data being passed into the component.\r\n\t * This property holds the information related to the audit,\r\n\t * and it can be of any type. Consider using a more specific type\r\n\t * for better type safety and clarity.\r\n\t * @type {any}\r\n\t */\r\n\t@Input()\r\n\tpublic entity: any;\r\n\r\n\t/**\r\n\t * Reference to the content projected in the left section.\r\n\t * This can be any template defined with the left attribute in the parent component.\r\n\t * @type {TemplateRef<any>}\r\n\t */\r\n\t@ContentChild('left')\r\n\tpublic left?: TemplateRef<any>;\r\n\r\n\t/**\r\n\t * Reference to the content projected in the middle section.\r\n\t * This can be any template defined with the middle attribute in the parent component.\r\n\t * @type {TemplateRef<any>}\r\n\t */\r\n\t@ContentChild('middle')\r\n\tpublic middle?: TemplateRef<any>;\r\n\r\n\t/**\r\n\t * Reference to the content projected in the right section.\r\n\t * This can be any template defined with the right attribute in the parent component.\r\n\t * @type {TemplateRef<any>}\r\n\t */\r\n\t@ContentChild('right')\r\n\tpublic right?: TemplateRef<any>;\r\n}\r\n","@if (entity) {\r\n    <div layout-gt-sm=\"row\" class=\"audit pad-sm\">\r\n        <!-- #region Left region -->\r\n        <div>\r\n            <table class=\"labeled\">\r\n                <tr>\r\n                    <td i18n=\"@@id\">ID</td>\r\n                    <td>{{entity.id}}</td>\r\n                </tr>\r\n                <tr>\r\n                    <td i18n=\"@@createdBy\">Created by</td>\r\n                    <td>{{entity.createdBy}}</td>\r\n                </tr>\r\n                <tr>\r\n                    <td i18n=\"@@createdOn\">Created on</td>\r\n                    <td>{{entity.createdDate | date:'dd.MM.yyyy HH:mm'}}</td>\r\n                </tr>\r\n            </table>\r\n            <ng-content select=\"[left]\"></ng-content>\r\n            @if (left) {\r\n                <ng-container [ngTemplateOutlet]=\"left\" [ngTemplateOutletContext]=\"{entity: entity}\"></ng-container>\r\n            }\r\n        </div>\r\n        <!-- #endregion -->\r\n        <!-- #region Middle region -->\r\n        <div flex-offset-gt-sm=\"5\">\r\n            <table class=\"labeled\">\r\n                <tr>\r\n                    <td i18n=\"@@version\">Version</td>\r\n                    <td>{{entity.version}}</td>\r\n                </tr>\r\n                <tr>\r\n                    <td i18n=\"@@updatedBy\">Updated by</td>\r\n                    <td>{{entity.updatedBy}}</td>\r\n                </tr>\r\n                <tr>\r\n                    <td i18n=\"@@updatedOn\">Updated on</td>\r\n                    <td>{{entity.updatedDate | date:'dd.MM.yyyy HH:mm'}}</td>\r\n                </tr>\r\n            </table>\r\n            <ng-content select=\"[middle]\"></ng-content>\r\n            @if (middle) {\r\n                <ng-container [ngTemplateOutlet]=\"middle\" [ngTemplateOutletContext]=\"{entity: entity}\"></ng-container>\r\n            }\r\n        </div>\r\n        <!-- #endregion -->\r\n        <!-- #region Right region -->\r\n        <div flex-offset-gt-sm=\"5\">\r\n            <ng-content select=\"[right]\"></ng-content>\r\n            @if (right) {\r\n                <ng-container [ngTemplateOutlet]=\"right\" [ngTemplateOutletContext]=\"{entity: entity}\"></ng-container>\r\n            }\r\n        </div>\r\n        <!-- #endregion -->\r\n    </div>\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { AfterViewInit, ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewContainerRef } from \"@angular/core\";\r\nimport { MatExpansionModule } from \"@angular/material/expansion\";\r\nimport { VdAuditComponent } from '../audit/audit';\r\n\r\n@Component({\r\n    selector: 'vd-audit-panel',\r\n    templateUrl: './audit-panel.html',\r\n    imports: [\r\n        CommonModule,\r\n        MatExpansionModule,\r\n        VdAuditComponent\r\n    ]\r\n})\r\nexport class VdAuditPanelComponent implements AfterViewInit {\r\n    /**\r\n     * Reference to the template for rendering suggestions.\r\n     * @type {TemplateRef<any>}\r\n     */\r\n    @ViewChild('auditTemplate', { read: TemplateRef, static: true })\r\n    public templateRef!: TemplateRef<any>;\r\n\r\n    /**\r\n     * Reference to the content projected in the left section.\r\n     * This can be any template defined with the left attribute in the parent component.\r\n     * @type {TemplateRef<any>}\r\n     */\r\n    @ContentChild('leftContent')\r\n    public leftContent?: TemplateRef<any>;\r\n\r\n    /**\r\n     * Reference to the content projected in the middle section.\r\n     * This can be any template defined with the middle attribute in the parent component.\r\n     * @type {TemplateRef<any>}\r\n     */\r\n    @ContentChild('middleContent')\r\n    public middleContent?: TemplateRef<any>;\r\n\r\n    /**\r\n     * Reference to the content projected in the right section.\r\n     * This can be any template defined with the right attribute in the parent component.\r\n     * @type {TemplateRef<any>}\r\n     */\r\n    @ContentChild('rightContent')\r\n    public rightContent?: TemplateRef<any>;\r\n\r\n    /**\r\n     * The ID of the entity being audited, passed as an input to the component.\r\n     * @type {string}\r\n     */\r\n    @Input()\r\n    public id?: string;\r\n\r\n    /**\r\n     * The current item being audited, passed as an input to the component.\r\n     * @type {any}\r\n     */\r\n    @Input()\r\n    public entity?: any;\r\n\r\n    /**\r\n     * Event emitter for navigating back from the audit panel.\r\n     * @type {EventEmitter<any>}\r\n     */\r\n    @Output()\r\n    public back: EventEmitter<any> = new EventEmitter();\r\n\r\n    /**\r\n     * Constructor to inject ViewContainerRef and ChangeDetectorRef.\r\n     * @param {ViewContainerRef} viewContainer - Used to dynamically insert views.\r\n     * @param {ChangeDetectorRef} changeDetectorRef - Used to trigger change detection manually.\r\n     */\r\n    constructor(private viewContainer: ViewContainerRef, protected changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n    /**\r\n     * A callback method that is invoked immediately after Angular has completed initialization \r\n     * of the component's view.\r\n     * It creates the embedded view from the template and triggers change detection.\r\n     */\r\n    ngAfterViewInit(): void {\r\n        /* Create the view and detect changes */\r\n        this.viewContainer.createEmbeddedView(this.templateRef).detectChanges();\r\n        this.changeDetectorRef.markForCheck();\r\n    }\r\n}","<ng-template #auditTemplate>\r\n    <mat-expansion-panel [id]=\"id\">\r\n        <mat-expansion-panel-header>\r\n            <mat-panel-title i18n=\"@@audit\">Audit</mat-panel-title>\r\n        </mat-expansion-panel-header>\r\n        <vd-audit [entity]=\"entity\">\r\n            <!-- Left Section -->\r\n            <ng-template #left>\r\n                @if (leftContent) {\r\n                    <!-- Render the content passed to the left section -->\r\n                    <ng-container *ngTemplateOutlet=\"leftContent\"></ng-container>\r\n                }\r\n            </ng-template>\r\n\r\n            <!-- Middle Section -->\r\n            <ng-template #middle>\r\n                @if (middleContent) {\r\n                    <!-- Render the content passed to the middle section -->\r\n                    <ng-container *ngTemplateOutlet=\"middleContent\"></ng-container>\r\n                }\r\n            </ng-template>\r\n\r\n            <!-- Right Section -->\r\n            <ng-template #right>\r\n                @if (rightContent) {\r\n                    <!-- Render the content passed to the right section -->\r\n                    <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\r\n                }\r\n            </ng-template>\r\n        </vd-audit>\r\n        <mat-action-row>\r\n            <button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back.emit()\" i18n=\"@@close\">Close</button>\r\n            <span flex></span>\r\n        </mat-action-row>\r\n    </mat-expansion-panel>\r\n</ng-template>","import { CommonModule } from '@angular/common';\r\nimport { HttpEventType } from '@angular/common/http';\r\nimport { ChangeDetectorRef, Component, ContentChild, ContentChildren, Input, QueryList, TemplateRef, Type } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { BaseService, FileService, FormGroupPipe, GenericReactiveFormComponent, VdFileInputComponent, VdGenericFormComponent, VdGenericFormCustomFieldDirective, getEndpoint } from '@messaia/cdk';\r\nimport { EditorModule } from '@tinymce/tinymce-angular';\r\n\r\n@Component({\r\n    selector: 'vd-dynamic-edit-form',\r\n    templateUrl: './dynamic-edit-form.html',\r\n    providers: [BaseService],\r\n    imports: [\r\n        CommonModule,\r\n        ReactiveFormsModule,\r\n        MatFormFieldModule,\r\n        VdGenericFormComponent,\r\n        VdFileInputComponent,\r\n        FormGroupPipe,\r\n        EditorModule\r\n    ]\r\n})\r\nexport class VdDynamicEditFormComponent extends GenericReactiveFormComponent<any, any> {\r\n\r\n    /**\r\n     * classType: Type<any>\r\n     */\r\n    @Input()\r\n    private _classType?: Type<any>;\r\n\r\n    /**\r\n     * classType: Type<any>\r\n     */\r\n    @Input()\r\n    public get classType(): Type<any> | undefined { return this._classType };\r\n    public set classType(classType: Type<any>) {\r\n        if (this._classType != classType) {\r\n            this._classType = classType;\r\n\r\n            /* Get the endpoint from the entity */\r\n            this.service.endpoint = getEndpoint(this._classType);\r\n\r\n            /* Set the class type */\r\n            this.entityCtor = this._classType;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * context: any\r\n     * The current context\r\n     */\r\n    @Input()\r\n    public context?: any;\r\n\r\n    /**\r\n     * Group names\r\n     */\r\n    @Input()\r\n    public groupNames: (string | undefined)[] = [undefined];\r\n\r\n    /**\r\n     * debugValue: boolean\r\n     */\r\n    @Input()\r\n    public debugValue: boolean = false;\r\n\r\n    /**\r\n     * initializer: { [key: string]: any }\r\n     * Initializer values for the form\r\n     */\r\n    @Input()\r\n    public initializer?: { [key: string]: any };\r\n\r\n    /**\r\n     * cssClass: string\r\n     * Additional CSS class for the form\r\n     */\r\n    @Input()\r\n    public ngClass?: any;\r\n\r\n    /**\r\n     * Template ref for custom fields\r\n     */\r\n    @ContentChild('footer')\r\n    public footer?: TemplateRef<any>;\r\n\r\n    /**\r\n     * Template ref for custom fields\r\n     */\r\n    @ContentChild('dynamicCustomFields')\r\n    public dynamicCustomFields?: TemplateRef<any>;\r\n\r\n    /**\r\n     * @property Template references for custom fields.\r\n     * @description The `customFieldsTemplates` holds a collection of `VdGenericFormCustomFieldDirective` templates \r\n     * used for rendering custom fields in the form.\r\n     * @type {QueryList<VdGenericFormCustomFieldDirective>}\r\n     */\r\n    @ContentChildren(VdGenericFormCustomFieldDirective)\r\n    public customFieldsTemplates?: QueryList<VdGenericFormCustomFieldDirective>;\r\n\r\n    /**\r\n     * Constructor\r\n     */\r\n    constructor(\r\n        protected override service: BaseService,\r\n        protected fileService: FileService,\r\n        protected override route: ActivatedRoute,\r\n        protected override changeDetectorRef: ChangeDetectorRef\r\n    ) {\r\n        super(<any>null, service, route, changeDetectorRef)\r\n        this.buildFieldGroups = true;\r\n    }\r\n\r\n    /**\r\n     * Lifecycle hook that is called after data-bound properties \r\n     * of a directive are initialized.\r\n     */\r\n    override ngOnInit(): void {\r\n        this.buildFields();\r\n        super.ngOnInit();\r\n    }\r\n\r\n    /**\r\n     * Inits the form\r\n     * @override\r\n     */\r\n    protected override init(): void {\r\n        this.addToolbarMenuItems();\r\n    }\r\n\r\n    /**\r\n     * Event emitted when the id is set.\r\n     */\r\n    protected override onAfterSetId(): void {\r\n        if (this.id) {\r\n            this.loadItem();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Loads an item by ID.\r\n     * This method fetches the item if the component is in edit mode and the service endpoint is defined.\r\n     * \r\n     * @param successCallback - A function to be called after the item has been successfully loaded.\r\n     *                          This function will receive the loaded item as an argument.\r\n     * @param errorCallback - A function to be called if an error occurs during loading.\r\n     *                        This function will receive the error as an argument.\r\n     */\r\n    public override loadItem(): void {\r\n        super.loadItem(undefined, (error) => {\r\n            if (error.status == 404) {\r\n                this.isEditMode = false;\r\n                this.item = Object.assign(this.newInstance(this.initializer ?? { id: this.id }), this.item || {}, this.query || {});\r\n                this.buildForm();\r\n            }\r\n        }, { 'Show-Message': 'No' }, false);\r\n    }\r\n\r\n    /**\r\n     * Event emitted before the form has built.\r\n     */\r\n    protected override onBeforeFormBuild(): void {\r\n        super.onBeforeFormBuild();\r\n\r\n        /* Init the group entity, if null */\r\n        this.groupNames\r\n            ?.filter(x => x)\r\n            ?.forEach(x => this.fieldGroups?.filter(y => y.name == x).forEach(y => this.item[y.name] ??= y.instance));\r\n    }\r\n\r\n    /**     \r\n     * Uploads a file and updates the form with the uploaded file's information.\r\n     * @param file The file or list of files to be uploaded.\r\n     * @param filePath The path where the file should be uploaded.\r\n     * @param isPublicFile A boolean indicating whether the file is public.\r\n     */\r\n    public upload(file: File | FileList, filePath: string, isPublicFile: boolean): void {\r\n        this.fileService.upload(file as File, `upload`, { path: filePath, isPublic: isPublicFile }).subscribe(event => {\r\n            if (event.type === HttpEventType.Response) {\r\n                this.form.patchValue({\r\n                    image: event.body.name,\r\n                    imagePath: event.body.relativePath\r\n                });\r\n            }\r\n        });\r\n    }\r\n}","@if (form) {\r\n    <form [formGroup]=\"form!\" [ngClass]=\"ngClass\" novalidate>\r\n        @for (groupName of groupNames; track groupName) {\r\n            <vd-generic-form [formGroup]=\"!groupName?form:form.controls[groupName] | formGroup\"\r\n                             [classType]=\"classType\"\r\n                             [groupName]=\"groupName\"\r\n                             [context]=\"context??this\"\r\n                             [fieldSets]=\"fieldSets\"\r\n                             [debugValue]=\"debugValue\"\r\n                             [readonly]=\"readonly\">\r\n                <!-- #region Custom fields -->\r\n                @if (dynamicCustomFields; as row) {\r\n                    <ng-template #customFields let-row=\"row\">\r\n                        <ng-container [ngTemplateOutlet]=\"dynamicCustomFields\"\r\n                                      [ngTemplateOutletContext]=\"{\r\n                                        row: row, \r\n                                        formGroup: !groupName?form:form.controls[groupName], \r\n                                        fieldGroups: fieldGroups, \r\n                                        groupName: groupName,\r\n                                        debugValue: debugValue, \r\n                                        fieldSets: fieldSets, \r\n                                        context: context, \r\n                                        readonly: readonly\r\n                                    }\">\r\n                        </ng-container>\r\n                    </ng-template>\r\n                }\r\n                <!-- #endregion -->\r\n\r\n                <!-- #region Custom fields -->\r\n                @if (customFieldsTemplates && customFieldsTemplates.length > 0) {\r\n                    <ng-template #customFields let-row=\"row\">\r\n                        @for (customField of customFieldsTemplates; track customField) {\r\n                            @if (row === customField.row) {\r\n                                <ng-container [ngTemplateOutlet]=\"customField.templateRef\"\r\n                                              [ngTemplateOutletContext]=\"{   \r\n                                                    row: row,\r\n                                                    formGroup: !groupName ? form : form.controls[groupName],\r\n                                                    fieldGroups: fieldGroups,\r\n                                                    groupName: groupName,\r\n                                                    debugValue: debugValue,\r\n                                                    fieldSets: fieldSets,\r\n                                                    context: context,\r\n                                                    readonly: readonly\r\n                                              }\">\r\n                                </ng-container>\r\n                            }\r\n                        }\r\n                    </ng-template>\r\n                }\r\n                <!-- #endregion -->\r\n\r\n                <!-- #region Editor -->\r\n                <ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n                    <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin>\r\n                        <mat-label>{{field.header}}</mat-label>\r\n                        <editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl></editor>\r\n                        @if (field.hint) {\r\n                            <mat-hint>{{field.hint}}</mat-hint>\r\n                        }\r\n                        @for (errorMessage of formGroup.controls[field.name]['errorMessages']; track errorMessage) {\r\n                            <mat-error>{{errorMessage}}</mat-error>\r\n                        }\r\n                    </mat-form-field>\r\n                </ng-template>\r\n                <!-- #endregion -->\r\n\r\n                <!-- #region File -->\r\n                <ng-template vd-file let-field=\"field\" let-formGroup=\"formGroup\">\r\n                    <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin>\r\n                        <mat-label>{{field.header}}</mat-label>\r\n                        <div vd-file-input [formControlName]=\"field.name\" (select)=\"upload($event, field.filePath, field.isPublicFile)\" [accept]=\"field.fileExtensions\"></div>\r\n                    </mat-form-field>\r\n                </ng-template>\r\n                <!-- #endregion -->\r\n            </vd-generic-form>\r\n        }\r\n        @if (footer) {\r\n            <ng-template *ngTemplateOutlet=\"footer\" [ngTemplateOutletContext]=\"{item: formValue}\"></ng-template>\r\n        }\r\n        <ng-content select=\"[footer]\"></ng-content>\r\n    </form>\r\n}","import { StepperSelectionEvent } from '@angular/cdk/stepper';\r\n\r\nimport { HttpEventType } from '@angular/common/http';\r\nimport { ChangeDetectorRef, Component, Input } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { BaseService, FileService, FormFieldDefinition, FormFieldGroupDefinition, FormGroupPipe, GenericReactiveFormComponent, getEndpoint, GroupFilterPipe, MatFormFieldEditorDirective, RxReactiveFormsModule, VdEditorDirective, VdFileDirective, VdFileInputComponent, VdGenericFormComponent, VdLayoutCardOverComponent, VdLayoutNavComponent } from '@messaia/cdk';\r\nimport { EditorModule } from '@tinymce/tinymce-angular';\r\nimport { VdAuditComponent } from '../audit/audit';\r\n\r\n@Component({\r\n    selector: 'vd-dynamic-form',\r\n    templateUrl: './dynamic-form.html',\r\n    providers: [BaseService],\r\n    imports: [\r\n        ReactiveFormsModule,\r\n        RxReactiveFormsModule,\r\n        MatExpansionModule,\r\n        MatStepperModule,\r\n        MatFormFieldModule,\r\n        MatButtonModule,\r\n        VdLayoutNavComponent,\r\n        VdLayoutCardOverComponent,\r\n        VdGenericFormComponent,\r\n        VdFileInputComponent,\r\n        VdAuditComponent,\r\n        FormGroupPipe,\r\n        GroupFilterPipe,\r\n        EditorModule,\r\n        VdEditorDirective,\r\n        VdFileDirective,\r\n        MatFormFieldEditorDirective\r\n    ]\r\n})\r\nexport class VdDynamicFormComponent extends GenericReactiveFormComponent<any, any> {\r\n\r\n    /**\r\n     * An instance of the class to create the table for\r\n     */\r\n    public classInstance: any;\r\n\r\n    /**\r\n     * useStepper: boolean\r\n     */\r\n    @Input()\r\n    public useStepper: boolean = true;\r\n\r\n    /**\r\n     * debugValue: boolean\r\n     */\r\n    @Input()\r\n    public debugValue: boolean = false;\r\n\r\n    /**\r\n     * Constructor\r\n     */\r\n    constructor(\r\n        protected override service: BaseService,\r\n        protected fileService: FileService,\r\n        protected override route: ActivatedRoute,\r\n        protected override changeDetectorRef: ChangeDetectorRef\r\n    ) {\r\n        super(<any>null, service, route, changeDetectorRef)\r\n    }\r\n\r\n    /**\r\n     * Lifecycle hook that is called after data-bound properties \r\n     * of a directive are initialized.\r\n     */\r\n    override ngOnInit(): void {\r\n        this.route.data.subscribe((data: any) => {\r\n            this.service.endpoint = data.endpoint;\r\n            this.entityCtor = data.classType;\r\n            this.formValidation = data.formValidation;\r\n\r\n            Object.keys(data).forEach(x => {\r\n                if (this.hasOwnProperty(x)) {\r\n                    (this as any)[x] = data[x];\r\n                }\r\n            });\r\n\r\n            /* Get columns from class */\r\n            if (this.entityCtor) {\r\n                /* Build the form fields */\r\n                this.buildFields();\r\n\r\n                /* Set endpoint from query or table definition or @Api decorator */\r\n                this.service.endpoint ||= data.endpoint || this.formDefinition?.endpoint || getEndpoint(this.entityCtor);\r\n\r\n                /* Exclude columns */\r\n                if (data.excludedFields?.length) {\r\n                    this.fieldGroups?.filter(x => !x.hidden).forEach((x: FormFieldGroupDefinition) => {\r\n                        x.fields = x.fields.filter((y: FormFieldDefinition) => !data.excludedFields?.includes(y.name));\r\n                        x.groups.forEach((y: FormFieldDefinition[], i: number) => {\r\n                            let formField = y.filter((z: FormFieldDefinition) => data.excludedFields?.includes(z.name));\r\n                            if (formField) {\r\n                                y.splice(i);\r\n                            }\r\n                        });\r\n                    });\r\n                }\r\n            }\r\n        });\r\n\r\n        super.ngOnInit();\r\n    }\r\n\r\n    /**\r\n     * Uploads a file or a list of files to the specified path.\r\n     * @param file - The file or file list to be uploaded.\r\n     * @param filePath - The destination path for the uploaded file.\r\n     * @param isPublicFile - Optional flag to indicate if the file should be publicly accessible.\r\n     * @param callback - Optional callback function to handle the response.\r\n     */\r\n    public upload(file: File | FileList, filePath: string, isPublicFile?: boolean, callback?: (response: any) => void): void {\r\n        /* Determine the upload path. If clientId is present, use the provided path; otherwise, prepend 'common/'. */\r\n        const uploadPath = this.formValue?.clientId ? filePath : `common/${filePath}`;\r\n\r\n        /* Initiate the file upload request */\r\n        this.fileService.upload(file as File, `upload`, {\r\n            path: uploadPath,\r\n            isPublic: isPublicFile,\r\n            clientId: this.formValue?.clientId\r\n        }).subscribe(event => {\r\n            /* Check if the upload request has completed */\r\n            if (event.type === HttpEventType.Response) {\r\n                const responseBody = event.body;\r\n\r\n                /* If a callback function is provided, execute it with the response */\r\n                if (callback) {\r\n                    callback(responseBody);\r\n                } else {\r\n                    /* Otherwise, update the form with the uploaded file details */\r\n                    this.form.patchValue({\r\n                        image: responseBody.name,\r\n                        imagePath: responseBody.relativePath\r\n                    });\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Init some navigations\r\n     * @param $event \r\n     */\r\n    protected override onAfterStepChange($event: StepperSelectionEvent): void {\r\n        super.onAfterStepChange($event);\r\n\r\n        /* Check if the group already exists */\r\n        if ($event.selectedStep.state && !this.form.get($event.selectedStep.state)) {\r\n            /* Get the group definition from the field groups using the state of the stepper */\r\n            var group = this.fieldGroups?.filter(x => x.name == $event.selectedStep.state)[0];\r\n            if (group) {\r\n                this.form.setControl($event.selectedStep.state, this.formBuilder.formGroup(group.type!, Reflect.construct(group.type!, [])));\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Event emitted before the form has built.\r\n     */\r\n    protected override onBeforeFormBuild(): void {\r\n        super.onBeforeFormBuild();\r\n\r\n        /* Init groups in edit mode, if not already done */\r\n        if (this.isEditMode && false) {\r\n            this.fieldGroups?.filter(x => x.name && !this.item[x.name]).forEach(x => {\r\n                this.item[x.name] = x.instance;\r\n            });\r\n        }\r\n    }\r\n}","<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" [toolbarTitle]=\"subtitle\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n    @if (form) {\r\n        <form [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n            <vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n                <!-- #region Accordion for edit form -->\r\n                @if (isEditMode || !useStepper) {\r\n                    <mat-accordion [multi]=\"!isEditMode\">\r\n                        @for (group of fieldGroups; track group; let last = $last) {\r\n                            <!-- #region Generic form groups -->\r\n                            @if (!group?.hide || !group?.hide(form.value, form, this)) {\r\n                                <mat-expansion-panel [expanded]=\"!group.name || !isEditMode\" id=\"{{group.name}}\">\r\n                                    <mat-expansion-panel-header>\r\n                                        <mat-panel-title>{{group.header}}</mat-panel-title>\r\n                                    </mat-expansion-panel-header>\r\n                                    <ng-template matExpansionPanelContent>\r\n                                        <vd-generic-form [formGroup]=\"!group.name?form:form.controls[group.name] | formGroup\" [fieldGroups]=\"fieldGroups\" [groupName]=\"group.name\" [fieldSets]=\"fieldSets\" [context]=\"this\" [debugValue]=\"debugValue\" [readonly]=\"readonly\">\r\n                                            <!-- #region Editor -->\r\n                                            <ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n                                                <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin>\r\n                                                    <mat-label>{{field.header}}</mat-label>\r\n                                                    <editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl flex></editor>\r\n                                                    @if (field.hint) {\r\n                                                        <mat-hint>{{field.hint}}</mat-hint>\r\n                                                    }\r\n                                                    @for (errorMessage of formGroup.controls[field.name]['errorMessages']; track errorMessage) {\r\n                                                        <mat-error>{{errorMessage}}</mat-error>\r\n                                                    }\r\n                                                </mat-form-field>\r\n                                            </ng-template>\r\n                                            <!-- #endregion -->\r\n                                            <!-- #region File -->\r\n                                            <ng-template vd-file let-field=\"field\" let-formGroup=\"formGroup\">\r\n                                                <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin>\r\n                                                    <mat-label>{{field.header}}</mat-label>\r\n                                                    <div vd-file-input [formControlName]=\"field.name\" (select)=\"upload($event, field.filePath, field.isPublicFile)\" [accept]=\"field.fileExtensions\"></div>\r\n                                                </mat-form-field>\r\n                                            </ng-template>\r\n                                            <!-- #endregion -->\r\n                                        </vd-generic-form>\r\n                                    </ng-template>\r\n                                    @if (isEditMode || last) {\r\n                                        <mat-action-row>\r\n                                            <button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n                                            @if (!isEditMode) {\r\n                                                <button type=\"button\" mat-button (click)=\"save(SaveAction.SaveAndNew)\" [disabled]=\"isSaving\" i18n=\"@@saveAndNew\">Save & New</button>\r\n                                            }\r\n                                            @if (isEditMode) {\r\n                                                <button type=\"button\" mat-button (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n                                            }\r\n                                            <button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n                                            <span flex></span>\r\n                                        </mat-action-row>\r\n                                    }\r\n                                </mat-expansion-panel>\r\n                            }\r\n                            <!-- #endregion -->\r\n                        }\r\n                        <!-- #region Audit -->\r\n                        @if (isEditMode && item?.createdDate) {\r\n                            <mat-expansion-panel id=\"audit\">\r\n                                <mat-expansion-panel-header>\r\n                                    <mat-panel-title i18n=\"@@audit\">Audit</mat-panel-title>\r\n                                </mat-expansion-panel-header>\r\n                                <ng-template matExpansionPanelContent>\r\n                                    <vd-audit [entity]=\"item\"> </vd-audit>\r\n                                </ng-template>\r\n                                <mat-action-row>\r\n                                    <button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n                                    <span flex></span>\r\n                                </mat-action-row>\r\n                            </mat-expansion-panel>\r\n                        }\r\n                        <!-- #endregion -->\r\n                    </mat-accordion>\r\n                }\r\n                <!-- #endregion -->\r\n                <!-- #region Stepper for add form -->\r\n                @if (!isEditMode && useStepper) {\r\n                    <mat-vertical-stepper #stepper linear>\r\n                        @for (group of fieldGroups | groupFilter:formValue:form:this; track group; let i = $index; let last = $last) {\r\n                            <mat-step [stepControl]=\"(!group.name?form:form.controls[group.name])\" [state]=\"group.name\" [label]=\"group.header??''\" [editable]=\"form.valid\">\r\n                                @if ((!group.name?form:form.controls[group.name]); as formGroup) {\r\n                                    <vd-generic-form [formGroup]=\"formGroup | formGroup\" [fieldGroups]=\"fieldGroups\" [groupName]=\"group.name\" [context]=\"this\" [fieldSets]=\"fieldSets\" [debugValue]=\"debugValue\" [readonly]=\"readonly\">\r\n                                        <!-- #region Editor -->\r\n                                        <ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n                                            <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin>\r\n                                                <mat-label>{{field.header}}</mat-label>\r\n                                                <editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl flex></editor>\r\n                                                @if (field.hint) {\r\n                                                    <mat-hint>{{field.hint}}</mat-hint>\r\n                                                }\r\n                                                @for (errorMessage of formGroup.controls[field.name]['errorMessages']; track errorMessage) {\r\n                                                    <mat-error>{{errorMessage}}</mat-error>\r\n                                                }\r\n                                            </mat-form-field>\r\n                                        </ng-template>\r\n                                        <!-- #endregion -->\r\n                                        <!-- #region File -->\r\n                                        <ng-template vd-file let-field=\"field\" let-formGroup=\"formGroup\">\r\n                                            <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin>\r\n                                                <mat-label>{{field.header}}</mat-label>\r\n                                                <div vd-file-input [formControlName]=\"field.name\" (select)=\"upload($event, field.filePath, field.isPublicFile)\" [accept]=\"field.fileExtensions\"></div>\r\n                                            </mat-form-field>\r\n                                        </ng-template>\r\n                                        <!-- #endregion -->\r\n                                    </vd-generic-form>\r\n                                }\r\n                                <div layout-margin class=\"pad-top\">\r\n                                    @if (!last) {\r\n                                        <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"validateForm()\" matStepperNext i18n=\"@@next\">Next</button>\r\n                                    }\r\n                                    @if (last) {\r\n                                        <button type=\"submit\" mat-flat-button color=\"primary\" i18n=\"@@save\">Save</button>\r\n                                    }\r\n                                    <button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n                                </div>\r\n                            </mat-step>\r\n                        }\r\n                    </mat-vertical-stepper>\r\n                }\r\n                <!-- #endregion -->\r\n            </vd-layout-card-over>\r\n        </form>\r\n    }\r\n</vd-layout-nav>","export const DynamicListTemplate = /* html */ `\r\n    <vd-layout-nav [toolbarTitle]=\"projectName\">\r\n        <vd-layout-manage-list [title]=\"title\" [menuItems]=\"menu?.items\" #layoutManageList>\r\n            <!-- #region Details toolbar -->\r\n            <vd-list-toolbar [subtitle]=\"subtitle\" [mini]=\"layoutManageList.mini\" [backButton]=\"backButton\" (back)=\"navigateToReturnUrl()\" [actions]=\"toolbarActions\"></vd-list-toolbar>\r\n            <!-- #endregion -->\r\n\r\n            <!-- #region Content -->\r\n            <mat-card class=\"main-table-wrapper\" card-margin>\r\n                <vd-dynamic-table [dataSource]=\"dataSource\" [columns]=\"columns\" [context]=\"this\" [sticky]=\"sticky\" (rowClick)=\"rowClick?rowClick($event, this):(editable?edit($event, this):null)\" [rowNgClass]=\"rowNgClass\" [detailsTemplate]=\"detailsTemplate\" matSort [sortActive]=\"sortActive||'id'\" [sortDirection]=\"sortDirection\"></vd-dynamic-table>\r\n            </mat-card>\r\n            <!-- #endregion -->\r\n\r\n            <!-- #region Footer -->\r\n            <vd-layout-footer-inner class=\"pagination\">\r\n                <mat-paginator #paginator [length]=\"dataSource.total\" [pageIndex]=\"dataSource.pageIndex\" [pageSize]=\"dataSource.pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\"></mat-paginator>\r\n                @if(addable && canCreate)\r\n                {\r\n                    <a mat-fab color=\"accent\" class=\"mat-fab-bottom-left\" (click)=\"add()\">\r\n                        <mat-icon fontSet=\"material-symbols-outlined\">add</mat-icon>\r\n                    </a>\r\n                }\r\n            </vd-layout-footer-inner>\r\n            <!-- #endregion -->\r\n        </vd-layout-manage-list>\r\n    </vd-layout-nav>`;","\r\nimport { ChangeDetectorRef, Component } from '@angular/core';\r\nimport { MatButtonModule, MatFabButton } from '@angular/material/button';\r\nimport { MatCard } from '@angular/material/card';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { BaseService, GenericListComponent, VdDynamicTableComponent, VdLayoutFooterComponent, VdLayoutManageListComponent, VdLayoutNavComponent, VdListToolbarComponent } from '@messaia/cdk';\r\nimport { DynamicListTemplate } from '../../templates/dynamic-list.template';\r\n\r\n@Component({\r\n    selector: 'vd-dynamic-list',\r\n    template: DynamicListTemplate,\r\n    providers: [BaseService],\r\n    imports: [\r\n        MatCard,\r\n        MatIcon,\r\n        MatButtonModule,\r\n        MatFabButton,\r\n        MatPaginator,\r\n        VdDynamicTableComponent,\r\n        VdLayoutFooterComponent,\r\n        VdLayoutManageListComponent,\r\n        VdLayoutNavComponent,\r\n        VdListToolbarComponent\r\n    ]\r\n})\r\nexport class VdDynamicListComponent extends GenericListComponent<any, any> {\r\n\r\n    /**\r\n     * @property exportable\r\n     * @description Determines if the table is exportable.\r\n     * @type {boolean}\r\n     */\r\n    public override exportable: boolean = true;\r\n\r\n    /**\r\n     * Constructor\r\n     */\r\n    constructor(\r\n        public override service: BaseService,\r\n        protected override dialog: MatDialog,\r\n        protected override route: ActivatedRoute,\r\n        protected override changeDetectorRef: ChangeDetectorRef\r\n    ) {\r\n        super(service, route, changeDetectorRef)\r\n    }\r\n\r\n    /**\r\n     * Navigates to the add page.\r\n     */\r\n    public override add(): void {\r\n        if (this.addDialogType) {\r\n            this.openDialog(this.addDialogType, { data: this.classInstance }, () => this.loadList());\r\n        } else {\r\n            super.add();\r\n        }\r\n    }\r\n}","import { prop } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class ExportColumn\r\n * @description Represents an individual column configuration for an export operation.\r\n * This class defines the attributes of a column, such as its name, display title, \r\n * whether it's selected, editable, and its ordering position.\r\n */\r\nexport class EntityExportColumn {\r\n    /**\r\n     * @property The internal name of the column.\r\n     * @description This name is used to identify the column within the export logic.\r\n     *              It typically corresponds to a database field or an API field name.\r\n     * @type {string | undefined}\r\n     */\r\n    @prop()\r\n    public name?: string;\r\n\r\n    /**\r\n     * @property The display title of the column.\r\n     * @description This title is used for display purposes, such as in a UI or a report, \r\n     *              making the column understandable for end-users.\r\n     * @type {string | undefined}\r\n     */\r\n    @prop()\r\n    public title?: string;\r\n\r\n    /**\r\n     * @property Indicates if the column is selected for export.\r\n     * @description This boolean flag determines whether the column will be included \r\n     *              in the exported dataset.\r\n     * @type {boolean | undefined}\r\n     */\r\n    @prop()\r\n    public selected?: boolean;\r\n\r\n    /**\r\n     * @property Indicates if the column is editable.\r\n     * @description This boolean flag specifies if the column can be modified or edited \r\n     *              in the context where it's used, such as in a UI form.\r\n     * @type {boolean | undefined}\r\n     */\r\n    @prop()\r\n    public editable?: boolean;\r\n\r\n    /**\r\n     * @property The ordering index of the column.\r\n     * @description This number determines the position of the column in the export output. \r\n     *              Lower numbers are displayed first.\r\n     * @type {number | undefined}\r\n     */\r\n    @prop()\r\n    public ordering?: number;\r\n\r\n    /**\r\n     * Constructor to initialize the `ExportColumn` class.\r\n     * @param init - An optional object containing properties to initialize the class instance.\r\n     *               This allows partial initialization of the object using a subset of the class's properties.\r\n     */\r\n    public constructor(init?: Partial<EntityExportColumn>) {\r\n        Object.assign(this, init);\r\n    }\r\n}","import { Display, FormField, IEntity, notEmpty, prop, propArray, required } from '@messaia/cdk';\r\nimport { EntityExportColumn } from './entity-export-column';\r\n\r\n/**\r\n * @class EntityExport\r\n * @description Represents the class for exporting data.\r\n * This class defines the core properties and configurations required for an export operation. \r\n * It is generic to allow flexible options depending on the specific export requirements.\r\n */\r\nexport class EntityExport implements IEntity {\r\n    /**\r\n     * @property id\r\n     * @description Optional unique identifier for the entity.\r\n     * @type {number}\r\n     */\r\n    public id?: number;\r\n\r\n    /**\r\n     * @property Name of the file for export.\r\n     * @description The name used for the exported file.\r\n     * @type {string | undefined}\r\n     */\r\n    @required()\r\n    @FormField<EntityExport>({ row: 20, focus: true })\r\n    @Display($localize`:@@fileName:File name`)\r\n    public fileName?: string;\r\n\r\n    /**\r\n     * @property Character used to separate values.\r\n     * @description The delimiter used in the exported file.\r\n     * @type {string}\r\n     */\r\n    @required()\r\n    @FormField<EntityExport>({ row: 30 })\r\n    @Display($localize`:@@delimiter:Delimiter`)\r\n    public delimiter: string = ';';\r\n\r\n    /**\r\n     * @property File extension for the export.\r\n     * @description The file format (e.g., 'csv', 'txt') for the export.\r\n     * @type {string}\r\n     */\r\n    @required()\r\n    @FormField<EntityExport>({\r\n        row: 30,\r\n        options: () => [{ id: 'csv', name: 'csv' }, { id: 'txt', name: 'txt' }]\r\n    })\r\n    @Display($localize`:@@extension:Extension`)\r\n    public extension: string = 'csv';\r\n\r\n    /**\r\n     * @property Character encoding for the export file.\r\n     * @description Specifies the encoding used for the export file (e.g., 'UTF-8').\r\n     * @type {string}\r\n     */\r\n    @required()\r\n    @FormField<EntityExport>({\r\n        row: 30,\r\n        fieldSets: ['details'],\r\n        options: () => [{ id: 'Windows-1252', name: 'Windows-1252' }, { id: 'UTF-8', name: 'UTF-8' }],\r\n    })\r\n    @Display($localize`:@@encoding:Encoding`)\r\n    public encoding: string = 'Windows-1252';\r\n\r\n    /**\r\n     * @property File path for the export.\r\n     * @description Location where the export file is saved.\r\n     * @type {string | undefined}\r\n     */\r\n    @prop()\r\n    public projection?: string;\r\n\r\n    /**\r\n     * @property Flag to enable pagination.\r\n     * @description Indicates whether pagination is enabled for the export.\r\n     * @type {boolean | undefined}\r\n     */\r\n    @prop()\r\n    @FormField({ row: 100 })\r\n    @Display($localize`:@@currentPage:Current page`)\r\n    public paginable?: boolean;\r\n\r\n    /**\r\n     * @property Page number for pagination.\r\n     * @description Defines the current page number for the export.\r\n     * @type {number | undefined}\r\n     */\r\n    @prop()\r\n    public page?: number;\r\n\r\n    /**\r\n     * @property Page size for pagination.\r\n     * @description Defines the number of items per page for the export.\r\n     * @type {number | undefined}\r\n     */\r\n    @prop()\r\n    public pageSize?: number;\r\n\r\n    /**\r\n     * @property Sort order for the export.\r\n     * @description Defines the sort order for the exported dataset.\r\n     * @type {string | undefined}\r\n     */\r\n    @prop()\r\n    public sortBy?: string;\r\n\r\n    /**\r\n     * @property Sort order for the export.\r\n     * @description Defines the sort order for the exported dataset.\r\n     * @type {'asc' | 'desc' | undefined}\r\n     */\r\n    @prop()\r\n    public sortOrder?: 'asc' | 'desc';\r\n\r\n    /**\r\n     * @property Columns to be included in the export.\r\n     * @description Defines the columns to be exported.\r\n     * @type {ExportColumn[]}\r\n     */\r\n    @notEmpty()\r\n    @propArray(EntityExportColumn)\r\n    public columns: EntityExportColumn[] = [];\r\n\r\n    /**\r\n     * @property Filters to be applied to the export.\r\n     * @description Defines the filters to be applied to the exported dataset.\r\n     * @type {Dictionary<string, object>}\r\n     */\r\n    @prop()\r\n    public filters: { [key: string]: any } = {};\r\n\r\n    /**\r\n     * Constructor to initialize the `ExportBase` class.\r\n     * @param init - An optional object containing properties to initialize the class instance.\r\n     *               This parameter allows partial initialization of the object using a subset \r\n     *               of the class's properties. The provided values will be assigned to the \r\n     *               respective properties of the instance.\r\n     */\r\n    public constructor(init?: Partial<EntityExport>) {\r\n        Object.assign(this, init);\r\n    }\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { catchError, map, Observable } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class EntityExportService extends GenericService<any> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('');\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an entity\r\n\t *\r\n\t * @param entity The entity to create\r\n\t * @param path A relative path to the action (optional)\r\n\t * @param httpOptions Additional HTTP options, like headers and so on (optional)\r\n\t * @param handleError Flag to handle errors (optional)\r\n\t * @returns An observable with the response containing data and filename\r\n\t */\r\n\tpublic override create(entity: any, _?: string, __?: Object, ___?: boolean): Observable<any> {\r\n\t\treturn this.http.post(`${this.endpoint}/export`, entity, { responseType: 'arraybuffer', observe: \"response\" })\r\n\t\t\t.pipe(map(x => { return { data: x.body, filename: this.getFileNameFromHeaders(x.headers) } }))\r\n\t\t\t.pipe(catchError(this.handleError('create')));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets available columns to export\r\n\t *\r\n\t * @param exportType The type of export to fetch available columns for\r\n\t * @returns An observable with the available columns\r\n\t */\r\n\tpublic getAvailableColumns(exportType?: any): Observable<any> {\r\n\t\treturn this.get('exportColumns', { exportType: exportType });\r\n\t}\r\n}","import { CdkDragDrop, CdkDropList, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\n\r\nimport { ChangeDetectorRef, Component, Inject, ViewChild } from '@angular/core';\r\nimport { AbstractControl, FormArray, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCard } from '@angular/material/card';\r\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { FormGroupPipe, GenericReactiveFormComponent, RxReactiveFormsModule, SaveAction, VdGenericFormComponent } from '@messaia/cdk';\r\nimport { saveAs } from 'file-saver';\r\nimport { EntityExport } from '../../models/entity-export';\r\nimport { EntityExportColumn } from '../../models/entity-export-column';\r\nimport { EntityExportService } from '../../services/entity-export';\r\n\r\n\r\n@Component({\r\n    selector: 'app-export-dialog-form',\r\n    templateUrl: './export-dialog.html',\r\n    styleUrls: ['./export-dialog.scss'],\r\n    providers: [ScrollingModule],\r\n    imports: [\r\n    ReactiveFormsModule,\r\n    RxReactiveFormsModule,\r\n    MatCard,\r\n    MatDialogModule,\r\n    MatFormFieldModule,\r\n    MatInputModule,\r\n    MatIcon,\r\n    MatButtonModule,\r\n    MatToolbarModule,\r\n    DragDropModule,\r\n    FormGroupPipe,\r\n    VdGenericFormComponent\r\n]\r\n})\r\nexport class VdExportDialogComponent extends GenericReactiveFormComponent<EntityExport, EntityExportService> {\r\n\r\n    /**\r\n     * Reference to the drop list for available columns (columns not yet selected).\r\n     * This is used to enable drag-and-drop functionality for these columns.\r\n     */\r\n    @ViewChild('availableColumnList')\r\n    public availableColumnDropList?: CdkDropList;\r\n\r\n    /**\r\n     * Reference to the drop list for selected columns.\r\n     * This allows users to manage and reorder the selected columns.\r\n     */\r\n    @ViewChild('columnList')\r\n    public columnDropList?: CdkDropList;\r\n\r\n    /**\r\n     * A FormArray holding columns that are available for selection.\r\n     * These columns are not currently included in the export but can be dragged in.\r\n     */\r\n    public availableColumns: FormArray = new FormArray(<any>[]);\r\n\r\n    /**\r\n     * A FormArray containing columns that have been selected for export.\r\n     * Accessed through the form's 'columns' control.\r\n     */\r\n    public get selectedColumns(): FormArray { return (this.form?.controls[\"columns\"] as FormArray) };\r\n\r\n    /**\r\n     * A flag to track the current sort order of the selected columns.\r\n     * If true, columns are sorted in ascending order; if false, descending.\r\n     */\r\n    private selectedColumnsAzSorted: boolean = false;\r\n\r\n    /**\r\n     * Constructor to initialize the form component with required services.\r\n     *\r\n     * @param service Injects ExportService to handle CRUD operations for Export.\r\n     * @param route Injects ActivatedRoute to access route parameters and data.\r\n     * @param changeDetectorRef Injects ChangeDetectorRef to manage change detection manually.\r\n     */\r\n    constructor(\r\n        protected override service: EntityExportService,\r\n        protected override route: ActivatedRoute,\r\n        protected override changeDetectorRef: ChangeDetectorRef,\r\n        public dialogRef: MatDialogRef<VdExportDialogComponent>,\r\n        @Inject(MAT_DIALOG_DATA) public data: { endpoint: string, formData: any },\r\n    ) {\r\n        super(EntityExport, service, route, changeDetectorRef);\r\n        this.service.endpoint = data.endpoint;\r\n        this.item = data.formData;\r\n    }\r\n\r\n    /**\r\n     * Lifecycle hook that is called after data-bound properties of a directive are initialized.\r\n     */\r\n    public override ngOnInit(): void {\r\n        super.ngOnInit();\r\n\r\n        /* Load available columns for export */\r\n        this.loadAvailableColumns();\r\n    }\r\n\r\n    /**\r\n     * Loads available columns from the server and initializes them.\r\n     * This function fetches columns not yet included in the export,\r\n     * sorts them by title, and updates the available columns list.\r\n     */\r\n    public loadAvailableColumns(): void {\r\n        /* Clear any previously selected or available columns */\r\n        this.clearColumns();\r\n\r\n        this.service.getAvailableColumns().subscribe((columns: EntityExportColumn[]) => {\r\n            /* Separate selected and available columns */\r\n            columns?.forEach(column => {\r\n                /* Add to selected columns if marked as selected */\r\n                if (column.selected) {\r\n                    this.selectedColumns.push(this.createFromGroup(column));\r\n                }\r\n                /* Otherwise, add to available columns */\r\n                else {\r\n                    this.availableColumns.push(this.createFromGroup(column));\r\n                }\r\n            });\r\n\r\n            /* Sort the available columns alphabetically by title */\r\n            this.sortColumns(this.availableColumns);\r\n            this.availableColumns.valueChanges?.subscribe(x => this.sortColumns(this.availableColumns));\r\n\r\n            /* Update the selected columns form controls */\r\n            this.selectedColumns.updateValueAndValidity();\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Handles the drag-and-drop event for columns.\r\n     * @param event - The drag-and-drop event data.\r\n     */\r\n    public drop(event: CdkDragDrop<any>) {\r\n        try {\r\n            if (event.previousContainer === event.container) {\r\n                /* If the item is moved within the same container, reorder the items */\r\n                moveItemInArray(event.container.data.controls, event.previousIndex, event.currentIndex);\r\n\r\n                /* Update the ordering property of each item */\r\n                event.container.data.controls.forEach((x: FormGroup, i: number) => x.setValue(Object.assign(x.value, { ordering: i + 1 })));\r\n            } else {\r\n                /* If the item is moved to a different container, handle insertion and removal */\r\n                let column = event.previousContainer.data.controls[event.previousIndex].value;\r\n\r\n                /* Cast both lists to FormArray */\r\n                let sourceArray = (event.previousContainer.data as FormArray);\r\n                let targetArray = (event.container.data as FormArray);\r\n\r\n                /* Insert the item into the target list */\r\n                targetArray.insert(event.currentIndex, this.createFromGroup(column));\r\n\r\n                /* Remove the item from the source list */\r\n                sourceArray.removeAt(event.previousIndex);\r\n\r\n                /* Update the ordering for selected columns */\r\n                this.selectedColumns.controls.forEach((x: AbstractControl, i: number) => x.setValue(Object.assign(x.value, { ordering: i + 1 })));\r\n            }\r\n        } catch (error) { }\r\n\r\n        /* Mark the selected columns as dirty and update their validity */\r\n        this.selectedColumns.markAsDirty();\r\n        this.selectedColumns.updateValueAndValidity();\r\n    }\r\n\r\n    /**\r\n     * Removes a column from the selected columns based on its index.\r\n     * The column is moved back to the list of available columns.\r\n     * @param index - Index of the column to remove.\r\n     */\r\n    public removeColumn(index: number): void {\r\n        this.drop(<CdkDragDrop<any>>{\r\n            previousContainer: this.columnDropList,\r\n            previousIndex: index,\r\n            container: this.availableColumnDropList,\r\n            currentIndex: this.availableColumns?.value?.length || 0,\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Adds a column to the selected columns list.\r\n     * This method moves a column from the available columns to the selected columns.\r\n     * @param index The index of the column in the available columns list.\r\n     * @param column The column control to be added to the selected columns list.\r\n     */\r\n    public addColumn(index: number, column: AbstractControl): void {\r\n        /* Insert the item into the target list */\r\n        this.selectedColumns.push(column);\r\n\r\n        /* Remove the item from the source list */\r\n        this.availableColumns.removeAt(index);\r\n    }\r\n\r\n    /**\r\n     * Selects and adds all available columns to the export.\r\n     * This function retrieves columns from the server and includes them in the selected columns list.\r\n     */\r\n    public selectAllColumns(): void {\r\n        /* Clear both selected and available columns */\r\n        this.selectedColumns.clear();\r\n        this.availableColumns.clear();\r\n\r\n        this.service.getAvailableColumns().subscribe((columns: EntityExportColumn[]) => {\r\n            /* Add each fetched column to the selected list */\r\n            columns?.forEach(column => this.selectedColumns.push(this.createFromGroup(column)));\r\n\r\n            /* Update the columns form controls */\r\n            this.selectedColumns.updateValueAndValidity();\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Clears the currently selected columns, making them available for selection again.\r\n     * Fetches the column list from the server and populates the available columns.\r\n     */\r\n    public clearSelectedColumns(): void {\r\n        /* Clear both selected and available columns */\r\n        this.clearColumns();\r\n\r\n        this.service.getAvailableColumns().subscribe((columns: EntityExportColumn[]) => {\r\n            /* Add each fetched column to the available list */\r\n            columns?.forEach(column => this.availableColumns.push(this.createFromGroup(column)));\r\n\r\n            /* Update the columns form controls */\r\n            this.selectedColumns.updateValueAndValidity();\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Resets the selected columns to their initial state.\r\n     * Reloads the available and selected columns from the server.\r\n     */\r\n    public resetSelectedColumns(): void {\r\n        /* Move currently selected columns back to the available list */\r\n        this.form?.value?.columns.forEach((column: EntityExportColumn) => {\r\n            this.availableColumns.push(this.createFromGroup(column));\r\n        });\r\n\r\n        /* Clear the selected columns list */\r\n        this.selectedColumns.clear();\r\n\r\n        /* Reload the columns from the server */\r\n        this.loadAvailableColumns();\r\n    }\r\n\r\n    /**\r\n     * Toggles the alphabetical sort order of selected columns by title.\r\n     * Sorts the columns in ascending or descending order based on the current state.\r\n     */\r\n    public sortSelectedColumns(): void {\r\n        this.sortColumns(this.selectedColumns, 'title', this.selectedColumnsAzSorted);\r\n        this.selectedColumnsAzSorted = !this.selectedColumnsAzSorted;\r\n\r\n        /* Update the ordering property for sorted columns */\r\n        this.selectedColumns?.controls?.forEach((x: AbstractControl, i: number) => x.setValue(Object.assign(x.value, { ordering: i + 1 })));\r\n\r\n        /* Mark the selected columns as dirty and update their validity */\r\n        this.selectedColumns.markAsDirty();\r\n        this.selectedColumns.updateValueAndValidity();\r\n    }\r\n\r\n    /**\r\n     * Creates a form group for a column object.\r\n     * This is used to manage the form structure dynamically based on column data.\r\n     * @param column - The column data to create a form group for.\r\n     */\r\n    protected createFromGroup(column: EntityExportColumn) {\r\n        return this.formBuilder.formGroup(EntityExportColumn, column);\r\n    }\r\n\r\n    /**\r\n     * Clears any previously selected or available columns.\r\n     * This method resets both the selected and available columns lists.\r\n     */\r\n    public clearColumns(): void {\r\n        this.selectedColumns.clear();\r\n        this.availableColumns.clear();\r\n    }\r\n\r\n    /**\r\n     * Sorts columns alphabetically or in reverse order based on the specified criteria.\r\n     * @param columns - The array of columns to sort.\r\n     * @param sortBy - The property to sort by (default is 'title').\r\n     * @param reverse - Whether to reverse the sort order (default is false).\r\n     */\r\n    protected sortColumns(columns: FormArray, sortBy: string = 'title', reverse: boolean = false): void {\r\n        columns?.controls?.sort((a, b) => {\r\n            const column1 = a.value[sortBy].toString().toUpperCase();\r\n            const column2 = b.value[sortBy].toString().toUpperCase();\r\n\r\n            if (column1 > column2) { return reverse ? -1 : 1; }\r\n            else if (column1 < column2) { return reverse ? 1 : -1; }\r\n            return 0;\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Callback after form submission, handling the response based on the chosen action.\r\n     * \r\n     * @param action - The action to be performed after saving (e.g., SaveAndClose)\r\n     * @param response - The server response data, if any\r\n     */\r\n    protected override onAfterSubmit(action: SaveAction = SaveAction.SaveAndClose, response: any = null): void {\r\n        this.isSaving = false;\r\n        saveAs(new Blob([response.data], { type: 'text/csv' }), response.filename);\r\n    }\r\n}","<!-- Title bar with close button -->\r\n<div cdkDrag cdkDragRootElement=\".cdk-overlay-pane\" class=\"pad-right-sm push-none\" layout=\"row\" layout-align=\"space-between center\" cdkDragHandle>\r\n    <!-- Dialog title -->\r\n    <span mat-dialog-title class=\"mat-mdc-dialog-title pad-left-sm push-left-sm\" i18n=\"@@exportData\" flex>Export data</span>\r\n\r\n    <!-- Close button -->\r\n    <button mat-icon-button (click)=\"dialogRef.close()\">\r\n        <mat-icon>close</mat-icon>\r\n    </button>\r\n    <!-- </div> -->\r\n</div>\r\n\r\n@if (form) {\r\n    <div class=\"pad-xs flex\" layout=\"column\">\r\n        <div class=\"pad-bottom-sm\">\r\n            <vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\"></vd-generic-form>\r\n        </div>\r\n    </div>\r\n    <!-- #region Columns selection -->\r\n    <div layout-gt-sm=\"row\" class=\"column-container\" flex>\r\n        <!-- #region Available columns -->\r\n        <mat-card class=\"push-bottom-sm\" flex>\r\n            <mat-toolbar color=\"accent\" dense>\r\n                <span i18n=\"@@columnsAvailable\">Columns available</span>\r\n                <span flex></span>\r\n                <button type=\"button\" matSuffix mat-icon-button aria-label=\"Sort\" (click)=\"selectAllColumns()\">\r\n                    <mat-icon>read_more</mat-icon>\r\n                </button>\r\n            </mat-toolbar>\r\n            <div cdkDropList #availableColumnList=\"cdkDropList\" [cdkDropListData]=\"availableColumns\" [cdkDropListConnectedTo]=\"[columnList]\" class=\"column-list scrollbar-secondary\" (cdkDropListDropped)=\"drop($event)\">\r\n                @if (availableColumns) {\r\n                    <div layout=\"column\">\r\n                        @for (column of availableColumns.controls; track column; let i = $index) {\r\n                            <div class=\"column-box\" [formGroup]=\"column | formGroup\" cdkDrag flex>\r\n                                <mat-form-field flex appearance=\"outline\" subscriptSizing=\"dynamic\" dense-2>\r\n                                    <input matInput formControlName=\"title\" [readonly]=\"true\" flex>\r\n                                    <a type=\"button\" matSuffix mat-icon-button aria-label=\"Remove\" (click)=\"addColumn(i, column)\">\r\n                                        <mat-icon>tab_new_right</mat-icon>\r\n                                    </a>\r\n                                    <a matSuffix mat-icon-button aria-label=\"Move\" cdkDragHandle>\r\n                                        <mat-icon>open_with</mat-icon>\r\n                                    </a>\r\n                                </mat-form-field>\r\n                            </div>\r\n                        }\r\n                    </div>\r\n                }\r\n            </div>\r\n        </mat-card>\r\n        <!-- #endregion -->\r\n        <!-- #region Columns to export -->\r\n        <mat-card class=\"push-bottom-sm\" flex>\r\n            <mat-toolbar color=\"accent\" dense>\r\n                <span i18n=\"@@columnsToExport\">Columns to export</span>\r\n                <span flex></span>\r\n                <button type=\"button\" matSuffix mat-icon-button aria-label=\"Sort\" (click)=\"sortSelectedColumns()\">\r\n                    <mat-icon>sort_by_alpha</mat-icon>\r\n                </button>\r\n                <button type=\"button\" matSuffix mat-icon-button aria-label=\"Sort\" (click)=\"clearSelectedColumns()\">\r\n                    <mat-icon>backspace</mat-icon>\r\n                </button>\r\n                <button type=\"button\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"resetSelectedColumns()\">\r\n                    <mat-icon>replay</mat-icon>\r\n                </button>\r\n            </mat-toolbar>\r\n            <div cdkDropList #columnList=\"cdkDropList\" [cdkDropListData]=\"form.controls['columns']\" [cdkDropListConnectedTo]=\"[availableColumnList]\" class=\"column-list scrollbar-secondary\" (cdkDropListDropped)=\"drop($event)\">\r\n                @if (form.controls && form.controls!['columns']) {\r\n                    <div layout=\"column\">\r\n                        @for (column of $any(form.controls['columns']).controls; track column; let i = $index) {\r\n                            <div class=\"column-box\" [formGroup]=\"column\" cdkDrag flex>\r\n                                <mat-form-field flex appearance=\"outline\" subscriptSizing=\"dynamic\" dense-2>\r\n                                    <input matInput formControlName=\"title\" flex>\r\n                                    <a type=\"button\" matSuffix mat-icon-button aria-label=\"Remove\" (click)=\"removeColumn(i)\">\r\n                                        <mat-icon>delete_forever</mat-icon>\r\n                                    </a>\r\n                                    <a type=\"button\" matSuffix mat-icon-button aria-label=\"Move\" cdkDragHandle>\r\n                                        <mat-icon>open_with</mat-icon>\r\n                                    </a>\r\n                                </mat-form-field>\r\n                            </div>\r\n                        }\r\n                    </div>\r\n                }\r\n            </div>\r\n        </mat-card>\r\n        <!-- #endregion -->\r\n    </div>\r\n    <!-- #endregion-->\r\n}\r\n\r\n<mat-dialog-actions>\r\n    <button mat-button (click)=\"dialogRef.close()\" i18n=\"@@close\">Close</button>\r\n    <button mat-flat-button color=\"primary\" (click)=\"save()\" [disabled]=\"!formValue?.columns?.length\" i18n=\"@@export\">Export</button>\r\n</mat-dialog-actions>","export const Common = {\r\n    countries: [\r\n        { id: 'DE', name: $localize`:@@de:DE` }\r\n    ]\r\n}","export enum DocumentType {\r\n    Document,\r\n    Activity,\r\n    Issue,\r\n    Email\r\n}","import { Column, Common, Display, FormField, FormFieldType, Grid, IEntity, prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * Represents the base address entity, implementing the IEntity interface.\r\n * This class includes common address fields such as address lines, postal code, city, state, country, and notice.\r\n * It is used as a foundational class for other address-related entities.\r\n */\r\nexport class AddressBase implements IEntity {\r\n    /**\r\n     * @property id\r\n     * @description Unique identifier for the address entity.\r\n     * This field is optional and typically generated by the database.\r\n     * @type {number}\r\n     */\r\n    @prop()\r\n    public id?: number;\r\n\r\n    /**\r\n     * @property address1\r\n     * @description The first line of the address (e.g., street name, house number).\r\n     * This field is required.\r\n     * @type {string}\r\n     */\r\n    @required()\r\n    @Column({ index: 1 })\r\n    @FormField({ row: 10, flex: 75 })\r\n    @Display($localize`:@@address1:Address 1`)\r\n    public address1?: string;\r\n\r\n    /**\r\n     * @property address2\r\n     * @description The second line of the address (e.g., apartment number, additional address information).\r\n     * This field is required.\r\n     * @type {string}\r\n     */\r\n    @required()\r\n    @Column({ index: 2, width: 100 })\r\n    @FormField({ row: 10, flex: 25 })\r\n    @Display($localize`:@@address2:Address 2`)\r\n    public address2?: string;\r\n\r\n    /**\r\n     * @property address3\r\n     * @description The third line of the address (e.g., building name, additional info).\r\n     * This field is optional.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    @FormField({ row: 11, flex: 75 })\r\n    @Display($localize`:@@address3:Address 3`)\r\n    public address3?: string;\r\n\r\n    /**\r\n     * @property postalCode\r\n     * @description The postal code for the address.\r\n     * This field is required and includes a postal code validation pattern based on the country.\r\n     * @type {string}\r\n     */\r\n    @required()\r\n    @Column({ index: 3, width: 110 })\r\n    @FormField<AddressBase>({\r\n        row: 12,\r\n        flex: 25,\r\n        pattern: (x) => Common.postalCodePattern(x.country)\r\n    })\r\n    @Display($localize`:@@postalCode:Postal code`)\r\n    public postalCode?: string;\r\n\r\n    /**\r\n     * @property city\r\n     * @description The city associated with the address.\r\n     * This field is required.\r\n     * @type {string}\r\n     */\r\n    @required()\r\n    @Column({ index: 4, width: 160, display: Grid.Md })\r\n    @FormField({ row: 12, flex: 75 })\r\n    @Display($localize`:@@city:City`)\r\n    public city?: string;\r\n\r\n    /**\r\n     * @property state\r\n     * @description The state or region associated with the address.\r\n     * This field is optional.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    public state?: string;\r\n\r\n    /**\r\n     * @property country\r\n     * @description The country of the address, with a default value set to 'DE' (Germany).\r\n     * The country is selectable via an endpoint with additional properties like code, flag, and name for display.\r\n     * @type {string}\r\n     */\r\n    @required()\r\n    @FormField<AddressBase>({\r\n        row: 13,\r\n        endpoint: 'country',\r\n        optionValueProperty: 'code',\r\n        optionSvgIconProperty: 'flag',\r\n        optionTemplate: (x) => `${x?.name} (${x?.code})`,\r\n        params: (x) => { return { enabled: true, projection: ['code', 'flag', 'name'] } },\r\n    })\r\n    @Display($localize`:@@country:Country`)\r\n    public country: string = 'DE';\r\n\r\n    /**\r\n     * @property notice\r\n     * @description An optional notice field for additional information related to the address.\r\n     * This field is of type TextArea for multi-line input.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    @FormField({ row: 100, type: FormFieldType.TextArea })\r\n    @Display($localize`:@@notice:Notice`)\r\n    public notice?: string;\r\n\r\n    /**\r\n     * Constructor to initialize an AddressBase instance.\r\n     * @param init Optional object to initialize properties of the AddressBase class.\r\n     */\r\n    public constructor(init?: Partial<AddressBase>) {\r\n        Object.assign(this, init);\r\n    }\r\n}","import { Display, FormField, prop, required, Salutation } from \"@messaia/cdk\";\r\nimport { AddressBase } from \"./address-base\";\r\n\r\n/**\r\n * Represents an address entity, extending from AddressBase.\r\n * This class includes fields like salutation, title, first name, and last name,\r\n * with validation and form field decorators for UI binding.\r\n */\r\nexport class Address extends AddressBase {\r\n    /**\r\n     * @property salutation\r\n     * @description The salutation (e.g., Mr., Mrs., Dr.) for the person associated with the address.\r\n     * This field is required.\r\n     * @type {Salutation}\r\n     */\r\n    @required()\r\n    @FormField({ row: 1, enumType: Salutation })\r\n    @Display($localize`:@@salutation:Salutation`)\r\n    public salutation?: Salutation;\r\n\r\n    /**\r\n     * @property title\r\n     * @description The title associated with the person (e.g., Dr., Prof.).\r\n     * This field is optional.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    @FormField({ row: 1 })\r\n    @Display($localize`:@@title:Title`)\r\n    public title?: string;\r\n\r\n    /**\r\n     * @property firstName\r\n     * @description The first name of the person associated with the address.\r\n     * This field is required.\r\n     * @type {string}\r\n     */\r\n    @required()\r\n    @FormField({ row: 2 })\r\n    @Display($localize`:@@firstName:First name`)\r\n    public firstName?: string;\r\n\r\n    /**\r\n     * @property lastName\r\n     * @description The last name of the person associated with the address.\r\n     * This field is required.\r\n     * @type {string}\r\n     */\r\n    @required()\r\n    @FormField({ row: 2 })\r\n    @Display($localize`:@@lastName:Last name`)\r\n    public lastName?: string;\r\n\r\n    /**\r\n     * Constructor to initialize an Address instance.\r\n     * @param init Optional object to initialize properties of the Address class.\r\n     */\r\n    public constructor(init?: Partial<Address>) {\r\n        super(init);\r\n        Object.assign(this, init);\r\n    }\r\n}","import { Display, FormField, prop } from \"@messaia/cdk\";\r\nimport { Address } from \"./address\";\r\n\r\n/**\r\n * Represents an extended address with additional fields such as phone numbers, email, and newsletter subscription.\r\n * This class inherits from the `Address` class and adds extra properties for better personalization.\r\n */\r\nexport class AddressExtended extends Address {\r\n    /**\r\n     * @property phoneNumber1\r\n     * @description The first phone number associated with the address.\r\n     * This field is optional and can be used for contacting the address holder.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    @FormField({ row: 30 })\r\n    @Display($localize`:@@phoneNumber1:Phone number 1`)\r\n    public phoneNumber1?: string;\r\n\r\n    /**\r\n     * @property phoneNumber2\r\n     * @description The second phone number associated with the address.\r\n     * This field is optional and can be used for an alternative contact number.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    @FormField({ row: 30 })\r\n    @Display($localize`:@@phoneNumber2:Phone number 2`)\r\n    public phoneNumber2?: string;\r\n\r\n    /**\r\n     * @property email\r\n     * @description The email address associated with the contact.\r\n     * This field is optional and used for electronic communication.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    @FormField({ row: 40 })\r\n    @Display($localize`:@@email:Email`)\r\n    public email?: string;\r\n\r\n    /**\r\n     * @property emailConfirmed\r\n     * @description Indicates whether the provided email address has been confirmed.\r\n     * This field is mandatory with a default value of `true` (email is confirmed).\r\n     * @type {boolean}\r\n     */\r\n    @prop()\r\n    @FormField({ row: 200 })\r\n    @Display($localize`:@@emailConfirmed:Email confirmed`)\r\n    public emailConfirmed: boolean = true;\r\n\r\n    /**\r\n     * @property newsletter\r\n     * @description Indicates whether the user is subscribed to the newsletter.\r\n     * This field is optional with a default value of `false`.\r\n     * @type {boolean}\r\n     */\r\n    @prop()\r\n    @FormField({ row: 220 })\r\n    @Display($localize`:@@newsletter:Newsletter`)\r\n    public newsletter: boolean = false;\r\n\r\n    /**\r\n     * Constructor to initialize an extended address with additional fields.\r\n     * @param init Optional object to initialize properties of the AddressExtended class.\r\n     */\r\n    public constructor(init?: Partial<Address>) {\r\n        super(init);\r\n        Object.assign(this, init);\r\n    }\r\n}\r\n","import { BaseEntity, prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * Represents an attachment entity, typically used to store file-related metadata.\r\n * This class includes the attachment's name, original name, file path, media type, and extension.\r\n */\r\nexport class Attachment extends BaseEntity {\r\n    /**\r\n     * @property name\r\n     * @description The name of the attachment. This field is required for the attachment.\r\n     * @type {string}\r\n     */\r\n    @required()\r\n    @prop()\r\n    public name?: string;\r\n\r\n    /**\r\n     * @property originalName\r\n     * @description The original name of the attachment file, without any changes.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    public originalName?: string;\r\n\r\n    /**\r\n     * @property relativePath\r\n     * @description The relative file path where the attachment is stored in the system.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    public relativePath?: string;\r\n\r\n    /**\r\n     * @property mediaType\r\n     * @description The media type (MIME type) of the attachment, such as 'image/png' or 'application/pdf'.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    public mediaType?: string;\r\n\r\n    /**\r\n     * @property extension\r\n     * @description The file extension (e.g., .png, .jpg, .pdf) of the attachment.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    public extension?: string;\r\n}","import { Column, Display, FormField, FormFieldType, Grid, ModifiableEntity, prop, required } from \"@messaia/cdk\";\r\nimport { DocumentType } from \"../enums/document-type\";\r\nimport { Attachment } from \"./attachment\";\r\n\r\n/**\r\n * Represents the base class for a document entity with metadata and associated file details.\r\n * This class includes document type, file properties, and metadata for file handling.\r\n */\r\nexport abstract class DocumentBase extends ModifiableEntity {\r\n    /**\r\n     * @property type\r\n     * @description The type of the document. Defaults to 'Document'.\r\n     * @type {DocumentType}\r\n     */\r\n    @required()\r\n    @Display($localize`:@@type:Type`)\r\n    public type: DocumentType = DocumentType.Document;\r\n\r\n    /**\r\n     * @property name\r\n     * @description The file name of the document, required for file upload. This field accepts multiple file types (e.g., .png, .jpg, .pdf).\r\n     * @type {string}\r\n     */\r\n    @required()\r\n    @Column({ index: 1 })\r\n    @FormField<Document>({\r\n        row: 20,\r\n        type: FormFieldType.File,\r\n        fileExtensions: '.png;.jpg;.doc;.docx;.pdf',\r\n        change: (_, img, __, ctx: any) => ctx?.upload(img)\r\n    })\r\n    @Display($localize`:@@file:File`)\r\n    public name?: string;\r\n\r\n    /**\r\n     * @property originalName\r\n     * @description The original name of the file, without modifications.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    public originalName?: string;\r\n\r\n    /**\r\n     * @property relativePath\r\n     * @description The relative path where the document is stored in the system.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    public relativePath?: string;\r\n\r\n    /**\r\n     * @property fullPath\r\n     * @description The full path where the document is stored on the server.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    public fullPath?: string;\r\n\r\n    /**\r\n     * @property isPublic\r\n     * @description Flag indicating whether the document is publicly accessible.\r\n     * @type {boolean}\r\n     */\r\n    @prop()\r\n    public isPublic?: boolean;\r\n\r\n    /**\r\n     * @property extension\r\n     * @description The file extension of the document.\r\n     * @type {string}\r\n     */\r\n    @Column({ index: 2, maxWidth: 100, display: Grid.Lg })\r\n    @Display($localize`:@@type:Type`)\r\n    @prop()\r\n    public extension?: string;\r\n\r\n    /**\r\n     * @property publicLink\r\n     * @description A public link to the document if it is accessible externally.\r\n     * @type {string}\r\n     */\r\n    @Column({ index: 3, maxWidth: 250, display: Grid.Lg })\r\n    @Display($localize`:@@link:Link`)\r\n    @prop()\r\n    public publicLink?: string;\r\n\r\n    /**\r\n     * @property size\r\n     * @description The size of the document file in bytes.\r\n     * @type {number}\r\n     */\r\n    @prop()\r\n    public size?: number;\r\n\r\n    /**\r\n     * @property preserveOriginalName\r\n     * @description Flag indicating whether to preserve the original file name when saving the document.\r\n     * @type {boolean}\r\n     */\r\n    @prop()\r\n    @FormField({ row: 11 })\r\n    @Display($localize`:@@preserveOriginalName:Preserve original name`)\r\n    public preserveOriginalName?: boolean;\r\n\r\n    /**\r\n     * @property subject\r\n     * @description The subject or title of the document.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    public subject?: string;\r\n\r\n    /**\r\n     * @property content\r\n     * @description The content or body of the document, if applicable.\r\n     * @type {string}\r\n     */\r\n    @prop()\r\n    public content?: string;\r\n\r\n    /**\r\n     * @property attachments\r\n     * @description A list of attachments related to the document.\r\n     * @type {Attachment[]}\r\n     */\r\n    @prop()\r\n    public attachments: Attachment[] = [];\r\n\r\n    /**\r\n     * Constructor for initializing a DocumentBase instance.\r\n     * @param init Optional partial initialization for the document entity.\r\n     */\r\n    public constructor(init?: Partial<DocumentBase>) {\r\n        super(init);\r\n        Object.assign(this, init);\r\n    }\r\n}","export const TableTemplate = /* html */ `\r\n\t<vd-dynamic-table \r\n\t\t[dataSource]=\"dataSource\" \r\n\t\t[columns]=\"columns\" \r\n\t\t(rowClick)=\"editable ? edit($event) : null\" \r\n\t\t[rowNgClass]=\"rowNgClass\" \r\n\t\t[detailsTemplate]=\"detailsTemplate\" \r\n\t\tmatSort \r\n\t\t[sortActive]=\"sortActive || 'id'\" \r\n\t\t[sortDirection]=\"sortDirection\">\r\n  \t</vd-dynamic-table>\r\n\r\n\t<mat-paginator \r\n\t\t#paginator \r\n\t\t[length]=\"dataSource.total\" \r\n\t\t[pageIndex]=\"dataSource.pageIndex\" \r\n\t\t[pageSize]=\"dataSource.pageSize\" \r\n\t\t[pageSizeOptions]=\"pageSizeOptions\" \r\n\t\tshowFirstLastButtons=\"true\">\r\n\t</mat-paginator>\r\n`;","/// <reference types=\"@angular/localize\" />\r\n\r\nexport * from './components/audit-panel/audit-panel';\r\nexport * from './components/audit/audit';\r\nexport * from './components/dynamic-edit-form/dynamic-edit-form';\r\nexport * from './components/dynamic-form/dynamic-form';\r\nexport * from './components/dynamic-list/dynamic-list';\r\nexport * from './components/export-dialog/export-dialog';\r\nexport * from './constants/common';\r\nexport * from './enums/document-type';\r\nexport * from './models/address';\r\nexport * from './models/address-base';\r\nexport * from './models/address-extended';\r\nexport * from './models/attachment';\r\nexport * from './models/document-base';\r\nexport * from './models/entity-export';\r\nexport * from './models/entity-export-column';\r\nexport * from './services/entity-export';\r\nexport { DynamicListTemplate } from './templates/dynamic-list.template';\r\nexport { TableTemplate } from './templates/table.template';\r\n\r\n","/*\r\n * Public API Surface of cdk-base\r\n */\r\n\r\nexport * from './lib/public_api';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i1","i4","i5","i6","i3","i7","i8","Common"],"mappings":"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"}