{"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":[]}