@messaia/cdk-cms 22.0.0-rc.7 → 22.0.0-rc.9

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.
@@ -1 +1 @@
1
- {"version":3,"file":"messaia-cdk-cms.mjs","sources":["../../../projects/cdk-cms/src/lib/enums/content-type.ts","../../../projects/cdk-cms/src/lib/enums/wrap-tag.ts","../../../projects/cdk-cms/src/lib/models/cms-settings.ts","../../../projects/cdk-cms/src/lib/models/content-client.ts","../../../projects/cdk-cms/src/lib/models/content-department.ts","../../../projects/cdk-cms/src/lib/models/content.ts","../../../projects/cdk-cms/src/lib/services/content.ts","../../../projects/cdk-cms/src/lib/components/content-form/content-form.ts","../../../projects/cdk-cms/src/lib/components/content-form/content-form.html","../../../projects/cdk-cms/src/lib/models/document.ts","../../../projects/cdk-cms/src/lib/templates/document-form.template.ts","../../../projects/cdk-cms/src/lib/components/document-form-base/document-form-base.ts","../../../projects/cdk-cms/src/lib/services/document-generic.ts","../../../projects/cdk-cms/src/lib/services/document.service`.ts","../../../projects/cdk-cms/src/lib/components/document-dialog/document-dialog.ts","../../../projects/cdk-cms/src/lib/models/faq-client.ts","../../../projects/cdk-cms/src/lib/models/faq-department.ts","../../../projects/cdk-cms/src/lib/models/faq.ts","../../../projects/cdk-cms/src/lib/services/faq.ts","../../../projects/cdk-cms/src/lib/components/faq-form/faq-form.ts","../../../projects/cdk-cms/src/lib/components/faq-form/faq-form.html","../../../projects/cdk-cms/src/lib/enums/template-type.ts","../../../projects/cdk-cms/src/lib/enums/template-engine.ts","../../../projects/cdk-cms/src/lib/models/template-client.ts","../../../projects/cdk-cms/src/lib/models/template-department.ts","../../../projects/cdk-cms/src/lib/models/template.ts","../../../projects/cdk-cms/src/lib/models/template-preview.ts","../../../projects/cdk-cms/src/lib/services/template-preview.ts","../../../projects/cdk-cms/src/lib/components/template-preview-dialog/template-preview-dialog.ts","../../../projects/cdk-cms/src/lib/components/template-preview-dialog/template-preview-dialog.html","../../../projects/cdk-cms/src/lib/services/template.ts","../../../projects/cdk-cms/src/lib/services/template-doc.ts","../../../projects/cdk-cms/src/lib/components/template-form/template-form.ts","../../../projects/cdk-cms/src/lib/components/template-form/template-form.html","../../../projects/cdk-cms/src/lib/models/content-variable-client.ts","../../../projects/cdk-cms/src/lib/models/content-variable-department.ts","../../../projects/cdk-cms/src/lib/models/content-variable.ts","../../../projects/cdk-cms/src/lib/models/slider.ts","../../../projects/cdk-cms/src/lib/resolvers/document-list-projection.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/excluded-columns.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/excluded-fields.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/form-includes.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/form-validation.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/list-projection.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/settings.resolve.ts","../../../projects/cdk-cms/src/lib/cms-routing.module.ts","../../../projects/cdk-cms/src/lib/cms.module.ts","../../../projects/cdk-cms/src/lib/enums/faq-scope.ts","../../../projects/cdk-cms/src/lib/services/content-variable.ts","../../../projects/cdk-cms/src/lib/services/slider.ts","../../../projects/cdk-cms/src/lib/public-api.ts","../../../projects/cdk-cms/src/public_api.ts","../../../projects/cdk-cms/src/messaia-cdk-cms.ts"],"sourcesContent":["export enum ContentType {\r\n Page = 1,\r\n Block\r\n}","export enum WrapTag {\r\n None = '',\r\n Section = 'section',\r\n Div = 'div',\r\n Address = 'address',\r\n Article = 'article'\r\n}","\r\nexport class CmsSettings {\r\n /**\r\n * @property\r\n */\r\n public multiClients?: boolean = false;\r\n\r\n /**\r\n * @property\r\n */\r\n public multiDepartments?: boolean = false;\r\n\r\n /**\r\n * @property\r\n */\r\n public multitenantable?: boolean = false;\r\n\r\n /**\r\n * @property\r\n */\r\n public styleUrlEndpoint?: Function;\r\n\r\n /**\r\n * @property\r\n */\r\n public editorHeight?: string = '700px';\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<CmsSettings>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class ContentClient {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public contentId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public clientId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public client?: any;\r\n\r\n /**\r\n * @property\r\n */\r\n public clientName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<ContentClient>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class ContentDepartment {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public contentId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public departmentId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public department?: any;\r\n\r\n /**\r\n * @property\r\n */\r\n public departmentName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<ContentDepartment>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { Api, AuditEntity, Column, Display, FormField, FormFieldType, Grid, prop, required, Table, Utils } from \"@messaia/cdk\";\r\nimport { ContentType } from \"../enums/content-type\";\r\nimport { WrapTag } from \"../enums/wrap-tag\";\r\nimport { ContentClient } from \"./content-client\";\r\nimport { ContentDepartment } from \"./content-department\";\r\n\r\n@Api('content')\r\n@Table({\r\n endpoint: 'content',\r\n projection: ['id', 'createdDate', 'name', 'title', 'enabled'],\r\n duplicable: true\r\n})\r\nexport class Content extends AuditEntity {\r\n /**\r\n * @property Defines the type of the content.\r\n * @description Optional enum property indicating the content's type.\r\n * @type {ContentType}\r\n */\r\n @prop()\r\n public type?: ContentType;\r\n\r\n /**\r\n * @property Identifier for the section the content belongs to.\r\n * @description Optional number representing the section ID.\r\n * @type {number}\r\n */\r\n @prop()\r\n public sectionId?: number;\r\n\r\n /**\r\n * @property The title of the content.\r\n * @description This required property represents the human-readable title displayed in the UI.\r\n * @type {string}\r\n */\r\n @required()\r\n @Column()\r\n @FormField({ row: 20 })\r\n @Display($localize`:@@title:Title`)\r\n public title?: string;\r\n\r\n /**\r\n * @property Internal name of the content.\r\n * @description This required property is used for internal reference and URLs.\r\n * @type {string}\r\n */\r\n @required()\r\n @Column({ maxWidth: 190, display: Grid.Md })\r\n @FormField({ row: 30 })\r\n @Display($localize`:@@name:Name`)\r\n public name?: string;\r\n\r\n /**\r\n * @property Aliases of the content.\r\n * @description Optional string used to define alternative names or keywords.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({ row: 40, type: FormFieldType.Chips })\r\n @Display($localize`:@@aliases:Aliases`)\r\n public aliases?: string;\r\n\r\n /**\r\n * @property The wrap tag used for HTML structure.\r\n * @description Optional property that defines how the content is wrapped in the DOM.\r\n * @type {WrapTag}\r\n */\r\n @prop()\r\n @FormField({ row: 50 })\r\n @Display($localize`:@@wrap:Wrap`)\r\n public wrapTag: WrapTag = WrapTag.Section;\r\n\r\n /**\r\n * @property Layout identifier or class name.\r\n * @description Optional layout style applied to this content block.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({ row: 50 })\r\n @Display($localize`:@@layout:Layout`)\r\n public layout?: string;\r\n\r\n /**\r\n * @property Main body of the content.\r\n * @description Optional HTML or markdown content.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({ row: 60, type: FormFieldType.Editor })\r\n @Display($localize`:@@content:Content`)\r\n public body?: string;\r\n\r\n /**\r\n * @property Embedded script.\r\n * @description Optional JavaScript code associated with the content.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({\r\n row: 80,\r\n type: FormFieldType.TextArea,\r\n hint: $localize`:@@scriptHint:Do not include <script> tags.`\r\n })\r\n @Display($localize`:@@bodyScript:Body Script`)\r\n public script?: string;\r\n\r\n /**\r\n * @property headScript\r\n * @description This optional property allows insertion of custom JavaScript code inside the <head> tag of the HTML document.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({\r\n row: 70,\r\n type: FormFieldType.TextArea,\r\n hint: $localize`:@@headScriptHint:Do not include <script> tags.`\r\n })\r\n @Display($localize`:@@headScript:Head Script`)\r\n public headScript?: string;\r\n\r\n /**\r\n * @property noScript\r\n * @description This optional property allows inserting content inside a <noscript> tag, which is rendered when JavaScript is disabled.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({\r\n row: 90,\r\n type: FormFieldType.TextArea,\r\n hint: $localize`:@@noScriptHint:Do not include <noscript> tags.`\r\n })\r\n @Display($localize`:@@noScript:NoScript`)\r\n public noScript?: string;\r\n\r\n /**\r\n * @property Embedded style.\r\n * @description Optional CSS styling specific to this content.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({\r\n row: 100,\r\n type: FormFieldType.TextArea,\r\n hint: $localize`:@@styleHint:Do not include <style> or <link> tags.`\r\n })\r\n @Display($localize`:@@style:Style`)\r\n public style?: string;\r\n\r\n /**\r\n * @property Indicates whether the title should be shown.\r\n * @description This optional boolean defaults to true and determines title visibility.\r\n * @type {boolean}\r\n */\r\n @prop()\r\n @FormField({ row: 200 })\r\n @Display($localize`:@@showTitle:Show title`)\r\n public showTitle: boolean = true;\r\n\r\n /**\r\n * @property Indicates whether the content is enabled.\r\n * @description This boolean property enables or disables the content, default is true.\r\n * @type {boolean}\r\n */\r\n @prop()\r\n @Column({\r\n index: 20,\r\n event: 'toggle'\r\n })\r\n @FormField({ row: 210 })\r\n @Display($localize`:@@enabled:Enabled`)\r\n public enabled: boolean = true;\r\n\r\n /**\r\n * @property Associated clients for this content.\r\n * @description This required property defines which clients the content is related to.\r\n * @type {ContentClient[]}\r\n */\r\n @required({ conditionalExpression: (x: Content) => true })\r\n @Column<Content>({\r\n index: 5,\r\n name: 'clientJoins.client.displayName',\r\n sortBy: 'clientJoins.Min(client.displayName)',\r\n content: (x) => x ? Utils.joinArray(x?.clientJoins?.map(y => y.client?.displayName ?? '') ?? []) : undefined,\r\n display: Grid.Lg,\r\n maxWidth: 200,\r\n hide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients),\r\n })\r\n @FormField<Content, ContentClient>({\r\n row: 1,\r\n endpoint: 'client',\r\n params: () => ({\r\n enabled: true,\r\n projection: 'id,displayName',\r\n sortBy: 'id'\r\n }),\r\n multiple: true,\r\n hide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients),\r\n compareWith: (o, v) => o.clientId === v.clientId,\r\n mapper: (x: { id: number, displayName: string }[]) => x.map(y => new ContentClient({ clientId: y.id, clientName: y.displayName })),\r\n optionTemplate: (x) => x?.clientName,\r\n triggerMapper: (x) => x?.clientName\r\n })\r\n @Display($localize`:@@projects:Projects`)\r\n public clientJoins?: ContentClient[];\r\n\r\n /**\r\n * @property Associated departments for this content.\r\n * @description Optional departments related to this content, with visibility based on admin context.\r\n * @type {ContentDepartment[]}\r\n */\r\n @prop()\r\n @Column<Content>({\r\n index: 5,\r\n name: 'departmentJoins.department.displayName',\r\n sortBy: 'departmentJoins.Min(department.displayName)',\r\n content: (x) => x ? Utils.joinArray(x?.departmentJoins?.map(y => y.department?.displayName ?? '') ?? []) : undefined,\r\n display: Grid.Lg,\r\n maxWidth: 200,\r\n hide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n })\r\n @FormField<Content, ContentDepartment>({\r\n row: 10,\r\n endpoint: 'department',\r\n params: (x) => ({\r\n enabled: true,\r\n projection: 'id,displayName',\r\n sortBy: 'id',\r\n clientId: x.clientJoins?.map(y => y.clientId)\r\n }),\r\n multiple: true,\r\n hide: (_, __, ctx: any) => (!ctx.isAdmin && !ctx.isClientAdmin) || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n compareWith: (o, v) => o.departmentId === v.departmentId,\r\n mapper: (x: { id: number, displayName: string }[]) => x.map(y => new ContentDepartment({ departmentId: y.id, departmentName: y.displayName })),\r\n optionTemplate: (x) => x?.departmentName,\r\n triggerMapper: (x) => x?.departmentName\r\n })\r\n @Display($localize`:@@departments:Departments`)\r\n public departmentJoins?: ContentDepartment[];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { map } from 'rxjs/operators';\r\nimport { Content } from '../models/content';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ContentService extends GenericService<Content> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('content');\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified alias is available.\r\n\t * @param id \r\n\t * @param alias \r\n\t */\r\n\tpublic isAliasAvailable(item: Content) {\r\n\t\treturn this.create(item, '/isAliasAvailable').pipe(map((x: any) => x.value));\r\n\t}\r\n}","import { COMMA, ENTER } from '@angular/cdk/keycodes';\r\n\r\nimport { HttpClient, HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { ChangeDetectionStrategy, Component, inject, ViewChild } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatChipInputEvent } from '@angular/material/chips';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { EnumService, FileService, GenericReactiveFormComponent, MatFormFieldEditorDirective, RxReactiveFormsModule, VdEditorDirective, VdGenericFormComponent, VdLayoutCardOverComponent, VdLayoutNavComponent } from '@messaia/cdk';\r\nimport { VdAuditComponent } from '@messaia/cdk-base';\r\nimport { EditorComponent, EditorModule } from '@tinymce/tinymce-angular';\r\nimport { of, Subscription } from 'rxjs';\r\nimport { ContentType } from '../../enums/content-type';\r\nimport { WrapTag } from '../../enums/wrap-tag';\r\nimport { CmsSettings } from '../../models/cms-settings';\r\nimport { Content } from '../../models/content';\r\nimport { ContentClient, ContentDepartment } from '../../public-api';\r\nimport { ContentService } from '../../services/content';\r\n\r\n@Component({\r\n selector: 'app-content-form',\r\n templateUrl: './content-form.html',\r\n changeDetection: ChangeDetectionStrategy.Eager,\r\n imports: [\r\n ReactiveFormsModule,\r\n RxReactiveFormsModule,\r\n EditorModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatButtonModule,\r\n MatFormFieldEditorDirective,\r\n VdLayoutNavComponent,\r\n VdLayoutCardOverComponent,\r\n VdGenericFormComponent,\r\n VdEditorDirective,\r\n VdAuditComponent\r\n ]\r\n})\r\nexport class ContentFormComponent extends GenericReactiveFormComponent<Content, ContentService> {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n public override settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Router Subscription\r\n */\r\n public routeSubscription?: Subscription;\r\n\r\n /**\r\n * The status of the issue\r\n */\r\n public type?: ContentType;\r\n\r\n /**\r\n * Content status\r\n */\r\n public ContentType: typeof ContentType = ContentType;\r\n\r\n /**\r\n * Wrap tag enum\r\n */\r\n public wrapTags: any[] = EnumService.toArray(WrapTag);\r\n\r\n /**\r\n * Separator keys codes\r\n */\r\n public separatorKeysCodes: number[] = [ENTER, COMMA];\r\n\r\n /**\r\n * Gets the aliases control\r\n */\r\n get aliasesControl() { return this.form.controls['aliases']; }\r\n\r\n /**\r\n * A ref to form html element\r\n */\r\n @ViewChild('form', { static: false })\r\n public formElement?: HTMLFormElement;\r\n\r\n /**\r\n * A ref to tinymce editor\r\n */\r\n @ViewChild('editor', { static: false })\r\n public editorComponent?: EditorComponent;\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor(\r\n protected override service: ContentService,\r\n protected fileService: FileService,\r\n protected httpClient: HttpClient\r\n ) {\r\n super(Content, service);\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiClients) {\r\n this.include('ClientJoins', true);\r\n }\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiDepartments) {\r\n this.include('DepartmentJoins', true);\r\n }\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 /* Filter by status, if any */\r\n this.routeSubscription = this.route.params.subscribe((params: any) => {\r\n this.type = EnumService.parse(ContentType, params.type);\r\n });\r\n\r\n /* Get some props from route snapshot */\r\n this.route.data.subscribe((data: any) => {\r\n this.formValidation = data.formValidation;\r\n });\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n /**\r\n * Shows client joins in the form\r\n * @returns \r\n */\r\n public showClientJoins(): boolean {\r\n return (!this.canCreate || (!this.settings?.multitenantable && !this.settings?.multiClients)) || this.isClientAdmin;\r\n }\r\n\r\n /**\r\n * Checks if the specified alias is available.\r\n */\r\n public isAliasAvailable() {\r\n this.service.isAliasAvailable(this.item!).subscribe((x: boolean) => {\r\n this.formElement!['form']?.controls['alias'].setErrors(x ? null : { 'inUse': true });\r\n });\r\n }\r\n\r\n /**\r\n * Set client\r\n */\r\n public setClient(): void {\r\n this.isEditorInitialized = false;\r\n this.configEditor();\r\n this.editorComponent?.editor?.setContent(this.item?.body!);\r\n }\r\n\r\n /**\r\n * Add a aliases to the current field\r\n * @param event \r\n */\r\n public addAliases(event: MatChipInputEvent): void {\r\n /* Add our aliass */\r\n if ((event.value || '').trim()) {\r\n this.aliasesControl.setValue([...this.aliasesControl.value, event.value.trim()]);\r\n this.aliasesControl.updateValueAndValidity();\r\n this.aliasesControl.markAsDirty();\r\n }\r\n\r\n /* Reset the input value */\r\n if (event.input) {\r\n event.input.value = '';\r\n }\r\n }\r\n\r\n /**\r\n * Removes a aliases\r\n * @param aliass \r\n */\r\n public removeAliases(aliass: string): void {\r\n const index = this.aliasesControl.value.indexOf(aliass);\r\n if (index >= 0) {\r\n this.aliasesControl.value.splice(index, 1);\r\n this.aliasesControl.updateValueAndValidity();\r\n this.aliasesControl.markAsDirty();\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new instance of the Template\r\n */\r\n protected override newInstance(): Content {\r\n let item = Object.assign(new Content(), <Content>{\r\n type: this.type,\r\n wrapTag: this.type == ContentType.Block ? '' : WrapTag.Section,\r\n showTitle: this.type == ContentType.Block ? false : true\r\n });\r\n\r\n /* Get clientId */\r\n if (!this.isEditMode) {\r\n if (this.isClientAdmin || this.isDepartmentAdmin) {\r\n item.clientJoins = [new ContentClient({ clientId: this.currentUser.clientId })];\r\n }\r\n\r\n if (this.isDepartmentAdmin) {\r\n item.departmentJoins = [new ContentDepartment({ departmentId: this.currentUser.departmentId })];\r\n }\r\n }\r\n\r\n /* Init the tinymce editor */\r\n this.isEditorInitialized = false;\r\n return item;\r\n }\r\n\r\n /**\r\n * Event emitted when the form has built.\r\n */\r\n protected override onAfterFormBuild(): void {\r\n super.onAfterFormBuild();\r\n this.configEditor();\r\n }\r\n\r\n /**\r\n * Configures the tinymce editor\r\n */\r\n private configEditor(): void {\r\n if (this.settings?.multitenantable && this.formValue?.clientId && this.settings?.styleUrlEndpoint) {\r\n this.httpClient.get(this.settings.styleUrlEndpoint(this.formValue.clientId)).subscribe({\r\n next: (x: any) => super.initEditor(Object.assign(this.getEditorConfig(), { content_css: x.value })),\r\n error: () => super.initEditor(Object.assign(this.getEditorConfig()))\r\n });\r\n } else {\r\n super.initEditor(this.getEditorConfig());\r\n }\r\n }\r\n\r\n /**\r\n * Creates config for the editor\r\n * @returns \r\n */\r\n private getEditorConfig(): any {\r\n return {\r\n promotion: false,\r\n toolbar: `${this.editorToolbar} snippetsButton`,\r\n forced_root_blocks: false,\r\n height: this.settings?.editorHeight || '700px',\r\n file_picker_types: 'file image media',\r\n image_advtab: true,\r\n allow_html_in_named_anchor: true,\r\n valid_children: '+a[div|span|img|h1|h2|h3|h4|h5|h6|br|hr|video],+span[i]',\r\n valid_elements: '*[*]',\r\n images_upload_handler: (blobInfo: any, progress: Function) => new Promise((resolve, reject) => {\r\n var clientIds: number[] = this.formValue?.clientJoins?.map((x: ContentClient) => x.clientId) ?? [];\r\n this.fileService.upload(blobInfo.blob(), `upload`, {\r\n clientId: clientIds.length == 1 ? clientIds[0] : null,\r\n path: clientIds.length == 1 ? 'images' : 'common/images',\r\n isPublic: true\r\n }).subscribe({\r\n next: (event: any) => {\r\n if (event.type === HttpEventType.UploadProgress) {\r\n\r\n /* Calculate the progress percentage */\r\n const percentDone = Math.round(100 * event.loaded / event.total);\r\n\r\n /* Pass the percentage into the progress-stream */\r\n console.info(percentDone);\r\n } else if (event instanceof HttpResponse) {\r\n console.log('Upload finished!');\r\n resolve(event.body.publicLink);\r\n }\r\n },\r\n error: (error: any) => {\r\n reject('Image upload failed due to a XHR Transport error:' + error);\r\n console.log('Image upload failed due to a XHR Transport error:' + error);\r\n }\r\n });\r\n\r\n return of({});\r\n }),\r\n setup: function (editor: any) {\r\n /* Add snippets button to the toolbar */\r\n editor.ui.registry.addMenuButton('snippetsButton', {\r\n text: 'Snippets',\r\n fetch: function (callback: any) {\r\n callback([\r\n {\r\n type: 'menuitem',\r\n text: 'Variable',\r\n onAction: () => editor.insertContent('{{var name}}')\r\n },\r\n {\r\n type: 'menuitem',\r\n text: 'Block',\r\n onAction: () => editor.insertContent('{{block name=\"...\"}}')\r\n },\r\n {\r\n type: 'menuitem',\r\n text: 'View Component',\r\n onAction: () => editor.insertContent('{{vc name=\"...\"}}')\r\n },\r\n ]);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Cleanup subscriptions when this component is destroyed.\r\n */\r\n override ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n if (this.routeSubscription) {\r\n this.routeSubscription.unsubscribe();\r\n }\r\n }\r\n}","<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [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 <mat-accordion [multi]=\"!isEditMode\">\r\n <!-- #region Details -->\r\n <mat-expansion-panel expanded=\"true\" id=\"details\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n <ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n <mat-label>{{field.label}}</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 </vd-generic-form>\r\n </ng-template>\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 || true) {\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 </mat-expansion-panel>\r\n <!-- #endregion -->\r\n <!-- #region Audit -->\r\n @if (isEditMode) {\r\n <mat-expansion-panel id=\"audit\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <span i18n=\"@@audit\">Audit</span>\r\n </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 </vd-layout-card-over>\r\n </form>\r\n }\r\n</vd-layout-nav>","import { AuthHelper, Column, Display, FormField, Grid, prop, required, Table } from \"@messaia/cdk\";\r\nimport { DocumentBase } from \"@messaia/cdk-base\";\r\n\r\n@Table({\r\n endpoint: 'document',\r\n projection: ['id', 'createdDate', 'name', 'extension', 'publicLink', 'isEditable', 'isDeletable'],\r\n editable: false,\r\n downloadable: true\r\n})\r\nexport class Document extends DocumentBase {\r\n /**\r\n * @property clientId\r\n * @description The ID of the client associated with the document.\r\n * @type {number}\r\n */\r\n @required()\r\n @Column({\r\n index: 10,\r\n name: 'client.displayName',\r\n sortBy: 'client.displayName',\r\n maxWidth: 200,\r\n display: Grid.Lg,\r\n hide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients),\r\n })\r\n @FormField<Document>({\r\n row: 1,\r\n endpoint: 'client',\r\n projection: 'id,name',\r\n params: (x) => { return { enabled: true } },\r\n readonly: (x) => (x.id ?? 0) > 0,\r\n hide: (_, __, ctx) => ctx?.currentUser?.isDepartmentAdmin\r\n })\r\n @Display($localize`:@@project:Project`)\r\n public clientId?: number = AuthHelper.user.clientId;\r\n\r\n /**\r\n * @property departmentId\r\n * @description The ID of the department associated with the document.\r\n * @type {number}\r\n */\r\n @prop()\r\n @Column({\r\n index: 11,\r\n name: 'department.displayName',\r\n sortBy: 'department.displayName',\r\n maxWidth: 200,\r\n display: Grid.Lg,\r\n hide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n })\r\n @FormField<Document>({\r\n row: 2,\r\n endpoint: 'department',\r\n projection: 'id,name',\r\n params: (x) => { return { clientId: x.clientId, enabled: true } },\r\n fetchCondition: (x) => (x.clientId ?? 0) > 0,\r\n readonly: (x) => (x.id ?? 0) > 0 || !x.clientId,\r\n hide: (_, __, ctx) => ctx?.currentUser?.isDepartmentAdmin\r\n })\r\n @Display($localize`:@@department:Department`)\r\n public departmentId?: number = AuthHelper.user.departmentId;\r\n\r\n /**\r\n * @property path\r\n * @description The path where the document is stored.\r\n * @type {string}\r\n * @default 'docs'\r\n */\r\n @required()\r\n public path: string = 'docs';\r\n\r\n /**\r\n * Initializes a new instance of the Document class.\r\n * @param init Optional partial object used to initialize properties.\r\n */\r\n public constructor(init?: Partial<Document>) {\r\n super(init);\r\n Object.assign(this, init);\r\n }\r\n}","\r\n\r\nexport const DocumentFormTemplate = /* html */ `\r\n <div mat-dialog-title class=\"mat-headline-6\" i18n=\"@@newDocument\">New document</div>\r\n @if(form){\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n <ng-template vd-file let-field=\"field\" let-formGroup=\"formGroup\">\r\n <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <div vd-file-input [formControlName]=\"field.name\" (select)=\"upload($event)\" [accept]=\"field.fileExtensions\"></div>\r\n </mat-form-field>\r\n </ng-template>\r\n </vd-generic-form>\r\n <div mat-dialog-actions class=\"pad-top\">\r\n <button type=\"submit\" mat-flat-button [disabled]=\"isSaving\" color=\"primary\" i18n=\"@@save\">Save</button>\r\n <button type=\"button\" mat-button (click)=\"cancel()\" i18n=\"@@cancel\">Cancel</button>\r\n </div>\r\n </form>\r\n }`;","import { HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { Directive, Type } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { FileService, GenericReactiveFormComponent, SaveAction } from '@messaia/cdk';\r\nimport { DocumentBase } from \"@messaia/cdk-base\";\r\nimport { DocumentGenericService } from '../../services/document-generic';\r\n\r\n@Directive()\r\nexport abstract class DocumentFormBaseComponent<TDocument extends DocumentBase, TDocumentService extends DocumentGenericService<TDocument>> extends GenericReactiveFormComponent<TDocument, TDocumentService> {\r\n /**\r\n * Upload status\r\n */\r\n public isUploading: boolean = false;\r\n\r\n /**\r\n * Upload progress\r\n */\r\n public uploadProgress: number = 0;\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor(\r\n protected entityType: Type<TDocument>,\r\n protected documentService: TDocumentService,\r\n protected fileService: FileService,\r\n protected dialogRef: MatDialogRef<DocumentFormBaseComponent<TDocument, TDocumentService>>,\r\n protected data: TDocument\r\n ) {\r\n super(entityType, documentService);\r\n this.item = data;\r\n }\r\n\r\n /**\r\n * Uploads a new document\r\n */\r\n public upload(file: File | FileList): void {\r\n if (file != null) {\r\n this.fileService\r\n .upload(file as File, `upload`, new this.entityType(Object.assign(this.data || {}, this.formValue)))\r\n .subscribe({\r\n next: (event) => {\r\n if (event.type === HttpEventType.UploadProgress) {\r\n\r\n /* Calculate the progress percentage */\r\n const percentDone = Math.round(100 * event.loaded / event.total);\r\n\r\n /* Pass the percentage into the progress-stream */\r\n this.uploadProgress = percentDone;\r\n } else if (event instanceof HttpResponse) {\r\n this.form.patchValue(<Document>event.body);\r\n }\r\n },\r\n complete: () => this.isUploading = false,\r\n error: () => this.isUploading = false\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Event emitted after data submition\r\n * @param action \r\n * @param response \r\n */\r\n protected override onAfterSubmit(_1: SaveAction = SaveAction.SaveAndClose, _2: any = null): void {\r\n this.isSaving = false;\r\n this.cancel();\r\n }\r\n\r\n /**\r\n * Closes the dialog\r\n */\r\n public cancel(): void {\r\n this.dialogRef.close();\r\n this.reloadPage();\r\n }\r\n\r\n /**\r\n * Creates a new instance of the TEntity\r\n */\r\n protected override newInstance(): TDocument {\r\n return super.newInstance(Object.assign(new this.entityType({\r\n clientId: this.currentUser?.clientId,\r\n departmentId: this.currentUser?.departmentId\r\n }), this.data || {}));\r\n }\r\n}","import { GenericService } from '@messaia/cdk';\r\nimport { DocumentBase } from '@messaia/cdk-base';\r\n\r\nexport abstract class DocumentGenericService<TDocument extends DocumentBase> extends GenericService<TDocument> {\r\n\r\n /**\r\n * Constructor\r\n * @param serviceName\r\n */\r\n constructor(serviceName?: string) {\r\n super(serviceName);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Document } from '../models/document';\r\nimport { DocumentGenericService } from './document-generic';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DocumentService extends DocumentGenericService<Document> {\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n super('document');\r\n }\r\n\r\n /**\r\n * Sends an email to the customer\r\n * @param id The ID of the document\r\n */\r\n public sendMail(id: number): Observable<any> {\r\n return this.update(`sendMail/${id}`, null);\r\n }\r\n}","\r\nimport { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FileService, VdFileInputComponent, VdGenericFormComponent } from '@messaia/cdk';\r\nimport { Document } from '../../models/document';\r\nimport { DocumentService } from '../../services/document.service`';\r\nimport { DocumentFormTemplate } from '../../templates/document-form.template';\r\nimport { DocumentFormBaseComponent } from '../document-form-base/document-form-base';\r\n\r\n@Component({\r\n selector: 'document-dialog',\r\n template: DocumentFormTemplate,\r\n changeDetection: ChangeDetectionStrategy.Eager,\r\n imports: [\r\n ReactiveFormsModule,\r\n MatDialogModule,\r\n MatFormFieldModule,\r\n VdGenericFormComponent,\r\n VdFileInputComponent\r\n ]\r\n})\r\nexport class DocumentDialogComponent extends DocumentFormBaseComponent<Document, DocumentService> {\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor(\r\n protected override documentService: DocumentService,\r\n protected override fileService: FileService,\r\n public override dialogRef: MatDialogRef<DocumentDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public override data: Document = new Document()\r\n ) {\r\n super(Document, documentService, fileService, dialogRef, data)\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 this.item!.isPublic = true;\r\n }\r\n}","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class FaqClient {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public faqId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public clientId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public client?: any;\r\n /**\r\n * @property\r\n */\r\n public clientName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<FaqClient>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class FaqDepartment {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public faqId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public departmentId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public department?: any;\r\n\r\n /**\r\n * @property\r\n */\r\n public departmentName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<FaqDepartment>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { Api, AuditEntity, Column, Display, FormField, FormFieldType, Grid, prop, required, Table, Utils } from \"@messaia/cdk\";\r\nimport { FaqClient } from \"./faq-client\";\r\nimport { FaqDepartment } from \"./faq-department\";\r\n\r\n@Api('faq')\r\n@Table({\r\n\tendpoint: 'faq',\r\n\tprojection: ['id', 'createdDate', 'question', 'group', 'enabled'],\r\n\tduplicable: true\r\n})\r\nexport class Faq extends AuditEntity {\r\n\t/**\r\n\t * The question text\r\n\t * @type {string}\r\n\t */\r\n\t@required()\r\n\t@Column({\r\n\t\tindex: 1,\r\n\t\tcontentLength: 30\r\n\t})\r\n\t@FormField({ row: 10 })\r\n\t@Display($localize`:@@question:Question`)\r\n\tpublic question?: string;\r\n\r\n\t/**\r\n\t * The group name\r\n\t * @type {string}\r\n\t */\r\n\t@required()\r\n\t@Column({\r\n\t\tindex: 10,\r\n\t\tmaxWidth: 160,\r\n\t\tdisplay: Grid.Lg\r\n\t})\r\n\t@FormField({\r\n\t\trow: 20,\r\n\t\ttype: FormFieldType.Autocomplete\r\n\t})\r\n\t@Display($localize`:@@group:Group`)\r\n\tpublic group?: string;\r\n\r\n\t/**\r\n\t * Associated clients\r\n\t * @type {FaqClient[]}\r\n\t */\r\n\t@required({ conditionalExpression: (x: Faq) => true })\r\n\t@Column<Faq>({\r\n\t\tindex: 1,\r\n\t\tname: 'clientJoins.client.displayName',\r\n\t\tsortBy: 'clientJoins.Min(client.displayName)',\r\n\t\tcontent: (x) => x ? Utils.joinArray(x.clientJoins?.map(y => y.client?.displayName ?? '') ?? []) : undefined,\r\n\t\tdisplay: Grid.Lg,\r\n\t\tmaxWidth: 200,\r\n\t\thide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients),\r\n\t})\r\n\t@FormField<Faq, FaqClient>({\r\n\t\trow: 1,\r\n\t\tendpoint: 'client',\r\n\t\tparams: () => ({\r\n\t\t\tenabled: true,\r\n\t\t\tprojection: 'id,displayName',\r\n\t\t\tsortBy: 'id'\r\n\t\t}),\r\n\t\tmultiple: true,\r\n\t\ttriggerMode: 'chip',\r\n\t\thide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients),\r\n\t\tcompareWith: (o, v) => o.clientId === v.clientId,\r\n\t\tmapper: (x: { id: number, displayName: string }[]) => x.map(y => new FaqClient({ clientId: y.id, clientName: y.displayName })),\r\n\t\toptionTemplate: (x) => x?.clientName,\r\n\t\ttriggerMapper: (x) => x?.clientName\r\n\t})\r\n\t@Display($localize`:@@projects:Projects`)\r\n\tpublic clientJoins?: FaqClient[];\r\n\r\n\t/**\r\n\t * Associated departments\r\n\t * @type {FaqDepartment[]}\r\n\t */\r\n\t@prop()\r\n\t@Column<Faq>({\r\n\t\tindex: 5,\r\n\t\tname: 'departmentJoins.department.displayName',\r\n\t\tsortBy: 'departmentJoins.Min(department.displayName)',\r\n\t\tcontent: (x) => x ? Utils.joinArray(x.departmentJoins?.map(y => y.department?.displayName ?? '') ?? []) : undefined,\r\n\t\tdisplay: Grid.Lg,\r\n\t\tmaxWidth: 200,\r\n\t\thide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n\t})\r\n\t@FormField<Faq, FaqDepartment>({\r\n\t\trow: 5,\r\n\t\tendpoint: 'department',\r\n\t\tparams: (x) => ({\r\n\t\t\tenabled: true,\r\n\t\t\tprojection: 'id,displayName',\r\n\t\t\tsortBy: 'id',\r\n\t\t\tclientId: x.clientJoins?.map(y => y.clientId)\r\n\t\t}),\r\n\t\tmultiple: true,\r\n\t\ttriggerMode: 'chip',\r\n\t\thide: (_, __, ctx: any) => (!ctx.isAdmin && !ctx.isClientAdmin) || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n\t\tcompareWith: (o, v) => o.departmentId === v.departmentId,\r\n\t\tmapper: (x: { id: number, displayName: string }[]) => x.map(y => new FaqDepartment({ departmentId: y.id, departmentName: y.displayName })),\r\n\t\toptionTemplate: (x) => x?.departmentName,\r\n\t\ttriggerMapper: (x) => x?.departmentName\r\n\t})\r\n\t@Display($localize`:@@departments:Departments`)\r\n\tpublic departmentJoins?: FaqDepartment[];\r\n\r\n\t/**\r\n\t * Display order of the FAQ\r\n\t * @type {number}\r\n\t */\r\n\t@prop()\r\n\t@FormField({ row: 20 })\r\n\t@Display($localize`:@@ordering:Ordering`)\r\n\tpublic ordering?: number;\r\n\r\n\t/**\r\n\t * The answer text\r\n\t * @type {string}\r\n\t */\r\n\t@required()\r\n\t@FormField({\r\n\t\trow: 50,\r\n\t\ttype: FormFieldType.Editor\r\n\t})\r\n\t@Display($localize`:@@answer:Answer`)\r\n\tpublic answer?: string;\r\n\r\n\t/**\r\n\t * Indicates if the FAQ is enabled\r\n\t * @type {boolean}\r\n\t */\r\n\t@prop()\r\n\t@Column({\r\n\t\tindex: 100,\r\n\t\tevent: 'toggle'\r\n\t})\r\n\t@FormField({ row: 100 })\r\n\t@Display($localize`:@@enabled:Enabled`)\r\n\tpublic enabled?: boolean;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param init - Partial initialization object\r\n\t */\r\n\tpublic constructor(init?: Partial<Faq>) {\r\n\t\tsuper(init);\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Faq } from '../models/faq';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FaqService extends GenericService<Faq> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('faq');\r\n\t}\r\n}","\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ChangeDetectionStrategy, Component, inject } 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 { FileService, GenericReactiveFormComponent, MatFormFieldEditorDirective, RxReactiveFormsModule, VdEditorDirective, VdGenericFormComponent, VdLayoutCardOverComponent, VdLayoutNavComponent } from '@messaia/cdk';\r\nimport { VdAuditComponent } from '@messaia/cdk-base';\r\nimport { EditorModule } from '@tinymce/tinymce-angular';\r\nimport { CmsSettings } from '../../models/cms-settings';\r\nimport { Faq } from '../../models/faq';\r\nimport { FaqService } from '../../services/faq';\r\n\r\n@Component({\r\n selector: 'app-faq-form',\r\n templateUrl: './faq-form.html',\r\n changeDetection: ChangeDetectionStrategy.Eager,\r\n imports: [\r\n ReactiveFormsModule,\r\n RxReactiveFormsModule,\r\n EditorModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatButtonModule,\r\n MatFormFieldEditorDirective,\r\n VdLayoutNavComponent,\r\n VdLayoutCardOverComponent,\r\n VdGenericFormComponent,\r\n VdEditorDirective,\r\n VdAuditComponent\r\n ]\r\n})\r\nexport class FaqFormComponent extends GenericReactiveFormComponent<Faq, FaqService> {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n public override settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor(\r\n protected override service: FaqService,\r\n protected fileService: FileService,\r\n protected httpClient: HttpClient\r\n ) {\r\n super(Faq, service);\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiClients) {\r\n this.include('ClientJoins', true);\r\n }\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiDepartments) {\r\n this.include('DepartmentJoins', true);\r\n }\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 /* Get some props from route snapshot */\r\n this.route.data.subscribe((data: any) => {\r\n this.formValidation = data.formValidation;\r\n });\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n /**\r\n * Shows client joins in the form\r\n * @returns \r\n */\r\n public showClientJoins(): boolean {\r\n return (!this.canCreate || (!this.settings?.multitenantable && !this.settings?.multiClients)) || this.isClientAdmin;\r\n }\r\n}","<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"FAQ\" i18n-toolbarTitle=\"@@faq\" [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 <mat-accordion [multi]=\"!isEditMode\">\r\n <!-- #region Details -->\r\n <mat-expansion-panel expanded=\"true\" id=\"details\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n <ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n <mat-label>{{field.label}}</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 </vd-generic-form>\r\n </ng-template>\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 || true) {\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 </mat-expansion-panel>\r\n <!-- #endregion -->\r\n <!-- #region Audit -->\r\n @if (isEditMode) {\r\n <mat-expansion-panel id=\"audit\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <span i18n=\"@@audit\">Audit</span>\r\n </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 </vd-layout-card-over>\r\n </form>\r\n }\r\n</vd-layout-nav>","export enum TemplateType {\r\n Email,\r\n Pdf\r\n}","export enum TemplateEngine {\r\n Razor,\r\n Fluid,\r\n Scriban\r\n}","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class TemplateClient {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public templateId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public clientId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public client?: any;\r\n\r\n /**\r\n * @property\r\n */\r\n public clientName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<TemplateClient>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class TemplateDepartment {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public templateId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public departmentId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public department?: any;\r\n\r\n /**\r\n * @property\r\n */\r\n public departmentName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<TemplateDepartment>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { AuditEntity, Column, Display, FormField, FormFieldType, Grid, prop, required, Table, Utils } from \"@messaia/cdk\";\r\nimport { Attachment } from \"@messaia/cdk-base\";\r\nimport { TemplateEngine } from \"../enums/template-engine\";\r\nimport { TemplateType } from \"../enums/template-type\";\r\nimport { TemplateClient } from \"./template-client\";\r\nimport { TemplateDepartment } from \"./template-department\";\r\n\r\n@Table({\r\n\tendpoint: 'template',\r\n\tprojection: ['id', 'createdDate', 'name', 'key', 'subject', 'engine', 'type', 'reviewed', 'enabled'],\r\n\tduplicable: true\r\n})\r\nexport class Template extends AuditEntity {\r\n\t/**\r\n\t * @property Defines the template engine (e.g. Razor, Fluid).\r\n\t * @description Determines how the template content is processed and rendered.\r\n\t * @type {TemplateEngine | undefined}\r\n\t */\r\n\t@required()\r\n\t@Column({\r\n\t\tindex: 20,\r\n\t\tenumType: TemplateEngine,\r\n\t\tmaxWidth: 150,\r\n\t\tdisplay: Grid.Lg\r\n\t})\r\n\t@FormField({\r\n\t\trow: 20,\r\n\t\tenumType: TemplateEngine,\r\n\t\tfieldSets: ['details']\r\n\t})\r\n\t@Display($localize`:@@engine:Engine`)\r\n\tpublic engine?: TemplateEngine;\r\n\r\n\t/**\r\n\t * @property Defines the template type (e.g. Email, PDF).\r\n\t * @description Determines how the template content is interpreted and rendered.\r\n\t * @type {TemplateType}\r\n\t */\r\n\t@required()\r\n\t@FormField({\r\n\t\trow: 20,\r\n\t\tenumType: TemplateType,\r\n\t\tfieldSets: ['details']\r\n\t})\r\n\t@Display($localize`:@@type:Type`)\r\n\tpublic type: TemplateType = TemplateType.Email;\r\n\r\n\t/**\r\n\t * @property Human-readable name of the template.\r\n\t * @description Used for identification in lists and selectors.\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@required()\r\n\t@Column({ index: 1 })\r\n\t@FormField({\r\n\t\trow: 10,\r\n\t\tfieldSets: ['details']\r\n\t})\r\n\t@Display($localize`:@@name:Name`)\r\n\tpublic name?: string;\r\n\r\n\t/**\r\n\t * @property Draft template reference.\r\n\t * @description Selecting a draft loads its content into the editor.\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@prop()\r\n\t@FormField<Template>({\r\n\t\trow: 15,\r\n\t\tendpoint: 'templateDoc',\r\n\t\toptionTextProperty: 'key',\r\n\t\toptionValueProperty: 'key',\r\n\t\tfieldSets: ['details'],\r\n\t\tchange: (_, __, ___, ctx: any) => ctx?.loadDraft()\r\n\t})\r\n\t@Display($localize`:@@draft:Draft`)\r\n\tpublic draft?: string;\r\n\r\n\t/**\r\n\t * @property Template subject.\r\n\t * @description Typically used for email-based templates.\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@prop()\r\n\t@Column({ index: 10, maxWidth: 250, display: Grid.Lg })\r\n\t@FormField({\r\n\t\trow: 30,\r\n\t\tfieldSets: ['details']\r\n\t})\r\n\t@Display($localize`:@@subject:Subject`)\r\n\tpublic subject?: string;\r\n\r\n\t/**\r\n\t * @property Unique template key.\r\n\t * @description Used for programmatic access and lookup.\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@required()\r\n\t@Column({ index: 30, maxWidth: 150, display: Grid.Lg })\r\n\t@FormField({\r\n\t\trow: 10,\r\n\t\tfieldSets: ['details']\r\n\t})\r\n\t@Display('Key')\r\n\tpublic key?: string;\r\n\r\n\t/**\r\n\t * @property Internal notice.\r\n\t * @description Informational text not included in rendered output.\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@prop()\r\n\t@FormField({\r\n\t\trow: 40,\r\n\t\ttype: FormFieldType.TextArea,\r\n\t\tfieldSets: ['details']\r\n\t})\r\n\t@Display($localize`:@@notice:Notice`)\r\n\tpublic notice?: string;\r\n\r\n\t/**\r\n\t * @property Email address.\r\n\t * @description Optional sender or reply-to address.\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@prop()\r\n\t@Display($localize`:@@email:Email`)\r\n\tpublic email?: string;\r\n\r\n\t/**\r\n\t * @property Template content.\r\n\t * @description Main rendered body (HTML, text, etc.).\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@required()\r\n\tpublic content?: string;\r\n\r\n\t/**\r\n\t * @property Dummy data.\r\n\t * @description Sample data used for previewing the template.\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@prop()\r\n\tpublic dummyData?: string;\r\n\r\n\t/**\r\n\t * @property Client associations.\r\n\t * @description Controls template visibility in multi-client environments.\r\n\t * @type {TemplateClient[] | undefined}\r\n\t */\r\n\t@required({ conditionalExpression: (x: Template) => true })\r\n\t@Column<Template>({\r\n\t\tindex: 40,\r\n\t\tfilter: 'clientJoins.client.displayName',\r\n\t\tsortBy: 'clientJoins.Min(client.displayName)',\r\n\t\tcontent: (x) =>\r\n\t\t\tx ? Utils.joinArray(x.clientJoins?.map(y => y.client?.displayName ?? '') ?? []) : undefined,\r\n\t\tdisplay: Grid.Lg,\r\n\t\tmaxWidth: 200,\r\n\t\thide: (_, __, ctx: any) =>\r\n\t\t\t(!ctx.canCreate || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients)) || ctx.isClientAdmin,\r\n\t})\r\n\t@FormField<Template, TemplateClient>({\r\n\t\trow: 1,\r\n\t\tendpoint: 'client',\r\n\t\tparams: () => ({\r\n\t\t\tenabled: true,\r\n\t\t\tprojection: 'id,displayName',\r\n\t\t\tsortBy: 'id'\r\n\t\t}),\r\n\t\tmultiple: true,\r\n\t\ttriggerMode: 'chip',\r\n\t\tfieldSets: ['details'],\r\n\t\thide: (_, __, ctx: any) =>\r\n\t\t\t(!ctx.canCreate || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients)) || ctx.isClientAdmin,\r\n\t\tcompareWith: (o, v) => o.clientId === v.clientId,\r\n\t\tmapper: (x: { id: number; displayName: string }[]) =>\r\n\t\t\tx.map(y => new TemplateClient({ clientId: y.id, clientName: y.displayName })),\r\n\t\toptionTemplate: (x) => x?.clientName,\r\n\t\ttriggerMapper: (x) => x?.clientName\r\n\t})\r\n\t@Display($localize`:@@projects:Projects`)\r\n\tpublic clientJoins?: TemplateClient[];\r\n\r\n\t/**\r\n\t * @property Department associations.\r\n\t * @description Further restricts template visibility by department.\r\n\t * @type {TemplateDepartment[] | undefined}\r\n\t */\r\n\t@prop()\r\n\t@Column<Template>({\r\n\t\tindex: 50,\r\n\t\tfilter: 'departmentJoins.department.displayName',\r\n\t\tsortBy: 'departmentJoins.Min(department.displayName)',\r\n\t\tcontent: (x) =>\r\n\t\t\tx ? Utils.joinArray(x.departmentJoins?.map(y => y.department?.displayName ?? '') ?? []) : undefined,\r\n\t\tdisplay: Grid.Lg,\r\n\t\tmaxWidth: 200,\r\n\t\thide: (_, __, ctx: any) =>\r\n\t\t\t!ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n\t})\r\n\t@FormField<Template, TemplateDepartment>({\r\n\t\trow: 2,\r\n\t\tendpoint: 'department',\r\n\t\tparams: (x) => ({\r\n\t\t\tenabled: true,\r\n\t\t\tprojection: 'id,displayName',\r\n\t\t\tsortBy: 'id',\r\n\t\t\tclientId: x.clientJoins?.map(y => y.clientId)\r\n\t\t}),\r\n\t\tmultiple: true,\r\n\t\ttriggerMode: 'chip',\r\n\t\tfieldSets: ['details'],\r\n\t\thide: (_, __, ctx: any) =>\r\n\t\t\t(!ctx.isAdmin && !ctx.isClientAdmin) || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n\t\tcompareWith: (o, v) => o.departmentId === v.departmentId,\r\n\t\tmapper: (x: { id: number; displayName: string }[]) =>\r\n\t\t\tx.map(y => new TemplateDepartment({ departmentId: y.id, departmentName: y.displayName })),\r\n\t\toptionTemplate: (x) => x?.departmentName,\r\n\t\ttriggerMapper: (x) => x?.departmentName\r\n\t})\r\n\t@Display($localize`:@@departments:Departments`)\r\n\tpublic departmentJoins?: TemplateDepartment[];\r\n\r\n\t/**\r\n\t * @property Reviewed flag.\r\n\t * @description Indicates whether the template is active and selectable.\r\n\t * @type {boolean | undefined}\r\n\t */\r\n\t@prop()\r\n\t@Column({\r\n\t\tindex: 60,\r\n\t\twidth: 100,\r\n\t\tdisabled: true\r\n\t})\r\n\t@FormField({\r\n\t\trow: 100,\r\n\t\tfieldSets: ['details'],\r\n\t\treadonly: _ => true\r\n\t})\r\n\t@Display($localize`:@@reviewed:Reviewed`)\r\n\tpublic reviewed?: true;\r\n\r\n\t/**\r\n\t * @property Enabled flag.\r\n\t * @description Indicates whether the template is active and selectable.\r\n\t * @type {boolean | undefined}\r\n\t */\r\n\t@prop()\r\n\t@Column({ index: 70, event: 'toggle' })\r\n\t@FormField({\r\n\t\trow: 100,\r\n\t\tfieldSets: ['details']\r\n\t})\r\n\t@Display($localize`:@@enabled:Enabled`)\r\n\tpublic enabled?: true;\r\n\r\n\t/**\r\n\t * @property Attachments.\r\n\t * @description Files attached to the template (e.g. email attachments).\r\n\t * @type {Attachment[]}\r\n\t */\r\n\t@prop()\r\n\tpublic attachments: Attachment[] = [];\r\n}\r\n","import { TemplateType } from \"../enums/template-type\";\r\n\r\nexport class TemplatePreview {\r\n /**\r\n * @property\r\n */\r\n public type?: TemplateType\r\n\r\n /**\r\n * @property\r\n */\r\n public endpoint?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n public displayName?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n public entityName?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n public entityId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public templateId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public email?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n public subject?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n public content?: string;\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<TemplatePreview>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { TemplatePreview } from '../models/template-preview';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TemplatePreviewService extends GenericService<TemplatePreview> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('templatePreview');\r\n\t}\r\n}","\r\nimport { ChangeDetectionStrategy, Component, ElementRef, Inject, ViewChild } from '@angular/core';\r\nimport { FormsModule, NgModel } from '@angular/forms';\r\nimport { MatCard } from '@angular/material/card';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatDivider } from '@angular/material/divider';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { BaseComponent, VdChipsComponent } from '@messaia/cdk';\r\nimport { saveAs } from 'file-saver';\r\nimport { PDFSource, PdfViewerModule } from 'ng2-pdf-viewer';\r\nimport { TemplateType } from '../../enums/template-type';\r\nimport { TemplatePreview } from '../../models/template-preview';\r\nimport { TemplatePreviewService } from '../../services/template-preview';\r\n\r\n@Component({\r\n selector: 'app-template-preview',\r\n templateUrl: 'template-preview-dialog.html',\r\n styleUrls: ['template-preview-dialog.scss'],\r\n changeDetection: ChangeDetectionStrategy.Eager,\r\n imports: [\r\n MatIcon,\r\n MatFormFieldModule,\r\n MatProgressBarModule,\r\n MatDivider,\r\n MatCard,\r\n VdChipsComponent,\r\n FormsModule,\r\n PdfViewerModule\r\n ]\r\n})\r\nexport class TemplatePreviewDialogComponent extends BaseComponent {\r\n\r\n /**\r\n * TemplateType\r\n */\r\n public TemplateType: typeof TemplateType = TemplateType;\r\n\r\n /**\r\n * Pdf blob\r\n */\r\n public pdfBlob?: Blob;\r\n\r\n /**\r\n * PDF source\r\n */\r\n public pdfSrc?: string | Uint8Array | PDFSource;\r\n\r\n /**\r\n * Pdf zoom\r\n */\r\n public zoom = 0.98;\r\n\r\n /**\r\n * Pdf zoom scale\r\n */\r\n public zoomScale: 'page-height' | 'page-fit' | 'page-width' = 'page-width';\r\n\r\n /**\r\n * Track whether the dialog is maximized\r\n */\r\n public isMaximized = false;\r\n\r\n /* \r\n * Reference to the iframe element. \r\n * This will be used to manipulate the iframe's content programmatically.\r\n * 'static: false' indicates that the reference is resolved after view initialization.\r\n */\r\n @ViewChild('iframeRef', { static: false })\r\n public iframeRef?: ElementRef;\r\n\r\n /* \r\n * Reference to the NgModel directive for the input element.\r\n */\r\n @ViewChild('email')\r\n public emailModel?: NgModel;\r\n\r\n /**\r\n * Constructor\r\n * @param dialogRef \r\n * @param data \r\n */\r\n constructor(\r\n protected service: TemplatePreviewService,\r\n public dialogRef: MatDialogRef<TemplatePreviewDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: TemplatePreview\r\n ) {\r\n super()\r\n this.data.email = localStorage.getItem('templatePreviewEmail') ?? '';\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 /* Set loading state to true */\r\n this.isLoading = true;\r\n\r\n if (this.data.type == TemplateType.Pdf) {\r\n this.service.create(this.data, undefined, { responseType: 'arraybuffer' }).subscribe({\r\n next: (x) => {\r\n /* Set loading state to false */\r\n this.isLoading = false;\r\n\r\n /* Create a Blob from the response */\r\n this.pdfBlob = new Blob([<any>x], { type: 'application/pdf' });\r\n\r\n /* Create a URL for the PDF Blob */\r\n this.pdfSrc = URL.createObjectURL(this.pdfBlob);\r\n },\r\n error: () => {\r\n /* Handle error and set loading state to false */\r\n this.isLoading = false;\r\n }\r\n });\r\n } else {\r\n this.service.create(this.data).subscribe({\r\n next: (x: any) => {\r\n /* Set loading state to false */\r\n this.isLoading = false;\r\n\r\n /* Merge response data with existing data */\r\n Object.assign(this.data, x);\r\n\r\n /* Get the iframe element from the template reference variable */\r\n const iframe = this.iframeRef?.nativeElement;\r\n if (iframe) {\r\n /* Access the document object of the iframe */\r\n const doc = iframe.contentDocument || iframe.contentWindow.document;\r\n\r\n /* Write the HTML content to the iframe */\r\n doc.open();\r\n doc.write(x?.content ?? '');\r\n doc.close();\r\n }\r\n },\r\n error: () => {\r\n /* Handle error and set loading state to false */\r\n this.isLoading = false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Sends a mail\r\n */\r\n public sendMail() {\r\n /* Throw an exception if this.data.email is null */\r\n if (this.data.email == null) {\r\n throw new Error('Email is null. Cannot send mail.');\r\n }\r\n\r\n this.service.create(this.data, '/sendMail').subscribe({\r\n next: (x) => {\r\n this.isLoading = false;\r\n localStorage.setItem('templatePreviewEmail', this.data.email!);\r\n this.snackBarService.open($localize`:@@snackbar.send.success:Data sent successfully.`, undefined, {\r\n duration: 3000,\r\n panelClass: ['primary']\r\n });\r\n },\r\n error: () => this.isLoading = false\r\n });\r\n }\r\n\r\n /**\r\n * Downloads the pdf\r\n */\r\n public download(): void {\r\n saveAs(this.pdfBlob!, \"Pdf.pdf\");\r\n }\r\n\r\n /**\r\n * Zooms in the pdf\r\n */\r\n public zoomIn(): void {\r\n this.zoom += 0.1;\r\n }\r\n\r\n /**\r\n * Zooms out the pdf\r\n */\r\n public zoomOut(): void {\r\n this.zoom += -0.1;\r\n }\r\n\r\n /**\r\n * Closes the dialog\r\n */\r\n public cancel(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n /**\r\n * Toggle the dialog between maximized and normal size\r\n */\r\n public toggleMaximize() {\r\n this.isMaximized = !this.isMaximized;\r\n /* Apply or remove the full-screen class based on the isMaximized flag */\r\n if (this.isMaximized) {\r\n this.dialogRef.addPanelClass('full-screen');\r\n } else {\r\n this.dialogRef.removePanelClass('full-screen');\r\n }\r\n }\r\n}","<div mat-dialog-title>\r\n <span i18n=\"@@templatePreview\">Template preview</span>\r\n <span flex></span>\r\n @if (data.type == TemplateType.Pdf && pdfSrc ||true) {\r\n <div>\r\n <a mat-icon-button (click)=\"download()\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">download</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomIn()\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">zoom_in</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomOut()\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">zoom_out</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"toggleMaximize()\" class=\"maximize-button\">\r\n <mat-icon>{{ isMaximized ? 'fullscreen_exit' : 'fullscreen' }}</mat-icon>\r\n </a>\r\n </div>\r\n }\r\n</div>\r\n<form #form=\"ngForm\" novalidate layout=\"column\" flex>\r\n <!-- #region Entity -->\r\n @if (data.endpoint) {\r\n <div layout=\"row\" flex>\r\n <mat-form-field flex layout-margin>\r\n <mat-label>{{data.entityName}}</mat-label>\r\n <vd-chips [(ngModel)]=\"data.entityId\" [endpoint]=\"data.endpoint\" [params]=\"{sortBy: 'id'}\" text=\"displayName\" name=\"entityId\" #entityId=\"ngModel\" [placeholder]=\"data.entityName??''\" required flex>\r\n <ng-template vd-chip let-entity=\"chip\">\r\n <span>{{entity[data.displayName??'']}}</span>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-entity=\"option\">\r\n <span>{{entity[data.displayName??'']}}</span>\r\n </ng-template>\r\n </vd-chips>\r\n @if (entityId.errors!['required']) {\r\n <mat-error><span>{{data.entityName}}</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n }\r\n <!-- #endregion -->\r\n\r\n @if (isLoading) {\r\n <div layout=\"column\" layout-gt-sm=\"row\" class=\"push-bottom\" flex>\r\n <div flex layout-margin>\r\n <div class=\"push-bottom-sm\" i18n=\"@@pleaseWait\">Please Wait...</div>\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- #region PDF Content -->\r\n @if (data.type == TemplateType.Pdf) {\r\n <mat-card flex>\r\n @if (data.type == TemplateType.Pdf && pdfSrc) {\r\n <pdf-viewer [src]=\"pdfSrc\" [render-text]=\"true\" [zoom]=\"zoom\" [zoom-scale]=\"zoomScale\" [show-borders]=\"true\" [original-size]=\"false\" [autoresize]=\"true\"></pdf-viewer>\r\n }\r\n </mat-card>\r\n }\r\n <!-- #region Content -->\r\n\r\n @if (data.type != TemplateType.Pdf) {\r\n <div layout=\"column\" class=\"pad-top-none\" layout-padding margin-layout flex>\r\n <!-- #region Content -->\r\n <div class=\"pad-top-none\" layout-padding margin-layout flex>\r\n <iframe #iframeRef frameborder=\"0\"></iframe>\r\n </div>\r\n <!-- #endregion -->\r\n <!-- #region Email-->\r\n <div layout-gt-sm=\"row\" layout=\"column\" class=\"pad-top\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label i18n=\"@@email\">Email</mat-label>\r\n <input matInput type=\"email\" name=\"email\" [(ngModel)]=\"data.email\" #email=\"ngModel\" email placeholder=\"Email\" i18n-placeholder=\"@@email\">\r\n @if (email.errors && email.errors!['required']) {\r\n <mat-error><span i18n=\"@@email\">Email</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n }\r\n @if (!email.errors!['required'] && email.errors!['email']) {\r\n <mat-error><span i18n=\"@@email\">Email</span><span i18n=\"@@isInvalid\"> is invalid</span></mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n </div>\r\n }\r\n <mat-divider></mat-divider>\r\n <div mat-dialog-actions class=\"pad-left\">\r\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"cancel()\" [autofocus]=\"true\" i18n=\"@@close\">Close</button>\r\n <button type=\"button\" mat-flat-button (click)=\"sendMail()\" [disabled]=\"data.email == undefined || !emailModel?.valid\" i18n=\"@@sendMail\">Send mail</button>\r\n </div>\r\n</form>","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Template } from '../models/template';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TemplateService extends GenericService<Template> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('template');\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Template } from '../models/template';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TemplateDocService extends GenericService<Template> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('templateDoc');\r\n\t}\r\n}","\r\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { CodemirrorModule } from '@ctrl/ngx-codemirror';\r\nimport { FileService, GenericReactiveFormComponent, RxReactiveFormsModule, VdGenericFormComponent, VdLayoutCardOverComponent, VdLayoutNavComponent } from '@messaia/cdk';\r\nimport { Attachment, VdAuditComponent } from '@messaia/cdk-base';\r\nimport 'codemirror/addon/edit/closetag';\r\nimport 'codemirror/addon/edit/matchbrackets';\r\nimport 'codemirror/addon/selection/active-line';\r\nimport 'codemirror/mode/htmlmixed/htmlmixed';\r\nimport 'codemirror/mode/javascript/javascript';\r\nimport { saveAs } from 'file-saver';\r\nimport { TemplateType } from '../../enums/template-type';\r\nimport { CmsSettings } from '../../models/cms-settings';\r\nimport { Template } from '../../models/template';\r\nimport { TemplatePreview } from '../../models/template-preview';\r\nimport { TemplateService } from '../../services/template';\r\nimport { TemplateDocService } from '../../services/template-doc';\r\nimport { TemplatePreviewDialogComponent } from '../template-preview-dialog/template-preview-dialog';\r\n\r\n@Component({\r\n selector: 'app-template-form',\r\n templateUrl: './template-form.html',\r\n styleUrls: ['./template-form.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.Eager,\r\n imports: [\r\n ReactiveFormsModule,\r\n RxReactiveFormsModule,\r\n CodemirrorModule,\r\n MatExpansionModule,\r\n MatButtonModule,\r\n VdLayoutNavComponent,\r\n VdLayoutCardOverComponent,\r\n VdGenericFormComponent,\r\n VdAuditComponent\r\n ]\r\n})\r\nexport class TemplateFormComponent extends GenericReactiveFormComponent<Template, TemplateService> {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n public override settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Represents the available template types.\r\n */\r\n public TemplateType: typeof TemplateType = TemplateType;\r\n\r\n /**\r\n * Retrieves the attachments form control.\r\n */\r\n get attachmentsControl() { return this.form.controls['attachments']; }\r\n\r\n /**\r\n * Configuration options for the HTML editor.\r\n */\r\n public override editorOptions: any = {\r\n lineNumbers: true,\r\n theme: 'material',\r\n autoCloseTags: true,\r\n styleActiveLine: true,\r\n mode: 'text/html',\r\n profile: 'xhtml'\r\n };\r\n\r\n /**\r\n * Configuration options for the JSON editor.\r\n */\r\n public jsonEditorOptions: any = {\r\n lineNumbers: true,\r\n theme: 'material',\r\n autoCloseTags: true,\r\n styleActiveLine: true,\r\n mode: {\r\n name: \"javascript\",\r\n json: true,\r\n statementIndent: 2\r\n },\r\n profile: 'xhtml',\r\n lineWrapping: true,\r\n indentWithTabs: false,\r\n tabSize: 2\r\n };\r\n\r\n /**\r\n * Initializes an instance of TemplateFormComponent.\r\n */\r\n constructor(\r\n protected override service: TemplateService,\r\n protected templateDocService: TemplateDocService,\r\n protected fileService: FileService,\r\n protected override dialog: MatDialog\r\n ) {\r\n super(Template, service);\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiClients) {\r\n this.include('ClientJoins', true);\r\n }\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiDepartments) {\r\n this.include('DepartmentJoins', true);\r\n }\r\n }\r\n\r\n /**\r\n * Removes an attachment from the form.\r\n * @param attachment The attachment to remove.\r\n */\r\n public removeAttachment(attachment: Attachment): void {\r\n if (Array.isArray(this.item?.attachments)) {\r\n var index = this.attachmentsControl.value.indexOf(attachment, 0);\r\n if (index > -1) {\r\n this.dialogService.openConfirm({\r\n message: 'Möchten Sie diesen Anhang wirklich löschen?',\r\n title: 'Löschen bestätigen',\r\n cancelButton: $localize`:@@cancel:Cancel`,\r\n acceptButton: $localize`:@@yes:Yes`,\r\n }).afterClosed().subscribe((accept: boolean) => {\r\n if (accept) {\r\n this.attachmentsControl.value.splice(index, 1);\r\n this.attachmentsControl.updateValueAndValidity();\r\n this.attachmentsControl.markAsDirty();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Handles file upload for attachments.\r\n * @param $event The file input event.\r\n */\r\n public uploadAttachment($event: Event): void {\r\n let file = (($event?.target as HTMLInputElement).files ?? [])[0];\r\n if (file != null) {\r\n // this.fileService.upload(file, `upload`, { clientId: this.item.clientId, path: `${this.item.clientId ? '' : 'common/'}docs` }).subscribe(event => {\r\n // \tif (event.type === HttpEventType.UploadProgress) {\r\n\r\n // \t\t/* Calculate the progress percentage */\r\n // \t\tconst percentDone = Math.round(100 * event.loaded / event.total);\r\n\r\n // \t\t/* Pass the percentage into the progress-stream */\r\n // \t\tconsole.info(percentDone);\r\n // \t} else if (event instanceof HttpResponse) {\r\n // \t\t/* Add our attachments */\r\n // \t\tthis.attachmentsControl.setValue([...this.attachmentsControl.value, <Attachment>event.body]);\r\n // \t\tthis.attachmentsControl.updateValueAndValidity();\r\n // \t\tthis.attachmentsControl.markAsDirty();\r\n // \t}\r\n // });\r\n }\r\n }\r\n\r\n /**\r\n * Initiates a download for the specified attachment.\r\n * @param attachment The attachment to download.\r\n */\r\n public downloadAttachment(attachment: Attachment): void {\r\n if (attachment.id) {\r\n this.service.download(`downloadAttachment/${attachment.id}`).subscribe(x => {\r\n saveAs(new Blob([x.data], { type: '' }), x.filename);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Opens a preview dialog for the template.\r\n */\r\n public showPreview(): void {\r\n this.dialog.open(TemplatePreviewDialogComponent, {\r\n width: this.item?.type == TemplateType.Pdf ? '1020px' : '920px',\r\n data: new TemplatePreview({\r\n templateId: this.item?.id,\r\n type: this.item?.type\r\n }),\r\n panelClass: ['dialog-full-screen']\r\n }).afterClosed().subscribe();\r\n }\r\n\r\n /**\r\n * Loads a draft version of the template.\r\n */\r\n public loadDraft(): void {\r\n this.templateDocService.get(`${this.item?.draft}`).subscribe(x => {\r\n this.form.patchValue(<Template>{\r\n subject: x.subject?.length > 0 ? x.subject : this.item?.subject,\r\n content: x.content\r\n });\r\n this.form.markAllAsTouched();\r\n });\r\n }\r\n}","<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [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 <mat-accordion [multi]=\"!isEditMode\">\r\n <!-- #region Details -->\r\n <mat-expansion-panel expanded=\"true\" id=\"details\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [fieldSets]=\"['details']\" [context]=\"this\"></vd-generic-form>\r\n </ng-template>\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)=\"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 </mat-expansion-panel>\r\n <!-- #endregion -->\r\n <!-- #region Content -->\r\n <mat-expansion-panel id=\"content\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <span i18n=\"@@content\">Content</span>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <div layout-margin>\r\n <ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n </div>\r\n </ng-template>\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)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n }\r\n @if (isEditMode) {\r\n <button type=\"button\" mat-button (click)=\"showPreview()\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</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 </mat-expansion-panel>\r\n <!-- #endregion -->\r\n <!-- #region Content -->\r\n <mat-expansion-panel id=\"testData\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <span i18n=\"@@testData\">Test Data</span>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <div layout-margin>\r\n <ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n </div>\r\n </ng-template>\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)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n }\r\n @if (isEditMode) {\r\n <button type=\"button\" mat-button (click)=\"showPreview()\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</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 </mat-expansion-panel>\r\n <!-- #endregion -->\r\n <!-- #region Audit -->\r\n @if (isEditMode) {\r\n <mat-expansion-panel id=\"audit\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <span i18n=\"@@audit\">Audit</span>\r\n </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 </vd-layout-card-over>\r\n </form>\r\n }\r\n</vd-layout-nav>","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class ContentVariableClient {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public contentVariableId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public clientId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public client?: any;\r\n\r\n /**\r\n * @property\r\n */\r\n public clientName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<ContentVariableClient>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class ContentVariableDepartment {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public contentVariableId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public departmentId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public department?: any;\r\n\r\n /**\r\n * @property\r\n */\r\n public departmentName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<ContentVariableDepartment>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { Api, AuditEntity, Column, Display, FormField, Grid, prop, required, Table, Utils } from \"@messaia/cdk\";\r\nimport { ContentVariableClient } from \"./content-variable-client\";\r\nimport { ContentVariableDepartment } from \"./content-variable-department\";\r\n\r\n@Api('contentvariable')\r\n@Table({\r\n endpoint: 'contentvariable',\r\n projection: ['id', 'createdDate', 'name', 'value', 'enabled']\r\n})\r\nexport class ContentVariable extends AuditEntity {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public title?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n @FormField({ row: 10 })\r\n @Column({})\r\n @Display($localize`:@@name:Name`)\r\n public name?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n @FormField({ row: 11 })\r\n @Column({ display: Grid.Sm })\r\n @Display($localize`:@@value:Value`)\r\n public value?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n @required({ conditionalExpression: (x: ContentVariable) => true })\r\n @Column<ContentVariable>({\r\n index: 5,\r\n name: 'clientJoins.client.displayName',\r\n sortBy: 'clientJoins.Min(client.displayName)',\r\n content: (x) => x ? Utils.joinArray(x?.clientJoins?.map(y => y.client?.displayName ?? '') ?? []) : undefined,\r\n display: Grid.Lg,\r\n maxWidth: 200,\r\n hide: (_, __, ctx: any) => (!ctx.canCreate || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients)) || ctx.isClientAdmin,\r\n })\r\n @FormField<ContentVariable, ContentVariableClient>({\r\n row: 1,\r\n endpoint: 'client',\r\n params: () => {\r\n return {\r\n enabled: true,\r\n projection: 'id,displayName',\r\n sortBy: 'id'\r\n }\r\n },\r\n multiple: true,\r\n hide: (_, __, ctx: any) => (!ctx.canCreate || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients)) || ctx.isClientAdmin,\r\n compareWith: (o, v) => o.clientId === v.clientId,\r\n mapper: (x: { id: number, displayName: string }[]) => x.map(y => new ContentVariableClient({ clientId: y.id, clientName: y.displayName })),\r\n optionTemplate: (x) => x?.clientName,\r\n triggerMapper: (x) => x?.clientName\r\n })\r\n @Display($localize`:@@projects:Projects`)\r\n public clientJoins?: ContentVariableClient[];\r\n\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n @Column<ContentVariable>({\r\n index: 5,\r\n name: 'departmentJoins.department.displayName',\r\n sortBy: 'departmentJoins.Min(department.displayName)',\r\n content: (x) => x ? Utils.joinArray(x.departmentJoins?.map(y => y.department?.displayName ?? '') ?? []) : undefined,\r\n display: Grid.Lg,\r\n maxWidth: 200,\r\n hide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n })\r\n @FormField<ContentVariable, ContentVariableDepartment>({\r\n row: 2,\r\n endpoint: 'department',\r\n params: (x) => {\r\n return {\r\n enabled: true,\r\n projection: 'id,displayName',\r\n sortBy: 'id',\r\n clientId: x.clientJoins?.map(y => y.clientId)\r\n }\r\n },\r\n multiple: true,\r\n hide: (_, __, ctx: any) => (!ctx.isAdmin && !ctx.isClientAdmin) || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n compareWith: (o, v) => o.departmentId === v.departmentId,\r\n mapper: (x: { id: number, displayName: string }[]) => x.map(y => new ContentVariableDepartment({ departmentId: y.id, departmentName: y.displayName })),\r\n optionTemplate: (x) => x?.departmentName,\r\n triggerMapper: (x) => x?.departmentName\r\n })\r\n @Display($localize`:@@departments:Departments`)\r\n public departmentJoins?: ContentVariableDepartment[];\r\n\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n @FormField({ row: 21 })\r\n @Column({ event: 'toggle' })\r\n @Display($localize`:@@enabled:Enabled`)\r\n public enabled?: boolean;\r\n}","import {\r\n Api,\r\n AuditEntity,\r\n Column,\r\n Display,\r\n FormField,\r\n FormFieldType,\r\n Grid,\r\n prop,\r\n required,\r\n Table\r\n} from \"@messaia/cdk\";\r\n\r\n@Api('slider')\r\n@Table({\r\n projection: ['id', 'createdDate', 'client(displayName)', 'name', 'group', 'enabled'],\r\n})\r\nexport class Slider extends AuditEntity {\r\n /**\r\n * @property Slider name.\r\n * @description The title or identifier for the slider.\r\n * @type {string | undefined}\r\n */\r\n @required()\r\n @FormField({ row: 10 })\r\n @Column({})\r\n @Display($localize`:@@name:Name`)\r\n public name?: string;\r\n\r\n /**\r\n * @property Slider group.\r\n * @description A group identifier used to categorize sliders.\r\n * @type {string | undefined}\r\n */\r\n @required()\r\n @FormField({ row: 20 })\r\n @Column({ maxWidth: 150, display: Grid.Lg })\r\n @Display($localize`:@@group:Group`)\r\n public group?: string;\r\n\r\n /**\r\n * @property Slider content.\r\n * @description HTML or rich text content displayed within the slider.\r\n * @type {string | undefined}\r\n */\r\n @required()\r\n @FormField({ row: 50, type: FormFieldType.Editor })\r\n @Display($localize`:@@content:Content`)\r\n public content?: string;\r\n\r\n /**\r\n * @property Embedded style.\r\n * @description Optional CSS styling specific to this content.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({\r\n row: 60,\r\n type: FormFieldType.TextArea\r\n })\r\n @Display($localize`:@@style:Style`)\r\n public styleInline?: string;\r\n\r\n /**\r\n * @property Slider image path.\r\n * @description File path to the slider image, typically used internally.\r\n * @type {string | undefined}\r\n */\r\n @prop()\r\n public imagePath?: string;\r\n\r\n /**\r\n * @property Image file for the slider.\r\n * @description This property stores the image file for the slider, located in a common directory for slider images.\r\n * @type {string | undefined}\r\n */\r\n @FormField({\r\n row: 30,\r\n filePath: 'images/sliders',\r\n isPublicFile: true,\r\n fileExtensions: '.png,.jpg',\r\n change: (_, img, __, ctx: any) => ctx?.upload(img, 'images/sliders', true)\r\n })\r\n @Display($localize`:@@image:Image`)\r\n @prop()\r\n public image?: string;\r\n\r\n /**\r\n * @property CSS class.\r\n * @description Custom CSS class applied to the slider, useful for styling purposes.\r\n * @type {string | undefined}\r\n */\r\n @prop()\r\n @FormField({ row: 40 })\r\n @Display($localize`:@@cssClass:CSS Class`)\r\n public cssClass?: string;\r\n\r\n /**\r\n * @property Client ID.\r\n * @description Reference to the associated client or project.\r\n * @type {number | undefined}\r\n */\r\n @FormField({\r\n row: 1,\r\n endpoint: 'client?enabled=true&projection=id,name'\r\n })\r\n @Column({\r\n name: 'client.displayName',\r\n maxWidth: 250,\r\n display: Grid.Lg\r\n })\r\n @Display($localize`:@@project:Project`)\r\n @prop()\r\n public clientId?: number;\r\n\r\n /**\r\n * @property Ordering index.\r\n * @description Position of the slider in a sorted list.\r\n * @type {number | undefined}\r\n */\r\n @prop()\r\n @FormField({ row: 20 })\r\n @Display($localize`:@@ordering:Ordering`)\r\n public ordering?: number;\r\n\r\n /**\r\n * @property Enabled flag.\r\n * @description Indicates whether the slider is active or visible.\r\n * @type {boolean | undefined}\r\n */\r\n @prop()\r\n @FormField({ row: 100 })\r\n @Column({ event: 'toggle' })\r\n @Display($localize`:@@enabled:Enabled`)\r\n public enabled?: boolean;\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\n\r\nimport { AuthHelper, GlobalRoles } from \"@messaia/cdk\";\r\nimport { OidcSecurityService } from \"angular-auth-oidc-client\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Includes resolve service\r\n */\r\n@Injectable()\r\nexport class DocumentListProjectionResolve {\r\n /*\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n private settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Constructor\r\n * @param oidcSecurityService \r\n */\r\n constructor(private oidcSecurityService: OidcSecurityService,) { }\r\n\r\n /**\r\n * Resolves includes\r\n */\r\n resolve(): Observable<string[]> {\r\n var projection: any[] = [];\r\n\r\n return this.oidcSecurityService.checkAuth().pipe(map(x => {\r\n AuthHelper.user.isAuthenticated = x.isAuthenticated;\r\n if (x.userData) {\r\n AuthHelper.user = Object.assign(x.userData, {\r\n id: x.userData.sub,\r\n isAuthenticated: x.isAuthenticated\r\n });\r\n\r\n if (AuthHelper.hasRole(GlobalRoles.Administrator) && (this.settings?.multitenantable || this.settings?.multiClients)) {\r\n projection.push('client(displayName)');\r\n }\r\n\r\n if ((AuthHelper.hasRole(GlobalRoles.Administrator) || AuthHelper.hasRole(GlobalRoles.ClientAdministrator)) && (this.settings?.multitenantable || this.settings?.multiDepartments)) {\r\n projection.push('department(displayName)');\r\n }\r\n }\r\n\r\n return projection;\r\n }));\r\n }\r\n}","import { inject, Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Excluded columns resolve service\r\n */\r\n@Injectable()\r\nexport class ExcludedColumnsResolve {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n private settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Resolves excluded columns\r\n */\r\n resolve(): Observable<string[]> {\r\n return of(this.settings?.multitenantable ? [] : ['client.displayName']);\r\n }\r\n}","import { inject, Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Excluded fields resolve service\r\n */\r\n@Injectable()\r\nexport class ExcludedFieldsResolve {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n private settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Resolves excluded fields\r\n */\r\n resolve(): Observable<string[]> {\r\n return of(this.settings?.multitenantable ? [] : ['clientId']);\r\n }\r\n}","import { inject, Injectable } from \"@angular/core\";\r\n\r\nimport { AuthHelper } from \"@messaia/cdk\";\r\nimport { OidcSecurityService } from \"angular-auth-oidc-client\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Includes resolve service\r\n */\r\n@Injectable()\r\nexport class FormIncludesResolve {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n private settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Constructor\r\n * @param oidcSecurityService \r\n */\r\n constructor(private oidcSecurityService: OidcSecurityService,) { }\r\n\r\n /**\r\n * Resolves includes\r\n */\r\n resolve(): Observable<string[]> {\r\n var includes: any[] = [];\r\n\r\n return this.oidcSecurityService.checkAuth().pipe(map(x => {\r\n AuthHelper.user.isAuthenticated = x.isAuthenticated;\r\n if (x.userData) {\r\n AuthHelper.user = Object.assign(x.userData, {\r\n id: x.userData.sub,\r\n isAuthenticated: x.isAuthenticated\r\n });\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiClients) {\r\n includes.push('ClientJoins');\r\n }\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiDepartments) {\r\n includes.push('DepartmentJoins');\r\n }\r\n }\r\n\r\n return includes;\r\n }));\r\n }\r\n}","import { inject, Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Form validation resolve service\r\n */\r\n@Injectable()\r\nexport class FormValidationResolve {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n private settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Resolves Form validation\r\n */\r\n resolve(): Observable<any> {\r\n return of(this.settings?.multitenantable ? { clientId: { required: true } } : {});\r\n }\r\n}","import { inject, Injectable } from \"@angular/core\";\r\n\r\nimport { AuthHelper, GlobalRoles } from \"@messaia/cdk\";\r\nimport { OidcSecurityService } from \"angular-auth-oidc-client\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Includes resolve service\r\n */\r\n@Injectable()\r\nexport class ListProjectionResolve {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n private settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Constructor\r\n * @param oidcSecurityService \r\n */\r\n constructor(private oidcSecurityService: OidcSecurityService,) { }\r\n\r\n /**\r\n * Resolves includes\r\n */\r\n resolve(): Observable<string[]> {\r\n var projection: any[] = [];\r\n\r\n return this.oidcSecurityService.checkAuth().pipe(map(x => {\r\n AuthHelper.user.isAuthenticated = x.isAuthenticated;\r\n if (x.userData) {\r\n AuthHelper.user = Object.assign(x.userData, {\r\n id: x.userData.sub,\r\n isAuthenticated: x.isAuthenticated\r\n });\r\n\r\n if (AuthHelper.hasRole(GlobalRoles.Administrator) && (this.settings?.multitenantable || this.settings?.multiClients)) {\r\n projection.push('clientJoins(client(displayName))');\r\n }\r\n\r\n if ((AuthHelper.hasRole(GlobalRoles.Administrator) || AuthHelper.hasRole(GlobalRoles.ClientAdministrator)) && (this.settings?.multitenantable || this.settings?.multiDepartments)) {\r\n projection.push('departmentJoins(department(displayName))');\r\n }\r\n }\r\n\r\n return projection;\r\n }));\r\n }\r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, Resolve } from \"@angular/router\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Settings resolve service\r\n *\r\n * This resolver provides the CMS configuration settings for routes that depend on them.\r\n */\r\n@Injectable()\r\nexport class SettingsResolve implements Resolve<CmsSettings> {\r\n\r\n /**\r\n * Constructor injecting the CMS settings provided via Angular DI.\r\n *\r\n * @param cmsSettings - The CMS settings instance injected from the DI system.\r\n */\r\n constructor(@Inject(CmsSettings) private cmsSettings: CmsSettings) { }\r\n\r\n /**\r\n * Resolves settings for a route.\r\n *\r\n * @param route - The activated route snapshot.\r\n * @returns An observable emitting the CMS settings.\r\n */\r\n resolve(route: ActivatedRouteSnapshot): Observable<CmsSettings> {\r\n /** Return the injected settings as an observable */\r\n return of(this.cmsSettings);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { ResolveData, RouterModule, Routes } from '@angular/router';\r\nimport { AuthHelper } from '@messaia/cdk';\r\nimport { DocumentType, VdDynamicFormComponent, VdDynamicListComponent } from '@messaia/cdk-base';\r\nimport { ContentFormComponent } from './components/content-form/content-form';\r\nimport { DocumentDialogComponent } from './components/document-dialog/document-dialog';\r\nimport { FaqFormComponent } from './components/faq-form/faq-form';\r\nimport { TemplateFormComponent } from './components/template-form/template-form';\r\nimport { ContentType } from './enums/content-type';\r\nimport { Content } from './models/content';\r\nimport { ContentVariable } from './models/content-variable';\r\nimport { Document } from './models/document';\r\nimport { Faq } from './models/faq';\r\nimport { Slider } from './models/slider';\r\nimport { Template } from './models/template';\r\nimport { DocumentListProjectionResolve } from './resolvers/document-list-projection.resolve';\r\nimport { ExcludedColumnsResolve } from './resolvers/excluded-columns.resolve';\r\nimport { ExcludedFieldsResolve } from './resolvers/excluded-fields.resolve';\r\nimport { FormIncludesResolve } from './resolvers/form-includes.resolve';\r\nimport { FormValidationResolve } from './resolvers/form-validation.resolve';\r\nimport { ListProjectionResolve } from './resolvers/list-projection.resolve';\r\nimport { SettingsResolve } from './resolvers/settings.resolve';\r\n\r\n\r\nconst ListResolve: ResolveData = {\r\n settings: SettingsResolve,\r\n projection: ListProjectionResolve,\r\n excludedColumns: ExcludedColumnsResolve\r\n};\r\n\r\nconst DocsListResolve: ResolveData = {\r\n settings: SettingsResolve,\r\n projection: DocumentListProjectionResolve,\r\n};\r\n\r\nconst FormResolve: ResolveData = {\r\n settings: SettingsResolve,\r\n updateIncludes: FormIncludesResolve,\r\n excludedFields: ExcludedFieldsResolve,\r\n formValidation: FormValidationResolve\r\n};\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: '/cms/contents/page', pathMatch: 'full' },\r\n { path: 'faq', redirectTo: '/cms/faqs', pathMatch: 'full' },\r\n\r\n { path: 'contents/page', component: VdDynamicListComponent, data: { classType: Content, query: { type: ContentType.Page } }, resolve: ListResolve },\r\n { path: 'contents/block', component: VdDynamicListComponent, data: { classType: Content, query: { type: ContentType.Block } }, resolve: ListResolve },\r\n { path: 'contents/:type/add', component: ContentFormComponent, resolve: FormResolve },\r\n { path: 'contents/:type/edit/:id', component: ContentFormComponent, resolve: FormResolve },\r\n\r\n { path: 'variables', component: VdDynamicListComponent, data: { classType: ContentVariable }, resolve: ListResolve },\r\n { path: 'variables/edit/:id', component: VdDynamicFormComponent, data: { classType: ContentVariable, subtitle: $localize`:@@variables:Variables` }, resolve: FormResolve },\r\n { path: 'variables/add', component: VdDynamicFormComponent, data: { classType: ContentVariable, subtitle: $localize`:@@variables:Variables` }, resolve: FormResolve },\r\n\r\n { path: 'templates', component: VdDynamicListComponent, data: { classType: Template, includes: 'Client' }, resolve: ListResolve },\r\n { path: 'templates/edit/:id', component: TemplateFormComponent, resolve: FormResolve },\r\n { path: 'templates/add', component: TemplateFormComponent, resolve: FormResolve },\r\n\r\n { path: 'faqs', component: VdDynamicListComponent, data: { classType: Faq }, resolve: ListResolve },\r\n { path: 'faqs/edit/:id', component: FaqFormComponent, resolve: FormResolve },\r\n { path: 'faqs/add', component: FaqFormComponent, resolve: FormResolve },\r\n\r\n { path: 'sliders', component: VdDynamicListComponent, data: { classType: Slider }, resolve: ListResolve },\r\n { path: 'sliders/edit/:id', component: VdDynamicFormComponent, data: { classType: Slider, subtitle: $localize`:@@slider:Slider` }, resolve: FormResolve },\r\n { path: 'sliders/add', component: VdDynamicFormComponent, data: { classType: Slider, query: { clientId: AuthHelper.user.clientId }, subtitle: $localize`:@@slider:Slider` }, resolve: FormResolve },\r\n\r\n { path: 'documents', component: VdDynamicListComponent, data: { classType: Document, addDialogType: DocumentDialogComponent, query: { type: DocumentType.Document } }, resolve: DocsListResolve },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n providers: [\r\n SettingsResolve,\r\n ListProjectionResolve,\r\n DocumentListProjectionResolve,\r\n FormIncludesResolve,\r\n ExcludedColumnsResolve,\r\n ExcludedFieldsResolve,\r\n FormValidationResolve\r\n ]\r\n})\r\nexport class VdCmsRoutingModule { }","import { NgModule } from '@angular/core';\r\nimport { VdCmsRoutingModule } from './cms-routing.module';\r\n\r\n@NgModule({\r\n imports: [\r\n VdCmsRoutingModule\r\n ]\r\n})\r\nexport class VdCmsModule { }","export enum FaqScope {\r\n\tCustomerPortal,\r\n\tAdmin\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { map } from 'rxjs/operators';\r\nimport { ContentVariable } from '../models/content-variable';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ContentVariableService extends GenericService<ContentVariable> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('contentVariable');\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified alias is available.\r\n\t * @param id \r\n\t * @param alias \r\n\t */\r\n\tpublic isNameAvailable(item: ContentVariable) {\r\n\t\treturn this.create(item, '/isNameAvailable').pipe(map((x: any) => x.value));\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Slider } from '../models/slider';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SliderService extends GenericService<Slider> {\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n super('slider');\r\n }\r\n}","/// <reference types=\"@angular/localize\" />\r\n\r\n/*\r\n * Public API Surface of cdk-base\r\n */\r\nexport * from './cms-routing.module';\r\nexport * from './cms.module';\r\nexport * from './components/content-form/content-form';\r\nexport * from './components/document-dialog/document-dialog';\r\nexport * from './components/document-form-base/document-form-base';\r\nexport * from './components/template-form/template-form';\r\nexport * from './components/template-preview-dialog/template-preview-dialog';\r\nexport * from './enums/content-type';\r\nexport * from './enums/faq-scope';\r\nexport * from './enums/template-engine';\r\nexport * from './enums/template-type';\r\nexport * from './enums/wrap-tag';\r\nexport * from './models/cms-settings';\r\nexport * from './models/content';\r\nexport * from './models/content-client';\r\nexport * from './models/content-department';\r\nexport * from './models/content-variable';\r\nexport * from './models/content-variable-client';\r\nexport * from './models/content-variable-department';\r\nexport * from './models/document';\r\nexport * from './models/faq';\r\nexport * from './models/faq-client';\r\nexport * from './models/faq-department';\r\nexport * from './models/slider';\r\nexport * from './models/template';\r\nexport * from './models/template-client';\r\nexport * from './models/template-department';\r\nexport * from './models/template-preview';\r\nexport * from './resolvers/document-list-projection.resolve';\r\nexport * from './resolvers/excluded-columns.resolve';\r\nexport * from './resolvers/excluded-fields.resolve';\r\nexport * from './resolvers/form-includes.resolve';\r\nexport * from './resolvers/form-validation.resolve';\r\nexport * from './resolvers/list-projection.resolve';\r\nexport * from './resolvers/settings.resolve';\r\nexport * from './services/content';\r\nexport * from './services/content-variable';\r\nexport * from './services/document-generic';\r\nexport * from './services/document.service`';\r\nexport * from './services/faq';\r\nexport * from './services/slider';\r\nexport * from './services/template';\r\nexport * from './services/template-doc';\r\nexport * from './services/template-preview';\r\nexport * from './templates/document-form.template';\r\n\r\n","/*\r\n * Public API Surface of cdk-cms\r\n */\r\n\r\nexport * from './lib/public-api';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ContentService","i5","i1.FaqService","i3","i4","i6","i1.TemplateService","i2.TemplateDocService","i7","map"],"mappings":"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"}
1
+ {"version":3,"file":"messaia-cdk-cms.mjs","sources":["../../../projects/cdk-cms/src/lib/enums/content-type.ts","../../../projects/cdk-cms/src/lib/enums/wrap-tag.ts","../../../projects/cdk-cms/src/lib/models/cms-settings.ts","../../../projects/cdk-cms/src/lib/models/content-client.ts","../../../projects/cdk-cms/src/lib/models/content-department.ts","../../../projects/cdk-cms/src/lib/models/content.ts","../../../projects/cdk-cms/src/lib/services/content.ts","../../../projects/cdk-cms/src/lib/components/content-form/content-form.ts","../../../projects/cdk-cms/src/lib/components/content-form/content-form.html","../../../projects/cdk-cms/src/lib/models/document.ts","../../../projects/cdk-cms/src/lib/services/document-generic.ts","../../../projects/cdk-cms/src/lib/services/document.service`.ts","../../../projects/cdk-cms/src/lib/templates/document-form.template.ts","../../../projects/cdk-cms/src/lib/components/document-form-base/document-form-base.ts","../../../projects/cdk-cms/src/lib/components/document-dialog/document-dialog.ts","../../../projects/cdk-cms/src/lib/models/faq-client.ts","../../../projects/cdk-cms/src/lib/models/faq-department.ts","../../../projects/cdk-cms/src/lib/models/faq.ts","../../../projects/cdk-cms/src/lib/services/faq.ts","../../../projects/cdk-cms/src/lib/components/faq-form/faq-form.ts","../../../projects/cdk-cms/src/lib/components/faq-form/faq-form.html","../../../projects/cdk-cms/src/lib/enums/template-type.ts","../../../projects/cdk-cms/src/lib/enums/template-engine.ts","../../../projects/cdk-cms/src/lib/models/template-client.ts","../../../projects/cdk-cms/src/lib/models/template-department.ts","../../../projects/cdk-cms/src/lib/models/template.ts","../../../projects/cdk-cms/src/lib/models/template-preview.ts","../../../projects/cdk-cms/src/lib/services/template.ts","../../../projects/cdk-cms/src/lib/services/template-doc.ts","../../../projects/cdk-cms/src/lib/services/template-preview.ts","../../../projects/cdk-cms/src/lib/components/template-preview-dialog/template-preview-dialog.ts","../../../projects/cdk-cms/src/lib/components/template-preview-dialog/template-preview-dialog.html","../../../projects/cdk-cms/src/lib/components/template-form/template-form.ts","../../../projects/cdk-cms/src/lib/components/template-form/template-form.html","../../../projects/cdk-cms/src/lib/models/content-variable-client.ts","../../../projects/cdk-cms/src/lib/models/content-variable-department.ts","../../../projects/cdk-cms/src/lib/models/content-variable.ts","../../../projects/cdk-cms/src/lib/models/slider.ts","../../../projects/cdk-cms/src/lib/resolvers/document-list-projection.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/excluded-columns.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/excluded-fields.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/form-includes.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/form-validation.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/list-projection.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/settings.resolve.ts","../../../projects/cdk-cms/src/lib/cms-routing.module.ts","../../../projects/cdk-cms/src/lib/cms.module.ts","../../../projects/cdk-cms/src/lib/enums/faq-scope.ts","../../../projects/cdk-cms/src/lib/services/content-variable.ts","../../../projects/cdk-cms/src/lib/services/slider.ts","../../../projects/cdk-cms/src/lib/public-api.ts","../../../projects/cdk-cms/src/public_api.ts","../../../projects/cdk-cms/src/messaia-cdk-cms.ts"],"sourcesContent":["export enum ContentType {\r\n Page = 1,\r\n Block\r\n}","export enum WrapTag {\r\n None = '',\r\n Section = 'section',\r\n Div = 'div',\r\n Address = 'address',\r\n Article = 'article'\r\n}","\r\nexport class CmsSettings {\r\n /**\r\n * @property\r\n */\r\n public multiClients?: boolean = false;\r\n\r\n /**\r\n * @property\r\n */\r\n public multiDepartments?: boolean = false;\r\n\r\n /**\r\n * @property\r\n */\r\n public multitenantable?: boolean = false;\r\n\r\n /**\r\n * @property\r\n */\r\n public styleUrlEndpoint?: Function;\r\n\r\n /**\r\n * @property\r\n */\r\n public editorHeight?: string = '700px';\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<CmsSettings>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class ContentClient {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public contentId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public clientId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public client?: any;\r\n\r\n /**\r\n * @property\r\n */\r\n public clientName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<ContentClient>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class ContentDepartment {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public contentId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public departmentId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public department?: any;\r\n\r\n /**\r\n * @property\r\n */\r\n public departmentName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<ContentDepartment>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { Api, AuditEntity, Column, Display, FormField, FormFieldType, Grid, prop, required, Table, Utils } from \"@messaia/cdk\";\r\nimport { ContentType } from \"../enums/content-type\";\r\nimport { WrapTag } from \"../enums/wrap-tag\";\r\nimport { ContentClient } from \"./content-client\";\r\nimport { ContentDepartment } from \"./content-department\";\r\n\r\n@Api('content')\r\n@Table({\r\n endpoint: 'content',\r\n projection: ['id', 'createdDate', 'name', 'title', 'enabled'],\r\n duplicable: true\r\n})\r\nexport class Content extends AuditEntity {\r\n /**\r\n * @property Defines the type of the content.\r\n * @description Optional enum property indicating the content's type.\r\n * @type {ContentType}\r\n */\r\n @prop()\r\n public type?: ContentType;\r\n\r\n /**\r\n * @property Identifier for the section the content belongs to.\r\n * @description Optional number representing the section ID.\r\n * @type {number}\r\n */\r\n @prop()\r\n public sectionId?: number;\r\n\r\n /**\r\n * @property The title of the content.\r\n * @description This required property represents the human-readable title displayed in the UI.\r\n * @type {string}\r\n */\r\n @required()\r\n @Column()\r\n @FormField({ row: 20 })\r\n @Display($localize`:@@title:Title`)\r\n public title?: string;\r\n\r\n /**\r\n * @property Internal name of the content.\r\n * @description This required property is used for internal reference and URLs.\r\n * @type {string}\r\n */\r\n @required()\r\n @Column({ maxWidth: 190, display: Grid.Md })\r\n @FormField({ row: 30 })\r\n @Display($localize`:@@name:Name`)\r\n public name?: string;\r\n\r\n /**\r\n * @property Aliases of the content.\r\n * @description Optional string used to define alternative names or keywords.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({ row: 40, type: FormFieldType.Chips })\r\n @Display($localize`:@@aliases:Aliases`)\r\n public aliases?: string;\r\n\r\n /**\r\n * @property The wrap tag used for HTML structure.\r\n * @description Optional property that defines how the content is wrapped in the DOM.\r\n * @type {WrapTag}\r\n */\r\n @prop()\r\n @FormField({ row: 50 })\r\n @Display($localize`:@@wrap:Wrap`)\r\n public wrapTag: WrapTag = WrapTag.Section;\r\n\r\n /**\r\n * @property Layout identifier or class name.\r\n * @description Optional layout style applied to this content block.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({ row: 50 })\r\n @Display($localize`:@@layout:Layout`)\r\n public layout?: string;\r\n\r\n /**\r\n * @property Main body of the content.\r\n * @description Optional HTML or markdown content.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({ row: 60, type: FormFieldType.Editor })\r\n @Display($localize`:@@content:Content`)\r\n public body?: string;\r\n\r\n /**\r\n * @property Embedded script.\r\n * @description Optional JavaScript code associated with the content.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({\r\n row: 80,\r\n type: FormFieldType.TextArea,\r\n hint: $localize`:@@scriptHint:Do not include <script> tags.`\r\n })\r\n @Display($localize`:@@bodyScript:Body Script`)\r\n public script?: string;\r\n\r\n /**\r\n * @property headScript\r\n * @description This optional property allows insertion of custom JavaScript code inside the <head> tag of the HTML document.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({\r\n row: 70,\r\n type: FormFieldType.TextArea,\r\n hint: $localize`:@@headScriptHint:Do not include <script> tags.`\r\n })\r\n @Display($localize`:@@headScript:Head Script`)\r\n public headScript?: string;\r\n\r\n /**\r\n * @property noScript\r\n * @description This optional property allows inserting content inside a <noscript> tag, which is rendered when JavaScript is disabled.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({\r\n row: 90,\r\n type: FormFieldType.TextArea,\r\n hint: $localize`:@@noScriptHint:Do not include <noscript> tags.`\r\n })\r\n @Display($localize`:@@noScript:NoScript`)\r\n public noScript?: string;\r\n\r\n /**\r\n * @property Embedded style.\r\n * @description Optional CSS styling specific to this content.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({\r\n row: 100,\r\n type: FormFieldType.TextArea,\r\n hint: $localize`:@@styleHint:Do not include <style> or <link> tags.`\r\n })\r\n @Display($localize`:@@style:Style`)\r\n public style?: string;\r\n\r\n /**\r\n * @property Indicates whether the title should be shown.\r\n * @description This optional boolean defaults to true and determines title visibility.\r\n * @type {boolean}\r\n */\r\n @prop()\r\n @FormField({ row: 200 })\r\n @Display($localize`:@@showTitle:Show title`)\r\n public showTitle: boolean = true;\r\n\r\n /**\r\n * @property Indicates whether the content is enabled.\r\n * @description This boolean property enables or disables the content, default is true.\r\n * @type {boolean}\r\n */\r\n @prop()\r\n @Column({\r\n index: 20,\r\n event: 'toggle'\r\n })\r\n @FormField({ row: 210 })\r\n @Display($localize`:@@enabled:Enabled`)\r\n public enabled: boolean = true;\r\n\r\n /**\r\n * @property Associated clients for this content.\r\n * @description This required property defines which clients the content is related to.\r\n * @type {ContentClient[]}\r\n */\r\n @required({ conditionalExpression: (x: Content) => true })\r\n @Column<Content>({\r\n index: 5,\r\n name: 'clientJoins.client.displayName',\r\n sortBy: 'clientJoins.Min(client.displayName)',\r\n content: (x) => x ? Utils.joinArray(x?.clientJoins?.map(y => y.client?.displayName ?? '') ?? []) : undefined,\r\n display: Grid.Lg,\r\n maxWidth: 200,\r\n hide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients),\r\n })\r\n @FormField<Content, ContentClient>({\r\n row: 1,\r\n endpoint: 'client',\r\n params: () => ({\r\n enabled: true,\r\n projection: 'id,displayName',\r\n sortBy: 'id'\r\n }),\r\n multiple: true,\r\n hide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients),\r\n compareWith: (o, v) => o.clientId === v.clientId,\r\n mapper: (x: { id: number, displayName: string }[]) => x.map(y => new ContentClient({ clientId: y.id, clientName: y.displayName })),\r\n optionTemplate: (x) => x?.clientName,\r\n triggerMapper: (x) => x?.clientName\r\n })\r\n @Display($localize`:@@projects:Projects`)\r\n public clientJoins?: ContentClient[];\r\n\r\n /**\r\n * @property Associated departments for this content.\r\n * @description Optional departments related to this content, with visibility based on admin context.\r\n * @type {ContentDepartment[]}\r\n */\r\n @prop()\r\n @Column<Content>({\r\n index: 5,\r\n name: 'departmentJoins.department.displayName',\r\n sortBy: 'departmentJoins.Min(department.displayName)',\r\n content: (x) => x ? Utils.joinArray(x?.departmentJoins?.map(y => y.department?.displayName ?? '') ?? []) : undefined,\r\n display: Grid.Lg,\r\n maxWidth: 200,\r\n hide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n })\r\n @FormField<Content, ContentDepartment>({\r\n row: 10,\r\n endpoint: 'department',\r\n params: (x) => ({\r\n enabled: true,\r\n projection: 'id,displayName',\r\n sortBy: 'id',\r\n clientId: x.clientJoins?.map(y => y.clientId)\r\n }),\r\n multiple: true,\r\n hide: (_, __, ctx: any) => (!ctx.isAdmin && !ctx.isClientAdmin) || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n compareWith: (o, v) => o.departmentId === v.departmentId,\r\n mapper: (x: { id: number, displayName: string }[]) => x.map(y => new ContentDepartment({ departmentId: y.id, departmentName: y.displayName })),\r\n optionTemplate: (x) => x?.departmentName,\r\n triggerMapper: (x) => x?.departmentName\r\n })\r\n @Display($localize`:@@departments:Departments`)\r\n public departmentJoins?: ContentDepartment[];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { map } from 'rxjs/operators';\r\nimport { Content } from '../models/content';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ContentService extends GenericService<Content> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('content');\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified alias is available.\r\n\t * @param id \r\n\t * @param alias \r\n\t */\r\n\tpublic isAliasAvailable(item: Content) {\r\n\t\treturn this.create(item, '/isAliasAvailable').pipe(map((x: any) => x.value));\r\n\t}\r\n}","import { COMMA, ENTER } from '@angular/cdk/keycodes';\r\n\r\nimport { HttpClient, HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { ChangeDetectionStrategy, Component, inject, ViewChild } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatChipInputEvent } from '@angular/material/chips';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { EnumService, FileService, GenericReactiveFormComponent, MatFormFieldEditorDirective, RxReactiveFormsModule, VdEditorDirective, VdGenericFormComponent, VdLayoutCardOverComponent, VdLayoutNavComponent } from '@messaia/cdk';\r\nimport { VdAuditComponent } from '@messaia/cdk-base';\r\nimport { EditorComponent, EditorModule } from '@tinymce/tinymce-angular';\r\nimport { of, Subscription } from 'rxjs';\r\nimport { ContentType } from '../../enums/content-type';\r\nimport { WrapTag } from '../../enums/wrap-tag';\r\nimport { CmsSettings } from '../../models/cms-settings';\r\nimport { Content } from '../../models/content';\r\nimport { ContentClient, ContentDepartment } from '../../public-api';\r\nimport { ContentService } from '../../services/content';\r\n\r\n@Component({\r\n selector: 'app-content-form',\r\n templateUrl: './content-form.html',\r\n changeDetection: ChangeDetectionStrategy.Eager,\r\n imports: [\r\n ReactiveFormsModule,\r\n RxReactiveFormsModule,\r\n EditorModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatButtonModule,\r\n MatFormFieldEditorDirective,\r\n VdLayoutNavComponent,\r\n VdLayoutCardOverComponent,\r\n VdGenericFormComponent,\r\n VdEditorDirective,\r\n VdAuditComponent\r\n ]\r\n})\r\nexport class ContentFormComponent extends GenericReactiveFormComponent<Content, ContentService> {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n public override settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Router Subscription\r\n */\r\n public routeSubscription?: Subscription;\r\n\r\n /**\r\n * The status of the issue\r\n */\r\n public type?: ContentType;\r\n\r\n /**\r\n * Content status\r\n */\r\n public ContentType: typeof ContentType = ContentType;\r\n\r\n /**\r\n * Wrap tag enum\r\n */\r\n public wrapTags: any[] = EnumService.toArray(WrapTag);\r\n\r\n /**\r\n * Separator keys codes\r\n */\r\n public separatorKeysCodes: number[] = [ENTER, COMMA];\r\n\r\n /**\r\n * Gets the aliases control\r\n */\r\n get aliasesControl() { return this.form.controls['aliases']; }\r\n\r\n /**\r\n * A ref to form html element\r\n */\r\n @ViewChild('form', { static: false })\r\n public formElement?: HTMLFormElement;\r\n\r\n /**\r\n * A ref to tinymce editor\r\n */\r\n @ViewChild('editor', { static: false })\r\n public editorComponent?: EditorComponent;\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor(\r\n protected override service: ContentService,\r\n protected fileService: FileService,\r\n protected httpClient: HttpClient\r\n ) {\r\n super(Content, service);\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiClients) {\r\n this.include('ClientJoins', true);\r\n }\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiDepartments) {\r\n this.include('DepartmentJoins', true);\r\n }\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 /* Filter by status, if any */\r\n this.routeSubscription = this.route.params.subscribe((params: any) => {\r\n this.type = EnumService.parse(ContentType, params.type);\r\n });\r\n\r\n /* Get some props from route snapshot */\r\n this.route.data.subscribe((data: any) => {\r\n this.formValidation = data.formValidation;\r\n });\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n /**\r\n * Shows client joins in the form\r\n * @returns \r\n */\r\n public showClientJoins(): boolean {\r\n return (!this.canCreate || (!this.settings?.multitenantable && !this.settings?.multiClients)) || this.isClientAdmin;\r\n }\r\n\r\n /**\r\n * Checks if the specified alias is available.\r\n */\r\n public isAliasAvailable() {\r\n this.service.isAliasAvailable(this.item!).subscribe((x: boolean) => {\r\n this.formElement!['form']?.controls['alias'].setErrors(x ? null : { 'inUse': true });\r\n });\r\n }\r\n\r\n /**\r\n * Set client\r\n */\r\n public setClient(): void {\r\n this.isEditorInitialized = false;\r\n this.configEditor();\r\n this.editorComponent?.editor?.setContent(this.item?.body!);\r\n }\r\n\r\n /**\r\n * Add a aliases to the current field\r\n * @param event \r\n */\r\n public addAliases(event: MatChipInputEvent): void {\r\n /* Add our aliass */\r\n if ((event.value || '').trim()) {\r\n this.aliasesControl.setValue([...this.aliasesControl.value, event.value.trim()]);\r\n this.aliasesControl.updateValueAndValidity();\r\n this.aliasesControl.markAsDirty();\r\n }\r\n\r\n /* Reset the input value */\r\n if (event.input) {\r\n event.input.value = '';\r\n }\r\n }\r\n\r\n /**\r\n * Removes a aliases\r\n * @param aliass \r\n */\r\n public removeAliases(aliass: string): void {\r\n const index = this.aliasesControl.value.indexOf(aliass);\r\n if (index >= 0) {\r\n this.aliasesControl.value.splice(index, 1);\r\n this.aliasesControl.updateValueAndValidity();\r\n this.aliasesControl.markAsDirty();\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new instance of the Template\r\n */\r\n protected override newInstance(): Content {\r\n let item = Object.assign(new Content(), <Content>{\r\n type: this.type,\r\n wrapTag: this.type == ContentType.Block ? '' : WrapTag.Section,\r\n showTitle: this.type == ContentType.Block ? false : true\r\n });\r\n\r\n /* Get clientId */\r\n if (!this.isEditMode) {\r\n if (this.isClientAdmin || this.isDepartmentAdmin) {\r\n item.clientJoins = [new ContentClient({ clientId: this.currentUser.clientId })];\r\n }\r\n\r\n if (this.isDepartmentAdmin) {\r\n item.departmentJoins = [new ContentDepartment({ departmentId: this.currentUser.departmentId })];\r\n }\r\n }\r\n\r\n /* Init the tinymce editor */\r\n this.isEditorInitialized = false;\r\n return item;\r\n }\r\n\r\n /**\r\n * Event emitted when the form has built.\r\n */\r\n protected override onAfterFormBuild(): void {\r\n super.onAfterFormBuild();\r\n this.configEditor();\r\n }\r\n\r\n /**\r\n * Configures the tinymce editor\r\n */\r\n private configEditor(): void {\r\n if (this.settings?.multitenantable && this.formValue?.clientId && this.settings?.styleUrlEndpoint) {\r\n this.httpClient.get(this.settings.styleUrlEndpoint(this.formValue.clientId)).subscribe({\r\n next: (x: any) => super.initEditor(Object.assign(this.getEditorConfig(), { content_css: x.value })),\r\n error: () => super.initEditor(Object.assign(this.getEditorConfig()))\r\n });\r\n } else {\r\n super.initEditor(this.getEditorConfig());\r\n }\r\n }\r\n\r\n /**\r\n * Creates config for the editor\r\n * @returns \r\n */\r\n private getEditorConfig(): any {\r\n return {\r\n promotion: false,\r\n toolbar: `${this.editorToolbar} snippetsButton`,\r\n forced_root_blocks: false,\r\n height: this.settings?.editorHeight || '700px',\r\n file_picker_types: 'file image media',\r\n image_advtab: true,\r\n allow_html_in_named_anchor: true,\r\n valid_children: '+a[div|span|img|h1|h2|h3|h4|h5|h6|br|hr|video],+span[i]',\r\n valid_elements: '*[*]',\r\n images_upload_handler: (blobInfo: any, progress: Function) => new Promise((resolve, reject) => {\r\n var clientIds: number[] = this.formValue?.clientJoins?.map((x: ContentClient) => x.clientId) ?? [];\r\n this.fileService.upload(blobInfo.blob(), `upload`, {\r\n clientId: clientIds.length == 1 ? clientIds[0] : null,\r\n path: clientIds.length == 1 ? 'images' : 'common/images',\r\n isPublic: true\r\n }).subscribe({\r\n next: (event: any) => {\r\n if (event.type === HttpEventType.UploadProgress) {\r\n\r\n /* Calculate the progress percentage */\r\n const percentDone = Math.round(100 * event.loaded / event.total);\r\n\r\n /* Pass the percentage into the progress-stream */\r\n console.info(percentDone);\r\n } else if (event instanceof HttpResponse) {\r\n console.log('Upload finished!');\r\n resolve(event.body.publicLink);\r\n }\r\n },\r\n error: (error: any) => {\r\n reject('Image upload failed due to a XHR Transport error:' + error);\r\n console.log('Image upload failed due to a XHR Transport error:' + error);\r\n }\r\n });\r\n\r\n return of({});\r\n }),\r\n setup: function (editor: any) {\r\n /* Add snippets button to the toolbar */\r\n editor.ui.registry.addMenuButton('snippetsButton', {\r\n text: 'Snippets',\r\n fetch: function (callback: any) {\r\n callback([\r\n {\r\n type: 'menuitem',\r\n text: 'Variable',\r\n onAction: () => editor.insertContent('{{var name}}')\r\n },\r\n {\r\n type: 'menuitem',\r\n text: 'Block',\r\n onAction: () => editor.insertContent('{{block name=\"...\"}}')\r\n },\r\n {\r\n type: 'menuitem',\r\n text: 'View Component',\r\n onAction: () => editor.insertContent('{{vc name=\"...\"}}')\r\n },\r\n ]);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Cleanup subscriptions when this component is destroyed.\r\n */\r\n override ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n if (this.routeSubscription) {\r\n this.routeSubscription.unsubscribe();\r\n }\r\n }\r\n}","<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [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 <mat-accordion [multi]=\"!isEditMode\">\r\n <!-- #region Details -->\r\n <mat-expansion-panel expanded=\"true\" id=\"details\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n <ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>{{field.label}}</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 </vd-generic-form>\r\n </ng-template>\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 || true) {\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 </mat-expansion-panel>\r\n <!-- #endregion -->\r\n <!-- #region Audit -->\r\n @if (isEditMode) {\r\n <mat-expansion-panel id=\"audit\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <span i18n=\"@@audit\">Audit</span>\r\n </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 </vd-layout-card-over>\r\n </form>\r\n }\r\n</vd-layout-nav>","import { AuthHelper, Column, Display, FormField, Grid, prop, required, Table } from \"@messaia/cdk\";\r\nimport { DocumentBase } from \"@messaia/cdk-base\";\r\n\r\n@Table({\r\n endpoint: 'document',\r\n projection: ['id', 'createdDate', 'name', 'extension', 'publicLink', 'isEditable', 'isDeletable'],\r\n editable: false,\r\n downloadable: true\r\n})\r\nexport class Document extends DocumentBase {\r\n /**\r\n * @property clientId\r\n * @description The ID of the client associated with the document.\r\n * @type {number}\r\n */\r\n @required()\r\n @Column({\r\n index: 10,\r\n name: 'client.displayName',\r\n sortBy: 'client.displayName',\r\n maxWidth: 200,\r\n display: Grid.Lg,\r\n hide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients),\r\n })\r\n @FormField<Document>({\r\n row: 1,\r\n endpoint: 'client',\r\n projection: 'id,name',\r\n params: (x) => { return { enabled: true } },\r\n readonly: (x) => (x.id ?? 0) > 0,\r\n hide: (_, __, ctx) => ctx?.currentUser?.isDepartmentAdmin\r\n })\r\n @Display($localize`:@@project:Project`)\r\n public clientId?: number = AuthHelper.user.clientId;\r\n\r\n /**\r\n * @property departmentId\r\n * @description The ID of the department associated with the document.\r\n * @type {number}\r\n */\r\n @prop()\r\n @Column({\r\n index: 11,\r\n name: 'department.displayName',\r\n sortBy: 'department.displayName',\r\n maxWidth: 200,\r\n display: Grid.Lg,\r\n hide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n })\r\n @FormField<Document>({\r\n row: 2,\r\n endpoint: 'department',\r\n projection: 'id,name',\r\n params: (x) => { return { clientId: x.clientId, enabled: true } },\r\n fetchCondition: (x) => (x.clientId ?? 0) > 0,\r\n readonly: (x) => (x.id ?? 0) > 0 || !x.clientId,\r\n hide: (_, __, ctx) => ctx?.currentUser?.isDepartmentAdmin\r\n })\r\n @Display($localize`:@@department:Department`)\r\n public departmentId?: number = AuthHelper.user.departmentId;\r\n\r\n /**\r\n * @property path\r\n * @description The path where the document is stored.\r\n * @type {string}\r\n * @default 'docs'\r\n */\r\n @required()\r\n public path: string = 'docs';\r\n\r\n /**\r\n * Initializes a new instance of the Document class.\r\n * @param init Optional partial object used to initialize properties.\r\n */\r\n public constructor(init?: Partial<Document>) {\r\n super(init);\r\n Object.assign(this, init);\r\n }\r\n}","import { GenericService } from '@messaia/cdk';\r\nimport { DocumentBase } from '@messaia/cdk-base';\r\n\r\nexport abstract class DocumentGenericService<TDocument extends DocumentBase> extends GenericService<TDocument> {\r\n\r\n /**\r\n * Constructor\r\n * @param serviceName\r\n */\r\n constructor(serviceName?: string) {\r\n super(serviceName);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Document } from '../models/document';\r\nimport { DocumentGenericService } from './document-generic';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DocumentService extends DocumentGenericService<Document> {\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n super('document');\r\n }\r\n\r\n /**\r\n * Sends an email to the customer\r\n * @param id The ID of the document\r\n */\r\n public sendMail(id: number): Observable<any> {\r\n return this.update(`sendMail/${id}`, null);\r\n }\r\n}","\r\n\r\nexport const DocumentFormTemplate = /* html */ `\r\n <div mat-dialog-title class=\"mat-headline-6\" i18n=\"@@newDocument\">New document</div>\r\n @if(form){\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n <ng-template vd-file let-field=\"field\" let-formGroup=\"formGroup\">\r\n <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <div vd-file-input [formControlName]=\"field.name\" (select)=\"upload($event)\" [accept]=\"field.fileExtensions\"></div>\r\n </mat-form-field>\r\n </ng-template>\r\n </vd-generic-form>\r\n <div mat-dialog-actions class=\"pad-top\">\r\n <button type=\"submit\" mat-flat-button [disabled]=\"isSaving\" color=\"primary\" i18n=\"@@save\">Save</button>\r\n <button type=\"button\" mat-button (click)=\"cancel()\" i18n=\"@@cancel\">Cancel</button>\r\n </div>\r\n </form>\r\n }`;","import { HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { Directive, Type } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { FileService, GenericReactiveFormComponent, SaveAction } from '@messaia/cdk';\r\nimport { DocumentBase } from \"@messaia/cdk-base\";\r\nimport { DocumentGenericService } from '../../services/document-generic';\r\n\r\n@Directive()\r\nexport abstract class DocumentFormBaseComponent<TDocument extends DocumentBase, TDocumentService extends DocumentGenericService<TDocument>> extends GenericReactiveFormComponent<TDocument, TDocumentService> {\r\n /**\r\n * Upload status\r\n */\r\n public isUploading: boolean = false;\r\n\r\n /**\r\n * Upload progress\r\n */\r\n public uploadProgress: number = 0;\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor(\r\n protected entityType: Type<TDocument>,\r\n protected documentService: TDocumentService,\r\n protected fileService: FileService,\r\n protected dialogRef: MatDialogRef<DocumentFormBaseComponent<TDocument, TDocumentService>>,\r\n protected data: TDocument\r\n ) {\r\n super(entityType, documentService);\r\n this.item = data;\r\n }\r\n\r\n /**\r\n * Uploads a new document\r\n */\r\n public upload(file: File | FileList): void {\r\n if (file != null) {\r\n this.fileService\r\n .upload(file as File, `upload`, new this.entityType(Object.assign(this.data || {}, this.formValue)))\r\n .subscribe({\r\n next: (event) => {\r\n if (event.type === HttpEventType.UploadProgress) {\r\n\r\n /* Calculate the progress percentage */\r\n const percentDone = Math.round(100 * event.loaded / event.total);\r\n\r\n /* Pass the percentage into the progress-stream */\r\n this.uploadProgress = percentDone;\r\n } else if (event instanceof HttpResponse) {\r\n this.form.patchValue(<Document>event.body);\r\n }\r\n },\r\n complete: () => this.isUploading = false,\r\n error: () => this.isUploading = false\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Event emitted after data submition\r\n * @param action \r\n * @param response \r\n */\r\n protected override onAfterSubmit(_1: SaveAction = SaveAction.SaveAndClose, _2: any = null): void {\r\n this.isSaving = false;\r\n this.cancel();\r\n }\r\n\r\n /**\r\n * Closes the dialog\r\n */\r\n public cancel(): void {\r\n this.dialogRef.close();\r\n this.reloadPage();\r\n }\r\n\r\n /**\r\n * Creates a new instance of the TEntity\r\n */\r\n protected override newInstance(): TDocument {\r\n return super.newInstance(Object.assign(new this.entityType({\r\n clientId: this.currentUser?.clientId,\r\n departmentId: this.currentUser?.departmentId\r\n }), this.data || {}));\r\n }\r\n}","\r\nimport { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FileService, VdFileInputComponent, VdGenericFormComponent } from '@messaia/cdk';\r\nimport { Document } from '../../models/document';\r\nimport { DocumentService } from '../../services/document.service`';\r\nimport { DocumentFormTemplate } from '../../templates/document-form.template';\r\nimport { DocumentFormBaseComponent } from '../document-form-base/document-form-base';\r\n\r\n@Component({\r\n selector: 'document-dialog',\r\n template: DocumentFormTemplate,\r\n changeDetection: ChangeDetectionStrategy.Eager,\r\n imports: [\r\n ReactiveFormsModule,\r\n MatDialogModule,\r\n MatFormFieldModule,\r\n VdGenericFormComponent,\r\n VdFileInputComponent\r\n ]\r\n})\r\nexport class DocumentDialogComponent extends DocumentFormBaseComponent<Document, DocumentService> {\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor(\r\n protected override documentService: DocumentService,\r\n protected override fileService: FileService,\r\n public override dialogRef: MatDialogRef<DocumentDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public override data: Document = new Document()\r\n ) {\r\n super(Document, documentService, fileService, dialogRef, data)\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 this.item!.isPublic = true;\r\n }\r\n}","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class FaqClient {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public faqId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public clientId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public client?: any;\r\n /**\r\n * @property\r\n */\r\n public clientName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<FaqClient>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class FaqDepartment {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public faqId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public departmentId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public department?: any;\r\n\r\n /**\r\n * @property\r\n */\r\n public departmentName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<FaqDepartment>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { Api, AuditEntity, Column, Display, FormField, FormFieldType, Grid, prop, required, Table, Utils } from \"@messaia/cdk\";\r\nimport { FaqClient } from \"./faq-client\";\r\nimport { FaqDepartment } from \"./faq-department\";\r\n\r\n@Api('faq')\r\n@Table({\r\n\tendpoint: 'faq',\r\n\tprojection: ['id', 'createdDate', 'question', 'group', 'enabled'],\r\n\tduplicable: true\r\n})\r\nexport class Faq extends AuditEntity {\r\n\t/**\r\n\t * The question text\r\n\t * @type {string}\r\n\t */\r\n\t@required()\r\n\t@Column({\r\n\t\tindex: 1,\r\n\t\tcontentLength: 30\r\n\t})\r\n\t@FormField({ row: 10 })\r\n\t@Display($localize`:@@question:Question`)\r\n\tpublic question?: string;\r\n\r\n\t/**\r\n\t * The group name\r\n\t * @type {string}\r\n\t */\r\n\t@required()\r\n\t@Column({\r\n\t\tindex: 10,\r\n\t\tmaxWidth: 160,\r\n\t\tdisplay: Grid.Lg\r\n\t})\r\n\t@FormField({\r\n\t\trow: 20,\r\n\t\ttype: FormFieldType.Autocomplete\r\n\t})\r\n\t@Display($localize`:@@group:Group`)\r\n\tpublic group?: string;\r\n\r\n\t/**\r\n\t * Associated clients\r\n\t * @type {FaqClient[]}\r\n\t */\r\n\t@required({ conditionalExpression: (x: Faq) => true })\r\n\t@Column<Faq>({\r\n\t\tindex: 1,\r\n\t\tname: 'clientJoins.client.displayName',\r\n\t\tsortBy: 'clientJoins.Min(client.displayName)',\r\n\t\tcontent: (x) => x ? Utils.joinArray(x.clientJoins?.map(y => y.client?.displayName ?? '') ?? []) : undefined,\r\n\t\tdisplay: Grid.Lg,\r\n\t\tmaxWidth: 200,\r\n\t\thide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients),\r\n\t})\r\n\t@FormField<Faq, FaqClient>({\r\n\t\trow: 1,\r\n\t\tendpoint: 'client',\r\n\t\tparams: () => ({\r\n\t\t\tenabled: true,\r\n\t\t\tprojection: 'id,displayName',\r\n\t\t\tsortBy: 'id'\r\n\t\t}),\r\n\t\tmultiple: true,\r\n\t\ttriggerMode: 'chip',\r\n\t\thide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients),\r\n\t\tcompareWith: (o, v) => o.clientId === v.clientId,\r\n\t\tmapper: (x: { id: number, displayName: string }[]) => x.map(y => new FaqClient({ clientId: y.id, clientName: y.displayName })),\r\n\t\toptionTemplate: (x) => x?.clientName,\r\n\t\ttriggerMapper: (x) => x?.clientName\r\n\t})\r\n\t@Display($localize`:@@projects:Projects`)\r\n\tpublic clientJoins?: FaqClient[];\r\n\r\n\t/**\r\n\t * Associated departments\r\n\t * @type {FaqDepartment[]}\r\n\t */\r\n\t@prop()\r\n\t@Column<Faq>({\r\n\t\tindex: 5,\r\n\t\tname: 'departmentJoins.department.displayName',\r\n\t\tsortBy: 'departmentJoins.Min(department.displayName)',\r\n\t\tcontent: (x) => x ? Utils.joinArray(x.departmentJoins?.map(y => y.department?.displayName ?? '') ?? []) : undefined,\r\n\t\tdisplay: Grid.Lg,\r\n\t\tmaxWidth: 200,\r\n\t\thide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n\t})\r\n\t@FormField<Faq, FaqDepartment>({\r\n\t\trow: 5,\r\n\t\tendpoint: 'department',\r\n\t\tparams: (x) => ({\r\n\t\t\tenabled: true,\r\n\t\t\tprojection: 'id,displayName',\r\n\t\t\tsortBy: 'id',\r\n\t\t\tclientId: x.clientJoins?.map(y => y.clientId)\r\n\t\t}),\r\n\t\tmultiple: true,\r\n\t\ttriggerMode: 'chip',\r\n\t\thide: (_, __, ctx: any) => (!ctx.isAdmin && !ctx.isClientAdmin) || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n\t\tcompareWith: (o, v) => o.departmentId === v.departmentId,\r\n\t\tmapper: (x: { id: number, displayName: string }[]) => x.map(y => new FaqDepartment({ departmentId: y.id, departmentName: y.displayName })),\r\n\t\toptionTemplate: (x) => x?.departmentName,\r\n\t\ttriggerMapper: (x) => x?.departmentName\r\n\t})\r\n\t@Display($localize`:@@departments:Departments`)\r\n\tpublic departmentJoins?: FaqDepartment[];\r\n\r\n\t/**\r\n\t * Display order of the FAQ\r\n\t * @type {number}\r\n\t */\r\n\t@prop()\r\n\t@FormField({ row: 20 })\r\n\t@Display($localize`:@@ordering:Ordering`)\r\n\tpublic ordering?: number;\r\n\r\n\t/**\r\n\t * The answer text\r\n\t * @type {string}\r\n\t */\r\n\t@required()\r\n\t@FormField({\r\n\t\trow: 50,\r\n\t\ttype: FormFieldType.Editor\r\n\t})\r\n\t@Display($localize`:@@answer:Answer`)\r\n\tpublic answer?: string;\r\n\r\n\t/**\r\n\t * Indicates if the FAQ is enabled\r\n\t * @type {boolean}\r\n\t */\r\n\t@prop()\r\n\t@Column({\r\n\t\tindex: 100,\r\n\t\tevent: 'toggle'\r\n\t})\r\n\t@FormField({ row: 100 })\r\n\t@Display($localize`:@@enabled:Enabled`)\r\n\tpublic enabled?: boolean;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param init - Partial initialization object\r\n\t */\r\n\tpublic constructor(init?: Partial<Faq>) {\r\n\t\tsuper(init);\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Faq } from '../models/faq';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FaqService extends GenericService<Faq> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('faq');\r\n\t}\r\n}","\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ChangeDetectionStrategy, Component, inject } 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 { FileService, GenericReactiveFormComponent, MatFormFieldEditorDirective, RxReactiveFormsModule, VdEditorDirective, VdGenericFormComponent, VdLayoutCardOverComponent, VdLayoutNavComponent } from '@messaia/cdk';\r\nimport { VdAuditComponent } from '@messaia/cdk-base';\r\nimport { EditorModule } from '@tinymce/tinymce-angular';\r\nimport { CmsSettings } from '../../models/cms-settings';\r\nimport { Faq } from '../../models/faq';\r\nimport { FaqService } from '../../services/faq';\r\n\r\n@Component({\r\n selector: 'app-faq-form',\r\n templateUrl: './faq-form.html',\r\n changeDetection: ChangeDetectionStrategy.Eager,\r\n imports: [\r\n ReactiveFormsModule,\r\n RxReactiveFormsModule,\r\n EditorModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatButtonModule,\r\n MatFormFieldEditorDirective,\r\n VdLayoutNavComponent,\r\n VdLayoutCardOverComponent,\r\n VdGenericFormComponent,\r\n VdEditorDirective,\r\n VdAuditComponent\r\n ]\r\n})\r\nexport class FaqFormComponent extends GenericReactiveFormComponent<Faq, FaqService> {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n public override settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor(\r\n protected override service: FaqService,\r\n protected fileService: FileService,\r\n protected httpClient: HttpClient\r\n ) {\r\n super(Faq, service);\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiClients) {\r\n this.include('ClientJoins', true);\r\n }\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiDepartments) {\r\n this.include('DepartmentJoins', true);\r\n }\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 /* Get some props from route snapshot */\r\n this.route.data.subscribe((data: any) => {\r\n this.formValidation = data.formValidation;\r\n });\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n /**\r\n * Shows client joins in the form\r\n * @returns \r\n */\r\n public showClientJoins(): boolean {\r\n return (!this.canCreate || (!this.settings?.multitenantable && !this.settings?.multiClients)) || this.isClientAdmin;\r\n }\r\n}","<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"FAQ\" i18n-toolbarTitle=\"@@faq\" [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 <mat-accordion [multi]=\"!isEditMode\">\r\n <!-- #region Details -->\r\n <mat-expansion-panel expanded=\"true\" id=\"details\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n <ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>{{field.label}}</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 </vd-generic-form>\r\n </ng-template>\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 || true) {\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 </mat-expansion-panel>\r\n <!-- #endregion -->\r\n <!-- #region Audit -->\r\n @if (isEditMode) {\r\n <mat-expansion-panel id=\"audit\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <span i18n=\"@@audit\">Audit</span>\r\n </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 </vd-layout-card-over>\r\n </form>\r\n }\r\n</vd-layout-nav>","export enum TemplateType {\r\n Email,\r\n Pdf\r\n}","export enum TemplateEngine {\r\n Razor,\r\n Fluid,\r\n Scriban\r\n}","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class TemplateClient {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public templateId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public clientId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public client?: any;\r\n\r\n /**\r\n * @property\r\n */\r\n public clientName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<TemplateClient>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class TemplateDepartment {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public templateId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public departmentId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public department?: any;\r\n\r\n /**\r\n * @property\r\n */\r\n public departmentName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<TemplateDepartment>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { AuditEntity, Column, Display, FormField, FormFieldType, Grid, prop, required, Table, Utils } from \"@messaia/cdk\";\r\nimport { Attachment } from \"@messaia/cdk-base\";\r\nimport { TemplateEngine } from \"../enums/template-engine\";\r\nimport { TemplateType } from \"../enums/template-type\";\r\nimport { TemplateClient } from \"./template-client\";\r\nimport { TemplateDepartment } from \"./template-department\";\r\n\r\n@Table({\r\n\tendpoint: 'template',\r\n\tprojection: ['id', 'createdDate', 'name', 'key', 'subject', 'engine', 'type', 'reviewed', 'enabled'],\r\n\tduplicable: true\r\n})\r\nexport class Template extends AuditEntity {\r\n\t/**\r\n\t * @property Defines the template engine (e.g. Razor, Fluid).\r\n\t * @description Determines how the template content is processed and rendered.\r\n\t * @type {TemplateEngine | undefined}\r\n\t */\r\n\t@required()\r\n\t@Column({\r\n\t\tindex: 20,\r\n\t\tenumType: TemplateEngine,\r\n\t\tmaxWidth: 150,\r\n\t\tdisplay: Grid.Lg\r\n\t})\r\n\t@FormField({\r\n\t\trow: 20,\r\n\t\tenumType: TemplateEngine,\r\n\t\tfieldSets: ['details']\r\n\t})\r\n\t@Display($localize`:@@engine:Engine`)\r\n\tpublic engine?: TemplateEngine;\r\n\r\n\t/**\r\n\t * @property Defines the template type (e.g. Email, PDF).\r\n\t * @description Determines how the template content is interpreted and rendered.\r\n\t * @type {TemplateType}\r\n\t */\r\n\t@required()\r\n\t@FormField({\r\n\t\trow: 20,\r\n\t\tenumType: TemplateType,\r\n\t\tfieldSets: ['details']\r\n\t})\r\n\t@Display($localize`:@@type:Type`)\r\n\tpublic type: TemplateType = TemplateType.Email;\r\n\r\n\t/**\r\n\t * @property Human-readable name of the template.\r\n\t * @description Used for identification in lists and selectors.\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@required()\r\n\t@Column({ index: 1 })\r\n\t@FormField({\r\n\t\trow: 10,\r\n\t\tfieldSets: ['details']\r\n\t})\r\n\t@Display($localize`:@@name:Name`)\r\n\tpublic name?: string;\r\n\r\n\t/**\r\n\t * @property Draft template reference.\r\n\t * @description Selecting a draft loads its content into the editor.\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@prop()\r\n\t@FormField<Template>({\r\n\t\trow: 15,\r\n\t\tendpoint: 'templateDoc',\r\n\t\toptionTextProperty: 'key',\r\n\t\toptionValueProperty: 'key',\r\n\t\tfieldSets: ['details'],\r\n\t\tchange: (_, __, ___, ctx: any) => ctx?.loadDraft()\r\n\t})\r\n\t@Display($localize`:@@draft:Draft`)\r\n\tpublic draft?: string;\r\n\r\n\t/**\r\n\t * @property Template subject.\r\n\t * @description Typically used for email-based templates.\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@prop()\r\n\t@Column({ index: 10, maxWidth: 250, display: Grid.Lg })\r\n\t@FormField({\r\n\t\trow: 30,\r\n\t\tfieldSets: ['details']\r\n\t})\r\n\t@Display($localize`:@@subject:Subject`)\r\n\tpublic subject?: string;\r\n\r\n\t/**\r\n\t * @property Unique template key.\r\n\t * @description Used for programmatic access and lookup.\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@required()\r\n\t@Column({ index: 30, maxWidth: 150, display: Grid.Lg })\r\n\t@FormField({\r\n\t\trow: 10,\r\n\t\tfieldSets: ['details']\r\n\t})\r\n\t@Display('Key')\r\n\tpublic key?: string;\r\n\r\n\t/**\r\n\t * @property Internal notice.\r\n\t * @description Informational text not included in rendered output.\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@prop()\r\n\t@FormField({\r\n\t\trow: 40,\r\n\t\ttype: FormFieldType.TextArea,\r\n\t\tfieldSets: ['details']\r\n\t})\r\n\t@Display($localize`:@@notice:Notice`)\r\n\tpublic notice?: string;\r\n\r\n\t/**\r\n\t * @property Email address.\r\n\t * @description Optional sender or reply-to address.\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@prop()\r\n\t@Display($localize`:@@email:Email`)\r\n\tpublic email?: string;\r\n\r\n\t/**\r\n\t * @property Template content.\r\n\t * @description Main rendered body (HTML, text, etc.).\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@required()\r\n\tpublic content?: string;\r\n\r\n\t/**\r\n\t * @property Dummy data.\r\n\t * @description Sample data used for previewing the template.\r\n\t * @type {string | undefined}\r\n\t */\r\n\t@prop()\r\n\tpublic dummyData?: string;\r\n\r\n\t/**\r\n\t * @property Client associations.\r\n\t * @description Controls template visibility in multi-client environments.\r\n\t * @type {TemplateClient[] | undefined}\r\n\t */\r\n\t@required({ conditionalExpression: (x: Template) => true })\r\n\t@Column<Template>({\r\n\t\tindex: 40,\r\n\t\tfilter: 'clientJoins.client.displayName',\r\n\t\tsortBy: 'clientJoins.Min(client.displayName)',\r\n\t\tcontent: (x) =>\r\n\t\t\tx ? Utils.joinArray(x.clientJoins?.map(y => y.client?.displayName ?? '') ?? []) : undefined,\r\n\t\tdisplay: Grid.Lg,\r\n\t\tmaxWidth: 200,\r\n\t\thide: (_, __, ctx: any) =>\r\n\t\t\t(!ctx.canCreate || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients)) || ctx.isClientAdmin,\r\n\t})\r\n\t@FormField<Template, TemplateClient>({\r\n\t\trow: 1,\r\n\t\tendpoint: 'client',\r\n\t\tparams: () => ({\r\n\t\t\tenabled: true,\r\n\t\t\tprojection: 'id,displayName',\r\n\t\t\tsortBy: 'id'\r\n\t\t}),\r\n\t\tmultiple: true,\r\n\t\ttriggerMode: 'chip',\r\n\t\tfieldSets: ['details'],\r\n\t\thide: (_, __, ctx: any) =>\r\n\t\t\t(!ctx.canCreate || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients)) || ctx.isClientAdmin,\r\n\t\tcompareWith: (o, v) => o.clientId === v.clientId,\r\n\t\tmapper: (x: { id: number; displayName: string }[]) =>\r\n\t\t\tx.map(y => new TemplateClient({ clientId: y.id, clientName: y.displayName })),\r\n\t\toptionTemplate: (x) => x?.clientName,\r\n\t\ttriggerMapper: (x) => x?.clientName\r\n\t})\r\n\t@Display($localize`:@@projects:Projects`)\r\n\tpublic clientJoins?: TemplateClient[];\r\n\r\n\t/**\r\n\t * @property Department associations.\r\n\t * @description Further restricts template visibility by department.\r\n\t * @type {TemplateDepartment[] | undefined}\r\n\t */\r\n\t@prop()\r\n\t@Column<Template>({\r\n\t\tindex: 50,\r\n\t\tfilter: 'departmentJoins.department.displayName',\r\n\t\tsortBy: 'departmentJoins.Min(department.displayName)',\r\n\t\tcontent: (x) =>\r\n\t\t\tx ? Utils.joinArray(x.departmentJoins?.map(y => y.department?.displayName ?? '') ?? []) : undefined,\r\n\t\tdisplay: Grid.Lg,\r\n\t\tmaxWidth: 200,\r\n\t\thide: (_, __, ctx: any) =>\r\n\t\t\t!ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n\t})\r\n\t@FormField<Template, TemplateDepartment>({\r\n\t\trow: 2,\r\n\t\tendpoint: 'department',\r\n\t\tparams: (x) => ({\r\n\t\t\tenabled: true,\r\n\t\t\tprojection: 'id,displayName',\r\n\t\t\tsortBy: 'id',\r\n\t\t\tclientId: x.clientJoins?.map(y => y.clientId)\r\n\t\t}),\r\n\t\tmultiple: true,\r\n\t\ttriggerMode: 'chip',\r\n\t\tfieldSets: ['details'],\r\n\t\thide: (_, __, ctx: any) =>\r\n\t\t\t(!ctx.isAdmin && !ctx.isClientAdmin) || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n\t\tcompareWith: (o, v) => o.departmentId === v.departmentId,\r\n\t\tmapper: (x: { id: number; displayName: string }[]) =>\r\n\t\t\tx.map(y => new TemplateDepartment({ departmentId: y.id, departmentName: y.displayName })),\r\n\t\toptionTemplate: (x) => x?.departmentName,\r\n\t\ttriggerMapper: (x) => x?.departmentName\r\n\t})\r\n\t@Display($localize`:@@departments:Departments`)\r\n\tpublic departmentJoins?: TemplateDepartment[];\r\n\r\n\t/**\r\n\t * @property Reviewed flag.\r\n\t * @description Indicates whether the template is active and selectable.\r\n\t * @type {boolean | undefined}\r\n\t */\r\n\t@prop()\r\n\t@Column({\r\n\t\tindex: 60,\r\n\t\twidth: 100,\r\n\t\tdisabled: true\r\n\t})\r\n\t@FormField({\r\n\t\trow: 100,\r\n\t\tfieldSets: ['details'],\r\n\t\treadonly: _ => true\r\n\t})\r\n\t@Display($localize`:@@reviewed:Reviewed`)\r\n\tpublic reviewed?: true;\r\n\r\n\t/**\r\n\t * @property Enabled flag.\r\n\t * @description Indicates whether the template is active and selectable.\r\n\t * @type {boolean | undefined}\r\n\t */\r\n\t@prop()\r\n\t@Column({ index: 70, event: 'toggle' })\r\n\t@FormField({\r\n\t\trow: 100,\r\n\t\tfieldSets: ['details']\r\n\t})\r\n\t@Display($localize`:@@enabled:Enabled`)\r\n\tpublic enabled?: true;\r\n\r\n\t/**\r\n\t * @property Attachments.\r\n\t * @description Files attached to the template (e.g. email attachments).\r\n\t * @type {Attachment[]}\r\n\t */\r\n\t@prop()\r\n\tpublic attachments: Attachment[] = [];\r\n}\r\n","import { TemplateType } from \"../enums/template-type\";\r\n\r\nexport class TemplatePreview {\r\n /**\r\n * @property\r\n */\r\n public type?: TemplateType\r\n\r\n /**\r\n * @property\r\n */\r\n public endpoint?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n public displayName?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n public entityName?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n public entityId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public templateId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public email?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n public subject?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n public content?: string;\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<TemplatePreview>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Template } from '../models/template';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TemplateService extends GenericService<Template> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('template');\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Template } from '../models/template';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TemplateDocService extends GenericService<Template> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('templateDoc');\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { TemplatePreview } from '../models/template-preview';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TemplatePreviewService extends GenericService<TemplatePreview> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('templatePreview');\r\n\t}\r\n}","\r\nimport { ChangeDetectionStrategy, Component, ElementRef, Inject, ViewChild } from '@angular/core';\r\nimport { FormsModule, NgModel } 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 { MatDivider } from '@angular/material/divider';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { BaseComponent, VdChipsComponent } from '@messaia/cdk';\r\nimport { saveAs } from 'file-saver';\r\nimport { PDFSource, PdfViewerModule } from 'ng2-pdf-viewer';\r\nimport { TemplateType } from '../../enums/template-type';\r\nimport { TemplatePreview } from '../../models/template-preview';\r\nimport { TemplatePreviewService } from '../../services/template-preview';\r\n\r\n@Component({\r\n selector: 'app-template-preview',\r\n templateUrl: 'template-preview-dialog.html',\r\n styleUrls: ['template-preview-dialog.scss'],\r\n changeDetection: ChangeDetectionStrategy.Eager,\r\n imports: [\r\n MatIcon,\r\n MatDialogModule,\r\n MatButtonModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatProgressBarModule,\r\n MatDivider,\r\n MatCard,\r\n VdChipsComponent,\r\n FormsModule,\r\n PdfViewerModule\r\n ]\r\n})\r\nexport class TemplatePreviewDialogComponent extends BaseComponent {\r\n\r\n /**\r\n * TemplateType\r\n */\r\n public TemplateType: typeof TemplateType = TemplateType;\r\n\r\n /**\r\n * Pdf blob\r\n */\r\n public pdfBlob?: Blob;\r\n\r\n /**\r\n * PDF source\r\n */\r\n public pdfSrc?: string | Uint8Array | PDFSource;\r\n\r\n /**\r\n * Pdf zoom\r\n */\r\n public zoom = 0.98;\r\n\r\n /**\r\n * Pdf zoom scale\r\n */\r\n public zoomScale: 'page-height' | 'page-fit' | 'page-width' = 'page-width';\r\n\r\n /**\r\n * Track whether the dialog is maximized\r\n */\r\n public isMaximized = false;\r\n\r\n /* \r\n * Reference to the iframe element. \r\n * This will be used to manipulate the iframe's content programmatically.\r\n * 'static: false' indicates that the reference is resolved after view initialization.\r\n */\r\n @ViewChild('iframeRef', { static: false })\r\n public iframeRef?: ElementRef;\r\n\r\n /* \r\n * Reference to the NgModel directive for the input element.\r\n */\r\n @ViewChild('email')\r\n public emailModel?: NgModel;\r\n\r\n /**\r\n * Constructor\r\n * @param dialogRef \r\n * @param data \r\n */\r\n constructor(\r\n protected service: TemplatePreviewService,\r\n public dialogRef: MatDialogRef<TemplatePreviewDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: TemplatePreview\r\n ) {\r\n super()\r\n this.data.email = localStorage.getItem('templatePreviewEmail') ?? '';\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 /* Set loading state to true */\r\n this.isLoading = true;\r\n\r\n if (this.data.type == TemplateType.Pdf) {\r\n this.service.create(this.data, undefined, { responseType: 'arraybuffer' }).subscribe({\r\n next: (x) => {\r\n /* Set loading state to false */\r\n this.isLoading = false;\r\n\r\n /* Create a Blob from the response */\r\n this.pdfBlob = new Blob([<any>x], { type: 'application/pdf' });\r\n\r\n /* Create a URL for the PDF Blob */\r\n this.pdfSrc = URL.createObjectURL(this.pdfBlob);\r\n },\r\n error: () => {\r\n /* Handle error and set loading state to false */\r\n this.isLoading = false;\r\n }\r\n });\r\n } else {\r\n this.service.create(this.data).subscribe({\r\n next: (x: any) => {\r\n /* Set loading state to false */\r\n this.isLoading = false;\r\n\r\n /* Merge response data with existing data */\r\n Object.assign(this.data, x);\r\n\r\n /* Get the iframe element from the template reference variable */\r\n const iframe = this.iframeRef?.nativeElement;\r\n if (iframe) {\r\n /* Access the document object of the iframe */\r\n const doc = iframe.contentDocument || iframe.contentWindow.document;\r\n\r\n /* Write the HTML content to the iframe */\r\n doc.open();\r\n doc.write(x?.content ?? '');\r\n doc.close();\r\n }\r\n },\r\n error: () => {\r\n /* Handle error and set loading state to false */\r\n this.isLoading = false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Sends a mail\r\n */\r\n public sendMail() {\r\n /* Throw an exception if this.data.email is null */\r\n if (this.data.email == null) {\r\n throw new Error('Email is null. Cannot send mail.');\r\n }\r\n\r\n this.service.create(this.data, '/sendMail').subscribe({\r\n next: (x) => {\r\n this.isLoading = false;\r\n localStorage.setItem('templatePreviewEmail', this.data.email!);\r\n this.snackBarService.open($localize`:@@snackbar.send.success:Data sent successfully.`, undefined, {\r\n duration: 3000,\r\n panelClass: ['primary']\r\n });\r\n },\r\n error: () => this.isLoading = false\r\n });\r\n }\r\n\r\n /**\r\n * Downloads the pdf\r\n */\r\n public download(): void {\r\n saveAs(this.pdfBlob!, \"Pdf.pdf\");\r\n }\r\n\r\n /**\r\n * Zooms in the pdf\r\n */\r\n public zoomIn(): void {\r\n this.zoom += 0.1;\r\n }\r\n\r\n /**\r\n * Zooms out the pdf\r\n */\r\n public zoomOut(): void {\r\n this.zoom += -0.1;\r\n }\r\n\r\n /**\r\n * Closes the dialog\r\n */\r\n public cancel(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n /**\r\n * Toggle the dialog between maximized and normal size\r\n */\r\n public toggleMaximize() {\r\n this.isMaximized = !this.isMaximized;\r\n /* Apply or remove the full-screen class based on the isMaximized flag */\r\n if (this.isMaximized) {\r\n this.dialogRef.addPanelClass('full-screen');\r\n } else {\r\n this.dialogRef.removePanelClass('full-screen');\r\n }\r\n }\r\n}","<div mat-dialog-title>\r\n <span i18n=\"@@templatePreview\">Template preview</span>\r\n <span flex></span>\r\n @if (data.type == TemplateType.Pdf && pdfSrc ||true) {\r\n <div>\r\n <a mat-icon-button (click)=\"download()\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">download</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomIn()\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">zoom_in</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomOut()\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">zoom_out</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"toggleMaximize()\" class=\"maximize-button\">\r\n <mat-icon>{{ isMaximized ? 'fullscreen_exit' : 'fullscreen' }}</mat-icon>\r\n </a>\r\n </div>\r\n }\r\n</div>\r\n<form #form=\"ngForm\" novalidate layout=\"column\" flex>\r\n <!-- #region Entity -->\r\n @if (data.endpoint) {\r\n <div layout=\"row\" flex>\r\n <mat-form-field flex layout-margin>\r\n <mat-label>{{data.entityName}}</mat-label>\r\n <vd-chips [(ngModel)]=\"data.entityId\" [endpoint]=\"data.endpoint\" [params]=\"{sortBy: 'id'}\" text=\"displayName\" name=\"entityId\" #entityId=\"ngModel\" [placeholder]=\"data.entityName??''\" required flex>\r\n <ng-template vd-chip let-entity=\"chip\">\r\n <span>{{entity[data.displayName??'']}}</span>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-entity=\"option\">\r\n <span>{{entity[data.displayName??'']}}</span>\r\n </ng-template>\r\n </vd-chips>\r\n @if (entityId.errors!['required']) {\r\n <mat-error><span>{{data.entityName}}</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n }\r\n <!-- #endregion -->\r\n\r\n @if (isLoading) {\r\n <div layout=\"column\" layout-gt-sm=\"row\" class=\"push-bottom\" flex>\r\n <div flex layout-margin>\r\n <div class=\"push-bottom-sm\" i18n=\"@@pleaseWait\">Please Wait...</div>\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- #region PDF Content -->\r\n @if (data.type == TemplateType.Pdf) {\r\n <mat-card flex>\r\n @if (data.type == TemplateType.Pdf && pdfSrc) {\r\n <pdf-viewer [src]=\"pdfSrc\" [render-text]=\"true\" [zoom]=\"zoom\" [zoom-scale]=\"zoomScale\" [show-borders]=\"true\" [original-size]=\"false\" [autoresize]=\"true\"></pdf-viewer>\r\n }\r\n </mat-card>\r\n }\r\n <!-- #region Content -->\r\n\r\n @if (data.type != TemplateType.Pdf) {\r\n <div layout=\"column\" class=\"pad-top-none\" layout-padding margin-layout flex>\r\n <!-- #region Content -->\r\n <div class=\"pad-top-none\" layout-padding margin-layout flex>\r\n <iframe #iframeRef frameborder=\"0\"></iframe>\r\n </div>\r\n <!-- #endregion -->\r\n <!-- #region Email-->\r\n <div layout-gt-sm=\"row\" layout=\"column\" class=\"pad-top\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label i18n=\"@@email\">Email</mat-label>\r\n <input matInput type=\"email\" name=\"email\" [(ngModel)]=\"data.email\" #email=\"ngModel\" email placeholder=\"Email\" i18n-placeholder=\"@@email\">\r\n @if (email.errors && email.errors!['required']) {\r\n <mat-error><span i18n=\"@@email\">Email</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n }\r\n @if (!email.errors!['required'] && email.errors!['email']) {\r\n <mat-error><span i18n=\"@@email\">Email</span><span i18n=\"@@isInvalid\"> is invalid</span></mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n </div>\r\n }\r\n <mat-divider></mat-divider>\r\n <div mat-dialog-actions class=\"pad-left\">\r\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"cancel()\" [autofocus]=\"true\" i18n=\"@@close\">Close</button>\r\n <button type=\"button\" mat-flat-button (click)=\"sendMail()\" [disabled]=\"data.email == undefined || !emailModel?.valid\" i18n=\"@@sendMail\">Send mail</button>\r\n </div>\r\n</form>","\r\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { CodemirrorModule } from '@ctrl/ngx-codemirror';\r\nimport { FileService, GenericReactiveFormComponent, RxReactiveFormsModule, VdGenericFormComponent, VdLayoutCardOverComponent, VdLayoutNavComponent } from '@messaia/cdk';\r\nimport { Attachment, VdAuditComponent } from '@messaia/cdk-base';\r\nimport 'codemirror/addon/edit/closetag';\r\nimport 'codemirror/addon/edit/matchbrackets';\r\nimport 'codemirror/addon/selection/active-line';\r\nimport 'codemirror/mode/htmlmixed/htmlmixed';\r\nimport 'codemirror/mode/javascript/javascript';\r\nimport { saveAs } from 'file-saver';\r\nimport { TemplateType } from '../../enums/template-type';\r\nimport { CmsSettings } from '../../models/cms-settings';\r\nimport { Template } from '../../models/template';\r\nimport { TemplatePreview } from '../../models/template-preview';\r\nimport { TemplateService } from '../../services/template';\r\nimport { TemplateDocService } from '../../services/template-doc';\r\nimport { TemplatePreviewDialogComponent } from '../template-preview-dialog/template-preview-dialog';\r\n\r\n@Component({\r\n selector: 'app-template-form',\r\n templateUrl: './template-form.html',\r\n styleUrls: ['./template-form.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.Eager,\r\n imports: [\r\n ReactiveFormsModule,\r\n RxReactiveFormsModule,\r\n CodemirrorModule,\r\n MatExpansionModule,\r\n MatButtonModule,\r\n VdLayoutNavComponent,\r\n VdLayoutCardOverComponent,\r\n VdGenericFormComponent,\r\n VdAuditComponent\r\n ]\r\n})\r\nexport class TemplateFormComponent extends GenericReactiveFormComponent<Template, TemplateService> {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n public override settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Represents the available template types.\r\n */\r\n public TemplateType: typeof TemplateType = TemplateType;\r\n\r\n /**\r\n * Retrieves the attachments form control.\r\n */\r\n get attachmentsControl() { return this.form.controls['attachments']; }\r\n\r\n /**\r\n * Configuration options for the HTML editor.\r\n */\r\n public override editorOptions: any = {\r\n lineNumbers: true,\r\n theme: 'material',\r\n autoCloseTags: true,\r\n styleActiveLine: true,\r\n mode: 'text/html',\r\n profile: 'xhtml'\r\n };\r\n\r\n /**\r\n * Configuration options for the JSON editor.\r\n */\r\n public jsonEditorOptions: any = {\r\n lineNumbers: true,\r\n theme: 'material',\r\n autoCloseTags: true,\r\n styleActiveLine: true,\r\n mode: {\r\n name: \"javascript\",\r\n json: true,\r\n statementIndent: 2\r\n },\r\n profile: 'xhtml',\r\n lineWrapping: true,\r\n indentWithTabs: false,\r\n tabSize: 2\r\n };\r\n\r\n /**\r\n * Initializes an instance of TemplateFormComponent.\r\n */\r\n constructor(\r\n protected override service: TemplateService,\r\n protected templateDocService: TemplateDocService,\r\n protected fileService: FileService,\r\n protected override dialog: MatDialog\r\n ) {\r\n super(Template, service);\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiClients) {\r\n this.include('ClientJoins', true);\r\n }\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiDepartments) {\r\n this.include('DepartmentJoins', true);\r\n }\r\n }\r\n\r\n /**\r\n * Removes an attachment from the form.\r\n * @param attachment The attachment to remove.\r\n */\r\n public removeAttachment(attachment: Attachment): void {\r\n if (Array.isArray(this.item?.attachments)) {\r\n var index = this.attachmentsControl.value.indexOf(attachment, 0);\r\n if (index > -1) {\r\n this.dialogService.openConfirm({\r\n message: 'Möchten Sie diesen Anhang wirklich löschen?',\r\n title: 'Löschen bestätigen',\r\n cancelButton: $localize`:@@cancel:Cancel`,\r\n acceptButton: $localize`:@@yes:Yes`,\r\n }).afterClosed().subscribe((accept: boolean) => {\r\n if (accept) {\r\n this.attachmentsControl.value.splice(index, 1);\r\n this.attachmentsControl.updateValueAndValidity();\r\n this.attachmentsControl.markAsDirty();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Handles file upload for attachments.\r\n * @param $event The file input event.\r\n */\r\n public uploadAttachment($event: Event): void {\r\n let file = (($event?.target as HTMLInputElement).files ?? [])[0];\r\n if (file != null) {\r\n // this.fileService.upload(file, `upload`, { clientId: this.item.clientId, path: `${this.item.clientId ? '' : 'common/'}docs` }).subscribe(event => {\r\n // \tif (event.type === HttpEventType.UploadProgress) {\r\n\r\n // \t\t/* Calculate the progress percentage */\r\n // \t\tconst percentDone = Math.round(100 * event.loaded / event.total);\r\n\r\n // \t\t/* Pass the percentage into the progress-stream */\r\n // \t\tconsole.info(percentDone);\r\n // \t} else if (event instanceof HttpResponse) {\r\n // \t\t/* Add our attachments */\r\n // \t\tthis.attachmentsControl.setValue([...this.attachmentsControl.value, <Attachment>event.body]);\r\n // \t\tthis.attachmentsControl.updateValueAndValidity();\r\n // \t\tthis.attachmentsControl.markAsDirty();\r\n // \t}\r\n // });\r\n }\r\n }\r\n\r\n /**\r\n * Initiates a download for the specified attachment.\r\n * @param attachment The attachment to download.\r\n */\r\n public downloadAttachment(attachment: Attachment): void {\r\n if (attachment.id) {\r\n this.service.download(`downloadAttachment/${attachment.id}`).subscribe(x => {\r\n saveAs(new Blob([x.data], { type: '' }), x.filename);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Opens a preview dialog for the template.\r\n */\r\n public showPreview(): void {\r\n this.dialog.open(TemplatePreviewDialogComponent, {\r\n width: this.item?.type == TemplateType.Pdf ? '1020px' : '920px',\r\n data: new TemplatePreview({\r\n templateId: this.item?.id,\r\n type: this.item?.type\r\n }),\r\n panelClass: ['dialog-full-screen']\r\n }).afterClosed().subscribe();\r\n }\r\n\r\n /**\r\n * Loads a draft version of the template.\r\n */\r\n public loadDraft(): void {\r\n this.templateDocService.get(`${this.item?.draft}`).subscribe(x => {\r\n this.form.patchValue(<Template>{\r\n subject: x.subject?.length > 0 ? x.subject : this.item?.subject,\r\n content: x.content\r\n });\r\n this.form.markAllAsTouched();\r\n });\r\n }\r\n}","<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [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 <mat-accordion [multi]=\"!isEditMode\">\r\n <!-- #region Details -->\r\n <mat-expansion-panel expanded=\"true\" id=\"details\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [fieldSets]=\"['details']\" [context]=\"this\"></vd-generic-form>\r\n </ng-template>\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)=\"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 </mat-expansion-panel>\r\n <!-- #endregion -->\r\n <!-- #region Content -->\r\n <mat-expansion-panel id=\"content\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <span i18n=\"@@content\">Content</span>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <div layout-margin>\r\n <ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n </div>\r\n </ng-template>\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)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n }\r\n @if (isEditMode) {\r\n <!-- <button type=\"button\" mat-button (click)=\"showPreview()\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</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 </mat-expansion-panel>\r\n <!-- #endregion -->\r\n <!-- #region Content -->\r\n <mat-expansion-panel id=\"testData\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <span i18n=\"@@testData\">Test Data</span>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <div layout-margin>\r\n <ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n </div>\r\n </ng-template>\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)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n }\r\n @if (isEditMode) {\r\n <button type=\"button\" mat-button (click)=\"showPreview()\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</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 </mat-expansion-panel>\r\n <!-- #endregion -->\r\n <!-- #region Audit -->\r\n @if (isEditMode) {\r\n <mat-expansion-panel id=\"audit\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <span i18n=\"@@audit\">Audit</span>\r\n </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 </vd-layout-card-over>\r\n </form>\r\n }\r\n</vd-layout-nav>","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class ContentVariableClient {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public contentVariableId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public clientId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public client?: any;\r\n\r\n /**\r\n * @property\r\n */\r\n public clientName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<ContentVariableClient>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { prop, required } from \"@messaia/cdk\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class ContentVariableDepartment {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public contentVariableId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n public departmentId?: number;\r\n\r\n /**\r\n * @property\r\n */\r\n public department?: any;\r\n\r\n /**\r\n * @property\r\n */\r\n public departmentName?: string;\r\n\r\n /**\r\n * Constructor\r\n * @param init\r\n */\r\n public constructor(init?: Partial<ContentVariableDepartment>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { Api, AuditEntity, Column, Display, FormField, Grid, prop, required, Table, Utils } from \"@messaia/cdk\";\r\nimport { ContentVariableClient } from \"./content-variable-client\";\r\nimport { ContentVariableDepartment } from \"./content-variable-department\";\r\n\r\n@Api('contentvariable')\r\n@Table({\r\n endpoint: 'contentvariable',\r\n projection: ['id', 'createdDate', 'name', 'value', 'enabled']\r\n})\r\nexport class ContentVariable extends AuditEntity {\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n public title?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n @FormField({ row: 10 })\r\n @Column({})\r\n @Display($localize`:@@name:Name`)\r\n public name?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n @required()\r\n @FormField({ row: 11 })\r\n @Column({ display: Grid.Sm })\r\n @Display($localize`:@@value:Value`)\r\n public value?: string;\r\n\r\n /**\r\n * @property\r\n */\r\n @required({ conditionalExpression: (x: ContentVariable) => true })\r\n @Column<ContentVariable>({\r\n index: 5,\r\n name: 'clientJoins.client.displayName',\r\n sortBy: 'clientJoins.Min(client.displayName)',\r\n content: (x) => x ? Utils.joinArray(x?.clientJoins?.map(y => y.client?.displayName ?? '') ?? []) : undefined,\r\n display: Grid.Lg,\r\n maxWidth: 200,\r\n hide: (_, __, ctx: any) => (!ctx.canCreate || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients)) || ctx.isClientAdmin,\r\n })\r\n @FormField<ContentVariable, ContentVariableClient>({\r\n row: 1,\r\n endpoint: 'client',\r\n params: () => {\r\n return {\r\n enabled: true,\r\n projection: 'id,displayName',\r\n sortBy: 'id'\r\n }\r\n },\r\n multiple: true,\r\n hide: (_, __, ctx: any) => (!ctx.canCreate || (!ctx.settings?.multitenantable && !ctx.settings?.multiClients)) || ctx.isClientAdmin,\r\n compareWith: (o, v) => o.clientId === v.clientId,\r\n mapper: (x: { id: number, displayName: string }[]) => x.map(y => new ContentVariableClient({ clientId: y.id, clientName: y.displayName })),\r\n optionTemplate: (x) => x?.clientName,\r\n triggerMapper: (x) => x?.clientName\r\n })\r\n @Display($localize`:@@projects:Projects`)\r\n public clientJoins?: ContentVariableClient[];\r\n\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n @Column<ContentVariable>({\r\n index: 5,\r\n name: 'departmentJoins.department.displayName',\r\n sortBy: 'departmentJoins.Min(department.displayName)',\r\n content: (x) => x ? Utils.joinArray(x.departmentJoins?.map(y => y.department?.displayName ?? '') ?? []) : undefined,\r\n display: Grid.Lg,\r\n maxWidth: 200,\r\n hide: (_, __, ctx: any) => !ctx.isAdmin || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n })\r\n @FormField<ContentVariable, ContentVariableDepartment>({\r\n row: 2,\r\n endpoint: 'department',\r\n params: (x) => {\r\n return {\r\n enabled: true,\r\n projection: 'id,displayName',\r\n sortBy: 'id',\r\n clientId: x.clientJoins?.map(y => y.clientId)\r\n }\r\n },\r\n multiple: true,\r\n hide: (_, __, ctx: any) => (!ctx.isAdmin && !ctx.isClientAdmin) || (!ctx.settings?.multitenantable && !ctx.settings?.multiDepartments),\r\n compareWith: (o, v) => o.departmentId === v.departmentId,\r\n mapper: (x: { id: number, displayName: string }[]) => x.map(y => new ContentVariableDepartment({ departmentId: y.id, departmentName: y.displayName })),\r\n optionTemplate: (x) => x?.departmentName,\r\n triggerMapper: (x) => x?.departmentName\r\n })\r\n @Display($localize`:@@departments:Departments`)\r\n public departmentJoins?: ContentVariableDepartment[];\r\n\r\n /**\r\n * @property\r\n */\r\n @prop()\r\n @FormField({ row: 21 })\r\n @Column({ event: 'toggle' })\r\n @Display($localize`:@@enabled:Enabled`)\r\n public enabled?: boolean;\r\n}","import {\r\n Api,\r\n AuditEntity,\r\n Column,\r\n Display,\r\n FormField,\r\n FormFieldType,\r\n Grid,\r\n prop,\r\n required,\r\n Table\r\n} from \"@messaia/cdk\";\r\n\r\n@Api('slider')\r\n@Table({\r\n projection: ['id', 'createdDate', 'client(displayName)', 'name', 'group', 'enabled'],\r\n})\r\nexport class Slider extends AuditEntity {\r\n /**\r\n * @property Slider name.\r\n * @description The title or identifier for the slider.\r\n * @type {string | undefined}\r\n */\r\n @required()\r\n @FormField({ row: 10 })\r\n @Column({})\r\n @Display($localize`:@@name:Name`)\r\n public name?: string;\r\n\r\n /**\r\n * @property Slider group.\r\n * @description A group identifier used to categorize sliders.\r\n * @type {string | undefined}\r\n */\r\n @required()\r\n @FormField({ row: 20 })\r\n @Column({ maxWidth: 150, display: Grid.Lg })\r\n @Display($localize`:@@group:Group`)\r\n public group?: string;\r\n\r\n /**\r\n * @property Slider content.\r\n * @description HTML or rich text content displayed within the slider.\r\n * @type {string | undefined}\r\n */\r\n @required()\r\n @FormField({ row: 50, type: FormFieldType.Editor })\r\n @Display($localize`:@@content:Content`)\r\n public content?: string;\r\n\r\n /**\r\n * @property Embedded style.\r\n * @description Optional CSS styling specific to this content.\r\n * @type {string}\r\n */\r\n @prop()\r\n @FormField({\r\n row: 60,\r\n type: FormFieldType.TextArea\r\n })\r\n @Display($localize`:@@style:Style`)\r\n public styleInline?: string;\r\n\r\n /**\r\n * @property Slider image path.\r\n * @description File path to the slider image, typically used internally.\r\n * @type {string | undefined}\r\n */\r\n @prop()\r\n public imagePath?: string;\r\n\r\n /**\r\n * @property Image file for the slider.\r\n * @description This property stores the image file for the slider, located in a common directory for slider images.\r\n * @type {string | undefined}\r\n */\r\n @FormField({\r\n row: 30,\r\n filePath: 'images/sliders',\r\n isPublicFile: true,\r\n fileExtensions: '.png,.jpg',\r\n change: (_, img, __, ctx: any) => ctx?.upload(img, 'images/sliders', true)\r\n })\r\n @Display($localize`:@@image:Image`)\r\n @prop()\r\n public image?: string;\r\n\r\n /**\r\n * @property CSS class.\r\n * @description Custom CSS class applied to the slider, useful for styling purposes.\r\n * @type {string | undefined}\r\n */\r\n @prop()\r\n @FormField({ row: 40 })\r\n @Display($localize`:@@cssClass:CSS Class`)\r\n public cssClass?: string;\r\n\r\n /**\r\n * @property Client ID.\r\n * @description Reference to the associated client or project.\r\n * @type {number | undefined}\r\n */\r\n @FormField({\r\n row: 1,\r\n endpoint: 'client?enabled=true&projection=id,name'\r\n })\r\n @Column({\r\n name: 'client.displayName',\r\n maxWidth: 250,\r\n display: Grid.Lg\r\n })\r\n @Display($localize`:@@project:Project`)\r\n @prop()\r\n public clientId?: number;\r\n\r\n /**\r\n * @property Ordering index.\r\n * @description Position of the slider in a sorted list.\r\n * @type {number | undefined}\r\n */\r\n @prop()\r\n @FormField({ row: 20 })\r\n @Display($localize`:@@ordering:Ordering`)\r\n public ordering?: number;\r\n\r\n /**\r\n * @property Enabled flag.\r\n * @description Indicates whether the slider is active or visible.\r\n * @type {boolean | undefined}\r\n */\r\n @prop()\r\n @FormField({ row: 100 })\r\n @Column({ event: 'toggle' })\r\n @Display($localize`:@@enabled:Enabled`)\r\n public enabled?: boolean;\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\n\r\nimport { AuthHelper, GlobalRoles } from \"@messaia/cdk\";\r\nimport { OidcSecurityService } from \"angular-auth-oidc-client\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Includes resolve service\r\n */\r\n@Injectable()\r\nexport class DocumentListProjectionResolve {\r\n /*\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n private settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Constructor\r\n * @param oidcSecurityService \r\n */\r\n constructor(private oidcSecurityService: OidcSecurityService,) { }\r\n\r\n /**\r\n * Resolves includes\r\n */\r\n resolve(): Observable<string[]> {\r\n var projection: any[] = [];\r\n\r\n return this.oidcSecurityService.checkAuth().pipe(map(x => {\r\n AuthHelper.user.isAuthenticated = x.isAuthenticated;\r\n if (x.userData) {\r\n AuthHelper.user = Object.assign(x.userData, {\r\n id: x.userData.sub,\r\n isAuthenticated: x.isAuthenticated\r\n });\r\n\r\n if (AuthHelper.hasRole(GlobalRoles.Administrator) && (this.settings?.multitenantable || this.settings?.multiClients)) {\r\n projection.push('client(displayName)');\r\n }\r\n\r\n if ((AuthHelper.hasRole(GlobalRoles.Administrator) || AuthHelper.hasRole(GlobalRoles.ClientAdministrator)) && (this.settings?.multitenantable || this.settings?.multiDepartments)) {\r\n projection.push('department(displayName)');\r\n }\r\n }\r\n\r\n return projection;\r\n }));\r\n }\r\n}","import { inject, Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Excluded columns resolve service\r\n */\r\n@Injectable()\r\nexport class ExcludedColumnsResolve {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n private settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Resolves excluded columns\r\n */\r\n resolve(): Observable<string[]> {\r\n return of(this.settings?.multitenantable ? [] : ['client.displayName']);\r\n }\r\n}","import { inject, Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Excluded fields resolve service\r\n */\r\n@Injectable()\r\nexport class ExcludedFieldsResolve {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n private settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Resolves excluded fields\r\n */\r\n resolve(): Observable<string[]> {\r\n return of(this.settings?.multitenantable ? [] : ['clientId']);\r\n }\r\n}","import { inject, Injectable } from \"@angular/core\";\r\n\r\nimport { AuthHelper } from \"@messaia/cdk\";\r\nimport { OidcSecurityService } from \"angular-auth-oidc-client\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Includes resolve service\r\n */\r\n@Injectable()\r\nexport class FormIncludesResolve {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n private settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Constructor\r\n * @param oidcSecurityService \r\n */\r\n constructor(private oidcSecurityService: OidcSecurityService,) { }\r\n\r\n /**\r\n * Resolves includes\r\n */\r\n resolve(): Observable<string[]> {\r\n var includes: any[] = [];\r\n\r\n return this.oidcSecurityService.checkAuth().pipe(map(x => {\r\n AuthHelper.user.isAuthenticated = x.isAuthenticated;\r\n if (x.userData) {\r\n AuthHelper.user = Object.assign(x.userData, {\r\n id: x.userData.sub,\r\n isAuthenticated: x.isAuthenticated\r\n });\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiClients) {\r\n includes.push('ClientJoins');\r\n }\r\n\r\n if (this.settings?.multitenantable || this.settings?.multiDepartments) {\r\n includes.push('DepartmentJoins');\r\n }\r\n }\r\n\r\n return includes;\r\n }));\r\n }\r\n}","import { inject, Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Form validation resolve service\r\n */\r\n@Injectable()\r\nexport class FormValidationResolve {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n private settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Resolves Form validation\r\n */\r\n resolve(): Observable<any> {\r\n return of(this.settings?.multitenantable ? { clientId: { required: true } } : {});\r\n }\r\n}","import { inject, Injectable } from \"@angular/core\";\r\n\r\nimport { AuthHelper, GlobalRoles } from \"@messaia/cdk\";\r\nimport { OidcSecurityService } from \"angular-auth-oidc-client\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Includes resolve service\r\n */\r\n@Injectable()\r\nexport class ListProjectionResolve {\r\n /**\r\n * Injects the CmsSettings service using Angular's `inject()` function.\r\n * This allows access to the CmsSettings instance outside of constructor-based dependency injection,\r\n * commonly used in standalone components or functional-style Angular APIs.\r\n */\r\n private settings: CmsSettings = inject(CmsSettings);\r\n\r\n /**\r\n * Constructor\r\n * @param oidcSecurityService \r\n */\r\n constructor(private oidcSecurityService: OidcSecurityService,) { }\r\n\r\n /**\r\n * Resolves includes\r\n */\r\n resolve(): Observable<string[]> {\r\n var projection: any[] = [];\r\n\r\n return this.oidcSecurityService.checkAuth().pipe(map(x => {\r\n AuthHelper.user.isAuthenticated = x.isAuthenticated;\r\n if (x.userData) {\r\n AuthHelper.user = Object.assign(x.userData, {\r\n id: x.userData.sub,\r\n isAuthenticated: x.isAuthenticated\r\n });\r\n\r\n if (AuthHelper.hasRole(GlobalRoles.Administrator) && (this.settings?.multitenantable || this.settings?.multiClients)) {\r\n projection.push('clientJoins(client(displayName))');\r\n }\r\n\r\n if ((AuthHelper.hasRole(GlobalRoles.Administrator) || AuthHelper.hasRole(GlobalRoles.ClientAdministrator)) && (this.settings?.multitenantable || this.settings?.multiDepartments)) {\r\n projection.push('departmentJoins(department(displayName))');\r\n }\r\n }\r\n\r\n return projection;\r\n }));\r\n }\r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, Resolve } from \"@angular/router\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Settings resolve service\r\n *\r\n * This resolver provides the CMS configuration settings for routes that depend on them.\r\n */\r\n@Injectable()\r\nexport class SettingsResolve implements Resolve<CmsSettings> {\r\n\r\n /**\r\n * Constructor injecting the CMS settings provided via Angular DI.\r\n *\r\n * @param cmsSettings - The CMS settings instance injected from the DI system.\r\n */\r\n constructor(@Inject(CmsSettings) private cmsSettings: CmsSettings) { }\r\n\r\n /**\r\n * Resolves settings for a route.\r\n *\r\n * @param route - The activated route snapshot.\r\n * @returns An observable emitting the CMS settings.\r\n */\r\n resolve(route: ActivatedRouteSnapshot): Observable<CmsSettings> {\r\n /** Return the injected settings as an observable */\r\n return of(this.cmsSettings);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { ResolveData, RouterModule, Routes } from '@angular/router';\r\nimport { AuthHelper } from '@messaia/cdk';\r\nimport { DocumentType, VdDynamicFormComponent, VdDynamicListComponent } from '@messaia/cdk-base';\r\nimport { ContentFormComponent } from './components/content-form/content-form';\r\nimport { DocumentDialogComponent } from './components/document-dialog/document-dialog';\r\nimport { FaqFormComponent } from './components/faq-form/faq-form';\r\nimport { TemplateFormComponent } from './components/template-form/template-form';\r\nimport { ContentType } from './enums/content-type';\r\nimport { Content } from './models/content';\r\nimport { ContentVariable } from './models/content-variable';\r\nimport { Document } from './models/document';\r\nimport { Faq } from './models/faq';\r\nimport { Slider } from './models/slider';\r\nimport { Template } from './models/template';\r\nimport { DocumentListProjectionResolve } from './resolvers/document-list-projection.resolve';\r\nimport { ExcludedColumnsResolve } from './resolvers/excluded-columns.resolve';\r\nimport { ExcludedFieldsResolve } from './resolvers/excluded-fields.resolve';\r\nimport { FormIncludesResolve } from './resolvers/form-includes.resolve';\r\nimport { FormValidationResolve } from './resolvers/form-validation.resolve';\r\nimport { ListProjectionResolve } from './resolvers/list-projection.resolve';\r\nimport { SettingsResolve } from './resolvers/settings.resolve';\r\n\r\n\r\nconst ListResolve: ResolveData = {\r\n settings: SettingsResolve,\r\n projection: ListProjectionResolve,\r\n excludedColumns: ExcludedColumnsResolve\r\n};\r\n\r\nconst DocsListResolve: ResolveData = {\r\n settings: SettingsResolve,\r\n projection: DocumentListProjectionResolve,\r\n};\r\n\r\nconst FormResolve: ResolveData = {\r\n settings: SettingsResolve,\r\n updateIncludes: FormIncludesResolve,\r\n excludedFields: ExcludedFieldsResolve,\r\n formValidation: FormValidationResolve\r\n};\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: '/cms/contents/page', pathMatch: 'full' },\r\n { path: 'faq', redirectTo: '/cms/faqs', pathMatch: 'full' },\r\n\r\n { path: 'contents/page', component: VdDynamicListComponent, data: { classType: Content, query: { type: ContentType.Page } }, resolve: ListResolve },\r\n { path: 'contents/block', component: VdDynamicListComponent, data: { classType: Content, query: { type: ContentType.Block } }, resolve: ListResolve },\r\n { path: 'contents/:type/add', component: ContentFormComponent, resolve: FormResolve },\r\n { path: 'contents/:type/edit/:id', component: ContentFormComponent, resolve: FormResolve },\r\n\r\n { path: 'variables', component: VdDynamicListComponent, data: { classType: ContentVariable }, resolve: ListResolve },\r\n { path: 'variables/edit/:id', component: VdDynamicFormComponent, data: { classType: ContentVariable, subtitle: $localize`:@@variables:Variables` }, resolve: FormResolve },\r\n { path: 'variables/add', component: VdDynamicFormComponent, data: { classType: ContentVariable, subtitle: $localize`:@@variables:Variables` }, resolve: FormResolve },\r\n\r\n { path: 'templates', component: VdDynamicListComponent, data: { classType: Template, includes: 'Client' }, resolve: ListResolve },\r\n { path: 'templates/edit/:id', component: TemplateFormComponent, resolve: FormResolve },\r\n { path: 'templates/add', component: TemplateFormComponent, resolve: FormResolve },\r\n\r\n { path: 'faqs', component: VdDynamicListComponent, data: { classType: Faq }, resolve: ListResolve },\r\n { path: 'faqs/edit/:id', component: FaqFormComponent, resolve: FormResolve },\r\n { path: 'faqs/add', component: FaqFormComponent, resolve: FormResolve },\r\n\r\n { path: 'sliders', component: VdDynamicListComponent, data: { classType: Slider }, resolve: ListResolve },\r\n { path: 'sliders/edit/:id', component: VdDynamicFormComponent, data: { classType: Slider, subtitle: $localize`:@@slider:Slider` }, resolve: FormResolve },\r\n { path: 'sliders/add', component: VdDynamicFormComponent, data: { classType: Slider, query: { clientId: AuthHelper.user.clientId }, subtitle: $localize`:@@slider:Slider` }, resolve: FormResolve },\r\n\r\n { path: 'documents', component: VdDynamicListComponent, data: { classType: Document, addDialogType: DocumentDialogComponent, query: { type: DocumentType.Document } }, resolve: DocsListResolve },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n providers: [\r\n SettingsResolve,\r\n ListProjectionResolve,\r\n DocumentListProjectionResolve,\r\n FormIncludesResolve,\r\n ExcludedColumnsResolve,\r\n ExcludedFieldsResolve,\r\n FormValidationResolve\r\n ]\r\n})\r\nexport class VdCmsRoutingModule { }","import { NgModule } from '@angular/core';\r\nimport { VdCmsRoutingModule } from './cms-routing.module';\r\n\r\n@NgModule({\r\n imports: [\r\n VdCmsRoutingModule\r\n ]\r\n})\r\nexport class VdCmsModule { }","export enum FaqScope {\r\n\tCustomerPortal,\r\n\tAdmin\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { map } from 'rxjs/operators';\r\nimport { ContentVariable } from '../models/content-variable';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ContentVariableService extends GenericService<ContentVariable> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('contentVariable');\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified alias is available.\r\n\t * @param id \r\n\t * @param alias \r\n\t */\r\n\tpublic isNameAvailable(item: ContentVariable) {\r\n\t\treturn this.create(item, '/isNameAvailable').pipe(map((x: any) => x.value));\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Slider } from '../models/slider';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SliderService extends GenericService<Slider> {\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n super('slider');\r\n }\r\n}","/// <reference types=\"@angular/localize\" />\r\n\r\n/*\r\n * Public API Surface of cdk-base\r\n */\r\nexport * from './cms-routing.module';\r\nexport * from './cms.module';\r\nexport * from './components/content-form/content-form';\r\nexport * from './components/document-dialog/document-dialog';\r\nexport * from './components/document-form-base/document-form-base';\r\nexport * from './components/template-form/template-form';\r\nexport * from './components/template-preview-dialog/template-preview-dialog';\r\nexport * from './enums/content-type';\r\nexport * from './enums/faq-scope';\r\nexport * from './enums/template-engine';\r\nexport * from './enums/template-type';\r\nexport * from './enums/wrap-tag';\r\nexport * from './models/cms-settings';\r\nexport * from './models/content';\r\nexport * from './models/content-client';\r\nexport * from './models/content-department';\r\nexport * from './models/content-variable';\r\nexport * from './models/content-variable-client';\r\nexport * from './models/content-variable-department';\r\nexport * from './models/document';\r\nexport * from './models/faq';\r\nexport * from './models/faq-client';\r\nexport * from './models/faq-department';\r\nexport * from './models/slider';\r\nexport * from './models/template';\r\nexport * from './models/template-client';\r\nexport * from './models/template-department';\r\nexport * from './models/template-preview';\r\nexport * from './resolvers/document-list-projection.resolve';\r\nexport * from './resolvers/excluded-columns.resolve';\r\nexport * from './resolvers/excluded-fields.resolve';\r\nexport * from './resolvers/form-includes.resolve';\r\nexport * from './resolvers/form-validation.resolve';\r\nexport * from './resolvers/list-projection.resolve';\r\nexport * from './resolvers/settings.resolve';\r\nexport * from './services/content';\r\nexport * from './services/content-variable';\r\nexport * from './services/document-generic';\r\nexport * from './services/document.service`';\r\nexport * from './services/faq';\r\nexport * from './services/slider';\r\nexport * from './services/template';\r\nexport * from './services/template-doc';\r\nexport * from './services/template-preview';\r\nexport * from './templates/document-form.template';\r\n\r\n","/*\r\n * Public API Surface of cdk-cms\r\n */\r\n\r\nexport * from './lib/public-api';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ContentService","i5","i1.FaqService","i2","i3","i4","i6","i7","i8","i1.TemplateService","i2.TemplateDocService","map"],"mappings":"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"}