@muraai/mnl-form 0.0.1-alpha-414eea7 → 0.0.1-alpha-f368a48

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":"muraai-mnl-form.mjs","sources":["../../../../projects/form-lib/src/lib/types/custom-input.component.ts","../../../../projects/form-lib/src/lib/wrappers/form-field-wrapper.component.ts","../../../../projects/form-lib/src/lib/validators/custom-email-validator.ts","../../../../projects/form-lib/src/lib/types/tabs.types.ts","../../../../projects/form-lib/src/lib/types/expansion-panel.types.ts","../../../../projects/form-lib/src/lib/types/grid.type.ts","../../../../projects/form-lib/src/lib/types/stepper.type.ts","../../../../projects/form-lib/src/lib/types/table.types.ts","../../../../projects/form-lib/src/lib/types/button.type.ts","../../../../projects/form-lib/src/lib/types/country-code-input.type.ts","../../../../projects/form-lib/src/lib/types/select-autocomplete.type.ts","../../../../projects/form-lib/src/lib/validators/phone-number-validator.ts","../../../../projects/form-lib/src/lib/confirmation-dialog/confirmation-dialog.component.ts","../../../../projects/form-lib/src/lib/confirmation-dialog/confirmation-dialog.component.html","../../../../projects/form-lib/src/lib/types/tabular-form-dialog.component.ts","../../../../projects/form-lib/src/lib/utils/formly.utils.ts","../../../../projects/form-lib/src/lib/types/view-file-dialog.component.ts","../../../../projects/form-lib/src/lib/types/tabular-form.type.ts","../../../../projects/form-lib/src/lib/types/multi-select-checkbox.component.ts","../../../../projects/form-lib/src/lib/validators/select-validator.ts","../../../../projects/form-lib/src/lib/validators/gst-validator.ts","../../../../projects/form-lib/src/lib/validators/pan-validator.ts","../../../../projects/form-lib/src/lib/types/formly-field-panel.type.ts","../../../../projects/form-lib/src/lib/wrappers/prefix-suffix-wrapper.component.ts","../../../../projects/form-lib/src/lib/wrappers/prefix-sufix-extension.component.ts","../../../../projects/form-lib/src/lib/wrappers/formly-wrapper-with-old-value.component.ts","../../../../projects/form-lib/src/lib/types/comments.type.ts","../../../../projects/form-lib/src/lib/types/radio.type.ts","../../../../projects/form-lib/src/lib/types/input.type.ts","../../../../projects/form-lib/src/lib/types/grid-formly-cell.component.ts","../../../../projects/form-lib/src/lib/types/action-button-renderer.component.ts","../../../../projects/form-lib/src/lib/types/grid-actionable.type.ts","../../../../projects/form-lib/src/lib/types/upload-file.ts","../../../../projects/form-lib/src/lib/types/custom-date.type.ts","../../../../projects/form-lib/src/lib/validators/normal-email-validator.ts","../../../../projects/form-lib/src/lib/types/scrollable-tabs.types.ts","../../../../projects/form-lib/src/lib/validators/npi-validator.ts","../../../../projects/form-lib/src/lib/validators/tinSsn-validator.ts","../../../../projects/form-lib/src/lib/validators/ein-validators.ts","../../../../projects/form-lib/src/lib/wrappers/form-field-description-wrapper.component.ts","../../../../projects/form-lib/src/lib/types/date-format.type.ts","../../../../projects/form-lib/src/lib/types/mu-helper-text.type.ts","../../../../projects/form-lib/src/lib/formly-lib/formly-standalone.module.ts","../../../../projects/form-lib/src/lib/services/scoring.service.ts","../../../../projects/form-lib/src/lib/formly-lib/formly-lib.component.ts","../../../../projects/form-lib/src/lib/formly-lib/formly-lib.component.html","../../../../projects/form-lib/src/lib/workflow-status/workflow-status.component.ts","../../../../projects/form-lib/src/lib/workflow-status/workflow-status.component.html","../../../../projects/form-lib/src/lib/workflow-status/ workflow-status.module.ts","../../../../projects/form-lib/src/public-api.ts","../../../../projects/form-lib/src/muraai-mnl-form.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\nimport { FormControl } from '@angular/forms';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'mu-formly-field-custom-input',\n standalone: true,\n imports: [CommonModule, MatInputModule, FormsModule, FormlyModule, ReactiveFormsModule, FormlyMaterialModule],\n template: `\n <input\n matInput\n *ngIf=\"to.type !== 'textarea'; else textarea\"\n [type]=\"to.type || 'text'\"\n [formControl]=\"control\"\n [formlyAttributes]=\"field\"\n class=\"form-control\"\n />\n <ng-template #textarea>\n <textarea\n matInput\n [formControl]=\"control\"\n [formlyAttributes]=\"field\"\n class=\"form-control\"\n ></textarea>\n </ng-template>\n `,\n})\nexport class CustomInputComponent extends FieldType {\n get control(): FormControl {\n return this.formControl as FormControl;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldWrapper, FormlyModule } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\n\n@Component({\n selector: 'mu-formly-wrapper-form-field',\n standalone: true,\n imports: [CommonModule, FormsModule, FormlyModule, ReactiveFormsModule, FormlyMaterialModule],\n template: `\n <label *ngIf=\"to.label\" [for]=\"id\">{{ to.label }}</label>\n <ng-container #fieldComponent></ng-container>\n <div *ngIf=\"showError\" class=\"invalid-feedback\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n `,\n})\nexport class FormFieldWrapperComponent extends FieldWrapper{\n\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function emailValidator(control: AbstractControl) {\n const value = control.value || '';\n const emailPattern = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/; // Simple email regex pattern\n const restrictedDomains = ['lupindiagnostics.com', 'lupin.com', 'atharvability.com', 'lupindigitalhealth.com'];\n\n if (!value || emailPattern.test(value)) {\n if (value) {\n const domain = value.substring(value.lastIndexOf('@') + 1).toLowerCase();\n if (restrictedDomains.includes(domain)) {\n return { restrictedDomain: true }; \n }\n }\n return null; \n } else {\n return { email: true };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, OnInit, ViewChild } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabChangeEvent, MatTabGroup, MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Router } from '@angular/router';\nimport { FieldType, FieldTypeConfig, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mu-formly-field-tabs',\n standalone: true,\n imports: [\n MatTabsModule,\n ReactiveFormsModule,\n FormlyModule,\n MatButtonModule,\n CommonModule,\n TranslateModule,\n MatIconModule,\n MatTooltipModule\n ],\n template: `\n <mat-tab-group #tabGroup (selectedTabChange)=\"onTabChange($event)\">\n @for(tab of field.fieldGroup; track tab; let i = $index; let last =\n $last){\n <mat-tab\n [disabled]=\"\n i !== 0 && !isValid(field.fieldGroup ? field.fieldGroup[i - 1] : {}) && tab?.props?.['disableTabs'] && this.showSubmitBtn\n \"\n *ngIf=\"!tab?.props?.['hideTab']\"\n >\n <ng-template mat-tab-label>\n <span [ngStyle]=\"{'color': (!isValid(field.fieldGroup ? field.fieldGroup[i] : {}) && options.formState?.showValidationError) ? 'red' : 'black'}\"\n [ngStyle]=\"{'color': getColorForTheTabChanged(tab)}\"\n >\n {{ tab?.props?.label || '' }}\n </span>\n <mat-icon matTooltip=\"{{'EDITED_TAB' | translate}}\" *ngIf=\"isTabDataChanged(tab) && !(!isValid(field.fieldGroup ? field.fieldGroup[i] : {}) && options.formState?.showValidationError)\" [ngStyle]=\"{'color': getColorForTheTabChanged(tab)}\">edit</mat-icon>\n <mat-icon matTooltip=\"{{'MANDATORY_FIELDS_TOOLTIP' | translate}}\" *ngIf=\"!isValid(field.fieldGroup ? field.fieldGroup[i] : {}) && options.formState?.showValidationError\" class=\"error-step\">error</mat-icon>\n </ng-template>\n <div class=\"relative overflow-y-auto overflow-x-hidden form-content\">\n <formly-field [field]=\"tab\"></formly-field>\n </div>\n @if(tab?.props?.['showNextPrevious']) {\n <div class=\"relative bottom-2 flex justify-end mr-2\">\n @if(i===0 && field.props['showBtnForPreviousForm']) {\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"goToPreviousForm(tabGroup)\"\n class=\"flex mr-2 ml-2 mt-5\"\n >\n {{ 'BUTTON.PREVIOUS' | translate }}\n </button>\n }\n @if (i !== 0) {\n <button\n mat-flat-button\n color=\"primary\"\n [disabled]=\"isFirstTab(tabGroup)\"\n type=\"button\"\n (click)=\"previousTab(tabGroup)\"\n class=\"flex mr-2 ml-2 mt-5\"\n >\n {{ 'BUTTON.PREVIOUS' | translate }}\n </button>\n } @if (!last) {\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n [disabled]=\"!isValid(tab) && showSubmitBtn\"\n (click)=\"nextTab(tabGroup)\"\n class=\"flex mt-5\"\n >\n {{ 'BUTTON.NEXT' | translate }}\n </button>\n }\n @if(last && showSubmitBtn) {\n <button\n mat-flat-button\n color=\"primary\"\n type=\"submit\"\n [disabled]=\"!form.valid\"\n class=\"flex mt-5 submit-btn\"\n >\n {{ field.props['SUBMIT_BTN_NAME'] | translate }}\n </button>\n }\n </div>\n }\n </mat-tab>\n }\n </mat-tab-group>\n `,\n styles: [`\n .error-step {\n color: #d32f2f !important;\n }\n `]\n})\nexport class FormlyFieldTabsComponent extends FieldType<FieldTypeConfig> implements OnInit {\n submittedData!: any[];\n\n router = inject(Router);\n user: any;\n @ViewChild('tabGroup') tabGroup!: MatTabGroup;\n showSubmitBtn = false;\n hideTab: boolean = false;\n\n nextTab(tabGroup: MatTabGroup) {\n if (tabGroup && tabGroup.selectedIndex != null) {\n const currentIndex = tabGroup.selectedIndex;\n if (currentIndex < (tabGroup._tabs?.length || 0) - 1) {\n tabGroup.selectedIndex = currentIndex + 1;\n }\n }\n }\n\n previousTab(tabGroup: MatTabGroup) {\n if (tabGroup && tabGroup.selectedIndex != null) {\n const currentIndex = tabGroup.selectedIndex;\n if (currentIndex > 0) {\n tabGroup.selectedIndex = currentIndex - 1;\n }\n }\n }\n\n isFirstTab(tabGroup: MatTabGroup): boolean {\n return tabGroup && tabGroup.selectedIndex === 0;\n }\n\n isLastTab(tabGroup: MatTabGroup): boolean {\n return tabGroup && tabGroup.selectedIndex === (tabGroup._tabs?.length || 0) - 1;\n }\n\n ngOnInit(): void {\n this.user = JSON.parse(localStorage.getItem('loggedInUser') || '{}');\n if(this.field.props?.['showSubmitBtnForStatus']?.length) {\n this.showSubmitBtn = this.field.props?.['showSubmitBtnForStatus'].find((role: any) => this.options.formState?.status == role) && !this.options.formState?.isReadonly;\n }\n }\n\n isValid(field: any): boolean {\n if (field.key) {\n if(field.props?.excludeValidation) {\n if(field.props?.minRowValidation) {\n return field.formControl.value[field.props?.minRowValidation].length > 0 ? true : false\n } else {\n return true;\n }\n }\n\n if(field.props?.uploadValidations?.length) {\n return field.props?.uploadValidations.every((uplField: any) => {\n let valid = true;\n if(Array.isArray(field.model[uplField]) && field.model[uplField]?.length) {\n valid = field.model[uplField]?.every(f => f.fileName ? !!f.nodeId : true);\n } else {\n valid = field.model[uplField]?.fileName ? !!field.model[uplField]?.nodeId : true;\n }\n return valid ? field?.formControl?.valid : false;\n });\n }\n return field?.formControl?.valid || false;\n } else {\n if(field.props?.excludeValidation) {\n if(field.props?.minRowValidation) {\n return field.formControl.value[field.props?.minRowValidation].length > 0 ? true : false\n } else {\n return true;\n }\n }\n }\n\n return field.fieldGroup\n ? field.fieldGroup.every((f: any) => this.isValid(f))\n : true;\n }\n\n onTabChange(event: MatTabChangeEvent): void {\n if (this.field && this.field.props?.['tabChange']) {\n this.field.props?.['tabChange'](event, this.field);\n }\n }\n\n goToPreviousForm(tabGroup: MatTabGroup) {\n if (this.field && this.field.props?.['formChange']) {\n this.field.props?.['formChange'](tabGroup, this.field);\n }\n }\n\n getTabHeightClass(): string {\n if (this.field.props?.['applyOldHeight']) {\n return '2xl:h-[61vh] xl:h-[60vh] md:h-[56vh]';\n }\n return '2xl:h-auto xl:h-auto md:h-auto';\n }\n\n getColorForTheTabChanged(tab: any) {\n let tabEditedColor = '#000000';\n if (!this.isValid(tab) && this.options.formState?.showValidationError) {\n tabEditedColor = '#ff0000';\n }\n if (this.options?.formState?.editedTabsStatus && this.options?.formState?.editedTabsStatus[tab?.key]) {\n tabEditedColor = '#ff0000'\n }\n return tabEditedColor;\n }\n\n isTabDataChanged(step: any): boolean {\n let isTabChanged = false;\n if (this.options?.formState?.editedTabsStatus && this.options?.formState?.editedTabsStatus[step?.key]) {\n isTabChanged = true;\n }\n return isTabChanged;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport {MatExpansionModule} from '@angular/material/expansion';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { FieldType, FormlyField, FormlyFieldConfig, FormlyFieldProps, FormlyForm, FormlyModule } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\n\n@Component({\n selector: 'mu-formly-field-expansion-panel',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatFormFieldModule,\n MatExpansionModule,\n MatIconModule,\n FormlyMaterialModule,\n FormlyModule,\n CommonModule\n ],\n template: `<mat-accordion class=\"example-headers-align\" multi>\n <mat-expansion-panel [expanded]=\"field?.props?.expanded || false\">\n <mat-expansion-panel-header [class]=\"[field?.props?.backgroundColor]\">\n <mat-panel-title [class]=\"[field?.props?.color]\"> {{field?.props?.label}} </mat-panel-title>\n <mat-panel-description [class]=\"[field?.props?.color]\">\n {{field?.props?.description ?? ''}}\n </mat-panel-description>\n </mat-expansion-panel-header>\n @for(fieldItem of field?.fieldGroup; track fieldItem){\n <formly-field [field]=\"fieldItem\"></formly-field>\n }\n </mat-expansion-panel>\n </mat-accordion>`\n})\n\nexport class FormlyFieldExpansionPanelComponent extends FieldType implements OnInit{\n override field : any= {};\n\n get expanded(): boolean {\n const conditionKey = this.field?.props?.collapseConditionKey;\n const conditionValue = this.field?.props?.collapseConditionValue; \n if (conditionKey && conditionValue !== undefined) {\n const currentValue = this.formControl?.value?.[conditionKey];\n return currentValue !== conditionValue; \n } \n return this.field?.props?.expanded || false;\n }\n \n set expanded(value: boolean) {\n if (this.field?.props) {\n this.field.props.expanded = value;\n }\n }\n\n ngOnInit() { \n this.formControl.valueChanges.subscribe(() => {\n this.expanded = this.expanded; \n });\n }\n\n isValid(field: FormlyFieldConfig): boolean {\n if (field.key) {\n return field?.formControl?.valid || true;\n }\n \n return field.fieldGroup ? field.fieldGroup.every((fieldItem) => this.isValid(fieldItem)) : true;\n }\n }","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FieldArrayType, FieldType, FormlyModule } from '@ngx-formly/core';\nimport { FirstDataRenderedEvent, GridOptions, ColDef, GridApi } from 'ag-grid-community';\nimport { CommonModule } from '@angular/common';\nimport { AgGridModule } from 'ag-grid-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { isObservable } from 'rxjs';\n\n\n@Component({\n selector: 'mu-formly-field-grid',\n standalone: true,\n imports: [CommonModule, AgGridModule, FormlyModule],\n template: `\n <div [ngStyle]=\"style\" >\n <ag-grid-angular\n style=\"width: 100%; height: 100%;\"\n class=\"ag-theme-alpine\"\n [rowData]=\"rowData || []\"\n [columnDefs]=\"columnDefs\"\n [defaultColDef]=\"defaultColDef\"\n [pagination]=\"true\"\n [gridOptions]=\"gridOptions\">\n </ag-grid-angular>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyFieldGridComponent extends FieldType implements OnInit {\n gridOptions!: GridOptions;\n style: any = {};\n rowData: any[] = [];\n columnDefs: ColDef[] = [];\n defaultColDef = {\n sortable: true,\n filter: true,\n resizable: true,\n flex: 1,\n minWidth: 150,\n wrapHeaderText: true,\n autoHeaderHeight: true\n };\n gridApi!: GridApi;\n constructor(private translateService: TranslateService) {\n super();\n }\n onGridReady(params: any): void {\n this.gridApi = params.api;\n }\n ngOnInit() {\n this.style = {\n width: this.props?.['width'],\n height: this.props?.['height'],\n };\n const gridOptions: GridOptions = this.props['gridOptions'] || {};\n gridOptions.context = {\n parentField: this.field,\n };\n gridOptions.suppressMovableColumns = true;\n this.gridOptions = gridOptions;\n this.columnDefs = [\n ...this.translateLabels(this.gridOptions?.['columnDefs'] as any[])\n ];\n\n const gridData = findNestedKey(this.field.parent?.model, this.field.key);\n this.rowData = Array.isArray(gridData) ? gridData : [];\n\n if(this.field.props?.['rowData']) {\n const rowData = this.field.props?.['rowData'];\n\n if (isObservable(rowData)) {\n rowData.pipe().subscribe((data: any[] = []) => {\n if (!data.length) {\n this.rowData = [];\n this.gridApi?.deselectAll();\n } else {\n this.rowData = [...data];\n this.gridApi?.deselectAll();\n }\n });\n } else if (Array.isArray(rowData)) {\n this.rowData = [...rowData];\n }\n }\n }\n\n onFirstDataRendered(params: FirstDataRenderedEvent) {\n params.api.sizeColumnsToFit();\n }\n\n translateLabels(\n columnDefs: any[]\n ): any[] {\n return columnDefs.map((column) => {\n return {\n ...column,\n headerName: this.translateService.instant(column.headerName)\n }\n })\n }\n}\n\nfunction findNestedKey(obj: any, targetKey: any): any {\n for (const key in obj) {\n if (key === targetKey) return obj[key];\n if (typeof obj[key] === 'object') {\n const result = findNestedKey(obj[key], targetKey);\n if (result) return result;\n }\n }\n return undefined;\n}","import { AfterViewInit, Component, inject, OnInit, ViewChild } from \"@angular/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatStepperModule } from \"@angular/material/stepper\";\nimport { FieldType, FormlyModule } from \"@ngx-formly/core\";\nimport { Router } from \"@angular/router\";\nimport { CommonModule } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { StepperSelectionEvent } from \"@angular/cdk/stepper\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { FormGroup } from \"@angular/forms\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\n@Component({\n selector: \"mu-formly-field-stepper\",\n standalone: true,\n imports: [MatStepperModule, FormlyModule, MatButtonModule, TranslateModule, CommonModule,TranslateModule, MatTooltipModule, MatIconModule],\n template: `\n <mat-horizontal-stepper [linear]=\"isLinear\" [selectedIndex]=\"selectedStepIndex\" [ngClass]=\"[field?.props?.className]\" (selectionChange)=\"onStepChange($event)\">\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\n {{index +1}}\n </ng-template>\n @for(step of field.fieldGroup; track step; let index = $index; let last =\n $last){\n <mat-step [completed]=\"isValid(step)\" [ngClass]=\"{ 'error-step': !isValid(step) }\">\n <ng-template matStepLabel>\n <div [ngStyle]=\"{'color': (!isValid(step) && options.formState?.showValidationError) ? 'red' : 'black'}\" class=\"whitespace-normal break-words flex items-center\">\n <span class=\"stepper-label\" [ngStyle]=\"{'color': getColorForTheTabChanged(step)}\">{{ step?.props?.label }}</span>\n <mat-icon matTooltip=\"{{'EDITED_TAB' | translate}}\" *ngIf=\"isTabDataChanged(step) && !(!isValid(step) && options.formState?.showValidationError)\" [ngStyle]=\"{'color': getColorForTheTabChanged(step)}\">edit</mat-icon>\n <mat-icon matTooltip=\"{{'MANDATORY_FIELDS_TOOLTIP' | translate}}\" *ngIf=\"!isValid(step) && options.formState?.showValidationError\" class=\"error-step\">error</mat-icon>\n </div>\n </ng-template>\n <div class=\"2xl:h-[80vh] xl:h-full md:h-[125vh] overflow-y-auto\">\n <formly-field [field]=\"step\"></formly-field>\n <div class=\"mt-4 flex\">\n @if (index !== 0) {\n <button mat-flat-button color=\"primary\" matStepperPrevious type=\"button\" class=\"flex mr-2 ml-2\">\n {{ 'BUTTON.PREVIOUS' | translate }}\n </button>\n }\n @if (!last) {\n <button matStepperNext mat-flat-button color=\"primary\" type=\"button\" class=\"flex mr-2 ml-2\">\n {{ 'BUTTON.NEXT' | translate }}\n </button>\n }\n @if (last) {\n <div class=\"flex justify-around items-center\">\n <button mat-flat-button color=\"primary\" (click)=\"onApprove()\" *ngIf=\"model.id\" type=\"button\">\n {{ 'BUTTON.APPROVE' | translate}}\n </button>\n <button mat-flat-button color=\"primary\" (click)=\"onReject()\" *ngIf=\"model.id\" type=\"button\">\n {{ 'BUTTON.REJECT' | translate}}\n </button>\n </div>\n }\n </div>\n </div>\n </mat-step>\n }\n</mat-horizontal-stepper>\n `,\n styles: [`\n .stepper-label {\n margin-top: 2px;\n margin-right: 2px;\n }\n .error-step {\n color: #d32f2f !important;\n }\n ::ng-deep mat-step-header[aria-selected='true'] {\n background-color: #E5E4E2 !important;\n border-radius: 12px !important;\n }\n ::ng-deep mat-step-header:hover:not([aria-disabled]) {\n background: #E5E4E2 !important;\n }\n @media (max-width: 640px) {\n ::ng-deep .mat-horizontal-stepper-header-container {\n display: flex;\n overflow-x: auto;\n white-space: nowrap;\n width: 100% !important; \n max-width: 100vw; \n padding-bottom: 5px; \n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none;\n -ms-overflow-style: auto;\n }\n\n ::ng-deep .mat-horizontal-stepper-header-container::-webkit-scrollbar {\n height: 4px;\n display: none;\n }\n\n ::ng-deep .mat-horizontal-stepper-header-container::-webkit-scrollbar-thumb {\n background-color: #888;\n border-radius: 4px;\n }\n\n ::ng-deep .mat-horizontal-stepper-header {\n flex: 0 0 auto;\n }\n}\n `],\n})\nexport class FormlyFieldStepperComponent extends FieldType implements OnInit, AfterViewInit {\n router = inject(Router);\n isLinear = false;\n selectedStepIndex = 0;\n\n ngOnInit(): void {\n const selectedIndex = this.field.fieldGroup?.findIndex(step => step.props?.['selectedIndex']) ?? 0;\n this.selectedStepIndex = (selectedIndex > -1) ? selectedIndex : 0;\n }\n\n ngAfterViewInit() {\n this.scrollToTop();\n }\n\n isValid(field: any): boolean {\n if (field.key) {\n let excludeValidationFlag = true;\n if(field.props?.excludeValidation) {\n if(field.props?.minRowValidation) {\n excludeValidationFlag = field.model[field.props?.minRowValidation]?.length > 0 ? true : false\n } else {\n excludeValidationFlag = true;\n }\n }\n let minRowValidationFlag = true;\n if(field.props?.minRowValidation) {\n minRowValidationFlag = field.model[field.props?.minRowValidation]?.length > 0 ? true : false;\n }\n\n let uploadFilesValidation = true;\n if(field.props?.uploadValidations?.length) {\n uploadFilesValidation = field.props?.uploadValidations.every((uplField: any) => {\n let valid = true;\n if(Array.isArray(field.model[uplField]) && field.model[uplField]?.length) {\n valid = field.model[uplField]?.every(f => f.fileName ? !!f.nodeId : true);\n } else {\n valid = field.model[uplField]?.fileName ? !!field.model[uplField]?.nodeId : true;\n }\n return valid ? true : false;\n });\n }\n if(field.props?.skipFormValidations) { \n if(excludeValidationFlag && minRowValidationFlag && uploadFilesValidation) {\n if(!field?.formControl?.valid) {\n const controlsList = field?.formControl?.controls;\n delete controlsList[field.props?.minRowValidation];\n if(controlsList[field.props?.skipFormValidations]) delete controlsList[field.props?.skipFormValidations];\n const checkValidity = (controls: Record<string, any>): boolean => {\n return Object.values(controls).every(control => control.valid);\n };\n const isFormValid = checkValidity(controlsList);\n return isFormValid;\n } else {\n return field?.formControl?.valid || field?.props?.excludeValidation;\n }\n } else {\n return false;\n }\n }\n \n return (excludeValidationFlag && minRowValidationFlag && uploadFilesValidation) \n ? (field?.formControl?.valid || field?.props?.excludeValidation) \n : false;\n }\n return field.fieldGroup\n ? field.fieldGroup.every((f: any) => this.isValid(f))\n : true;\n }\n\n onApprove() {\n // TODO: add logic for approve\n }\n\n onReject() {\n // TODO: add logic for reject\n }\n\n onStepChange(event: StepperSelectionEvent) {\n this.scrollToTop();\n if (this.field && this.field.props?.['stepChange']) {\n this.field.props?.['stepChange'](event, this.field);\n }\n }\n\n removeValidationsForTabularFormFields(fields: any) {\n if(fields.fieldGroup) {\n for (const field of fields.fieldGroup) {\n if(field.type === 'mu-tabular-form') {\n if(field.fieldGroup[0]?.fieldGroup) {\n field.fieldGroup[0].fieldGroup.forEach((field: any) => {\n if(field.fieldGroup) {\n field.fieldGroup.forEach((f: any) => this.rmvValidity(f))\n this.rmvValidity(field.fieldGroup)\n } else {\n this.rmvValidity(field)\n }\n })\n }\n }\n if(field.fieldGroup) {\n this.removeValidationsForTabularFormFields(field.fieldGroup);\n }\n }\n } else {\n for (const field of fields) {\n if(field.type === 'mu-tabular-form') {\n if(field.fieldGroup[0]?.fieldGroup) {\n field.fieldGroup[0].fieldGroup.forEach((field: any) => {\n if(field.fieldGroup) {\n field.fieldGroup.forEach((f: any) => this.rmvValidity(f))\n this.rmvValidity(field.fieldGroup)\n } else {\n this.rmvValidity(field)\n }\n })\n }\n }\n if(field.fieldGroup) {\n this.removeValidationsForTabularFormFields(field.fieldGroup);\n }\n }\n }\n \n }\n\n rmvValidity(field: any) {\n if (field.formControl || this.form.get(field.key)) {\n field.formControl?.setValidators([]);\n field.formControl?.updateValueAndValidity();\n (this.form as FormGroup).removeControl(field.key);\n }\n }\n\n scrollToTop() {\n setTimeout(() => {\n const stepperContainer = document.querySelector('.mat-horizontal-content-container');\n if (stepperContainer) {\n stepperContainer.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }, 100);\n }\n\n getColorForTheTabChanged(step: any) {\n let tabEditedColor = '#000000';\n if (!this.isValid(step) && this.options.formState?.showValidationError) {\n tabEditedColor = '#ff0000';\n }\n if (this.options?.formState?.editedTabsStatus && this.options?.formState?.editedTabsStatus[step?.key]) {\n tabEditedColor = '#ff0000'\n }\n return tabEditedColor;\n }\n\n isTabDataChanged(step: any): boolean {\n let isTabChanged = false;\n if (this.options?.formState?.editedTabsStatus && this.options?.formState?.editedTabsStatus[step?.key]) {\n isTabChanged = true;\n }\n return isTabChanged;\n }\n}","import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';\nimport { FieldArrayType, FieldType, FormlyModule } from '@ngx-formly/core';\nimport {MatTableDataSource, MatTableModule} from '@angular/material/table';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { MatSort, Sort, MatSortModule } from '@angular/material/sort';\nimport {MatPaginator, MatPaginatorModule} from '@angular/material/paginator';\n\n@Component({\n selector: 'mu-selector-name',\n standalone: true,\n imports: [\n MatTableModule,\n FormlyMaterialModule,\n FormlyModule,\n MatSortModule,\n MatPaginatorModule\n ],\n template: `\n \n <table mat-table [dataSource]=\"data\" matSort class=\"mat-elevation-z8\">\n @for (column of displayedColumns; track column) {\n <ng-container [matColumnDef]=\"column\">\n <th mat-header-cell mat-sort-header *matHeaderCellDef> {{column}} </th>\n <td mat-cell *matCellDef=\"let element\"> {{element[column]}} </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnsToDisplay;\"></tr>\n </table>\n <mat-paginator [pageSizeOptions]=\"[5, 10, 25, 100]\" aria-label=\"Select page of users\"></mat-paginator>\n `\n})\n\nexport class FormlyFieldTableComponent extends FieldArrayType implements OnInit, AfterViewInit {\n displayedColumns: string[] = [];\n columnsToDisplay: string[] = [];\n data = new MatTableDataSource([]);\n @ViewChild(MatPaginator) paginator!: MatPaginator;\n\n @ViewChild(MatSort) sort!: MatSort;\n\n ngAfterViewInit() {\n this.data.paginator = this.paginator;\n\n this.data.sort = this.sort;\n }\n \n ngOnInit() {\n this.data = new MatTableDataSource(this.field.props['gridOptions']?.data);\n this.displayedColumns = this.field.props['gridOptions']?.columnDefs;\n this.columnsToDisplay = this.displayedColumns.slice();\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FieldType } from '@ngx-formly/core';\n\n@Component({\n selector: 'mu-formly-field-button',\n standalone: true,\n imports: [CommonModule, FormsModule, MatButtonModule, MatIconModule, MatTooltipModule],\n template: `\n <button mat-flat-button \n type=\"button\"\n [disabled]=\"to.disabled\"\n (click)=\"onClick()\"\n [ngClass]=\"{'required-btn': to['showStarMark']}\"\n class=\"btn btn-primary flex items-center\"\n [matTooltip]=\"to.label\"\n >\n <mat-icon *ngIf=\"to?.['icon']\">{{ to['icon'] }}</mat-icon>\n {{ to.label }}\n <span *ngIf=\"to['showStarMark']\">*</span>\n </button>\n <div *ngIf=\"to['showHint']\" class=\"text-gray-500 mt-1 ml-6\">{{ to['showHint'] }}</div>\n <div *ngIf=\"to['showNote']\"\n class=\"text-gray-500 mt-1 ml-6 w-[520px] leading-none\" \n [innerHTML]=\"to['showNote']\">\n </div>\n <div *ngIf=\"to['showAuditRespone']\"\n class=\"text-gray-500 mt-1 ml-2 w-[520px] leading-none\"\n [ngClass]=\"to['responseColor']\"\n [innerHTML]=\"to['showAuditRespone']\">\n </div>\n `,\n styles: [\n `\n .required-btn {\n background-color: red !important;\n }\n `\n ]\n})\nexport class FormlyButtonComponent extends FieldType {\n onClick() {\n if (this.to['onClick']) {\n this.to['onClick']();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FieldTypeConfig, FormlyModule } from '@ngx-formly/core';\nimport { FieldType, FormlyMaterialModule } from '@ngx-formly/material';\nimport { map, Observable, of, startWith } from 'rxjs';\n\n@Component({\n selector: 'mu-country-code-phone',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n FormlyModule,\n FormlyMaterialModule,\n MatAutocompleteModule,\n MatTooltipModule\n ],\n host: {\n class: 'w-full grid'\n },\n template: `\n <div class=\"flex flex-nowrap items-center gap-3 w-full\">\n <mat-form-field appearance=\"outline\" [ngStyle]=\"{'width': to['codeWidth'] || '20%'}\">\n <mat-label matTooltip=\"Country Code\">Code</mat-label>\n <input\n type=\"text\"\n matInput\n [readonly]=\"to.readonly || to.disabled || to['disableCountryCode']\"\n [required]=\"to.required || false\"\n [disabled]=\"to.disabled || to['disableCountryCode'] || false\"\n [formControl]=\"hourCtrl\"\n [matAutocomplete]=\"autoHour\"\n (input)=\"onCountryCodeChange()\"\n (blur)=\"validateInput()\"\n />\n <mat-autocomplete #autoHour=\"matAutocomplete\" (optionSelected)=\"onCountryCodeChange()\">\n <mat-option\n *ngFor=\"let hour of filteredHours$ | async\"\n [value]=\"hour\"\n >\n {{ hour }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <mat-form-field appearance=\"outline\" [ngStyle]=\"{'width': to['phoneNumberWidth'] || '75%'}\">\n <mat-label>{{to.label}}</mat-label>\n <input\n fxFlex\n matInput\n [type]=\"to.type || 'number'\"\n [required]=\"to.required || false\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"to.placeholder ?? ''\"\n [readonly]=\"to.readonly\"\n [disabled]=\"to.disabled || false\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (input)=\"onInput()\"\n />\n </mat-form-field>\n </div>\n <mat-error *ngIf=\"formControl.invalid && formControl.touched\">\n {{ field.validation?.messages?.['required'] || field.validation?.messages?.['phoneValidation']}}\n </mat-error>\n `,\n styles: `\n .vertical-line {\n display: inline-block;\n width: 1px;\n height: 18px;\n background-color: #000;\n margin-top: 3px;\n margin-right: 8px;\n vertical-align: middle;\n}\n `\n})\nexport class FormlyFieldCountryCodeComponent extends FieldType<FieldTypeConfig> implements OnInit{\n isFocused = false;\n hasValue = false;\n hourCtrl = new FormControl('');\n hours: string[] = [];\n filteredHours$!: Observable<string[]>;\n\n get control(): FormControl {\n return this.formControl as FormControl;\n }\n\n ngOnInit(): void {\n this.loadCountryCodes();\n this.hasValue = (this.control.value !== '' && this.control.value !== undefined); \n }\n onFocus() {\n this.isFocused = true;\n this.hasValue = (this.control.value !== '' && this.control.value !== undefined);\n }\n\n onBlur() {\n this.isFocused = false;\n this.hasValue = (this.control.value !== '' && this.control.value !== undefined);\n }\n\n onInput() {\n this.hasValue = (this.control.value !== '' && this.control.value !== undefined);\n }\n\n private _filter(options: string[], value: string): string[] {\n const filterValue = (value || '').toLowerCase();\n return options?.filter((option) =>\n option.toLowerCase().includes(filterValue)\n );\n }\n\n onCountryCodeChange() {\n if (this.field && this.field.props?.['countryCodeChange']) {\n this.field.props?.['countryCodeChange'](event, this.hourCtrl.value, this.field);\n }\n }\n\n async loadCountryCodes() {\n this.hours = await this.options.formState.getCountryCodesApi;\n this.filteredHours$ = this.hourCtrl.valueChanges.pipe(\n startWith(this.hourCtrl.value || ''),\n map((value: any) => this._filter(this.hours, value))\n );\n this.hourCtrl.setValue(this.field.model?.['countryCode']);\n if(!this.hourCtrl.value) {\n this.hourCtrl.setValue(this.to['countryCode'] || '+91')\n }\n }\n\n validateInput() {\n const options$ = Array.isArray(this.hours) ? of(this.hours) : this.hours || of([]);\n options$.subscribe((options) => {\n const isValidOption = options.some((option) => option.split('+')[1] === (this.hourCtrl.value?.includes('+') ? this.hourCtrl.value?.split('+')[1] : this.hourCtrl.value));\n if (!isValidOption) {\n this.hourCtrl.setValue('');\n }\n });\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { FieldType, FormlyFieldConfig, FormlyModule } from '@ngx-formly/core';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport {\n catchError,\n debounceTime,\n distinctUntilChanged,\n map,\n shareReplay,\n startWith,\n switchMap,\n take,\n} from 'rxjs/operators';\n\n@Component({\n selector: 'mu-select-autocomplete',\n standalone: true,\n template: `\n <mat-form-field\n class=\"w-full\"\n [appearance]=\"field?.props?.appearance || 'outline'\"\n >\n <mat-label *ngIf=\"!field?.props?.['dontShowLabel']\">{{\n field?.props?.label\n }}</mat-label>\n <input\n class=\"inputField\"\n matInput\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"field?.props?.placeholder || field?.props?.label\"\n (blur)=\"onBlur()\"\n [matAutocomplete]=\"auto\"\n />\n <ng-container matSuffix>\n <span\n *ngIf=\"!field?.props?.readonly && !field?.props?.disabled\"\n class=\"cursor-pointer relative right-[20px] span-class\"\n (click)=\"clearSearchedInput()\"\n >\n <mat-icon class=\"suffixClear\">clear</mat-icon>\n </span>\n\n <div\n class=\"absolute inset-y-0 right-1 flex items-center pointer-events-none\"\n >\n <svg\n class=\"w-4 h-4 text-gray-500\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n </div>\n </ng-container>\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\">\n <mat-option\n *ngFor=\"let option of filteredOptions$ | async\"\n [value]=\"option.value\"\n >\n {{ option.label }}\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"formControl.invalid && formControl.touched\">\n {{ field.validation?.messages?.['required'] }}\n </mat-error>\n </mat-form-field>\n `,\n styles: `\n .suffixClear {\n height: 17px;\n width: 17px;\n font-size: 17px;\n }\n .span-class {\n border-radius: 10px;\n height: 16px;\n width: 16px;\n display: flex;\n }\n .inputField{\n width: calc(100% - 17px);\n }\n `,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormlyModule,\n MatFormFieldModule,\n MatInputModule,\n MatAutocompleteModule,\n MatIconModule,\n ],\n})\nexport class FormlySelectAutocompleteComponent\n extends FieldType<FormlyFieldConfig>\n implements OnInit\n{\n public filteredOptions$: Observable<any>;\n protected optionsList: any[] = [];\n\n ngOnInit() {\n const debounce = this.field?.props?.debounceTime || 300;\n const fetchOnce = this.field?.props?.fetchOnce === undefined ? true : this.field.props.fetchOnce;\n if (\n this.field?.props?.apiFunction &&\n typeof this.field?.props?.apiFunction === 'function'\n ) {\n if (fetchOnce) {\n this.field?.props\n ?.apiFunction('')\n .pipe(\n catchError((error) => {\n console.error('API Error:', error);\n return of([]);\n })\n )\n .subscribe((results: any[]) => {\n this.optionsList = results || [];\n\n this.filteredOptions$ = this.formControl.valueChanges.pipe(\n startWith(''),\n debounceTime(debounce),\n distinctUntilChanged(),\n map((searchTerm: string) =>\n this.filterOptions(searchTerm, this.optionsList)\n )\n );\n });\n } else {\n this.filteredOptions$ = this.formControl.valueChanges.pipe(\n startWith(''),\n debounceTime(debounce),\n distinctUntilChanged(),\n switchMap((searchTerm: any) => {\n return this.field?.props?.apiFunction(searchTerm).pipe(\n map((results: any[]) => {\n this.optionsList = results || [];\n return results || [];\n }),\n catchError((error) => {\n console.error('API Error:', error);\n return of([]);\n })\n );\n })\n );\n }\n } else {\n const options$ =\n this.field?.props?.options instanceof Observable\n ? this.field?.props?.options.pipe(shareReplay(1))\n : of(this.field?.props?.options || []);\n\n options$.pipe(take(1)).subscribe((opts) => {\n this.optionsList = opts || [];\n if (this.formControl.value != null) {\n this.formControl.setValue(this.formControl.value);\n }\n });\n options$.subscribe((opts) => (this.optionsList = opts || []));\n\n this.filteredOptions$ = combineLatest([\n options$,\n this.formControl.valueChanges.pipe(\n startWith(''),\n debounceTime(debounce)\n ),\n ]).pipe(map(([options, value]) => this.filterOptions(value, options)));\n }\n }\n\n displayFn = (value: any): string => {\n if (value == null) {\n return '';\n }\n const match = this.optionsList.find((opt) => {\n const optValue = opt.value != null ? opt.value : opt;\n return optValue === value;\n });\n if (!match) {\n return String(value);\n }\n return match.label != null ? match.label : String(match.value);\n };\n\n onBlur() {\n const value = this.formControl.value;\n if (!value) {\n this.formControl.setValue(null);\n this.formControl.markAsTouched();\n return;\n }\n if (typeof value === 'string') {\n const match = this.optionsList.find((opt) => {\n const label = opt.label?.toString().toLowerCase();\n const val = opt.value?.toString().toLowerCase();\n const input = value.toLowerCase();\n return label === input || val === input;\n });\n if (match) {\n this.formControl.setValue(match.value ?? match);\n } else {\n this.formControl.setValue(null);\n }\n }\n this.formControl.markAsTouched();\n }\n\n private filterOptions(value: any, options: any[]): any[] {\n if (!options) {\n return [];\n }\n if (!value) {\n return options.slice();\n }\n const filterValue = String(value).toLowerCase();\n return options.filter((opt) => {\n const label = opt.label != null ? String(opt.label) : '';\n const valStr = opt.value != null ? String(opt.value) : '';\n return (\n label.toLowerCase().includes(filterValue) ||\n valStr.toLowerCase().includes(filterValue)\n );\n });\n }\n\n clearSearchedInput() {\n this.formControl.setValue('');\n }\n}\n","import { AbstractControl } from '@angular/forms';\nimport * as libphonenumber from 'google-libphonenumber';\n\nexport function phoneValidation(control: AbstractControl, fields: any) {\n if (!control?.value) {\n return null;\n }\n\n const originalInput = control.value\n if (/[A-Za-z]/.test(originalInput)) {\n return { phoneValidation: true };\n }\n const phoneUtil = libphonenumber.PhoneNumberUtil.getInstance();\n\n const countryShrtHnd = fields?.props?.countryShrtHnd || 'US';\n try {\n const phoneNumber = phoneUtil.parse(control.value, countryShrtHnd);\n return phoneUtil.isValidNumber(phoneNumber)\n ? null\n : { phoneValidation: true };\n } catch (e) {\n return { phoneValidation: false };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonsModule } from '@muraai/mnl-commons';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mu-confirm-dialog',\n standalone: true,\n imports: [CommonsModule, CommonModule, TranslateModule, MatDialogModule, MatButtonModule,MatIconModule],\n templateUrl: './confirmation-dialog.component.html',\n styleUrl: './confirmation-dialog.component.scss',\n})\nexport class ConfirmationDialogComponent {\n constructor(\n public dialogRef: MatDialogRef<ConfirmationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: { title: string, message: string, showOk: boolean }\n ) {}\n\n onNoClick(): void {\n this.dialogRef.close(false);\n }\n\n onYesClick(): void {\n this.dialogRef.close(true);\n }\n}\n","<div class=\"w-full overflow-hidden h-full\">\n<div class='text-xl mt-2 ml-3'>\n <p >{{'CONFIRMATION_DIALOG.CONFIRMATION' | translate}}</p>\n</div>\n <mat-dialog-content>\n <div class=\"iconText\">\n <mat-icon class=\"mt-1 ml-2 mr-3\">error_outline</mat-icon>\n <h1 class=\"title\" [innerHTML]=\"data.title | translate\"></h1>\n </div>\n <div mat-dialog-content>\n <p>{{ data.message | translate }}</p>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n @if (data.showOk) {\n <button mat-button class=\"flex justify-center\" (click)=\"onYesClick()\">{{'CONFIRMATION_DIALOG.OK' | translate}}</button>\n } @else {\n <button mat-button class=\"flex justify-center\" (click)=\"onNoClick()\">{{'CONFIRMATION_DIALOG.NO' | translate}}</button>\n <button mat-button color=\"primary\" (click)=\"onYesClick()\">{{'CONFIRMATION_DIALOG.YES' | translate}}</button>\n }\n </mat-dialog-actions>\n</div>\n","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, ElementRef, EventEmitter, inject, Inject, Output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FormlyFormBuilder, FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { NgxSpinnerModule } from 'ngx-spinner';\nimport { forkJoin, of, take } from 'rxjs';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\nimport { CustomFormlyFieldConfig } from '../models/custom-form-field.model';\n\n@Component({\n selector: 'mu-app-add-data-dialog',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatSelectModule, MatRadioModule, MatCheckboxModule,\n MatDialogModule, FormlyModule, TranslateModule, MatButtonModule, NgxSpinnerModule\n ],\n template: `\n <h1 mat-dialog-title>{{ dialogLabel | translate}}</h1>\n <div mat-dialog-content class=\"min-h-max !pt-1 !flex\">\n <formly-form\n [ngStyle]=\"{'width': (propsOfDialog && propsOfDialog?.viewDocSideBySide && !isMobileDevice) ? '50%' : ''}\"\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n (modelChange)=\"onModelChange($event)\"\n ></formly-form>\n <iframe id=\"dialogIframe\" *ngIf=\"propsOfDialog && propsOfDialog?.viewDocSideBySide && !isMobileDevice\" [ngStyle]=\"{'width': (propsOfDialog && propsOfDialog?.viewDocSideBySide && !isMobileDevice) ? '50%' : ''}\" frameborder=\"0\"></iframe>\n </div>\n <div mat-dialog-actions>\n <button mat-button (click)=\"onCancel()\">{{'TABULAR_FORM_DIALOG.CANCEL' | translate}}</button>\n <button mat-button *ngIf=\"!selectedRowData && !propsOfDialog.hideSaveAndAddNew\" (click)=\"onSaveAddNew()\" [disabled]=\"form.invalid || !isFilesUploaded()\">{{'TABULAR_FORM_DIALOG.SAVE_AND_NEW' | translate}}</button>\n <button mat-button *ngIf=\"!selectedRowData\" (click)=\"onSave()\" [disabled]=\"form.invalid || !isFilesUploaded()\">{{'TABULAR_FORM_DIALOG.ADD' | translate}}</button>\n <button mat-button *ngIf=\"selectedRowData && !data.hideUpdateBtn\" (click)=\"onSave()\" [disabled]=\"form.invalid || !isFilesUploaded()\">{{'TABULAR_FORM_DIALOG.EDIT' | translate}}</button>\n </div>\n <ngx-spinner name=\"tabular-dialog\" bdColor=\"rgba(0, 0, 0, 0.2)\" size=\"medium\" color=\"#fff\" template=\"<img src='assets/images/lupin-icongif.gif' style='height: 70px !important;'/>\"\n [fullScreen]=\"true\">\n </ngx-spinner>\n `\n})\nexport class TabularFormDialogComponent {\n form = new FormGroup({});\n fieldConfig: any[];\n fields!: CustomFormlyFieldConfig[];\n model: any;\n options: any;\n dialogLabel= '';\n @Output() saveData = new EventEmitter<any>();\n selectedRowData:any;\n destroyRef = inject(DestroyRef);\n propsOfDialog: any;\n parentModel: any;\n isMobileDevice = false;\n\n constructor(\n public dialogRef: MatDialogRef<TabularFormDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private formlyBuilder: FormlyFormBuilder,\n private translateService: TranslateService,\n private matDialog: MatDialog,\n private hostElement: ElementRef,\n private breakpointObserver: BreakpointObserver,\n ) {\n this.breakpointObserver?.observe([Breakpoints.Handset]).pipe(takeUntilDestroyed(this.destroyRef)).subscribe((result) => {\n this.isMobileDevice = result?.matches;\n });\n this.fieldConfig = data.fieldConfig;\n this.selectedRowData = data.selectedRowData;\n if (data?.selectedRowData) {\n this.model = data?.selectedRowData;\n }\n this.propsOfDialog = data.tabularProps;\n this.dialogLabel = data.label;\n this.fields = this.translateFormConfig(data.fieldConfig);\n this.options = {\n ...this.options,\n formState: data?.formState\n }\n this.parentModel = data?.parentModel;\n\n this.formlyBuilder.buildForm(this.form, this.fields, this.model, this.options);\n this.updateDependentFieldsFullName(this.fields);\n }\n\n\n private resetForm(): void {\n this.form.reset();\n }\n\n onSave(): void {\n if (this.form.valid) {\n if (this.fields[0]?.confirmationDialogProps?.length) {\n const confirmationDialogs = this.fields[0].confirmationDialogProps\n .filter((confirmationDialogProp: any) => confirmationDialogProp?.enableConfirmation)\n .map((confirmationDialogProp: any) => {\n if (\n !confirmationDialogProp?.enableConfirmationDialogForRoles?.length ||\n confirmationDialogProp?.enableConfirmationDialogForRoles?.some((role: string) => this.options?.formState?.userRoles?.includes(role))\n ) {\n if(confirmationDialogProp?.showForChangeRequestOnly) {\n if(this.options.formState.showOldValues) {\n const dialogRef = this.matDialog.open(ConfirmationDialogComponent, {\n minWidth:confirmationDialogProp?.['minWidth'] ?? '40%',\n maxWidth: confirmationDialogProp?.['maxWidth'] ?? '100%',\n minHeight: confirmationDialogProp?.['minHeight'] ?? '30%',\n maxHeight: confirmationDialogProp?.['maxHeight'] ?? '40%',\n data: {\n title: this.translateService.instant(confirmationDialogProp?.data?.title),\n showOk: true\n },\n disableClose: true\n });\n\n return dialogRef.afterClosed().pipe(take(1));\n }\n } else {\n const dialogRef = this.matDialog.open(ConfirmationDialogComponent, {\n width: confirmationDialogProp?.['width'] ?? '30%',\n minHeight: confirmationDialogProp?.['minHeight'] ?? '30%',\n maxHeight: confirmationDialogProp?.['maxHeight'] ?? '40%',\n data: {\n title: this.translateService.instant(confirmationDialogProp?.data?.title),\n showOk: true\n },\n disableClose: true\n });\n\n return dialogRef.afterClosed().pipe(take(1));\n }\n }\n return of(true);\n });\n\n if (confirmationDialogs.length) {\n forkJoin(confirmationDialogs)\n .pipe(take(1))\n .subscribe(() => {\n this.dialogRef.close({\n ...this.model,\n ...this.form.value,\n });\n });\n } else {\n this.dialogRef.close({\n ...this.model,\n ...this.form.value,\n });\n }\n } else {\n this.dialogRef.close({\n ...this.model,\n ...this.form.value,\n });\n }\n }\n }\n\n onCancel(): void {\n this.dialogRef.close();\n }\n\n onSaveAddNew(): void {\n if (this.form.valid) {\n const dataToSave = {\n ...this.model,\n ...this.form.getRawValue(),\n };\n\n if (this.fields[0]?.confirmationDialogProps?.length) {\n const confirmationDialogs = this.fields[0].confirmationDialogProps\n .filter(\n (confirmationDialogProp: any) =>\n confirmationDialogProp?.enableConfirmation\n )\n .map((confirmationDialogProp: any) => {\n if (\n !confirmationDialogProp?.enableConfirmationDialogForRoles\n ?.length ||\n confirmationDialogProp?.enableConfirmationDialogForRoles?.some(\n (role: string) =>\n this.options?.formState?.userRoles?.includes(role)\n )\n ) {\n if (confirmationDialogProp?.showForChangeRequestOnly) {\n if (this.options.formState.showOldValues) {\n const dialogRef = this.matDialog.open(\n ConfirmationDialogComponent,\n {\n width: confirmationDialogProp?.['width'] ?? '30%',\n minHeight: confirmationDialogProp?.['minHeight'] ?? '30%',\n maxHeight: confirmationDialogProp?.['maxHeight'] ?? '40%',\n data: {\n title: this.translateService.instant(\n confirmationDialogProp?.data?.title\n ),\n showOk: true,\n },\n disableClose: true,\n }\n );\n\n return dialogRef.afterClosed().pipe(take(1));\n }\n } else {\n const dialogRef = this.matDialog.open(\n ConfirmationDialogComponent,\n {\n width: confirmationDialogProp?.['width'] ?? '30%',\n minHeight: confirmationDialogProp?.['minHeight'] ?? '30%',\n maxHeight: confirmationDialogProp?.['maxHeight'] ?? '40%',\n data: {\n title: this.translateService.instant(\n confirmationDialogProp?.data?.title\n ),\n showOk: true,\n },\n disableClose: true,\n }\n );\n\n return dialogRef.afterClosed().pipe(take(1));\n }\n }\n return of(true);\n });\n\n if (confirmationDialogs.length) {\n forkJoin(confirmationDialogs)\n .pipe(take(1))\n .subscribe(() => {\n if (this.propsOfDialog?.['isSequentialNumGenerationRequired']) {\n dataToSave.sequentialNumberId = `000${this.generateSequentialIdNumber(\n this.parentModel\n )}`;\n }\n this.saveData.emit(dataToSave);\n this.resetForm();\n });\n } else {\n if (this.propsOfDialog?.['isSequentialNumGenerationRequired']) {\n dataToSave.sequentialNumberId = `000${this.generateSequentialIdNumber(\n this.parentModel\n )}`;\n }\n this.saveData.emit(dataToSave);\n this.resetForm();\n }\n } else {\n if (this.propsOfDialog?.['isSequentialNumGenerationRequired']) {\n dataToSave.sequentialNumberId = `000${this.generateSequentialIdNumber(\n this.parentModel\n )}`;\n }\n this.saveData.emit(dataToSave);\n this.resetForm();\n }\n }\n }\n\n translateFormConfig(\n config: CustomFormlyFieldConfig[]\n ): CustomFormlyFieldConfig[] {\n return config.map((field) => {\n if (field.props?.label) {\n field.expressions = {\n ...field.expressions,\n 'props.label': this.translateService.stream(field.props.label || ''),\n 'props.tooltip': this.translateService.stream(\n field.props.label || ''\n ),\n };\n }\n if (field.props?.placeholder) {\n field.expressions = {\n ...field.expressions,\n 'props.placeholder': this.translateService.stream(\n field.props.placeholder || ''\n ),\n };\n }\n if (field.fieldGroup) {\n this.translateFormConfig(field.fieldGroup);\n }\n return field;\n });\n }\n\n onModelChange(event: any) {\n this.model = event;\n this.subscribeToDependencies(this.fields, this.form, this.model);\n }\n\n subscribeToDependencies(fields: CustomFormlyFieldConfig[], form: FormGroup, vendorModel: any) {\n fields.forEach((field: any) => {\n if (field.fieldGroup) {\n this.subscribeToDependencies(field.fieldGroup, form, vendorModel);\n }\n });\n }\n\n updateDependentFieldsFullName(fields: any) {\n fields.forEach((field: any) => {\n if(field.formControl && field.updateTabularField) {\n field.formControl.valueChanges.subscribe((value: any) => {\n this.updateLabelValueForField(field, value);\n });\n }\n if (field.fieldGroup) {\n this.updateDependentFieldsFullName(field.fieldGroup);\n }\n });\n }\n\n updateLabelValueForField(field: any, value: any) {\n const options$ = field.props?.options;\n if (options$ && typeof options$.subscribe === 'function') {\n options$.subscribe((options: any) => {\n const updateFieldKey = field.updateTabularField;\n const selectedOption = options.find((option: any) => option.value === value);\n if (selectedOption) {\n this.model[updateFieldKey] = selectedOption.label;\n }\n });\n }\n }\n\n isFilesUploaded() {\n return true;\n }\n\n generateSequentialIdNumber(parentModel: any) {\n if (parentModel?.[this.propsOfDialog?.['parenetModelKeyToGenerateSequentialNumber']]?.length) {\n const latestRecordIdNumber = parentModel?.[this.propsOfDialog?.['parenetModelKeyToGenerateSequentialNumber']]?.sort((a: { sequentialNumberId: number; }, b: { sequentialNumberId: number; }) => +(b?.sequentialNumberId) - +(a?.sequentialNumberId))?.find((parenData: { sequentialNumberId: any; }) => +(parenData?.sequentialNumberId));\n return +(latestRecordIdNumber?.sequentialNumberId) + 1;\n }\n return 1;\n }\n}","import { map } from \"rxjs\";\nimport { CustomFormlyFieldConfig } from \"../models/custom-form-field.model\";\nimport { GraphQLService } from \"../services/graphql.service\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\nfunction getNestedValue(obj: any, path: string): any {\n return path.split('.').reduce((acc, part) => {\n if (acc && acc[part] !== undefined) {\n return acc[part];\n } else {\n console.warn(`Path \"${path}\" not found in model`);\n return undefined;\n }\n }, obj);\n}\n\nfunction populateVariables(field: CustomFormlyFieldConfig, model: any) {\n if (field.gqlQuery && field.gqlQuery.variables) {\n const variables = { ...field.gqlQuery.variables };\n Object.keys(variables).forEach((key) => {\n \n variables[key] = variables[key].replace(/\\{\\{\\s{0,2}model\\.(.*?)\\s{0,2}\\}\\}/g, (_, modelKey) => {\n const value = getNestedValue(model, modelKey);\n if (value !== null && typeof value === 'object') {\n return value.value;\n } else if(value !== undefined) {\n return value;\n } else {\n console.warn(`No value found for {{ model.${modelKey} }}`);\n return `{{ model.${modelKey} }}`; \n }\n });\n });\n return variables;\n }\n return {};\n}\n\nexport function updateFieldOptionsWithGql(fieldConfig: any, graphQLService: GraphQLService, model: any): void {\n if (fieldConfig.gqlQuery && fieldConfig.gqlQuery.query) {\n const { query, responseKey, optionsLabel, optionsValue } = fieldConfig.gqlQuery;\n const variables = populateVariables(fieldConfig, model);\n\n if (fieldConfig.gqlQuery.isPaginationApi) {\n fieldConfig.props.options = graphQLService.executeQuery(query, variables).pipe(\n map((result: any) => {\n return result.data[responseKey].rows.map((item: any) => {\n return {\n label: item[optionsLabel],\n value: item[optionsValue]\n }\n });\n }));\n } else {\n fieldConfig.props.options = graphQLService.executeQuery(query, variables).pipe(\n map((result: any) => {\n let options = result.data[responseKey];\n if(fieldConfig.props.optionsToBeExcluded?.length) {\n const optionsToBeRemoved = fieldConfig.props.optionsToBeExcluded;\n const removeSet = new Set(optionsToBeRemoved);\n options = options.filter((item: any) => !removeSet.has(item[fieldConfig.props.optionKey]));\n }\n if(fieldConfig.props.addOthersOption) {\n const optns = options.map((item: any) => ({\n label: item[optionsLabel],\n value: item[optionsValue]\n }));\n return [\n { label: 'Others', value: 'Others'},\n ...optns\n ]\n } else {\n return options.map((item: any) => ({\n label: item[optionsLabel],\n value: item[optionsValue]\n }));\n }\n }));\n }\n }\n}\n\nexport function flattenJson(data: any, result: any = {}) {\n for (const key in data) {\n if (typeof data[key] === 'object' && !Array.isArray(data[key])) {\n flattenJson(data[key], result);\n } else {\n result[key] = data[key];\n }\n }\n return result;\n}\n\nexport function deepEqual(obj1: any, obj2: any) {\n if (obj1 === obj2) return true;\n\n if (obj1 === null || typeof obj1 !== 'object' || obj2 === null || typeof obj2 !== 'object') {\n return false;\n }\n\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n if (keys1.length !== keys2.length) return false;\n\n for (const key of keys1) {\n if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) {\n return false;\n }\n }\n\n return true;\n}\n","import { Component, ElementRef, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\n\n@Component({\n selector: 'mu-view-file-dialog',\n standalone: true,\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatDialogModule\n ],\n template: `\n <div class=\"dialog-container\">\n <div class=\"top-bar mnl-bg-primary\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n <h2 mat-dialog-title>{{ data.fileName }}</h2>\n <mat-icon class=\"closeIcon\" (click)=\"close()\">close</mat-icon>\n </div>\n <div class=\"dialog-content\">\n <iframe id=\"viewDoc\"></iframe>\n </div>\n </div>\n `,\n styles: [`\n .dialog-container {\n padding: 12px;\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n .top-bar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid #e0e0e0;\n margin-bottom: 12px;\n height: 40px;\n border-radius: 5px;\n padding: 3px;\n cursor: move;\n }\n .top-bar .mat-mdc-dialog-title {\n padding: 0;\n line-height: 1.5;\n }\n .dialog-content {\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n height: calc(100% - 80px);\n }\n .dialog-content iframe {\n flex-grow: 1;\n width: 100%;\n border: none;\n border-radius: 4px;\n }\n .closeIcon {\n cursor: pointer;\n }\n `]\n})\nexport class ViewFileDialogComponent {\n constructor(\n private dialogRef: MatDialogRef<ViewFileDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private hostElement: ElementRef\n ) {\n this.renderFrame('#viewDoc', data.file);\n }\n\n close() {\n this.dialogRef.close();\n }\n\n renderFrame(querySelector: string, blob: Blob) {\n const intervalId = setInterval(() => {\n const iframe = this.hostElement.nativeElement.querySelector(querySelector);\n if (iframe) {\n clearInterval(intervalId);\n if (!this.data.nodeId) {\n if (blob instanceof Blob) {\n iframe.src = URL.createObjectURL(blob) + '#toolbar=0';\n } else {\n const message = `\n <div style=\"display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; font-family: Arial, sans-serif;\">\n <div style=\"font-size: 18px; font-weight: bold; margin-bottom: 10px;\">Unable to view the file</div>\n <div style=\"text-align: center;\">The file is not uploaded to Content Server. Please upload the file.</div>\n </div>\n `;\n const errorBlob = new Blob([message], { type: 'text/html' });\n iframe.src = URL.createObjectURL(errorBlob);\n console.error('The blob is not a valid file object.');\n }\n } else {\n const message = `\n <div style=\"display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; font-family: Arial, sans-serif;\">\n <div style=\"font-size: 18px; font-weight: bold; margin-bottom: 10px;\">File Preview</div>\n <div style=\"text-align: center;\">This is a preview placeholder for: ${this.data.fileName}</div>\n <div style=\"text-align: center; margin-top: 10px;\">NodeId: ${this.data.nodeId}</div>\n </div>\n `;\n const previewBlob = new Blob([message], { type: 'text/html' });\n iframe.src = URL.createObjectURL(previewBlob);\n }\n }\n }, 2);\n }\n}","import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { FieldType } from '@ngx-formly/material';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { FieldArrayType, FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TabularFormDialogComponent } from './tabular-form-dialog.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { AgGridModule } from 'ag-grid-angular';\nimport { ColDef } from 'ag-grid-community';\nimport { CustomFormlyFieldConfig } from '../models/custom-form-field.model';\nimport { GridApi, RowSelectedEvent } from 'ag-grid-community';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { deepEqual, flattenJson } from '../utils/formly.utils';\nimport { ViewFileDialogComponent } from './view-file-dialog.component';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\n\n@Component({\n selector: 'mu-formly-add-dialog-type',\n standalone: true,\n imports: [CommonModule, FormlyModule, MatSnackBarModule, TranslateModule, ReactiveFormsModule, MatDialogModule, MatTableModule, MatButtonModule,\n MatDialogModule, AgGridModule, TranslateModule,MatIconModule,MatTooltipModule\n ],\n providers: [DatePipe],\n template: `\n <div class=\"flex justify-start mt-2 mr-2 items-center\">\n @if(selectedRowCount > 0) {\n <button\n *ngIf=\"!field.props?.['hideDelete']\"\n mat-icon-button\n type=\"button\"\n (click)=\"removeSelectedRows()\"\n matTooltip=\"{{ field.props?.['deleteButtonTooltip']|translate }}\"\n [disabled]=\"isButtonsDisabled\"\n >\n <mat-icon class=\"icon\">{{ field.props?.['deleteButtonIcon'] }}</mat-icon>\n </button>\n\n <button \n mat-icon-button\n *ngIf=\"!field.props?.['hideEdit']\"\n type=\"button\"\n (click)=\"editDialog()\"\n matTooltip=\"{{ field.props?.['editButtonTooltip'] | translate}}\"\n [disabled]=\"isButtonsDisabled\">\n <mat-icon>\n {{ field.props?.['editButtonIcon'] }}\n </mat-icon>\n </button>\n }\n <button\n *ngIf=\"!field.props?.['hideAdd'] && (props['maxRows'] ? rowData.length < getMaxRows() : true)\"\n mat-button\n type=\"button\"\n (click)=\"openDialog()\"\n matTooltip=\"{{ field.props?.['addButtonTooltip'] | translate}}\"\n [disabled]=\"isButtonsDisabled\"\n >\n <mat-icon>\n {{ field.props?.['addButtonIcon'] }}\n </mat-icon>\n <span>{{field.props?.['addBtnLabel'] | translate}}</span>\n </button>\n </div>\n <ag-grid-angular\n class=\"ag-theme-alpine\"\n [rowData]=\"rowData\"\n [formlyAttributes]=\"field\"\n [columnDefs]=\"columnDefs\"\n [defaultColDef]=\"defaultColDef\"\n [suppressRowClickSelection]=\"true\"\n rowSelection=\"multiple\"\n (gridReady)=\"onGridReady($event)\"\n [domLayout]=\"rowData.length > 5 ? 'normal' : 'autoHeight'\"\n (rowSelected)=\"onRowSelected($event)\"\n [style.height]=\"rowData.length > 5 ? '300px' : 'auto'\"\n [getRowStyle]=\"getRowStyle\"\n [gridOptions]=\"{ suppressMovableColumns : true }\"\n >\n </ag-grid-angular>\n `,\n styles: [`\n ag-grid-angular {\n margin-top: 16px;\n width: 100%;\n }\n `]\n})\nexport class TabularFormComponent extends FieldArrayType<CustomFormlyFieldConfig> implements OnInit {\n selectedRowCount = 0;\n isButtonsDisabled = false;\n columnDefs: ColDef[] = [];\n rowData: Record<string, any>[] = [];\n gridApi!: GridApi;\n defaultColDef = {\n sortable: true,\n filter: true,\n resizable: true,\n flex: 1,\n minWidth: 150,\n wrapHeaderText: true,\n autoHeaderHeight: true\n };\n oldValue!: any;\n constructor(\n private dialog: MatDialog,\n private snackBar: MatSnackBar,\n private cd: ChangeDetectorRef,\n private translateService: TranslateService,\n private datePipe: DatePipe) {\n super();\n }\n\n ngOnInit(): void {\n if(this.options.formState.showOldValues) {\n const oldValues = flattenJson(this.options.formState.oldValues);\n this.oldValue = oldValues?.[this.field.key as string];\n }\n\n if(this.field?.enabledForRoles) {\n this.isButtonsDisabled = !this.options.formState?.userRoles?.some((role: any) => this.field?.enabledForRoles?.includes(role));\n }\n\n if (this.field?.props?.['columnDefs']) {\n if(this.options.formState?.showOldValues) {\n this.columnDefs = [\n {\n headerCheckboxSelection: !this.isButtonsDisabled,\n checkboxSelection: (params) => {\n return !this.isButtonsDisabled && !params.data.isOldData\n },\n headerName: '',\n width: 40,\n maxWidth: 40,\n filter: false,\n resizable:false\n },\n {\n headerName: '',\n width: 40,\n maxWidth: 60,\n filter: false,\n resizable:false,\n field: 'isChanged',\n cellRenderer: (params: any) => {\n if (params.value) {\n return `<i class=\"material-icons cursor-pointer mt-[9px]\" style=\"color: red;\">edit</i>`;\n } else {\n return `<i class=\"material-icons cursor-pointer mt-[9px]\" style=\"color: black;\">visibility</i>`;\n }\n },\n onCellClicked: (params) => {\n this.showChangedValues(params);\n },\n tooltipValueGetter: (params: any) => {\n if (params.value) {\n return 'This row data is changed, Please click on this to view the changed details';\n }\n return '';\n },\n\n },\n ...this.translateLabels(this.field?.props?.['columnDefs'])\n ]\n } else {\n this.columnDefs = [\n {\n headerCheckboxSelection: !this.isButtonsDisabled,\n checkboxSelection: !this.isButtonsDisabled,\n headerName: '',\n width: 40,\n maxWidth: 40,\n filter: false,\n resizable:false\n },\n {\n headerName: '',\n field: 'view',\n width: 50,\n maxWidth: 50,\n filter: false,\n resizable:false,\n cellRenderer: () => {\n return `<i class=\"material-icons cursor-pointer mt-[9px]\" style=\"color: black;\">visibility</i>`;\n },\n onCellClicked: (params) => {\n this.showChangedValues(params);\n }\n },\n ...this.translateLabels(this.field?.props?.['columnDefs'])\n ];\n }\n\n this.columnDefs = this.columnDefs?.map(colDef => {\n if (colDef?.type === 'date') {\n return {\n ...colDef,\n valueFormatter: ((params:any) => this.formatDate(params.value))\n };\n }\n if(colDef?.field?.includes('FileName')) {\n return {\n ...colDef,\n cellRenderer: (params: any) => {\n if(params.value) {\n return `<a href=\"javascript:void(0)\" style=\"color: blue; text-decoration: underline;\">\n ${params.value}\n </a>`;\n } else {\n return '';\n }\n },\n onCellClicked: (params) => {\n this.onFilenameClick(params);\n },\n }\n }\n return colDef;\n })\n const gridData = findNestedKey(this.field.parent?.model, this.field.key);\n this.rowData = Array.isArray(gridData) ? gridData : [];\n if(this.field.props?.['rowData']) {\n this.field.props?.['rowData']?.asObservable()?.pipe()?.subscribe((data: any) => {\n if(data[0]?.id) {\n if(this.rowData.find((row: any) => row.id == data[0]?.id)) {\n this.rowData = [...this.rowData]\n } else {\n this.rowData = [...this.rowData, ...data];\n }\n }\n })\n }\n if(this.field.props?.['updateRowData']) {\n this.field.props?.['updateRowData']?.asObservable()?.pipe()?.subscribe((data: any) => {\n const updatedRows = this.rowData.map((row: any) => {\n const newRow = data.find((eachRow: any) => eachRow.id == row.id);\n const newRowData = {\n ...row,\n ...(newRow ?? {})\n };\n return newRowData;\n });\n this.rowData = [...updatedRows];\n this.gridApi?.selectAll();\n this.gridApi?.deselectAll();\n });\n }\n }\n }\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.updateSelectedRowCount();\n }\n\n openDialog(): void {\n if (this.field && this.field.props?.['dialogOpened']) {\n this.field.props?.['dialogOpened'](event, this.field);\n }\n const dialogRef = this.dialog.open(TabularFormDialogComponent, {\n width: this.props?.['dialogWidth'] ?? '75%',\n maxWidth: '100%',\n height: this.props?.['dialogHeight'] ?? '85%',\n data: { fieldConfig: this.field.fieldArray.fieldGroup, label: this.field.props?.addLabel??'Add', formState: this.options?.formState, tabularProps: this.field.props,\n parentModel: this.field.parent?.model\n },\n disableClose: true,\n autoFocus: false\n });\n\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n result.id = this.generateRandomNumber();\n if(this.options.formState.showOldValues) {\n result.addedNewRow = true;\n }\n if (this.props?.['isSequentialNumGenerationRequired']) {\n result.sequentialNumberId = `000${this.generateSequentialIdNumber(this.field.parent?.model)}`;\n }\n this.addRowToGrid(result);\n }\n if (this.field && this.field.props?.['dialogClosed']) {\n this.field.props?.['dialogClosed'](event, this.field);\n }\n });\n\n dialogRef.componentInstance.saveData.subscribe((data: any) => {\n data.id = this.generateRandomNumber();\n if(this.options.formState.showOldValues) {\n data.addedNewRow = true;\n }\n updateModel(this.field.parent?.model, this.field.key, data, 'push');\n this.addRowToGrid(data);\n });\n }\n\n generateRandomNumber(): number {\n return Math.floor(1000 + Math.random() * 9000);\n }\n\n addRowToGrid(data: any): void {\n if (this.rowData.length > this.getMaxRows()) {\n this.snackBar.open(`Cannot add more than ${this.getMaxRows()} rows`, 'Close', {\n duration: 3000\n });\n return;\n }\n for (const key in data) {\n if (data[key] instanceof Object) {\n if (data[key]?.fileName) {\n data[`${key}FileName`] = data[key].fileName;\n }\n }\n }\n if (this.columnDefs.length === 0) {\n this.columnDefs = [\n {\n headerCheckboxSelection: true,\n checkboxSelection: true,\n headerName: '',\n width: 40,\n maxWidth: 40,\n resizable:false,\n filter: false\n },\n ...Object.keys(data)\n .filter(key => {\n const fieldConfig = this.findFieldConfigByKey(this.field.fieldGroup || [], key);\n return key !== 'id' && fieldConfig?.type !== 'mu-button';\n })\n .map(key => {\n const label = this.findLabelInNestedFields(this.field.fieldGroup || [], key);\n return {\n field: key,\n headerName: label\n };\n })\n ];\n }\n if(this.rowData.find((row: any) => row.id == data.id)) {\n this.rowData = [...this.rowData]\n } else {\n this.rowData = [...this.rowData, data];\n }\n this.add(null, data);\n this.cd.detectChanges();\n this.snackBar.open(\n this.translateService.instant('MNL_TABULAR_FORM.DATA_ADDED_SUCCESSFULLY'),\n 'Close',\n {\n duration: 0,\n }\n );\n this.gridApi.selectAll();\n this.gridApi.deselectAll();\n }\n\n findFieldConfigByKey(fieldConfigs: any[], key: string): any {\n for (const field of fieldConfigs) {\n if (field.key === key) {\n return field;\n }\n if (field.fieldGroup) {\n const foundField = this.findFieldConfigByKey(field.fieldGroup, key);\n if (foundField) {\n return foundField;\n }\n }\n }\n return null;\n }\n\n getMaxRows(): number {\n return this.to['maxRows'];\n }\n\n findLabelInNestedFields(fieldConfigs: any[], key: string): string {\n for (const field of fieldConfigs) {\n if (field.key === key) {\n return field.props?.label || key;\n }\n if (field.fieldGroup) {\n const label = this.findLabelInNestedFields(field.fieldGroup, key);\n if (label) {\n return label;\n }\n }\n }\n return key;\n }\n\n removeSelectedRows() {\n if(this.options.formState.showOldValues) {\n const selectedData = this.gridApi.getSelectedNodes().map(node => node.data);\n if(!selectedData.every(data => data.addedNewRow)) {\n this.snackBar.open(\n this.translateService.instant(\n 'MNL_TABULAR_FORM.NO_ACCESS_TO_DELETE_OLD_RECORDS'\n ),\n 'Ok',\n {\n duration: 0,\n panelClass: ['error-snackbar'],\n }\n );\n return;\n }\n }\n const dialog = this.dialog.open(ConfirmationDialogComponent, {\n width: '50%',\n height: '28%',\n data: { title: 'Are you sure to delete?'}\n });\n dialog.afterClosed().subscribe((res) => {\n if(res) {\n const selectedNodes = this.gridApi.getSelectedNodes();\n const selectedData = selectedNodes.map(node => node.data);\n this.rowData = this.rowData.filter(row => !selectedData.includes(row));\n updateModel(this.field.parent?.model, this.field.key, this.rowData, 'assign')\n \n this.gridApi.applyTransaction({\n remove: selectedData\n });\n this.updateSelectedRowCount();\n }\n });\n }\n\n onRowSelected(event: RowSelectedEvent): void {\n this.updateSelectedRowCount();\n }\n\n updateSelectedRowCount(): void {\n this.selectedRowCount = this.gridApi.getSelectedNodes().length;\n }\n\n translateLabels(\n columnDefs: any[]\n ): any[] {\n return columnDefs.map((column) => {\n return {\n ...column,\n headerName: this.translateService.instant(column.headerName)\n }\n })\n }\n\n editDialog() {\n const selectedNodes = this.gridApi.getSelectedNodes();\n const selectedData = selectedNodes.map(node => node.data);\n if (selectedData?.length > 1) {\n this.snackBar.open(\n this.translateService.instant(\n 'MNL_TABULAR_FORM.MULTI_ROW_EDIT_ERROR'\n )\n , 'Ok', {\n duration: 5000,\n });\n return;\n }\n if (this.field && this.field.props?.['dialogOpened']) {\n this.field.props?.['dialogOpened'](event, this.field);\n }\n const dialogRef = this.dialog.open(TabularFormDialogComponent, {\n width: this.props?.['dialogWidth'] ?? '75%',\n maxWidth: '100%',\n height: this.props?.['dialogHeight'] ?? '85%',\n data: { fieldConfig: this.field.fieldArray.fieldGroup, label: this.field.props?.editLabel??'Edit', formState: this.options?.formState, selectedRowData: selectedData[0], tabularProps: this.field.props, parentModel: this.field.parent?.model },\n disableClose: true,\n autoFocus: false\n });\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n this.rowData = this.rowData.map((rowRecord) => {\n if (rowRecord?.['id'] === result?.id) {\n if(this.options.formState?.showOldValues) {\n const oldRowValue = this.oldValue.find((record: any) => record.id === result?.id);\n if(oldRowValue) {\n oldRowValue['isChanged'] = false;\n result['isChanged'] = false;\n const mergdOld = {\n ...result,\n ...oldRowValue\n }\n const eq = deepEqual(mergdOld, result);\n rowRecord['isChanged'] = !eq;\n result['isChanged'] = !eq;\n }\n }\n const updatedRow = {\n ...rowRecord,\n ...result,\n };\n Object.keys(updatedRow).forEach(key => {\n if (updatedRow[key] instanceof Object) {\n if (updatedRow[key]?.fileName) {\n updatedRow[`${key}FileName`] = updatedRow[key].fileName;\n }\n }\n });\n return updatedRow;\n }\n return rowRecord;\n });\n updateModel(this.field.parent?.model, this.field.key, this.rowData, 'assign');\n this.cd.detectChanges();\n }\n this.updateSelectedRowCount();\n this.cd.detectChanges();\n if (this.field && this.field.props?.['tabularDataEdited']) {\n this.field.props?.['tabularDataEdited'](event, this.field);\n }\n if (this.field && this.field.props?.['dialogClosed']) {\n this.field.props?.['dialogClosed'](event, this.field);\n }\n });\n }\n\n formatDate(date: string): string {\n if(date) {\n const d = new Date(date);\n const day = String(d.getDate()).padStart(2, '0');\n const monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n const month = monthNames[d.getMonth()];\n const year = d.getFullYear();\n return `${day}-${month}-${year}`;\n } else {\n return '';\n }\n }\n\n onFilenameClick(params: any) {\n const uploadedFileNameKey = Object.keys(params.data).filter(key => key.endsWith('FileName'));\n const uploadedFileObjectKey = uploadedFileNameKey[0]?.replace(/FileName$/, \"\");\n if(uploadedFileObjectKey) this.viewFile(params.data[uploadedFileObjectKey]);\n }\n\n viewFile(element:any) {\n const dialogRef = this.dialog.open(ViewFileDialogComponent, {\n width: '75%',\n maxWidth: '95%',\n height: '85%',\n data: element\n });\n }\n\n showChangedValues(params: any) {\n const formState = {\n ...this.options.formState,\n userRoles: []\n }\n this.dialog.open(TabularFormDialogComponent, {\n width: this.props?.['dialogWidth'] ?? '75%',\n maxWidth: '95%',\n height: '85%',\n data: { fieldConfig: this.field.fieldArray.fieldGroup, label: this.field.props?.viewLabel??'View', formState: formState, selectedRowData: params.data, hideUpdateBtn: true, parentModel: this.field.parent?.model, tabularProps: this.field.props },\n disableClose: true\n });\n }\n\n generateSequentialIdNumber(parentModel: any) {\n if (parentModel?.[this.props?.['parenetModelKeyToGenerateSequentialNumber']]?.length) {\n const latestRecordIdNumber = parentModel?.[this.props?.['parenetModelKeyToGenerateSequentialNumber']]?.sort((a: { sequentialNumberId: number; }, b: { sequentialNumberId: number; }) => +(b?.sequentialNumberId) - +(a?.sequentialNumberId))?.find((parenData: { sequentialNumberId: any; }) => +(parenData?.sequentialNumberId));\n return +(latestRecordIdNumber?.sequentialNumberId) + 1;\n }\n return 1;\n }\n\n getRowStyle = (params: any) => {\n if(this.options.formState.showOldValues) {\n if (params.data?.isChanged) {\n return { backgroundColor: '#ffcccc' };\n }\n if (params.data?.addedNewRow) {\n return { backgroundColor: '#F0EBAD80' };\n }\n }\n return undefined;\n };\n}\n\nfunction updateModel(obj: any, targetKey: any, newValue: any, action: string) {\n for (const key in obj) {\n if (key === targetKey) {\n if (action === 'push') {\n if (Array.isArray(obj[key])) {\n obj[key].push(newValue);\n } else if (obj[key] !== undefined) {\n obj[key] = [obj[key], newValue];\n } else {\n obj[key] = [newValue];\n }\n } else {\n obj[key] = newValue;\n }\n\n return true;\n }\n if (typeof obj[key] === 'object' && obj[key] !== null) {\n const result = updateModel(obj[key], targetKey, newValue, action);\n if (result) return true;\n }\n }\n return false;\n}\n\nfunction findNestedKey(obj: any, targetKey: any): any {\n for (const key in obj) {\n if (key === targetKey) return obj[key];\n if (typeof obj[key] === 'object') {\n const result = findNestedKey(obj[key], targetKey);\n if (result) return result;\n }\n }\n return undefined;\n}","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport {\n MatAutocompleteModule,\n MatAutocompleteTrigger,\n} from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonsModule } from '@muraai/mnl-commons';\nimport { FieldType, FieldTypeConfig, FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { catchError, debounceTime, distinctUntilChanged, map, startWith, switchMap, take } from 'rxjs/operators';\n\n@Component({\n selector: 'mu-multi-checkbox-autocomplete',\n standalone: true,\n imports: [\n CommonModule,\n CommonsModule,\n MatChipsModule,\n MatButtonModule,\n MatIconModule,\n MatInputModule,\n MatAutocompleteModule,\n TranslateModule,\n MatCheckboxModule,\n FormlyModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatTooltipModule\n ],\n providers: [MatAutocompleteTrigger],\n template: `\n <mat-form-field class=\"w-full\" appearance=\"outline\">\n <mat-label\n >{{ field.props.label }}\n <span *ngIf=\"field.props.required\">*</span>\n </mat-label>\n <mat-chip-grid\n #chipGrid\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n >\n @for (chip of formControl.value; track $index; let chipIndex= $index) {\n <mat-chip-row (removed)=\"removeChip(chipIndex)\"\n [matTooltip]=\"chip\">\n {{ chip }}\n <button matChipRemove [attr.aria-label]=\"'remove ' + chip\">\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n <input\n [formControl]=\"searchControl\"\n [matChipInputFor]=\"chipGrid\"\n [matAutocomplete]=\"auto\"\n [readonly]=\"field.props.readonly\"\n [required]=\"field.props.required || false\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"trigger.openPanel()\"\n />\n <mat-autocomplete #auto=\"matAutocomplete\">\n <mat-option\n *ngFor=\"let option of filteredOptions | async\"\n [value]=\"option.label\"\n (click)=\"toggleSelection($event, option.label)\"\n >\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"onCheckboxChange($event, option.label)\"\n [checked]=\"isSelected(option.label)\"\n >\n {{ option.label }}\n </mat-checkbox>\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"formControl.invalid && formControl.touched\">\n {{ field.validation?.messages?.['required'] }}\n </mat-error>\n </mat-form-field>\n `,\n styles: `\n .selected-chips {\n margin-top: 10px;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyMultiSelectCheckboxAutocompleteComponent\n extends FieldType<FieldTypeConfig>\n implements OnInit\n{\n searchControl = new FormControl();\n filteredOptions!: Observable<any>;\n protected optionsList: any[] = [];\n\n @ViewChild(MatAutocompleteTrigger) trigger!: MatAutocompleteTrigger;\n\n ngOnInit() {\n const debounce = this.field.props.debounceTime || 300;\n const fetchOnce =\n this.field.props.fetchOnce === undefined ? true : this.field.props.fetchOnce;\n\n if (this.field.props.apiFunction && typeof this.field.props.apiFunction === 'function') {\n if (fetchOnce) {\n this.field.props\n .apiFunction('')\n .pipe(\n catchError((error) => {\n console.error('API Error:', error);\n return of([]);\n })\n )\n .subscribe((results: any[]) => {\n this.optionsList = results || [];\n\n this.filteredOptions = this.searchControl.valueChanges.pipe(\n startWith(''),\n debounceTime(debounce),\n distinctUntilChanged(),\n map((searchTerm: string) => this.filterOptions(searchTerm))\n ); \n });\n } else {\n this.filteredOptions = this.searchControl.valueChanges.pipe(\n startWith(''),\n debounceTime(debounce),\n distinctUntilChanged(),\n switchMap((searchTerm: any) => {\n return this.field.props.apiFunction(searchTerm).pipe(\n map((results: any[]) => {\n this.optionsList = results || [];\n return results || [];\n }),\n catchError((error) => {\n console.error('API Error:', error);\n return of([]);\n })\n );\n })\n );\n }\n }\n else if (Array.isArray(this.field.props.options)) {\n this.optionsList = this.field.props.options;\n this.filteredOptions = this.searchControl.valueChanges.pipe(\n startWith(''),\n debounceTime(debounce),\n map((searchTerm) => this.filterOptions(searchTerm))\n );\n }\n else {\n const options$ = this.field.props.options as Observable<any[]>;\n\n options$.pipe(take(1)).subscribe((opts) => {\n this.optionsList = opts || [];\n });\n\n options$.subscribe((opts) => (this.optionsList = opts || []));\n\n this.filteredOptions = combineLatest([\n this.searchControl.valueChanges.pipe(\n startWith(''),\n debounceTime(debounce)\n ),\n options$,\n ]).pipe(\n map(([searchTerm, options]: [string, any[]]) =>\n this.filterOptions(searchTerm)\n )\n );\n }\n }\n\n onKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n event.preventDefault();\n }\n }\n\n private filterOptions(searchTerm: string) {\n const list = this.optionsList || [];\n const term = (searchTerm || '').toLowerCase();\n\n return list.filter(option =>\n (option.label || '').toLowerCase().includes(term)\n );\n}\n\n onCheckboxChange(event: any, value: any) {\n const currentValue = this.formControl.value || [];\n if (event.checked) {\n this.formControl.setValue([...currentValue, value]);\n } else {\n this.formControl.setValue(currentValue.filter((v: any) => v !== value));\n }\n this.trigger.openPanel();\n }\n\n toggleSelection(event: any, value: any) {\n if (this.isSelected(value)) {\n this.removeOption(value);\n } else {\n this.formControl.setValue([...this.formControl.value, value]);\n }\n this.searchControl.setValue('');\n this.trigger.openPanel();\n }\n\n isSelected(value: any): boolean {\n return (\n (this.formControl.value && this.formControl.value.includes(value)) ||\n false\n );\n }\n\n removeOption(value: any) {\n const values = this.formControl.value;\n const opts = values.filter((val: any) => val !== value);\n this.formControl.setValue(opts);\n }\n\n removeChip(chipIndex: number): void {\n const value = this.formControl.value;\n this.formControl.setValue([\n ...value.slice(0, chipIndex),\n ...value.slice(chipIndex + 1, value.length),\n ]);\n this.formControl.markAsTouched();\n }\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport function selectValidator(control: AbstractControl): ValidationErrors | null {\n if (control.value && Object.values(control.value).some((selectedValue: unknown) => !!selectedValue)) {\n return null; \n }\n return { selectValidation: true }; \n}","import { AbstractControl } from '@angular/forms';\n\nexport function gstValidator(control: AbstractControl) {\n const value = control.value || '';\n const gstPattern = /^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}[Z]{1}[0-9A-Z]{1}$/;\n\n if (!value || gstPattern.test(value)) {\n return null;\n } else {\n return { gst: true };\n }\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function panValidator(control: AbstractControl) {\n const value = control.value || '';\n const panPattern = /^[A-Z]{5}[0-9]{4}[A-Z]{1}$/;\n\n if (!value || panPattern.test(value)) {\n return null;\n } else {\n return { pan: true };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FieldType, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'mu-formly-field-panel',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatFormFieldModule,\n MatIconModule,\n FormlyMaterialModule,\n FormlyModule,\n CommonModule,\n MatCardModule\n ],\n template: `\n <mat-card>\n <mat-card-header [ngClass]=\"[field?.props?.backgroundColor, 'flex', 'flex-col', 'pb-1']\">\n <div>{{field?.props?.label}}</div>\n <div class=\"text-xs\">{{field?.props?.description ?? ''}}</div>\n </mat-card-header>\n\n <mat-card-content>\n @for(fieldItem of field?.fieldGroup; track fieldItem) {\n <formly-field [field]=\"fieldItem\"></formly-field>\n }\n </mat-card-content>\n </mat-card>\n `\n})\n\nexport class FormlyFieldPanelComponent extends FieldType {\n override field: any = {};\n\n isValid(field: FormlyFieldConfig): boolean {\n if (field.key) {\n return field?.formControl?.valid || true;\n }\n\n return field.fieldGroup ? field.fieldGroup.every((fieldItem) => this.isValid(fieldItem)) : true;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, TemplateRef, ViewChild, AfterViewInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FieldWrapper, FormlyModule } from '@ngx-formly/core';\n\n@Component({\n selector: 'mu-formly-wrapper-addons',\n standalone: true,\n imports: [CommonModule, MatButtonModule, FormlyModule, ReactiveFormsModule, MatIconModule],\n template: `\n <ng-template #matPrefix>\n <span\n *ngIf=\"props['addonLeft']\"\n [ngStyle]=\"{ cursor: props['addonLeft'].onClick ? 'pointer' : 'inherit' }\"\n (click)=\"addonLeftClick($event)\"\n >\n <mat-icon *ngIf=\"props['addonLeft'].icon\">{{ props['addonLeft'].icon }}</mat-icon>\n <span *ngIf=\"props['addonLeft'].text\">{{ props['addonLeft'].text }}</span>\n </span>\n </ng-template>\n\n <ng-container #fieldComponent></ng-container>\n\n <ng-template #matSuffix>\n <span\n *ngIf=\"props['addonRight']\"\n [ngStyle]=\"{ cursor: props['addonRight'].onClick ? 'pointer' : 'inherit' }\"\n (click)=\"addonRightClick($event)\"\n >\n <mat-icon *ngIf=\"props['addonRight'].icon\">{{ props['addonRight'].icon }}</mat-icon>\n <span *ngIf=\"props['addonRight'].text\">{{ props['addonRight'].text }}</span>\n </span>\n </ng-template>\n `,\n})\nexport class FormlyWrapperAddonsComponent extends FieldWrapper implements AfterViewInit {\n @ViewChild('matPrefix', { static: true }) matPrefix!: TemplateRef<any>;\n @ViewChild('matSuffix', { static: true }) matSuffix!: TemplateRef<any>;\n\n ngAfterViewInit() {\n if (this.matPrefix) {\n this.props['prefix'] = this.matPrefix;\n }\n\n if (this.matSuffix) {\n this.props['suffix'] = this.matSuffix;\n }\n }\n\n addonRightClick($event: any) {\n if (this.props['addonRight'].onClick) {\n this.props['addonRight'].onClick(this.to, this, $event);\n }\n }\n\n addonLeftClick($event: any) {\n if (this.props['addonLeft'].onClick) {\n this.props['addonLeft'].onClick(this.to, this, $event);\n }\n }\n}","import { FormlyFieldConfig } from '@ngx-formly/core';\n\nexport function addonsExtension(field: FormlyFieldConfig) {\n if (!field.props || (field.wrappers && field.wrappers.indexOf('addons') !== -1)) {\n return;\n }\n\n if (field.props['addonLeft'] || field.props['addonRight']) {\n field.wrappers = [...(field.wrappers || []), 'addons'];\n }\n}","import { CommonModule } from '@angular/common';\nimport {\n Component,\n DoCheck,\n OnInit,\n Renderer2,\n ElementRef,\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FieldWrapper, FormlyModule } from '@ngx-formly/core';\nimport { flattenJson } from '../utils/formly.utils';\n\n@Component({\n selector: 'mu-with-old-value-wrapper',\n standalone: true,\n imports: [\n CommonModule,\n FormlyModule,\n ReactiveFormsModule,\n MatInputModule,\n FormsModule,\n MatFormFieldModule,\n ],\n template: `\n <div class=\"show-column\">\n <ng-container #fieldComponent></ng-container>\n @if(showOldValues && hasValueChanged()) {\n <span class=\"oldValueSpan ml-1\"\n ><span class=\"old-label\">Old Value: </span>{{ oldValueDisplay }}</span\n >\n }\n </div>\n `,\n styles: [\n `\n .show-column { \n flex-direction: column;\n display: flex;\n }\n .changed-label {\n color: red;\n }\n .old-value {\n font-size: 0.9em;\n color: gray;\n }\n .oldValueSpan {\n font-family: Poppins, 'Helvetica Neue', sans-serif;\n font-size: 0.9em;\n font-weight: 500;\n }\n .old-label {\n color: #00ae4d !important;\n }\n `,\n ],\n})\nexport class WithOldValueWrapperComponent\n extends FieldWrapper\n implements OnInit, DoCheck\n{\n oldValues: any;\n currentValue: any;\n showOldValues!: boolean;\n\n constructor(private renderer: Renderer2, private elRef: ElementRef) {\n super();\n }\n\n ngOnInit(): void {\n this.oldValues = flattenJson(this.options.formState.oldValues);\n this.showOldValues = this.options.formState.showOldValues;\n }\n ngDoCheck() {\n this.currentValue = this.formControl.value;\n }\n\n normalizeToUTCMidnight(date: Date): string {\n const normalized = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n return normalized.toISOString();\n }\n\n hasValueChanged(): boolean {\n const oldValue = this.oldValues?.[this.field.key as string];\n if(oldValue === undefined) {\n const tabularData = this.oldValues?.[this.field.props?.['parentKey']];\n if (tabularData) {\n const tabularOldValue = tabularData?.find((data: any) => data.id === this.field.model?.id)\n if(!tabularOldValue) return false;\n const tabularOldVal = tabularOldValue?.[this.field.key as string];\n const label = this.elRef.nativeElement.querySelector('label');\n const oldValStr = tabularOldVal instanceof Date ? this.normalizeToUTCMidnight(tabularOldVal): tabularOldVal;\n const newValStr = this.currentValue instanceof Date ? this.normalizeToUTCMidnight(this.currentValue): this.currentValue;\n if (oldValStr != newValStr && label) {\n this.renderer.setAttribute(label, 'style', 'color: red !important;');\n } else if(label) {\n this.renderer.setAttribute(label, 'style', 'color: black !important;');\n }\n return oldValStr != newValStr;\n }\n }\n\n const label = this.elRef.nativeElement.querySelector('label');\n if(Array.isArray(this.currentValue)) {\n if(JSON.stringify(oldValue) != JSON.stringify(this.currentValue) && label) {\n this.renderer.setAttribute(label, 'style', 'color: red !important;');\n } else if(label) {\n this.renderer.setAttribute(label, 'style', 'color: black !important;');\n }\n return JSON.stringify(oldValue) != JSON.stringify(this.currentValue);\n }\n const oldValStr = oldValue instanceof Date ? this.normalizeToUTCMidnight(oldValue) : oldValue;\n const newValStr = this.currentValue instanceof Date ? this.normalizeToUTCMidnight(this.currentValue) : this.currentValue;\n\n if (oldValStr != newValStr && label) {\n this.renderer.setAttribute(label, 'style', 'color: red !important;');\n } else if(label) {\n this.renderer.setAttribute(label, 'style', 'color: black !important;');\n }\n if (oldValue instanceof Date && this.currentValue instanceof Date) {\n return this.normalizeToUTCMidnight(oldValue) !== this.normalizeToUTCMidnight(this.currentValue);\n }\n return oldValStr != newValStr;\n }\n\n get oldValueDisplay(): string {\n const key = this.field.key as string;\n const formatIfDate = (value: any): string => {\n if (\n (typeof value === 'string' && /^\\d{4}-\\d{2}-\\d{2}T/.test(value)) ||\n value instanceof Date\n ) {\n const date = new Date(value);\n if (!isNaN(date.getTime())) {\n return date.toLocaleDateString('en-GB', {\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n }).replace(/ /g, '-');\n }\n }\n return value === '' ? '-' : value;\n };\n if (\n this.field.key &&\n this.oldValues?.[this.field.key as string] !== undefined\n ) {\n const oldVal =this.oldValues[this.field.key as string] === '' ? '-' : this.oldValues[this.field.key as string];\n return formatIfDate(oldVal);\n } else if(this.field.key &&\n this.oldValues?.[this.field.key as string] === undefined) {\n const tabularData = this.oldValues?.[this.field.props?.['parentKey']];\n let tabularOldVal;\n if (tabularData) {\n const tabularOldValue = tabularData?.find((data: any) => data.id === this.field.model?.id)\n if(!tabularOldValue) return '';\n tabularOldVal = tabularOldValue?.[this.field.key as string];\n return formatIfDate(tabularOldVal ?? '-');\n }\n return tabularOldVal ?? '-';\n } else {\n return 'N/A';\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mu-comment-input',\n standalone: true,\n imports: [CommonModule, TranslateModule, FormlyModule, ReactiveFormsModule, MatInputModule, MatButtonModule, FormsModule, MatIconModule],\n template: `\n <div *ngIf=\"isInputRequired\">\n <mat-form-field class=\"w-[80%]\" appearance=\"outline\">\n <mat-label>{{ to.label }}</mat-label>\n <input matInput \n type=\"text\" \n [(ngModel)]=\"comment\" \n placeholder=\"{{'COMMENTS.COMMENT_PLACEHOLDER' | translate}}\" \n class=\"form-control\"\n [readonly]=\"to.readonly\"\n [disabled]=\"to.disabled || false\"\n />\n <button type=\"button\" class=\"sendButton\" matSuffix mat-icon-button aria-label=\"Send\" (click)=\"sendComment()\" [disabled]=\"to.disabled\">\n <mat-icon>send</mat-icon>\n </button>\n </mat-form-field>\n </div>\n <div *ngIf=\"model?.[field?.props?.['commentModelKey']]?.length\">\n <h2 class=\"commentsHeader mnl-bg-primary\">{{ to.label }}</h2>\n <div *ngFor=\"let comment of model?.[field?.props?.['commentModelKey']]\" class=\"comment\">\n <div class=\"commentsDate\">{{ comment.date | date: 'dd-MMM-yyyy HH:mm:ss' }} <strong class=\"commentedUser\">{{ comment.user }}</strong></div>\n <p class=\"comment-text\">{{ comment.text }}</p>\n </div>\n </div>\n `,\n styles: [`\n .comment {\n border-top: 1px solid #ddd;\n padding-top: 8px;\n font-family: Poppins, \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n }\n .commentsDate {\n color: gray;\n }\n .commentedUser {\n color: black;\n }\n .commentsHeader {\n border-radius: 7px;\n padding-left: 10px;\n }\n .comment-text {\n white-space: normal;\n word-wrap: break-word;\n overflow-wrap: anywhere;\n margin: 0;\n }\n .sendButton {\n padding: 0px;\n height: 30px;\n }\n `]\n})\nexport class FormlyCommentInputComponent extends FieldType implements OnInit {\n comment = '';\n isInputRequired: boolean = true;\n\n ngOnInit(): void {\n if (this.field?.props?.['isInputRequired'] === false) {\n this.isInputRequired = this?.field.props?.['isInputRequired'];\n }\n }\n\n sendComment() {\n const userData = localStorage.getItem('loggedInUserDetails');\n const user = userData ? JSON.parse(userData) : '';\n if (this.comment.trim()) {\n const newComment = {\n text: this.comment,\n date: new Date().toISOString(),\n user: user.email\n };\n\n if (!this.model.comments) {\n this.model.comments = [];\n }\n this.model.comments.unshift(newComment);\n this.comment = '';\n if (this.field && this.field.props?.['saveComment']) {\n this.field.props?.['saveComment']();\n }\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\nimport { FormlyModule, FieldTypeConfig } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\n@Component({\n selector: 'mu-radio',\n standalone: true,\n imports: [\n CommonModule,\n FormlyModule,\n FormlyMaterialModule,\n ReactiveFormsModule,\n MatRadioModule,\n MatFormFieldModule\n ],\n template: `\n <mat-radio-group [formControl]=\"formControl\" [formlyAttributes]=\"field\">\n <div class=\"flex-col\">\n <div class=\"flex justify-between\">\n <label *ngIf=\"to.label\" [class.text-red-600]=\"to.required && formControl.touched && formControl.invalid\">{{ to.label }}\n <span *ngIf=\"to.required\">*</span></label>\n <div class=\"flex space-x-4\">\n <mat-radio-button *ngFor=\"let option of to['radioOptions']\" [value]=\"option.value\" [disabled]=\"to.disabled\">\n {{ option.label }}\n </mat-radio-button>\n </div>\n </div>\n <mat-error *ngIf=\"formControl.invalid && formControl.touched\">\n {{ field.validation?.messages?.['required'] }}\n </mat-error>\n </div>\n \n </mat-radio-group>\n `,\n})\nexport class CustomFormlyRadioComponent extends FieldType<FieldTypeConfig> {\n}","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FieldTypeConfig, FormlyModule } from '@ngx-formly/core';\nimport { FieldType } from '@ngx-formly/material';\n\n@Component({\n selector: 'mu-formly-field-mat-input',\n standalone: true,\n imports: [CommonModule, MatInputModule, FormlyModule, ReactiveFormsModule, FormsModule, MatFormFieldModule],\n template: `\n <mat-form-field class=\"w-full\" appearance=\"outline\">\n <mat-label>{{ to.label }}</mat-label>\n <input matInput [formControl]=\"formControl\" [formlyAttributes]=\"field\" />\n </mat-form-field>\n <mat-error *ngIf=\"formControl.invalid && formControl.touched\">\n {{ field.validation?.messages?.['required'] || field.validation?.messages?.['pattern']}}\n </mat-error>\n `,\n})\nexport class CustomFormlyMatInputComponent extends FieldType<FieldTypeConfig> {}\n","import { Component } from '@angular/core';\nimport { FormlyFieldConfig, FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\n@Component({\n selector: 'mu-formly-ag-grid-cell',\n standalone: true,\n imports: [FormlyModule, TranslateModule],\n template: ` <formly-field [field]=\"getField()\"></formly-field> `,\n})\nexport class GridFormlyCellComponent implements ICellRendererAngularComp {\n private params: any;\n\n constructor(private translateService: TranslateService) {}\n\n agInit(params: any): void {\n this.params = params;\n }\n\n refresh(): boolean {\n return false;\n }\n\n getField(): FormlyFieldConfig {\n const rowIndex = this.params.node.rowIndex;\n const prop = this.params.colDef.field;\n const parentField = this.params.context.parentField;\n const field = parentField.get([rowIndex, prop]);\n \n if(field && field.props.label) {\n field.props.label = this.translateService.instant(field.props?.label);\n }\n if(field && field.props.placeholder) {\n field.props.placeholder = this.translateService.instant(field.props?.placeholder);\n }\n \n return field;\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\n@Component({\n selector: 'mu-delete-button-renderer',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatIconModule, MatTooltipModule, TranslateModule],\n template: `\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"onDelete()\"\n [disabled]=\"params.disableButton\"\n matTooltip=\"Delete Row\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n `\n})\nexport class ActionButtonRendererComponent implements ICellRendererAngularComp {\n params: any;\n\n agInit(params: any): void {\n this.params = params;\n }\n\n refresh(): boolean {\n return false;\n }\n\n onDelete() {\n if (this.params?.onDelete && typeof this.params.onDelete === 'function') {\n this.params.onDelete(this.params.node);\n } else {\n console.error('Delete function not found or incorrect params:', this.params);\n }\n }\n}\n\nexport default ActionButtonRendererComponent;\n\n","import { Component, OnInit } from '@angular/core';\nimport { FieldArrayType } from '@ngx-formly/core';\nimport { FirstDataRenderedEvent, GridOptions, ColDef, RowNode, GridApi } from 'ag-grid-community';\nimport { GridFormlyCellComponent } from './grid-formly-cell.component';\nimport { CommonModule } from '@angular/common';\nimport { AgGridModule } from 'ag-grid-angular';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';import { MatTooltipModule } from '@angular/material/tooltip';\nimport { ActionButtonRendererComponent } from './action-button-renderer.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\n` `\n\n@Component({\n selector: 'mu-editable-formly-field-grid',\n standalone: true,\n imports: [CommonModule, AgGridModule, TranslateModule, MatIconModule, MatTooltipModule, MatButtonModule, MatDialogModule],\n template: `\n <div [ngStyle]=\"style\" >\n @if (!hideButton) {\n <div class=\"mb-2 flex justify-start items-center\">\n <button\n type=\"button\"\n (click)=\"addRow()\"\n matTooltip=\"{{ (field['props']['addButtonTooltip'] || 'ADD_ROW') | translate}}\"\n mat-button\n >\n <mat-icon>add</mat-icon>\n <span>{{field.props['addBtnLabel'] | translate}}</span>\n </button>\n </div>\n }\n <ag-grid-angular\n style=\"width: 100%;\"\n class=\"className\"\n [gridOptions]=\"gridOptions\"\n [rowData]=\"model\"\n [style.height]=\"gridHeight\"\n domLayout=\"normal\"\n (firstDataRendered)=\"onFirstDataRendered($event)\"\n (gridReady)=\"onGridReady($event)\"\n (rowClicked)=\"onRowClicked($event)\"\n >\n </ag-grid-angular>\n </div>\n `,\n styles: ``\n})\nexport class ActionableFormlyFieldGridComponent extends FieldArrayType implements OnInit {\n gridOptions!: GridOptions;\n style: any = {};\n selectedRow: RowNode | null = null;\n gridApi!: GridApi;\n hideButton = false;\n gridHeight = 'auto';\n maxVisibleRows = 5;\n\n constructor(private translateService: TranslateService, private dialog: MatDialog) {\n super();\n }\n\n ngOnInit() {\n this.maxVisibleRows = this.field?.props?.['maxVisibleRows'] || 5;\n if(this.field?.props?.['enabledForRoles']) {\n this.hideButton = !this.options.formState?.userRoles?.some((role: any) => this.field?.props?.['enabledForRoles']?.includes(role));\n }\n this.style = {\n width: this.props?.['width'],\n height: this.props?.['height'],\n };\n this.props['gridOptions'].columnDefs.forEach((column: ColDef) => {\n column.minWidth = column.minWidth ?? 240;\n column.cellRenderer = GridFormlyCellComponent;\n column.headerName = this.translateService.instant(column.headerName || '')\n });\n\n let columnDefs: ColDef[] = this.props['gridOptions'].columnDefs;\n columnDefs = [\n {\n headerName: this.translateService.instant('Actions'),\n field: 'delete',\n minWidth: 100,\n maxWidth: 120,\n cellRenderer: ActionButtonRendererComponent,\n cellRendererParams: {\n onDelete: (rowNode: RowNode) => this.deleteRow(rowNode),\n disableButton: this.hideButton\n }\n },\n ...columnDefs\n ];\n this.gridOptions = {\n ...this.props['gridOptions'],\n domLayout: 'normal',\n columnDefs: columnDefs,\n onRowDataUpdated: this.onRowDataUpdated,\n context: {\n parentField: this.field,\n onDelete: this.deleteRow.bind(this)\n },\n suppressMovableColumns: true\n };\n }\n\n onRowDataUpdated = () => {\n if (this.gridApi) {\n this.adjustGridHeight();\n }\n };\n\n onGridReady(params: any) {\n this.gridApi = params.api;\n this.adjustGridHeight();\n }\n\n onFirstDataRendered(params: FirstDataRenderedEvent) {\n params.api.sizeColumnsToFit();\n this.options.formState.gridActionableData = this.model;\n }\n\n onRowClicked(event: any) {\n this.selectedRow = event.node;\n }\n\n addRow() {\n const newRow = {id: this.generateRandomNumber()};\n this.add();\n this.gridApi.applyTransaction({ add: [newRow] });\n this.adjustGridHeight();\n }\n\n adjustGridHeight() {\n const rowCount = this.gridApi.getDisplayedRowCount();\n const rowHeight = this.gridOptions?.rowHeight || 60;\n if (rowCount === 0) {\n this.gridHeight = '70px';\n } else if (rowCount <= this.maxVisibleRows) {\n this.gridHeight = `${rowCount * rowHeight + 40}px`;\n } else {\n this.gridHeight = `${this.maxVisibleRows * rowHeight + 40}px`;\n }\n }\n deleteRow(rowNode: RowNode) {\n const dialog = this.dialog.open(ConfirmationDialogComponent, {\n width: '50%',\n height: '28%',\n data: { title: 'Are you sure to delete?'}\n });\n dialog.afterClosed().subscribe((res) => {\n if(res) {\n if (rowNode && rowNode.id !== null) {\n const rowIndex = rowNode.rowIndex;\n if (rowIndex !== null && rowIndex >= 0) {\n this.remove(rowIndex);\n }\n this.gridApi.applyTransaction({ remove: [rowNode.data] });\n this.adjustGridHeight();\n } else {\n console.error('Row not found or invalid:', rowNode);\n }\n }\n })\n }\n\n generateRandomNumber(): number {\n return Math.floor(1000 + Math.random() * 9000);\n }\n}","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n OnInit,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport {\n CustomFormlyFieldConfig,\n FileAction,\n MaybeAsyncBool,\n} from '../models/custom-form-field.model';\nimport { Action } from 'rxjs/internal/scheduler/Action';\n\n@Component({\n selector: 'mu-formly-field-file',\n standalone: true,\n imports: [\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n FormlyModule,\n CommonModule,\n MatTableModule,\n MatIconModule,\n MatTooltipModule,\n TranslateModule,\n MatSnackBarModule,\n DatePipe,\n ],\n template: `\n @if(showUploadbtn) {\n <div\n class=\"input-btn\"\n [ngClass]=\"{ 'red-upload': !field.formControl?.valid }\"\n >\n <button\n type=\"button\"\n [disabled]=\"field.props?.['disabled']\"\n [ngClass]=\"[field.props?.['color']]\"\n (click)=\"fileInput.click()\"\n >\n <mat-icon\n *ngIf=\"field.props?.['icon']\"\n class=\"text-lg mb-1\"\n >{{ field.props?.['icon'] }}</mat-icon\n >\n {{ field.props?.label }}<span *ngIf=\"to.required\">*</span>\n </button>\n <input\n type=\"file\"\n #fileInput\n (change)=\"onFileSelect($event)\"\n [formlyAttributes]=\"field\"\n [multiple]=\"field.props?.['isMultiFileUpload']\"\n [accept]=\"field.props?.['acceptedFileTypes'] || '.pdf,.xlsx,.jpg,.jpeg,.docx'\"\n class=\"hidden\"\n />\n <div class=\"text-[0.83rem] text-gray-500 mt-1\">\n Allowed file types:\n {{ field.props?.['acceptedFileTypes'] || '.pdf, .xlsx, .jpg, jpeg, .docx' }}\n <br />\n Maximum file size: {{ field.props?.['maxFileSizeMB'] || 1 }}MB\n </div>\n </div>\n }\n <table\n mat-table\n *ngIf=\"this.props?.['isMultiFileUpload'] && uploadedFiles?.length\"\n [dataSource]=\"dataSource\"\n class=\"mat-elevation-z8\"\n >\n <ng-container matColumnDef=\"fileName\">\n <th mat-header-cell *matHeaderCellDef class=\"header-cell\">File Name</th>\n <td mat-cell *matCellDef=\"let element\">{{ element.fileName }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"convertedFileSize\">\n <th mat-header-cell *matHeaderCellDef class=\"header-cell\">Size</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element.convertedFileSize }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedBy\">\n <th mat-header-cell *matHeaderCellDef class=\"header-cell\">\n Uploaded By\n </th>\n <td mat-cell *matCellDef=\"let element\">{{ element.uploadedBy }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedAt\">\n <th mat-header-cell *matHeaderCellDef class=\"header-cell\">\n Uploaded Date\n </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element.uploadedAt | date : 'dd-MMM-yyyy, hh:mm:ss a' }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"header-cell\">Actions</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">\n <div class=\"action-buttons\">\n <div\n *ngFor=\"let action of field?.props?.['actions']\"\n class=\"actions-container\"\n >\n <mat-icon\n class=\"action-icons\"\n *ngIf=\"showUploadAction(action, element)\"\n matTooltip=\"{{ action.label | translate }}\"\n (click)=\"handleActionClick(action, i, element)\"\n >\n {{ action.icon }}\n </mat-icon>\n </div>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <div class=\"w-full\">\n <table\n *ngIf=\"!this.props?.['isMultiFileUpload'] && uploadedFiles?.length\"\n class=\"w-full flex flex-col md:flex-row items-start md:items-center gap-2 md:gap-4\"\n >\n <tr\n class=\"flex flex-col md:flex-row items-start md:items-center gap-2 md:gap-4 w-full\"\n >\n <td\n class=\"text-sm truncate overflow-hidden whitespace-nowrap max-w-full flex-1 md:border-none\"\n [matTooltip]=\"uploadedFiles[0].fileName\"\n >\n {{ uploadedFiles[0].fileName }}\n </td>\n <td class=\"flex items-center justify-end md:flex-shrink-0\">\n <div\n *ngFor=\"let action of field?.props?.['actions']\"\n class=\"flex items-center\"\n >\n <mat-icon\n matTooltip=\"{{ action.label | translate }}\"\n *ngIf=\"showUploadAction(action, uploadedFiles[0])\"\n (click)=\"handleActionClick(action, 0, uploadedFiles[0])\"\n class=\"action-icons\"\n >\n {{ action.icon }}\n </mat-icon>\n </div>\n </td>\n </tr>\n </table>\n </div>\n <div\n *ngIf=\"to['note']\"\n class=\"text-gray-500 mt-1 w-[900px]\"\n [innerHTML]=\"to['note']\"\n ></div>\n `,\n styles: [\n `\n .mat-mdc-table {\n margin-top: 5px;\n box-shadow: none;\n }\n .header-cell {\n background-color: rgb(120 118 118 / 12%) !important;\n }\n .action-buttons {\n display: flex;\n flex-direction: row;\n justify-content: start;\n align-items: center;\n }\n .action-icons {\n font-size: 20px;\n }\n .actions-container {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 43px;\n padding-top: 5px;\n }\n\n .input-btn button,\n .red-upload button {\n color: white;\n padding: 3px 10px;\n border: none;\n cursor: pointer;\n border-radius: 50px;\n font-family: Poppins, 'Helvetica Neue', sans-serif;\n font-weight: 500;\n font-size: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .input-btn button:disabled,\n .red-upload button:disabled {\n background-color: #d3d3d3;\n color: #b0b0b0;\n }\n th,\n td,\n .upload-btn {\n font-family: Poppins, 'Helvetica Neue', sans-serif;\n }\n .red-upload button {\n background-color: red;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyFileUploadComponent\n extends FieldType<CustomFormlyFieldConfig>\n implements OnInit\n{\n uploadedFiles: any[] = [];\n displayedColumns: string[] = [\n 'fileName',\n 'convertedFileSize',\n 'uploadedBy',\n 'uploadedAt',\n 'actions',\n ];\n dataSource = new MatTableDataSource();\n showUploadbtn = true;\n loggedInUserDetails!: any;\n destroyRef = inject(DestroyRef);\n isMobileDevice: boolean = false;\n\n constructor(\n private snackBar: MatSnackBar,\n private translateService: TranslateService,\n private breakpointObserver: BreakpointObserver,\n private cdr: ChangeDetectorRef\n ) {\n super();\n this.breakpointObserver\n ?.observe([Breakpoints.Handset])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result) => {\n this.isMobileDevice = result?.matches;\n });\n }\n\n ngOnInit(): void {\n const userDetails = localStorage.getItem('loggedInUserDetails');\n this.loggedInUserDetails = userDetails\n ? JSON.parse(userDetails)\n : { email: '' };\n\n if (this.field.props?.['isMultiFileUpload'] && this.formControl.value) {\n this.uploadedFiles = this.formControl.value ?? [];\n } else {\n if (\n this.formControl.value &&\n Object.keys(this.formControl.value || {}).length\n ) {\n this.uploadedFiles = [this.formControl.value];\n }\n }\n this.dataSource.data = [...this.uploadedFiles];\n this.showUploadbtn = this.props?.['isMultiFileUpload']\n ? true\n : !this.uploadedFiles.length;\n }\n\n onFileSelect(event: any): void {\n const selectedFile = event.target.files;\n if (!selectedFile || !selectedFile.length) return;\n\n const maxFileSizeMB = this.field.props?.['maxFileSizeMB'] || 1;\n const maxFileSize = maxFileSizeMB * 1024 * 1024;\n\n if (this.props?.['isMultiFileUpload']) {\n if (this.isFileAlreadyUploaded(event.target.files)) {\n this.snackBar.open(\n this.translateService.instant('MNL_UPLOAD_FILE.DUPLICATE_UPLOADED'),\n 'Ok',\n {\n duration: 3000,\n panelClass: ['warn-snackbar'],\n }\n );\n this.resetFileInput(event.target);\n return;\n }\n }\n\n const selectedFiles = Array.from(selectedFile);\n const invalidChars = /[&,\"]/;\n\n const filesToProcess = this.field.props?.['isMultiFileUpload']\n ? selectedFiles\n : [selectedFiles[0]];\n\n filesToProcess.forEach((file: any) => {\n if (file.size > maxFileSize) {\n this.snackBar.open(\n `The file \"${file.name}\" exceeds the ${maxFileSizeMB} MB size limit.`,\n 'OK',\n {\n duration: 3000,\n panelClass: ['warn-snackbar'],\n }\n );\n } else if (invalidChars.test(file.name)) {\n this.snackBar.open('MNL_UPLOAD_FILE.INVALID_CHARS_FILE_NAME', 'Ok', {\n duration: 7000,\n panelClass: ['error-snackbar'],\n });\n } else {\n const newFile = {\n fileName: file.name,\n fileSize: file.size,\n fileType: file.type,\n file: file,\n uploadedBy: this.loggedInUserDetails.email,\n uploadedAt: new Date(),\n nodeId: '',\n convertedFileSize: this.formatFileSize(file.size),\n };\n\n if (!this.props?.['isMultiFileUpload']) {\n this.uploadedFiles = [newFile];\n } else {\n this.uploadedFiles.push(newFile);\n }\n }\n });\n\n this.dataSource.data = [...this.uploadedFiles];\n\n this.resetFileInput(event.target);\n this.showUploadbtn = this.props?.['isMultiFileUpload']\n ? true\n : !this.uploadedFiles.length;\n\n if (this.field.props?.['onFilesAdded']) {\n this.field.props['onFilesAdded'](this.uploadedFiles);\n }\n }\n\n handleActionClick(action: FileAction, index: number, element: any) {\n const onUploadFileAction = this.field.props?.['onUploadFileAction'];\n if (typeof onUploadFileAction === 'function') {\n const result = onUploadFileAction(action.icon, element, index);\n this.invokeAction(\n () => result,\n element,\n index,\n () => {\n if (action.icon === 'delete') this.removeFile(index);\n if (action.icon === 'cloud_upload')\n this.refreshUploadedTable(element, index);\n if (action.icon === 'cloud_download' || action.icon === 'visibility')\n () => {};\n },\n action.icon\n );\n }\n }\n\n refreshUploadedTable(element: any, index: number) {\n this.uploadedFiles[index] = element;\n if (this.props?.['isMultiFileUpload']) {\n const uploaded = this.uploadedFiles.filter((f) => !!f.nodeId);\n this.formControl.setValue(uploaded);\n } else {\n this.formControl.setValue(this.uploadedFiles[0]);\n }\n\n this.formControl.markAsTouched();\n this.form.updateValueAndValidity();\n this.dataSource.data = [...this.uploadedFiles];\n this.cdr.detectChanges();\n }\n\n removeFile(index: number) {\n this.uploadedFiles.splice(index, 1);\n this.dataSource.data = [...this.uploadedFiles];\n\n if (!this.field.props?.['isMultiFileUpload']) {\n this.formControl.setValue(null);\n } else {\n this.formControl.setValue(this.uploadedFiles);\n const uploaded = this.uploadedFiles.filter((f) => !!f.nodeId);\n this.formControl.setValue(uploaded);\n }\n this.showUploadbtn = this.props?.['isMultiFileUpload']\n ? true\n : !this.uploadedFiles.length;\n }\n\n isFileAlreadyUploaded(selectedFile: any): boolean {\n return this.uploadedFiles.some(\n (file) => file.fileName === selectedFile[0].name\n );\n }\n\n resetFileInput(fileInput: any): void {\n fileInput.value = '';\n }\n\n showUploadAction(action: any, file: any): boolean {\n const hasNode = !!file.nodeId;\n const userRoles = this.options.formState?.userRoles ?? [];\n const enabledRoles = this.field?.enabledForRoles ?? [];\n\n switch (action.icon) {\n case 'cloud_upload':\n return !hasNode;\n\n case 'cloud_download':\n case 'visibility':\n return hasNode;\n\n case 'delete':\n return (\n hasNode && userRoles.some((role: any) => enabledRoles.includes(role))\n );\n\n default:\n return false;\n }\n }\n\n formatFileSize(bytes: number): string {\n if (bytes < 1024) return bytes + ' B';\n if (bytes < 1048576) return (bytes / 1024).toFixed(2) + ' KB';\n return (bytes / 1048576).toFixed(2) + ' MB';\n }\n\n private invokeAction(\n actionCallback:\n | undefined\n | ((element: any, index: number) => MaybeAsyncBool),\n element: any,\n index: number,\n defaultFn: () => void,\n icon?: string\n ): void {\n if (!actionCallback) {\n defaultFn();\n return;\n }\n\n const result = actionCallback(element, index);\n\n if (result instanceof Observable) {\n (result as Observable<boolean>).subscribe((shouldProceed) => {\n if (shouldProceed) {\n this.successMessage(icon);\n defaultFn();\n }\n });\n } else {\n Promise.resolve(result as boolean | Promise<boolean>).then(\n (shouldProceed) => {\n if (shouldProceed) {\n this.successMessage(icon);\n defaultFn();\n }\n }\n );\n }\n }\n\n successMessage(icon: string) {\n if (icon === 'cloud_upload') {\n this.snackBar.open(\n this.translateService.instant(\n 'MNL_UPLOAD_FILE.FILE_SUCCESSFUL_UPLOADED'\n ),\n 'Ok',\n {\n duration: 5000,\n panelClass: ['success-snackbar'],\n }\n );\n } else if (icon === 'delete') {\n this.snackBar.open(\n this.translateService.instant(\n 'MNL_UPLOAD_FILE.FILE_SUCCESSFUL_DELETED'\n ),\n 'Ok',\n {\n duration: 5000,\n panelClass: ['success-snackbar'],\n }\n );\n }\n }\n}\n","import { NativeDateAdapter } from '@angular/material/core';\n \nexport class CustomDate extends NativeDateAdapter {\n override parse(value: any): Date | null {\n if (typeof value === 'string' && value.trim()) {\n const [day, month, year] = value.split('-');\n const date = new Date(`${month} ${day}, ${year}`);\n return isNaN(date.getTime()) ? null : date;\n }\n return null;\n }\n override format(date: Date, displayFormat: string): string {\n if (!date) return '';\n const day = date.getDate().toString().padStart(2, '0');\n const month = date.toLocaleString('en-US', { month: 'short' });\n const year = date.getFullYear();\n return `${day}-${month}-${year}`;\n }\n}","import { AbstractControl } from '@angular/forms';\n\nexport function normalEmailValidator(control: AbstractControl) {\n const value = control.value || '';\n const allowedDomains = ['lupindiagnostics.com', 'lupin.com', 'atharvability.com', 'lupindigitalhealth.com'];\n\n if (!value) {\n return null;\n }\n const emailPattern = /^[^\\s@]+@([^\\s@]+\\.[^\\s@]+)$/;\n const match = value.match(emailPattern);\n\n if (match) {\n const domain = match[1];\n if (allowedDomains.includes(domain)) {\n return null;\n }\n }\n return { email: true };\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n inject,\n NgZone,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n MatTabChangeEvent,\n MatTabGroup,\n MatTabsModule,\n} from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Router } from '@angular/router';\nimport {\n FieldType,\n FieldTypeConfig,\n} from '@ngx-formly/core';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mu-formly-field-tabs1',\n standalone: true,\n imports: [\n MatTabsModule,\n ReactiveFormsModule,\n FormlyModule,\n MatButtonModule,\n CommonModule,\n TranslateModule,\n MatIconModule,\n MatTooltipModule,\n ],\n template: `\n <div class=\"tabs-container\">\n <mat-tab-group\n class=\"sticky-tabs\"\n [(selectedIndex)]=\"selectedIndex\"\n (selectedIndexChange)=\"onTabIndexChange($event)\"\n (selectedTabChange)=\"onTabChange($event)\"\n >\n @for(tab of field.fieldGroup; track tab; let i = $index; let last =\n $last){\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [ngStyle]=\"{\n color:\n !isValid(field.fieldGroup ? field.fieldGroup[i] : {}) &&\n options.formState?.showValidationError\n ? 'red'\n : 'black'\n }\"\n >\n {{ tab?.props?.label || '' }}\n </span>\n <mat-icon\n matTooltip=\"{{ 'MANDATORY_FIELDS_TOOLTIP' | translate }}\"\n *ngIf=\"\n !isValid(field.fieldGroup ? field.fieldGroup[i] : {}) &&\n options.formState?.showValidationError\n \"\n class=\"error-step\"\n >error</mat-icon\n >\n </ng-template>\n </mat-tab>\n }\n </mat-tab-group>\n\n <div class=\"tab-content\" (scroll)=\"onScroll($event)\">\n <div\n *ngFor=\"let tab of field.fieldGroup; let i = index\"\n [id]=\"'tab-' + i\"\n class=\"tab-section\"\n >\n <h2 class=\"tab-title\" *ngIf=\"tab?.props?.label\">\n {{ tab?.props?.label || '' }}\n </h2>\n <formly-field [field]=\"tab\"></formly-field>\n </div>\n </div>\n </div>\n `,\n styles: [\n `\n .tab-title {\n color: #00ae4d;\n }\n .error-step {\n color: #d32f2f !important;\n }\n .tabs-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n\n .sticky-tabs {\n position: sticky;\n z-index: 1;\n }\n\n .tab-content {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n\n .tab-section {\n margin-bottom: 45px;\n border-bottom: 2px solid #00ae4d;\n\n h2 {\n margin: 0 0 8px;\n }\n\n .spacer {\n height: 400px;\n }\n }\n }\n }\n `,\n ],\n})\nexport class FormlyFieldScrollableTabsComponent\n extends FieldType<FieldTypeConfig>\n implements OnInit\n{\n submittedData!: any[];\n\n router = inject(Router);\n user: any;\n @ViewChild('tabGroup') tabGroup!: MatTabGroup;\n\n selectedIndex = 0;\n @ViewChild('tabContent', { static: false }) tabContent!: ElementRef;\n\n private debounceTimeout: any;\n\n constructor(private ngZone: NgZone) {\n super();\n }\n\n nextTab(tabGroup: MatTabGroup) {\n if (tabGroup && tabGroup.selectedIndex != null) {\n const currentIndex = tabGroup.selectedIndex;\n if (currentIndex < (tabGroup._tabs?.length || 0) - 1) {\n tabGroup.selectedIndex = currentIndex + 1;\n }\n }\n }\n\n previousTab(tabGroup: MatTabGroup) {\n if (tabGroup && tabGroup.selectedIndex != null) {\n const currentIndex = tabGroup.selectedIndex;\n if (currentIndex > 0) {\n tabGroup.selectedIndex = currentIndex - 1;\n }\n }\n }\n\n isFirstTab(tabGroup: MatTabGroup): boolean {\n return tabGroup && tabGroup.selectedIndex === 0;\n }\n\n isLastTab(tabGroup: MatTabGroup): boolean {\n return (\n tabGroup && tabGroup.selectedIndex === (tabGroup._tabs?.length || 0) - 1\n );\n }\n\n ngOnInit(): void {\n this.user = JSON.parse(localStorage.getItem('loggedInUser') || '{}');\n }\n\n isValid(field: any): boolean {\n if (field.key) {\n if (field.props?.excludeValidation) return true;\n return field?.formControl?.valid || false;\n }\n\n return field.fieldGroup\n ? field.fieldGroup.every((f: any) => this.isValid(f))\n : true;\n }\n\n onTabChange(event: MatTabChangeEvent): void {\n this.selectedIndex = event.index;\n console.log('Selected tab index:', this.selectedIndex);\n if (this.field && this.field.props?.['tabChange']) {\n this.field.props?.['tabChange'](event, this.field);\n }\n }\n\n onTabIndexChange(index: number) {\n const targetElement = document.getElementById(`tab-${index}`);\n if (targetElement) {\n targetElement.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n }\n\n onScroll(event: Event): void {\n clearTimeout(this.debounceTimeout);\n\n this.debounceTimeout = setTimeout(() => {\n const scrollContainer = event.target as HTMLElement;\n const scrollTop = scrollContainer.scrollTop;\n\n this.ngZone.run(() => {\n if (this.field.fieldGroup) {\n for (let index = 0; index < this.field.fieldGroup?.length; index++) {\n const tabElement = document.getElementById(`tab-${index}`);\n if (tabElement) {\n const tabTop = tabElement.offsetTop - scrollContainer.offsetTop;\n\n const tabHeight = tabElement.offsetHeight;\n\n if (scrollTop >= tabTop && scrollTop < tabTop + tabHeight) {\n if (this.selectedIndex !== index) {\n this.selectedIndex = index;\n }\n break;\n }\n }\n }\n }\n });\n }, 100);\n }\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function npiValidator(control: AbstractControl) {\n const value = control.value || '';\n const npiPattern = /^[1-9][0-9]{9}$/;\n\n if (!value || npiPattern.test(value)) {\n return null; \n } else {\n return { npi: true };\n }\n}","import { AbstractControl } from '@angular/forms';\n\nexport function tinOrSsnValidator(control: AbstractControl) {\n const value = control.value || '';\n const ssnPattern = /^(?!000|666|9\\d{2})\\d{3}-(?!00)\\d{2}-(?!0000)\\d{4}$/;\n const tinPattern = /^[a-zA-Z0-9\\s-]{5,20}$/;\n\n if(!value) return null;\n if (!ssnPattern.test(value) && !tinPattern.test(value)) {\n return { tinOrSsn: true };\n }\n return null;\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function einValidator(control: AbstractControl) {\n const value = control.value || '';\n const einPattern = /^(?!00)\\d{2}-(?!0000000)\\d{7}$/;\n\n if (!value || einPattern.test(value)) {\n return null;\n } else {\n return { ein: true }; \n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldWrapper, FormlyModule } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n FormlyModule,\n ReactiveFormsModule,\n FormlyMaterialModule,\n ],\n selector: 'mu-formly-wrapper-description',\n template: `\n <div>\n <ng-container #fieldComponent></ng-container>\n <p class=\"text-gray-500 text-sm mt-1\" *ngIf=\"to.description\">\n {{ to.description }}\n </p>\n </div>\n `,\n})\nexport class FormlyDescriptionWrapperComponent extends FieldWrapper implements OnInit {\n ngOnInit(): void {\n console.log('===========to============', this.field)\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\nimport { map, Observable, startWith } from 'rxjs';\n\n@Component({\n selector: 'mu-formly-field-time',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n FormlyModule,\n CommonModule,\n MatAutocompleteModule,\n ],\n template: `\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-4\">\n <mat-form-field appearance=\"outline\" class=\"w-25\">\n <mat-label>Hour</mat-label>\n <input\n type=\"text\"\n matInput\n [readonly]=\"to.readonly || to.disabled\"\n [required]=\"to.required || false\"\n [disabled]=\"to.disabled || false\"\n [formControl]=\"hourCtrl\"\n [matAutocomplete]=\"autoHour\"\n />\n <mat-autocomplete #autoHour=\"matAutocomplete\">\n <mat-option\n *ngFor=\"let hour of filteredHours$ | async\"\n [value]=\"hour\"\n >\n {{ hour }}\n </mat-option>\n </mat-autocomplete>\n <mat-error class=\"text-[12px]\" *ngIf=\"formControl.invalid && formControl.touched\">\n {{ field.validation?.messages?.['required'] || 'This field is required' }}\n </mat-error>\n <mat-hint>{{to.description || 'Time in 24 hour format'}}</mat-hint>\n </mat-form-field>\n <span> : </span>\n <mat-form-field appearance=\"outline\" class=\"w-25\">\n <mat-label>Minute</mat-label>\n <input\n type=\"text\"\n matInput\n [readonly]=\"to.readonly || to.disabled\"\n [required]=\"to.required || false\"\n [disabled]=\"to.disabled || false\"\n [formControl]=\"minuteCtrl\"\n [matAutocomplete]=\"autoMinute\"\n />\n <mat-autocomplete #autoMinute=\"matAutocomplete\">\n <mat-option\n *ngFor=\"let minute of filteredMinutes$ | async\"\n [value]=\"minute\"\n >\n {{ minute }}\n </mat-option>\n </mat-autocomplete>\n <mat-error class=\"text-[12px]\" *ngIf=\"formControl.invalid && formControl.touched\">\n {{ field.validation?.messages?.['required'] || 'This field is required' }}\n </mat-error>\n </mat-form-field>\n </div>\n \n </div>\n `,\n})\nexport class FormlyFieldTimeComponent extends FieldType implements OnInit {\n get control(): FormControl {\n return this.formControl as FormControl;\n }\n\n hours: string[] = Array.from({ length: 24 }, (_, i) =>\n i.toString().padStart(2, '0')\n );\n minutes: string[] = Array.from({ length: 60 }, (_, i) =>\n i.toString().padStart(2, '0')\n );\n\n hourCtrl = new FormControl('');\n minuteCtrl = new FormControl('');\n\n filteredHours$!: Observable<string[]>;\n filteredMinutes$!: Observable<string[]>;\n\n ngOnInit() {\n const modelTime = this.formControl.value;\n if (modelTime && modelTime.includes(':')) {\n const [h, m] = modelTime.split(':');\n this.hourCtrl.setValue(h);\n this.minuteCtrl.setValue(m);\n }\n\n this.filteredHours$ = this.hourCtrl.valueChanges.pipe(\n startWith(this.hourCtrl.value || ''),\n map((value: any) => this._filter(this.hours, value))\n );\n\n this.filteredMinutes$ = this.minuteCtrl.valueChanges.pipe(\n startWith(this.minuteCtrl.value || ''),\n map((value: any) => this._filter(this.minutes, value))\n );\n\n this.hourCtrl.valueChanges.subscribe((value: any) => {\n if (!this.hours.includes(value)) {\n this.hourCtrl.setErrors({ invalidHour: true });\n } else {\n this.hourCtrl.setErrors(null);\n }\n this.updateModel();\n });\n\n this.minuteCtrl.valueChanges.subscribe((value: any) => {\n if (!this.minutes.includes(value)) {\n this.minuteCtrl.setErrors({ invalidMinute: true });\n } else {\n this.minuteCtrl.setErrors(null);\n }\n this.updateModel();\n });\n }\n\n private updateModel() {\n const h = this.hourCtrl.value as string;\n const m = this.minuteCtrl.value as string;\n\n if (this.hours.includes(h) && this.minutes.includes(m)) {\n this.formControl.setValue(`${h}:${m}`);\n } else {\n this.formControl.setValue(null); // Prevent saving invalid input\n }\n }\n\n private _filter(options: string[], value: string): string[] {\n const filterValue = (value || '').toLowerCase();\n return options.filter((option) =>\n option.toLowerCase().includes(filterValue)\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport {\n FieldTypeConfig,\n FormlyFieldConfig,\n FormlyModule,\n} from '@ngx-formly/core';\nimport { FieldType } from '@ngx-formly/material';\n\n@Component({\n selector: 'mu-helper-text',\n standalone: true,\n imports: [\n CommonModule,\n MatInputModule,\n FormlyModule,\n ReactiveFormsModule,\n FormsModule,\n MatFormFieldModule,\n MatSlideToggleModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n ],\n template: `\n <div class=\"helper-text-container\">\n <!-- Helper Mode - Show toggle and conditional content -->\n <div *ngIf=\"to['enableHelper']\">\n <mat-label>{{ to.label }}</mat-label>\n <div *ngIf=\"originalValue\" class=\"flex-row\">\n <span class=\"answer\">{{ originalValue }}</span>\n <mat-slide-toggle\n [(ngModel)]=\"checked\"\n (toggleChange)=\"toggleSlide()\"\n [disabled]=\"field.form?.disabled\"\n >{{ helperLabel }}</mat-slide-toggle\n >\n </div>\n\n <mat-form-field class=\"textarea\" appearance=\"outline\" *ngIf=\"checked\">\n <textarea\n matInput\n [formControl]=\"helperFormControl\"\n [readonly]=\"readonly || field.form?.disabled\"\n [disabled]=\"field.form?.disabled\"\n >\n </textarea>\n </mat-form-field>\n </div>\n\n <!-- Default Mode - Show field directly -->\n <div *ngIf=\"!to['enableHelper']\">\n <formly-field *ngIf=\"defaultFieldConfig\" [field]=\"defaultFieldConfig\">\n </formly-field>\n </div>\n </div>\n `,\n styles: `\n .helper-text-container{\n display: flex;\n flex-direction: column;\n }\n .answer{\n font-size: 12px;\n }\n .textarea{\n margin: 0px !important;\n width: 100%;\n }\n .flex-row{\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n }\n .w-full{\n width: 100%;\n }\n `,\n})\nexport class MnlFormHelperTextInputComponent\n extends FieldType<FieldTypeConfig>\n implements OnInit\n{\n checked = false;\n helperFormControl!: FormControl; // Separate form control for helper model\n\n get helperLabel() {\n return this.to['helperProps']?.['helperLabel'] || 'Need help?';\n }\n get defaultHelperText() {\n return this.to['helperProps']?.['defaultHelperText'] || '';\n }\n\n // Get value from primary model (answers)\n get originalValue() {\n const fieldKey = this.field.key as string;\n return this.field.model?.[fieldKey];\n }\n\n // Get/Set value from secondary model (helper)\n get helperModel() {\n return (\n this.to['helperModel'] ||\n this.props['helperModel'] ||\n this.options?.formState?.['helperModel']\n );\n }\n\n get helperKey() {\n return this.to['helperKey'] || this.field.key;\n }\n\n get currentHelperValue() {\n if (this.helperModel && this.helperKey) {\n return this.helperModel[this.helperKey as string];\n }\n return '';\n }\n\n set currentHelperValue(value: any) {\n if (this.helperModel && this.helperKey) {\n this.helperModel[this.helperKey as string] = value;\n }\n }\n\n get readonly() {\n return this.to['readonly'] || this.props['readonly'] || false;\n }\n\n defaultFieldConfig?: FormlyFieldConfig;\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit() {\n // Initialize helper form control with value from helper model\n this.helperFormControl = new FormControl(this.currentHelperValue || '');\n\n // Subscribe to changes in helper form control and update helper model\n this.helperFormControl.valueChanges.subscribe((value) => {\n this.currentHelperValue = value;\n // Emit helper model change to parent component\n this.options?.formState?.['onHelperModelChange']?.(this.helperModel);\n });\n\n this.setupDefaultField();\n\n if (this.to['enableHelper']) {\n this.setCorrectValue();\n this.determineInitialState();\n }\n if (this.currentHelperValue && this.currentHelperValue.trim() !== '') {\n this.checked = true;\n }\n }\n\n toggleSlide() {\n this.checked = !this.checked;\n if (this.checked) {\n // When toggle is opened, check if helper field is empty\n const currenthelper = this.helperFormControl.value;\n if (!currenthelper || currenthelper.trim() === '') {\n this.helperFormControl.setValue(this.defaultHelperText);\n }\n } else {\n this.helperFormControl.setValue('');\n }\n this.cdr.detectChanges();\n }\n\n setupDefaultField() {\n const fieldConfig = this.to['defaultFieldConfig'];\n if (fieldConfig) {\n // Get current value from model and sync with formControl\n const fieldKey = this.field.key as string;\n const modelValue = this.field.model?.[fieldKey];\n \n // Sync formControl value with model value if it exists\n if (modelValue !== undefined && modelValue !== null) {\n this.formControl.setValue(modelValue, { emitEvent: false });\n }\n \n // Create enhanced props with necessary fixes for production\n const enhancedProps = {\n ...fieldConfig.props,\n };\n \n // For select fields, add compareWith function to ensure proper value matching in production builds\n if (fieldConfig.type === 'select' && !enhancedProps['compareWith']) {\n enhancedProps['compareWith'] = (o1: any, o2: any) => o1 === o2;\n }\n \n this.defaultFieldConfig = {\n type: fieldConfig.type,\n key: this.field.key || fieldConfig.key || 'defaultKey',\n formControl: this.formControl,\n props: enhancedProps,\n wrappers: fieldConfig.wrappers || [],\n modelOptions: fieldConfig.modelOptions || this.field.modelOptions || {},\n validators: fieldConfig.validators || this.field.validators || {},\n asyncValidators:\n fieldConfig.asyncValidators || this.field.asyncValidators || {},\n hooks: fieldConfig.hooks || this.field.hooks || {},\n expressions: fieldConfig.expressions || this.field.expressions || {},\n hide: fieldConfig.hide !== undefined ? fieldConfig.hide : false,\n className: fieldConfig.className || this.field.className || '',\n fieldGroupClassName:\n fieldConfig.fieldGroupClassName ||\n this.field.fieldGroupClassName ||\n '',\n parent: this.field.parent,\n options: this.field.options,\n model: this.field.model,\n form: this.field.form,\n };\n }\n }\n\n determineInitialState() {\n // Auto-open helper based on scoring criteria\n switch (this.to['scoring']?.['criteria']) {\n case 'exactMatch':\n if (\n Array.isArray(this.to['scoring']?.['answer']) &&\n !this.to['scoring']?.['answer'].includes(this.originalValue)\n ) {\n this.checked = true;\n }\n break;\n\n case 'range':\n const answer = this.originalValue;\n const num = typeof answer === 'number' ? answer : Number(answer);\n\n const correct =\n Number.isFinite(num) &&\n num >= this.to['scoring']?.['answer'].min &&\n num <= this.to['scoring']?.['answer'].max;\n\n if (!correct) {\n this.checked = true;\n }\n break;\n }\n }\n\n setCorrectValue() {\n const currentHelperValue = this.currentHelperValue;\n\n // If helper already has a value (user edited), don't override\n if (currentHelperValue && currentHelperValue.trim() !== '') {\n return;\n }\n\n switch (this.to['scoring']?.['criteria']) {\n case 'attempted':\n // For attempted, set defaultHelperText\n this.helperFormControl.setValue('');\n break;\n\n case 'exactMatch':\n if (Array.isArray(this.to['scoring']?.['answer'])) {\n if (this.to['scoring']?.['answer'].includes(this.originalValue)) {\n // Answer is correct - set empty value in helper\n this.helperFormControl.setValue('');\n } else {\n // Answer is incorrect - set defaultHelperText in helper\n this.helperFormControl.setValue(this.defaultHelperText);\n }\n }\n break;\n\n case 'range':\n const answer = this.originalValue;\n const num = typeof answer === 'number' ? answer : Number(answer);\n\n const correct =\n Number.isFinite(num) &&\n num >= this.to['scoring']?.['answer'].min &&\n num <= this.to['scoring']?.['answer'].max;\n\n if (correct) {\n // Answer is correct - set empty value in helper\n this.helperFormControl.setValue('');\n } else {\n // Answer is incorrect - set defaultHelperText in helper\n this.helperFormControl.setValue(this.defaultHelperText);\n }\n break;\n\n default:\n break;\n }\n }\n}\n","import { importProvidersFrom } from '@angular/core';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule, Validators } from '@angular/forms';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { CustomInputComponent } from '../types/custom-input.component';\nimport { FormFieldWrapperComponent } from '../wrappers/form-field-wrapper.component';\nimport { emailValidator } from '../validators/custom-email-validator';\nimport { FormlyFieldTabsComponent } from '../types/tabs.types';\nimport { FormlyFieldExpansionPanelComponent } from '../types/expansion-panel.types';\nimport { FormlyFieldGridComponent } from '../types/grid.type';\nimport { MultiSelectAutocompleteComponent } from '../types/multi-select-autocomplete';\nimport { FormlyFieldStepperComponent } from '../types/stepper.type';\nimport { FormlyFieldTableComponent } from '../types/table.types';\nimport { AutocompleteTypeComponent } from '../types/autocomplete-type.component';\nimport { FormlyButtonComponent } from '../types/button.type';\nimport { FormlyFieldCountryCodeComponent } from '../types/country-code-input.type';\nimport { FormlySelectAutocompleteComponent } from '../types/select-autocomplete.type';\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { CommonsModule, httpLoaderFactory, MNL_TRANSLATION_RESOURCE } from '@muraai/mnl-commons';\nimport { phoneValidation } from '../validators/phone-number-validator';\nimport { TabularFormComponent } from '../types/tabular-form.type';\nimport { HttpBackend, provideHttpClient } from '@angular/common/http';\nimport { FormlyMultiSelectCheckboxAutocompleteComponent } from '../types/multi-select-checkbox.component';\nimport {FormlyMatDatepickerModule} from '@ngx-formly/material/datepicker';\nimport { DateAdapter, MatNativeDateModule } from '@angular/material/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { selectValidator } from '../validators/select-validator';\nimport { SelectApiAutoCompleteComponent } from '../types/select-api-auto-complete.component';\nimport { gstValidator } from '../validators/gst-validator';\nimport { panValidator } from '../validators/pan-validator';\nimport { FormlyFieldPanelComponent } from '../types/formly-field-panel.type';\nimport { SelectAutocompleteComponent } from '../types/select-autocomplete-redefined.component';\nimport { FormlyWrapperAddonsComponent } from '../wrappers/prefix-suffix-wrapper.component';\nimport { addonsExtension } from '../wrappers/prefix-sufix-extension.component';\nimport { WithOldValueWrapperComponent } from '../wrappers/formly-wrapper-with-old-value.component';\nimport { CommonModule } from '@angular/common';\nimport { FormlyCommentInputComponent } from '../types/comments.type';\nimport { CustomFormlyRadioComponent } from '../types/radio.type';\nimport { CustomFormlyMatInputComponent } from '../types/input.type';\nimport { ActionableFormlyFieldGridComponent } from '../types/grid-actionable.type';\nimport { FormlyFileUploadComponent } from '../types/upload-file';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { CustomDate } from '../types/custom-date.type';\nimport { normalEmailValidator } from '../validators/normal-email-validator';\nimport { FormlyFieldScrollableTabsComponent } from '../types/scrollable-tabs.types';\nimport { npiValidator } from '../validators/npi-validator';\nimport { tinOrSsnValidator } from '../validators/tinSsn-validator';\nimport { einValidator } from '../validators/ein-validators';\nimport { FormlyDescriptionWrapperComponent } from '../wrappers/form-field-description-wrapper.component';\nimport { FormlyFieldTimeComponent } from '../types/date-format.type';\nimport { MnlFormHelperTextInputComponent } from '../types/mu-helper-text.type';\n\nexport const mnlFormProviders = [\n importProvidersFrom(\n CommonsModule.forRoot(),\n CommonModule,\n ReactiveFormsModule,\n FormlyModule.forRoot({\n types: [\n { name: 'custom-input', component: CustomInputComponent },\n {name: 'mu-panel', component: FormlyFieldPanelComponent},\n { name: 'mu-tabs', component: FormlyFieldTabsComponent },\n { name: 'mu-exp-panel', component: FormlyFieldExpansionPanelComponent },\n { name: 'mu-table', component: FormlyFieldTableComponent },\n // { name: 'mu-autocomplete', component: AutocompleteTypeComponent, wrappers: ['form-field'] },\n // { name: 'mu-multi-select-autocomplete', component: MultiSelectAutocompleteComponent, wrappers: ['form-field'] },\n { name: 'mu-stepper', component: FormlyFieldStepperComponent, wrappers: [] },\n { name: 'mu-grid', component: FormlyFieldGridComponent,\n defaultOptions: {\n props: {\n width: '100%',\n height: '100%',\n },\n },\n },\n { name: 'mu-button', component: FormlyButtonComponent },\n { name: 'mu-country-code-phone', component: FormlyFieldCountryCodeComponent },\n { name: 'mu-select-autocomplete', component: FormlySelectAutocompleteComponent},\n { name: 'mu-tabular-form', component: TabularFormComponent },\n {\n name: 'mu-multi-checkbox-autocomplete',\n component: FormlyMultiSelectCheckboxAutocompleteComponent,\n },\n // { name: 'mu-select-api-autocomplete', component: SelectApiAutoCompleteComponent },\n // { name: 'mu-select-auto-complete', component: SelectAutocompleteComponent},\n { name: 'mu-comments', component: FormlyCommentInputComponent },\n { name: 'mu-radio', component: CustomFormlyRadioComponent},\n { name: 'mu-input', component: CustomFormlyMatInputComponent},\n { name: 'mu-actionable-grid', component: ActionableFormlyFieldGridComponent,\n defaultOptions: {\n props: {\n width: '100%'\n },\n },\n },\n { name: 'mu-upload-file', component: FormlyFileUploadComponent },\n { name: 'mu-scroll-tabs', component: FormlyFieldScrollableTabsComponent },\n { name: 'mu-custom-time', component: FormlyFieldTimeComponent },\n { name: 'mu-helper-text', component: MnlFormHelperTextInputComponent },\n ],\n wrappers: [\n { name: 'mu-form-field', component: FormFieldWrapperComponent },\n { name: 'mu-with-old-value', component: WithOldValueWrapperComponent },\n { name: 'addons', component: FormlyWrapperAddonsComponent },\n { name: 'description', component: FormlyDescriptionWrapperComponent }\n ],\n extensions: [{ name: 'addons', extension: { onPopulate: addonsExtension } }],\n validators: [\n { name: 'email', validation: emailValidator },\n {\n name: 'maxlength',\n validation: Validators.maxLength(30),\n },\n {name: 'gst', validation: gstValidator},\n {name: 'pan', validation: panValidator},\n { name: 'dunsNumber', validation: Validators.pattern(/^\\d{9}$/) },\n { name: 'aadharNumber', validation: Validators.pattern(/^\\d{12}$/) },\n { name: 'telexNum', validation: Validators.pattern(/^[0-9]{1,30}$/) },\n {name: 'accountNum', validation: Validators.pattern(/^[a-zA-Z0-9]{1,19}$/)},\n {name: 'postalCodePattern', validation: Validators.pattern(/^\\d{1,10}$/)},\n {name: 'faxPattern', validation: Validators.pattern(/^\\d{1,30}$/)},\n {name: 'ifscCode', validation: Validators.pattern(/^[a-zA-Z0-9]{1,11}$/)},\n {name: 'pattern', validation: Validators.pattern(/^[a-zA-Z0-9\\s\\-:\\/&.,()]*$/)},\n {name: 'phoneValidation', validation: phoneValidation },\n {name: 'selectNotAvailTinNoPe', validation: selectValidator },\n {name: 'onlyTenDigits', validation: Validators.pattern(/^\\d{10}$/)},\n {name: 'udyamPattern', validation: Validators.pattern(/^UDYAM-[A-Z]{2}-\\d{2}-\\d{7}$/)},\n {name: 'unitsPattern', validation: Validators.pattern(/^[A-Za-z\\s]{1,20}$/)},\n {name: 'normalEmail', validation: normalEmailValidator},\n {name: 'validateTwoDecimals', validation: Validators.pattern(/^\\d*(\\.\\d{1,2})?$/)},\n {\n name: 'percentageValidation',\n validation: Validators.pattern(/^(100(\\.0{1,2})?|(\\d{1,2}(\\.\\d{1,2})?))$/),\n },\n {\n name: 'urlValidity',\n validation: Validators.pattern(/^(https?:\\/\\/)?([a-zA-Z0-9-]+\\.)+(com|org|net|gov|edu|io|co|uk|in|au|de|fr|ca|jp|cn|ru|br|us|info|biz|me|tech|xyz|online|store|blog)(:\\d+)?(\\/[^\\s]*)?$/)\n },\n {name: 'npi', validation: npiValidator},\n {name: 'tinOrSsn', validation: tinOrSsnValidator},\n {name: 'ein', validation: einValidator},\n {name: 'sicValidator', validation: Validators.pattern(/^(?!0000)\\d{4}$/)},\n {name: 'tinNumber', validation: Validators.pattern(/^[a-zA-Z0-9\\s-]{5,20}$/)},\n {name: 'gstHstNumber', validation: Validators.pattern(/^[a-zA-Z0-9]{15}$/)},\n {name: 'qstNumber', validation: Validators.pattern(/^[a-zA-Z0-9]{9}$/)}\n ],\n validationMessages: [\n {name: 'phoneValidation', message: 'Invalid mobile number for the selected country.' },\n {name: 'selectNotAvailTinNoPe', message: 'Select the fields not available in TIN / No PE certificate is required' },\n ]\n }),\n FormlyMaterialModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: httpLoaderFactory,\n deps: [HttpBackend, MNL_TRANSLATION_RESOURCE],\n },\n }),\n FormlyMatDatepickerModule,\n MatNativeDateModule,\n MatInputModule,\n MatDatepickerModule\n ),\n {\n provide: DateAdapter,\n useClass: CustomDate,\n },\n provideHttpClient()\n];","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { CustomFormlyFieldConfig } from '../../public-api';\n\n@Injectable({ providedIn: 'root' })\nexport class ScoringService {\n\n updateScore(model: any, fields: FormlyFieldConfig[]) {\n const result = this.calculateScore(model, fields);\n return result;\n }\n\n private calculateScore(model: any, fields: FormlyFieldConfig[] | CustomFormlyFieldConfig[]) {\n let totalScore = 0;\n let categoryResults: Record<string, { score: number; weight: number }> = {};\n\n const processCategory = (category: FormlyFieldConfig | CustomFormlyFieldConfig) => {\n const categoryLabel = category.props?.label;\n const categoryWeight = category.props?.weight ?? 0;\n\n // Only treat as scoring category if it has a label + weight\n if (!categoryLabel || !categoryWeight) {\n // Still need to go deeper in case children have categories\n if (category.fieldGroup?.length) {\n category.fieldGroup.forEach(processCategory);\n }\n return;\n }\n\n const questions = (category.fieldGroup || []).filter(q => q.props?.scoring);\n if (questions.length === 0) return;\n\n const scoredQuestions = questions.filter(q => q.props?.hasScoreImpact !== false);\n if (scoredQuestions.length === 0) {\n categoryResults[categoryLabel] = {\n score: 0,\n weight: categoryWeight,\n };\n return;\n }\n\n const perQuestionWeight = categoryWeight / scoredQuestions.length;\n let categoryScore = 0;\n\n for (const q of scoredQuestions) {\n const parentKey = category.key as any;\n const nestedPath = Array.isArray(parentKey)\n ? [...(parentKey as any[]), q.key as any]\n : [parentKey as any, q.key as any];\n const answer = this.getNestedValue(model, nestedPath as any);\n\n const scoring = q.props?.scoring;\n if (!scoring) continue;\n\n let correct = false;\n\n switch (scoring.criteria) {\n case 'attempted':\n correct =\n answer !== null &&\n answer !== undefined &&\n (typeof answer === 'string' ? answer.trim() !== '' : true);\n break;\n\n case 'exactMatch':\n if (Array.isArray(scoring.answer)) {\n correct = scoring.answer.includes(answer);\n }\n break;\n\n case 'range':\n const num = typeof answer === 'number' ? answer : Number(answer);\n correct =\n Number.isFinite(num) &&\n num >= scoring.answer.min &&\n num <= scoring.answer.max;\n break;\n }\n\n if (correct) {\n categoryScore += perQuestionWeight;\n }\n }\n\n totalScore += categoryScore;\n categoryResults[categoryLabel] = {\n score: categoryScore,\n weight: categoryWeight,\n };\n };\n\n // start recursive walk\n fields.forEach(processCategory);\n\n return {\n totalScore,\n categoryResults,\n };\n}\n\n\n private getNestedValue(obj: any, key: string | number | (string | number)[]): any {\n if (Array.isArray(key)) {\n return key.reduce((current, k) => current?.[k], obj);\n }\n return obj?.[key];\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonsModule } from '@muraai/mnl-commons';\nimport { FormlyFormOptions, FormlyModule } from '@ngx-formly/core';\nimport { FormlyMatCheckboxModule } from '@ngx-formly/material/checkbox';\nimport { FormlyMatInputModule } from '@ngx-formly/material/input';\nimport { FormlyMatRadioModule } from '@ngx-formly/material/radio';\nimport { FormlyMatTextAreaModule } from '@ngx-formly/material/textarea';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { of } from 'rxjs';\nimport { CustomFormlyFieldConfig } from '../models/custom-form-field.model';\nimport { ScoringService } from '../services/scoring.service';\n\n@Component({\n selector: 'mnl-form',\n standalone: true,\n imports: [\n CommonModule,\n CommonsModule,\n FormlyModule,\n ReactiveFormsModule,\n FormsModule,\n TranslateModule,\n FormlyMatTextAreaModule,\n FormlyMatInputModule,\n FormlyMatCheckboxModule,\n FormlyMatRadioModule,\n ],\n templateUrl: './formly-lib.component.html',\n styleUrl: './formly-lib.component.scss',\n})\nexport class MnlFormLibComponent implements OnInit {\n @Input()\n readonly = false;\n\n @Input()\n form!: FormGroup;\n\n @Input()\n fields!: CustomFormlyFieldConfig[];\n\n @Input()\n model: any;\n\n @Input()\n helperModel: any;\n\n @Input()\n options!: FormlyFormOptions;\n\n @Input()\n userRoles!: string[];\n\n @Input()\n userCountries!: string[];\n\n @Output()\n noOfTabs = new EventEmitter();\n\n @Input()\n oldValues: any;\n\n @Input()\n showOldValues!: boolean;\n\n @Output()\n scoreChange = new EventEmitter<any>();\n\n @Output()\n helperModelChange = new EventEmitter<any>();\n\n formPrepared = false;\n totalTabs = 0;\n constructor(\n private translateService: TranslateService,\n private scoring: ScoringService\n ) {\n this.translateService.setDefaultLang('en');\n }\n ngOnInit(): void {\n if (this.fields) {\n this.applyReadonlyToFields(this.fields);\n this.filterFieldGroupsByRolesAndCountries(this.fields);\n this.form.updateValueAndValidity();\n this.formPrepared = true;\n this.getNumberOfActiveTabs(this.fields);\n this.setAutocompleteSingleOptionByDefault(this.fields);\n this.options = {\n formState: {\n ...this.options.formState,\n showOldValues: this.showOldValues,\n oldValues: this.oldValues,\n helperModel: this.helperModel,\n onHelperModelChange: this.onHelperModelChange.bind(this),\n },\n };\n\n if (this.form.disabled) {\n this.form.disable({ emitEvent: false });\n }\n }\n }\n\n onModelChange(model: any) {\n const result = this.scoring.updateScore(model, this.fields);\n this.scoreChange.emit(result);\n }\n\n onHelperModelChange(helperModel: any) {\n this.helperModelChange.emit(helperModel);\n }\n\n setAutocompleteSingleOptionByDefault(fields: any) {\n fields.forEach((field: any) => {\n if (field.type === 'mu-select-autocomplete') {\n field.hooks = {\n onInit: (field: any) => {\n const formControl = field.formControl;\n const options = field.props?.options || [];\n\n if (Array.isArray(options)) {\n this.setOptionByDefault(formControl, field, options);\n } else {\n (options || of([])).subscribe((options: any) => {\n this.setOptionByDefault(formControl, field, options);\n });\n }\n },\n };\n }\n if (field.fieldGroup) {\n this.setAutocompleteSingleOptionByDefault(field.fieldGroup);\n }\n });\n }\n\n setOptionByDefault(formControl: any, field: any, options: any) {\n if (formControl && field.props && field.props.options) {\n if (options.length === 1) {\n formControl.setValue(options[0].value);\n }\n\n field.props.optionsChange?.subscribe((updatedOptions: any[]) => {\n if (updatedOptions.length === 1 && formControl) {\n formControl.setValue(updatedOptions[0].value);\n }\n });\n }\n }\n getNumberOfActiveTabs(fields: any) {\n fields.forEach((field: any) => {\n if (field.type === 'mu-tabs') {\n this.totalTabs = field.fieldGroup?.length || 0;\n this.noOfTabs.emit(this.totalTabs);\n }\n if (field.fieldGroup) {\n this.getNumberOfActiveTabs(field.fieldGroup);\n }\n });\n }\n\n applyReadonlyToFields(\n fields: CustomFormlyFieldConfig[]\n ): CustomFormlyFieldConfig[] {\n return fields.map((field) => {\n if (field.fieldGroup) {\n this.applyReadonlyToFields(field.fieldGroup);\n } else {\n field.props = {\n ...(field.props || {}),\n readonly:\n field.props?.readonly !== undefined\n ? field.props.readonly\n : this.readonly,\n };\n }\n return field;\n });\n }\n\n filterFieldGroupsByRolesAndCountries(fields: CustomFormlyFieldConfig[]) {\n return fields\n .map((field: any) => {\n if (field.fieldGroup && !field.vissibleCountries) {\n field.fieldGroup = this.filterFieldGroupsByRolesAndCountries(\n field.fieldGroup\n );\n }\n // const hasValidRole = field.vissibleRoles\n // ? field.vissibleRoles.some((role: any) => this.userRoles?.includes(role))\n // : true;\n // const hasValidCountry = field.vissibleCountries\n // ? field.vissibleCountries.some((country: any) => this.userCountries?.includes(country))\n // : true;\n\n const validGroup = field;\n if (validGroup && field.fieldGroup) {\n field.fieldGroup = this.filterFieldGroupsByRolesAndCountries(\n field.fieldGroup\n );\n }\n if (validGroup == null) {\n this.removeValidationsForFilteredFields(field);\n }\n if (!validGroup && field.props?.required) {\n field.props.required = false;\n }\n return validGroup;\n })\n .filter((field: any) => field !== null);\n }\n\n removeValidationsForFilteredFields(fields: any) {\n fields?.fieldGroup?.forEach((field: any) => {\n if (field.fieldGroup) {\n this.removeValidationsForFilteredFields(field);\n }\n if (this.form.get(field.key)) {\n this.form.removeControl(field.key);\n }\n });\n }\n}\n","@if(formPrepared) {\n<formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n (modelChange)=\"onModelChange($event)\"\n class=\"mnl-formly-form\"\n></formly-form>\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { MatStepper } from '@angular/material/stepper';\nimport {\n SubWorkflowStatusSteps,\n WorkflowStatusSteps,\n} from '../models/workflow-status.model';\n\n@Component({\n selector: 'lib-workflow-status',\n templateUrl: './workflow-status.component.html',\n styleUrl: './workflow-status.component.scss',\n})\nexport class WorkflowStatusComponent implements OnChanges, AfterViewInit {\n @ViewChild('stepper')\n stepper!: MatStepper;\n @ViewChild('subStepper')\n subStepper!: MatStepper;\n @Input() workflowSteps!: WorkflowStatusSteps[];\n\n @Input() completedBackgroundColor: string = 'bg-[#008000]';\n @Input() completedTextColor: string = 'text-[#ffffff]';\n @Input() inProgressTextColor: string = 'text-[#c1c14e]';\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.setStepperStates();\n }\n\n ngAfterViewInit(): void {\n this.setStepperStates();\n }\n\n setStepperStates() {\n if (this.stepper && this.workflowSteps) {\n this.workflowSteps.forEach((item: WorkflowStatusSteps, index: number) => {\n this.setActive(item.state, index);\n if (this.subStepper && item.children) {\n item.children.forEach(\n (item: SubWorkflowStatusSteps, index: number) => {\n this.setActiveSubStepper(item.state, index);\n }\n );\n }\n });\n }\n this.cdr.detectChanges();\n }\n\n setActive(status: string, index: number) {\n if (this.stepper && status === 'in-progress') {\n this.stepper.selectedIndex = index;\n this.cdr.detectChanges();\n }\n }\n setActiveSubStepper(status: string, index: number) {\n if (this.subStepper && status === 'in-progress') {\n this.subStepper.selectedIndex = index;\n this.cdr.detectChanges();\n }\n }\n\n isCompleted(data: any): boolean {\n if (data.state === 'completed') {\n return true;\n }\n return false;\n }\n}\n","<div class=\"max-h-[300px] overflow-y-auto overflow-x-auto sm:overflow-visible\">\n\t<div class=\"w-full rounded-lg\">\n\t\t<div class=\"flex flex-col md:flex-row md:items-center md:justify-start gap-8\">\n\t\t\t<ng-container *ngFor=\"let step of workflowSteps; let i = index\">\n\t\t\t\t<ng-container *ngIf=\"step.children?.length\">\n\t\t\t\t\t<div class=\"flex flex-col items-center mt-4 gap-4\">\n\t\t\t\t\t\t<ng-container *ngFor=\"let child of step.children\">\n\t\t\t\t\t\t\t<div class=\"flex flex-col items-center\">\n\t\t\t\t\t\t\t\t<div class=\" flex font-bold\"\n\t\t\t\t\t\t\t\t\t[ngClass]=\"{'status-icon-container-in-progress': child.state === 'in-progress',}\">\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"child.state === 'completed'\">\n\t\t\t\t\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\t\t\t\t\tclass=\"rounded-2xl decoration-white\" [ngClass]=\"[completedBackgroundColor, completedTextColor]\">done</mat-icon>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"child.state === 'cancelled'\">\n\t\t\t\t\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\t\t\t\t\tclass=\"rounded-2xl decoration-red text-[#df281b] bg-[#ffffff]\">cancel</mat-icon>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"child.state === 'in-progress'\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"in-progress\" [ngClass]=\"[inProgressTextColor]\">\n\t\t\t\t\t\t\t\t\t\t\t<mat-icon class=\"font-size-18\" [ngClass]=\"[inProgressTextColor]\" >pending</mat-icon>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"child.state === 'pending'\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"in-progress\">\n\t\t\t\t\t\t\t\t\t\t\t<mat-icon class=\"rounded-full border-4 font-size-16\">pending</mat-icon>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"mt-2 text-center text-gray-800 text-xs text-sm font-medium font-size-10\">\n\t\t\t\t\t\t\t\t\t{{ child.statusName }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div *ngIf=\"child?.roleName\"\n\t\t\t\t\t\t\t\t\tclass=\"mt-1 text-center text-gray-800 text-xs text-sm font-medium font-size-10\">\n\t\t\t\t\t\t\t\t\t({{ child?.roleName }})\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-container *ngIf=\"!step.children?.length\">\n\t\t\t\t\t<div class=\"flex flex-col items-center\">\n\t\t\t\t\t\t<div class=\"flex font-bold\" [ngClass]=\"{\n\t\t\t\t\t\t'status-icon-container-in-progress': step.state === 'in-progress',\n\t\t\t\t\t\t'status-icon-container-pending': step.state === 'pending'\n\t\t\t\t\t }\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"step.state === 'completed'\">\n\t\t\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\t\t\tclass=\"rounded-2xl decoration-white\" [ngClass]=\"[completedBackgroundColor, completedTextColor]\">done</mat-icon>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"step.state === 'cancelled'\">\n\t\t\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\t\t\tclass=\"rounded-2xl decoration-red text-[#df281b] bg-[#ffffff]\">cancel</mat-icon>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"step.state === 'in-progress'\">\n\t\t\t\t\t\t\t\t<div class=\"in-progress\" [ngClass]=\"[inProgressTextColor]\">\n\t\t\t\t\t\t\t\t\t<mat-icon class=\"font-size-18\" [ngClass]=\"[inProgressTextColor]\">pending</mat-icon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"step.state === 'pending'\">\n\t\t\t\t\t\t\t\t<div class=\"in-progress\">\n\t\t\t\t\t\t\t\t\t<mat-icon class=\"rounded-full border-4 font-size-16\">pending</mat-icon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"mt-2 text-center text-gray-800 text-sm font-medium font-size-10\">\n\t\t\t\t\t\t\t{{ step.statusName }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf=\"step?.roleName\"\n\t\t\t\t\t\t\tclass=\"mt-1 text-center text-gray-800 text-sm font-medium font-size-9\">\n\t\t\t\t\t\t\t({{ step?.roleName }})\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-container>\n\t\t\t\t<div *ngIf=\"i < workflowSteps.length - 1\" class=\"bg-gray-500 mx-auto transition-all duration-300\"\n\t\t\t\t\t[ngClass]=\"{'w-16 h-[1px]': true}\">\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t</div>\n\t</div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { WorkflowStatusComponent } from './workflow-status.component';\nimport { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';\n\n@NgModule({\n declarations: [WorkflowStatusComponent],\n imports: [\n CommonModule,\n MatStepperModule,\n MatCardModule,\n MatIconModule,\n MatBadgeModule,\n MatTooltipModule,\n ],\n exports: [WorkflowStatusComponent],\n providers: [\n {\n provide: STEPPER_GLOBAL_OPTIONS,\n useValue: { displayDefaultIndicatorType: false },\n },\n ],\n})\nexport class WorkflowStatusModule {}\n","/*\n * Public API Surface of formly-lib\n */\n\nexport * from './lib/formly-lib/formly-standalone.module';\nexport * from './lib/formly-lib/formly-lib.component';\nexport * from './lib/models/custom-form-field.model';\nexport * from './lib/models/workflow-status.model';\nexport * from './lib/workflow-status/workflow-status.component';\nexport * from './lib/workflow-status/ workflow-status.module';\nexport * from './lib/confirmation-dialog/confirmation-dialog.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i2","i1","i3","i5","i7","findNestedKey","i6","FieldType","i8","startWith","map","take","i9","i10","i2.ScoringService"],"mappings":"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"}
1
+ {"version":3,"file":"muraai-mnl-form.mjs","sources":["../../../../projects/form-lib/src/lib/types/custom-input.component.ts","../../../../projects/form-lib/src/lib/wrappers/form-field-wrapper.component.ts","../../../../projects/form-lib/src/lib/validators/custom-email-validator.ts","../../../../projects/form-lib/src/lib/types/tabs.types.ts","../../../../projects/form-lib/src/lib/types/expansion-panel.types.ts","../../../../projects/form-lib/src/lib/types/grid.type.ts","../../../../projects/form-lib/src/lib/types/stepper.type.ts","../../../../projects/form-lib/src/lib/types/table.types.ts","../../../../projects/form-lib/src/lib/types/button.type.ts","../../../../projects/form-lib/src/lib/types/country-code-input.type.ts","../../../../projects/form-lib/src/lib/types/select-autocomplete.type.ts","../../../../projects/form-lib/src/lib/validators/phone-number-validator.ts","../../../../projects/form-lib/src/lib/confirmation-dialog/confirmation-dialog.component.ts","../../../../projects/form-lib/src/lib/confirmation-dialog/confirmation-dialog.component.html","../../../../projects/form-lib/src/lib/types/tabular-form-dialog.component.ts","../../../../projects/form-lib/src/lib/utils/formly.utils.ts","../../../../projects/form-lib/src/lib/types/view-file-dialog.component.ts","../../../../projects/form-lib/src/lib/types/tabular-form.type.ts","../../../../projects/form-lib/src/lib/types/multi-select-checkbox.component.ts","../../../../projects/form-lib/src/lib/validators/select-validator.ts","../../../../projects/form-lib/src/lib/validators/gst-validator.ts","../../../../projects/form-lib/src/lib/validators/pan-validator.ts","../../../../projects/form-lib/src/lib/types/formly-field-panel.type.ts","../../../../projects/form-lib/src/lib/wrappers/prefix-suffix-wrapper.component.ts","../../../../projects/form-lib/src/lib/wrappers/prefix-sufix-extension.component.ts","../../../../projects/form-lib/src/lib/wrappers/formly-wrapper-with-old-value.component.ts","../../../../projects/form-lib/src/lib/types/comments.type.ts","../../../../projects/form-lib/src/lib/types/radio.type.ts","../../../../projects/form-lib/src/lib/types/input.type.ts","../../../../projects/form-lib/src/lib/types/grid-formly-cell.component.ts","../../../../projects/form-lib/src/lib/types/action-button-renderer.component.ts","../../../../projects/form-lib/src/lib/types/grid-actionable.type.ts","../../../../projects/form-lib/src/lib/types/upload-file.ts","../../../../projects/form-lib/src/lib/types/custom-date.type.ts","../../../../projects/form-lib/src/lib/validators/normal-email-validator.ts","../../../../projects/form-lib/src/lib/types/scrollable-tabs.types.ts","../../../../projects/form-lib/src/lib/validators/npi-validator.ts","../../../../projects/form-lib/src/lib/validators/tinSsn-validator.ts","../../../../projects/form-lib/src/lib/validators/ein-validators.ts","../../../../projects/form-lib/src/lib/wrappers/form-field-description-wrapper.component.ts","../../../../projects/form-lib/src/lib/types/date-format.type.ts","../../../../projects/form-lib/src/lib/types/mu-helper-text.type.ts","../../../../projects/form-lib/src/lib/formly-lib/formly-standalone.module.ts","../../../../projects/form-lib/src/lib/services/scoring.service.ts","../../../../projects/form-lib/src/lib/formly-lib/formly-lib.component.ts","../../../../projects/form-lib/src/lib/formly-lib/formly-lib.component.html","../../../../projects/form-lib/src/lib/workflow-status/workflow-status.component.ts","../../../../projects/form-lib/src/lib/workflow-status/workflow-status.component.html","../../../../projects/form-lib/src/lib/workflow-status/ workflow-status.module.ts","../../../../projects/form-lib/src/public-api.ts","../../../../projects/form-lib/src/muraai-mnl-form.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\nimport { FormControl } from '@angular/forms';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'mu-formly-field-custom-input',\n standalone: true,\n imports: [CommonModule, MatInputModule, FormsModule, FormlyModule, ReactiveFormsModule, FormlyMaterialModule],\n template: `\n <input\n matInput\n *ngIf=\"to.type !== 'textarea'; else textarea\"\n [type]=\"to.type || 'text'\"\n [formControl]=\"control\"\n [formlyAttributes]=\"field\"\n class=\"form-control\"\n />\n <ng-template #textarea>\n <textarea\n matInput\n [formControl]=\"control\"\n [formlyAttributes]=\"field\"\n class=\"form-control\"\n ></textarea>\n </ng-template>\n `,\n})\nexport class CustomInputComponent extends FieldType {\n get control(): FormControl {\n return this.formControl as FormControl;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldWrapper, FormlyModule } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\n\n@Component({\n selector: 'mu-formly-wrapper-form-field',\n standalone: true,\n imports: [CommonModule, FormsModule, FormlyModule, ReactiveFormsModule, FormlyMaterialModule],\n template: `\n <label *ngIf=\"to.label\" [for]=\"id\">{{ to.label }}</label>\n <ng-container #fieldComponent></ng-container>\n <div *ngIf=\"showError\" class=\"invalid-feedback\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n `,\n})\nexport class FormFieldWrapperComponent extends FieldWrapper{\n\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function emailValidator(control: AbstractControl) {\n const value = control.value || '';\n const emailPattern = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/; // Simple email regex pattern\n const restrictedDomains = ['lupindiagnostics.com', 'lupin.com', 'atharvability.com', 'lupindigitalhealth.com'];\n\n if (!value || emailPattern.test(value)) {\n if (value) {\n const domain = value.substring(value.lastIndexOf('@') + 1).toLowerCase();\n if (restrictedDomains.includes(domain)) {\n return { restrictedDomain: true }; \n }\n }\n return null; \n } else {\n return { email: true };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, OnInit, ViewChild } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabChangeEvent, MatTabGroup, MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Router } from '@angular/router';\nimport { FieldType, FieldTypeConfig, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mu-formly-field-tabs',\n standalone: true,\n imports: [\n MatTabsModule,\n ReactiveFormsModule,\n FormlyModule,\n MatButtonModule,\n CommonModule,\n TranslateModule,\n MatIconModule,\n MatTooltipModule\n ],\n template: `\n <mat-tab-group #tabGroup (selectedTabChange)=\"onTabChange($event)\">\n @for(tab of field.fieldGroup; track tab; let i = $index; let last =\n $last){\n <mat-tab\n [disabled]=\"\n i !== 0 && !isValid(field.fieldGroup ? field.fieldGroup[i - 1] : {}) && tab?.props?.['disableTabs'] && this.showSubmitBtn\n \"\n *ngIf=\"!tab?.props?.['hideTab']\"\n >\n <ng-template mat-tab-label>\n <span [ngStyle]=\"{'color': (!isValid(field.fieldGroup ? field.fieldGroup[i] : {}) && options.formState?.showValidationError) ? 'red' : 'black'}\"\n [ngStyle]=\"{'color': getColorForTheTabChanged(tab)}\"\n >\n {{ tab?.props?.label || '' }}\n </span>\n <mat-icon matTooltip=\"{{'EDITED_TAB' | translate}}\" *ngIf=\"isTabDataChanged(tab) && !(!isValid(field.fieldGroup ? field.fieldGroup[i] : {}) && options.formState?.showValidationError)\" [ngStyle]=\"{'color': getColorForTheTabChanged(tab)}\">edit</mat-icon>\n <mat-icon matTooltip=\"{{'MANDATORY_FIELDS_TOOLTIP' | translate}}\" *ngIf=\"!isValid(field.fieldGroup ? field.fieldGroup[i] : {}) && options.formState?.showValidationError\" class=\"error-step\">error</mat-icon>\n </ng-template>\n <div class=\"relative overflow-y-auto overflow-x-hidden form-content\">\n <formly-field [field]=\"tab\"></formly-field>\n </div>\n @if(tab?.props?.['showNextPrevious']) {\n <div class=\"relative bottom-2 flex justify-end mr-2\">\n @if(i===0 && field.props['showBtnForPreviousForm']) {\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"goToPreviousForm(tabGroup)\"\n class=\"flex mr-2 ml-2 mt-5\"\n >\n {{ 'BUTTON.PREVIOUS' | translate }}\n </button>\n }\n @if (i !== 0) {\n <button\n mat-flat-button\n color=\"primary\"\n [disabled]=\"isFirstTab(tabGroup)\"\n type=\"button\"\n (click)=\"previousTab(tabGroup)\"\n class=\"flex mr-2 ml-2 mt-5\"\n >\n {{ 'BUTTON.PREVIOUS' | translate }}\n </button>\n } @if (!last) {\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n [disabled]=\"!isValid(tab) && showSubmitBtn\"\n (click)=\"nextTab(tabGroup)\"\n class=\"flex mt-5\"\n >\n {{ 'BUTTON.NEXT' | translate }}\n </button>\n }\n @if(last && showSubmitBtn) {\n <button\n mat-flat-button\n color=\"primary\"\n type=\"submit\"\n [disabled]=\"!form.valid\"\n class=\"flex mt-5 submit-btn\"\n >\n {{ field.props['SUBMIT_BTN_NAME'] | translate }}\n </button>\n }\n </div>\n }\n </mat-tab>\n }\n </mat-tab-group>\n `,\n styles: [`\n .error-step {\n color: #d32f2f !important;\n }\n `]\n})\nexport class FormlyFieldTabsComponent extends FieldType<FieldTypeConfig> implements OnInit {\n submittedData!: any[];\n\n router = inject(Router);\n user: any;\n @ViewChild('tabGroup') tabGroup!: MatTabGroup;\n showSubmitBtn = false;\n hideTab: boolean = false;\n\n nextTab(tabGroup: MatTabGroup) {\n if (tabGroup && tabGroup.selectedIndex != null) {\n const currentIndex = tabGroup.selectedIndex;\n if (currentIndex < (tabGroup._tabs?.length || 0) - 1) {\n tabGroup.selectedIndex = currentIndex + 1;\n }\n }\n }\n\n previousTab(tabGroup: MatTabGroup) {\n if (tabGroup && tabGroup.selectedIndex != null) {\n const currentIndex = tabGroup.selectedIndex;\n if (currentIndex > 0) {\n tabGroup.selectedIndex = currentIndex - 1;\n }\n }\n }\n\n isFirstTab(tabGroup: MatTabGroup): boolean {\n return tabGroup && tabGroup.selectedIndex === 0;\n }\n\n isLastTab(tabGroup: MatTabGroup): boolean {\n return tabGroup && tabGroup.selectedIndex === (tabGroup._tabs?.length || 0) - 1;\n }\n\n ngOnInit(): void {\n this.user = JSON.parse(localStorage.getItem('loggedInUser') || '{}');\n if(this.field.props?.['showSubmitBtnForStatus']?.length) {\n this.showSubmitBtn = this.field.props?.['showSubmitBtnForStatus'].find((role: any) => this.options.formState?.status == role) && !this.options.formState?.isReadonly;\n }\n }\n\n isValid(field: any): boolean {\n if (field.key) {\n if(field.props?.excludeValidation) {\n if(field.props?.minRowValidation) {\n return field.formControl.value[field.props?.minRowValidation].length > 0 ? true : false\n } else {\n return true;\n }\n }\n\n if(field.props?.uploadValidations?.length) {\n return field.props?.uploadValidations.every((uplField: any) => {\n let valid = true;\n if(Array.isArray(field.model[uplField]) && field.model[uplField]?.length) {\n valid = field.model[uplField]?.every(f => f.fileName ? !!f.nodeId : true);\n } else {\n valid = field.model[uplField]?.fileName ? !!field.model[uplField]?.nodeId : true;\n }\n return valid ? field?.formControl?.valid : false;\n });\n }\n return field?.formControl?.valid || false;\n } else {\n if(field.props?.excludeValidation) {\n if(field.props?.minRowValidation) {\n return field.formControl.value[field.props?.minRowValidation].length > 0 ? true : false\n } else {\n return true;\n }\n }\n }\n\n return field.fieldGroup\n ? field.fieldGroup.every((f: any) => this.isValid(f))\n : true;\n }\n\n onTabChange(event: MatTabChangeEvent): void {\n if (this.field && this.field.props?.['tabChange']) {\n this.field.props?.['tabChange'](event, this.field);\n }\n }\n\n goToPreviousForm(tabGroup: MatTabGroup) {\n if (this.field && this.field.props?.['formChange']) {\n this.field.props?.['formChange'](tabGroup, this.field);\n }\n }\n\n getTabHeightClass(): string {\n if (this.field.props?.['applyOldHeight']) {\n return '2xl:h-[61vh] xl:h-[60vh] md:h-[56vh]';\n }\n return '2xl:h-auto xl:h-auto md:h-auto';\n }\n\n getColorForTheTabChanged(tab: any) {\n let tabEditedColor = '#000000';\n if (!this.isValid(tab) && this.options.formState?.showValidationError) {\n tabEditedColor = '#ff0000';\n }\n if (this.options?.formState?.editedTabsStatus && this.options?.formState?.editedTabsStatus[tab?.key]) {\n tabEditedColor = '#ff0000'\n }\n return tabEditedColor;\n }\n\n isTabDataChanged(step: any): boolean {\n let isTabChanged = false;\n if (this.options?.formState?.editedTabsStatus && this.options?.formState?.editedTabsStatus[step?.key]) {\n isTabChanged = true;\n }\n return isTabChanged;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport {MatExpansionModule} from '@angular/material/expansion';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { FieldType, FormlyField, FormlyFieldConfig, FormlyFieldProps, FormlyForm, FormlyModule } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\n\n@Component({\n selector: 'mu-formly-field-expansion-panel',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatFormFieldModule,\n MatExpansionModule,\n MatIconModule,\n FormlyMaterialModule,\n FormlyModule,\n CommonModule\n ],\n template: `<mat-accordion class=\"example-headers-align\" multi>\n <mat-expansion-panel [expanded]=\"field?.props?.expanded || false\">\n <mat-expansion-panel-header [class]=\"[field?.props?.backgroundColor]\">\n <mat-panel-title [class]=\"[field?.props?.color]\"> {{field?.props?.label}} </mat-panel-title>\n <mat-panel-description [class]=\"[field?.props?.color]\">\n {{field?.props?.description ?? ''}}\n </mat-panel-description>\n </mat-expansion-panel-header>\n @for(fieldItem of field?.fieldGroup; track fieldItem){\n <formly-field [field]=\"fieldItem\"></formly-field>\n }\n </mat-expansion-panel>\n </mat-accordion>`\n})\n\nexport class FormlyFieldExpansionPanelComponent extends FieldType implements OnInit{\n override field : any= {};\n\n get expanded(): boolean {\n const conditionKey = this.field?.props?.collapseConditionKey;\n const conditionValue = this.field?.props?.collapseConditionValue; \n if (conditionKey && conditionValue !== undefined) {\n const currentValue = this.formControl?.value?.[conditionKey];\n return currentValue !== conditionValue; \n } \n return this.field?.props?.expanded || false;\n }\n \n set expanded(value: boolean) {\n if (this.field?.props) {\n this.field.props.expanded = value;\n }\n }\n\n ngOnInit() { \n this.formControl.valueChanges.subscribe(() => {\n this.expanded = this.expanded; \n });\n }\n\n isValid(field: FormlyFieldConfig): boolean {\n if (field.key) {\n return field?.formControl?.valid || true;\n }\n \n return field.fieldGroup ? field.fieldGroup.every((fieldItem) => this.isValid(fieldItem)) : true;\n }\n }","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FieldArrayType, FieldType, FormlyModule } from '@ngx-formly/core';\nimport { FirstDataRenderedEvent, GridOptions, ColDef, GridApi } from 'ag-grid-community';\nimport { CommonModule } from '@angular/common';\nimport { AgGridModule } from 'ag-grid-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { isObservable } from 'rxjs';\n\n\n@Component({\n selector: 'mu-formly-field-grid',\n standalone: true,\n imports: [CommonModule, AgGridModule, FormlyModule],\n template: `\n <div [ngStyle]=\"style\" >\n <ag-grid-angular\n style=\"width: 100%; height: 100%;\"\n class=\"ag-theme-alpine\"\n [rowData]=\"rowData || []\"\n [columnDefs]=\"columnDefs\"\n [defaultColDef]=\"defaultColDef\"\n [pagination]=\"true\"\n [gridOptions]=\"gridOptions\">\n </ag-grid-angular>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyFieldGridComponent extends FieldType implements OnInit {\n gridOptions!: GridOptions;\n style: any = {};\n rowData: any[] = [];\n columnDefs: ColDef[] = [];\n defaultColDef = {\n sortable: true,\n filter: true,\n resizable: true,\n flex: 1,\n minWidth: 150,\n wrapHeaderText: true,\n autoHeaderHeight: true\n };\n gridApi!: GridApi;\n constructor(private translateService: TranslateService) {\n super();\n }\n onGridReady(params: any): void {\n this.gridApi = params.api;\n }\n ngOnInit() {\n this.style = {\n width: this.props?.['width'],\n height: this.props?.['height'],\n };\n const gridOptions: GridOptions = this.props['gridOptions'] || {};\n gridOptions.context = {\n parentField: this.field,\n };\n gridOptions.suppressMovableColumns = true;\n this.gridOptions = gridOptions;\n this.columnDefs = [\n ...this.translateLabels(this.gridOptions?.['columnDefs'] as any[])\n ];\n\n const gridData = findNestedKey(this.field.parent?.model, this.field.key);\n this.rowData = Array.isArray(gridData) ? gridData : [];\n\n if(this.field.props?.['rowData']) {\n const rowData = this.field.props?.['rowData'];\n\n if (isObservable(rowData)) {\n rowData.pipe().subscribe((data: any[] = []) => {\n if (!data.length) {\n this.rowData = [];\n this.gridApi?.deselectAll();\n } else {\n this.rowData = [...data];\n this.gridApi?.deselectAll();\n }\n });\n } else if (Array.isArray(rowData)) {\n this.rowData = [...rowData];\n }\n }\n }\n\n onFirstDataRendered(params: FirstDataRenderedEvent) {\n params.api.sizeColumnsToFit();\n }\n\n translateLabels(\n columnDefs: any[]\n ): any[] {\n return columnDefs.map((column) => {\n return {\n ...column,\n headerName: this.translateService.instant(column.headerName)\n }\n })\n }\n}\n\nfunction findNestedKey(obj: any, targetKey: any): any {\n for (const key in obj) {\n if (key === targetKey) return obj[key];\n if (typeof obj[key] === 'object') {\n const result = findNestedKey(obj[key], targetKey);\n if (result) return result;\n }\n }\n return undefined;\n}","import { AfterViewInit, Component, inject, OnInit, ViewChild } from \"@angular/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatStepperModule } from \"@angular/material/stepper\";\nimport { FieldType, FormlyModule } from \"@ngx-formly/core\";\nimport { Router } from \"@angular/router\";\nimport { CommonModule } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { StepperSelectionEvent } from \"@angular/cdk/stepper\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { FormGroup } from \"@angular/forms\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\n@Component({\n selector: \"mu-formly-field-stepper\",\n standalone: true,\n imports: [MatStepperModule, FormlyModule, MatButtonModule, TranslateModule, CommonModule,TranslateModule, MatTooltipModule, MatIconModule],\n template: `\n <mat-horizontal-stepper [linear]=\"isLinear\" [selectedIndex]=\"selectedStepIndex\" [ngClass]=\"[field?.props?.className]\" (selectionChange)=\"onStepChange($event)\">\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\n {{index +1}}\n </ng-template>\n @for(step of field.fieldGroup; track step; let index = $index; let last =\n $last){\n <mat-step [completed]=\"isValid(step)\" [ngClass]=\"{ 'error-step': !isValid(step) }\">\n <ng-template matStepLabel>\n <div [ngStyle]=\"{'color': (!isValid(step) && options.formState?.showValidationError) ? 'red' : 'black'}\" class=\"whitespace-normal break-words flex items-center\">\n <span class=\"stepper-label\" [ngStyle]=\"{'color': getColorForTheTabChanged(step)}\">{{ step?.props?.label }}</span>\n <mat-icon matTooltip=\"{{'EDITED_TAB' | translate}}\" *ngIf=\"isTabDataChanged(step) && !(!isValid(step) && options.formState?.showValidationError)\" [ngStyle]=\"{'color': getColorForTheTabChanged(step)}\">edit</mat-icon>\n <mat-icon matTooltip=\"{{'MANDATORY_FIELDS_TOOLTIP' | translate}}\" *ngIf=\"!isValid(step) && options.formState?.showValidationError\" class=\"error-step\">error</mat-icon>\n </div>\n </ng-template>\n <div class=\"2xl:h-[80vh] xl:h-full md:h-[125vh] overflow-y-auto\">\n <formly-field [field]=\"step\"></formly-field>\n <div class=\"mt-4 flex\">\n @if (index !== 0) {\n <button mat-flat-button color=\"primary\" matStepperPrevious type=\"button\" class=\"flex mr-2 ml-2\">\n {{ 'BUTTON.PREVIOUS' | translate }}\n </button>\n }\n @if (!last) {\n <button matStepperNext mat-flat-button color=\"primary\" type=\"button\" class=\"flex mr-2 ml-2\">\n {{ 'BUTTON.NEXT' | translate }}\n </button>\n }\n @if (last) {\n <div class=\"flex justify-around items-center\">\n <button mat-flat-button color=\"primary\" (click)=\"onApprove()\" *ngIf=\"model.id\" type=\"button\">\n {{ 'BUTTON.APPROVE' | translate}}\n </button>\n <button mat-flat-button color=\"primary\" (click)=\"onReject()\" *ngIf=\"model.id\" type=\"button\">\n {{ 'BUTTON.REJECT' | translate}}\n </button>\n </div>\n }\n </div>\n </div>\n </mat-step>\n }\n</mat-horizontal-stepper>\n `,\n styles: [`\n .stepper-label {\n margin-top: 2px;\n margin-right: 2px;\n }\n .error-step {\n color: #d32f2f !important;\n }\n ::ng-deep mat-step-header[aria-selected='true'] {\n background-color: #E5E4E2 !important;\n border-radius: 12px !important;\n }\n ::ng-deep mat-step-header:hover:not([aria-disabled]) {\n background: #E5E4E2 !important;\n }\n @media (max-width: 640px) {\n ::ng-deep .mat-horizontal-stepper-header-container {\n display: flex;\n overflow-x: auto;\n white-space: nowrap;\n width: 100% !important; \n max-width: 100vw; \n padding-bottom: 5px; \n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none;\n -ms-overflow-style: auto;\n }\n\n ::ng-deep .mat-horizontal-stepper-header-container::-webkit-scrollbar {\n height: 4px;\n display: none;\n }\n\n ::ng-deep .mat-horizontal-stepper-header-container::-webkit-scrollbar-thumb {\n background-color: #888;\n border-radius: 4px;\n }\n\n ::ng-deep .mat-horizontal-stepper-header {\n flex: 0 0 auto;\n }\n}\n `],\n})\nexport class FormlyFieldStepperComponent extends FieldType implements OnInit, AfterViewInit {\n router = inject(Router);\n isLinear = false;\n selectedStepIndex = 0;\n\n ngOnInit(): void {\n const selectedIndex = this.field.fieldGroup?.findIndex(step => step.props?.['selectedIndex']) ?? 0;\n this.selectedStepIndex = (selectedIndex > -1) ? selectedIndex : 0;\n }\n\n ngAfterViewInit() {\n this.scrollToTop();\n }\n\n isValid(field: any): boolean {\n if (field.key) {\n let excludeValidationFlag = true;\n if(field.props?.excludeValidation) {\n if(field.props?.minRowValidation) {\n excludeValidationFlag = field.model[field.props?.minRowValidation]?.length > 0 ? true : false\n } else {\n excludeValidationFlag = true;\n }\n }\n let minRowValidationFlag = true;\n if(field.props?.minRowValidation) {\n minRowValidationFlag = field.model[field.props?.minRowValidation]?.length > 0 ? true : false;\n }\n\n let uploadFilesValidation = true;\n if(field.props?.uploadValidations?.length) {\n uploadFilesValidation = field.props?.uploadValidations.every((uplField: any) => {\n let valid = true;\n if(Array.isArray(field.model[uplField]) && field.model[uplField]?.length) {\n valid = field.model[uplField]?.every(f => f.fileName ? !!f.nodeId : true);\n } else {\n valid = field.model[uplField]?.fileName ? !!field.model[uplField]?.nodeId : true;\n }\n return valid ? true : false;\n });\n }\n if(field.props?.skipFormValidations) { \n if(excludeValidationFlag && minRowValidationFlag && uploadFilesValidation) {\n if(!field?.formControl?.valid) {\n const controlsList = field?.formControl?.controls;\n delete controlsList[field.props?.minRowValidation];\n if(controlsList[field.props?.skipFormValidations]) delete controlsList[field.props?.skipFormValidations];\n const checkValidity = (controls: Record<string, any>): boolean => {\n return Object.values(controls).every(control => control.valid);\n };\n const isFormValid = checkValidity(controlsList);\n return isFormValid;\n } else {\n return field?.formControl?.valid || field?.props?.excludeValidation;\n }\n } else {\n return false;\n }\n }\n \n return (excludeValidationFlag && minRowValidationFlag && uploadFilesValidation) \n ? (field?.formControl?.valid || field?.props?.excludeValidation) \n : false;\n }\n return field.fieldGroup\n ? field.fieldGroup.every((f: any) => this.isValid(f))\n : true;\n }\n\n onApprove() {\n // TODO: add logic for approve\n }\n\n onReject() {\n // TODO: add logic for reject\n }\n\n onStepChange(event: StepperSelectionEvent) {\n this.scrollToTop();\n if (this.field && this.field.props?.['stepChange']) {\n this.field.props?.['stepChange'](event, this.field);\n }\n }\n\n removeValidationsForTabularFormFields(fields: any) {\n if(fields.fieldGroup) {\n for (const field of fields.fieldGroup) {\n if(field.type === 'mu-tabular-form') {\n if(field.fieldGroup[0]?.fieldGroup) {\n field.fieldGroup[0].fieldGroup.forEach((field: any) => {\n if(field.fieldGroup) {\n field.fieldGroup.forEach((f: any) => this.rmvValidity(f))\n this.rmvValidity(field.fieldGroup)\n } else {\n this.rmvValidity(field)\n }\n })\n }\n }\n if(field.fieldGroup) {\n this.removeValidationsForTabularFormFields(field.fieldGroup);\n }\n }\n } else {\n for (const field of fields) {\n if(field.type === 'mu-tabular-form') {\n if(field.fieldGroup[0]?.fieldGroup) {\n field.fieldGroup[0].fieldGroup.forEach((field: any) => {\n if(field.fieldGroup) {\n field.fieldGroup.forEach((f: any) => this.rmvValidity(f))\n this.rmvValidity(field.fieldGroup)\n } else {\n this.rmvValidity(field)\n }\n })\n }\n }\n if(field.fieldGroup) {\n this.removeValidationsForTabularFormFields(field.fieldGroup);\n }\n }\n }\n \n }\n\n rmvValidity(field: any) {\n if (field.formControl || this.form.get(field.key)) {\n field.formControl?.setValidators([]);\n field.formControl?.updateValueAndValidity();\n (this.form as FormGroup).removeControl(field.key);\n }\n }\n\n scrollToTop() {\n setTimeout(() => {\n const stepperContainer = document.querySelector('.mat-horizontal-content-container');\n if (stepperContainer) {\n stepperContainer.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }, 100);\n }\n\n getColorForTheTabChanged(step: any) {\n let tabEditedColor = '#000000';\n if (!this.isValid(step) && this.options.formState?.showValidationError) {\n tabEditedColor = '#ff0000';\n }\n if (this.options?.formState?.editedTabsStatus && this.options?.formState?.editedTabsStatus[step?.key]) {\n tabEditedColor = '#ff0000'\n }\n return tabEditedColor;\n }\n\n isTabDataChanged(step: any): boolean {\n let isTabChanged = false;\n if (this.options?.formState?.editedTabsStatus && this.options?.formState?.editedTabsStatus[step?.key]) {\n isTabChanged = true;\n }\n return isTabChanged;\n }\n}","import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';\nimport { FieldArrayType, FieldType, FormlyModule } from '@ngx-formly/core';\nimport {MatTableDataSource, MatTableModule} from '@angular/material/table';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { MatSort, Sort, MatSortModule } from '@angular/material/sort';\nimport {MatPaginator, MatPaginatorModule} from '@angular/material/paginator';\n\n@Component({\n selector: 'mu-selector-name',\n standalone: true,\n imports: [\n MatTableModule,\n FormlyMaterialModule,\n FormlyModule,\n MatSortModule,\n MatPaginatorModule\n ],\n template: `\n \n <table mat-table [dataSource]=\"data\" matSort class=\"mat-elevation-z8\">\n @for (column of displayedColumns; track column) {\n <ng-container [matColumnDef]=\"column\">\n <th mat-header-cell mat-sort-header *matHeaderCellDef> {{column}} </th>\n <td mat-cell *matCellDef=\"let element\"> {{element[column]}} </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnsToDisplay;\"></tr>\n </table>\n <mat-paginator [pageSizeOptions]=\"[5, 10, 25, 100]\" aria-label=\"Select page of users\"></mat-paginator>\n `\n})\n\nexport class FormlyFieldTableComponent extends FieldArrayType implements OnInit, AfterViewInit {\n displayedColumns: string[] = [];\n columnsToDisplay: string[] = [];\n data = new MatTableDataSource([]);\n @ViewChild(MatPaginator) paginator!: MatPaginator;\n\n @ViewChild(MatSort) sort!: MatSort;\n\n ngAfterViewInit() {\n this.data.paginator = this.paginator;\n\n this.data.sort = this.sort;\n }\n \n ngOnInit() {\n this.data = new MatTableDataSource(this.field.props['gridOptions']?.data);\n this.displayedColumns = this.field.props['gridOptions']?.columnDefs;\n this.columnsToDisplay = this.displayedColumns.slice();\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FieldType } from '@ngx-formly/core';\n\n@Component({\n selector: 'mu-formly-field-button',\n standalone: true,\n imports: [CommonModule, FormsModule, MatButtonModule, MatIconModule, MatTooltipModule],\n template: `\n <button mat-flat-button \n type=\"button\"\n [disabled]=\"to.disabled\"\n (click)=\"onClick()\"\n [ngClass]=\"{'required-btn': to['showStarMark']}\"\n class=\"btn btn-primary flex items-center\"\n [matTooltip]=\"to.label\"\n >\n <mat-icon *ngIf=\"to?.['icon']\">{{ to['icon'] }}</mat-icon>\n {{ to.label }}\n <span *ngIf=\"to['showStarMark']\">*</span>\n </button>\n <div *ngIf=\"to['showHint']\" class=\"text-gray-500 mt-1 ml-6\">{{ to['showHint'] }}</div>\n <div *ngIf=\"to['showNote']\"\n class=\"text-gray-500 mt-1 ml-6 w-[520px] leading-none\" \n [innerHTML]=\"to['showNote']\">\n </div>\n <div *ngIf=\"to['showAuditRespone']\"\n class=\"text-gray-500 mt-1 ml-2 w-[520px] leading-none\"\n [ngClass]=\"to['responseColor']\"\n [innerHTML]=\"to['showAuditRespone']\">\n </div>\n `,\n styles: [\n `\n .required-btn {\n background-color: red !important;\n }\n `\n ]\n})\nexport class FormlyButtonComponent extends FieldType {\n onClick() {\n if (this.to['onClick']) {\n this.to['onClick']();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FieldTypeConfig, FormlyModule } from '@ngx-formly/core';\nimport { FieldType, FormlyMaterialModule } from '@ngx-formly/material';\nimport { map, Observable, of, startWith } from 'rxjs';\n\n@Component({\n selector: 'mu-country-code-phone',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n FormlyModule,\n FormlyMaterialModule,\n MatAutocompleteModule,\n MatTooltipModule\n ],\n host: {\n class: 'w-full grid'\n },\n template: `\n <div class=\"flex flex-nowrap items-center gap-3 w-full\">\n <mat-form-field appearance=\"outline\" [ngStyle]=\"{'width': to['codeWidth'] || '20%'}\">\n <mat-label matTooltip=\"Country Code\">Code</mat-label>\n <input\n type=\"text\"\n matInput\n [readonly]=\"to.readonly || to.disabled || to['disableCountryCode']\"\n [required]=\"to.required || false\"\n [disabled]=\"to.disabled || to['disableCountryCode'] || false\"\n [formControl]=\"hourCtrl\"\n [matAutocomplete]=\"autoHour\"\n (input)=\"onCountryCodeChange()\"\n (blur)=\"validateInput()\"\n />\n <mat-autocomplete #autoHour=\"matAutocomplete\" (optionSelected)=\"onCountryCodeChange()\">\n <mat-option\n *ngFor=\"let hour of filteredHours$ | async\"\n [value]=\"hour\"\n >\n {{ hour }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <mat-form-field appearance=\"outline\" [ngStyle]=\"{'width': to['phoneNumberWidth'] || '75%'}\">\n <mat-label>{{to.label}}</mat-label>\n <input\n fxFlex\n matInput\n [type]=\"to.type || 'number'\"\n [required]=\"to.required || false\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"to.placeholder ?? ''\"\n [readonly]=\"to.readonly\"\n [disabled]=\"to.disabled || false\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (input)=\"onInput()\"\n />\n </mat-form-field>\n </div>\n <mat-error *ngIf=\"formControl.invalid && formControl.touched\">\n {{ field.validation?.messages?.['required'] || field.validation?.messages?.['phoneValidation']}}\n </mat-error>\n `,\n styles: `\n .vertical-line {\n display: inline-block;\n width: 1px;\n height: 18px;\n background-color: #000;\n margin-top: 3px;\n margin-right: 8px;\n vertical-align: middle;\n}\n `\n})\nexport class FormlyFieldCountryCodeComponent extends FieldType<FieldTypeConfig> implements OnInit{\n isFocused = false;\n hasValue = false;\n hourCtrl = new FormControl('');\n hours: string[] = [];\n filteredHours$!: Observable<string[]>;\n\n get control(): FormControl {\n return this.formControl as FormControl;\n }\n\n ngOnInit(): void {\n this.loadCountryCodes();\n this.hasValue = (this.control.value !== '' && this.control.value !== undefined); \n }\n onFocus() {\n this.isFocused = true;\n this.hasValue = (this.control.value !== '' && this.control.value !== undefined);\n }\n\n onBlur() {\n this.isFocused = false;\n this.hasValue = (this.control.value !== '' && this.control.value !== undefined);\n }\n\n onInput() {\n this.hasValue = (this.control.value !== '' && this.control.value !== undefined);\n }\n\n private _filter(options: string[], value: string): string[] {\n const filterValue = (value || '').toLowerCase();\n return options?.filter((option) =>\n option.toLowerCase().includes(filterValue)\n );\n }\n\n onCountryCodeChange() {\n if (this.field && this.field.props?.['countryCodeChange']) {\n this.field.props?.['countryCodeChange'](event, this.hourCtrl.value, this.field);\n }\n }\n\n async loadCountryCodes() {\n this.hours = await this.options.formState.getCountryCodesApi;\n this.filteredHours$ = this.hourCtrl.valueChanges.pipe(\n startWith(this.hourCtrl.value || ''),\n map((value: any) => this._filter(this.hours, value))\n );\n this.hourCtrl.setValue(this.field.model?.['countryCode']);\n if(!this.hourCtrl.value) {\n this.hourCtrl.setValue(this.to['countryCode'] || '+91')\n }\n }\n\n validateInput() {\n const options$ = Array.isArray(this.hours) ? of(this.hours) : this.hours || of([]);\n options$.subscribe((options) => {\n const isValidOption = options.some((option) => option.split('+')[1] === (this.hourCtrl.value?.includes('+') ? this.hourCtrl.value?.split('+')[1] : this.hourCtrl.value));\n if (!isValidOption) {\n this.hourCtrl.setValue('');\n }\n });\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { FieldType, FormlyFieldConfig, FormlyModule } from '@ngx-formly/core';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport {\n catchError,\n debounceTime,\n distinctUntilChanged,\n map,\n shareReplay,\n startWith,\n switchMap,\n take,\n} from 'rxjs/operators';\n\n@Component({\n selector: 'mu-select-autocomplete',\n standalone: true,\n template: `\n <mat-form-field\n class=\"w-full\"\n [appearance]=\"field?.props?.appearance || 'outline'\"\n >\n <mat-label *ngIf=\"!field?.props?.['dontShowLabel']\">{{\n field?.props?.label\n }}</mat-label>\n <input\n class=\"inputField\"\n matInput\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"field?.props?.placeholder || field?.props?.label\"\n (blur)=\"onBlur()\"\n [matAutocomplete]=\"auto\"\n />\n <ng-container matSuffix>\n <span\n *ngIf=\"!field?.props?.readonly && !field?.props?.disabled\"\n class=\"cursor-pointer relative right-[20px] span-class\"\n (click)=\"clearSearchedInput()\"\n >\n <mat-icon class=\"suffixClear\">clear</mat-icon>\n </span>\n\n <div\n class=\"absolute inset-y-0 right-1 flex items-center pointer-events-none\"\n >\n <svg\n class=\"w-4 h-4 text-gray-500\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n </div>\n </ng-container>\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\">\n <mat-option\n *ngFor=\"let option of filteredOptions$ | async\"\n [value]=\"option.value\"\n >\n {{ option.label }}\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"formControl.invalid && formControl.touched\">\n {{ field.validation?.messages?.['required'] }}\n </mat-error>\n </mat-form-field>\n `,\n styles: `\n .suffixClear {\n height: 17px;\n width: 17px;\n font-size: 17px;\n }\n .span-class {\n border-radius: 10px;\n height: 16px;\n width: 16px;\n display: flex;\n }\n .inputField{\n width: calc(100% - 17px);\n }\n `,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormlyModule,\n MatFormFieldModule,\n MatInputModule,\n MatAutocompleteModule,\n MatIconModule,\n ],\n})\nexport class FormlySelectAutocompleteComponent\n extends FieldType<FormlyFieldConfig>\n implements OnInit\n{\n public filteredOptions$: Observable<any>;\n protected optionsList: any[] = [];\n\n ngOnInit() {\n const debounce = this.field?.props?.debounceTime || 300;\n const fetchOnce = this.field?.props?.fetchOnce === undefined ? true : this.field.props.fetchOnce;\n if (\n this.field?.props?.apiFunction &&\n typeof this.field?.props?.apiFunction === 'function'\n ) {\n if (fetchOnce) {\n this.field?.props\n ?.apiFunction('')\n .pipe(\n catchError((error) => {\n console.error('API Error:', error);\n return of([]);\n })\n )\n .subscribe((results: any[]) => {\n this.optionsList = results || [];\n\n this.filteredOptions$ = this.formControl.valueChanges.pipe(\n startWith(''),\n debounceTime(debounce),\n distinctUntilChanged(),\n map((searchTerm: string) =>\n this.filterOptions(searchTerm, this.optionsList)\n )\n );\n });\n } else {\n this.filteredOptions$ = this.formControl.valueChanges.pipe(\n startWith(''),\n debounceTime(debounce),\n distinctUntilChanged(),\n switchMap((searchTerm: any) => {\n return this.field?.props?.apiFunction(searchTerm).pipe(\n map((results: any[]) => {\n this.optionsList = results || [];\n return results || [];\n }),\n catchError((error) => {\n console.error('API Error:', error);\n return of([]);\n })\n );\n })\n );\n }\n } else {\n const options$ =\n this.field?.props?.options instanceof Observable\n ? this.field?.props?.options.pipe(shareReplay(1))\n : of(this.field?.props?.options || []);\n\n options$.pipe(take(1)).subscribe((opts) => {\n this.optionsList = opts || [];\n if (this.formControl.value != null) {\n this.formControl.setValue(this.formControl.value);\n }\n });\n options$.subscribe((opts) => (this.optionsList = opts || []));\n\n this.filteredOptions$ = combineLatest([\n options$,\n this.formControl.valueChanges.pipe(\n startWith(''),\n debounceTime(debounce)\n ),\n ]).pipe(map(([options, value]) => this.filterOptions(value, options)));\n }\n }\n\n displayFn = (value: any): string => {\n if (value == null) {\n return '';\n }\n const match = this.optionsList.find((opt) => {\n const optValue = opt.value != null ? opt.value : opt;\n return optValue === value;\n });\n if (!match) {\n return String(value);\n }\n return match.label != null ? match.label : String(match.value);\n };\n\n onBlur() {\n const value = this.formControl.value;\n if (!value) {\n this.formControl.setValue(null);\n this.formControl.markAsTouched();\n return;\n }\n if (typeof value === 'string') {\n const match = this.optionsList.find((opt) => {\n const label = opt.label?.toString().toLowerCase();\n const val = opt.value?.toString().toLowerCase();\n const input = value.toLowerCase();\n return label === input || val === input;\n });\n if (match) {\n this.formControl.setValue(match.value ?? match);\n } else {\n this.formControl.setValue(null);\n }\n }\n this.formControl.markAsTouched();\n }\n\n private filterOptions(value: any, options: any[]): any[] {\n if (!options) {\n return [];\n }\n if (!value) {\n return options.slice();\n }\n const filterValue = String(value).toLowerCase();\n return options.filter((opt) => {\n const label = opt.label != null ? String(opt.label) : '';\n const valStr = opt.value != null ? String(opt.value) : '';\n return (\n label.toLowerCase().includes(filterValue) ||\n valStr.toLowerCase().includes(filterValue)\n );\n });\n }\n\n clearSearchedInput() {\n this.formControl.setValue('');\n }\n}\n","import { AbstractControl } from '@angular/forms';\nimport * as libphonenumber from 'google-libphonenumber';\n\nexport function phoneValidation(control: AbstractControl, fields: any) {\n if (!control?.value) {\n return null;\n }\n\n const originalInput = control.value\n if (/[A-Za-z]/.test(originalInput)) {\n return { phoneValidation: true };\n }\n const phoneUtil = libphonenumber.PhoneNumberUtil.getInstance();\n\n const countryShrtHnd = fields?.props?.countryShrtHnd || 'US';\n try {\n const phoneNumber = phoneUtil.parse(control.value, countryShrtHnd);\n return phoneUtil.isValidNumber(phoneNumber)\n ? null\n : { phoneValidation: true };\n } catch (e) {\n return { phoneValidation: false };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonsModule } from '@muraai/mnl-commons';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mu-confirm-dialog',\n standalone: true,\n imports: [CommonsModule, CommonModule, TranslateModule, MatDialogModule, MatButtonModule,MatIconModule],\n templateUrl: './confirmation-dialog.component.html',\n styleUrl: './confirmation-dialog.component.scss',\n})\nexport class ConfirmationDialogComponent {\n constructor(\n public dialogRef: MatDialogRef<ConfirmationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: { title: string, message: string, showOk: boolean }\n ) {}\n\n onNoClick(): void {\n this.dialogRef.close(false);\n }\n\n onYesClick(): void {\n this.dialogRef.close(true);\n }\n}\n","<div class=\"w-full overflow-hidden h-full\">\n<div class='text-xl mt-2 ml-3'>\n <p >{{'CONFIRMATION_DIALOG.CONFIRMATION' | translate}}</p>\n</div>\n <mat-dialog-content>\n <div class=\"iconText\">\n <mat-icon class=\"mt-1 ml-2 mr-3\">error_outline</mat-icon>\n <h1 class=\"title\" [innerHTML]=\"data.title | translate\"></h1>\n </div>\n <div mat-dialog-content>\n <p>{{ data.message | translate }}</p>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n @if (data.showOk) {\n <button mat-button class=\"flex justify-center\" (click)=\"onYesClick()\">{{'CONFIRMATION_DIALOG.OK' | translate}}</button>\n } @else {\n <button mat-button class=\"flex justify-center\" (click)=\"onNoClick()\">{{'CONFIRMATION_DIALOG.NO' | translate}}</button>\n <button mat-button color=\"primary\" (click)=\"onYesClick()\">{{'CONFIRMATION_DIALOG.YES' | translate}}</button>\n }\n </mat-dialog-actions>\n</div>\n","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, ElementRef, EventEmitter, inject, Inject, Output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FormlyFormBuilder, FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { NgxSpinnerModule } from 'ngx-spinner';\nimport { forkJoin, of, take } from 'rxjs';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\nimport { CustomFormlyFieldConfig } from '../models/custom-form-field.model';\n\n@Component({\n selector: 'mu-app-add-data-dialog',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatSelectModule, MatRadioModule, MatCheckboxModule,\n MatDialogModule, FormlyModule, TranslateModule, MatButtonModule, NgxSpinnerModule\n ],\n template: `\n <h1 mat-dialog-title>{{ dialogLabel | translate}}</h1>\n <div mat-dialog-content class=\"min-h-max !pt-1 !flex\">\n <formly-form\n [ngStyle]=\"{'width': (propsOfDialog && propsOfDialog?.viewDocSideBySide && !isMobileDevice) ? '50%' : ''}\"\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n (modelChange)=\"onModelChange($event)\"\n ></formly-form>\n <iframe id=\"dialogIframe\" *ngIf=\"propsOfDialog && propsOfDialog?.viewDocSideBySide && !isMobileDevice\" [ngStyle]=\"{'width': (propsOfDialog && propsOfDialog?.viewDocSideBySide && !isMobileDevice) ? '50%' : ''}\" frameborder=\"0\"></iframe>\n </div>\n <div mat-dialog-actions>\n <button mat-button (click)=\"onCancel()\">{{'TABULAR_FORM_DIALOG.CANCEL' | translate}}</button>\n <button mat-button *ngIf=\"!selectedRowData && !propsOfDialog.hideSaveAndAddNew\" (click)=\"onSaveAddNew()\" [disabled]=\"form.invalid || !isFilesUploaded()\">{{'TABULAR_FORM_DIALOG.SAVE_AND_NEW' | translate}}</button>\n <button mat-button *ngIf=\"!selectedRowData\" (click)=\"onSave()\" [disabled]=\"form.invalid || !isFilesUploaded()\">{{'TABULAR_FORM_DIALOG.ADD' | translate}}</button>\n <button mat-button *ngIf=\"selectedRowData && !data.hideUpdateBtn\" (click)=\"onSave()\" [disabled]=\"form.invalid || !isFilesUploaded()\">{{'TABULAR_FORM_DIALOG.EDIT' | translate}}</button>\n </div>\n <ngx-spinner name=\"tabular-dialog\" bdColor=\"rgba(0, 0, 0, 0.2)\" size=\"medium\" color=\"#fff\" template=\"<img src='assets/images/lupin-icongif.gif' style='height: 70px !important;'/>\"\n [fullScreen]=\"true\">\n </ngx-spinner>\n `\n})\nexport class TabularFormDialogComponent {\n form = new FormGroup({});\n fieldConfig: any[];\n fields!: CustomFormlyFieldConfig[];\n model: any;\n options: any;\n dialogLabel= '';\n @Output() saveData = new EventEmitter<any>();\n selectedRowData:any;\n destroyRef = inject(DestroyRef);\n propsOfDialog: any;\n parentModel: any;\n isMobileDevice = false;\n\n constructor(\n public dialogRef: MatDialogRef<TabularFormDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private formlyBuilder: FormlyFormBuilder,\n private translateService: TranslateService,\n private matDialog: MatDialog,\n private hostElement: ElementRef,\n private breakpointObserver: BreakpointObserver,\n ) {\n this.breakpointObserver?.observe([Breakpoints.Handset]).pipe(takeUntilDestroyed(this.destroyRef)).subscribe((result) => {\n this.isMobileDevice = result?.matches;\n });\n this.fieldConfig = data.fieldConfig;\n this.selectedRowData = data.selectedRowData;\n if (data?.selectedRowData) {\n this.model = data?.selectedRowData;\n }\n this.propsOfDialog = data.tabularProps;\n this.dialogLabel = data.label;\n this.fields = this.translateFormConfig(data.fieldConfig);\n this.options = {\n ...this.options,\n formState: data?.formState\n }\n this.parentModel = data?.parentModel;\n\n this.formlyBuilder.buildForm(this.form, this.fields, this.model, this.options);\n this.updateDependentFieldsFullName(this.fields);\n }\n\n\n private resetForm(): void {\n this.form.reset();\n }\n\n onSave(): void {\n if (this.form.valid) {\n if (this.fields[0]?.confirmationDialogProps?.length) {\n const confirmationDialogs = this.fields[0].confirmationDialogProps\n .filter((confirmationDialogProp: any) => confirmationDialogProp?.enableConfirmation)\n .map((confirmationDialogProp: any) => {\n if (\n !confirmationDialogProp?.enableConfirmationDialogForRoles?.length ||\n confirmationDialogProp?.enableConfirmationDialogForRoles?.some((role: string) => this.options?.formState?.userRoles?.includes(role))\n ) {\n if(confirmationDialogProp?.showForChangeRequestOnly) {\n if(this.options.formState.showOldValues) {\n const dialogRef = this.matDialog.open(ConfirmationDialogComponent, {\n minWidth:confirmationDialogProp?.['minWidth'] ?? '40%',\n maxWidth: confirmationDialogProp?.['maxWidth'] ?? '100%',\n minHeight: confirmationDialogProp?.['minHeight'] ?? '30%',\n maxHeight: confirmationDialogProp?.['maxHeight'] ?? '40%',\n data: {\n title: this.translateService.instant(confirmationDialogProp?.data?.title),\n showOk: true\n },\n disableClose: true\n });\n\n return dialogRef.afterClosed().pipe(take(1));\n }\n } else {\n const dialogRef = this.matDialog.open(ConfirmationDialogComponent, {\n width: confirmationDialogProp?.['width'] ?? '30%',\n minHeight: confirmationDialogProp?.['minHeight'] ?? '30%',\n maxHeight: confirmationDialogProp?.['maxHeight'] ?? '40%',\n data: {\n title: this.translateService.instant(confirmationDialogProp?.data?.title),\n showOk: true\n },\n disableClose: true\n });\n\n return dialogRef.afterClosed().pipe(take(1));\n }\n }\n return of(true);\n });\n\n if (confirmationDialogs.length) {\n forkJoin(confirmationDialogs)\n .pipe(take(1))\n .subscribe(() => {\n this.dialogRef.close({\n ...this.model,\n ...this.form.value,\n });\n });\n } else {\n this.dialogRef.close({\n ...this.model,\n ...this.form.value,\n });\n }\n } else {\n this.dialogRef.close({\n ...this.model,\n ...this.form.value,\n });\n }\n }\n }\n\n onCancel(): void {\n this.dialogRef.close();\n }\n\n onSaveAddNew(): void {\n if (this.form.valid) {\n const dataToSave = {\n ...this.model,\n ...this.form.getRawValue(),\n };\n\n if (this.fields[0]?.confirmationDialogProps?.length) {\n const confirmationDialogs = this.fields[0].confirmationDialogProps\n .filter(\n (confirmationDialogProp: any) =>\n confirmationDialogProp?.enableConfirmation\n )\n .map((confirmationDialogProp: any) => {\n if (\n !confirmationDialogProp?.enableConfirmationDialogForRoles\n ?.length ||\n confirmationDialogProp?.enableConfirmationDialogForRoles?.some(\n (role: string) =>\n this.options?.formState?.userRoles?.includes(role)\n )\n ) {\n if (confirmationDialogProp?.showForChangeRequestOnly) {\n if (this.options.formState.showOldValues) {\n const dialogRef = this.matDialog.open(\n ConfirmationDialogComponent,\n {\n width: confirmationDialogProp?.['width'] ?? '30%',\n minHeight: confirmationDialogProp?.['minHeight'] ?? '30%',\n maxHeight: confirmationDialogProp?.['maxHeight'] ?? '40%',\n data: {\n title: this.translateService.instant(\n confirmationDialogProp?.data?.title\n ),\n showOk: true,\n },\n disableClose: true,\n }\n );\n\n return dialogRef.afterClosed().pipe(take(1));\n }\n } else {\n const dialogRef = this.matDialog.open(\n ConfirmationDialogComponent,\n {\n width: confirmationDialogProp?.['width'] ?? '30%',\n minHeight: confirmationDialogProp?.['minHeight'] ?? '30%',\n maxHeight: confirmationDialogProp?.['maxHeight'] ?? '40%',\n data: {\n title: this.translateService.instant(\n confirmationDialogProp?.data?.title\n ),\n showOk: true,\n },\n disableClose: true,\n }\n );\n\n return dialogRef.afterClosed().pipe(take(1));\n }\n }\n return of(true);\n });\n\n if (confirmationDialogs.length) {\n forkJoin(confirmationDialogs)\n .pipe(take(1))\n .subscribe(() => {\n if (this.propsOfDialog?.['isSequentialNumGenerationRequired']) {\n dataToSave.sequentialNumberId = `000${this.generateSequentialIdNumber(\n this.parentModel\n )}`;\n }\n this.saveData.emit(dataToSave);\n this.resetForm();\n });\n } else {\n if (this.propsOfDialog?.['isSequentialNumGenerationRequired']) {\n dataToSave.sequentialNumberId = `000${this.generateSequentialIdNumber(\n this.parentModel\n )}`;\n }\n this.saveData.emit(dataToSave);\n this.resetForm();\n }\n } else {\n if (this.propsOfDialog?.['isSequentialNumGenerationRequired']) {\n dataToSave.sequentialNumberId = `000${this.generateSequentialIdNumber(\n this.parentModel\n )}`;\n }\n this.saveData.emit(dataToSave);\n this.resetForm();\n }\n }\n }\n\n translateFormConfig(\n config: CustomFormlyFieldConfig[]\n ): CustomFormlyFieldConfig[] {\n return config.map((field) => {\n if (field.props?.label) {\n field.expressions = {\n ...field.expressions,\n 'props.label': this.translateService.stream(field.props.label || ''),\n 'props.tooltip': this.translateService.stream(\n field.props.label || ''\n ),\n };\n }\n if (field.props?.placeholder) {\n field.expressions = {\n ...field.expressions,\n 'props.placeholder': this.translateService.stream(\n field.props.placeholder || ''\n ),\n };\n }\n if (field.fieldGroup) {\n this.translateFormConfig(field.fieldGroup);\n }\n return field;\n });\n }\n\n onModelChange(event: any) {\n this.model = event;\n this.subscribeToDependencies(this.fields, this.form, this.model);\n }\n\n subscribeToDependencies(fields: CustomFormlyFieldConfig[], form: FormGroup, vendorModel: any) {\n fields.forEach((field: any) => {\n if (field.fieldGroup) {\n this.subscribeToDependencies(field.fieldGroup, form, vendorModel);\n }\n });\n }\n\n updateDependentFieldsFullName(fields: any) {\n fields.forEach((field: any) => {\n if(field.formControl && field.updateTabularField) {\n field.formControl.valueChanges.subscribe((value: any) => {\n this.updateLabelValueForField(field, value);\n });\n }\n if (field.fieldGroup) {\n this.updateDependentFieldsFullName(field.fieldGroup);\n }\n });\n }\n\n updateLabelValueForField(field: any, value: any) {\n const options$ = field.props?.options;\n if (options$ && typeof options$.subscribe === 'function') {\n options$.subscribe((options: any) => {\n const updateFieldKey = field.updateTabularField;\n const selectedOption = options.find((option: any) => option.value === value);\n if (selectedOption) {\n this.model[updateFieldKey] = selectedOption.label;\n }\n });\n }\n }\n\n isFilesUploaded() {\n return true;\n }\n\n generateSequentialIdNumber(parentModel: any) {\n if (parentModel?.[this.propsOfDialog?.['parenetModelKeyToGenerateSequentialNumber']]?.length) {\n const latestRecordIdNumber = parentModel?.[this.propsOfDialog?.['parenetModelKeyToGenerateSequentialNumber']]?.sort((a: { sequentialNumberId: number; }, b: { sequentialNumberId: number; }) => +(b?.sequentialNumberId) - +(a?.sequentialNumberId))?.find((parenData: { sequentialNumberId: any; }) => +(parenData?.sequentialNumberId));\n return +(latestRecordIdNumber?.sequentialNumberId) + 1;\n }\n return 1;\n }\n}","import { map } from \"rxjs\";\nimport { CustomFormlyFieldConfig } from \"../models/custom-form-field.model\";\nimport { GraphQLService } from \"../services/graphql.service\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\nfunction getNestedValue(obj: any, path: string): any {\n return path.split('.').reduce((acc, part) => {\n if (acc && acc[part] !== undefined) {\n return acc[part];\n } else {\n console.warn(`Path \"${path}\" not found in model`);\n return undefined;\n }\n }, obj);\n}\n\nfunction populateVariables(field: CustomFormlyFieldConfig, model: any) {\n if (field.gqlQuery && field.gqlQuery.variables) {\n const variables = { ...field.gqlQuery.variables };\n Object.keys(variables).forEach((key) => {\n \n variables[key] = variables[key].replace(/\\{\\{\\s{0,2}model\\.(.*?)\\s{0,2}\\}\\}/g, (_, modelKey) => {\n const value = getNestedValue(model, modelKey);\n if (value !== null && typeof value === 'object') {\n return value.value;\n } else if(value !== undefined) {\n return value;\n } else {\n console.warn(`No value found for {{ model.${modelKey} }}`);\n return `{{ model.${modelKey} }}`; \n }\n });\n });\n return variables;\n }\n return {};\n}\n\nexport function updateFieldOptionsWithGql(fieldConfig: any, graphQLService: GraphQLService, model: any): void {\n if (fieldConfig.gqlQuery && fieldConfig.gqlQuery.query) {\n const { query, responseKey, optionsLabel, optionsValue } = fieldConfig.gqlQuery;\n const variables = populateVariables(fieldConfig, model);\n\n if (fieldConfig.gqlQuery.isPaginationApi) {\n fieldConfig.props.options = graphQLService.executeQuery(query, variables).pipe(\n map((result: any) => {\n return result.data[responseKey].rows.map((item: any) => {\n return {\n label: item[optionsLabel],\n value: item[optionsValue]\n }\n });\n }));\n } else {\n fieldConfig.props.options = graphQLService.executeQuery(query, variables).pipe(\n map((result: any) => {\n let options = result.data[responseKey];\n if(fieldConfig.props.optionsToBeExcluded?.length) {\n const optionsToBeRemoved = fieldConfig.props.optionsToBeExcluded;\n const removeSet = new Set(optionsToBeRemoved);\n options = options.filter((item: any) => !removeSet.has(item[fieldConfig.props.optionKey]));\n }\n if(fieldConfig.props.addOthersOption) {\n const optns = options.map((item: any) => ({\n label: item[optionsLabel],\n value: item[optionsValue]\n }));\n return [\n { label: 'Others', value: 'Others'},\n ...optns\n ]\n } else {\n return options.map((item: any) => ({\n label: item[optionsLabel],\n value: item[optionsValue]\n }));\n }\n }));\n }\n }\n}\n\nexport function flattenJson(data: any, result: any = {}) {\n for (const key in data) {\n if (typeof data[key] === 'object' && !Array.isArray(data[key])) {\n flattenJson(data[key], result);\n } else {\n result[key] = data[key];\n }\n }\n return result;\n}\n\nexport function deepEqual(obj1: any, obj2: any) {\n if (obj1 === obj2) return true;\n\n if (obj1 === null || typeof obj1 !== 'object' || obj2 === null || typeof obj2 !== 'object') {\n return false;\n }\n\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n if (keys1.length !== keys2.length) return false;\n\n for (const key of keys1) {\n if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) {\n return false;\n }\n }\n\n return true;\n}\n","import { Component, ElementRef, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\n\n@Component({\n selector: 'mu-view-file-dialog',\n standalone: true,\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatDialogModule\n ],\n template: `\n <div class=\"dialog-container\">\n <div class=\"top-bar mnl-bg-primary\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n <h2 mat-dialog-title>{{ data.fileName }}</h2>\n <mat-icon class=\"closeIcon\" (click)=\"close()\">close</mat-icon>\n </div>\n <div class=\"dialog-content\">\n <iframe id=\"viewDoc\"></iframe>\n </div>\n </div>\n `,\n styles: [`\n .dialog-container {\n padding: 12px;\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n .top-bar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid #e0e0e0;\n margin-bottom: 12px;\n height: 40px;\n border-radius: 5px;\n padding: 3px;\n cursor: move;\n }\n .top-bar .mat-mdc-dialog-title {\n padding: 0;\n line-height: 1.5;\n }\n .dialog-content {\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n height: calc(100% - 80px);\n }\n .dialog-content iframe {\n flex-grow: 1;\n width: 100%;\n border: none;\n border-radius: 4px;\n }\n .closeIcon {\n cursor: pointer;\n }\n `]\n})\nexport class ViewFileDialogComponent {\n constructor(\n private dialogRef: MatDialogRef<ViewFileDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private hostElement: ElementRef\n ) {\n this.renderFrame('#viewDoc', data.file);\n }\n\n close() {\n this.dialogRef.close();\n }\n\n renderFrame(querySelector: string, blob: Blob) {\n const intervalId = setInterval(() => {\n const iframe = this.hostElement.nativeElement.querySelector(querySelector);\n if (iframe) {\n clearInterval(intervalId);\n if (!this.data.nodeId) {\n if (blob instanceof Blob) {\n iframe.src = URL.createObjectURL(blob) + '#toolbar=0';\n } else {\n const message = `\n <div style=\"display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; font-family: Arial, sans-serif;\">\n <div style=\"font-size: 18px; font-weight: bold; margin-bottom: 10px;\">Unable to view the file</div>\n <div style=\"text-align: center;\">The file is not uploaded to Content Server. Please upload the file.</div>\n </div>\n `;\n const errorBlob = new Blob([message], { type: 'text/html' });\n iframe.src = URL.createObjectURL(errorBlob);\n console.error('The blob is not a valid file object.');\n }\n } else {\n const message = `\n <div style=\"display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; font-family: Arial, sans-serif;\">\n <div style=\"font-size: 18px; font-weight: bold; margin-bottom: 10px;\">File Preview</div>\n <div style=\"text-align: center;\">This is a preview placeholder for: ${this.data.fileName}</div>\n <div style=\"text-align: center; margin-top: 10px;\">NodeId: ${this.data.nodeId}</div>\n </div>\n `;\n const previewBlob = new Blob([message], { type: 'text/html' });\n iframe.src = URL.createObjectURL(previewBlob);\n }\n }\n }, 2);\n }\n}","import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { FieldType } from '@ngx-formly/material';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { FieldArrayType, FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TabularFormDialogComponent } from './tabular-form-dialog.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { AgGridModule } from 'ag-grid-angular';\nimport { ColDef } from 'ag-grid-community';\nimport { CustomFormlyFieldConfig } from '../models/custom-form-field.model';\nimport { GridApi, RowSelectedEvent } from 'ag-grid-community';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { deepEqual, flattenJson } from '../utils/formly.utils';\nimport { ViewFileDialogComponent } from './view-file-dialog.component';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\n\n@Component({\n selector: 'mu-formly-add-dialog-type',\n standalone: true,\n imports: [CommonModule, FormlyModule, MatSnackBarModule, TranslateModule, ReactiveFormsModule, MatDialogModule, MatTableModule, MatButtonModule,\n MatDialogModule, AgGridModule, TranslateModule,MatIconModule,MatTooltipModule\n ],\n providers: [DatePipe],\n template: `\n <div class=\"flex justify-start mt-2 mr-2 items-center\">\n @if(selectedRowCount > 0) {\n <button\n *ngIf=\"!field.props?.['hideDelete']\"\n mat-icon-button\n type=\"button\"\n (click)=\"removeSelectedRows()\"\n matTooltip=\"{{ field.props?.['deleteButtonTooltip']|translate }}\"\n [disabled]=\"isButtonsDisabled\"\n >\n <mat-icon class=\"icon\">{{ field.props?.['deleteButtonIcon'] }}</mat-icon>\n </button>\n\n <button \n mat-icon-button\n *ngIf=\"!field.props?.['hideEdit']\"\n type=\"button\"\n (click)=\"editDialog()\"\n matTooltip=\"{{ field.props?.['editButtonTooltip'] | translate}}\"\n [disabled]=\"isButtonsDisabled\">\n <mat-icon>\n {{ field.props?.['editButtonIcon'] }}\n </mat-icon>\n </button>\n }\n <button\n *ngIf=\"!field.props?.['hideAdd'] && (props['maxRows'] ? rowData.length < getMaxRows() : true)\"\n mat-button\n type=\"button\"\n (click)=\"openDialog()\"\n matTooltip=\"{{ field.props?.['addButtonTooltip'] | translate}}\"\n [disabled]=\"isButtonsDisabled\"\n >\n <mat-icon>\n {{ field.props?.['addButtonIcon'] }}\n </mat-icon>\n <span>{{field.props?.['addBtnLabel'] | translate}}</span>\n </button>\n </div>\n <ag-grid-angular\n class=\"ag-theme-alpine\"\n [rowData]=\"rowData\"\n [formlyAttributes]=\"field\"\n [columnDefs]=\"columnDefs\"\n [defaultColDef]=\"defaultColDef\"\n [suppressRowClickSelection]=\"true\"\n rowSelection=\"multiple\"\n (gridReady)=\"onGridReady($event)\"\n [domLayout]=\"rowData.length > 5 ? 'normal' : 'autoHeight'\"\n (rowSelected)=\"onRowSelected($event)\"\n [style.height]=\"rowData.length > 5 ? '300px' : 'auto'\"\n [getRowStyle]=\"getRowStyle\"\n [gridOptions]=\"{ suppressMovableColumns : true }\"\n >\n </ag-grid-angular>\n `,\n styles: [`\n ag-grid-angular {\n margin-top: 16px;\n width: 100%;\n }\n `]\n})\nexport class TabularFormComponent extends FieldArrayType<CustomFormlyFieldConfig> implements OnInit {\n selectedRowCount = 0;\n isButtonsDisabled = false;\n columnDefs: ColDef[] = [];\n rowData: Record<string, any>[] = [];\n gridApi!: GridApi;\n defaultColDef = {\n sortable: true,\n filter: true,\n resizable: true,\n flex: 1,\n minWidth: 150,\n wrapHeaderText: true,\n autoHeaderHeight: true\n };\n oldValue!: any;\n constructor(\n private dialog: MatDialog,\n private snackBar: MatSnackBar,\n private cd: ChangeDetectorRef,\n private translateService: TranslateService,\n private datePipe: DatePipe) {\n super();\n }\n\n ngOnInit(): void {\n if(this.options.formState.showOldValues) {\n const oldValues = flattenJson(this.options.formState.oldValues);\n this.oldValue = oldValues?.[this.field.key as string];\n }\n\n if(this.field?.enabledForRoles) {\n this.isButtonsDisabled = !this.options.formState?.userRoles?.some((role: any) => this.field?.enabledForRoles?.includes(role));\n }\n\n if (this.field?.props?.['columnDefs']) {\n if(this.options.formState?.showOldValues) {\n this.columnDefs = [\n {\n headerCheckboxSelection: !this.isButtonsDisabled,\n checkboxSelection: (params) => {\n return !this.isButtonsDisabled && !params.data.isOldData\n },\n headerName: '',\n width: 40,\n maxWidth: 40,\n filter: false,\n resizable:false\n },\n {\n headerName: '',\n width: 40,\n maxWidth: 60,\n filter: false,\n resizable:false,\n field: 'isChanged',\n cellRenderer: (params: any) => {\n if (params.value) {\n return `<i class=\"material-icons cursor-pointer mt-[9px]\" style=\"color: red;\">edit</i>`;\n } else {\n return `<i class=\"material-icons cursor-pointer mt-[9px]\" style=\"color: black;\">visibility</i>`;\n }\n },\n onCellClicked: (params) => {\n this.showChangedValues(params);\n },\n tooltipValueGetter: (params: any) => {\n if (params.value) {\n return 'This row data is changed, Please click on this to view the changed details';\n }\n return '';\n },\n\n },\n ...this.translateLabels(this.field?.props?.['columnDefs'])\n ]\n } else {\n this.columnDefs = [\n {\n headerCheckboxSelection: !this.isButtonsDisabled,\n checkboxSelection: !this.isButtonsDisabled,\n headerName: '',\n width: 40,\n maxWidth: 40,\n filter: false,\n resizable:false\n },\n {\n headerName: '',\n field: 'view',\n width: 50,\n maxWidth: 50,\n filter: false,\n resizable:false,\n cellRenderer: () => {\n return `<i class=\"material-icons cursor-pointer mt-[9px]\" style=\"color: black;\">visibility</i>`;\n },\n onCellClicked: (params) => {\n this.showChangedValues(params);\n }\n },\n ...this.translateLabels(this.field?.props?.['columnDefs'])\n ];\n }\n\n this.columnDefs = this.columnDefs?.map(colDef => {\n if (colDef?.type === 'date') {\n return {\n ...colDef,\n valueFormatter: ((params:any) => this.formatDate(params.value))\n };\n }\n if(colDef?.field?.includes('FileName')) {\n return {\n ...colDef,\n cellRenderer: (params: any) => {\n if(params.value) {\n return `<a href=\"javascript:void(0)\" style=\"color: blue; text-decoration: underline;\">\n ${params.value}\n </a>`;\n } else {\n return '';\n }\n },\n onCellClicked: (params) => {\n this.onFilenameClick(params);\n },\n }\n }\n return colDef;\n })\n const gridData = findNestedKey(this.field.parent?.model, this.field.key);\n this.rowData = Array.isArray(gridData) ? gridData : [];\n if(this.field.props?.['rowData']) {\n this.field.props?.['rowData']?.asObservable()?.pipe()?.subscribe((data: any) => {\n if(data[0]?.id) {\n if(this.rowData.find((row: any) => row.id == data[0]?.id)) {\n this.rowData = [...this.rowData]\n } else {\n this.rowData = [...this.rowData, ...data];\n }\n }\n })\n }\n if(this.field.props?.['updateRowData']) {\n this.field.props?.['updateRowData']?.asObservable()?.pipe()?.subscribe((data: any) => {\n const updatedRows = this.rowData.map((row: any) => {\n const newRow = data.find((eachRow: any) => eachRow.id == row.id);\n const newRowData = {\n ...row,\n ...(newRow ?? {})\n };\n return newRowData;\n });\n this.rowData = [...updatedRows];\n this.gridApi?.selectAll();\n this.gridApi?.deselectAll();\n });\n }\n }\n }\n onGridReady(params: any): void {\n this.gridApi = params.api;\n this.updateSelectedRowCount();\n }\n\n openDialog(): void {\n if (this.field && this.field.props?.['dialogOpened']) {\n this.field.props?.['dialogOpened'](event, this.field);\n }\n const dialogRef = this.dialog.open(TabularFormDialogComponent, {\n width: this.props?.['dialogWidth'] ?? '75%',\n maxWidth: '100%',\n height: this.props?.['dialogHeight'] ?? '85%',\n data: { fieldConfig: this.field.fieldArray.fieldGroup, label: this.field.props?.addLabel??'Add', formState: this.options?.formState, tabularProps: this.field.props,\n parentModel: this.field.parent?.model\n },\n disableClose: true,\n autoFocus: false\n });\n\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n result.id = this.generateRandomNumber();\n if(this.options.formState.showOldValues) {\n result.addedNewRow = true;\n }\n if (this.props?.['isSequentialNumGenerationRequired']) {\n result.sequentialNumberId = `000${this.generateSequentialIdNumber(this.field.parent?.model)}`;\n }\n this.addRowToGrid(result);\n }\n if (this.field && this.field.props?.['dialogClosed']) {\n this.field.props?.['dialogClosed'](event, this.field);\n }\n });\n\n dialogRef.componentInstance.saveData.subscribe((data: any) => {\n data.id = this.generateRandomNumber();\n if(this.options.formState.showOldValues) {\n data.addedNewRow = true;\n }\n updateModel(this.field.parent?.model, this.field.key, data, 'push');\n this.addRowToGrid(data);\n });\n }\n\n generateRandomNumber(): number {\n return Math.floor(1000 + Math.random() * 9000);\n }\n\n addRowToGrid(data: any): void {\n if (this.rowData.length > this.getMaxRows()) {\n this.snackBar.open(`Cannot add more than ${this.getMaxRows()} rows`, 'Close', {\n duration: 3000\n });\n return;\n }\n for (const key in data) {\n if (data[key] instanceof Object) {\n if (data[key]?.fileName) {\n data[`${key}FileName`] = data[key].fileName;\n }\n }\n }\n if (this.columnDefs.length === 0) {\n this.columnDefs = [\n {\n headerCheckboxSelection: true,\n checkboxSelection: true,\n headerName: '',\n width: 40,\n maxWidth: 40,\n resizable:false,\n filter: false\n },\n ...Object.keys(data)\n .filter(key => {\n const fieldConfig = this.findFieldConfigByKey(this.field.fieldGroup || [], key);\n return key !== 'id' && fieldConfig?.type !== 'mu-button';\n })\n .map(key => {\n const label = this.findLabelInNestedFields(this.field.fieldGroup || [], key);\n return {\n field: key,\n headerName: label\n };\n })\n ];\n }\n if(this.rowData.find((row: any) => row.id == data.id)) {\n this.rowData = [...this.rowData]\n } else {\n this.rowData = [...this.rowData, data];\n }\n this.add(null, data);\n this.cd.detectChanges();\n this.snackBar.open(\n this.translateService.instant('MNL_TABULAR_FORM.DATA_ADDED_SUCCESSFULLY'),\n 'Close',\n {\n duration: 0,\n }\n );\n this.gridApi.selectAll();\n this.gridApi.deselectAll();\n }\n\n findFieldConfigByKey(fieldConfigs: any[], key: string): any {\n for (const field of fieldConfigs) {\n if (field.key === key) {\n return field;\n }\n if (field.fieldGroup) {\n const foundField = this.findFieldConfigByKey(field.fieldGroup, key);\n if (foundField) {\n return foundField;\n }\n }\n }\n return null;\n }\n\n getMaxRows(): number {\n return this.to['maxRows'];\n }\n\n findLabelInNestedFields(fieldConfigs: any[], key: string): string {\n for (const field of fieldConfigs) {\n if (field.key === key) {\n return field.props?.label || key;\n }\n if (field.fieldGroup) {\n const label = this.findLabelInNestedFields(field.fieldGroup, key);\n if (label) {\n return label;\n }\n }\n }\n return key;\n }\n\n removeSelectedRows() {\n if(this.options.formState.showOldValues) {\n const selectedData = this.gridApi.getSelectedNodes().map(node => node.data);\n if(!selectedData.every(data => data.addedNewRow)) {\n this.snackBar.open(\n this.translateService.instant(\n 'MNL_TABULAR_FORM.NO_ACCESS_TO_DELETE_OLD_RECORDS'\n ),\n 'Ok',\n {\n duration: 0,\n panelClass: ['error-snackbar'],\n }\n );\n return;\n }\n }\n const dialog = this.dialog.open(ConfirmationDialogComponent, {\n width: '50%',\n height: '28%',\n data: { title: 'Are you sure to delete?'}\n });\n dialog.afterClosed().subscribe((res) => {\n if(res) {\n const selectedNodes = this.gridApi.getSelectedNodes();\n const selectedData = selectedNodes.map(node => node.data);\n this.rowData = this.rowData.filter(row => !selectedData.includes(row));\n updateModel(this.field.parent?.model, this.field.key, this.rowData, 'assign')\n \n this.gridApi.applyTransaction({\n remove: selectedData\n });\n this.updateSelectedRowCount();\n }\n });\n }\n\n onRowSelected(event: RowSelectedEvent): void {\n this.updateSelectedRowCount();\n }\n\n updateSelectedRowCount(): void {\n this.selectedRowCount = this.gridApi.getSelectedNodes().length;\n }\n\n translateLabels(\n columnDefs: any[]\n ): any[] {\n return columnDefs.map((column) => {\n return {\n ...column,\n headerName: this.translateService.instant(column.headerName)\n }\n })\n }\n\n editDialog() {\n const selectedNodes = this.gridApi.getSelectedNodes();\n const selectedData = selectedNodes.map(node => node.data);\n if (selectedData?.length > 1) {\n this.snackBar.open(\n this.translateService.instant(\n 'MNL_TABULAR_FORM.MULTI_ROW_EDIT_ERROR'\n )\n , 'Ok', {\n duration: 5000,\n });\n return;\n }\n if (this.field && this.field.props?.['dialogOpened']) {\n this.field.props?.['dialogOpened'](event, this.field);\n }\n const dialogRef = this.dialog.open(TabularFormDialogComponent, {\n width: this.props?.['dialogWidth'] ?? '75%',\n maxWidth: '100%',\n height: this.props?.['dialogHeight'] ?? '85%',\n data: { fieldConfig: this.field.fieldArray.fieldGroup, label: this.field.props?.editLabel??'Edit', formState: this.options?.formState, selectedRowData: selectedData[0], tabularProps: this.field.props, parentModel: this.field.parent?.model },\n disableClose: true,\n autoFocus: false\n });\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n this.rowData = this.rowData.map((rowRecord) => {\n if (rowRecord?.['id'] === result?.id) {\n if(this.options.formState?.showOldValues) {\n const oldRowValue = this.oldValue.find((record: any) => record.id === result?.id);\n if(oldRowValue) {\n oldRowValue['isChanged'] = false;\n result['isChanged'] = false;\n const mergdOld = {\n ...result,\n ...oldRowValue\n }\n const eq = deepEqual(mergdOld, result);\n rowRecord['isChanged'] = !eq;\n result['isChanged'] = !eq;\n }\n }\n const updatedRow = {\n ...rowRecord,\n ...result,\n };\n Object.keys(updatedRow).forEach(key => {\n if (updatedRow[key] instanceof Object) {\n if (updatedRow[key]?.fileName) {\n updatedRow[`${key}FileName`] = updatedRow[key].fileName;\n }\n }\n });\n return updatedRow;\n }\n return rowRecord;\n });\n updateModel(this.field.parent?.model, this.field.key, this.rowData, 'assign');\n this.cd.detectChanges();\n }\n this.updateSelectedRowCount();\n this.cd.detectChanges();\n if (this.field && this.field.props?.['tabularDataEdited']) {\n this.field.props?.['tabularDataEdited'](event, this.field);\n }\n if (this.field && this.field.props?.['dialogClosed']) {\n this.field.props?.['dialogClosed'](event, this.field);\n }\n });\n }\n\n formatDate(date: string): string {\n if(date) {\n const d = new Date(date);\n const day = String(d.getDate()).padStart(2, '0');\n const monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n const month = monthNames[d.getMonth()];\n const year = d.getFullYear();\n return `${day}-${month}-${year}`;\n } else {\n return '';\n }\n }\n\n onFilenameClick(params: any) {\n const uploadedFileNameKey = Object.keys(params.data).filter(key => key.endsWith('FileName'));\n const uploadedFileObjectKey = uploadedFileNameKey[0]?.replace(/FileName$/, \"\");\n if(uploadedFileObjectKey) this.viewFile(params.data[uploadedFileObjectKey]);\n }\n\n viewFile(element:any) {\n const dialogRef = this.dialog.open(ViewFileDialogComponent, {\n width: '75%',\n maxWidth: '95%',\n height: '85%',\n data: element\n });\n }\n\n showChangedValues(params: any) {\n const formState = {\n ...this.options.formState,\n userRoles: []\n }\n this.dialog.open(TabularFormDialogComponent, {\n width: this.props?.['dialogWidth'] ?? '75%',\n maxWidth: '95%',\n height: '85%',\n data: { fieldConfig: this.field.fieldArray.fieldGroup, label: this.field.props?.viewLabel??'View', formState: formState, selectedRowData: params.data, hideUpdateBtn: true, parentModel: this.field.parent?.model, tabularProps: this.field.props },\n disableClose: true\n });\n }\n\n generateSequentialIdNumber(parentModel: any) {\n if (parentModel?.[this.props?.['parenetModelKeyToGenerateSequentialNumber']]?.length) {\n const latestRecordIdNumber = parentModel?.[this.props?.['parenetModelKeyToGenerateSequentialNumber']]?.sort((a: { sequentialNumberId: number; }, b: { sequentialNumberId: number; }) => +(b?.sequentialNumberId) - +(a?.sequentialNumberId))?.find((parenData: { sequentialNumberId: any; }) => +(parenData?.sequentialNumberId));\n return +(latestRecordIdNumber?.sequentialNumberId) + 1;\n }\n return 1;\n }\n\n getRowStyle = (params: any) => {\n if(this.options.formState.showOldValues) {\n if (params.data?.isChanged) {\n return { backgroundColor: '#ffcccc' };\n }\n if (params.data?.addedNewRow) {\n return { backgroundColor: '#F0EBAD80' };\n }\n }\n return undefined;\n };\n}\n\nfunction updateModel(obj: any, targetKey: any, newValue: any, action: string) {\n for (const key in obj) {\n if (key === targetKey) {\n if (action === 'push') {\n if (Array.isArray(obj[key])) {\n obj[key].push(newValue);\n } else if (obj[key] !== undefined) {\n obj[key] = [obj[key], newValue];\n } else {\n obj[key] = [newValue];\n }\n } else {\n obj[key] = newValue;\n }\n\n return true;\n }\n if (typeof obj[key] === 'object' && obj[key] !== null) {\n const result = updateModel(obj[key], targetKey, newValue, action);\n if (result) return true;\n }\n }\n return false;\n}\n\nfunction findNestedKey(obj: any, targetKey: any): any {\n for (const key in obj) {\n if (key === targetKey) return obj[key];\n if (typeof obj[key] === 'object') {\n const result = findNestedKey(obj[key], targetKey);\n if (result) return result;\n }\n }\n return undefined;\n}","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport {\n MatAutocompleteModule,\n MatAutocompleteTrigger,\n} from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonsModule } from '@muraai/mnl-commons';\nimport { FieldType, FieldTypeConfig, FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { catchError, debounceTime, distinctUntilChanged, map, startWith, switchMap, take } from 'rxjs/operators';\n\n@Component({\n selector: 'mu-multi-checkbox-autocomplete',\n standalone: true,\n imports: [\n CommonModule,\n CommonsModule,\n MatChipsModule,\n MatButtonModule,\n MatIconModule,\n MatInputModule,\n MatAutocompleteModule,\n TranslateModule,\n MatCheckboxModule,\n FormlyModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatTooltipModule\n ],\n providers: [MatAutocompleteTrigger],\n template: `\n <mat-form-field class=\"w-full\" appearance=\"outline\">\n <mat-label\n >{{ field.props.label }}\n <span *ngIf=\"field.props.required\">*</span>\n </mat-label>\n <mat-chip-grid\n #chipGrid\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n >\n @for (chip of formControl.value; track $index; let chipIndex= $index) {\n <mat-chip-row (removed)=\"removeChip(chipIndex)\"\n [matTooltip]=\"chip\">\n {{ chip }}\n <button matChipRemove [attr.aria-label]=\"'remove ' + chip\">\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n <input\n [formControl]=\"searchControl\"\n [matChipInputFor]=\"chipGrid\"\n [matAutocomplete]=\"auto\"\n [readonly]=\"field.props.readonly\"\n [required]=\"field.props.required || false\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"trigger.openPanel()\"\n />\n <mat-autocomplete #auto=\"matAutocomplete\">\n <mat-option\n *ngFor=\"let option of filteredOptions | async\"\n [value]=\"option.label\"\n (click)=\"toggleSelection($event, option.label)\"\n >\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"onCheckboxChange($event, option.label)\"\n [checked]=\"isSelected(option.label)\"\n >\n {{ option.label }}\n </mat-checkbox>\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"formControl.invalid && formControl.touched\">\n {{ field.validation?.messages?.['required'] }}\n </mat-error>\n </mat-form-field>\n `,\n styles: `\n .selected-chips {\n margin-top: 10px;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyMultiSelectCheckboxAutocompleteComponent\n extends FieldType<FieldTypeConfig>\n implements OnInit\n{\n searchControl = new FormControl();\n filteredOptions!: Observable<any>;\n protected optionsList: any[] = [];\n\n @ViewChild(MatAutocompleteTrigger) trigger!: MatAutocompleteTrigger;\n\n ngOnInit() {\n const debounce = this.field.props.debounceTime || 300;\n const fetchOnce =\n this.field.props.fetchOnce === undefined ? true : this.field.props.fetchOnce;\n\n if (this.field.props.apiFunction && typeof this.field.props.apiFunction === 'function') {\n if (fetchOnce) {\n this.field.props\n .apiFunction('')\n .pipe(\n catchError((error) => {\n console.error('API Error:', error);\n return of([]);\n })\n )\n .subscribe((results: any[]) => {\n this.optionsList = results || [];\n\n this.filteredOptions = this.searchControl.valueChanges.pipe(\n startWith(''),\n debounceTime(debounce),\n distinctUntilChanged(),\n map((searchTerm: string) => this.filterOptions(searchTerm))\n ); \n });\n } else {\n this.filteredOptions = this.searchControl.valueChanges.pipe(\n startWith(''),\n debounceTime(debounce),\n distinctUntilChanged(),\n switchMap((searchTerm: any) => {\n return this.field.props.apiFunction(searchTerm).pipe(\n map((results: any[]) => {\n this.optionsList = results || [];\n return results || [];\n }),\n catchError((error) => {\n console.error('API Error:', error);\n return of([]);\n })\n );\n })\n );\n }\n }\n else if (Array.isArray(this.field.props.options)) {\n this.optionsList = this.field.props.options;\n this.filteredOptions = this.searchControl.valueChanges.pipe(\n startWith(''),\n debounceTime(debounce),\n map((searchTerm) => this.filterOptions(searchTerm))\n );\n }\n else {\n const options$ = this.field.props.options as Observable<any[]>;\n\n options$.pipe(take(1)).subscribe((opts) => {\n this.optionsList = opts || [];\n });\n\n options$.subscribe((opts) => (this.optionsList = opts || []));\n\n this.filteredOptions = combineLatest([\n this.searchControl.valueChanges.pipe(\n startWith(''),\n debounceTime(debounce)\n ),\n options$,\n ]).pipe(\n map(([searchTerm, options]: [string, any[]]) =>\n this.filterOptions(searchTerm)\n )\n );\n }\n }\n\n onKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n event.preventDefault();\n }\n }\n\n private filterOptions(searchTerm: string) {\n const list = this.optionsList || [];\n const term = (searchTerm || '').toLowerCase();\n\n return list.filter(option =>\n (option.label || '').toLowerCase().includes(term)\n );\n}\n\n onCheckboxChange(event: any, value: any) {\n const currentValue = this.formControl.value || [];\n if (event.checked) {\n this.formControl.setValue([...currentValue, value]);\n } else {\n this.formControl.setValue(currentValue.filter((v: any) => v !== value));\n }\n this.trigger.openPanel();\n }\n\n toggleSelection(event: any, value: any) {\n if (this.isSelected(value)) {\n this.removeOption(value);\n } else {\n this.formControl.setValue([...this.formControl.value, value]);\n }\n this.searchControl.setValue('');\n this.trigger.openPanel();\n }\n\n isSelected(value: any): boolean {\n return (\n (this.formControl.value && this.formControl.value.includes(value)) ||\n false\n );\n }\n\n removeOption(value: any) {\n const values = this.formControl.value;\n const opts = values.filter((val: any) => val !== value);\n this.formControl.setValue(opts);\n }\n\n removeChip(chipIndex: number): void {\n const value = this.formControl.value;\n this.formControl.setValue([\n ...value.slice(0, chipIndex),\n ...value.slice(chipIndex + 1, value.length),\n ]);\n this.formControl.markAsTouched();\n }\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport function selectValidator(control: AbstractControl): ValidationErrors | null {\n if (control.value && Object.values(control.value).some((selectedValue: unknown) => !!selectedValue)) {\n return null; \n }\n return { selectValidation: true }; \n}","import { AbstractControl } from '@angular/forms';\n\nexport function gstValidator(control: AbstractControl) {\n const value = control.value || '';\n const gstPattern = /^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}[Z]{1}[0-9A-Z]{1}$/;\n\n if (!value || gstPattern.test(value)) {\n return null;\n } else {\n return { gst: true };\n }\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function panValidator(control: AbstractControl) {\n const value = control.value || '';\n const panPattern = /^[A-Z]{5}[0-9]{4}[A-Z]{1}$/;\n\n if (!value || panPattern.test(value)) {\n return null;\n } else {\n return { pan: true };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FieldType, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'mu-formly-field-panel',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatFormFieldModule,\n MatIconModule,\n FormlyMaterialModule,\n FormlyModule,\n CommonModule,\n MatCardModule\n ],\n template: `\n <mat-card>\n <mat-card-header [ngClass]=\"[field?.props?.backgroundColor, 'flex', 'flex-col', 'pb-1']\">\n <div>{{field?.props?.label}}</div>\n <div class=\"text-xs\">{{field?.props?.description ?? ''}}</div>\n </mat-card-header>\n\n <mat-card-content>\n @for(fieldItem of field?.fieldGroup; track fieldItem) {\n <formly-field [field]=\"fieldItem\"></formly-field>\n }\n </mat-card-content>\n </mat-card>\n `\n})\n\nexport class FormlyFieldPanelComponent extends FieldType {\n override field: any = {};\n\n isValid(field: FormlyFieldConfig): boolean {\n if (field.key) {\n return field?.formControl?.valid || true;\n }\n\n return field.fieldGroup ? field.fieldGroup.every((fieldItem) => this.isValid(fieldItem)) : true;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, TemplateRef, ViewChild, AfterViewInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FieldWrapper, FormlyModule } from '@ngx-formly/core';\n\n@Component({\n selector: 'mu-formly-wrapper-addons',\n standalone: true,\n imports: [CommonModule, MatButtonModule, FormlyModule, ReactiveFormsModule, MatIconModule],\n template: `\n <ng-template #matPrefix>\n <span\n *ngIf=\"props['addonLeft']\"\n [ngStyle]=\"{ cursor: props['addonLeft'].onClick ? 'pointer' : 'inherit' }\"\n (click)=\"addonLeftClick($event)\"\n >\n <mat-icon *ngIf=\"props['addonLeft'].icon\">{{ props['addonLeft'].icon }}</mat-icon>\n <span *ngIf=\"props['addonLeft'].text\">{{ props['addonLeft'].text }}</span>\n </span>\n </ng-template>\n\n <ng-container #fieldComponent></ng-container>\n\n <ng-template #matSuffix>\n <span\n *ngIf=\"props['addonRight']\"\n [ngStyle]=\"{ cursor: props['addonRight'].onClick ? 'pointer' : 'inherit' }\"\n (click)=\"addonRightClick($event)\"\n >\n <mat-icon *ngIf=\"props['addonRight'].icon\">{{ props['addonRight'].icon }}</mat-icon>\n <span *ngIf=\"props['addonRight'].text\">{{ props['addonRight'].text }}</span>\n </span>\n </ng-template>\n `,\n})\nexport class FormlyWrapperAddonsComponent extends FieldWrapper implements AfterViewInit {\n @ViewChild('matPrefix', { static: true }) matPrefix!: TemplateRef<any>;\n @ViewChild('matSuffix', { static: true }) matSuffix!: TemplateRef<any>;\n\n ngAfterViewInit() {\n if (this.matPrefix) {\n this.props['prefix'] = this.matPrefix;\n }\n\n if (this.matSuffix) {\n this.props['suffix'] = this.matSuffix;\n }\n }\n\n addonRightClick($event: any) {\n if (this.props['addonRight'].onClick) {\n this.props['addonRight'].onClick(this.to, this, $event);\n }\n }\n\n addonLeftClick($event: any) {\n if (this.props['addonLeft'].onClick) {\n this.props['addonLeft'].onClick(this.to, this, $event);\n }\n }\n}","import { FormlyFieldConfig } from '@ngx-formly/core';\n\nexport function addonsExtension(field: FormlyFieldConfig) {\n if (!field.props || (field.wrappers && field.wrappers.indexOf('addons') !== -1)) {\n return;\n }\n\n if (field.props['addonLeft'] || field.props['addonRight']) {\n field.wrappers = [...(field.wrappers || []), 'addons'];\n }\n}","import { CommonModule } from '@angular/common';\nimport {\n Component,\n DoCheck,\n OnInit,\n Renderer2,\n ElementRef,\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FieldWrapper, FormlyModule } from '@ngx-formly/core';\nimport { flattenJson } from '../utils/formly.utils';\n\n@Component({\n selector: 'mu-with-old-value-wrapper',\n standalone: true,\n imports: [\n CommonModule,\n FormlyModule,\n ReactiveFormsModule,\n MatInputModule,\n FormsModule,\n MatFormFieldModule,\n ],\n template: `\n <div class=\"show-column\">\n <ng-container #fieldComponent></ng-container>\n @if(showOldValues && hasValueChanged()) {\n <span class=\"oldValueSpan ml-1\"\n ><span class=\"old-label\">Old Value: </span>{{ oldValueDisplay }}</span\n >\n }\n </div>\n `,\n styles: [\n `\n .show-column { \n flex-direction: column;\n display: flex;\n }\n .changed-label {\n color: red;\n }\n .old-value {\n font-size: 0.9em;\n color: gray;\n }\n .oldValueSpan {\n font-family: Poppins, 'Helvetica Neue', sans-serif;\n font-size: 0.9em;\n font-weight: 500;\n }\n .old-label {\n color: #00ae4d !important;\n }\n `,\n ],\n})\nexport class WithOldValueWrapperComponent\n extends FieldWrapper\n implements OnInit, DoCheck\n{\n oldValues: any;\n currentValue: any;\n showOldValues!: boolean;\n\n constructor(private renderer: Renderer2, private elRef: ElementRef) {\n super();\n }\n\n ngOnInit(): void {\n this.oldValues = flattenJson(this.options.formState.oldValues);\n this.showOldValues = this.options.formState.showOldValues;\n }\n ngDoCheck() {\n this.currentValue = this.formControl.value;\n }\n\n normalizeToUTCMidnight(date: Date): string {\n const normalized = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n return normalized.toISOString();\n }\n\n hasValueChanged(): boolean {\n const oldValue = this.oldValues?.[this.field.key as string];\n if(oldValue === undefined) {\n const tabularData = this.oldValues?.[this.field.props?.['parentKey']];\n if (tabularData) {\n const tabularOldValue = tabularData?.find((data: any) => data.id === this.field.model?.id)\n if(!tabularOldValue) return false;\n const tabularOldVal = tabularOldValue?.[this.field.key as string];\n const label = this.elRef.nativeElement.querySelector('label');\n const oldValStr = tabularOldVal instanceof Date ? this.normalizeToUTCMidnight(tabularOldVal): tabularOldVal;\n const newValStr = this.currentValue instanceof Date ? this.normalizeToUTCMidnight(this.currentValue): this.currentValue;\n if (oldValStr != newValStr && label) {\n this.renderer.setAttribute(label, 'style', 'color: red !important;');\n } else if(label) {\n this.renderer.setAttribute(label, 'style', 'color: black !important;');\n }\n return oldValStr != newValStr;\n }\n }\n\n const label = this.elRef.nativeElement.querySelector('label');\n if(Array.isArray(this.currentValue)) {\n if(JSON.stringify(oldValue) != JSON.stringify(this.currentValue) && label) {\n this.renderer.setAttribute(label, 'style', 'color: red !important;');\n } else if(label) {\n this.renderer.setAttribute(label, 'style', 'color: black !important;');\n }\n return JSON.stringify(oldValue) != JSON.stringify(this.currentValue);\n }\n const oldValStr = oldValue instanceof Date ? this.normalizeToUTCMidnight(oldValue) : oldValue;\n const newValStr = this.currentValue instanceof Date ? this.normalizeToUTCMidnight(this.currentValue) : this.currentValue;\n\n if (oldValStr != newValStr && label) {\n this.renderer.setAttribute(label, 'style', 'color: red !important;');\n } else if(label) {\n this.renderer.setAttribute(label, 'style', 'color: black !important;');\n }\n if (oldValue instanceof Date && this.currentValue instanceof Date) {\n return this.normalizeToUTCMidnight(oldValue) !== this.normalizeToUTCMidnight(this.currentValue);\n }\n return oldValStr != newValStr;\n }\n\n get oldValueDisplay(): string {\n const key = this.field.key as string;\n const formatIfDate = (value: any): string => {\n if (\n (typeof value === 'string' && /^\\d{4}-\\d{2}-\\d{2}T/.test(value)) ||\n value instanceof Date\n ) {\n const date = new Date(value);\n if (!isNaN(date.getTime())) {\n return date.toLocaleDateString('en-GB', {\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n }).replace(/ /g, '-');\n }\n }\n return value === '' ? '-' : value;\n };\n if (\n this.field.key &&\n this.oldValues?.[this.field.key as string] !== undefined\n ) {\n const oldVal =this.oldValues[this.field.key as string] === '' ? '-' : this.oldValues[this.field.key as string];\n return formatIfDate(oldVal);\n } else if(this.field.key &&\n this.oldValues?.[this.field.key as string] === undefined) {\n const tabularData = this.oldValues?.[this.field.props?.['parentKey']];\n let tabularOldVal;\n if (tabularData) {\n const tabularOldValue = tabularData?.find((data: any) => data.id === this.field.model?.id)\n if(!tabularOldValue) return '';\n tabularOldVal = tabularOldValue?.[this.field.key as string];\n return formatIfDate(tabularOldVal ?? '-');\n }\n return tabularOldVal ?? '-';\n } else {\n return 'N/A';\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mu-comment-input',\n standalone: true,\n imports: [CommonModule, TranslateModule, FormlyModule, ReactiveFormsModule, MatInputModule, MatButtonModule, FormsModule, MatIconModule],\n template: `\n <div *ngIf=\"isInputRequired\">\n <mat-form-field class=\"w-[80%]\" appearance=\"outline\">\n <mat-label>{{ to.label }}</mat-label>\n <input matInput \n type=\"text\" \n [(ngModel)]=\"comment\" \n placeholder=\"{{'COMMENTS.COMMENT_PLACEHOLDER' | translate}}\" \n class=\"form-control\"\n [readonly]=\"to.readonly\"\n [disabled]=\"to.disabled || false\"\n />\n <button type=\"button\" class=\"sendButton\" matSuffix mat-icon-button aria-label=\"Send\" (click)=\"sendComment()\" [disabled]=\"to.disabled\">\n <mat-icon>send</mat-icon>\n </button>\n </mat-form-field>\n </div>\n <div *ngIf=\"model?.[field?.props?.['commentModelKey']]?.length\">\n <h2 class=\"commentsHeader mnl-bg-primary\">{{ to.label }}</h2>\n <div *ngFor=\"let comment of model?.[field?.props?.['commentModelKey']]\" class=\"comment\">\n <div class=\"commentsDate\">{{ comment.date | date: 'dd-MMM-yyyy HH:mm:ss' }} <strong class=\"commentedUser\">{{ comment.user }}</strong></div>\n <p class=\"comment-text\">{{ comment.text }}</p>\n </div>\n </div>\n `,\n styles: [`\n .comment {\n border-top: 1px solid #ddd;\n padding-top: 8px;\n font-family: Poppins, \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n }\n .commentsDate {\n color: gray;\n }\n .commentedUser {\n color: black;\n }\n .commentsHeader {\n border-radius: 7px;\n padding-left: 10px;\n }\n .comment-text {\n white-space: normal;\n word-wrap: break-word;\n overflow-wrap: anywhere;\n margin: 0;\n }\n .sendButton {\n padding: 0px;\n height: 30px;\n }\n `]\n})\nexport class FormlyCommentInputComponent extends FieldType implements OnInit {\n comment = '';\n isInputRequired: boolean = true;\n\n ngOnInit(): void {\n if (this.field?.props?.['isInputRequired'] === false) {\n this.isInputRequired = this?.field.props?.['isInputRequired'];\n }\n }\n\n sendComment() {\n const userData = localStorage.getItem('loggedInUserDetails');\n const user = userData ? JSON.parse(userData) : '';\n if (this.comment.trim()) {\n const newComment = {\n text: this.comment,\n date: new Date().toISOString(),\n user: user.email\n };\n\n if (!this.model.comments) {\n this.model.comments = [];\n }\n this.model.comments.unshift(newComment);\n this.comment = '';\n if (this.field && this.field.props?.['saveComment']) {\n this.field.props?.['saveComment']();\n }\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\nimport { FormlyModule, FieldTypeConfig } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\n@Component({\n selector: 'mu-radio',\n standalone: true,\n imports: [\n CommonModule,\n FormlyModule,\n FormlyMaterialModule,\n ReactiveFormsModule,\n MatRadioModule,\n MatFormFieldModule\n ],\n template: `\n <mat-radio-group [formControl]=\"formControl\" [formlyAttributes]=\"field\">\n <div class=\"flex-col\">\n <div class=\"flex justify-between\">\n <label *ngIf=\"to.label\" [class.text-red-600]=\"to.required && formControl.touched && formControl.invalid\">{{ to.label }}\n <span *ngIf=\"to.required\">*</span></label>\n <div class=\"flex space-x-4\">\n <mat-radio-button *ngFor=\"let option of to['radioOptions']\" [value]=\"option.value\" [disabled]=\"to.disabled\">\n {{ option.label }}\n </mat-radio-button>\n </div>\n </div>\n <mat-error *ngIf=\"formControl.invalid && formControl.touched\">\n {{ field.validation?.messages?.['required'] }}\n </mat-error>\n </div>\n \n </mat-radio-group>\n `,\n})\nexport class CustomFormlyRadioComponent extends FieldType<FieldTypeConfig> {\n}","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FieldTypeConfig, FormlyModule } from '@ngx-formly/core';\nimport { FieldType } from '@ngx-formly/material';\n\n@Component({\n selector: 'mu-formly-field-mat-input',\n standalone: true,\n imports: [CommonModule, MatInputModule, FormlyModule, ReactiveFormsModule, FormsModule, MatFormFieldModule],\n template: `\n <mat-form-field class=\"w-full\" appearance=\"outline\">\n <mat-label>{{ to.label }}</mat-label>\n <input matInput [formControl]=\"formControl\" [formlyAttributes]=\"field\" />\n </mat-form-field>\n <mat-error *ngIf=\"formControl.invalid && formControl.touched\">\n {{ field.validation?.messages?.['required'] || field.validation?.messages?.['pattern']}}\n </mat-error>\n `,\n})\nexport class CustomFormlyMatInputComponent extends FieldType<FieldTypeConfig> {}\n","import { Component } from '@angular/core';\nimport { FormlyFieldConfig, FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\n@Component({\n selector: 'mu-formly-ag-grid-cell',\n standalone: true,\n imports: [FormlyModule, TranslateModule],\n template: ` <formly-field [field]=\"getField()\"></formly-field> `,\n})\nexport class GridFormlyCellComponent implements ICellRendererAngularComp {\n private params: any;\n\n constructor(private translateService: TranslateService) {}\n\n agInit(params: any): void {\n this.params = params;\n }\n\n refresh(): boolean {\n return false;\n }\n\n getField(): FormlyFieldConfig {\n const rowIndex = this.params.node.rowIndex;\n const prop = this.params.colDef.field;\n const parentField = this.params.context.parentField;\n const field = parentField.get([rowIndex, prop]);\n \n if(field && field.props.label) {\n field.props.label = this.translateService.instant(field.props?.label);\n }\n if(field && field.props.placeholder) {\n field.props.placeholder = this.translateService.instant(field.props?.placeholder);\n }\n \n return field;\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\n@Component({\n selector: 'mu-delete-button-renderer',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatIconModule, MatTooltipModule, TranslateModule],\n template: `\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"onDelete()\"\n [disabled]=\"params.disableButton\"\n matTooltip=\"Delete Row\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n `\n})\nexport class ActionButtonRendererComponent implements ICellRendererAngularComp {\n params: any;\n\n agInit(params: any): void {\n this.params = params;\n }\n\n refresh(): boolean {\n return false;\n }\n\n onDelete() {\n if (this.params?.onDelete && typeof this.params.onDelete === 'function') {\n this.params.onDelete(this.params.node);\n } else {\n console.error('Delete function not found or incorrect params:', this.params);\n }\n }\n}\n\nexport default ActionButtonRendererComponent;\n\n","import { Component, OnInit } from '@angular/core';\nimport { FieldArrayType } from '@ngx-formly/core';\nimport { FirstDataRenderedEvent, GridOptions, ColDef, RowNode, GridApi } from 'ag-grid-community';\nimport { GridFormlyCellComponent } from './grid-formly-cell.component';\nimport { CommonModule } from '@angular/common';\nimport { AgGridModule } from 'ag-grid-angular';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';import { MatTooltipModule } from '@angular/material/tooltip';\nimport { ActionButtonRendererComponent } from './action-button-renderer.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\n` `\n\n@Component({\n selector: 'mu-editable-formly-field-grid',\n standalone: true,\n imports: [CommonModule, AgGridModule, TranslateModule, MatIconModule, MatTooltipModule, MatButtonModule, MatDialogModule],\n template: `\n <div [ngStyle]=\"style\" >\n @if (!hideButton) {\n <div class=\"mb-2 flex justify-start items-center\">\n <button\n type=\"button\"\n (click)=\"addRow()\"\n matTooltip=\"{{ (field['props']['addButtonTooltip'] || 'ADD_ROW') | translate}}\"\n mat-button\n >\n <mat-icon>add</mat-icon>\n <span>{{field.props['addBtnLabel'] | translate}}</span>\n </button>\n </div>\n }\n <ag-grid-angular\n style=\"width: 100%;\"\n class=\"className\"\n [gridOptions]=\"gridOptions\"\n [rowData]=\"model\"\n [style.height]=\"gridHeight\"\n domLayout=\"normal\"\n (firstDataRendered)=\"onFirstDataRendered($event)\"\n (gridReady)=\"onGridReady($event)\"\n (rowClicked)=\"onRowClicked($event)\"\n >\n </ag-grid-angular>\n </div>\n `,\n styles: ``\n})\nexport class ActionableFormlyFieldGridComponent extends FieldArrayType implements OnInit {\n gridOptions!: GridOptions;\n style: any = {};\n selectedRow: RowNode | null = null;\n gridApi!: GridApi;\n hideButton = false;\n gridHeight = 'auto';\n maxVisibleRows = 5;\n\n constructor(private translateService: TranslateService, private dialog: MatDialog) {\n super();\n }\n\n ngOnInit() {\n this.maxVisibleRows = this.field?.props?.['maxVisibleRows'] || 5;\n if(this.field?.props?.['enabledForRoles']) {\n this.hideButton = !this.options.formState?.userRoles?.some((role: any) => this.field?.props?.['enabledForRoles']?.includes(role));\n }\n this.style = {\n width: this.props?.['width'],\n height: this.props?.['height'],\n };\n this.props['gridOptions'].columnDefs.forEach((column: ColDef) => {\n column.minWidth = column.minWidth ?? 240;\n column.cellRenderer = GridFormlyCellComponent;\n column.headerName = this.translateService.instant(column.headerName || '')\n });\n\n let columnDefs: ColDef[] = this.props['gridOptions'].columnDefs;\n columnDefs = [\n {\n headerName: this.translateService.instant('Actions'),\n field: 'delete',\n minWidth: 100,\n maxWidth: 120,\n cellRenderer: ActionButtonRendererComponent,\n cellRendererParams: {\n onDelete: (rowNode: RowNode) => this.deleteRow(rowNode),\n disableButton: this.hideButton\n }\n },\n ...columnDefs\n ];\n this.gridOptions = {\n ...this.props['gridOptions'],\n domLayout: 'normal',\n columnDefs: columnDefs,\n onRowDataUpdated: this.onRowDataUpdated,\n context: {\n parentField: this.field,\n onDelete: this.deleteRow.bind(this)\n },\n suppressMovableColumns: true\n };\n }\n\n onRowDataUpdated = () => {\n if (this.gridApi) {\n this.adjustGridHeight();\n }\n };\n\n onGridReady(params: any) {\n this.gridApi = params.api;\n this.adjustGridHeight();\n }\n\n onFirstDataRendered(params: FirstDataRenderedEvent) {\n params.api.sizeColumnsToFit();\n this.options.formState.gridActionableData = this.model;\n }\n\n onRowClicked(event: any) {\n this.selectedRow = event.node;\n }\n\n addRow() {\n const newRow = {id: this.generateRandomNumber()};\n this.add();\n this.gridApi.applyTransaction({ add: [newRow] });\n this.adjustGridHeight();\n }\n\n adjustGridHeight() {\n const rowCount = this.gridApi.getDisplayedRowCount();\n const rowHeight = this.gridOptions?.rowHeight || 60;\n if (rowCount === 0) {\n this.gridHeight = '70px';\n } else if (rowCount <= this.maxVisibleRows) {\n this.gridHeight = `${rowCount * rowHeight + 40}px`;\n } else {\n this.gridHeight = `${this.maxVisibleRows * rowHeight + 40}px`;\n }\n }\n deleteRow(rowNode: RowNode) {\n const dialog = this.dialog.open(ConfirmationDialogComponent, {\n width: '50%',\n height: '28%',\n data: { title: 'Are you sure to delete?'}\n });\n dialog.afterClosed().subscribe((res) => {\n if(res) {\n if (rowNode && rowNode.id !== null) {\n const rowIndex = rowNode.rowIndex;\n if (rowIndex !== null && rowIndex >= 0) {\n this.remove(rowIndex);\n }\n this.gridApi.applyTransaction({ remove: [rowNode.data] });\n this.adjustGridHeight();\n } else {\n console.error('Row not found or invalid:', rowNode);\n }\n }\n })\n }\n\n generateRandomNumber(): number {\n return Math.floor(1000 + Math.random() * 9000);\n }\n}","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n OnInit,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport {\n CustomFormlyFieldConfig,\n FileAction,\n MaybeAsyncBool,\n} from '../models/custom-form-field.model';\nimport { Action } from 'rxjs/internal/scheduler/Action';\n\n@Component({\n selector: 'mu-formly-field-file',\n standalone: true,\n imports: [\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n FormlyModule,\n CommonModule,\n MatTableModule,\n MatIconModule,\n MatTooltipModule,\n TranslateModule,\n MatSnackBarModule,\n DatePipe,\n ],\n template: `\n @if(showUploadbtn) {\n <div\n class=\"input-btn\"\n [ngClass]=\"{ 'red-upload': !field.formControl?.valid }\"\n >\n <button\n type=\"button\"\n [disabled]=\"field.props?.['disabled']\"\n [ngClass]=\"[field.props?.['color']]\"\n (click)=\"fileInput.click()\"\n >\n <mat-icon\n *ngIf=\"field.props?.['icon']\"\n class=\"text-lg mb-1\"\n >{{ field.props?.['icon'] }}</mat-icon\n >\n {{ field.props?.label }}<span *ngIf=\"to.required\">*</span>\n </button>\n <input\n type=\"file\"\n #fileInput\n (change)=\"onFileSelect($event)\"\n [formlyAttributes]=\"field\"\n [multiple]=\"field.props?.['isMultiFileUpload']\"\n [accept]=\"field.props?.['acceptedFileTypes'] || '.pdf,.xlsx,.jpg,.jpeg,.docx'\"\n class=\"hidden\"\n />\n <div class=\"text-[0.83rem] text-gray-500 mt-1\">\n Allowed file types:\n {{ field.props?.['acceptedFileTypes'] || '.pdf, .xlsx, .jpg, jpeg, .docx' }}\n <br />\n Maximum file size: {{ field.props?.['maxFileSizeMB'] || 1 }}MB\n </div>\n </div>\n }\n <table\n mat-table\n *ngIf=\"this.props?.['isMultiFileUpload'] && uploadedFiles?.length\"\n [dataSource]=\"dataSource\"\n class=\"mat-elevation-z8\"\n >\n <ng-container matColumnDef=\"fileName\">\n <th mat-header-cell *matHeaderCellDef class=\"header-cell\">File Name</th>\n <td mat-cell *matCellDef=\"let element\">{{ element.fileName }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"convertedFileSize\">\n <th mat-header-cell *matHeaderCellDef class=\"header-cell\">Size</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element.convertedFileSize }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedBy\">\n <th mat-header-cell *matHeaderCellDef class=\"header-cell\">\n Uploaded By\n </th>\n <td mat-cell *matCellDef=\"let element\">{{ element.uploadedBy }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedAt\">\n <th mat-header-cell *matHeaderCellDef class=\"header-cell\">\n Uploaded Date\n </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element.uploadedAt | date : 'dd-MMM-yyyy, hh:mm:ss a' }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"header-cell\">Actions</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">\n <div class=\"action-buttons\">\n <div\n *ngFor=\"let action of field?.props?.['actions']\"\n class=\"actions-container\"\n >\n <mat-icon\n class=\"action-icons\"\n *ngIf=\"showUploadAction(action, element)\"\n matTooltip=\"{{ action.label | translate }}\"\n (click)=\"handleActionClick(action, i, element)\"\n >\n {{ action.icon }}\n </mat-icon>\n </div>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <div class=\"w-full\">\n <table\n *ngIf=\"!this.props?.['isMultiFileUpload'] && uploadedFiles?.length\"\n class=\"w-full flex flex-col md:flex-row items-start md:items-center gap-2 md:gap-4\"\n >\n <tr\n class=\"flex flex-col md:flex-row items-start md:items-center gap-2 md:gap-4 w-full\"\n >\n <td\n class=\"text-sm truncate overflow-hidden whitespace-nowrap max-w-full flex-1 md:border-none\"\n [matTooltip]=\"uploadedFiles[0].fileName\"\n >\n {{ uploadedFiles[0].fileName }}\n </td>\n <td class=\"flex items-center justify-end md:flex-shrink-0\">\n <div\n *ngFor=\"let action of field?.props?.['actions']\"\n class=\"flex items-center\"\n >\n <mat-icon\n matTooltip=\"{{ action.label | translate }}\"\n *ngIf=\"showUploadAction(action, uploadedFiles[0])\"\n (click)=\"handleActionClick(action, 0, uploadedFiles[0])\"\n class=\"action-icons\"\n >\n {{ action.icon }}\n </mat-icon>\n </div>\n </td>\n </tr>\n </table>\n </div>\n <div\n *ngIf=\"to['note']\"\n class=\"text-gray-500 mt-1 w-[900px]\"\n [innerHTML]=\"to['note']\"\n ></div>\n `,\n styles: [\n `\n .mat-mdc-table {\n margin-top: 5px;\n box-shadow: none;\n }\n .header-cell {\n background-color: rgb(120 118 118 / 12%) !important;\n }\n .action-buttons {\n display: flex;\n flex-direction: row;\n justify-content: start;\n align-items: center;\n }\n .action-icons {\n font-size: 20px;\n }\n .actions-container {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 43px;\n padding-top: 5px;\n }\n\n .input-btn button,\n .red-upload button {\n color: white;\n padding: 3px 10px;\n border: none;\n cursor: pointer;\n border-radius: 50px;\n font-family: Poppins, 'Helvetica Neue', sans-serif;\n font-weight: 500;\n font-size: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .input-btn button:disabled,\n .red-upload button:disabled {\n background-color: #d3d3d3;\n color: #b0b0b0;\n }\n th,\n td,\n .upload-btn {\n font-family: Poppins, 'Helvetica Neue', sans-serif;\n }\n .red-upload button {\n background-color: red;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyFileUploadComponent\n extends FieldType<CustomFormlyFieldConfig>\n implements OnInit\n{\n uploadedFiles: any[] = [];\n displayedColumns: string[] = [\n 'fileName',\n 'convertedFileSize',\n 'uploadedBy',\n 'uploadedAt',\n 'actions',\n ];\n dataSource = new MatTableDataSource();\n showUploadbtn = true;\n loggedInUserDetails!: any;\n destroyRef = inject(DestroyRef);\n isMobileDevice: boolean = false;\n\n constructor(\n private snackBar: MatSnackBar,\n private translateService: TranslateService,\n private breakpointObserver: BreakpointObserver,\n private cdr: ChangeDetectorRef\n ) {\n super();\n this.breakpointObserver\n ?.observe([Breakpoints.Handset])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result) => {\n this.isMobileDevice = result?.matches;\n });\n }\n\n ngOnInit(): void {\n const userDetails = localStorage.getItem('loggedInUserDetails');\n this.loggedInUserDetails = userDetails\n ? JSON.parse(userDetails)\n : { email: '' };\n\n if (this.field.props?.['isMultiFileUpload'] && this.formControl.value) {\n this.uploadedFiles = this.formControl.value ?? [];\n } else {\n if (\n this.formControl.value &&\n Object.keys(this.formControl.value || {}).length\n ) {\n this.uploadedFiles = [this.formControl.value];\n }\n }\n this.dataSource.data = [...this.uploadedFiles];\n this.showUploadbtn = this.props?.['isMultiFileUpload']\n ? true\n : !this.uploadedFiles.length;\n }\n\n onFileSelect(event: any): void {\n const selectedFile = event.target.files;\n if (!selectedFile || !selectedFile.length) return;\n\n const maxFileSizeMB = this.field.props?.['maxFileSizeMB'] || 1;\n const maxFileSize = maxFileSizeMB * 1024 * 1024;\n\n if (this.props?.['isMultiFileUpload']) {\n if (this.isFileAlreadyUploaded(event.target.files)) {\n this.snackBar.open(\n this.translateService.instant('MNL_UPLOAD_FILE.DUPLICATE_UPLOADED'),\n 'Ok',\n {\n duration: 3000,\n panelClass: ['warn-snackbar'],\n }\n );\n this.resetFileInput(event.target);\n return;\n }\n }\n\n const selectedFiles = Array.from(selectedFile);\n const invalidChars = /[&,\"]/;\n\n const filesToProcess = this.field.props?.['isMultiFileUpload']\n ? selectedFiles\n : [selectedFiles[0]];\n\n filesToProcess.forEach((file: any) => {\n if (file.size > maxFileSize) {\n this.snackBar.open(\n `The file \"${file.name}\" exceeds the ${maxFileSizeMB} MB size limit.`,\n 'OK',\n {\n duration: 3000,\n panelClass: ['warn-snackbar'],\n }\n );\n } else if (invalidChars.test(file.name)) {\n this.snackBar.open('MNL_UPLOAD_FILE.INVALID_CHARS_FILE_NAME', 'Ok', {\n duration: 7000,\n panelClass: ['error-snackbar'],\n });\n } else {\n const newFile = {\n fileName: file.name,\n fileSize: file.size,\n fileType: file.type,\n file: file,\n uploadedBy: this.loggedInUserDetails.email,\n uploadedAt: new Date(),\n nodeId: '',\n convertedFileSize: this.formatFileSize(file.size),\n };\n\n if (!this.props?.['isMultiFileUpload']) {\n this.uploadedFiles = [newFile];\n } else {\n this.uploadedFiles.push(newFile);\n }\n }\n });\n\n this.dataSource.data = [...this.uploadedFiles];\n\n this.resetFileInput(event.target);\n this.showUploadbtn = this.props?.['isMultiFileUpload']\n ? true\n : !this.uploadedFiles.length;\n\n if (this.field.props?.['onFilesAdded']) {\n this.field.props['onFilesAdded'](this.uploadedFiles);\n }\n }\n\n handleActionClick(action: FileAction, index: number, element: any) {\n const onUploadFileAction = this.field.props?.['onUploadFileAction'];\n if (typeof onUploadFileAction === 'function') {\n const result = onUploadFileAction(action.icon, element, index);\n this.invokeAction(\n () => result,\n element,\n index,\n () => {\n if (action.icon === 'delete') this.removeFile(index);\n if (action.icon === 'cloud_upload')\n this.refreshUploadedTable(element, index);\n if (action.icon === 'cloud_download' || action.icon === 'visibility')\n () => {};\n },\n action.icon\n );\n }\n }\n\n refreshUploadedTable(element: any, index: number) {\n this.uploadedFiles[index] = element;\n if (this.props?.['isMultiFileUpload']) {\n const uploaded = this.uploadedFiles.filter((f) => !!f.nodeId);\n this.formControl.setValue(uploaded);\n } else {\n this.formControl.setValue(this.uploadedFiles[0]);\n }\n\n this.formControl.markAsTouched();\n this.form.updateValueAndValidity();\n this.dataSource.data = [...this.uploadedFiles];\n this.cdr.detectChanges();\n }\n\n removeFile(index: number) {\n this.uploadedFiles.splice(index, 1);\n this.dataSource.data = [...this.uploadedFiles];\n\n if (!this.field.props?.['isMultiFileUpload']) {\n this.formControl.setValue(null);\n } else {\n this.formControl.setValue(this.uploadedFiles);\n const uploaded = this.uploadedFiles.filter((f) => !!f.nodeId);\n this.formControl.setValue(uploaded);\n }\n this.showUploadbtn = this.props?.['isMultiFileUpload']\n ? true\n : !this.uploadedFiles.length;\n }\n\n isFileAlreadyUploaded(selectedFile: any): boolean {\n return this.uploadedFiles.some(\n (file) => file.fileName === selectedFile[0].name\n );\n }\n\n resetFileInput(fileInput: any): void {\n fileInput.value = '';\n }\n\n showUploadAction(action: any, file: any): boolean {\n const hasNode = !!file.nodeId;\n const userRoles = this.options.formState?.userRoles ?? [];\n const enabledRoles = this.field?.enabledForRoles ?? [];\n\n switch (action.icon) {\n case 'cloud_upload':\n return !hasNode;\n\n case 'cloud_download':\n case 'visibility':\n return hasNode;\n\n case 'delete':\n return (\n hasNode && userRoles.some((role: any) => enabledRoles.includes(role))\n );\n\n default:\n return false;\n }\n }\n\n formatFileSize(bytes: number): string {\n if (bytes < 1024) return bytes + ' B';\n if (bytes < 1048576) return (bytes / 1024).toFixed(2) + ' KB';\n return (bytes / 1048576).toFixed(2) + ' MB';\n }\n\n private invokeAction(\n actionCallback:\n | undefined\n | ((element: any, index: number) => MaybeAsyncBool),\n element: any,\n index: number,\n defaultFn: () => void,\n icon?: string\n ): void {\n if (!actionCallback) {\n defaultFn();\n return;\n }\n\n const result = actionCallback(element, index);\n\n if (result instanceof Observable) {\n (result as Observable<boolean>).subscribe((shouldProceed) => {\n if (shouldProceed) {\n this.successMessage(icon);\n defaultFn();\n }\n });\n } else {\n Promise.resolve(result as boolean | Promise<boolean>).then(\n (shouldProceed) => {\n if (shouldProceed) {\n this.successMessage(icon);\n defaultFn();\n }\n }\n );\n }\n }\n\n successMessage(icon: string) {\n if (icon === 'cloud_upload') {\n this.snackBar.open(\n this.translateService.instant(\n 'MNL_UPLOAD_FILE.FILE_SUCCESSFUL_UPLOADED'\n ),\n 'Ok',\n {\n duration: 5000,\n panelClass: ['success-snackbar'],\n }\n );\n } else if (icon === 'delete') {\n this.snackBar.open(\n this.translateService.instant(\n 'MNL_UPLOAD_FILE.FILE_SUCCESSFUL_DELETED'\n ),\n 'Ok',\n {\n duration: 5000,\n panelClass: ['success-snackbar'],\n }\n );\n }\n }\n}\n","import { NativeDateAdapter } from '@angular/material/core';\n \nexport class CustomDate extends NativeDateAdapter {\n override parse(value: any): Date | null {\n if (typeof value === 'string' && value.trim()) {\n const [day, month, year] = value.split('-');\n const date = new Date(`${month} ${day}, ${year}`);\n return isNaN(date.getTime()) ? null : date;\n }\n return null;\n }\n override format(date: Date, displayFormat: string): string {\n if (!date) return '';\n const day = date.getDate().toString().padStart(2, '0');\n const month = date.toLocaleString('en-US', { month: 'short' });\n const year = date.getFullYear();\n return `${day}-${month}-${year}`;\n }\n}","import { AbstractControl } from '@angular/forms';\n\nexport function normalEmailValidator(control: AbstractControl) {\n const value = control.value || '';\n const allowedDomains = ['lupindiagnostics.com', 'lupin.com', 'atharvability.com', 'lupindigitalhealth.com'];\n\n if (!value) {\n return null;\n }\n const emailPattern = /^[^\\s@]+@([^\\s@]+\\.[^\\s@]+)$/;\n const match = value.match(emailPattern);\n\n if (match) {\n const domain = match[1];\n if (allowedDomains.includes(domain)) {\n return null;\n }\n }\n return { email: true };\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n inject,\n NgZone,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n MatTabChangeEvent,\n MatTabGroup,\n MatTabsModule,\n} from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Router } from '@angular/router';\nimport {\n FieldType,\n FieldTypeConfig,\n} from '@ngx-formly/core';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mu-formly-field-tabs1',\n standalone: true,\n imports: [\n MatTabsModule,\n ReactiveFormsModule,\n FormlyModule,\n MatButtonModule,\n CommonModule,\n TranslateModule,\n MatIconModule,\n MatTooltipModule,\n ],\n template: `\n <div class=\"tabs-container\">\n <mat-tab-group\n class=\"sticky-tabs\"\n [(selectedIndex)]=\"selectedIndex\"\n (selectedIndexChange)=\"onTabIndexChange($event)\"\n (selectedTabChange)=\"onTabChange($event)\"\n >\n @for(tab of field.fieldGroup; track tab; let i = $index; let last =\n $last){\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [ngStyle]=\"{\n color:\n !isValid(field.fieldGroup ? field.fieldGroup[i] : {}) &&\n options.formState?.showValidationError\n ? 'red'\n : 'black'\n }\"\n >\n {{ tab?.props?.label || '' }}\n </span>\n <mat-icon\n matTooltip=\"{{ 'MANDATORY_FIELDS_TOOLTIP' | translate }}\"\n *ngIf=\"\n !isValid(field.fieldGroup ? field.fieldGroup[i] : {}) &&\n options.formState?.showValidationError\n \"\n class=\"error-step\"\n >error</mat-icon\n >\n </ng-template>\n </mat-tab>\n }\n </mat-tab-group>\n\n <div class=\"tab-content\" (scroll)=\"onScroll($event)\">\n <div\n *ngFor=\"let tab of field.fieldGroup; let i = index\"\n [id]=\"'tab-' + i\"\n class=\"tab-section\"\n >\n <h2 class=\"tab-title\" *ngIf=\"tab?.props?.label\">\n {{ tab?.props?.label || '' }}\n </h2>\n <formly-field [field]=\"tab\"></formly-field>\n </div>\n </div>\n </div>\n `,\n styles: [\n `\n .tab-title {\n color: #00ae4d;\n }\n .error-step {\n color: #d32f2f !important;\n }\n .tabs-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n\n .sticky-tabs {\n position: sticky;\n z-index: 1;\n }\n\n .tab-content {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n\n .tab-section {\n margin-bottom: 45px;\n border-bottom: 2px solid #00ae4d;\n\n h2 {\n margin: 0 0 8px;\n }\n\n .spacer {\n height: 400px;\n }\n }\n }\n }\n `,\n ],\n})\nexport class FormlyFieldScrollableTabsComponent\n extends FieldType<FieldTypeConfig>\n implements OnInit\n{\n submittedData!: any[];\n\n router = inject(Router);\n user: any;\n @ViewChild('tabGroup') tabGroup!: MatTabGroup;\n\n selectedIndex = 0;\n @ViewChild('tabContent', { static: false }) tabContent!: ElementRef;\n\n private debounceTimeout: any;\n\n constructor(private ngZone: NgZone) {\n super();\n }\n\n nextTab(tabGroup: MatTabGroup) {\n if (tabGroup && tabGroup.selectedIndex != null) {\n const currentIndex = tabGroup.selectedIndex;\n if (currentIndex < (tabGroup._tabs?.length || 0) - 1) {\n tabGroup.selectedIndex = currentIndex + 1;\n }\n }\n }\n\n previousTab(tabGroup: MatTabGroup) {\n if (tabGroup && tabGroup.selectedIndex != null) {\n const currentIndex = tabGroup.selectedIndex;\n if (currentIndex > 0) {\n tabGroup.selectedIndex = currentIndex - 1;\n }\n }\n }\n\n isFirstTab(tabGroup: MatTabGroup): boolean {\n return tabGroup && tabGroup.selectedIndex === 0;\n }\n\n isLastTab(tabGroup: MatTabGroup): boolean {\n return (\n tabGroup && tabGroup.selectedIndex === (tabGroup._tabs?.length || 0) - 1\n );\n }\n\n ngOnInit(): void {\n this.user = JSON.parse(localStorage.getItem('loggedInUser') || '{}');\n }\n\n isValid(field: any): boolean {\n if (field.key) {\n if (field.props?.excludeValidation) return true;\n return field?.formControl?.valid || false;\n }\n\n return field.fieldGroup\n ? field.fieldGroup.every((f: any) => this.isValid(f))\n : true;\n }\n\n onTabChange(event: MatTabChangeEvent): void {\n this.selectedIndex = event.index;\n console.log('Selected tab index:', this.selectedIndex);\n if (this.field && this.field.props?.['tabChange']) {\n this.field.props?.['tabChange'](event, this.field);\n }\n }\n\n onTabIndexChange(index: number) {\n const targetElement = document.getElementById(`tab-${index}`);\n if (targetElement) {\n targetElement.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n }\n\n onScroll(event: Event): void {\n clearTimeout(this.debounceTimeout);\n\n this.debounceTimeout = setTimeout(() => {\n const scrollContainer = event.target as HTMLElement;\n const scrollTop = scrollContainer.scrollTop;\n\n this.ngZone.run(() => {\n if (this.field.fieldGroup) {\n for (let index = 0; index < this.field.fieldGroup?.length; index++) {\n const tabElement = document.getElementById(`tab-${index}`);\n if (tabElement) {\n const tabTop = tabElement.offsetTop - scrollContainer.offsetTop;\n\n const tabHeight = tabElement.offsetHeight;\n\n if (scrollTop >= tabTop && scrollTop < tabTop + tabHeight) {\n if (this.selectedIndex !== index) {\n this.selectedIndex = index;\n }\n break;\n }\n }\n }\n }\n });\n }, 100);\n }\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function npiValidator(control: AbstractControl) {\n const value = control.value || '';\n const npiPattern = /^[1-9][0-9]{9}$/;\n\n if (!value || npiPattern.test(value)) {\n return null; \n } else {\n return { npi: true };\n }\n}","import { AbstractControl } from '@angular/forms';\n\nexport function tinOrSsnValidator(control: AbstractControl) {\n const value = control.value || '';\n const ssnPattern = /^(?!000|666|9\\d{2})\\d{3}-(?!00)\\d{2}-(?!0000)\\d{4}$/;\n const tinPattern = /^[a-zA-Z0-9\\s-]{5,20}$/;\n\n if(!value) return null;\n if (!ssnPattern.test(value) && !tinPattern.test(value)) {\n return { tinOrSsn: true };\n }\n return null;\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function einValidator(control: AbstractControl) {\n const value = control.value || '';\n const einPattern = /^(?!00)\\d{2}-(?!0000000)\\d{7}$/;\n\n if (!value || einPattern.test(value)) {\n return null;\n } else {\n return { ein: true }; \n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FieldWrapper, FormlyModule } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n FormlyModule,\n ReactiveFormsModule,\n FormlyMaterialModule,\n ],\n selector: 'mu-formly-wrapper-description',\n template: `\n <div>\n <ng-container #fieldComponent></ng-container>\n <p class=\"text-gray-500 text-sm mt-1\" *ngIf=\"to.description\">\n {{ to.description }}\n </p>\n </div>\n `,\n})\nexport class FormlyDescriptionWrapperComponent extends FieldWrapper implements OnInit {\n ngOnInit(): void {\n console.log('===========to============', this.field)\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\nimport { map, Observable, startWith } from 'rxjs';\n\n@Component({\n selector: 'mu-formly-field-time',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n FormlyModule,\n CommonModule,\n MatAutocompleteModule,\n ],\n template: `\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-4\">\n <mat-form-field appearance=\"outline\" class=\"w-25\">\n <mat-label>Hour</mat-label>\n <input\n type=\"text\"\n matInput\n [readonly]=\"to.readonly || to.disabled\"\n [required]=\"to.required || false\"\n [disabled]=\"to.disabled || false\"\n [formControl]=\"hourCtrl\"\n [matAutocomplete]=\"autoHour\"\n />\n <mat-autocomplete #autoHour=\"matAutocomplete\">\n <mat-option\n *ngFor=\"let hour of filteredHours$ | async\"\n [value]=\"hour\"\n >\n {{ hour }}\n </mat-option>\n </mat-autocomplete>\n <mat-error class=\"text-[12px]\" *ngIf=\"formControl.invalid && formControl.touched\">\n {{ field.validation?.messages?.['required'] || 'This field is required' }}\n </mat-error>\n <mat-hint>{{to.description || 'Time in 24 hour format'}}</mat-hint>\n </mat-form-field>\n <span> : </span>\n <mat-form-field appearance=\"outline\" class=\"w-25\">\n <mat-label>Minute</mat-label>\n <input\n type=\"text\"\n matInput\n [readonly]=\"to.readonly || to.disabled\"\n [required]=\"to.required || false\"\n [disabled]=\"to.disabled || false\"\n [formControl]=\"minuteCtrl\"\n [matAutocomplete]=\"autoMinute\"\n />\n <mat-autocomplete #autoMinute=\"matAutocomplete\">\n <mat-option\n *ngFor=\"let minute of filteredMinutes$ | async\"\n [value]=\"minute\"\n >\n {{ minute }}\n </mat-option>\n </mat-autocomplete>\n <mat-error class=\"text-[12px]\" *ngIf=\"formControl.invalid && formControl.touched\">\n {{ field.validation?.messages?.['required'] || 'This field is required' }}\n </mat-error>\n </mat-form-field>\n </div>\n \n </div>\n `,\n})\nexport class FormlyFieldTimeComponent extends FieldType implements OnInit {\n get control(): FormControl {\n return this.formControl as FormControl;\n }\n\n hours: string[] = Array.from({ length: 24 }, (_, i) =>\n i.toString().padStart(2, '0')\n );\n minutes: string[] = Array.from({ length: 60 }, (_, i) =>\n i.toString().padStart(2, '0')\n );\n\n hourCtrl = new FormControl('');\n minuteCtrl = new FormControl('');\n\n filteredHours$!: Observable<string[]>;\n filteredMinutes$!: Observable<string[]>;\n\n ngOnInit() {\n const modelTime = this.formControl.value;\n if (modelTime && modelTime.includes(':')) {\n const [h, m] = modelTime.split(':');\n this.hourCtrl.setValue(h);\n this.minuteCtrl.setValue(m);\n }\n\n this.filteredHours$ = this.hourCtrl.valueChanges.pipe(\n startWith(this.hourCtrl.value || ''),\n map((value: any) => this._filter(this.hours, value))\n );\n\n this.filteredMinutes$ = this.minuteCtrl.valueChanges.pipe(\n startWith(this.minuteCtrl.value || ''),\n map((value: any) => this._filter(this.minutes, value))\n );\n\n this.hourCtrl.valueChanges.subscribe((value: any) => {\n if (!this.hours.includes(value)) {\n this.hourCtrl.setErrors({ invalidHour: true });\n } else {\n this.hourCtrl.setErrors(null);\n }\n this.updateModel();\n });\n\n this.minuteCtrl.valueChanges.subscribe((value: any) => {\n if (!this.minutes.includes(value)) {\n this.minuteCtrl.setErrors({ invalidMinute: true });\n } else {\n this.minuteCtrl.setErrors(null);\n }\n this.updateModel();\n });\n }\n\n private updateModel() {\n const h = this.hourCtrl.value as string;\n const m = this.minuteCtrl.value as string;\n\n if (this.hours.includes(h) && this.minutes.includes(m)) {\n this.formControl.setValue(`${h}:${m}`);\n } else {\n this.formControl.setValue(null); // Prevent saving invalid input\n }\n }\n\n private _filter(options: string[], value: string): string[] {\n const filterValue = (value || '').toLowerCase();\n return options.filter((option) =>\n option.toLowerCase().includes(filterValue)\n );\n }\n}\n","import { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { CommonModule } from '@angular/common';\nimport { AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport {\n FieldTypeConfig,\n FormlyFieldConfig,\n FormlyModule,\n} from '@ngx-formly/core';\nimport { FieldType } from '@ngx-formly/material';\n\n@Component({\n selector: 'mu-helper-text',\n standalone: true,\n imports: [\n CommonModule,\n MatInputModule,\n FormlyModule,\n ReactiveFormsModule,\n FormsModule,\n MatFormFieldModule,\n MatSlideToggleModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n ],\n template: `\n <div class=\"helper-text-container\">\n <!-- Helper Mode - Show toggle and conditional content -->\n <div *ngIf=\"to['enableHelper']\">\n <mat-label>{{ to.label }}</mat-label>\n <div *ngIf=\"originalValue\" class=\"flex-row\">\n <span class=\"answer\">{{ originalValue }}</span>\n <mat-slide-toggle\n [(ngModel)]=\"checked\"\n (toggleChange)=\"toggleSlide()\"\n [disabled]=\"field.form?.disabled\"\n >{{ helperLabel }}</mat-slide-toggle\n >\n </div>\n\n <mat-form-field class=\"textarea\" appearance=\"outline\" *ngIf=\"checked\">\n <textarea\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"2\"\n matInput\n [formControl]=\"helperFormControl\"\n [readonly]=\"readonly || field.form?.disabled\"\n [disabled]=\"field.form?.disabled\"\n ></textarea>\n </mat-form-field>\n </div>\n\n <!-- Default Mode - Show field directly -->\n <div *ngIf=\"!to['enableHelper']\">\n <formly-field *ngIf=\"defaultFieldConfig\" [field]=\"defaultFieldConfig\">\n </formly-field>\n </div>\n </div>\n `,\n styles: `\n .helper-text-container{\n display: flex;\n flex-direction: column;\n }\n .answer{\n font-size: 12px;\n }\n .textarea{\n margin: 0px !important;\n width: 100%;\n }\n .flex-row{\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n }\n .w-full{\n width: 100%;\n }\n `,\n})\nexport class MnlFormHelperTextInputComponent\n extends FieldType<FieldTypeConfig>\n implements OnInit, AfterViewInit\n{\n @ViewChild('autosize') autosize!: CdkTextareaAutosize;\n checked = false;\n helperFormControl!: FormControl; // Separate form control for helper model\n\n get helperLabel() {\n return this.to['helperProps']?.['helperLabel'] || 'Need help?';\n }\n get defaultHelperText() {\n return this.to['helperProps']?.['defaultHelperText'] || '';\n }\n\n // Get value from primary model (answers)\n get originalValue() {\n const fieldKey = this.field.key as string;\n return this.field.model?.[fieldKey];\n }\n\n // Get/Set value from secondary model (helper)\n get helperModel() {\n return (\n this.to['helperModel'] ||\n this.props['helperModel'] ||\n this.options?.formState?.['helperModel']\n );\n }\n\n get helperKey() {\n return this.to['helperKey'] || this.field.key;\n }\n\n get currentHelperValue() {\n if (this.helperModel && this.helperKey) {\n return this.helperModel[this.helperKey as string];\n }\n return '';\n }\n\n set currentHelperValue(value: any) {\n if (this.helperModel && this.helperKey) {\n this.helperModel[this.helperKey as string] = value;\n }\n }\n\n get readonly() {\n return this.to['readonly'] || this.props['readonly'] || false;\n }\n\n defaultFieldConfig?: FormlyFieldConfig;\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit() {\n // Initialize helper form control with value from helper model\n this.helperFormControl = new FormControl(this.currentHelperValue || '');\n\n // Subscribe to changes in helper form control and update helper model\n this.helperFormControl.valueChanges.subscribe((value) => {\n this.currentHelperValue = value;\n // Emit helper model change to parent component\n this.options?.formState?.['onHelperModelChange']?.(this.helperModel);\n });\n\n this.setupDefaultField();\n\n if (this.to['enableHelper']) {\n this.setCorrectValue();\n this.determineInitialState();\n }\n if (this.currentHelperValue && this.currentHelperValue.trim() !== '') {\n this.checked = true;\n }\n }\n\n ngAfterViewInit() {\n setTimeout(() => this.autosize?.resizeToFitContent(true));\n }\n\n toggleSlide() {\n this.checked = !this.checked;\n if (this.checked) {\n // When toggle is opened, check if helper field is empty\n const currenthelper = this.helperFormControl.value;\n if (!currenthelper || currenthelper.trim() === '') {\n this.helperFormControl.setValue(this.defaultHelperText);\n }\n } else {\n this.helperFormControl.setValue('');\n }\n this.cdr.detectChanges();\n }\n\n setupDefaultField() {\n const fieldConfig = this.to['defaultFieldConfig'];\n if (fieldConfig) {\n // Get current value from model and sync with formControl\n const fieldKey = this.field.key as string;\n const modelValue = this.field.model?.[fieldKey];\n \n // Sync formControl value with model value if it exists\n if (modelValue !== undefined && modelValue !== null) {\n this.formControl.setValue(modelValue, { emitEvent: false });\n }\n \n // Create enhanced props with necessary fixes for production\n const enhancedProps = {\n ...fieldConfig.props,\n };\n \n // For select fields, add compareWith function to ensure proper value matching in production builds\n if (fieldConfig.type === 'select' && !enhancedProps['compareWith']) {\n enhancedProps['compareWith'] = (o1: any, o2: any) => o1 === o2;\n }\n \n this.defaultFieldConfig = {\n type: fieldConfig.type,\n key: this.field.key || fieldConfig.key || 'defaultKey',\n formControl: this.formControl,\n props: enhancedProps,\n wrappers: fieldConfig.wrappers || [],\n modelOptions: fieldConfig.modelOptions || this.field.modelOptions || {},\n validators: fieldConfig.validators || this.field.validators || {},\n asyncValidators:\n fieldConfig.asyncValidators || this.field.asyncValidators || {},\n hooks: fieldConfig.hooks || this.field.hooks || {},\n expressions: fieldConfig.expressions || this.field.expressions || {},\n hide: fieldConfig.hide !== undefined ? fieldConfig.hide : false,\n className: fieldConfig.className || this.field.className || '',\n fieldGroupClassName:\n fieldConfig.fieldGroupClassName ||\n this.field.fieldGroupClassName ||\n '',\n parent: this.field.parent,\n options: this.field.options,\n model: this.field.model,\n form: this.field.form,\n };\n }\n }\n\n determineInitialState() {\n // Auto-open helper based on scoring criteria\n switch (this.to['scoring']?.['criteria']) {\n case 'exactMatch':\n if (Array.isArray(this.to['scoring']?.['answer'])) {\n // Handle multiselect case where answer is also an array\n if (Array.isArray(this.originalValue)) {\n // Check if not empty AND all selected answers are in expected answers\n const isCorrect = this.originalValue.length > 0 && \n this.originalValue.every(a => this.to['scoring']?.['answer'].includes(a));\n if (!isCorrect) {\n this.checked = true;\n }\n } else {\n // Single value case\n if (!this.to['scoring']?.['answer'].includes(this.originalValue)) {\n this.checked = true;\n }\n }\n }\n break;\n\n case 'range':\n const answer = this.originalValue;\n const num = typeof answer === 'number' ? answer : Number(answer);\n\n const correct =\n Number.isFinite(num) &&\n num >= this.to['scoring']?.['answer'].min &&\n num <= this.to['scoring']?.['answer'].max;\n\n if (!correct) {\n this.checked = true;\n }\n break;\n }\n }\n\n setCorrectValue() {\n const currentHelperValue = this.currentHelperValue;\n\n // If helper already has a value (user edited), don't override\n if (currentHelperValue && currentHelperValue.trim() !== '') {\n return;\n }\n\n switch (this.to['scoring']?.['criteria']) {\n case 'attempted':\n // For attempted, set defaultHelperText\n this.helperFormControl.setValue('');\n break;\n\n case 'exactMatch':\n if (Array.isArray(this.to['scoring']?.['answer'])) {\n // Handle multiselect case where answer is also an array\n if (Array.isArray(this.originalValue)) {\n // Check if not empty AND all selected answers are in expected answers\n const isCorrect = this.originalValue.length > 0 && \n this.originalValue.every(a => this.to['scoring']?.['answer'].includes(a));\n if (isCorrect) {\n // Answer is correct - set empty value in helper\n this.helperFormControl.setValue('');\n } else {\n // Answer is incorrect - set defaultHelperText in helper\n this.helperFormControl.setValue(this.defaultHelperText);\n }\n } else {\n // Single value case\n if (this.to['scoring']?.['answer'].includes(this.originalValue)) {\n // Answer is correct - set empty value in helper\n this.helperFormControl.setValue('');\n } else {\n // Answer is incorrect - set defaultHelperText in helper\n this.helperFormControl.setValue(this.defaultHelperText);\n }\n }\n }\n break;\n\n case 'range':\n const answer = this.originalValue;\n const num = typeof answer === 'number' ? answer : Number(answer);\n\n const correct =\n Number.isFinite(num) &&\n num >= this.to['scoring']?.['answer'].min &&\n num <= this.to['scoring']?.['answer'].max;\n\n if (correct) {\n // Answer is correct - set empty value in helper\n this.helperFormControl.setValue('');\n } else {\n // Answer is incorrect - set defaultHelperText in helper\n this.helperFormControl.setValue(this.defaultHelperText);\n }\n break;\n\n default:\n break;\n }\n }\n}\n","import { importProvidersFrom } from '@angular/core';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule, Validators } from '@angular/forms';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { CustomInputComponent } from '../types/custom-input.component';\nimport { FormFieldWrapperComponent } from '../wrappers/form-field-wrapper.component';\nimport { emailValidator } from '../validators/custom-email-validator';\nimport { FormlyFieldTabsComponent } from '../types/tabs.types';\nimport { FormlyFieldExpansionPanelComponent } from '../types/expansion-panel.types';\nimport { FormlyFieldGridComponent } from '../types/grid.type';\nimport { MultiSelectAutocompleteComponent } from '../types/multi-select-autocomplete';\nimport { FormlyFieldStepperComponent } from '../types/stepper.type';\nimport { FormlyFieldTableComponent } from '../types/table.types';\nimport { AutocompleteTypeComponent } from '../types/autocomplete-type.component';\nimport { FormlyButtonComponent } from '../types/button.type';\nimport { FormlyFieldCountryCodeComponent } from '../types/country-code-input.type';\nimport { FormlySelectAutocompleteComponent } from '../types/select-autocomplete.type';\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { CommonsModule, httpLoaderFactory, MNL_TRANSLATION_RESOURCE } from '@muraai/mnl-commons';\nimport { phoneValidation } from '../validators/phone-number-validator';\nimport { TabularFormComponent } from '../types/tabular-form.type';\nimport { HttpBackend, provideHttpClient } from '@angular/common/http';\nimport { FormlyMultiSelectCheckboxAutocompleteComponent } from '../types/multi-select-checkbox.component';\nimport {FormlyMatDatepickerModule} from '@ngx-formly/material/datepicker';\nimport { DateAdapter, MatNativeDateModule } from '@angular/material/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { selectValidator } from '../validators/select-validator';\nimport { SelectApiAutoCompleteComponent } from '../types/select-api-auto-complete.component';\nimport { gstValidator } from '../validators/gst-validator';\nimport { panValidator } from '../validators/pan-validator';\nimport { FormlyFieldPanelComponent } from '../types/formly-field-panel.type';\nimport { SelectAutocompleteComponent } from '../types/select-autocomplete-redefined.component';\nimport { FormlyWrapperAddonsComponent } from '../wrappers/prefix-suffix-wrapper.component';\nimport { addonsExtension } from '../wrappers/prefix-sufix-extension.component';\nimport { WithOldValueWrapperComponent } from '../wrappers/formly-wrapper-with-old-value.component';\nimport { CommonModule } from '@angular/common';\nimport { FormlyCommentInputComponent } from '../types/comments.type';\nimport { CustomFormlyRadioComponent } from '../types/radio.type';\nimport { CustomFormlyMatInputComponent } from '../types/input.type';\nimport { ActionableFormlyFieldGridComponent } from '../types/grid-actionable.type';\nimport { FormlyFileUploadComponent } from '../types/upload-file';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { CustomDate } from '../types/custom-date.type';\nimport { normalEmailValidator } from '../validators/normal-email-validator';\nimport { FormlyFieldScrollableTabsComponent } from '../types/scrollable-tabs.types';\nimport { npiValidator } from '../validators/npi-validator';\nimport { tinOrSsnValidator } from '../validators/tinSsn-validator';\nimport { einValidator } from '../validators/ein-validators';\nimport { FormlyDescriptionWrapperComponent } from '../wrappers/form-field-description-wrapper.component';\nimport { FormlyFieldTimeComponent } from '../types/date-format.type';\nimport { MnlFormHelperTextInputComponent } from '../types/mu-helper-text.type';\n\nexport const mnlFormProviders = [\n importProvidersFrom(\n CommonsModule.forRoot(),\n CommonModule,\n ReactiveFormsModule,\n FormlyModule.forRoot({\n types: [\n { name: 'custom-input', component: CustomInputComponent },\n {name: 'mu-panel', component: FormlyFieldPanelComponent},\n { name: 'mu-tabs', component: FormlyFieldTabsComponent },\n { name: 'mu-exp-panel', component: FormlyFieldExpansionPanelComponent },\n { name: 'mu-table', component: FormlyFieldTableComponent },\n // { name: 'mu-autocomplete', component: AutocompleteTypeComponent, wrappers: ['form-field'] },\n // { name: 'mu-multi-select-autocomplete', component: MultiSelectAutocompleteComponent, wrappers: ['form-field'] },\n { name: 'mu-stepper', component: FormlyFieldStepperComponent, wrappers: [] },\n { name: 'mu-grid', component: FormlyFieldGridComponent,\n defaultOptions: {\n props: {\n width: '100%',\n height: '100%',\n },\n },\n },\n { name: 'mu-button', component: FormlyButtonComponent },\n { name: 'mu-country-code-phone', component: FormlyFieldCountryCodeComponent },\n { name: 'mu-select-autocomplete', component: FormlySelectAutocompleteComponent},\n { name: 'mu-tabular-form', component: TabularFormComponent },\n {\n name: 'mu-multi-checkbox-autocomplete',\n component: FormlyMultiSelectCheckboxAutocompleteComponent,\n },\n // { name: 'mu-select-api-autocomplete', component: SelectApiAutoCompleteComponent },\n // { name: 'mu-select-auto-complete', component: SelectAutocompleteComponent},\n { name: 'mu-comments', component: FormlyCommentInputComponent },\n { name: 'mu-radio', component: CustomFormlyRadioComponent},\n { name: 'mu-input', component: CustomFormlyMatInputComponent},\n { name: 'mu-actionable-grid', component: ActionableFormlyFieldGridComponent,\n defaultOptions: {\n props: {\n width: '100%'\n },\n },\n },\n { name: 'mu-upload-file', component: FormlyFileUploadComponent },\n { name: 'mu-scroll-tabs', component: FormlyFieldScrollableTabsComponent },\n { name: 'mu-custom-time', component: FormlyFieldTimeComponent },\n { name: 'mu-helper-text', component: MnlFormHelperTextInputComponent },\n ],\n wrappers: [\n { name: 'mu-form-field', component: FormFieldWrapperComponent },\n { name: 'mu-with-old-value', component: WithOldValueWrapperComponent },\n { name: 'addons', component: FormlyWrapperAddonsComponent },\n { name: 'description', component: FormlyDescriptionWrapperComponent }\n ],\n extensions: [{ name: 'addons', extension: { onPopulate: addonsExtension } }],\n validators: [\n { name: 'email', validation: emailValidator },\n {\n name: 'maxlength',\n validation: Validators.maxLength(30),\n },\n {name: 'gst', validation: gstValidator},\n {name: 'pan', validation: panValidator},\n { name: 'dunsNumber', validation: Validators.pattern(/^\\d{9}$/) },\n { name: 'aadharNumber', validation: Validators.pattern(/^\\d{12}$/) },\n { name: 'telexNum', validation: Validators.pattern(/^[0-9]{1,30}$/) },\n {name: 'accountNum', validation: Validators.pattern(/^[a-zA-Z0-9]{1,19}$/)},\n {name: 'postalCodePattern', validation: Validators.pattern(/^\\d{1,10}$/)},\n {name: 'faxPattern', validation: Validators.pattern(/^\\d{1,30}$/)},\n {name: 'ifscCode', validation: Validators.pattern(/^[a-zA-Z0-9]{1,11}$/)},\n {name: 'pattern', validation: Validators.pattern(/^[a-zA-Z0-9\\s\\-:\\/&.,()]*$/)},\n {name: 'phoneValidation', validation: phoneValidation },\n {name: 'selectNotAvailTinNoPe', validation: selectValidator },\n {name: 'onlyTenDigits', validation: Validators.pattern(/^\\d{10}$/)},\n {name: 'udyamPattern', validation: Validators.pattern(/^UDYAM-[A-Z]{2}-\\d{2}-\\d{7}$/)},\n {name: 'unitsPattern', validation: Validators.pattern(/^[A-Za-z\\s]{1,20}$/)},\n {name: 'normalEmail', validation: normalEmailValidator},\n {name: 'validateTwoDecimals', validation: Validators.pattern(/^\\d*(\\.\\d{1,2})?$/)},\n {\n name: 'percentageValidation',\n validation: Validators.pattern(/^(100(\\.0{1,2})?|(\\d{1,2}(\\.\\d{1,2})?))$/),\n },\n {\n name: 'urlValidity',\n validation: Validators.pattern(/^(https?:\\/\\/)?([a-zA-Z0-9-]+\\.)+(com|org|net|gov|edu|io|co|uk|in|au|de|fr|ca|jp|cn|ru|br|us|info|biz|me|tech|xyz|online|store|blog)(:\\d+)?(\\/[^\\s]*)?$/)\n },\n {name: 'npi', validation: npiValidator},\n {name: 'tinOrSsn', validation: tinOrSsnValidator},\n {name: 'ein', validation: einValidator},\n {name: 'sicValidator', validation: Validators.pattern(/^(?!0000)\\d{4}$/)},\n {name: 'tinNumber', validation: Validators.pattern(/^[a-zA-Z0-9\\s-]{5,20}$/)},\n {name: 'gstHstNumber', validation: Validators.pattern(/^[a-zA-Z0-9]{15}$/)},\n {name: 'qstNumber', validation: Validators.pattern(/^[a-zA-Z0-9]{9}$/)}\n ],\n validationMessages: [\n {name: 'phoneValidation', message: 'Invalid mobile number for the selected country.' },\n {name: 'selectNotAvailTinNoPe', message: 'Select the fields not available in TIN / No PE certificate is required' },\n ]\n }),\n FormlyMaterialModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: httpLoaderFactory,\n deps: [HttpBackend, MNL_TRANSLATION_RESOURCE],\n },\n }),\n FormlyMatDatepickerModule,\n MatNativeDateModule,\n MatInputModule,\n MatDatepickerModule\n ),\n {\n provide: DateAdapter,\n useClass: CustomDate,\n },\n provideHttpClient()\n];","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { CustomFormlyFieldConfig } from '../../public-api';\n\n@Injectable({ providedIn: 'root' })\nexport class ScoringService {\n\n updateScore(model: any, fields: FormlyFieldConfig[]) {\n const result = this.calculateScore(model, fields);\n return result;\n }\n\n private calculateScore(model: any, fields: FormlyFieldConfig[] | CustomFormlyFieldConfig[]) {\n let totalScore = 0;\n let categoryResults: Record<string, { score: number; weight: number }> = {};\n\n const processCategory = (category: FormlyFieldConfig | CustomFormlyFieldConfig) => {\n const categoryLabel = category.props?.label;\n const categoryWeight = category.props?.weight ?? 0;\n\n // Only treat as scoring category if it has a label + weight\n if (!categoryLabel || !categoryWeight) {\n // Still need to go deeper in case children have categories\n if (category.fieldGroup?.length) {\n category.fieldGroup.forEach(processCategory);\n }\n return;\n }\n\n const questions = (category.fieldGroup || []).filter(q => q.props?.scoring);\n if (questions.length === 0) return;\n\n const scoredQuestions = questions.filter(q => q.props?.hasScoreImpact !== false);\n if (scoredQuestions.length === 0) {\n categoryResults[categoryLabel] = {\n score: 0,\n weight: categoryWeight,\n };\n return;\n }\n\n const perQuestionWeight = categoryWeight / scoredQuestions.length;\n let categoryScore = 0;\n\n for (const q of scoredQuestions) {\n const parentKey = category.key as any;\n const nestedPath = Array.isArray(parentKey)\n ? [...(parentKey as any[]), q.key as any]\n : [parentKey as any, q.key as any];\n const answer = this.getNestedValue(model, nestedPath as any);\n\n const scoring = q.props?.scoring;\n if (!scoring) continue;\n\n let correct = false;\n \n switch (scoring.criteria) {\n case 'attempted':\n correct =\n answer !== null &&\n answer !== undefined &&\n (typeof answer === 'string' ? answer.trim() !== '' : true);\n break;\n\n case 'exactMatch':\n if (Array.isArray(scoring.answer)) {\n // Handle case where answer is also an array (multiselect)\n if (Array.isArray(answer)) {\n // Check if answer is not empty AND all selected answers are in the expected answers\n correct = answer.length > 0 && answer.every(a => scoring.answer.includes(a));\n } else {\n // Single value case\n correct = scoring.answer.includes(answer);\n }\n }\n break;\n\n case 'range':\n const num = typeof answer === 'number' ? answer : Number(answer);\n correct =\n Number.isFinite(num) &&\n num >= scoring.answer.min &&\n num <= scoring.answer.max;\n break;\n }\n\n if (correct) {\n categoryScore += perQuestionWeight;\n }\n }\n\n totalScore += categoryScore;\n categoryResults[categoryLabel] = {\n score: categoryScore,\n weight: categoryWeight,\n };\n };\n\n // start recursive walk\n fields.forEach(processCategory);\n\n return {\n totalScore,\n categoryResults,\n };\n}\n\n\n private getNestedValue(obj: any, key: string | number | (string | number)[]): any {\n if (Array.isArray(key)) {\n return key.reduce((current, k) => current?.[k], obj);\n }\n return obj?.[key];\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonsModule } from '@muraai/mnl-commons';\nimport { FormlyFormOptions, FormlyModule } from '@ngx-formly/core';\nimport { FormlyMatCheckboxModule } from '@ngx-formly/material/checkbox';\nimport { FormlyMatInputModule } from '@ngx-formly/material/input';\nimport { FormlyMatRadioModule } from '@ngx-formly/material/radio';\nimport { FormlyMatTextAreaModule } from '@ngx-formly/material/textarea';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { of } from 'rxjs';\nimport { CustomFormlyFieldConfig } from '../models/custom-form-field.model';\nimport { ScoringService } from '../services/scoring.service';\n\n@Component({\n selector: 'mnl-form',\n standalone: true,\n imports: [\n CommonModule,\n CommonsModule,\n FormlyModule,\n ReactiveFormsModule,\n FormsModule,\n TranslateModule,\n FormlyMatTextAreaModule,\n FormlyMatInputModule,\n FormlyMatCheckboxModule,\n FormlyMatRadioModule,\n ],\n templateUrl: './formly-lib.component.html',\n styleUrl: './formly-lib.component.scss',\n})\nexport class MnlFormLibComponent implements OnInit {\n @Input()\n readonly = false;\n\n @Input()\n form!: FormGroup;\n\n @Input()\n fields!: CustomFormlyFieldConfig[];\n\n @Input()\n model: any;\n\n @Input()\n helperModel: any;\n\n @Input()\n options!: FormlyFormOptions;\n\n @Input()\n userRoles!: string[];\n\n @Input()\n userCountries!: string[];\n\n @Output()\n noOfTabs = new EventEmitter();\n\n @Input()\n oldValues: any;\n\n @Input()\n showOldValues!: boolean;\n\n @Output()\n scoreChange = new EventEmitter<any>();\n\n @Output()\n helperModelChange = new EventEmitter<any>();\n\n formPrepared = false;\n totalTabs = 0;\n constructor(\n private translateService: TranslateService,\n private scoring: ScoringService\n ) {\n this.translateService.setDefaultLang('en');\n }\n ngOnInit(): void {\n if (this.fields) {\n this.applyReadonlyToFields(this.fields);\n this.filterFieldGroupsByRolesAndCountries(this.fields);\n this.form.updateValueAndValidity();\n this.formPrepared = true;\n this.getNumberOfActiveTabs(this.fields);\n this.setAutocompleteSingleOptionByDefault(this.fields);\n this.options = {\n formState: {\n ...this.options.formState,\n showOldValues: this.showOldValues,\n oldValues: this.oldValues,\n helperModel: this.helperModel,\n onHelperModelChange: this.onHelperModelChange.bind(this),\n },\n };\n\n if (this.form.disabled) {\n this.form.disable({ emitEvent: false });\n }\n }\n }\n\n onModelChange(model: any) {\n const result = this.scoring.updateScore(model, this.fields);\n this.scoreChange.emit(result);\n }\n\n onHelperModelChange(helperModel: any) {\n this.helperModelChange.emit(helperModel);\n }\n\n setAutocompleteSingleOptionByDefault(fields: any) {\n fields.forEach((field: any) => {\n if (field.type === 'mu-select-autocomplete') {\n field.hooks = {\n onInit: (field: any) => {\n const formControl = field.formControl;\n const options = field.props?.options || [];\n\n if (Array.isArray(options)) {\n this.setOptionByDefault(formControl, field, options);\n } else {\n (options || of([])).subscribe((options: any) => {\n this.setOptionByDefault(formControl, field, options);\n });\n }\n },\n };\n }\n if (field.fieldGroup) {\n this.setAutocompleteSingleOptionByDefault(field.fieldGroup);\n }\n });\n }\n\n setOptionByDefault(formControl: any, field: any, options: any) {\n if (formControl && field.props && field.props.options) {\n if (options.length === 1) {\n formControl.setValue(options[0].value);\n }\n\n field.props.optionsChange?.subscribe((updatedOptions: any[]) => {\n if (updatedOptions.length === 1 && formControl) {\n formControl.setValue(updatedOptions[0].value);\n }\n });\n }\n }\n getNumberOfActiveTabs(fields: any) {\n fields.forEach((field: any) => {\n if (field.type === 'mu-tabs') {\n this.totalTabs = field.fieldGroup?.length || 0;\n this.noOfTabs.emit(this.totalTabs);\n }\n if (field.fieldGroup) {\n this.getNumberOfActiveTabs(field.fieldGroup);\n }\n });\n }\n\n applyReadonlyToFields(\n fields: CustomFormlyFieldConfig[]\n ): CustomFormlyFieldConfig[] {\n return fields.map((field) => {\n if (field.fieldGroup) {\n this.applyReadonlyToFields(field.fieldGroup);\n } else {\n field.props = {\n ...(field.props || {}),\n readonly:\n field.props?.readonly !== undefined\n ? field.props.readonly\n : this.readonly,\n };\n }\n return field;\n });\n }\n\n filterFieldGroupsByRolesAndCountries(fields: CustomFormlyFieldConfig[]) {\n return fields\n .map((field: any) => {\n if (field.fieldGroup && !field.vissibleCountries) {\n field.fieldGroup = this.filterFieldGroupsByRolesAndCountries(\n field.fieldGroup\n );\n }\n // const hasValidRole = field.vissibleRoles\n // ? field.vissibleRoles.some((role: any) => this.userRoles?.includes(role))\n // : true;\n // const hasValidCountry = field.vissibleCountries\n // ? field.vissibleCountries.some((country: any) => this.userCountries?.includes(country))\n // : true;\n\n const validGroup = field;\n if (validGroup && field.fieldGroup) {\n field.fieldGroup = this.filterFieldGroupsByRolesAndCountries(\n field.fieldGroup\n );\n }\n if (validGroup == null) {\n this.removeValidationsForFilteredFields(field);\n }\n if (!validGroup && field.props?.required) {\n field.props.required = false;\n }\n return validGroup;\n })\n .filter((field: any) => field !== null);\n }\n\n removeValidationsForFilteredFields(fields: any) {\n fields?.fieldGroup?.forEach((field: any) => {\n if (field.fieldGroup) {\n this.removeValidationsForFilteredFields(field);\n }\n if (this.form.get(field.key)) {\n this.form.removeControl(field.key);\n }\n });\n }\n}\n","@if(formPrepared) {\n<formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n (modelChange)=\"onModelChange($event)\"\n class=\"mnl-formly-form\"\n></formly-form>\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { MatStepper } from '@angular/material/stepper';\nimport {\n SubWorkflowStatusSteps,\n WorkflowStatusSteps,\n} from '../models/workflow-status.model';\n\n@Component({\n selector: 'lib-workflow-status',\n templateUrl: './workflow-status.component.html',\n styleUrl: './workflow-status.component.scss',\n})\nexport class WorkflowStatusComponent implements OnChanges, AfterViewInit {\n @ViewChild('stepper')\n stepper!: MatStepper;\n @ViewChild('subStepper')\n subStepper!: MatStepper;\n @Input() workflowSteps!: WorkflowStatusSteps[];\n\n @Input() completedBackgroundColor: string = 'bg-[#008000]';\n @Input() completedTextColor: string = 'text-[#ffffff]';\n @Input() inProgressTextColor: string = 'text-[#c1c14e]';\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.setStepperStates();\n }\n\n ngAfterViewInit(): void {\n this.setStepperStates();\n }\n\n setStepperStates() {\n if (this.stepper && this.workflowSteps) {\n this.workflowSteps.forEach((item: WorkflowStatusSteps, index: number) => {\n this.setActive(item.state, index);\n if (this.subStepper && item.children) {\n item.children.forEach(\n (item: SubWorkflowStatusSteps, index: number) => {\n this.setActiveSubStepper(item.state, index);\n }\n );\n }\n });\n }\n this.cdr.detectChanges();\n }\n\n setActive(status: string, index: number) {\n if (this.stepper && status === 'in-progress') {\n this.stepper.selectedIndex = index;\n this.cdr.detectChanges();\n }\n }\n setActiveSubStepper(status: string, index: number) {\n if (this.subStepper && status === 'in-progress') {\n this.subStepper.selectedIndex = index;\n this.cdr.detectChanges();\n }\n }\n\n isCompleted(data: any): boolean {\n if (data.state === 'completed') {\n return true;\n }\n return false;\n }\n}\n","<div class=\"max-h-[300px] overflow-y-auto overflow-x-auto sm:overflow-visible\">\n\t<div class=\"w-full rounded-lg\">\n\t\t<div class=\"flex flex-col md:flex-row md:items-center md:justify-start gap-8\">\n\t\t\t<ng-container *ngFor=\"let step of workflowSteps; let i = index\">\n\t\t\t\t<ng-container *ngIf=\"step.children?.length\">\n\t\t\t\t\t<div class=\"flex flex-col items-center mt-4 gap-4\">\n\t\t\t\t\t\t<ng-container *ngFor=\"let child of step.children\">\n\t\t\t\t\t\t\t<div class=\"flex flex-col items-center\">\n\t\t\t\t\t\t\t\t<div class=\" flex font-bold\"\n\t\t\t\t\t\t\t\t\t[ngClass]=\"{'status-icon-container-in-progress': child.state === 'in-progress',}\">\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"child.state === 'completed'\">\n\t\t\t\t\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\t\t\t\t\tclass=\"rounded-2xl decoration-white\" [ngClass]=\"[completedBackgroundColor, completedTextColor]\">done</mat-icon>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"child.state === 'cancelled'\">\n\t\t\t\t\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\t\t\t\t\tclass=\"rounded-2xl decoration-red text-[#df281b] bg-[#ffffff]\">cancel</mat-icon>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"child.state === 'in-progress'\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"in-progress\" [ngClass]=\"[inProgressTextColor]\">\n\t\t\t\t\t\t\t\t\t\t\t<mat-icon class=\"font-size-18\" [ngClass]=\"[inProgressTextColor]\" >pending</mat-icon>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"child.state === 'pending'\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"in-progress\">\n\t\t\t\t\t\t\t\t\t\t\t<mat-icon class=\"rounded-full border-4 font-size-16\">pending</mat-icon>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"mt-2 text-center text-gray-800 text-xs text-sm font-medium font-size-10\">\n\t\t\t\t\t\t\t\t\t{{ child.statusName }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div *ngIf=\"child?.roleName\"\n\t\t\t\t\t\t\t\t\tclass=\"mt-1 text-center text-gray-800 text-xs text-sm font-medium font-size-10\">\n\t\t\t\t\t\t\t\t\t({{ child?.roleName }})\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-container *ngIf=\"!step.children?.length\">\n\t\t\t\t\t<div class=\"flex flex-col items-center\">\n\t\t\t\t\t\t<div class=\"flex font-bold\" [ngClass]=\"{\n\t\t\t\t\t\t'status-icon-container-in-progress': step.state === 'in-progress',\n\t\t\t\t\t\t'status-icon-container-pending': step.state === 'pending'\n\t\t\t\t\t }\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"step.state === 'completed'\">\n\t\t\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\t\t\tclass=\"rounded-2xl decoration-white\" [ngClass]=\"[completedBackgroundColor, completedTextColor]\">done</mat-icon>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"step.state === 'cancelled'\">\n\t\t\t\t\t\t\t\t<mat-icon\n\t\t\t\t\t\t\t\t\tclass=\"rounded-2xl decoration-red text-[#df281b] bg-[#ffffff]\">cancel</mat-icon>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"step.state === 'in-progress'\">\n\t\t\t\t\t\t\t\t<div class=\"in-progress\" [ngClass]=\"[inProgressTextColor]\">\n\t\t\t\t\t\t\t\t\t<mat-icon class=\"font-size-18\" [ngClass]=\"[inProgressTextColor]\">pending</mat-icon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"step.state === 'pending'\">\n\t\t\t\t\t\t\t\t<div class=\"in-progress\">\n\t\t\t\t\t\t\t\t\t<mat-icon class=\"rounded-full border-4 font-size-16\">pending</mat-icon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"mt-2 text-center text-gray-800 text-sm font-medium font-size-10\">\n\t\t\t\t\t\t\t{{ step.statusName }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf=\"step?.roleName\"\n\t\t\t\t\t\t\tclass=\"mt-1 text-center text-gray-800 text-sm font-medium font-size-9\">\n\t\t\t\t\t\t\t({{ step?.roleName }})\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-container>\n\t\t\t\t<div *ngIf=\"i < workflowSteps.length - 1\" class=\"bg-gray-500 mx-auto transition-all duration-300\"\n\t\t\t\t\t[ngClass]=\"{'w-16 h-[1px]': true}\">\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t</div>\n\t</div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { WorkflowStatusComponent } from './workflow-status.component';\nimport { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';\n\n@NgModule({\n declarations: [WorkflowStatusComponent],\n imports: [\n CommonModule,\n MatStepperModule,\n MatCardModule,\n MatIconModule,\n MatBadgeModule,\n MatTooltipModule,\n ],\n exports: [WorkflowStatusComponent],\n providers: [\n {\n provide: STEPPER_GLOBAL_OPTIONS,\n useValue: { displayDefaultIndicatorType: false },\n },\n ],\n})\nexport class WorkflowStatusModule {}\n","/*\n * Public API Surface of formly-lib\n */\n\nexport * from './lib/formly-lib/formly-standalone.module';\nexport * from './lib/formly-lib/formly-lib.component';\nexport * from './lib/models/custom-form-field.model';\nexport * from './lib/models/workflow-status.model';\nexport * from './lib/workflow-status/workflow-status.component';\nexport * from './lib/workflow-status/ workflow-status.module';\nexport * from './lib/confirmation-dialog/confirmation-dialog.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i2","i1","i3","i5","i7","findNestedKey","i6","FieldType","i8","startWith","map","take","i9","i10","i2.ScoringService"],"mappings":"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"}