{"version":3,"file":"967d89.js","mappings":"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","sources":["webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/otp-input/otp-input.component.ts","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/otp-input/otp-input.component.html","webpack://@newday/servicing-main/./src/app/components/expander/expander-component.ts","webpack://@newday/servicing-main/./src/app/components/expander/expander-component.html","webpack://@newday/servicing-main/./src/app/modules/components/expander/expander.module.ts","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/otp/otp-form-control.component.ts","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/authenticated-sca-options/authenticated-sca-options.component.ts","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/authenticated-sca-options/authenticated-sca-options.service.ts","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/authenticated-sca-options/authenticated-sca-options.component.html","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/directives/moveFocusOnNumberInput.directive.ts","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/select-otp-channel-form/select-otp-channel-form.component.ts","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/select-otp-channel-form/select-otp-channel-form.component.html","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/dynamic-account-question-form/dynamic-account-question-form.component.ts","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/dynamic-account-question-form/dynamic-account-question-form.component.html","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/input-code-form/input-code-form.component.ts","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/input-code-form/input-code-form.component.html","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/error-section/error-section.component.ts","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/error-section/error-section.component.html","webpack://@newday/servicing-main/./src/app/components/form/strong-customer-authentication/resend-countdown/resend-countdown.component.ts","webpack://@newday/servicing-main/./src/app/modules/components/strong-customer-authentication/strong-customer-authentication.module.ts","webpack://@newday/servicing-main/./src/app/directives/invalidInputFocus.directive.ts","webpack://@newday/servicing-main/./src/app/modules/directives/invalidInputFocusDirective/invalidInputFocusDirective.module.ts","webpack://@newday/servicing-main/./src/app/services/strong-customer-authentication/model.ts"],"sourcesContent":["import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { WindowRef } from '../../../../services/windowRef';\nimport { ConfigService } from '../../../../services/configuration.service';\n\n@Component({\n selector: 'otp-input',\n templateUrl: './otp-input.component.html',\n})\nexport class OtpInputComponent implements AfterViewInit {\n @Input()\n submitted: boolean = false;\n\n @Input()\n fieldName: string = 'code';\n\n @Input()\n requiredErrorMessage: string;\n\n @Input() ariaLabel: string;\n\n get fieldNameError(): string {\n return `${this.fieldName}Error`;\n }\n\n get fieldErrorTestId(): string {\n return `text-inline-required-${this.fieldName}`;\n }\n\n @Output()\n onChange = new EventEmitter();\n codeInput = new FormControl(\n null,\n Validators.compose([Validators.required, Validators.pattern('^[0-9]{6}$')])\n );\n isMobileView: boolean;\n\n constructor(\n private windowRef: WindowRef,\n private configService: ConfigService\n ) {}\n\n ngOnInit() {\n this.isMobileView = this.configService.Get('mobileView');\n }\n\n ngAfterViewInit() {\n this.windowRef.getElementById(this.fieldName).focus();\n }\n\n onInputChangeHandler(): void {\n this.onChange.emit(this.submit());\n }\n\n keyPress(event: KeyboardEvent) {\n // Avoid enter key being disabled\n if (event.key === 'Enter') return true;\n return /^([0-9])$/.test(event.key);\n }\n\n public submit(): string {\n return this.codeInput.value.toLocaleString();\n }\n\n public reset(): void {\n this.codeInput.setValue('');\n }\n\n public isValid(): boolean {\n return this.codeInput.valid;\n }\n\n public showError(): boolean {\n return this.requiredErrorMessage && !this.isValid() && this.submitted;\n }\n}\n","export default \"
\\n \\n\\n
\\n \\n {{\\n requiredErrorMessage\\n }}\\n \\n
\\n
\\n\";","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'expander',\n templateUrl: './expander-component.html',\n})\nexport class ExpanderComponent {\n private readonly SPACEBAR_KEYCODE = 32;\n private readonly ENTER_KEYCODE = 13;\n\n private isExpandedValue: boolean;\n\n @Input()\n public heading: string;\n\n @Output()\n public isExpandedChange: EventEmitter = new EventEmitter();\n\n @Input()\n public get isExpanded() {\n return this.isExpandedValue;\n }\n\n public set isExpanded(value: boolean) {\n this.isExpandedValue = value;\n this.isExpandedChange.emit(this.isExpandedValue);\n }\n\n constructor() {\n this.isExpanded = true;\n }\n\n public invertExpansion(): void {\n this.isExpanded = !this.isExpanded;\n }\n\n public onKeyPress(e: KeyboardEvent): void {\n // Keycode for ENTER should not be required (the button should detect it as 'click' event)\n if (\n e.keyCode === this.SPACEBAR_KEYCODE ||\n e.keyCode === this.ENTER_KEYCODE\n ) {\n e.preventDefault();\n this.invertExpansion();\n }\n }\n}\n","export default \"

\\n \\n {{ heading }}\\n \\n

\\n\";","import { NgModule } from '@angular/core';\nimport { ExpanderComponent } from '../../../components/expander/expander-component';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [ExpanderComponent],\n exports: [ExpanderComponent],\n imports: [RouterModule, CommonModule],\n})\nexport class ExpanderModule {}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n Validator,\n ValidationErrors,\n} from '@angular/forms';\nimport { OtpChannel } from '../../../../services/strong-customer-authentication/model';\nimport { OtpInputComponent } from '../otp-input/otp-input.component';\nimport { AnalyticsService } from '../../../../services/analytics.service';\nimport { GTMTracking } from '../../../../enums/google-analytics-tracking';\n\n@Component({\n selector: 'otp-form-control',\n template: `\n
\n \n \n\n

\n You have reached your maximum resend limit.\n

\n\n

\n \n \n \n

\n
\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n // eslint-disable-next-line no-use-before-define\n useExisting: forwardRef(() => OtpFormControlComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n // eslint-disable-next-line no-use-before-define\n useExisting: OtpFormControlComponent,\n },\n ],\n})\nexport class OtpFormControlComponent\n implements ControlValueAccessor, Validator\n{\n @ViewChild('otpInputComponent') otpInputComponent: OtpInputComponent;\n OtpChannel: typeof OtpChannel = OtpChannel;\n readonly VALID_OTP_LENGTH = 6;\n // deprecated\n @Input()\n sentTo: string;\n @Input()\n otpChannel: OtpChannel;\n @Input()\n isResent: boolean;\n @Input()\n resendLimitReached: boolean;\n @Input()\n formName: string;\n @Output()\n resend = new EventEmitter();\n @Output()\n callAgain = new EventEmitter();\n onTouch: Function = Function.prototype;\n @Input()\n isDisabled: boolean;\n @Input()\n isSubmitted: boolean;\n\n private _otpValue: string;\n private onChange: Function = Function.prototype;\n private control: AbstractControl;\n\n constructor(private analyticsService: AnalyticsService) {}\n\n set otpValue(newValue: string) {\n this._otpValue = newValue;\n this.onChange(this._otpValue);\n }\n\n get otpValue(): string {\n return this._otpValue;\n }\n\n get message() {\n return this.otpChannel == OtpChannel.Text\n ? 'Your OTP has been resent'\n : \"We've just called you and provided a new code\";\n }\n\n resendHandler(): void {\n if (this.otpChannel === OtpChannel.Text) {\n this.onResend();\n } else {\n this.requestCallAgain();\n }\n }\n\n writeValue(value: string): void {\n this.otpValue = value;\n }\n\n registerOnChange(fn: (_: any) => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onTouch = fn;\n }\n\n setDisabledState?(disabled: boolean): void {\n this.isDisabled = disabled;\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n if (!this.control) {\n this.control = c;\n }\n\n if (!this.control.value) {\n return {\n otp: true,\n };\n }\n\n const otpLength = this.control.value.length;\n\n if (otpLength !== this.VALID_OTP_LENGTH) {\n return {\n otp: {\n actualLength: otpLength,\n expectedLength: this.VALID_OTP_LENGTH,\n },\n };\n }\n\n return null;\n }\n\n hasError(): boolean {\n return (\n this.control &&\n this.control.invalid &&\n (this.control.touched || this.control.dirty)\n );\n }\n\n userChangedDefaultValues(): boolean {\n return this.control.dirty;\n }\n\n private onResend(): void {\n this.isResent = false;\n this.resend.emit();\n if (this.formName === 'register') {\n this.analyticsService.trackCtaActions(GTMTracking.ResendOtp);\n }\n }\n\n private requestCallAgain(): void {\n this.otpValue = undefined;\n this.callAgain.emit();\n }\n}\n","import {\n EventEmitter,\n Component,\n Input,\n Output,\n ViewChild,\n AfterViewInit,\n} from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport {\n PasscodeChallenge,\n PasscodeDigit,\n} from '../../../../services/authentication.service';\nimport { BrandedRouter } from '../../../../services/brandedRouter';\nimport {\n AuthenticationFactor,\n StepUpModel,\n IOtpResponse,\n IStepUpResult,\n IScaChallenge,\n OtpChannel,\n} from '../../../../services/strong-customer-authentication/model';\nimport { PasscodeComponent } from '../../../passcode/passcode.component';\nimport { AccountSummaryService } from '../../../../services/accountSummary.service';\nimport { BrowserService } from '../../../../services/browser.service';\nimport { AuthenticatedScaOptionsService } from './authenticated-sca-options.service';\nimport { BrandService } from '../../../../services/brand.service';\nimport { PopUpComponent } from '../../../pop-up/pop-up.component';\nimport { AssetConfigVariableService } from '../../../../services/asset-config-variable.service';\n\nexport enum ScaModuleStep {\n Passcode = 'Passcode',\n PhoneSelect = 'PhoneSelect',\n CodeValidation = 'CodeValidation',\n PhoneCalling = 'PhoneCalling',\n Error = 'Error',\n Authenticated = 'Authenticated',\n}\n\n@Component({\n selector: 'authenticated-sca-options',\n templateUrl: './authenticated-sca-options.component.html',\n})\nexport class AuthenticatedSCAOptionsComponent implements AfterViewInit {\n OtpChannel = OtpChannel;\n AuthenticationFactor = AuthenticationFactor;\n ScaModuleStep: typeof ScaModuleStep = ScaModuleStep;\n @Output()\n hasScaOptions = new EventEmitter();\n @Output()\n submitted = new EventEmitter();\n @Output()\n tryAgainClicked = new EventEmitter();\n @Output()\n onError = new EventEmitter();\n @Output()\n onClose = new EventEmitter();\n @Input()\n set scaChallenge(scaChallenge: IScaChallenge) {\n this._scaChallenge = scaChallenge;\n if (scaChallenge) {\n if (!this.form) {\n this.init();\n } else {\n this.resetForm();\n }\n }\n }\n get scaChallenge(): IScaChallenge {\n return this._scaChallenge;\n }\n @Input()\n isSubmitting: boolean;\n @Input()\n set submitResult(submitResult: IStepUpResult) {\n if (!submitResult) {\n return;\n }\n\n if (typeof submitResult === 'boolean' && submitResult === true) {\n this.goToStep(ScaModuleStep.Authenticated);\n return;\n }\n\n if (submitResult.accountLocked) {\n this.accountLocked = true;\n }\n\n this._submitResult = submitResult;\n\n if (\n this._submitResult.accountLocked === false &&\n this._submitResult.isSuccess === false\n ) {\n if (this.showErrors) {\n this.goToStep(ScaModuleStep.Error);\n } else {\n this.onError.emit();\n }\n }\n }\n get submitResult(): IStepUpResult {\n return this._submitResult;\n }\n\n @Input()\n showErrors = true;\n\n public imageRootPath: string = '';\n authenticationFactor: AuthenticationFactor;\n availableFactors: AuthenticationFactor[];\n passcodeInputs;\n contactUsLink: string;\n otpResponse: IOtpResponse;\n form: FormGroup;\n step: ScaModuleStep;\n mobileNumber: string;\n homeNumber: string;\n isResend = false;\n notMyNumberDropdownOpen = false;\n error = false;\n accountLocked = false;\n brand: string;\n @ViewChild('passcode') passcodeComponent: PasscodeComponent;\n @ViewChild('popup', { static: true }) popUpComponent: PopUpComponent;\n\n private _submitResult: IStepUpResult;\n private _scaChallenge: IScaChallenge;\n private passcodeFormControl: FormControl;\n private otpChannelFormControl: FormControl;\n private initialized = false;\n\n constructor(\n private scaService: AuthenticatedScaOptionsService,\n private accountSummaryService: AccountSummaryService,\n private browserService: BrowserService,\n private assetConfigVariableService: AssetConfigVariableService,\n brandService: BrandService,\n brandedRouter: BrandedRouter\n ) {\n this.contactUsLink = brandedRouter.getBrandedLink('/help/contact-us');\n this.brand = brandService.getBrand();\n }\n\n async ngOnInit() {\n this.imageRootPath =\n await this.assetConfigVariableService.getImageRootPath();\n }\n\n init(): void {\n this.form = new FormGroup({});\n\n if (\n !this.scaChallenge.isOtpRequired &&\n !this.scaChallenge.passcodeChallenge\n ) {\n this.authenticate();\n return;\n }\n\n if (this.scaChallenge.isOtpRequired) {\n this.initPhoneNumbers();\n this.setOtpAuthenticationFactor();\n }\n\n if (this.scaChallenge.passcodeChallenge) {\n this.goToStep(ScaModuleStep.Passcode);\n this.initPasscodeField();\n } else {\n this.setUpPhoneSelection();\n }\n\n this.emitScaOptions();\n }\n\n ngAfterViewInit(): void {\n this.initialized = true;\n this.emitScaOptions();\n }\n\n closePopup(): void {\n this.browserService.setPopUpActive(false, false);\n this.onClose.emit();\n }\n\n refreshPopupSize(): void {\n setTimeout(() => this.browserService.incrementResizeCount());\n }\n\n getStepUpModel(): StepUpModel {\n this.touchControls();\n\n if (this.form.invalid) {\n return;\n }\n\n const scaData: StepUpModel = {\n passcodeDigits: this.getPasscodeValue(),\n verificationToken: this.scaChallenge.verificationToken,\n };\n\n if (this.authenticationFactor === AuthenticationFactor.OTP) {\n scaData.otpValue = this.scaChallenge.isOtpRequired\n ? this.form.controls[AuthenticationFactor.OTP].value\n : undefined;\n }\n\n return scaData;\n }\n\n async requestResendOTP(): Promise {\n if (this.isSubmitting) {\n return;\n }\n\n this.error = false;\n this.form.controls[AuthenticationFactor.OTP].reset();\n\n try {\n this.otpResponse = await this.scaService.requestResendOTP(\n this.scaChallenge.verificationToken,\n this.otpChannelFormControl.value\n );\n\n this.scaChallenge.verificationToken = this.otpResponse.verificationToken;\n this.scaChallenge.canResend = this.otpResponse.canResend;\n\n this.isResend = true;\n } catch {\n this.error = true;\n }\n }\n\n async callAgain(): Promise {\n this.otpChannelFormControl.setValue(OtpChannel.Call);\n await this.requestResendOTP();\n this.goToCallScreen();\n }\n\n continue(): void {\n this.passcodeComponent.submit();\n\n if (this.scaChallenge.isOtpRequired) {\n this.setUpPhoneSelection();\n } else {\n this.submitted.emit(this.getStepUpModel());\n }\n }\n\n async sendCode(): Promise {\n this.error = false;\n this.isSubmitting = true;\n this.refreshModal();\n\n try {\n this.otpResponse = await this.scaService.requestSendOTP(\n this.scaChallenge.verificationToken,\n this.otpChannelFormControl.value\n );\n\n this.scaChallenge.verificationToken = this.otpResponse.verificationToken;\n this.scaChallenge.canResend = this.otpResponse.canResend;\n this.isSubmitting = false;\n\n if (this.otpChannelFormControl.value === OtpChannel.Call) {\n this.goToCallScreen();\n } else {\n this.goToStep(ScaModuleStep.CodeValidation);\n }\n } catch {\n this.setErrorMessage();\n }\n }\n\n authenticate(): void {\n this.submitted.emit(this.getStepUpModel());\n }\n\n tryAgain(): void {\n this.tryAgainClicked.emit();\n this.isSubmitting = true;\n this.scaChallenge = this.submitResult = undefined;\n }\n\n isPasscodeValid(): boolean {\n return (\n this.passcodeFormControl &&\n this.passcodeFormControl.valid &&\n this.passcodeComponent &&\n this.passcodeComponent.inputted\n );\n }\n\n getErrorMessage(): string {\n if (this.otpResponse && !this.otpResponse.canResend) {\n return '

You have reached your resend limit.

Please enter one of the OTP codes previously sent to you.';\n } else if (this.submitResult) {\n if (this.submitResult.remainingAttempts) {\n return `

You have ${this.submitResult.remainingAttempts} ${\n this.submitResult.remainingAttempts > 1 ? 'tries' : 'try'\n } remaining.

\n ${\n this.submitResult.remainingAttempts === 1\n ? 'Your account will be locked if incorrect.'\n : 'At least one of the credentials you have entered is incorrect. Please try again.'\n } `;\n }\n }\n }\n\n getSelectedOtpChannel(): OtpChannel {\n if (!this.otpChannelFormControl) {\n return OtpChannel.Text;\n }\n\n return this.otpChannelFormControl.value || OtpChannel.Text;\n }\n\n get isDisabled(): boolean {\n return this.form && this.form.invalid;\n }\n\n private goToCallScreen(): void {\n this.goToStep(ScaModuleStep.PhoneCalling);\n\n setTimeout(() => {\n this.goToStep(ScaModuleStep.CodeValidation);\n }, 5000);\n }\n\n private emitScaOptions(): void {\n if (this.step && this.initialized) {\n setTimeout(() => this.hasScaOptions.emit());\n }\n }\n\n private setUpPhoneSelection(): void {\n this.otpChannelFormControl = new FormControl(\n this.mobileNumber ? OtpChannel.Text : OtpChannel.Call,\n [Validators.required]\n );\n this.form.addControl('authCodePreference', this.otpChannelFormControl);\n this.goToStep(ScaModuleStep.PhoneSelect);\n }\n\n private getPasscodeValue(): PasscodeDigit[] {\n if (!this.form.controls[AuthenticationFactor.Passcode]) {\n return undefined;\n }\n\n return this.form.controls[AuthenticationFactor.Passcode].value;\n }\n\n private resetForm(): void {\n if (this.scaChallenge.passcodeChallenge) {\n this.initPasscodeField();\n this.goToStep(ScaModuleStep.Passcode);\n } else {\n this.goToStep(ScaModuleStep.PhoneSelect);\n }\n\n this.isResend = this.error = false;\n this.form.reset();\n this.isSubmitting = false;\n if (this.otpChannelFormControl) {\n this.otpChannelFormControl.setValue(this.getSelectedOtpChannel());\n }\n }\n\n private setErrorMessage(): void {\n this.isSubmitting = false;\n this.error = true;\n }\n\n private initPhoneNumbers(): void {\n this.accountSummaryService.getAccountSummary().then((result) => {\n this.mobileNumber = result.customer.mobileTelephone;\n this.homeNumber = result.customer.homeTelephone;\n });\n }\n\n private initPasscodeField(): void {\n if (!this.scaChallenge.passcodeChallenge) {\n return;\n }\n\n if (!this.passcodeFormControl) {\n this.passcodeFormControl = new FormControl('', [Validators.required]);\n this.form.addControl(\n AuthenticationFactor.Passcode,\n this.passcodeFormControl\n );\n }\n\n this.passcodeInputs = this.getPasscodeArray(\n this.scaChallenge.passcodeChallenge\n );\n }\n\n private setOtpAuthenticationFactor(): void {\n if (this.isSubmitting) {\n return;\n }\n\n this.authenticationFactor = AuthenticationFactor.OTP;\n this.form.addControl(AuthenticationFactor.OTP, new FormControl());\n }\n\n private getPasscodeArray(challenge: PasscodeChallenge): boolean[] {\n const arr = Array(challenge.passcodeLength).fill(false);\n\n challenge.passcodeDigits.forEach((digit) => {\n arr[digit.position] = true;\n });\n\n return arr;\n }\n\n private touchControls(): void {\n Object.keys(this.form.controls).forEach((key) =>\n this.form.controls[key].markAsTouched()\n );\n }\n\n private goToStep(step: ScaModuleStep): void {\n this.step = step;\n this.refreshModal();\n }\n\n private refreshModal(): void {\n setTimeout(() => {\n this.browserService.incrementResizeCount();\n this.popUpComponent.setFocusOrder();\n });\n }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {\n IOtpResponse,\n IStepUpOtpRequest,\n OtpChannel,\n} from '../../../../services/strong-customer-authentication/model';\n\n@Injectable()\nexport class AuthenticatedScaOptionsService {\n constructor(\n private readonly http: HttpClient,\n @Inject('ORIGIN_URL') private originUrl: string\n ) {}\n\n async requestResendOTP(\n verificationToken: string,\n channel: OtpChannel\n ): Promise {\n return this.http\n .post(\n this.originUrl + '/api/StepUp/ResendOtp',\n AuthenticatedScaOptionsService.createRequest(verificationToken, channel)\n )\n .toPromise();\n }\n\n async requestSendOTP(\n verificationToken: string,\n channel: OtpChannel\n ): Promise {\n return this.http\n .post(\n this.originUrl + '/api/StepUp/SendOtp',\n AuthenticatedScaOptionsService.createRequest(verificationToken, channel)\n )\n .toPromise();\n }\n\n private static createRequest(\n verificationToken: string,\n channel: OtpChannel\n ): IStepUpOtpRequest {\n return {\n verificationToken,\n channel,\n };\n }\n}\n","export default \"\\n
\\n \\n
\\n \\n\\n \\n
\\n \\n\\n
Authentication required
\\n
\\n We need to perform a few security checks for this action\\n
\\n
\\n
\\n\\n
\\n \\n \\n
\\n Please enter the requested numbers of your 6 digit passcode below:\\n
\\n
\\n

6 digit passcode

\\n \\n \\n
\\n \\n {{ scaChallenge.isOtpRequired ? 'Continue' : 'Submit' }}\\n \\n \\n\\n \\n \\n
\\n We’re now going to send a 6 digit authentication code. Please select\\n how you would like to recieve this.\\n
\\n \\n
\\n
\\n \\n

\\n We will text the code to you.\\n

\\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n

\\n We will ring your landline and read the code to you. This is an\\n automated call.\\n

\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n\\n \\n If we have the incorrect number(s) for you, please contact us\\n customer services\\n to update your personal details.\\n
\\n \\n\\n \\n\\n \\n {{\\n getSelectedOtpChannel() == OtpChannel.Text ? 'SEND CODE' : 'CALL ME'\\n }}\\n \\n \\n\\n
\\n

We're calling you

\\n\\n
\\n We will now call {{ homeNumber }}. Please be ready to take note of your 6 digit OTP.\\n
\\n\\n
\\n \\n\\n \\n \\n
\\n Please enter your 6 digit OTP sent to:\\n {{\\n getSelectedOtpChannel() === OtpChannel.Text\\n ? mobileNumber\\n : homeNumber\\n }}\\n
\\n \\n \\n \\n\\n \\n\\n \\n AUTHENTICATE\\n \\n \\n\\n
\\n

\\n Something has been entered incorrectly\\n

\\n\\n
\\n
\\n
\\n\\n \\n\\n \\n Try Again\\n \\n \\n\\n
\\n
\\n
\\n
\\n \\n
\\n

Authenticated

\\n
\\n Thanks, your action has been completed. You may now close this\\n window.\\n
\\n
\\n
\\n
\\n \\n CLOSE\\n \\n
\\n
\\n
\\n
\\n \\n\\n \\n
\\n \\n We are currently experiencing some technical difficulties. We’re aware\\n of the problem and we’re working hard to resolve it as soon as\\n possible. Please try again later.\\n
\\n \\n
\\n \\n\\n\";","import { Directive, HostListener, Renderer2, ElementRef } from '@angular/core';\n\n@Directive({\n selector: 'input[move-focus-on-number-input]',\n})\nexport class MoveFocusOnNumberInputDirective {\n private numberKeys = Array.from(Array(10).keys()).map(String);\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('keyup', ['$event'])\n onKeyUp(e) {\n if (this.numberKeys.indexOf(e.key) > -1) {\n try {\n const currentId: number = +this.elementRef.nativeElement.id.slice(-1);\n if (currentId < 5) {\n const nextId: number = currentId + 1;\n const element = this.renderer.selectRootElement('#otpdigit' + nextId);\n element.focus();\n element.setSelectionRange(0, 1);\n }\n } catch {\n return;\n }\n }\n }\n\n @HostListener('click', ['$event'])\n onClick() {\n this.elementRef.nativeElement.focus();\n this.elementRef.nativeElement.setSelectionRange(0, 1);\n }\n}\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { OtpChannel } from '../../../../services/strong-customer-authentication/model';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { BrandedRouter } from '../../../../services/brandedRouter';\nimport { WindowRef } from '../../../../services/windowRef';\nimport { AnalyticsService } from '../../../../services/analytics.service';\nimport { GTMTracking } from '../../../../enums/google-analytics-tracking';\n\n@Component({\n selector: 'select-otp-channel-form',\n templateUrl: 'select-otp-channel-form.component.html',\n})\nexport class SelectOtpChannelFormComponent implements OnInit {\n @Input()\n public isSubmitting: boolean;\n @Input()\n public mobileNumber: string;\n @Input()\n public homeNumber: string;\n @Input()\n formName: string;\n @Output()\n onValid = new EventEmitter();\n\n public notMyNumberDropdownOpen: boolean;\n public form: FormGroup;\n public authCodePreference: FormControl;\n public OtpChannel = OtpChannel;\n public contactUsLink: string;\n\n constructor(\n private brandedRouter: BrandedRouter,\n private windowRef: WindowRef,\n private analyticsService: AnalyticsService\n ) {}\n\n ngOnInit() {\n this.notMyNumberDropdownOpen = false;\n this.contactUsLink = this.brandedRouter.getBrandedLink('/help/contact-us');\n this.createForm();\n }\n\n createForm() {\n this.authCodePreference = new FormControl('', [Validators.required]);\n this.form = new FormGroup({\n authCodePreference: this.authCodePreference,\n });\n this.authCodePreference.setValue(\n this.mobileNumber ? OtpChannel.Text : OtpChannel.Call\n );\n this.windowRef.setFocusById('authcode-by-text');\n }\n\n getSelectedOtpChannel(): OtpChannel {\n if (!this.authCodePreference) {\n return OtpChannel.Text;\n }\n return this.authCodePreference.value || OtpChannel.Text;\n }\n\n otpTracking(e: Event, trackingName: string) {\n e.preventDefault();\n if (this.formName === 'register') {\n this.analyticsService.trackCtaActions(GTMTracking[trackingName]);\n }\n }\n\n public onSubmit() {\n this.onValid.emit(this.authCodePreference.value);\n if (this.formName === 'register') {\n this.authCodePreference.value === 0\n ? this.analyticsService.trackCtaActions(GTMTracking.OtpText)\n : this.analyticsService.trackCtaActions(GTMTracking.OtpCall);\n }\n }\n}\n","export default \"
\\n \\n
\\n
\\n \\n

\\n We will text the OTP to you.\\n

\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n \\n

\\n We will ring your landline and read the OTP to you. This is an automated\\n call.\\n

\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n {{ getSelectedOtpChannel() === OtpChannel.Text ? 'SEND OTP' : 'CALL ME' }}\\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n\\n \\n
\\n If we have the incorrect number(s) for you, please contact us\\n customer services\\n to update your personal details.\\n
\\n\\n\";","import {\n Component,\n EventEmitter,\n Input,\n Output,\n OnChanges,\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { IGetSecurityQuestionResponse } from '../../../../services/strong-customer-authentication/model';\nimport { UtilityService } from '../../../../services/utility.service';\nimport { ContentService } from '../../../../services/content.service';\nimport { IContentSecurityQuestions } from '../../../../models/content';\nimport { GTMTracking } from '../../../../enums/google-analytics-tracking';\n\n@Component({\n selector: 'dynamic-account-question-form',\n templateUrl: 'dynamic-account-question-form.component.html',\n})\nexport class DynamicAccountQuestionFormComponent implements OnChanges {\n @Input()\n question: IGetSecurityQuestionResponse;\n @Input()\n loading = true;\n @Input()\n showAnotherQuestionLink = false;\n @Input()\n showIHaveAnUnlockCodeLink = false;\n @Input()\n showDontKnowTheAnswerLink = false;\n @Input()\n showEnterPasswordInsteadLink = false;\n @Input()\n contactUsLink = null;\n @Input()\n contactUsText = null;\n @Output()\n onShowAnotherQuestion = new EventEmitter();\n @Output()\n onUseUnlockCode = new EventEmitter();\n @Output()\n onAnswerUnknown = new EventEmitter();\n @Output()\n onUsePassword = new EventEmitter();\n @Output()\n onSubmit = new EventEmitter();\n @Output()\n trackEvent = new EventEmitter();\n @Output()\n trackEventPageView = new EventEmitter();\n\n private securityQuestionsTexts: IContentSecurityQuestions;\n dynamicAccountQuestionForm: FormGroup;\n answer: FormControl;\n\n constructor(\n private utilityService: UtilityService,\n private contentService: ContentService\n ) {\n this.loadContentData();\n this.createForm();\n }\n\n ngOnChanges(changes) {\n if (!this.showAnotherQuestionLink) {\n this.trackEventPageView.emit(GTMTracking.AnsweringSecurityQuestionTwo);\n }\n }\n\n get formValid() {\n return (\n this.dynamicAccountQuestionForm.dirty &&\n this.dynamicAccountQuestionForm.valid\n );\n }\n\n get questionText() {\n return this.securityQuestionsTexts[this.question.question];\n }\n\n selectAnswerQuestionTrack() {\n const eventTrackingName = this.showAnotherQuestionLink\n ? GTMTracking.RegistrationSecurityQuestionOneAnswer\n : GTMTracking.RegistrationSecurityQuestionTwoAnswer;\n this.trackEvent.emit(eventTrackingName);\n }\n\n createForm() {\n this.answer = new FormControl({});\n this.dynamicAccountQuestionForm = new FormGroup({\n answer: this.answer,\n });\n }\n\n formatAnswer(input: string) {\n const value = Number(input);\n if (isNaN(value)) {\n return input;\n }\n return this.utilityService.formatCurrency(value);\n }\n\n onSubmitAnswer() {\n this.onSubmit.emit(this.answer.value);\n }\n\n onShowAnotherQuestionClick(e: Event) {\n e.preventDefault();\n this.trackEvent.emit(GTMTracking.RegistrationShowMeAnotherQuestion);\n this.onShowAnotherQuestion.emit();\n }\n\n onUnlockCodeClick(e: Event) {\n e.preventDefault();\n this.onUseUnlockCode.emit();\n }\n\n onAnswerUnknownClick(e: Event) {\n e.preventDefault();\n const eventTrackingName = this.showAnotherQuestionLink\n ? GTMTracking.RegistrationDoNotKnowTheAnswer\n : GTMTracking.RegistrationDoNotKnowTheAnswerTwo;\n this.trackEvent.emit(eventTrackingName);\n this.onAnswerUnknown.emit();\n }\n\n onEnterPasswordInsteadClick(e: Event) {\n e.preventDefault();\n this.onUsePassword.emit();\n }\n\n private loadContentData(): void {\n this.contentService.getData().then((content) => {\n this.securityQuestionsTexts = content.securityQuestions;\n });\n }\n}\n","export default \"