@pics-core/platform-settings 2026.10.26-DEV.101 → 2026.10.26-QA.12

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":"pics-core-platform-settings.mjs","sources":["../../../../projects/pics-core/platform-settings/src/lib/settings-adapters.ts","../../../../projects/pics-core/platform-settings/src/lib/data-source/@core/data-source.url.config.ts","../../../../projects/pics-core/platform-settings/src/lib/data-source/@core/data-source.service.ts","../../../../projects/pics-core/platform-settings/src/lib/data-source/data-source.component.ts","../../../../projects/pics-core/platform-settings/src/lib/data-source/data-source.component.html","../../../../projects/pics-core/platform-settings/src/lib/platform-settings/@core/platform-settings-url.config.ts","../../../../projects/pics-core/platform-settings/src/lib/platform-settings/@core/platform-settings.service.ts","../../../../projects/pics-core/platform-settings/src/lib/platform-settings/platform-settings.component.ts","../../../../projects/pics-core/platform-settings/src/lib/platform-settings/platform-settings.component.html","../../../../projects/pics-core/platform-settings/src/lib/settings-shell.component.ts","../../../../projects/pics-core/platform-settings/src/lib/platform-settings.module.ts","../../../../projects/pics-core/platform-settings/src/lib/settings-routes.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/config-login-settings.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/urls/rbac-url.config.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/store.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/permissions/permission.store.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/data-store.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/constants/app-constants.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/alert.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/http.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/attachments.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/urls/configuration-settings-url.config.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/configuration-settings.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@shared/alert/alert.component.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@shared/alert/alert.component.html","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/pics-config-login-settings/config-login-preview/config-login-preview.component.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/pics-config-login-settings/config-login-preview/config-login-preview.component.html","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/pics-config-login-settings/config-login-settings/config-login-settings.component.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/pics-config-login-settings/config-login-settings/config-login-settings.component.html","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/config-login-settings.component.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/app.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/logger.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/credentials.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/auth.guard.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/urls/dynamic-tab-page-url.config.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/dynamic-tab-page-service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/urls/page-header-url.config.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/page-header.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/auth.state.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/auth.store.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/auth.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/local-storage.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/microstrategy.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/constants/theme-constants.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/theme.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/profile.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/directives/permission.directive.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/directives/show-field.directives.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/directives/directives.module.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@shared/alert/alert.module.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/pics-config-login-settings/pics-config-login-settings.module.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/share-data.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/config-login-settings.module.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/config-login-settings-host.component.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/config-login-settings-host.module.ts","../../../../projects/pics-core/platform-settings/src/pics-core-platform-settings.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/** The host supplies its authenticated API and existing notification/storage services. */\r\nexport interface SettingsHttpAdapter {\r\n get<T = unknown>(url: string): Observable<T>;\r\n post<T = unknown>(url: string, body: unknown): Observable<T>;\r\n patch<T = unknown>(url: string, body: unknown): Observable<T>;\r\n}\r\n\r\nexport interface SettingsAlertAdapter {\r\n success(message: string): void;\r\n error(message: string): void;\r\n}\r\n\r\nexport interface SettingsStorageAdapter {\r\n getItem(key: string): string | null;\r\n setItem(key: string, value: unknown): void;\r\n}\r\n\r\nexport const SETTINGS_HTTP = new InjectionToken<SettingsHttpAdapter>('SETTINGS_HTTP');\r\nexport const SETTINGS_ALERT = new InjectionToken<SettingsAlertAdapter>('SETTINGS_ALERT');\r\nexport const SETTINGS_SESSION = new InjectionToken<SettingsStorageAdapter>('SETTINGS_SESSION');\r\nexport const SETTINGS_LOCAL = new InjectionToken<Pick<SettingsStorageAdapter, 'setItem'>>('SETTINGS_LOCAL');\r\n","export class DataSourceServiceConfig {\r\n public static readonly ENDPOINT = {\r\n setting: {\r\n getOrganizationDbs: '/database/dataSource/getOrganizationDbs',\r\n updateData: '/database/DataSource/addOrUpdate',\r\n getList: '/database/getSchemasByDB/{dbaliasname}',\r\n schemaCheck: '/database/organization/{organizationid}/{dbaliasname}',\r\n updateSchema: '/database/addOrganizationSchemaByDB '\r\n }\r\n };\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { SETTINGS_HTTP, SettingsHttpAdapter } from '../../settings-adapters';\r\nimport { DataSourceServiceConfig } from './data-source.url.config';\r\n\r\n/**\r\n * Service for interacting with data sources.\r\n * Provides methods for fetching, updating, and managing data sources via API calls.\r\n * @export\r\n * @class DataSourceService\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataSourceService {\r\n /**\r\n * Creates an instance of DataSourceService.\r\n * @param {HttpService} httpService\r\n * @memberof DataSourceService\r\n */\r\n constructor(@Inject(SETTINGS_HTTP) private readonly httpService: SettingsHttpAdapter) {\r\n // This is intentional\r\n }\r\n /**\r\n * Fetches the list of organization databases.\r\n *\r\n * @return {*} An observable containing the list of organization databases.\r\n * @memberof DataSourceService\r\n */\r\n getOrganizationDbs(): Observable<unknown> {\r\n return this.httpService.get(DataSourceServiceConfig.ENDPOINT.setting.getOrganizationDbs);\r\n }\r\n /**\r\n * Retrieves the schema for a given database alias name.\r\n *\r\n * @param {string} dbAliasName - The alias name of the database.\r\n * @return {*} An observable containing the schema details.\r\n * @memberof DataSourceService\r\n */\r\n getSchema(dbAliasName: string): Observable<unknown> {\r\n return this.httpService.get(DataSourceServiceConfig.ENDPOINT.setting.getList.replace('{dbaliasname}', dbAliasName));\r\n }\r\n /**\r\n * Checks the schema for a given organization ID and database alias name.\r\n *\r\n * @param {string | number} id - The organization ID.\r\n * @param {string} dbaliasname - The alias name of the database.\r\n * @return {*} An observable containing the schema check result.\r\n * @memberof DataSourceService\r\n */\r\n schemaCheck(id: string | number, dbaliasname: string): Observable<unknown> {\r\n return this.httpService.get(\r\n DataSourceServiceConfig.ENDPOINT.setting.schemaCheck\r\n .replace('{organizationid}', `${id}`)\r\n .replace('{dbaliasname}', dbaliasname)\r\n );\r\n }\r\n /**\r\n * Updates data in the system.\r\n *\r\n * @param {Record<string, unknown>} data - The data to be updated.\r\n * @return {*} An observable containing the response after updating the data.\r\n * @memberof DataSourceService\r\n */\r\n updateData(data: Record<string, unknown>): Observable<unknown> {\r\n return this.httpService.post(DataSourceServiceConfig.ENDPOINT.setting.updateData, data);\r\n }\r\n /**\r\n * Updates the schema list with the provided data.\r\n *\r\n * @param {unknown} data - The schema data to be updated (can be an array or object).\r\n * @return {*} An observable containing the response after updating the schema.\r\n * @memberof DataSourceService\r\n */\r\n updateSchemaList(data: unknown): Observable<unknown> {\r\n return this.httpService.post(DataSourceServiceConfig.ENDPOINT.setting.updateSchema, data);\r\n }\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { SETTINGS_ALERT, SettingsAlertAdapter } from '../settings-adapters';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { DataSourceService } from './@core/data-source.service';\r\n\r\ninterface IReservedFields {\r\n created_by?: string;\r\n created_at?: string;\r\n updated_by?: string;\r\n updated_at?: string;\r\n soft_delete?: string;\r\n audit_enabled?: boolean;\r\n}\r\n\r\n// API response type with snake_case properties - using index signature to avoid naming convention issues\r\ninterface IReservedFieldsApi {\r\n [key: string]: string | boolean | undefined;\r\n}\r\n\r\n// API response type with snake_case properties - using index signature to avoid naming convention issues\r\ninterface IAdditionalInfoApi {\r\n [key: string]: IReservedFieldsApi | undefined;\r\n}\r\n\r\n// API response type with snake_case properties - using index signature to avoid naming convention issues\r\ninterface IDatabaseDataApi {\r\n id: string | number;\r\n organizationid: string | number;\r\n dbaliasname: string;\r\n databasetype: string;\r\n host: string;\r\n port: string | number;\r\n password: string;\r\n username: string;\r\n [key: string]: string | number | IAdditionalInfoApi | undefined;\r\n}\r\n\r\ninterface IOrganizationDbResponse {\r\n data: IDatabaseDataApi;\r\n}\r\n\r\ninterface ISchemaItem {\r\n name: string;\r\n}\r\n\r\ninterface ISchemaResponse {\r\n data: ISchemaItem[];\r\n}\r\n\r\ninterface ISchemaCheckItem {\r\n name: string;\r\n}\r\n\r\ninterface ISchemaCheckResponse {\r\n data: ISchemaCheckItem[];\r\n}\r\n\r\ninterface IUserData {\r\n id?: string | number;\r\n organizationid: string | number;\r\n databasetype: string;\r\n host: string;\r\n port: string | number;\r\n password: string;\r\n username: string;\r\n databaseName?: string;\r\n dbaliasname: string;\r\n selectedschemas?: string[];\r\n created_by?: string;\r\n created_at?: string;\r\n updated_by?: string;\r\n updated_at?: string;\r\n soft_delete?: string;\r\n audit_enabled?: boolean;\r\n}\r\n\r\ninterface ISchemaListItem {\r\n organizationid: string | number;\r\n dbId: string | number;\r\n schema: string;\r\n}\r\n\r\ninterface IHttpError {\r\n error?: {\r\n message?: string;\r\n };\r\n}\r\n\r\n/**\r\n * Component responsible for managing data sources.\r\n *\r\n * @export\r\n * @class DataSourceComponent\r\n * @implements {OnInit}\r\n */\r\n@Component({\r\n selector: 'app-data-source',\r\n templateUrl: './data-source.component.html',\r\n styleUrls: ['./data-source.component.scss'],\r\n standalone: false\r\n})\r\nexport class DataSourceComponent implements OnInit {\r\n items: MenuItem[] = [];\r\n activeItem!: MenuItem;\r\n isEdit: boolean = false;\r\n schema: string[] = [];\r\n value!: string;\r\n userid: string | number | null = null;\r\n dbaliasname: string | null = null;\r\n organizationid: string | number | null = null;\r\n settingForm!: UntypedFormGroup;\r\n checkedSchema: ISchemaCheckItem[] = [];\r\n selectSchema: string[] = [];\r\n listSchema: ISchemaListItem[] = [];\r\n auditEnabledList = [\r\n {\r\n key: 'Yes',\r\n value: true\r\n },\r\n {\r\n key: 'No',\r\n value: false\r\n }\r\n ];\r\n auditEnabled: boolean | null = null;\r\n\r\n /**\r\n * Creates an instance of DataSourceComponent.\r\n * @param {AlertService} alertService\r\n * @param {UntypedFormBuilder} formBuilder\r\n * @param {DataSourceService} settingService\r\n * @memberof DataSourceComponent\r\n */\r\n constructor(\r\n @Inject(SETTINGS_ALERT) private readonly alertService: SettingsAlertAdapter,\r\n private readonly formBuilder: UntypedFormBuilder,\r\n private readonly settingService: DataSourceService\r\n ) {\r\n // This is intentional\r\n }\r\n\r\n\r\n /**\r\n * Lifecycle hook that is called after data-bound properties are initialized.\r\n */\r\n ngOnInit(): void {\r\n this.getOrganizationDbs();\r\n this.initializeForm();\r\n this.isEdit = false;\r\n this.settingForm.disable();\r\n }\r\n\r\n /**\r\n * Initializes the setting form with default values and validators.\r\n */\r\n initializeForm(): void {\r\n this.settingForm = this.formBuilder.group({\r\n id: ['', Validators.required],\r\n organizationid: ['', Validators.required],\r\n databasetype: ['', Validators.required],\r\n host: [''],\r\n port: ['', Validators.required],\r\n password: ['', Validators.required],\r\n username: ['', [Validators.required, Validators.pattern('^[0-9a-zA-Z._-]+[@][0-9a-zA-Z._-]+[.][0-9a-zA-Z]{2,}$')]],\r\n databaseName: ['', Validators.required],\r\n dbaliasname: ['', Validators.required],\r\n selectedschemas: ['', Validators.required],\r\n created_by: ['', Validators.required],\r\n created_at: ['', Validators.required],\r\n updated_by: ['', Validators.required],\r\n updated_at: ['', Validators.required],\r\n soft_delete: ['', Validators.required],\r\n audit_enabled: [false, Validators.required]\r\n });\r\n }\r\n\r\n /**\r\n * Fetches organization databases and updates the form values accordingly.\r\n */\r\n getOrganizationDbs(): void {\r\n this.settingService.getOrganizationDbs().subscribe((res: IOrganizationDbResponse | unknown) => {\r\n const apiData = (res as IOrganizationDbResponse).data;\r\n this.userid = apiData.id;\r\n this.organizationid = apiData.organizationid;\r\n this.dbaliasname = apiData.dbaliasname;\r\n\r\n // Map API response (snake_case) to internal format (camelCase)\r\n const additionalInfo = apiData['additionalinfo'] as IAdditionalInfoApi | undefined;\r\n const reservedFieldsApi = additionalInfo?.['reserved_fields'] as IReservedFieldsApi | undefined;\r\n // Justification: With exactOptionalPropertyTypes, TypeScript doesn't allow explicitly assigning undefined to optional properties.\r\n // However, the API response may contain undefined values that need to be mapped to optional properties.\r\n // Using ts-ignore to allow this mapping while maintaining the existing logic and avoiding ESLint complexity.\r\n // @ts-ignore - exactOptionalPropertyTypes: API response mapping requires handling undefined values for optional properties\r\n const reservedFields: IReservedFields = reservedFieldsApi ? {\r\n created_by: reservedFieldsApi['created_by'] as string | undefined,\r\n created_at: reservedFieldsApi['created_at'] as string | undefined,\r\n updated_by: reservedFieldsApi['updated_by'] as string | undefined,\r\n updated_at: reservedFieldsApi['updated_at'] as string | undefined,\r\n soft_delete: reservedFieldsApi['soft_delete'] as string | undefined,\r\n audit_enabled: reservedFieldsApi['audit_enabled'] as boolean | undefined\r\n } : {};\r\n\r\n this.settingForm.patchValue({\r\n id: apiData.id,\r\n organizationid: apiData.organizationid,\r\n databasetype: apiData.databasetype,\r\n host: apiData.host,\r\n port: apiData.port,\r\n password: apiData.password,\r\n username: apiData.username,\r\n databaseName: apiData['database_name'] as string,\r\n dbaliasname: apiData.dbaliasname,\r\n created_by: reservedFields.created_by || '',\r\n created_at: reservedFields.created_at || '',\r\n updated_by: reservedFields.updated_by || '',\r\n updated_at: reservedFields.updated_at || '',\r\n soft_delete: reservedFields.soft_delete || '',\r\n audit_enabled: reservedFields.audit_enabled || false\r\n });\r\n if (reservedFields.audit_enabled === true) {\r\n this.editStatus();\r\n }\r\n this.schemaSelect();\r\n this.schemaCheckData();\r\n });\r\n }\r\n\r\n /**\r\n * Adds or updates a user based on the form values.\r\n */\r\n addUser(): void {\r\n this.isEdit = true;\r\n this.settingForm.enable();\r\n const userData = this.settingForm.getRawValue();\r\n if (this.settingForm.valid) {\r\n this.validUser(userData);\r\n }\r\n if (!this.userid) {\r\n this.userWithOutId(userData);\r\n } else {\r\n this.userWithID(userData);\r\n }\r\n }\r\n\r\n /**\r\n * Validates user data before submission.\r\n *\r\n * @param {IUserData} _userData\r\n * @memberof DataSourceComponent\r\n */\r\n validUser(_userData: IUserData): void {\r\n _userData.id = this.userid as string | number;\r\n _userData.organizationid = _userData.organizationid || '';\r\n _userData.databasetype = _userData.databasetype || '';\r\n _userData.host = _userData.host || '';\r\n _userData.port = _userData.port || '';\r\n _userData.password = _userData.password || '';\r\n _userData.username = _userData.username || '';\r\n _userData.databaseName = _userData.databaseName || '';\r\n _userData.dbaliasname = _userData.dbaliasname || '';\r\n }\r\n\r\n /**\r\n * Handles adding a user without an ID.\r\n *\r\n * @param {IUserData} _userData\r\n * @memberof DataSourceComponent\r\n */\r\n userWithOutId(_userData: IUserData): void {\r\n // Reference this to satisfy class-methods-use-this\r\n if (this.isEdit && _userData) {\r\n console.log('User without ID:', _userData);\r\n }\r\n }\r\n\r\n /**\r\n * Handles adding or updating a user with an ID.\r\n *\r\n * @param {IUserData} data\r\n * @memberof DataSourceComponent\r\n */\r\n userWithID(data: IUserData): void {\r\n this.listSchema.push(...this.buildSchemaPayload(data));\r\n const { created_by, created_at, updated_at, updated_by, soft_delete, audit_enabled, ...dbConfig } = data;\r\n const newConfig = {\r\n ...dbConfig,\r\n additionalinfo: {\r\n reserved_fields: {\r\n created_by,\r\n created_at,\r\n updated_by,\r\n updated_at,\r\n soft_delete,\r\n audit_enabled\r\n }\r\n }\r\n };\r\n this.settingService.updateData(newConfig).subscribe(\r\n () => {\r\n this.schemaUpdate(this.listSchema);\r\n this.getOrganizationDbs();\r\n this.isEdit = false;\r\n this.alertService.success(' Updated successfully');\r\n\r\n this.settingForm.disable();\r\n },\r\n (err: IHttpError) => {\r\n if (err.error?.message) {\r\n this.alertService.error(err.error.message);\r\n } else {\r\n this.alertService.error('Failed to update');\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n /** * Builds the payload for schema update based on the selected schemas and organization/user IDs.\r\n *\r\n * @param {any} data - The form data containing selected schemas.\r\n * @returns {ISchemaListItem[]} An array of schema list items to be updated.\r\n * @memberof DataSourceComponent\r\n */\r\n private buildSchemaPayload(data: any): ISchemaListItem[] {\r\n const organizationid = this.organizationid ?? '';\r\n const dbId = this.userid ?? '';\r\n\r\n if (data?.selectedschemas?.length > 0) {\r\n return data.selectedschemas.map((schema: string) => ({\r\n organizationid,\r\n dbId,\r\n schema: schema ?? ''\r\n }));\r\n }\r\n\r\n return [{\r\n organizationid,\r\n dbId,\r\n schema: this.selectSchema?.[0] ?? ''\r\n }];\r\n }\r\n\r\n /**\r\n * Updates the schema list.\r\n *\r\n * @param {ISchemaListItem[]} data\r\n * @memberof DataSourceComponent\r\n */\r\n schemaUpdate(data: ISchemaListItem[]): void {\r\n this.settingService.updateSchemaList(data).subscribe(\r\n () => {\r\n this.schemaCheckData();\r\n this.listSchema = [];\r\n },\r\n (err: IHttpError) => {\r\n const errorMessage = err.error?.message ? err.error.message : 'Failed to update';\r\n this.alertService.error(errorMessage);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Cancels the edit operation and restores the original values.\r\n */\r\n cancel(): void {\r\n this.getOrganizationDbs();\r\n this.isEdit = false;\r\n this.settingForm.disable();\r\n }\r\n\r\n /**\r\n * Enables edit mode for modifying form values.\r\n */\r\n editStatus(): void {\r\n this.isEdit = true;\r\n this.settingForm.enable();\r\n }\r\n\r\n /**\r\n * Fetches schema list from the server.\r\n */\r\n schemaSelect(): void {\r\n if (this.dbaliasname) {\r\n this.settingService.getSchema(this.dbaliasname).subscribe((res: ISchemaResponse | unknown) => {\r\n console.log(res);\r\n (res as ISchemaResponse).data.forEach(element => {\r\n this.schema.push(element.name);\r\n });\r\n console.log(this.schema);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Checks and updates schema selection data.\r\n */\r\n schemaCheckData(): void {\r\n if (this.organizationid && this.dbaliasname) {\r\n this.settingService.schemaCheck(this.organizationid, this.dbaliasname).subscribe((res: ISchemaCheckResponse | unknown) => {\r\n console.log(res);\r\n this.checkedSchema = (res as ISchemaCheckResponse).data;\r\n this.selectSchema = this.schema.filter(a => this.checkedSchema.some(b => b.name === a)).map(a => a);\r\n });\r\n }\r\n }\r\n}\r\n","<div [formGroup]=\"settingForm\">\r\n <p-card styleClass=\"w-100 mt-2 mb-3 shadow-sm\">\r\n <ng-template pTemplate=\"header\">\r\n Audit Field Mapping\r\n </ng-template>\r\n <div class=\"p-fluid p-formgrid row audit-enabled-radio\">\r\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\r\n <label for=\"db_audit_enabled\" class=\"intake-form-labels\">Audit Field Enabled</label>\r\n <div class=\"clearfix\">\r\n <div *ngFor=\"let category of auditEnabledList\" class=\"field-checkbox\">\r\n <p-radioButton [inputId]=\"category.key\" name=\"audit_enabled\" [value]=\"category.value\"\r\n formControlName=\"audit_enabled\"></p-radioButton>\r\n <label [for]=\"category.key\">{{category.key}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n @if (settingForm.value.audit_enabled) {\r\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\r\n <label for=\"db_created_by\" class=\"intake-form-labels\">Created By</label>\r\n <input id=\"db_created_by\" aria-labelledby=\"template\" class=\"form-control\" type=\"text\"\r\n formControlName=\"created_by\" placeholder=\"Enter DB Created BY\" pInputText />\r\n </div>\r\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\r\n <label for=\"db_created_at\" class=\"intake-form-labels\">Created At</label>\r\n <input id=\"db_created_at\" aria-labelledby=\"template\" class=\"form-control\" type=\"text\"\r\n formControlName=\"created_at\" placeholder=\"Enter DB Created At\" pInputText />\r\n </div>\r\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\r\n <label for=\"db_updated_by\" class=\"intake-form-labels\">Updated By</label>\r\n <input id=\"db_updated_by\" aria-labelledby=\"template\" class=\"form-control\" type=\"text\"\r\n formControlName=\"updated_by\" placeholder=\"Enter DB Updated By\" pInputText />\r\n </div>\r\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\r\n <label for=\"db_updated_at\" class=\"intake-form-labels\">Updated At</label>\r\n <input id=\"db_updated_at\" aria-labelledby=\"template\" class=\"form-control\" type=\"text\"\r\n formControlName=\"updated_at\" placeholder=\"Enter DB Updated At\" pInputText />\r\n </div>\r\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\r\n <label for=\"db_soft_delete\" class=\"intake-form-labels\">Soft Delete</label>\r\n <input id=\"db_soft_delete\" aria-labelledby=\"template\" class=\"form-control\" type=\"text\"\r\n formControlName=\"soft_delete\" placeholder=\"Enter DB Soft Delete\" pInputText />\r\n </div>\r\n }\r\n </div>\r\n </p-card>\r\n\r\n <div class=\"p-fluid p-formgrid row\">\r\n <div class=\"p-field col-md-12 col-12 text-md-right\">\r\n <button class=\"mb-2 btn bg-white text-primary btncancel\" (click)=\"cancel()\">\r\n Cancel\r\n </button>\r\n @if (userid && isEdit === false) {\r\n <button class=\"mb-2 btn btn-primary btncommon\" (click)=\"editStatus()\">\r\n Edit\r\n </button>\r\n }\r\n @if (userid && isEdit === true) {\r\n <button class=\"mb-2 btn btn-primary btncommon\" (click)=\"addUser()\">\r\n Update\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","export class PlatformSettingsConfig {\r\n public static readonly ENDPOINT = {\r\n configSettings: {\r\n getConfigList: '/org/config-settings/list',\r\n getConfigById: '/org/config-settings/list?id=',\r\n saveConfig: '/org/config-settings/create',\r\n updateConfig: '/org/config-settings/',\r\n datetimeFomrat: '/platform/master/lookup/lookupbycategoryname/DATETIME_FORMAT',\r\n timezone: '/platform/master/lookup/lookupbycategoryname/TIMEZONE',\r\n getConfigurationsByOrgId: '/org/config-settings/listbyOrgId/'\r\n }\r\n };\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { PlatformSettingsConfig } from './platform-settings-url.config';\r\nimport { SETTINGS_HTTP, SettingsHttpAdapter } from '../../settings-adapters';\r\nimport { IDatetimeFormatListResponse } from './platform-settings.interface';\r\n\r\n/**\r\n * Service to manage platform settings.\r\n *\r\n * @export\r\n * @class PlatformSettingsService\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PlatformSettingsService {\r\n constructor(@Inject(SETTINGS_HTTP) private readonly httpService: SettingsHttpAdapter) {\r\n // Intentional\r\n }\r\n /**\r\n * Retrieves the list of platform configuration settings.\r\n *\r\n * @return {*} An observable containing the configuration list.\r\n * @memberof PlatformSettingsService\r\n */\r\n getConfigList(): Observable<unknown> {\r\n return this.httpService.get(PlatformSettingsConfig.ENDPOINT.configSettings.getConfigList);\r\n }\r\n /**\r\n * Retrieves platform configuration details by ID.\r\n *\r\n * @param {string | number} id - The ID of the configuration.\r\n * @return {*} An observable containing the configuration details.\r\n * @memberof PlatformSettingsService\r\n */\r\n getConfigById(id: string | number): Observable<unknown> {\r\n return this.httpService.get(PlatformSettingsConfig.ENDPOINT.configSettings.getConfigById + id);\r\n }\r\n /**\r\n * Saves platform configuration settings.\r\n *\r\n * @param {unknown} modal - The configuration data to be saved.\r\n * @return {*} An observable indicating the save operation status.\r\n * @memberof PlatformSettingsService\r\n */\r\n saveConfigSettings(modal: unknown): Observable<unknown> {\r\n return this.httpService.post(PlatformSettingsConfig.ENDPOINT.configSettings.saveConfig, modal);\r\n }\r\n /**\r\n * Updates platform configuration settings by ID.\r\n *\r\n * @param {string | number} id - The ID of the configuration to update.\r\n * @param {unknown} modal - The updated configuration data.\r\n * @return {*} An observable indicating the update operation status.\r\n * @memberof PlatformSettingsService\r\n */\r\n updateConfig(id: string | number, modal: unknown): Observable<unknown> {\r\n return this.httpService.patch(PlatformSettingsConfig.ENDPOINT.configSettings.updateConfig + id, modal);\r\n }\r\n /**\r\n * Retrieves the list of all available date-time formats.\r\n *\r\n * @return {*} An observable containing the list of date-time formats.\r\n * @memberof PlatformSettingsService\r\n */\r\n getAllDatetimeFormatList(): Observable<IDatetimeFormatListResponse> {\r\n return this.httpService.get<IDatetimeFormatListResponse>(PlatformSettingsConfig.ENDPOINT.configSettings.datetimeFomrat);\r\n }\r\n\r\n getAllTimezoneList() {\r\n return this.httpService.get(PlatformSettingsConfig.ENDPOINT.configSettings.timezone);\r\n }\r\n\r\n /**\r\n * Fetches configuration settings for a specific organization by its ID.\r\n *\r\n * @param {string | number} id - The ID of the organization.\r\n * @return {*} An observable containing the organization's configuration settings.\r\n * @memberof PlatformSettingsService\r\n */\r\n getConfigurationsByOrgId(id: string | number): Observable<unknown> {\r\n return this.httpService.get(PlatformSettingsConfig.ENDPOINT.configSettings.getConfigurationsByOrgId + id);\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { switchMap, takeUntil } from 'rxjs/operators';\r\nimport { SETTINGS_ALERT, SETTINGS_LOCAL, SETTINGS_SESSION, SettingsAlertAdapter, SettingsStorageAdapter } from '../settings-adapters';\r\nimport { PlatformSettingsService } from './@core/platform-settings.service';\r\nimport { IDatetimeFormatItem, IDatetimeFormatItemApi, IDatetimeFormatListResponse } from './@core/platform-settings.interface';\r\nimport { Timezone, TimezoneData } from './@core/timezone.interface';\r\n\r\n/** Upper bounds mirroring the server-side validation on `config_settings`. */\r\nconst MAX_IDLE_TIMEOUT_MINUTES = 480;\r\nconst MAX_IDLE_WARNING_SECONDS = 300;\r\n\r\ninterface IConfigSettings {\r\n id: number;\r\n organizationid: number | string;\r\n organization_title?: string;\r\n layout: number | string;\r\n datetimeformat: string;\r\n timezone?: string;\r\n idleTimeout?: number | null;\r\n idleWarning?: number | null;\r\n isIdleMonitorEnabled?: boolean | null;\r\n}\r\n\r\ninterface IPlatformConfigOption {\r\n id: number;\r\n organization_title: string;\r\n}\r\n\r\n/**\r\n * Manages platform settings, including configuration and date-time formats\r\n *\r\n * @export\r\n * @class PlatformSettingsComponent\r\n * @implements {OnInit}\r\n */\r\n@Component({\r\n selector: 'app-platform-settings',\r\n templateUrl: './platform-settings.component.html',\r\n styleUrls: ['./platform-settings.component.scss'],\r\n standalone: false\r\n})\r\nexport class PlatformSettingsComponent implements OnInit, OnDestroy {\r\n loginEvent$: BehaviorSubject<unknown>;\r\n orgId: string | number | null;\r\n userid = '';\r\n updateButton = false;\r\n configRegistrationForm!: UntypedFormGroup;\r\n editConfigSettings: IConfigSettings | null = null;\r\n datetimeFomatList: IDatetimeFormatItem[] = [];\r\n tabErrorShow = false;\r\n public timezoneList: TimezoneData[] = [];\r\n /** Exposed for the template's `[max]` bindings. */\r\n readonly maxIdleTimeout = MAX_IDLE_TIMEOUT_MINUTES;\r\n readonly maxIdleWarning = MAX_IDLE_WARNING_SECONDS;\r\n /** True when the initial config load failed, so a Save must not create a duplicate row. */\r\n configLoadFailed = false;\r\n /** Active config_settings rows for the org-title dropdown. */\r\n configOptions: IPlatformConfigOption[] = [];\r\n /** Selected pics_core.config_settings.id */\r\n selectedConfigId: number | null = null;\r\n /** Show selector when at least one config exists; single row is auto-selected. */\r\n showOrgDropdown = false;\r\n /** Last successfully loaded config id (used to revert dirty dropdown switches). */\r\n private loadedConfigId: number | null = null;\r\n private readonly destroy$ = new Subject<void>();\r\n private readonly configSelection$ = new Subject<number>();\r\n private subscription = new Subscription();\r\n private idleMonitorEnabledSub: Subscription | null = null;\r\n\r\n /**\r\n * Creates an instance of PlatformSettingsComponent.\r\n * @param {AlertService} alertService\r\n * @param {UntypedFormBuilder} _formBuilder\r\n * @param {PlatformSettingsService} _platformSettingsService\r\n * @param {LocalStorageService} StorageService\r\n * @memberof PlatformSettingsComponent\r\n */\r\n constructor(\r\n @Inject(SETTINGS_ALERT) private readonly alertService: SettingsAlertAdapter,\r\n private readonly _formBuilder: UntypedFormBuilder,\r\n private readonly _platformSettingsService: PlatformSettingsService,\r\n @Inject(SETTINGS_LOCAL) private readonly StorageService: Pick<SettingsStorageAdapter, 'setItem'>,\r\n @Inject(SETTINGS_SESSION) private readonly localstore: SettingsStorageAdapter,\r\n private readonly cdRef: ChangeDetectorRef\r\n ) {\r\n this.loginEvent$ = new BehaviorSubject<unknown>(null);\r\n this.userid = this.localstore.getItem('id') as string;\r\n this.orgId = this.localstore.getItem('orgid');\r\n }\r\n\r\n /**\r\n * Lifecycle hook that is called after data-bound properties are initialized.\r\n */\r\n ngOnInit(): void {\r\n this.initilizeForm();\r\n this.configSelection$\r\n .pipe(\r\n switchMap((configId) => this._platformSettingsService.getConfigById(configId)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe({\r\n next: (res: unknown) => {\r\n this.configLoadFailed = false;\r\n const payload = res as { data?: unknown };\r\n const record = this.normalizeConfigRecord(payload?.data);\r\n if (record) {\r\n this.applyConfigToForm(record);\r\n } else {\r\n this.updateButton = false;\r\n this.editConfigSettings = null;\r\n this.alertService.error('Selected organization configuration was not found.');\r\n }\r\n },\r\n error: () => {\r\n this.configLoadFailed = true;\r\n this.alertService.error('Unable to load platform settings. Please try again.');\r\n }\r\n });\r\n this.loadConfigOptions();\r\n this.getDateTimeFormat();\r\n this.getTimezone();\r\n }\r\n\r\n /**\r\n * Initializes the form with default values and validation rules.\r\n */\r\n initilizeForm(): void {\r\n this.configRegistrationForm = this._formBuilder.group({\r\n id: [''],\r\n datetimeformat: ['', Validators.required],\r\n timezone: ['', Validators.required],\r\n isIdleMonitorEnabled: [false],\r\n idleTimeout: [null],\r\n idleWarning: [null]\r\n });\r\n this.idleMonitorEnabledSub = this.configRegistrationForm\r\n .get('isIdleMonitorEnabled')\r\n ?.valueChanges.subscribe((isEnabled: boolean) => {\r\n this.updateIdleFieldValidators(isEnabled);\r\n }) ?? null;\r\n this.updateIdleFieldValidators(false);\r\n }\r\n\r\n private updateIdleFieldValidators(isEnabled: boolean): void {\r\n const idleTimeoutControl = this.configRegistrationForm.get('idleTimeout');\r\n const idleWarningControl = this.configRegistrationForm.get('idleWarning');\r\n if (!idleTimeoutControl || !idleWarningControl) {\r\n return;\r\n }\r\n if (isEnabled) {\r\n idleTimeoutControl.setValidators([Validators.required, Validators.min(1), Validators.max(MAX_IDLE_TIMEOUT_MINUTES)]);\r\n idleWarningControl.setValidators([Validators.required, Validators.min(1), Validators.max(MAX_IDLE_WARNING_SECONDS)]);\r\n } else {\r\n idleTimeoutControl.clearValidators();\r\n idleWarningControl.clearValidators();\r\n }\r\n idleTimeoutControl.updateValueAndValidity({ emitEvent: false });\r\n idleWarningControl.updateValueAndValidity({ emitEvent: false });\r\n }\r\n\r\n /**\r\n * Fetches the list of available date-time formats.\r\n */\r\n getDateTimeFormat(): void {\r\n this._platformSettingsService.getAllDatetimeFormatList().subscribe((result: IDatetimeFormatListResponse) => {\r\n // Map API response (snake_case) to internal format (camelCase)\r\n this.datetimeFomatList = result.data.map((item: IDatetimeFormatItemApi): IDatetimeFormatItem => {\r\n const { lc_name: lcName, ...rest } = item;\r\n return {\r\n ...rest,\r\n lcName\r\n };\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Loads all active config_settings rows for the dropdown.\r\n * Even with a single row, the dropdown is shown and that row is auto-selected.\r\n */\r\n loadConfigOptions(): void {\r\n this._platformSettingsService.getConfigList().subscribe({\r\n next: (res: unknown) => {\r\n const payload = res as { data?: unknown };\r\n const list = this.normalizeConfigList(payload?.data);\r\n this.configOptions = list\r\n .filter((item) => item?.id != null)\r\n .map((item) => ({\r\n id: Number(item.id),\r\n organization_title: item.organization_title || `Config ${item.id}`\r\n }));\r\n this.showOrgDropdown = this.configOptions.length >= 1;\r\n\r\n if (!this.configOptions.length) {\r\n this.selectedConfigId = null;\r\n this.editConfigSettings = null;\r\n this.updateButton = false;\r\n this.configLoadFailed = false;\r\n return;\r\n }\r\n\r\n const preferredId = this.resolveInitialConfigId(this.configOptions);\r\n this.onConfigSelectionChange(preferredId);\r\n },\r\n error: () => {\r\n this.configLoadFailed = true;\r\n this.updateButton = false;\r\n this.alertService.error('Unable to load platform settings. Please try again.');\r\n }\r\n });\r\n }\r\n\r\n /** Dropdown / programmatic selection handler. */\r\n onConfigSelectionChange(configId: number | null): void {\r\n if (configId == null || !Number.isFinite(Number(configId))) {\r\n return;\r\n }\r\n const nextId = Number(configId);\r\n if (nextId === this.loadedConfigId) {\r\n this.selectedConfigId = nextId;\r\n return;\r\n }\r\n if (this.configRegistrationForm?.dirty) {\r\n const discard = window.confirm('You have unsaved changes. Discard them and switch organization?');\r\n if (!discard) {\r\n this.selectedConfigId = this.loadedConfigId;\r\n this.cdRef.detectChanges();\r\n return;\r\n }\r\n }\r\n this.selectedConfigId = nextId;\r\n this.tabErrorShow = false;\r\n this.loadSelectedConfig();\r\n }\r\n\r\n /**\r\n * Loads the selected config_settings row by primary key.\r\n * Prefer list?id= over listbyOrgId so multi-portal orgs update the intended row.\r\n * Uses switchMap via configSelection$ so rapid dropdown changes cancel in-flight loads.\r\n */\r\n loadSelectedConfig(): void {\r\n if (this.selectedConfigId == null) {\r\n return;\r\n }\r\n this.configSelection$.next(this.selectedConfigId);\r\n }\r\n\r\n /**\r\n * Saves or updates platform configuration based on form data.\r\n */\r\n saveConfig(): void {\r\n this.tabErrorShow = true;\r\n if (this.configRegistrationForm.valid) {\r\n const formValue = this.configRegistrationForm.value;\r\n if (this.editConfigSettings?.id != null) {\r\n this.editConfigSettings.organizationid = parseInt(`${this.editConfigSettings.organizationid}`, 10);\r\n this.editConfigSettings.layout = parseInt(`${this.editConfigSettings.layout}`, 10);\r\n this.editConfigSettings.datetimeformat = formValue.datetimeformat;\r\n this.editConfigSettings.timezone = formValue.timezone;\r\n this.editConfigSettings.isIdleMonitorEnabled = Boolean(formValue.isIdleMonitorEnabled);\r\n this.editConfigSettings.idleTimeout = formValue.isIdleMonitorEnabled ? formValue.idleTimeout : null;\r\n this.editConfigSettings.idleWarning = formValue.isIdleMonitorEnabled ? formValue.idleWarning : null;\r\n this.updateButton = true;\r\n const configId = this.editConfigSettings.id;\r\n this._platformSettingsService\r\n .updateConfig(configId, this.editConfigSettings)\r\n .subscribe({\r\n next: () => {\r\n this.alertService.success('Updated successfully!');\r\n this.selectedConfigId = Number(configId);\r\n this.loadSelectedConfig();\r\n },\r\n error: () => {\r\n // Keep updateButton / editConfigSettings so Save can retry without leaving edit mode.\r\n this.alertService.error('Unable to update platform settings. Please try again.');\r\n }\r\n });\r\n } else if (this.orgId !== null && !this.configLoadFailed && !this.configOptions.length) {\r\n // Create only when no config_settings rows exist yet (first-time empty state).\r\n const inputRequest = {\r\n organizationid: parseInt(`${this.orgId}`, 10),\r\n datetimeformat: formValue.datetimeformat,\r\n timezone: formValue.timezone,\r\n isIdleMonitorEnabled: Boolean(formValue.isIdleMonitorEnabled),\r\n idleTimeout: formValue.isIdleMonitorEnabled ? formValue.idleTimeout : null,\r\n idleWarning: formValue.isIdleMonitorEnabled ? formValue.idleWarning : null\r\n };\r\n this.updateButton = true;\r\n this._platformSettingsService.saveConfigSettings(inputRequest).subscribe({\r\n next: (res: unknown) => {\r\n this.alertService.success('Saved successfully!');\r\n // Prefer the created id so the new row is selected after reload (matches prior newest-row behavior).\r\n const createdId = this.extractCreatedConfigId(res);\r\n if (createdId != null) {\r\n this.selectedConfigId = createdId;\r\n }\r\n this.loadConfigOptions();\r\n },\r\n error: () => {\r\n this.updateButton = false;\r\n this.alertService.error('Unable to save platform settings. Please try again.');\r\n }\r\n });\r\n } else if (this.configLoadFailed) {\r\n // The existing configuration could not be read, so creating one here would add a\r\n // second row for an org that already has settings.\r\n this.alertService.error('Existing platform settings could not be loaded. Please reload the page before saving.');\r\n } else {\r\n this.alertService.error('Please select an organization configuration before saving.');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Reloads the selected configuration (Cancel) or refreshes the option list.\r\n */\r\n getConfigById(): void {\r\n if (this.selectedConfigId != null) {\r\n this.loadSelectedConfig();\r\n return;\r\n }\r\n this.loadConfigOptions();\r\n }\r\n\r\n getTimezone(): void {\r\n this.subscription.add(\r\n this._platformSettingsService.getAllTimezoneList().subscribe({\r\n next: (result: Timezone) => {\r\n if (result.status === 'success') {\r\n this.timezoneList = result.data;\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.idleMonitorEnabledSub?.unsubscribe();\r\n this.subscription.unsubscribe();\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private applyConfigToForm(record: IConfigSettings): void {\r\n this.updateButton = true;\r\n this.editConfigSettings = record;\r\n this.selectedConfigId = Number(record.id);\r\n this.loadedConfigId = Number(record.id);\r\n const isIdleMonitorEnabled = Boolean(record.isIdleMonitorEnabled);\r\n this.configRegistrationForm.patchValue({\r\n id: record.id,\r\n datetimeformat: record.datetimeformat,\r\n timezone: record?.timezone,\r\n isIdleMonitorEnabled,\r\n idleTimeout: record.idleTimeout ?? null,\r\n idleWarning: record.idleWarning ?? null\r\n });\r\n this.updateIdleFieldValidators(isIdleMonitorEnabled);\r\n // Keep REGISTRATION in sync for consumers (login/register/grid date formats, etc.).\r\n this.StorageService.setItem('REGISTRATION', this.editConfigSettings);\r\n this.configRegistrationForm.markAsPristine();\r\n }\r\n\r\n private normalizeConfigList(data: unknown): IConfigSettings[] {\r\n if (Array.isArray(data)) {\r\n return data as IConfigSettings[];\r\n }\r\n if (data && typeof data === 'object') {\r\n return [data as IConfigSettings];\r\n }\r\n return [];\r\n }\r\n\r\n private normalizeConfigRecord(data: unknown): IConfigSettings | null {\r\n if (Array.isArray(data)) {\r\n return (data[0] as IConfigSettings) || null;\r\n }\r\n return (data as IConfigSettings) || null;\r\n }\r\n\r\n private resolveInitialConfigId(options: IPlatformConfigOption[]): number {\r\n const currentId = this.selectedConfigId != null\r\n ? options.find((o) => o.id === this.selectedConfigId)?.id\r\n : null;\r\n if (currentId != null) {\r\n return currentId;\r\n }\r\n // Match previous getConfigById / list behavior: newest row (highest id).\r\n return [...options].sort((a, b) => b.id - a.id)[0].id;\r\n }\r\n\r\n private extractCreatedConfigId(res: unknown): number | null {\r\n const payload = res as { data?: { id?: unknown }; id?: unknown } | null;\r\n const raw = payload?.data?.id ?? payload?.id;\r\n const parsed = Number(raw);\r\n return Number.isInteger(parsed) && parsed > 0 ? parsed : null;\r\n }\r\n}\r\n","\r\n<p-card styleClass=\"w-100 mt-2\">\r\n <div class=\"p-fluid p-formgrid row\" *ngIf=\"showOrgDropdown\">\r\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\r\n <label class=\"intake-form-labels\" for=\"organizationConfig\"\r\n >Organization\r\n <span class=\"requiredfield text-danger\">*</span>\r\n </label>\r\n <p-dropdown\r\n styleClass=\"w-100\"\r\n [options]=\"configOptions\"\r\n placeholder=\"Select Organization\"\r\n inputId=\"organizationConfig\"\r\n optionLabel=\"organization_title\"\r\n optionValue=\"id\"\r\n [(ngModel)]=\"selectedConfigId\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n (onChange)=\"onConfigSelectionChange($event.value)\"\r\n [filter]=\"true\"\r\n filterBy=\"organization_title\">\r\n </p-dropdown>\r\n </div>\r\n </div>\r\n\r\n <div class=\"customizer\" [formGroup]=\"configRegistrationForm\">\r\n <div class=\"p-fluid p-formgrid row\">\r\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\r\n <label class=\"intake-form-labels\" for=\"datetimeFormat\"\r\n >Date & Time Format\r\n <span class=\"requiredfield text-danger\">*</span>\r\n </label>\r\n <p-dropdown\r\n styleClass=\"w-100\"\r\n [options]=\"datetimeFomatList\"\r\n placeholder=\"Select Date & Time Format\"\r\n id=\"datetimeFormat\"\r\n optionLabel=\"lookupvalue\"\r\n optionValue=\"lookupkey\"\r\n formControlName=\"datetimeformat\">\r\n </p-dropdown>\r\n <div\r\n *ngIf=\"\r\n tabErrorShow\r\n ? configRegistrationForm.controls['datetimeformat'].invalid\r\n : configRegistrationForm.controls['datetimeformat'].errors &&\r\n configRegistrationForm.controls['datetimeformat'].touched\r\n \">\r\n <div class=\"p-error block mt-1\">Date & Time Format is required </div>\r\n </div>\r\n </div>\r\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\r\n <label class=\"intake-form-labels\" for=\"timezone\"\r\n >Time Zone\r\n <span class=\"requiredfield text-danger\">*</span>\r\n </label>\r\n <p-dropdown\r\n styleClass=\"w-100\"\r\n [options]=\"timezoneList\"\r\n placeholder=\"Select Time Zone\"\r\n id=\"timezone\"\r\n optionLabel=\"lookupvalue\"\r\n optionValue=\"lookupvalue\"\r\n formControlName=\"timezone\">\r\n </p-dropdown>\r\n <div\r\n *ngIf=\"\r\n tabErrorShow\r\n ? configRegistrationForm.controls['timezone'].invalid\r\n : configRegistrationForm.controls['timezone'].errors &&\r\n configRegistrationForm.controls['timezone'].touched\r\n \">\r\n <div class=\"p-error block mt-1\">Timezone is required </div>\r\n </div>\r\n </div>\r\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\r\n <label class=\"intake-form-labels\" for=\"isIdleMonitorEnabled\">Idle Monitor</label>\r\n <div class=\"d-flex align-items-center mt-2\">\r\n <p-inputSwitch\r\n inputId=\"isIdleMonitorEnabled\"\r\n formControlName=\"isIdleMonitorEnabled\">\r\n </p-inputSwitch>\r\n <label class=\"mb-0 ml-2\" for=\"isIdleMonitorEnabled\">\r\n {{ configRegistrationForm.get('isIdleMonitorEnabled')?.value ? 'On' : 'Off' }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"p-fluid p-formgrid row\" *ngIf=\"configRegistrationForm.get('isIdleMonitorEnabled')?.value\">\r\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\r\n <label class=\"intake-form-labels\" for=\"idleTimeout\"\r\n >Idle Timeout (minutes)\r\n <span class=\"requiredfield text-danger\">*</span>\r\n </label>\r\n <p-inputNumber\r\n inputId=\"idleTimeout\"\r\n styleClass=\"w-100\"\r\n [min]=\"1\"\r\n [max]=\"maxIdleTimeout\"\r\n [maxFractionDigits]=\"0\"\r\n [useGrouping]=\"false\"\r\n [showButtons]=\"false\"\r\n formControlName=\"idleTimeout\"\r\n placeholder=\"Minutes\">\r\n </p-inputNumber>\r\n <div\r\n *ngIf=\"\r\n tabErrorShow\r\n ? configRegistrationForm.controls['idleTimeout'].invalid\r\n : configRegistrationForm.controls['idleTimeout'].errors &&\r\n configRegistrationForm.controls['idleTimeout'].touched\r\n \">\r\n <div class=\"p-error block mt-1\">Idle Timeout is required and must be between 1 and {{ maxIdleTimeout }} minutes </div>\r\n </div>\r\n </div>\r\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\r\n <label class=\"intake-form-labels\" for=\"idleWarning\"\r\n >Idle Warning (seconds)\r\n <span class=\"requiredfield text-danger\">*</span>\r\n </label>\r\n <p-inputNumber\r\n inputId=\"idleWarning\"\r\n styleClass=\"w-100\"\r\n [min]=\"1\"\r\n [max]=\"maxIdleWarning\"\r\n [maxFractionDigits]=\"0\"\r\n [useGrouping]=\"false\"\r\n [showButtons]=\"false\"\r\n formControlName=\"idleWarning\"\r\n placeholder=\"Seconds\">\r\n </p-inputNumber>\r\n <div\r\n *ngIf=\"\r\n tabErrorShow\r\n ? configRegistrationForm.controls['idleWarning'].invalid\r\n : configRegistrationForm.controls['idleWarning'].errors &&\r\n configRegistrationForm.controls['idleWarning'].touched\r\n \">\r\n <div class=\"p-error block mt-1\">Idle Warning is required and must be between 1 and {{ maxIdleWarning }} seconds </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-md-right mt-2\">\r\n <button\r\n type=\"button\"\r\n class=\"btn bg-white text-primary btncancel\"\r\n *ngIf=\"configRegistrationForm.invalid\"\r\n (click)=\"getConfigById()\">\r\n Cancel\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"saveConfig()\">\r\n {{ updateButton ? 'Update' : 'Submit' }}\r\n </button>\r\n </div>\r\n</p-card>\r\n","import { Component, Inject, InjectionToken, Type } from '@angular/core';\r\nimport { MenuItem } from 'primeng/api';\r\n\r\nexport interface SettingsPermissionSource {\r\n readonly state: Record<string, boolean>;\r\n}\r\n\r\nexport const SETTINGS_PERMISSIONS = new InjectionToken<SettingsPermissionSource>('SETTINGS_PERMISSIONS');\r\nexport const SETTINGS_ALERT_COMPONENT = new InjectionToken<Type<unknown>>('SETTINGS_ALERT_COMPONENT');\r\n\r\n@Component({\r\n selector: 'pics-settings-shell',\r\n template: `<div class=\"rbac-tab\" [attr.data-subcategory]=\"'Config Settings'\">\r\n <p-tabMenu [model]=\"items\" [activeItem]=\"activeItem\"></p-tabMenu>\r\n </div>\r\n <router-outlet></router-outlet>\r\n <ng-container *ngComponentOutlet=\"alertComponent\"></ng-container>`,\r\n standalone: false\r\n})\r\nexport class SettingsShellComponent {\r\n items: MenuItem[] = [];\r\n activeItem?: MenuItem;\r\n\r\n constructor(\r\n @Inject(SETTINGS_PERMISSIONS) private readonly permissions: SettingsPermissionSource,\r\n @Inject(SETTINGS_ALERT_COMPONENT) public readonly alertComponent: Type<unknown>\r\n ) {\r\n const state = this.permissions.state;\r\n // Global Search route/code remains in settings-routes; tab nav intentionally omitted (PICS-2753 review).\r\n this.items = [\r\n { label: 'Login Configuration', routerLink: ['config-settings'], visible: state.SETTINGS_CONFIG === true },\r\n { label: 'Data Source', routerLink: ['data-source'], visible: state.SETTINGS_DATA_SRC === true },\r\n { label: 'Platform', routerLink: ['platform-settings'], visible: state.SETTINGS_PLATFORM === true }\r\n ];\r\n this.activeItem = this.items.find(item => item.visible);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CardModule } from 'primeng/card';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { TabMenuModule } from 'primeng/tabmenu';\r\nimport { DataSourceComponent } from './data-source/data-source.component';\r\nimport { DataSourceService } from './data-source/@core/data-source.service';\r\nimport { PlatformSettingsComponent } from './platform-settings/platform-settings.component';\r\nimport { PlatformSettingsService } from './platform-settings/@core/platform-settings.service';\r\nimport { SettingsShellComponent } from './settings-shell.component';\r\n\r\n@NgModule({\r\n declarations: [DataSourceComponent, PlatformSettingsComponent, SettingsShellComponent],\r\n imports: [CommonModule, RouterModule, FormsModule, ReactiveFormsModule, CardModule, DropdownModule, InputNumberModule, InputSwitchModule, InputTextModule, RadioButtonModule, TabMenuModule],\r\n providers: [DataSourceService, PlatformSettingsService],\r\n exports: [DataSourceComponent, PlatformSettingsComponent, SettingsShellComponent]\r\n})\r\nexport class PlatformSettingsModule {}\r\n","import { Component, inject } from '@angular/core';\r\nimport { CanActivateFn, LoadChildrenCallback, Router, Routes } from '@angular/router';\r\nimport { DataSourceComponent } from './data-source/data-source.component';\r\nimport { PlatformSettingsComponent } from './platform-settings/platform-settings.component';\r\nimport { SETTINGS_PERMISSIONS, SettingsShellComponent } from './settings-shell.component';\r\n\r\nexport interface PlatformSettingsRouteOptions {\r\n loginConfiguration: LoadChildrenCallback;\r\n globalSearch?: LoadChildrenCallback;\r\n}\r\n\r\n@Component({\r\n standalone: true,\r\n template: '<p role=\"alert\">You do not have permission to view Settings.</p>'\r\n})\r\nclass SettingsAccessDeniedComponent {}\r\n\r\nconst settingsAccessGuard: CanActivateFn = (route) => {\r\n const permissions = inject(SETTINGS_PERMISSIONS).state;\r\n const router = inject(Router);\r\n const requiredKey = route.data['permissionKey'] as string;\r\n if (permissions[requiredKey] === true) return true;\r\n\r\n const settingsPath = route.parent?.pathFromRoot.flatMap(snapshot => snapshot.url.map(segment => segment.path)) ?? [];\r\n const allowed = [\r\n ['SETTINGS_CONFIG', 'config-settings'],\r\n ['SETTINGS_DATA_SRC', 'data-source'],\r\n ['SETTINGS_PLATFORM', 'platform-settings'],\r\n ['GLOBAL_SEARCH', 'global-search']\r\n ].find(([key, path]) => permissions[key] === true && route.parent?.routeConfig?.children?.some(child => child.path === path));\r\n\r\n return router.createUrlTree(['/', ...settingsPath, allowed?.[1] ?? 'access-denied']);\r\n};\r\n\r\n/** Complete Settings route tree. The host supplies only its solution-specific lazy modules. */\r\nexport function createPlatformSettingsRoutes(options: PlatformSettingsRouteOptions): Routes {\r\n const children: Routes = [\r\n { path: 'data-source', component: DataSourceComponent, canActivate: [settingsAccessGuard], data: { permissionKey: 'SETTINGS_DATA_SRC' } },\r\n { path: 'config-settings', loadChildren: options.loginConfiguration, canActivate: [settingsAccessGuard], data: { permissionKey: 'SETTINGS_CONFIG' } },\r\n { path: 'platform-settings', component: PlatformSettingsComponent, canActivate: [settingsAccessGuard], data: { permissionKey: 'SETTINGS_PLATFORM' } }\r\n ];\r\n\r\n if (options.globalSearch) {\r\n children.push({ path: 'global-search', loadChildren: options.globalSearch, canActivate: [settingsAccessGuard], data: { permissionKey: 'GLOBAL_SEARCH' } });\r\n }\r\n children.push({ path: 'access-denied', component: SettingsAccessDeniedComponent });\r\n children.push({ path: '**', redirectTo: 'config-settings', pathMatch: 'full' });\r\n\r\n return [{\r\n path: '',\r\n component: SettingsShellComponent,\r\n data: { enableGlobalSearch: Boolean(options.globalSearch) },\r\n children\r\n }];\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigLoginSettingsService {\r\n\r\n constructor() { }\r\n}\r\n","export class RoleConfig {\r\n public static EndPoint = {\r\n role: {\r\n getAllUserRole: '/access-control/role',\r\n createRole: '/access-control/role/create',\r\n getLandingPage: '/platform/menu/application',\r\n addPolicyGroup: '/access-control/role',\r\n getAllOrgRole: '/access-control/role/organization/{orgid}',\r\n dossier: '/dossier'\r\n }\r\n };\r\n}\r\n\r\nexport class UserConfig {\r\n public static EndPoint = {\r\n User: {\r\n getAllUserList: '/org/user',\r\n getAllUserActiveInactive: '/org/user?includeInactiveUsers=true',\r\n getUserConfig: '/org/user/getUserPreference/USER_THEME_PREFERENCES/{id}',\r\n activateUser: '/org/user/activate',\r\n createUser: '/org/user/create',\r\n userRole: '/org/user/role',\r\n managementgroup: '/org/team/managementgroup',\r\n getAllUserOrgList: '/org/user/organization/',\r\n saveUserConfig: '/user/saveUserPreference'\r\n },\r\n Provider: {\r\n getProviderList: '/ref/provider',\r\n searchProviderList: '/ref/provider/search',\r\n addProviderUser: '/ref/provider/create/account'\r\n }\r\n }\r\n}\r\nexport class AttachmentConfig {\r\n public static EndPoint = {\r\n Attachments: {\r\n GetAttachmentReferral: '/ref/attachment/referral',\r\n GetCategoryLookup: '/platform/master/lookup/lookupbycategoryname',\r\n UploadKey: '/common/files/upload-key',\r\n DownloadKey: '/common/files/download-key',\r\n PostAttachment: '/ref/attachment/create',\r\n PutAttachment: '/ref/attachment'\r\n }\r\n };\r\n}\r\nexport class PolicyGroupConfig {\r\n public static EndPoint = {\r\n policyGroup: {\r\n getPolicyGroupList: '/platform/page-designer/policyGroup',\r\n getAllPolicyGroupList: '/platform/page-designer/policyGroup/all',\r\n createPolicyGroup: '/platform/page-designer/policyGroup',\r\n getOrgPolicyGroups: '/platform/page-designer/policyGroup/organization/{organizationid}'\r\n }\r\n };\r\n}\r\nexport class PermissionsURL {\r\n public static EndPoints = {\r\n permission: {\r\n permissionRoleById: '/access-control/permission/role/{id}',\r\n pagePermission: '/access-control/permission/page',\r\n getPermission: '/access-control/permission/{id}',\r\n createPermission: '/access-control/permission/create',\r\n updateDeletePermission: '/access-control/permission/{permissionid}',\r\n getPermissionTree: '/access-control/permission/page/{pageid}/{parentid}',\r\n getPermissionTypes: '/access-control/permission/type/{applicationid}',\r\n applicationPermissionsTree: '/access-control/permission/application/{applicationid}'\r\n },\r\n page: {\r\n createPage: '/platform/menu/create',\r\n updateDeletePage: '/platform/menu/{pageid}',\r\n AllPageTree: '/platform/menu/tree/{applicationid}'\r\n }\r\n };\r\n}\r\nexport class AccessManagementConfig {\r\n public static EndPoint = {\r\n Organization: {\r\n getOrganizationList: '/org/organization/all',\r\n getOrganization: '/platform/page-designer/page/organization/{orgId}?returnUserPage=false&excludeNoActiveVersionPages=true'\r\n }\r\n };\r\n}\r\nexport class MasterURL {\r\n public static EndPoints = {\r\n lookup: {\r\n createCategory: '/platform/master/lookup/category',\r\n updateDeleteCategory: '/platform/master/lookup/category/{id}',\r\n lookup: '/platform/master/lookup/{id}',\r\n createLookup: '/platform/master/lookup',\r\n getPermissionRoleById: '/access-control/permission/role/{id}',\r\n getAllCategoryTree: '/platform/master/lookup/category/tree/{applicationid}',\r\n getLookupTree: '/platform/master/lookup/tree/{categoryid}',\r\n getPermissionsTree: '/access-control/permission/application/{applicationid}'\r\n }\r\n };\r\n}\r\nexport class AuthURL {\r\n public static EndPoints = {\r\n auth: {\r\n user: {\r\n conformMail: '/org/auth/forgot-password',\r\n changePassword: '/org/auth/forgot-password-verification',\r\n login: '/org/auth/login',\r\n refreshToken: '/org/auth/refresh-token',\r\n logout: '/org/auth/logout',\r\n userInfo: '/org/user/page/list',\r\n userRole: '/org/user/{id}',\r\n routeToDynamicPage: '/platform/page-designer/page/organization/{orgid}?returnUserPage=true&excludeNoActiveVersionPages=true',\r\n authMe: '/org/auth/me',\r\n resetPassword: '/org/user/reset-password',\r\n orgList: '/org/management-group/organization/tree',\r\n notification: '/worker/notification',\r\n workerAvailability: '/worker/updateAvailablity',\r\n getWorkerAvailability: '/worker/getByCurrentUser',\r\n userValidate: '/org/auth/user-validate',\r\n generateLoginUrl: '/org/auth/get-login-url',\r\n getTokenValidationUrl: '/org/auth/token-validation',\r\n },\r\n permission: {\r\n permissionRoleById: '/access-control/permission/role/{id}',\r\n pagePermission: '/access-control/permission/page',\r\n pageLookupPermission: '/access-control/permission/page/lookup'\r\n },\r\n microstrategy: {\r\n login: '/platform/microstrategy/login',\r\n getLibrary: '/platform/microstrategy/library'\r\n }\r\n }\r\n };\r\n}\r\n\r\n\r\nexport class RBACINFO {\r\n apiHost ='';\r\n tokenKey = '';\r\n others?: any;\r\n orgID?: any;\r\n environment?: Environment;\r\n}\r\nexport class Environment {\r\n mstrUsername?: string;\r\n mstrPassword?: string;\r\n mstrURL?: string;\r\n mstrProjectID?: string;\r\n applicationid?: string;\r\n priority?: string\r\n}\r\n\r\n","import { BehaviorSubject, Observable } from 'rxjs';\r\n\r\nexport class Store<T> {\r\n state$: Observable<T>;\r\n private _state$: BehaviorSubject<T>;\r\n\r\n protected constructor(initialState: T) {\r\n this._state$ = new BehaviorSubject(initialState);\r\n this.state$ = this._state$.asObservable();\r\n }\r\n\r\n get state(): T {\r\n return this._state$.getValue();\r\n }\r\n\r\n setState(nextState: T): void {\r\n this._state$.next(nextState);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { Store } from '../service/store.service';\r\n@Injectable()\r\nexport class PermissionStore extends Store<any> {\r\n constructor() {\r\n super({});\r\n }\r\n\r\n setStore(data: any): void {\r\n if(data){\r\n this.setState({ ...this.state, ...data });\r\n }\r\n }\r\n\r\n getStore(type: string = 'P'): Observable<any> {\r\n if (type === 'P') return of(this.state);\r\n else return of(this.state);\r\n }\r\n\r\n private flat(array: any[]) {\r\n let result: any[] = [];\r\n if(array){\r\n array.forEach(item => {\r\n result.push(item);\r\n if (item && Array.isArray(item)) {\r\n result = result.concat(this.flat(item));\r\n }\r\n });\r\n }\r\n return result;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n\r\n@Injectable()\r\nexport class DataStoreService {\r\n private currentStoreSubject = new BehaviorSubject<any>({} as any);\r\n public currentStore = this.currentStoreSubject.asObservable();\r\n\r\n constructor() {\r\n // test code\r\n }\r\n\r\n setData(key: string, value: any) {\r\n const currentStore = this.getCurrentStore();\r\n currentStore[key] = value;\r\n this.currentStoreSubject.next(currentStore);\r\n }\r\n\r\n setObject(value: any) {\r\n this.currentStoreSubject.next(value);\r\n }\r\n\r\n getData(key: string): any {\r\n const currentStore = this.getCurrentStore();\r\n return currentStore[key];\r\n }\r\n\r\n clearStore() {\r\n const currentStore = this.getCurrentStore();\r\n Object.keys(currentStore).forEach((key) => {\r\n delete currentStore[key];\r\n });\r\n this.currentStoreSubject.next(currentStore);\r\n }\r\n\r\n getCurrentStore(): any {\r\n return this.currentStoreSubject.value;\r\n }\r\n}\r\n","export class AppConstants {\r\n public static errorMessage = 'Something went wrong!';\r\n public static regexEmail = '^[0-9a-zA-Z.-]+[@][0-9a-zA-Z.-]+[.][0-9a-zA-Z]{2,}$';\r\n\r\n public static errorList = [\r\n 'Have at least one (1) number',\r\n 'Have at least one (1) special character',\r\n 'Have at least one (1) upper case letter',\r\n 'Have at least one (1) lower case letter',\r\n 'Contain a minimum of fourteen (14) characters'\r\n ];\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable()\r\n export class AlertService {\r\n private subject = new Subject<Alert>();\r\n private keepAfterRouteChange = false;\r\n\r\n constructor(private router: Router) {\r\n // clear alert messages on route change unless 'keepAfterRouteChange' flag is true\r\n router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n if (this.keepAfterRouteChange) {\r\n // only keep for a single route change\r\n this.keepAfterRouteChange = false;\r\n } else {\r\n // clear alert messages\r\n this.clear();\r\n }\r\n }\r\n });\r\n }\r\n\r\n getAlert(): Observable<any> {\r\n return this.subject.asObservable();\r\n }\r\n\r\n success(message: string, keepAfterRouteChange = false) {\r\n this.alert(AlertType.Success, message, keepAfterRouteChange);\r\n }\r\n\r\n error(message: string, keepAfterRouteChange = false) {\r\n this.alert(AlertType.Error, message, keepAfterRouteChange);\r\n }\r\n\r\n info(message: string, keepAfterRouteChange = false) {\r\n this.alert(AlertType.Info, message, keepAfterRouteChange);\r\n }\r\n\r\n warn(message: string, keepAfterRouteChange = false) {\r\n this.alert(AlertType.Warning, message, keepAfterRouteChange);\r\n }\r\n\r\n alert(type: AlertType, message: string, keepAfterRouteChange = false) {\r\n this.keepAfterRouteChange = keepAfterRouteChange;\r\n this.subject.next(<Alert>{ type: type, message: message });\r\n }\r\n\r\n clear() {\r\n // clear alerts\r\n this.subject.next(<any>{});\r\n }\r\n }\r\n export interface DynamicObject {\r\n [key: string]: any;\r\n }\r\n\r\n export enum AlertType {\r\n Success,\r\n Error,\r\n Info,\r\n Warning\r\n }\r\n export class Alert {\r\n type!: AlertType;\r\n message!: string;\r\n }\r\n export interface Insights {\r\n name: string;\r\n series: Series[];\r\n }\r\n export interface Series {\r\n value: number;\r\n name: string;\r\n month: string;\r\n }\r\n\r\n export interface Status {\r\n name: string;\r\n value: number;\r\n }\r\n\r\n export class UserGroupDto {\r\n id?: number;\r\n name?: string;\r\n description?: string | null;\r\n constructor(data?: Partial<UserGroupDto>) {\r\n Object.assign(this, data);\r\n }\r\n }\r\n\r\n export class UserRolePageDto {\r\n id?: number;\r\n name?: string;\r\n route?: string;\r\n icon?: string | null;\r\n order?: number;\r\n ismenu?: boolean;\r\n constructor(data?: Partial<UserRolePageDto>) {\r\n Object.assign(this, data);\r\n }\r\n }\r\n\r\n export class UserRoleDto {\r\n id?: number;\r\n name?: string;\r\n description?: string | null;\r\n priority?: number;\r\n order?: number;\r\n defaultpage?: UserRolePageDto;\r\n defaultpageid?: number;\r\n parentid?: number | null;\r\n parent?: UserRoleDto | null;\r\n constructor(data?: Partial<UserRoleDto>) {\r\n Object.assign(this, data);\r\n }\r\n }\r\n\r\n export class UserDto {\r\n id?: number;\r\n name?: string;\r\n description?: string | null;\r\n priority?: number;\r\n order?: number;\r\n defaultpage?: UserRolePageDto;\r\n defaultpageid?: number;\r\n parentid?: number | null;\r\n parent?: UserRoleDto | null;\r\n constructor(data?: Partial<UserDto>) {\r\n Object.assign(this, data);\r\n }\r\n }\r\n export class AccessManagementConfig {\r\n public static EndPoint = {\r\n Organization: {\r\n getOrganizationList: '/org/organization/all',\r\n getOrganization: '/platform/page-designer/page/organization/{orgId}?returnUserPage=false&excludeNoActiveVersionPages=true'\r\n }\r\n };\r\n }\r\n","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { throwError } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { DataStoreService } from './data-store.service';\r\nimport { SessionStorageService, PICS_CORE_SESSION_STORAGE } from '@pics-core/common-utils';\r\n\r\n@Injectable()\r\nexport class HttpService {\r\n RBACORG: any;\r\n overrideUrl = true;\r\n errorData!: HttpErrorResponse;\r\n baseUrl = '';\r\n tokenKey: any;\r\n public headers = new HttpHeaders()\r\n .set('Accept', 'application/json')\r\n .set('Content-Type', 'application/json')\r\n .set('role', 'role=CP_PUBLIC');\r\n\r\n public showSpinner: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n public outsideShowSpinner: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n url1: string;\r\n url: any;\r\n constructor(private http: HttpClient, private _storeservice: DataStoreService, @Inject(PICS_CORE_SESSION_STORAGE) private localstore: SessionStorageService) {\r\n this._storeservice.currentStore.subscribe((res: any) => {\r\n if (res['RBACORG'] && res['RBACORG'] !== '') {\r\n this.RBACORG = res['RBACORG'];\r\n this.url = this.RBACORG['apiHost'] ? this.RBACORG['apiHost'] : 'http://localhost:3000/api';\r\n this.tokenKey = this.RBACORG['tokenKey'];\r\n }\r\n });\r\n this.url1 = '';\r\n }\r\n\r\n get(apiRoute: string) {\r\n return this.http.get(`${this.url + apiRoute}`, {\r\n headers: this.getHttpNewHeaders(),\r\n withCredentials: true\r\n });\r\n }\r\n\r\n post(apiRoute: string, body: any) {\r\n return this.http.post(`${this.url + apiRoute}`, body, {\r\n headers: this.getHttpNewHeaders(),\r\n withCredentials: true\r\n });\r\n }\r\n put(apiRoute: string, body: any) {\r\n return this.http.put(`${this.url + apiRoute}`, body, {\r\n headers: this.getHttpNewHeaders(),\r\n withCredentials: true\r\n });\r\n }\r\n\r\n patch(apiRoute: string, body?: any) {\r\n return this.http.patch(`${this.url + apiRoute}`, body, {\r\n headers: this.getHttpNewHeaders(),\r\n withCredentials: true\r\n });\r\n }\r\n\r\n delete(apiRoute: string) {\r\n return this.http.delete(`${this.url + apiRoute}`, {\r\n headers: this.getHttpNewHeaders(),\r\n withCredentials: true\r\n });\r\n }\r\n\r\n getHttpHeaders(): HttpHeaders {\r\n return new HttpHeaders().set('key', 'value');\r\n }\r\n getHttpNewHeaders(): HttpHeaders {\r\n return this.headers;\r\n }\r\n getAttachmentHttpHeaders(contentType: any): HttpHeaders {\r\n return new HttpHeaders().set('Content-Type', contentType).set('x-ms-blob-type', 'BlockBlob');\r\n }\r\n putUpload(apiRoute: string, body: any, contentType: any) {\r\n return this.http.put(`${this.url1 + apiRoute}`, body, { headers: this.getAttachmentHttpHeaders(contentType) });\r\n }\r\n getAuthValidation(apiRoute,token) {\r\n return this.http.get(`${this.url + apiRoute}`, {\r\n headers: this.getHttpNewHeaders()\r\n });\r\n }\r\n getAuthAccessKey(apiRoute, body) {\r\n return this.http.post(`${this.url + apiRoute}`, body, {\r\n headers: this.getHttpNewHeaders()\r\n });\r\n }\r\n putupload2(apiRoute: string, body: any, contenttype: any): Observable<any> {\r\n return this.http\r\n .put(`${this.url1 + apiRoute}`, body, {\r\n headers: this.getAttachmentHttpHeaders(contenttype),\r\n observe: 'response'\r\n })\r\n .pipe(\r\n map(data => {\r\n return data;\r\n })\r\n );\r\n }\r\n /**\r\n *\r\n * @param apiRoute\r\n * This function will download the stream file from the API service.\r\n * No HTTP required for this stream. So used Window.location.href to download the file\r\n */\r\n getFormDownloaded(apiRoute: string) {\r\n window.location.href = `${this.url + apiRoute}`;\r\n }\r\n //common http service(optional)\r\n\r\n handleError(error: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n // Client-side errors\r\n errorMessage = `Error: ${error.error.message}`;\r\n } else {\r\n // Server-side errors\r\n errorMessage = `Error Code: ${error.status}\\nMessage: ${\r\n error?.error?.message ? error?.error?.message : error.message\r\n }`;\r\n }\r\n return throwError(() => errorMessage);\r\n }\r\n getToken(): any {\r\n const token = this.tokenKey ? this.tokenKey : 'jwt-token';\r\n return this.localstore.getItem(token);\r\n }\r\n }\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from './http.service';\r\nimport { AttachmentConfig } from '../urls/rbac-url.config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AttachmentsService {\r\n constructor(private http: HttpService) {\r\n // This is intentional\r\n }\r\n\r\n getAttachmentReferral(referralid) {\r\n return this.http.get(AttachmentConfig.EndPoint.Attachments.GetAttachmentReferral + '/' + referralid);\r\n }\r\n getCategoryLookup(name) {\r\n return this.http.get(AttachmentConfig.EndPoint.Attachments.GetCategoryLookup + '/' + name);\r\n }\r\n uploadKey(objparams) {\r\n return this.http.post(AttachmentConfig.EndPoint.Attachments.UploadKey, objparams);\r\n }\r\n downloadKey(objparams) {\r\n return this.http.post(AttachmentConfig.EndPoint.Attachments.DownloadKey, objparams);\r\n }\r\n postAttachment(objparams) {\r\n return this.http.post(AttachmentConfig.EndPoint.Attachments.PostAttachment, objparams);\r\n }\r\n putAttachment(objparams, attachmentId) {\r\n console.log(AttachmentConfig.EndPoint.Attachments.PutAttachment + '/' + attachmentId, objparams);\r\n return this.http.patch(AttachmentConfig.EndPoint.Attachments.PutAttachment + '/' + attachmentId, objparams);\r\n }\r\n}\r\n","export class ConfigurationSettingsConfig {\r\n public static EndPoint = {\r\n Organization: {\r\n getOrganizationList: '/platform/page-designer/page/organization/all',\r\n getOrganization:\r\n '/platform/page-designer/page/organization/{orgId}?returnUserPage=false&excludeNoActiveVersionPages=true'\r\n },\r\n Page: {\r\n getPage: '/page'\r\n },\r\n Asset: {\r\n getAsset: 'asset',\r\n getPageAsset: '/platform/page-designer/asset/getpagebyid',\r\n getUserAsset: '/platform/page-designer/asset/getUserAssets',\r\n getRoleAsset: '/platform/page-designer/asset/getRoleAssets',\r\n getPolicyGroupAsset: '/platform/page-designer/asset/getPolicyGroupAssets'\r\n },\r\n User: {\r\n getUser: '/org/user/',\r\n getUserList: '/org/user/all',\r\n getUserorgList: '/org/user/organization/'\r\n },\r\n ConfigSettings: {\r\n saveConfig: '/org/config-settings/create',\r\n getConfigList: '/org/config-settings/list',\r\n getConfigById: '/org/config-settings/list?id=',\r\n deleteConfig: '/org/config-settings/',\r\n updateConfig: '/org/config-settings/',\r\n registrationInfo: '/org/auth/configsettings'\r\n },\r\n role: {\r\n getAllUserRole: '/access-control/role',\r\n createRole: '/access-control/role/create',\r\n getLandingPage: '/platform/menu/application',\r\n addPolicyGroup: '/access-control/role',\r\n getAllOrgRole: '/access-control/role/organization/{orgid}',\r\n dossier: '/dossier'\r\n },\r\n Email: {\r\n emailtemplateList: '/solution/emailtemplate/channel/EMAIL'\r\n },\r\n org: {\r\n getOrganizations: '/org/management-group/organization/tree'\r\n },\r\n Attachments: {\r\n GetAttachmentReferral: '/ref/attachment/referral',\r\n GetCategoryLookup: '/platform/master/lookup/lookupbycategoryname',\r\n UploadKey: '/common/files/upload-key',\r\n DownloadKey: '/common/files/download-key',\r\n PostAttachment: '/ref/attachment/create',\r\n PutAttachment: '/ref/attachment'\r\n }\r\n };\r\n}\r\nexport class AttachmentConfig {\r\n public static EndPoint = {\r\n Attachments: {\r\n GetAttachmentReferral: '/ref/attachment/referral',\r\n GetCategoryLookup: '/platform/master/lookup/lookupbycategoryname',\r\n UploadKey: '/common/files/upload-key',\r\n DownloadKey: '/common/files/download-key',\r\n PostAttachment: '/ref/attachment/create',\r\n PutAttachment: '/ref/attachment'\r\n }\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ConfigurationSettingsConfig } from '../urls/configuration-settings-url.config';\r\nimport { HttpService } from './http.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigurationSettingsService {\r\n constructor(private httpService: HttpService) {\r\n // This is intentional\r\n }\r\n\r\n getUserList(orgid) {\r\n return this.httpService.get(ConfigurationSettingsConfig.EndPoint.User.getUserorgList + orgid);\r\n }\r\n saveConfigSettings(modal) {\r\n return this.httpService.post(ConfigurationSettingsConfig.EndPoint.ConfigSettings.saveConfig, modal);\r\n }\r\n getConfigList() {\r\n return this.httpService.get(ConfigurationSettingsConfig.EndPoint.ConfigSettings.getConfigList);\r\n }\r\n getConfigById(id) {\r\n return this.httpService.get(ConfigurationSettingsConfig.EndPoint.ConfigSettings.getConfigById + id);\r\n }\r\n deleteConfig(id) {\r\n return this.httpService.delete(ConfigurationSettingsConfig.EndPoint.ConfigSettings.deleteConfig + id);\r\n }\r\n updateConfig(id, modal) {\r\n return this.httpService.patch(ConfigurationSettingsConfig.EndPoint.ConfigSettings.updateConfig + id, modal);\r\n }\r\n getAllUserRole(id?: any) {\r\n return this.httpService.get(ConfigurationSettingsConfig.EndPoint.role.getAllOrgRole.replace('{orgid}', String(id)));\r\n }\r\n getEmailTemplateNewList() {\r\n return this.httpService.get(ConfigurationSettingsConfig.EndPoint.Email.emailtemplateList);\r\n }\r\n getAllOrganizations() {\r\n return this.httpService.get(ConfigurationSettingsConfig.EndPoint.org.getOrganizations);\r\n }\r\n uploadKey(objparams) {\r\n return this.httpService.post(ConfigurationSettingsConfig.EndPoint.Attachments.UploadKey, objparams);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Alert, AlertService, AlertType } from '../../@core/service/alert.service';\r\nconst DISPLAY_IN_SECONDS = 8;\r\n@Component({\r\n // moduleId: module.id,\r\n selector: 'app-alert',\r\n templateUrl: 'alert.component.html',\r\n styleUrls: ['./alert.component.scss'],\r\n standalone: false\r\n})\r\nexport class AlertComponent implements OnInit {\r\n alerts: Alert[] = [];\r\n\r\n constructor(private alertService: AlertService) {}\r\n\r\n ngOnInit() {\r\n this.alertService.getAlert().subscribe((alert: Alert) => {\r\n if (!alert?.message) {\r\n // clear alerts when an empty alert is received\r\n this.alerts = [];\r\n return;\r\n }\r\n\r\n // add alert to array\r\n this.alerts.push(alert);\r\n // remove alert after 5 seconds\r\n setTimeout(() => this.removeAlert(alert), DISPLAY_IN_SECONDS * 1000);\r\n });\r\n }\r\n\r\n removeAlert(alert: Alert) {\r\n this.alerts = this.alerts.filter(x => x !== alert);\r\n }\r\n\r\n isAssertiveAlert(alert: Alert): boolean {\r\n return alert.type === AlertType.Error || alert.type === AlertType.Warning;\r\n }\r\n\r\n cssClass(alert: Alert) {\r\n if (!alert) {\r\n return;\r\n }\r\n\r\n // return css class based on alert type\r\n switch (alert.type) {\r\n case AlertType.Success:\r\n return 'alert alert-success';\r\n case AlertType.Error:\r\n return 'alert alert-danger';\r\n case AlertType.Info:\r\n return 'alert alert-info';\r\n case AlertType.Warning:\r\n return 'alert alert-warning';\r\n }\r\n }\r\n}\r\n","<div class=\"alert-container\" aria-live=\"polite\" aria-atomic=\"true\">\r\n @for (alert of alerts; track alert) {\r\n <div\r\n class=\"alert-animate {{ cssClass(alert) }} alert-dismissable\"\r\n [attr.role]=\"isAssertiveAlert(alert) ? 'alert' : 'status'\"\r\n >\r\n {{ alert.message }}\r\n <button\r\n type=\"button\"\r\n class=\"close\"\r\n aria-label=\"Close alert\"\r\n (click)=\"removeAlert(alert)\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n }\r\n</div>\r\n","import { ChangeDetectorRef, Component, Inject, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport { DataStoreService } from '../../@core/service/data-store.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { PICS_CORE_SESSION_STORAGE, SessionStorageService } from '@pics-core/common-utils';\r\n\r\n@Component({\r\n selector: 'lib-config-login-preview',\r\n templateUrl: './config-login-preview.component.html',\r\n styleUrls: ['./config-login-preview.component.scss'],\r\n standalone: false\r\n})\r\nexport class ConfigLoginPreviewComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() previewData: any;\r\n @Input() i18n: any = {}; // Store i18n translations\r\n LOGININFO: any;\r\n httpService: any;\r\n inputValidationMethod: any;\r\n orgSubs!: Subscription;\r\n constructor(\r\n private _storeservice: DataStoreService,\r\n private cdRef: ChangeDetectorRef,\r\n @Inject(PICS_CORE_SESSION_STORAGE) private localstore: SessionStorageService\r\n ) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // Apply LOGININFO before any detectChanges — I18N BehaviorSubject emits immediately\r\n // and would otherwise paint the preview with every *ngIf false (blank dialog).\r\n if (changes['previewData']) {\r\n this.applyPreviewData();\r\n }\r\n }\r\n /**\r\n * Get translation for a key\r\n * @param key Translation key\r\n * @returns Translated string or key if not found\r\n */\r\n public translate(key: string): string {\r\n return this.i18n[key] || key;\r\n }\r\n \r\n ngOnInit(): void {\r\n console.log('Initializing component');\r\n this.applyPreviewData();\r\n this.initI18nSubscription();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.orgSubs?.unsubscribe();\r\n }\r\n\r\n /** Fallback when parent [i18n] is not ready; parent already passes i18n when available. */\r\n private initI18nSubscription(): void {\r\n if (this.orgSubs) {\r\n return;\r\n }\r\n this.orgSubs = this._storeservice.currentStore.subscribe((res: any) => {\r\n if (res['I18N'] && Object.keys(res['I18N']).length > 0) {\r\n this.i18n = res['I18N'];\r\n }\r\n });\r\n }\r\n\r\n private applyPreviewData(): void {\r\n if (this.previewData) {\r\n this.LOGININFO = this.previewData;\r\n }\r\n }\r\n}\r\n","<app-alert></app-alert>\r\n\r\n<!-- login-form-right -->\r\n@if (LOGININFO?.ENABLE_LOGIN_TEMPLATE ? LOGININFO?.ENABLE_LOGIN_TEMPLATE == 'loginTemplateRight' : false) {\r\n <div class=\"row login login-right\" id=\"back\">\r\n <div class=\"d-none d-lg-flex flex-column col-lg-7 align-i p-0 banner-sec justify-content-center container-image\"\r\n [style.background-image]=\"'url(' + (LOGININFO['BACKGROUND_IMAGE']) + ')'\">\r\n <div class=\"clsBannerTitle\" [innerHtml]=\"LOGININFO['BANNER_TITLE']\" [style.color]=\"LOGININFO['LABEL_COLOR']\">\r\n </div>\r\n </div>\r\n <div class=\"d-flex col-lg-5 shadow align-items-center p-2 mx-auto rightLoginSet\">\r\n <div class=\"col-12 col-sm-8 col-md-6 col-lg-12 px-xl-2 mx-auto\">\r\n <div class=\"col-md-12 text-left logo-group lg-mb-50\">\r\n <div class=\"form-group mb-0\">\r\n <div class=\"logo-group text-center\">\r\n <div class=\"logo-img\">\r\n <img [attr.src]=\"LOGININFO['BANNER']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </div>\r\n <h5 class=\"clsLoginTitle\" [innerHtml]=\"LOGININFO['TITLE']\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\"></h5>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 loginBottomSet clearfix pl-0 pr-0\">\r\n <div class=\"login-content\">\r\n <form novalidate>\r\n <div class=\"clearfix\">\r\n <div class=\"form-group\">\r\n <label for=\"username\" class=\"intake-form-labels\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\r\n LOGININFO['USER_LABEL']}}\r\n </label>\r\n <input-empower class=\"Inputs\" type=\"email\" placeholder=\"{{ translate('Email') }}\" name=\"email\"\r\n id=\"username\" tabindex=\"0\" required></input-empower>\r\n </div>\r\n <div class=\"form-group no-mar\">\r\n <label for=\"password\" class=\"intake-form-labels w-100\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\r\n LOGININFO['PASSWORD_LABEL']}}</label>\r\n <input-empower class=\"Inputs password\" type=\"password\" placeholder=\"{{ translate('Password') }}\" name=\"password\"\r\n id=\"password\" tabindex=\"0\" required></input-empower>\r\n </div>\r\n @if (LOGININFO['ENABLE_CAPTCHA'] ? LOGININFO['ENABLE_CAPTCHA'] : false) {\r\n <div class=\"captcha clearfix\">\r\n <div class=\"form-group\">\r\n <!-- <label>Captcha:</label> -->\r\n <div class=\"captcha-box d-flex\">\r\n <input-empower type=\"text\" class=\"form-control\" placeholder=\"{{ translate('Enter captcha') }}\"></input-empower>\r\n <button type=\"button\" class=\"refresh\" [attr.aria-label]=\"translate('Refresh Captcha')\"><i class=\"fa fa-refresh\"\r\n aria-hidden=\"true\"></i></button>\r\n <span class=\"captcha-text\">ABCDi</span>\r\n </div>\r\n <!-- @if (captchaError) { <div class=\"text-danger mt-1\">Invalid Captcha</div> } -->\r\n\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n }\r\n <div class=\"clearfix termsForget form-group\">\r\n @if (LOGININFO['ENABLE_TERMSANDCONDITION'] ? LOGININFO['ENABLE_TERMSANDCONDITION'] : false) {\r\n <div class=\"checkbox\">\r\n <p-checkbox class=\"checklabelbox\" name=\"conditions\" value=\"yes\" inputId=\"ch\"\r\n aria-checked=\"false\">\r\n </p-checkbox>\r\n <label class=\"checklabel\" for=\"ch\">{{ translate('I accept the') }} <a href=\"javascript:void(0)\">{{ translate('terms & conditions') }}</a></label>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_FORGOTPASSWORD'] ? LOGININFO['ENABLE_FORGOTPASSWORD'] : false) {\r\n <div class=\"text-right\">\r\n <a href=\"javascript:void(0)\" class=\"btn-link forget\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">\r\n {{ translate('Forgot Password?') }}</a>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"form-group clearfix mb-30 clsMin-23 pt-10\">\r\n\r\n </div> -->\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2\">\r\n <div class=\"row ml-0 mr-0\">\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\r\n <p-button role=\"button\" type=\"submit\" title=\"{{ LOGININFO?.['LOGIN_BUTTON_LABEL'] || translate('Login') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n [label]=\"LOGININFO?.['LOGIN_BUTTON_LABEL'] || translate('Login')\" class=\"loginbutton w-100\"\r\n tabindex=\"0\">\r\n </p-button>\r\n </div>\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\r\n @if (LOGININFO['ENABLE_GOOGLE'] ? LOGININFO['ENABLE_GOOGLE'] : false) {\r\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login with Google') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton btn-hover w-100\" tabindex=\"0\">{{ translate('Login with Google') }}\r\n </p-button>\r\n }\r\n </div>\r\n </div>\r\n\r\n </div>\r\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\r\n <div class=\"mar-btm-20 picslogin\">\r\n <span>{{ translate('Or') }}</span>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2\">\r\n <p-button role=\"button\" type=\"button\" title=\"{{ translate('Login with Azure') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login with Azure') }}</p-button>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_REGISTARTION'] ? LOGININFO['ENABLE_REGISTARTION'] : false) {\r\n <div class=\"clearfix text-center mt-10\">\r\n <a href=\"javascript:void;\" class=\"goto-register text-primary\">{{\r\n LOGININFO?.['REGISTER_BUTTON_LABEL'] || translate('Register') }}</a>\r\n </div>\r\n }\r\n <br />\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"powered\" style=\"top: 85%;\">\r\n <p class=\"clsInfo-text mt-0 text-center\">\r\n <span style=\"font-size: 13px\"> {{ translate('Powered by') }} </span>\r\n <a href=\"https://www.cardinality.ai/\" rel=\"noopener\" role=\"link\" target=\"_blank\" tabindex=\"0\">\r\n <img alt=\"{{ translate('cardinality') }}\" class=\"Cardinality_logo\" src=\"assets/images/cardinality-logo_text.svg\"\r\n width=\"120\" />\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n @if (LOGININFO['ENABLE_FOOTER'] && (LOGININFO['ENABLE_SELECTION'] === 'loginOnly' || LOGININFO['ENABLE_SELECTION'] === 'both')) {\r\n <div class=\"footerVersion\">\r\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateRight' : false) {\r\n <div class=\"versionSection clearfix\">\r\n <p class=\"f-left versionfootervalue\">{{ translate('Stable') }} {{ LOGININFO['VERSION']}}</p>\r\n <!-- <p class=\"f-right\"><span>{{ LOGININFO['POWERED_BY']}}</span> @ <span>{{ LOGININFO['YEAR'] | date: 'yyyy'\r\n }}</span></p> -->\r\n <p class=\"f-right versionfootervalue\">\r\n <span> &copy; </span>{{ LOGININFO['YEAR'] | date: 'yyyy' }} <span>{{ LOGININFO['POWERED_BY'] }}</span>\r\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </p>\r\n\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateCenter' : false) {\r\n <div class=\"versionSection clearfix\">\r\n <div class=\"text-center clearfix\">\r\n <p class=\"text-center version-footer-center\">\r\n <span>{{ translate('Stable') }} {{ LOGININFO['VERSION']}}</span>\r\n <span> &copy; {{ LOGININFO['YEAR'] | date: 'yyyy' }}</span>\r\n <span>{{ LOGININFO['POWERED_BY']}}</span>\r\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop version-footer-logo\"\r\n alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </p>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n<!-- login-form-right -->\r\n\r\n<!-- login-form-left -->\r\n@if (LOGININFO?.ENABLE_LOGIN_TEMPLATE ? LOGININFO?.ENABLE_LOGIN_TEMPLATE == 'loginTemplateLeft' : false) {\r\n <div class=\"row login login-left\" id=\"back\">\r\n <div class=\"d-flex col-lg-5 shadow align-items-center p2 mx-auto rightLoginSet\">\r\n <div class=\"col-12 col-sm-8 col-md-6 col-lg-12 px-xl-2 mx-auto\">\r\n <div class=\"col-md-12 text-left logo-group lg-mb-50\">\r\n <div class=\"form-group mb-0\">\r\n <div class=\"logo-group text-center\">\r\n <div class=\"logo-img\">\r\n <img [attr.src]=\"LOGININFO['BANNER']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </div>\r\n <h5 class=\"clsLoginTitle\" [innerHtml]=\"LOGININFO['TITLE']\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\"></h5>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 loginBottomSet clearfix pl-0 pr-0\">\r\n <div class=\"login-content\">\r\n <form novalidate>\r\n <div class=\"clearfix\">\r\n <div class=\"form-group\">\r\n <label for=\"username\" class=\"intake-form-labels\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\r\n LOGININFO['USER_LABEL']}}\r\n </label>\r\n <input-empower class=\"Inputs\" type=\"mail\" placeholder=\"{{ translate('Email') }}\" name=\"email\"\r\n id=\"username\" tabindex=\"0\" required></input-empower>\r\n </div>\r\n <div class=\"form-group no-mar mb-2\">\r\n <label for=\"password\" class=\"intake-form-labels w-100\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\r\n LOGININFO['PASSWORD_LABEL']}}</label>\r\n <input-empower class=\"Inputs password\" type=\"password\" placeholder=\"{{ translate('Password') }}\" name=\"password\"\r\n id=\"password\" tabindex=\"0\" required></input-empower>\r\n </div>\r\n @if (LOGININFO['ENABLE_CAPTCHA'] ? LOGININFO['ENABLE_CAPTCHA'] : false) {\r\n <div class=\"captcha clearfix\">\r\n <div class=\"form-group\">\r\n <div class=\"captcha-box d-flex\">\r\n <input-empower type=\"text\" class=\"form-control\" placeholder=\"{{ translate('Enter captcha') }}\"></input-empower>\r\n <button type=\"button\" class=\"refresh\" [attr.aria-label]=\"translate('Refresh Captcha')\"><i class=\"fa fa-refresh\"\r\n aria-hidden=\"true\"></i></button>\r\n <span class=\"captcha-text\">ABCDi</span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div class=\"clearfix termsForget form-group\">\r\n @if (LOGININFO['ENABLE_TERMSANDCONDITION'] ? LOGININFO['ENABLE_TERMSANDCONDITION'] : false) {\r\n <div class=\"checkbox\">\r\n <p-checkbox class=\"checklabelbox\" name=\"conditions\" value=\"yes\" inputId=\"ch\"\r\n aria-checked=\"false\">\r\n </p-checkbox>\r\n <label class=\"checklabel\" for=\"ch\">{{ translate('I accept the') }} <a href=\"javascript:void(0)\">{{ translate('terms & conditions') }}</a></label>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_FORGOTPASSWORD'] ? LOGININFO['ENABLE_FORGOTPASSWORD'] : false) {\r\n <div class=\"text-right\">\r\n <a href=\"javascript:void(0)\" class=\"btn-link forget\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">\r\n {{ translate('Forgot Password?') }}</a>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-4\">\r\n <div class=\"row ml-0 mr-0\">\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\r\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login') }}</p-button>\r\n </div>\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\r\n @if (LOGININFO['ENABLE_GOOGLE'] ? LOGININFO['ENABLE_GOOGLE'] : false) {\r\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login with Google') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton btn-hover w-100\" tabindex=\"0\">{{ translate('Login with Google') }}\r\n </p-button>\r\n }\r\n </div>\r\n </div>\r\n\r\n </div>\r\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\r\n <div class=\"mar-btm-20 picslogin\">\r\n <span>{{ translate('Or') }}</span>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2\">\r\n <p-button role=\"button\" type=\"button\" title=\"{{ translate('Login with Azure') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login with Azure') }}</p-button>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_REGISTARTION'] ? LOGININFO['ENABLE_REGISTARTION'] : false) {\r\n <div class=\"clearfix text-center mt-10\">\r\n @if (LOGININFO['REGISTER_PREFIX_LABEL']) {\r\n <span class=\"signup-label\">\r\n {{ LOGININFO['REGISTER_PREFIX_LABEL'] }}\r\n </span>\r\n }\r\n <a href=\"javascript:void;\" class=\"goto-register text-primary\">{{\r\n LOGININFO?.['REGISTER_BUTTON_LABEL'] || translate('Register') }}</a>\r\n </div>\r\n }\r\n <br />\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"powered\" style=\"top: 85%;\">\r\n <p class=\"clsInfo-text mt-0 text-center\">\r\n <span style=\"font-size: 13px\"> {{ translate('Powered by') }} </span>\r\n <a href=\"https://www.cardinality.ai/\" rel=\"noopener\" role=\"link\" target=\"_blank\" tabindex=\"0\">\r\n <img alt=\"{{ translate('cardinality') }}\" class=\"Cardinality_logo\" src=\"assets/images/cardinality-logo_text.svg\"\r\n width=\"120\" />\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-lg-flex flex-column col-lg-7 align-i p-0 banner-sec justify-content-center container-image\"\r\n [style.background-image]=\"'url(' + (LOGININFO['BACKGROUND_IMAGE']) + ')'\">\r\n <div class=\"clsBannerTitle\" [innerHtml]=\"LOGININFO['BANNER_TITLE']\" [style.color]=\"LOGININFO['LABEL_COLOR']\">\r\n </div>\r\n </div>\r\n @if (LOGININFO['ENABLE_FOOTER'] && (LOGININFO['ENABLE_SELECTION'] === 'loginOnly' || LOGININFO['ENABLE_SELECTION'] === 'both')) {\r\n <div class=\"footerVersion\">\r\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateRight' : false) {\r\n <div class=\"versionSection clearfix\">\r\n <p class=\"f-left versionfootervalue\">{{ translate('Stable') }} {{ LOGININFO['VERSION']}}</p>\r\n <!-- <p class=\"f-right\"><span>{{ LOGININFO['POWERED_BY']}}</span> @ <span>{{ LOGININFO['YEAR'] | date: 'yyyy'\r\n }}</span></p> -->\r\n <p class=\"f-right versionfootervalue\">\r\n <span> &copy; </span>{{ LOGININFO['YEAR'] | date: 'yyyy' }} <span>{{ LOGININFO['POWERED_BY'] }}</span>\r\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n\r\n </p>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateCenter' : false) {\r\n <div class=\"versionSection clearfix\">\r\n <div class=\"text-center clearfix\">\r\n <p class=\"text-center version-footer-center\">\r\n <span>{{ translate('Stable') }} {{ LOGININFO['VERSION']}}</span>\r\n <span> &copy; {{ LOGININFO['YEAR'] | date: 'yyyy' }}</span>\r\n <span>{{ LOGININFO['POWERED_BY']}}</span>\r\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </p>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n<!-- login-form-left -->\r\n\r\n<!-- login-form-center -->\r\n@if (LOGININFO?.ENABLE_LOGIN_TEMPLATE ? LOGININFO?.ENABLE_LOGIN_TEMPLATE == 'loginTemplateCenter' : false) {\r\n <div class=\" login_3 login-center\" id=\"back\">\r\n <div class=\"d-lg-flex flex-column p-lg-0 banner-sec\"\r\n [style.background-image]=\"'url(' + (LOGININFO['BACKGROUND_IMAGE']) + ')'\">\r\n <div class=\"clsBannerTitle\" [innerHtml]=\"LOGININFO['BANNER_TITLE']\" [style.color]=\"LOGININFO['LABEL_COLOR']\">\r\n </div>\r\n </div>\r\n <div class=\"align-items-center p-4 rightLoginSet\">\r\n <div class=\"current-design mx-auto\">\r\n <div class=\"col-md-12 text-left logo-group lg-mb-50\">\r\n <div class=\"form-group mb-0\">\r\n <div class=\"logo-group text-center\">\r\n <div class=\"logo-img\">\r\n <img [attr.src]=\"LOGININFO['BANNER']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </div>\r\n <h5 class=\"clsLoginTitle\" [innerHtml]=\"LOGININFO['TITLE']\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\"></h5>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 loginBottomSet clearfix pl-0 pr-0\">\r\n <div class=\"login-content\">\r\n <form novalidate>\r\n <div class=\"clearfix\">\r\n <div class=\"form-group\">\r\n <label for=\"username\" class=\"intake-form-labels\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\r\n LOGININFO['USER_LABEL']}}\r\n </label>\r\n <input-empower class=\"Inputs\" type=\"mail\" placeholder=\"{{ translate('Email') }}\" name=\"email\"\r\n id=\"username\" tabindex=\"0\" required></input-empower>\r\n </div>\r\n <div class=\"form-group no-mar\">\r\n <label for=\"password\" class=\"intake-form-labels w-100\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\r\n LOGININFO['PASSWORD_LABEL']}}</label>\r\n <input-empower class=\"Inputs password\" type=\"password\" placeholder=\"{{ translate('Password') }}\" name=\"password\"\r\n id=\"password\" tabindex=\"0\" required></input-empower>\r\n </div>\r\n @if (LOGININFO['ENABLE_CAPTCHA'] ? LOGININFO['ENABLE_CAPTCHA'] : false) {\r\n <div class=\"captcha clearfix\">\r\n <div class=\"form-group\">\r\n <!-- <label>Captcha:</label> -->\r\n <div class=\"captcha-box d-flex\">\r\n <input-empower type=\"text\" class=\"form-control\" placeholder=\"{{ translate('Enter captcha') }}\"></input-empower>\r\n <button type=\"button\" class=\"refresh\" [attr.aria-label]=\"translate('Refresh Captcha')\"><i class=\"fa fa-refresh\"\r\n aria-hidden=\"true\"></i></button>\r\n <span class=\"captcha-text\">ABCDi</span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div class=\"clearfix termsForget form-group\">\r\n @if (LOGININFO['ENABLE_TERMSANDCONDITION'] ? LOGININFO['ENABLE_TERMSANDCONDITION'] : false) {\r\n <div class=\"checkbox\">\r\n <p-checkbox class=\"checklabelbox\" name=\"conditions\" value=\"yes\" inputId=\"ch\"\r\n aria-checked=\"false\">\r\n </p-checkbox>\r\n <label class=\"checklabel\" for=\"ch\">{{ translate('I accept the') }} <a href=\"javascript:void(0)\">{{ translate('terms & conditions') }}</a></label>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_FORGOTPASSWORD'] ? LOGININFO['ENABLE_FORGOTPASSWORD'] : false) {\r\n <div class=\"text-right\">\r\n <a href=\"javascript:void(0)\" class=\"btn-link forget\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">\r\n {{ translate('Forgot Password?') }}</a>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-4\">\r\n <div class=\"row ml-0 mr-0\">\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\r\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login') }}</p-button>\r\n </div>\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\r\n @if (LOGININFO['ENABLE_GOOGLE'] ? LOGININFO['ENABLE_GOOGLE'] : false) {\r\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login with Google') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton btn-hover w-100\" tabindex=\"0\">{{ translate('Login with Google') }}\r\n </p-button>\r\n }\r\n </div>\r\n </div>\r\n\r\n </div>\r\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\r\n <div class=\"mar-btm-20 picslogin\">\r\n <span>{{ translate('Or') }}</span>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2\">\r\n <p-button role=\"button\" type=\"button\" title=\"{{ translate('Login with Azure') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login with Azure') }}</p-button>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_REGISTARTION'] ? LOGININFO['ENABLE_REGISTARTION'] : false) {\r\n <div class=\"clearfix text-center mt-10\">\r\n <a href=\"javascript:void;\" class=\"goto-register text-primary registrationtext\">{{\r\n LOGININFO?.['REGISTER_BUTTON_LABEL'] || translate('Register') }}</a>\r\n </div>\r\n }\r\n <br />\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"powered\">\r\n <p class=\"clsInfo-text mt-0 text-center\">\r\n <span style=\"font-size: 13px\"> {{ translate('Powered by') }} </span>\r\n <a href=\"https://www.cardinality.ai/\" rel=\"noopener\" role=\"link\" target=\"_blank\" tabindex=\"0\">\r\n <img alt=\"{{ translate('cardinality') }}\" class=\"Cardinality_logo\" src=\"assets/images/cardinality-logo_text.svg\"\r\n width=\"120\" />\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n @if (LOGININFO['ENABLE_FOOTER'] && (LOGININFO['ENABLE_SELECTION'] === 'loginOnly' || LOGININFO['ENABLE_SELECTION'] === 'both')) {\r\n <div class=\"footerVersion\">\r\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateRight' : false) {\r\n <div class=\"versionSection clearfix\">\r\n <p class=\"f-left versionfootervalue\"> {{ translate('Stable') }}{{ LOGININFO['VERSION']}}</p>\r\n <p class=\"f-right versionfootervalue\">\r\n <span> &copy; </span>{{ LOGININFO['YEAR'] | date: 'yyyy' }} <span>{{ LOGININFO['POWERED_BY'] }}</span>\r\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n\r\n </p>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateCenter' : false) {\r\n <div class=\"versionSection clearfix\">\r\n <div class=\"text-center clearfix\">\r\n <p class=\"text-center version-footer-center\">\r\n <span> {{ translate('Stable') }} {{ LOGININFO['VERSION']}}</span>\r\n <span>&copy;{{ LOGININFO['YEAR'] | date: 'yyyy' }}</span>\r\n <span>{{ LOGININFO['POWERED_BY']}}</span>\r\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </p>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n<!-- login-form-center -->\r\n\r\n<!-- login-form-bottom -->\r\n@if (LOGININFO?.ENABLE_LOGIN_TEMPLATE ? LOGININFO?.ENABLE_LOGIN_TEMPLATE == 'loginTemplateBottom' : false) {\r\n <div class=\"row login form-bottom\" id=\"back\">\r\n <div class=\"d-none d-lg-flex flex-column col-lg-12 align-i p-0 banner-sec justify-content-center container-image\"\r\n [style.background-image]=\"'url(' + (LOGININFO['BACKGROUND_IMAGE']) + ')'\">\r\n <div class=\"clsBannerTitle\" [innerHtml]=\"LOGININFO['BANNER_TITLE']\" [style.color]=\"LOGININFO['LABEL_COLOR']\">\r\n </div>\r\n </div>\r\n <div class=\"d-flex col-lg-5 shadow align-items-center p-4 mx-auto rightLoginSet\">\r\n <div class=\"col-12 col-sm-8 col-md-6 col-lg-12 px-xl-2 mx-auto\">\r\n <div class=\"col-md-12 text-left logo-group lg-mb-50\">\r\n <div class=\"form-group mb-0\">\r\n <div class=\"logo-group text-center\">\r\n <div class=\"logo-img\">\r\n <img [attr.src]=\"LOGININFO['BANNER']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </div>\r\n <h5 class=\"clsLoginTitle\" [innerHtml]=\"LOGININFO['TITLE']\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\"></h5>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 loginBottomSet clearfix pl-0 pr-0\">\r\n <div class=\"login-content\">\r\n <form novalidate>\r\n <div class=\"clearfix\">\r\n <div class=\"form-group\">\r\n <label for=\"username\" class=\"intake-form-labels\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\r\n LOGININFO['USER_LABEL']}}\r\n </label>\r\n <input-empower class=\"Inputs\" type=\"mail\" placeholder=\"{{ translate('Email') }}\" name=\"email\"\r\n id=\"username\" tabindex=\"0\" required></input-empower>\r\n </div>\r\n <div class=\"form-group no-mar\">\r\n <label for=\"password\" class=\"intake-form-labels w-100\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\r\n LOGININFO['PASSWORD_LABEL']}}</label>\r\n <input-empower class=\"Inputs password\" type=\"password\" placeholder=\"{{ translate('Password') }}\" name=\"password\"\r\n id=\"password\" tabindex=\"0\" required></input-empower>\r\n </div>\r\n @if (LOGININFO['ENABLE_CAPTCHA'] ? LOGININFO['ENABLE_CAPTCHA'] : false) {\r\n <div class=\"captcha clearfix\">\r\n <div class=\"form-group\">\r\n <div class=\"captcha-box d-flex\">\r\n <input-empower type=\"text\" class=\"form-control\" placeholder=\"{{ translate('Enter captcha') }}\"></input-empower>\r\n <button type=\"button\" class=\"refresh\" [attr.aria-label]=\"translate('Refresh Captcha')\"><i class=\"fa fa-refresh\"\r\n aria-hidden=\"true\"></i></button>\r\n <span class=\"captcha-text\">ABCDi</span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div class=\"clearfix termsForget form-group\">\r\n @if (LOGININFO['ENABLE_TERMSANDCONDITION'] ? LOGININFO['ENABLE_TERMSANDCONDITION'] : false) {\r\n <div class=\"checkbox\">\r\n <p-checkbox class=\"checklabelbox\" name=\"conditions\" value=\"yes\" inputId=\"ch\"\r\n aria-checked=\"false\">\r\n </p-checkbox>\r\n <label class=\"checklabel\" for=\"ch\">{{ translate('I accept the') }} <a href=\"javascript:void(0)\">{{ translate('terms & conditions') }}</a></label>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_FORGOTPASSWORD'] ? LOGININFO['ENABLE_FORGOTPASSWORD'] : false) {\r\n <div class=\"text-right\">\r\n <a href=\"javascript:void(0)\" class=\"btn-link forget\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">\r\n {{ translate('Forgot Password?') }}</a>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-4\">\r\n <div class=\"row ml-0 mr-0\">\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\r\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login') }}</p-button>\r\n </div>\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\r\n @if (LOGININFO['ENABLE_GOOGLE'] ? LOGININFO['ENABLE_GOOGLE'] : false) {\r\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login with Google') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton btn-hover w-100\" tabindex=\"0\">{{ translate('Login with Google') }}\r\n </p-button>\r\n }\r\n </div>\r\n </div>\r\n\r\n </div>\r\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\r\n <div class=\"mar-btm-20 picslogin\">\r\n <span>{{ translate('Or') }}</span>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2\">\r\n <p-button role=\"button\" type=\"button\" title=\"{{ translate('Login with Azure') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login with Azure') }}</p-button>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_REGISTARTION'] ? LOGININFO['ENABLE_REGISTARTION'] : false) {\r\n <div class=\"clearfix text-center mt-10\">\r\n <a href=\"javascript:void;\" class=\"goto-register text-primary\">{{\r\n LOGININFO?.['REGISTER_BUTTON_LABEL'] || translate('Register') }}</a>\r\n </div>\r\n }\r\n <br />\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"powered\" style=\"top: 85%;\">\r\n <p class=\"clsInfo-text mt-0 text-center\">\r\n <span style=\"font-size: 13px\"> {{ translate('Powered by') }} </span>\r\n <a href=\"https://www.cardinality.ai/\" rel=\"noopener\" role=\"link\" target=\"_blank\" tabindex=\"0\">\r\n <img alt=\"{{ translate('cardinality') }}\" class=\"Cardinality_logo\" src=\"assets/images/cardinality-logo_text.svg\"\r\n width=\"120\" />\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n @if (LOGININFO['ENABLE_FOOTER'] && (LOGININFO['ENABLE_SELECTION'] === 'loginOnly' || LOGININFO['ENABLE_SELECTION'] === 'both')) {\r\n <div class=\"footerVersion\">\r\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateRight' : false) {\r\n <div class=\"versionSection clearfix\">\r\n <p class=\"f-left versionfootervalue\"> {{ translate('Stable') }}{{ LOGININFO['VERSION']}}</p>\r\n <p class=\"f-right versionfootervalue\">\r\n <span> &copy; </span>{{ LOGININFO['YEAR'] | date: 'yyyy' }} <span>{{ LOGININFO['POWERED_BY'] }}</span>\r\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n\r\n </p>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateCenter' : false) {\r\n <div class=\"versionSection clearfix\">\r\n <div class=\"text-center clearfix\">\r\n <p class=\"text-center version-footer-center\">\r\n <span> {{ translate('Stable') }}{{ LOGININFO['VERSION']}}</span>\r\n <span> &copy;{{ LOGININFO['YEAR'] | date: 'yyyy' }}</span>\r\n <span>{{ LOGININFO['POWERED_BY']}}</span>\r\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </p>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n<!-- login-form-bottom -->\r\n\r\n<!-- login-form-curve -->\r\n@if (LOGININFO?.ENABLE_LOGIN_TEMPLATE ? LOGININFO?.ENABLE_LOGIN_TEMPLATE == 'loginTemplateCurve' : false) {\r\n <div class=\"row login login-curve\" id=\"back\">\r\n <div class=\"d-none d-lg-flex flex-column col-lg-7 align-i p-0 banner-sec justify-content-center container-image\"\r\n [style.background-image]=\"'url(' + (LOGININFO['BACKGROUND_IMAGE']) + ')'\">\r\n <div class=\"clsBannerTitle\" [innerHtml]=\"LOGININFO['BANNER_TITLE']\" [style.color]=\"LOGININFO['LABEL_COLOR']\">\r\n </div>\r\n </div>\r\n <div class=\"d-flex col-lg-5 shadow align-items-center p-4 mx-auto rightLoginSet\">\r\n <div class=\"col-12 col-sm-8 col-md-6 col-lg-12 px-xl-2 mx-auto\">\r\n <div class=\"col-md-12 text-left logo-group lg-mb-50\">\r\n <div class=\"form-group mb-0\">\r\n <div class=\"logo-group text-center\">\r\n <div class=\"logo-img\">\r\n <img [attr.src]=\"LOGININFO['BANNER']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </div>\r\n <h5 class=\"clsLoginTitle\" [innerHtml]=\"LOGININFO['TITLE']\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\"></h5>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 loginBottomSet clearfix pl-0 pr-0\">\r\n <div class=\"login-content\">\r\n <form novalidate>\r\n <div class=\"clearfix\">\r\n <div class=\"form-group\">\r\n <label for=\"username\" class=\"intake-form-labels\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\r\n LOGININFO['USER_LABEL']}}\r\n </label>\r\n <input-empower class=\"Inputs\" type=\"mail\" placeholder=\"{{ translate('Email') }}\" name=\"email\"\r\n id=\"username\" tabindex=\"0\" required></input-empower>\r\n </div>\r\n <div class=\"form-group no-mar\">\r\n <label for=\"password\" class=\"intake-form-labels w-100\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\r\n LOGININFO['PASSWORD_LABEL']}}</label>\r\n <input-empower class=\"Inputs password\" type=\"password\" placeholder=\"{{ translate('Password') }}\" name=\"password\"\r\n id=\"password\" tabindex=\"0\" required></input-empower>\r\n </div>\r\n @if (LOGININFO['ENABLE_CAPTCHA'] ? LOGININFO['ENABLE_CAPTCHA'] : false) {\r\n <div class=\"captcha clearfix\">\r\n <div class=\"form-group\">\r\n <div class=\"captcha-box d-flex\">\r\n <input-empower type=\"text\" class=\"form-control\" placeholder=\"{{ translate('Enter captcha') }}\"></input-empower>\r\n <button type=\"button\" class=\"refresh\" [attr.aria-label]=\"translate('Refresh Captcha')\"><i class=\"fa fa-refresh\"\r\n aria-hidden=\"true\"></i></button>\r\n <span class=\"captcha-text\">ABCDi</span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div class=\"clearfix termsForget form-group\">\r\n @if (LOGININFO['ENABLE_TERMSANDCONDITION'] ? LOGININFO['ENABLE_TERMSANDCONDITION'] : false) {\r\n <div class=\"checkbox\">\r\n <p-checkbox class=\"checklabelbox\" name=\"conditions\" value=\"yes\" inputId=\"ch\"\r\n aria-checked=\"false\">\r\n </p-checkbox>\r\n <label class=\"checklabel\" for=\"ch\">{{ translate('I accept the') }} <a href=\"javascript:void(0)\">{{ translate('terms & conditions') }}</a></label>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_FORGOTPASSWORD'] ? LOGININFO['ENABLE_FORGOTPASSWORD'] : false) {\r\n <div class=\"text-right\">\r\n <a href=\"javascript:void(0)\" class=\"btn-link forget\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">\r\n {{ translate('Forgot Password?') }}</a>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-4\">\r\n <div class=\"row ml-0 mr-0\">\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\r\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login') }}</p-button>\r\n </div>\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\r\n @if (LOGININFO['ENABLE_GOOGLE'] ? LOGININFO['ENABLE_GOOGLE'] : false) {\r\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login with Google') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton btn-hover w-100\" tabindex=\"0\">{{ translate('Login with Google') }}\r\n </p-button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\r\n <div class=\"mar-btm-20 picslogin\">\r\n <span>{{ translate('Or') }}</span>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2\">\r\n <p-button role=\"button\" type=\"button\" title=\"{{ translate('Login with Azure') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login with Azure') }}</p-button>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_REGISTARTION'] ? LOGININFO['ENABLE_REGISTARTION'] : false) {\r\n <div class=\"clearfix text-center mt-10\">\r\n <a href=\"javascript:void;\" class=\"goto-register text-primary registrationtext\">{{\r\n LOGININFO?.['REGISTER_BUTTON_LABEL'] || translate('Register') }}</a>\r\n </div>\r\n }\r\n <br />\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"powered\">\r\n <p class=\"clsInfo-text mt-0 text-center\">\r\n <span style=\"font-size: 13px\"> {{ translate('Powered by') }} </span>\r\n <a href=\"https://www.cardinality.ai/\" rel=\"noopener\" role=\"link\" target=\"_blank\" tabindex=\"0\">\r\n <img alt=\"{{ translate('cardinality') }}\" class=\"Cardinality_logo\" src=\"assets/images/cardinality-logo_text.svg\"\r\n width=\"120\" />\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n @if (LOGININFO['ENABLE_FOOTER'] && (LOGININFO['ENABLE_SELECTION'] === 'loginOnly' || LOGININFO['ENABLE_SELECTION'] === 'both')) {\r\n <div class=\"footerVersion\">\r\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateRight' : false) {\r\n <div class=\"versionSection clearfix\">\r\n <p class=\"f-left versionfootervalue\"> {{ translate('Stable') }}{{ LOGININFO['VERSION']}}</p>\r\n <p class=\"f-right versionfootervalue\">\r\n <span> &copy; </span>{{ LOGININFO['YEAR'] | date: 'yyyy' }} <span>{{ LOGININFO['POWERED_BY'] }}</span>\r\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </p>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateCenter' : false) {\r\n <div class=\"versionSection clearfix\">\r\n <div class=\"text-center clearfix\">\r\n <p class=\"text-center version-footer-center\">\r\n <span> {{ translate('Stable') }}{{ LOGININFO['VERSION']}}</span>\r\n <span>&copy;{{ LOGININFO['YEAR'] | date: 'yyyy' }}</span>\r\n <span>{{ LOGININFO['POWERED_BY']}}</span>\r\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </p>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n<!-- login-form-curve -->\r\n\r\n<!-- login-form-left -->\r\n@if (LOGININFO?.ENABLE_LOGIN_TEMPLATE ? LOGININFO?.ENABLE_LOGIN_TEMPLATE == 'loginTemplateHideShow' : false) {\r\n <div class=\"row login_3 login_hide\" id=\"back\">\r\n <div class=\"d-lg-flex flex-column p-lg-0 banner-sec\"\r\n [style.background-image]=\"'url(' + (LOGININFO['BACKGROUND_IMAGE']) + ')'\">\r\n <div class=\"clsBannerTitle\" [innerHtml]=\"LOGININFO['BANNER_TITLE']\" [style.color]=\"LOGININFO['LABEL_COLOR']\">\r\n </div>\r\n </div>\r\n <div class=\"overlay\"></div>\r\n <div class=\"align-items-center p-4 rightLoginSet\">\r\n <div class=\"current-design mx-auto\">\r\n <div class=\"col-md-12 text-left logo-group lg-mb-50\">\r\n <div class=\"form-group mb-0\">\r\n <div class=\"logo-group text-center\">\r\n <div class=\"logo-img\">\r\n <img [attr.src]=\"LOGININFO['BANNER']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </div>\r\n <h5 class=\"clsLoginTitle\" [innerHtml]=\"LOGININFO['TITLE']\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\"></h5>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 loginBottomSet clearfix pl-0 pr-0\">\r\n <div class=\"login-content\">\r\n <form novalidate>\r\n <div class=\"clearfix\">\r\n <div class=\"form-group\">\r\n <label for=\"username\" class=\"intake-form-labels\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\r\n LOGININFO['USER_LABEL']}}</label>\r\n <input-empower class=\"Inputs\" type=\"mail\" placeholder=\"{{ translate('Email') }}\" name=\"email\"\r\n id=\"username\" tabindex=\"0\" required></input-empower>\r\n <span class=\"newLoginBtn clearfix\">\r\n <i class=\"fa fa-arrow-right\"></i>\r\n </span>\r\n </div>\r\n <div class=\"form-group no-mar\">\r\n <label for=\"password\" class=\"intake-form-labels w-100\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\r\n LOGININFO['PASSWORD_LABEL']}}</label>\r\n <input-empower class=\"Inputs password\" #showhideinput type=\"password\" placeholder=\"{{ translate('Password') }}\"\r\n name=\"password\" id=\"password\" tabindex=\"0\" required></input-empower>\r\n <span class=\"newLoginBtn clearfix\">\r\n <button role=\"button\" type=\"submit\" title=\"{{ translate('Login') }}\" tabindex=\"0\">\r\n <i class=\"fa fa-sign-out\"></i></button>\r\n </span>\r\n </div>\r\n @if (LOGININFO['ENABLE_CAPTCHA'] ? LOGININFO['ENABLE_CAPTCHA'] : false) {\r\n <div class=\"captcha clearfix\">\r\n <div class=\"form-group\">\r\n <div class=\"captcha-box d-flex\">\r\n <input-empower type=\"text\" class=\"form-control\" placeholder=\"{{ translate('Enter captcha') }}\"></input-empower>\r\n <button type=\"button\" class=\"refresh\" [attr.aria-label]=\"translate('Refresh Captcha')\"><i class=\"fa fa-refresh\"\r\n aria-hidden=\"true\"></i></button>\r\n <span class=\"captcha-text\">ABCDi</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n }\r\n <div class=\"clearfix termsForget form-group\">\r\n @if (LOGININFO['ENABLE_TERMSANDCONDITION'] ? LOGININFO['ENABLE_TERMSANDCONDITION'] : false) {\r\n <div class=\"checkbox\">\r\n <p-checkbox class=\"checklabelbox\" name=\"conditions\" value=\"yes\" inputId=\"ch\"\r\n aria-checked=\"false\">\r\n </p-checkbox>\r\n <label class=\"checklabel\" for=\"ch\">{{ translate('I accept the') }} <a href=\"javascript:void(0)\">{{ translate('terms & conditions') }}</a></label>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_FORGOTPASSWORD'] ? LOGININFO['ENABLE_FORGOTPASSWORD'] : false) {\r\n <div class=\"text-right\">\r\n <a href=\"javascript:void(0)\" class=\"btn-link forget\"\r\n [style.color]=\"LOGININFO['LABEL_COLOR']\">\r\n {{ translate('Forgot Password?') }}</a>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-4\">\r\n <div class=\"row ml-0 mr-0\">\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\r\n @if (LOGININFO['ENABLE_GOOGLE'] ? LOGININFO['ENABLE_GOOGLE'] : false) {\r\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login with Google') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton btn-hover w-100\" tabindex=\"0\">{{ translate('Login with Google') }}\r\n </p-button>\r\n }\r\n </div>\r\n </div>\r\n\r\n </div>\r\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\r\n <div class=\"mar-btm-20 picslogin\">\r\n <span>{{ translate('Or') }}</span>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\r\n <div class=\"clearfix text-center col-md-12 col-12 mt-2\">\r\n <p-button role=\"button\" type=\"button\" title=\"{{ translate('Login with Azure') }}\"\r\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\r\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login with Azure') }}</p-button>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_REGISTARTION'] ? LOGININFO['ENABLE_REGISTARTION'] : false) {\r\n <div class=\"clearfix text-center mt-10\">\r\n <a href=\"javascript:void;\" class=\"goto-register text-primary\">{{\r\n LOGININFO?.['REGISTER_BUTTON_LABEL'] || translate('Register') }}</a>\r\n </div>\r\n }\r\n </div>\r\n <br />\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"powered\">\r\n <p class=\"clsInfo-text mt-0 text-center\">\r\n <span style=\"font-size: 13px\"> {{ translate('Powered by') }} </span>\r\n <a href=\"https://www.cardinality.ai/\" rel=\"noopener\" role=\"link\" target=\"_blank\" tabindex=\"0\">\r\n <img alt=\"{{ translate('cardinality') }}\" class=\"Cardinality_logo\" src=\"assets/images/cardinality-logo_text.svg\"\r\n width=\"120\" />\r\n </a>\r\n </p>\r\n </div>\r\n\r\n </div>\r\n @if (LOGININFO['ENABLE_FOOTER'] && (LOGININFO['ENABLE_SELECTION'] === 'loginOnly' || LOGININFO['ENABLE_SELECTION'] === 'both')) {\r\n <div class=\"footerVersion\">\r\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateRight' : false) {\r\n <div class=\"versionSection clearfix\">\r\n <p class=\"f-left versionfootervalue\"> {{ translate('Stable') }}{{ LOGININFO['VERSION']}}</p>\r\n <p class=\"f-right versionfootervalue\">\r\n <span> &copy; </span>{{ LOGININFO['YEAR'] | date: 'yyyy' }} <span>{{ LOGININFO['POWERED_BY'] }}</span>\r\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </p>\r\n </div>\r\n }\r\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateCenter' : false) {\r\n <div class=\"versionSection clearfix\">\r\n <div class=\"text-center clearfix\">\r\n <p class=\"text-center version-footer-center\">\r\n <span> {{ translate('Stable') }}{{ LOGININFO['VERSION']}}</span>\r\n <span> &copy;{{ LOGININFO['YEAR'] | date: 'yyyy' }}</span>\r\n <span>{{ LOGININFO['POWERED_BY']}}</span>\r\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\r\n </p>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n<!-- login-form-left -->","import { ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild, OnDestroy } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { switchMap, takeUntil } from 'rxjs/operators';\r\nimport { AppConstants } from '../../@core/constants/app-constants';\r\nimport { AlertService } from '../../@core/service/alert.service';\r\nimport { ConfigurationSettingsService } from '../../@core/service/configuration-settings.service';\r\nimport { HttpService } from '../../@core/service/http.service';\r\nimport { AttachmentsService } from '../../@core/service/attachments.service';\r\nimport { DataStoreService } from '../../@core/service/data-store.service';\r\nimport { Inject } from '@angular/core';\r\nimport { PICS_CORE_SESSION_STORAGE, SessionStorageService } from '@pics-core/common-utils';\r\n\r\n@Component({\r\n selector: 'lib-config-login-settings',\r\n templateUrl: './config-login-settings.component.html',\r\n styleUrls: ['./config-login-settings.component.scss'],\r\n standalone: false\r\n})\r\nexport class ConfigLoginSettingsComponent implements OnInit, OnDestroy {\r\n @ViewChild('scrollBox', { static: false }) scrollBox!: ElementRef;\r\n @ViewChild('loginScrollBox') loginScrollBox!: HTMLDivElement;\r\n // Let Tab / Shift+Tab move focus out of the rich-text editors instead of being\r\n // captured (WCAG 2.1.2 No Keyboard Trap). Returning true lets the browser's\r\n // default focus move happen instead of Quill inserting indentation.\r\n quillModules = {\r\n keyboard: {\r\n bindings: {\r\n tab: { key: 9, handler: () => true },\r\n 'shift+tab': { key: 9, shiftKey: true, handler: () => true }\r\n }\r\n }\r\n };\r\n activeTab: string = 'home';\r\n Organization: any;\r\n RBACORG: any;\r\n PERMISSION: any;\r\n LOGININFO: any;\r\n loginEvent$: BehaviorSubject<any>;\r\n thumbnailLogo = '';\r\n thumbnailBanner = '';\r\n thumbnailPoweredLogo = '';\r\n orgId: any;\r\n orgSubs: Subscription;\r\n userRoles = [];\r\n emailTemplate = [];\r\n organizations = [];\r\n imageDataLogo: any;\r\n uploadedFileLogo: any;\r\n urlPathLogo: any;\r\n attachTypeLogo: any;\r\n imageDataBanner: any;\r\n imageDataFooterLogo: any;\r\n uploadedFileBanner: any;\r\n uploadedFileFooterBanner: any;\r\n urlPathBanner: any;\r\n urlPathFooterLogo: any;\r\n attachTypeBanner: any;\r\n userid = '';\r\n updateButton = false;\r\n environment: any;\r\n visible = false;\r\n bannerVisible = false;\r\n logoFooterVisible = false;\r\n configRegistrationForm: FormGroup;\r\n editConfigSettings: any;\r\n previewVisible = false;\r\n previewImageUrl: string = '';\r\n forgetPasswordConfig = [\r\n { name: 'Verification Link', value: 'link' },\r\n { name: 'Verification Code', value: 'code' }\r\n ]\r\n multifactorTemplates = [\r\n { name: 'Email', value: 'Email' },\r\n // { name: 'Sms', value: 'Sms' }\r\n ];\r\n previewLoginInfo: any = null;\r\n showPreviewModal = false;\r\n showFormErrors = false;\r\n isEditingOrganization = false;\r\n isEditingBanner = false;\r\n /** Active config_settings rows for the org-title dropdown. */\r\n configOptions: { id: number; organization_title: string }[] = [];\r\n /** Selected pics_core.config_settings.id */\r\n selectedConfigId: number | null = null;\r\n /** Show selector when at least one config exists; single row is auto-selected. */\r\n showOrgDropdown = false;\r\n /** True when config load failed, so Save must not create a duplicate row. */\r\n configLoadFailed = false;\r\n currentYear: number = new Date().getFullYear();\r\n isAtStart: Record<string, boolean> = { login: true, landing: true, consumer: true };\r\n isAtEnd: Record<string, boolean> = { login: false, landing: false, consumer: false };\r\n inputValidationMethod: any;\r\n i18n: any = {}; // Store i18n translations\r\n /** Last successfully loaded config id (used to revert dirty dropdown switches). */\r\n private loadedConfigId: number | null = null;\r\n private readonly destroy$ = new Subject<void>();\r\n private readonly configSelection$ = new Subject<number>();\r\n\r\n constructor(\r\n private alertService: AlertService,\r\n private attachmentService: AttachmentsService,\r\n private httpService: HttpService,\r\n private _formBuilder: FormBuilder,\r\n private _configurationSettingsService: ConfigurationSettingsService,\r\n private _storeservice: DataStoreService,\r\n private cdRef: ChangeDetectorRef,\r\n @Inject(PICS_CORE_SESSION_STORAGE) private localstore: SessionStorageService\r\n ) {\r\n this.loginEvent$ = new BehaviorSubject<any>(null);\r\n this.userid = sessionStorage.getItem('id');\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initilizeForm();\r\n this.configSelection$\r\n .pipe(\r\n switchMap((configId) => this._configurationSettingsService.getConfigById(configId)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe({\r\n next: (res: any) => {\r\n this.configLoadFailed = false;\r\n const record = this.normalizeConfigRecord(res?.data);\r\n if (record) {\r\n this.applyConfigToForm(record);\r\n } else {\r\n this.updateButton = false;\r\n this.editConfigSettings = null;\r\n this.alertService.error('Selected organization configuration was not found.');\r\n }\r\n },\r\n error: () => {\r\n this.configLoadFailed = true;\r\n this.alertService.error('Unable to load login settings. Please try again.');\r\n }\r\n });\r\n this.orgSubs = this._storeservice.currentStore.subscribe((res: any) => {\r\n if (res['I18N'] && Object.keys(res['I18N']).length > 0) {\r\n this.i18n = res['I18N'];\r\n this.cdRef.detectChanges();\r\n }\r\n if (res['RBACORG'] && res['RBACORG'] !== '') {\r\n this.RBACORG = res['RBACORG'];\r\n this.environment = this.RBACORG['environment'];\r\n this.orgId = parseInt(this.RBACORG['orgID']);\r\n if (this.environment) {\r\n this.organizationsList();\r\n this.getEmailTemplateNewList();\r\n this.getRolesList();\r\n this.loadConfigOptions();\r\n }\r\n }\r\n });\r\n }\r\n /**\r\n * Get translation for a key\r\n * @param key Translation key\r\n * @returns Translated string or key if not found\r\n */\r\n translate(key: string): string {\r\n return this.i18n[key] || key;\r\n }\r\n\r\n // Opens the (visually hidden) file input associated with the given id.\r\n triggerUpload(id: string) {\r\n document.getElementById(id)?.click();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.checkScroll('login', this.loginScrollBox);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.orgSubs?.unsubscribe();\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n /** API requires a finite number; form spread can leave a string, NaN, or ''. */\r\n private toOrganizationId(...candidates: any[]): number | null {\r\n for (const value of candidates) {\r\n if (value === '' || value === null || value === undefined) {\r\n continue;\r\n }\r\n const parsed = typeof value === 'number' ? value : Number(value);\r\n if (Number.isFinite(parsed)) {\r\n return parsed;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private parseNestedConfig(value: any): any {\r\n if (!value) {\r\n return {};\r\n }\r\n if (typeof value === 'string') {\r\n try {\r\n const parsed = JSON.parse(value);\r\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : {};\r\n } catch {\r\n return {};\r\n }\r\n }\r\n return typeof value === 'object' && !Array.isArray(value) ? value : {};\r\n }\r\n\r\n private toSwitchValue(value: any): boolean {\r\n return value === true || value === 'true';\r\n }\r\n\r\n private toFormText(value: any): string {\r\n return value === null || value === undefined ? '' : value;\r\n }\r\n\r\n /** API numeric fields reject ''; send null when unset. */\r\n private toOptionalNumber(value: any): number | null {\r\n if (value === '' || value === null || value === undefined) {\r\n return null;\r\n }\r\n const parsed = typeof value === 'number' ? value : Number(value);\r\n return Number.isFinite(parsed) ? parsed : null;\r\n }\r\n\r\n scrollTabs(key: 'login', element: HTMLDivElement, amount: number) {\r\n element.scrollBy({ left: amount, behavior: 'smooth' });\r\n setTimeout(() => this.checkScroll(key, element), 400);\r\n }\r\n\r\n checkScroll(key: 'login', element: HTMLDivElement) {\r\n this.isAtStart[key] = element.scrollLeft === 0;\r\n this.isAtEnd[key] = element.scrollLeft + element.clientWidth >= element.scrollWidth;\r\n }\r\n initilizeForm() {\r\n this.configRegistrationForm = this._formBuilder.group({\r\n id: [''],\r\n registration: false,\r\n layout: [1],\r\n role_for_registration: [''],\r\n template_for_registration: [''],\r\n banner: ['', Validators.required],\r\n organization_title: ['', Validators.required],\r\n banner_title: [''],\r\n logo: ['', Validators.required],\r\n organizationid: ['', Validators.required],\r\n enable_mfa: [null],\r\n enable_forgot_password: [],\r\n forgotPassword: [false],\r\n termsAndCondition: [false],\r\n enableRegistration: [false],\r\n loginTemplate: ['', Validators.required],\r\n landingTemplate: ['landingTemplatepage1'],\r\n enable_captcha: [false],\r\n enable_google_translate: [false],\r\n enable_server_maintenance: [''],\r\n terms_condition_template: [''],\r\n version: [''],\r\n content: [''],\r\n powered_by_logo: [''],\r\n enable_footer: [false],\r\n footer_version_template: [''],\r\n showFooterWhere: [''],\r\n forget_config: [''],\r\n userLabel: [''],\r\n loginButtonLabel: [''],\r\n registerButtonLabel: [''],\r\n registerButtonPrefix: [''],\r\n passwordLabel: [''],\r\n labelColor: [''],\r\n multifactor_template: [''],\r\n google_state: [''],\r\n language_config: [''],\r\n otp_digits: ['', [Validators.min(4), Validators.max(6)]],\r\n otp_expire_time: ['', [Validators.min(2), Validators.max(30)]],\r\n resend_otp_delay: ['', [Validators.min(0.5), Validators.max(10)]],\r\n forget_expire_time: ['', [Validators.min(1), Validators.max(60)]],\r\n enableLoginAttemptThrottling: [false], // enable login throttling based on rapid attempts\r\n lockoutWindowMinutes: ['', [Validators.min(1)]], // time window to detect repeated attempts\r\n lockoutDurationMinutes: ['', [Validators.min(1)]], // account lock duration change to this name\r\n emailPlaceholder: [''],\r\n passwordPlaceholder: [''],\r\n });\r\n this.onMfaValidation();\r\n }\r\n\r\n onMfaValidation(): void {\r\n const mfaValue = this.configRegistrationForm.get('enable_mfa')?.value;\r\n const templateControl = this.configRegistrationForm.get('multifactor_template');\r\n const otpControl = this.configRegistrationForm.get('otp_digits');\r\n const otpExpireControl = this.configRegistrationForm.get('otp_expire_time');\r\n const resendDelayControl = this.configRegistrationForm.get('resend_otp_delay');\r\n const forgotControl = this.configRegistrationForm.get('forget_config');\r\n const forgetExpireControl = this.configRegistrationForm.get('forget_expire_time');\r\n if (mfaValue) {\r\n templateControl?.setValidators([Validators.required]);\r\n otpControl?.setValidators([Validators.required, Validators.min(4), Validators.max(6)]);\r\n otpExpireControl?.setValidators([Validators.required, Validators.min(2), Validators.max(30)]);\r\n resendDelayControl?.setValidators([Validators.required, Validators.min(0.5), Validators.max(10)]);\r\n forgotControl?.setValidators([Validators.required]);\r\n forgetExpireControl?.setValidators([Validators.required, Validators.min(1), Validators.max(60)]);\r\n } else {\r\n templateControl?.clearValidators();\r\n otpControl?.setValidators([Validators.min(4), Validators.max(6)]);\r\n otpExpireControl?.setValidators([Validators.min(2), Validators.max(30)]);\r\n resendDelayControl?.setValidators([Validators.min(0.5), Validators.max(10)]);\r\n forgotControl?.clearValidators();\r\n forgetExpireControl?.setValidators([Validators.min(1), Validators.max(60)]);\r\n }\r\n const controls = [\r\n templateControl, otpControl, otpExpireControl, \r\n resendDelayControl, forgotControl, forgetExpireControl\r\n ];\r\n controls.forEach(control => control?.updateValueAndValidity());\r\n }\r\n\r\n onLoginAttemptThrottlingChange(): void {\r\n const throttlingValue = this.configRegistrationForm.get('enableLoginAttemptThrottling')?.value;\r\n const lockoutWindowControl = this.configRegistrationForm.get('lockoutWindowMinutes');\r\n const lockoutDurationControl = this.configRegistrationForm.get('lockoutDurationMinutes'); \r\n if (throttlingValue) {\r\n lockoutWindowControl?.setValidators([Validators.required, Validators.min(1)]);\r\n lockoutDurationControl?.setValidators([Validators.required, Validators.min(1)]);\r\n } else {\r\n lockoutWindowControl?.clearValidators();\r\n lockoutDurationControl?.clearValidators();\r\n } \r\n lockoutWindowControl?.updateValueAndValidity();\r\n lockoutDurationControl?.updateValueAndValidity();\r\n }\r\n\r\n getRolesList() {\r\n this._configurationSettingsService.getAllUserRole(this.orgId).subscribe(\r\n res => {\r\n this.userRoles = res['data'];\r\n },\r\n _error => this.alertService.error(AppConstants.errorMessage)\r\n );\r\n }\r\n getEmailTemplateNewList() {\r\n this._configurationSettingsService.getEmailTemplateNewList().subscribe((_res: any) => {\r\n if (_res) {\r\n this.emailTemplate = _res.data;\r\n }\r\n });\r\n }\r\n\r\n toggleEdit(field: 'organization' | 'banner') {\r\n if (field === 'organization') {\r\n this.isEditingOrganization = !this.isEditingOrganization;\r\n } else {\r\n this.isEditingBanner = !this.isEditingBanner;\r\n }\r\n }\r\n\r\n getOrganizationPlainText(): string {\r\n const value = this.configRegistrationForm.get('organization_title')?.value;\r\n if (value) {\r\n let text = value.replace(/<br\\s*\\/?>/gi, '\\n');\r\n text = text.replace(/<\\/p><p>/gi, '\\n');\r\n text = text.replace(/<p>/gi, '');\r\n text = text.replace(/<\\/p>/gi, '\\n');\r\n const temp = document.createElement('div');\r\n temp.innerHTML = text;\r\n const result = temp.textContent || temp.innerText || '';\r\n\r\n return result.replace(/\\n{3,}/g, '\\n\\n').trim();\r\n }\r\n return '';\r\n }\r\n\r\n getBannerPlainText(): string {\r\n const value = this.configRegistrationForm.get('banner_title')?.value;\r\n if (value) {\r\n const temp = document.createElement('div');\r\n temp.innerHTML = value;\r\n return temp.textContent || temp.innerText || '';\r\n }\r\n return '';\r\n }\r\n\r\n updateOrganizationTitle(event: any) {\r\n const plainText = event.target.value;\r\n const htmlText = plainText.replace(/\\r?\\n/g, '<br>');\r\n this.configRegistrationForm.patchValue({\r\n organization_title: htmlText\r\n });\r\n }\r\n\r\n updateBannerTitle(event: any) {\r\n const plainText = event.target.value;\r\n this.configRegistrationForm.patchValue({\r\n banner_title: plainText\r\n });\r\n }\r\n\r\n selectLoginTemplate(value: string) {\r\n this.configRegistrationForm.get('loginTemplate')?.setValue(value);\r\n }\r\n\r\n selectServerTemplate(value: string) {\r\n this.configRegistrationForm.get('enable_server_maintenance')?.setValue(value);\r\n }\r\n\r\n selectFooterTemplate(value: string) {\r\n this.configRegistrationForm.get('footer_version_template')?.setValue(value);\r\n }\r\n\r\n organizationsList() {\r\n this._configurationSettingsService.getAllOrganizations().subscribe((res: any) => {\r\n this.organizations = res.data;\r\n });\r\n }\r\n\r\n validateImage(file: any, type) {\r\n const fileSize = Number(file[0].size) / 1024;\r\n const filetype = file[0].type.replace('image/', '');\r\n if (\r\n filetype === 'jpg' ||\r\n filetype === 'jpeg' ||\r\n filetype === 'png' ||\r\n filetype === 'gif' ||\r\n filetype === 'svg+xml'\r\n ) {\r\n if (fileSize < 1024 && type === 'BANNER') {\r\n return true;\r\n } else if (fileSize < 120 && type === 'LOGO') {\r\n return true;\r\n } else if (fileSize < 120 && type === 'POWERED_BY_LOGO') {\r\n return true;\r\n } else {\r\n this.alertService.warn('File is bigger than 1024 KB');\r\n return false;\r\n }\r\n } else {\r\n this.alertService.warn(`${filetype} format is not supported`);\r\n return false;\r\n }\r\n }\r\n\r\n removeThumbnail() {\r\n this.thumbnailLogo = '';\r\n }\r\n\r\n handleFileInput(fileValue: any) {\r\n const target = fileValue.target as HTMLInputElement;\r\n const file: File = target.files[0];\r\n this.uploadedFileLogo = fileValue.target.files[0].name;\r\n this.imageDataLogo = {\r\n contentType: fileValue.target.files[0].type,\r\n fileName: `login-orgimage/${this.uploadedFileLogo}`\r\n };\r\n if (this.validateImage(fileValue.target.files, 'LOGO')) {\r\n this._configurationSettingsService.uploadKey(this.imageDataLogo).subscribe(\r\n (res: any) => {\r\n this.urlPathLogo = res.data;\r\n const uploadAttachment: any = document.getElementById('upload_logo');\r\n const uploadAttachmentDetails = uploadAttachment.files[0];\r\n this.httpService.putUpload(this.urlPathLogo, uploadAttachmentDetails, uploadAttachmentDetails.type).subscribe(\r\n (_resp: any) => {\r\n this.alertService.success('Uploaded Successfully!');\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n // this.thumbnailLogo = reader.result as string;\r\n const urlPathLogo = this.urlPathLogo ? this.urlPathLogo.split('?')[0] : '';\r\n this.thumbnailLogo = urlPathLogo;\r\n this.configRegistrationForm.patchValue({\r\n logo: this.imageDataLogo?.fileName\r\n });\r\n };\r\n reader.readAsDataURL(file);\r\n this.attachTypeLogo = fileValue.target.files[0].type;\r\n },\r\n error => {\r\n if (error.status == 0) {\r\n this.alertService.error(AppConstants.errorMessage);\r\n this.uploadedFileLogo = '';\r\n this.urlPathLogo = '';\r\n }\r\n }\r\n );\r\n },\r\n _error => {\r\n this.alertService.error(AppConstants.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n handleFileInputBanner(fileValue: any) {\r\n const target = fileValue.target as HTMLInputElement;\r\n const file: File = target.files[0];\r\n this.uploadedFileBanner = fileValue.target.files[0].name;\r\n this.imageDataBanner = {\r\n contentType: fileValue.target.files[0].type,\r\n fileName: `login-orgimage/${this.uploadedFileBanner}`\r\n };\r\n if (this.validateImage(fileValue.target.files, 'BANNER')) {\r\n this.attachmentService.uploadKey(this.imageDataBanner).subscribe(\r\n (res: any) => {\r\n this.urlPathBanner = res.data;\r\n const uploadAttachment: any = document.getElementById('upload_banner');\r\n const uploadAttachmentDetails = uploadAttachment.files[0];\r\n this.httpService\r\n .putUpload(this.urlPathBanner, uploadAttachmentDetails, uploadAttachmentDetails.type)\r\n .subscribe(\r\n (_resp: any) => {\r\n this.alertService.success('Uploaded Successfully!');\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const urlPathBanner = this.urlPathBanner ? this.urlPathBanner.split('?')[0] : '';\r\n this.thumbnailBanner = urlPathBanner;\r\n this.configRegistrationForm.patchValue({\r\n banner: this.imageDataBanner?.fileName\r\n });\r\n };\r\n reader.readAsDataURL(file);\r\n this.attachTypeBanner = fileValue.target.files[0].type;\r\n },\r\n error => {\r\n if (error.status == 0) {\r\n this.alertService.error(AppConstants.errorMessage);\r\n this.uploadedFileBanner = '';\r\n this.urlPathBanner = '';\r\n }\r\n }\r\n );\r\n },\r\n _error => {\r\n this.alertService.error(AppConstants.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n handleFileFooterInput(fileValue: any) {\r\n const target = fileValue.target as HTMLInputElement;\r\n const file: File = target.files[0];\r\n this.uploadedFileFooterBanner = fileValue.target.files[0].name;\r\n this.imageDataFooterLogo = {\r\n contentType: fileValue.target.files[0].type,\r\n fileName: `login-orgimage/${this.uploadedFileFooterBanner}`\r\n };\r\n if (this.validateImage(fileValue.target.files, 'POWERED_BY_LOGO')) {\r\n this.attachmentService.uploadKey(this.imageDataFooterLogo).subscribe(\r\n (res: any) => {\r\n this.urlPathFooterLogo = res.data;\r\n const uploadAttachment: any = document.getElementById('uploadPoweredBy');\r\n const uploadAttachmentDetails = uploadAttachment.files[0];\r\n this.httpService\r\n .putUpload(this.urlPathFooterLogo, uploadAttachmentDetails, uploadAttachmentDetails.type)\r\n .subscribe(\r\n (_resp: any) => {\r\n this.alertService.success('Uploaded Successfully!');\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const urlPathFooterLogo = this.urlPathFooterLogo ? this.urlPathFooterLogo.split('?')[0] : '';\r\n this.thumbnailPoweredLogo = urlPathFooterLogo;\r\n this.configRegistrationForm.patchValue({\r\n powered_by_logo: this.imageDataFooterLogo?.fileName\r\n });\r\n };\r\n reader.readAsDataURL(file);\r\n this.attachTypeBanner = fileValue.target.files[0].type;\r\n },\r\n error => {\r\n if (error.status == 0) {\r\n this.alertService.error(AppConstants.errorMessage);\r\n this.uploadedFileFooterBanner = '';\r\n this.urlPathFooterLogo = '';\r\n }\r\n }\r\n );\r\n },\r\n _error => {\r\n this.alertService.error(AppConstants.errorMessage);\r\n }\r\n );\r\n }\r\n }\r\n\r\n removeThumbnailBanner() {\r\n this.thumbnailBanner = '';\r\n }\r\n\r\n removeFooterLogo() {\r\n this.thumbnailPoweredLogo = ''\r\n }\r\n\r\n saveConfig() {\r\n this.configRegistrationForm.markAllAsTouched();\r\n this.showFormErrors = true;\r\n if (this.configRegistrationForm.invalid) {\r\n const messages = this.getInvalidFieldMessages();\r\n this.alertService.warn(messages.length ? messages.join(' ') : this.translate('Please fill all required fields.'));\r\n return;\r\n }\r\n const validate = this.conditionValidation();\r\n if (validate) {\r\n if (this.editConfigSettings) {\r\n const inputRequest = {\r\n id: this.editConfigSettings.id,\r\n registration: this.configRegistrationForm.value.registration,\r\n // eslint-disable-next-line radix\r\n layout: parseInt(this.configRegistrationForm.value.layout),\r\n role_for_registration: this.toOptionalNumber(this.configRegistrationForm.value.role_for_registration),\r\n template_for_registration: this.toOptionalNumber(this.configRegistrationForm.value.template_for_registration),\r\n banner: this.configRegistrationForm.value.banner,\r\n organization_title: this.configRegistrationForm.value.organization_title,\r\n banner_title: this.configRegistrationForm.value.banner_title,\r\n logo: this.configRegistrationForm.value.logo,\r\n organizationid: this.toOrganizationId(\r\n this.editConfigSettings?.organizationid,\r\n this.configRegistrationForm.value.organizationid,\r\n this.orgId\r\n ),\r\n terms_condition_template: this.configRegistrationForm.value.terms_condition_template,\r\n userLabel: this.configRegistrationForm.value.userLabel,\r\n passwordLabel: this.configRegistrationForm.value.passwordLabel,\r\n labelColor: this.configRegistrationForm.value.labelColor,\r\n platform_config: {\r\n enable_mfa: this.configRegistrationForm.value.enable_mfa || null,\r\n forgotPassword: this.configRegistrationForm.value.forgotPassword || null,\r\n termsAndCondition: this.configRegistrationForm.value.termsAndCondition || null,\r\n enableRegistration: this.configRegistrationForm.value.enableRegistration,\r\n loginTemplate: this.configRegistrationForm.value.loginTemplate || 'loginTemplateRight',\r\n enable_footer: this.configRegistrationForm.value.enable_footer || null,\r\n footer_version_template: this.configRegistrationForm.value.footer_version_template || null,\r\n forget_config: this.configRegistrationForm.value.forget_config || null,\r\n multifactor_template: this.configRegistrationForm.value.multifactor_template || null,\r\n landingTemplate: this.configRegistrationForm.value.landingTemplate || 'landingTemplatepage1',\r\n language_config: this.configRegistrationForm.value.language_config || 'en',\r\n otp_digits: this.configRegistrationForm.value.otp_digits || 4,\r\n otp_expire_time: this.configRegistrationForm.value.otp_expire_time || 30,\r\n resend_otp_delay: this.configRegistrationForm.value.resend_otp_delay || 1,\r\n forget_expire_time: this.configRegistrationForm.value.forget_expire_time || 30,\r\n enableLoginAttemptThrottling: this.configRegistrationForm.value.enableLoginAttemptThrottling || false,\r\n lockoutWindowMinutes: this.configRegistrationForm.value.lockoutWindowMinutes || 15,\r\n lockoutDurationMinutes: this.configRegistrationForm.value.lockoutDurationMinutes || 30,\r\n loginButtonLabel: this.configRegistrationForm.value.loginButtonLabel || 'Login',\r\n registerButtonLabel: this.configRegistrationForm.value.registerButtonLabel || 'Register',\r\n registerButtonPrefix: this.configRegistrationForm.value.registerButtonPrefix || '',\r\n emailPlaceholder: this.configRegistrationForm.value.emailPlaceholder || 'email',\r\n passwordPlaceholder: this.configRegistrationForm.value.passwordPlaceholder || 'password',\r\n enable_captcha: this.configRegistrationForm.value.enable_captcha || false,\r\n enable_google_translate: this.configRegistrationForm.value.enable_google_translate || false,\r\n enable_server_maintenance: this.configRegistrationForm.value.enable_server_maintenance || null,\r\n },\r\n footer_config: {\r\n version: this.configRegistrationForm.value.version,\r\n content: this.configRegistrationForm.value.content,\r\n powered_by_logo: this.configRegistrationForm.value.powered_by_logo,\r\n showFooterWhere: this.configRegistrationForm.value.showFooterWhere,\r\n }\r\n };\r\n this.updateButton = true;\r\n const configId = this.editConfigSettings.id;\r\n this._configurationSettingsService.updateConfig(configId, inputRequest).subscribe({\r\n next: () => {\r\n this.alertService.success('Updated successfully!');\r\n this.selectedConfigId = Number(configId);\r\n this.refreshConfigOptionLabel(configId, this.configRegistrationForm.value.organization_title);\r\n this.loadSelectedConfig();\r\n },\r\n error: () => {\r\n // Keep updateButton / editConfigSettings so Save can retry without leaving edit mode.\r\n this.alertService.error('Unable to update login settings. Please try again.');\r\n }\r\n });\r\n } else if (this.orgId != null && !this.configLoadFailed && !this.configOptions.length) {\r\n const inputRequest = {\r\n registration: this.configRegistrationForm.value.registration,\r\n layout: this.configRegistrationForm.value.layout,\r\n role_for_registration: this.toOptionalNumber(this.configRegistrationForm.value.role_for_registration),\r\n template_for_registration: this.toOptionalNumber(this.configRegistrationForm.value.template_for_registration),\r\n banner: this.configRegistrationForm.value.banner,\r\n organization_title: this.configRegistrationForm.value.organization_title,\r\n banner_title: this.configRegistrationForm.value.banner_title,\r\n logo: this.configRegistrationForm.value.logo,\r\n organizationid: this.toOrganizationId(\r\n this.editConfigSettings?.organizationid,\r\n this.configRegistrationForm.value.organizationid,\r\n this.orgId\r\n ),\r\n enable_mfa: this.configRegistrationForm.value.enable_mfa || null,\r\n terms_condition_template: this.configRegistrationForm.value.terms_condition_template,\r\n userLabel: this.configRegistrationForm.value.userLabel,\r\n passwordLabel: this.configRegistrationForm.value.passwordLabel,\r\n loginButtonLabel: this.configRegistrationForm.value.loginButtonLabel,\r\n registerButtonLabel: this.configRegistrationForm.value.registerButtonLabel,\r\n registerButtonPrefix: this.configRegistrationForm.value.registerButtonPrefix,\r\n labelColor: this.configRegistrationForm.value.labelColor,\r\n platform_config: {\r\n enable_mfa: this.configRegistrationForm.value.enable_mfa || null,\r\n forgotPassword: this.configRegistrationForm.value.forgotPassword || null,\r\n termsAndCondition: this.configRegistrationForm.value.termsAndCondition || null,\r\n enableRegistration: this.configRegistrationForm.value.enableRegistration || null,\r\n loginTemplate: this.configRegistrationForm.value.loginTemplate || 'loginTemplateRight',\r\n enable_footer: this.configRegistrationForm.value.enable_footer || null,\r\n footer_version_template: this.configRegistrationForm.value.footer_version_template || null,\r\n multifactor_template: this.configRegistrationForm.value.multifactor_template || null,\r\n forget_config: this.configRegistrationForm.value.forget_config || null,\r\n landingTemplate: this.configRegistrationForm.value.landingTemplate || 'landingTemplatepage1',\r\n language_config: this.configRegistrationForm.value.language_config || 'en',\r\n otp_digits: this.configRegistrationForm.value.otp_digits || 4,\r\n otp_expire_time: this.configRegistrationForm.value.otp_expire_time || 30,\r\n resend_otp_delay: this.configRegistrationForm.value.resend_otp_delay || 1,\r\n forget_expire_time: this.configRegistrationForm.value.forget_expire_time || 30,\r\n enableLoginAttemptThrottling: this.configRegistrationForm.value.enableLoginAttemptThrottling || false,\r\n lockoutWindowMinutes: this.configRegistrationForm.value.lockoutWindowMinutes || 15,\r\n lockoutDurationMinutes: this.configRegistrationForm.value.lockoutDurationMinutes || 30,\r\n loginButtonLabel: this.configRegistrationForm.value.loginButtonLabel || 'Login',\r\n registerButtonLabel: this.configRegistrationForm.value.registerButtonLabel || 'Register',\r\n registerButtonPrefix: this.configRegistrationForm.value.registerButtonPrefix || '',\r\n emailPlaceholder: this.configRegistrationForm.value.emailPlaceholder || 'email',\r\n passwordPlaceholder: this.configRegistrationForm.value.passwordPlaceholder || 'password',\r\n enable_captcha: this.configRegistrationForm.value.enable_captcha || false,\r\n enable_google_translate: this.configRegistrationForm.value.enable_google_translate || false,\r\n enable_server_maintenance: this.configRegistrationForm.value.enable_server_maintenance || null,\r\n },\r\n footer_config: {\r\n version: this.configRegistrationForm.value.version,\r\n content: this.configRegistrationForm.value.content,\r\n powered_by_logo: this.configRegistrationForm.value.powered_by_logo,\r\n showFooterWhere: this.configRegistrationForm.value.showFooterWhere,\r\n },\r\n };\r\n this.updateButton = true;\r\n this._configurationSettingsService.saveConfigSettings(inputRequest).subscribe({\r\n next: (res: unknown) => {\r\n this.alertService.success('Saved successfully!');\r\n // Prefer the created id so the new row is selected after reload (matches prior newest-row behavior).\r\n const createdId = this.extractCreatedConfigId(res);\r\n if (createdId != null) {\r\n this.selectedConfigId = createdId;\r\n }\r\n this.loadConfigOptions();\r\n },\r\n error: () => {\r\n this.updateButton = false;\r\n this.alertService.error('Unable to save login settings. Please try again.');\r\n }\r\n });\r\n } else if (this.configLoadFailed) {\r\n this.alertService.error('Existing login settings could not be loaded. Please reload the page before saving.');\r\n } else {\r\n this.alertService.error('Please select an organization configuration before saving.');\r\n }\r\n }\r\n }\r\n\r\n getInvalidFieldMessages(): string[] {\r\n const labels: Record<string, string> = {\r\n banner: 'Banner',\r\n organization_title: 'Organization Title',\r\n logo: 'Logo',\r\n organizationid: 'Organization',\r\n loginTemplate: 'Login Template',\r\n landingTemplate: 'Landing Template',\r\n role_for_registration: 'Role for registration',\r\n multifactor_template: 'Multifactor Authentication Channel',\r\n otp_digits: 'OTP Verification Digits',\r\n otp_expire_time: 'OTP Expire Time',\r\n resend_otp_delay: 'Resend OTP Delay',\r\n forget_config: 'Forget Password Config',\r\n forget_expire_time: 'Forgot Email Expire Time',\r\n lockoutWindowMinutes: 'Lock window duration',\r\n lockoutDurationMinutes: 'Lock duration'\r\n };\r\n const messages: string[] = [];\r\n Object.keys(this.configRegistrationForm.controls).forEach(key => {\r\n const control = this.configRegistrationForm.get(key);\r\n if (!control?.invalid || !control.errors) {\r\n return;\r\n }\r\n const label = this.translate(labels[key] || key);\r\n if (control.errors['required']) {\r\n messages.push(this.translate(`${label} is required.`));\r\n }\r\n if (control.errors['min'] || control.errors['max']) {\r\n messages.push(this.translate(`${label} has an invalid value.`));\r\n }\r\n });\r\n return messages;\r\n }\r\n\r\n get otpControl() {\r\n return this.configRegistrationForm.get('otp_digits');\r\n }\r\n\r\n get otpExpireControl() {\r\n return this.configRegistrationForm.get('otp_expire_time');\r\n }\r\n\r\n get resendDelayControl() {\r\n return this.configRegistrationForm.get('resend_otp_delay');\r\n }\r\n\r\n get forgetExpireControl() {\r\n return this.configRegistrationForm.get('forget_expire_time');\r\n }\r\n\r\n get lockoutWindowControl() {\r\n return this.configRegistrationForm.get('lockoutWindowMinutes');\r\n }\r\n\r\n get lockoutDurationControl() {\r\n return this.configRegistrationForm.get('lockoutDurationMinutes');\r\n }\r\n\r\n backToPreview() {\r\n this.updateButton = false;\r\n }\r\n\r\n showUploadedLogo() {\r\n this.visible = true;\r\n }\r\n\r\n showUploadedBanner() {\r\n this.bannerVisible = true;\r\n }\r\n\r\n showUploadedFooterLogo() {\r\n this.logoFooterVisible = true;\r\n }\r\n\r\n /**\r\n * Loads all active config_settings rows for the dropdown.\r\n * Even with a single row, the dropdown is shown and that row is auto-selected.\r\n */\r\n loadConfigOptions(): void {\r\n this._configurationSettingsService.getConfigList().subscribe({\r\n next: (res: any) => {\r\n const list = this.normalizeConfigList(res?.data ?? res);\r\n this.configOptions = list\r\n .filter((item: any) => item?.id != null)\r\n .map((item: any) => ({\r\n id: Number(item.id),\r\n organization_title: item.organization_title || `Config ${item.id}`\r\n }));\r\n this.showOrgDropdown = this.configOptions.length >= 1;\r\n\r\n if (!this.configOptions.length) {\r\n this.selectedConfigId = null;\r\n this.editConfigSettings = null;\r\n this.updateButton = false;\r\n this.configLoadFailed = false;\r\n return;\r\n }\r\n\r\n const preferredId = this.resolveInitialConfigId(this.configOptions);\r\n this.onConfigSelectionChange(preferredId);\r\n },\r\n error: () => {\r\n this.configLoadFailed = true;\r\n this.updateButton = false;\r\n this.alertService.error('Unable to load login settings. Please try again.');\r\n }\r\n });\r\n }\r\n\r\n /** Dropdown / programmatic selection handler. */\r\n onConfigSelectionChange(configId: number | null): void {\r\n if (configId == null || !Number.isFinite(Number(configId))) {\r\n return;\r\n }\r\n const nextId = Number(configId);\r\n if (nextId === this.loadedConfigId) {\r\n this.selectedConfigId = nextId;\r\n return;\r\n }\r\n if (this.configRegistrationForm?.dirty) {\r\n const discard = window.confirm(\r\n this.translate('You have unsaved changes. Discard them and switch organization?')\r\n );\r\n if (!discard) {\r\n this.selectedConfigId = this.loadedConfigId;\r\n this.cdRef.detectChanges();\r\n return;\r\n }\r\n }\r\n this.selectedConfigId = nextId;\r\n this.loadSelectedConfig();\r\n }\r\n\r\n /**\r\n * Loads the selected config_settings row by primary key.\r\n * Prefer list?id= so multi-portal orgs update the intended row.\r\n * Uses switchMap via configSelection$ so rapid dropdown changes cancel in-flight loads.\r\n */\r\n loadSelectedConfig(): void {\r\n if (this.selectedConfigId == null) {\r\n return;\r\n }\r\n this.configSelection$.next(this.selectedConfigId);\r\n }\r\n\r\n /** Kept for Cancel / template callers that previously reloaded by org. */\r\n getConfigById(): void {\r\n if (this.selectedConfigId != null) {\r\n this.loadSelectedConfig();\r\n return;\r\n }\r\n this.loadConfigOptions();\r\n }\r\n\r\n private applyConfigToForm(record: any): void {\r\n this.updateButton = true;\r\n this.selectedConfigId = Number(record.id);\r\n this.loadedConfigId = Number(record.id);\r\n const platformConfig = this.parseNestedConfig(record.platform_config);\r\n const footerConfig = this.parseNestedConfig(record.footer_config);\r\n this.editConfigSettings = {\r\n ...record,\r\n platform_config: platformConfig,\r\n footer_config: footerConfig\r\n };\r\n\r\n // Parse the year from API response\r\n let yearValue = null;\r\n if (footerConfig?.year) {\r\n const yearStr = footerConfig.year;\r\n yearValue = new Date(yearStr);\r\n if (isNaN(yearValue.getTime())) {\r\n const yearMatch = yearStr.match(/\\d{4}/);\r\n if (yearMatch) {\r\n yearValue = new Date(parseInt(yearMatch[0], 10), 0, 1);\r\n }\r\n }\r\n }\r\n\r\n // Only patch known controls. Spreading the API record also copies otelConfig/files\r\n // and nulls, which Angular will not map onto loginTemplate and the other fields.\r\n this.configRegistrationForm.patchValue({\r\n id: record.id,\r\n registration: this.toSwitchValue(record.registration),\r\n layout: record.layout != null ? record.layout : 1,\r\n role_for_registration: record.role_for_registration,\r\n template_for_registration: this.toOptionalNumber(record.template_for_registration),\r\n banner: this.toFormText(record.banner),\r\n organization_title: this.toFormText(record.organization_title),\r\n banner_title: this.toFormText(record.banner_title),\r\n logo: this.toFormText(record.logo),\r\n organizationid: this.toOrganizationId(record.organizationid, this.orgId),\r\n terms_condition_template: this.toFormText(record.terms_condition_template),\r\n userLabel: this.toFormText(record.userLabel),\r\n passwordLabel: this.toFormText(record.passwordLabel),\r\n labelColor: this.toFormText(record.labelColor),\r\n loginTemplate: this.toFormText(platformConfig.loginTemplate),\r\n landingTemplate: this.toFormText(platformConfig.landingTemplate) || 'landingTemplatepage1',\r\n enable_mfa: this.toSwitchValue(platformConfig.enable_mfa),\r\n forgotPassword: this.toSwitchValue(platformConfig.forgotPassword),\r\n termsAndCondition: this.toSwitchValue(platformConfig.termsAndCondition),\r\n enableRegistration: this.toSwitchValue(platformConfig.enableRegistration),\r\n enable_captcha: this.toSwitchValue(platformConfig.enable_captcha),\r\n enable_google_translate: this.toSwitchValue(platformConfig.enable_google_translate),\r\n enable_footer: this.toSwitchValue(platformConfig.enable_footer),\r\n enable_server_maintenance: this.toFormText(platformConfig.enable_server_maintenance),\r\n footer_version_template: this.toFormText(platformConfig.footer_version_template),\r\n forget_config: this.toFormText(platformConfig.forget_config),\r\n multifactor_template: this.toFormText(platformConfig.multifactor_template),\r\n language_config: this.toFormText(platformConfig.language_config) || 'en',\r\n loginButtonLabel: this.toFormText(platformConfig.loginButtonLabel),\r\n registerButtonLabel: this.toFormText(platformConfig.registerButtonLabel),\r\n registerButtonPrefix: this.toFormText(platformConfig.registerButtonPrefix),\r\n emailPlaceholder: this.toFormText(platformConfig.emailPlaceholder),\r\n passwordPlaceholder: this.toFormText(platformConfig.passwordPlaceholder),\r\n otp_digits: platformConfig.otp_digits,\r\n otp_expire_time: platformConfig.otp_expire_time,\r\n resend_otp_delay: platformConfig.resend_otp_delay,\r\n forget_expire_time: platformConfig.forget_expire_time,\r\n enableLoginAttemptThrottling: this.toSwitchValue(platformConfig.enableLoginAttemptThrottling),\r\n lockoutWindowMinutes: platformConfig.lockoutWindowMinutes,\r\n lockoutDurationMinutes: platformConfig.lockoutDurationMinutes,\r\n version: this.toFormText(footerConfig.version),\r\n content: this.toFormText(footerConfig.content),\r\n powered_by_logo: this.toFormText(footerConfig.powered_by_logo),\r\n showFooterWhere: this.toFormText(footerConfig.showFooterWhere),\r\n year: yearValue\r\n });\r\n this.thumbnailLogo = record.files?.logo || '';\r\n this.thumbnailBanner = record.files?.banner || '';\r\n this.thumbnailPoweredLogo = footerConfig?.powered_by_logo || '';\r\n this.onMfaValidation();\r\n this.onLoginAttemptThrottlingChange();\r\n // Keep REGISTRATION in sync for consumers (login/register/grid date formats, etc.).\r\n this.localstore.setItem('REGISTRATION', this.editConfigSettings);\r\n this.configRegistrationForm.markAsPristine();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n private normalizeConfigList(data: any): any[] {\r\n if (Array.isArray(data)) {\r\n return data;\r\n }\r\n if (data && typeof data === 'object') {\r\n return [data];\r\n }\r\n return [];\r\n }\r\n\r\n private normalizeConfigRecord(data: any): any | null {\r\n if (Array.isArray(data)) {\r\n return data[0] || null;\r\n }\r\n return data || null;\r\n }\r\n\r\n private resolveInitialConfigId(options: { id: number; organization_title: string }[]): number {\r\n const currentId = this.selectedConfigId != null\r\n ? options.find((o) => o.id === this.selectedConfigId)?.id\r\n : null;\r\n if (currentId != null) {\r\n return currentId;\r\n }\r\n // Match previous getConfigById / list behavior: newest row (highest id).\r\n return [...options].sort((a, b) => b.id - a.id)[0].id;\r\n }\r\n\r\n private extractCreatedConfigId(res: unknown): number | null {\r\n const payload = res as { data?: { id?: unknown }; id?: unknown } | null;\r\n const raw = payload?.data?.id ?? payload?.id;\r\n const parsed = Number(raw);\r\n return Number.isInteger(parsed) && parsed > 0 ? parsed : null;\r\n }\r\n\r\n private refreshConfigOptionLabel(configId: number, organizationTitle: string): void {\r\n const option = this.configOptions.find((item) => item.id === Number(configId));\r\n if (option && organizationTitle) {\r\n option.organization_title = organizationTitle;\r\n }\r\n }\r\n\r\n conditionValidation(): any {\r\n if (!this.configRegistrationForm.value.organization_title) {\r\n this.alertService.warn('Please fill the organization title');\r\n return false;\r\n } else if (!this.configRegistrationForm.value.logo) {\r\n this.alertService.warn('Please upload the logo');\r\n return false;\r\n } else if (!this.configRegistrationForm.value.organizationid) {\r\n this.alertService.warn('Please select the organization');\r\n return false;\r\n } else if (!this.configRegistrationForm.value.role_for_registration) {\r\n this.alertService.warn('Please select the role');\r\n return false;\r\n } \r\n \r\n return true;\r\n }\r\n\r\n onCheckboxChange(selectedKey: string) {\r\n this.configRegistrationForm.controls['loginTemplate'].setValue(selectedKey);\r\n }\r\n\r\n // onCheckboxChangeLanding(selectedKey: string) {\r\n // this.configRegistrationForm.controls['landingTemplate'].setValue(selectedKey);\r\n // }\r\n\r\n openPreview(imageUrl: string) {\r\n this.previewImageUrl = imageUrl;\r\n this.previewVisible = true;\r\n }\r\n\r\n previewLogin(): void {\r\n if (this.activeTab === 'home') {\r\n if (!this.conditionValidation()) return;\r\n const inputRequest = {\r\n // Preview HTML *ngIfs on ENABLE_LOGIN_TEMPLATE; empty loginTemplate leaves the dialog blank.\r\n ENABLE_LOGIN_TEMPLATE: this.configRegistrationForm.value.loginTemplate,\r\n BACKGROUND_IMAGE: this.thumbnailBanner || this.editConfigSettings?.files?.banner,\r\n BANNER: this.thumbnailLogo || this.editConfigSettings?.files?.logo,\r\n TITLE: this.configRegistrationForm.value.organization_title,\r\n BANNER_TITLE: this.configRegistrationForm.value.banner_title,\r\n ENABLE_CAPTCHA: this.configRegistrationForm.value.enable_captcha,\r\n ENABLE_TERMSANDCONDITION: this.configRegistrationForm.value.termsAndCondition,\r\n ENABLE_FORGOTPASSWORD: this.configRegistrationForm.value.forgotPassword,\r\n ENABLE_MFA: this.configRegistrationForm.value.enable_mfa,\r\n ENABLE_FOOTER: this.configRegistrationForm.value.enable_footer,\r\n FOOTER_VERSION_TEMPLATE: this.configRegistrationForm.value.footer_version_template,\r\n VERSION: this.configRegistrationForm.value.version,\r\n POWERED_BY_LOGO: this.configRegistrationForm.value.powered_by_logo,\r\n USER_LABEL: this.configRegistrationForm.value.userLabel,\r\n LOGIN_BUTTON_LABEL: this.configRegistrationForm.value.loginButtonLabel,\r\n REGISTER_BUTTON_LABEL: this.configRegistrationForm.value.registerButtonLabel,\r\n REGISTER_PREFIX_LABEL: this.configRegistrationForm.value.registerButtonPrefix,\r\n PASSWORD_LABEL: this.configRegistrationForm.value.passwordLabel,\r\n LABEL_COLOR: this.configRegistrationForm.value.labelColor,\r\n ENABLE_REGISTARTION: this.configRegistrationForm.value.enableRegistration,\r\n ENABLE_LANDING: this.configRegistrationForm.value.landingTemplate,\r\n ENABLE_SELECTION: this.configRegistrationForm.value.showFooterWhere,\r\n YEAR: this.currentYear // footer date pipe; missing YEAR can break the view\r\n };\r\n\r\n this.previewLoginInfo = inputRequest;\r\n this.showPreviewModal = true; // after payload is set\r\n }\r\n }\r\n\r\n scrollTemplates(direction: 'left' | 'right'): void {\r\n const element = this.scrollBox?.nativeElement;\r\n if (!element) return;\r\n const scrollAmount = 300;\r\n\r\n if (direction === 'left') {\r\n element.scrollLeft -= scrollAmount;\r\n } else {\r\n element.scrollLeft += scrollAmount;\r\n }\r\n }\r\n\r\n\r\n setActiveTab(tab: string) {\r\n this.activeTab = tab;\r\n }\r\n}\r\n\r\n\r\n","<app-alert></app-alert>\r\n<div class=\"tabSection clearfix\">\r\n <ul class=\"nav nav-tabs\" id=\"myTab\" role=\"tablist\">\r\n <li class=\"nav-item\" role=\"presentation\">\r\n <button type=\"button\" class=\"nav-link active\" id=\"home-tab\" role=\"tab\"\r\n aria-controls=\"home\" aria-selected=\"true\"\r\n (click)=\"setActiveTab('home')\">{{ translate('Login Configuration') }}</button>\r\n </li>\r\n </ul>\r\n\r\n\r\n <!-- Tab panes -->\r\n <div class=\"tab-content\" id=\"myTabContent\" [formGroup]=\"configRegistrationForm\">\r\n <div class=\"tab-pane fade show active p-3 border border-top-0\" id=\"home\" role=\"tabpanel\" aria-labelledby=\"home-tab\">\r\n <div class=\"clearfix\">\r\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\r\n <div class=\"clsIconBtn\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"w-20px h-20px\" aria-hidden=\"true\">\r\n <path d=\"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z\"></path>\r\n <path d=\"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2\"></path>\r\n <path d=\"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2\"></path>\r\n <path d=\"M10 6h4\"></path>\r\n <path d=\"M10 10h4\"></path>\r\n <path d=\"M10 14h4\"></path>\r\n <path d=\"M10 18h4\"></path>\r\n </svg>\r\n </div>\r\n <div class=\"clearfix\">\r\n <h4 class=\"clsHeaderTitle\">{{ translate('Organization Information') }}</h4>\r\n <p class=\"clsSubHeaderTitle\">{{ translate('Basic details about your organization') }}</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"p-25 border rounded-16\">\r\n <div class=\"row\" *ngIf=\"showOrgDropdown\">\r\n <div class=\"col-md-6 col-12 mb-3\">\r\n <label class=\"referral-form-labels\" for=\"organizationConfig\">{{ translate('Organization') }}\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n </label>\r\n <p-dropdown\r\n styleClass=\"w-100\"\r\n [options]=\"configOptions\"\r\n [placeholder]=\"translate('Select Organization')\"\r\n inputId=\"organizationConfig\"\r\n optionLabel=\"organization_title\"\r\n optionValue=\"id\"\r\n [(ngModel)]=\"selectedConfigId\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n (onChange)=\"onConfigSelectionChange($event.value)\"\r\n [filter]=\"true\"\r\n filterBy=\"organization_title\">\r\n </p-dropdown>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6 col-12\">\r\n <div class=\"narrative-textarea\">\r\n <label class=\"referral-form-labels\" for=\"organization_title\">{{ translate('Organization Title') }}\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n </label>\r\n <div class=\"position-relative\">\r\n @if (!isEditingOrganization) {\r\n <textarea id=\"organization_title\" class=\"form-control\" [value]=\"getOrganizationPlainText()\"\r\n (input)=\"updateOrganizationTitle($event)\" [placeholder]=\"translate('Enter Organization Title')\"\r\n aria-required=\"true\"\r\n style=\"padding-right: 35px; resize: vertical;\"></textarea>\r\n <i class=\"pi pi-pencil edit-field-icon\" role=\"button\" tabindex=\"0\"\r\n [attr.aria-label]=\"translate('Edit Organization Title')\"\r\n (click)=\"toggleEdit('organization')\"\r\n (keydown.enter)=\"toggleEdit('organization')\"\r\n (keydown.space)=\"$event.preventDefault(); toggleEdit('organization')\"></i>\r\n } @else {\r\n <quill-editor [modules]=\"quillModules\" formControlName=\"organization_title\"\r\n [styles]=\"{'min-height':'60px'}\" (onBlur)=\"toggleEdit('organization')\">\r\n </quill-editor>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 col-12\">\r\n <div class=\"narrative-textarea\">\r\n <label class=\"referral-form-labels\" for=\"banner_title\">{{ translate('Banner Title') }}\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n </label>\r\n <div class=\"position-relative\">\r\n @if (!isEditingBanner) {\r\n <textarea id=\"banner_title\" class=\"form-control\" [value]=\"getBannerPlainText()\"\r\n (input)=\"updateBannerTitle($event)\" [placeholder]=\"translate('Enter banner display text')\"\r\n aria-required=\"true\"\r\n style=\"padding-right: 35px; resize: vertical;\"></textarea>\r\n <i class=\"pi pi-pencil edit-field-icon\" role=\"button\" tabindex=\"0\"\r\n [attr.aria-label]=\"translate('Edit Banner Title')\"\r\n (click)=\"toggleEdit('banner')\"\r\n (keydown.enter)=\"toggleEdit('banner')\"\r\n (keydown.space)=\"$event.preventDefault(); toggleEdit('banner')\"></i>\r\n } @else {\r\n <quill-editor [modules]=\"quillModules\" formControlName=\"banner_title\" [styles]=\"{'min-height':'60px'}\"\r\n (onBlur)=\"toggleEdit('banner')\">\r\n </quill-editor>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"clearfix mt-25\">\r\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\r\n <div class=\"clsIconBtn\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"w-20px h-20px\" aria-hidden=\"true\">\r\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"></rect>\r\n <circle cx=\"9\" cy=\"9\" r=\"2\"></circle>\r\n <path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"></path>\r\n </svg>\r\n </div>\r\n <div class=\"clearfix\">\r\n <h4 class=\"clsHeaderTitle\">{{ translate('Brand Assets') }}</h4>\r\n <p class=\"clsSubHeaderTitle\">{{ translate('Upload your brand images and logos') }}</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"p-25 border rounded-16\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-4 col-md-6 col-12\">\r\n <label class=\"referral-form-labels\" for=\"upload_banner\">{{ translate('Banner Image') }}\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n </label>\r\n <div class=\"clsUploadBannerCard clsBrandAssetsCards\">\r\n <div class=\"clsBannerImgSec\">\r\n <div class=\"clsBannerImg\">\r\n <img [src]=\"thumbnailBanner || 'assets/images/sample-banner.png'\"\r\n [attr.alt]=\"translate('Banner image preview')\" />\r\n </div>\r\n\r\n <div class=\"clsImgOverlay\" role=\"button\" tabindex=\"0\"\r\n [attr.aria-label]=\"translate('Preview Banner')\" (click)=\"showUploadedBanner()\"\r\n (keydown.enter)=\"showUploadedBanner()\"\r\n (keydown.space)=\"$event.preventDefault(); showUploadedBanner()\">\r\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\r\n </div>\r\n\r\n <p-dialog [header]=\"translate('Banner Preview')\" [(visible)]=\"bannerVisible\" [modal]=\"true\">\r\n <div class=\"text-center\">\r\n <img class=\"img-fluid\" [attr.src]=\"thumbnailBanner || 'assets/images/sample-banner.png'\"\r\n [attr.alt]=\"translate('Banner Preview')\" />\r\n </div>\r\n </p-dialog>\r\n\r\n <div class=\"clsUploadBtnIcon\">\r\n <label for=\"upload_banner\" class=\"clsUploadIcon cursor-pointer mb-0\">\r\n <i class=\"pi pi-upload\" aria-hidden=\"true\"></i>\r\n <span class=\"sr-only\">{{ translate('Upload Banner') }}</span>\r\n </label>\r\n <input type=\"file\" id=\"upload_banner\" style=\"display: none\"\r\n (change)=\"handleFileInputBanner($event)\" />\r\n </div>\r\n </div>\r\n <div class=\"clsUploadBtnSec text-center\">\r\n <button type=\"button\" class=\"clsUploadBtn mb-0\" (click)=\"triggerUpload('upload_banner')\">\r\n {{ translate('Replace Banner') }}\r\n </button>\r\n <p class=\"mb-0 mt-1\"><small>{{ translate('Image size max 1MB (1600 x 900 px)') }}</small></p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-4 col-md-6 col-12\">\r\n <label class=\"referral-form-labels\" for=\"upload_logo\">{{ translate('Company Logo') }}\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n </label>\r\n <div class=\"clsUploadLogoCard clsBrandAssetsCards\">\r\n <div class=\"clsLogoImgSec\">\r\n <div class=\"clsLogoImg\">\r\n <img [attr.src]=\"thumbnailLogo || 'assets/images/logo_home.png'\"\r\n [attr.alt]=\"translate('Company logo preview')\" />\r\n </div>\r\n\r\n <div class=\"clsImgOverlay\" role=\"button\" tabindex=\"0\"\r\n [attr.aria-label]=\"translate('Preview Logo')\" (click)=\"showUploadedLogo()\"\r\n (keydown.enter)=\"showUploadedLogo()\"\r\n (keydown.space)=\"$event.preventDefault(); showUploadedLogo()\">\r\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\r\n </div>\r\n\r\n <p-dialog [header]=\"translate('Logo Preview')\" [(visible)]=\"visible\" [modal]=\"true\" [style]=\"{ width: '600px' }\">\r\n <div class=\"text-center\">\r\n <img class=\"img-fluid\" [src]=\"thumbnailLogo || 'assets/images/logo_home.png'\"\r\n [attr.alt]=\"translate('Logo Preview')\" />\r\n </div>\r\n </p-dialog>\r\n\r\n <div class=\"clsUploadBtnIcon\">\r\n <label for=\"upload_logo\" class=\"clsUploadIcon cursor-pointer mb-0\">\r\n <i class=\"pi pi-upload\" aria-hidden=\"true\"></i>\r\n <span class=\"sr-only\">{{ translate('Upload Logo') }}</span>\r\n </label>\r\n <input type=\"file\" id=\"upload_logo\" style=\"display: none\"\r\n (change)=\"handleFileInput($event)\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"clsUploadBtnSec text-center\">\r\n <button type=\"button\" class=\"clsUploadBtn mb-0\" (click)=\"triggerUpload('upload_logo')\">\r\n {{ translate('Replace Logo') }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-4 col-md-6 col-12\">\r\n <label for=\"labelColor\" class=\"referral-form-labels\">{{ translate('Pick Label Color') }}\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n </label>\r\n <div class=\"clsColorPickCard clsBrandAssetsCards\">\r\n <div class=\"clearfix\">\r\n <label class=\"intake-form-labels\" for=\"userLabel\"\r\n [style.color]=\"configRegistrationForm.get('labelColor')?.value\">\r\n {{ translate('Login Label - Username/Email') }}\r\n </label>\r\n <input-empower id=\"userLabel\" class=\"form-control\" type=\"text\"\r\n [placeholder]=\"translate('Enter Label Name')\" formControlName=\"userLabel\"></input-empower>\r\n </div>\r\n <div class=\"clearfix mt-10\">\r\n <label class=\"intake-form-labels\" for=\"emailPlaceholder\"\r\n [style.color]=\"configRegistrationForm.get('labelColor')?.value\">\r\n {{ translate('Login Label Placeholder - Email') }}\r\n </label>\r\n <input-empower id=\"emailPlaceholder\" class=\"form-control\" type=\"text\"\r\n [placeholder]=\"translate('Enter Email Placeholder')\" formControlName=\"emailPlaceholder\"></input-empower>\r\n </div>\r\n <div class=\"clearfix mt-10\">\r\n <label class=\"intake-form-labels\" for=\"passwordLabel\"\r\n [style.color]=\"configRegistrationForm.get('labelColor')?.value\">\r\n {{ translate('Login Label - Password') }}\r\n </label>\r\n <input-empower id=\"passwordLabel\" class=\"form-control\" type=\"text\"\r\n [placeholder]=\"translate('Enter Password Label')\"\r\n formControlName=\"passwordLabel\"></input-empower>\r\n </div>\r\n <div class=\"clearfix mt-10\">\r\n <label class=\"intake-form-labels\" for=\"passwordPlaceholder\"\r\n [style.color]=\"configRegistrationForm.get('labelColor')?.value\">\r\n {{ translate('Login Label Placeholder Password') }}\r\n </label>\r\n <input-empower id=\"passwordPlaceholder\" class=\"form-control\" type=\"text\"\r\n [placeholder]=\"translate('Enter Password Placeholder')\"\r\n formControlName=\"passwordPlaceholder\"></input-empower>\r\n </div>\r\n <div class=\"clearfix mt-10\">\r\n <label class=\"intake-form-labels\" for=\"loginButtonLabel\"\r\n [style.color]=\"configRegistrationForm.get('labelColor')?.value\">\r\n {{ translate('Login Button Label Name') }}\r\n </label>\r\n <input-empower id=\"loginButtonLabel\" class=\"form-control\" type=\"text\"\r\n [placeholder]=\"translate('Enter Login Button Label')\"\r\n formControlName=\"loginButtonLabel\"></input-empower>\r\n </div>\r\n <div class=\"clearfix mt-10\">\r\n <label class=\"intake-form-labels\" for=\"registerButtonPrefix\"\r\n [style.color]=\"configRegistrationForm.get('labelColor')?.value\">\r\n {{ translate('Register Button Prefix') }}\r\n </label>\r\n <input-empower id=\"registerButtonPrefix\" class=\"form-control\" type=\"text\"\r\n [placeholder]=\"translate('Enter Register Prefix')\"\r\n formControlName=\"registerButtonPrefix\"></input-empower>\r\n </div>\r\n <div class=\"clearfix mt-10\">\r\n <label class=\"intake-form-labels\" for=\"registerButtonLabel\"\r\n [style.color]=\"configRegistrationForm.get('labelColor')?.value\">\r\n {{ translate('Register Button Label Name') }}\r\n </label>\r\n <input-empower id=\"registerButtonLabel\" class=\"form-control\" type=\"text\"\r\n [placeholder]=\"translate('Enter Register Button Label')\"\r\n formControlName=\"registerButtonLabel\"></input-empower>\r\n </div>\r\n <div class=\"clearfix mt-2\">\r\n <input type=\"color\" id=\"labelColor\" formControlName=\"labelColor\"\r\n [attr.aria-label]=\"translate('Pick Label Color')\" class=\"form-control w-100px h-30px p-0\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"clearfix mt-25\">\r\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\r\n <div class=\"clsIconBtn\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"w-20px h-20px\" aria-hidden=\"true\">\r\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"></rect>\r\n <path d=\"M3 9h18\"></path>\r\n <path d=\"M9 21V9\"></path>\r\n </svg>\r\n </div>\r\n <div class=\"clearfix\">\r\n <h4 class=\"clsHeaderTitle\">{{ translate('Login Page Templates') }}</h4>\r\n <p class=\"clsSubHeaderTitle\">{{ translate('Choose your preferred login page layout') }}</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"p-25 border rounded-16\">\r\n <div class=\"clsScrollWrapper\">\r\n <button class=\"clsScrollBtn clsScrollBtnLeft\" [attr.aria-label]=\"translate('Scroll tabs left')\"\r\n (click)=\"scrollTabs('login', loginScrollBox, -200)\"\r\n [disabled]=\"isAtStart['login']\">\r\n <span class=\"material-symbols-outlined\" aria-hidden=\"true\">chevron_left</span>\r\n </button>\r\n\r\n <!-- Scrollable Template Section -->\r\n <div class=\"clsScrollContainer\" #loginScrollBox>\r\n <div class=\"clsScrollTemplatesLists row m-0\">\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12 px-2\">\r\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\r\n [class.active]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateRight'\"\r\n [attr.aria-pressed]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateRight'\"\r\n (click)=\"selectLoginTemplate('loginTemplateRight')\"\r\n (keydown.enter)=\"selectLoginTemplate('loginTemplateRight')\"\r\n (keydown.space)=\"$event.preventDefault(); selectLoginTemplate('loginTemplateRight')\">\r\n <div class=\"clsTemplatesImg\"\r\n (click)=\"openPreview('../../../../assets/images/base-product/login-right.png'); $event.stopPropagation()\">\r\n <img src=\"../../../../assets/images/base-product/login-right.png\" alt=\"Login Right\" />\r\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\r\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Login Right') }}</h4>\r\n @if (configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateRight') {\r\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\r\n }\r\n </div>\r\n <p class=\"clsTextLine2 mb-0\">{{ translate('Form positioned on the right side') }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12 px-2\">\r\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\r\n [class.active]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateLeft'\"\r\n [attr.aria-pressed]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateLeft'\"\r\n (click)=\"selectLoginTemplate('loginTemplateLeft')\"\r\n (keydown.enter)=\"selectLoginTemplate('loginTemplateLeft')\"\r\n (keydown.space)=\"$event.preventDefault(); selectLoginTemplate('loginTemplateLeft')\">\r\n <div class=\"clsTemplatesImg\"\r\n (click)=\"openPreview('../../../../assets/images/base-product/login-left.png'); $event.stopPropagation()\">\r\n <img src=\"../../../../assets/images/base-product/login-left.png\" alt=\"Login Left\" />\r\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\r\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Login Left') }}</h4>\r\n @if (configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateLeft') {\r\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\r\n }\r\n </div>\r\n <p class=\"clsTextLine2 mb-0\">{{ translate('Form positioned on the left side') }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12 px-2\">\r\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\r\n [class.active]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateCenter'\"\r\n [attr.aria-pressed]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateCenter'\"\r\n (click)=\"selectLoginTemplate('loginTemplateCenter')\"\r\n (keydown.enter)=\"selectLoginTemplate('loginTemplateCenter')\"\r\n (keydown.space)=\"$event.preventDefault(); selectLoginTemplate('loginTemplateCenter')\">\r\n <div class=\"clsTemplatesImg\"\r\n (click)=\"openPreview('../../../../assets/images/base-product/login-center.png'); $event.stopPropagation()\">\r\n <img src=\"../../../../assets/images/base-product/login-center.png\" alt=\"Login Center\" />\r\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\r\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Login Center') }}</h4>\r\n @if (configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateCenter') {\r\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\r\n }\r\n </div>\r\n <p class=\"clsTextLine2 mb-0\">{{ translate('Form centered on the page') }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12 px-2\">\r\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\r\n [class.active]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateBottom'\"\r\n [attr.aria-pressed]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateBottom'\"\r\n (click)=\"selectLoginTemplate('loginTemplateBottom')\"\r\n (keydown.enter)=\"selectLoginTemplate('loginTemplateBottom')\"\r\n (keydown.space)=\"$event.preventDefault(); selectLoginTemplate('loginTemplateBottom')\">\r\n <div class=\"clsTemplatesImg\"\r\n (click)=\"openPreview('../../../../assets/images/base-product/login-bottom.png'); $event.stopPropagation()\">\r\n <img src=\"../../../../assets/images/base-product/login-bottom.png\" alt=\"Login Bottom\" />\r\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\r\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Login Bottom') }}</h4>\r\n @if (configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateBottom') {\r\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\r\n }\r\n </div>\r\n <p class=\"clsTextLine2 mb-0\">{{ translate('Form positioned on the Bottom side') }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12 px-2\">\r\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\r\n [class.active]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateCurve'\"\r\n [attr.aria-pressed]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateCurve'\"\r\n (click)=\"selectLoginTemplate('loginTemplateCurve')\"\r\n (keydown.enter)=\"selectLoginTemplate('loginTemplateCurve')\"\r\n (keydown.space)=\"$event.preventDefault(); selectLoginTemplate('loginTemplateCurve')\">\r\n <div class=\"clsTemplatesImg\"\r\n (click)=\"openPreview('../../../../assets/images/base-product/login-curve.png'); $event.stopPropagation()\">\r\n <img src=\"../../../../assets/images/base-product/login-curve.png\" alt=\"Login Radius\" />\r\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\r\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Login Radius') }}</h4>\r\n @if (configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateCurve') {\r\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\r\n }\r\n </div>\r\n <p class=\"clsTextLine2 mb-0\">{{ translate('Banner on the left side, curve') }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12 px-2\">\r\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\r\n [class.active]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateHideShow'\"\r\n [attr.aria-pressed]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateHideShow'\"\r\n (click)=\"selectLoginTemplate('loginTemplateHideShow')\"\r\n (keydown.enter)=\"selectLoginTemplate('loginTemplateHideShow')\"\r\n (keydown.space)=\"$event.preventDefault(); selectLoginTemplate('loginTemplateHideShow')\">\r\n <div class=\"clsTemplatesImg\"\r\n (click)=\"openPreview('../../../../assets/images/base-product/login-hide-ui.png'); $event.stopPropagation()\">\r\n <img src=\"../../../../assets/images/base-product/login-hide-ui.png\"\r\n alt=\"Login form hide & Show\" />\r\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\r\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Login form hide & Show') }}</h4>\r\n @if (configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateHideShow') {\r\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\r\n }\r\n </div>\r\n <p class=\"clsTextLine2 mb-0\">{{ translate('Form on the hide & Show') }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button class=\"clsScrollBtn clsScrollBtnRight\" [attr.aria-label]=\"translate('Scroll tabs right')\"\r\n (click)=\"scrollTabs('login', loginScrollBox, 200)\"\r\n [disabled]=\"isAtEnd['login']\">\r\n <span class=\"material-symbols-outlined\" aria-hidden=\"true\">chevron_right</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"clearfix mt-25\">\r\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\r\n <div class=\"clsIconBtn\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"w-20px h-20px\" aria-hidden=\"true\">\r\n <rect width=\"20\" height=\"14\" x=\"2\" y=\"3\" rx=\"2\"></rect>\r\n <line x1=\"8\" x2=\"16\" y1=\"21\" y2=\"21\"></line>\r\n <line x1=\"12\" x2=\"12\" y1=\"17\" y2=\"21\"></line>\r\n </svg>\r\n </div>\r\n <div class=\"clearfix\">\r\n <h4 class=\"clsHeaderTitle\">{{ translate('Footer Templates') }}</h4>\r\n <p class=\"clsSubHeaderTitle\">{{ translate('Footer layout options') }}</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"p-25 border rounded-16\">\r\n <div class=\"clsScrollTemplatesLists row\">\r\n <div class=\"col-md-6 col-12\">\r\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\r\n [class.active]=\"configRegistrationForm.get('footer_version_template')?.value === 'versionTemplateRight'\"\r\n [attr.aria-pressed]=\"configRegistrationForm.get('footer_version_template')?.value === 'versionTemplateRight'\"\r\n (click)=\"selectFooterTemplate('versionTemplateRight')\"\r\n (keydown.enter)=\"selectFooterTemplate('versionTemplateRight')\"\r\n (keydown.space)=\"$event.preventDefault(); selectFooterTemplate('versionTemplateRight')\">\r\n <div class=\"clsTemplatesImg align-items-center d-flex justify-content-center h-70px\"\r\n (click)=\"openPreview('../../../../assets/images/base-product/footer-left.png'); $event.stopPropagation()\">\r\n <div class=\"d-flex justify-content-between p-10 w-100\">\r\n <strong class=\"text-12\">{{ translate('Stable') }} Version 2.5</strong>\r\n <strong class=\"text-12\">\r\n &copy; {{ currentYear }} {{ translate('Powered by') }}\r\n <span class=\"w-100px d-inline-block\">\r\n <img src=\"assets/images/cardinality-logo_text.svg\" alt=\"cardy\">\r\n </span>\r\n </strong>\r\n </div>\r\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\r\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Footer Left & Right') }}</h4>\r\n @if (configRegistrationForm.get('footer_version_template')?.value === 'versionTemplateRight') {\r\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\r\n }\r\n </div>\r\n <p class=\"clsTextLine2 mb-0\"> {{ translate('Version left, copyright and powered by text right') }} </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-6 col-12\">\r\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\r\n [class.active]=\"configRegistrationForm.get('footer_version_template')?.value === 'versionTemplateCenter'\"\r\n [attr.aria-pressed]=\"configRegistrationForm.get('footer_version_template')?.value === 'versionTemplateCenter'\"\r\n (click)=\"selectFooterTemplate('versionTemplateCenter')\"\r\n (keydown.enter)=\"selectFooterTemplate('versionTemplateCenter')\"\r\n (keydown.space)=\"$event.preventDefault(); selectFooterTemplate('versionTemplateCenter')\">\r\n <div class=\"clsTemplatesImg align-items-center d-flex justify-content-center h-70px\"\r\n (click)=\"openPreview('../../../../assets/images/base-product/footer-center.png'); $event.stopPropagation()\">\r\n <div class=\"d-flex justify-content-center p-10 w-100 gap-2\">\r\n <strong class=\"text-12\">{{ translate('Stable') }} Version 2.5</strong>\r\n <strong class=\"text-12\">&copy; {{ currentYear }}</strong>\r\n <strong class=\"text-12\">\r\n {{ translate('Powered by') }}\r\n <span class=\"w-100px d-inline-block ms-1\">\r\n <img src=\"assets/images/cardinality-logo_text.svg\" alt=\"cardy\">\r\n </span>\r\n </strong>\r\n </div>\r\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\r\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Footer Center') }}</h4>\r\n @if (configRegistrationForm.get('footer_version_template')?.value === 'versionTemplateCenter') {\r\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\r\n }\r\n </div>\r\n <p class=\"clsTextLine2 mb-0\"> {{ translate('All footer text centered in single line') }} </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row row-gap-15 pt-15\">\r\n <div class=\"col-lg-4 col-sm-6 col-12\">\r\n <label class=\"intake-form-labels\" for=\"organizationName\">{{ translate('Right') }}</label>\r\n <input-empower class=\"form-control\" type=\"text\" [placeholder]=\"translate('Version')\" id=\"organizationName\" autocomplete=\"off\"\r\n formControlName=\"version\"></input-empower>\r\n </div>\r\n <div class=\"col-lg-4 col-sm-6 col-12\">\r\n <label class=\"intake-form-labels\" for=\"content\">{{ translate('Left') }}</label>\r\n <input-empower class=\"form-control\" type=\"text\" [placeholder]=\"translate('Content')\" id=\"content\" autocomplete=\"off\"\r\n formControlName=\"content\"></input-empower>\r\n </div>\r\n <div class=\"col-lg-4 col-sm-6 col-12\">\r\n <fieldset class=\"border-0 p-0 m-0\">\r\n <legend class=\"intake-form-labels mb-1\" id=\"show_footer_legend\">{{ translate('Show Footer') }}</legend>\r\n <div class=\"d-flex gap-15\" role=\"group\" aria-labelledby=\"show_footer_legend\">\r\n <div class=\"d-flex align-items-center\">\r\n <p-radioButton name=\"showFooterWhere\" formControlName=\"showFooterWhere\" value=\"loginOnly\"\r\n inputId=\"loginOnly\"></p-radioButton>\r\n <label for=\"loginOnly\" class=\"ml-2 mb-0\">{{ translate('Login Only') }}</label>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center\">\r\n <p-radioButton name=\"showFooterWhere\" formControlName=\"showFooterWhere\" value=\"pageOnly\"\r\n inputId=\"pageOnly\"></p-radioButton>\r\n <label for=\"pageOnly\" class=\"ml-2 mb-0\">{{ translate('Page Only') }}</label>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center\">\r\n <p-radioButton name=\"showFooterWhere\" formControlName=\"showFooterWhere\" value=\"both\"\r\n inputId=\"both\"></p-radioButton>\r\n <label for=\"both\" class=\"ml-2 mb-0\">{{ translate('Both') }}</label>\r\n </div>\r\n </div>\r\n </fieldset>\r\n </div>\r\n <div class=\"col-lg-4 col-sm-6 col-12\">\r\n <label class=\"referral-form-labels\" for=\"uploadPoweredBy\">{{ translate('Powered by Footer Logo') }}</label>\r\n <div class=\"clsUploadLogoCard clsBrandAssetsCards\">\r\n <div class=\"clsLogoImgSec\">\r\n <div class=\"clsLogoImg\">\r\n <img [attr.src]=\"thumbnailPoweredLogo || 'assets/images/logo_home.png'\"\r\n [attr.alt]=\"translate('Powered by footer logo preview')\" />\r\n </div>\r\n\r\n <div class=\"clsImgOverlay\" role=\"button\" tabindex=\"0\"\r\n [attr.aria-label]=\"translate('Preview Footer Logo')\" (click)=\"showUploadedFooterLogo()\"\r\n (keydown.enter)=\"showUploadedFooterLogo()\"\r\n (keydown.space)=\"$event.preventDefault(); showUploadedFooterLogo()\">\r\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\r\n </div>\r\n\r\n <p-dialog [header]=\"translate('Logo Preview')\" [(visible)]=\"logoFooterVisible\" [modal]=\"true\"\r\n [style]=\"{ width: '600px' }\">\r\n <div class=\"text-center\">\r\n <img class=\"img-fluid\" [src]=\"thumbnailPoweredLogo || 'assets/images/logo_home.png'\"\r\n [attr.alt]=\"translate('Powered by footer logo preview')\" />\r\n </div>\r\n </p-dialog>\r\n\r\n <div class=\"clsUploadBtnIcon\">\r\n <label for=\"uploadPoweredBy\" class=\"clsUploadIcon cursor-pointer mb-0\">\r\n <i class=\"pi pi-upload\" aria-hidden=\"true\"></i>\r\n <span class=\"sr-only\">{{ translate('Upload Powered By Logo') }}</span>\r\n </label>\r\n <input type=\"file\" id=\"uploadPoweredBy\" style=\"display: none\"\r\n (change)=\"handleFileFooterInput($event)\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"clsUploadBtnSec text-center\">\r\n <button type=\"button\" class=\"clsUploadBtn mb-0\" (click)=\"triggerUpload('uploadPoweredBy')\">\r\n {{ translate('Replace Logo') }}\r\n </button>\r\n <p class=\"mb-0 mt-1\"><small>{{ translate('Image size max 120kb (400 x 60 px)') }}</small></p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"clearfix mt-25\">\r\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\r\n <div class=\"clsIconBtn\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"w-20px h-20px\" aria-hidden=\"true\">\r\n <path\r\n d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\">\r\n </path>\r\n </svg>\r\n </div>\r\n <div class=\"clearfix\">\r\n <h4 class=\"clsHeaderTitle\">Server Maintenance Templates</h4>\r\n <p class=\"clsSubHeaderTitle\">Maintenance page layouts</p>\r\n </div>\r\n </div> -->\r\n\r\n <!-- <div class=\"p-25 border rounded-16\">\r\n <div class=\"clsScrollTemplatesLists row\">\r\n <div class=\"col-md-6 col-12\">\r\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\r\n [class.active]=\"configRegistrationForm.get('enable_server_maintenance')?.value === 'serverTemplateOne'\"\r\n [attr.aria-pressed]=\"configRegistrationForm.get('enable_server_maintenance')?.value === 'serverTemplateOne'\"\r\n (click)=\"selectServerTemplate('serverTemplateOne')\"\r\n (keydown.enter)=\"selectServerTemplate('serverTemplateOne')\"\r\n (keydown.space)=\"$event.preventDefault(); selectServerTemplate('serverTemplateOne')\">\r\n <div class=\"clsTemplatesImg\"\r\n (click)=\"openPreview('../../../../assets/images/base-product/server-1.png'); $event.stopPropagation()\">\r\n <img src=\"../../../../assets/images/base-product/server-1.png\" alt=\"Server Maintenance\" />\r\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\r\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <h4 class=\"clsTextLine1 mb-0\">Server Maintenance</h4>\r\n @if (configRegistrationForm.get('enable_server_maintenance')?.value === 'serverTemplateOne') {\r\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 col-12\">\r\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\r\n [class.active]=\"configRegistrationForm.get('enable_server_maintenance')?.value === 'serverTemplateTwo'\"\r\n [attr.aria-pressed]=\"configRegistrationForm.get('enable_server_maintenance')?.value === 'serverTemplateTwo'\"\r\n (click)=\"selectServerTemplate('serverTemplateTwo')\"\r\n (keydown.enter)=\"selectServerTemplate('serverTemplateTwo')\"\r\n (keydown.space)=\"$event.preventDefault(); selectServerTemplate('serverTemplateTwo')\">\r\n <div class=\"clsTemplatesImg\"\r\n (click)=\"openPreview('../../../../assets/images/base-product/server-2.png'); $event.stopPropagation()\">\r\n <img src=\"../../../../assets/images/base-product/server-2.png\" alt=\"Scheduled Maintenance\">\r\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\r\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <h4 class=\"clsTextLine1 mb-0\">Scheduled Maintenance</h4>\r\n @if (configRegistrationForm.get('enable_server_maintenance')?.value === 'serverTemplateTwo') {\r\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n </div>\r\n\r\n <div class=\"clearfix mt-25\">\r\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\r\n <div class=\"clsIconBtn\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"w-20px h-20px\" aria-hidden=\"true\">\r\n <path d=\"M20 7h-9\"></path>\r\n <path d=\"M14 17H5\"></path>\r\n <circle cx=\"17\" cy=\"17\" r=\"3\"></circle>\r\n <circle cx=\"7\" cy=\"7\" r=\"3\"></circle>\r\n </svg>\r\n </div>\r\n <div class=\"clearfix\">\r\n <h4 class=\"clsHeaderTitle\">{{ translate('Login Preferences') }}</h4>\r\n <p class=\"clsSubHeaderTitle\">{{ translate('Configure available authentication features') }}</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"p-25 border rounded-16\">\r\n <div class=\"row clsPreferencesList row-gap-15\">\r\n <div class=\"col-lg-4 col-sm-6 col-12\">\r\n <div class=\"clsPreferencesListItem\">\r\n <div class=\"flex-fill\">\r\n <label class=\"mb-0 cursor-pointer\" for=\"fp\">{{ translate('Forgot Password') }}</label>\r\n <div class=\"mt-1 d-flex align-items-center gap-5\">\r\n <div class=\"clsStatusDot\" [ngClass]=\"{\r\n 'clsEnabledDot': configRegistrationForm.get('forgotPassword')?.value,\r\n 'clsDisabledDot': !configRegistrationForm.get('forgotPassword')?.value\r\n }\">\r\n </div>\r\n <span class=\"clsStatusTxt\">\r\n {{ configRegistrationForm.get('forgotPassword')?.value ? translate('Enabled') : translate('Disabled') }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\">\r\n <p-inputSwitch inputId=\"fp\" formControlName=\"forgotPassword\">\r\n </p-inputSwitch>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-4 col-sm-6 col-12\">\r\n <div class=\"clsPreferencesListItem\">\r\n <div class=\"flex-fill\">\r\n <label class=\"mb-0 cursor-pointer\" for=\"tac\">{{ translate('Terms & conditions') }}</label>\r\n <div class=\"mt-1 d-flex align-items-center gap-5\">\r\n <div class=\"clsStatusDot\" [ngClass]=\"{\r\n 'clsEnabledDot': configRegistrationForm.get('termsAndCondition')?.value,\r\n 'clsDisabledDot': !configRegistrationForm.get('termsAndCondition')?.value\r\n }\">\r\n </div>\r\n <span class=\"clsStatusTxt\">\r\n {{ configRegistrationForm.get('termsAndCondition')?.value ? translate('Enabled') : translate('Disabled') }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\">\r\n <p-inputSwitch inputId=\"tac\" formControlName=\"termsAndCondition\">\r\n </p-inputSwitch>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-4 col-sm-6 col-12\">\r\n <div class=\"clsPreferencesListItem\">\r\n <div class=\"flex-fill\">\r\n <label class=\"mb-0 cursor-pointer\" for=\"enableReg\">{{ translate('Enable Registration') }}</label>\r\n <div class=\"mt-1 d-flex align-items-center gap-5\">\r\n <div class=\"clsStatusDot\" [ngClass]=\"{\r\n 'clsEnabledDot': configRegistrationForm.get('enableRegistration')?.value,\r\n 'clsDisabledDot': !configRegistrationForm.get('enableRegistration')?.value\r\n }\">\r\n </div>\r\n <span class=\"clsStatusTxt\">\r\n {{ configRegistrationForm.get('enableRegistration')?.value ? translate('Enabled') : translate('Disabled') }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\">\r\n <p-inputSwitch inputId=\"enableReg\" formControlName=\"enableRegistration\">\r\n </p-inputSwitch>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-4 col-sm-6 col-12\">\r\n <div class=\"clsPreferencesListItem\">\r\n <div class=\"flex-fill\">\r\n <label class=\"mb-0 cursor-pointer\" for=\"enable_mfaId\">{{ translate('Enable Multifactor Authentication') }}</label>\r\n <div class=\"mt-1 d-flex align-items-center gap-5\">\r\n <div class=\"clsStatusDot\" [ngClass]=\"{\r\n 'clsEnabledDot': configRegistrationForm.get('enable_mfa')?.value,\r\n 'clsDisabledDot': !configRegistrationForm.get('enable_mfa')?.value\r\n }\">\r\n </div>\r\n <span class=\"clsStatusTxt\">\r\n {{ configRegistrationForm.get('enable_mfa')?.value ? translate('Enabled') : translate('Disabled') }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\">\r\n <p-inputSwitch inputId=\"enable_mfaId\" formControlName=\"enable_mfa\" (onChange)=\"onMfaValidation()\">\r\n </p-inputSwitch>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"col-lg-4 col-sm-6 col-12\">\r\n <div class=\"clsPreferencesListItem\">\r\n <div class=\"flex-fill\">\r\n <label class=\"mb-0 cursor-pointer\" for=\"enable_captchaId\">Enable Captcha</label>\r\n <div class=\"mt-1 d-flex align-items-center gap-5\">\r\n <div class=\"clsStatusDot\" [ngClass]=\"{\r\n 'clsEnabledDot': configRegistrationForm.get('enable_captcha')?.value,\r\n 'clsDisabledDot': !configRegistrationForm.get('enable_captcha')?.value\r\n }\">\r\n </div>\r\n <span class=\"clsStatusTxt\">\r\n {{ configRegistrationForm.get('enable_captcha')?.value ? 'Enabled' : 'Disabled' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\">\r\n <p-inputSwitch inputId=\"enable_captchaId\" formControlName=\"enable_captcha\">\r\n </p-inputSwitch>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n <div class=\"col-lg-4 col-sm-6 col-12\">\r\n <div class=\"clsPreferencesListItem\">\r\n <div class=\"flex-fill\">\r\n <label class=\"mb-0 cursor-pointer\" for=\"enable_footerId\">{{ translate('Enable Footer') }}</label>\r\n <div class=\"mt-1 d-flex align-items-center gap-5\">\r\n <div class=\"clsStatusDot\" [ngClass]=\"{\r\n 'clsEnabledDot': configRegistrationForm.get('enable_footer')?.value,\r\n 'clsDisabledDot': !configRegistrationForm.get('enable_footer')?.value\r\n }\">\r\n </div>\r\n <span class=\"clsStatusTxt\">\r\n {{ configRegistrationForm.get('enable_footer')?.value ? translate('Enabled') : translate('Disabled') }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\">\r\n <p-inputSwitch inputId=\"enable_footerId\" formControlName=\"enable_footer\">\r\n </p-inputSwitch>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"col-lg-4 col-sm-6 col-12\">\r\n <div class=\"clsPreferencesListItem\">\r\n <div class=\"flex-fill\">\r\n <label class=\"mb-0 cursor-pointer\" for=\"google_translateId\">Enable Google Translate</label>\r\n <div class=\"mt-1 d-flex align-items-center gap-5\">\r\n <div class=\"clsStatusDot\" [ngClass]=\"{\r\n 'clsEnabledDot': configRegistrationForm.get('enable_google_translate')?.value,\r\n 'clsDisabledDot': !configRegistrationForm.get('enable_google_translate')?.value\r\n }\">\r\n </div>\r\n <span class=\"clsStatusTxt\">\r\n {{ configRegistrationForm.get('enable_google_translate')?.value ? 'Enabled' : 'Disabled' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\">\r\n <p-inputSwitch inputId=\"google_translateId\" formControlName=\"enable_google_translate\">\r\n </p-inputSwitch>\r\n </div>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"clearfix mt-25\">\r\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\r\n <div class=\"clsIconBtn\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"w-20px h-20px\" aria-hidden=\"true\">\r\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\"></path>\r\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\"></path>\r\n <path d=\"M10 9H8\"></path>\r\n <path d=\"M16 13H8\"></path>\r\n <path d=\"M16 17H8\"></path>\r\n </svg>\r\n </div>\r\n <div class=\"clearfix\">\r\n <h4 class=\"clsHeaderTitle\">{{ translate('Terms & conditions') }}</h4>\r\n <p class=\"clsSubHeaderTitle\">{{ translate('Legal agreements and compliance text') }} </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"p-25 border rounded-16\">\r\n <div class=\"narrative-textarea \">\r\n <span class=\"referral-form-labels\" id=\"terms_condition_template-label\">{{ translate('Legal Description') }}\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n </span>\r\n <div role=\"group\" [attr.aria-labelledby]=\"'terms_condition_template-label'\">\r\n <quill-editor [modules]=\"quillModules\" [styles]=\"{'height':'100px'}\"\r\n formControlName=\"terms_condition_template\"\r\n [attr.aria-label]=\"translate('Legal Description')\"\r\n [attr.aria-required]=\"true\">\r\n </quill-editor>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"clearfix mt-25\">\r\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\r\n <div class=\"clsIconBtn iconBgColor_8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"w-20px h-20px\" aria-hidden=\"true\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\r\n <path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\"></path>\r\n <path d=\"M2 12h20\"></path>\r\n </svg>\r\n </div>\r\n <div class=\"clearfix\">\r\n <h4 class=\"clsHeaderTitle\">{{ translate('Advanced Configuration') }}</h4>\r\n <p class=\"clsSubHeaderTitle\"> {{ translate('System-level authentication settings') }} </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"p-25 border rounded-16\">\r\n <div class=\"row row-gap-15\">\r\n <div class=\"col-lg-4 col-md-6 col-12\">\r\n <label class=\"intake-form-labels\" for=\"multifactor_template\">\r\n {{ translate('Multifactor Authentication Channel') }}\r\n @if (configRegistrationForm.get('enable_mfa')?.value) {\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n }\r\n </label>\r\n <p-select-empower class=\"w-100\" id=\"multifactor_template\" optionLabel=\"name\" optionValue=\"value\"\r\n [options]=\"multifactorTemplates\"\r\n [placeholder]=\"translate('Select MFA channel')\" formControlName=\"multifactor_template\"\r\n [required]=\"!!configRegistrationForm.get('enable_mfa')?.value\"\r\n [aria-describedby]=\"configRegistrationForm.get('multifactor_template')?.invalid && configRegistrationForm.get('multifactor_template')?.touched ? 'multifactor_template-errors' : null\">\r\n </p-select-empower>\r\n @if (configRegistrationForm.get('multifactor_template')?.invalid && configRegistrationForm.get('multifactor_template')?.touched) {\r\n <small id=\"multifactor_template-errors\" class=\"text-danger\" role=\"alert\">\r\n {{ translate('Multifactor Authentication Channel is required.') }}\r\n </small>\r\n }\r\n </div>\r\n <div class=\"col-lg-4 col-md-6 col-12\">\r\n <label class=\"intake-form-labels\" for=\"otp_digits\">\r\n {{ translate('OTP Verification Digits') }}\r\n @if (configRegistrationForm.get('enable_mfa')?.value) {\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n }\r\n </label>\r\n <inputnumber-empower min=\"4\" max=\"6\" class=\"form-control\" id=\"otp_digits\" formControlName=\"otp_digits\"\r\n [placeholder]=\"translate('Enter OTP Verification Digits')\"\r\n [aria-describedby]=\"otpControl.invalid && otpControl.touched ? 'otp_digits-errors' : null\"\r\n [class.is-invalid]=\"otpControl.invalid && (otpControl.dirty || otpControl.touched)\"></inputnumber-empower>\r\n @if (otpControl.invalid && otpControl.touched) {\r\n <div id=\"otp_digits-errors\" class=\"text-danger small mt-1\" role=\"alert\">\r\n @if (otpControl.errors?.['required']) {\r\n <span>{{ translate('OTP Verification Digits is required.') }}</span>\r\n }\r\n @if (otpControl.errors?.min || otpControl.errors?.max) {\r\n <span>{{ translate('Enter a valid number of digits between 4 and 6.') }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"col-lg-4 col-md-6 col-12\">\r\n <label class=\"intake-form-labels\" for=\"otp_expire_time\">\r\n {{ translate('OTP Expire Time (In Minutes)') }}\r\n @if (configRegistrationForm.get('enable_mfa')?.value) {\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n }\r\n </label>\r\n <inputnumber-empower class=\"form-control\" id=\"otp_expire_time\" formControlName=\"otp_expire_time\"\r\n [placeholder]=\"translate('Enter OTP Expire Time')\"\r\n [aria-describedby]=\"otpExpireControl.invalid && (otpExpireControl.dirty || otpExpireControl.touched) ? 'otp_expire_time-errors' : null\"\r\n [class.is-invalid]=\"otpExpireControl.invalid && (otpExpireControl.dirty || otpExpireControl.touched)\"></inputnumber-empower>\r\n @if (otpExpireControl.invalid && (otpExpireControl.dirty || otpExpireControl.touched)) {\r\n <div id=\"otp_expire_time-errors\" class=\"text-danger small mt-1\" role=\"alert\">\r\n @if (otpExpireControl.errors?.['required']) {\r\n <span>{{ translate('OTP Expire Time is required.') }}</span>\r\n }\r\n @if (otpExpireControl.errors?.min || otpExpireControl.errors?.max) {\r\n <span>{{ translate('Enter a valid OTP expire time between 1 and 30 minutes.') }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"col-lg-4 col-md-6 col-12\">\r\n <label class=\"intake-form-labels\" for=\"resend_otp_delay\">\r\n {{ translate('Resend OTP Delay (In Minutes)') }}\r\n @if (configRegistrationForm.get('enable_mfa')?.value) {\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n }\r\n </label>\r\n <inputnumber-empower min=\"0.5\" max=\"10\" step=\"0.1\" class=\"form-control\" id=\"resend_otp_delay\" formControlName=\"resend_otp_delay\"\r\n [placeholder]=\"translate('Enter Resend OTP Delay')\"\r\n [aria-describedby]=\"resendDelayControl.invalid && (resendDelayControl.dirty || resendDelayControl.touched) ? 'resend_otp_delay-errors' : null\"\r\n [class.is-invalid]=\"resendDelayControl.invalid && (resendDelayControl.dirty || resendDelayControl.touched)\"></inputnumber-empower>\r\n @if (resendDelayControl.invalid && (resendDelayControl.dirty || resendDelayControl.touched)) {\r\n <div id=\"resend_otp_delay-errors\" class=\"text-danger small mt-1\" role=\"alert\">\r\n @if (resendDelayControl.errors?.['required']) {\r\n <span>{{ translate('Resend OTP Delay is required.') }}</span>\r\n }\r\n @if (resendDelayControl.errors?.min || resendDelayControl.errors?.max) {\r\n <span>{{ translate('Enter a valid resend delay between 0.5 and 10 minutes.') }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"col-lg-4 col-md-6 col-12\">\r\n <label class=\"intake-form-labels\" for=\"forget_config\">\r\n {{ translate('Forget Password Config') }}\r\n @if (configRegistrationForm.get('enable_mfa')?.value) {\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n }\r\n </label>\r\n <p-select-empower class=\"w-100\" id=\"forget_config\" optionLabel=\"name\" formControlName=\"forget_config\" optionValue=\"value\"\r\n [options]=\"forgetPasswordConfig\" [placeholder]=\"translate('Select Forget Password Config')\"\r\n [required]=\"!!configRegistrationForm.get('enable_mfa')?.value\"\r\n [aria-describedby]=\"configRegistrationForm.get('forget_config')?.invalid && configRegistrationForm.get('forget_config')?.touched ? 'forget_config-errors' : null\">\r\n </p-select-empower>\r\n @if (configRegistrationForm.get('forget_config')?.invalid && configRegistrationForm.get('forget_config')?.touched) {\r\n <small id=\"forget_config-errors\" class=\"text-danger\" role=\"alert\">\r\n {{ translate('Forget Password Config is required.') }}\r\n </small>\r\n }\r\n </div>\r\n <div class=\"col-lg-4 col-md-6 col-12\">\r\n <label class=\"intake-form-labels\" for=\"forgot_email_expire_time\">\r\n {{ translate('Forgot Email Expire Time(In Minutes)') }}\r\n @if (configRegistrationForm.get('enable_mfa')?.value) {\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n }\r\n </label>\r\n <inputnumber-empower min=\"1\" max=\"60\" class=\"form-control\" id=\"forgot_email_expire_time\" formControlName=\"forget_expire_time\"\r\n [placeholder]=\"translate('Enter Forgot Email Expire Time')\"\r\n [aria-describedby]=\"forgetExpireControl.invalid && (forgetExpireControl.dirty || forgetExpireControl.touched) ? 'forgot_email_expire_time-errors' : null\"\r\n [class.is-invalid]=\"forgetExpireControl.invalid && (forgetExpireControl.dirty || forgetExpireControl.touched)\"></inputnumber-empower>\r\n @if (forgetExpireControl.invalid && (forgetExpireControl.dirty || forgetExpireControl.touched)) {\r\n <div id=\"forgot_email_expire_time-errors\" class=\"text-danger small mt-1\" role=\"alert\">\r\n @if (forgetExpireControl.errors?.['required']) {\r\n <span>{{ translate('Forgot Email Expire Time is required.') }}</span>\r\n }\r\n @if (forgetExpireControl.errors?.min || forgetExpireControl.errors?.max) {\r\n <span>{{ translate('Enter a valid forgot email expire time between 1 and 60 minutes.') }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"clearfix mt-25\">\r\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\r\n <div class=\"clsIconBtn\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"w-20px h-20px\" aria-hidden=\"true\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\r\n <polyline points=\"12 6 12 12 16 14\"></polyline>\r\n </svg>\r\n </div>\r\n <div class=\"clearfix\">\r\n <h4 class=\"clsHeaderTitle\">Account Lockout Settings</h4>\r\n <p class=\"clsSubHeaderTitle\">Configure login attempt limits and account lockout settings</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"p-25 border rounded-16\">\r\n <div class=\"row row-gap-15\">\r\n <div class=\"col-12\">\r\n <div class=\"clsPreferencesListItem\">\r\n <div class=\"flex-fill\">\r\n <label class=\"mb-0 cursor-pointer\" for=\"enableLoginAttemptThrottling\">Enable Time-Based Login Attempt Limits</label>\r\n <div class=\"mt-1 d-flex align-items-center gap-5\">\r\n <div class=\"clsStatusDot\" [ngClass]=\"{\r\n 'clsEnabledDot': configRegistrationForm.get('enableLoginAttemptThrottling')?.value,\r\n 'clsDisabledDot': !configRegistrationForm.get('enableLoginAttemptThrottling')?.value\r\n }\">\r\n </div>\r\n <span class=\"clsStatusTxt\">\r\n {{ configRegistrationForm.get('enableLoginAttemptThrottling')?.value ? 'Enabled' : 'Disabled' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\">\r\n <p-inputSwitch inputId=\"enableLoginAttemptThrottling\" formControlName=\"enableLoginAttemptThrottling\" (onChange)=\"onLoginAttemptThrottlingChange()\">\r\n </p-inputSwitch>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n @if (configRegistrationForm.get('enableLoginAttemptThrottling')?.value) {\r\n <div class=\"col-lg-6 col-md-6 col-12\">\r\n <label class=\"intake-form-labels\" for=\"lockoutWindowMinutes\">{{ translate('Failed Login Attempt Window (minutes)') }}\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n </label>\r\n <inputnumber-empower class=\"form-control\" id=\"lockoutWindowMinutes\" formControlName=\"lockoutWindowMinutes\"\r\n [placeholder]=\"translate('Enter lock window duration in minutes')\"\r\n [aria-describedby]=\"lockoutWindowControl?.invalid && (lockoutWindowControl?.dirty || lockoutWindowControl?.touched) ? 'lockoutWindowMinutes-errors' : null\"\r\n [class.is-invalid]=\"lockoutWindowControl?.invalid && (lockoutWindowControl?.dirty || lockoutWindowControl?.touched)\"></inputnumber-empower>\r\n @if (lockoutWindowControl?.invalid && (lockoutWindowControl?.dirty || lockoutWindowControl?.touched)) {\r\n <div id=\"lockoutWindowMinutes-errors\" class=\"text-danger small mt-1\" role=\"alert\">\r\n @if (lockoutWindowControl?.errors?.['required']) {\r\n <span>{{ translate('Failed Login Attempt Window is required.') }}</span>\r\n }\r\n @if (lockoutWindowControl?.errors?.['min']) {\r\n <span>{{ translate('Enter a valid Login Attempt Window (Minutes).') }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if (configRegistrationForm.get('enableLoginAttemptThrottling')?.value) {\r\n <div class=\"col-lg-6 col-md-6 col-12\">\r\n <label class=\"intake-form-labels\" for=\"lockoutDurationMinutes\">{{ translate('Account Lockout Duration (minutes)') }}\r\n <span class=\"required\" aria-hidden=\"true\">*</span>\r\n </label>\r\n <inputnumber-empower class=\"form-control\" id=\"lockoutDurationMinutes\" formControlName=\"lockoutDurationMinutes\"\r\n [placeholder]=\"translate('Enter lock duration in minutes')\"\r\n [aria-describedby]=\"lockoutDurationControl?.invalid && (lockoutDurationControl?.dirty || lockoutDurationControl?.touched) ? 'lockoutDurationMinutes-errors' : null\"\r\n [class.is-invalid]=\"lockoutDurationControl?.invalid && (lockoutDurationControl?.dirty || lockoutDurationControl?.touched)\"></inputnumber-empower>\r\n @if (lockoutDurationControl?.invalid && (lockoutDurationControl?.dirty || lockoutDurationControl?.touched)) {\r\n <div id=\"lockoutDurationMinutes-errors\" class=\"text-danger small mt-1\" role=\"alert\">\r\n @if (lockoutDurationControl?.errors?.['required']) {\r\n <span>{{ translate('Account Lockout Duration is required.') }}</span>\r\n }\r\n @if (lockoutDurationControl?.errors?.['min']) {\r\n <span>{{ translate('Enter a valid lock duration.') }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <p-card styleClass=\" w-100 mt-3\">\r\n <div class=\"customizer\" [formGroup]=\"configRegistrationForm\">\r\n <div class=\"text-md-right mt-2 mb-4 previewsumbitBtn\">\r\n @if (showFormErrors && configRegistrationForm.invalid) {\r\n <div class=\"text-danger text-left mb-2\" role=\"alert\">\r\n <p class=\"mb-1\">{{ translate('Please fix the following:') }}</p>\r\n <ul class=\"mb-0\">\r\n @for (msg of getInvalidFieldMessages(); track msg) {\r\n <li>{{ msg }}</li>\r\n }\r\n </ul>\r\n </div>\r\n }\r\n @if (activeTab === 'home' || activeTab === 'kms-sub1' || activeTab === 'profile') {\r\n <button-empower type=\"button\" class=\"btn btn-primary\" (click)=\"previewLogin()\">\r\n {{ translate('Preview') }}\r\n </button-empower>\r\n }\r\n <button-empower type=\"button\" class=\"btn btn-primary\" (click)=\"saveConfig()\">\r\n {{ updateButton ? translate('Update') : translate('Submit') }}\r\n </button-empower>\r\n </div>\r\n </div>\r\n </p-card>\r\n\r\n <!-- Preview Modal -->\r\n <p-dialog [(visible)]=\"showPreviewModal\" [modal]=\"true\" [style]=\"{ width: '100vw', height: '100vh' }\"\r\n [header]=\"translate('Login Preview')\" [closable]=\"true\" class=\"loginpreviewdialog\">\r\n <!-- create preview only after previewLoginInfo is set -->\r\n @if (showPreviewModal && previewLoginInfo) {\r\n <lib-config-login-preview [previewData]=\"previewLoginInfo\" [i18n]=\"i18n\"></lib-config-login-preview>\r\n }\r\n </p-dialog>\r\n\r\n <p-dialog [header]=\"translate('Template Preview')\" [(visible)]=\"previewVisible\" [modal]=\"true\" [closable]=\"true\">\r\n <img class=\"img-fluid\" [src]=\"previewImageUrl || 'assets/images/base-product/footer-left.png'\"\r\n alt=\"Preview\" />\r\n </p-dialog>","import { Component, Inject, Input, OnInit, OnDestroy, Optional } from '@angular/core';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { PermissionStore } from './@core/permissions/permission.store';\r\nimport { DataStoreService } from './@core/service/data-store.service';\r\nimport { RBACINFO } from './@core/urls/rbac-url.config';\r\nimport { I18nService} from '@pics-core/common-utils';\r\n\r\n@Component({\r\n selector: 'config-login-settings',\r\n template: `\r\n <lib-config-login-settings></lib-config-login-settings>\r\n `,\r\n styles: [\r\n ],\r\n standalone: false\r\n})\r\nexport class ConfigLoginSettingsComponent implements OnInit, OnDestroy {\r\n @Input() public RBACORG?: RBACINFO = new RBACINFO();\r\n @Input() public PERMISSION?: any;\r\n @Input() public configureEvent!: Observable<any>;\r\n\r\n private i18nSubscription: Subscription;\r\n private configureSubscription?: Subscription;\r\n\r\n constructor(\r\n private permissionStore: PermissionStore,\r\n private _storeservice: DataStoreService,\r\n private i18nService: I18nService,\r\n ) {\r\n }\r\n ngOnInit() {\r\n this.i18nSubscription = this.i18nService.translations$.subscribe((translations) => {\r\n if (translations && Object.keys(translations).length) {\r\n this._storeservice.setData('I18N', translations);\r\n this._storeservice.setData('CURRENT_LANGUAGE', this.i18nService.getCurrentLanguage());\r\n }\r\n });\r\n \r\n this.configureSubscription = this.configureEvent.subscribe((val: any) => {\r\n if (!val?.RBACORG) {\r\n return;\r\n }\r\n this.RBACORG = val.RBACORG;\r\n this.PERMISSION = val.PERMISSION;\r\n this._storeservice.setData('RBACORG', this.RBACORG);\r\n this.permissionStore.setStore(this.PERMISSION);\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n if (this.i18nSubscription) {\r\n this.i18nSubscription.unsubscribe();\r\n }\r\n this.configureSubscription?.unsubscribe();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppService {\r\n currentState: Subject<any> = new Subject();\r\n currentValue = new BehaviorSubject<any>({});\r\n getValue = this.currentValue.asObservable();\r\n addValue(key: string, value: string) {\r\n this.currentState.next({ key, value });\r\n }\r\n\r\n setValue(key: string, value: string) {\r\n this.currentValue.next({ key, value });\r\n }\r\n}\r\n","/**\r\n * Simple logger system with the possibility of registering custom outputs.\r\n *\r\n * 4 different log levels are provided, with corresponding methods:\r\n * - debug : for debug information\r\n * - info : for informative status of the application (success, ...)\r\n * - warning : for non-critical errors that do not prevent normal application behavior\r\n * - error : for critical errors that prevent normal application behavior\r\n *\r\n * Example usage:\r\n * ```\r\n * import { Logger } from 'app/core/logger.service';\r\n *\r\n * const log = new Logger('myFile');\r\n * ...\r\n * log.debug('something happened');\r\n * ```\r\n *\r\n * To disable debug and info logs in production, add this snippet to your root component:\r\n * ```\r\n * export class AppComponent implements OnInit {\r\n * ngOnInit() {\r\n * if (environment.production) {\r\n * Logger.enableProductionMode();\r\n * }\r\n * ...\r\n * }\r\n * }\r\n *\r\n * If you want to process logs through other outputs than console, you can add LogOutput functions to Logger.outputs.\r\n */\r\n\r\n/**\r\n * The possible log levels.\r\n * LogLevel.Off is never emitted and only used with Logger.level property to disable logs.\r\n */\r\nexport enum LogLevel {\r\n Off = 0,\r\n Error,\r\n Warning,\r\n Info,\r\n Debug\r\n}\r\n\r\n/**\r\n * Log output handler function.\r\n */\r\nexport type LogOutput = (source: string | undefined, level: LogLevel, ...objects: any[]) => void;\r\n\r\nexport class Logger {\r\n /**\r\n * Current logging level.\r\n * Set it to LogLevel.Off to disable logs completely.\r\n */\r\n static level = LogLevel.Debug;\r\n\r\n /**\r\n * Additional log outputs.\r\n */\r\n static outputs: LogOutput[] = [];\r\n\r\n /**\r\n * Enables production mode.\r\n * Sets logging level to LogLevel.Warning.\r\n */\r\n static enableProductionMode() {\r\n Logger.level = LogLevel.Warning;\r\n }\r\n\r\n constructor(private source?: string) {}\r\n\r\n /**\r\n * Logs messages or objects with the debug level.\r\n * Works the same as console.log().\r\n */\r\n debug(...objects: any[]) {\r\n this.log(console.log, LogLevel.Debug, objects);\r\n }\r\n\r\n /**\r\n * Logs messages or objects with the info level.\r\n * Works the same as console.log().\r\n */\r\n info(...objects: any[]) {\r\n this.log(console.info, LogLevel.Info, objects);\r\n }\r\n\r\n /**\r\n * Logs messages or objects with the warning level.\r\n * Works the same as console.log().\r\n */\r\n warn(...objects: any[]) {\r\n this.log(console.warn, LogLevel.Warning, objects);\r\n }\r\n\r\n /**\r\n * Logs messages or objects with the error level.\r\n * Works the same as console.log().\r\n */\r\n error(...objects: any[]) {\r\n this.log(console.error, LogLevel.Error, objects);\r\n }\r\n\r\n private log(func: (...args: any[]) => void, level: LogLevel, objects: any[]) {\r\n if (level <= Logger.level) {\r\n const log = this.source ? ['[' + this.source + ']'].concat(objects) : objects;\r\n func.apply(console, log);\r\n Logger.outputs.forEach(output => output.apply(output, [this.source, level, ...objects]));\r\n }\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { SessionStorageService, PICS_CORE_SESSION_STORAGE } from '@pics-core/common-utils';\r\n\r\nexport interface Credentials {\r\n // Customize received credentials here\r\n username: string;\r\n token: string;\r\n}\r\n\r\nconst credentialsKey = 'jwt-token';\r\n\r\n/**\r\n * Provides storage for authentication credentials.\r\n * The Credentials interface should be replaced with proper implementation.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CredentialsService {\r\n private token: string | null = null;\r\n\r\n constructor(@Inject(PICS_CORE_SESSION_STORAGE) private localstore: SessionStorageService) {\r\n const savedCredentials = this.localstore.getItem(credentialsKey);\r\n if (savedCredentials) {\r\n this.token = savedCredentials;\r\n }\r\n }\r\n\r\n /**\r\n * Checks is the user is authenticated.\r\n * @return True if the user is authenticated.\r\n */\r\n isAuthenticated(): boolean {\r\n return !!this.credentials;\r\n }\r\n\r\n /**\r\n * Gets the user credentials.\r\n * @return The user credentials or null if the user is not authenticated.\r\n */\r\n get credentials(): string | null {\r\n return this.token;\r\n }\r\n\r\n /**\r\n * Sets the user credentials.\r\n * The credentials may be persisted across sessions by setting the `remember` parameter to true.\r\n * Otherwise, the credentials are only persisted for the current session.\r\n * @param credentials The user credentials.\r\n * @param remember True to remember credentials across sessions.\r\n */\r\n setCredentials(credentials?: string) {\r\n this.token = credentials || null;\r\n if (credentials) {\r\n this.localstore.setItem(credentialsKey, credentials);\r\n } else {\r\n this.localstore.clear();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { CredentialsService } from './credentials.service';\r\nimport { Logger } from './logger.service';\r\n\r\nconst log = new Logger('AuthenticationGuard');\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n constructor(private router: Router, private credentialsService: CredentialsService) {}\r\n\r\n canActivate(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): boolean {\r\n if (this.credentialsService.isAuthenticated()) {\r\n return true;\r\n }\r\n log.debug('Not authenticated, redirecting and adding redirect url...');\r\n this.router.navigate(['/login']);\r\n return false;\r\n }\r\n}\r\n","export class DynamicTabPageConfig {\r\n public static EndPoint = {\r\n Page: {\r\n getActivePage: '/pageversion/{id}',\r\n getPage: '/page',\r\n getPageById: '/page/{id}',\r\n getResponseByPageId: '/app/formresponse/{responseId}/getByPageId/{pageId}',\r\n createFormResponse: '/app/formresponse/create',\r\n patchFormResponse: '/app/formresponse',\r\n updateFormResponse: '/pagedata/'\r\n },\r\n Narrative: {\r\n getIncidentListById: '/incident/listBySourceId/{id}'\r\n },\r\n Notification: {\r\n createSurveyConfig: '/surveyconfig/usersurvey/{id}/{status}/{pagedataid}'\r\n },\r\n Finance: {\r\n exportDocument: '/integrated/exportDocuments/',\r\n uploadDocument: 'document/upload',\r\n getUniqueId: '/uniqueIdLogic/'\r\n },\r\n Attachments: {\r\n createAttachment: '/app/formresponseattachment/create'\r\n }\r\n };\r\n}\r\n","import { HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { NgxfUploaderService } from 'ngxf-uploader';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { HttpService } from './http.service';\r\nimport { DynamicTabPageConfig } from '../urls/dynamic-tab-page-url.config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicTabPageService {\r\n private isPageDesign = new BehaviorSubject<boolean>(false);\r\n observePage = this.isPageDesign.asObservable();\r\n constructor(private uploadService: NgxfUploaderService, private httpService: HttpService) {}\r\n\r\n getActivePage(tabPageId: any, permission?: boolean) {\r\n return this.httpService.get(\r\n `${DynamicTabPageConfig.EndPoint.Page.getActivePage.replace('{id}', tabPageId)}${\r\n permission ? '?applyPermissions=true' : ''\r\n }`\r\n );\r\n }\r\n\r\n getDynamicPage(pageId: any) {\r\n return this.httpService.get(`${DynamicTabPageConfig.EndPoint.Page.getPage}/${pageId}`);\r\n }\r\n\r\n getPageById(pageId: any) {\r\n return this.httpService.get(DynamicTabPageConfig.EndPoint.Page.getPageById.replace('{id}', pageId));\r\n }\r\n\r\n getListBySourceId(sourceId: any) {\r\n return this.httpService.get(DynamicTabPageConfig.EndPoint.Narrative.getIncidentListById.replace('{id}', sourceId));\r\n }\r\n\r\n getResponseByPageId(responseId: any, pageId: any) {\r\n return this.httpService.get(\r\n DynamicTabPageConfig.EndPoint.Page.getResponseByPageId\r\n .replace('{responseId}', responseId)\r\n .replace('{pageId}', pageId)\r\n );\r\n }\r\n\r\n createFormResponse(id: any, requestData) {\r\n return this.httpService.post(\r\n id\r\n ? DynamicTabPageConfig.EndPoint.Page.updateFormResponse\r\n : DynamicTabPageConfig.EndPoint.Page.createFormResponse,\r\n requestData\r\n );\r\n }\r\n\r\n createUserSurvey(history, Id: any) {\r\n return this.httpService.post(\r\n DynamicTabPageConfig.EndPoint.Notification.createSurveyConfig\r\n .replace('{id}', history?.state?.usersurveyid)\r\n .replace('{status}', 'Completed')\r\n .replace('{pagedataid}', Id),\r\n {}\r\n );\r\n }\r\n\r\n updateFormResponse(id: any, requestData: any) {\r\n return this.httpService.patch(`${DynamicTabPageConfig.EndPoint.Page.patchFormResponse}/${id}`, requestData);\r\n }\r\n\r\n exportReport(data: any) {\r\n return this.httpService.post(DynamicTabPageConfig.EndPoint.Finance.exportDocument, data);\r\n }\r\n\r\n uploadFile(file: any) {\r\n return this.uploadService.upload({\r\n url: this.httpService.baseUrl + '/' + DynamicTabPageConfig.EndPoint.Finance.uploadDocument,\r\n headers: new HttpHeaders()\r\n .set('ctype', 'file')\r\n .set('uniqueid', '6b61ac1e-221a-495c-957b-ad85f65be25a')\r\n .set('role', 'role=CP_PUBLIC'),\r\n files: file,\r\n process: true\r\n });\r\n }\r\n\r\n getUniqueId(api: string) {\r\n return this.httpService.get(DynamicTabPageConfig.EndPoint.Finance.getUniqueId + api);\r\n }\r\n\r\n changePage(page) {\r\n this.isPageDesign.next(page);\r\n }\r\n\r\n createFormResponseAttachment(data) {\r\n return this.httpService.post(DynamicTabPageConfig.EndPoint.Attachments.createAttachment, data);\r\n }\r\n}\r\n","export class PageHeaderURL {\r\n public static EndPoints = {\r\n page: {\r\n getAuthorizedPages: '/platform/page-designer/page/organization/{orgid}?returnUserPage=true&excludeNoActiveVersionPages=true'\r\n }\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from './http.service';\r\nimport { PageHeaderURL } from '../urls/page-header-url.config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PageHeaderService {\r\n constructor(private httpService: HttpService) {}\r\n\r\n getAuthorizedPages(orgid) {\r\n return this.httpService.get(PageHeaderURL.EndPoints.page.getAuthorizedPages.replace('{orgid}', orgid));\r\n }\r\n}\r\n","import { UserDto } from \"../constants/common.entities\";\r\n\r\n\r\nexport class AuthState {\r\n user?: UserDto;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { forkJoin, Observable, of } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { UserDto } from '../constants/common.entities';\r\nimport { HttpService } from './http.service';\r\nimport { AuthState } from './auth.state';\r\nimport { AuthURL } from '../urls/rbac-url.config';\r\nimport { Store } from './store.service';\r\n\r\n@Injectable()\r\nexport class AuthStore extends Store<AuthState> {\r\n constructor(private httpService: HttpService) {\r\n super(new AuthState());\r\n }\r\n\r\n addAuthInfo(user: UserDto): void {\r\n this.setState({ ...this.state, user });\r\n }\r\n\r\n getAuthInfo(): Observable<any> {\r\n console.log(this.state);\r\n if (this.state.user) {\r\n return of(this.state.user);\r\n } else {\r\n return forkJoin([this.httpService.get(AuthURL.EndPoints.auth.user.userInfo)]).pipe(\r\n tap(([user]) => {\r\n return user;\r\n })\r\n );\r\n }\r\n }\r\n}\r\n","import { Injectable, Injector, Inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BehaviorSubject, Observable, forkJoin, of } from 'rxjs';\r\nimport { AuthURL } from '../urls/rbac-url.config';\r\nimport { AlertService } from './alert.service';\r\nimport { HttpService } from './http.service';\r\nimport { DynamicTabPageService } from './dynamic-tab-page-service';\r\nimport { PageHeaderService } from './page-header.service';\r\nimport { AuthStore } from './auth.store';\r\nimport { CredentialsService } from './credentials.service';\r\nimport { SessionStorageService, PICS_CORE_SESSION_STORAGE } from '@pics-core/common-utils';\r\nimport { mergeMap, tap } from 'rxjs/operators';\r\nimport { AppConstants } from '../constants/app-constants';\r\n\r\n@Injectable(\r\n{\r\n providedIn: 'root'\r\n}\r\n)\r\nexport class AuthService {\r\n sharedInfo: any;\r\n alertService: AlertService;\r\n dynamicTabPageService: DynamicTabPageService;\r\n pageHeaderService: PageHeaderService;\r\n constructor(\r\n injector: Injector,\r\n private httpService: HttpService,\r\n private store: AuthStore,\r\n private _router: Router,\r\n private credentialsService: CredentialsService,\r\n @Inject(PICS_CORE_SESSION_STORAGE) private localstore: SessionStorageService\r\n ) {\r\n this.alertService = injector.get<AlertService>(AlertService);\r\n this.dynamicTabPageService = injector.get<DynamicTabPageService>(DynamicTabPageService);\r\n this.pageHeaderService = injector.get<PageHeaderService>(PageHeaderService);\r\n }\r\n\r\n public orgInfo = new BehaviorSubject<any>('');\r\n currentOrgInfo = this.orgInfo.asObservable();\r\n\r\n public currentMenu = new BehaviorSubject<any>('');\r\n currentMenuInfo = this.currentMenu.asObservable();\r\n\r\n feedOrgInfo(data: any) {\r\n this.orgInfo.next(data);\r\n }\r\n getCurrentMenu(data: any) {\r\n this.currentMenu.next(data);\r\n }\r\n\r\n getUserOrgList() {\r\n return this.httpService.get(AuthURL.EndPoints.auth.user.orgList);\r\n }\r\n\r\n getUnNotified() {\r\n return this.httpService.get(AuthURL.EndPoints.auth.user.notification);\r\n }\r\n\r\n updateUnNotified(data) {\r\n return this.httpService.post(AuthURL.EndPoints.auth.user.notification, data);\r\n }\r\n\r\n updateWorkerAvailability(data) {\r\n return this.httpService.patch(AuthURL.EndPoints.auth.user.workerAvailability, data);\r\n }\r\n\r\n getWorkerAvailability() {\r\n return this.httpService.get(AuthURL.EndPoints.auth.user.getWorkerAvailability);\r\n }\r\n\r\n getMstrToken() {\r\n return this.httpService.get(AuthURL.EndPoints.auth.microstrategy.login).pipe(res => {\r\n return res;\r\n });\r\n }\r\n\r\n public login(email: string, password: string, otp: string): Observable<any> {\r\n const body = {\r\n email: email,\r\n password: password,\r\n secret: otp ? otp : ''\r\n };\r\n return this.httpService.post(AuthURL.EndPoints.auth.user.login, body).pipe(\r\n mergeMap((res: any): Observable<[any]> => {\r\n if (res['data'] === 'MFA_CODE_SEND') {\r\n return of(res['data']);\r\n }\r\n this.credentialsService.setCredentials(res['data'].idToken.jwtToken);\r\n this.localstore.setItem('refreshToken', res['data'].refreshToken.token);\r\n this.localstore.setItem('email', res['data'].idToken.payload['email']);\r\n this.localstore.setItem('id', res['data'].idToken.payload['custom:id']);\r\n this.localstore.setItem('username', res['data'].idToken.payload['name']);\r\n return this.getUserInfo();\r\n })\r\n );\r\n }\r\n\r\n public refreshToken(platform = 'aws') {\r\n const email = this.localstore.getItem('email');\r\n const refreshToken = this.localstore.getItem('refreshToken');\r\n const body = {\r\n email,\r\n refreshToken\r\n };\r\n if(platform === 'aws') {\r\n return this.httpService.post(AuthURL.EndPoints.auth.user.refreshToken, body).pipe(\r\n mergeMap((res: any): any => {\r\n this.credentialsService.setCredentials(res['data'].idToken.jwtToken);\r\n this.localstore.setItem('refreshToken', res['data'].refreshToken.token);\r\n this.localstore.setItem('email', res['data'].idToken.payload['email']);\r\n this.localstore.setItem('id', res['data'].idToken.payload['custom:id']);\r\n this.localstore.setItem('username', res['data'].idToken.payload['name']);\r\n console.log('new token generated...', res['data'].idToken.jwtToken);\r\n return [res['data'].idToken.jwtToken];\r\n })\r\n );\r\n }\r\n else {\r\n return this.httpService.post(AuthURL.EndPoints.auth.user.refreshToken, body).pipe(\r\n mergeMap((res: any): any => {\r\n this.credentialsService.setCredentials(res['data'].token);\r\n this.localstore.setItem('refreshToken', res['data'].refreshToken);\r\n return [res['data'].token];\r\n })\r\n );\r\n }\r\n }\r\n\r\n public resetLoggedIn() {\r\n this.httpService\r\n .post(AuthURL.EndPoints.auth.user.logout, {\r\n email: this.localstore.getItem('email')\r\n })\r\n .subscribe(() => {\r\n console.log('Logged in flag reset successful.');\r\n });\r\n }\r\n\r\n public logout() {\r\n this._router.navigate(['/login']);\r\n this.localstore.clear();\r\n localStorage.clear();\r\n }\r\n\r\n public getUserInfo(): Observable<[any]> {\r\n return forkJoin([this.httpService.get(AuthURL.EndPoints.auth.user.userInfo)]).pipe(\r\n tap(([user]) => {\r\n this.store.addAuthInfo(user['data']);\r\n return user;\r\n })\r\n );\r\n }\r\n\r\n public getUserRole(id): Observable<any> {\r\n return this.httpService.get(AuthURL.EndPoints.auth.user.userRole.replace('{id}', id)).pipe(res => {\r\n return res;\r\n });\r\n }\r\n\r\n public routeToDynamicPage(orgid): Observable<any> {\r\n return this.httpService\r\n .get(AuthURL.EndPoints.auth.user.routeToDynamicPage.replace('{orgid}', orgid))\r\n .pipe((res: any) => {\r\n return res;\r\n });\r\n }\r\n\r\n getAuthMe() {\r\n return this.httpService.get(AuthURL.EndPoints.auth.user.authMe);\r\n }\r\n\r\n ResetPassword(data: any) {\r\n return this.httpService.post(AuthURL.EndPoints.auth.user.resetPassword, data);\r\n }\r\n\r\n public getRoleKey() {\r\n const user = this.localstore.getObj('user');\r\n if (user && user.role) {\r\n return user.role.rolekey;\r\n }\r\n }\r\n\r\n public isAdmin() {\r\n return 'ADM' === this.getRoleKey();\r\n }\r\n\r\n public getOrgID() {\r\n const user = this.localstore.getObj('user');\r\n if (user && user.userWorkInfo && user.userWorkInfo.organization && user.userWorkInfo.organization.id) {\r\n return user.userWorkInfo.organization.id;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n conformMail(data) {\r\n return this.httpService.post(AuthURL.EndPoints.auth.user.conformMail, data);\r\n }\r\n\r\n changePassword(data) {\r\n return this.httpService.post(AuthURL.EndPoints.auth.user.changePassword, data);\r\n }\r\n\r\n setSharedMessage(data) {\r\n this.sharedInfo = data;\r\n }\r\n\r\n getSharedMessage() {\r\n return this.sharedInfo;\r\n }\r\n\r\n async checkDynamicPagePermission(pageId: any) {\r\n const dynamicPages = await this.getAuthorizedPages();\r\n if (pageId) {\r\n this.dynamicTabPageService.getPageById(pageId).subscribe(res => {\r\n if (dynamicPages.some(page => page.id === res['data'][0].activeVersion.id)) {\r\n this._router.navigate([`pages/dynamic-search/search/${res['data'][0].activeVersion.id}`]);\r\n } else {\r\n this.alertService.error(\r\n `You don't have permissions for ${res['data'][0].activeVersion.pagename} . Please Contact Administrator`\r\n );\r\n }\r\n });\r\n } else {\r\n this.alertService.error(\r\n 'You don\\'t have permissions to perform the following operations .Please Contact Administrator'\r\n );\r\n }\r\n }\r\n\r\n getCurrentOrg() {\r\n return this.getUserOrgList()\r\n .toPromise()\r\n .then(response => {\r\n return response['data'][0].id;\r\n });\r\n }\r\n\r\n async getAuthorizedPages() {\r\n const orgId = await this.getCurrentOrg();\r\n return this.pageHeaderService\r\n .getAuthorizedPages(orgId)\r\n .toPromise()\r\n .then(\r\n response => {\r\n const dynamicPage = response['data'].filter(page => {\r\n return (\r\n page.activeVersion &&\r\n (page.activeVersion.gridconfig || page.activeVersion.templatejson || this.getCustomPage(page))\r\n );\r\n });\r\n return dynamicPage.map(page => ({\r\n id: page.activeVersion.id,\r\n name: page.activeVersion.pagename,\r\n activeVersion: page.activeVersion\r\n }));\r\n },\r\n _error => this.alertService.error(AppConstants.errorMessage)\r\n );\r\n }\r\n\r\n getCustomPage(page) {\r\n if (page.activeVersion.tabconfig) {\r\n const routingTab = JSON.parse(page.activeVersion.tabconfig).filter(x => x.type === 'ROUTING');\r\n return routingTab.length && page;\r\n }\r\n }\r\n public validateToken(token: string,requestObject: any): Observable<any> {\r\n this.credentialsService.setCredentials(token);\r\n return this.httpService.getAuthAccessKey(AuthURL.EndPoints.auth.user.getTokenValidationUrl,requestObject).pipe(\r\n mergeMap((res: any): Observable<[any]> => {\r\n if (res['data'] === 'MFA_CODE_SEND') {\r\n return of(res['data']);\r\n }\r\n this.credentialsService.setCredentials(res['data'].token);\r\n this.localstore.setItem('refreshToken', res['data'].refreshToken);\r\n this.localstore.setItem('email', res['data'].email);\r\n this.localstore.setItem('id', res['data'].id);\r\n this.localstore.setItem('username', res['data'].name);\r\n return this.getUserInfo();\r\n })\r\n );\r\n }\r\n generateLoginUrl() {\r\n return this.httpService.get(AuthURL.EndPoints.auth.user.generateLoginUrl)\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nconst APP_PREFIX = 'GAMED-';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalStorageService {\r\n constructor() {\r\n // This is intentional\r\n }\r\n\r\n static loadInitialState() {\r\n return Object.keys(localStorage).reduce((state: any, storageKey) => {\r\n if (storageKey.includes(APP_PREFIX)) {\r\n const stateKeys = storageKey\r\n .replace(APP_PREFIX, '')\r\n .toLowerCase()\r\n .split('.')\r\n .map(key =>\r\n key\r\n .split('-')\r\n .map((token, index) => (index === 0 ? token : token.charAt(0).toUpperCase() + token.slice(1)))\r\n .join('')\r\n );\r\n let currentStateRef = state;\r\n stateKeys.forEach((key, index) => {\r\n if (index === stateKeys.length - 1) {\r\n currentStateRef[key] = JSON.parse(localStorage.getItem(storageKey) || '');\r\n return;\r\n }\r\n currentStateRef[key] = currentStateRef[key] || {};\r\n currentStateRef = currentStateRef[key];\r\n });\r\n }\r\n return state;\r\n }, {});\r\n }\r\n\r\n setItem(key: string, value: any) {\r\n localStorage.setItem(`${APP_PREFIX}${key}`, JSON.stringify(value));\r\n }\r\n\r\n getItem(key: string) {\r\n return localStorage.getItem(`${APP_PREFIX}${key}`) || '';\r\n }\r\n\r\n removeItem(key: string) {\r\n localStorage.removeItem(`${APP_PREFIX}${key}`);\r\n }\r\n\r\n /** Tests that localStorage exists, can be written to, and read from. */\r\n testLocalStorage() {\r\n const testValue = 'testValue';\r\n const testKey = 'testKey';\r\n const errorMessage = 'localStorage did not return expected value';\r\n\r\n this.setItem(testKey, testValue);\r\n const retrievedValue = this.getItem(testKey);\r\n this.removeItem(testKey);\r\n\r\n if (retrievedValue !== testValue) {\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { AlertService } from './alert.service';\r\nimport { DataStoreService } from './data-store.service';\r\nimport { PermissionStore } from './../permissions/permission.store';\r\n\r\ndeclare const microstrategy: any;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MicrostrategyService {\r\n dossierList: any;\r\n RBACORG: any;\r\n environment: any;\r\n constructor(private http: HttpClient,\r\n private alertService: AlertService,\r\n private permissionStore: PermissionStore,\r\n private _storeservice: DataStoreService) {\r\n this._storeservice.currentStore.subscribe((res: any) => {\r\n if (res['RBACORG'] && res['RBACORG'] !== '') {\r\n this.RBACORG = res['RBACORG'];\r\n this.environment = this.RBACORG['environment'] ? this.RBACORG['environment'] : '';\r\n }\r\n });\r\n }\r\n\r\n getAuthToken() {\r\n const body = {\r\n username: this.environment.mstrUsername,\r\n password: this.environment.mstrPassword,\r\n loginMode: 1\r\n };\r\n return this.http.post(`${this.environment.mstrURL}/api/auth/login`, body, {\r\n withCredentials: true,\r\n headers: { 'Content-type': 'application/json' },\r\n observe: 'response'\r\n });\r\n }\r\n\r\n getDossier(projectId?: string, dossierId?: string, pageNo?: string) {\r\n const permissions = this.permissionStore.state;\r\n const projectUrl = `${this.environment.mstrURL}/app/${projectId}`;\r\n const dossierUrl = `${projectUrl}/${dossierId}/${pageNo}`;\r\n microstrategy.dossier\r\n .create({\r\n placeholder: document.getElementById('dossierContainer'),\r\n url: dossierUrl,\r\n navigationBar: {\r\n enabled: true,\r\n gotoLibrary: permissions?.ANA_LIBRARY,\r\n title: true,\r\n toc: true,\r\n reset: true,\r\n reprompt: true,\r\n share: true,\r\n comment: true,\r\n notification: true,\r\n filter: true,\r\n options: true,\r\n search: true,\r\n bookmark: true\r\n },\r\n enableCustomAuthentication: true,\r\n enableResponsive: false,\r\n containerWidth: 400,\r\n containerHeight: 400,\r\n customAuthenticationType: microstrategy.dossier.CustomAuthenticationType.AUTH_TOKEN,\r\n getLoginToken: async () => {\r\n const response = await this.getAuthToken().toPromise();\r\n return response.headers.get('x-mstr-authtoken');\r\n }\r\n })\r\n .catch((_err: any) => this.alertService.error(`Failed to connect ${this.environment.mstrURL}`));\r\n }\r\n\r\n async getLibraryDetails() {\r\n const token = await this.getAuthToken().toPromise();\r\n const authtoken = token.headers.get('x-mstr-authtoken')\r\n const headerInfo = {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json',\r\n 'X-MSTR-AuthToken': authtoken ? authtoken: '',\r\n 'X-MSTR-ProjectID': this.environment.mstrProjectID\r\n };\r\n return this.http\r\n .get(`${this.environment.mstrURL}/api/library`, {\r\n withCredentials: true,\r\n headers: headerInfo\r\n })\r\n .toPromise()\r\n .then((response: any) => {\r\n return response.map((mstr: any) => ({\r\n id: mstr.target.id,\r\n projectId: mstr.projectId,\r\n name: mstr.target.name\r\n }));\r\n });\r\n }\r\n}\r\n","import { FontSet, Theme } from \"./common.entities\";\r\n\r\n\r\nexport const themeList: Theme[] = [\r\n {\r\n name: 'Default',\r\n image: '/assets/images/skin_default.svg',\r\n key: 'default',\r\n properties: {\r\n '--background-color': '#f3f3f3',\r\n '--header-bg': '#464185',\r\n '--navigation': '#fff',\r\n '--primary': '#3e397e',\r\n '--checkbox-border': '#3e397e',\r\n '--text-dark': '#000',\r\n '--label-text': '#2c2863',\r\n '--hover-text': '#fff',\r\n '--bg-light': '#fff',\r\n '--forms': '#fff',\r\n '--nav-text': '#000',\r\n '--light-gray': '#696969',\r\n '--material-icons': '#2c2863',\r\n '--highlight-list': '#E3F2FD',\r\n '--table-header': '#f9f9f9',\r\n '--table-odd': '#f7f7f7',\r\n '--table-border': '#ddd',\r\n '--table-hover': '#f6f5ff',\r\n '--btn': '#3e397e',\r\n '--menu-panel': '#2c2863',\r\n '--border-trans': 'transparent',\r\n '--btn-hover': '#2c2863',\r\n '--btn-dark': '#2c2863',\r\n '--dropdown-list': '#fff',\r\n '--btncancel': '#3e397e',\r\n '--primary-light': '#6e6b93',\r\n '--primary-dark': '#282462 ',\r\n '--light-d-light': '#fff',\r\n '--ldl-text': '#fff',\r\n '--light-d-accent': '#fff',\r\n '--readonly-bg': 'rgb(229 229 229 / 45%)',\r\n\r\n '--var-icon-font': '\"FILL\" 0, \"wght\" 200, \"GRAD\" 0, \"opsz\" 48',\r\n\r\n '--rocket-icon': '/assets/images/rocket-ship.svg'\r\n }\r\n },\r\n {\r\n name: 'Light',\r\n image: '/assets/images/skin_light.svg',\r\n key: 'light',\r\n properties: {\r\n '--background-color': '#f3f3f3',\r\n '--header-bg': '#f3f3f3',\r\n '--navigation': '#fff',\r\n '--primary': '#343344',\r\n '--checkbox-border': '#343344',\r\n '--text-dark': '#000',\r\n '--label-text': '#000',\r\n '--hover-text': '#fff',\r\n '--bg-light': '#fff',\r\n '--forms': '#fff',\r\n '--nav-text': '#000',\r\n '--light-gray': '#696969',\r\n '--material-icons': '#2c2863',\r\n '--highlight-list': '#E3F2FD',\r\n '--table-header': '#f9f9f9',\r\n '--table-odd': '#fff',\r\n '--table-border': '#ddd',\r\n '--table-hover': '#f5f5f5',\r\n '--btn': '#343344',\r\n '--menu-panel': '#fff',\r\n '--border-trans': 'transparent',\r\n '--btn-hover': '#2c2863',\r\n '--btn-dark': '#343344',\r\n '--dropdown-list': '#fff',\r\n '--btncancel': '#343344',\r\n '--primary-light': '#6e6b93',\r\n '--primary-dark': '#f5f5f5',\r\n '--light-d-light': '#343344',\r\n '--ldl-text': '#000',\r\n '--light-d-accent': '#343344',\r\n '--readonly-bg': 'rgb(229 229 229 / 45%)',\r\n\r\n '--var-icon-font': '\"FILL\" 0, \"wght\" 500, \"GRAD\" 0, \"opsz\" 48',\r\n\r\n '--rocket-icon': '/assets/images/rocket-ship.svg'\r\n }\r\n },\r\n {\r\n name: 'Dark',\r\n image: '/assets/images/skin_dark.svg',\r\n key: 'dark',\r\n properties: {\r\n '--background-color': '#1a2035',\r\n '--header-bg': '#1a2035',\r\n '--navigation': '#272e46',\r\n '--nav-text': '#fff',\r\n '--light-gray': '#a3a3a3',\r\n '--primary': '#f3266b',\r\n '--checkbox-border': '#8b8989',\r\n '--text-dark': '#ddd',\r\n '--label-text': '#fff',\r\n '--hover-text': '#fff',\r\n '--bg-light': '#272e46',\r\n '--material-icons': '#fff',\r\n '--forms': '#272e46',\r\n '--highlight-list': '#364060',\r\n '--table-header': '#364060',\r\n '--table-odd': '#2f364c',\r\n '--table-border': '#3e414c',\r\n '--table-hover': '#3f465e',\r\n '--btn': '#f3266b',\r\n '--menu-panel': '#272e46',\r\n '--border-trans': 'transparent',\r\n '--btn-hover': '#f3266b',\r\n '--btn-dark': '#2c2863',\r\n '--dropdown-list': '#29314a',\r\n '--btncancel': 'transparent',\r\n '--primary-light': '#a75872',\r\n '--primary-dark': '#202534',\r\n '--light-d-light': '#fff',\r\n '--ldl-text': '#fff',\r\n '--light-d-accent': '#a75872',\r\n '--readonly-bg': 'rgb(96 96 96 / 45%)',\r\n\r\n '--var-icon-font': '\"FILL\" 0, \"wght\" 200, \"GRAD\" 0, \"opsz\" 48',\r\n\r\n '--rocket-icon': '/assets/images/rocket-ship_light.svg'\r\n }\r\n }\r\n];\r\n\r\nexport const FontSetList: FontSet[] = [\r\n {\r\n name: 'Medium',\r\n key: 'medium',\r\n properties: {\r\n '--base-font-size': '13px',\r\n '--font-11': '11px',\r\n '--font-12': '12px',\r\n '--font-13': '13px',\r\n '--font-14': '14px',\r\n '--font-15': '15px',\r\n '--font-16': '16px',\r\n '--font-17': '17px',\r\n '--font-18': '18px',\r\n '--font-19': '19px',\r\n '--font-20': '20px',\r\n '--font-21': '21px',\r\n '--font-24': '24px',\r\n '--font-26': '26px'\r\n }\r\n },\r\n {\r\n name: 'Large',\r\n key: 'large',\r\n properties: {\r\n '--base-font-size': '15px',\r\n '--font-11': '13px',\r\n '--font-12': '14px',\r\n '--font-13': '15px',\r\n '--font-14': '16px',\r\n '--font-15': '17px',\r\n '--font-16': '18px',\r\n '--font-17': '19px',\r\n '--font-18': '20px',\r\n '--font-19': '21px',\r\n '--font-20': '22px',\r\n '--font-21': '23px',\r\n '--font-24': '28px',\r\n '--font-26': '30px'\r\n }\r\n }\r\n];\r\nexport const fontRangeSetList: FontSet[] = [\r\n {\r\n name: '13',\r\n key: '13',\r\n properties: {\r\n '--base-font-size': '13px',\r\n }\r\n },\r\n {\r\n name: '14',\r\n key: '14',\r\n properties: {\r\n '--base-font-size': '14px',\r\n '--font-14': '15px',\r\n '--font-12': '13px',\r\n '--font-18': '19px',\r\n }\r\n },\r\n {\r\n name: '15',\r\n key: '15',\r\n properties: {\r\n '--base-font-size': '15px',\r\n '--font-14': '16px',\r\n '--font-12': '14px',\r\n '--font-18': '20px',\r\n }\r\n },\r\n {\r\n name: '16',\r\n key: '16',\r\n properties: {\r\n '--base-font-size': '16px',\r\n '--font-14': '17px',\r\n '--font-12': '15px',\r\n '--font-18': '21px',\r\n }\r\n },\r\n {\r\n name: '17',\r\n key: '17',\r\n properties: {\r\n '--base-font-size': '17px',\r\n '--font-14': '18px',\r\n '--font-12': '16px',\r\n '--font-18': '22px',\r\n }\r\n },\r\n {\r\n name: '18',\r\n key: '18',\r\n properties: {\r\n '--base-font-size': '18px',\r\n '--font-14': '19px',\r\n '--font-12': '17px',\r\n '--font-18': '23px',\r\n }\r\n },\r\n {\r\n name: '19',\r\n key: '19',\r\n properties: {\r\n '--base-font-size': '19px',\r\n '--font-14': '20px',\r\n '--font-12': '18px',\r\n '--font-18': '24px',\r\n }\r\n },\r\n {\r\n name: '20',\r\n key: '20',\r\n properties: {\r\n '--base-font-size': '20px',\r\n '--font-14': '21px',\r\n '--font-18': '24px',\r\n }\r\n }\r\n];\r\n","import { Injectable } from '@angular/core';\r\nimport { FontSet, Theme } from '../constants/common.entities';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ThemeService {\r\n private active?: any;\r\n private activeFont?: any;\r\n\r\n constructor() {\r\n // This is intentional\r\n }\r\n\r\n setActiveTheme(theme: Theme): void {\r\n this.active = theme;\r\n Object.keys(this.active.properties).forEach(property => {\r\n document.documentElement.style.setProperty(property, this.active.properties[property]);\r\n });\r\n }\r\n\r\n setActiveFont(Fontset: FontSet): void {\r\n this.activeFont = Fontset;\r\n if(this.activeFont){\r\n Object.keys(this.activeFont?.properties).forEach(property => {\r\n document.documentElement.style.setProperty(property, this.activeFont?.properties[property]);\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { HttpService } from './http.service';\r\nimport { ThemeService } from './theme.service';\r\nimport { SessionStorageService, PICS_CORE_SESSION_STORAGE } from '@pics-core/common-utils';\r\nimport { FontSetList, themeList } from '../constants/theme-constants';\r\nimport { UserConfig } from '../urls/rbac-url.config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProfileService {\r\n profileImage: Subject<any> = new Subject();\r\n constructor(\r\n private httpService: HttpService,\r\n private themeService: ThemeService,\r\n @Inject(PICS_CORE_SESSION_STORAGE) private localstorage: SessionStorageService\r\n ) {}\r\n\r\n setUserPreference() {\r\n const user_id = this.localstorage.getItem('id');\r\n if (user_id) {\r\n this.getUserPreference(user_id).subscribe((res: any) => {\r\n if (res.data && res.data?.config) {\r\n const configArray = JSON.parse(res.data.config);\r\n this.setTheme(configArray.theme);\r\n this.setFont(configArray.font);\r\n }\r\n });\r\n }\r\n }\r\n setTheme(event) {\r\n this.localstorage.setItem('SELECTED_THEME', event);\r\n const selectedTheme = themeList.filter(theme => theme.key === event)[0];\r\n this.themeService.setActiveTheme(selectedTheme);\r\n console.log('Selected Theme:', selectedTheme.key);\r\n }\r\n setFont(event) {\r\n this.localstorage.setItem('SELECTED_FONT', event);\r\n const selectedFont = FontSetList.filter(fontSet => fontSet.key === event)[0];\r\n this.themeService.setActiveFont(selectedFont);\r\n }\r\n\r\n getProfile(img: any) {\r\n this.profileImage.next(img);\r\n }\r\n\r\n getAllUserList(key?: string): Observable<any> {\r\n return this.httpService.get(`${UserConfig.EndPoint.User.getAllUserList}/${key}`);\r\n }\r\n getAllUserOrgList(orgid: any) {\r\n return this.httpService.get(UserConfig.EndPoint.User.getAllUserOrgList + orgid);\r\n }\r\n getUserPreference(id) {\r\n return this.httpService.get(UserConfig.EndPoint.User.getUserConfig.replace('{id}', id));\r\n }\r\n updateUser(data: any, userid: string) {\r\n return this.httpService.patch(`${UserConfig.EndPoint.User.getAllUserList}/${userid}/updateUserDetails`, data);\r\n }\r\n saveUserPreference(data) {\r\n return this.httpService.post(UserConfig.EndPoint.User.saveUserConfig, data);\r\n }\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, Input, Renderer2 } from '@angular/core';\r\nimport { PermissionStore } from '../permissions/permission.store';\r\n\r\n\r\n\r\n@Directive({\r\n selector: '[fieldKey]',\r\n standalone: false\r\n})\r\nexport class PermissionDirective implements AfterViewInit {\r\n @Input() fieldKey!: string;\r\n permissions: any;\r\n constructor(\r\n private readonly renderer: Renderer2,\r\n private elementRef: ElementRef,\r\n private dataStore: PermissionStore\r\n ) {\r\n }\r\n ngAfterViewInit() {\r\n const permissions = this.dataStore.state;\r\n if (permissions) {\r\n if (!permissions[this.fieldKey]) {\r\n const template = this.elementRef.nativeElement;\r\n if (template.tagName === 'A') {\r\n if (template) {\r\n const r = document.createElement(this.elementRef.nativeElement.tagName.toLowerCase());\r\n r.innerHTML = template.innerHTML;\r\n r.href = 'javascript:void(0);';\r\n r['disabled'] = true;\r\n r.className = template.className;\r\n this.elementRef.nativeElement.parentNode.replaceChild(r, template);\r\n }\r\n } else if (\r\n template.tagName === 'P-MULTISELECT' ||\r\n template.tagName === 'P-DROPDOWN' ||\r\n template.tagName === 'P-CHECKBOX' ||\r\n template.tagName === 'P-TREESELECT' ||\r\n template.tagName === 'P-RADIOBUTTON' ||\r\n template.tagName === 'P-CALENDAR'\r\n ) {\r\n if (template) {\r\n const r = document.createElement(this.elementRef.nativeElement.tagName.toLowerCase());\r\n r.innerHTML = template.innerHTML;\r\n r.className = template.className;\r\n r.className += ' p-disabled';\r\n this.elementRef.nativeElement.parentNode.replaceChild(r, template);\r\n }\r\n } else {\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', 'true');\r\n const childInputNodes = this.elementRef.nativeElement.querySelectorAll(\r\n 'input, select, textarea, button, a, ng-select, div, lable'\r\n );\r\n childInputNodes.forEach((elem: any) => {\r\n this.renderer.setAttribute(elem, 'disabled', 'true');\r\n });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Directive, Input, OnInit, TemplateRef, ViewContainerRef, Inject } from '@angular/core';\r\nimport { PermissionStore } from '../permissions/permission.store';\r\nimport { SessionStorageService, PICS_CORE_SESSION_STORAGE } from '@pics-core/common-utils';\r\n\r\n@Directive({\r\n selector: '[showField]',\r\n standalone: false\r\n})\r\nexport class ShowFieldDirective implements OnInit {\r\n @Input() showField!: string;\r\n\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainer: ViewContainerRef,\r\n private dataStore: PermissionStore,\r\n @Inject(PICS_CORE_SESSION_STORAGE) private localstore: SessionStorageService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n const permissions = this.dataStore.state;\r\n if (!permissions || !permissions[this.showField]) {\r\n this.viewContainer.clear();\r\n } else {\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n const lookupIds = this.localstore.getItem('LOOKUP_IDS');\r\n if (lookupIds) {\r\n const lookupIdArray = lookupIds.split(',');\r\n Object.entries(permissions)\r\n .filter(item => item[0].startsWith('GALKP_'))\r\n .forEach(([key, value]) => {\r\n for (const _value of <[]>value) {\r\n const _key = key.replace('GALKP_', '');\r\n if (\r\n _key === this.showField &&\r\n lookupIdArray.includes(String(_value['lookupid'])) &&\r\n _value['action'] === 'H'\r\n ) {\r\n this.viewContainer.clear();\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PermissionDirective } from './permission.directive';\r\nimport { ShowFieldDirective } from './show-field.directives';\r\n\r\n@NgModule({\r\n declarations: [PermissionDirective, ShowFieldDirective],\r\n imports: [CommonModule],\r\n exports: [PermissionDirective, ShowFieldDirective]\r\n})\r\nexport class DirectivesModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AlertComponent } from './alert.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [AlertComponent],\r\n exports: [AlertComponent]\r\n})\r\nexport class AlertModule {}\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ConfigLoginSettingsComponent } from './config-login-settings/config-login-settings.component';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AccordionModule } from 'primeng/accordion';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { CardModule } from 'primeng/card';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmPopupModule } from 'primeng/confirmpopup';\r\nimport { ContextMenuModule } from 'primeng/contextmenu';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { EditorModule } from 'primeng/editor';\r\nimport { FieldsetModule } from 'primeng/fieldset';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { InputMaskModule } from 'primeng/inputmask';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { KnobModule } from 'primeng/knob';\r\nimport { MessageModule } from 'primeng/message';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { OrderListModule } from 'primeng/orderlist';\r\nimport { PasswordModule } from 'primeng/password';\r\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { SpeedDialModule } from 'primeng/speeddial';\r\nimport { StepsModule } from 'primeng/steps';\r\nimport { TableModule } from 'primeng/table';\r\nimport { TabMenuModule } from 'primeng/tabmenu';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { TreeSelectModule } from 'primeng/treeselect';\r\nimport { DirectivesModule } from '../@core/directives/directives.module';\r\nimport { AlertModule } from '../@shared/alert/alert.module';\r\nimport { QuillModule } from 'ngx-quill';\r\nimport { ConfigLoginPreviewComponent } from './config-login-preview/config-login-preview.component';\r\nimport { EmpowerComponentsModule } from '@pics-core/empower-ui';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ConfigLoginSettingsComponent,\r\n ConfigLoginPreviewComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgbModule,\r\n TabMenuModule,\r\n TabViewModule,\r\n TreeSelectModule,\r\n HttpClientModule,\r\n CheckboxModule,\r\n DropdownModule,\r\n CardModule,\r\n ConfirmDialogModule,\r\n AccordionModule,\r\n MessageModule,\r\n TableModule,\r\n InputTextModule,\r\n CalendarModule,\r\n EditorModule,\r\n FieldsetModule,\r\n ButtonModule,\r\n RadioButtonModule,\r\n InputTextareaModule,\r\n InputMaskModule,\r\n StepsModule,\r\n ToastModule,\r\n RippleModule,\r\n AvatarModule,\r\n BadgeModule,\r\n MultiSelectModule,\r\n InputSwitchModule,\r\n ProgressSpinnerModule,\r\n SpeedDialModule,\r\n OrderListModule,\r\n FileUploadModule,\r\n DialogModule,\r\n PasswordModule,\r\n KnobModule,\r\n SidebarModule,\r\n ContextMenuModule,\r\n ConfirmPopupModule,\r\n DirectivesModule,\r\n AlertModule,\r\n QuillModule.forRoot(),\r\n EmpowerComponentsModule,\r\n ],\r\n exports: [ConfigLoginSettingsComponent],\r\n schemas: [NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\nexport class PicsConfigLoginSettingsModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ShareDataService {\r\n\r\n public data = new BehaviorSubject<string>('');\r\n\r\n constructor() {}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { ConfigLoginSettingsComponent } from './config-login-settings.component';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { PermissionStore } from './@core/permissions/permission.store';\r\nimport { AlertService } from './@core/service/alert.service';\r\nimport { AppService } from './@core/service/app.service';\r\nimport { AuthGuard } from './@core/service/auth.guard';\r\nimport { AuthService } from './@core/service/auth.service';\r\nimport { AuthStore } from './@core/service/auth.store';\r\nimport { CredentialsService } from './@core/service/credentials.service';\r\nimport { DataStoreService } from './@core/service/data-store.service';\r\nimport { DynamicTabPageService } from './@core/service/dynamic-tab-page-service';\r\nimport { HttpService } from './@core/service/http.service';\r\nimport { LocalStorageService } from './@core/service/local-storage.service';\r\nimport { MicrostrategyService } from './@core/service/microstrategy.service';\r\nimport { PageHeaderService } from './@core/service/page-header.service';\r\nimport { ProfileService } from './@core/service/profile.service';\r\nimport { ThemeService } from './@core/service/theme.service';\r\nimport { PicsConfigLoginSettingsModule } from './pics-config-login-settings/pics-config-login-settings.module';\r\nimport { ConfigurationSettingsService } from './@core/service/configuration-settings.service';\r\nimport { AttachmentsService } from './@core/service/attachments.service';\r\nimport { ShareDataService } from './@core/service/share-data.service';\r\nimport { I18nService, PICS_I18N_TRANSLATIONS_PATH } from '@pics-core/common-utils';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ConfigLoginSettingsComponent\r\n ],\r\n imports: [\r\n PicsConfigLoginSettingsModule\r\n ],\r\n exports: [\r\n ConfigLoginSettingsComponent\r\n ],\r\n providers: [\r\n AuthService,\r\n AuthStore,\r\n AuthGuard,\r\n ProfileService,\r\n AppService,\r\n CredentialsService,\r\n DynamicTabPageService,\r\n LocalStorageService,\r\n MicrostrategyService,\r\n PageHeaderService,\r\n ThemeService,\r\n HttpClient,\r\n HttpService,\r\n AlertService,\r\n ConfirmationService,\r\n ConfigurationSettingsService,\r\n AttachmentsService,\r\n PageHeaderService,\r\n PermissionStore,\r\n ShareDataService,\r\n DataStoreService,\r\n { provide: PICS_I18N_TRANSLATIONS_PATH, useValue: '/assets/i18n/configsetting/configsetting' },\r\n I18nService\r\n ]\r\n})\r\nexport class CardiConfigLoginSettingsModule { }\r\n","import { Component, Inject, InjectionToken, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\r\nimport { RBACINFO } from './@core/urls/rbac-url.config';\r\n\r\nexport interface ConfigLoginHostContext {\r\n orgInfo: Observable<string | null>;\r\n permissions: { readonly state: Record<string, unknown> };\r\n authService: unknown;\r\n httpService: unknown;\r\n apiHost: string;\r\n environment: {\r\n mstrURL: string;\r\n applicationid: number;\r\n priority: number;\r\n n8nWorflowUrl: string;\r\n production: boolean;\r\n };\r\n}\r\n\r\nexport const CONFIG_LOGIN_HOST = new InjectionToken<ConfigLoginHostContext>('CONFIG_LOGIN_HOST');\r\n\r\n@Component({\r\n selector: 'pics-config-login-settings-host',\r\n template: `<config-login-settings\r\n [RBACORG]=\"rbacOrg\"\r\n [PERMISSION]=\"permission\"\r\n [configureEvent]=\"configureEvent$\">\r\n </config-login-settings>`,\r\n styleUrls: ['./config-login-settings-host.component.scss'],\r\n standalone: false\r\n})\r\nexport class ConfigLoginSettingsHostComponent implements OnDestroy {\r\n rbacOrg?: RBACINFO;\r\n permission?: Record<string, unknown>;\r\n readonly configureEvent$ = new BehaviorSubject<Record<string, unknown> | null>(null);\r\n private readonly orgSubscription: Subscription;\r\n\r\n constructor(@Inject(CONFIG_LOGIN_HOST) private readonly context: ConfigLoginHostContext) {\r\n this.orgSubscription = context.orgInfo.subscribe(orgId => {\r\n this.permission = context.permissions.state;\r\n this.rbacOrg = Object.assign(new RBACINFO(), {\r\n tokenKey: 'jwt-token',\r\n apiHost: context.apiHost,\r\n others: window.sessionStorage,\r\n orgID: orgId || window.sessionStorage.getItem('orgid'),\r\n environment: context.environment\r\n });\r\n this.configureEvent$.next({\r\n RBACORG: this.rbacOrg,\r\n PERMISSION: this.permission,\r\n AUTHSERVICE: context.authService,\r\n HTTPSERVICE: context.httpService\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.orgSubscription.unsubscribe();\r\n this.configureEvent$.complete();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CardiConfigLoginSettingsModule } from './config-login-settings.module';\r\nimport { ConfigLoginSettingsHostComponent } from './config-login-settings-host.component';\r\n\r\n@NgModule({\r\n declarations: [ConfigLoginSettingsHostComponent],\r\n imports: [\r\n CardiConfigLoginSettingsModule,\r\n RouterModule.forChild([{ path: '', component: ConfigLoginSettingsHostComponent }])\r\n ]\r\n})\r\nexport class ConfigLoginSettingsHostModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.DataSourceService","i3","i7","i2.PlatformSettingsService","i5","i6","i1","i2","AttachmentConfig","i1.HttpService","i1.AlertService","i4","i5.AlertComponent","i8","i9","i10","i11","i13.AlertComponent","i16.ConfigLoginPreviewComponent","ConfigLoginSettingsComponent","i1.PermissionStore","i2.DataStoreService","i4.ConfigLoginSettingsComponent","i2.CredentialsService","i2.HttpService","i2.AlertService","i3.PermissionStore","i4.DataStoreService","i1.ConfigLoginSettingsComponent"],"mappings":"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"}
1
+ {"version":3,"file":"pics-core-platform-settings.mjs","sources":["../../../../projects/pics-core/platform-settings/src/lib/settings-adapters.ts","../../../../projects/pics-core/platform-settings/src/lib/data-source/@core/data-source.url.config.ts","../../../../projects/pics-core/platform-settings/src/lib/data-source/@core/data-source.service.ts","../../../../projects/pics-core/platform-settings/src/lib/data-source/data-source.component.ts","../../../../projects/pics-core/platform-settings/src/lib/data-source/data-source.component.html","../../../../projects/pics-core/platform-settings/src/lib/platform-settings/@core/platform-settings-url.config.ts","../../../../projects/pics-core/platform-settings/src/lib/platform-settings/@core/platform-settings.service.ts","../../../../projects/pics-core/platform-settings/src/lib/platform-settings/platform-settings.component.ts","../../../../projects/pics-core/platform-settings/src/lib/platform-settings/platform-settings.component.html","../../../../projects/pics-core/platform-settings/src/lib/settings-shell.component.ts","../../../../projects/pics-core/platform-settings/src/lib/platform-settings.module.ts","../../../../projects/pics-core/platform-settings/src/lib/settings-routes.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/config-login-settings.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/urls/rbac-url.config.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/store.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/permissions/permission.store.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/data-store.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/constants/app-constants.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/alert.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/http.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/attachments.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/urls/configuration-settings-url.config.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/configuration-settings.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@shared/alert/alert.component.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@shared/alert/alert.component.html","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/pics-config-login-settings/config-login-preview/config-login-preview.component.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/pics-config-login-settings/config-login-preview/config-login-preview.component.html","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/pics-config-login-settings/config-login-settings/config-login-settings.component.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/pics-config-login-settings/config-login-settings/config-login-settings.component.html","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/config-login-settings.component.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/app.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/logger.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/credentials.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/auth.guard.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/urls/dynamic-tab-page-url.config.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/dynamic-tab-page-service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/urls/page-header-url.config.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/page-header.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/auth.state.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/auth.store.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/auth.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/local-storage.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/microstrategy.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/constants/theme-constants.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/theme.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/profile.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/directives/permission.directive.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/directives/show-field.directives.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/directives/directives.module.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@shared/alert/alert.module.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/pics-config-login-settings/pics-config-login-settings.module.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/@core/service/share-data.service.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/config-login-settings.module.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/config-login-settings-host.component.ts","../../../../projects/pics-core/platform-settings/src/lib/login-configuration/config-login-settings-host.module.ts","../../../../projects/pics-core/platform-settings/src/pics-core-platform-settings.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/** The host supplies its authenticated API and existing notification/storage services. */\nexport interface SettingsHttpAdapter {\n get<T = unknown>(url: string): Observable<T>;\n post<T = unknown>(url: string, body: unknown): Observable<T>;\n patch<T = unknown>(url: string, body: unknown): Observable<T>;\n}\n\nexport interface SettingsAlertAdapter {\n success(message: string): void;\n error(message: string): void;\n}\n\nexport interface SettingsStorageAdapter {\n getItem(key: string): string | null;\n setItem(key: string, value: unknown): void;\n}\n\nexport const SETTINGS_HTTP = new InjectionToken<SettingsHttpAdapter>('SETTINGS_HTTP');\nexport const SETTINGS_ALERT = new InjectionToken<SettingsAlertAdapter>('SETTINGS_ALERT');\nexport const SETTINGS_SESSION = new InjectionToken<SettingsStorageAdapter>('SETTINGS_SESSION');\nexport const SETTINGS_LOCAL = new InjectionToken<Pick<SettingsStorageAdapter, 'setItem'>>('SETTINGS_LOCAL');\n","export class DataSourceServiceConfig {\n public static readonly ENDPOINT = {\n setting: {\n getOrganizationDbs: '/database/dataSource/getOrganizationDbs',\n updateData: '/database/DataSource/addOrUpdate',\n getList: '/database/getSchemasByDB/{dbaliasname}',\n schemaCheck: '/database/organization/{organizationid}/{dbaliasname}',\n updateSchema: '/database/addOrganizationSchemaByDB '\n }\n };\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { SETTINGS_HTTP, SettingsHttpAdapter } from '../../settings-adapters';\nimport { DataSourceServiceConfig } from './data-source.url.config';\n\n/**\n * Service for interacting with data sources.\n * Provides methods for fetching, updating, and managing data sources via API calls.\n * @export\n * @class DataSourceService\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DataSourceService {\n /**\n * Creates an instance of DataSourceService.\n * @param {HttpService} httpService\n * @memberof DataSourceService\n */\n constructor(@Inject(SETTINGS_HTTP) private readonly httpService: SettingsHttpAdapter) {\n // This is intentional\n }\n /**\n * Fetches the list of organization databases.\n *\n * @return {*} An observable containing the list of organization databases.\n * @memberof DataSourceService\n */\n getOrganizationDbs(): Observable<unknown> {\n return this.httpService.get(DataSourceServiceConfig.ENDPOINT.setting.getOrganizationDbs);\n }\n /**\n * Retrieves the schema for a given database alias name.\n *\n * @param {string} dbAliasName - The alias name of the database.\n * @return {*} An observable containing the schema details.\n * @memberof DataSourceService\n */\n getSchema(dbAliasName: string): Observable<unknown> {\n return this.httpService.get(DataSourceServiceConfig.ENDPOINT.setting.getList.replace('{dbaliasname}', dbAliasName));\n }\n /**\n * Checks the schema for a given organization ID and database alias name.\n *\n * @param {string | number} id - The organization ID.\n * @param {string} dbaliasname - The alias name of the database.\n * @return {*} An observable containing the schema check result.\n * @memberof DataSourceService\n */\n schemaCheck(id: string | number, dbaliasname: string): Observable<unknown> {\n return this.httpService.get(\n DataSourceServiceConfig.ENDPOINT.setting.schemaCheck\n .replace('{organizationid}', `${id}`)\n .replace('{dbaliasname}', dbaliasname)\n );\n }\n /**\n * Updates data in the system.\n *\n * @param {Record<string, unknown>} data - The data to be updated.\n * @return {*} An observable containing the response after updating the data.\n * @memberof DataSourceService\n */\n updateData(data: Record<string, unknown>): Observable<unknown> {\n return this.httpService.post(DataSourceServiceConfig.ENDPOINT.setting.updateData, data);\n }\n /**\n * Updates the schema list with the provided data.\n *\n * @param {unknown} data - The schema data to be updated (can be an array or object).\n * @return {*} An observable containing the response after updating the schema.\n * @memberof DataSourceService\n */\n updateSchemaList(data: unknown): Observable<unknown> {\n return this.httpService.post(DataSourceServiceConfig.ENDPOINT.setting.updateSchema, data);\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { SETTINGS_ALERT, SettingsAlertAdapter } from '../settings-adapters';\nimport { MenuItem } from 'primeng/api';\nimport { DataSourceService } from './@core/data-source.service';\n\ninterface IReservedFields {\n created_by?: string;\n created_at?: string;\n updated_by?: string;\n updated_at?: string;\n soft_delete?: string;\n audit_enabled?: boolean;\n}\n\n// API response type with snake_case properties - using index signature to avoid naming convention issues\ninterface IReservedFieldsApi {\n [key: string]: string | boolean | undefined;\n}\n\n// API response type with snake_case properties - using index signature to avoid naming convention issues\ninterface IAdditionalInfoApi {\n [key: string]: IReservedFieldsApi | undefined;\n}\n\n// API response type with snake_case properties - using index signature to avoid naming convention issues\ninterface IDatabaseDataApi {\n id: string | number;\n organizationid: string | number;\n dbaliasname: string;\n databasetype: string;\n host: string;\n port: string | number;\n password: string;\n username: string;\n [key: string]: string | number | IAdditionalInfoApi | undefined;\n}\n\ninterface IOrganizationDbResponse {\n data: IDatabaseDataApi;\n}\n\ninterface ISchemaItem {\n name: string;\n}\n\ninterface ISchemaResponse {\n data: ISchemaItem[];\n}\n\ninterface ISchemaCheckItem {\n name: string;\n}\n\ninterface ISchemaCheckResponse {\n data: ISchemaCheckItem[];\n}\n\ninterface IUserData {\n id?: string | number;\n organizationid: string | number;\n databasetype: string;\n host: string;\n port: string | number;\n password: string;\n username: string;\n databaseName?: string;\n dbaliasname: string;\n selectedschemas?: string[];\n created_by?: string;\n created_at?: string;\n updated_by?: string;\n updated_at?: string;\n soft_delete?: string;\n audit_enabled?: boolean;\n}\n\ninterface ISchemaListItem {\n organizationid: string | number;\n dbId: string | number;\n schema: string;\n}\n\ninterface IHttpError {\n error?: {\n message?: string;\n };\n}\n\n/**\n * Component responsible for managing data sources.\n *\n * @export\n * @class DataSourceComponent\n * @implements {OnInit}\n */\n@Component({\n selector: 'app-data-source',\n templateUrl: './data-source.component.html',\n styleUrls: ['./data-source.component.scss'],\n standalone: false\n})\nexport class DataSourceComponent implements OnInit {\n items: MenuItem[] = [];\n activeItem!: MenuItem;\n isEdit: boolean = false;\n schema: string[] = [];\n value!: string;\n userid: string | number | null = null;\n dbaliasname: string | null = null;\n organizationid: string | number | null = null;\n settingForm!: UntypedFormGroup;\n checkedSchema: ISchemaCheckItem[] = [];\n selectSchema: string[] = [];\n listSchema: ISchemaListItem[] = [];\n auditEnabledList = [\n {\n key: 'Yes',\n value: true\n },\n {\n key: 'No',\n value: false\n }\n ];\n auditEnabled: boolean | null = null;\n\n /**\n * Creates an instance of DataSourceComponent.\n * @param {AlertService} alertService\n * @param {UntypedFormBuilder} formBuilder\n * @param {DataSourceService} settingService\n * @memberof DataSourceComponent\n */\n constructor(\n @Inject(SETTINGS_ALERT) private readonly alertService: SettingsAlertAdapter,\n private readonly formBuilder: UntypedFormBuilder,\n private readonly settingService: DataSourceService\n ) {\n // This is intentional\n }\n\n\n /**\n * Lifecycle hook that is called after data-bound properties are initialized.\n */\n ngOnInit(): void {\n this.getOrganizationDbs();\n this.initializeForm();\n this.isEdit = false;\n this.settingForm.disable();\n }\n\n /**\n * Initializes the setting form with default values and validators.\n */\n initializeForm(): void {\n this.settingForm = this.formBuilder.group({\n id: ['', Validators.required],\n organizationid: ['', Validators.required],\n databasetype: ['', Validators.required],\n host: [''],\n port: ['', Validators.required],\n password: ['', Validators.required],\n username: ['', [Validators.required, Validators.pattern('^[0-9a-zA-Z._-]+[@][0-9a-zA-Z._-]+[.][0-9a-zA-Z]{2,}$')]],\n databaseName: ['', Validators.required],\n dbaliasname: ['', Validators.required],\n selectedschemas: ['', Validators.required],\n created_by: ['', Validators.required],\n created_at: ['', Validators.required],\n updated_by: ['', Validators.required],\n updated_at: ['', Validators.required],\n soft_delete: ['', Validators.required],\n audit_enabled: [false, Validators.required]\n });\n }\n\n /**\n * Fetches organization databases and updates the form values accordingly.\n */\n getOrganizationDbs(): void {\n this.settingService.getOrganizationDbs().subscribe((res: IOrganizationDbResponse | unknown) => {\n const apiData = (res as IOrganizationDbResponse).data;\n this.userid = apiData.id;\n this.organizationid = apiData.organizationid;\n this.dbaliasname = apiData.dbaliasname;\n\n // Map API response (snake_case) to internal format (camelCase)\n const additionalInfo = apiData['additionalinfo'] as IAdditionalInfoApi | undefined;\n const reservedFieldsApi = additionalInfo?.['reserved_fields'] as IReservedFieldsApi | undefined;\n // Justification: With exactOptionalPropertyTypes, TypeScript doesn't allow explicitly assigning undefined to optional properties.\n // However, the API response may contain undefined values that need to be mapped to optional properties.\n // Using ts-ignore to allow this mapping while maintaining the existing logic and avoiding ESLint complexity.\n // @ts-ignore - exactOptionalPropertyTypes: API response mapping requires handling undefined values for optional properties\n const reservedFields: IReservedFields = reservedFieldsApi ? {\n created_by: reservedFieldsApi['created_by'] as string | undefined,\n created_at: reservedFieldsApi['created_at'] as string | undefined,\n updated_by: reservedFieldsApi['updated_by'] as string | undefined,\n updated_at: reservedFieldsApi['updated_at'] as string | undefined,\n soft_delete: reservedFieldsApi['soft_delete'] as string | undefined,\n audit_enabled: reservedFieldsApi['audit_enabled'] as boolean | undefined\n } : {};\n\n this.settingForm.patchValue({\n id: apiData.id,\n organizationid: apiData.organizationid,\n databasetype: apiData.databasetype,\n host: apiData.host,\n port: apiData.port,\n password: apiData.password,\n username: apiData.username,\n databaseName: apiData['database_name'] as string,\n dbaliasname: apiData.dbaliasname,\n created_by: reservedFields.created_by || '',\n created_at: reservedFields.created_at || '',\n updated_by: reservedFields.updated_by || '',\n updated_at: reservedFields.updated_at || '',\n soft_delete: reservedFields.soft_delete || '',\n audit_enabled: reservedFields.audit_enabled || false\n });\n if (reservedFields.audit_enabled === true) {\n this.editStatus();\n }\n this.schemaSelect();\n this.schemaCheckData();\n });\n }\n\n /**\n * Adds or updates a user based on the form values.\n */\n addUser(): void {\n this.isEdit = true;\n this.settingForm.enable();\n const userData = this.settingForm.getRawValue();\n if (this.settingForm.valid) {\n this.validUser(userData);\n }\n if (!this.userid) {\n this.userWithOutId(userData);\n } else {\n this.userWithID(userData);\n }\n }\n\n /**\n * Validates user data before submission.\n *\n * @param {IUserData} _userData\n * @memberof DataSourceComponent\n */\n validUser(_userData: IUserData): void {\n _userData.id = this.userid as string | number;\n _userData.organizationid = _userData.organizationid || '';\n _userData.databasetype = _userData.databasetype || '';\n _userData.host = _userData.host || '';\n _userData.port = _userData.port || '';\n _userData.password = _userData.password || '';\n _userData.username = _userData.username || '';\n _userData.databaseName = _userData.databaseName || '';\n _userData.dbaliasname = _userData.dbaliasname || '';\n }\n\n /**\n * Handles adding a user without an ID.\n *\n * @param {IUserData} _userData\n * @memberof DataSourceComponent\n */\n userWithOutId(_userData: IUserData): void {\n // Reference this to satisfy class-methods-use-this\n if (this.isEdit && _userData) {\n console.log('User without ID:', _userData);\n }\n }\n\n /**\n * Handles adding or updating a user with an ID.\n *\n * @param {IUserData} data\n * @memberof DataSourceComponent\n */\n userWithID(data: IUserData): void {\n this.listSchema.push(...this.buildSchemaPayload(data));\n const { created_by, created_at, updated_at, updated_by, soft_delete, audit_enabled, ...dbConfig } = data;\n const newConfig = {\n ...dbConfig,\n additionalinfo: {\n reserved_fields: {\n created_by,\n created_at,\n updated_by,\n updated_at,\n soft_delete,\n audit_enabled\n }\n }\n };\n this.settingService.updateData(newConfig).subscribe(\n () => {\n this.schemaUpdate(this.listSchema);\n this.getOrganizationDbs();\n this.isEdit = false;\n this.alertService.success(' Updated successfully');\n\n this.settingForm.disable();\n },\n (err: IHttpError) => {\n if (err.error?.message) {\n this.alertService.error(err.error.message);\n } else {\n this.alertService.error('Failed to update');\n }\n }\n );\n }\n\n\n /** * Builds the payload for schema update based on the selected schemas and organization/user IDs.\n *\n * @param {any} data - The form data containing selected schemas.\n * @returns {ISchemaListItem[]} An array of schema list items to be updated.\n * @memberof DataSourceComponent\n */\n private buildSchemaPayload(data: any): ISchemaListItem[] {\n const organizationid = this.organizationid ?? '';\n const dbId = this.userid ?? '';\n\n if (data?.selectedschemas?.length > 0) {\n return data.selectedschemas.map((schema: string) => ({\n organizationid,\n dbId,\n schema: schema ?? ''\n }));\n }\n\n return [{\n organizationid,\n dbId,\n schema: this.selectSchema?.[0] ?? ''\n }];\n }\n\n /**\n * Updates the schema list.\n *\n * @param {ISchemaListItem[]} data\n * @memberof DataSourceComponent\n */\n schemaUpdate(data: ISchemaListItem[]): void {\n this.settingService.updateSchemaList(data).subscribe(\n () => {\n this.schemaCheckData();\n this.listSchema = [];\n },\n (err: IHttpError) => {\n const errorMessage = err.error?.message ? err.error.message : 'Failed to update';\n this.alertService.error(errorMessage);\n }\n );\n }\n\n /**\n * Cancels the edit operation and restores the original values.\n */\n cancel(): void {\n this.getOrganizationDbs();\n this.isEdit = false;\n this.settingForm.disable();\n }\n\n /**\n * Enables edit mode for modifying form values.\n */\n editStatus(): void {\n this.isEdit = true;\n this.settingForm.enable();\n }\n\n /**\n * Fetches schema list from the server.\n */\n schemaSelect(): void {\n if (this.dbaliasname) {\n this.settingService.getSchema(this.dbaliasname).subscribe((res: ISchemaResponse | unknown) => {\n console.log(res);\n (res as ISchemaResponse).data.forEach(element => {\n this.schema.push(element.name);\n });\n console.log(this.schema);\n });\n }\n }\n\n /**\n * Checks and updates schema selection data.\n */\n schemaCheckData(): void {\n if (this.organizationid && this.dbaliasname) {\n this.settingService.schemaCheck(this.organizationid, this.dbaliasname).subscribe((res: ISchemaCheckResponse | unknown) => {\n console.log(res);\n this.checkedSchema = (res as ISchemaCheckResponse).data;\n this.selectSchema = this.schema.filter(a => this.checkedSchema.some(b => b.name === a)).map(a => a);\n });\n }\n }\n}\n","<div [formGroup]=\"settingForm\">\n <p-card styleClass=\"w-100 mt-2 mb-3 shadow-sm\">\n <ng-template pTemplate=\"header\">\n Audit Field Mapping\n </ng-template>\n <div class=\"p-fluid p-formgrid row audit-enabled-radio\">\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\n <label for=\"db_audit_enabled\" class=\"intake-form-labels\">Audit Field Enabled</label>\n <div class=\"clearfix\">\n <div *ngFor=\"let category of auditEnabledList\" class=\"field-checkbox\">\n <p-radioButton [inputId]=\"category.key\" name=\"audit_enabled\" [value]=\"category.value\"\n formControlName=\"audit_enabled\"></p-radioButton>\n <label [for]=\"category.key\">{{category.key}}</label>\n </div>\n </div>\n </div>\n @if (settingForm.value.audit_enabled) {\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\n <label for=\"db_created_by\" class=\"intake-form-labels\">Created By</label>\n <input id=\"db_created_by\" aria-labelledby=\"template\" class=\"form-control\" type=\"text\"\n formControlName=\"created_by\" placeholder=\"Enter DB Created BY\" pInputText />\n </div>\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\n <label for=\"db_created_at\" class=\"intake-form-labels\">Created At</label>\n <input id=\"db_created_at\" aria-labelledby=\"template\" class=\"form-control\" type=\"text\"\n formControlName=\"created_at\" placeholder=\"Enter DB Created At\" pInputText />\n </div>\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\n <label for=\"db_updated_by\" class=\"intake-form-labels\">Updated By</label>\n <input id=\"db_updated_by\" aria-labelledby=\"template\" class=\"form-control\" type=\"text\"\n formControlName=\"updated_by\" placeholder=\"Enter DB Updated By\" pInputText />\n </div>\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\n <label for=\"db_updated_at\" class=\"intake-form-labels\">Updated At</label>\n <input id=\"db_updated_at\" aria-labelledby=\"template\" class=\"form-control\" type=\"text\"\n formControlName=\"updated_at\" placeholder=\"Enter DB Updated At\" pInputText />\n </div>\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\n <label for=\"db_soft_delete\" class=\"intake-form-labels\">Soft Delete</label>\n <input id=\"db_soft_delete\" aria-labelledby=\"template\" class=\"form-control\" type=\"text\"\n formControlName=\"soft_delete\" placeholder=\"Enter DB Soft Delete\" pInputText />\n </div>\n }\n </div>\n </p-card>\n\n <div class=\"p-fluid p-formgrid row\">\n <div class=\"p-field col-md-12 col-12 text-md-right\">\n <button class=\"mb-2 btn bg-white text-primary btncancel\" (click)=\"cancel()\">\n Cancel\n </button>\n @if (userid && isEdit === false) {\n <button class=\"mb-2 btn btn-primary btncommon\" (click)=\"editStatus()\">\n Edit\n </button>\n }\n @if (userid && isEdit === true) {\n <button class=\"mb-2 btn btn-primary btncommon\" (click)=\"addUser()\">\n Update\n </button>\n }\n </div>\n </div>\n</div>\n","export class PlatformSettingsConfig {\n public static readonly ENDPOINT = {\n configSettings: {\n getConfigList: '/org/config-settings/list',\n getConfigById: '/org/config-settings/list?id=',\n saveConfig: '/org/config-settings/create',\n updateConfig: '/org/config-settings/',\n datetimeFomrat: '/platform/master/lookup/lookupbycategoryname/DATETIME_FORMAT',\n timezone: '/platform/master/lookup/lookupbycategoryname/TIMEZONE',\n getConfigurationsByOrgId: '/org/config-settings/listbyOrgId/'\n }\n };\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { PlatformSettingsConfig } from './platform-settings-url.config';\nimport { SETTINGS_HTTP, SettingsHttpAdapter } from '../../settings-adapters';\nimport { IDatetimeFormatListResponse } from './platform-settings.interface';\n\n/**\n * Service to manage platform settings.\n *\n * @export\n * @class PlatformSettingsService\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class PlatformSettingsService {\n constructor(@Inject(SETTINGS_HTTP) private readonly httpService: SettingsHttpAdapter) {\n // Intentional\n }\n /**\n * Retrieves the list of platform configuration settings.\n *\n * @return {*} An observable containing the configuration list.\n * @memberof PlatformSettingsService\n */\n getConfigList(): Observable<unknown> {\n return this.httpService.get(PlatformSettingsConfig.ENDPOINT.configSettings.getConfigList);\n }\n /**\n * Retrieves platform configuration details by ID.\n *\n * @param {string | number} id - The ID of the configuration.\n * @return {*} An observable containing the configuration details.\n * @memberof PlatformSettingsService\n */\n getConfigById(id: string | number): Observable<unknown> {\n return this.httpService.get(PlatformSettingsConfig.ENDPOINT.configSettings.getConfigById + id);\n }\n /**\n * Saves platform configuration settings.\n *\n * @param {unknown} modal - The configuration data to be saved.\n * @return {*} An observable indicating the save operation status.\n * @memberof PlatformSettingsService\n */\n saveConfigSettings(modal: unknown): Observable<unknown> {\n return this.httpService.post(PlatformSettingsConfig.ENDPOINT.configSettings.saveConfig, modal);\n }\n /**\n * Updates platform configuration settings by ID.\n *\n * @param {string | number} id - The ID of the configuration to update.\n * @param {unknown} modal - The updated configuration data.\n * @return {*} An observable indicating the update operation status.\n * @memberof PlatformSettingsService\n */\n updateConfig(id: string | number, modal: unknown): Observable<unknown> {\n return this.httpService.patch(PlatformSettingsConfig.ENDPOINT.configSettings.updateConfig + id, modal);\n }\n /**\n * Retrieves the list of all available date-time formats.\n *\n * @return {*} An observable containing the list of date-time formats.\n * @memberof PlatformSettingsService\n */\n getAllDatetimeFormatList(): Observable<IDatetimeFormatListResponse> {\n return this.httpService.get<IDatetimeFormatListResponse>(PlatformSettingsConfig.ENDPOINT.configSettings.datetimeFomrat);\n }\n\n getAllTimezoneList() {\n return this.httpService.get(PlatformSettingsConfig.ENDPOINT.configSettings.timezone);\n }\n\n /**\n * Fetches configuration settings for a specific organization by its ID.\n *\n * @param {string | number} id - The ID of the organization.\n * @return {*} An observable containing the organization's configuration settings.\n * @memberof PlatformSettingsService\n */\n getConfigurationsByOrgId(id: string | number): Observable<unknown> {\n return this.httpService.get(PlatformSettingsConfig.ENDPOINT.configSettings.getConfigurationsByOrgId + id);\n }\n}\n","import { ChangeDetectorRef, Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { SETTINGS_ALERT, SETTINGS_LOCAL, SETTINGS_SESSION, SettingsAlertAdapter, SettingsStorageAdapter } from '../settings-adapters';\nimport { PlatformSettingsService } from './@core/platform-settings.service';\nimport { IDatetimeFormatItem, IDatetimeFormatItemApi, IDatetimeFormatListResponse } from './@core/platform-settings.interface';\nimport { Timezone, TimezoneData } from './@core/timezone.interface';\n\n/** Upper bounds mirroring the server-side validation on `config_settings`. */\nconst MAX_IDLE_TIMEOUT_MINUTES = 480;\nconst MAX_IDLE_WARNING_SECONDS = 300;\n\ninterface IConfigSettings {\n id: number;\n organizationid: number | string;\n organization_title?: string;\n layout: number | string;\n datetimeformat: string;\n timezone?: string;\n idleTimeout?: number | null;\n idleWarning?: number | null;\n isIdleMonitorEnabled?: boolean | null;\n}\n\ninterface IPlatformConfigOption {\n id: number;\n organization_title: string;\n}\n\n/**\n * Manages platform settings, including configuration and date-time formats\n *\n * @export\n * @class PlatformSettingsComponent\n * @implements {OnInit}\n */\n@Component({\n selector: 'app-platform-settings',\n templateUrl: './platform-settings.component.html',\n styleUrls: ['./platform-settings.component.scss'],\n standalone: false\n})\nexport class PlatformSettingsComponent implements OnInit, OnDestroy {\n loginEvent$: BehaviorSubject<unknown>;\n orgId: string | number | null;\n userid = '';\n updateButton = false;\n configRegistrationForm!: UntypedFormGroup;\n editConfigSettings: IConfigSettings | null = null;\n datetimeFomatList: IDatetimeFormatItem[] = [];\n tabErrorShow = false;\n public timezoneList: TimezoneData[] = [];\n /** Exposed for the template's `[max]` bindings. */\n readonly maxIdleTimeout = MAX_IDLE_TIMEOUT_MINUTES;\n readonly maxIdleWarning = MAX_IDLE_WARNING_SECONDS;\n /** True when the initial config load failed, so a Save must not create a duplicate row. */\n configLoadFailed = false;\n /** Active config_settings rows for the org-title dropdown. */\n configOptions: IPlatformConfigOption[] = [];\n /** Selected pics_core.config_settings.id */\n selectedConfigId: number | null = null;\n /** Show selector when at least one config exists; single row is auto-selected. */\n showOrgDropdown = false;\n /** Last successfully loaded config id (used to revert dirty dropdown switches). */\n private loadedConfigId: number | null = null;\n private readonly destroy$ = new Subject<void>();\n private readonly configSelection$ = new Subject<number>();\n private subscription = new Subscription();\n private idleMonitorEnabledSub: Subscription | null = null;\n\n /**\n * Creates an instance of PlatformSettingsComponent.\n * @param {AlertService} alertService\n * @param {UntypedFormBuilder} _formBuilder\n * @param {PlatformSettingsService} _platformSettingsService\n * @param {LocalStorageService} StorageService\n * @memberof PlatformSettingsComponent\n */\n constructor(\n @Inject(SETTINGS_ALERT) private readonly alertService: SettingsAlertAdapter,\n private readonly _formBuilder: UntypedFormBuilder,\n private readonly _platformSettingsService: PlatformSettingsService,\n @Inject(SETTINGS_LOCAL) private readonly StorageService: Pick<SettingsStorageAdapter, 'setItem'>,\n @Inject(SETTINGS_SESSION) private readonly localstore: SettingsStorageAdapter,\n private readonly cdRef: ChangeDetectorRef\n ) {\n this.loginEvent$ = new BehaviorSubject<unknown>(null);\n this.userid = this.localstore.getItem('id') as string;\n this.orgId = this.localstore.getItem('orgid');\n }\n\n /**\n * Lifecycle hook that is called after data-bound properties are initialized.\n */\n ngOnInit(): void {\n this.initilizeForm();\n this.configSelection$\n .pipe(\n switchMap((configId) => this._platformSettingsService.getConfigById(configId)),\n takeUntil(this.destroy$)\n )\n .subscribe({\n next: (res: unknown) => {\n this.configLoadFailed = false;\n const payload = res as { data?: unknown };\n const record = this.normalizeConfigRecord(payload?.data);\n if (record) {\n this.applyConfigToForm(record);\n } else {\n this.updateButton = false;\n this.editConfigSettings = null;\n this.alertService.error('Selected organization configuration was not found.');\n }\n },\n error: () => {\n this.configLoadFailed = true;\n this.alertService.error('Unable to load platform settings. Please try again.');\n }\n });\n this.loadConfigOptions();\n this.getDateTimeFormat();\n this.getTimezone();\n }\n\n /**\n * Initializes the form with default values and validation rules.\n */\n initilizeForm(): void {\n this.configRegistrationForm = this._formBuilder.group({\n id: [''],\n datetimeformat: ['', Validators.required],\n timezone: ['', Validators.required],\n isIdleMonitorEnabled: [false],\n idleTimeout: [null],\n idleWarning: [null]\n });\n this.idleMonitorEnabledSub = this.configRegistrationForm\n .get('isIdleMonitorEnabled')\n ?.valueChanges.subscribe((isEnabled: boolean) => {\n this.updateIdleFieldValidators(isEnabled);\n }) ?? null;\n this.updateIdleFieldValidators(false);\n }\n\n private updateIdleFieldValidators(isEnabled: boolean): void {\n const idleTimeoutControl = this.configRegistrationForm.get('idleTimeout');\n const idleWarningControl = this.configRegistrationForm.get('idleWarning');\n if (!idleTimeoutControl || !idleWarningControl) {\n return;\n }\n if (isEnabled) {\n idleTimeoutControl.setValidators([Validators.required, Validators.min(1), Validators.max(MAX_IDLE_TIMEOUT_MINUTES)]);\n idleWarningControl.setValidators([Validators.required, Validators.min(1), Validators.max(MAX_IDLE_WARNING_SECONDS)]);\n } else {\n idleTimeoutControl.clearValidators();\n idleWarningControl.clearValidators();\n }\n idleTimeoutControl.updateValueAndValidity({ emitEvent: false });\n idleWarningControl.updateValueAndValidity({ emitEvent: false });\n }\n\n /**\n * Fetches the list of available date-time formats.\n */\n getDateTimeFormat(): void {\n this._platformSettingsService.getAllDatetimeFormatList().subscribe((result: IDatetimeFormatListResponse) => {\n // Map API response (snake_case) to internal format (camelCase)\n this.datetimeFomatList = result.data.map((item: IDatetimeFormatItemApi): IDatetimeFormatItem => {\n const { lc_name: lcName, ...rest } = item;\n return {\n ...rest,\n lcName\n };\n });\n });\n }\n\n /**\n * Loads all active config_settings rows for the dropdown.\n * Even with a single row, the dropdown is shown and that row is auto-selected.\n */\n loadConfigOptions(): void {\n this._platformSettingsService.getConfigList().subscribe({\n next: (res: unknown) => {\n const payload = res as { data?: unknown };\n const list = this.normalizeConfigList(payload?.data);\n this.configOptions = list\n .filter((item) => item?.id != null)\n .map((item) => ({\n id: Number(item.id),\n organization_title: item.organization_title || `Config ${item.id}`\n }));\n this.showOrgDropdown = this.configOptions.length >= 1;\n\n if (!this.configOptions.length) {\n this.selectedConfigId = null;\n this.editConfigSettings = null;\n this.updateButton = false;\n this.configLoadFailed = false;\n return;\n }\n\n const preferredId = this.resolveInitialConfigId(this.configOptions);\n this.onConfigSelectionChange(preferredId);\n },\n error: () => {\n this.configLoadFailed = true;\n this.updateButton = false;\n this.alertService.error('Unable to load platform settings. Please try again.');\n }\n });\n }\n\n /** Dropdown / programmatic selection handler. */\n onConfigSelectionChange(configId: number | null): void {\n if (configId == null || !Number.isFinite(Number(configId))) {\n return;\n }\n const nextId = Number(configId);\n if (nextId === this.loadedConfigId) {\n this.selectedConfigId = nextId;\n return;\n }\n if (this.configRegistrationForm?.dirty) {\n const discard = window.confirm('You have unsaved changes. Discard them and switch organization?');\n if (!discard) {\n this.selectedConfigId = this.loadedConfigId;\n this.cdRef.detectChanges();\n return;\n }\n }\n this.selectedConfigId = nextId;\n this.tabErrorShow = false;\n this.loadSelectedConfig();\n }\n\n /**\n * Loads the selected config_settings row by primary key.\n * Prefer list?id= over listbyOrgId so multi-portal orgs update the intended row.\n * Uses switchMap via configSelection$ so rapid dropdown changes cancel in-flight loads.\n */\n loadSelectedConfig(): void {\n if (this.selectedConfigId == null) {\n return;\n }\n this.configSelection$.next(this.selectedConfigId);\n }\n\n /**\n * Saves or updates platform configuration based on form data.\n */\n saveConfig(): void {\n this.tabErrorShow = true;\n if (this.configRegistrationForm.valid) {\n const formValue = this.configRegistrationForm.value;\n if (this.editConfigSettings?.id != null) {\n this.editConfigSettings.organizationid = parseInt(`${this.editConfigSettings.organizationid}`, 10);\n this.editConfigSettings.layout = parseInt(`${this.editConfigSettings.layout}`, 10);\n this.editConfigSettings.datetimeformat = formValue.datetimeformat;\n this.editConfigSettings.timezone = formValue.timezone;\n this.editConfigSettings.isIdleMonitorEnabled = Boolean(formValue.isIdleMonitorEnabled);\n this.editConfigSettings.idleTimeout = formValue.isIdleMonitorEnabled ? formValue.idleTimeout : null;\n this.editConfigSettings.idleWarning = formValue.isIdleMonitorEnabled ? formValue.idleWarning : null;\n this.updateButton = true;\n const configId = this.editConfigSettings.id;\n this._platformSettingsService\n .updateConfig(configId, this.editConfigSettings)\n .subscribe({\n next: () => {\n this.alertService.success('Updated successfully!');\n this.selectedConfigId = Number(configId);\n this.loadSelectedConfig();\n },\n error: () => {\n // Keep updateButton / editConfigSettings so Save can retry without leaving edit mode.\n this.alertService.error('Unable to update platform settings. Please try again.');\n }\n });\n } else if (this.orgId !== null && !this.configLoadFailed && !this.configOptions.length) {\n // Create only when no config_settings rows exist yet (first-time empty state).\n const inputRequest = {\n organizationid: parseInt(`${this.orgId}`, 10),\n datetimeformat: formValue.datetimeformat,\n timezone: formValue.timezone,\n isIdleMonitorEnabled: Boolean(formValue.isIdleMonitorEnabled),\n idleTimeout: formValue.isIdleMonitorEnabled ? formValue.idleTimeout : null,\n idleWarning: formValue.isIdleMonitorEnabled ? formValue.idleWarning : null\n };\n this.updateButton = true;\n this._platformSettingsService.saveConfigSettings(inputRequest).subscribe({\n next: (res: unknown) => {\n this.alertService.success('Saved successfully!');\n // Prefer the created id so the new row is selected after reload (matches prior newest-row behavior).\n const createdId = this.extractCreatedConfigId(res);\n if (createdId != null) {\n this.selectedConfigId = createdId;\n }\n this.loadConfigOptions();\n },\n error: () => {\n this.updateButton = false;\n this.alertService.error('Unable to save platform settings. Please try again.');\n }\n });\n } else if (this.configLoadFailed) {\n // The existing configuration could not be read, so creating one here would add a\n // second row for an org that already has settings.\n this.alertService.error('Existing platform settings could not be loaded. Please reload the page before saving.');\n } else {\n this.alertService.error('Please select an organization configuration before saving.');\n }\n }\n }\n\n /**\n * Reloads the selected configuration (Cancel) or refreshes the option list.\n */\n getConfigById(): void {\n if (this.selectedConfigId != null) {\n this.loadSelectedConfig();\n return;\n }\n this.loadConfigOptions();\n }\n\n getTimezone(): void {\n this.subscription.add(\n this._platformSettingsService.getAllTimezoneList().subscribe({\n next: (result: Timezone) => {\n if (result.status === 'success') {\n this.timezoneList = result.data;\n }\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.idleMonitorEnabledSub?.unsubscribe();\n this.subscription.unsubscribe();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private applyConfigToForm(record: IConfigSettings): void {\n this.updateButton = true;\n this.editConfigSettings = record;\n this.selectedConfigId = Number(record.id);\n this.loadedConfigId = Number(record.id);\n const isIdleMonitorEnabled = Boolean(record.isIdleMonitorEnabled);\n this.configRegistrationForm.patchValue({\n id: record.id,\n datetimeformat: record.datetimeformat,\n timezone: record?.timezone,\n isIdleMonitorEnabled,\n idleTimeout: record.idleTimeout ?? null,\n idleWarning: record.idleWarning ?? null\n });\n this.updateIdleFieldValidators(isIdleMonitorEnabled);\n // Keep REGISTRATION in sync for consumers (login/register/grid date formats, etc.).\n this.StorageService.setItem('REGISTRATION', this.editConfigSettings);\n this.configRegistrationForm.markAsPristine();\n }\n\n private normalizeConfigList(data: unknown): IConfigSettings[] {\n if (Array.isArray(data)) {\n return data as IConfigSettings[];\n }\n if (data && typeof data === 'object') {\n return [data as IConfigSettings];\n }\n return [];\n }\n\n private normalizeConfigRecord(data: unknown): IConfigSettings | null {\n if (Array.isArray(data)) {\n return (data[0] as IConfigSettings) || null;\n }\n return (data as IConfigSettings) || null;\n }\n\n private resolveInitialConfigId(options: IPlatformConfigOption[]): number {\n const currentId = this.selectedConfigId != null\n ? options.find((o) => o.id === this.selectedConfigId)?.id\n : null;\n if (currentId != null) {\n return currentId;\n }\n // Match previous getConfigById / list behavior: newest row (highest id).\n return [...options].sort((a, b) => b.id - a.id)[0].id;\n }\n\n private extractCreatedConfigId(res: unknown): number | null {\n const payload = res as { data?: { id?: unknown }; id?: unknown } | null;\n const raw = payload?.data?.id ?? payload?.id;\n const parsed = Number(raw);\n return Number.isInteger(parsed) && parsed > 0 ? parsed : null;\n }\n}\n","\n<p-card styleClass=\"w-100 mt-2\">\n <div class=\"p-fluid p-formgrid row\" *ngIf=\"showOrgDropdown\">\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\n <label class=\"intake-form-labels\" for=\"organizationConfig\"\n >Organization\n <span class=\"requiredfield text-danger\">*</span>\n </label>\n <p-dropdown\n styleClass=\"w-100\"\n [options]=\"configOptions\"\n placeholder=\"Select Organization\"\n inputId=\"organizationConfig\"\n optionLabel=\"organization_title\"\n optionValue=\"id\"\n [(ngModel)]=\"selectedConfigId\"\n [ngModelOptions]=\"{standalone: true}\"\n (onChange)=\"onConfigSelectionChange($event.value)\"\n [filter]=\"true\"\n filterBy=\"organization_title\">\n </p-dropdown>\n </div>\n </div>\n\n <div class=\"customizer\" [formGroup]=\"configRegistrationForm\">\n <div class=\"p-fluid p-formgrid row\">\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\n <label class=\"intake-form-labels\" for=\"datetimeFormat\"\n >Date & Time Format\n <span class=\"requiredfield text-danger\">*</span>\n </label>\n <p-dropdown\n styleClass=\"w-100\"\n [options]=\"datetimeFomatList\"\n placeholder=\"Select Date & Time Format\"\n id=\"datetimeFormat\"\n optionLabel=\"lookupvalue\"\n optionValue=\"lookupkey\"\n formControlName=\"datetimeformat\">\n </p-dropdown>\n <div\n *ngIf=\"\n tabErrorShow\n ? configRegistrationForm.controls['datetimeformat'].invalid\n : configRegistrationForm.controls['datetimeformat'].errors &&\n configRegistrationForm.controls['datetimeformat'].touched\n \">\n <div class=\"p-error block mt-1\">Date & Time Format is required </div>\n </div>\n </div>\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\n <label class=\"intake-form-labels\" for=\"timezone\"\n >Time Zone\n <span class=\"requiredfield text-danger\">*</span>\n </label>\n <p-dropdown\n styleClass=\"w-100\"\n [options]=\"timezoneList\"\n placeholder=\"Select Time Zone\"\n id=\"timezone\"\n optionLabel=\"lookupvalue\"\n optionValue=\"lookupvalue\"\n formControlName=\"timezone\">\n </p-dropdown>\n <div\n *ngIf=\"\n tabErrorShow\n ? configRegistrationForm.controls['timezone'].invalid\n : configRegistrationForm.controls['timezone'].errors &&\n configRegistrationForm.controls['timezone'].touched\n \">\n <div class=\"p-error block mt-1\">Timezone is required </div>\n </div>\n </div>\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\n <label class=\"intake-form-labels\" for=\"isIdleMonitorEnabled\">Idle Monitor</label>\n <div class=\"d-flex align-items-center mt-2\">\n <p-inputSwitch\n inputId=\"isIdleMonitorEnabled\"\n formControlName=\"isIdleMonitorEnabled\">\n </p-inputSwitch>\n <label class=\"mb-0 ml-2\" for=\"isIdleMonitorEnabled\">\n {{ configRegistrationForm.get('isIdleMonitorEnabled')?.value ? 'On' : 'Off' }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"p-fluid p-formgrid row\" *ngIf=\"configRegistrationForm.get('isIdleMonitorEnabled')?.value\">\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\n <label class=\"intake-form-labels\" for=\"idleTimeout\"\n >Idle Timeout (minutes)\n <span class=\"requiredfield text-danger\">*</span>\n </label>\n <p-inputNumber\n inputId=\"idleTimeout\"\n styleClass=\"w-100\"\n [min]=\"1\"\n [max]=\"maxIdleTimeout\"\n [maxFractionDigits]=\"0\"\n [useGrouping]=\"false\"\n [showButtons]=\"false\"\n formControlName=\"idleTimeout\"\n placeholder=\"Minutes\">\n </p-inputNumber>\n <div\n *ngIf=\"\n tabErrorShow\n ? configRegistrationForm.controls['idleTimeout'].invalid\n : configRegistrationForm.controls['idleTimeout'].errors &&\n configRegistrationForm.controls['idleTimeout'].touched\n \">\n <div class=\"p-error block mt-1\">Idle Timeout is required and must be between 1 and {{ maxIdleTimeout }} minutes </div>\n </div>\n </div>\n <div class=\"p-field col-lg-4 col-sm-4 col-md-12 col-12\">\n <label class=\"intake-form-labels\" for=\"idleWarning\"\n >Idle Warning (seconds)\n <span class=\"requiredfield text-danger\">*</span>\n </label>\n <p-inputNumber\n inputId=\"idleWarning\"\n styleClass=\"w-100\"\n [min]=\"1\"\n [max]=\"maxIdleWarning\"\n [maxFractionDigits]=\"0\"\n [useGrouping]=\"false\"\n [showButtons]=\"false\"\n formControlName=\"idleWarning\"\n placeholder=\"Seconds\">\n </p-inputNumber>\n <div\n *ngIf=\"\n tabErrorShow\n ? configRegistrationForm.controls['idleWarning'].invalid\n : configRegistrationForm.controls['idleWarning'].errors &&\n configRegistrationForm.controls['idleWarning'].touched\n \">\n <div class=\"p-error block mt-1\">Idle Warning is required and must be between 1 and {{ maxIdleWarning }} seconds </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"text-md-right mt-2\">\n <button\n type=\"button\"\n class=\"btn bg-white text-primary btncancel\"\n *ngIf=\"configRegistrationForm.invalid\"\n (click)=\"getConfigById()\">\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"saveConfig()\">\n {{ updateButton ? 'Update' : 'Submit' }}\n </button>\n </div>\n</p-card>\n","import { Component, Inject, InjectionToken, Type } from '@angular/core';\nimport { MenuItem } from 'primeng/api';\n\nexport interface SettingsPermissionSource {\n readonly state: Record<string, boolean>;\n}\n\nexport const SETTINGS_PERMISSIONS = new InjectionToken<SettingsPermissionSource>('SETTINGS_PERMISSIONS');\nexport const SETTINGS_ALERT_COMPONENT = new InjectionToken<Type<unknown>>('SETTINGS_ALERT_COMPONENT');\n\n@Component({\n selector: 'pics-settings-shell',\n template: `<div class=\"rbac-tab\" [attr.data-subcategory]=\"'Config Settings'\">\n <p-tabMenu [model]=\"items\" [activeItem]=\"activeItem\"></p-tabMenu>\n </div>\n <router-outlet></router-outlet>\n <ng-container *ngComponentOutlet=\"alertComponent\"></ng-container>`,\n standalone: false\n})\nexport class SettingsShellComponent {\n items: MenuItem[] = [];\n activeItem?: MenuItem;\n\n constructor(\n @Inject(SETTINGS_PERMISSIONS) private readonly permissions: SettingsPermissionSource,\n @Inject(SETTINGS_ALERT_COMPONENT) public readonly alertComponent: Type<unknown>\n ) {\n const state = this.permissions.state;\n // Global Search route/code remains in settings-routes; tab nav intentionally omitted (PICS-2753 review).\n this.items = [\n { label: 'Login Configuration', routerLink: ['config-settings'], visible: state.SETTINGS_CONFIG === true },\n { label: 'Data Source', routerLink: ['data-source'], visible: state.SETTINGS_DATA_SRC === true },\n { label: 'Platform', routerLink: ['platform-settings'], visible: state.SETTINGS_PLATFORM === true }\n ];\n this.activeItem = this.items.find(item => item.visible);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { CardModule } from 'primeng/card';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { TabMenuModule } from 'primeng/tabmenu';\nimport { DataSourceComponent } from './data-source/data-source.component';\nimport { DataSourceService } from './data-source/@core/data-source.service';\nimport { PlatformSettingsComponent } from './platform-settings/platform-settings.component';\nimport { PlatformSettingsService } from './platform-settings/@core/platform-settings.service';\nimport { SettingsShellComponent } from './settings-shell.component';\n\n@NgModule({\n declarations: [DataSourceComponent, PlatformSettingsComponent, SettingsShellComponent],\n imports: [CommonModule, RouterModule, FormsModule, ReactiveFormsModule, CardModule, DropdownModule, InputNumberModule, InputSwitchModule, InputTextModule, RadioButtonModule, TabMenuModule],\n providers: [DataSourceService, PlatformSettingsService],\n exports: [DataSourceComponent, PlatformSettingsComponent, SettingsShellComponent]\n})\nexport class PlatformSettingsModule {}\n","import { Component, inject } from '@angular/core';\nimport { CanActivateFn, LoadChildrenCallback, Router, Routes } from '@angular/router';\nimport { DataSourceComponent } from './data-source/data-source.component';\nimport { PlatformSettingsComponent } from './platform-settings/platform-settings.component';\nimport { SETTINGS_PERMISSIONS, SettingsShellComponent } from './settings-shell.component';\n\nexport interface PlatformSettingsRouteOptions {\n loginConfiguration: LoadChildrenCallback;\n globalSearch?: LoadChildrenCallback;\n}\n\n@Component({\n standalone: true,\n template: '<p role=\"alert\">You do not have permission to view Settings.</p>'\n})\nclass SettingsAccessDeniedComponent {}\n\nconst settingsAccessGuard: CanActivateFn = (route) => {\n const permissions = inject(SETTINGS_PERMISSIONS).state;\n const router = inject(Router);\n const requiredKey = route.data['permissionKey'] as string;\n if (permissions[requiredKey] === true) return true;\n\n const settingsPath = route.parent?.pathFromRoot.flatMap(snapshot => snapshot.url.map(segment => segment.path)) ?? [];\n const allowed = [\n ['SETTINGS_CONFIG', 'config-settings'],\n ['SETTINGS_DATA_SRC', 'data-source'],\n ['SETTINGS_PLATFORM', 'platform-settings'],\n ['GLOBAL_SEARCH', 'global-search']\n ].find(([key, path]) => permissions[key] === true && route.parent?.routeConfig?.children?.some(child => child.path === path));\n\n return router.createUrlTree(['/', ...settingsPath, allowed?.[1] ?? 'access-denied']);\n};\n\n/** Complete Settings route tree. The host supplies only its solution-specific lazy modules. */\nexport function createPlatformSettingsRoutes(options: PlatformSettingsRouteOptions): Routes {\n const children: Routes = [\n { path: 'data-source', component: DataSourceComponent, canActivate: [settingsAccessGuard], data: { permissionKey: 'SETTINGS_DATA_SRC' } },\n { path: 'config-settings', loadChildren: options.loginConfiguration, canActivate: [settingsAccessGuard], data: { permissionKey: 'SETTINGS_CONFIG' } },\n { path: 'platform-settings', component: PlatformSettingsComponent, canActivate: [settingsAccessGuard], data: { permissionKey: 'SETTINGS_PLATFORM' } }\n ];\n\n if (options.globalSearch) {\n children.push({ path: 'global-search', loadChildren: options.globalSearch, canActivate: [settingsAccessGuard], data: { permissionKey: 'GLOBAL_SEARCH' } });\n }\n children.push({ path: 'access-denied', component: SettingsAccessDeniedComponent });\n children.push({ path: '**', redirectTo: 'config-settings', pathMatch: 'full' });\n\n return [{\n path: '',\n component: SettingsShellComponent,\n data: { enableGlobalSearch: Boolean(options.globalSearch) },\n children\n }];\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigLoginSettingsService {\n\n constructor() { }\n}\n","export class RoleConfig {\n public static EndPoint = {\n role: {\n getAllUserRole: '/access-control/role',\n createRole: '/access-control/role/create',\n getLandingPage: '/platform/menu/application',\n addPolicyGroup: '/access-control/role',\n getAllOrgRole: '/access-control/role/organization/{orgid}',\n dossier: '/dossier'\n }\n };\n}\n\nexport class UserConfig {\n public static EndPoint = {\n User: {\n getAllUserList: '/org/user',\n getAllUserActiveInactive: '/org/user?includeInactiveUsers=true',\n getUserConfig: '/org/user/getUserPreference/USER_THEME_PREFERENCES/{id}',\n activateUser: '/org/user/activate',\n createUser: '/org/user/create',\n userRole: '/org/user/role',\n managementgroup: '/org/team/managementgroup',\n getAllUserOrgList: '/org/user/organization/',\n saveUserConfig: '/user/saveUserPreference'\n },\n Provider: {\n getProviderList: '/ref/provider',\n searchProviderList: '/ref/provider/search',\n addProviderUser: '/ref/provider/create/account'\n }\n }\n}\nexport class AttachmentConfig {\n public static EndPoint = {\n Attachments: {\n GetAttachmentReferral: '/ref/attachment/referral',\n GetCategoryLookup: '/platform/master/lookup/lookupbycategoryname',\n UploadKey: '/common/files/upload-key',\n DownloadKey: '/common/files/download-key',\n PostAttachment: '/ref/attachment/create',\n PutAttachment: '/ref/attachment'\n }\n };\n}\nexport class PolicyGroupConfig {\n public static EndPoint = {\n policyGroup: {\n getPolicyGroupList: '/platform/page-designer/policyGroup',\n getAllPolicyGroupList: '/platform/page-designer/policyGroup/all',\n createPolicyGroup: '/platform/page-designer/policyGroup',\n getOrgPolicyGroups: '/platform/page-designer/policyGroup/organization/{organizationid}'\n }\n };\n}\nexport class PermissionsURL {\n public static EndPoints = {\n permission: {\n permissionRoleById: '/access-control/permission/role/{id}',\n pagePermission: '/access-control/permission/page',\n getPermission: '/access-control/permission/{id}',\n createPermission: '/access-control/permission/create',\n updateDeletePermission: '/access-control/permission/{permissionid}',\n getPermissionTree: '/access-control/permission/page/{pageid}/{parentid}',\n getPermissionTypes: '/access-control/permission/type/{applicationid}',\n applicationPermissionsTree: '/access-control/permission/application/{applicationid}'\n },\n page: {\n createPage: '/platform/menu/create',\n updateDeletePage: '/platform/menu/{pageid}',\n AllPageTree: '/platform/menu/tree/{applicationid}'\n }\n };\n}\nexport class AccessManagementConfig {\n public static EndPoint = {\n Organization: {\n getOrganizationList: '/org/organization/all',\n getOrganization: '/platform/page-designer/page/organization/{orgId}?returnUserPage=false&excludeNoActiveVersionPages=true'\n }\n };\n}\nexport class MasterURL {\n public static EndPoints = {\n lookup: {\n createCategory: '/platform/master/lookup/category',\n updateDeleteCategory: '/platform/master/lookup/category/{id}',\n lookup: '/platform/master/lookup/{id}',\n createLookup: '/platform/master/lookup',\n getPermissionRoleById: '/access-control/permission/role/{id}',\n getAllCategoryTree: '/platform/master/lookup/category/tree/{applicationid}',\n getLookupTree: '/platform/master/lookup/tree/{categoryid}',\n getPermissionsTree: '/access-control/permission/application/{applicationid}'\n }\n };\n}\nexport class AuthURL {\n public static EndPoints = {\n auth: {\n user: {\n conformMail: '/org/auth/forgot-password',\n changePassword: '/org/auth/forgot-password-verification',\n login: '/org/auth/login',\n refreshToken: '/org/auth/refresh-token',\n logout: '/org/auth/logout',\n userInfo: '/org/user/page/list',\n userRole: '/org/user/{id}',\n routeToDynamicPage: '/platform/page-designer/page/organization/{orgid}?returnUserPage=true&excludeNoActiveVersionPages=true',\n authMe: '/org/auth/me',\n resetPassword: '/org/user/reset-password',\n orgList: '/org/management-group/organization/tree',\n notification: '/worker/notification',\n workerAvailability: '/worker/updateAvailablity',\n getWorkerAvailability: '/worker/getByCurrentUser',\n userValidate: '/org/auth/user-validate',\n generateLoginUrl: '/org/auth/get-login-url',\n getTokenValidationUrl: '/org/auth/token-validation',\n },\n permission: {\n permissionRoleById: '/access-control/permission/role/{id}',\n pagePermission: '/access-control/permission/page',\n pageLookupPermission: '/access-control/permission/page/lookup'\n },\n microstrategy: {\n login: '/platform/microstrategy/login',\n getLibrary: '/platform/microstrategy/library'\n }\n }\n };\n}\n\n\nexport class RBACINFO {\n apiHost ='';\n tokenKey = '';\n others?: any;\n orgID?: any;\n environment?: Environment;\n}\nexport class Environment {\n mstrUsername?: string;\n mstrPassword?: string;\n mstrURL?: string;\n mstrProjectID?: string;\n applicationid?: string;\n priority?: string\n}\n\n","import { BehaviorSubject, Observable } from 'rxjs';\n\nexport class Store<T> {\n state$: Observable<T>;\n private _state$: BehaviorSubject<T>;\n\n protected constructor(initialState: T) {\n this._state$ = new BehaviorSubject(initialState);\n this.state$ = this._state$.asObservable();\n }\n\n get state(): T {\n return this._state$.getValue();\n }\n\n setState(nextState: T): void {\n this._state$.next(nextState);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { Store } from '../service/store.service';\n@Injectable()\nexport class PermissionStore extends Store<any> {\n constructor() {\n super({});\n }\n\n setStore(data: any): void {\n if(data){\n this.setState({ ...this.state, ...data });\n }\n }\n\n getStore(type: string = 'P'): Observable<any> {\n if (type === 'P') return of(this.state);\n else return of(this.state);\n }\n\n private flat(array: any[]) {\n let result: any[] = [];\n if(array){\n array.forEach(item => {\n result.push(item);\n if (item && Array.isArray(item)) {\n result = result.concat(this.flat(item));\n }\n });\n }\n return result;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n\n@Injectable()\nexport class DataStoreService {\n private currentStoreSubject = new BehaviorSubject<any>({} as any);\n public currentStore = this.currentStoreSubject.asObservable();\n\n constructor() {\n // test code\n }\n\n setData(key: string, value: any) {\n const currentStore = this.getCurrentStore();\n currentStore[key] = value;\n this.currentStoreSubject.next(currentStore);\n }\n\n setObject(value: any) {\n this.currentStoreSubject.next(value);\n }\n\n getData(key: string): any {\n const currentStore = this.getCurrentStore();\n return currentStore[key];\n }\n\n clearStore() {\n const currentStore = this.getCurrentStore();\n Object.keys(currentStore).forEach((key) => {\n delete currentStore[key];\n });\n this.currentStoreSubject.next(currentStore);\n }\n\n getCurrentStore(): any {\n return this.currentStoreSubject.value;\n }\n}\n","export class AppConstants {\n public static errorMessage = 'Something went wrong!';\n public static regexEmail = '^[0-9a-zA-Z.-]+[@][0-9a-zA-Z.-]+[.][0-9a-zA-Z]{2,}$';\n\n public static errorList = [\n 'Have at least one (1) number',\n 'Have at least one (1) special character',\n 'Have at least one (1) upper case letter',\n 'Have at least one (1) lower case letter',\n 'Contain a minimum of fourteen (14) characters'\n ];\n\n}\n","import { Injectable } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\n export class AlertService {\n private subject = new Subject<Alert>();\n private keepAfterRouteChange = false;\n\n constructor(private router: Router) {\n // clear alert messages on route change unless 'keepAfterRouteChange' flag is true\n router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n if (this.keepAfterRouteChange) {\n // only keep for a single route change\n this.keepAfterRouteChange = false;\n } else {\n // clear alert messages\n this.clear();\n }\n }\n });\n }\n\n getAlert(): Observable<any> {\n return this.subject.asObservable();\n }\n\n success(message: string, keepAfterRouteChange = false) {\n this.alert(AlertType.Success, message, keepAfterRouteChange);\n }\n\n error(message: string, keepAfterRouteChange = false) {\n this.alert(AlertType.Error, message, keepAfterRouteChange);\n }\n\n info(message: string, keepAfterRouteChange = false) {\n this.alert(AlertType.Info, message, keepAfterRouteChange);\n }\n\n warn(message: string, keepAfterRouteChange = false) {\n this.alert(AlertType.Warning, message, keepAfterRouteChange);\n }\n\n alert(type: AlertType, message: string, keepAfterRouteChange = false) {\n this.keepAfterRouteChange = keepAfterRouteChange;\n this.subject.next(<Alert>{ type: type, message: message });\n }\n\n clear() {\n // clear alerts\n this.subject.next(<any>{});\n }\n }\n export interface DynamicObject {\n [key: string]: any;\n }\n\n export enum AlertType {\n Success,\n Error,\n Info,\n Warning\n }\n export class Alert {\n type!: AlertType;\n message!: string;\n }\n export interface Insights {\n name: string;\n series: Series[];\n }\n export interface Series {\n value: number;\n name: string;\n month: string;\n }\n\n export interface Status {\n name: string;\n value: number;\n }\n\n export class UserGroupDto {\n id?: number;\n name?: string;\n description?: string | null;\n constructor(data?: Partial<UserGroupDto>) {\n Object.assign(this, data);\n }\n }\n\n export class UserRolePageDto {\n id?: number;\n name?: string;\n route?: string;\n icon?: string | null;\n order?: number;\n ismenu?: boolean;\n constructor(data?: Partial<UserRolePageDto>) {\n Object.assign(this, data);\n }\n }\n\n export class UserRoleDto {\n id?: number;\n name?: string;\n description?: string | null;\n priority?: number;\n order?: number;\n defaultpage?: UserRolePageDto;\n defaultpageid?: number;\n parentid?: number | null;\n parent?: UserRoleDto | null;\n constructor(data?: Partial<UserRoleDto>) {\n Object.assign(this, data);\n }\n }\n\n export class UserDto {\n id?: number;\n name?: string;\n description?: string | null;\n priority?: number;\n order?: number;\n defaultpage?: UserRolePageDto;\n defaultpageid?: number;\n parentid?: number | null;\n parent?: UserRoleDto | null;\n constructor(data?: Partial<UserDto>) {\n Object.assign(this, data);\n }\n }\n export class AccessManagementConfig {\n public static EndPoint = {\n Organization: {\n getOrganizationList: '/org/organization/all',\n getOrganization: '/platform/page-designer/page/organization/{orgId}?returnUserPage=false&excludeNoActiveVersionPages=true'\n }\n };\n }\n","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Injectable, Inject } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { throwError } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DataStoreService } from './data-store.service';\nimport { SessionStorageService, PICS_CORE_SESSION_STORAGE } from '@pics-core/common-utils';\n\n@Injectable()\nexport class HttpService {\n RBACORG: any;\n overrideUrl = true;\n errorData!: HttpErrorResponse;\n baseUrl = '';\n tokenKey: any;\n public headers = new HttpHeaders()\n .set('Accept', 'application/json')\n .set('Content-Type', 'application/json')\n .set('role', 'role=CP_PUBLIC');\n\n public showSpinner: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n public outsideShowSpinner: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n url1: string;\n url: any;\n constructor(private http: HttpClient, private _storeservice: DataStoreService, @Inject(PICS_CORE_SESSION_STORAGE) private localstore: SessionStorageService) {\n this._storeservice.currentStore.subscribe((res: any) => {\n if (res['RBACORG'] && res['RBACORG'] !== '') {\n this.RBACORG = res['RBACORG'];\n this.url = this.RBACORG['apiHost'] ? this.RBACORG['apiHost'] : 'http://localhost:3000/api';\n this.tokenKey = this.RBACORG['tokenKey'];\n }\n });\n this.url1 = '';\n }\n\n get(apiRoute: string) {\n return this.http.get(`${this.url + apiRoute}`, {\n headers: this.getHttpNewHeaders(),\n withCredentials: true\n });\n }\n\n post(apiRoute: string, body: any) {\n return this.http.post(`${this.url + apiRoute}`, body, {\n headers: this.getHttpNewHeaders(),\n withCredentials: true\n });\n }\n put(apiRoute: string, body: any) {\n return this.http.put(`${this.url + apiRoute}`, body, {\n headers: this.getHttpNewHeaders(),\n withCredentials: true\n });\n }\n\n patch(apiRoute: string, body?: any) {\n return this.http.patch(`${this.url + apiRoute}`, body, {\n headers: this.getHttpNewHeaders(),\n withCredentials: true\n });\n }\n\n delete(apiRoute: string) {\n return this.http.delete(`${this.url + apiRoute}`, {\n headers: this.getHttpNewHeaders(),\n withCredentials: true\n });\n }\n\n getHttpHeaders(): HttpHeaders {\n return new HttpHeaders().set('key', 'value');\n }\n getHttpNewHeaders(): HttpHeaders {\n return this.headers;\n }\n getAttachmentHttpHeaders(contentType: any): HttpHeaders {\n return new HttpHeaders().set('Content-Type', contentType).set('x-ms-blob-type', 'BlockBlob');\n }\n putUpload(apiRoute: string, body: any, contentType: any) {\n return this.http.put(`${this.url1 + apiRoute}`, body, { headers: this.getAttachmentHttpHeaders(contentType) });\n }\n getAuthValidation(apiRoute,token) {\n return this.http.get(`${this.url + apiRoute}`, {\n headers: this.getHttpNewHeaders()\n });\n }\n getAuthAccessKey(apiRoute, body) {\n return this.http.post(`${this.url + apiRoute}`, body, {\n headers: this.getHttpNewHeaders()\n });\n }\n putupload2(apiRoute: string, body: any, contenttype: any): Observable<any> {\n return this.http\n .put(`${this.url1 + apiRoute}`, body, {\n headers: this.getAttachmentHttpHeaders(contenttype),\n observe: 'response'\n })\n .pipe(\n map(data => {\n return data;\n })\n );\n }\n /**\n *\n * @param apiRoute\n * This function will download the stream file from the API service.\n * No HTTP required for this stream. So used Window.location.href to download the file\n */\n getFormDownloaded(apiRoute: string) {\n window.location.href = `${this.url + apiRoute}`;\n }\n //common http service(optional)\n\n handleError(error: HttpErrorResponse) {\n let errorMessage = '';\n if (error.error instanceof ErrorEvent) {\n // Client-side errors\n errorMessage = `Error: ${error.error.message}`;\n } else {\n // Server-side errors\n errorMessage = `Error Code: ${error.status}\\nMessage: ${\n error?.error?.message ? error?.error?.message : error.message\n }`;\n }\n return throwError(() => errorMessage);\n }\n getToken(): any {\n const token = this.tokenKey ? this.tokenKey : 'jwt-token';\n return this.localstore.getItem(token);\n }\n }\n\n","import { Injectable } from '@angular/core';\nimport { HttpService } from './http.service';\nimport { AttachmentConfig } from '../urls/rbac-url.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AttachmentsService {\n constructor(private http: HttpService) {\n // This is intentional\n }\n\n getAttachmentReferral(referralid) {\n return this.http.get(AttachmentConfig.EndPoint.Attachments.GetAttachmentReferral + '/' + referralid);\n }\n getCategoryLookup(name) {\n return this.http.get(AttachmentConfig.EndPoint.Attachments.GetCategoryLookup + '/' + name);\n }\n uploadKey(objparams) {\n return this.http.post(AttachmentConfig.EndPoint.Attachments.UploadKey, objparams);\n }\n downloadKey(objparams) {\n return this.http.post(AttachmentConfig.EndPoint.Attachments.DownloadKey, objparams);\n }\n postAttachment(objparams) {\n return this.http.post(AttachmentConfig.EndPoint.Attachments.PostAttachment, objparams);\n }\n putAttachment(objparams, attachmentId) {\n console.log(AttachmentConfig.EndPoint.Attachments.PutAttachment + '/' + attachmentId, objparams);\n return this.http.patch(AttachmentConfig.EndPoint.Attachments.PutAttachment + '/' + attachmentId, objparams);\n }\n}\n","export class ConfigurationSettingsConfig {\n public static EndPoint = {\n Organization: {\n getOrganizationList: '/platform/page-designer/page/organization/all',\n getOrganization:\n '/platform/page-designer/page/organization/{orgId}?returnUserPage=false&excludeNoActiveVersionPages=true'\n },\n Page: {\n getPage: '/page'\n },\n Asset: {\n getAsset: 'asset',\n getPageAsset: '/platform/page-designer/asset/getpagebyid',\n getUserAsset: '/platform/page-designer/asset/getUserAssets',\n getRoleAsset: '/platform/page-designer/asset/getRoleAssets',\n getPolicyGroupAsset: '/platform/page-designer/asset/getPolicyGroupAssets'\n },\n User: {\n getUser: '/org/user/',\n getUserList: '/org/user/all',\n getUserorgList: '/org/user/organization/'\n },\n ConfigSettings: {\n saveConfig: '/org/config-settings/create',\n getConfigList: '/org/config-settings/list',\n getConfigById: '/org/config-settings/list?id=',\n deleteConfig: '/org/config-settings/',\n updateConfig: '/org/config-settings/',\n registrationInfo: '/org/auth/configsettings'\n },\n role: {\n getAllUserRole: '/access-control/role',\n createRole: '/access-control/role/create',\n getLandingPage: '/platform/menu/application',\n addPolicyGroup: '/access-control/role',\n getAllOrgRole: '/access-control/role/organization/{orgid}',\n dossier: '/dossier'\n },\n Email: {\n emailtemplateList: '/solution/emailtemplate/channel/EMAIL'\n },\n org: {\n getOrganizations: '/org/management-group/organization/tree'\n },\n Attachments: {\n GetAttachmentReferral: '/ref/attachment/referral',\n GetCategoryLookup: '/platform/master/lookup/lookupbycategoryname',\n UploadKey: '/common/files/upload-key',\n DownloadKey: '/common/files/download-key',\n PostAttachment: '/ref/attachment/create',\n PutAttachment: '/ref/attachment'\n }\n };\n}\nexport class AttachmentConfig {\n public static EndPoint = {\n Attachments: {\n GetAttachmentReferral: '/ref/attachment/referral',\n GetCategoryLookup: '/platform/master/lookup/lookupbycategoryname',\n UploadKey: '/common/files/upload-key',\n DownloadKey: '/common/files/download-key',\n PostAttachment: '/ref/attachment/create',\n PutAttachment: '/ref/attachment'\n }\n };\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigurationSettingsConfig } from '../urls/configuration-settings-url.config';\nimport { HttpService } from './http.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigurationSettingsService {\n constructor(private httpService: HttpService) {\n // This is intentional\n }\n\n getUserList(orgid) {\n return this.httpService.get(ConfigurationSettingsConfig.EndPoint.User.getUserorgList + orgid);\n }\n saveConfigSettings(modal) {\n return this.httpService.post(ConfigurationSettingsConfig.EndPoint.ConfigSettings.saveConfig, modal);\n }\n getConfigList() {\n return this.httpService.get(ConfigurationSettingsConfig.EndPoint.ConfigSettings.getConfigList);\n }\n getConfigById(id) {\n return this.httpService.get(ConfigurationSettingsConfig.EndPoint.ConfigSettings.getConfigById + id);\n }\n deleteConfig(id) {\n return this.httpService.delete(ConfigurationSettingsConfig.EndPoint.ConfigSettings.deleteConfig + id);\n }\n updateConfig(id, modal) {\n return this.httpService.patch(ConfigurationSettingsConfig.EndPoint.ConfigSettings.updateConfig + id, modal);\n }\n getAllUserRole(id?: any) {\n return this.httpService.get(ConfigurationSettingsConfig.EndPoint.role.getAllOrgRole.replace('{orgid}', String(id)));\n }\n getEmailTemplateNewList() {\n return this.httpService.get(ConfigurationSettingsConfig.EndPoint.Email.emailtemplateList);\n }\n getAllOrganizations() {\n return this.httpService.get(ConfigurationSettingsConfig.EndPoint.org.getOrganizations);\n }\n uploadKey(objparams) {\n return this.httpService.post(ConfigurationSettingsConfig.EndPoint.Attachments.UploadKey, objparams);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Alert, AlertService, AlertType } from '../../@core/service/alert.service';\nconst DISPLAY_IN_SECONDS = 8;\n@Component({\n // moduleId: module.id,\n selector: 'app-alert',\n templateUrl: 'alert.component.html',\n styleUrls: ['./alert.component.scss'],\n standalone: false\n})\nexport class AlertComponent implements OnInit {\n alerts: Alert[] = [];\n\n constructor(private alertService: AlertService) {}\n\n ngOnInit() {\n this.alertService.getAlert().subscribe((alert: Alert) => {\n if (!alert?.message) {\n // clear alerts when an empty alert is received\n this.alerts = [];\n return;\n }\n\n // add alert to array\n this.alerts.push(alert);\n // remove alert after 5 seconds\n setTimeout(() => this.removeAlert(alert), DISPLAY_IN_SECONDS * 1000);\n });\n }\n\n removeAlert(alert: Alert) {\n this.alerts = this.alerts.filter(x => x !== alert);\n }\n\n isAssertiveAlert(alert: Alert): boolean {\n return alert.type === AlertType.Error || alert.type === AlertType.Warning;\n }\n\n cssClass(alert: Alert) {\n if (!alert) {\n return;\n }\n\n // return css class based on alert type\n switch (alert.type) {\n case AlertType.Success:\n return 'alert alert-success';\n case AlertType.Error:\n return 'alert alert-danger';\n case AlertType.Info:\n return 'alert alert-info';\n case AlertType.Warning:\n return 'alert alert-warning';\n }\n }\n}\n","<div class=\"alert-container\" aria-live=\"polite\" aria-atomic=\"true\">\n @for (alert of alerts; track alert) {\n <div\n class=\"alert-animate {{ cssClass(alert) }} alert-dismissable\"\n [attr.role]=\"isAssertiveAlert(alert) ? 'alert' : 'status'\"\n >\n {{ alert.message }}\n <button\n type=\"button\"\n class=\"close\"\n aria-label=\"Close alert\"\n (click)=\"removeAlert(alert)\"\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n }\n</div>\n","import { ChangeDetectorRef, Component, Inject, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { DataStoreService } from '../../@core/service/data-store.service';\nimport { Subscription } from 'rxjs';\nimport { PICS_CORE_SESSION_STORAGE, SessionStorageService } from '@pics-core/common-utils';\n\n@Component({\n selector: 'lib-config-login-preview',\n templateUrl: './config-login-preview.component.html',\n styleUrls: ['./config-login-preview.component.scss'],\n standalone: false\n})\nexport class ConfigLoginPreviewComponent implements OnInit, OnChanges, OnDestroy {\n @Input() previewData: any;\n @Input() i18n: any = {}; // Store i18n translations\n LOGININFO: any;\n httpService: any;\n inputValidationMethod: any;\n orgSubs!: Subscription;\n constructor(\n private _storeservice: DataStoreService,\n private cdRef: ChangeDetectorRef,\n @Inject(PICS_CORE_SESSION_STORAGE) private localstore: SessionStorageService\n ) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Apply LOGININFO before any detectChanges — I18N BehaviorSubject emits immediately\n // and would otherwise paint the preview with every *ngIf false (blank dialog).\n if (changes['previewData']) {\n this.applyPreviewData();\n }\n }\n /**\n * Get translation for a key\n * @param key Translation key\n * @returns Translated string or key if not found\n */\n public translate(key: string): string {\n return this.i18n[key] || key;\n }\n \n ngOnInit(): void {\n console.log('Initializing component');\n this.applyPreviewData();\n this.initI18nSubscription();\n }\n\n ngOnDestroy(): void {\n this.orgSubs?.unsubscribe();\n }\n\n /** Fallback when parent [i18n] is not ready; parent already passes i18n when available. */\n private initI18nSubscription(): void {\n if (this.orgSubs) {\n return;\n }\n this.orgSubs = this._storeservice.currentStore.subscribe((res: any) => {\n if (res['I18N'] && Object.keys(res['I18N']).length > 0) {\n this.i18n = res['I18N'];\n }\n });\n }\n\n private applyPreviewData(): void {\n if (this.previewData) {\n this.LOGININFO = this.previewData;\n }\n }\n}\n","<app-alert></app-alert>\n\n<!-- login-form-right -->\n@if (LOGININFO?.ENABLE_LOGIN_TEMPLATE ? LOGININFO?.ENABLE_LOGIN_TEMPLATE == 'loginTemplateRight' : false) {\n <div class=\"row login login-right\" id=\"back\">\n <div class=\"d-none d-lg-flex flex-column col-lg-7 align-i p-0 banner-sec justify-content-center container-image\"\n [style.background-image]=\"'url(' + (LOGININFO['BACKGROUND_IMAGE']) + ')'\">\n <div class=\"clsBannerTitle\" [innerHtml]=\"LOGININFO['BANNER_TITLE']\" [style.color]=\"LOGININFO['LABEL_COLOR']\">\n </div>\n </div>\n <div class=\"d-flex col-lg-5 shadow align-items-center p-2 mx-auto rightLoginSet\">\n <div class=\"col-12 col-sm-8 col-md-6 col-lg-12 px-xl-2 mx-auto\">\n <div class=\"col-md-12 text-left logo-group lg-mb-50\">\n <div class=\"form-group mb-0\">\n <div class=\"logo-group text-center\">\n <div class=\"logo-img\">\n <img [attr.src]=\"LOGININFO['BANNER']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </div>\n <h5 class=\"clsLoginTitle\" [innerHtml]=\"LOGININFO['TITLE']\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\"></h5>\n </div>\n </div>\n </div>\n <div class=\"col-md-12 loginBottomSet clearfix pl-0 pr-0\">\n <div class=\"login-content\">\n <form novalidate>\n <div class=\"clearfix\">\n <div class=\"form-group\">\n <label for=\"username\" class=\"intake-form-labels\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\n LOGININFO['USER_LABEL']}}\n </label>\n <input-empower class=\"Inputs\" type=\"email\" placeholder=\"{{ translate('Email') }}\" name=\"email\"\n id=\"username\" tabindex=\"0\" required></input-empower>\n </div>\n <div class=\"form-group no-mar\">\n <label for=\"password\" class=\"intake-form-labels w-100\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\n LOGININFO['PASSWORD_LABEL']}}</label>\n <input-empower class=\"Inputs password\" type=\"password\" placeholder=\"{{ translate('Password') }}\" name=\"password\"\n id=\"password\" tabindex=\"0\" required></input-empower>\n </div>\n @if (LOGININFO['ENABLE_CAPTCHA'] ? LOGININFO['ENABLE_CAPTCHA'] : false) {\n <div class=\"captcha clearfix\">\n <div class=\"form-group\">\n <!-- <label>Captcha:</label> -->\n <div class=\"captcha-box d-flex\">\n <input-empower type=\"text\" class=\"form-control\" placeholder=\"{{ translate('Enter captcha') }}\"></input-empower>\n <button type=\"button\" class=\"refresh\" [attr.aria-label]=\"translate('Refresh Captcha')\"><i class=\"fa fa-refresh\"\n aria-hidden=\"true\"></i></button>\n <span class=\"captcha-text\">ABCDi</span>\n </div>\n <!-- @if (captchaError) { <div class=\"text-danger mt-1\">Invalid Captcha</div> } -->\n\n </div>\n\n\n\n </div>\n }\n <div class=\"clearfix termsForget form-group\">\n @if (LOGININFO['ENABLE_TERMSANDCONDITION'] ? LOGININFO['ENABLE_TERMSANDCONDITION'] : false) {\n <div class=\"checkbox\">\n <p-checkbox class=\"checklabelbox\" name=\"conditions\" value=\"yes\" inputId=\"ch\"\n aria-checked=\"false\">\n </p-checkbox>\n <label class=\"checklabel\" for=\"ch\">{{ translate('I accept the') }} <a href=\"javascript:void(0)\">{{ translate('terms & conditions') }}</a></label>\n </div>\n }\n @if (LOGININFO['ENABLE_FORGOTPASSWORD'] ? LOGININFO['ENABLE_FORGOTPASSWORD'] : false) {\n <div class=\"text-right\">\n <a href=\"javascript:void(0)\" class=\"btn-link forget\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">\n {{ translate('Forgot Password?') }}</a>\n </div>\n }\n </div>\n </div>\n\n <!-- <div class=\"form-group clearfix mb-30 clsMin-23 pt-10\">\n\n </div> -->\n <div class=\"clearfix text-center col-md-12 col-12 mt-2\">\n <div class=\"row ml-0 mr-0\">\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\n <p-button role=\"button\" type=\"submit\" title=\"{{ LOGININFO?.['LOGIN_BUTTON_LABEL'] || translate('Login') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n [label]=\"LOGININFO?.['LOGIN_BUTTON_LABEL'] || translate('Login')\" class=\"loginbutton w-100\"\n tabindex=\"0\">\n </p-button>\n </div>\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\n @if (LOGININFO['ENABLE_GOOGLE'] ? LOGININFO['ENABLE_GOOGLE'] : false) {\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login with Google') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton btn-hover w-100\" tabindex=\"0\">{{ translate('Login with Google') }}\n </p-button>\n }\n </div>\n </div>\n\n </div>\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\n <div class=\"mar-btm-20 picslogin\">\n <span>{{ translate('Or') }}</span>\n </div>\n }\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\n <div class=\"clearfix text-center col-md-12 col-12 mt-2\">\n <p-button role=\"button\" type=\"button\" title=\"{{ translate('Login with Azure') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login with Azure') }}</p-button>\n </div>\n }\n @if (LOGININFO['ENABLE_REGISTARTION'] ? LOGININFO['ENABLE_REGISTARTION'] : false) {\n <div class=\"clearfix text-center mt-10\">\n <a href=\"javascript:void;\" class=\"goto-register text-primary\">{{\n LOGININFO?.['REGISTER_BUTTON_LABEL'] || translate('Register') }}</a>\n </div>\n }\n <br />\n </form>\n </div>\n </div>\n </div>\n\n <div class=\"powered\" style=\"top: 85%;\">\n <p class=\"clsInfo-text mt-0 text-center\">\n <span style=\"font-size: 13px\"> {{ translate('Powered by') }} </span>\n <a href=\"https://www.cardinality.ai/\" rel=\"noopener\" role=\"link\" target=\"_blank\" tabindex=\"0\">\n <img alt=\"{{ translate('cardinality') }}\" class=\"Cardinality_logo\" src=\"assets/images/cardinality-logo_text.svg\"\n width=\"120\" />\n </a>\n </p>\n </div>\n </div>\n @if (LOGININFO['ENABLE_FOOTER'] && (LOGININFO['ENABLE_SELECTION'] === 'loginOnly' || LOGININFO['ENABLE_SELECTION'] === 'both')) {\n <div class=\"footerVersion\">\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateRight' : false) {\n <div class=\"versionSection clearfix\">\n <p class=\"f-left versionfootervalue\">{{ translate('Stable') }} {{ LOGININFO['VERSION']}}</p>\n <!-- <p class=\"f-right\"><span>{{ LOGININFO['POWERED_BY']}}</span> @ <span>{{ LOGININFO['YEAR'] | date: 'yyyy'\n }}</span></p> -->\n <p class=\"f-right versionfootervalue\">\n <span> &copy; </span>{{ LOGININFO['YEAR'] | date: 'yyyy' }} <span>{{ LOGININFO['POWERED_BY'] }}</span>\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </p>\n\n </div>\n }\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateCenter' : false) {\n <div class=\"versionSection clearfix\">\n <div class=\"text-center clearfix\">\n <p class=\"text-center version-footer-center\">\n <span>{{ translate('Stable') }} {{ LOGININFO['VERSION']}}</span>\n <span> &copy; {{ LOGININFO['YEAR'] | date: 'yyyy' }}</span>\n <span>{{ LOGININFO['POWERED_BY']}}</span>\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop version-footer-logo\"\n alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </p>\n </div>\n </div>\n }\n </div>\n }\n </div>\n}\n<!-- login-form-right -->\n\n<!-- login-form-left -->\n@if (LOGININFO?.ENABLE_LOGIN_TEMPLATE ? LOGININFO?.ENABLE_LOGIN_TEMPLATE == 'loginTemplateLeft' : false) {\n <div class=\"row login login-left\" id=\"back\">\n <div class=\"d-flex col-lg-5 shadow align-items-center p2 mx-auto rightLoginSet\">\n <div class=\"col-12 col-sm-8 col-md-6 col-lg-12 px-xl-2 mx-auto\">\n <div class=\"col-md-12 text-left logo-group lg-mb-50\">\n <div class=\"form-group mb-0\">\n <div class=\"logo-group text-center\">\n <div class=\"logo-img\">\n <img [attr.src]=\"LOGININFO['BANNER']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </div>\n <h5 class=\"clsLoginTitle\" [innerHtml]=\"LOGININFO['TITLE']\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\"></h5>\n </div>\n </div>\n </div>\n <div class=\"col-md-12 loginBottomSet clearfix pl-0 pr-0\">\n <div class=\"login-content\">\n <form novalidate>\n <div class=\"clearfix\">\n <div class=\"form-group\">\n <label for=\"username\" class=\"intake-form-labels\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\n LOGININFO['USER_LABEL']}}\n </label>\n <input-empower class=\"Inputs\" type=\"mail\" placeholder=\"{{ translate('Email') }}\" name=\"email\"\n id=\"username\" tabindex=\"0\" required></input-empower>\n </div>\n <div class=\"form-group no-mar mb-2\">\n <label for=\"password\" class=\"intake-form-labels w-100\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\n LOGININFO['PASSWORD_LABEL']}}</label>\n <input-empower class=\"Inputs password\" type=\"password\" placeholder=\"{{ translate('Password') }}\" name=\"password\"\n id=\"password\" tabindex=\"0\" required></input-empower>\n </div>\n @if (LOGININFO['ENABLE_CAPTCHA'] ? LOGININFO['ENABLE_CAPTCHA'] : false) {\n <div class=\"captcha clearfix\">\n <div class=\"form-group\">\n <div class=\"captcha-box d-flex\">\n <input-empower type=\"text\" class=\"form-control\" placeholder=\"{{ translate('Enter captcha') }}\"></input-empower>\n <button type=\"button\" class=\"refresh\" [attr.aria-label]=\"translate('Refresh Captcha')\"><i class=\"fa fa-refresh\"\n aria-hidden=\"true\"></i></button>\n <span class=\"captcha-text\">ABCDi</span>\n </div>\n </div>\n </div>\n }\n <div class=\"clearfix termsForget form-group\">\n @if (LOGININFO['ENABLE_TERMSANDCONDITION'] ? LOGININFO['ENABLE_TERMSANDCONDITION'] : false) {\n <div class=\"checkbox\">\n <p-checkbox class=\"checklabelbox\" name=\"conditions\" value=\"yes\" inputId=\"ch\"\n aria-checked=\"false\">\n </p-checkbox>\n <label class=\"checklabel\" for=\"ch\">{{ translate('I accept the') }} <a href=\"javascript:void(0)\">{{ translate('terms & conditions') }}</a></label>\n </div>\n }\n @if (LOGININFO['ENABLE_FORGOTPASSWORD'] ? LOGININFO['ENABLE_FORGOTPASSWORD'] : false) {\n <div class=\"text-right\">\n <a href=\"javascript:void(0)\" class=\"btn-link forget\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">\n {{ translate('Forgot Password?') }}</a>\n </div>\n }\n </div>\n </div>\n <div class=\"clearfix text-center col-md-12 col-12 mt-4\">\n <div class=\"row ml-0 mr-0\">\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login') }}</p-button>\n </div>\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\n @if (LOGININFO['ENABLE_GOOGLE'] ? LOGININFO['ENABLE_GOOGLE'] : false) {\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login with Google') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton btn-hover w-100\" tabindex=\"0\">{{ translate('Login with Google') }}\n </p-button>\n }\n </div>\n </div>\n\n </div>\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\n <div class=\"mar-btm-20 picslogin\">\n <span>{{ translate('Or') }}</span>\n </div>\n }\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\n <div class=\"clearfix text-center col-md-12 col-12 mt-2\">\n <p-button role=\"button\" type=\"button\" title=\"{{ translate('Login with Azure') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login with Azure') }}</p-button>\n </div>\n }\n @if (LOGININFO['ENABLE_REGISTARTION'] ? LOGININFO['ENABLE_REGISTARTION'] : false) {\n <div class=\"clearfix text-center mt-10\">\n @if (LOGININFO['REGISTER_PREFIX_LABEL']) {\n <span class=\"signup-label\">\n {{ LOGININFO['REGISTER_PREFIX_LABEL'] }}\n </span>\n }\n <a href=\"javascript:void;\" class=\"goto-register text-primary\">{{\n LOGININFO?.['REGISTER_BUTTON_LABEL'] || translate('Register') }}</a>\n </div>\n }\n <br />\n </form>\n </div>\n </div>\n </div>\n\n <div class=\"powered\" style=\"top: 85%;\">\n <p class=\"clsInfo-text mt-0 text-center\">\n <span style=\"font-size: 13px\"> {{ translate('Powered by') }} </span>\n <a href=\"https://www.cardinality.ai/\" rel=\"noopener\" role=\"link\" target=\"_blank\" tabindex=\"0\">\n <img alt=\"{{ translate('cardinality') }}\" class=\"Cardinality_logo\" src=\"assets/images/cardinality-logo_text.svg\"\n width=\"120\" />\n </a>\n </p>\n </div>\n </div>\n <div class=\"d-none d-lg-flex flex-column col-lg-7 align-i p-0 banner-sec justify-content-center container-image\"\n [style.background-image]=\"'url(' + (LOGININFO['BACKGROUND_IMAGE']) + ')'\">\n <div class=\"clsBannerTitle\" [innerHtml]=\"LOGININFO['BANNER_TITLE']\" [style.color]=\"LOGININFO['LABEL_COLOR']\">\n </div>\n </div>\n @if (LOGININFO['ENABLE_FOOTER'] && (LOGININFO['ENABLE_SELECTION'] === 'loginOnly' || LOGININFO['ENABLE_SELECTION'] === 'both')) {\n <div class=\"footerVersion\">\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateRight' : false) {\n <div class=\"versionSection clearfix\">\n <p class=\"f-left versionfootervalue\">{{ translate('Stable') }} {{ LOGININFO['VERSION']}}</p>\n <!-- <p class=\"f-right\"><span>{{ LOGININFO['POWERED_BY']}}</span> @ <span>{{ LOGININFO['YEAR'] | date: 'yyyy'\n }}</span></p> -->\n <p class=\"f-right versionfootervalue\">\n <span> &copy; </span>{{ LOGININFO['YEAR'] | date: 'yyyy' }} <span>{{ LOGININFO['POWERED_BY'] }}</span>\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n\n </p>\n </div>\n }\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateCenter' : false) {\n <div class=\"versionSection clearfix\">\n <div class=\"text-center clearfix\">\n <p class=\"text-center version-footer-center\">\n <span>{{ translate('Stable') }} {{ LOGININFO['VERSION']}}</span>\n <span> &copy; {{ LOGININFO['YEAR'] | date: 'yyyy' }}</span>\n <span>{{ LOGININFO['POWERED_BY']}}</span>\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </p>\n </div>\n </div>\n }\n </div>\n }\n </div>\n}\n<!-- login-form-left -->\n\n<!-- login-form-center -->\n@if (LOGININFO?.ENABLE_LOGIN_TEMPLATE ? LOGININFO?.ENABLE_LOGIN_TEMPLATE == 'loginTemplateCenter' : false) {\n <div class=\" login_3 login-center\" id=\"back\">\n <div class=\"d-lg-flex flex-column p-lg-0 banner-sec\"\n [style.background-image]=\"'url(' + (LOGININFO['BACKGROUND_IMAGE']) + ')'\">\n <div class=\"clsBannerTitle\" [innerHtml]=\"LOGININFO['BANNER_TITLE']\" [style.color]=\"LOGININFO['LABEL_COLOR']\">\n </div>\n </div>\n <div class=\"align-items-center p-4 rightLoginSet\">\n <div class=\"current-design mx-auto\">\n <div class=\"col-md-12 text-left logo-group lg-mb-50\">\n <div class=\"form-group mb-0\">\n <div class=\"logo-group text-center\">\n <div class=\"logo-img\">\n <img [attr.src]=\"LOGININFO['BANNER']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </div>\n <h5 class=\"clsLoginTitle\" [innerHtml]=\"LOGININFO['TITLE']\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\"></h5>\n </div>\n </div>\n </div>\n <div class=\"col-md-12 loginBottomSet clearfix pl-0 pr-0\">\n <div class=\"login-content\">\n <form novalidate>\n <div class=\"clearfix\">\n <div class=\"form-group\">\n <label for=\"username\" class=\"intake-form-labels\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\n LOGININFO['USER_LABEL']}}\n </label>\n <input-empower class=\"Inputs\" type=\"mail\" placeholder=\"{{ translate('Email') }}\" name=\"email\"\n id=\"username\" tabindex=\"0\" required></input-empower>\n </div>\n <div class=\"form-group no-mar\">\n <label for=\"password\" class=\"intake-form-labels w-100\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\n LOGININFO['PASSWORD_LABEL']}}</label>\n <input-empower class=\"Inputs password\" type=\"password\" placeholder=\"{{ translate('Password') }}\" name=\"password\"\n id=\"password\" tabindex=\"0\" required></input-empower>\n </div>\n @if (LOGININFO['ENABLE_CAPTCHA'] ? LOGININFO['ENABLE_CAPTCHA'] : false) {\n <div class=\"captcha clearfix\">\n <div class=\"form-group\">\n <!-- <label>Captcha:</label> -->\n <div class=\"captcha-box d-flex\">\n <input-empower type=\"text\" class=\"form-control\" placeholder=\"{{ translate('Enter captcha') }}\"></input-empower>\n <button type=\"button\" class=\"refresh\" [attr.aria-label]=\"translate('Refresh Captcha')\"><i class=\"fa fa-refresh\"\n aria-hidden=\"true\"></i></button>\n <span class=\"captcha-text\">ABCDi</span>\n </div>\n </div>\n </div>\n }\n <div class=\"clearfix termsForget form-group\">\n @if (LOGININFO['ENABLE_TERMSANDCONDITION'] ? LOGININFO['ENABLE_TERMSANDCONDITION'] : false) {\n <div class=\"checkbox\">\n <p-checkbox class=\"checklabelbox\" name=\"conditions\" value=\"yes\" inputId=\"ch\"\n aria-checked=\"false\">\n </p-checkbox>\n <label class=\"checklabel\" for=\"ch\">{{ translate('I accept the') }} <a href=\"javascript:void(0)\">{{ translate('terms & conditions') }}</a></label>\n </div>\n }\n @if (LOGININFO['ENABLE_FORGOTPASSWORD'] ? LOGININFO['ENABLE_FORGOTPASSWORD'] : false) {\n <div class=\"text-right\">\n <a href=\"javascript:void(0)\" class=\"btn-link forget\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">\n {{ translate('Forgot Password?') }}</a>\n </div>\n }\n </div>\n </div>\n <div class=\"clearfix text-center col-md-12 col-12 mt-4\">\n <div class=\"row ml-0 mr-0\">\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login') }}</p-button>\n </div>\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\n @if (LOGININFO['ENABLE_GOOGLE'] ? LOGININFO['ENABLE_GOOGLE'] : false) {\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login with Google') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton btn-hover w-100\" tabindex=\"0\">{{ translate('Login with Google') }}\n </p-button>\n }\n </div>\n </div>\n\n </div>\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\n <div class=\"mar-btm-20 picslogin\">\n <span>{{ translate('Or') }}</span>\n </div>\n }\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\n <div class=\"clearfix text-center col-md-12 col-12 mt-2\">\n <p-button role=\"button\" type=\"button\" title=\"{{ translate('Login with Azure') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login with Azure') }}</p-button>\n </div>\n }\n @if (LOGININFO['ENABLE_REGISTARTION'] ? LOGININFO['ENABLE_REGISTARTION'] : false) {\n <div class=\"clearfix text-center mt-10\">\n <a href=\"javascript:void;\" class=\"goto-register text-primary registrationtext\">{{\n LOGININFO?.['REGISTER_BUTTON_LABEL'] || translate('Register') }}</a>\n </div>\n }\n <br />\n </form>\n </div>\n </div>\n </div>\n\n <div class=\"powered\">\n <p class=\"clsInfo-text mt-0 text-center\">\n <span style=\"font-size: 13px\"> {{ translate('Powered by') }} </span>\n <a href=\"https://www.cardinality.ai/\" rel=\"noopener\" role=\"link\" target=\"_blank\" tabindex=\"0\">\n <img alt=\"{{ translate('cardinality') }}\" class=\"Cardinality_logo\" src=\"assets/images/cardinality-logo_text.svg\"\n width=\"120\" />\n </a>\n </p>\n </div>\n </div>\n @if (LOGININFO['ENABLE_FOOTER'] && (LOGININFO['ENABLE_SELECTION'] === 'loginOnly' || LOGININFO['ENABLE_SELECTION'] === 'both')) {\n <div class=\"footerVersion\">\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateRight' : false) {\n <div class=\"versionSection clearfix\">\n <p class=\"f-left versionfootervalue\"> {{ translate('Stable') }}{{ LOGININFO['VERSION']}}</p>\n <p class=\"f-right versionfootervalue\">\n <span> &copy; </span>{{ LOGININFO['YEAR'] | date: 'yyyy' }} <span>{{ LOGININFO['POWERED_BY'] }}</span>\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n\n </p>\n </div>\n }\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateCenter' : false) {\n <div class=\"versionSection clearfix\">\n <div class=\"text-center clearfix\">\n <p class=\"text-center version-footer-center\">\n <span> {{ translate('Stable') }} {{ LOGININFO['VERSION']}}</span>\n <span>&copy;{{ LOGININFO['YEAR'] | date: 'yyyy' }}</span>\n <span>{{ LOGININFO['POWERED_BY']}}</span>\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </p>\n </div>\n </div>\n }\n </div>\n }\n </div>\n}\n<!-- login-form-center -->\n\n<!-- login-form-bottom -->\n@if (LOGININFO?.ENABLE_LOGIN_TEMPLATE ? LOGININFO?.ENABLE_LOGIN_TEMPLATE == 'loginTemplateBottom' : false) {\n <div class=\"row login form-bottom\" id=\"back\">\n <div class=\"d-none d-lg-flex flex-column col-lg-12 align-i p-0 banner-sec justify-content-center container-image\"\n [style.background-image]=\"'url(' + (LOGININFO['BACKGROUND_IMAGE']) + ')'\">\n <div class=\"clsBannerTitle\" [innerHtml]=\"LOGININFO['BANNER_TITLE']\" [style.color]=\"LOGININFO['LABEL_COLOR']\">\n </div>\n </div>\n <div class=\"d-flex col-lg-5 shadow align-items-center p-4 mx-auto rightLoginSet\">\n <div class=\"col-12 col-sm-8 col-md-6 col-lg-12 px-xl-2 mx-auto\">\n <div class=\"col-md-12 text-left logo-group lg-mb-50\">\n <div class=\"form-group mb-0\">\n <div class=\"logo-group text-center\">\n <div class=\"logo-img\">\n <img [attr.src]=\"LOGININFO['BANNER']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </div>\n <h5 class=\"clsLoginTitle\" [innerHtml]=\"LOGININFO['TITLE']\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\"></h5>\n </div>\n </div>\n </div>\n <div class=\"col-md-12 loginBottomSet clearfix pl-0 pr-0\">\n <div class=\"login-content\">\n <form novalidate>\n <div class=\"clearfix\">\n <div class=\"form-group\">\n <label for=\"username\" class=\"intake-form-labels\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\n LOGININFO['USER_LABEL']}}\n </label>\n <input-empower class=\"Inputs\" type=\"mail\" placeholder=\"{{ translate('Email') }}\" name=\"email\"\n id=\"username\" tabindex=\"0\" required></input-empower>\n </div>\n <div class=\"form-group no-mar\">\n <label for=\"password\" class=\"intake-form-labels w-100\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\n LOGININFO['PASSWORD_LABEL']}}</label>\n <input-empower class=\"Inputs password\" type=\"password\" placeholder=\"{{ translate('Password') }}\" name=\"password\"\n id=\"password\" tabindex=\"0\" required></input-empower>\n </div>\n @if (LOGININFO['ENABLE_CAPTCHA'] ? LOGININFO['ENABLE_CAPTCHA'] : false) {\n <div class=\"captcha clearfix\">\n <div class=\"form-group\">\n <div class=\"captcha-box d-flex\">\n <input-empower type=\"text\" class=\"form-control\" placeholder=\"{{ translate('Enter captcha') }}\"></input-empower>\n <button type=\"button\" class=\"refresh\" [attr.aria-label]=\"translate('Refresh Captcha')\"><i class=\"fa fa-refresh\"\n aria-hidden=\"true\"></i></button>\n <span class=\"captcha-text\">ABCDi</span>\n </div>\n </div>\n </div>\n }\n <div class=\"clearfix termsForget form-group\">\n @if (LOGININFO['ENABLE_TERMSANDCONDITION'] ? LOGININFO['ENABLE_TERMSANDCONDITION'] : false) {\n <div class=\"checkbox\">\n <p-checkbox class=\"checklabelbox\" name=\"conditions\" value=\"yes\" inputId=\"ch\"\n aria-checked=\"false\">\n </p-checkbox>\n <label class=\"checklabel\" for=\"ch\">{{ translate('I accept the') }} <a href=\"javascript:void(0)\">{{ translate('terms & conditions') }}</a></label>\n </div>\n }\n @if (LOGININFO['ENABLE_FORGOTPASSWORD'] ? LOGININFO['ENABLE_FORGOTPASSWORD'] : false) {\n <div class=\"text-right\">\n <a href=\"javascript:void(0)\" class=\"btn-link forget\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">\n {{ translate('Forgot Password?') }}</a>\n </div>\n }\n </div>\n </div>\n <div class=\"clearfix text-center col-md-12 col-12 mt-4\">\n <div class=\"row ml-0 mr-0\">\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login') }}</p-button>\n </div>\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\n @if (LOGININFO['ENABLE_GOOGLE'] ? LOGININFO['ENABLE_GOOGLE'] : false) {\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login with Google') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton btn-hover w-100\" tabindex=\"0\">{{ translate('Login with Google') }}\n </p-button>\n }\n </div>\n </div>\n\n </div>\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\n <div class=\"mar-btm-20 picslogin\">\n <span>{{ translate('Or') }}</span>\n </div>\n }\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\n <div class=\"clearfix text-center col-md-12 col-12 mt-2\">\n <p-button role=\"button\" type=\"button\" title=\"{{ translate('Login with Azure') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login with Azure') }}</p-button>\n </div>\n }\n @if (LOGININFO['ENABLE_REGISTARTION'] ? LOGININFO['ENABLE_REGISTARTION'] : false) {\n <div class=\"clearfix text-center mt-10\">\n <a href=\"javascript:void;\" class=\"goto-register text-primary\">{{\n LOGININFO?.['REGISTER_BUTTON_LABEL'] || translate('Register') }}</a>\n </div>\n }\n <br />\n </form>\n </div>\n </div>\n </div>\n\n <div class=\"powered\" style=\"top: 85%;\">\n <p class=\"clsInfo-text mt-0 text-center\">\n <span style=\"font-size: 13px\"> {{ translate('Powered by') }} </span>\n <a href=\"https://www.cardinality.ai/\" rel=\"noopener\" role=\"link\" target=\"_blank\" tabindex=\"0\">\n <img alt=\"{{ translate('cardinality') }}\" class=\"Cardinality_logo\" src=\"assets/images/cardinality-logo_text.svg\"\n width=\"120\" />\n </a>\n </p>\n </div>\n </div>\n @if (LOGININFO['ENABLE_FOOTER'] && (LOGININFO['ENABLE_SELECTION'] === 'loginOnly' || LOGININFO['ENABLE_SELECTION'] === 'both')) {\n <div class=\"footerVersion\">\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateRight' : false) {\n <div class=\"versionSection clearfix\">\n <p class=\"f-left versionfootervalue\"> {{ translate('Stable') }}{{ LOGININFO['VERSION']}}</p>\n <p class=\"f-right versionfootervalue\">\n <span> &copy; </span>{{ LOGININFO['YEAR'] | date: 'yyyy' }} <span>{{ LOGININFO['POWERED_BY'] }}</span>\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n\n </p>\n </div>\n }\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateCenter' : false) {\n <div class=\"versionSection clearfix\">\n <div class=\"text-center clearfix\">\n <p class=\"text-center version-footer-center\">\n <span> {{ translate('Stable') }}{{ LOGININFO['VERSION']}}</span>\n <span> &copy;{{ LOGININFO['YEAR'] | date: 'yyyy' }}</span>\n <span>{{ LOGININFO['POWERED_BY']}}</span>\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </p>\n </div>\n </div>\n }\n </div>\n }\n </div>\n}\n<!-- login-form-bottom -->\n\n<!-- login-form-curve -->\n@if (LOGININFO?.ENABLE_LOGIN_TEMPLATE ? LOGININFO?.ENABLE_LOGIN_TEMPLATE == 'loginTemplateCurve' : false) {\n <div class=\"row login login-curve\" id=\"back\">\n <div class=\"d-none d-lg-flex flex-column col-lg-7 align-i p-0 banner-sec justify-content-center container-image\"\n [style.background-image]=\"'url(' + (LOGININFO['BACKGROUND_IMAGE']) + ')'\">\n <div class=\"clsBannerTitle\" [innerHtml]=\"LOGININFO['BANNER_TITLE']\" [style.color]=\"LOGININFO['LABEL_COLOR']\">\n </div>\n </div>\n <div class=\"d-flex col-lg-5 shadow align-items-center p-4 mx-auto rightLoginSet\">\n <div class=\"col-12 col-sm-8 col-md-6 col-lg-12 px-xl-2 mx-auto\">\n <div class=\"col-md-12 text-left logo-group lg-mb-50\">\n <div class=\"form-group mb-0\">\n <div class=\"logo-group text-center\">\n <div class=\"logo-img\">\n <img [attr.src]=\"LOGININFO['BANNER']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </div>\n <h5 class=\"clsLoginTitle\" [innerHtml]=\"LOGININFO['TITLE']\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\"></h5>\n </div>\n </div>\n </div>\n <div class=\"col-md-12 loginBottomSet clearfix pl-0 pr-0\">\n <div class=\"login-content\">\n <form novalidate>\n <div class=\"clearfix\">\n <div class=\"form-group\">\n <label for=\"username\" class=\"intake-form-labels\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\n LOGININFO['USER_LABEL']}}\n </label>\n <input-empower class=\"Inputs\" type=\"mail\" placeholder=\"{{ translate('Email') }}\" name=\"email\"\n id=\"username\" tabindex=\"0\" required></input-empower>\n </div>\n <div class=\"form-group no-mar\">\n <label for=\"password\" class=\"intake-form-labels w-100\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\n LOGININFO['PASSWORD_LABEL']}}</label>\n <input-empower class=\"Inputs password\" type=\"password\" placeholder=\"{{ translate('Password') }}\" name=\"password\"\n id=\"password\" tabindex=\"0\" required></input-empower>\n </div>\n @if (LOGININFO['ENABLE_CAPTCHA'] ? LOGININFO['ENABLE_CAPTCHA'] : false) {\n <div class=\"captcha clearfix\">\n <div class=\"form-group\">\n <div class=\"captcha-box d-flex\">\n <input-empower type=\"text\" class=\"form-control\" placeholder=\"{{ translate('Enter captcha') }}\"></input-empower>\n <button type=\"button\" class=\"refresh\" [attr.aria-label]=\"translate('Refresh Captcha')\"><i class=\"fa fa-refresh\"\n aria-hidden=\"true\"></i></button>\n <span class=\"captcha-text\">ABCDi</span>\n </div>\n </div>\n </div>\n }\n <div class=\"clearfix termsForget form-group\">\n @if (LOGININFO['ENABLE_TERMSANDCONDITION'] ? LOGININFO['ENABLE_TERMSANDCONDITION'] : false) {\n <div class=\"checkbox\">\n <p-checkbox class=\"checklabelbox\" name=\"conditions\" value=\"yes\" inputId=\"ch\"\n aria-checked=\"false\">\n </p-checkbox>\n <label class=\"checklabel\" for=\"ch\">{{ translate('I accept the') }} <a href=\"javascript:void(0)\">{{ translate('terms & conditions') }}</a></label>\n </div>\n }\n @if (LOGININFO['ENABLE_FORGOTPASSWORD'] ? LOGININFO['ENABLE_FORGOTPASSWORD'] : false) {\n <div class=\"text-right\">\n <a href=\"javascript:void(0)\" class=\"btn-link forget\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">\n {{ translate('Forgot Password?') }}</a>\n </div>\n }\n </div>\n </div>\n <div class=\"clearfix text-center col-md-12 col-12 mt-4\">\n <div class=\"row ml-0 mr-0\">\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login') }}</p-button>\n </div>\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\n @if (LOGININFO['ENABLE_GOOGLE'] ? LOGININFO['ENABLE_GOOGLE'] : false) {\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login with Google') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton btn-hover w-100\" tabindex=\"0\">{{ translate('Login with Google') }}\n </p-button>\n }\n </div>\n </div>\n </div>\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\n <div class=\"mar-btm-20 picslogin\">\n <span>{{ translate('Or') }}</span>\n </div>\n }\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\n <div class=\"clearfix text-center col-md-12 col-12 mt-2\">\n <p-button role=\"button\" type=\"button\" title=\"{{ translate('Login with Azure') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login with Azure') }}</p-button>\n </div>\n }\n @if (LOGININFO['ENABLE_REGISTARTION'] ? LOGININFO['ENABLE_REGISTARTION'] : false) {\n <div class=\"clearfix text-center mt-10\">\n <a href=\"javascript:void;\" class=\"goto-register text-primary registrationtext\">{{\n LOGININFO?.['REGISTER_BUTTON_LABEL'] || translate('Register') }}</a>\n </div>\n }\n <br />\n </form>\n </div>\n </div>\n </div>\n\n <div class=\"powered\">\n <p class=\"clsInfo-text mt-0 text-center\">\n <span style=\"font-size: 13px\"> {{ translate('Powered by') }} </span>\n <a href=\"https://www.cardinality.ai/\" rel=\"noopener\" role=\"link\" target=\"_blank\" tabindex=\"0\">\n <img alt=\"{{ translate('cardinality') }}\" class=\"Cardinality_logo\" src=\"assets/images/cardinality-logo_text.svg\"\n width=\"120\" />\n </a>\n </p>\n </div>\n </div>\n @if (LOGININFO['ENABLE_FOOTER'] && (LOGININFO['ENABLE_SELECTION'] === 'loginOnly' || LOGININFO['ENABLE_SELECTION'] === 'both')) {\n <div class=\"footerVersion\">\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateRight' : false) {\n <div class=\"versionSection clearfix\">\n <p class=\"f-left versionfootervalue\"> {{ translate('Stable') }}{{ LOGININFO['VERSION']}}</p>\n <p class=\"f-right versionfootervalue\">\n <span> &copy; </span>{{ LOGININFO['YEAR'] | date: 'yyyy' }} <span>{{ LOGININFO['POWERED_BY'] }}</span>\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </p>\n </div>\n }\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateCenter' : false) {\n <div class=\"versionSection clearfix\">\n <div class=\"text-center clearfix\">\n <p class=\"text-center version-footer-center\">\n <span> {{ translate('Stable') }}{{ LOGININFO['VERSION']}}</span>\n <span>&copy;{{ LOGININFO['YEAR'] | date: 'yyyy' }}</span>\n <span>{{ LOGININFO['POWERED_BY']}}</span>\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </p>\n </div>\n </div>\n }\n </div>\n }\n </div>\n}\n<!-- login-form-curve -->\n\n<!-- login-form-left -->\n@if (LOGININFO?.ENABLE_LOGIN_TEMPLATE ? LOGININFO?.ENABLE_LOGIN_TEMPLATE == 'loginTemplateHideShow' : false) {\n <div class=\"row login_3 login_hide\" id=\"back\">\n <div class=\"d-lg-flex flex-column p-lg-0 banner-sec\"\n [style.background-image]=\"'url(' + (LOGININFO['BACKGROUND_IMAGE']) + ')'\">\n <div class=\"clsBannerTitle\" [innerHtml]=\"LOGININFO['BANNER_TITLE']\" [style.color]=\"LOGININFO['LABEL_COLOR']\">\n </div>\n </div>\n <div class=\"overlay\"></div>\n <div class=\"align-items-center p-4 rightLoginSet\">\n <div class=\"current-design mx-auto\">\n <div class=\"col-md-12 text-left logo-group lg-mb-50\">\n <div class=\"form-group mb-0\">\n <div class=\"logo-group text-center\">\n <div class=\"logo-img\">\n <img [attr.src]=\"LOGININFO['BANNER']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </div>\n <h5 class=\"clsLoginTitle\" [innerHtml]=\"LOGININFO['TITLE']\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\"></h5>\n </div>\n </div>\n </div>\n <div class=\"col-md-12 loginBottomSet clearfix pl-0 pr-0\">\n <div class=\"login-content\">\n <form novalidate>\n <div class=\"clearfix\">\n <div class=\"form-group\">\n <label for=\"username\" class=\"intake-form-labels\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\n LOGININFO['USER_LABEL']}}</label>\n <input-empower class=\"Inputs\" type=\"mail\" placeholder=\"{{ translate('Email') }}\" name=\"email\"\n id=\"username\" tabindex=\"0\" required></input-empower>\n <span class=\"newLoginBtn clearfix\">\n <i class=\"fa fa-arrow-right\"></i>\n </span>\n </div>\n <div class=\"form-group no-mar\">\n <label for=\"password\" class=\"intake-form-labels w-100\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">{{\n LOGININFO['PASSWORD_LABEL']}}</label>\n <input-empower class=\"Inputs password\" #showhideinput type=\"password\" placeholder=\"{{ translate('Password') }}\"\n name=\"password\" id=\"password\" tabindex=\"0\" required></input-empower>\n <span class=\"newLoginBtn clearfix\">\n <button role=\"button\" type=\"submit\" title=\"{{ translate('Login') }}\" tabindex=\"0\">\n <i class=\"fa fa-sign-out\"></i></button>\n </span>\n </div>\n @if (LOGININFO['ENABLE_CAPTCHA'] ? LOGININFO['ENABLE_CAPTCHA'] : false) {\n <div class=\"captcha clearfix\">\n <div class=\"form-group\">\n <div class=\"captcha-box d-flex\">\n <input-empower type=\"text\" class=\"form-control\" placeholder=\"{{ translate('Enter captcha') }}\"></input-empower>\n <button type=\"button\" class=\"refresh\" [attr.aria-label]=\"translate('Refresh Captcha')\"><i class=\"fa fa-refresh\"\n aria-hidden=\"true\"></i></button>\n <span class=\"captcha-text\">ABCDi</span>\n </div>\n\n </div>\n </div>\n }\n <div class=\"clearfix termsForget form-group\">\n @if (LOGININFO['ENABLE_TERMSANDCONDITION'] ? LOGININFO['ENABLE_TERMSANDCONDITION'] : false) {\n <div class=\"checkbox\">\n <p-checkbox class=\"checklabelbox\" name=\"conditions\" value=\"yes\" inputId=\"ch\"\n aria-checked=\"false\">\n </p-checkbox>\n <label class=\"checklabel\" for=\"ch\">{{ translate('I accept the') }} <a href=\"javascript:void(0)\">{{ translate('terms & conditions') }}</a></label>\n </div>\n }\n @if (LOGININFO['ENABLE_FORGOTPASSWORD'] ? LOGININFO['ENABLE_FORGOTPASSWORD'] : false) {\n <div class=\"text-right\">\n <a href=\"javascript:void(0)\" class=\"btn-link forget\"\n [style.color]=\"LOGININFO['LABEL_COLOR']\">\n {{ translate('Forgot Password?') }}</a>\n </div>\n }\n </div>\n <div class=\"clearfix text-center col-md-12 col-12 mt-4\">\n <div class=\"row ml-0 mr-0\">\n <div class=\"clearfix text-center col-md-12 col-12 mt-2 pr-0 pl-0\">\n @if (LOGININFO['ENABLE_GOOGLE'] ? LOGININFO['ENABLE_GOOGLE'] : false) {\n <p-button role=\"button\" type=\"submit\" title=\"{{ translate('Login with Google') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton btn-hover w-100\" tabindex=\"0\">{{ translate('Login with Google') }}\n </p-button>\n }\n </div>\n </div>\n\n </div>\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\n <div class=\"mar-btm-20 picslogin\">\n <span>{{ translate('Or') }}</span>\n </div>\n }\n @if (LOGININFO['ENABLE_LOGINWITHAZURE'] ? LOGININFO['ENABLE_LOGINWITHAZURE'] : false) {\n <div class=\"clearfix text-center col-md-12 col-12 mt-2\">\n <p-button role=\"button\" type=\"button\" title=\"{{ translate('Login with Azure') }}\"\n styleClass=\"w-100 align-items-center justify-content-center d-block mb-2\"\n class=\"loginbutton w-100\" tabindex=\"0\">{{ translate('Login with Azure') }}</p-button>\n </div>\n }\n @if (LOGININFO['ENABLE_REGISTARTION'] ? LOGININFO['ENABLE_REGISTARTION'] : false) {\n <div class=\"clearfix text-center mt-10\">\n <a href=\"javascript:void;\" class=\"goto-register text-primary\">{{\n LOGININFO?.['REGISTER_BUTTON_LABEL'] || translate('Register') }}</a>\n </div>\n }\n </div>\n <br />\n </form>\n </div>\n </div>\n </div>\n\n <div class=\"powered\">\n <p class=\"clsInfo-text mt-0 text-center\">\n <span style=\"font-size: 13px\"> {{ translate('Powered by') }} </span>\n <a href=\"https://www.cardinality.ai/\" rel=\"noopener\" role=\"link\" target=\"_blank\" tabindex=\"0\">\n <img alt=\"{{ translate('cardinality') }}\" class=\"Cardinality_logo\" src=\"assets/images/cardinality-logo_text.svg\"\n width=\"120\" />\n </a>\n </p>\n </div>\n\n </div>\n @if (LOGININFO['ENABLE_FOOTER'] && (LOGININFO['ENABLE_SELECTION'] === 'loginOnly' || LOGININFO['ENABLE_SELECTION'] === 'both')) {\n <div class=\"footerVersion\">\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateRight' : false) {\n <div class=\"versionSection clearfix\">\n <p class=\"f-left versionfootervalue\"> {{ translate('Stable') }}{{ LOGININFO['VERSION']}}</p>\n <p class=\"f-right versionfootervalue\">\n <span> &copy; </span>{{ LOGININFO['YEAR'] | date: 'yyyy' }} <span>{{ LOGININFO['POWERED_BY'] }}</span>\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </p>\n </div>\n }\n @if (LOGININFO['ENABLE_FOOTER'] ? LOGININFO['ENABLE_FOOTER']=='versionTemplateCenter' : false) {\n <div class=\"versionSection clearfix\">\n <div class=\"text-center clearfix\">\n <p class=\"text-center version-footer-center\">\n <span> {{ translate('Stable') }}{{ LOGININFO['VERSION']}}</span>\n <span> &copy;{{ LOGININFO['YEAR'] | date: 'yyyy' }}</span>\n <span>{{ LOGININFO['POWERED_BY']}}</span>\n <img [attr.src]=\"LOGININFO['POWERED_BY_LOGO']\" class=\"cfaLogoTop\" alt=\"{{ translate('Oregon Provider Logo') }}\" />\n </p>\n </div>\n </div>\n }\n </div>\n }\n </div>\n}\n<!-- login-form-left -->","import { ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild, OnDestroy } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { AppConstants } from '../../@core/constants/app-constants';\nimport { AlertService } from '../../@core/service/alert.service';\nimport { ConfigurationSettingsService } from '../../@core/service/configuration-settings.service';\nimport { HttpService } from '../../@core/service/http.service';\nimport { AttachmentsService } from '../../@core/service/attachments.service';\nimport { DataStoreService } from '../../@core/service/data-store.service';\nimport { Inject } from '@angular/core';\nimport { PICS_CORE_SESSION_STORAGE, SessionStorageService } from '@pics-core/common-utils';\n\n@Component({\n selector: 'lib-config-login-settings',\n templateUrl: './config-login-settings.component.html',\n styleUrls: ['./config-login-settings.component.scss'],\n standalone: false\n})\nexport class ConfigLoginSettingsComponent implements OnInit, OnDestroy {\n @ViewChild('scrollBox', { static: false }) scrollBox!: ElementRef;\n @ViewChild('loginScrollBox') loginScrollBox!: HTMLDivElement;\n // Let Tab / Shift+Tab move focus out of the rich-text editors instead of being\n // captured (WCAG 2.1.2 No Keyboard Trap). Returning true lets the browser's\n // default focus move happen instead of Quill inserting indentation.\n quillModules = {\n keyboard: {\n bindings: {\n tab: { key: 9, handler: () => true },\n 'shift+tab': { key: 9, shiftKey: true, handler: () => true }\n }\n }\n };\n activeTab: string = 'home';\n Organization: any;\n RBACORG: any;\n PERMISSION: any;\n LOGININFO: any;\n loginEvent$: BehaviorSubject<any>;\n thumbnailLogo = '';\n thumbnailBanner = '';\n thumbnailPoweredLogo = '';\n orgId: any;\n orgSubs: Subscription;\n userRoles = [];\n emailTemplate = [];\n organizations = [];\n imageDataLogo: any;\n uploadedFileLogo: any;\n urlPathLogo: any;\n attachTypeLogo: any;\n imageDataBanner: any;\n imageDataFooterLogo: any;\n uploadedFileBanner: any;\n uploadedFileFooterBanner: any;\n urlPathBanner: any;\n urlPathFooterLogo: any;\n attachTypeBanner: any;\n userid = '';\n updateButton = false;\n environment: any;\n visible = false;\n bannerVisible = false;\n logoFooterVisible = false;\n configRegistrationForm: FormGroup;\n editConfigSettings: any;\n previewVisible = false;\n previewImageUrl: string = '';\n forgetPasswordConfig = [\n { name: 'Verification Link', value: 'link' },\n { name: 'Verification Code', value: 'code' }\n ]\n multifactorTemplates = [\n { name: 'Email', value: 'Email' },\n // { name: 'Sms', value: 'Sms' }\n ];\n previewLoginInfo: any = null;\n showPreviewModal = false;\n showFormErrors = false;\n isEditingOrganization = false;\n isEditingBanner = false;\n /** Active config_settings rows for the org-title dropdown. */\n configOptions: { id: number; organization_title: string }[] = [];\n /** Selected pics_core.config_settings.id */\n selectedConfigId: number | null = null;\n /** Show selector when at least one config exists; single row is auto-selected. */\n showOrgDropdown = false;\n /** True when config load failed, so Save must not create a duplicate row. */\n configLoadFailed = false;\n currentYear: number = new Date().getFullYear();\n isAtStart: Record<string, boolean> = { login: true, landing: true, consumer: true };\n isAtEnd: Record<string, boolean> = { login: false, landing: false, consumer: false };\n inputValidationMethod: any;\n i18n: any = {}; // Store i18n translations\n /** Last successfully loaded config id (used to revert dirty dropdown switches). */\n private loadedConfigId: number | null = null;\n private readonly destroy$ = new Subject<void>();\n private readonly configSelection$ = new Subject<number>();\n\n constructor(\n private alertService: AlertService,\n private attachmentService: AttachmentsService,\n private httpService: HttpService,\n private _formBuilder: FormBuilder,\n private _configurationSettingsService: ConfigurationSettingsService,\n private _storeservice: DataStoreService,\n private cdRef: ChangeDetectorRef,\n @Inject(PICS_CORE_SESSION_STORAGE) private localstore: SessionStorageService\n ) {\n this.loginEvent$ = new BehaviorSubject<any>(null);\n this.userid = sessionStorage.getItem('id');\n }\n\n ngOnInit(): void {\n this.initilizeForm();\n this.configSelection$\n .pipe(\n switchMap((configId) => this._configurationSettingsService.getConfigById(configId)),\n takeUntil(this.destroy$)\n )\n .subscribe({\n next: (res: any) => {\n this.configLoadFailed = false;\n const record = this.normalizeConfigRecord(res?.data);\n if (record) {\n this.applyConfigToForm(record);\n } else {\n this.updateButton = false;\n this.editConfigSettings = null;\n this.alertService.error('Selected organization configuration was not found.');\n }\n },\n error: () => {\n this.configLoadFailed = true;\n this.alertService.error('Unable to load login settings. Please try again.');\n }\n });\n this.orgSubs = this._storeservice.currentStore.subscribe((res: any) => {\n if (res['I18N'] && Object.keys(res['I18N']).length > 0) {\n this.i18n = res['I18N'];\n this.cdRef.detectChanges();\n }\n if (res['RBACORG'] && res['RBACORG'] !== '') {\n this.RBACORG = res['RBACORG'];\n this.environment = this.RBACORG['environment'];\n this.orgId = parseInt(this.RBACORG['orgID']);\n if (this.environment) {\n this.organizationsList();\n this.getEmailTemplateNewList();\n this.getRolesList();\n this.loadConfigOptions();\n }\n }\n });\n }\n /**\n * Get translation for a key\n * @param key Translation key\n * @returns Translated string or key if not found\n */\n translate(key: string): string {\n return this.i18n[key] || key;\n }\n\n // Opens the (visually hidden) file input associated with the given id.\n triggerUpload(id: string) {\n document.getElementById(id)?.click();\n }\n\n ngAfterViewInit() {\n this.checkScroll('login', this.loginScrollBox);\n }\n\n ngOnDestroy(): void {\n this.orgSubs?.unsubscribe();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n /** API requires a finite number; form spread can leave a string, NaN, or ''. */\n private toOrganizationId(...candidates: any[]): number | null {\n for (const value of candidates) {\n if (value === '' || value === null || value === undefined) {\n continue;\n }\n const parsed = typeof value === 'number' ? value : Number(value);\n if (Number.isFinite(parsed)) {\n return parsed;\n }\n }\n return null;\n }\n\n private parseNestedConfig(value: any): any {\n if (!value) {\n return {};\n }\n if (typeof value === 'string') {\n try {\n const parsed = JSON.parse(value);\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : {};\n } catch {\n return {};\n }\n }\n return typeof value === 'object' && !Array.isArray(value) ? value : {};\n }\n\n private toSwitchValue(value: any): boolean {\n return value === true || value === 'true';\n }\n\n private toFormText(value: any): string {\n return value === null || value === undefined ? '' : value;\n }\n\n /** API numeric fields reject ''; send null when unset. */\n private toOptionalNumber(value: any): number | null {\n if (value === '' || value === null || value === undefined) {\n return null;\n }\n const parsed = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n }\n\n scrollTabs(key: 'login', element: HTMLDivElement, amount: number) {\n element.scrollBy({ left: amount, behavior: 'smooth' });\n setTimeout(() => this.checkScroll(key, element), 400);\n }\n\n checkScroll(key: 'login', element: HTMLDivElement) {\n this.isAtStart[key] = element.scrollLeft === 0;\n this.isAtEnd[key] = element.scrollLeft + element.clientWidth >= element.scrollWidth;\n }\n initilizeForm() {\n this.configRegistrationForm = this._formBuilder.group({\n id: [''],\n registration: false,\n layout: [1],\n role_for_registration: [''],\n template_for_registration: [''],\n banner: ['', Validators.required],\n organization_title: ['', Validators.required],\n banner_title: [''],\n logo: ['', Validators.required],\n organizationid: ['', Validators.required],\n enable_mfa: [null],\n enable_forgot_password: [],\n forgotPassword: [false],\n termsAndCondition: [false],\n enableRegistration: [false],\n loginTemplate: ['', Validators.required],\n landingTemplate: ['landingTemplatepage1'],\n enable_captcha: [false],\n enable_google_translate: [false],\n enable_server_maintenance: [''],\n terms_condition_template: [''],\n version: [''],\n content: [''],\n powered_by_logo: [''],\n enable_footer: [false],\n footer_version_template: [''],\n showFooterWhere: [''],\n forget_config: [''],\n userLabel: [''],\n loginButtonLabel: [''],\n registerButtonLabel: [''],\n registerButtonPrefix: [''],\n passwordLabel: [''],\n labelColor: [''],\n multifactor_template: [''],\n google_state: [''],\n language_config: [''],\n otp_digits: ['', [Validators.min(4), Validators.max(6)]],\n otp_expire_time: ['', [Validators.min(2), Validators.max(30)]],\n resend_otp_delay: ['', [Validators.min(0.5), Validators.max(10)]],\n forget_expire_time: ['', [Validators.min(1), Validators.max(60)]],\n enableLoginAttemptThrottling: [false], // enable login throttling based on rapid attempts\n lockoutWindowMinutes: ['', [Validators.min(1)]], // time window to detect repeated attempts\n lockoutDurationMinutes: ['', [Validators.min(1)]], // account lock duration change to this name\n emailPlaceholder: [''],\n passwordPlaceholder: [''],\n });\n this.onMfaValidation();\n }\n\n onMfaValidation(): void {\n const mfaValue = this.configRegistrationForm.get('enable_mfa')?.value;\n const templateControl = this.configRegistrationForm.get('multifactor_template');\n const otpControl = this.configRegistrationForm.get('otp_digits');\n const otpExpireControl = this.configRegistrationForm.get('otp_expire_time');\n const resendDelayControl = this.configRegistrationForm.get('resend_otp_delay');\n const forgotControl = this.configRegistrationForm.get('forget_config');\n const forgetExpireControl = this.configRegistrationForm.get('forget_expire_time');\n if (mfaValue) {\n templateControl?.setValidators([Validators.required]);\n otpControl?.setValidators([Validators.required, Validators.min(4), Validators.max(6)]);\n otpExpireControl?.setValidators([Validators.required, Validators.min(2), Validators.max(30)]);\n resendDelayControl?.setValidators([Validators.required, Validators.min(0.5), Validators.max(10)]);\n forgotControl?.setValidators([Validators.required]);\n forgetExpireControl?.setValidators([Validators.required, Validators.min(1), Validators.max(60)]);\n } else {\n templateControl?.clearValidators();\n otpControl?.setValidators([Validators.min(4), Validators.max(6)]);\n otpExpireControl?.setValidators([Validators.min(2), Validators.max(30)]);\n resendDelayControl?.setValidators([Validators.min(0.5), Validators.max(10)]);\n forgotControl?.clearValidators();\n forgetExpireControl?.setValidators([Validators.min(1), Validators.max(60)]);\n }\n const controls = [\n templateControl, otpControl, otpExpireControl, \n resendDelayControl, forgotControl, forgetExpireControl\n ];\n controls.forEach(control => control?.updateValueAndValidity());\n }\n\n onLoginAttemptThrottlingChange(): void {\n const throttlingValue = this.configRegistrationForm.get('enableLoginAttemptThrottling')?.value;\n const lockoutWindowControl = this.configRegistrationForm.get('lockoutWindowMinutes');\n const lockoutDurationControl = this.configRegistrationForm.get('lockoutDurationMinutes'); \n if (throttlingValue) {\n lockoutWindowControl?.setValidators([Validators.required, Validators.min(1)]);\n lockoutDurationControl?.setValidators([Validators.required, Validators.min(1)]);\n } else {\n lockoutWindowControl?.clearValidators();\n lockoutDurationControl?.clearValidators();\n } \n lockoutWindowControl?.updateValueAndValidity();\n lockoutDurationControl?.updateValueAndValidity();\n }\n\n getRolesList() {\n this._configurationSettingsService.getAllUserRole(this.orgId).subscribe(\n res => {\n this.userRoles = res['data'];\n },\n _error => this.alertService.error(AppConstants.errorMessage)\n );\n }\n getEmailTemplateNewList() {\n this._configurationSettingsService.getEmailTemplateNewList().subscribe((_res: any) => {\n if (_res) {\n this.emailTemplate = _res.data;\n }\n });\n }\n\n toggleEdit(field: 'organization' | 'banner') {\n if (field === 'organization') {\n this.isEditingOrganization = !this.isEditingOrganization;\n } else {\n this.isEditingBanner = !this.isEditingBanner;\n }\n }\n\n getOrganizationPlainText(): string {\n const value = this.configRegistrationForm.get('organization_title')?.value;\n if (value) {\n let text = value.replace(/<br\\s*\\/?>/gi, '\\n');\n text = text.replace(/<\\/p><p>/gi, '\\n');\n text = text.replace(/<p>/gi, '');\n text = text.replace(/<\\/p>/gi, '\\n');\n const temp = document.createElement('div');\n temp.innerHTML = text;\n const result = temp.textContent || temp.innerText || '';\n\n return result.replace(/\\n{3,}/g, '\\n\\n').trim();\n }\n return '';\n }\n\n getBannerPlainText(): string {\n const value = this.configRegistrationForm.get('banner_title')?.value;\n if (value) {\n const temp = document.createElement('div');\n temp.innerHTML = value;\n return temp.textContent || temp.innerText || '';\n }\n return '';\n }\n\n updateOrganizationTitle(event: any) {\n const plainText = event.target.value;\n const htmlText = plainText.replace(/\\r?\\n/g, '<br>');\n this.configRegistrationForm.patchValue({\n organization_title: htmlText\n });\n }\n\n updateBannerTitle(event: any) {\n const plainText = event.target.value;\n this.configRegistrationForm.patchValue({\n banner_title: plainText\n });\n }\n\n selectLoginTemplate(value: string) {\n this.configRegistrationForm.get('loginTemplate')?.setValue(value);\n }\n\n selectServerTemplate(value: string) {\n this.configRegistrationForm.get('enable_server_maintenance')?.setValue(value);\n }\n\n selectFooterTemplate(value: string) {\n this.configRegistrationForm.get('footer_version_template')?.setValue(value);\n }\n\n organizationsList() {\n this._configurationSettingsService.getAllOrganizations().subscribe((res: any) => {\n this.organizations = res.data;\n });\n }\n\n validateImage(file: any, type) {\n const fileSize = Number(file[0].size) / 1024;\n const filetype = file[0].type.replace('image/', '');\n if (\n filetype === 'jpg' ||\n filetype === 'jpeg' ||\n filetype === 'png' ||\n filetype === 'gif' ||\n filetype === 'svg+xml'\n ) {\n if (fileSize < 1024 && type === 'BANNER') {\n return true;\n } else if (fileSize < 120 && type === 'LOGO') {\n return true;\n } else if (fileSize < 120 && type === 'POWERED_BY_LOGO') {\n return true;\n } else {\n this.alertService.warn('File is bigger than 1024 KB');\n return false;\n }\n } else {\n this.alertService.warn(`${filetype} format is not supported`);\n return false;\n }\n }\n\n removeThumbnail() {\n this.thumbnailLogo = '';\n }\n\n handleFileInput(fileValue: any) {\n const target = fileValue.target as HTMLInputElement;\n const file: File = target.files[0];\n this.uploadedFileLogo = fileValue.target.files[0].name;\n this.imageDataLogo = {\n contentType: fileValue.target.files[0].type,\n fileName: `login-orgimage/${this.uploadedFileLogo}`\n };\n if (this.validateImage(fileValue.target.files, 'LOGO')) {\n this._configurationSettingsService.uploadKey(this.imageDataLogo).subscribe(\n (res: any) => {\n this.urlPathLogo = res.data;\n const uploadAttachment: any = document.getElementById('upload_logo');\n const uploadAttachmentDetails = uploadAttachment.files[0];\n this.httpService.putUpload(this.urlPathLogo, uploadAttachmentDetails, uploadAttachmentDetails.type).subscribe(\n (_resp: any) => {\n this.alertService.success('Uploaded Successfully!');\n const reader = new FileReader();\n reader.onload = () => {\n // this.thumbnailLogo = reader.result as string;\n const urlPathLogo = this.urlPathLogo ? this.urlPathLogo.split('?')[0] : '';\n this.thumbnailLogo = urlPathLogo;\n this.configRegistrationForm.patchValue({\n logo: this.imageDataLogo?.fileName\n });\n };\n reader.readAsDataURL(file);\n this.attachTypeLogo = fileValue.target.files[0].type;\n },\n error => {\n if (error.status == 0) {\n this.alertService.error(AppConstants.errorMessage);\n this.uploadedFileLogo = '';\n this.urlPathLogo = '';\n }\n }\n );\n },\n _error => {\n this.alertService.error(AppConstants.errorMessage);\n }\n );\n }\n }\n\n handleFileInputBanner(fileValue: any) {\n const target = fileValue.target as HTMLInputElement;\n const file: File = target.files[0];\n this.uploadedFileBanner = fileValue.target.files[0].name;\n this.imageDataBanner = {\n contentType: fileValue.target.files[0].type,\n fileName: `login-orgimage/${this.uploadedFileBanner}`\n };\n if (this.validateImage(fileValue.target.files, 'BANNER')) {\n this.attachmentService.uploadKey(this.imageDataBanner).subscribe(\n (res: any) => {\n this.urlPathBanner = res.data;\n const uploadAttachment: any = document.getElementById('upload_banner');\n const uploadAttachmentDetails = uploadAttachment.files[0];\n this.httpService\n .putUpload(this.urlPathBanner, uploadAttachmentDetails, uploadAttachmentDetails.type)\n .subscribe(\n (_resp: any) => {\n this.alertService.success('Uploaded Successfully!');\n const reader = new FileReader();\n reader.onload = () => {\n const urlPathBanner = this.urlPathBanner ? this.urlPathBanner.split('?')[0] : '';\n this.thumbnailBanner = urlPathBanner;\n this.configRegistrationForm.patchValue({\n banner: this.imageDataBanner?.fileName\n });\n };\n reader.readAsDataURL(file);\n this.attachTypeBanner = fileValue.target.files[0].type;\n },\n error => {\n if (error.status == 0) {\n this.alertService.error(AppConstants.errorMessage);\n this.uploadedFileBanner = '';\n this.urlPathBanner = '';\n }\n }\n );\n },\n _error => {\n this.alertService.error(AppConstants.errorMessage);\n }\n );\n }\n }\n\n handleFileFooterInput(fileValue: any) {\n const target = fileValue.target as HTMLInputElement;\n const file: File = target.files[0];\n this.uploadedFileFooterBanner = fileValue.target.files[0].name;\n this.imageDataFooterLogo = {\n contentType: fileValue.target.files[0].type,\n fileName: `login-orgimage/${this.uploadedFileFooterBanner}`\n };\n if (this.validateImage(fileValue.target.files, 'POWERED_BY_LOGO')) {\n this.attachmentService.uploadKey(this.imageDataFooterLogo).subscribe(\n (res: any) => {\n this.urlPathFooterLogo = res.data;\n const uploadAttachment: any = document.getElementById('uploadPoweredBy');\n const uploadAttachmentDetails = uploadAttachment.files[0];\n this.httpService\n .putUpload(this.urlPathFooterLogo, uploadAttachmentDetails, uploadAttachmentDetails.type)\n .subscribe(\n (_resp: any) => {\n this.alertService.success('Uploaded Successfully!');\n const reader = new FileReader();\n reader.onload = () => {\n const urlPathFooterLogo = this.urlPathFooterLogo ? this.urlPathFooterLogo.split('?')[0] : '';\n this.thumbnailPoweredLogo = urlPathFooterLogo;\n this.configRegistrationForm.patchValue({\n powered_by_logo: this.imageDataFooterLogo?.fileName\n });\n };\n reader.readAsDataURL(file);\n this.attachTypeBanner = fileValue.target.files[0].type;\n },\n error => {\n if (error.status == 0) {\n this.alertService.error(AppConstants.errorMessage);\n this.uploadedFileFooterBanner = '';\n this.urlPathFooterLogo = '';\n }\n }\n );\n },\n _error => {\n this.alertService.error(AppConstants.errorMessage);\n }\n );\n }\n }\n\n removeThumbnailBanner() {\n this.thumbnailBanner = '';\n }\n\n removeFooterLogo() {\n this.thumbnailPoweredLogo = ''\n }\n\n saveConfig() {\n this.configRegistrationForm.markAllAsTouched();\n this.showFormErrors = true;\n if (this.configRegistrationForm.invalid) {\n const messages = this.getInvalidFieldMessages();\n this.alertService.warn(messages.length ? messages.join(' ') : this.translate('Please fill all required fields.'));\n return;\n }\n const validate = this.conditionValidation();\n if (validate) {\n if (this.editConfigSettings) {\n const inputRequest = {\n id: this.editConfigSettings.id,\n registration: this.configRegistrationForm.value.registration,\n // eslint-disable-next-line radix\n layout: parseInt(this.configRegistrationForm.value.layout),\n role_for_registration: this.toOptionalNumber(this.configRegistrationForm.value.role_for_registration),\n template_for_registration: this.toOptionalNumber(this.configRegistrationForm.value.template_for_registration),\n banner: this.configRegistrationForm.value.banner,\n organization_title: this.configRegistrationForm.value.organization_title,\n banner_title: this.configRegistrationForm.value.banner_title,\n logo: this.configRegistrationForm.value.logo,\n organizationid: this.toOrganizationId(\n this.editConfigSettings?.organizationid,\n this.configRegistrationForm.value.organizationid,\n this.orgId\n ),\n terms_condition_template: this.configRegistrationForm.value.terms_condition_template,\n userLabel: this.configRegistrationForm.value.userLabel,\n passwordLabel: this.configRegistrationForm.value.passwordLabel,\n labelColor: this.configRegistrationForm.value.labelColor,\n platform_config: {\n enable_mfa: this.configRegistrationForm.value.enable_mfa || null,\n forgotPassword: this.configRegistrationForm.value.forgotPassword || null,\n termsAndCondition: this.configRegistrationForm.value.termsAndCondition || null,\n enableRegistration: this.configRegistrationForm.value.enableRegistration,\n loginTemplate: this.configRegistrationForm.value.loginTemplate || 'loginTemplateRight',\n enable_footer: this.configRegistrationForm.value.enable_footer || null,\n footer_version_template: this.configRegistrationForm.value.footer_version_template || null,\n forget_config: this.configRegistrationForm.value.forget_config || null,\n multifactor_template: this.configRegistrationForm.value.multifactor_template || null,\n landingTemplate: this.configRegistrationForm.value.landingTemplate || 'landingTemplatepage1',\n language_config: this.configRegistrationForm.value.language_config || 'en',\n otp_digits: this.configRegistrationForm.value.otp_digits || 4,\n otp_expire_time: this.configRegistrationForm.value.otp_expire_time || 30,\n resend_otp_delay: this.configRegistrationForm.value.resend_otp_delay || 1,\n forget_expire_time: this.configRegistrationForm.value.forget_expire_time || 30,\n enableLoginAttemptThrottling: this.configRegistrationForm.value.enableLoginAttemptThrottling || false,\n lockoutWindowMinutes: this.configRegistrationForm.value.lockoutWindowMinutes || 15,\n lockoutDurationMinutes: this.configRegistrationForm.value.lockoutDurationMinutes || 30,\n loginButtonLabel: this.configRegistrationForm.value.loginButtonLabel || 'Login',\n registerButtonLabel: this.configRegistrationForm.value.registerButtonLabel || 'Register',\n registerButtonPrefix: this.configRegistrationForm.value.registerButtonPrefix || '',\n emailPlaceholder: this.configRegistrationForm.value.emailPlaceholder || 'email',\n passwordPlaceholder: this.configRegistrationForm.value.passwordPlaceholder || 'password',\n enable_captcha: this.configRegistrationForm.value.enable_captcha || false,\n enable_google_translate: this.configRegistrationForm.value.enable_google_translate || false,\n enable_server_maintenance: this.configRegistrationForm.value.enable_server_maintenance || null,\n },\n footer_config: {\n version: this.configRegistrationForm.value.version,\n content: this.configRegistrationForm.value.content,\n powered_by_logo: this.configRegistrationForm.value.powered_by_logo,\n showFooterWhere: this.configRegistrationForm.value.showFooterWhere,\n }\n };\n this.updateButton = true;\n const configId = this.editConfigSettings.id;\n this._configurationSettingsService.updateConfig(configId, inputRequest).subscribe({\n next: () => {\n this.alertService.success('Updated successfully!');\n this.selectedConfigId = Number(configId);\n this.refreshConfigOptionLabel(configId, this.configRegistrationForm.value.organization_title);\n this.loadSelectedConfig();\n },\n error: () => {\n // Keep updateButton / editConfigSettings so Save can retry without leaving edit mode.\n this.alertService.error('Unable to update login settings. Please try again.');\n }\n });\n } else if (this.orgId != null && !this.configLoadFailed && !this.configOptions.length) {\n const inputRequest = {\n registration: this.configRegistrationForm.value.registration,\n layout: this.configRegistrationForm.value.layout,\n role_for_registration: this.toOptionalNumber(this.configRegistrationForm.value.role_for_registration),\n template_for_registration: this.toOptionalNumber(this.configRegistrationForm.value.template_for_registration),\n banner: this.configRegistrationForm.value.banner,\n organization_title: this.configRegistrationForm.value.organization_title,\n banner_title: this.configRegistrationForm.value.banner_title,\n logo: this.configRegistrationForm.value.logo,\n organizationid: this.toOrganizationId(\n this.editConfigSettings?.organizationid,\n this.configRegistrationForm.value.organizationid,\n this.orgId\n ),\n enable_mfa: this.configRegistrationForm.value.enable_mfa || null,\n terms_condition_template: this.configRegistrationForm.value.terms_condition_template,\n userLabel: this.configRegistrationForm.value.userLabel,\n passwordLabel: this.configRegistrationForm.value.passwordLabel,\n loginButtonLabel: this.configRegistrationForm.value.loginButtonLabel,\n registerButtonLabel: this.configRegistrationForm.value.registerButtonLabel,\n registerButtonPrefix: this.configRegistrationForm.value.registerButtonPrefix,\n labelColor: this.configRegistrationForm.value.labelColor,\n platform_config: {\n enable_mfa: this.configRegistrationForm.value.enable_mfa || null,\n forgotPassword: this.configRegistrationForm.value.forgotPassword || null,\n termsAndCondition: this.configRegistrationForm.value.termsAndCondition || null,\n enableRegistration: this.configRegistrationForm.value.enableRegistration || null,\n loginTemplate: this.configRegistrationForm.value.loginTemplate || 'loginTemplateRight',\n enable_footer: this.configRegistrationForm.value.enable_footer || null,\n footer_version_template: this.configRegistrationForm.value.footer_version_template || null,\n multifactor_template: this.configRegistrationForm.value.multifactor_template || null,\n forget_config: this.configRegistrationForm.value.forget_config || null,\n landingTemplate: this.configRegistrationForm.value.landingTemplate || 'landingTemplatepage1',\n language_config: this.configRegistrationForm.value.language_config || 'en',\n otp_digits: this.configRegistrationForm.value.otp_digits || 4,\n otp_expire_time: this.configRegistrationForm.value.otp_expire_time || 30,\n resend_otp_delay: this.configRegistrationForm.value.resend_otp_delay || 1,\n forget_expire_time: this.configRegistrationForm.value.forget_expire_time || 30,\n enableLoginAttemptThrottling: this.configRegistrationForm.value.enableLoginAttemptThrottling || false,\n lockoutWindowMinutes: this.configRegistrationForm.value.lockoutWindowMinutes || 15,\n lockoutDurationMinutes: this.configRegistrationForm.value.lockoutDurationMinutes || 30,\n loginButtonLabel: this.configRegistrationForm.value.loginButtonLabel || 'Login',\n registerButtonLabel: this.configRegistrationForm.value.registerButtonLabel || 'Register',\n registerButtonPrefix: this.configRegistrationForm.value.registerButtonPrefix || '',\n emailPlaceholder: this.configRegistrationForm.value.emailPlaceholder || 'email',\n passwordPlaceholder: this.configRegistrationForm.value.passwordPlaceholder || 'password',\n enable_captcha: this.configRegistrationForm.value.enable_captcha || false,\n enable_google_translate: this.configRegistrationForm.value.enable_google_translate || false,\n enable_server_maintenance: this.configRegistrationForm.value.enable_server_maintenance || null,\n },\n footer_config: {\n version: this.configRegistrationForm.value.version,\n content: this.configRegistrationForm.value.content,\n powered_by_logo: this.configRegistrationForm.value.powered_by_logo,\n showFooterWhere: this.configRegistrationForm.value.showFooterWhere,\n },\n };\n this.updateButton = true;\n this._configurationSettingsService.saveConfigSettings(inputRequest).subscribe({\n next: (res: unknown) => {\n this.alertService.success('Saved successfully!');\n // Prefer the created id so the new row is selected after reload (matches prior newest-row behavior).\n const createdId = this.extractCreatedConfigId(res);\n if (createdId != null) {\n this.selectedConfigId = createdId;\n }\n this.loadConfigOptions();\n },\n error: () => {\n this.updateButton = false;\n this.alertService.error('Unable to save login settings. Please try again.');\n }\n });\n } else if (this.configLoadFailed) {\n this.alertService.error('Existing login settings could not be loaded. Please reload the page before saving.');\n } else {\n this.alertService.error('Please select an organization configuration before saving.');\n }\n }\n }\n\n getInvalidFieldMessages(): string[] {\n const labels: Record<string, string> = {\n banner: 'Banner',\n organization_title: 'Organization Title',\n logo: 'Logo',\n organizationid: 'Organization',\n loginTemplate: 'Login Template',\n landingTemplate: 'Landing Template',\n role_for_registration: 'Role for registration',\n multifactor_template: 'Multifactor Authentication Channel',\n otp_digits: 'OTP Verification Digits',\n otp_expire_time: 'OTP Expire Time',\n resend_otp_delay: 'Resend OTP Delay',\n forget_config: 'Forget Password Config',\n forget_expire_time: 'Forgot Email Expire Time',\n lockoutWindowMinutes: 'Lock window duration',\n lockoutDurationMinutes: 'Lock duration'\n };\n const messages: string[] = [];\n Object.keys(this.configRegistrationForm.controls).forEach(key => {\n const control = this.configRegistrationForm.get(key);\n if (!control?.invalid || !control.errors) {\n return;\n }\n const label = this.translate(labels[key] || key);\n if (control.errors['required']) {\n messages.push(this.translate(`${label} is required.`));\n }\n if (control.errors['min'] || control.errors['max']) {\n messages.push(this.translate(`${label} has an invalid value.`));\n }\n });\n return messages;\n }\n\n get otpControl() {\n return this.configRegistrationForm.get('otp_digits');\n }\n\n get otpExpireControl() {\n return this.configRegistrationForm.get('otp_expire_time');\n }\n\n get resendDelayControl() {\n return this.configRegistrationForm.get('resend_otp_delay');\n }\n\n get forgetExpireControl() {\n return this.configRegistrationForm.get('forget_expire_time');\n }\n\n get lockoutWindowControl() {\n return this.configRegistrationForm.get('lockoutWindowMinutes');\n }\n\n get lockoutDurationControl() {\n return this.configRegistrationForm.get('lockoutDurationMinutes');\n }\n\n backToPreview() {\n this.updateButton = false;\n }\n\n showUploadedLogo() {\n this.visible = true;\n }\n\n showUploadedBanner() {\n this.bannerVisible = true;\n }\n\n showUploadedFooterLogo() {\n this.logoFooterVisible = true;\n }\n\n /**\n * Loads all active config_settings rows for the dropdown.\n * Even with a single row, the dropdown is shown and that row is auto-selected.\n */\n loadConfigOptions(): void {\n this._configurationSettingsService.getConfigList().subscribe({\n next: (res: any) => {\n const list = this.normalizeConfigList(res?.data ?? res);\n this.configOptions = list\n .filter((item: any) => item?.id != null)\n .map((item: any) => ({\n id: Number(item.id),\n organization_title: item.organization_title || `Config ${item.id}`\n }));\n this.showOrgDropdown = this.configOptions.length >= 1;\n\n if (!this.configOptions.length) {\n this.selectedConfigId = null;\n this.editConfigSettings = null;\n this.updateButton = false;\n this.configLoadFailed = false;\n return;\n }\n\n const preferredId = this.resolveInitialConfigId(this.configOptions);\n this.onConfigSelectionChange(preferredId);\n },\n error: () => {\n this.configLoadFailed = true;\n this.updateButton = false;\n this.alertService.error('Unable to load login settings. Please try again.');\n }\n });\n }\n\n /** Dropdown / programmatic selection handler. */\n onConfigSelectionChange(configId: number | null): void {\n if (configId == null || !Number.isFinite(Number(configId))) {\n return;\n }\n const nextId = Number(configId);\n if (nextId === this.loadedConfigId) {\n this.selectedConfigId = nextId;\n return;\n }\n if (this.configRegistrationForm?.dirty) {\n const discard = window.confirm(\n this.translate('You have unsaved changes. Discard them and switch organization?')\n );\n if (!discard) {\n this.selectedConfigId = this.loadedConfigId;\n this.cdRef.detectChanges();\n return;\n }\n }\n this.selectedConfigId = nextId;\n this.loadSelectedConfig();\n }\n\n /**\n * Loads the selected config_settings row by primary key.\n * Prefer list?id= so multi-portal orgs update the intended row.\n * Uses switchMap via configSelection$ so rapid dropdown changes cancel in-flight loads.\n */\n loadSelectedConfig(): void {\n if (this.selectedConfigId == null) {\n return;\n }\n this.configSelection$.next(this.selectedConfigId);\n }\n\n /** Kept for Cancel / template callers that previously reloaded by org. */\n getConfigById(): void {\n if (this.selectedConfigId != null) {\n this.loadSelectedConfig();\n return;\n }\n this.loadConfigOptions();\n }\n\n private applyConfigToForm(record: any): void {\n this.updateButton = true;\n this.selectedConfigId = Number(record.id);\n this.loadedConfigId = Number(record.id);\n const platformConfig = this.parseNestedConfig(record.platform_config);\n const footerConfig = this.parseNestedConfig(record.footer_config);\n this.editConfigSettings = {\n ...record,\n platform_config: platformConfig,\n footer_config: footerConfig\n };\n\n // Parse the year from API response\n let yearValue = null;\n if (footerConfig?.year) {\n const yearStr = footerConfig.year;\n yearValue = new Date(yearStr);\n if (isNaN(yearValue.getTime())) {\n const yearMatch = yearStr.match(/\\d{4}/);\n if (yearMatch) {\n yearValue = new Date(parseInt(yearMatch[0], 10), 0, 1);\n }\n }\n }\n\n // Only patch known controls. Spreading the API record also copies otelConfig/files\n // and nulls, which Angular will not map onto loginTemplate and the other fields.\n this.configRegistrationForm.patchValue({\n id: record.id,\n registration: this.toSwitchValue(record.registration),\n layout: record.layout != null ? record.layout : 1,\n role_for_registration: record.role_for_registration,\n template_for_registration: this.toOptionalNumber(record.template_for_registration),\n banner: this.toFormText(record.banner),\n organization_title: this.toFormText(record.organization_title),\n banner_title: this.toFormText(record.banner_title),\n logo: this.toFormText(record.logo),\n organizationid: this.toOrganizationId(record.organizationid, this.orgId),\n terms_condition_template: this.toFormText(record.terms_condition_template),\n userLabel: this.toFormText(record.userLabel),\n passwordLabel: this.toFormText(record.passwordLabel),\n labelColor: this.toFormText(record.labelColor),\n loginTemplate: this.toFormText(platformConfig.loginTemplate),\n landingTemplate: this.toFormText(platformConfig.landingTemplate) || 'landingTemplatepage1',\n enable_mfa: this.toSwitchValue(platformConfig.enable_mfa),\n forgotPassword: this.toSwitchValue(platformConfig.forgotPassword),\n termsAndCondition: this.toSwitchValue(platformConfig.termsAndCondition),\n enableRegistration: this.toSwitchValue(platformConfig.enableRegistration),\n enable_captcha: this.toSwitchValue(platformConfig.enable_captcha),\n enable_google_translate: this.toSwitchValue(platformConfig.enable_google_translate),\n enable_footer: this.toSwitchValue(platformConfig.enable_footer),\n enable_server_maintenance: this.toFormText(platformConfig.enable_server_maintenance),\n footer_version_template: this.toFormText(platformConfig.footer_version_template),\n forget_config: this.toFormText(platformConfig.forget_config),\n multifactor_template: this.toFormText(platformConfig.multifactor_template),\n language_config: this.toFormText(platformConfig.language_config) || 'en',\n loginButtonLabel: this.toFormText(platformConfig.loginButtonLabel),\n registerButtonLabel: this.toFormText(platformConfig.registerButtonLabel),\n registerButtonPrefix: this.toFormText(platformConfig.registerButtonPrefix),\n emailPlaceholder: this.toFormText(platformConfig.emailPlaceholder),\n passwordPlaceholder: this.toFormText(platformConfig.passwordPlaceholder),\n otp_digits: platformConfig.otp_digits,\n otp_expire_time: platformConfig.otp_expire_time,\n resend_otp_delay: platformConfig.resend_otp_delay,\n forget_expire_time: platformConfig.forget_expire_time,\n enableLoginAttemptThrottling: this.toSwitchValue(platformConfig.enableLoginAttemptThrottling),\n lockoutWindowMinutes: platformConfig.lockoutWindowMinutes,\n lockoutDurationMinutes: platformConfig.lockoutDurationMinutes,\n version: this.toFormText(footerConfig.version),\n content: this.toFormText(footerConfig.content),\n powered_by_logo: this.toFormText(footerConfig.powered_by_logo),\n showFooterWhere: this.toFormText(footerConfig.showFooterWhere),\n year: yearValue\n });\n this.thumbnailLogo = record.files?.logo || '';\n this.thumbnailBanner = record.files?.banner || '';\n this.thumbnailPoweredLogo = footerConfig?.powered_by_logo || '';\n this.onMfaValidation();\n this.onLoginAttemptThrottlingChange();\n // Keep REGISTRATION in sync for consumers (login/register/grid date formats, etc.).\n this.localstore.setItem('REGISTRATION', this.editConfigSettings);\n this.configRegistrationForm.markAsPristine();\n this.cdRef.detectChanges();\n }\n\n private normalizeConfigList(data: any): any[] {\n if (Array.isArray(data)) {\n return data;\n }\n if (data && typeof data === 'object') {\n return [data];\n }\n return [];\n }\n\n private normalizeConfigRecord(data: any): any | null {\n if (Array.isArray(data)) {\n return data[0] || null;\n }\n return data || null;\n }\n\n private resolveInitialConfigId(options: { id: number; organization_title: string }[]): number {\n const currentId = this.selectedConfigId != null\n ? options.find((o) => o.id === this.selectedConfigId)?.id\n : null;\n if (currentId != null) {\n return currentId;\n }\n // Match previous getConfigById / list behavior: newest row (highest id).\n return [...options].sort((a, b) => b.id - a.id)[0].id;\n }\n\n private extractCreatedConfigId(res: unknown): number | null {\n const payload = res as { data?: { id?: unknown }; id?: unknown } | null;\n const raw = payload?.data?.id ?? payload?.id;\n const parsed = Number(raw);\n return Number.isInteger(parsed) && parsed > 0 ? parsed : null;\n }\n\n private refreshConfigOptionLabel(configId: number, organizationTitle: string): void {\n const option = this.configOptions.find((item) => item.id === Number(configId));\n if (option && organizationTitle) {\n option.organization_title = organizationTitle;\n }\n }\n\n conditionValidation(): any {\n if (!this.configRegistrationForm.value.organization_title) {\n this.alertService.warn('Please fill the organization title');\n return false;\n } else if (!this.configRegistrationForm.value.logo) {\n this.alertService.warn('Please upload the logo');\n return false;\n } else if (!this.configRegistrationForm.value.organizationid) {\n this.alertService.warn('Please select the organization');\n return false;\n } else if (!this.configRegistrationForm.value.role_for_registration) {\n this.alertService.warn('Please select the role');\n return false;\n } \n \n return true;\n }\n\n onCheckboxChange(selectedKey: string) {\n this.configRegistrationForm.controls['loginTemplate'].setValue(selectedKey);\n }\n\n // onCheckboxChangeLanding(selectedKey: string) {\n // this.configRegistrationForm.controls['landingTemplate'].setValue(selectedKey);\n // }\n\n openPreview(imageUrl: string) {\n this.previewImageUrl = imageUrl;\n this.previewVisible = true;\n }\n\n previewLogin(): void {\n if (this.activeTab === 'home') {\n if (!this.conditionValidation()) return;\n const inputRequest = {\n // Preview HTML *ngIfs on ENABLE_LOGIN_TEMPLATE; empty loginTemplate leaves the dialog blank.\n ENABLE_LOGIN_TEMPLATE: this.configRegistrationForm.value.loginTemplate,\n BACKGROUND_IMAGE: this.thumbnailBanner || this.editConfigSettings?.files?.banner,\n BANNER: this.thumbnailLogo || this.editConfigSettings?.files?.logo,\n TITLE: this.configRegistrationForm.value.organization_title,\n BANNER_TITLE: this.configRegistrationForm.value.banner_title,\n ENABLE_CAPTCHA: this.configRegistrationForm.value.enable_captcha,\n ENABLE_TERMSANDCONDITION: this.configRegistrationForm.value.termsAndCondition,\n ENABLE_FORGOTPASSWORD: this.configRegistrationForm.value.forgotPassword,\n ENABLE_MFA: this.configRegistrationForm.value.enable_mfa,\n ENABLE_FOOTER: this.configRegistrationForm.value.enable_footer,\n FOOTER_VERSION_TEMPLATE: this.configRegistrationForm.value.footer_version_template,\n VERSION: this.configRegistrationForm.value.version,\n POWERED_BY_LOGO: this.configRegistrationForm.value.powered_by_logo,\n USER_LABEL: this.configRegistrationForm.value.userLabel,\n LOGIN_BUTTON_LABEL: this.configRegistrationForm.value.loginButtonLabel,\n REGISTER_BUTTON_LABEL: this.configRegistrationForm.value.registerButtonLabel,\n REGISTER_PREFIX_LABEL: this.configRegistrationForm.value.registerButtonPrefix,\n PASSWORD_LABEL: this.configRegistrationForm.value.passwordLabel,\n LABEL_COLOR: this.configRegistrationForm.value.labelColor,\n ENABLE_REGISTARTION: this.configRegistrationForm.value.enableRegistration,\n ENABLE_LANDING: this.configRegistrationForm.value.landingTemplate,\n ENABLE_SELECTION: this.configRegistrationForm.value.showFooterWhere,\n YEAR: this.currentYear // footer date pipe; missing YEAR can break the view\n };\n\n this.previewLoginInfo = inputRequest;\n this.showPreviewModal = true; // after payload is set\n }\n }\n\n scrollTemplates(direction: 'left' | 'right'): void {\n const element = this.scrollBox?.nativeElement;\n if (!element) return;\n const scrollAmount = 300;\n\n if (direction === 'left') {\n element.scrollLeft -= scrollAmount;\n } else {\n element.scrollLeft += scrollAmount;\n }\n }\n\n\n setActiveTab(tab: string) {\n this.activeTab = tab;\n }\n}\n","<app-alert></app-alert>\n<div class=\"tabSection clearfix\">\n <ul class=\"nav nav-tabs\" id=\"myTab\" role=\"tablist\">\n <li class=\"nav-item\" role=\"presentation\">\n <button type=\"button\" class=\"nav-link active\" id=\"home-tab\" role=\"tab\"\n aria-controls=\"home\" aria-selected=\"true\"\n (click)=\"setActiveTab('home')\">{{ translate('Login Configuration') }}</button>\n </li>\n </ul>\n\n\n <!-- Tab panes -->\n <div class=\"tab-content\" id=\"myTabContent\" [formGroup]=\"configRegistrationForm\">\n <div class=\"tab-pane fade show active p-3 border border-top-0\" id=\"home\" role=\"tabpanel\" aria-labelledby=\"home-tab\">\n <div class=\"clearfix\">\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\n <div class=\"clsIconBtn\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"w-20px h-20px\" aria-hidden=\"true\">\n <path d=\"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z\"></path>\n <path d=\"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2\"></path>\n <path d=\"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2\"></path>\n <path d=\"M10 6h4\"></path>\n <path d=\"M10 10h4\"></path>\n <path d=\"M10 14h4\"></path>\n <path d=\"M10 18h4\"></path>\n </svg>\n </div>\n <div class=\"clearfix\">\n <h4 class=\"clsHeaderTitle\">{{ translate('Organization Information') }}</h4>\n <p class=\"clsSubHeaderTitle\">{{ translate('Basic details about your organization') }}</p>\n </div>\n </div>\n\n <div class=\"p-25 border rounded-16\">\n <div class=\"row\" *ngIf=\"showOrgDropdown\">\n <div class=\"col-md-6 col-12 mb-3\">\n <label class=\"referral-form-labels\" for=\"organizationConfig\">{{ translate('Organization') }}\n <span class=\"required\" aria-hidden=\"true\">*</span>\n </label>\n <p-dropdown\n styleClass=\"w-100\"\n [options]=\"configOptions\"\n [placeholder]=\"translate('Select Organization')\"\n inputId=\"organizationConfig\"\n optionLabel=\"organization_title\"\n optionValue=\"id\"\n [(ngModel)]=\"selectedConfigId\"\n [ngModelOptions]=\"{standalone: true}\"\n (onChange)=\"onConfigSelectionChange($event.value)\"\n [filter]=\"true\"\n filterBy=\"organization_title\">\n </p-dropdown>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-6 col-12\">\n <div class=\"narrative-textarea\">\n <label class=\"referral-form-labels\" for=\"organization_title\">{{ translate('Organization Title') }}\n <span class=\"required\" aria-hidden=\"true\">*</span>\n </label>\n <div class=\"position-relative\">\n @if (!isEditingOrganization) {\n <textarea id=\"organization_title\" class=\"form-control\" [value]=\"getOrganizationPlainText()\"\n (input)=\"updateOrganizationTitle($event)\" [placeholder]=\"translate('Enter Organization Title')\"\n aria-required=\"true\"\n style=\"padding-right: 35px; resize: vertical;\"></textarea>\n <i class=\"pi pi-pencil edit-field-icon\" role=\"button\" tabindex=\"0\"\n [attr.aria-label]=\"translate('Edit Organization Title')\"\n (click)=\"toggleEdit('organization')\"\n (keydown.enter)=\"toggleEdit('organization')\"\n (keydown.space)=\"$event.preventDefault(); toggleEdit('organization')\"></i>\n } @else {\n <quill-editor [modules]=\"quillModules\" formControlName=\"organization_title\"\n [styles]=\"{'min-height':'60px'}\" (onBlur)=\"toggleEdit('organization')\">\n </quill-editor>\n }\n </div>\n </div>\n </div>\n <div class=\"col-md-6 col-12\">\n <div class=\"narrative-textarea\">\n <label class=\"referral-form-labels\" for=\"banner_title\">{{ translate('Banner Title') }}\n <span class=\"required\" aria-hidden=\"true\">*</span>\n </label>\n <div class=\"position-relative\">\n @if (!isEditingBanner) {\n <textarea id=\"banner_title\" class=\"form-control\" [value]=\"getBannerPlainText()\"\n (input)=\"updateBannerTitle($event)\" [placeholder]=\"translate('Enter banner display text')\"\n aria-required=\"true\"\n style=\"padding-right: 35px; resize: vertical;\"></textarea>\n <i class=\"pi pi-pencil edit-field-icon\" role=\"button\" tabindex=\"0\"\n [attr.aria-label]=\"translate('Edit Banner Title')\"\n (click)=\"toggleEdit('banner')\"\n (keydown.enter)=\"toggleEdit('banner')\"\n (keydown.space)=\"$event.preventDefault(); toggleEdit('banner')\"></i>\n } @else {\n <quill-editor [modules]=\"quillModules\" formControlName=\"banner_title\" [styles]=\"{'min-height':'60px'}\"\n (onBlur)=\"toggleEdit('banner')\">\n </quill-editor>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n <div class=\"clearfix mt-25\">\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\n <div class=\"clsIconBtn\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"w-20px h-20px\" aria-hidden=\"true\">\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"></rect>\n <circle cx=\"9\" cy=\"9\" r=\"2\"></circle>\n <path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"></path>\n </svg>\n </div>\n <div class=\"clearfix\">\n <h4 class=\"clsHeaderTitle\">{{ translate('Brand Assets') }}</h4>\n <p class=\"clsSubHeaderTitle\">{{ translate('Upload your brand images and logos') }}</p>\n </div>\n </div>\n\n <div class=\"p-25 border rounded-16\">\n <div class=\"row\">\n <div class=\"col-lg-4 col-md-6 col-12\">\n <label class=\"referral-form-labels\" for=\"upload_banner\">{{ translate('Banner Image') }}\n <span class=\"required\" aria-hidden=\"true\">*</span>\n </label>\n <div class=\"clsUploadBannerCard clsBrandAssetsCards\">\n <div class=\"clsBannerImgSec\">\n <div class=\"clsBannerImg\">\n <img [src]=\"thumbnailBanner || 'assets/images/sample-banner.png'\"\n [attr.alt]=\"translate('Banner image preview')\" />\n </div>\n\n <div class=\"clsImgOverlay\" role=\"button\" tabindex=\"0\"\n [attr.aria-label]=\"translate('Preview Banner')\" (click)=\"showUploadedBanner()\"\n (keydown.enter)=\"showUploadedBanner()\"\n (keydown.space)=\"$event.preventDefault(); showUploadedBanner()\">\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\n </div>\n\n <p-dialog [header]=\"translate('Banner Preview')\" [(visible)]=\"bannerVisible\" [modal]=\"true\">\n <div class=\"text-center\">\n <img class=\"img-fluid\" [attr.src]=\"thumbnailBanner || 'assets/images/sample-banner.png'\"\n [attr.alt]=\"translate('Banner Preview')\" />\n </div>\n </p-dialog>\n\n <div class=\"clsUploadBtnIcon\">\n <label for=\"upload_banner\" class=\"clsUploadIcon cursor-pointer mb-0\">\n <i class=\"pi pi-upload\" aria-hidden=\"true\"></i>\n <span class=\"sr-only\">{{ translate('Upload Banner') }}</span>\n </label>\n <input type=\"file\" id=\"upload_banner\" style=\"display: none\"\n (change)=\"handleFileInputBanner($event)\" />\n </div>\n </div>\n <div class=\"clsUploadBtnSec text-center\">\n <button type=\"button\" class=\"clsUploadBtn mb-0\" (click)=\"triggerUpload('upload_banner')\">\n {{ translate('Replace Banner') }}\n </button>\n <p class=\"mb-0 mt-1\"><small>{{ translate('Image size max 1MB (1600 x 900 px)') }}</small></p>\n </div>\n </div>\n </div>\n\n <div class=\"col-lg-4 col-md-6 col-12\">\n <label class=\"referral-form-labels\" for=\"upload_logo\">{{ translate('Company Logo') }}\n <span class=\"required\" aria-hidden=\"true\">*</span>\n </label>\n <div class=\"clsUploadLogoCard clsBrandAssetsCards\">\n <div class=\"clsLogoImgSec\">\n <div class=\"clsLogoImg\">\n <img [attr.src]=\"thumbnailLogo || 'assets/images/logo_home.png'\"\n [attr.alt]=\"translate('Company logo preview')\" />\n </div>\n\n <div class=\"clsImgOverlay\" role=\"button\" tabindex=\"0\"\n [attr.aria-label]=\"translate('Preview Logo')\" (click)=\"showUploadedLogo()\"\n (keydown.enter)=\"showUploadedLogo()\"\n (keydown.space)=\"$event.preventDefault(); showUploadedLogo()\">\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\n </div>\n\n <p-dialog [header]=\"translate('Logo Preview')\" [(visible)]=\"visible\" [modal]=\"true\" [style]=\"{ width: '600px' }\">\n <div class=\"text-center\">\n <img class=\"img-fluid\" [src]=\"thumbnailLogo || 'assets/images/logo_home.png'\"\n [attr.alt]=\"translate('Logo Preview')\" />\n </div>\n </p-dialog>\n\n <div class=\"clsUploadBtnIcon\">\n <label for=\"upload_logo\" class=\"clsUploadIcon cursor-pointer mb-0\">\n <i class=\"pi pi-upload\" aria-hidden=\"true\"></i>\n <span class=\"sr-only\">{{ translate('Upload Logo') }}</span>\n </label>\n <input type=\"file\" id=\"upload_logo\" style=\"display: none\"\n (change)=\"handleFileInput($event)\" />\n </div>\n </div>\n\n <div class=\"clsUploadBtnSec text-center\">\n <button type=\"button\" class=\"clsUploadBtn mb-0\" (click)=\"triggerUpload('upload_logo')\">\n {{ translate('Replace Logo') }}\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"col-lg-4 col-md-6 col-12\">\n <label for=\"labelColor\" class=\"referral-form-labels\">{{ translate('Pick Label Color') }}\n <span class=\"required\" aria-hidden=\"true\">*</span>\n </label>\n <div class=\"clsColorPickCard clsBrandAssetsCards\">\n <div class=\"clearfix\">\n <label class=\"intake-form-labels\" for=\"userLabel\"\n [style.color]=\"configRegistrationForm.get('labelColor')?.value\">\n {{ translate('Login Label - Username/Email') }}\n </label>\n <input-empower id=\"userLabel\" class=\"form-control\" type=\"text\"\n [placeholder]=\"translate('Enter Label Name')\" formControlName=\"userLabel\"></input-empower>\n </div>\n <div class=\"clearfix mt-10\">\n <label class=\"intake-form-labels\" for=\"emailPlaceholder\"\n [style.color]=\"configRegistrationForm.get('labelColor')?.value\">\n {{ translate('Login Label Placeholder - Email') }}\n </label>\n <input-empower id=\"emailPlaceholder\" class=\"form-control\" type=\"text\"\n [placeholder]=\"translate('Enter Email Placeholder')\" formControlName=\"emailPlaceholder\"></input-empower>\n </div>\n <div class=\"clearfix mt-10\">\n <label class=\"intake-form-labels\" for=\"passwordLabel\"\n [style.color]=\"configRegistrationForm.get('labelColor')?.value\">\n {{ translate('Login Label - Password') }}\n </label>\n <input-empower id=\"passwordLabel\" class=\"form-control\" type=\"text\"\n [placeholder]=\"translate('Enter Password Label')\"\n formControlName=\"passwordLabel\"></input-empower>\n </div>\n <div class=\"clearfix mt-10\">\n <label class=\"intake-form-labels\" for=\"passwordPlaceholder\"\n [style.color]=\"configRegistrationForm.get('labelColor')?.value\">\n {{ translate('Login Label Placeholder Password') }}\n </label>\n <input-empower id=\"passwordPlaceholder\" class=\"form-control\" type=\"text\"\n [placeholder]=\"translate('Enter Password Placeholder')\"\n formControlName=\"passwordPlaceholder\"></input-empower>\n </div>\n <div class=\"clearfix mt-10\">\n <label class=\"intake-form-labels\" for=\"loginButtonLabel\"\n [style.color]=\"configRegistrationForm.get('labelColor')?.value\">\n {{ translate('Login Button Label Name') }}\n </label>\n <input-empower id=\"loginButtonLabel\" class=\"form-control\" type=\"text\"\n [placeholder]=\"translate('Enter Login Button Label')\"\n formControlName=\"loginButtonLabel\"></input-empower>\n </div>\n <div class=\"clearfix mt-10\">\n <label class=\"intake-form-labels\" for=\"registerButtonPrefix\"\n [style.color]=\"configRegistrationForm.get('labelColor')?.value\">\n {{ translate('Register Button Prefix') }}\n </label>\n <input-empower id=\"registerButtonPrefix\" class=\"form-control\" type=\"text\"\n [placeholder]=\"translate('Enter Register Prefix')\"\n formControlName=\"registerButtonPrefix\"></input-empower>\n </div>\n <div class=\"clearfix mt-10\">\n <label class=\"intake-form-labels\" for=\"registerButtonLabel\"\n [style.color]=\"configRegistrationForm.get('labelColor')?.value\">\n {{ translate('Register Button Label Name') }}\n </label>\n <input-empower id=\"registerButtonLabel\" class=\"form-control\" type=\"text\"\n [placeholder]=\"translate('Enter Register Button Label')\"\n formControlName=\"registerButtonLabel\"></input-empower>\n </div>\n <div class=\"clearfix mt-2\">\n <input type=\"color\" id=\"labelColor\" formControlName=\"labelColor\"\n [attr.aria-label]=\"translate('Pick Label Color')\" class=\"form-control w-100px h-30px p-0\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"clearfix mt-25\">\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\n <div class=\"clsIconBtn\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"w-20px h-20px\" aria-hidden=\"true\">\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"></rect>\n <path d=\"M3 9h18\"></path>\n <path d=\"M9 21V9\"></path>\n </svg>\n </div>\n <div class=\"clearfix\">\n <h4 class=\"clsHeaderTitle\">{{ translate('Login Page Templates') }}</h4>\n <p class=\"clsSubHeaderTitle\">{{ translate('Choose your preferred login page layout') }}</p>\n </div>\n </div>\n\n <div class=\"p-25 border rounded-16\">\n <div class=\"clsScrollWrapper\">\n <button class=\"clsScrollBtn clsScrollBtnLeft\" [attr.aria-label]=\"translate('Scroll tabs left')\"\n (click)=\"scrollTabs('login', loginScrollBox, -200)\"\n [disabled]=\"isAtStart['login']\">\n <span class=\"material-symbols-outlined\" aria-hidden=\"true\">chevron_left</span>\n </button>\n\n <!-- Scrollable Template Section -->\n <div class=\"clsScrollContainer\" #loginScrollBox>\n <div class=\"clsScrollTemplatesLists row m-0\">\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12 px-2\">\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\n [class.active]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateRight'\"\n [attr.aria-pressed]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateRight'\"\n (click)=\"selectLoginTemplate('loginTemplateRight')\"\n (keydown.enter)=\"selectLoginTemplate('loginTemplateRight')\"\n (keydown.space)=\"$event.preventDefault(); selectLoginTemplate('loginTemplateRight')\">\n <div class=\"clsTemplatesImg\"\n (click)=\"openPreview('../../../../assets/images/base-product/login-right.png'); $event.stopPropagation()\">\n <img src=\"../../../../assets/images/base-product/login-right.png\" alt=\"Login Right\" />\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\n </div>\n </div>\n <div class=\"d-flex justify-content-between align-items-center\">\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Login Right') }}</h4>\n @if (configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateRight') {\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\n }\n </div>\n <p class=\"clsTextLine2 mb-0\">{{ translate('Form positioned on the right side') }}</p>\n </div>\n </div>\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12 px-2\">\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\n [class.active]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateLeft'\"\n [attr.aria-pressed]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateLeft'\"\n (click)=\"selectLoginTemplate('loginTemplateLeft')\"\n (keydown.enter)=\"selectLoginTemplate('loginTemplateLeft')\"\n (keydown.space)=\"$event.preventDefault(); selectLoginTemplate('loginTemplateLeft')\">\n <div class=\"clsTemplatesImg\"\n (click)=\"openPreview('../../../../assets/images/base-product/login-left.png'); $event.stopPropagation()\">\n <img src=\"../../../../assets/images/base-product/login-left.png\" alt=\"Login Left\" />\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\n </div>\n </div>\n <div class=\"d-flex justify-content-between\">\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Login Left') }}</h4>\n @if (configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateLeft') {\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\n }\n </div>\n <p class=\"clsTextLine2 mb-0\">{{ translate('Form positioned on the left side') }}</p>\n </div>\n </div>\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12 px-2\">\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\n [class.active]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateCenter'\"\n [attr.aria-pressed]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateCenter'\"\n (click)=\"selectLoginTemplate('loginTemplateCenter')\"\n (keydown.enter)=\"selectLoginTemplate('loginTemplateCenter')\"\n (keydown.space)=\"$event.preventDefault(); selectLoginTemplate('loginTemplateCenter')\">\n <div class=\"clsTemplatesImg\"\n (click)=\"openPreview('../../../../assets/images/base-product/login-center.png'); $event.stopPropagation()\">\n <img src=\"../../../../assets/images/base-product/login-center.png\" alt=\"Login Center\" />\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\n </div>\n </div>\n <div class=\"d-flex justify-content-between\">\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Login Center') }}</h4>\n @if (configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateCenter') {\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\n }\n </div>\n <p class=\"clsTextLine2 mb-0\">{{ translate('Form centered on the page') }}</p>\n </div>\n </div>\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12 px-2\">\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\n [class.active]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateBottom'\"\n [attr.aria-pressed]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateBottom'\"\n (click)=\"selectLoginTemplate('loginTemplateBottom')\"\n (keydown.enter)=\"selectLoginTemplate('loginTemplateBottom')\"\n (keydown.space)=\"$event.preventDefault(); selectLoginTemplate('loginTemplateBottom')\">\n <div class=\"clsTemplatesImg\"\n (click)=\"openPreview('../../../../assets/images/base-product/login-bottom.png'); $event.stopPropagation()\">\n <img src=\"../../../../assets/images/base-product/login-bottom.png\" alt=\"Login Bottom\" />\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\n </div>\n </div>\n <div class=\"d-flex justify-content-between\">\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Login Bottom') }}</h4>\n @if (configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateBottom') {\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\n }\n </div>\n <p class=\"clsTextLine2 mb-0\">{{ translate('Form positioned on the Bottom side') }}</p>\n </div>\n </div>\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12 px-2\">\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\n [class.active]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateCurve'\"\n [attr.aria-pressed]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateCurve'\"\n (click)=\"selectLoginTemplate('loginTemplateCurve')\"\n (keydown.enter)=\"selectLoginTemplate('loginTemplateCurve')\"\n (keydown.space)=\"$event.preventDefault(); selectLoginTemplate('loginTemplateCurve')\">\n <div class=\"clsTemplatesImg\"\n (click)=\"openPreview('../../../../assets/images/base-product/login-curve.png'); $event.stopPropagation()\">\n <img src=\"../../../../assets/images/base-product/login-curve.png\" alt=\"Login Radius\" />\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\n </div>\n </div>\n <div class=\"d-flex justify-content-between\">\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Login Radius') }}</h4>\n @if (configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateCurve') {\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\n }\n </div>\n <p class=\"clsTextLine2 mb-0\">{{ translate('Banner on the left side, curve') }}</p>\n </div>\n </div>\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12 px-2\">\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\n [class.active]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateHideShow'\"\n [attr.aria-pressed]=\"configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateHideShow'\"\n (click)=\"selectLoginTemplate('loginTemplateHideShow')\"\n (keydown.enter)=\"selectLoginTemplate('loginTemplateHideShow')\"\n (keydown.space)=\"$event.preventDefault(); selectLoginTemplate('loginTemplateHideShow')\">\n <div class=\"clsTemplatesImg\"\n (click)=\"openPreview('../../../../assets/images/base-product/login-hide-ui.png'); $event.stopPropagation()\">\n <img src=\"../../../../assets/images/base-product/login-hide-ui.png\"\n alt=\"Login form hide & Show\" />\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\n </div>\n </div>\n <div class=\"d-flex justify-content-between\">\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Login form hide & Show') }}</h4>\n @if (configRegistrationForm.get('loginTemplate')?.value === 'loginTemplateHideShow') {\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\n }\n </div>\n <p class=\"clsTextLine2 mb-0\">{{ translate('Form on the hide & Show') }}</p>\n </div>\n </div>\n </div>\n </div>\n\n <button class=\"clsScrollBtn clsScrollBtnRight\" [attr.aria-label]=\"translate('Scroll tabs right')\"\n (click)=\"scrollTabs('login', loginScrollBox, 200)\"\n [disabled]=\"isAtEnd['login']\">\n <span class=\"material-symbols-outlined\" aria-hidden=\"true\">chevron_right</span>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"clearfix mt-25\">\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\n <div class=\"clsIconBtn\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"w-20px h-20px\" aria-hidden=\"true\">\n <rect width=\"20\" height=\"14\" x=\"2\" y=\"3\" rx=\"2\"></rect>\n <line x1=\"8\" x2=\"16\" y1=\"21\" y2=\"21\"></line>\n <line x1=\"12\" x2=\"12\" y1=\"17\" y2=\"21\"></line>\n </svg>\n </div>\n <div class=\"clearfix\">\n <h4 class=\"clsHeaderTitle\">{{ translate('Footer Templates') }}</h4>\n <p class=\"clsSubHeaderTitle\">{{ translate('Footer layout options') }}</p>\n </div>\n </div>\n\n <div class=\"p-25 border rounded-16\">\n <div class=\"clsScrollTemplatesLists row\">\n <div class=\"col-md-6 col-12\">\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\n [class.active]=\"configRegistrationForm.get('footer_version_template')?.value === 'versionTemplateRight'\"\n [attr.aria-pressed]=\"configRegistrationForm.get('footer_version_template')?.value === 'versionTemplateRight'\"\n (click)=\"selectFooterTemplate('versionTemplateRight')\"\n (keydown.enter)=\"selectFooterTemplate('versionTemplateRight')\"\n (keydown.space)=\"$event.preventDefault(); selectFooterTemplate('versionTemplateRight')\">\n <div class=\"clsTemplatesImg align-items-center d-flex justify-content-center h-70px\"\n (click)=\"openPreview('../../../../assets/images/base-product/footer-left.png'); $event.stopPropagation()\">\n <div class=\"d-flex justify-content-between p-10 w-100\">\n <strong class=\"text-12\">{{ translate('Stable') }} Version 2.5</strong>\n <strong class=\"text-12\">\n &copy; {{ currentYear }} {{ translate('Powered by') }}\n <span class=\"w-100px d-inline-block\">\n <img src=\"assets/images/cardinality-logo_text.svg\" alt=\"cardy\">\n </span>\n </strong>\n </div>\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\n </div>\n </div>\n <div class=\"d-flex justify-content-between align-items-center\">\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Footer Left & Right') }}</h4>\n @if (configRegistrationForm.get('footer_version_template')?.value === 'versionTemplateRight') {\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\n }\n </div>\n <p class=\"clsTextLine2 mb-0\"> {{ translate('Version left, copyright and powered by text right') }} </p>\n </div>\n </div>\n\n <div class=\"col-md-6 col-12\">\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\n [class.active]=\"configRegistrationForm.get('footer_version_template')?.value === 'versionTemplateCenter'\"\n [attr.aria-pressed]=\"configRegistrationForm.get('footer_version_template')?.value === 'versionTemplateCenter'\"\n (click)=\"selectFooterTemplate('versionTemplateCenter')\"\n (keydown.enter)=\"selectFooterTemplate('versionTemplateCenter')\"\n (keydown.space)=\"$event.preventDefault(); selectFooterTemplate('versionTemplateCenter')\">\n <div class=\"clsTemplatesImg align-items-center d-flex justify-content-center h-70px\"\n (click)=\"openPreview('../../../../assets/images/base-product/footer-center.png'); $event.stopPropagation()\">\n <div class=\"d-flex justify-content-center p-10 w-100 gap-2\">\n <strong class=\"text-12\">{{ translate('Stable') }} Version 2.5</strong>\n <strong class=\"text-12\">&copy; {{ currentYear }}</strong>\n <strong class=\"text-12\">\n {{ translate('Powered by') }}\n <span class=\"w-100px d-inline-block ms-1\">\n <img src=\"assets/images/cardinality-logo_text.svg\" alt=\"cardy\">\n </span>\n </strong>\n </div>\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\n </div>\n </div>\n <div class=\"d-flex justify-content-between align-items-center\">\n <h4 class=\"clsTextLine1 mb-0\">{{ translate('Footer Center') }}</h4>\n @if (configRegistrationForm.get('footer_version_template')?.value === 'versionTemplateCenter') {\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\n }\n </div>\n <p class=\"clsTextLine2 mb-0\"> {{ translate('All footer text centered in single line') }} </p>\n </div>\n </div>\n </div>\n\n <div class=\"row row-gap-15 pt-15\">\n <div class=\"col-lg-4 col-sm-6 col-12\">\n <label class=\"intake-form-labels\" for=\"organizationName\">{{ translate('Right') }}</label>\n <input-empower class=\"form-control\" type=\"text\" [placeholder]=\"translate('Version')\" id=\"organizationName\" autocomplete=\"off\"\n formControlName=\"version\"></input-empower>\n </div>\n <div class=\"col-lg-4 col-sm-6 col-12\">\n <label class=\"intake-form-labels\" for=\"content\">{{ translate('Left') }}</label>\n <input-empower class=\"form-control\" type=\"text\" [placeholder]=\"translate('Content')\" id=\"content\" autocomplete=\"off\"\n formControlName=\"content\"></input-empower>\n </div>\n <div class=\"col-lg-4 col-sm-6 col-12\">\n <fieldset class=\"border-0 p-0 m-0\">\n <legend class=\"intake-form-labels mb-1\" id=\"show_footer_legend\">{{ translate('Show Footer') }}</legend>\n <div class=\"d-flex gap-15\" role=\"group\" aria-labelledby=\"show_footer_legend\">\n <div class=\"d-flex align-items-center\">\n <p-radioButton name=\"showFooterWhere\" formControlName=\"showFooterWhere\" value=\"loginOnly\"\n inputId=\"loginOnly\"></p-radioButton>\n <label for=\"loginOnly\" class=\"ml-2 mb-0\">{{ translate('Login Only') }}</label>\n </div>\n\n <div class=\"d-flex align-items-center\">\n <p-radioButton name=\"showFooterWhere\" formControlName=\"showFooterWhere\" value=\"pageOnly\"\n inputId=\"pageOnly\"></p-radioButton>\n <label for=\"pageOnly\" class=\"ml-2 mb-0\">{{ translate('Page Only') }}</label>\n </div>\n\n <div class=\"d-flex align-items-center\">\n <p-radioButton name=\"showFooterWhere\" formControlName=\"showFooterWhere\" value=\"both\"\n inputId=\"both\"></p-radioButton>\n <label for=\"both\" class=\"ml-2 mb-0\">{{ translate('Both') }}</label>\n </div>\n </div>\n </fieldset>\n </div>\n <div class=\"col-lg-4 col-sm-6 col-12\">\n <label class=\"referral-form-labels\" for=\"uploadPoweredBy\">{{ translate('Powered by Footer Logo') }}</label>\n <div class=\"clsUploadLogoCard clsBrandAssetsCards\">\n <div class=\"clsLogoImgSec\">\n <div class=\"clsLogoImg\">\n <img [attr.src]=\"thumbnailPoweredLogo || 'assets/images/logo_home.png'\"\n [attr.alt]=\"translate('Powered by footer logo preview')\" />\n </div>\n\n <div class=\"clsImgOverlay\" role=\"button\" tabindex=\"0\"\n [attr.aria-label]=\"translate('Preview Footer Logo')\" (click)=\"showUploadedFooterLogo()\"\n (keydown.enter)=\"showUploadedFooterLogo()\"\n (keydown.space)=\"$event.preventDefault(); showUploadedFooterLogo()\">\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\n </div>\n\n <p-dialog [header]=\"translate('Logo Preview')\" [(visible)]=\"logoFooterVisible\" [modal]=\"true\"\n [style]=\"{ width: '600px' }\">\n <div class=\"text-center\">\n <img class=\"img-fluid\" [src]=\"thumbnailPoweredLogo || 'assets/images/logo_home.png'\"\n [attr.alt]=\"translate('Powered by footer logo preview')\" />\n </div>\n </p-dialog>\n\n <div class=\"clsUploadBtnIcon\">\n <label for=\"uploadPoweredBy\" class=\"clsUploadIcon cursor-pointer mb-0\">\n <i class=\"pi pi-upload\" aria-hidden=\"true\"></i>\n <span class=\"sr-only\">{{ translate('Upload Powered By Logo') }}</span>\n </label>\n <input type=\"file\" id=\"uploadPoweredBy\" style=\"display: none\"\n (change)=\"handleFileFooterInput($event)\" />\n </div>\n </div>\n\n <div class=\"clsUploadBtnSec text-center\">\n <button type=\"button\" class=\"clsUploadBtn mb-0\" (click)=\"triggerUpload('uploadPoweredBy')\">\n {{ translate('Replace Logo') }}\n </button>\n <p class=\"mb-0 mt-1\"><small>{{ translate('Image size max 120kb (400 x 60 px)') }}</small></p>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n\n <!-- <div class=\"clearfix mt-25\">\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\n <div class=\"clsIconBtn\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"w-20px h-20px\" aria-hidden=\"true\">\n <path\n d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\">\n </path>\n </svg>\n </div>\n <div class=\"clearfix\">\n <h4 class=\"clsHeaderTitle\">Server Maintenance Templates</h4>\n <p class=\"clsSubHeaderTitle\">Maintenance page layouts</p>\n </div>\n </div> -->\n\n <!-- <div class=\"p-25 border rounded-16\">\n <div class=\"clsScrollTemplatesLists row\">\n <div class=\"col-md-6 col-12\">\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\n [class.active]=\"configRegistrationForm.get('enable_server_maintenance')?.value === 'serverTemplateOne'\"\n [attr.aria-pressed]=\"configRegistrationForm.get('enable_server_maintenance')?.value === 'serverTemplateOne'\"\n (click)=\"selectServerTemplate('serverTemplateOne')\"\n (keydown.enter)=\"selectServerTemplate('serverTemplateOne')\"\n (keydown.space)=\"$event.preventDefault(); selectServerTemplate('serverTemplateOne')\">\n <div class=\"clsTemplatesImg\"\n (click)=\"openPreview('../../../../assets/images/base-product/server-1.png'); $event.stopPropagation()\">\n <img src=\"../../../../assets/images/base-product/server-1.png\" alt=\"Server Maintenance\" />\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\n </div>\n </div>\n <div class=\"d-flex justify-content-between align-items-center\">\n <h4 class=\"clsTextLine1 mb-0\">Server Maintenance</h4>\n @if (configRegistrationForm.get('enable_server_maintenance')?.value === 'serverTemplateOne') {\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\n }\n </div>\n </div>\n </div>\n <div class=\"col-md-6 col-12\">\n <div class=\"clsScrollTemplatesItem\" role=\"button\" tabindex=\"0\"\n [class.active]=\"configRegistrationForm.get('enable_server_maintenance')?.value === 'serverTemplateTwo'\"\n [attr.aria-pressed]=\"configRegistrationForm.get('enable_server_maintenance')?.value === 'serverTemplateTwo'\"\n (click)=\"selectServerTemplate('serverTemplateTwo')\"\n (keydown.enter)=\"selectServerTemplate('serverTemplateTwo')\"\n (keydown.space)=\"$event.preventDefault(); selectServerTemplate('serverTemplateTwo')\">\n <div class=\"clsTemplatesImg\"\n (click)=\"openPreview('../../../../assets/images/base-product/server-2.png'); $event.stopPropagation()\">\n <img src=\"../../../../assets/images/base-product/server-2.png\" alt=\"Scheduled Maintenance\">\n <div class=\"clsImgOverlay\" aria-hidden=\"true\">\n <span class=\"material-symbols-outlined zoomIcon\" aria-hidden=\"true\">zoom_in</span>\n </div>\n </div>\n <div class=\"d-flex justify-content-between align-items-center\">\n <h4 class=\"clsTextLine1 mb-0\">Scheduled Maintenance</h4>\n @if (configRegistrationForm.get('enable_server_maintenance')?.value === 'serverTemplateTwo') {\n <span class=\"material-symbols-outlined clsCheckIcon\" aria-hidden=\"true\">check_circle</span>\n }\n </div>\n </div>\n </div>\n </div>\n </div> -->\n </div>\n\n <div class=\"clearfix mt-25\">\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\n <div class=\"clsIconBtn\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"w-20px h-20px\" aria-hidden=\"true\">\n <path d=\"M20 7h-9\"></path>\n <path d=\"M14 17H5\"></path>\n <circle cx=\"17\" cy=\"17\" r=\"3\"></circle>\n <circle cx=\"7\" cy=\"7\" r=\"3\"></circle>\n </svg>\n </div>\n <div class=\"clearfix\">\n <h4 class=\"clsHeaderTitle\">{{ translate('Login Preferences') }}</h4>\n <p class=\"clsSubHeaderTitle\">{{ translate('Configure available authentication features') }}</p>\n </div>\n </div>\n\n <div class=\"p-25 border rounded-16\">\n <div class=\"row clsPreferencesList row-gap-15\">\n <div class=\"col-lg-4 col-sm-6 col-12\">\n <div class=\"clsPreferencesListItem\">\n <div class=\"flex-fill\">\n <label class=\"mb-0 cursor-pointer\" for=\"fp\">{{ translate('Forgot Password') }}</label>\n <div class=\"mt-1 d-flex align-items-center gap-5\">\n <div class=\"clsStatusDot\" [ngClass]=\"{\n 'clsEnabledDot': configRegistrationForm.get('forgotPassword')?.value,\n 'clsDisabledDot': !configRegistrationForm.get('forgotPassword')?.value\n }\">\n </div>\n <span class=\"clsStatusTxt\">\n {{ configRegistrationForm.get('forgotPassword')?.value ? translate('Enabled') : translate('Disabled') }}\n </span>\n </div>\n </div>\n <div class=\"clearfix\">\n <p-inputSwitch inputId=\"fp\" formControlName=\"forgotPassword\">\n </p-inputSwitch>\n </div>\n </div>\n </div>\n\n <div class=\"col-lg-4 col-sm-6 col-12\">\n <div class=\"clsPreferencesListItem\">\n <div class=\"flex-fill\">\n <label class=\"mb-0 cursor-pointer\" for=\"tac\">{{ translate('Terms & conditions') }}</label>\n <div class=\"mt-1 d-flex align-items-center gap-5\">\n <div class=\"clsStatusDot\" [ngClass]=\"{\n 'clsEnabledDot': configRegistrationForm.get('termsAndCondition')?.value,\n 'clsDisabledDot': !configRegistrationForm.get('termsAndCondition')?.value\n }\">\n </div>\n <span class=\"clsStatusTxt\">\n {{ configRegistrationForm.get('termsAndCondition')?.value ? translate('Enabled') : translate('Disabled') }}\n </span>\n </div>\n </div>\n <div class=\"clearfix\">\n <p-inputSwitch inputId=\"tac\" formControlName=\"termsAndCondition\">\n </p-inputSwitch>\n </div>\n </div>\n </div>\n\n <div class=\"col-lg-4 col-sm-6 col-12\">\n <div class=\"clsPreferencesListItem\">\n <div class=\"flex-fill\">\n <label class=\"mb-0 cursor-pointer\" for=\"enableReg\">{{ translate('Enable Registration') }}</label>\n <div class=\"mt-1 d-flex align-items-center gap-5\">\n <div class=\"clsStatusDot\" [ngClass]=\"{\n 'clsEnabledDot': configRegistrationForm.get('enableRegistration')?.value,\n 'clsDisabledDot': !configRegistrationForm.get('enableRegistration')?.value\n }\">\n </div>\n <span class=\"clsStatusTxt\">\n {{ configRegistrationForm.get('enableRegistration')?.value ? translate('Enabled') : translate('Disabled') }}\n </span>\n </div>\n </div>\n <div class=\"clearfix\">\n <p-inputSwitch inputId=\"enableReg\" formControlName=\"enableRegistration\">\n </p-inputSwitch>\n </div>\n </div>\n </div>\n\n <div class=\"col-lg-4 col-sm-6 col-12\">\n <div class=\"clsPreferencesListItem\">\n <div class=\"flex-fill\">\n <label class=\"mb-0 cursor-pointer\" for=\"enable_mfaId\">{{ translate('Enable Multifactor Authentication') }}</label>\n <div class=\"mt-1 d-flex align-items-center gap-5\">\n <div class=\"clsStatusDot\" [ngClass]=\"{\n 'clsEnabledDot': configRegistrationForm.get('enable_mfa')?.value,\n 'clsDisabledDot': !configRegistrationForm.get('enable_mfa')?.value\n }\">\n </div>\n <span class=\"clsStatusTxt\">\n {{ configRegistrationForm.get('enable_mfa')?.value ? translate('Enabled') : translate('Disabled') }}\n </span>\n </div>\n </div>\n <div class=\"clearfix\">\n <p-inputSwitch inputId=\"enable_mfaId\" formControlName=\"enable_mfa\" (onChange)=\"onMfaValidation()\">\n </p-inputSwitch>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"col-lg-4 col-sm-6 col-12\">\n <div class=\"clsPreferencesListItem\">\n <div class=\"flex-fill\">\n <label class=\"mb-0 cursor-pointer\" for=\"enable_captchaId\">Enable Captcha</label>\n <div class=\"mt-1 d-flex align-items-center gap-5\">\n <div class=\"clsStatusDot\" [ngClass]=\"{\n 'clsEnabledDot': configRegistrationForm.get('enable_captcha')?.value,\n 'clsDisabledDot': !configRegistrationForm.get('enable_captcha')?.value\n }\">\n </div>\n <span class=\"clsStatusTxt\">\n {{ configRegistrationForm.get('enable_captcha')?.value ? 'Enabled' : 'Disabled' }}\n </span>\n </div>\n </div>\n <div class=\"clearfix\">\n <p-inputSwitch inputId=\"enable_captchaId\" formControlName=\"enable_captcha\">\n </p-inputSwitch>\n </div>\n </div>\n </div> -->\n\n <div class=\"col-lg-4 col-sm-6 col-12\">\n <div class=\"clsPreferencesListItem\">\n <div class=\"flex-fill\">\n <label class=\"mb-0 cursor-pointer\" for=\"enable_footerId\">{{ translate('Enable Footer') }}</label>\n <div class=\"mt-1 d-flex align-items-center gap-5\">\n <div class=\"clsStatusDot\" [ngClass]=\"{\n 'clsEnabledDot': configRegistrationForm.get('enable_footer')?.value,\n 'clsDisabledDot': !configRegistrationForm.get('enable_footer')?.value\n }\">\n </div>\n <span class=\"clsStatusTxt\">\n {{ configRegistrationForm.get('enable_footer')?.value ? translate('Enabled') : translate('Disabled') }}\n </span>\n </div>\n </div>\n <div class=\"clearfix\">\n <p-inputSwitch inputId=\"enable_footerId\" formControlName=\"enable_footer\">\n </p-inputSwitch>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"col-lg-4 col-sm-6 col-12\">\n <div class=\"clsPreferencesListItem\">\n <div class=\"flex-fill\">\n <label class=\"mb-0 cursor-pointer\" for=\"google_translateId\">Enable Google Translate</label>\n <div class=\"mt-1 d-flex align-items-center gap-5\">\n <div class=\"clsStatusDot\" [ngClass]=\"{\n 'clsEnabledDot': configRegistrationForm.get('enable_google_translate')?.value,\n 'clsDisabledDot': !configRegistrationForm.get('enable_google_translate')?.value\n }\">\n </div>\n <span class=\"clsStatusTxt\">\n {{ configRegistrationForm.get('enable_google_translate')?.value ? 'Enabled' : 'Disabled' }}\n </span>\n </div>\n </div>\n <div class=\"clearfix\">\n <p-inputSwitch inputId=\"google_translateId\" formControlName=\"enable_google_translate\">\n </p-inputSwitch>\n </div>\n </div>\n </div> -->\n </div>\n </div>\n </div>\n\n <div class=\"clearfix mt-25\">\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\n <div class=\"clsIconBtn\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"w-20px h-20px\" aria-hidden=\"true\">\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\"></path>\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\"></path>\n <path d=\"M10 9H8\"></path>\n <path d=\"M16 13H8\"></path>\n <path d=\"M16 17H8\"></path>\n </svg>\n </div>\n <div class=\"clearfix\">\n <h4 class=\"clsHeaderTitle\">{{ translate('Terms & conditions') }}</h4>\n <p class=\"clsSubHeaderTitle\">{{ translate('Legal agreements and compliance text') }} </p>\n </div>\n </div>\n\n <div class=\"p-25 border rounded-16\">\n <div class=\"narrative-textarea \">\n <span class=\"referral-form-labels\" id=\"terms_condition_template-label\">{{ translate('Legal Description') }}\n <span class=\"required\" aria-hidden=\"true\">*</span>\n </span>\n <div role=\"group\" [attr.aria-labelledby]=\"'terms_condition_template-label'\">\n <quill-editor [modules]=\"quillModules\" [styles]=\"{'height':'100px'}\"\n formControlName=\"terms_condition_template\"\n [attr.aria-label]=\"translate('Legal Description')\"\n [attr.aria-required]=\"true\">\n </quill-editor>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"clearfix mt-25\">\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\n <div class=\"clsIconBtn iconBgColor_8\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"w-20px h-20px\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\"></path>\n <path d=\"M2 12h20\"></path>\n </svg>\n </div>\n <div class=\"clearfix\">\n <h4 class=\"clsHeaderTitle\">{{ translate('Advanced Configuration') }}</h4>\n <p class=\"clsSubHeaderTitle\"> {{ translate('System-level authentication settings') }} </p>\n </div>\n </div>\n\n <div class=\"p-25 border rounded-16\">\n <div class=\"row row-gap-15\">\n <div class=\"col-lg-4 col-md-6 col-12\">\n <label class=\"intake-form-labels\" for=\"multifactor_template\">\n {{ translate('Multifactor Authentication Channel') }}\n @if (configRegistrationForm.get('enable_mfa')?.value) {\n <span class=\"required\" aria-hidden=\"true\">*</span>\n }\n </label>\n <p-select-empower class=\"w-100\" id=\"multifactor_template\" optionLabel=\"name\" optionValue=\"value\"\n [options]=\"multifactorTemplates\"\n [placeholder]=\"translate('Select MFA channel')\" formControlName=\"multifactor_template\"\n [required]=\"!!configRegistrationForm.get('enable_mfa')?.value\"\n [aria-describedby]=\"configRegistrationForm.get('multifactor_template')?.invalid && configRegistrationForm.get('multifactor_template')?.touched ? 'multifactor_template-errors' : null\">\n </p-select-empower>\n @if (configRegistrationForm.get('multifactor_template')?.invalid && configRegistrationForm.get('multifactor_template')?.touched) {\n <small id=\"multifactor_template-errors\" class=\"text-danger\" role=\"alert\">\n {{ translate('Multifactor Authentication Channel is required.') }}\n </small>\n }\n </div>\n <div class=\"col-lg-4 col-md-6 col-12\">\n <label class=\"intake-form-labels\" for=\"otp_digits\">\n {{ translate('OTP Verification Digits') }}\n @if (configRegistrationForm.get('enable_mfa')?.value) {\n <span class=\"required\" aria-hidden=\"true\">*</span>\n }\n </label>\n <inputnumber-empower min=\"4\" max=\"6\" class=\"form-control\" id=\"otp_digits\" formControlName=\"otp_digits\"\n [placeholder]=\"translate('Enter OTP Verification Digits')\"\n [aria-describedby]=\"otpControl.invalid && otpControl.touched ? 'otp_digits-errors' : null\"\n [class.is-invalid]=\"otpControl.invalid && (otpControl.dirty || otpControl.touched)\"></inputnumber-empower>\n @if (otpControl.invalid && otpControl.touched) {\n <div id=\"otp_digits-errors\" class=\"text-danger small mt-1\" role=\"alert\">\n @if (otpControl.errors?.['required']) {\n <span>{{ translate('OTP Verification Digits is required.') }}</span>\n }\n @if (otpControl.errors?.min || otpControl.errors?.max) {\n <span>{{ translate('Enter a valid number of digits between 4 and 6.') }}</span>\n }\n </div>\n }\n </div>\n <div class=\"col-lg-4 col-md-6 col-12\">\n <label class=\"intake-form-labels\" for=\"otp_expire_time\">\n {{ translate('OTP Expire Time (In Minutes)') }}\n @if (configRegistrationForm.get('enable_mfa')?.value) {\n <span class=\"required\" aria-hidden=\"true\">*</span>\n }\n </label>\n <inputnumber-empower class=\"form-control\" id=\"otp_expire_time\" formControlName=\"otp_expire_time\"\n [placeholder]=\"translate('Enter OTP Expire Time')\"\n [aria-describedby]=\"otpExpireControl.invalid && (otpExpireControl.dirty || otpExpireControl.touched) ? 'otp_expire_time-errors' : null\"\n [class.is-invalid]=\"otpExpireControl.invalid && (otpExpireControl.dirty || otpExpireControl.touched)\"></inputnumber-empower>\n @if (otpExpireControl.invalid && (otpExpireControl.dirty || otpExpireControl.touched)) {\n <div id=\"otp_expire_time-errors\" class=\"text-danger small mt-1\" role=\"alert\">\n @if (otpExpireControl.errors?.['required']) {\n <span>{{ translate('OTP Expire Time is required.') }}</span>\n }\n @if (otpExpireControl.errors?.min || otpExpireControl.errors?.max) {\n <span>{{ translate('Enter a valid OTP expire time between 1 and 30 minutes.') }}</span>\n }\n </div>\n }\n </div>\n <div class=\"col-lg-4 col-md-6 col-12\">\n <label class=\"intake-form-labels\" for=\"resend_otp_delay\">\n {{ translate('Resend OTP Delay (In Minutes)') }}\n @if (configRegistrationForm.get('enable_mfa')?.value) {\n <span class=\"required\" aria-hidden=\"true\">*</span>\n }\n </label>\n <inputnumber-empower min=\"0.5\" max=\"10\" step=\"0.1\" class=\"form-control\" id=\"resend_otp_delay\" formControlName=\"resend_otp_delay\"\n [placeholder]=\"translate('Enter Resend OTP Delay')\"\n [aria-describedby]=\"resendDelayControl.invalid && (resendDelayControl.dirty || resendDelayControl.touched) ? 'resend_otp_delay-errors' : null\"\n [class.is-invalid]=\"resendDelayControl.invalid && (resendDelayControl.dirty || resendDelayControl.touched)\"></inputnumber-empower>\n @if (resendDelayControl.invalid && (resendDelayControl.dirty || resendDelayControl.touched)) {\n <div id=\"resend_otp_delay-errors\" class=\"text-danger small mt-1\" role=\"alert\">\n @if (resendDelayControl.errors?.['required']) {\n <span>{{ translate('Resend OTP Delay is required.') }}</span>\n }\n @if (resendDelayControl.errors?.min || resendDelayControl.errors?.max) {\n <span>{{ translate('Enter a valid resend delay between 0.5 and 10 minutes.') }}</span>\n }\n </div>\n }\n </div>\n <div class=\"col-lg-4 col-md-6 col-12\">\n <label class=\"intake-form-labels\" for=\"forget_config\">\n {{ translate('Forget Password Config') }}\n @if (configRegistrationForm.get('enable_mfa')?.value) {\n <span class=\"required\" aria-hidden=\"true\">*</span>\n }\n </label>\n <p-select-empower class=\"w-100\" id=\"forget_config\" optionLabel=\"name\" formControlName=\"forget_config\" optionValue=\"value\"\n [options]=\"forgetPasswordConfig\" [placeholder]=\"translate('Select Forget Password Config')\"\n [required]=\"!!configRegistrationForm.get('enable_mfa')?.value\"\n [aria-describedby]=\"configRegistrationForm.get('forget_config')?.invalid && configRegistrationForm.get('forget_config')?.touched ? 'forget_config-errors' : null\">\n </p-select-empower>\n @if (configRegistrationForm.get('forget_config')?.invalid && configRegistrationForm.get('forget_config')?.touched) {\n <small id=\"forget_config-errors\" class=\"text-danger\" role=\"alert\">\n {{ translate('Forget Password Config is required.') }}\n </small>\n }\n </div>\n <div class=\"col-lg-4 col-md-6 col-12\">\n <label class=\"intake-form-labels\" for=\"forgot_email_expire_time\">\n {{ translate('Forgot Email Expire Time(In Minutes)') }}\n @if (configRegistrationForm.get('enable_mfa')?.value) {\n <span class=\"required\" aria-hidden=\"true\">*</span>\n }\n </label>\n <inputnumber-empower min=\"1\" max=\"60\" class=\"form-control\" id=\"forgot_email_expire_time\" formControlName=\"forget_expire_time\"\n [placeholder]=\"translate('Enter Forgot Email Expire Time')\"\n [aria-describedby]=\"forgetExpireControl.invalid && (forgetExpireControl.dirty || forgetExpireControl.touched) ? 'forgot_email_expire_time-errors' : null\"\n [class.is-invalid]=\"forgetExpireControl.invalid && (forgetExpireControl.dirty || forgetExpireControl.touched)\"></inputnumber-empower>\n @if (forgetExpireControl.invalid && (forgetExpireControl.dirty || forgetExpireControl.touched)) {\n <div id=\"forgot_email_expire_time-errors\" class=\"text-danger small mt-1\" role=\"alert\">\n @if (forgetExpireControl.errors?.['required']) {\n <span>{{ translate('Forgot Email Expire Time is required.') }}</span>\n }\n @if (forgetExpireControl.errors?.min || forgetExpireControl.errors?.max) {\n <span>{{ translate('Enter a valid forgot email expire time between 1 and 60 minutes.') }}</span>\n }\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"clearfix mt-25\">\n <div class=\"clsHeaderGrp d-flex align-items-center gap-12 mb-4\">\n <div class=\"clsIconBtn\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"w-20px h-20px\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <polyline points=\"12 6 12 12 16 14\"></polyline>\n </svg>\n </div>\n <div class=\"clearfix\">\n <h4 class=\"clsHeaderTitle\">Account Lockout Settings</h4>\n <p class=\"clsSubHeaderTitle\">Configure login attempt limits and account lockout settings</p>\n </div>\n </div>\n\n <div class=\"p-25 border rounded-16\">\n <div class=\"row row-gap-15\">\n <div class=\"col-12\">\n <div class=\"clsPreferencesListItem\">\n <div class=\"flex-fill\">\n <label class=\"mb-0 cursor-pointer\" for=\"enableLoginAttemptThrottling\">Enable Time-Based Login Attempt Limits</label>\n <div class=\"mt-1 d-flex align-items-center gap-5\">\n <div class=\"clsStatusDot\" [ngClass]=\"{\n 'clsEnabledDot': configRegistrationForm.get('enableLoginAttemptThrottling')?.value,\n 'clsDisabledDot': !configRegistrationForm.get('enableLoginAttemptThrottling')?.value\n }\">\n </div>\n <span class=\"clsStatusTxt\">\n {{ configRegistrationForm.get('enableLoginAttemptThrottling')?.value ? 'Enabled' : 'Disabled' }}\n </span>\n </div>\n </div>\n <div class=\"clearfix\">\n <p-inputSwitch inputId=\"enableLoginAttemptThrottling\" formControlName=\"enableLoginAttemptThrottling\" (onChange)=\"onLoginAttemptThrottlingChange()\">\n </p-inputSwitch>\n </div>\n </div>\n </div>\n\n @if (configRegistrationForm.get('enableLoginAttemptThrottling')?.value) {\n <div class=\"col-lg-6 col-md-6 col-12\">\n <label class=\"intake-form-labels\" for=\"lockoutWindowMinutes\">{{ translate('Failed Login Attempt Window (minutes)') }}\n <span class=\"required\" aria-hidden=\"true\">*</span>\n </label>\n <inputnumber-empower class=\"form-control\" id=\"lockoutWindowMinutes\" formControlName=\"lockoutWindowMinutes\"\n [placeholder]=\"translate('Enter lock window duration in minutes')\"\n [aria-describedby]=\"lockoutWindowControl?.invalid && (lockoutWindowControl?.dirty || lockoutWindowControl?.touched) ? 'lockoutWindowMinutes-errors' : null\"\n [class.is-invalid]=\"lockoutWindowControl?.invalid && (lockoutWindowControl?.dirty || lockoutWindowControl?.touched)\"></inputnumber-empower>\n @if (lockoutWindowControl?.invalid && (lockoutWindowControl?.dirty || lockoutWindowControl?.touched)) {\n <div id=\"lockoutWindowMinutes-errors\" class=\"text-danger small mt-1\" role=\"alert\">\n @if (lockoutWindowControl?.errors?.['required']) {\n <span>{{ translate('Failed Login Attempt Window is required.') }}</span>\n }\n @if (lockoutWindowControl?.errors?.['min']) {\n <span>{{ translate('Enter a valid Login Attempt Window (Minutes).') }}</span>\n }\n </div>\n }\n </div>\n }\n\n @if (configRegistrationForm.get('enableLoginAttemptThrottling')?.value) {\n <div class=\"col-lg-6 col-md-6 col-12\">\n <label class=\"intake-form-labels\" for=\"lockoutDurationMinutes\">{{ translate('Account Lockout Duration (minutes)') }}\n <span class=\"required\" aria-hidden=\"true\">*</span>\n </label>\n <inputnumber-empower class=\"form-control\" id=\"lockoutDurationMinutes\" formControlName=\"lockoutDurationMinutes\"\n [placeholder]=\"translate('Enter lock duration in minutes')\"\n [aria-describedby]=\"lockoutDurationControl?.invalid && (lockoutDurationControl?.dirty || lockoutDurationControl?.touched) ? 'lockoutDurationMinutes-errors' : null\"\n [class.is-invalid]=\"lockoutDurationControl?.invalid && (lockoutDurationControl?.dirty || lockoutDurationControl?.touched)\"></inputnumber-empower>\n @if (lockoutDurationControl?.invalid && (lockoutDurationControl?.dirty || lockoutDurationControl?.touched)) {\n <div id=\"lockoutDurationMinutes-errors\" class=\"text-danger small mt-1\" role=\"alert\">\n @if (lockoutDurationControl?.errors?.['required']) {\n <span>{{ translate('Account Lockout Duration is required.') }}</span>\n }\n @if (lockoutDurationControl?.errors?.['min']) {\n <span>{{ translate('Enter a valid lock duration.') }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <p-card styleClass=\" w-100 mt-3\">\n <div class=\"customizer\" [formGroup]=\"configRegistrationForm\">\n <div class=\"text-md-right mt-2 mb-4 previewsumbitBtn\">\n @if (showFormErrors && configRegistrationForm.invalid) {\n <div class=\"text-danger text-left mb-2\" role=\"alert\">\n <p class=\"mb-1\">{{ translate('Please fix the following:') }}</p>\n <ul class=\"mb-0\">\n @for (msg of getInvalidFieldMessages(); track msg) {\n <li>{{ msg }}</li>\n }\n </ul>\n </div>\n }\n @if (activeTab === 'home' || activeTab === 'kms-sub1' || activeTab === 'profile') {\n <button-empower type=\"button\" class=\"btn btn-primary\" (click)=\"previewLogin()\">\n {{ translate('Preview') }}\n </button-empower>\n }\n <button-empower type=\"button\" class=\"btn btn-primary\" (click)=\"saveConfig()\">\n {{ updateButton ? translate('Update') : translate('Submit') }}\n </button-empower>\n </div>\n </div>\n </p-card>\n\n <!-- Preview Modal -->\n <p-dialog [(visible)]=\"showPreviewModal\" [modal]=\"true\" [style]=\"{ width: '100vw', height: '100vh' }\"\n [header]=\"translate('Login Preview')\" [closable]=\"true\" class=\"loginpreviewdialog\">\n <!-- create preview only after previewLoginInfo is set -->\n @if (showPreviewModal && previewLoginInfo) {\n <lib-config-login-preview [previewData]=\"previewLoginInfo\" [i18n]=\"i18n\"></lib-config-login-preview>\n }\n </p-dialog>\n\n <p-dialog [header]=\"translate('Template Preview')\" [(visible)]=\"previewVisible\" [modal]=\"true\" [closable]=\"true\">\n <img class=\"img-fluid\" [src]=\"previewImageUrl || 'assets/images/base-product/footer-left.png'\"\n alt=\"Preview\" />\n </p-dialog>","import { Component, Inject, Input, OnInit, OnDestroy, Optional } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { PermissionStore } from './@core/permissions/permission.store';\nimport { DataStoreService } from './@core/service/data-store.service';\nimport { RBACINFO } from './@core/urls/rbac-url.config';\nimport { I18nService} from '@pics-core/common-utils';\n\n@Component({\n selector: 'config-login-settings',\n template: `\n <lib-config-login-settings></lib-config-login-settings>\n `,\n styles: [\n ],\n standalone: false\n})\nexport class ConfigLoginSettingsComponent implements OnInit, OnDestroy {\n @Input() public RBACORG?: RBACINFO = new RBACINFO();\n @Input() public PERMISSION?: any;\n @Input() public configureEvent!: Observable<any>;\n\n private i18nSubscription: Subscription;\n private configureSubscription?: Subscription;\n\n constructor(\n private permissionStore: PermissionStore,\n private _storeservice: DataStoreService,\n private i18nService: I18nService,\n ) {\n }\n ngOnInit() {\n this.i18nSubscription = this.i18nService.translations$.subscribe((translations) => {\n if (translations && Object.keys(translations).length) {\n this._storeservice.setData('I18N', translations);\n this._storeservice.setData('CURRENT_LANGUAGE', this.i18nService.getCurrentLanguage());\n }\n });\n \n this.configureSubscription = this.configureEvent.subscribe((val: any) => {\n if (!val?.RBACORG) {\n return;\n }\n this.RBACORG = val.RBACORG;\n this.PERMISSION = val.PERMISSION;\n this._storeservice.setData('RBACORG', this.RBACORG);\n this.permissionStore.setStore(this.PERMISSION);\n });\n }\n ngOnDestroy(): void {\n if (this.i18nSubscription) {\n this.i18nSubscription.unsubscribe();\n }\n this.configureSubscription?.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppService {\n currentState: Subject<any> = new Subject();\n currentValue = new BehaviorSubject<any>({});\n getValue = this.currentValue.asObservable();\n addValue(key: string, value: string) {\n this.currentState.next({ key, value });\n }\n\n setValue(key: string, value: string) {\n this.currentValue.next({ key, value });\n }\n}\n","/**\n * Simple logger system with the possibility of registering custom outputs.\n *\n * 4 different log levels are provided, with corresponding methods:\n * - debug : for debug information\n * - info : for informative status of the application (success, ...)\n * - warning : for non-critical errors that do not prevent normal application behavior\n * - error : for critical errors that prevent normal application behavior\n *\n * Example usage:\n * ```\n * import { Logger } from 'app/core/logger.service';\n *\n * const log = new Logger('myFile');\n * ...\n * log.debug('something happened');\n * ```\n *\n * To disable debug and info logs in production, add this snippet to your root component:\n * ```\n * export class AppComponent implements OnInit {\n * ngOnInit() {\n * if (environment.production) {\n * Logger.enableProductionMode();\n * }\n * ...\n * }\n * }\n *\n * If you want to process logs through other outputs than console, you can add LogOutput functions to Logger.outputs.\n */\n\n/**\n * The possible log levels.\n * LogLevel.Off is never emitted and only used with Logger.level property to disable logs.\n */\nexport enum LogLevel {\n Off = 0,\n Error,\n Warning,\n Info,\n Debug\n}\n\n/**\n * Log output handler function.\n */\nexport type LogOutput = (source: string | undefined, level: LogLevel, ...objects: any[]) => void;\n\nexport class Logger {\n /**\n * Current logging level.\n * Set it to LogLevel.Off to disable logs completely.\n */\n static level = LogLevel.Debug;\n\n /**\n * Additional log outputs.\n */\n static outputs: LogOutput[] = [];\n\n /**\n * Enables production mode.\n * Sets logging level to LogLevel.Warning.\n */\n static enableProductionMode() {\n Logger.level = LogLevel.Warning;\n }\n\n constructor(private source?: string) {}\n\n /**\n * Logs messages or objects with the debug level.\n * Works the same as console.log().\n */\n debug(...objects: any[]) {\n this.log(console.log, LogLevel.Debug, objects);\n }\n\n /**\n * Logs messages or objects with the info level.\n * Works the same as console.log().\n */\n info(...objects: any[]) {\n this.log(console.info, LogLevel.Info, objects);\n }\n\n /**\n * Logs messages or objects with the warning level.\n * Works the same as console.log().\n */\n warn(...objects: any[]) {\n this.log(console.warn, LogLevel.Warning, objects);\n }\n\n /**\n * Logs messages or objects with the error level.\n * Works the same as console.log().\n */\n error(...objects: any[]) {\n this.log(console.error, LogLevel.Error, objects);\n }\n\n private log(func: (...args: any[]) => void, level: LogLevel, objects: any[]) {\n if (level <= Logger.level) {\n const log = this.source ? ['[' + this.source + ']'].concat(objects) : objects;\n func.apply(console, log);\n Logger.outputs.forEach(output => output.apply(output, [this.source, level, ...objects]));\n }\n }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { SessionStorageService, PICS_CORE_SESSION_STORAGE } from '@pics-core/common-utils';\n\nexport interface Credentials {\n // Customize received credentials here\n username: string;\n token: string;\n}\n\nconst credentialsKey = 'jwt-token';\n\n/**\n * Provides storage for authentication credentials.\n * The Credentials interface should be replaced with proper implementation.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class CredentialsService {\n private token: string | null = null;\n\n constructor(@Inject(PICS_CORE_SESSION_STORAGE) private localstore: SessionStorageService) {\n const savedCredentials = this.localstore.getItem(credentialsKey);\n if (savedCredentials) {\n this.token = savedCredentials;\n }\n }\n\n /**\n * Checks is the user is authenticated.\n * @return True if the user is authenticated.\n */\n isAuthenticated(): boolean {\n return !!this.credentials;\n }\n\n /**\n * Gets the user credentials.\n * @return The user credentials or null if the user is not authenticated.\n */\n get credentials(): string | null {\n return this.token;\n }\n\n /**\n * Sets the user credentials.\n * The credentials may be persisted across sessions by setting the `remember` parameter to true.\n * Otherwise, the credentials are only persisted for the current session.\n * @param credentials The user credentials.\n * @param remember True to remember credentials across sessions.\n */\n setCredentials(credentials?: string) {\n this.token = credentials || null;\n if (credentials) {\n this.localstore.setItem(credentialsKey, credentials);\n } else {\n this.localstore.clear();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { CredentialsService } from './credentials.service';\nimport { Logger } from './logger.service';\n\nconst log = new Logger('AuthenticationGuard');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n constructor(private router: Router, private credentialsService: CredentialsService) {}\n\n canActivate(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): boolean {\n if (this.credentialsService.isAuthenticated()) {\n return true;\n }\n log.debug('Not authenticated, redirecting and adding redirect url...');\n this.router.navigate(['/login']);\n return false;\n }\n}\n","export class DynamicTabPageConfig {\n public static EndPoint = {\n Page: {\n getActivePage: '/pageversion/{id}',\n getPage: '/page',\n getPageById: '/page/{id}',\n getResponseByPageId: '/app/formresponse/{responseId}/getByPageId/{pageId}',\n createFormResponse: '/app/formresponse/create',\n patchFormResponse: '/app/formresponse',\n updateFormResponse: '/pagedata/'\n },\n Narrative: {\n getIncidentListById: '/incident/listBySourceId/{id}'\n },\n Notification: {\n createSurveyConfig: '/surveyconfig/usersurvey/{id}/{status}/{pagedataid}'\n },\n Finance: {\n exportDocument: '/integrated/exportDocuments/',\n uploadDocument: 'document/upload',\n getUniqueId: '/uniqueIdLogic/'\n },\n Attachments: {\n createAttachment: '/app/formresponseattachment/create'\n }\n };\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { NgxfUploaderService } from 'ngxf-uploader';\nimport { BehaviorSubject } from 'rxjs';\nimport { HttpService } from './http.service';\nimport { DynamicTabPageConfig } from '../urls/dynamic-tab-page-url.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicTabPageService {\n private isPageDesign = new BehaviorSubject<boolean>(false);\n observePage = this.isPageDesign.asObservable();\n constructor(private uploadService: NgxfUploaderService, private httpService: HttpService) {}\n\n getActivePage(tabPageId: any, permission?: boolean) {\n return this.httpService.get(\n `${DynamicTabPageConfig.EndPoint.Page.getActivePage.replace('{id}', tabPageId)}${\n permission ? '?applyPermissions=true' : ''\n }`\n );\n }\n\n getDynamicPage(pageId: any) {\n return this.httpService.get(`${DynamicTabPageConfig.EndPoint.Page.getPage}/${pageId}`);\n }\n\n getPageById(pageId: any) {\n return this.httpService.get(DynamicTabPageConfig.EndPoint.Page.getPageById.replace('{id}', pageId));\n }\n\n getListBySourceId(sourceId: any) {\n return this.httpService.get(DynamicTabPageConfig.EndPoint.Narrative.getIncidentListById.replace('{id}', sourceId));\n }\n\n getResponseByPageId(responseId: any, pageId: any) {\n return this.httpService.get(\n DynamicTabPageConfig.EndPoint.Page.getResponseByPageId\n .replace('{responseId}', responseId)\n .replace('{pageId}', pageId)\n );\n }\n\n createFormResponse(id: any, requestData) {\n return this.httpService.post(\n id\n ? DynamicTabPageConfig.EndPoint.Page.updateFormResponse\n : DynamicTabPageConfig.EndPoint.Page.createFormResponse,\n requestData\n );\n }\n\n createUserSurvey(history, Id: any) {\n return this.httpService.post(\n DynamicTabPageConfig.EndPoint.Notification.createSurveyConfig\n .replace('{id}', history?.state?.usersurveyid)\n .replace('{status}', 'Completed')\n .replace('{pagedataid}', Id),\n {}\n );\n }\n\n updateFormResponse(id: any, requestData: any) {\n return this.httpService.patch(`${DynamicTabPageConfig.EndPoint.Page.patchFormResponse}/${id}`, requestData);\n }\n\n exportReport(data: any) {\n return this.httpService.post(DynamicTabPageConfig.EndPoint.Finance.exportDocument, data);\n }\n\n uploadFile(file: any) {\n return this.uploadService.upload({\n url: this.httpService.baseUrl + '/' + DynamicTabPageConfig.EndPoint.Finance.uploadDocument,\n headers: new HttpHeaders()\n .set('ctype', 'file')\n .set('uniqueid', '6b61ac1e-221a-495c-957b-ad85f65be25a')\n .set('role', 'role=CP_PUBLIC'),\n files: file,\n process: true\n });\n }\n\n getUniqueId(api: string) {\n return this.httpService.get(DynamicTabPageConfig.EndPoint.Finance.getUniqueId + api);\n }\n\n changePage(page) {\n this.isPageDesign.next(page);\n }\n\n createFormResponseAttachment(data) {\n return this.httpService.post(DynamicTabPageConfig.EndPoint.Attachments.createAttachment, data);\n }\n}\n","export class PageHeaderURL {\n public static EndPoints = {\n page: {\n getAuthorizedPages: '/platform/page-designer/page/organization/{orgid}?returnUserPage=true&excludeNoActiveVersionPages=true'\n }\n };\n}\n","import { Injectable } from '@angular/core';\nimport { HttpService } from './http.service';\nimport { PageHeaderURL } from '../urls/page-header-url.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PageHeaderService {\n constructor(private httpService: HttpService) {}\n\n getAuthorizedPages(orgid) {\n return this.httpService.get(PageHeaderURL.EndPoints.page.getAuthorizedPages.replace('{orgid}', orgid));\n }\n}\n","import { UserDto } from \"../constants/common.entities\";\n\n\nexport class AuthState {\n user?: UserDto;\n}\n","import { Injectable } from '@angular/core';\nimport { forkJoin, Observable, of } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { UserDto } from '../constants/common.entities';\nimport { HttpService } from './http.service';\nimport { AuthState } from './auth.state';\nimport { AuthURL } from '../urls/rbac-url.config';\nimport { Store } from './store.service';\n\n@Injectable()\nexport class AuthStore extends Store<AuthState> {\n constructor(private httpService: HttpService) {\n super(new AuthState());\n }\n\n addAuthInfo(user: UserDto): void {\n this.setState({ ...this.state, user });\n }\n\n getAuthInfo(): Observable<any> {\n console.log(this.state);\n if (this.state.user) {\n return of(this.state.user);\n } else {\n return forkJoin([this.httpService.get(AuthURL.EndPoints.auth.user.userInfo)]).pipe(\n tap(([user]) => {\n return user;\n })\n );\n }\n }\n}\n","import { Injectable, Injector, Inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BehaviorSubject, Observable, forkJoin, of } from 'rxjs';\nimport { AuthURL } from '../urls/rbac-url.config';\nimport { AlertService } from './alert.service';\nimport { HttpService } from './http.service';\nimport { DynamicTabPageService } from './dynamic-tab-page-service';\nimport { PageHeaderService } from './page-header.service';\nimport { AuthStore } from './auth.store';\nimport { CredentialsService } from './credentials.service';\nimport { SessionStorageService, PICS_CORE_SESSION_STORAGE } from '@pics-core/common-utils';\nimport { mergeMap, tap } from 'rxjs/operators';\nimport { AppConstants } from '../constants/app-constants';\n\n@Injectable(\n{\n providedIn: 'root'\n}\n)\nexport class AuthService {\n sharedInfo: any;\n alertService: AlertService;\n dynamicTabPageService: DynamicTabPageService;\n pageHeaderService: PageHeaderService;\n constructor(\n injector: Injector,\n private httpService: HttpService,\n private store: AuthStore,\n private _router: Router,\n private credentialsService: CredentialsService,\n @Inject(PICS_CORE_SESSION_STORAGE) private localstore: SessionStorageService\n ) {\n this.alertService = injector.get<AlertService>(AlertService);\n this.dynamicTabPageService = injector.get<DynamicTabPageService>(DynamicTabPageService);\n this.pageHeaderService = injector.get<PageHeaderService>(PageHeaderService);\n }\n\n public orgInfo = new BehaviorSubject<any>('');\n currentOrgInfo = this.orgInfo.asObservable();\n\n public currentMenu = new BehaviorSubject<any>('');\n currentMenuInfo = this.currentMenu.asObservable();\n\n feedOrgInfo(data: any) {\n this.orgInfo.next(data);\n }\n getCurrentMenu(data: any) {\n this.currentMenu.next(data);\n }\n\n getUserOrgList() {\n return this.httpService.get(AuthURL.EndPoints.auth.user.orgList);\n }\n\n getUnNotified() {\n return this.httpService.get(AuthURL.EndPoints.auth.user.notification);\n }\n\n updateUnNotified(data) {\n return this.httpService.post(AuthURL.EndPoints.auth.user.notification, data);\n }\n\n updateWorkerAvailability(data) {\n return this.httpService.patch(AuthURL.EndPoints.auth.user.workerAvailability, data);\n }\n\n getWorkerAvailability() {\n return this.httpService.get(AuthURL.EndPoints.auth.user.getWorkerAvailability);\n }\n\n getMstrToken() {\n return this.httpService.get(AuthURL.EndPoints.auth.microstrategy.login).pipe(res => {\n return res;\n });\n }\n\n public login(email: string, password: string, otp: string): Observable<any> {\n const body = {\n email: email,\n password: password,\n secret: otp ? otp : ''\n };\n return this.httpService.post(AuthURL.EndPoints.auth.user.login, body).pipe(\n mergeMap((res: any): Observable<[any]> => {\n if (res['data'] === 'MFA_CODE_SEND') {\n return of(res['data']);\n }\n this.credentialsService.setCredentials(res['data'].idToken.jwtToken);\n this.localstore.setItem('refreshToken', res['data'].refreshToken.token);\n this.localstore.setItem('email', res['data'].idToken.payload['email']);\n this.localstore.setItem('id', res['data'].idToken.payload['custom:id']);\n this.localstore.setItem('username', res['data'].idToken.payload['name']);\n return this.getUserInfo();\n })\n );\n }\n\n public refreshToken(platform = 'aws') {\n const email = this.localstore.getItem('email');\n const refreshToken = this.localstore.getItem('refreshToken');\n const body = {\n email,\n refreshToken\n };\n if(platform === 'aws') {\n return this.httpService.post(AuthURL.EndPoints.auth.user.refreshToken, body).pipe(\n mergeMap((res: any): any => {\n this.credentialsService.setCredentials(res['data'].idToken.jwtToken);\n this.localstore.setItem('refreshToken', res['data'].refreshToken.token);\n this.localstore.setItem('email', res['data'].idToken.payload['email']);\n this.localstore.setItem('id', res['data'].idToken.payload['custom:id']);\n this.localstore.setItem('username', res['data'].idToken.payload['name']);\n console.log('new token generated...', res['data'].idToken.jwtToken);\n return [res['data'].idToken.jwtToken];\n })\n );\n }\n else {\n return this.httpService.post(AuthURL.EndPoints.auth.user.refreshToken, body).pipe(\n mergeMap((res: any): any => {\n this.credentialsService.setCredentials(res['data'].token);\n this.localstore.setItem('refreshToken', res['data'].refreshToken);\n return [res['data'].token];\n })\n );\n }\n }\n\n public resetLoggedIn() {\n this.httpService\n .post(AuthURL.EndPoints.auth.user.logout, {\n email: this.localstore.getItem('email')\n })\n .subscribe(() => {\n console.log('Logged in flag reset successful.');\n });\n }\n\n public logout() {\n this._router.navigate(['/login']);\n this.localstore.clear();\n localStorage.clear();\n }\n\n public getUserInfo(): Observable<[any]> {\n return forkJoin([this.httpService.get(AuthURL.EndPoints.auth.user.userInfo)]).pipe(\n tap(([user]) => {\n this.store.addAuthInfo(user['data']);\n return user;\n })\n );\n }\n\n public getUserRole(id): Observable<any> {\n return this.httpService.get(AuthURL.EndPoints.auth.user.userRole.replace('{id}', id)).pipe(res => {\n return res;\n });\n }\n\n public routeToDynamicPage(orgid): Observable<any> {\n return this.httpService\n .get(AuthURL.EndPoints.auth.user.routeToDynamicPage.replace('{orgid}', orgid))\n .pipe((res: any) => {\n return res;\n });\n }\n\n getAuthMe() {\n return this.httpService.get(AuthURL.EndPoints.auth.user.authMe);\n }\n\n ResetPassword(data: any) {\n return this.httpService.post(AuthURL.EndPoints.auth.user.resetPassword, data);\n }\n\n public getRoleKey() {\n const user = this.localstore.getObj('user');\n if (user && user.role) {\n return user.role.rolekey;\n }\n }\n\n public isAdmin() {\n return 'ADM' === this.getRoleKey();\n }\n\n public getOrgID() {\n const user = this.localstore.getObj('user');\n if (user && user.userWorkInfo && user.userWorkInfo.organization && user.userWorkInfo.organization.id) {\n return user.userWorkInfo.organization.id;\n } else {\n return '';\n }\n }\n\n conformMail(data) {\n return this.httpService.post(AuthURL.EndPoints.auth.user.conformMail, data);\n }\n\n changePassword(data) {\n return this.httpService.post(AuthURL.EndPoints.auth.user.changePassword, data);\n }\n\n setSharedMessage(data) {\n this.sharedInfo = data;\n }\n\n getSharedMessage() {\n return this.sharedInfo;\n }\n\n async checkDynamicPagePermission(pageId: any) {\n const dynamicPages = await this.getAuthorizedPages();\n if (pageId) {\n this.dynamicTabPageService.getPageById(pageId).subscribe(res => {\n if (dynamicPages.some(page => page.id === res['data'][0].activeVersion.id)) {\n this._router.navigate([`pages/dynamic-search/search/${res['data'][0].activeVersion.id}`]);\n } else {\n this.alertService.error(\n `You don't have permissions for ${res['data'][0].activeVersion.pagename} . Please Contact Administrator`\n );\n }\n });\n } else {\n this.alertService.error(\n 'You don\\'t have permissions to perform the following operations .Please Contact Administrator'\n );\n }\n }\n\n getCurrentOrg() {\n return this.getUserOrgList()\n .toPromise()\n .then(response => {\n return response['data'][0].id;\n });\n }\n\n async getAuthorizedPages() {\n const orgId = await this.getCurrentOrg();\n return this.pageHeaderService\n .getAuthorizedPages(orgId)\n .toPromise()\n .then(\n response => {\n const dynamicPage = response['data'].filter(page => {\n return (\n page.activeVersion &&\n (page.activeVersion.gridconfig || page.activeVersion.templatejson || this.getCustomPage(page))\n );\n });\n return dynamicPage.map(page => ({\n id: page.activeVersion.id,\n name: page.activeVersion.pagename,\n activeVersion: page.activeVersion\n }));\n },\n _error => this.alertService.error(AppConstants.errorMessage)\n );\n }\n\n getCustomPage(page) {\n if (page.activeVersion.tabconfig) {\n const routingTab = JSON.parse(page.activeVersion.tabconfig).filter(x => x.type === 'ROUTING');\n return routingTab.length && page;\n }\n }\n public validateToken(token: string,requestObject: any): Observable<any> {\n this.credentialsService.setCredentials(token);\n return this.httpService.getAuthAccessKey(AuthURL.EndPoints.auth.user.getTokenValidationUrl,requestObject).pipe(\n mergeMap((res: any): Observable<[any]> => {\n if (res['data'] === 'MFA_CODE_SEND') {\n return of(res['data']);\n }\n this.credentialsService.setCredentials(res['data'].token);\n this.localstore.setItem('refreshToken', res['data'].refreshToken);\n this.localstore.setItem('email', res['data'].email);\n this.localstore.setItem('id', res['data'].id);\n this.localstore.setItem('username', res['data'].name);\n return this.getUserInfo();\n })\n );\n }\n generateLoginUrl() {\n return this.httpService.get(AuthURL.EndPoints.auth.user.generateLoginUrl)\n }\n}\n","import { Injectable } from '@angular/core';\n\nconst APP_PREFIX = 'GAMED-';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalStorageService {\n constructor() {\n // This is intentional\n }\n\n static loadInitialState() {\n return Object.keys(localStorage).reduce((state: any, storageKey) => {\n if (storageKey.includes(APP_PREFIX)) {\n const stateKeys = storageKey\n .replace(APP_PREFIX, '')\n .toLowerCase()\n .split('.')\n .map(key =>\n key\n .split('-')\n .map((token, index) => (index === 0 ? token : token.charAt(0).toUpperCase() + token.slice(1)))\n .join('')\n );\n let currentStateRef = state;\n stateKeys.forEach((key, index) => {\n if (index === stateKeys.length - 1) {\n currentStateRef[key] = JSON.parse(localStorage.getItem(storageKey) || '');\n return;\n }\n currentStateRef[key] = currentStateRef[key] || {};\n currentStateRef = currentStateRef[key];\n });\n }\n return state;\n }, {});\n }\n\n setItem(key: string, value: any) {\n localStorage.setItem(`${APP_PREFIX}${key}`, JSON.stringify(value));\n }\n\n getItem(key: string) {\n return localStorage.getItem(`${APP_PREFIX}${key}`) || '';\n }\n\n removeItem(key: string) {\n localStorage.removeItem(`${APP_PREFIX}${key}`);\n }\n\n /** Tests that localStorage exists, can be written to, and read from. */\n testLocalStorage() {\n const testValue = 'testValue';\n const testKey = 'testKey';\n const errorMessage = 'localStorage did not return expected value';\n\n this.setItem(testKey, testValue);\n const retrievedValue = this.getItem(testKey);\n this.removeItem(testKey);\n\n if (retrievedValue !== testValue) {\n throw new Error(errorMessage);\n }\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AlertService } from './alert.service';\nimport { DataStoreService } from './data-store.service';\nimport { PermissionStore } from './../permissions/permission.store';\n\ndeclare const microstrategy: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MicrostrategyService {\n dossierList: any;\n RBACORG: any;\n environment: any;\n constructor(private http: HttpClient,\n private alertService: AlertService,\n private permissionStore: PermissionStore,\n private _storeservice: DataStoreService) {\n this._storeservice.currentStore.subscribe((res: any) => {\n if (res['RBACORG'] && res['RBACORG'] !== '') {\n this.RBACORG = res['RBACORG'];\n this.environment = this.RBACORG['environment'] ? this.RBACORG['environment'] : '';\n }\n });\n }\n\n getAuthToken() {\n const body = {\n username: this.environment.mstrUsername,\n password: this.environment.mstrPassword,\n loginMode: 1\n };\n return this.http.post(`${this.environment.mstrURL}/api/auth/login`, body, {\n withCredentials: true,\n headers: { 'Content-type': 'application/json' },\n observe: 'response'\n });\n }\n\n getDossier(projectId?: string, dossierId?: string, pageNo?: string) {\n const permissions = this.permissionStore.state;\n const projectUrl = `${this.environment.mstrURL}/app/${projectId}`;\n const dossierUrl = `${projectUrl}/${dossierId}/${pageNo}`;\n microstrategy.dossier\n .create({\n placeholder: document.getElementById('dossierContainer'),\n url: dossierUrl,\n navigationBar: {\n enabled: true,\n gotoLibrary: permissions?.ANA_LIBRARY,\n title: true,\n toc: true,\n reset: true,\n reprompt: true,\n share: true,\n comment: true,\n notification: true,\n filter: true,\n options: true,\n search: true,\n bookmark: true\n },\n enableCustomAuthentication: true,\n enableResponsive: false,\n containerWidth: 400,\n containerHeight: 400,\n customAuthenticationType: microstrategy.dossier.CustomAuthenticationType.AUTH_TOKEN,\n getLoginToken: async () => {\n const response = await this.getAuthToken().toPromise();\n return response.headers.get('x-mstr-authtoken');\n }\n })\n .catch((_err: any) => this.alertService.error(`Failed to connect ${this.environment.mstrURL}`));\n }\n\n async getLibraryDetails() {\n const token = await this.getAuthToken().toPromise();\n const authtoken = token.headers.get('x-mstr-authtoken')\n const headerInfo = {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n 'X-MSTR-AuthToken': authtoken ? authtoken: '',\n 'X-MSTR-ProjectID': this.environment.mstrProjectID\n };\n return this.http\n .get(`${this.environment.mstrURL}/api/library`, {\n withCredentials: true,\n headers: headerInfo\n })\n .toPromise()\n .then((response: any) => {\n return response.map((mstr: any) => ({\n id: mstr.target.id,\n projectId: mstr.projectId,\n name: mstr.target.name\n }));\n });\n }\n}\n","import { FontSet, Theme } from \"./common.entities\";\n\n\nexport const themeList: Theme[] = [\n {\n name: 'Default',\n image: '/assets/images/skin_default.svg',\n key: 'default',\n properties: {\n '--background-color': '#f3f3f3',\n '--header-bg': '#464185',\n '--navigation': '#fff',\n '--primary': '#3e397e',\n '--checkbox-border': '#3e397e',\n '--text-dark': '#000',\n '--label-text': '#2c2863',\n '--hover-text': '#fff',\n '--bg-light': '#fff',\n '--forms': '#fff',\n '--nav-text': '#000',\n '--light-gray': '#696969',\n '--material-icons': '#2c2863',\n '--highlight-list': '#E3F2FD',\n '--table-header': '#f9f9f9',\n '--table-odd': '#f7f7f7',\n '--table-border': '#ddd',\n '--table-hover': '#f6f5ff',\n '--btn': '#3e397e',\n '--menu-panel': '#2c2863',\n '--border-trans': 'transparent',\n '--btn-hover': '#2c2863',\n '--btn-dark': '#2c2863',\n '--dropdown-list': '#fff',\n '--btncancel': '#3e397e',\n '--primary-light': '#6e6b93',\n '--primary-dark': '#282462 ',\n '--light-d-light': '#fff',\n '--ldl-text': '#fff',\n '--light-d-accent': '#fff',\n '--readonly-bg': 'rgb(229 229 229 / 45%)',\n\n '--var-icon-font': '\"FILL\" 0, \"wght\" 200, \"GRAD\" 0, \"opsz\" 48',\n\n '--rocket-icon': '/assets/images/rocket-ship.svg'\n }\n },\n {\n name: 'Light',\n image: '/assets/images/skin_light.svg',\n key: 'light',\n properties: {\n '--background-color': '#f3f3f3',\n '--header-bg': '#f3f3f3',\n '--navigation': '#fff',\n '--primary': '#343344',\n '--checkbox-border': '#343344',\n '--text-dark': '#000',\n '--label-text': '#000',\n '--hover-text': '#fff',\n '--bg-light': '#fff',\n '--forms': '#fff',\n '--nav-text': '#000',\n '--light-gray': '#696969',\n '--material-icons': '#2c2863',\n '--highlight-list': '#E3F2FD',\n '--table-header': '#f9f9f9',\n '--table-odd': '#fff',\n '--table-border': '#ddd',\n '--table-hover': '#f5f5f5',\n '--btn': '#343344',\n '--menu-panel': '#fff',\n '--border-trans': 'transparent',\n '--btn-hover': '#2c2863',\n '--btn-dark': '#343344',\n '--dropdown-list': '#fff',\n '--btncancel': '#343344',\n '--primary-light': '#6e6b93',\n '--primary-dark': '#f5f5f5',\n '--light-d-light': '#343344',\n '--ldl-text': '#000',\n '--light-d-accent': '#343344',\n '--readonly-bg': 'rgb(229 229 229 / 45%)',\n\n '--var-icon-font': '\"FILL\" 0, \"wght\" 500, \"GRAD\" 0, \"opsz\" 48',\n\n '--rocket-icon': '/assets/images/rocket-ship.svg'\n }\n },\n {\n name: 'Dark',\n image: '/assets/images/skin_dark.svg',\n key: 'dark',\n properties: {\n '--background-color': '#1a2035',\n '--header-bg': '#1a2035',\n '--navigation': '#272e46',\n '--nav-text': '#fff',\n '--light-gray': '#a3a3a3',\n '--primary': '#f3266b',\n '--checkbox-border': '#8b8989',\n '--text-dark': '#ddd',\n '--label-text': '#fff',\n '--hover-text': '#fff',\n '--bg-light': '#272e46',\n '--material-icons': '#fff',\n '--forms': '#272e46',\n '--highlight-list': '#364060',\n '--table-header': '#364060',\n '--table-odd': '#2f364c',\n '--table-border': '#3e414c',\n '--table-hover': '#3f465e',\n '--btn': '#f3266b',\n '--menu-panel': '#272e46',\n '--border-trans': 'transparent',\n '--btn-hover': '#f3266b',\n '--btn-dark': '#2c2863',\n '--dropdown-list': '#29314a',\n '--btncancel': 'transparent',\n '--primary-light': '#a75872',\n '--primary-dark': '#202534',\n '--light-d-light': '#fff',\n '--ldl-text': '#fff',\n '--light-d-accent': '#a75872',\n '--readonly-bg': 'rgb(96 96 96 / 45%)',\n\n '--var-icon-font': '\"FILL\" 0, \"wght\" 200, \"GRAD\" 0, \"opsz\" 48',\n\n '--rocket-icon': '/assets/images/rocket-ship_light.svg'\n }\n }\n];\n\nexport const FontSetList: FontSet[] = [\n {\n name: 'Medium',\n key: 'medium',\n properties: {\n '--base-font-size': '13px',\n '--font-11': '11px',\n '--font-12': '12px',\n '--font-13': '13px',\n '--font-14': '14px',\n '--font-15': '15px',\n '--font-16': '16px',\n '--font-17': '17px',\n '--font-18': '18px',\n '--font-19': '19px',\n '--font-20': '20px',\n '--font-21': '21px',\n '--font-24': '24px',\n '--font-26': '26px'\n }\n },\n {\n name: 'Large',\n key: 'large',\n properties: {\n '--base-font-size': '15px',\n '--font-11': '13px',\n '--font-12': '14px',\n '--font-13': '15px',\n '--font-14': '16px',\n '--font-15': '17px',\n '--font-16': '18px',\n '--font-17': '19px',\n '--font-18': '20px',\n '--font-19': '21px',\n '--font-20': '22px',\n '--font-21': '23px',\n '--font-24': '28px',\n '--font-26': '30px'\n }\n }\n];\nexport const fontRangeSetList: FontSet[] = [\n {\n name: '13',\n key: '13',\n properties: {\n '--base-font-size': '13px',\n }\n },\n {\n name: '14',\n key: '14',\n properties: {\n '--base-font-size': '14px',\n '--font-14': '15px',\n '--font-12': '13px',\n '--font-18': '19px',\n }\n },\n {\n name: '15',\n key: '15',\n properties: {\n '--base-font-size': '15px',\n '--font-14': '16px',\n '--font-12': '14px',\n '--font-18': '20px',\n }\n },\n {\n name: '16',\n key: '16',\n properties: {\n '--base-font-size': '16px',\n '--font-14': '17px',\n '--font-12': '15px',\n '--font-18': '21px',\n }\n },\n {\n name: '17',\n key: '17',\n properties: {\n '--base-font-size': '17px',\n '--font-14': '18px',\n '--font-12': '16px',\n '--font-18': '22px',\n }\n },\n {\n name: '18',\n key: '18',\n properties: {\n '--base-font-size': '18px',\n '--font-14': '19px',\n '--font-12': '17px',\n '--font-18': '23px',\n }\n },\n {\n name: '19',\n key: '19',\n properties: {\n '--base-font-size': '19px',\n '--font-14': '20px',\n '--font-12': '18px',\n '--font-18': '24px',\n }\n },\n {\n name: '20',\n key: '20',\n properties: {\n '--base-font-size': '20px',\n '--font-14': '21px',\n '--font-18': '24px',\n }\n }\n];\n","import { Injectable } from '@angular/core';\nimport { FontSet, Theme } from '../constants/common.entities';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemeService {\n private active?: any;\n private activeFont?: any;\n\n constructor() {\n // This is intentional\n }\n\n setActiveTheme(theme: Theme): void {\n this.active = theme;\n Object.keys(this.active.properties).forEach(property => {\n document.documentElement.style.setProperty(property, this.active.properties[property]);\n });\n }\n\n setActiveFont(Fontset: FontSet): void {\n this.activeFont = Fontset;\n if(this.activeFont){\n Object.keys(this.activeFont?.properties).forEach(property => {\n document.documentElement.style.setProperty(property, this.activeFont?.properties[property]);\n });\n }\n }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { HttpService } from './http.service';\nimport { ThemeService } from './theme.service';\nimport { SessionStorageService, PICS_CORE_SESSION_STORAGE } from '@pics-core/common-utils';\nimport { FontSetList, themeList } from '../constants/theme-constants';\nimport { UserConfig } from '../urls/rbac-url.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProfileService {\n profileImage: Subject<any> = new Subject();\n constructor(\n private httpService: HttpService,\n private themeService: ThemeService,\n @Inject(PICS_CORE_SESSION_STORAGE) private localstorage: SessionStorageService\n ) {}\n\n setUserPreference() {\n const user_id = this.localstorage.getItem('id');\n if (user_id) {\n this.getUserPreference(user_id).subscribe((res: any) => {\n if (res.data && res.data?.config) {\n const configArray = JSON.parse(res.data.config);\n this.setTheme(configArray.theme);\n this.setFont(configArray.font);\n }\n });\n }\n }\n setTheme(event) {\n this.localstorage.setItem('SELECTED_THEME', event);\n const selectedTheme = themeList.filter(theme => theme.key === event)[0];\n this.themeService.setActiveTheme(selectedTheme);\n console.log('Selected Theme:', selectedTheme.key);\n }\n setFont(event) {\n this.localstorage.setItem('SELECTED_FONT', event);\n const selectedFont = FontSetList.filter(fontSet => fontSet.key === event)[0];\n this.themeService.setActiveFont(selectedFont);\n }\n\n getProfile(img: any) {\n this.profileImage.next(img);\n }\n\n getAllUserList(key?: string): Observable<any> {\n return this.httpService.get(`${UserConfig.EndPoint.User.getAllUserList}/${key}`);\n }\n getAllUserOrgList(orgid: any) {\n return this.httpService.get(UserConfig.EndPoint.User.getAllUserOrgList + orgid);\n }\n getUserPreference(id) {\n return this.httpService.get(UserConfig.EndPoint.User.getUserConfig.replace('{id}', id));\n }\n updateUser(data: any, userid: string) {\n return this.httpService.patch(`${UserConfig.EndPoint.User.getAllUserList}/${userid}/updateUserDetails`, data);\n }\n saveUserPreference(data) {\n return this.httpService.post(UserConfig.EndPoint.User.saveUserConfig, data);\n }\n}\n","import { AfterViewInit, Directive, ElementRef, Input, Renderer2 } from '@angular/core';\nimport { PermissionStore } from '../permissions/permission.store';\n\n\n\n@Directive({\n selector: '[fieldKey]',\n standalone: false\n})\nexport class PermissionDirective implements AfterViewInit {\n @Input() fieldKey!: string;\n permissions: any;\n constructor(\n private readonly renderer: Renderer2,\n private elementRef: ElementRef,\n private dataStore: PermissionStore\n ) {\n }\n ngAfterViewInit() {\n const permissions = this.dataStore.state;\n if (permissions) {\n if (!permissions[this.fieldKey]) {\n const template = this.elementRef.nativeElement;\n if (template.tagName === 'A') {\n if (template) {\n const r = document.createElement(this.elementRef.nativeElement.tagName.toLowerCase());\n r.innerHTML = template.innerHTML;\n r.href = 'javascript:void(0);';\n r['disabled'] = true;\n r.className = template.className;\n this.elementRef.nativeElement.parentNode.replaceChild(r, template);\n }\n } else if (\n template.tagName === 'P-MULTISELECT' ||\n template.tagName === 'P-DROPDOWN' ||\n template.tagName === 'P-CHECKBOX' ||\n template.tagName === 'P-TREESELECT' ||\n template.tagName === 'P-RADIOBUTTON' ||\n template.tagName === 'P-CALENDAR'\n ) {\n if (template) {\n const r = document.createElement(this.elementRef.nativeElement.tagName.toLowerCase());\n r.innerHTML = template.innerHTML;\n r.className = template.className;\n r.className += ' p-disabled';\n this.elementRef.nativeElement.parentNode.replaceChild(r, template);\n }\n } else {\n this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', 'true');\n const childInputNodes = this.elementRef.nativeElement.querySelectorAll(\n 'input, select, textarea, button, a, ng-select, div, lable'\n );\n childInputNodes.forEach((elem: any) => {\n this.renderer.setAttribute(elem, 'disabled', 'true');\n });\n }\n }\n }\n }\n}\n","import { Directive, Input, OnInit, TemplateRef, ViewContainerRef, Inject } from '@angular/core';\nimport { PermissionStore } from '../permissions/permission.store';\nimport { SessionStorageService, PICS_CORE_SESSION_STORAGE } from '@pics-core/common-utils';\n\n@Directive({\n selector: '[showField]',\n standalone: false\n})\nexport class ShowFieldDirective implements OnInit {\n @Input() showField!: string;\n\n constructor(\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef,\n private dataStore: PermissionStore,\n @Inject(PICS_CORE_SESSION_STORAGE) private localstore: SessionStorageService\n ) {}\n\n ngOnInit(): void {\n const permissions = this.dataStore.state;\n if (!permissions || !permissions[this.showField]) {\n this.viewContainer.clear();\n } else {\n this.viewContainer.createEmbeddedView(this.templateRef);\n const lookupIds = this.localstore.getItem('LOOKUP_IDS');\n if (lookupIds) {\n const lookupIdArray = lookupIds.split(',');\n Object.entries(permissions)\n .filter(item => item[0].startsWith('GALKP_'))\n .forEach(([key, value]) => {\n for (const _value of <[]>value) {\n const _key = key.replace('GALKP_', '');\n if (\n _key === this.showField &&\n lookupIdArray.includes(String(_value['lookupid'])) &&\n _value['action'] === 'H'\n ) {\n this.viewContainer.clear();\n }\n }\n });\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PermissionDirective } from './permission.directive';\nimport { ShowFieldDirective } from './show-field.directives';\n\n@NgModule({\n declarations: [PermissionDirective, ShowFieldDirective],\n imports: [CommonModule],\n exports: [PermissionDirective, ShowFieldDirective]\n})\nexport class DirectivesModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AlertComponent } from './alert.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [AlertComponent],\n exports: [AlertComponent]\n})\nexport class AlertModule {}\n","import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ConfigLoginSettingsComponent } from './config-login-settings/config-login-settings.component';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { AccordionModule } from 'primeng/accordion';\nimport { AvatarModule } from 'primeng/avatar';\nimport { BadgeModule } from 'primeng/badge';\nimport { ButtonModule } from 'primeng/button';\nimport { CalendarModule } from 'primeng/calendar';\nimport { CardModule } from 'primeng/card';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\nimport { ConfirmPopupModule } from 'primeng/confirmpopup';\nimport { ContextMenuModule } from 'primeng/contextmenu';\nimport { DialogModule } from 'primeng/dialog';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { EditorModule } from 'primeng/editor';\nimport { FieldsetModule } from 'primeng/fieldset';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { KnobModule } from 'primeng/knob';\nimport { MessageModule } from 'primeng/message';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { OrderListModule } from 'primeng/orderlist';\nimport { PasswordModule } from 'primeng/password';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { RippleModule } from 'primeng/ripple';\nimport { SidebarModule } from 'primeng/sidebar';\nimport { SpeedDialModule } from 'primeng/speeddial';\nimport { StepsModule } from 'primeng/steps';\nimport { TableModule } from 'primeng/table';\nimport { TabMenuModule } from 'primeng/tabmenu';\nimport { TabViewModule } from 'primeng/tabview';\nimport { ToastModule } from 'primeng/toast';\nimport { TreeSelectModule } from 'primeng/treeselect';\nimport { DirectivesModule } from '../@core/directives/directives.module';\nimport { AlertModule } from '../@shared/alert/alert.module';\nimport { QuillModule } from 'ngx-quill';\nimport { ConfigLoginPreviewComponent } from './config-login-preview/config-login-preview.component';\nimport { EmpowerComponentsModule } from '@pics-core/empower-ui';\n\n\n@NgModule({\n declarations: [\n ConfigLoginSettingsComponent,\n ConfigLoginPreviewComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgbModule,\n TabMenuModule,\n TabViewModule,\n TreeSelectModule,\n HttpClientModule,\n CheckboxModule,\n DropdownModule,\n CardModule,\n ConfirmDialogModule,\n AccordionModule,\n MessageModule,\n TableModule,\n InputTextModule,\n CalendarModule,\n EditorModule,\n FieldsetModule,\n ButtonModule,\n RadioButtonModule,\n InputTextareaModule,\n InputMaskModule,\n StepsModule,\n ToastModule,\n RippleModule,\n AvatarModule,\n BadgeModule,\n MultiSelectModule,\n InputSwitchModule,\n ProgressSpinnerModule,\n SpeedDialModule,\n OrderListModule,\n FileUploadModule,\n DialogModule,\n PasswordModule,\n KnobModule,\n SidebarModule,\n ContextMenuModule,\n ConfirmPopupModule,\n DirectivesModule,\n AlertModule,\n QuillModule.forRoot(),\n EmpowerComponentsModule,\n ],\n exports: [ConfigLoginSettingsComponent],\n schemas: [NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class PicsConfigLoginSettingsModule { }\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ShareDataService {\n\n public data = new BehaviorSubject<string>('');\n\n constructor() {}\n}\n","import { NgModule } from '@angular/core';\nimport { ConfigLoginSettingsComponent } from './config-login-settings.component';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfirmationService } from 'primeng/api';\nimport { PermissionStore } from './@core/permissions/permission.store';\nimport { AlertService } from './@core/service/alert.service';\nimport { AppService } from './@core/service/app.service';\nimport { AuthGuard } from './@core/service/auth.guard';\nimport { AuthService } from './@core/service/auth.service';\nimport { AuthStore } from './@core/service/auth.store';\nimport { CredentialsService } from './@core/service/credentials.service';\nimport { DataStoreService } from './@core/service/data-store.service';\nimport { DynamicTabPageService } from './@core/service/dynamic-tab-page-service';\nimport { HttpService } from './@core/service/http.service';\nimport { LocalStorageService } from './@core/service/local-storage.service';\nimport { MicrostrategyService } from './@core/service/microstrategy.service';\nimport { PageHeaderService } from './@core/service/page-header.service';\nimport { ProfileService } from './@core/service/profile.service';\nimport { ThemeService } from './@core/service/theme.service';\nimport { PicsConfigLoginSettingsModule } from './pics-config-login-settings/pics-config-login-settings.module';\nimport { ConfigurationSettingsService } from './@core/service/configuration-settings.service';\nimport { AttachmentsService } from './@core/service/attachments.service';\nimport { ShareDataService } from './@core/service/share-data.service';\nimport { I18nService, PICS_I18N_TRANSLATIONS_PATH } from '@pics-core/common-utils';\n\n\n@NgModule({\n declarations: [\n ConfigLoginSettingsComponent\n ],\n imports: [\n PicsConfigLoginSettingsModule\n ],\n exports: [\n ConfigLoginSettingsComponent\n ],\n providers: [\n AuthService,\n AuthStore,\n AuthGuard,\n ProfileService,\n AppService,\n CredentialsService,\n DynamicTabPageService,\n LocalStorageService,\n MicrostrategyService,\n PageHeaderService,\n ThemeService,\n HttpClient,\n HttpService,\n AlertService,\n ConfirmationService,\n ConfigurationSettingsService,\n AttachmentsService,\n PageHeaderService,\n PermissionStore,\n ShareDataService,\n DataStoreService,\n { provide: PICS_I18N_TRANSLATIONS_PATH, useValue: '/assets/i18n/configsetting/configsetting' },\n I18nService\n ]\n})\nexport class CardiConfigLoginSettingsModule { }\n","import { Component, Inject, InjectionToken, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { RBACINFO } from './@core/urls/rbac-url.config';\n\nexport interface ConfigLoginHostContext {\n orgInfo: Observable<string | null>;\n permissions: { readonly state: Record<string, unknown> };\n authService: unknown;\n httpService: unknown;\n apiHost: string;\n environment: {\n mstrURL: string;\n applicationid: number;\n priority: number;\n n8nWorflowUrl: string;\n production: boolean;\n };\n}\n\nexport const CONFIG_LOGIN_HOST = new InjectionToken<ConfigLoginHostContext>('CONFIG_LOGIN_HOST');\n\n@Component({\n selector: 'pics-config-login-settings-host',\n template: `<config-login-settings\n [RBACORG]=\"rbacOrg\"\n [PERMISSION]=\"permission\"\n [configureEvent]=\"configureEvent$\">\n </config-login-settings>`,\n styleUrls: ['./config-login-settings-host.component.scss'],\n standalone: false\n})\nexport class ConfigLoginSettingsHostComponent implements OnDestroy {\n rbacOrg?: RBACINFO;\n permission?: Record<string, unknown>;\n readonly configureEvent$ = new BehaviorSubject<Record<string, unknown> | null>(null);\n private readonly orgSubscription: Subscription;\n\n constructor(@Inject(CONFIG_LOGIN_HOST) private readonly context: ConfigLoginHostContext) {\n this.orgSubscription = context.orgInfo.subscribe(orgId => {\n this.permission = context.permissions.state;\n this.rbacOrg = Object.assign(new RBACINFO(), {\n tokenKey: 'jwt-token',\n apiHost: context.apiHost,\n others: window.sessionStorage,\n orgID: orgId || window.sessionStorage.getItem('orgid'),\n environment: context.environment\n });\n this.configureEvent$.next({\n RBACORG: this.rbacOrg,\n PERMISSION: this.permission,\n AUTHSERVICE: context.authService,\n HTTPSERVICE: context.httpService\n });\n });\n }\n\n ngOnDestroy(): void {\n this.orgSubscription.unsubscribe();\n this.configureEvent$.complete();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CardiConfigLoginSettingsModule } from './config-login-settings.module';\nimport { ConfigLoginSettingsHostComponent } from './config-login-settings-host.component';\n\n@NgModule({\n declarations: [ConfigLoginSettingsHostComponent],\n imports: [\n CardiConfigLoginSettingsModule,\n RouterModule.forChild([{ path: '', component: ConfigLoginSettingsHostComponent }])\n ]\n})\nexport class ConfigLoginSettingsHostModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.DataSourceService","i3","i7","i2.PlatformSettingsService","i5","i6","i1","i2","AttachmentConfig","i1.HttpService","i1.AlertService","i4","i5.AlertComponent","i8","i9","i10","i11","i13.AlertComponent","i16.ConfigLoginPreviewComponent","ConfigLoginSettingsComponent","i1.PermissionStore","i2.DataStoreService","i4.ConfigLoginSettingsComponent","i2.CredentialsService","i2.HttpService","i2.AlertService","i3.PermissionStore","i4.DataStoreService","i1.ConfigLoginSettingsComponent"],"mappings":"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"}