{"version":3,"file":"53077.04ab10c079a43352.js","mappings":"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","names":["routes","path","component","LoginComponent","LoginModule","DeviceFingerprintService","imports","RouterModule","BasicSharedModule","i0","ctx_r1","validationMessage","TextareaRComponent","SimpleRComponentBase","__ngFactoryType__","selectors","standalone","features","ngContentSelectors","_c1","decls","vars","consts","template","rf","ctx","TextareaRComponent_Conditional_3_Template","TextareaRComponent_Conditional_4_Template","_r1","onBlur","TextareaRComponent_Conditional_10_Template","form","generatedId","bhControl","label","isRequired","isBdf","key","data","placeholder","disabled","rows","isValid","FormsModule","i1","ReactiveFormsModule","encapsulation","CustomValidators","static","sectionPrefilledValidator","control","sectionIsPreFillConfirmed","touched","emailValidator","AppFunctions","value","valid","nullableEmailValidator","phoneValidatorWithRequired","phoneValidator","blankSpaceValidator","Array","isArray","length","trim","urlValidatorWithRequired","urlValidator","regExValidator","test","httpsRegExValidator","rangeValidator","lower","upper","v","duplicateValidator","values","filter","x","minValueValidator","maxValueValidator","dateValidator","moment","hasDigitValidator","hasSymbolValidator","mixedCaseValidator","toLowerCase","toUpperCase","failValidator","minMaxNumberCompareValidator","numberControl","minOrMax","subscribe","result","updateValueAndValidity","equalToValidator","equalControl","dateComparisonValidator","compareWith","comparisonType","isAfter","isSameOrAfter","isBefore","isSameOrBefore","beforeDate","otherDateControl","message","controlValue","otherControlValue","date","afterDate","dateBeforeOrOn","dateToCompare","errorMessage","compareToValue","dateOnOrAfter","dateRangeValidator","startKey","endKey","start","controls","end","startDate","endDate","invalidDateRange","isSame","sameStartDateAndEndDate","modalRef","hide","closeTitle","ModalBodyComponent_Conditional_1_Conditional_3_Template","title","showClose","_r3","ModalBodyComponent_Conditional_4_Conditional_6_Template","ModalBodyComponent","isLoading","showFooter","constructor","this","inputs","ModalBodyComponent_Conditional_1_Template","ModalBodyComponent_Conditional_4_Template","LoadingRComponent","SharedModule","HttpClientModule","CommonModule"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/login.module.ts","./src/app/shared/controls/reactive/bh-r-textarea.component.html","./src/app/shared/controls/reactive/bh-r-textarea.component.ts","./src/app/shared/controls/validators/custom.validator.ts","./src/app/shared/modals/modal-body/modal-body.component.html","./src/app/shared/modals/modal-body/modal-body.component.ts","./src/app/shared/shared.module.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { BaseLoginComponent, LoginComponent } from './login.component';\r\nimport { BasicSharedModule } from '@shared/basic-shared.module';\r\nimport { DeviceFingerprintService } from './device-fingerprint.service';\r\n\r\nconst routes: Routes = [\r\n {path: '', component: LoginComponent},\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(routes),\r\n BasicSharedModule,\r\n BaseLoginComponent,\r\n LoginComponent\r\n ],\r\n exports: [],\r\n providers: [\r\n DeviceFingerprintService\r\n ]\r\n})\r\nexport class LoginModule {\r\n\r\n}\r\n","<div class=\"form-group\" [formGroup]=\"form\">\r\n <label [for]=\"generatedId\">\r\n {{bhControl.label}}@if (isRequired) {\r\n <span class=\"required-icon tooltip-tr\"><span>Required</span></span>\r\n }\r\n @if (isBdf) {\r\n <span class=\"bdf-icon tooltip-tr\"></span>\r\n }\r\n <ng-content select=\"[bh-prefix]\"></ng-content>\r\n\r\n <textarea #txtarea class=\"form-control\"\r\n [formControlName]=\"bhControl.key\"\r\n [id]=\"generatedId\"\r\n [attr.maxlength]=\"bhControl.data?.maxLength\"\r\n [placeholder]=\"bhControl.data?.placeholder || ''\"\r\n [required]=\"isRequired || false\"\r\n [readonly]=\"bhControl?.disabled || form.disabled || false\"\r\n [rows]=\"bhControl.data?.rows || 3\"\r\n [attr.disabled]=\"null\"\r\n (change)=\"onBlur()\"></textarea>\r\n\r\n <ng-content select=\"[bh-suffix]\"></ng-content>\r\n <span class=\"clearfix\"></span>\r\n @if (!isValid) {\r\n <div class=\"errorMessage\" [innerHtml]=\"validationMessage\"></div>\r\n }\r\n</label>\r\n\r\n\r\n</div>\r\n","import { Component } from '@angular/core';\r\nimport { SimpleRComponentBase } from '../helpers/simple-r-control.base';\r\n\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'bh-r-textarea',\r\n templateUrl: 'bh-r-textarea.component.html',\r\n standalone: true,\r\n imports: [FormsModule, ReactiveFormsModule]\r\n})\r\n\r\nexport class TextareaRComponent extends SimpleRComponentBase { }\r\n","import {FormControl, AbstractControl, ValidatorFn, ValidationErrors, FormGroup} from '@angular/forms';\r\nimport { AppFunctions } from '../../app.functions';\r\nimport * as moment from 'moment';\r\nimport { SectionFormGroup } from '../../applications/section-form-group.class';\r\n\r\nexport class CustomValidators {\r\n\r\n static regexSsn: RegExp = /(^$)|(^\\d{9}$)|(^\\d{3}\\-\\d{2}\\-\\d{4}$)/;\r\n static regexSsnOrMask: RegExp = /(^$)|(^\\d{9}$)|(^\\d{3}\\-\\d{2}\\-\\d{4}$)|(^X{3}\\-X{2}\\-\\d{4}$)/;\r\n static regexTin: RegExp = /^(\\d{2}-\\d{7})?$|((?!000|9\\d{2})\\d{3}-(?!00)\\d{2}-(?!0{4})\\d{4})$|null/;\r\n static regexCurrency: RegExp = /(^[0-9]\\d*(\\.\\d+)?$)/;\r\n\r\n static sectionPrefilledValidator(): ValidatorFn | null {\r\n return (control: SectionFormGroup): { [key: string]: any } => {\r\n return control.sectionIsPreFillConfirmed || control.touched ? null : {\r\n sectionPrefilledValidator: \"Confirm the information in prefilled section.\"\r\n };\r\n };\r\n }\r\n\r\n static emailValidator(control: FormControl) {\r\n\r\n return AppFunctions.regularExpressionMatched(control.value, 'email') ? null : {\r\n emailValidator: {\r\n valid: false\r\n }\r\n };\r\n\r\n }\r\n\r\n static nullableEmailValidator(control: FormControl) {\r\n return control.value == null ? null : CustomValidators.emailValidator(control);\r\n }\r\n\r\n static phoneValidatorWithRequired(control: FormControl) {\r\n\r\n if (!AppFunctions.IsNullOrWhiteSpace(control.value)) {\r\n return AppFunctions.regularExpressionMatched(control.value, 'phone') ? null : {\r\n phoneValidator: {\r\n valid: false\r\n }\r\n };\r\n }\r\n }\r\n static phoneValidator(control: FormControl) {\r\n\r\n return AppFunctions.regularExpressionMatched(control.value, 'phone') ? null : {\r\n phoneValidator: {\r\n valid: false\r\n }\r\n };\r\n\r\n }\r\n\r\n static blankSpaceValidator(control: FormControl) {\r\n if (!Array.isArray(control?.value)) {\r\n if (control?.value?.length > 0 && control?.value?.trim() == '') {\r\n return { blankSpaceValidator: { valid: false } }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n static urlValidatorWithRequired(control: FormControl) {\r\n\r\n if (!AppFunctions.IsNullOrWhiteSpace(control.value)) {\r\n return AppFunctions.regularExpressionMatched(control.value, 'url') ? null : {\r\n urlValidator: {\r\n valid: false\r\n }\r\n };\r\n }\r\n }\r\n\r\n static urlValidator(control: FormControl) {\r\n\r\n return AppFunctions.regularExpressionMatched(control.value, 'url') ? null : {\r\n urlValidator: {\r\n valid: false\r\n }\r\n };\r\n\r\n }\r\n\r\n static regExValidator(regExValidator: RegExp): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n // check to see if the this control has a required validator on it\r\n //if (Validators.required(control)) return null;\r\n\r\n var v: string = control.value;\r\n //let REGEXP = new RegExp(regExValidator);\r\n\r\n return !(regExValidator.test(v ?? '')) ?\r\n {\r\n regExValidator: {\r\n valid: false\r\n }\r\n } : null;\r\n\r\n // cool patern, keeping it in comments for reference for later, gdo 9/9/2016\r\n //return v.length < minLength ?\r\n //\t{ 'minlength': { 'requiredLength': minLength, 'actualLength': v.length } } :\r\n //\tnull;\r\n };\r\n }\r\n\r\n static httpsRegExValidator(regExValidator: RegExp): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return AppFunctions.IsNullOrWhiteSpace(control.value) || regExValidator.test(control.value) ?\r\n null\r\n : {\r\n httpsRegExValidator: {\r\n valid: false\r\n }\r\n };\r\n };\r\n }\r\n\r\n static rangeValidator(lower: number, upper: number): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let v: number = control.value;\r\n if (typeof v == 'string') { // Currency Type BhControl\r\n v = AppFunctions.validNumber(v);\r\n }\r\n return ((v != null && lower != null && v < lower) || (v != null && upper != null && v > upper)) ?\r\n { rangeValidator: { valid: false } }\r\n : null;\r\n };\r\n }\r\n\r\n static duplicateValidator(values: any[]): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (values) {\r\n return values.filter(x => x == control.value).length === 1 ? null : { duplicateValidator: { valid: false } };\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n static minValueValidator(lower: number): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let v: number = control.value;\r\n if (typeof v == 'string') {\r\n v = AppFunctions.validNumber(v);\r\n }\r\n return ((v != null && lower != null && v < lower)) ?\r\n { minValueValidator: { valid: false } }\r\n : null;\r\n };\r\n }\r\n\r\n static maxValueValidator(upper: number): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let v: number = control.value;\r\n if (typeof v == 'string') {\r\n v = AppFunctions.validNumber(v);\r\n }\r\n return ((v != null && upper != null && v > upper)) ?\r\n { maxValueValidator: { valid: false } }\r\n : null;\r\n };\r\n }\r\n\r\n static dateValidator(control: FormControl) {\r\n let isValid = control.value ? moment(control.value, \"M/D/YYYY\", true).isValid() : true;\r\n return isValid ? null : {\r\n dateValidator: {\r\n valid: false\r\n }\r\n };\r\n }\r\n\r\n static hasDigitValidator(control: FormControl) {\r\n if (control.value !== null) {\r\n return /\\d+/.test(control.value) ? null : {\r\n hasDigitValidator: {\r\n valid: false\r\n }\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n static hasSymbolValidator(control: FormControl) {\r\n if (control.value !== null) {\r\n return /\\W+/.test(control.value) ? null : {\r\n hasSymbolValidator: {\r\n valid: false\r\n }\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n static mixedCaseValidator(control: FormControl) {\r\n if (control.value !== null) {\r\n return control.value != control.value.toLowerCase() && control.value != control.value.toUpperCase() ? null : {\r\n mixedCaseValidator: {\r\n valid: false\r\n }\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n static failValidator(control: FormControl) {\r\n if (control) {\r\n return {\r\n failValidator: {\r\n valid: false\r\n }\r\n };\r\n }\r\n }\r\n\r\n static minMaxNumberCompareValidator(numberControl: AbstractControl, minOrMax: string): ValidatorFn {\r\n let subscribe = false;\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (numberControl !== null) {\r\n let result;\r\n if (minOrMax === \"Max\") {\r\n result = numberControl.value < control.value ? null : {\r\n minMaxNumberCompareValidator: true\r\n };\r\n }\r\n else if (minOrMax === \"Min\") {\r\n result = numberControl.value > control.value ? null : {\r\n minMaxNumberCompareValidator: true\r\n };\r\n }\r\n if (!subscribe) {\r\n subscribe = true;\r\n numberControl.updateValueAndValidity();\r\n }\r\n else {\r\n subscribe = false;\r\n }\r\n return result;\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n static equalToValidator(equalControl: AbstractControl): ValidatorFn {\r\n //let subscribe: boolean = false;\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n //if (!subscribe) {\r\n // subscribe = true;\r\n // equalControl.valueChanges.subscribe(() => {\r\n // control.updateValueAndValidity();\r\n // });\r\n //}\r\n\r\n return equalControl.value === control.value ? null : { equalToValidator: true };\r\n };\r\n }\r\n\r\n static dateComparisonValidator(compareWith: AbstractControl, comparisonType: string): ValidatorFn {\r\n let isValid: boolean = false;\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n switch (comparisonType) {\r\n case 'isAfter':\r\n isValid = moment(control.value).isAfter(moment(compareWith.value));\r\n break;\r\n case 'isSameOrAfter':\r\n isValid = moment(control.value).isSameOrAfter(moment(compareWith.value));\r\n break;\r\n case 'isBefore':\r\n isValid = moment(control.value).isBefore(moment(compareWith.value));\r\n break;\r\n case 'isSameOrBefore':\r\n isValid = moment(control.value).isSameOrBefore(moment(compareWith.value));\r\n break;\r\n default:\r\n break;\r\n }\r\n return isValid ? null : { dateComparisonValidator: true };\r\n };\r\n }\r\n\r\n static beforeDate(otherDateControl: AbstractControl, message: string = 'Invalid date value'): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n const controlValue = moment(control.value);\r\n const otherControlValue = moment(otherDateControl.value);\r\n\r\n if (controlValue.isValid() && otherControlValue.isValid()) {\r\n if (controlValue.isAfter(otherControlValue)) {\r\n return {\r\n date: message\r\n };\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n static afterDate(otherDateControl: AbstractControl, message: string = 'Invalid date value'): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n const controlValue = moment(control.value);\r\n const otherControlValue = moment(otherDateControl.value);\r\n\r\n if (controlValue.isValid() && otherControlValue.isValid()) {\r\n if (controlValue.isBefore(otherControlValue)) {\r\n return {\r\n date: message\r\n };\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n static dateBeforeOrOn(dateToCompare: Date, message: string = null): ValidatorFn {\r\n let errorMessage: string = `Date cannot be after ${dateToCompare}`;\r\n\r\n if (message) {\r\n errorMessage = message;\r\n }\r\n\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = moment(control.value);\r\n const compareToValue = moment(dateToCompare);\r\n\r\n if (controlValue.isValid() &&\r\n compareToValue.isValid() &&\r\n controlValue.isAfter(compareToValue)) {\r\n return {\r\n dateBeforeOrOn: errorMessage\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n static dateOnOrAfter(dateToCompare: Date, message: string = null): ValidatorFn {\r\n let errorMessage: string = `Date cannot be before ${dateToCompare}`;\r\n\r\n if (message) {\r\n errorMessage = message;\r\n }\r\n\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = moment(control.value);\r\n const compareToValue = moment(dateToCompare);\r\n\r\n if (controlValue.isValid() &&\r\n compareToValue.isValid() &&\r\n controlValue.isBefore(compareToValue)) {\r\n return {\r\n dateOnOrAfter: errorMessage\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n static dateRangeValidator(startKey: string, endKey: string): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const formGroup = control as FormGroup;\r\n const start = formGroup.controls[startKey].value;\r\n const end = formGroup.controls[endKey].value;\r\n\r\n if (!start || !end) {\r\n return null;\r\n }\r\n\r\n const startDate = moment(start);\r\n const endDate = moment(end);\r\n\r\n if (endDate.isBefore(startDate)) {\r\n return { 'invalidDateRange': true };\r\n }\r\n\r\n if (endDate.isSame(startDate)) {\r\n return { 'sameStartDateAndEndDate': true };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n}\r\n","<bh-r-loading [isLoading]=\"isLoading\">\r\n @if (title) {\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">{{ title }}</h5>\r\n @if (showClose) {\r\n <button type=\"button\" class=\"close tooltip-tl\" data-dismiss=\"modal\"\r\n aria-label=\"Close\" (click)=\"modalRef.hide()\">\r\n <i class=\"fa fa-times\"></i>\r\n <span aria-hidden=\"true\">{{closeTitle}}</span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n <div class=\"modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (showFooter) {\r\n <div class=\"modal-footer d-block\">\r\n <div class=\"row\">\r\n <div class=\"col-6 d-flex justify-content-start\">\r\n <ng-content select=\"[bh-modal-buttons-left]\"></ng-content>\r\n </div>\r\n <div class=\"col-6 d-flex justify-content-end\">\r\n <ng-content select=\"[bh-modal-buttons]\"></ng-content>\r\n @if (showClose) {\r\n <button type=\"button\" class=\"btn btn-blue ms-2\"\r\n (click)=\"modalRef.hide()\">\r\n {{ closeTitle }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</bh-r-loading>\r\n","import { Component, Input } from '@angular/core';\r\nimport { BsModalRef } from \"ngx-bootstrap/modal\";\r\nimport { LoadingRComponent } from \"shared/controls/reactive/bh-r-loading.component\";\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'bh-modal-body',\r\n templateUrl: './modal-body.component.html',\r\n imports: [\r\n LoadingRComponent\r\n ],\r\n styleUrls: ['./modal-body.component.css']\r\n})\r\nexport class ModalBodyComponent {\r\n\r\n @Input() isLoading: boolean = false;\r\n @Input() title: string;\r\n @Input() showClose: boolean = true;\r\n @Input() showFooter: boolean = true;\r\n @Input() closeTitle: string = 'Close';\r\n\r\n constructor(protected readonly modalRef: BsModalRef) {\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { BasicSharedModule } from './basic-shared.module';\r\n\r\n@NgModule({\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n HttpClientModule,\r\n RouterModule,\r\n CommonModule,\r\n BasicSharedModule\r\n ],\r\n exports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n HttpClientModule,\r\n RouterModule,\r\n CommonModule,\r\n BasicSharedModule\r\n ],\r\n providers: []\r\n})\r\nexport class SharedModule {\r\n}\r\n"],"x_google_ignoreList":[]}