PageSourceSearch

https://careers.ardorhealth.com/chunk-PBGK7JUD.js

js ardorhealth.com collected 2026-10-04 16:07:27 UTC 29,543 bytes, 1 lines download raw bytes

1import{c as g}from"./chunk-CHXQQ5H5.js";import{a as C}from"./chunk-FHF4ZBMD.js";import{b as h,e as v,k as T}from"./chunk-4GG7V4GP.js";import{c as P}from"./chunk-2G25NAWI.js";import{a as E,aa as L,b as D,c as A,d as V,fa as k,m as w}from"./chunk-KG2ZUT5X.js";var m={TEXT:"text",DROPDOWN:"dropDown",RADIO_BUTTON:"radioButton",RADIO:"radio",DATE:"date",CHIP:"chip",AUTO_COMPLETE:"autoComplete",TEXT_AREA:"textArea",TEXTAREA:"textarea",SWITCH:"switch",MULTI_CHECKBOX:"multiCheckbox",MULTI_CHECKBOX_BOX:"multiCheckBox",MULTI_SELECT:"multiSelect",MULTI_SELECT_DROPDOWN:"multiSelectDropDown",FILE_UPLOAD:"fileUpload",FILE:"file",IMAGE:"image",HIDDEN:"hidden",PASSWORD:"password",EMAIL:"email",NUMBER:"number",PHONE:"phone",URL:"url",CHIPS:"chips",RECAPTCHA:"recaptcha",CHECK_BOX:"checkBox",CHECKBOX:"checkbox",CONFIRM_PASSWORD:"confirmPassword",LINK:"link"};function x(y){return(y.key==="terms_and_conditions"||y.key==="termsAndConditions")&&(y.isRequired=1),y.isRequired===1}function S(y){return y.isVisible===1}function _(y){return y.isParent===1}var R=class y{fb=k(T);toasterService=k(P);formRegistry=new Map;childFieldsTracker=new Map;crossFieldValidatorsRegistry=new Map;formSubmitHandlers=new Map;readonlyFieldsConfig=[{formIds:["easyApplyForm","jobSeekerForm"],fieldKeys:["email"],condition:(t,e,r)=>r!=null&&r!==""}];dynamicReadonlyRegistry=new Map;preferredLocationFieldKeys=["preferredLocation","preferred_location"];_fieldChange$=new w;_childFieldsLoaded$=new w;_formSubmit$=new w;_visibilityChanged$=new w;fieldChange$=this._fieldChange$.asObservable();childFieldsLoaded$=this._childFieldsLoaded$.asObservable();visibilityChanged$=this._visibilityChanged$.asObservable();formSubmit$=this._formSubmit$.asObservable();createFormGroup(t){let{formId:e,fields:r}=t;this.ensurePreferredLocationAlwaysVisible(r);let s={};r.forEach(n=>{if(n.type===m.LINK)return;let i=n.value??null,o=["completionYear","employmentStartDate","employmentEndDate","expiresAt","expirationDate"];(n.type===m.DATE||o.includes(n.key))&&i&&(i=this.convertToDate(i));let l=["primarySkill","technology"],c=["easyApplyForm","jobSeekerForm","personalDetailsForm"];(n.type===m.CHIP||n.type===m.CHIPS||l.includes(n.key))&&c.includes(e)&&(i==null||i===""?i=[]:typeof i=="string"?i=i.includes(",")?i.split(",").map(b=>b.trim()).filter(b=>b.length>0):[i]:Array.isArray(i)||(i=[i])),(n.key==="preferredLocation"||n.key==="preferred_location")&&(i=this.convertPreferredLocationToArray(i)),(n.type===m.CHECK_BOX||n.type===m.CHECKBOX||n.type===m.SWITCH)&&(i===1||i==="1"?i=!0:(i===0||i==="0"||i===null||i===void 0)&&(i=!1)),n.key==="expMonths"&&(n.type===m.DROPDOWN||n.type==="dropDown")&&i!=null&&i!==""&&(i=String(i)),(n.type===m.MULTI_CHECKBOX||n.type===m.MULTI_CHECKBOX_BOX||n.type===m.MULTI_SELECT||n.type===m.MULTI_SELECT_DROPDOWN)&&(i==null||i===""?i=[]:Array.isArray(i)||(i=[i]));let p=e==="jobSeekerForm"&&n.key==="email";if(S(n)){let b=this.buildValidators(n);s[n.key]=new v({value:i,disabled:p},b)}else s[n.key]=new v({value:i,disabled:p})});let a=this.fb.group(s);return this.formRegistry.set(e,{form:a,fields:r,config:t}),this.setupFieldChangeListeners(e,a,r),a}convertToDate(t){if(!t)return null;if(t instanceof Date)return isNaN(t.getTime())?null:t;if(typeof t=="string"){let e=t.match(/^([A-Za-z]+)-(\d{4})$/);if(e){let n=["january","february","march","april","may","june","july","august","september","october","november","december"].indexOf(e[1].toLowerCase());if(n!==-1){let i=parseInt(e[2],10);return new Date(i,n,1)}}let r=t.includes("T")?t:`${t}T00:00:00`,s=new Date(r);return isNaN(s.getTime())?null:s}if(typeof t=="number"){let e=new Date(t);return isNaN(e.getTime())?null:e}return null}convertPreferredLocationToArray(t){return t==null||t===""?[]:typeof t=="string"?t.split(",").map(e=>e.trim()).filter(e=>e.length>0).map(e=>({code:e,name:e})):Array.isArray(t)?t.map(e=>typeof e=="string"?{code:e,name:e}:typeof e=="object"&&e!==null?{code:e.code||e.id||e.name||e,name:e.name||e.Name||e.code||e}:{code:String(e),name:String(e)}):typeof t=="object"&&t!==null?[{code:t.code||t.id||t.name||t,name:t.name||t.Name||t.code||t}]:[]}createFormWithMergedFields(t,e,r,s){let a=this.mergeFields(e,r,s);return this.createFormGroup({formId:t,fields:a})}mergeFields(t,e,r){let s=r?.insertPosition||"end",a=r?.overrideApiFields??!0,n=[];if(a){let i=new Map(e.map(c=>[c.key,c])),o=t.map(c=>{if(i.has(c.key)){let d=i.get(c.key);return i.delete(c.key),E(E({},c),d)}return c}),l=Array.from(i.values());switch(s){case"start":n=[...l,...o];break;case"byOrder":n=[...o,...l].sort((c,d)=>(c.order??999)-(d.order??999));break;default:n=[...o,...l];break}}else switch(s){case"start":n=[...e,...t];break;case"byOrder":n=[...t,...e].sort((i,o)=>(i.order??999)-(o.order??999));break;default:n=[...t,...e];break}return n}insertFieldAt(t,e,r){let s=this.formRegistry.get(t);if(s&&(s.fields.splice(r,0,e),!s.form.contains(e.key))){let a=e.value??null,n=["completionYear","employmentStartDate","employmentEndDate","expiresAt","expirationDate"];
1(e.type===m.DATE||n.includes(e.key))&&a&&(a=this.convertToDate(a)),(e.key==="preferredLocation"||e.key==="preferred_location")&&(a=this.convertPreferredLocationToArray(a));let i;if(S(e)){let l=this.buildValidators(e);i=new v(a,l)}else i=new v(a);s.form.addControl(e.key,i);let o=i.value;i.valueChanges.subscribe(l=>{this._fieldChange$.next({formId:t,field:e,value:l,previousValue:o}),o=l})}}insertFieldAfter(t,e,r){let s=this.formRegistry.get(t);if(!s)return;let a=s.fields.findIndex(n=>n.key===r);a!==-1&&this.insertFieldAt(t,e,a+1)}insertFieldBefore(t,e,r){let s=this.formRegistry.get(t);if(!s)return;let a=s.fields.findIndex(n=>n.key===r);a!==-1&&this.insertFieldAt(t,e,a)}buildValidators(t){let e=[];switch(x(t)&&e.push(h.required),this.addKeyBasedValidators(t,e),t.type){case m.EMAIL:e.push(g.email);break;case m.PASSWORD:t.key!=="confirmPassword"&&!t.pattern&&e.push(g.strongPassword);break;case m.PHONE:e.push(g.phoneNumber);break;case m.URL:t.pattern&&e.push(h.pattern(t.pattern));break;case m.NUMBER:t.min!==void 0&&e.push(h.min(Number(t.min))),t.max!==void 0&&e.push(h.max(Number(t.max)));break;case m.TEXT:case m.TEXT_AREA:case m.TEXTAREA:t.minLength&&e.push(h.minLength(t.minLength)),t.maxLength&&t.key!=="city"&&e.push(h.maxLength(t.maxLength));break;case m.DATE:if(t.min){let r=typeof t.min=="string"?new Date(t.min):new Date(t.min);e.push(h.min(r.getTime()))}if(t.max){let r=typeof t.max=="string"?new Date(t.max):new Date(t.max);e.push(h.max(r.getTime()))}t.key==="dateOfBirth"&&e.push(this.dateOfBirthValidator());break}return t.pattern&&!this.hasKeyBasedValidator(t.key)&&e.push(h.pattern(t.pattern)),e}addKeyBasedValidators(t,e){if(t.validatorType){this.addValidatorByType(t.validatorType,e,t);return}let r=t.key;r.includes("linkedin")||r==="linkedin_url"||r==="linkedinUrl"?e.push(g.linkedin):r.includes("facebook")||r==="facebook_url"||r==="facebookUrl"?e.push(g.facebook):r.includes("twitter")||r==="twitter_url"||r==="twitterUrl"?e.push(g.twitter):(r.includes("video")||r==="video_reference"||r==="video_url"||r==="videoUrl"||r==="videoReference")&&e.push(g.videourl),(r==="ssn"||r==="social_security_number"||r==="ssnNumber")&&(e.push(g.ssn),e.push(h.maxLength(11)),e.push(h.minLength(9))),(r==="phone"||r==="mobile"||r==="other_phone"||r==="alternative_phone"||r==="phoneNumber"||r==="mobileNumber"||r==="otherPhone"||r==="alternativePhone"||r==="phonenumber"||r==="mobilenumber"||r==="otherphone"||r==="alternativephone")&&e.push(g.phoneNumber),r==="aadhar_number"||r==="aadhaar_number"||r==="aadharNumber"?e.push(g.aadhaarNumber):r==="pan_card_number"||r==="pan_number"||r==="panNumber"?e.push(g.panNumber):(r==="indian_mobile"||r.includes("mobile")&&r.includes("indian")||r==="indianMobile")&&e.push(g.indianMobile),(r==="firstname"||r==="lastname"||r==="middlename"||r==="other_name"||r==="firstName"||r==="lastName"||r==="middleName"||r==="otherName"||r==="first_name"||r==="last_name"||r==="middle_name"||r==="other_name")&&e.push(g.nameWithSpecialChars),(r==="passport"||r==="passport_number"||r==="passportNumber"||r==="pass_port")&&e.push(g.validatePassportLength),r.includes("email")&&t.type===m.EMAIL&&(e.push(g.emailLength),e.push(g.emailNoSpaces),e.push(g.emailNoConsecutiveDots)),(r==="password"||r==="new_password"||r==="newPassword")&&t.type!==m.PASSWORD&&e.push(g.strongPassword),(r==="license_number"||r==="licensenumber"||r.includes("license_number")||r.includes("license")&&r.includes("number"))&&e.push(g.licenseNumber)}addValidatorByType(t,e,r){switch(t){case"mobileNumber":e.push(g.phoneNumber);break;case"linkedin":e.push(g.linkedin);break;case"facebook":e.push(g.facebook);break;case"twitter":e.push(g.twitter);break;case"videourl":e.push(g.videourl);break;case"ssn":e.push(g.ssn),e.push(h.maxLength(11)),e.push(h.minLength(9));break;case"phoneNumber":e.push(g.phoneNumber);break;case"indianMobile":e.push(g.indianMobile);break;case"panNumber":e.push(g.panNumber);break;case"aadhaarNumber":e.push(g.aadhaarNumber);break;case"strongPassword":e.push(g.strongPassword);break;case"nameWithSpecialChars":e.push(g.nameWithSpecialChars);break;
1case"lettersAndSpacesOnly":e.push(g.lettersAndSpacesOnly);break;case"noSpecialCharacters":e.push(g.noSpecialCharacters);break;case"emailNoSpaces":e.push(g.emailNoSpaces);break;case"emailNoConsecutiveDots":e.push(g.emailNoConsecutiveDots);break;case"emailStartsWithAlphanumeric":e.push(g.emailStartsWithAlphanumeric);break;case"emailEndsWithAlphanumeric":e.push(g.emailEndsWithAlphanumeric);break;case"emailLength":e.push(g.emailLength);break}}hasKeyBasedValidator(t){let e=t.toLowerCase();return["linkedin","facebook","twitter","video","ssn","phone","mobile","aadhar","pan","firstname","lastname","email","password"].some(s=>e.includes(s))}setupFieldChangeListeners(t,e,r){r.forEach(s=>{let a=e.get(s.key);if(!a)return;let n=a.value;a.valueChanges.subscribe(i=>{this._fieldChange$.next({formId:t,field:s,value:i,previousValue:n}),n=i})})}getForm(t){return this.formRegistry.get(t)?.form}getFields(t){return this.formRegistry.get(t)?.fields||[]}updateFields(t,e){let r=this.formRegistry.get(t);r&&(this.ensurePreferredLocationAlwaysVisible(e),r.fields=e,e.forEach(s=>{if(!r.form.contains(s.key)){let a=s.value??null,n=["completionYear","employmentStartDate","employmentEndDate","expiresAt","expirationDate"];if((s.type===m.DATE||n.includes(s.key))&&a&&(a=this.convertToDate(a)),(s.key==="preferredLocation"||s.key==="preferred_location")&&(a=this.convertPreferredLocationToArray(a)),S(s)){let i=this.buildValidators(s);r.form.addControl(s.key,new v(a,i))}else r.form.addControl(s.key,new v(a))}}))}addChildFields(t,e,r){let s=this.formRegistry.get(t);if(!s)return;if(s.fields.findIndex(n=>n.key===e)===-1)console.warn(`[DynamicFieldService] Parent field "${e}" not found in form "${t}". Appending child fields to end.`),s.fields=[...s.fields,...r];else{let n=this.getChildFieldKeys(t,e);n.length>0&&(s.fields=s.fields.filter(l=>!n.includes(l.key)),n.forEach(l=>{s.form.contains(l)&&s.form.removeControl(l)}));let o=s.fields.findIndex(l=>l.key===e)+1;r.length>0&&s.fields.splice(o,0,...r)}this.trackChildFields(t,e,r.map(n=>n.key)),r.forEach(n=>{if(!s.form.contains(n.key)){let i=n.value??null,o=["completionYear","employmentStartDate","employmentEndDate","expiresAt","expirationDate"];(n.type===m.DATE||o.includes(n.key))&&i&&(i=this.convertToDate(i)),(n.key==="preferredLocation"||n.key==="preferred_location")&&(i=this.convertPreferredLocationToArray(i));let l;if(S(n)){let d=this.buildValidators(n);l=new v(i,d)}else l=new v(i);s.form.addControl(n.key,l);let c=l.value;l.valueChanges.subscribe(d=>{this._fieldChange$.next({formId:t,field:n,value:d,previousValue:c}),c=d})}}),this._childFieldsLoaded$.next({formId:t,parentKey:e,childFields:r})}trackChildFields(t,e,r){this.childFieldsTracker.has(t)||this.childFieldsTracker.set(t,new Map),this.childFieldsTracker.get(t).set(e,r)}getChildFieldKeys(t,e){let r=this.childFieldsTracker.get(t);return r?r.get(e)||[]:[]}removeChildFields(t,e){let r=this.formRegistry.get(t);if(!r)return;r.fields=r.fields.filter(a=>!e.includes(a.key)),e.forEach(a=>{r.form.contains(a)&&r.form.removeControl(a)});let s=this.childFieldsTracker.get(t);s&&s.forEach((a,n)=>{let i=a.filter(o=>!e.includes(o));i.length===0?s.delete(n):s.set(n,i)})}updateFieldOptions(t,e,r){let s=this.formRegistry.get(t);if(!s)return;let a=s.fields.find(n=>n.key===e);a&&(a.options=r)}updateDropdownFieldOptions(t,e,r,s=!0,a=5,n=100){let i=this.formRegistry.get(t);if(!i)return a>0?(setTimeout(()=>{this.updateDropdownFieldOptions(t,e,r,s,a-1,n)},n),!1):(console.warn(`[DynamicFieldService] Form ${t} not found after retries. Cannot update dropdown options for field ${e}.`),!1);let o=i.fields.find(f=>f.key===e);if(!o)return console.warn(`[DynamicFieldService] Field ${e} not found in form ${t}.`),!1;if(![m.DROPDOWN,m.MULTI_SELECT,m.MULTI_SELECT_DROPDOWN,m.AUTO_COMPLETE].includes(o.type))return console.warn(`[DynamicFieldService] Field ${e} is not a dropdown type. Current type: ${o.type}`),!1;let d=i.form.get(e),u=d?.value;if(o.options=r,s&&u!==null&&u!==void 0&&u!==""){let f=!1;if(Array.isArray(u)){let F=r.map(p=>p.code||p.value||p);f=u.every(p=>{let b=typeof p=="object"?p.code||p.value:p;return F.includes(b)})}else{let F=r.map(b=>b.code||b.value||b),p=typeof u=="object"?u.code||u.value:u;f=F.includes(p)}if(!f&&d){let F=Array.isArray(u)?[]:null;d.setValue(F)}}return this.patchFieldValue(t,e,r[0].code),this.makeFieldReadonly(t,e),!0}validateForm(t){let e=this.getForm(t);return e?(e.markAllAsTouched(),e.valid):!1}getFormValues(t){let e=this.getForm(t);return e?e.getRawValue():{}}registerReadonlyFields(t){this.readonlyFieldsConfig.push(t)}isFieldReadonly(t,e){if(!this.getForm(t))return!1;let s=this.checkDynamicReadonly(t,e);if(s!==null)return s;for(let a of this.readonlyFieldsConfig){if(!a.formIds.includes(t)||!a.fieldKeys.includes(e))continue;let n=this.formRegistry.get(t);if(!n)return!1;let i=n.fields.find(l=>l.key===e);if(!i)return!1;let o=i.value;return a.condition?a.condition(t,e,o):o!=null&&o!==""}return!1}makeFieldReadonly(t,e){let r=this.getForm(t);return r?r.get(e)?(this.dynamicReadonlyRegistry.has(t)||this.dynamicReadonlyRegistry.set(t,new Map),this.dynamicReadonlyRegistry.get(t).set(e,!0),!0):(console.warn(`[DynamicFieldService] Form control ${e} not found in form ${t}.`),!1):(console.warn(`[DynamicFieldService] Form ${t} not found. Cannot set readonly for field ${e}.`),!1)}removeFieldReadonly(t,e){let r=this.dynamicReadonlyRegistry.get(t);return!r||!r.has(e)?!1:(r.delete(e),!0)}checkDynamicReadonly(t,e){let r=this.dynamicReadonlyRegistry.get(t);return!r||!r.has(e)?null:r.get(e)??null}submitForm(t){let e=this.validateForm(t),r=this.getFormValues(t),s=e?void 0:this.getFormErrors(t),a={formId:t,values:r,isValid:e,errors:s};return this._formSubmit$.next(a),a}getFormErrors(t){let e=this.formRegistry.get(t);if(!e)return{};let r={};return e.fields.forEach(s=>{let a=this.getFieldError(t,s.key);a&&(r[s.key]=a)}),r}getFirstFormError(t){let e=this.getFormErrors(t),r=Object.keys(e)[0];return r?e[r]:null}registerSubmitHandler(t,e,r={}){this.formSubmitHandlers.set(t,{handler:e,options:{showErrorToast:r.showErrorToast??!0,errorTitle:r.errorTitle??C.MISSING_REQUIRED_FIELDS.header,errorMessage:r.errorMessage??C.MISSING_REQUIRED_FIELDS.message}})}unregisterSubmitHandler(t){this.formSubmitHandlers.delete(t)}submitFormWithHandler(t){let e=this.submitForm(t),r=this.formSubmitHandlers.get(t);if(!r)return console.warn(`[DynamicFieldService] No submit handler registered for form: ${t}`),e;let{handler:s,options:a}=r;if(e.isValid)s(e.values);else if(a.showErrorToast){let n=a.errorMessage||C.MISSING_REQUIRED_FIELDS.message;this.toasterService.error(a.errorTitle,n)}return e}patchValues(t,e){let r=this.getForm(t);r&&r.patchValue(e)}patchFieldValue(t,e,r){let s=this.getForm(t);if(!s)return console.warn(`[DynamicFieldService] Form ${t}
1 not found. Cannot patch field ${e}.`),!1;let a=s.get(e);if(!a)return console.warn(`[DynamicFieldService] Form control ${e} not found in form ${t}.`),!1;let n=this.formRegistry.get(t),i=r;if(n){let o=n.fields.find(c=>c.key===e),l=["completionYear","employmentStartDate","employmentEndDate","expiresAt","expirationDate"];o&&(o.type===m.DATE||l.includes(o.key))&&r&&(i=this.convertToDate(r)),o&&(o.type===m.MULTI_SELECT||o.type===m.MULTI_SELECT_DROPDOWN||o.type===m.MULTI_CHECKBOX||o.type===m.MULTI_CHECKBOX_BOX)&&(i==null||i===""?i=[]:Array.isArray(i)||(i=[i])),o&&(o.type===m.CHECK_BOX||o.type===m.CHECKBOX||o.type===m.SWITCH)&&(i===1||i==="1"?i=!0:(i===0||i==="0"||i===null||i===void 0)&&(i=!1)),o&&o.key==="expMonths"&&(o.type===m.DROPDOWN||o.type==="dropDown")&&i!=null&&i!==""&&(i=String(i))}return a.patchValue(i,{emitEvent:!0}),!0}resetForm(t){let e=this.getForm(t);e&&e.reset()}unregisterForm(t){this.formRegistry.delete(t),this.childFieldsTracker.delete(t),this.crossFieldValidatorsRegistry.delete(t),this.dynamicReadonlyRegistry.delete(t)}hasFieldError(t,e){let r=this.getForm(t);if(!r)return!1;let s=r.get(e);return s?s.invalid&&s.touched:!1}getFieldError(t,e){let r=this.formRegistry.get(t);if(!r)return null;let s=r.form.get(e),a=r.fields.find(l=>l.key===e);if(!s||!s.errors||!a)return null;let n=s.errors,i=a.errorMessages||{},o=a.label;if(n.required)return i.required||`${o} field is required`;if(n.email)return i.email||"Please enter a valid email address";if(n.minlength){let l=n.minlength.requiredLength;return i.minLength||`${o} must be at least ${l} characters`}if(n.maxlength){let l=n.maxlength.requiredLength;return i.maxLength||`${o} cannot exceed ${l} characters`}if(n.min)return i.min||`${o} must be at least ${n.min.min}`;if(n.max)return i.max||`${o} cannot exceed ${n.max.max}`;if(n.pattern)return i.pattern||`${o} format is invalid`;if(n.passwordSameAsCurrent)return i.passwordSameAsCurrent||"Your new password must be different from your current password";if(n.passwordMismatch)return i.passwordMismatch||"Passwords do not match";if(n.phoneNumber)return i.phoneNumber||`Please enter a valid ${o}`;if(n.linkedin)return i.linkedin||`Please enter a valid ${o}`;if(n.facebook)return i.facebook||`Please enter a valid ${o}`;if(n.twitter)return i.twitter||`Please enter a valid ${o}`;if(n.videourl)return i.videourl||`Please enter a valid ${o}`;if(n.ssn)return i.ssn||`Please enter a valid ${o}`;if(n.indianMobile)return i.indianMobile||"Please enter a valid Indian mobile number";if(n.panNumber)return i.panNumber||`Please enter a valid ${o}`;if(n.aadhaarNumber)return i.aadhaarNumber||`Please enter a valid ${o}`;if(n.nameWithSpecialChars)return i.nameWithSpecialChars||`${o} can only contain letters, spaces and hyphens`;if(n.lettersAndSpacesOnly)return i.lettersAndSpacesOnly||`${o} can only contain letters and spaces`;if(n.noSpecialCharacters)return i.noSpecialCharacters||`${o} cannot contain special characters or numbers`;if(n.emailLength){let c=n.emailLength?.maxLength||254;return i.emailLength||`Email cannot exceed ${c} characters`}if(n.emailNoSpaces)return i.emailNoSpaces||"Email cannot contain spaces";if(n.emailNoConsecutiveDots)return i.emailNoConsecutiveDots||"Email cannot contain consecutive dots";if(n.emailStartsWithAlphanumeric)return i.emailStartsWithAlphanumeric||"Email must start with a letter or number";if(n.emailEndsWithAlphanumeric)return i.emailEndsWithAlphanumeric||"Email must end with a letter or number";if(n.minimumAge){let c=n.minimumAge?.requiredAge;return i.minimumAge||`Age must be at least ${c} years`}if(n.maximumAge){let c=n.maximumAge?.requiredAge;return i.maximumAge||`Age cannot exceed ${c} years`}if(n.fileSize){let c=n.fileSize?.maxSize;return i.fileSize||`File size cannot exceed ${c}MB`}if(n.fileType){let l=n.fileType,c=g.formatAcceptedTypesForUser(l?.allowedTypes);return i.fileType||`File must be one of: ${c}`}if(n.emailAlreadyExists){if(i.emailAlreadyExists)return i.emailAlreadyExists;let l=window.GlobalRouteParams?.getCompanyId()||"";return`An account with this email already exists. <a href="${l?`/login/${l}`:"/login"}">Click</a> here to login.`}
1if(n.validatePassportLength){let l=n.validatePassportLength,c=l?.minLength||5,d=l?.maxLength||20;return i.validatePassportLength||`Passport must be between ${c} and ${d} characters`}if(n.licenseNumber)return i.licenseNumber||"Please enter a valid license number (4-20 alphanumeric characters)";if(n.futureDate){let l=n.futureDate;return i.futureDate||l?.message||`${o} cannot be in the future`}return`${o} field is invalid`}setFieldError(t,e,r,s=!0){let a=this.getForm(t);if(!a)return;let n=a.get(e);if(n){let i=n.errors||{};n.setErrors(D(E({},i),{[r]:s})),n.markAsTouched(),n.markAsDirty()}}clearFieldError(t,e,r){let s=this.getForm(t);if(!s)return;let a=s.get(e);if(a&&a.errors){let n=a.errors,{[r]:i}=n,o=V(n,[A(r)]);a.setErrors(Object.keys(o).length>0?o:null)}}setFieldEnabled(t,e,r){let s=this.getForm(t);if(!s)return;let a=s.get(e);a&&(r?a.enable({emitEvent:!1}):a.disable({emitEvent:!1}))}setFieldVisibility(t,e,r){let s=this.formRegistry.get(t);if(!s)return;let a=s.fields.find(n=>n.key===e);a&&(a.isVisible=r?1:0,this._visibilityChanged$.next({formId:t,fieldKey:e,visible:r}))}clearFieldValue(t,e){let r=this.getForm(t);if(!r)return;let s=r.get(e);s&&s.setValue(null)}deleteFormControl(t,e){let r=this.formRegistry.get(t);if(!r){console.warn(`[DynamicFieldService] Form ${t} not found. Cannot delete control ${e}.`);return}let s=r.form.get(e);s&&(s.clearValidators(),s.updateValueAndValidity({emitEvent:!1})),r.form.contains(e)&&r.form.removeControl(e);let a=r.fields.findIndex(o=>o.key===e);a!==-1&&r.fields.splice(a,1);let n=this.childFieldsTracker.get(t);if(n){if(n.has(e)){let o=n.get(e)||[];o.length>0&&this.removeChildFields(t,o),n.delete(e)}n.forEach((o,l)=>{if(o.includes(e)){let c=o.filter(d=>d!==e);c.length===0?n.delete(l):n.set(l,c)}})}let i=this.crossFieldValidatorsRegistry.get(t);i&&(i.passwordFieldKey===e||i.currentPasswordFieldKey===e||i.confirmPasswordFieldKey===e)&&this.crossFieldValidatorsRegistry.delete(t)}evaluateShowWhen(t,e,r,s){if(!e.showWhen)return!0;let a=e.showWhen,n=a.condition||a.operator,i=a.value,l=((c,d)=>{if(!d||!Array.isArray(d)||d.length===0)return c;if(String(c)==="1"){let u=d.find(f=>String(f.name).toLowerCase()==="yes"||String(f.name).toLowerCase()==="true");if(u)return u.code}if(String(c)==="0"){let u=d.find(f=>String(f.name).toLowerCase()==="no"||String(f.name).toLowerCase()==="false");if(u)return u.code}return c})(i,s);switch(n){case"equals":return String(r)===String(i)?!0:String(r)===String(l);case"notEquals":return String(r)===String(i)?!1:String(r)!==String(l);case"in":return Array.isArray(i)?[...i.map(u=>String(u)),String(l)].includes(String(r)):String(r)===String(i)||String(r)===String(l);case"notIn":return Array.isArray(i)?![...i.map(u=>String(u)),String(l)].includes(String(r)):String(r)!==String(i)&&String(r)!==String(l);case"isResume":case"isExpire":if(!s||!r)return!1;let c=s.find(d=>d.code===r);return c?c[n]===i:!1;default:return console.warn(`[DynamicFieldService] Unknown showWhen condition: ${n}`),!0}}ensurePreferredLocationAlwaysVisible(t){for(let e of t)this.preferredLocationFieldKeys.includes(e.key)&&(delete e.showWhen,e.isVisible=1)}isPreferredLocationFieldKey(t){return this.preferredLocationFieldKeys.includes(t)}setupShowWhenListeners(t){let e=this.formRegistry.get(t);if(!e)return;let{form:r,fields:s}=e;this.ensurePreferredLocationAlwaysVisible(s);let a=s.filter(i=>i.showWhen&&!this.isPreferredLocationFieldKey(i.key)),n=new Map;for(let i of a){let o=i.showWhen.field;n.has(o)||n.set(o,[]),n.get(o).push(i)}n.forEach((i,o)=>{let l=r.get(o);if(!l){console.warn(`[DynamicFieldService] Parent field "${o}" not found for showWhen`);return}let d=s.find(u=>u.key===o)?.options;l.valueChanges.subscribe(u=>{this.updateShowWhenVisibility(t,i,u,d)}),this.updateShowWhenVisibility(t,i,l.value,d)})}updateShowWhenVisibility(t,e,r,s){let a=this.formRegistry.get(t);if(!a)return;let{form:n}=a;for(let i of e){if(this.isPreferredLocationFieldKey(i.key))continue;let o=this.evaluateShowWhen(t,i,r,s);this.setFieldVisibility(t,i.key,o);let l=n.get(i.key);if(l)if(!o)this.clearFieldValue(t,i.key),l.clearValidators(),l.updateValueAndValidity({emitEvent:!1});else{let c=this.buildValidators(i);if(l.setValidators(c),i.value!==null&&i.value!==void 0&&i.value!==""&&!l.value)if((i.type===m.DROPDOWN||i.type==="dropDown")&&i.options){let d=i.options.find(u=>u.code===i.value||String(u.code)===String(i.value));d?l.setValue(d.code,{emitEvent:!1}):l.setValue(i.value,{emitEvent:!1})}else if(i.key==="preferredLocation"||i.key==="preferred_location"){let d=this.convertPreferredLocationToArray(i.value);l.setValue(d,{emitEvent:!1})}else l.setValue(i.value,{emitEvent:!1});else if(i.value!==null&&i.value!==void 0&&i.value!==""&&l.value!==i.value)if((i.type===m.DROPDOWN||i.type==="dropDown")&&i.options){let d=i.options.find(u=>u.code===i.value||String(u.code)===String(i.value));d?l.setValue(d.code,{emitEvent:!1}):l.setValue(i.value,{emitEvent:!1})}else if(i.key==="preferredLocation"||i.key==="preferred_location"){let d=this.convertPreferredLocationToArray(i.value);l.setValue(d,{emitEvent:!1})}else l.setValue(i.value,{emitEvent:!1});l.updateValueAndValidity({emitEvent:!1})}}}setFieldValue(t,e,r){let s=this.getForm(t);if(!s)return;let a=s.get(e);a&&a.setValue(r)}setPasswordRegexValidator(t,e="password",r){let s=this.getForm(t);if(!s)return;let a=s.get(e);if(!a)return;let n=new RegExp(r),i=this.formRegistry.get(t);if(!i)return;let o=i.fields.find(f=>f.key===e);if(!o)return;let l=a.validator,c=D(E({},o),{pattern:r}),d=this.buildValidators(c),u;l?u=h.compose([...d,l]):u=h.compose(d),a.setValidators(u),a.updateV
1alueAndValidity(),this.reapplyCrossFieldValidators(t)}validatePasswordPatterns(t,e){if(!e||e.length===0)return!0;if(!t||t==="")return e.forEach(s=>{s.validated=!1}),!1;let r=!0;return e.forEach(s=>{if(s.validated=!1,s.code==="pwd_min_length")s.validated=s.length!==void 0?t.length>=s.length:!1;else if(s.pattern&&s.pattern!=="")try{let a=new RegExp(s.pattern);s.validated=a.test(t)}catch{s.validated=!1}else s.code==="pwd_uppercase"?s.validated=/[A-Z]/.test(t):s.code==="pwd_lowercase"?s.validated=/[a-z]/.test(t):s.code==="pwd_numbers"?s.validated=/[0-9]/.test(t):(s.code==="pwd_special"||s.code==="pwdspecial_char")&&(s.validated=/[^A-Za-z0-9]/.test(t));r&&!s.validated&&(r=!1)}),r}getUnmetPasswordSuggestions(t){return!t||t.length===0?[]:t.filter(e=>!e.validated)}getPasswordValue(t,e="password"){let r=this.getForm(t);return r&&r.get(e)?.value||""}setupPasswordValidation(t,e,r,s="password"){this.setPasswordRegexValidator(t,s,e);let a=this.getPasswordValue(t,s),n=!0;return r&&r.length>0&&(n=this.validatePasswordPatterns(a,r)),{passwordValue:a,isValid:n}}addPasswordNotSameAsCurrentValidator(t,e="password",r="currentPassword"){let s=this.getForm(t);if(!s){console.warn(`[DynamicFieldService] Form ${t} not found`);return}let a=s.get(e);if(!a){console.warn(`[DynamicFieldService] Password control ${e} not found in form ${t}`);return}let n=s.get(r);if(!n){console.warn(`[DynamicFieldService] Current password control ${r} not found in form ${t}`);return}let i=a.validator,o=this.passwordNotSameAsCurrentValidator(s,r),l;i?l=h.compose([i,o]):l=o,a.setValidators(l),this.registerCrossFieldValidator(t,{passwordFieldKey:e,currentPasswordFieldKey:r});let c=()=>{let d=this.getForm(t);if(!d)return;let u=d.get(e),f=d.get(r);if(u&&f){let F=f.value,p=u.value;p&&p.length>0&&(u.markAsTouched(),u.markAsDirty()),u.updateValueAndValidity({onlySelf:!1,emitEvent:!1}),d.updateValueAndValidity({onlySelf:!1,emitEvent:!1})}else console.warn("[DynamicFieldService] validatePassword: Controls not found",{hasPwdControl:!!u,hasCurrPwdControl:!!f})};n.valueChanges.subscribe(()=>{c()}),a.valueChanges.subscribe(()=>{c()}),a.value&&n.value&&c()}passwordNotSameAsCurrentValidator(t,e="currentPassword"){return r=>{let s=t.get(e);if(!s)return null;let a=s.value,n=r.value;return!a||!n?null:a===n?{passwordSameAsCurrent:!0}:null}}addPasswordMatchValidator(t,e="password",r="confirmPassword"){let s=this.getForm(t);if(!s)return;let a=s.get(r);if(!a)return;let n=s.get(e);if(!n)return;let i=a.validator,o=this.passwordMatchValidator(s,e),l;i?l=h.compose([i,o]):l=o,a.setValidators(l),this.registerCrossFieldValidator(t,{passwordFieldKey:e,confirmPasswordFieldKey:r});let c=()=>{let d=this.getForm(t);if(!d)return;let u=d.get(r),f=d.get(e);if(u&&f){let F=u.value;F&&F.length>0&&(u.markAsTouched(),u.markAsDirty()),u.updateValueAndValidity({onlySelf:!1,emitEvent:!1}),d.updateValueAndValidity({onlySelf:!1,emitEvent:!1})}};n.valueChanges.subscribe(()=>{c()}),a.valueChanges.subscribe(()=>{c()}),n.value&&a.value&&c()}dateOfBirthValidator(){return t=>{if(!t.value)return null;let e=new Date(t.value),r=new Date;return r.setHours(23,59,59,999),e>r?{futureDate:{message:"Date of birth cannot be in the future"}}:null}}passwordMatchValidator(t,e="password"){return r=>{let s=t.get(e);if(!s)return null;let a=s.value,n=r.value;return!a||!n?null:a!==n?{passwordMismatch:!0}:null}}registerCrossFieldValidator(t,e){let r=this.crossFieldValidatorsRegistry.get(t);this.crossFieldValidatorsRegistry.set(t,E(E({},r),e))}reapplyCrossFieldValidators(t){let e=this.crossFieldValidatorsRegistry.get(t);e&&(e.currentPasswordFieldKey&&this.addPasswordNotSameAsCurrentValidator(t,e.passwordFieldKey,e.currentPasswordFieldKey),e.confirmPasswordFieldKey&&this.addPasswordMatchValidator(t,e.passwordFieldKey,e.confirmPasswordFieldKey))}static \u0275fac=function(e){return new(e||y)};static \u0275prov=L({token:y,factory:y.\u0275fac,providedIn:"root"})};export{m as a,x as b,S as c,_ as d,R as e};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.