{"version":3,"file":"848.e78519de527b9588.js","mappings":"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","names":["loadBasicInfo","createAction","loadBasicInfoSuccess","props","loadTos","loadTosSuccess","updateBasicSupplierInfo","updateBasicCompanyInfo","updateCompanyInfo","onboardingFeatureKey","onboardingReducer","createReducer","contactDetails","onboardingContract","initialOnboardingState","on","state","selectOnboardingState","createFeatureSelector","selectContactDetails","createSelector","selectContract","selectStatus","status","selectContactCategory","category","OnboardingEffects","constructor","actions$","onboardingService","router","store","this","createEffect","pipe","ofType","onboardingActions","withLatestFrom","select","selectRouteParams","switchMap","_","onboardingId","getOnboardingDetails","map","Error","getTos","concatMap","contactInfo","updateBasicOnboardingInfo","dispatch","payload","updateCompanyOnboarding","employerOnboardingInfo","tap","navigateByUrl","updateOnboardingDetails","core","factory","OnboardingStatusVerifiedGuard","canActivate","route","filter","s","parseUrl","OnboardingService","http","get","PUBLIC_ENDPOINTS","d","data","put","post","i0","ShareholderPopupComponent","fb","locationService","getCountries","shareholderForm","group","entityName","UntypedFormControl","Validators","country","ownership","selectors","OnboardingStepperComponent","_class","dialog","locations","UntypedFormGroup","firstName","lastName","email","value","disabled","contactPhone","companyName","jobTitle","services","companyAddress","ein","legalEntityName","foreignBusinessName","registeredAddress","countryOfIncorporation","clientDBA","ceoName","ceoAddress","cfoName","cfoAddress","keyManagementName","keyManagementAddress","parentCompanyName","parentCompanyCountry","parentCompanyOwnership","ultimateBeneficialOwnerName1","ultimateBeneficialOwnerCountry1","ultimateBeneficialOwnership1","ultimateBeneficialOwnerName2","ultimateBeneficialOwnerCountry2","ultimateBeneficialOwnership2","ultimateBeneficialOwnerName3","ultimateBeneficialOwnerCountry3","ultimateBeneficialOwnership3","updateOn","signed","getStates","CONTACT_FORM_VALIDATION_MSGS","SERVICES","ngOnInit","subscribe","contract","supForm","valueChanges","v","setValidators","updateValueAndValidity","patchValue","cmpForm","saveCompany","sigFormSubmitted","cmpDtlForm","invalid","mgmtForm","shForm","sigForm","documentId","isBeneficialOwnerAdded","shFormSubmitted","saveCompanyBasic","form","pristine","saveSupplier","supplierOnboardingInfo","addShareholder","open","afterClosed","r","shareholder","index","shareholders","length","push","setShareholder","name","percent","setValue","deleteShareholder","splice","sh","provide","STEPPER_GLOBAL_OPTIONS","useValue","showError","decls","tslib_es6","Unsubscriber","routes","path","component","title","OnboardingRoutingModule","RouterModule","OnboardingModule","LocationsService","imports","CommonModule","SharedModule","MatStepperModule","StoreModule","EffectsModule"],"sourceRoot":"webpack:///","sources":["./src/app/onboarding/store/actions.ts","./src/app/onboarding/store/reducer.ts","./src/app/onboarding/store/selectors.ts","./src/app/onboarding/store/effects.ts","./src/app/onboarding/services/onboarding-status-verified.guard.ts","./src/app/onboarding/services/onboarding.service.ts","./src/app/onboarding/components/shareholder-popup/shareholder-popup.component.html","./src/app/onboarding/components/shareholder-popup/shareholder-popup.component.ts","./src/app/onboarding/components/onboarding-stepper/onboarding-stepper.component.html","./src/app/onboarding/components/onboarding-stepper/onboarding-stepper.component.ts","./src/app/onboarding/onboarding-routing.module.ts","./src/app/onboarding/onboarding.module.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\r\n\r\nimport { IDocument } from '@shared';\r\nimport { ContactDetails, IOnboardingEmployer, IOnboardingSupplier } from '../models';\r\n\r\nexport const loadBasicInfo = createAction('[Onboarding Stepper Component] Load onboarding');\r\nexport const loadBasicInfoSuccess = createAction(\r\n  '[Onboarding Effects] Load onboarding success', props<{ contactDetails: ContactDetails }>());\r\n\r\nexport const loadTos = createAction('[Onboarding stepper component] Load onboarding contract');\r\nexport const loadTosSuccess = createAction(\r\n  '[Onboarding Effects] Load contract success', props<{ onboardingContract: IDocument }>());\r\n\r\nexport const updateBasicSupplierInfo = createAction(\r\n  '[Onboarding Stepper Component] Update basic supplier info', props<{ contactInfo: IOnboardingSupplier }>());\r\n\r\nexport const updateBasicCompanyInfo = createAction(\r\n  '[Onboarding Stepper Component] Update basic company info', props<{ contactInfo: IOnboardingSupplier }>());\r\n\r\nexport const updateCompanyInfo = createAction(\r\n  '[Onboarding stepper component] Save Company Info', props<{ employerOnboardingInfo: IOnboardingEmployer }>());\r\n\r\n","import { createReducer, on } from '@ngrx/store';\r\n\r\nimport { IDocument } from '@shared';\r\nimport { ContactDetails } from '../models';\r\nimport { loadBasicInfo, loadBasicInfoSuccess, loadTosSuccess } from './actions';\r\n\r\nexport const onboardingFeatureKey = 'onboarding';\r\n\r\nexport interface OnboardingState {\r\n  contactDetails: ContactDetails | null;\r\n  onboardingContract: IDocument | null;\r\n}\r\n\r\nconst initialOnboardingState: OnboardingState = {\r\n  contactDetails: null,\r\n  onboardingContract: null,\r\n}\r\n\r\nexport const onboardingReducer = createReducer<OnboardingState>(\r\n  initialOnboardingState,\r\n\r\n  on(loadBasicInfo, (state) => ({\r\n    ...state,\r\n    contactDetails: null,\r\n  })),\r\n\r\n  on(loadBasicInfoSuccess, (state, { contactDetails }) => ({\r\n    ...state,\r\n    contactDetails,\r\n  })),\r\n\r\n  on(loadTosSuccess, (state, { onboardingContract }) => ({\r\n    ...state,\r\n    onboardingContract,\r\n  }))\r\n)\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\n\r\nimport { onboardingFeatureKey, OnboardingState } from './reducer';\r\n\r\nexport const selectOnboardingState = createFeatureSelector<OnboardingState>(onboardingFeatureKey);\r\n\r\nexport const selectContactDetails = createSelector(selectOnboardingState, (state) => state?.contactDetails )\r\n\r\nexport const selectContract = createSelector(selectOnboardingState, (state) => state?.onboardingContract);\r\n\r\nexport const selectStatus = createSelector(selectContactDetails, (contactDetails) => contactDetails?.status);\r\n\r\nexport const selectContactCategory = createSelector(selectContactDetails, (contactDetails) => contactDetails?.category);\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { concatMap, map, switchMap, tap, withLatestFrom } from 'rxjs';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { RootState, selectRouteParams } from '@core';\r\nimport * as onboardingActions from './actions';\r\nimport { OnboardingService } from '../services';\r\nimport { selectContactCategory } from './selectors';\r\n\r\n@Injectable()\r\nexport class OnboardingEffects {\r\n\r\n  loadInfo$ = createEffect(() =>\r\n    this.actions$.pipe(\r\n      ofType(onboardingActions.loadBasicInfo),\r\n      withLatestFrom(this.store.select(selectRouteParams)),\r\n      switchMap(([_, { onboardingId }]) =>\r\n        this.onboardingService.getOnboardingDetails(onboardingId)\r\n          .pipe(\r\n            map((contactDetails) => onboardingActions.loadBasicInfoSuccess({ contactDetails }))\r\n          ))\r\n    )\r\n  );\r\n\r\n\r\n  loadContract$ = createEffect(() =>\r\n    this.actions$.pipe(\r\n      ofType(onboardingActions.loadTos),\r\n      withLatestFrom(this.store.select(selectContactCategory)),\r\n      switchMap(([_, category]) => {\r\n        if (!category) throw new Error('No category found');\r\n\r\n        return this.onboardingService.getTos(category).pipe(\r\n          map((onboardingContract) => onboardingActions.loadTosSuccess({ onboardingContract }))\r\n        )\r\n      })\r\n    )\r\n  );\r\n\r\n  updateInfo$ = createEffect(() =>\r\n    this.actions$.pipe(\r\n      ofType(onboardingActions.updateBasicCompanyInfo),\r\n      withLatestFrom(this.store.select(selectRouteParams)),\r\n      concatMap(([{ contactInfo }, { onboardingId }]) =>\r\n        this.onboardingService.updateBasicOnboardingInfo(contactInfo, onboardingId))\r\n    ),\r\n    { dispatch: false}\r\n  );\r\n\r\n  saveEmployerInfo$ = createEffect(() =>\r\n  this.actions$.pipe(\r\n    ofType(onboardingActions.updateCompanyInfo),\r\n    switchMap(payload =>\r\n      this.onboardingService.updateCompanyOnboarding(payload.employerOnboardingInfo).pipe(\r\n        tap(() => this.router.navigateByUrl('/public/status/processing'))\r\n      ))\r\n  ),\r\n  { dispatch: false }\r\n);\r\n\r\nsaveSupplierInfo$ = createEffect(() =>\r\n    this.actions$.pipe(\r\n      ofType(onboardingActions.updateBasicSupplierInfo),\r\n      withLatestFrom(this.store.select(selectRouteParams)),\r\n      concatMap(([{ contactInfo }, { onboardingId }]) =>\r\n        this.onboardingService.updateOnboardingDetails(contactInfo, onboardingId).pipe(\r\n          tap(() => this.router.navigateByUrl('/public/status/processing'))\r\n        ))\r\n    ),\r\n    { dispatch: false}\r\n  );\r\n\r\n  constructor(\r\n    private actions$: Actions,\r\n    private onboardingService: OnboardingService,\r\n    private router: Router,\r\n    private store: Store<RootState>) { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router } from '@angular/router';\r\nimport { filter, map, tap } from 'rxjs';\r\nimport { select, Store } from '@ngrx/store';\r\n\r\nimport { loadBasicInfo, OnboardingState, selectStatus } from '../store';\r\n\r\n@Injectable()\r\nexport class OnboardingStatusVerifiedGuard implements CanActivate {\r\n\r\n  constructor(private store: Store<OnboardingState>, private router: Router) { };\r\n\r\n  canActivate(route?: ActivatedRouteSnapshot) {\r\n    return this.store.pipe(\r\n      select(selectStatus),\r\n      tap(status => {\r\n        if (!status) this.store.dispatch(loadBasicInfo());\r\n      }),\r\n      filter(status => !!status),\r\n      map(s => s === 'Verified' || this.router.parseUrl(`/public/status/${s}`))\r\n    );\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { ContactDetails, IOnboardingEmployer, IOnboardingSupplier } from '../models';\r\nimport { IDocument, PUBLIC_ENDPOINTS } from '@shared';\r\nimport { map } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class OnboardingService {\r\n\r\n  constructor(private http: HttpClient) { }\r\n\r\n  getOnboardingDetails(onboardingId: string) {\r\n    return this.http.get<ContactDetails>(`${PUBLIC_ENDPOINTS.supplierDetails}/${onboardingId}`)\r\n      .pipe(map(d => {\r\n        return {...d, onboardingId};\r\n      }));\r\n  }\r\n\r\n  updateOnboardingDetails(data: IOnboardingSupplier, onboardingId: string) {\r\n    return this.http.put<IOnboardingSupplier>(PUBLIC_ENDPOINTS.supplierDetails, {\r\n      ...data,\r\n      onboardingId\r\n    });\r\n  }\r\n\r\n  updateBasicOnboardingInfo(data: IOnboardingSupplier, onboardingId: string) {\r\n    return this.http.put<IOnboardingSupplier>(PUBLIC_ENDPOINTS.additionalDetails, {\r\n      ...data,\r\n      onboardingId\r\n    });\r\n  }\r\n\r\n  getTos(category: string) {\r\n    return this.http.get<IDocument>(`${PUBLIC_ENDPOINTS.onboardingContract}/${category}`);\r\n  }\r\n\r\n  updateCompanyOnboarding(data: IOnboardingEmployer) {\r\n    return this.http.post(PUBLIC_ENDPOINTS.companyDetails, {\r\n      ...data\r\n    });\r\n  }\r\n}\r\n","<h4 mat-dialog-title>add ultimate beneficial owners</h4>\r\n<mat-dialog-content>\r\n  <form [formGroup]=\"shareholderForm\">\r\n      <mat-form-field>\r\n        <mat-label>entity name/individual</mat-label>\r\n        <input formControlName=\"entityName\" matInput />\r\n        <mat-error>between 2 and 100 letters</mat-error>\r\n      </mat-form-field>\r\n\r\n      <mat-form-field>\r\n        <mat-label>country of residence</mat-label>\r\n        <mat-select formControlName=\"country\" id=\"country\">\r\n          <mat-option *ngFor=\"let c of allCountries$ | async\" [value]=\"c.isoCode\">\r\n            {{ c.country }}\r\n          </mat-option>\r\n        </mat-select>\r\n        <mat-error>pick a country</mat-error>\r\n      </mat-form-field>\r\n\r\n      <mat-form-field>\r\n        <mat-label>ownership stake (%) (if known)</mat-label>\r\n        <input formControlName=\"ownership\" matInput min=\"0\" type=\"number\"/>\r\n        <mat-error>number between 0 and 100</mat-error>\r\n      </mat-form-field>\r\n  </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions align=\"end\">\r\n  <button mat-stroked-button color=\"primary\" mat-dialog-close>cancel</button>\r\n  <button class=\"dtd-button\" [disabled]=\"!shareholderForm.valid\"\r\n    [mat-dialog-close]=\"shareholderForm.value\">\r\n    add\r\n  </button>\r\n</mat-dialog-actions>\r\n","import { Component } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { LocationsService } from 'src/app/public/services';\r\n\r\n@Component({\r\n  selector: 'maas-shareholder-popup',\r\n  templateUrl: './shareholder-popup.component.html',\r\n  styleUrls: ['./shareholder-popup.component.scss']\r\n})\r\nexport class ShareholderPopupComponent {\r\n  shareholderForm: UntypedFormGroup;\r\n  allCountries$ = this.locationService.getCountries();\r\n\r\n  constructor(fb: UntypedFormBuilder,\r\n    private locationService: LocationsService) {\r\n    this.shareholderForm = fb.group({\r\n      entityName: new UntypedFormControl(null, [Validators.required, Validators.minLength(2), Validators.maxLength(100)]),\r\n      country: new UntypedFormControl(null, [Validators.required]),\r\n      ownership: new UntypedFormControl(null, [Validators.min(0), Validators.max(100)])\r\n    });\r\n  }\r\n}\r\n","<div class=\"page-container\">\r\n  <div class=\"stepper-container\">\r\n    <mat-stepper labelPosition=\"bottom\" #stepper linear=\"true\">\r\n\r\n      <mat-step *ngIf=\"category==='supplier'\" [stepControl]=\"supForm\" label=\"user details\">\r\n        <form [formGroup]=\"supForm\">\r\n          <mat-form-field>\r\n            <mat-label>First Name</mat-label>\r\n            <input matInput id=\"first-name\" formControlName=\"firstName\" />\r\n            <mat-error>{{ supmsg.firstName }}</mat-error>\r\n          </mat-form-field>\r\n\r\n            <mat-form-field>\r\n              <mat-label>Last Name</mat-label>\r\n              <input matInput id=\"last-name\" formControlName=\"lastName\" />\r\n              <mat-error>{{ supmsg.lastName }}</mat-error>\r\n            </mat-form-field>\r\n\r\n            <mat-form-field>\r\n              <mat-label>Contact Email</mat-label>\r\n              <input\r\n                matInput\r\n                id=\"email\"\r\n                type=\"email\"\r\n                formControlName=\"email\"\r\n              />\r\n              <mat-error>{{ supmsg.contactEmail }}</mat-error>\r\n            </mat-form-field>\r\n\r\n            <mat-form-field>\r\n              <mat-label>Contact Phone</mat-label>\r\n              <input matInput id=\"phone\" type=\"tel\" formControlName=\"contactPhone\" />\r\n              <mat-error>{{ supmsg.contactPhone }}</mat-error>\r\n            </mat-form-field>\r\n\r\n            <mat-form-field>\r\n              <mat-label>Company Name</mat-label>\r\n              <input matInput id=\"company\" formControlName=\"companyName\" />\r\n              <mat-error>{{ supmsg.companyName }}</mat-error>\r\n            </mat-form-field>\r\n\r\n            <mat-form-field>\r\n              <mat-label>Job Title</mat-label>\r\n              <input matInput id=\"job\" formControlName=\"jobTitle\" />\r\n              <mat-error>{{ supmsg.jobTitle }}</mat-error>\r\n            </mat-form-field>\r\n\r\n            <mat-form-field>\r\n              <mat-label>Country</mat-label>\r\n              <mat-select #supcty formControlName=\"country\" id=\"country\">\r\n                <mat-option *ngFor=\"let c of countries$ | async\" [value]=\"c.isoCode\">\r\n                  {{ c.country }}\r\n                </mat-option>\r\n              </mat-select>\r\n              <mat-error>{{ supmsg.country }}</mat-error>\r\n            </mat-form-field>\r\n\r\n            <mat-form-field>\r\n              <mat-label>Service(s) Provided</mat-label>\r\n              <mat-select formControlName=\"services\" id=\"services\" multiple>\r\n                <mat-option *ngFor=\"let s of services\" [value]=\"s\">\r\n                  {{ s }}\r\n                </mat-option>\r\n              </mat-select>\r\n              <mat-error>{{ supmsg.service }}</mat-error>\r\n            </mat-form-field>\r\n\r\n            <mat-form-field>\r\n              <mat-label>Company address</mat-label>\r\n              <textarea matInput id=\"address\" formControlName=\"companyAddress\"></textarea>\r\n              <mat-error>{{ supmsg.companyAddress }}</mat-error>\r\n            </mat-form-field>\r\n\r\n            <mat-form-field *ngIf=\"supcty.value === 'US'\">\r\n              <mat-label>State Incorporated</mat-label>\r\n              <mat-select formControlName=\"state\" id=\"state\">\r\n                <mat-option *ngFor=\"let state of states$ | async\" [value]=\"state.id\">\r\n                  {{ state.shortName }}\r\n                </mat-option>\r\n              </mat-select>\r\n              <mat-error>{{ supmsg.state }}</mat-error>\r\n            </mat-form-field>\r\n\r\n            <mat-form-field>\r\n              <mat-label>employer identification number (EIN)</mat-label>\r\n              <input matInput id=\"ein\" formControlName=\"ein\" />\r\n              <mat-error>{{ supmsg.companyEin }}</mat-error>\r\n            </mat-form-field>\r\n\r\n            <div class=\"btn-container\">\r\n                <div></div>\r\n                <div>\r\n                    <button class=\"dtd-button\" matStepperNext>\r\n                        continue\r\n                    </button>\r\n                </div>\r\n            </div>\r\n        </form>\r\n      </mat-step>\r\n\r\n      <ng-container *ngIf=\"category==='employer'\">\r\n\r\n        <mat-step label=\"user details\" [stepControl]=\"cmpForm\">\r\n            <form [formGroup]=\"cmpForm\">\r\n                <mat-form-field>\r\n                    <mat-label>First Name</mat-label>\r\n                    <input matInput id=\"first-name\" formControlName=\"firstName\" />\r\n                    <mat-error>between 2 and 50 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n                <mat-form-field>\r\n                    <mat-label>Last Name</mat-label>\r\n                    <input matInput id=\"last-name\" formControlName=\"lastName\" />\r\n                    <mat-error>between 2 and 50 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n                <mat-form-field>\r\n                    <mat-label>Contact Email</mat-label>\r\n                    <input matInput id=\"contact-email\" type=\"email\" formControlName=\"email\" />\r\n                    <mat-error>need a valid email</mat-error>\r\n                </mat-form-field>\r\n\r\n                <mat-form-field>\r\n                    <mat-label>Contact Phone</mat-label>\r\n                    <input matInput id=\"contact-phone\" type=\"tel\" formControlName=\"contactPhone\" />\r\n                    <mat-error>between 10 and 20 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n                <mat-form-field>\r\n                    <mat-label>Company Name</mat-label>\r\n                    <input matInput id=\"company-name\" formControlName=\"companyName\" />\r\n                    <mat-error>between 2 and 100 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n                <mat-form-field>\r\n                    <mat-label>Job Title</mat-label>\r\n                    <input matInput id=\"job-title\" formControlName=\"jobTitle\" />\r\n                    <mat-error>between 2 and 50 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n                <mat-form-field>\r\n                    <mat-label>Country</mat-label>\r\n                    <mat-select formControlName=\"country\" id=\"country\">\r\n                        <mat-option *ngFor=\"let c of countries$ | async\" [value]=\"c.isoCode\">\r\n                            {{ c.country }}\r\n                        </mat-option>\r\n                    </mat-select>\r\n                    <mat-error>pick a country</mat-error>\r\n                </mat-form-field>\r\n\r\n                <div class=\"btn-container\">\r\n                    <div></div>\r\n                    <div>\r\n                        <button class=\"dtd-button\" matStepperNext (click)=\"saveCompanyBasic()\">\r\n                            continue\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n\r\n            </form>\r\n        </mat-step>\r\n\r\n        <mat-step label=\"company details\" [stepControl]=\"cmpDtlForm\">\r\n\r\n            <form [formGroup]=\"cmpDtlForm\">\r\n                <mat-form-field>\r\n                  <mat-label>legal entity name</mat-label>\r\n                  <input matInput formControlName=\"legalEntityName\" />\r\n                  <mat-error>no more than 100 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n                <mat-form-field>\r\n                  <mat-label>foreign business legal name (if applicable)</mat-label>\r\n                  <input matInput formControlName=\"foreignBusinessName\" />\r\n                  <mat-error>no more than 100 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n                <mat-form-field>\r\n                  <mat-label>registered address</mat-label>\r\n                  <input matInput formControlName=\"registeredAddress\" />\r\n                  <mat-error>between 10 and 200 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n                <mat-form-field>\r\n                  <mat-label>country of incorporation</mat-label>\r\n                  <mat-select formControlName=\"countryOfIncorporation\">\r\n                    <mat-option *ngFor=\"let c of countries$ | async\" [value]=\"c.isoCode\">\r\n                      {{ c.country }}\r\n                    </mat-option>\r\n                  </mat-select>\r\n                  <mat-error>pick a country</mat-error>\r\n                </mat-form-field>\r\n\r\n                <mat-form-field>\r\n                  <mat-label>client DBA (if applicable)</mat-label>\r\n                  <input matInput formControlName=\"clientDBA\" />\r\n                  <mat-error>no more than 200 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n\r\n                <div class=\"btn-container\">\r\n                    <div>\r\n                        <button\r\n                            color=\"primary\"\r\n                            mat-stroked-button\r\n                            matStepperPrevious>\r\n                            back\r\n                        </button>\r\n                    </div>\r\n                    <div>\r\n                        <button class=\"dtd-button\" matStepperNext>\r\n                            continue\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n\r\n              </form>\r\n\r\n        </mat-step>\r\n\r\n        <mat-step label=\"management details\" [stepControl]=\"mgmtForm\">\r\n            <form [formGroup]=\"mgmtForm\">\r\n                <h4>chief executive officer</h4>\r\n                <mat-form-field>\r\n                    <mat-label>individual’s name</mat-label>\r\n                    <input matInput id=\"ceo-name\" formControlName=\"ceoName\" />\r\n                    <mat-error>no more than 200 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n                <mat-form-field>\r\n                    <mat-label>residential address</mat-label>\r\n                    <input matInput id=\"ceo-address\" formControlName=\"ceoAddress\" />\r\n                    <mat-error>between 10 and 300 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n                <h4>chief financial officer</h4>\r\n                <mat-form-field>\r\n                    <mat-label>individual’s name</mat-label>\r\n                    <input matInput id=\"cfo-name\" formControlName=\"cfoName\" />\r\n                    <mat-error>between 2 and 200 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n                <mat-form-field>\r\n                    <mat-label>residential address</mat-label>\r\n                    <input matInput id=\"cfo-address\" formControlName=\"cfoAddress\" />\r\n                    <mat-error>between 10 and 300 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n                <h4>other key management</h4>\r\n                <mat-form-field>\r\n                    <mat-label>individual’s name</mat-label>\r\n                    <input matInput id=\"other-keymanagement-name\" formControlName=\"keyManagementName\" />\r\n                    <mat-error>no more than 200 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n                <mat-form-field>\r\n                    <mat-label>residential address</mat-label>\r\n                    <input matInput id=\"other-keymanagement-address\"\r\n                        formControlName=\"keyManagementAddress\" />\r\n                    <mat-error>no more than 300 letters</mat-error>\r\n                </mat-form-field>\r\n\r\n                <div class=\"btn-container\">\r\n                    <div>\r\n                        <button\r\n                            color=\"primary\"\r\n                            mat-stroked-button\r\n                            matStepperPrevious>\r\n                            back\r\n                        </button>\r\n\r\n                    </div>\r\n                    <div>\r\n                        <button class=\"dtd-button\" matStepperNext>\r\n                            continue\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n\r\n            </form>\r\n        </mat-step>\r\n\r\n        <mat-step label=\"shareholder details\" [stepControl]=\"shForm\">\r\n\r\n          <form [formGroup]=\"shForm\">\r\n              <div><h4 class=\"font-normal\">parent company (if applicable)</h4></div>\r\n\r\n              <mat-form-field>\r\n                  <mat-label>entity name/individual</mat-label>\r\n                  <input matInput id=\"parent-company-name\" formControlName=\"parentCompanyName\" />\r\n                  <mat-error>between 2 and 100 letters</mat-error>\r\n              </mat-form-field>\r\n\r\n              <mat-form-field>\r\n                  <mat-label>country of residence</mat-label>\r\n                  <mat-select formControlName=\"parentCompanyCountry\" id=\"parent-company-country\">\r\n                      <mat-option *ngFor=\"let c of countries$ | async\" [value]=\"c.isoCode\">\r\n                          {{ c.country }}\r\n                      </mat-option>\r\n                  </mat-select>\r\n                  <mat-error>pick a country</mat-error>\r\n              </mat-form-field>\r\n\r\n              <mat-form-field>\r\n                  <mat-label>ownership stake (%) (if known)</mat-label>\r\n                  <input matInput id=\"parent-company-ownership\" type=\"number\" min=\"0\" formControlName=\"parentCompanyOwnership\" />\r\n                  <mat-error>percent between 0 and 100</mat-error>\r\n              </mat-form-field>\r\n\r\n              <div>\r\n                    <div class=\"header-container\">\r\n                      <div class=\"header3\">ultimate beneficial owners (direct or indirect)</div>\r\n                      <div class=\"subheader\">(only holdings greater than 25%)</div>\r\n                    </div>\r\n\r\n                    <div class=\"btn-container\">\r\n                      <div></div>\r\n                      <div>\r\n                          <button mat-stroked-button type=\"button\" color=\"primary\" (click)=\"addShareholder()\"\r\n                              [hidden]=\"shareholders.length==3\">\r\n                              add new\r\n                          </button>\r\n\r\n                      </div>\r\n                    </div>\r\n\r\n                  <table class=\"table-style\">\r\n                      <tr>\r\n                          <th class=\"col-name\">entity name/individual</th>\r\n                          <th class=\"col-country desktop-only\">country of residence</th>\r\n                          <th class=\"col-own desktop-only\">ownership stake (%)</th>\r\n                          <th class=\"col-act\"></th>\r\n                      </tr>\r\n\r\n                      <tr *ngFor=\"let shareholder of shareholders;let i = index\">\r\n                          <td class=\"col-name\">{{shareholder.entityName}}</td>\r\n                          <td class=\"col-country desktop-only\">{{shareholder?.country}}</td>\r\n                          <td class=\"col-own desktop-only\">{{shareholder?.ownership}}</td>\r\n                          <td class=\"col-act\">\r\n                          <button id=\"edit-shareholder\" type=\"button\" mat-stroked-button color=\"primary\" (click)=\"deleteShareholder(i)\">\r\n                              delete\r\n                          </button>\r\n                          </td>\r\n                      </tr>\r\n\r\n\r\n\r\n                  </table>\r\n                  <div class=\"no-shareholders\" *ngIf=\"shareholders.length==0\">\r\n                      no owners have been added\r\n                  </div>\r\n\r\n\r\n\r\n              </div>\r\n\r\n              <div class=\"err-container\">\r\n                <mat-error *ngIf=\"shFormSubmitted && shareholders.length==0\">at least one beneficial owner is required</mat-error>\r\n              </div>\r\n\r\n              <div class=\"btn-container\">\r\n                  <div>\r\n                      <button\r\n                          color=\"primary\"\r\n                          mat-stroked-button\r\n                          matStepperPrevious>\r\n                          back\r\n                      </button>\r\n                  </div>\r\n                  <div>\r\n                      <button class=\"dtd-button\" (click)=\"isBeneficialOwnerAdded()\" matStepperNext>\r\n                          continue\r\n                      </button>\r\n                  </div>\r\n              </div>\r\n\r\n            </form>\r\n        </mat-step>\r\n\r\n      </ng-container>\r\n\r\n      <mat-step label=\"contract\" [stepControl]=\"sigForm\">\r\n        <form [formGroup]=\"sigForm\">\r\n            <div class=\"tos\">\r\n                <h3 class=\"tos-header\">Dot to Dot &#8482; by KPMG Terms of Service</h3>\r\n                <div class=\"tos-content\" *ngIf=\"onboardingContract\" [innerHTML]=\"onboardingContract.contents\"></div>\r\n            </div>\r\n\r\n\r\n            <div>\r\n                <mat-checkbox color=\"primary\" #sig  [disabled]=\"sig.checked\" formControlName=\"signed\">I have read and agree to terms of service</mat-checkbox>\r\n\r\n            </div>\r\n\r\n            <div class=\"err-container\">\r\n              <mat-error *ngIf=\"sigFormSubmitted && sigForm.invalid\">must accept terms of service</mat-error>\r\n            </div>\r\n\r\n            <div class=\"btn-container\">\r\n                <div>\r\n                    <button\r\n                        color=\"primary\"\r\n                        mat-stroked-button\r\n                        matStepperPrevious>\r\n                        back\r\n                    </button>\r\n                </div>\r\n                <div *ngIf=\"category==='employer' ; else supplierPart\">\r\n                  <button class=\"dtd-button\" (click)=\"saveCompany()\" matStepperNext>\r\n                      submit\r\n                  </button>\r\n              </div>\r\n              <ng-template #supplierPart>\r\n                  <button class=\"dtd-button\" (click)=\"saveSupplier()\" matStepperNext>\r\n                      submit\r\n                  </button>\r\n              </ng-template>\r\n            </div>\r\n        </form>\r\n      </mat-step>\r\n\r\n      <ng-template matStepperIcon=\"edit\">\r\n        <mat-icon svgIcon=\"done\"></mat-icon>\r\n      </ng-template>\r\n      <ng-template matStepperIcon=\"error\">\r\n        <mat-icon svgIcon=\"exclamation\"></mat-icon>\r\n      </ng-template>\r\n    </mat-stepper>\r\n  </div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';\r\nimport { Store } from '@ngrx/store';\r\nimport { MatDialog } from '@angular/material/dialog';\r\n\r\nimport { IDocument, SERVICES } from '@shared';\r\nimport { RootState, Unsubscriber } from '@core';\r\nimport {\r\n  selectContract,\r\n  loadTos,\r\n  selectContactDetails,\r\n  updateBasicSupplierInfo,\r\n  updateBasicCompanyInfo,\r\n  updateCompanyInfo} from './../../store';\r\nimport { ContactDetails, IOnboardingEmployer, IOnboardingSupplier, IShareholder } from '../../models';\r\nimport { LocationsService } from 'src/app/public/services';\r\nimport { CONTACT_FORM_VALIDATION_MSGS } from 'src/app/public/constants';\r\nimport { ShareholderPopupComponent } from '../shareholder-popup/shareholder-popup.component';\r\n\r\n@Unsubscriber()\r\n@Component({\r\n  selector: 'maas-onboarding',\r\n  templateUrl: './onboarding-stepper.component.html',\r\n  styleUrls: ['./onboarding-stepper.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: STEPPER_GLOBAL_OPTIONS,\r\n      useValue: {\r\n        showError: true\r\n      }\r\n    }\r\n  ]\r\n})\r\n\r\nexport class OnboardingStepperComponent implements OnInit {\r\n  supForm = new UntypedFormGroup({\r\n    firstName: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.maxLength(50)]),\r\n    lastName: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.maxLength(50)]),\r\n    email: new UntypedFormControl({ value: '', disabled: true }, Validators.email),\r\n    contactPhone: new UntypedFormControl('', [Validators.required, Validators.minLength(10), Validators.maxLength(20)]),\r\n    companyName: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.maxLength(100)]),\r\n    jobTitle: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.maxLength(50)]),\r\n    country: new UntypedFormControl('', Validators.required),\r\n    services: new UntypedFormControl('', Validators.required),\r\n    state: new UntypedFormControl(''),\r\n    companyAddress: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.maxLength(255)]),\r\n    ein: new UntypedFormControl('', [Validators.required, Validators.minLength(9), Validators.maxLength(9)])\r\n  });\r\n\r\n  cmpForm = new UntypedFormGroup({\r\n    firstName: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.maxLength(50)]),\r\n    lastName: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.maxLength(50)]),\r\n    email: new UntypedFormControl({ value: '', disabled: true }, Validators.email),\r\n    contactPhone: new UntypedFormControl('', [Validators.required, Validators.minLength(10), Validators.maxLength(20)]),\r\n    companyName: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.maxLength(100)]),\r\n    jobTitle: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.maxLength(50)]),\r\n    country: new UntypedFormControl('', Validators.required)\r\n  });\r\n\r\n  cmpDtlForm = new UntypedFormGroup({\r\n    legalEntityName: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.maxLength(100)]),\r\n    foreignBusinessName: new UntypedFormControl('', [Validators.maxLength(100)]),\r\n    registeredAddress: new UntypedFormControl('', [Validators.required, Validators.minLength(10), Validators.maxLength(200)]),\r\n    countryOfIncorporation: new UntypedFormControl('', [Validators.required]),\r\n    clientDBA: new UntypedFormControl('', [Validators.maxLength(200)])\r\n  });\r\n\r\n  mgmtForm = new UntypedFormGroup({\r\n    ceoName: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.maxLength(200)]),\r\n    ceoAddress: new UntypedFormControl('', [Validators.required, Validators.minLength(10), Validators.maxLength(300)]),\r\n    cfoName: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.maxLength(200)]),\r\n    cfoAddress: new UntypedFormControl('', [Validators.required, Validators.minLength(10), Validators.maxLength(300)]),\r\n    keyManagementName: new UntypedFormControl('', [Validators.maxLength(200)]),\r\n    keyManagementAddress: new UntypedFormControl('', [Validators.maxLength(300)])\r\n  });\r\n\r\n  shFormSubmitted = false;\r\n  shForm = new UntypedFormGroup({\r\n    parentCompanyName: new UntypedFormControl('', [Validators.minLength(2), Validators.maxLength(100)]),\r\n    parentCompanyCountry: new UntypedFormControl('', []),\r\n    parentCompanyOwnership: new UntypedFormControl(null, [Validators.min(0), Validators.max(100)]),\r\n    ultimateBeneficialOwnerName1: new UntypedFormControl('', [Validators.required]),\r\n    ultimateBeneficialOwnerCountry1: new UntypedFormControl('', [Validators.required]),\r\n    ultimateBeneficialOwnership1: new UntypedFormControl(null, []),\r\n    ultimateBeneficialOwnerName2: new UntypedFormControl('', []),\r\n    ultimateBeneficialOwnerCountry2: new UntypedFormControl('', []),\r\n    ultimateBeneficialOwnership2: new UntypedFormControl(null, []),\r\n    ultimateBeneficialOwnerName3: new UntypedFormControl('', []),\r\n    ultimateBeneficialOwnerCountry3: new UntypedFormControl('', []),\r\n    ultimateBeneficialOwnership3: new UntypedFormControl(null, []),\r\n  }, { updateOn: 'submit' });\r\n\r\n  sigFormSubmitted = false;\r\n  sigForm = new UntypedFormGroup({\r\n    signed: new UntypedFormControl(false, [Validators.requiredTrue])\r\n  });\r\n\r\n  countries$ = this.locations.getCountries();\r\n  states$ = this.locations.getStates();\r\n\r\n  supmsg = CONTACT_FORM_VALIDATION_MSGS;\r\n  services = SERVICES;\r\n\r\n  shareholders: IShareholder[] = [];\r\n\r\n  onboardingId: string = '';\r\n  onboardingContract: IDocument | null = null;\r\n  category: string = '';\r\n\r\n  constructor(\r\n    private store: Store<RootState>,\r\n    private dialog: MatDialog,\r\n    private locations: LocationsService)\r\n    { };\r\n\r\n  ngOnInit(): void {\r\n    this.store.dispatch(loadTos())\r\n\r\n    this.store.select(selectContract)\r\n      .subscribe((contract: IDocument | null) => this.onboardingContract = contract);\r\n\r\n    this.supForm?.get('country')?.valueChanges.subscribe(v => {\r\n      const state = this.supForm.get('state');\r\n      state?.setValidators(v === 'US' ? [Validators.required] : null);\r\n      state?.updateValueAndValidity();\r\n    });\r\n\r\n    this.store.select(selectContactDetails)\r\n      .subscribe((contactDetails: ContactDetails | null) => {\r\n        if (!contactDetails) return;\r\n\r\n        this.onboardingId = contactDetails.onboardingId;\r\n        const category = contactDetails.category;\r\n\r\n        if (category === 'supplier')\r\n          this.supForm.patchValue(contactDetails);\r\n        else\r\n          this.cmpForm.patchValue(contactDetails);\r\n\r\n        this.category = category;\r\n      });\r\n\r\n  }\r\n\r\n  saveCompany() {\r\n    this.sigFormSubmitted = true;\r\n    if (this.cmpDtlForm.invalid || this.mgmtForm.invalid || this.shForm.invalid || this.sigForm.invalid) return;\r\n    if (this.onboardingContract === null) throw new Error('Onboarding contract failed to load');\r\n\r\n    const employerOnboardingInfo: IOnboardingEmployer = {\r\n      onboardingId: this.onboardingId,\r\n      documentId: this.onboardingContract.documentId,\r\n      ...this.cmpDtlForm.value,\r\n      ...this.mgmtForm.value,\r\n      ...this.shForm.value\r\n    }\r\n\r\n    this.store.dispatch(updateCompanyInfo({ employerOnboardingInfo }))\r\n  }\r\n\r\n  isBeneficialOwnerAdded() {\r\n    this.shFormSubmitted = true;\r\n  }\r\n\r\n  // save only 1st tab of company onboarding\r\n  saveCompanyBasic() {\r\n    const form = this.cmpForm;\r\n    if (form.invalid) return;\r\n    if (form.pristine) return;\r\n    this.store.dispatch(updateBasicCompanyInfo({ contactInfo: form.value }));\r\n  }\r\n\r\n  saveSupplier() {\r\n    this.sigFormSubmitted = true;\r\n    if (this.supForm.invalid || this.sigForm.invalid) return;\r\n    if (this.onboardingContract === null) throw new Error('Onboarding contract failed to load');\r\n\r\n    const supplierOnboardingInfo: IOnboardingSupplier = {\r\n      onboardingId: this.onboardingId,\r\n      documentId: this.onboardingContract.documentId,\r\n      ...this.supForm.value\r\n    }\r\n\r\n    this.store.dispatch(updateBasicSupplierInfo({ contactInfo: supplierOnboardingInfo }));\r\n  }\r\n\r\n  addShareholder() {\r\n    this.dialog\r\n      .open(ShareholderPopupComponent)\r\n      .afterClosed()\r\n      .subscribe((r: IShareholder) => {\r\n        if (!r || !r.entityName || !r.country) return;\r\n        const shareholder = r;\r\n        const index = this.shareholders.length + 1;\r\n        this.shareholders.push(shareholder);\r\n        this.setShareholder(index, shareholder.entityName, shareholder.country, shareholder.ownership);\r\n      });\r\n  }\r\n\r\n  private setShareholder(index: number, name: string, country: string, percent: number) {\r\n    if (!this.shForm) return;\r\n    this.shForm.get(`ultimateBeneficialOwnerName${index}`)?.setValue(name);\r\n    this.shForm.get(`ultimateBeneficialOwnerCountry${index}`)?.setValue(country);\r\n    this.shForm.get(`ultimateBeneficialOwnership${index}`)?.setValue(percent);\r\n  }\r\n\r\n  deleteShareholder(index: number) {\r\n    let shareholders = [...this.shareholders];\r\n    shareholders.splice(index, 1);\r\n    for (let index = 0; index < shareholders.length; index++) {\r\n      const sh = shareholders[index];\r\n      this.setShareholder(index + 1, sh.entityName, sh.country, sh.ownership);\r\n    }\r\n    this.shareholders = shareholders;\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { OnboardingStatusVerifiedGuard } from './services';\r\nimport { OnboardingStepperComponent } from './components';\r\n\r\nconst routes: Routes = [\r\n  {\r\n    path: '**',\r\n    component: OnboardingStepperComponent,\r\n    canActivate: [OnboardingStatusVerifiedGuard],\r\n    title: 'Complete my onboarding'\r\n  }\r\n]\r\n\r\n@NgModule({\r\n  imports: [RouterModule.forChild(routes)],\r\n  exports: [RouterModule]\r\n})\r\nexport class OnboardingRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\n\r\nimport { SharedModule } from '@shared';\r\nimport { LocationsService } from 'src/app/public/services/locations.service';\r\nimport { OnboardingRoutingModule } from './onboarding-routing.module';\r\nimport { ShareholderPopupComponent, OnboardingStepperComponent } from './components';\r\nimport { onboardingReducer, onboardingFeatureKey, OnboardingEffects } from './store';\r\nimport { OnboardingStatusVerifiedGuard, OnboardingService } from './services';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    OnboardingStepperComponent,\r\n    ShareholderPopupComponent,\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    SharedModule,\r\n    MatStepperModule,\r\n    OnboardingRoutingModule,\r\n    StoreModule.forFeature(onboardingFeatureKey, onboardingReducer),\r\n    EffectsModule.forFeature([OnboardingEffects]),\r\n  ],\r\n  providers: [\r\n    LocationsService,\r\n    OnboardingService,\r\n    OnboardingStatusVerifiedGuard\r\n  ],\r\n})\r\nexport class OnboardingModule { }\r\n"],"x_google_ignoreList":[]}