PageSourceSearch

https://dwp.werner.com/3278.c8745bb4c3e6a0d6.js

js werner.com collected 2026-10-02 02:58:55 UTC 101,652 bytes, 1 lines download raw bytes

1(self.webpackChunkapp=self.webpackChunkapp||[]).push([[3278],{83278(d,u,i){"use strict";i.d(u,{Profilev2PageModule:()=>j});var a=i(31635),t=i(23214),s=i(16213),r=i(89417),m=i(64211),K=i(25207),pe=i(44661),p=i(10467);var ue=i(33308),he=i.n(ue),y=i(25499),Y=i(24114),H=i(71049),G=i(77048),F=i(79525),$=i(96048),h=i(36388),_=i(17945),B=i(7575),X=i(45312),Z=i(98169),fe=i(98561),C=i(73931),ge=i(30985);var be=i(72816),Ce=i.n(be),J=i(71631);var W,ve=i(61836),xe=i.n(ve),O=i(26337);let w=(class{constructor(){this.friendsAndFamilyModel=[],this.maxDate=(new Date).toISOString()}numberOnlyValidation(e){let o=String.fromCodePoint(e.charCode);/[0-9.,]/.test(o)||e.preventDefault()}static#e=W=()=>(this.propDecorators={friendsAndFamilyModel:[{type:t.pde}],faf:[{type:t.Uct,args:["faf"]}]},this)},W());w=(0,a.Cg)([(0,t.uAl)({selector:"app-faf-add-edit-form",template:'<form #faf="ngForm">\n    <ion-item-group *ngFor="let contact of friendsAndFamilyModel; let j=index">\n        <ion-item>\n            <ion-label position="stacked">First Name\n                <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-input required placeholder="First Name" type="text" name="firstName{{j}}"\n                #firstName="ngModel" [(ngModel)]="friendsAndFamilyModel[j].firstName"></ion-input>\n        </ion-item>\n        <ion-item *ngIf="!firstName.valid && (faf.submitted || firstName.touched)" lines="none">\n            <ion-text color="danger">First Name is required</ion-text>\n        </ion-item>\n        <ion-item>\n            <ion-label position="stacked">Last Name\n                <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-input required placeholder="Last Name" type="text" name="lastName{{j}}" #lastName="ngModel"\n                [(ngModel)]="friendsAndFamilyModel[j].lastName"></ion-input>\n        </ion-item>\n        <ion-item *ngIf="!lastName.valid && (faf.submitted || lastName.touched)" lines="none">\n            <ion-text color="danger">Last Name is required</ion-text>\n        </ion-item>\n        <ion-item>\n            <ion-label position="stacked">Nickname\n            </ion-label>\n            <ion-input placeholder="Nickname" type="text" name="nickName{{j}}" #nickName="ngModel"\n                [(ngModel)]="friendsAndFamilyModel[j].nickName"></ion-input>\n        </ion-item>\n        <ion-item>\n            <ion-label position="stacked">Email Address\n                <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-input required placeholder="Email Address" type="email" name="email" #email="ngModel"\n                pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z0-9]{1,}([.]{1}[a-zA-Z]{2,}|[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,})"\n                [(ngModel)]="friendsAndFamilyModel[j].email"></ion-input>\n        </ion-item>\n        <ion-item *ngIf="!email.valid && (faf.submitted || email.touched)" lines="none">\n            <ion-text color="danger" *ngIf="faf?.form?.controls?.email?.errors?.required">Email Address is required</ion-text>\n            <ion-text color="danger" *ngIf="faf?.form?.controls?.email?.errors?.pattern">Please enter valid Email</ion-text>\n        </ion-item>\n        <ion-item>\n            <ion-label position="stacked">Mobile Phone\n                <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-input required placeholder="Mobile Phone" type="tel" maxlength="18" minlength="14"\n                name="phone" #phone="ngModel" [ngModel]="friendsAndFamilyModel[j].phone | phoneFormat"  (ngModelChange)="friendsAndFamilyModel[j].phone=$event"\n                (keypress)="numberOnlyValidation($event)"></ion-input>\n        </ion-item>\n        <ion-item *ngIf="!phone.valid && (faf.submitted || phone.touched)" lines="none">\n            <ion-text color="danger" *ngIf="faf?.form?.controls?.phone?.errors?.required">Mobile Phone is required</ion-text>\n            <ion-text color="danger" *ngIf="(faf?.form?.controls?.phone?.errors?.minlength || faf?.form?.controls?.phone?.errors?.maxlength)">Please enter valid Mobile Phone Number</ion-text>\n        </ion-item>\n        <ion-item>\n            <ion-label position="stacked">
1Birthdate\n            </ion-label>\n            <ion-datetime displayFormat="MM/DD/YYYY" placeholder="Select Date" name="birthDate"\n                [max]="maxDate" [value]="friendsAndFamilyModel[j].birthDate"></ion-datetime>\n        </ion-item>\n    </ion-item-group>\n</form>',imports:[r.YN,s.Sq,m.bv,s.bT,O.U],styles:[xe()]})],w);var Q,Se=i(15832),Pe=i.n(Se);let k=(class{static#e=Q=()=>(this.propDecorators={friendsAndFamilyDetail:[{type:t.pde}]},this)},Q());k=(0,a.Cg)([(0,t.uAl)({selector:"app-faf-show-detail",template:'<ion-row >\n    <ion-col size="12">\n        <ion-item-group>\n            <ion-item lines="none" class="ion-no-padding" *ngIf="friendsAndFamilyDetail?.firstName">\n                <ion-col size="6">\n                    <ion-label class="edge-label">FIRST NAME</ion-label>\n                </ion-col>\n                <ion-col size="6">\n                    <ion-text class="edge-value">\n                        {{friendsAndFamilyDetail?.firstName}}\n                    </ion-text>\n                </ion-col>\n            </ion-item>\n            <ion-item lines="none" class="ion-no-padding" *ngIf="friendsAndFamilyDetail?.lastName">\n                <ion-col size="6">\n                    <ion-label class="edge-label">LAST NAME</ion-label>\n                </ion-col>\n                <ion-col size="6">\n                    <ion-text class="edge-value">\n                        {{friendsAndFamilyDetail?.lastName}}\n                    </ion-text>\n                </ion-col>\n            </ion-item>\n            <ion-item lines="none" class="ion-no-padding" *ngIf="friendsAndFamilyDetail?.nickName">\n                <ion-col size="6">\n                    <ion-label class="edge-label">NICKNAME</ion-label>\n                </ion-col>\n                <ion-col size="6">\n                    <ion-text class="edge-value">\n                        {{friendsAndFamilyDetail?.nickName}}\n                    </ion-text>\n                </ion-col>\n            </ion-item>\n            <ion-item lines="none" class="ion-no-padding" *ngIf="friendsAndFamilyDetail?.email">\n                <ion-col size="6">\n                    <ion-label class="edge-label">EMAIL ADDRESS</ion-label>\n                </ion-col>\n                <ion-col size="6">\n                    <ion-text class="edge-value">\n                        {{friendsAndFamilyDetail?.email}}\n                    </ion-text>\n                </ion-col>\n            </ion-item>\n            <ion-item lines="none" class="ion-no-padding" *ngIf="friendsAndFamilyDetail?.phone">\n                <ion-col size="6">\n                    <ion-label class="edge-label">PHONE NUMBER</ion-label>\n                </ion-col>\n                <ion-col size="6">\n                    <ion-text class="edge-value">\n                        {{friendsAndFamilyDetail?.phone | phoneFormat}}\n                    </ion-text>\n                </ion-col>\n            </ion-item>\n            <ion-item lines="none" class="ion-no-padding" *ngIf="friendsAndFamilyDetail?.birthDate">\n                <ion-col size="6">\n                    <ion-label class="edge-label">BIRTHDATE</ion-label>\n                </ion-col>\n                <ion-col size="6">\n                    <ion-text class="edge-value">\n                        {{friendsAndFamilyDetail?.birthDate}}\n                    </ion-text>\n                </ion-col>\n            </ion-item>\n        </ion-item-group>\n    </ion-col>\n</ion-row>',imports:[m.bv,s.bT,O.U],styles:[Pe()]})],k);var ee,Fe=i(21602);let E=(class{constructor(e,n,o){this.toastController=e,this.router=n,this.platform=o,this.friendsAndFamilyList=[{firstName:"Jamal",lastName:"Rodriguez",nickName:"Jamal",email:"[email protected]",phone:"1-402-555-5555",birthDate:"06/21/1980"},{firstName:"Mellisa",lastName:"Sanders",nickName:"Mellisa",email:"[email protected]",phone:"1-402-555-5555",birthDate:"06/21/1980"}],this.panelsHidden=[],this.isProduction=X.c.production,this.createFriendsAndFamilyContact=!1,this.editFriendsAndFamilyContact=[],this.friendsAndFamilyCreate=[],this.friendsAndFamilyEdit=[],this.showDeleteConfirmationModal=!1,this.deleteModalTitle="Delete Contact",this.deleteModalContent="Are you sure you want to delete this contact?",this.deleteModalYesButtonText="Yes",this.deleteModalNoButtonText="No",n.events.subscribe(l=>{l instanceof h.wF&&"/driver-profile?tab=myInformation"===l.url&&this.setPanelHidden()})}ngOnInit(){this.setPanelHidden()}setPanelHidden(){this.panelsHidden=new Array(this.friendsAndFamilyList.length);for(let e=0;e<this.friendsAndFamilyList.length;e++)this.panelsHidden[e]=!0,this.editFriendsAndFamilyContact[e]=!0}editFriendsAndFamily(e,n){this.friendsAndFamilyEdit=[],this.closeAllPanelsExcept(n),null!==e&&null!==n&&(this.editFriendsAndFamilyContact[n]=!this.editFriendsAndFamilyContact[n],!1===this.editFriendsAndFamilyContact[n]&&(this.friendsAndFamilyEdit.push(e),this.panelsHidden[n]=!this.editFriendsAndFamilyContact[n]))}showFriendsAndFamilyDetails(e,n){this.closeAllPanelsExcept(n),null!==e&&null!==n&&(this.panelsHidden[n]=!this.panelsHidden[n],!1===this.panelsHidden[n]&&(this.friendsAndFamilyDetail=e,this.friendsAndFamilyDetail?.birthDate&&(this.friendsAndFamilyDetail.birthDate=new Date(this.friendsAndFamilyDetail.birthDate).toLocaleDateString("en-US",{day:"2-digit",month:"2-digit",year:"numeric"})),this.editFriendsAndFamilyContact[n]=!this.panelsHidden[n]))}closeAllPanelsExcept(e){if(this.createFriendsAndFamilyContact=!1,null!==this.panelsHidden&&this.panelsHidden.length>0)for(let n=0;n<this.panelsHidden.length;n++)n!==e&&(this.panelsHidden[n]=!0);if(null!==this.editFriendsAndFamilyContact&&this.editFriendsAndFamilyContact.length>0)for(let n=0;n<this.editFriendsAndFamilyContact.length;n++)n!==e&&(this.editFriendsAndFamilyContact[n]=!0)}addNewFriendsAndFamily(){if(this.createFriendsAndFamilyContact=!0,0===this.friendsAndFamilyCreate?.length){const e={firstName:"",lastName:"",nickName:"",email:"",ph
1one:"",birthDate:""};this.friendsAndFamilyCreate.push(e)}this.setPanelHidden()}cancelAddNewFriendsAndFamily(){this.createFriendsAndFamilyContact=!1,this.friendsAndFamilyCreate=[]}saveAddNewFriendsAndFamily(e){var n=this;return(0,p.A)(function*(){if(e.faf.form.valid){n.createFriendsAndFamilyContact=!1;let o={firstName:n.friendsAndFamilyCreate[0].firstName,lastName:n.friendsAndFamilyCreate[0].lastName,nickName:n.friendsAndFamilyCreate[0].nickName,email:n.friendsAndFamilyCreate[0].email,phone:n.friendsAndFamilyCreate[0].phone,birthDate:n.friendsAndFamilyCreate[0].birthDate};n.friendsAndFamilyList.push(o),n.setPanelHidden(),n.friendsAndFamilyCreate=[],n.showToastMessage("Friends and Family Saved Successfully","primary")}else n.showToastMessage("Please enter all fields","danger")})()}showToastMessage(e,n){var o=this;return(0,p.A)(function*(){(yield o.toastController.create({message:e,color:n,duration:3e3})).present()})()}cancelEditFriendsAndFamily(e){null!==e&&(this.closeAllPanelsExcept(e),this.editFriendsAndFamilyContact[e]=!this.editFriendsAndFamilyContact[e],!0===this.editFriendsAndFamilyContact[e]&&(this.friendsAndFamilyEdit=[]))}saveEditFriendsAndFamily(e,n){var o=this;return(0,p.A)(function*(){e.faf.form.valid?(null!==n&&(o.friendsAndFamilyList[n]=e.friendsAndFamilyModel[0],o.editFriendsAndFamilyContact[n]=!o.editFriendsAndFamilyContact[n],!0===o.editFriendsAndFamilyContact[n]&&(o.friendsAndFamilyEdit=[])),o.showToastMessage("Friends and Family Saved Successfully","primary")):o.showToastMessage("Please enter all fields","danger")})()}deleteFriendsAndFamily(e,n){this.showDeleteConfirmationModal=!0,this.deleteFriendsAndFamilyIndex=n}deleteModalCloseButtonClickHandler(){this.showDeleteConfirmationModal=!1}deleteModalYesButtonClickHandler(){this.showDeleteConfirmationModal=!1,-1!==this.deleteFriendsAndFamilyIndex&&(this.friendsAndFamilyList.splice(this.deleteFriendsAndFamilyIndex,1),this.setPanelHidden())}static#e=ee=()=>(this.ctorParameters=()=>[{type:m.K_},{type:h.Ix},{type:J.OD}],this.propDecorators={fafAddEditForm:[{type:t.Uct,args:["fafAddEditForm"]}]},this)},ee());E=(0,a.Cg)([(0,t.uAl)({selector:"app-friends-and-family",template:'<ion-card class="friends-and-family">\n    <ion-card-header>\n        <ion-card-title class="edge-value"> Friends and Family </ion-card-title>\n    </ion-card-header>\n    <ion-card-content class="friends-and-family-content">\n        <ion-text>\n            Enter the name(s) of any friends or family members below that you would like to invite to receive Werner\n            Updates. This information is completely optional and your friends and family will have the option to\n            opt-in or out of any communications.\n        </ion-text>\n    </ion-card-content>\n    <ion-item lines="none" class="item-list" *ngFor="let item of friendsAndFamilyList;let i = index;">\n        <ion-grid class="friends-and-family-grid">\n            <ion-row>\n                <ion-col size="12">\n                    <ion-row>\n                        <ion-col size="9">\n                            <ion-text class="edge-value">\n                                {{item.firstName}} {{item.lastName}}\n                            </ion-text>\n                        </ion-col>\n                        <ion-col size="2" [ngClass]="(platform.is(\'desktop\') ? \'ion-text-right\' : \'ion-text-center\')">\n                            <a class="pointer" (click)="editFriendsAndFamily(item,i)">EDIT</a>\n                        </ion-col>\n                        <ion-col size="1">\n                            <ion-icon class="ion-icon-chevron ion-float-right" *ngIf="panelsHidden[i]"\n                                name="chevron-forward-outline" (click)="showFriendsAndFamilyDetails(item,i)" (keypress)="showFriendsAndFamilyDetails(item,i)" tabindex="0">\n                            </ion-icon>\n                            <ion-icon class="ion-icon-chevron ion-float-right" *ngIf="!panelsHidden[i]"\n                                name="chevron-down-outline" (click)="showFriendsAndFamilyDetails(item,i)" (keypress)="showFriendsAndFamilyDetails(item,i)" tabindex="0">\n                            </ion-icon>\n                        </ion-col>\n                    </ion-row>\n                </ion-col>\n            </ion-row>\n            <app-faf-show-detail *ngIf="!panelsHidden[i]" [friendsAndFamilyDetail]="friendsAndFamilyDetail"></app-faf-show-detail>\n            <ion-item *ngIf="!editFriendsAndFamilyContact[i]" lines="none">\n                <ion-grid>\n                    <app-faf-add-edit-form #fafAddEditForm [friendsAndFamilyModel]="friendsAndFamilyEdit"></app-faf-add-edit-form>\n                    <ion-item lines="none">\n                        <ion-grid>\n                            <ion-row>\n                                <ion-col size="4">\n                                    <ion-button type="button" class="ion-float-right" fill="clear"\n                                        (click)="cancelEditFriendsAndFamily(i)" (keypress)="cancelEditFriendsAndFamily(i)">Cancel\n                                    </ion-button>\n                                </ion-col>\n                                <ion-col size="4" class="ion-text-center">\n                                    <ion-button type="submit"\n                                        (click)="saveEditFriendsAndFamily(fafAddEditForm,i)" (keypress)="saveEditFriendsAndFamily(fafAddEditForm,i)" class="ion-text-wrap">\n                                        Save\n                                    </ion-button>\n                                </ion-col>\n                                <ion-col size="4">\n                                    <ion-button class="ion-float-left" type="submit" \n                                        (click)="deleteFriendsAndFamily(fafAddEditForm,i)" (keypress)="deleteFriendsAndFamily(fafAddEditForm,i)" class="ion-text-wrap delete-button">\n                                        Delete\n                                    </ion-button>\n                                </ion-col>\n                            </ion-row>\n                        </ion-grid>\n                    </ion-item>\n                </ion-grid>\n            </ion-item>\n        </ion-grid>\n    </ion-item>\n    <ion-item lines="none" class="item-list" *ngIf="createFriendsAndFamilyContact">
1\n        <ion-grid class="friends-and-family-grid">\n            <ion-row>\n                <ion-col size="12">\n                    <ion-row>\n                        <ion-col size="11">\n                            <ion-text class="edge-value">\n                                Add New\n                            </ion-text>\n                        </ion-col>\n                        <ion-col size="1">\n                            <ion-icon class="ion-icon-chevron ion-float-right" name="chevron-down-outline">\n                            </ion-icon>\n                        </ion-col>\n                    </ion-row>\n                </ion-col>\n            </ion-row>\n          <app-faf-add-edit-form #fafAddEditForm [friendsAndFamilyModel]="friendsAndFamilyCreate"></app-faf-add-edit-form>\n            <ion-item lines="none">\n                <ion-grid>\n                    <ion-row>\n                        <ion-col size="6">\n                            <ion-button type="button" class="ion-float-right" fill="clear"\n                                (click)="cancelAddNewFriendsAndFamily()" (keypress)="cancelAddNewFriendsAndFamily()">Cancel\n                            </ion-button>\n                        </ion-col>\n                        <ion-col size="6">\n                            <ion-button class="ion-float-left" type="submit" (click)="saveAddNewFriendsAndFamily(fafAddEditForm)" (keypress)="saveAddNewFriendsAndFamily(fafAddEditForm)"\n                                class="ion-text-wrap min-max-width">Save\n                            </ion-button>\n                        </ion-col>\n                    </ion-row>\n                </ion-grid>\n            </ion-item>\n        </ion-grid>\n    </ion-item>\n    <div class="ion-padding-vertical">\n        <ion-row class="ion-align-items-center">\n            <ion-col size="12" class="ion-text-center">\n                <ion-button (click)="addNewFriendsAndFamily()" (keypress)="addNewFriendsAndFamily()">\n                    Add New\n                </ion-button>\n            </ion-col>\n        </ion-row>\n    </div>\n</ion-card>\n<app-yes-no-action-modal *ngIf="showDeleteConfirmationModal"\n[yesButtonText]="deleteModalYesButtonText"\n[noButtonText]="deleteModalNoButtonText"\n[content]="deleteModalContent"\n[title]="deleteModalTitle"\n(tappedCloseButton)="deleteModalCloseButtonClickHandler()"\n(noButton)="deleteModalCloseButtonClickHandler()"\n(yesButton)="deleteModalYesButtonClickHandler()">\n</app-yes-no-action-modal>',imports:[m.bv,s.Sq,s.YU,s.bT,k,w,Fe.J],styles:[Ce()]}),(0,a.Sn)("design:paramtypes",[m.K_,h.Ix,J.OD])],E);var ne,_e=i(10771),Oe=i(85210),we=i(62230),I=i(50678);let N=(class{constructor(e,n,o,l,g,c,b,A,S,U,ce){this.userStore=e,this.utility=n,this.changeDef=o,this.location=l,this.route=g,this.store=c,this.loadingUtility=b,this.profileInfoService=A,this.dispatchService=S,this.profileUitlity=U,this.analytics=ce,this.selectedTab="myInformation",this.userPictureUrl="",this.userAwards={},this.subscriptions$=new B.a,this.isProduction=X.c.production,this.route.queryParams.subscribe(P=>{this.selectedTab=P.tab})}ionViewWillEnter(){var e=this;return(0,p.A)(function*(){e.analytics.trackEvent("User","entered_profile_screen","Entered Profile Screen"),e.stakeHolderId=yield e.dispatchService.getStackholderId(),e.workdayId=yield e.dispatchService.getWorkdayId(),e.getProfilePicture(),e.getDivisonInfo(),e.profilePermissions=yield e.profileInfoService.getUserPermissions(),e.subscriptions$.sink=e.userStore.pipe((0,y.Lt)(Y.KF),(0,G.v)(()=>!0)).subscribe(function(){var n=(0,p.A)(function*(o){e.loadingUtility.hideLoader(),e.profileInfo=o,null===o&&e.userStore.dispatch(new H.rK(e.workdayId)),null!==e.profileInfo&&(e.changeDef.detectChanges(),e.fullName=e.utility.getV2UserFullName(e.profileInfo.user),e.getSafeAwards(),e.getSafeMiles(),e.getFeatureFlag())});return function(o){return n.apply(this,arguments)}}()),e.getProfileOptions()})()}getProfileOptions(){this.dispatchService.getProfileFieldsOptions().subscribe(e=>{this.ethnicitiesOptions=e.ethnicitiesOptions,this.maritalStatusOptions=e.maritalStatusOptions,this.militaryStatusOptions=e.militaryStatusOptions,this.pronounOptions=e.pronounOptions,this.publicProfileOptions=e.publicProfileOptions,this.disabilityOptions=e.disabilityOptions})}getDivisonInfo(){var e=this;return(0,p.A)(function*(){e.subscriptions$.sink=e.userStore.pipe((0,y.Lt)(Y.Ew),(0,G.v)(()=>!0)).subscribe(function(){var n=(0,p.A)(function*(o){e.divisonInfo=o,null===o&&e.userStore.dispatch(new H.K(e.stakeHolderId.toString()))});return function(o){return n.apply(this,arguments)}}())})()}getSafeAwards(){this.subscriptions$.sink=this.store.pipe((0,y.Lt)(fe.S$)).subscribe(e=>{e&&(this.userAwards=e)})}getFeatureFlag(){var e=this;return(0,p.A)(function*(){e.featureFlags=yield e.dispatchService.getFeatureFlags()})()}onProfileTabChange(e){this.analytics.trackEvent("User","clicked_"+e.detail.value.toLowerCase()+"_tab_on_profile_screen","Clicked "+e.detail.value+" Tab On Profile Screen"),this.selectedTab=e.detail.value,this.location.replaceState("/driver-profile?tab="+this.selectedTab)}getProfilePicture(){var e=this;return(0,p.A)(function*(){const n=yield e.dispatchService.getDriverId();e.userPictureUrl=yield e.profileUitlity.getProfilePictureFromApi(n)})()}getSafeMiles(){this.currentUserMiles=0,this.currentUserMilesText="SAFE MILES",this.profileInfo?.safeMiles&&(Number.parseInt(this.profileInfo.safeMiles)<1e6?this.currentUserMiles=Number.parseInt(this.profileInfo.safeMiles):(this.currentUserMiles=Math.floor(Number.parseInt(this.profileInfo.safeMiles)/1e6),this.currentUserMilesText="MILLION MILER"))}triggerProfileInfo(e){var n=this;return(0,p.A)(function*(){!0===e&&(n.workdayId||(n.workdayId=yield n.dispatchService.getWorkdayId()),n.loadingUtility.showLoader("Please wait until fetching a updated profile data."),n.userStore.dispatch(new H.rK(n.workdayId)))})()}getProfileImageStyles(){let e={};return this.userAwards?.safeMiles?.lastMileStone&&(this.userAwards.safeMiles.lastMileStone.innerCircleColor&&(this.innerColor=this.colorConversion(this.userAwards.safeMiles.lastMileStone.innerCircleColor),e.background=this.innerColor),this.userAwards.safeMiles.lastMileStone.outerCircleColor&&(this.outerColor=this.colorConversion(this.userAwards.safeMiles.lastMileStone.outerCircleColor),e.border="4px solid "+this.outerColor)),e.padding="2px",e}colorConversion(e){let n=e.substring(3),o=e.substring(1,3);return"#".concat(n).concat(o)}ngOnDestroy(){this.subscriptions$.unsubscribe()}static#e=ne=()=>(this.ctorParameters=()=>[{type:y.il},{type:F.o},{type:t.gRc},{type:$.aZ},{type:h.nX},{type:y.il},{type:_.N},{type:Z.T}
1,{type:C.c},{type:F.o},{type:I.c}],this)},ne());N=(0,a.Cg)([(0,t.uAl)({selector:"app-profile-v2",template:'<app-sub-header [title]="\'Profile\'" [url]="\'/\'"></app-sub-header>\n\n\x3c!-- Profile Photo Section --\x3e\n<ion-row class="ion-align-items-center profile-header">\n  <ion-col size-xs="3" size-sm="2" size-md="2" size-lg="2" size-xl="2">\n    <ion-avatar *ngIf="userPictureUrl">\n      <img alt="user avatar" [src]="userPictureUrl" [ngStyle]="getProfileImageStyles()"\n        style="padding: 2px; background: rgb(242, 169, 0);">\n    </ion-avatar>\n    <ion-list *ngIf="!userPictureUrl">\n      <ion-thumbnail slot="start">\n        <ion-skeleton-text [animated]="true"></ion-skeleton-text>\n      </ion-thumbnail>\n    </ion-list> \n  </ion-col>\n\n  <ion-col size-xs="9" size-sm="10" size-md="10" size-lg="10" size-xl="10">\n    <ion-text class="edge-value"> {{ fullName }} </ion-text>\n    \x3c!-- If safemiles exists for user , show their safe miles in profile --\x3e\n    <ion-label class="current_user_miles" *ngIf="profileInfo?.safeMiles && profileInfo?.safeMiles > 0">\n      <ion-label class="current_user_miles_number">{{ currentUserMiles }}</ion-label>\n      <ion-label class="current_user_miles_text">{{ currentUserMilesText }}</ion-label>\n    </ion-label>\n    \x3c!-- If safemiles not exists for user , just show the below text --\x3e\n    <ion-label class="current_user_miles" *ngIf="!profileInfo?.safeMiles || profileInfo?.safeMiles === 0">\n      <ion-label class="current_user_welcome_text">Welcome to Werner!</ion-label>\n    </ion-label>    \n  </ion-col>\n</ion-row>\n\n\x3c!-- Tab Section --\x3e\n<ion-row class="profile-tab">\n  <ion-col>\n    <ion-segment [value]="selectedTab" (ionChange)="onProfileTabChange($event)" mode="md">\n      <ion-segment-button value="myInformation">\n        <ion-label>My Information</ion-label>\n      </ion-segment-button>\n      <ion-segment-button value="accountContacts">\n        <ion-label>Account Contacts</ion-label>\n      </ion-segment-button>\n    </ion-segment>\n  </ion-col>\n</ion-row>\n\n<ion-content>\n  \x3c!-- My Information Cards --\x3e\n  <div *ngIf="selectedTab === \'myInformation\'">\n\n    \x3c!-- Job Info Card --\x3e\n    <ion-card>\n      <ion-card-header>\n          <ion-card-title class="edge-value">Job Info</ion-card-title>\n      </ion-card-header>\n      <ion-card-content>\n          <ion-item-group>\n              <ion-item lines=\'none\' class="ion-no-padding">\n                  <ion-col size="6">\n                      <ion-label class="edge-label"> Account </ion-label>\n                  </ion-col>\n                  <ion-col size="6">\n                      <ion-text class="edge-value" *ngIf="divisonInfo && divisonInfo?.divisionName">\n                        {{ divisonInfo?.divisionName }}\n                      </ion-text>\n                      <ion-skeleton-text *ngIf="!divisonInfo && !divisonInfo?.divisionName" [animated]="true" style="width: 80%;"></ion-skeleton-text>\n                  </ion-col>\n              </ion-item>\n          </ion-item-group>\n      </ion-card-content>\n    </ion-card>\n    \n    \x3c!-- Personal and Emergency Details Card --\x3e\n    <ion-card>\n      <ion-card-header>\n          <ion-card-title class="edge-value">Personal and Emergency Details</ion-card-title>\n      </ion-card-header>\n    <ion-card-content>\n        <ion-text class="workday-message">Profile updates have moved to Workday. Use the Workday link on the Home page to\n            view or edit your personal information.</ion-text>\n    </ion-card-content>\n    </ion-card>\n    \x3c!-- Friends and Family Card --\x3e\n    <app-friends-and-family *ngIf="!isProduction"></app-friends-and-family>\n \n    \x3c!-- Leader Overview Card--\x3e\n    <ion-card *ngIf="!isProduction">\n      <ion-card-header>\n          <ion-card-title class="edge-value">Leader Overview</ion-card-title>\n      </ion-card-header>\n      <ion-card-content>  \n      <ion-item lines=\'none\' class="ion-no-padding">\n          <ion-col size="6">\n              <ion-label class="edge-label">Certified leader</ion-label>    \n          </ion-col>\n          <ion-col size="6">\n              <ion-text class="edge-value">\n              Yes\n              </ion-text>\n          </ion-col>\n      </ion-item>\n      <ion-item lines=\'none\' class="ion-no-padding">\n          <ion-col size="6">\n              <ion-label class="edge-label">Leader Tenure</ion-label>    \n          </ion-col>\n          <ion-col size="6">\n              <ion-text class="edge-value">\n              1 Year\n              </ion-text>\n          </ion-col>\n      </ion-item>\n      <ion-item lines=\'none\' class="ion-no-padding">\n          <ion-col size="12">\n              <ion-label class="edge-value">Placement Driver Stats</ion-label>    \n          </ion-col>\n      </ion-item>\n      <ion-item lines=\'none\' class="ion-no-padding">\n          <ion-col size="6">\n              <ion-label class="edge-label">Total</ion-label>    \n          </ion-col>\n          <ion-col size="6">\n              <ion-text class="edge-value">\n              55\n              </ion-text>\n          </ion-col>\n      </ion-item>\n      <ion-item lines=\'none\' class="ion-no-padding">\n          <ion-col size="6">\n              <ion-label class="edge-label">Active at Werner</ion-label>    \n          </ion-col>\n          <ion-col size="6">\n              <ion-text class="edge-value">\n              3\n              </ion-text>\n          </ion-col>\n      </ion-item>\n      <ion-item lines=\'none\' class="ion-no-padding">\n          <ion-col size="6">\n              <ion-label class="edge-label">Average Tenure</ion-label>    \n          </ion-col>\n          <ion-col size="6">\n              <ion-text class="edge-value">\n              2 Years\n              </ion-text>\n          </ion-col>\n      </ion-item>\n      <ion-item lines=\'none\' class="ion-no-padding">\n          <ion-col size="6">\n              <ion-label class="edge-label">Safe Miles</ion-label>    \n          </ion-col>\n          <ion-col size="6">\n              <ion-text class="edge-value">\n              922,110 miles\n              </ion-text>\n          </ion-col>\n      </ion-item>\n      <ion-item lines=\'none\' class="ion-no-padding">\n          <ion-col size="6">\n              <ion-label class="edge-label">Million miler</ion-label>    \n          </ion-col>\n          <ion-col size="6">\n              <ion-text class="edge-value">\n              1\n              </ion-text>\n          </ion-col>\n      </ion-item>\n      </ion-card-content>\n    </ion-card>\n    \x3c!-- Driving Options Card--\x3e\n    <app-driving-options></app-driving-options>\n    \x3c!-- Challenge Questions Card --\x3e\n    <app-set-challenge-question> </app-set-challenge-question>\n  </div>\n\n  \x3c!-- Account Contact Cards --\x3e\n  <div *ngIf="selectedTab === \'accountContacts\'">\n    <app-account-contacts></app-account-contacts>\n  </div>\n</ion-content>',imports:[ge.R,m.bv,s.bT,s.B3,E,_e.R,Oe.$,we.Q],styles:[he()]}),(0,a.Sn)("design:paramtypes",[y.il,F.o,t.gRc,$.aZ,h.nX,y.il,_.N,Z.T,C.c,F.o,I.c])],N);var Ee=i(8746),Ne=i.n(Ee),v=i(83196),te=i(76260);var oe,Me=i(66510),Le=i.n(Me),x=i(62938);let T=(class{constructor(e){this.phoneUtility=e,this.triggerProfileInfo=new t.bkB,this.isLoaded=!1,this.isEdit=!1}ngOnChanges(e){this.handleOwnerOperatorChange(e),this.handleProfileChange(e)}handleOwnerOperatorChange(e){const n=e.isOwnerOperator;n&&null!==n?.currentValue&&(this.isOwnerOperator=n.currentValue)}handleProfileChange(e){if(!e.profile)return;const n=e.profile;this.profile=n.currentValue,this.profile&&(this.processPhoneNumbers(),this.processUserInfo(),this.isLoaded=!0)}processPhoneNumbers(){const e=this.phoneUtility.getValidMobileNumber(this.primaryPhoneNumberArrayInput);this.primaryPhoneNumber=this.primaryPhoneNumberArrayInput?this.primaryPhoneNumberArrayInput.countryCode+this.primaryPhoneNumberArrayInput.areaCode+e:"";const n=this.phoneUtility.getValidMobileNumber(this.secondaryPhoneNumberArrayInput);this.secondaryPhoneNumber=this.secondaryPhoneNumberArrayInput?this.secondaryPhoneNumberArrayInput.countryCode+this.secondaryPhoneNumberArrayInput.areaCode+n:""}processUserInfo(){this.userInfo=this.profile.user||{},this.setHispanicOrLatinoStatus(),this.setUserInfoFields()}setHispanicOrLatinoStatus(){!0===this.userInfo?.hispanicOrLatino?this.hispanicOrLatino="Yes":!1===this.userInfo?.hispanicOrLatino?this.hispanicOrLatino="No":this.hispanicOrLatino="Unknown"}setUserInfoFields(){this.maritalStatusInput=this.userInfo?.maritalStatus?this.userInfo.maritalStatus.replaceAll("USA_",""):"Unknown",this.genderInput=this.userInfo?.gender?this.userInfo?.gender.replaceAll("_"," "):"Unknown",this.disabilityStatusInput=this.userInfo?.disabilityStatus?this.userInfo?.disabilityStatus.replaceAll("_"," "):"Unknown",this.pronounInput=this.userInfo?.pronoun?this.userInfo?.pronoun:"Unknown",this.militaryStatusInput=this.userInfo?.militaryStatus?this.userInfo?.militaryStatus:"Unknown"}getAddressText(e){let n="";return e.addressLine1&&(n+=e.addressLine1+" <br>"),e.addressLine2&&(n+=e.addressLine2),e.city&&(e.addressLine2?n+=", "+e.city:n+=e.city),e.stateCode&&(n+=", "+e.stateCode),e.postalCode&&(n+=", "+e.postalCode),n}toggleEdit(){this.isEdit=!this.isEdit}static#e=oe=()=>(this.ctorParameters=()=>[{type:x.k}],this.propDecorators={triggerProfileInfo:[{type:t.k7i}],profile:[{type:t.pde}],isOwnerOperator:[{type:t.pde}],maritalStatusInput:[{type:t.pde}],militaryStatusInput:[{type:t.pde}
1],payRollAddressInput:[{type:t.pde}],homeAddressInput:[{type:t.pde}],homeEmailInput:[{type:t.pde}],primaryPhoneNumberArrayInput:[{type:t.pde}],secondaryPhoneNumberArrayInput:[{type:t.pde}],ethnicitiesInput:[{type:t.pde}],ethnicitiesOptions:[{type:t.pde}],militaryStatusOptions:[{type:t.pde}],genderInput:[{type:t.pde}],disabilityStatusInput:[{type:t.pde}],pronounInput:[{type:t.pde}]},this)},oe());T=(0,a.Cg)([(0,t.uAl)({selector:"app-profile-info-listing-card",template:'<ion-card-content>\n  <ion-item-group>\n    <ion-item lines=\'none\' class="ion-no-padding">\n      <ion-col size="6">\n        <ion-label class="edge-label">Preferred Name</ion-label>\n      </ion-col>\n      <ion-col size="6">\n        <ion-text class="edge-value" *ngIf="isLoaded">\n          {{ userInfo?.nickname }}\n        </ion-text>\n        <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n      </ion-col>\n    </ion-item>\n    <ion-item lines=\'none\' class="ion-no-padding">\n      <ion-col size="6">\n        <ion-label class="edge-label">Date of Birth</ion-label>\n      </ion-col>\n      <ion-col size="6">\n        <ion-text class="edge-value" *ngIf="isLoaded">\n          {{ userInfo?.dateOfBirth | date: \'MM/dd/yyyy\' }}\n        </ion-text>\n        <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n      </ion-col>\n    </ion-item>\n\n    <ion-item lines=\'none\' class="ion-no-padding" *ngIf="isOwnerOperator === false">\n      <ion-col size="6">\n        <ion-label class="edge-label">Marital Status</ion-label>\n      </ion-col>\n      <ion-col size="6">\n        <ion-text class="edge-value" *ngIf="isLoaded">\n          {{ maritalStatusInput }}\n        </ion-text>\n        <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n      </ion-col>\n    </ion-item>\n\n\n    <ion-item lines=\'none\' class="ion-no-padding" *ngIf="isOwnerOperator === false">\n      <ion-col size="6">\n        <ion-label class="edge-label">Gender</ion-label>\n      </ion-col>\n      <ion-col size="6">\n        <ion-text class="edge-value" *ngIf="isLoaded">\n          {{ genderInput }}\n        </ion-text>\n        <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n      </ion-col>\n    </ion-item>        \n\n    <ion-item lines=\'none\' class="ion-no-padding" *ngIf="isOwnerOperator === false" >\n      <ion-col size="6">\n        <ion-label class="edge-label">Disability Status</ion-label>\n      </ion-col>\n      <ion-col size="6">\n        <ion-text class="edge-value" *ngIf="isLoaded">\n          {{ disabilityStatusInput }}\n        </ion-text>\n        <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n      </ion-col>\n    </ion-item>\n    <ion-item lines=\'none\' class="ion-no-padding" *ngIf="isOwnerOperator === false">\n      <ion-col size="6">\n        <ion-label class="edge-label">Pronouns</ion-label>\n      </ion-col>\n      <ion-col size="6">\n        <ion-text class="edge-value" *ngIf="isLoaded">\n          {{ pronounInput }}\n        </ion-text>\n        <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n      </ion-col>\n    </ion-item>\n    <ion-item lines=\'none\' class="ion-no-padding" *ngIf="isOwnerOperator === false">\n      <ion-col size="6">\n          <ion-label class="edge-label">Hispanic or Latino</ion-label>\n      </ion-col>\n      <ion-col size="6">\n          <ion-text class="edge-value">\n              {{ hispanicOrLatino }}\n          </ion-text>\n          <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n      </ion-col>\n    </ion-item>\n    <ion-item lines=\'none\' class="ion-no-padding" *ngIf="isOwnerOperator === false">\n        <ion-col size="6">\n            <ion-label class="edge-label">Ethnicity</ion-label>\n        </ion-col>\n        <ion-col size="6">\n            <ion-text class="edge-value" *ngFor="let ethnicity of ethnicitiesInput">   \n                {{ethnicity.value}} <br>\n            </ion-text>\n            <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n        </ion-col>\n    </ion-item>\n    <ion-item lines=\'none\' class="ion-no-padding" *ngIf="isOwnerOperator === false">\n      <ion-col size="6">\n          <ion-label class="edge-label">Military Status</ion-label>\n      </ion-col>\n      <ion-col size="6">\n          <ion-text class="edge-value" >   \n             {{ militaryStatusInput }}\n          </ion-text>\n          <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n      </ion-col>\n  </ion-item>\n    <ion-item lines="none" class="ion-no-padding">\n      <ion-col size="6">\n        <ion-label class="edge-label">Payroll Address</ion-label>\n      </ion-col>\n      <ion-col size="6">\n        <ion-text class="edge-value" *ngIf="payRollAddressInput" [innerHtml]="getAddressText(payRollAddressInput)">\n          \n        </ion-text>\n        <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n      </ion-col>\n    </ion-item>\n    <ion-item lines="none" class="ion-no-padding">\n      <ion-col size="6">\n        <ion-label class="edge-label">Home Address</ion-label>\n      </ion-col>\n      <ion-col size="6">\n        <ion-text class="edge-value" *ngIf="homeAddressInput" [innerHtml]="getAddressText(homeAddressInput)">\n      \n        </ion-text>\n        <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n      </ion-col>\n    </ion-item>\n    <ion-item lines="none" class="ion-no-padding">\n      <ion-col size="6">\n        <ion-label class="edge-label">Primary Phone</ion-label>\n      </ion-col>\n      <ion-col size="6">\n        <ion-text class="edge-value" *ngIf="isLoaded">{{ primaryPhoneNumber | phoneFormat }}</ion-text>\n        <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n      </ion-col>\n    </ion-item>\n    <ion-item lines="none" class="ion-no-padding">\n      <ion-col size="6">\n        <ion-label class="edge-label">Secondary Phone</ion-label>\n      </ion-col>\n      <ion-col size="6">\n        <ion-text class="edge-value" *ngIf="isLoaded">{{ secondaryPhoneNumber | phoneFormat }}</ion-text>\n        <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n      </ion-col>\n    </ion-item>    \n    <ion-item lines="none" class="ion-no-padding">\n      <ion-col size="6">\n        <ion-label class="edge-label">Email Address</ion-label>\n      </ion-col>\n      <ion-col size="6">\n        <ion-text class="edge-value" *ngIf="homeEmailInput && homeEmailInput?.address">\n          {{homeEmailInput?.address}}\n        </ion-text>\n        <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n      </ion-col>\n    </ion-item>\n  </ion-item-group>\n</ion-card-content>',providers:[te.I],imports:[m.bv,s.bT,s.Sq,s.vh,O.U],styles:[Le()]}),(0,a.Sn)("design:paramtypes",[x.k])],T);
1var De=i(75e3),ze=i.n(De),M=i(61e3),L=i(28894),ie=i(74331);var re,He=i(20660),Be=i.n(He);let R=(class{constructor(){this.modalClosed=new t.bkB,this.closeSafetyInspectionPointsModal=new t.bkB}closeModal(){this.modalClosed.emit()}closeBackground(){this.closeSafetyInspectionPointsModal.emit()}static#e=re=()=>(this.propDecorators={modalClosed:[{type:t.k7i}],closeSafetyInspectionPointsModal:[{type:t.k7i}]},this)},re());R=(0,a.Cg)([(0,t.uAl)({selector:"app-gender-alert-modal",template:'<div class="background" (click)="closeBackground()" (keypress)="closeBackground()">\n  <div class="modal">\n    <ion-item class="title-row" lines="full">\n      <ion-label class="edge-label header">Gender Alert Info</ion-label>\n      <button (click)="closeModal()">\n        <img src="assets/cross.svg" alt="">\n      </button>\n    </ion-item>\n    \n    <div class="edge-value modal-content">\n      <ion-row>\n        <ion-label class="section ion-text-wrap">\n          Contact employee relations to update gender status. \n        </ion-label>\n      </ion-row>\n    </div>\n  </div>\n</div>',imports:[m.bv],styles:[Be()]})],R);var se,qe=i(26774),je=i.n(qe);let D=(class{constructor(){this.modalClosed=new t.bkB,this.backgroundClosed=new t.bkB}closeModal(){this.modalClosed.emit()}closeBackground(){this.backgroundClosed.emit()}static#e=se=()=>(this.propDecorators={modalClosed:[{type:t.k7i}],backgroundClosed:[{type:t.k7i}]},this)},se());var ae;D=(0,a.Cg)([(0,t.uAl)({selector:"app-disability-alert-modal",template:'<div class="background" (click)="closeBackground()" (keypress)="closeBackground()">\n  <div class="modal">\n    <ion-item class="title-row" lines="full">\n      <ion-label class="edge-label header">Disability Alert Info</ion-label>\n      <button (click)="closeModal()">\n        <img src="assets/cross.svg" alt="">\n      </button>\n    </ion-item>\n    \n    <div class="edge-value modal-content">\n      <ion-row>\n        <ion-label class="section ion-text-wrap">\n          Please contact Employee Relations for any accommodations needed at <a href="mailto:[email protected]">employeerelations&#64;werner.com</a> \n        </ion-label>\n      </ion-row>\n    </div>\n  </div>\n</div>',imports:[m.bv],styles:[je()]})],D);let z=(class{constructor(e,n,o,l,g,c,b,A,S){this.myInformationService=e,this.driverPhonesService=n,this.formBuilder=o,this.requestService=l,this.toaster=g,this.injector=c,this.phoneUtility=b,this.dispatchService=A,this.analytics=S,this.getProfileInfo=new t.bkB,this.showProfileInfo=new t.bkB,this.phoneTypes=[{id:"Landline",description:"Home Number"},{id:"Mobile",description:"Personal Mobile"}],this.statesTypes=[],this.isLoaded=!1,this.isEdit=!1,this.subscriptions$=new B.a,this.isSubmitted=!1,this.hidePayrollAddress=!1,this.selectedEthnicities=[],this.hispanicOrLatino=!1,this.ethnicityPostParams=[],this.showGenderModal=!1,this.showDisabilityModal=!1,this.showPronounPreferenceInput=!1,this.disabilitySelectedText="Choose Option",this.PHONE_VALIDATORS={type:["",[r.k0.required]],countryCode:["",[r.k0.required]],areaCode:["",[r.k0.required,r.k0.minLength(3),r.k0.maxLength(3)]],number:["",[r.k0.required,r.k0.minLength(7),r.k0.maxLength(7)]]},this.loadingUtility=this.injector.get(_.N)}ngOnChanges(e){const n=e.isOwnerOperator;n&&null!==n.currentValue&&(this.isOwnerOperator=n.currentValue);const o=e.profile;o?.currentValue&&(this.profile=o.currentValue,this.isLoaded=!0,this.setProfileValidation(),this.statesTypes=this.myInformationService.getStateNames(),this.internationalCodes=this.myInformationService.getInternationalCodes(),this.hispanicOrLatino=!!this.profile?.user?.hispanicOrLatino&&this.profile?.user?.hispanicOrLatino,this.gender=this.profile?.user?.gender?this.profile?.user?.gender.split("_").join(" "):"Unknown",this.getSelectedEthnicites()),this.setProfileValues()}getSelectedEthnicites(){if(this.ethnicitiesInput&&this.ethnicitiesInput.length>0)for(const e of this.ethnicitiesInput)this.selectedEthnicities.push(this.getValueByKey(e,"id"))}getValueByKey(e,n){return e?.[n]??""}setProfileValues(){this.disabilitySelectedText=this.disabilityStatusInput?this.disabilityStatusInput.split("_").join(" "):"";const e=this.pronounOptions.find(n=>n.value===this.pronounInput)?.id;this.personalInfoForm.patchValue({maritalStatus:this.maritalStatusInput,hispanicOrLatino:this.hispanicOrLatino,ethnicities:this.selectedEthnicities,militaryStatus:this.militaryStatusInput,disabilityStatus:this.disabilityStatusInput,pronoun:e||this.pronounInput,homeStreetAddress1:this.getValueByKey(this.homeAddressInput,"addressLine1"),homeStreetAddress2:this.getValueByKey(this.homeAddressInput,"addressLine2"),homeCity:this.getValueByKey(this.homeAddressInput,"city"),homeState:this.getValueByKey(this.homeAddressInput,"stateCode"),homePostalCode:this.getValueByKey(this.homeAddressInput,"postalCode"),workStreetAddress1:this.getValueByKey(this.payRollAddressInput,"addressLine1"),workStreetAddress2:this.getValueByKey(this.payRollAddressInput,"addressLine2"),workCity:this.getValueByKey(this.payRollAddressInput,"city"),workState:this.getValueByKey(this.payRollAddressInput,"stateCode"),workPostalCode:this.getValueByKey(this.payRollAddressInput,"postalCode"),primaryPhoneType:this.getValueByKey(this.primaryPhoneNumberArrayInput,"deviceType"),primaryCountryCode:this.getValueByKey(this.primaryPhoneNumberArrayInput,"countryCode"),primaryAreaCode:this.getValueByKey(this.primaryPhoneNumberArrayInput,"areaCode"),primaryNumber:this.phoneUtility.getValidMobileNumber(this.primaryPhoneNumberArrayInput),secondaryPhoneType:this.getValueByKey(this.secondaryPhoneNumberArrayInput,"deviceType"),secondaryCountryCode:this.getValueByKey(this.secondaryPhoneNumberArrayInput,"countryCode"),secondaryAreaCode:this.getValueByKey(this.secondaryPhoneNumberArrayInput,"areaCode"),secondaryNumber:this.phoneUtility.getValidMobileNumber(this.secondaryPhoneNumberArrayInput),email:this.getValueByKey(this.homeEmailInput,"address")})}setProfileValidation(){this.personalInfoForm=this.formBuilder.group({maritalStatus:["",[r.k0.required]],hispanicOrLatino:[""],ethnicities:[""],militaryStatus:["",[r.k0.required]],disabilityStatus:[""],pronoun:[""],pronounProfilePreference:[""],homeStreetAddress1:["",[r.k0.required]],homeStreetAddress2:[""],homeCity:["",[r.k0.required]],homeState:["",[r.k0.required]],homePostalCode:["",[r.k0.required,r.k0.minLength(5),r.k0.maxLength(5)]],workStreetAddress1:["",[r.k0.required]],workStreetAddress2:[""],workCity:["",[r.k0.required]],workState:["",[r.k0.required]],workPostalCode:["",[r.k0.required,r.k0.minLength(5),r.k0.maxLength(5)]],phoneArray:this.formBuilder.array([]),primaryPhoneType:this.PHONE_VALIDATORS.type,primaryCountryCode:this.PHONE_VALIDATORS.countryCode,primaryAreaCode:this.PHONE_VALIDATORS.areaCode,primaryNumber:this.PHONE_VALIDATORS.number,secondaryPhoneType:this.PHONE_VALIDATORS.type,secondaryCountryCode:this.PHONE_VALIDATORS.countryCode,secondaryAreaCode:this.PHONE_VALIDATORS.areaCode,secondaryNumber:this.PHONE_VALIDATORS.number,email:["",[r.k0.required,r.k0.email]]})}getPhoneTypes(){var e=this;return(0,p.A)(function*(){e.subscriptions$.sink=e.driverPhonesService.apiDriverphonesTypesGet().subscribe(n=>{e.phoneTypes=n})})()}setPayrollAddress(){this.hidePayrollAddress=!this.hidePayrollAddress,!0===this.hidePayrollAddress?this.personalInfoForm.patchValue({workStreetAddress1:this.personalInfoForm.controls.homeStreetAddress1.value,workStreetAddress2:this.personalInfoForm.controls.homeStreetAddress2.value,workCity:this.personalInfoForm.controls.homeCity.value,workState:this.personalInfoForm.controls.homeState.value,workPostalCode:this.personalInfoForm.controls.homePostalCode.value}):this.personalInfoForm.patchValue({workStreetAddress1:"",workStreetAddress2:"",workCity:"",workState:"",workPostalCode:""})}get errorControl(){return this.personalInfoForm.controls}submitPersonalInfo(){var e=this;return(0,p.A)(function*(){if(e.isSubmitted=!0,!e.personalInfoForm.valid)return e.toaster.showToaster("Error...!","Please provide all the required values!","danger"),
1!1;{e.analytics.trackEvent("User","clicked_personal_info_save_button","Clicked Save Button On Personal Info Edit Page"),e.loadingUtility.showLoader("Saving...Please wait"),e.profileUpdate=structuredClone(e.profile);const n=e.profileUpdate.addresses.findIndex(function(c){return"HOME"!==c.type});n>=0&&e.profileUpdate.addresses.splice(n,1);const o=e.profileUpdate.addresses.findIndex(function(c){return""===c.behavior});o>=0&&(e.profileUpdate.addresses[o].behavior="HOME");const l=e.profileUpdate.emails.findIndex(function(c){return"HOME"!==c.type});if(e.profileUpdate.emails.splice(l,1),e.setAddress("HOME"),e.setAddress("PAYCHECK"),e.setPhone(!0),e.setPhone(!1),e.personalInfoForm.controls.email.value&&e.setEmail(),e.profileUpdate.user.maritalStatus=e.personalInfoForm.controls.maritalStatus.value,e.profileUpdate.user.militaryStatus=e.personalInfoForm.controls.militaryStatus.value,e.profileUpdate.user.hispanicOrLatino=e.personalInfoForm.controls.hispanicOrLatino.value,e.profileUpdate.user.disabilityStatus=e.personalInfoForm.controls.disabilityStatus.value,e.profileUpdate.user.pronoun=e.personalInfoForm.controls.pronoun.value,e.profileUpdate.user.pronounProfilePreference=e.personalInfoForm.controls.pronounProfilePreference.value,e.personalInfoForm.controls.ethnicities.value&&e.personalInfoForm.controls.ethnicities.value.length>0)for(let c of e.personalInfoForm.controls.ethnicities.value)e.setEthnicityParamValues(c);e.profileUpdate.user.ethnicities=e.ethnicityPostParams;const g={user:e.profileUpdate.user,addresses:e.profileUpdate.addresses,emails:e.profileUpdate.emails,phoneNumbers:e.profileUpdate.phoneNumbers,isHomeAddressStateChanged:e.profileUpdate.isHomeAddressStateChanged};yield e.saveProfile(!0,g)}})()}setEthnicityParamValues(e){const n={id:e,type:"Ethnicity_ID"};this.ethnicityPostParams.push(n)}saveProfile(e,n){var o=this;return(0,p.A)(function*(){return new Promise((l,g)=>{o.subscriptions$.sink=o.requestService.profilePatch(n).subscribe({next:c=>{if(e){o.loadingUtility.hideLoader();const b=c.effective_Date?"Your profile updated successfully.The changes you made to the Profile will be effective on "+c.effective_Date:"Your profile updated successfully.";o.toaster.showToaster("Success...!",b,"success"),o.getProfile()}l(c)},error:c=>{o.loadingUtility.hideLoader(),c?.error?.message?o.toaster.showToaster("Error...!",c.error.message,"danger"):o.toaster.showToaster("Error...!","An error occurred while updating profile info. Please try again later","danger"),g(c)}})})})()}getAddressIndex(e){return"HOME"===e?this.profileUpdate.addresses.findIndex(function(n){return n.behavior===e||""===n.behavior}):"PAYCHECK"===e?this.profileUpdate.addresses.findIndex(function(n){return n.behavior===e}):void 0}setAddress(e){const n="HOME"===e?"home":"work",o=this.getAddressIndex(e);if("home"===n&&(this.profileUpdate.isHomeAddressStateChanged=!(this.profileUpdate.addresses[o]&&this.profileUpdate.addresses[o].stateCode===this.personalInfoForm.controls.homeState.value&&o>=0)),o>=0)this.profileUpdate.addresses[o].addressLine1=this.personalInfoForm.controls[n+"StreetAddress1"].value,this.profileUpdate.addresses[o].addressLine2=this.personalInfoForm.controls[n+"StreetAddress2"].value,this.profileUpdate.addresses[o].city=this.personalInfoForm.controls[n+"City"].value,this.profileUpdate.addresses[o].stateCode=this.personalInfoForm.controls[n+"State"].value,this.profileUpdate.addresses[o].postalCode=this.personalInfoForm.controls[n+"PostalCode"].value;else{this.profileUpdate.addresses??=[];const l={addressLine1:this.personalInfoForm.controls[n+"StreetAddress1"].value,addressLine2:this.personalInfoForm.controls[n+"StreetAddress2"].value,city:this.personalInfoForm.controls[n+"City"].value,stateCode:this.personalInfoForm.controls[n+"State"].value,postalCode:this.personalInfoForm.controls[n+"PostalCode"].value,behavior:"home"===n?"HOME":"PAYCHECK",isPrimary:!1,isPublic:!1,type:"HOME",extension:null};this.profileUpdate.addresses.push(l)}}setPhone(e){this.profileUpdate.phoneNumbers??=[];const n=this.profileUpdate.phoneNumbers.findIndex(function(l){return l.isPrimary===e}),o=!0===e?"primary":"secondary";if(n>=0)this.profileUpdate.phoneNumbers[n].deviceType=this.personalInfoForm.controls[o+"PhoneType"].value,this.profileUpdate.phoneNumbers[n].countryCode=this.personalInfoForm.controls[o+"CountryCode"].value,this.profileUpdate.phoneNumbers[n].areaCode=this.personalInfoForm.controls[o+"AreaCode"].value,this.profileUpdate.phoneNumbers[n].number=this.personalInfoForm.controls[o+"Number"].value,this.profileUpdate.phoneNumbers[n].countryIsoCode="1"===this.profileUpdate.phoneNumbers[n].countryCode?"USA":"MEX";else{const l={deviceType:this.personalInfoForm.controls[o+"PhoneType"].value,countryCode:this.personalInfoForm.controls[o+"CountryCode"].value,areaCode:this.personalInfoForm.controls[o+"AreaCode"].value,
1number:this.personalInfoForm.controls[o+"Number"].value,countryIsoCode:"1"===this.personalInfoForm.controls[o+"CountryCode"].value?"USA":"MEX",isPrimary:e,isPublic:!1,type:"HOME",extension:null};this.profileUpdate.phoneNumbers.push(l)}}setEmail(){let e=this.profileUpdate.emails.findIndex(function(n){return"HOME"===n.type});if(-1===e){const n={isPrimary:!0,isPublic:!1,type:"HOME",address:this.personalInfoForm.controls.email.value};this.profileUpdate.emails??=[],this.profileUpdate.emails.push(n)}else this.profileUpdate.emails[e].address=this.personalInfoForm.controls.email.value}showDisabilityPopup(e){const n=e.detail.value;this.showDisabilityModal="Yes"===n,this.personalInfoForm.get("disabilityStatus").setValue(n),this.disabilitySelectedText=n.split("_").join(" ")}hideShowPronounPreferences(e){e.detail.value===this.pronounInput?(this.showPronounPreferenceInput=!1,this.personalInfoForm.get("pronounProfilePreference").setErrors(null),this.personalInfoForm.get("pronounProfilePreference").clearValidators(),this.personalInfoForm.get("pronounProfilePreference").updateValueAndValidity()):(this.showPronounPreferenceInput=!0,this.personalInfoForm.get("pronounProfilePreference").addValidators(r.k0.required),this.personalInfoForm.get("pronounProfilePreference").updateValueAndValidity())}toggleEdit(){this.isEdit=!this.isEdit}togglePopup(){this.showGenderModal=!this.showGenderModal}getProfile(){this.getProfileInfo.emit(!0),this.toggleEdit()}handleSelectOpen(e){e.target.removeAttribute("tabindex"),this.handleElementFocusState(e,"add")}handleSelectClose(e){e.target.setAttribute("tabindex","-1"),this.handleElementFocusState(e,"remove")}handleInputFocus(e){this.handleElementFocusState(e,"add")}handleInputBlur(e){this.handleElementFocusState(e,"remove")}handleElementFocusState(e,n){const o=e.target,l=o.closest("ion-item");l&&("add"===n?(l.classList.add("select-focused"),"ion-input"===o.tagName.toLowerCase()&&l.classList.add("label-focused")):setTimeout(()=>{l.classList.remove("select-focused","label-focused")},"remove"===n?150:0))}ngOnDestroy(){this.subscriptions$.unsubscribe()}static#e=ae=()=>(this.ctorParameters=()=>[{type:M.e},{type:ie.D},{type:r.ze},{type:L.By},{type:v.T},{type:t.zZn},{type:x.k},{type:C.c},{type:I.c}],this.propDecorators={getProfileInfo:[{type:t.k7i}],showProfileInfo:[{type:t.k7i}],profile:[{type:t.pde}],isOwnerOperator:[{type:t.pde}],militaryStatusInput:[{type:t.pde}
1],payRollAddressInput:[{type:t.pde}],homeAddressInput:[{type:t.pde}],maritalStatusInput:[{type:t.pde}],homeEmailInput:[{type:t.pde}],primaryPhoneNumberArrayInput:[{type:t.pde}],secondaryPhoneNumberArrayInput:[{type:t.pde}],ethnicitiesInput:[{type:t.pde}],ethnicitiesOptions:[{type:t.pde}],maritalStatusOptions:[{type:t.pde}],militaryStatusOptions:[{type:t.pde}],pronounOptions:[{type:t.pde}],disabilityOptions:[{type:t.pde}],publicProfileOptions:[{type:t.pde}],disabilityStatusInput:[{type:t.pde}],pronounInput:[{type:t.pde}]},this)},ae());var le;z=(0,a.Cg)([(0,t.uAl)({selector:"app-profile-info-edit-card",template:'<app-gender-alert-modal *ngIf="showGenderModal" (modalClosed)="showGenderModal = false"></app-gender-alert-modal>\n  <app-disability-alert-modal *ngIf="showDisabilityModal" (modalClosed)="showDisabilityModal = false" (backgroundClosed)="showDisabilityModal = false"></app-disability-alert-modal>\n  \x3c!-- Show Edit Profile Info Card --\x3e\n  <ion-card-content>\n    <form [formGroup]="personalInfoForm" (ngSubmit)="submitPersonalInfo()" novalidate >\n\n\n      \x3c!-- Marital Status --\x3e\n      <ion-item *ngIf="!isOwnerOperator">\n        <ion-label position="stacked">Marital Status\n          <ion-text color="danger">*</ion-text>\n        </ion-label>\n        <ion-select class="ion-select" placeholder="Choose Status" formControlName="maritalStatus"  [value]="maritalStatusInput">\n          <ion-select-option *ngFor="let maritalStatus of maritalStatusOptions" [value]="maritalStatus.id">{{maritalStatus.value}}\n          </ion-select-option>\n        </ion-select>\n        <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.maritalStatus?.touched) && errorControl.maritalStatus.errors?.required">\n          Marital Status Required.\n        </ion-text>        \n      </ion-item>\n\n      \x3c!-- Gender --\x3e\n      <ion-item detail="false"  [button]="true" *ngIf="!isOwnerOperator"  (click)="togglePopup()" (keydown)="togglePopup()">\n        <ion-label position="stacked">Gender\n        </ion-label>\n        <ion-select disabled="true" class="ion-select" [placeholder]="gender" >\n        </ion-select>    \n      </ion-item> \n\n      \x3c!-- Disability Status --\x3e\n      <ion-item *ngIf="!isOwnerOperator">\n        <ion-label position="stacked">Disability Status</ion-label>\n        <ion-select formControlName="disabilityStatus"   [value]="disabilityStatusInput" (ionChange)="showDisabilityPopup($event)" [selectedText]="disabilitySelectedText"  placeholder="Choose Status" [interfaceOptions]="{cssClass: \'profile-ethnicity-options\'}">\n        <ion-select-option *ngFor="let status of disabilityOptions" [value]="status?.id">{{ status.value }}</ion-select-option>\n        </ion-select>\n      </ion-item>\n\n      \x3c!-- Pronoun --\x3e\n      <ion-item *ngIf="!isOwnerOperator">\n        <ion-label position="stacked">Pronouns</ion-label>\n        <ion-select formControlName="pronoun"  placeholder="Choose Pronoun" [interfaceOptions]="{cssClass: \'profile-ethnicity-options\'}" (ionChange)="hideShowPronounPreferences($event)">\n          <ion-select-option *ngFor="let status of pronounOptions" [value]="status?.id">{{ status.value }}</ion-select-option>\n        </ion-select>  \n      </ion-item>\n      \x3c!-- Pronoun Preference Field --\x3e\n      <ion-item *ngIf="!isOwnerOperator && showPronounPreferenceInput">\n        <ion-label position="stacked">Pronouns Preference\n          <ion-text color="danger">*</ion-text>\n        </ion-label>\n        <ion-select formControlName="pronounProfilePreference"  placeholder="Choose Pronoun Setting" [interfaceOptions]="{cssClass: \'profile-ethnicity-options\'}">\n          <ion-select-option *ngFor="let option of publicProfileOptions" [value]="option?.id">{{ option.value }}</ion-select-option>\n        </ion-select>   \n        <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.pronounProfilePreference?.touched) && errorControl.pronounProfilePreference?.errors?.required">\n          Pronouns Preference field Required.\n        </ion-text>      \n      </ion-item>\n\n     \x3c!-- Hispanic or Latino --\x3e\n      <ion-item *ngIf="!isOwnerOperator">\n        <ion-label position="stacked">Hispanic or Latino </ion-label>\n        <ion-checkbox formControlName="hispanicOrLatino"></ion-checkbox>   \n      </ion-item>\n\n      \x3c!-- Ethnicity --\x3e\n      <ion-item *ngIf="!isOwnerOperator">\n        <ion-label position="stacked">Ethnicity </ion-label>\n        <ion-select placeholder="Choose Ethnicity" [value]="selectedEthnicities" [interfaceOptions]="{cssClass: \'profile-ethnicity-options\'}"  multiple="true" formControlName="ethnicities">\n          <ion-select-option *ngFor="let ethnicity of ethnicitiesOptions" [value]="ethnicity.id">{{ethnicity.value}}\n          </ion-select-option>\n        </ion-select>       \n      </ion-item>\n      \n\n      \x3c!-- Military Status --\x3e\n      <ion-item  *ngIf="!isOwnerOperator">       \n        <ion-label position="stacked">Military Status\n          <ion-text color="danger">*</ion-text>\n        </ion-label>\n        <ion-select class="ion-select" placeholder="Choose Military Status" formControlName="militaryStatus"  [value]="militaryStatusInput" [interfaceOptions]="{cssClass: \'profile-militaryStatus-options\'}">\n          <ion-select-option *ngFor="let militaryStatus of militaryStatusOptions"\n            [value]="militaryStatus.id">{{militaryStatus.value}}</ion-select-option>\n        </ion-select>\n        <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.militaryStatus?.touched) && errorControl.militaryStatus.errors?.required">\n          Military Status Required.\n        </ion-text>        \n      </ion-item>  \n\n      \x3c!-- Home Address --\x3e\n      <ion-item>\n        <ion-label>Home Address</ion-label>\n      </ion-item>\n      <ion-item-group>\n        <ion-item>\n          <ion-label position="stacked">Street Address 1\n            <ion-text color="danger">*</ion-text>\n          </ion-label>\n          <ion-input required placeholder="Street Address 1" type="text" formControlName="homeStreetAddress1"></ion-input>\n          <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.homeStreetAddress1?.touched) && errorControl.homeStreetAddress1.errors?.required">\n            Home Address1 Required.\n          </ion-text>            \n        </ion-item>\n        <ion-item>\n          <ion-label position="stacked">Street Address 2\n          </ion-label>\n          <ion-input placeholder="Street Address 2" type="text" formControlName="homeStreetAddress2"></ion-input>\n        </ion-item>\n        <ion-item>\n          <ion-label position="stacked">City\n            <ion-text color="danger">*</ion-text>\n          </ion-label>\n          <ion-input required placeholder="City" type="text" formControlName="homeCity"></ion-input>\n          <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.homeCity?.touched) && errorControl.homeCity.errors?.required">\n            Home City Required.\n          </ion-text>             \n        </ion-item>\n        <ion-item>\n          <ion-label position="stacked">State\n            <ion-text color="danger">*</ion-text>\n          </ion-label>\n          <ion-select formControlName="homeState">\n            <ion-select-option *ngFor="let state of statesTypes"\n              [value]="state.abbreviation">{{state.name}}</ion-select-option>\n          </ion-select>\n          <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.homeState?.touched) && errorControl.homeState.errors?.required">\n            Home State Required.\n          </ion-text>           \n        </ion-item>\n        <ion-item>\n          <ion-label position="stacked">Postal Code\n            <ion-text color="danger">*</ion-text>\n          </ion-label>\n          <ion-input required placeholder="Postal Code" type="text"\n            pattern="^(\\d{5}(-\\d{4})?|[A-CEGHJ-NPRSTVXY]\\d[A-CEGHJ-NPRSTV-Z]?\\d[A-CEGHJ-NPRSTV-Z]\\d)$"\n            formControlName="homePostalCode"></ion-input>\n            <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.homePostalCode?.touched) && errorControl.homePostalCode.errors?.required">\n              Home Postal Code Required.\n            </ion-text>     \n            <ion-text color="danger" *ngIf="(isSubmitted || errorControl?.homePostalCode?.touched) && (errorControl?.homePostalCode?.hasError(\'minlength\') || errorControl?.homePostalCode?.hasError(\'maxLength\'))">Home postal code must be 5 digit in length</ion-text>                    \n        </ion-item>\n      </ion-item-group>\n\n      \x3c!-- Payroll Address --\x3e\n      <ion-item>\n        <ion-label>Payroll Address</ion-label>\n        <ion-text class="pay-toggle-text">Use Home Address</ion-text>\n        <ion-checkbox (ionChange)="setPayrollAddress()"></ion-checkbox>\n      </ion-item>\n\n      <ion-item-group *ngIf="hidePayrollAddress === false">\n        <ion-item>\n          <ion-label position="stacked">Street Address 1\n            <ion-text color="danger">*</ion-text>\n          </ion-label>\n          <ion-input required placeholder="Street Address 1" type="text" formControlName="workStreetAddress1"></ion-input>\n          <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.workStreetAddress1?.touched) && errorControl.workStreetAddress1.errors?.required">\n            Payroll Address Required.\n          </ion-text>          \n        </ion-item>\n        <ion-item>\n          <ion-label position="stacked">Street Address 2 </ion-label>\n          <ion-input placeholder="Street Address 2" type="text" formControlName="workStreetAddress2"></ion-input>\n        </ion-item>\n        <ion-item>\n          <ion-label position="stacked">City\n            <ion-text color="danger">*</ion-text>\n          </ion-label>\n          <ion-input required placeholder="City" type="text" formControlName="workCity"></ion-input>\n          <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.workCity?.touched) && errorControl.workCity.errors?.required">\n            Payroll City Required.\n          </ion-text>\n        </ion-item>\n\n        <ion-item>\n          <ion-label position="stacked">State\n            <ion-text color="danger">*</ion-text>\n          </ion-label>\n          <ion-select formControlName="workState">\n            <ion-select-option *ngFor="let state of statesTypes"\n              [value]="state.abbreviation">{{state.name}}</ion-select-option>\n          </ion-select>\n          <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.workState?.touched) && errorControl.workState.errors?.required">\n            Payroll State Required.\n          </ion-text>          \n        </ion-item>\n        <ion-item>\n          <ion-label position="stacked">Postal Code\n            <ion-text color="danger">*</ion-text>\n          </ion-label>\n          <ion-input required placeholder="Postal Code" type="text"\n            pattern="^(\\d{5}(-\\d{4})?|[A-CEGHJ-NPRSTVXY]\\d[A-CEGHJ-NPRSTV-Z] ?\\d[A-CEGHJ-NPRSTV-Z]\\d)$" formControlName="workPostalCode"></ion-input>\n          <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.workPostalCode?.touched) && errorControl.workPostalCode.errors?.required">\n            Payroll PostalCode Required.\n          </ion-text>\n          <ion-text color="danger" *ngIf="(isSubmitted || errorControl?.workPostalCode?.touched) && (errorControl?.workPostalCode?.hasError(\'minlength\') || errorControl?.workPostalCode?.hasError(\'maxLength\'))">Secondary postal code must be 5 digit in length</ion-text>                      \n        </ion-item>\n      </ion-item-group>\n      \x3c!-- Primary Phone Number --\x3e\n      <ion-item class="ion-align-items-center">\n        <ion-label>Primary Phone</ion-label>\n      </ion-item>\n\n      <ion-item-group>\n          <ion-item>\n            <ion-label  position="stacked">Telephone Type\n              <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-select formControlName="primaryPhoneType">\n              <ion-select-option *ngFor="let phoneType of phoneTypes"\n                [value]="phoneType?.id">{{phoneType.description}}</ion-select-option>\n            </ion-select>\n            <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.primaryPhoneType?.touched) && errorControl.primaryPhoneType.errors?.required">\n              Primary phone type Required.\n            </ion-text>             \n          </ion-item>\n\n          <ion-item>\n            <ion-label position="stacked">International Code\n              <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-select formControlName="primaryCountryCode">\n              <ion-select-option *ngFor="let code of internationalCodes"\n                [value]="code.dial_code">{{code.name}}</ion-select-option>\n            </ion-select>\n            <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.primaryCountryCode?.touched) && errorControl.primaryCountryCode.errors?.required">\n              Primary country code Required.\n            </ion-text>             \n          </ion-item>\n\n          <ion-item>\n            <ion-label position="stacked">Area Code\n              <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-input formControlName="primaryAreaCode" required placeholder="Area Code" type="tel" pattern="[0-9]{3}" maxlength="3"></ion-input>\n            <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.primaryAreaCode?.touched) && errorControl.primaryAreaCode.errors?.required">\n              Primary Areacode Required.\n            </ion-text>\n            <ion-text color="danger" *ngIf="(isSubmitted || errorControl?.primaryAreaCode?.touched) && (errorControl?.primaryAreaCode?.hasError(\'minlength\') || errorControl?.primaryAreaCode?.hasError(\'maxLength\'))">Primary area code must be 3 digit in length</ion-text>                             \n          </ion-item>\n\n          <ion-item>\n            <ion-label position="stacked">Number\n              <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-input formControlName="primaryNumber" required placeholder="Telephone Number" type="tel" pattern="[0-9]{7}" maxlength="7"></ion-input>\n            <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.primaryNumber?.touched) && errorControl.primaryNumber.errors?.required">\n              Pimary Number Required.\n            </ion-text>\n            <ion-text color="danger" *ngIf="(isSubmitted || errorControl?.primaryNumber?.touched) && (errorControl?.primaryNumber?.hasError(\'minlength\') || errorControl?.primaryNumber?.hasError(\'maxLength\'))">Pimary phone number must be 7 digit in length</ion-text>                        \n          </ion-item>\n      </ion-item-group>\n      \x3c!-- Secondary Phone Number --\x3e\n      <ion-item class="ion-align-items-center">\n        <ion-label>Secondary Phone</ion-label>\n      </ion-item>\n\n      <ion-item-group>\n          <ion-item>\n            <ion-label  position="stacked">Telephone Type\n              <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-select formControlName="secondaryPhoneType">\n              <ion-select-option *ngFor="let phoneType of phoneTypes"\n                [value]="phoneType?.id">{{phoneType.description}}</ion-select-option>\n            </ion-select>\n            <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.secondaryPhoneType?.touched) && errorControl.secondaryPhoneType.errors?.required">\n              Secondary phone type Required.\n            </ion-text>              \n          </ion-item>\n\n          <ion-item>\n            <ion-label position="stacked">International Code\n              <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-select formControlName="secondaryCountryCode">\n              <ion-select-option *ngFor="let code of internationalCodes"\n                [value]="code.dial_code">{{code.name}}</ion-select-option>\n            </
1ion-select>\n            <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.secondaryCountryCode?.touched) && errorControl.secondaryCountryCode.errors?.required">\n              Secondary country code Required.\n            </ion-text>               \n          </ion-item>\n\n          <ion-item>\n            <ion-label position="stacked">Area Code\n              <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-input formControlName="secondaryAreaCode" required placeholder="Area Code" type="tel" pattern="[0-9]{3}" maxlength="3"></ion-input>\n            <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.secondaryAreaCode?.touched) && errorControl.secondaryAreaCode.errors?.required">\n              Secondary AreaCode Required.\n            </ion-text>\n            <ion-text color="danger" *ngIf="(isSubmitted || errorControl?.secondaryAreaCode?.touched) && (errorControl?.secondaryAreaCode?.hasError(\'minlength\') || errorControl?.secondaryAreaCode?.hasError(\'maxLength\'))">Secondary area code must be 3 digit in length</ion-text>                           \n          </ion-item>\n\n          <ion-item>\n            <ion-label position="stacked">Number\n              <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-input formControlName="secondaryNumber" required placeholder="Telephone Number" type="tel" pattern="[0-9]{7}" maxlength="7"></ion-input>\n            <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.secondaryNumber?.touched) && errorControl.secondaryNumber.errors?.required">\n              Secondary Number Required.\n            </ion-text> \n            <ion-text color="danger" *ngIf="(isSubmitted || errorControl?.secondaryNumber?.touched) && (errorControl?.secondaryNumber?.hasError(\'minlength\') || errorControl?.secondaryNumber?.hasError(\'maxLength\'))">Secondary phone number must be 7 digit in length</ion-text>                           \n          </ion-item>\n      </ion-item-group>\n\n      \x3c!-- Email Fields --\x3e\n      <ion-item>\n        <ion-label position="stacked">Email\n          <ion-text color="danger">*</ion-text>\n        </ion-label>\n        <ion-input required placeholder="Email" type="email" formControlName="email"\n          pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z0-9]{1,}([.]{1}[a-zA-Z]{2,}|[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,})"></ion-input>\n          <ion-text class="error ion-padding" *ngIf="(isSubmitted || errorControl?.email?.touched) && errorControl.email.errors?.required">\n            Email Required.\n          </ion-text>            \n      </ion-item>\n\n      <ion-item lines="none">\n        <ion-grid>\n          <ion-row>\n            <ion-col size="6">\n              <ion-button (click)="showProfileInfo.emit(true)" (keydown)="showProfileInfo.emit(true)" type="button" class="ion-float-right" fill="clear">Cancel\n              </ion-button>\n            </ion-col>\n            <ion-col size="6" class="ion-float-left">\n              <ion-button type="submit" class="ion-no-margin">Save\n              </ion-button>\n            </ion-col>\n          </ion-row>\n        </ion-grid>\n      </ion-item>\n\n\n    </form>\n  </ion-card-content>',imports:[s.bT,R,D,m.bv,r.YN,r.X1,s.Sq],styles:[ze()]}),(0,a.Sn)("design:paramtypes",[M.e,ie.D,r.ze,L.By,v.T,t.zZn,x.k,C.c,I.c])],z);let V=(class{constructor(e,n){this.toaster=e,this.router=n,this.triggerProfileInfo=new t.bkB,this.isEdit=!1,this.isLoaded=!1,this.isProfileDown=!1,this.driverType=[],this.isOwnerOperator=!1,n.events.subscribe(o=>{o instanceof h.wF&&"/driver-profile?tab=myInformation"===o.url&&(this.isEdit=!1)})}ngOnChanges(e){this.handleProfileInfoChange(e.profileInfo),this.handleFeatureFlagsChange(e.featureFlags),this.handleProfilePermissionsChange(e.profilePermissionsInfo)}handleProfileInfoChange(e){e?.currentValue&&(this.profileInfo=e.currentValue,this.payRollAddress=this.getPayRollAddress(),this.homeAddress=this.getHomeAddress(),this.primaryPhoneNumberArray=this.getPhoneNumberByType(!0),this.secondaryPhoneNumberArray=this.getPhoneNumberByType(!1),this.homeEmail=this.getHomeEmails(),this.userInfo=this.profileInfo.user||{},this.maritalStatus=this.userInfo?.maritalStatus??null,this.militaryStatus=this.userInfo?.militaryStatus??null,this.gender=this.userInfo?.gender??null,this.disabilityStatus=this.userInfo?.disabilityStatus??null,this.pronoun=this.userInfo?.pronoun??null,this.ethnicities=this.userInfo.ethnicities,this.isLoaded=!0)}handleFeatureFlagsChange(e){if(e?.currentValue){const n=e.currentValue;this.isProfileDown=n?.flags?.isProfileDown??null}}handleProfilePermissionsChange(e){e?.currentValue&&(this.driverType=this.profilePermissionsInfo?.driverType??[],this.isOwnerOperator=this.driverType.includes("OwnerOp"))}getPhoneNumberByType(e){if(null===this.profileInfo.phoneNumbers)return[];let n=this.profileInfo.phoneNumbers.filter(o=>o.isPrimary===e);return n.length>0?n[0]:[]}getPayRollAddress(){let e=this.profileInfo.addresses.filter(n=>"PAYCHECK"===n.behavior);return e.length>0?e[0]:[]}getHomeAddress(){let e=this.profileInfo.addresses.filter(n=>""===n.behavior||"HOME"===n.behavior);return e.length>0?e[0]:[]}getHomeEmails(){let e=this.profileInfo.emails.filter(n=>"HOME"===n.type);return e.length>0?e[0]:[]}toggleEdit(){this.isProfileDown?this.toaster.showToaster("Error...!","Workday is currently unavailable. View Profile - Not able to edit at this time.","danger"):this.isEdit=!this.isEdit}getProfile(){this.triggerProfileInfo.emit(!0),this.toggleEdit()}static#e=le=()=>(this.ctorParameters=()=>[{type:v.T},{type:h.Ix}],this.propDecorators={profileInfo:[{type:t.pde}],profilePermissionsInfo:[{type:t.pde}],featureFlags:[{type:t.pde}],ethnicitiesOptions:[{type:t.pde}],maritalStatusOptions:[{type:t.pde}],militaryStatusOptions:[{type:t.pde}],pronounOptions:[{type:t.pde}],disabilityOptions:[{type:t.pde}],publicProfileOptions:[{type:t.pde}],triggerProfileInfo:[{type:t.k7i}]},this)},le());V=(0,a.Cg)([(0,t.uAl)({selector:"app-profile-info-card",template:'<ion-card>\n  <ion-card-header>\n    <ion-row>\n      <ion-col size="10">\n        <ion-card-title class="edge-value">Personal Info</ion-card-title>\n      </ion-col>\n      <ion-col size="2" class="edit-icon-col">\n        <ion-skeleton-text *ngIf="isLoaded === false" [animated]="true"></ion-skeleton-text>\n        <a class="pointer" (click)="toggleEdit();" *ngIf="isLoaded === true && isOwnerOperator === false">EDIT</a>\n      </ion-col>\n    </ion-row>\n  </ion-card-header>\n  \x3c!-- Show Profile Info Card --\x3e\n  <app-profile-info-listing-card \n  *ngIf="isEdit === false" \n  [profile]="profileInfo"\n  [payRollAddressInput]="payRollAddress"\n  [homeAddressInput]="homeAddress"\n  [primaryPhoneNumberArrayInput]="primaryPhoneNumberArray"\n  [secondaryPhoneNumberArrayInput]="secondaryPhoneNumberArray"\n  [homeEmailInput]="homeEmail"\n  [maritalStatusInput]="maritalStatus"\n  [militaryStatusInput]="militaryStatus"\n  [ethnicitiesInput]="ethnicities"\n  [ethnicitiesOptions]="ethnicitiesOptions"\n  [militaryStatusOptions] = "militaryStatusOptions"\n  [isOwnerOperator]="isOwnerOperator"\n  [genderInput]="gender"\n  [disabilityStatusInput]="disabilityStatus"\n  [pronounInput]="pronoun"\n\n  >\n  </app-profile-info-listing-card>\n  \n  \x3c!-- Show Edit Profile Info Card --\x3e\n  <app-profile-info-edit-card *ngIf="isEdit === true" \n  (getProfileInfo)="getProfile()"\n  (showProfileInfo)="toggleEdit()" \n  [profile]="profileInfo"\n  [payRollAddressInput]="payRollAddress"\n  [homeAddressInput]="homeAddress"\n  [primaryPhoneNumberArrayInput]="primaryPhoneNumberArray"\n  [secondaryPhoneNumberArrayInput]="secondaryPhoneNumberArray"\n  [homeEmailInput]="homeEmail"\n  [maritalStatusInput]="maritalStatus"\n  [militaryStatusInput]="militaryStatus"\n  [ethnicitiesInput]="ethnicities"\n  [ethnicitiesOptions]="ethnicitiesOptions"\n  [maritalStatusOptions] = "maritalStatusOptions"\n  [militaryStatusOptions] = "militaryStatusOptions"\n  [pronounOptions] = "pronounOptions"\n  [disabilityOptions] = "disabilityOptions"\n  [publicProfileOptions] = "publicProfileOptions"\n  [isOwnerOperator]="isOwnerOperator"\n  [disabilityStatusInput]="disabilityStatus"\n  [pronounInput]="pronoun">\n  </app-profile-info-edit-card>\n</ion-card>',providers:[te.I],imports:[m.bv,s.bT,T,z],styles:[Ne()]}),(0,a.Sn)("design:paramtypes",[v.T,h.Ix])],V);var de,Ye=i(86334),Ge=i.n(Ye);let q=(class{constructor(e,n,o,l,g,c,b,A,S){this.myInformationService=e,this.requestService=n,this.toaster=o,this.injector=l,this.formBuilder=g,this.router=c,this.phoneUtility=b,this.dispatchService=A,this.analytics=S,this.PHONE_VALIDATORS={countryCode:["",[r.k0.required]],areaCode:["",[r.k0.required,r.k0.minLength(3),r.k0.maxLength(3)]],number:["",[r.k0.required,r.k0.minLength(7),r.k0.maxLength(7)]]},this.DEFAULT_EMERGENCY_CONTACT={firstName:"",lastName:"",type:null,isPrimary:!0,priority:1,relationshipTypeId:"",phoneNumber:{countryCode:"",areaCode:0,number:"",extension:null,isPublic:!1,isPrimary:!0,type:"HOME",deviceType:"Mobile",countryIsoCode:""},isMarkedForDelete:!1},this.triggerProfileInfo=new t.bkB,this.isLoaded=!1,this.isEdit=!1,this.isSubmitted=!1,this.subscriptions$=new B.a,this.isProfileDown=!1,this.driverType=[],this.isOwnerOperator=!1,this.referenceTypeForRelationshipTypes="Related_Person_Relationship_ID",this.relationshipStorageKey="relationship_options",this.loadingUtility=this.injector.get(_.N),c.events.subscribe(U=>{U instanceof h.wF&&(document.querySelectorAll("ion-select").forEach(P=>{P.setAttribute("tabindex","-1"),P instanceof HTMLElement&&P.blur()}),"/driver-profile?tab=myInformation"===U.url&&(this.isEdit=!1))})}ngOnChanges(e){const n=e.profileInfo;if(n?.currentValue&&(this.profileInfo=n.currentValue,this.isLoaded=!0,this.internationalCodes=this.myInformationService.getInternationalCodes(),this.getRelationShiptypes(),this.setEmergencyFormValidation(),this.prefillEmergencyFormValues()),e.featureData?.currentValue){const l=e.featureData.currentValue;this.isProfileDown=l?.flags?.ProfileDownTime??null}e.profilePermissions?.currentValue&&(this.driverType=this.profilePermissions?.driverType??[],this.isOwnerOperator=this.driverType.includes("OwnerOp"))}getRelationShiptypes(){var e=this;return(0,p.A)(function*(){e.relationshipTypes=yield e.dispatchService.getWorkdayReferences(e.referenceTypeForRelationshipTypes,e.relationshipStorageKey),e.relationshipTypes.sort((n,o)=>n.id.toLowerCase()>o.id.toLowerCase()?1:-1)})()}setEmergencyFormValidation(){this.emergencyContactForm=new r.J3({contacts:new r.Bm([])})}createContactFormGroup(e={}){return this.formBuilder.group({firstName:[e.firstName||"",[r.k0.required]],lastName:[e.lastName||"",[r.k0.required]],relationshipTypeId:[e.relationshipTypeId||"",[r.k0.required]],countryCode:[e.phoneNumber?.countryCode||"",this.PHONE_VALIDATORS.countryCode[1]],areaCode:[e.phoneNumber?.areaCode||"",this.PHONE_VALIDATORS.areaCode[1]],number:[this.phoneUtility.getValidMobileNumber(e.phoneNumber),this.PHONE_VALIDATORS.number[1]]})}pushContactArray(e){this.contacts.push(this.createContactFormGroup(e))}prefillEmergencyFormValues(){if(this.contacts=this.emergencyContactForm.get("contacts"),this.emergencyContacts?.length>0)for(const e of this.emergencyContacts)this.pushContactArray(e);else this.pushContactArray({})}toggleEmergencyEdit(){this.isProfileDown?this.toaster.showToaster("Error...!","Workday is currently unavailable. View Profile - Not able to edit at this time.","danger"):(this.isEdit=!this.isEdit,!0===this.isEdit&&(this.emergencyContactForm.controls.contacts.clear(),this.prefillEmergencyFormValues()))}getFormattedPhoneNumber(e){const n=this.phoneUtility.getValidMobileNumber(e);return e?e.countryCode+e.areaCode+n:""}handleElementFocusState(e,n){const l=e.target.closest("ion-item");l&&("add"===n?l.classList.add("select-focused"):setTimeout(()=>{l.classList.remove("select-focused")},"remove"===n?150:0))}handleSelectOpen(e){e.target.removeAttribute("tabindex"),this.handleElementFocusState(e,"add")}handleSelectClose(e){e.target.setAttribute("tabindex","-1"),this.handleElementFocusState(e,"remove")}handleInputFocus(e){this.handleElementFocusState(e,"add")}handleInputBlur(e){this.handleElementFocusState(e,"remove")}initializeNewEmergencyContact(){this.profileUpdate.emergencyContacts?.length||(this.profileUpdate.emergencyContacts=[{...this.DEFAULT_EMERGENCY_CONTACT}])}updateEmergencyContact(e,n){const o=this.profileUpdate.emergencyContacts[n];o.firstName=e[n].firstName,o.lastName=e[n].lastName,o.relationshipTypeId=e[n].relationshipTypeId,o.phoneNumber.countryCode=e[n].countryCode,o.phoneNumber.countryIsoCode="1"===e[n].countryCode?"USA":"MEX",o.phoneNumber.areaCode=e[n].areaCode,o.phoneNumber.number=e[n].number}saveEmergencyContact(){if(this.isSubmitted=!0,!this.emergencyContactForm.valid)return this.toaster.showToaster("Error...!","Please provide all the required values!","danger"),
1!1;this.analytics.trackEvent("User","clicked_emergency_contact_save_button","Clicked Save Button On Emergency Contact Edit Page"),this.loadingUtility.showLoader("Saving...Please wait"),this.profileUpdate=structuredClone(this.profileInfo);const e=this.contacts.value;this.initializeNewEmergencyContact();for(const[o]of e.entries())this.updateEmergencyContact(e,o);const n={emergencyContacts:this.profileUpdate.emergencyContacts,user:this.profileUpdate.user};this.subscriptions$.sink=this.requestService.profilePatch(n).subscribe({next:o=>{this.loadingUtility.hideLoader(),o.errorMessage?this.toaster.showToaster("Error...!","An error occurred while updating emergency contact. Please try again later","danger"):this.toaster.showToaster("Success...!","Your profile contact updated successfully.","success"),this.getProfile()},error:o=>{this.loadingUtility.hideLoader();const l=o?.error?.message??"An error occurred while updating emergency contact. Please try again later";this.toaster.showToaster("Error...!",l,"danger")}})}getProfile(){this.triggerProfileInfo.emit(!0),this.toggleEmergencyEdit()}formatRelationshipType(e){return e?e.replaceAll("_"," "):""}ngOnDestroy(){this.subscriptions$.unsubscribe()}static#e=de=()=>(this.ctorParameters=()=>[{type:M.e},{type:L.By},{type:v.T},{type:t.zZn},{type:r.ze},{type:h.Ix},{type:x.k},{type:C.c},{type:I.c}],this.propDecorators={emergencyContacts:[{type:t.pde}],featureData:[{type:t.pde}],profileInfo:[{type:t.pde}],profilePermissions:[{type:t.pde}],triggerProfileInfo:[{type:t.k7i}]},this)},de());q=(0,a.Cg)([(0,t.uAl)({selector:"app-emergency-contact-card",template:'<ion-card class="emergency_contacts">\n  <ion-card-header>\n    <ion-row>\n      <ion-col size="10">\n        <ion-card-title class="edge-value">Emergency Contact</ion-card-title>\n      </ion-col>\n      <ion-col size="2" class="edit-icon-col">\n        <a class="pointer" (click)="toggleEmergencyEdit()" *ngIf="isLoaded === true && isOwnerOperator === false">EDIT</a>\n        <ion-skeleton-text [animated]="true" *ngIf="isLoaded === false"></ion-skeleton-text>\n      </ion-col>\n    </ion-row>\n  </ion-card-header>\n\n  <ion-card-content *ngIf="isEdit === false">\n    \x3c!-- If data not exist, show loader for it --\x3e\n    <ion-item-group *ngIf="isLoaded === false">\n      <ion-item lines=\'none\' class="ion-no-padding">\n        <ion-col size="6">\n          <ion-label class="edge-label">Name</ion-label>\n        </ion-col>\n        <ion-col size="6">\n          <ion-skeleton-text [animated]="true"></ion-skeleton-text>\n        </ion-col>\n      </ion-item>\n      <ion-item lines=\'none\' class="ion-no-padding">\n        <ion-col size="6">\n          <ion-label class="edge-label">Relationship</ion-label>\n        </ion-col>\n        <ion-col size="6">\n          <ion-skeleton-text [animated]="true"></ion-skeleton-text>\n        </ion-col>\n      </ion-item>\n      <ion-item lines=\'none\' class="ion-no-padding">\n        <ion-col size="6">\n          <ion-label class="edge-label">Phone Number</ion-label>\n        </ion-col>\n        <ion-col size="6">\n          <ion-skeleton-text [animated]="true"></ion-skeleton-text>\n        </ion-col>\n      </ion-item>\n    </ion-item-group>\n    \x3c!-- Iterate emergency contacts data , if data exists in API --\x3e\n    <ion-item-group *ngIf="isLoaded === true && emergencyContacts && emergencyContacts.length > 0">\n      <div *ngFor="let contact of emergencyContacts">\n        <ion-item lines=\'none\' class="ion-no-padding">\n          <ion-col size="6">\n            <ion-label class="edge-label">Name</ion-label>\n          </ion-col>\n          <ion-col size="6">\n            <ion-text class="edge-value">\n              {{ contact?.firstName }} {{ contact?.lastName }} \n            </ion-text>\n          </ion-col>\n        </ion-item>\n        <ion-item lines=\'none\' class="ion-no-padding">\n          <ion-col size="6">\n            <ion-label class="edge-label">Relationship</ion-label>\n          </ion-col>\n          <ion-col size="6">\n            <ion-text class="edge-value">\n              {{ formatRelationshipType(contact?.relationshipTypeId) }}\n            </ion-text>\n          </ion-col>\n        </ion-item>\n        <ion-item lines=\'none\' class="ion-no-padding">\n          <ion-col size="6">\n            <ion-label class="edge-label">Phone Number</ion-label>\n          </ion-col>\n          <ion-col size="6">\n            <ion-text class="edge-value">\n              {{ getFormattedPhoneNumber(contact?.phoneNumber) | phoneFormat }}\n            </ion-text>\n          </ion-col>\n        </ion-item>\n      </div>\n    </ion-item-group>\n  </ion-card-content>\n\n  <ion-card-content *ngIf="isEdit === true">\n    <form [formGroup]="emergencyContactForm">
1\n      <ion-item-group formArrayName="contacts"\n        *ngFor="let contact of emergencyContactForm.get(\'contacts\')[\'controls\']; let i = index;">\n        <div formGroupName="{{i}}">\n          \x3c!-- First Name Field --\x3e\n           <ion-item>\n            <ion-label position="stacked">First Name\n              <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-input required formControlName="firstName" placeholder="First Name" type="text"></ion-input>\n          </ion-item>\n          <ion-item lines="none" *ngIf="(isSubmitted || contact?.controls?.firstName?.touched) && contact?.controls?.firstName?.errors?.required">\n            <ion-text color="danger">First Name is required</ion-text>\n          </ion-item>\n\n          \x3c!-- Last Name Field --\x3e\n           <ion-item>\n            <ion-label position="stacked">Last Name\n              <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-input required formControlName="lastName" placeholder="Last Name" type="text"></ion-input>\n          </ion-item>\n          <ion-item lines="none" *ngIf="(isSubmitted || contact?.controls?.lastName?.touched) && contact?.controls?.lastName?.errors?.required">\n            <ion-text color="danger">Last Name is required</ion-text>\n          </ion-item>\n\n          \x3c!-- RelationShip Field --\x3e\n           <ion-item>\n            <ion-label position="stacked">Relationship\n              <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-select required formControlName="relationshipTypeId">\n              <ion-select-option *ngFor="let code of relationshipTypes"\n                [value]="code.id">{{code.value}}</ion-select-option>\n            </ion-select>\n          </ion-item>\n          <ion-item lines="none" *ngIf="(isSubmitted || contact?.controls?.relationShipTypeId?.touched) && contact.controls.relationshipTypeId.hasError(\'required\')">\n            <ion-text color="danger">Relationship is required</ion-text>\n          </ion-item>\n\n          \x3c!-- Country Code Field --\x3e\n            <ion-item>\n            <ion-label position="stacked">International Code\n              <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-select formControlName="countryCode" required>\n              <ion-select-option *ngFor="let code of internationalCodes"\n                [value]="code.dial_code">{{code.name}}</ion-select-option>\n            </ion-select>\n          </ion-item>\n          <ion-item lines="none" *ngIf="(isSubmitted || contact?.controls?.countryCode?.touched) && contact?.controls?.countryCode?.errors?.required">\n            <ion-text color="danger">International code is required</ion-text>\n          </ion-item>\n \n          \x3c!-- Area Code Field --\x3e\n           <ion-item>\n            <ion-label position="stacked">Area Code\n              <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-input formControlName="areaCode" required placeholder="Area Code" type="tel" pattern="[0-9]{3}"\n              maxlength="3"></ion-input>\n          </ion-item>\n          <ion-item lines="none" *ngIf="(isSubmitted || contact?.controls?.areaCode?.touched) && contact?.controls?.areaCode?.errors?.required">\n            <ion-text color="danger">Area Code is required</ion-text>\n          </ion-item>\n          <ion-item lines="none" *ngIf="(isSubmitted || contact?.controls?.areaCode?.touched) && (contact?.controls?.areaCode?.hasError(\'minlength\') || contact?.controls?.areaCode?.hasError(\'maxLength\'))">\n            <ion-text color="danger">Area Code must be 3 digit in length</ion-text>\n          </ion-item>          \n\n          \x3c!-- Phone Number Field --\x3e\n           <ion-item>\n            <ion-label position="stacked">Number\n              <ion-text color="danger">*</ion-text>\n            </ion-label>\n            <ion-input formControlName="number" required placeholder="Telephone Number" type="tel" pattern="[0-9]{7}"\n              maxlength="7"></ion-input>\n          </ion-item>\n          <ion-item lines="none" *ngIf="(isSubmitted || contact?.controls?.number?.touched) && contact?.controls?.number?.errors?.required">\n            <ion-text color="danger">Number is required</ion-text>\n          </ion-item>\n          <ion-item lines="none" *ngIf="(isSubmitted || contact?.controls?.number?.touched) && (contact?.controls?.number?.hasError(\'minlength\') || contact?.controls?.number?.hasError(\'maxLength\'))">\n            <ion-text color="danger">Number must be 7 digit in length</ion-text>\n          </ion-item>          \n        </div>\n      </ion-item-group>\n      \x3c!-- Save & Cancel Buttons --\x3e\n       <ion-item lines="none">\n        <ion-grid>\n          <ion-row>\n            <ion-col size="6">\n              <ion-button type="button" class="ion-float-right" fill="clear" (click)="toggleEmergencyEdit()" (keydown)="toggleEmergencyEdit()">Cancel\n              </ion-button>\n            </ion-col>\n            <ion-col size="6">\n              <ion-button class="ion-float-left" type="submit" (click)="saveEmergencyContact()" (keydown)="saveEmergencyContact()"\n                class="ion-text-wrap min-max-width">Save\n              </ion-button>\n            </ion-col>\n          </ion-row>\n        </ion-grid>\n      </ion-item>\n    </form>\n  </ion-card-content>\n</ion-card>',imports:[m.bv,s.bT,s.Sq,r.YN,r.X1,O.U],styles:[Ge()]}),(0,a.Sn)("design:paramtypes",[M.e,L.By,v.T,t.zZn,r.ze,h.Ix,x.k,C.c,I.c])],q);const $e=[{path:"",component:N}];let j=class{};j=(0,a.Cg)([(0,t.UQu)({imports:[s.MD,r.YN,r.X1,m.bv,pe.u,K.iI.forChild($e),N,V,T,z,q,E,w,k,R,D],exports:[K.iI]})],j)},26774(d,u,i){var a=i(8564),s=i(98557)(a);s.push([d.id,".background {\n  position: fixed;
1 /* Sit on top of the page content */\n  width: 100%; /* Full width (cover the whole page) */\n  height: 100%; /* Full height (cover the whole page) */\n  max-width: 800px;\n  margin: 0 auto;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  background-color: rgba(0, 0, 0, 0.5); /* Black background with opacity */\n  z-index: 20; /* Specify a stack order in case you're using a different order for other elements */\n}\n\n.title-row {\n  margin: 4px 0px 0px 0px;\n  padding: 0px;\n  clear: both;\n  --border-radius: 4px;\n  --color: #666;\n}\n\n.body {\n  padding: 16px 0px 16px 0px;\n  font-weight: 400;\n}\n\n.modal {\n  position: absolute;\n  left: 10%;\n  top: 2%;\n  margin-top: 7%;\n  padding: 0px;\n  width: 75%;\n  height: 190px;\n  border-radius: 4px;\n  background-color: white;\n  z-index: 20;\n}\n\n.header {\n  float: left;\n  font-weight: 600;\n  font-size: 0.9rem;\n}\n\n.section {\n  padding-top: 16px;\n  font-weight: 500;\n  font-size: 1rem;\n  width: 100%;\n}\n\n.point-item {\n  margin: 16px 0px 0px 24px;\n  width: 100%;\n  font-weight: 400;\n  font-size: 1rem;\n}\n\nbutton {\n  float: right;\n  background: transparent;\n}\n\n.modal-content {\n  padding: 12px;\n}",""]),d.exports=s.toString()},86334(d,u,i){var a=i(8564),s=i(98557)(a);s.push([d.id,"ion-card {\n  background-color: white;\n  box-shadow: var(--shadow);\n}\n\nion-item {\n  --background: white;\n}",""]),d.exports=s.toString()},61836(d,u,i){var a=i(8564),s=i(98557)(a);s.push([d.id,"ion-item {\n  --background: white;\n}",""]),d.exports=s.toString()},15832(d,u,i){var a=i(8564),s=i(98557)(a);s.push([d.id,"ion-item {\n  --background: white;\n}",""]),d.exports=s.toString()},72816(d,u,i){var a=i(8564),s=i(98557)(a);s.push([d.id,"ion-card {\n  background-color: white;\n  box-shadow: var(--shadow);\n}\nion-card ion-card-header {\n  text-align: left;\n  font-size: 16px;\n  color: #333;\n}\nion-card ion-card-content ion-label {\n  font-weight: 700;\n}\nion-card.friends-and-family .item-list {\n  border-bottom: 2px solid var(--canvas-background);\n  padding: 5px;\n}\nion-card.friends-and-family ion-row {\n  width: 100%;\n}\n\nion-icon {\n  font-size: 24px;\n  color: var(--body-text);\n}\n\nion-item {\n  --background: white;\n  --background-hover-opacity: 0 !important;\n}\n\n.ion-icon-chevron {\n  font-size: 20px;\n}\n\n.friends-and-family-grid {\n  padding: 0px;\n}\n\n.friends-and-family-content {\n  border-bottom: 2px solid var(--canvas-background);\n  color: black;\n}\n\n.delete-button {\n  --background: #b43333;\n}",""]),d.exports=s.toString()},20660(d,u,i){var a=i(8564),s=i(98557)(a);s.push([d.id,".background {\n  position: fixed; /* Sit on top of the page content */\n  width: 100%; /* Full width (cover the whole page) */\n  height: 100%; /* Full height (cover the whole page) */\n  max-width: 800px;\n  margin: 0 auto;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  background-color: rgba(0, 0, 0, 0.5); /* Black background with opacity */\n  z-index: 20; /* Specify a stack order in case you're using a different order for other elements */\n}\n\n.title-row {\n  margin: 4px 0px 0px 0px;\n  padding: 0px;\n  clear: both;\n  --border-radius: 4px;\n  --color: #666;\n}\n\n.body {\n  padding: 16px 0px 16px 0px;\n  font-weight: 400;\n}\n\n.modal {\n  position: absolute;\n  left: 10%;\n  top: 2%;\n  margin-top: 7%;\n  padding: 0px;\n  width: 75%;\n  height: 8%;\n  border-radius: 4px;\n  background-color: white;\n  z-index: 20;\n}\n\n.header {\n  float: left;\n  font-weight: 600;\n  font-size: 0.9rem;\n}\n\n.section {\n  margin-top: 16px;\n  padding-top: 16px;\n  font-weight: 500;\n  font-size: 1rem;\n  width: 100%;\n}\n\n.point-item {\n  margin: 16px 0px 0px 24px;\n  width: 100%;\n  font-weight: 400;\n  font-size: 1rem;\n}\n\nbutton {\n  float: right;\n  background: transparent;\n}\n\n.modal-content {\n  padding: 12px;\n}",""]),d.exports=s.toString()},8746(d,u,i){var a=i(8564),s=i(98557)(a);s.push([d.id,"ion-card {\n  background-color: white;\n  box-shadow: var(--shadow);\n}\n\nion-item {\n  --background: white;\n}\n\n.ion-skeleton-text {\n  width: 80%;\n}",""]),d.exports=s.toString()}
1,75e3(d,u,i){var a=i(8564),s=i(98557)(a);s.push([d.id,"ion-card {\n  background-color: white;\n  box-shadow: var(--shadow);\n}\n\nion-item {\n  --background: white;\n}\n\n.error {\n  color: #bc4343;\n  font-size: 0.9rem;\n  font-weight: 500;\n  padding: 5px;\n}\n\n.pay-toggle-text {\n  padding-right: 1%;\n}\n\nion-select::part(text) {\n  white-space: break-spaces !important;\n}",""]),d.exports=s.toString()},66510(d,u,i){var a=i(8564),s=i(98557)(a);s.push([d.id,"ion-card {\n  background-color: white;\n  box-shadow: var(--shadow);\n}\n\nion-item {\n  --background: white;\n}\n\n.ion-skeleton-text {\n  width: 80%;\n}",""]),d.exports=s.toString()},33308(d,u,i){var a=i(8564),s=i(98557)(a);s.push([d.id,'ion-segment-button {\n  --indicator-color: var(--gold-text) !important;\n  --indicator-height: 5px;\n  --color: var(--primary);\n}\n@media screen and (max-width: 320px) {\n  ion-segment-button ion-label {\n    font-size: 12px;\n  }\n}\n\n.workday-message {\n  font-family: "Roboto Condensed", sans-serif;\n  font-weight: normal;\n  text-transform: none;\n  color: black;\n}\n\nion-list {\n  background: var(--primary);\n}\n\nion-skeleton-text {\n  --border-radius: 9999px;\n  --background: rgb(178 3 240 / 79%);\n}\n\n.profile-header {\n  background: var(--primary);\n  color: white;\n  padding: 5px;\n}\n\n.profile-tab {\n  background: white;\n}\n\nion-avatar {\n  width: 60px;\n  height: 60px;\n}\n\nion-label {\n  font-size: 1.1em;\n  font-weight: 500;\n}\nion-label.current_user_miles {\n  display: table;\n}\nion-label.current_user_miles .current_user_miles_number {\n  display: table-cell;\n  vertical-align: middle;\n  padding-right: 0.3em;\n  font-size: 1.6em;\n  font-weight: 700;\n}\nion-label.current_user_miles .current_user_miles_text {\n  display: table-cell;\n  vertical-align: middle;\n  font-weight: 500;\n  font-size: 0.7em;\n}\nion-label.current_user_miles_label {\n  text-align: center;\n}\nion-label.current_user_miles_label .current_user_welcome_text {\n  display: table-cell;\n  vertical-align: middle;\n  padding-right: 0.3em;\n  font-size: 0.8em;\n  font-weight: 700;\n}\n\nion-content {\n  --ion-background-color: var(--canvas-background);\n}\nion-content ion-card {\n  background-color: white;\n  box-shadow: var(--shadow);\n}\nion-content ion-item {\n  --background: white;\n}',""]),d.exports=s.toString()}}]);

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.