{"version":3,"sources":["core/components/CtaContainer/CtaContainer.style.ts","core/components/CtaContainer/CtaContainer.tsx","core/components/Collapse/Collapse.tsx","core/components/Card/Card.tsx","core/components/DynamicSubLayout/DynamicSubLayout.tsx","pods/forms/components/structural/UpdatedCtrlHolder/UpdatedCtrlHolder.tsx","core/sitecore/jss-proxy-components/JssImage/JssImage.style.ts","core/sitecore/jss-proxy-components/JssImage/JssImage.tsx","core/components/DynamicSubLayout/DynamicSubLayout.style.ts","core/analytics/TrackLinksWithin/TrackLinksWithin.tsx","core/components/Card/Card.style.ts","pods/theme/components/BackgroundContainer/BackgroundContainer.style.ts","core/styles/Containers.ts","pods/forms/components/structural/ErrorSummary/ErrorSummary.style.ts","pods/forms/components/structural/ErrorSummary/ErrorSummary.tsx","pods/forms/components/structural/CtrlHolder/CtrlHolder.tsx","pods/forms/components/inputs/TextArea/TextArea.style.ts","pods/forms/components/inputs/TextArea/TextArea.tsx","pods/forms/components/inputs/AddressAutocomplete/AddressAutocomplete.style.ts","pods/forms/components/inputs/AddressAutocomplete/AddressAutocomplete.tsx","pods/forms/components/inputs/AddressAutocomplete/AddressAutocompleteAxios.tsx","pods/forms/components/inputs/FundsAutocomplete/FundsAutocomplete.style.ts","pods/forms/components/inputs/FundsAutocomplete/FundsAutocomplete.tsx","pods/forms/components/base/FormRichText/FormRichText.tsx","pods/forms/components/structural/Section/Section.style.ts","pods/forms/components/structural/Section/Section.tsx","pods/forms/components/structural/FormSubLayout/FormSubLayout.style.ts","pods/forms/components/structural/FormSubLayout/FormSubLayout.tsx","pods/forms/components/structural/CardContainer/CardContainer.tsx","pods/forms/components/related/FormReview/FormReview.style.ts","pods/forms/components/related/FormReview/FormReview.tsx","pods/forms/components/related/HelpLinkModal/HelpLinkModal.style.ts","pods/forms/components/related/HelpLinkModal/HelpLinkModal.tsx","pods/forms/components/inputs/Captcha/Captcha.tsx","pods/forms/components/related/LoadingContent/LoadingContent.style.ts","pods/forms/components/related/LoadingContent/LoadingContent.tsx","pods/forms/components/related/ModalInCta/ModalInCta.tsx","pods/forms/_formBuilder.components.tsx","pods/forms/_formBuilder.actions.ts","pods/forms/FormBuilder.tsx","pods/theme/components/BackgroundContainer/BackgroundContainer.types.ts","pods/theme/components/BackgroundContainer/BackgroundContainer.tsx","core/sitecore/experience-editor/ExperienceEditorContent/ExperienceEditorContent.content.ts","core/sitecore/experience-editor/ExperienceEditorContent/ExperienceEditorContent.tsx","core/utils/accessibility-utils.ts","pods/forms/_formBuilder.content.ts","core/components/LoadingSpinner/LoadingSpinner.style.ts","core/components/LoadingSpinner/LoadingSpinner.tsx","pods/forms/components/base/Label/Label.tsx","pods/forms/components/structural/UpdatedCtrlHolder/UpdatedCtrlHolder.style.ts","pods/forms/components/base/HelpText/HelpText.style.ts","pods/forms/components/base/HelpText/HelpText.tsx","core/sitecore/experience-editor/ExperienceEditorContent/ExperienceEditorContent.style.ts","pods/forms/_formBuilder.validators.ts","core/sitecore/experience-editor/ExperienceEditorButton/ExperienceEditorButton.tsx","pods/forms/components/inputs/Text/Text.tsx","core/components/Tooltip/Tooltip.tsx","core/components/Tooltip/Tooltip.style.ts","pods/forms/components/related/AddressFields/AddressFields.config.ts","pods/forms/components/inputs/RadioCheckbox/RadioCheckbox.style.ts","pods/forms/components/inputs/RadioCheckbox/RadioCheckbox.tsx","core/components/BPAYInfo/BPAYInfo.style.ts","core/components/BPAYInfo/BPAYInfo.tsx","pods/forms/components/inputs/Select/Select.tsx","pods/forms/components/structural/CtrlHolder/CtrlHolder.style.ts","pods/forms/components/inputs/AddressAutocomplete/AddressAutocomplete.const.ts","pods/forms/components/inputs/FundsAutocomplete/FundsAutocomplete.const.ts","pods/forms/components/related/MessageBlock/MessageBlock.style.ts","pods/forms/components/related/MessageBlock/MessageBlock.tsx","../node_modules/recompose/dist/Recompose.esm.js","core/sitecore/experience-editor/ExperienceEditorMessage/ExperienceEditorMessage.style.ts","core/sitecore/experience-editor/ExperienceEditorMessage/ExperienceEditorMessage.tsx","jss-components/t01-navigation/appView.ts","../node_modules/fbjs/lib/shallowEqual.js","jss-components/t01-navigation/Footer/subcomponents/ContactUsBar/ContactUsBar.content.ts","../node_modules/recompose/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/change-emitter/lib/index.js","../node_modules/symbol-observable/es/index.js","../node_modules/symbol-observable/es/ponyfill.js","jss-components/t01-navigation/hook/useShowComponentWithDelay.ts","jss-components/t25-live-person/LivePerson/LivePerson.style.ts","jss-components/t25-live-person/LivePerson/subcomponents/LPModalForm.tsx","jss-components/t25-live-person/LivePerson/subcomponents/LPModalFormConfirm.tsx","jss-components/t25-live-person/LivePerson/LivePerson.tsx","jss-components/t25-live-person/LivePerson/LivePerson.util.tsx","jss-components/t01-navigation/Footer/Footer.style.ts","jss-components/t01-navigation/Footer/subcomponents/ContactUsBar/subcomponents/ContactMethod/ContactMethod.style.ts","jss-components/t01-navigation/Footer/subcomponents/ContactUsBar/subcomponents/ContactMethod/ContactMethod.tsx","jss-components/t01-navigation/Footer/subcomponents/ContactUsBar/ContactUsBar.style.ts","jss-components/t01-navigation/Footer/subcomponents/ContactUsBar/ContactUsBar.tsx","jss-components/t01-navigation/Footer/Footer.tsx"],"names":["CtaContainer","styled","div","margin","css","Segment","disableFullWidth","Cta","JSS_CTA_CLASS","children","direction","props","DynamicSubLayout","stackAt","gap","align","layout","defaultProps","Collapse","isOpen","forceFlexDisplay","className","contentClassName","duration","onOpenStart","onCloseStart","onOpenEnd","onCloseEnd","ariaAttributes","height","aria-expanded","ariaExpanded","undefined","onAnimationStart","executeCallback","onAnimationEnd","style","display","Card","noPadding","withShadow","noBorder","hover","allowOverflow","allowChildrenEscape","bgProps","BackgroundContainer","isDefaultModule","getResponsiveLayout","layouts","defaultLayout","size","reduce","acc","resolveBp","bp","getSegmentWidth","currentLayout","idx","layoutWidths","trim","replace","split","layoutIdx","length","widthCSS","segmentWidth","match","map","num","parseInt","numerator","denominator","e","console","error","inline","reverse","debug","useThisBp","useThisSize","leftPadding","rightPadding","customCss","overrideBpc","shouldOverrideBpc","_renderSubLayout","bpName","bpcSize","isColumn","isStacked","hasFixedLayout","hasResponsiveLayout","React","Children","count","xGap","safeGet","yGap","cx","field","key","width","noBpClasses","UpdatedCtrlHolder","value","label","htmlId","errorMsg","appendMsg","disabled","fullWidth","ctrlHolderFullWidth","bottomMsg","placeholder","endAdornment","startAdornment","helpText","customClassName","enableButtonWithin","bottomMsgWithIcon","hasError","hasValue","isLabelJss","isJssField","isPlaceholderJss","showEEcontent","HelpText","id","hasAppendMsg","htmlFor","RichText","content","role","Icon","name","ICONS","ERROR","isRichText","jss","ExperienceEditorContent","title","Wrapper","mx","JssImage","class","doesImageExist","media","getFormattedJSSImage","BpWrapper","Container","DATA_ATTR","TrackLinksWithin","targetLinks","trackWithinId","useUID","useEffect","forEach","link","analyticsId","trackingCallback","document","querySelectorAll","el","text","textContent","getAttribute","addEventListener","theme","global","borders","module","variables","baseTransition","Content","applyBackgroundShade","bgImageShadeColor","bgImageShadeOpacity","bgColor","core","getCompositionColor","shade","Number","toLowerCase","rgba","applyBackgroundColor","util","isBrandColor","getBackgroundAndText","isDark","typography","colors","genericLight","genericDark","InlineImgShade","Background","bgImage","color","getDarkText","getLightText","bgPadding","bgImagePosition","getText","applyBackgroundImage","textColor","allowChildrenScape","ContentWithPadding","withBorderTop","hr","padding","EEFieldDefinitionList","dl","subHeadingSmall","caption","EECtaWrapper","button","ErrorSummaryContainer","vr","FONT_NAMES","GOTHAM_ROUNDED_BOOKED","ErrorSummaryLink","a","ErrorSummaryList","ul","ErrorSummary","summaryData","CONTENT","SUMMARY","TITLE","TransitionGroup","aria-live","item","CSSTransition","fieldId","timeout","classNames","href","onClick","preventDefault","errorField","getElementById","focus","errors","err","uid","CtrlHolder","tooltip","required","readonly","noMargin","optionalText","hasErrorIcon","labelProps","Label","TextArea","textarea","baseInputStyles","RemainingCharacters","RawTextArea","config","computed","path","handleChangeFast","handleBlurFast","handleKeyPressFast","getDisplayError","renderTextNode","ctrlHolderProps","data","inputAttrs","labelHelpText","autoGrow","showRemainingCharacters","_ctrlHolderProps","hasHelpText","hasAutoGrow","hasShowRemainingCharacters","max","onChange","target","scrollHeight","clientHeight","handleAutoGrow","onBlur","onKeyPress","aria-describedby","messageTemplate","n","toLocaleString","remainingCharacters","AddressAutocompleteContainer","MenuList","myOptionLabel","customLabel","apiConfig","AddressAutocomplete","handleChange","setValues","formValues","emptyResultLabel","noMatchLabel","useState","input","setInput","systemValidationBase","australianSuperApi","apiDomain","apiPathSystemValidation","api","useGetAddress","base","queryParams","full_address","response","loading","type","addressPathPrefix","addressValue","get","ADDRESS","set","ADDRESS_LOOKUP","defaultValue","classNamePrefix","isDisabled","cacheOptions","loadOptions","searchText","Promise","resolve","setTimeout","addressData","addresses","addressOptions","address","slice","isResultEmpty","push","val","MANUAL_ADDRESS","subdwelling_name","street_number","street_name","street_type","suburb","state","postcode","postal","STREET_1","street1","getStreet1","STREET_2","SUBURB","STATE","POSTCODE","onInputChange","isLoading","components","DropdownIndicator","formatOptionLabel","isClearable","openMenuOnFocus","openMenuOnClick","noOptionsMessage","inputValue","aria-label","menuPortalTarget","body","menuPosition","AddressAutocompleteAxios","showOptions","setShowOptions","isWithdrawalPostalAddress","withdrawalPostalAddressPath","addressLookupPathPrefix","storedAddressValue","MANUAL_OPTION","SEARCH_TEXT_TRIGGER_LENGTH","isStorybook","SB_FAIL","rawAddressData","GetAddressMock","addressses","SEARCH_RESULTS_MAX_DISPLAY","addressLookUpParam","isExperienceEditorActive","doRefreshToken","axios","url","params","method","responseType","headers","getAccessToken","externalServices","coarseGrainApiKey","uuidv4","X_CORRELATION_APP","withCredentials","AKAMAI_BOT_FLAG","then","catch","option","postalAddressSetter","variablePath","cleanPath","SUBURB_CITY","menuIsOpen","FundsAutocompleteContainer","referenceBase","apiPathReferenceData","FundsAutocomplete","fieldError","setFieldError","searchResult","setSearchResult","pathFundName","pathAbn","pathSpinUsi","usiSearch","isATOFundSearch","fundAbnErrMessage","isUsiSearch","isApiRunning","setIsApiRunning","pathFundAutocomplete","setFormikValues","ER103","inputText","hasLettersRegex","RegExp","test","MANUAL_FUND_OPTION","selectedFund","find","fund","abn","usi","_callFundsAPI","getFundsParam","result","resultDataValues","values","Array","isArray","_loadAutocompleteOptions","searchString","GetSMSFYesAbnFunds","GetSuperFundsUsi","GetSuperFundsApra","strippedSearchText","isNaN","fund_name","fund_status","ACTIVE_FUND_STATUS","fund_type","isJwtExpired","render","obj","MANUAL_LABEL","onBlurResetsInput","onKeyDown","regex","ctrlKey","FormRichtext","section","hasBorderTop","hasBorderBottom","Section","Text","Select","FieldContents","FieldSet","fieldset","FormSubLayout","fieldsetError","fieldsetOneLineError","targetFields","isFieldset","legend","noStack","subLayoutProps","formik","condition","wrap","tag","CardContainer","isShown","topChildren","bottomChildren","cardProps","TitleContainer","isEdit","Dl","DlEdit","default","CtaContainerEdit","FormReview","sections","ctaLink","ctaCallback","contents","isEditAlignToLabel","isEditCtaVisible","isHeaderH3","contentIndex","info","isJss","isBold","index","icon","EDIT","ctaStyle","isWithoutPadding","ctaType","data-target-id","CTA_CLASS","CloseButton","HelpLinkModal","modalTitle","modalContent","modalCloseButtonText","useModal","Modal","toggleModal","iconAlign","HELP_OUTLINE","Captcha","sitekey","marginTop","LoadingContent","subTitle","textAlign","ModalInCta","ctaProps","onCtaClick","modalProps","ctaDataTargetId","modalDataTargetId","hasCloseButton","closeButtonContent","jssText","getRadioCheckboxVariant","Component","RadioCheckbox","displayName","titleCase","mapDataToProp","createElement","component","SubLayout","FormRichText","MessageBlock","BPAYInfo","componentProps","actions","setValue","action","setFieldValue","sets","otherFieldValue","getIn","overrideExistingValue","valuePath","computedValue","call","fieldValue","functionName","processData","processHandler","cleanupInput","rawValue","formattedValue","String","patter","newSubstr","FormBuilder","memberData","useMemberContext","memberTrackingProps","getMemberTrackingProps","_actions","cloneDeep","trackEvent","eventProps","event_section","eventSection","event_type","eventType","event_title","eventTitle","event_label","eventLabel","event_trigger","eventTrigger","event_url","eventUrl","event_message","eventMessage","_trackEvent","configTimestamp","registeredComponents","registeredValidators","validators","registeredActions","renderErrorSummary","JSSpropsMap","backgroundColour","BackgroundImage","BackgroundImagePosition","ImageOverlayColour","Opacity","TextColour","getBgProps","fields","Object","keys","matchingKey","isObject","src","bgImageInline","bgImageInlineAltText","alt","DISMISS","TOGGLE_COLLAPSE","elementDefinitions","startCollapsed","isVisuallyHidden","setIsVisuallyHidden","isActuallyHidden","setIsActuallyHidden","isCollapsed","setIsCollapsed","ExperienceEditorContext","Consumer","isEE","hidden","marginRight","VISIBILITY_OFF","ExperienceEditorButton","StyledComponent","S","callback","c","CHEVRON_RIGHT","rotate","CLOSE","Fragment","bindKeyboardControls","KEYBOARD_EVENT_KEYS","SPACEBAR","ENTER","callbackExists","click","VALIDATORS","DIRECT_DEBIT","DEBIT_AMOUNT","BSB_NUMBER","WITHDRAWALS","MINIMUM_BALANCE","MINIMUM_VALUE","WITHDRAWAL_AMOUNT_MISMATCH","INSUFFICIENT_FUNDS_AVAILABLE","WHOLE_NUMBER","REQUIRED_DEBT","DEFAULT","REQUIRED","EMPTY","EMPTY_MEMBER_NUMBER","EMPTY_FIRST_NAME","EMPTY_LAST_NAME","EMPTY_EMAIL","MIN_LENGTH","MAX_LENGTH","ABN_MAX_LENGTH","NAME","EMAIL","EMAIL_OR_MOBILE","DATE","FUTURE_DOB","DATE_BEFORE","DATE_AFTER","PHONE","VALID_STRING","MEMBER_NUMBER","REGISTRATION_MEMBER_NUMBER","BANK_NAME","DISALLOW_EMAIL_FORMAT_PASSWORD","REQUIRED_PWD_MESSAGE","SAME_VALUE","SAME_VALUE_CONFIRM_PASSWORD","SAME_EXISTING_VALUE","DECIMAL","VALUE","SPINUSINUMBER","TFN_FORMAT","BSB","INTL_POSTCODE","INVALID_ADDRESS","INVALID_STREET_ADDRESS","CAPTCHA","USERNAME","INVALID_USERNAME","AMOUNT_EXCEEDS_BALANCE","FUND_NOT_SELECTED","SECURITY_CODE","LP_SERVICE_ID","SPECIAL_CHARACTERS","ACCOUNT_NAME","InlineFlex","LoadingSpinner","SPINNER","withoutTextWrap","isLabelHidden","Tooltip","ErrorMessage","span","Field","LegendLabel","BottomMessageContainer","PRIMARY","noticeBadge","primary","SECONDARY","secondary","Header","Notice","Controls","IsCollapsed","Button","ToggleCollapse","Dismiss","getDate","dateStr","day","month","year","Date","weightingSequence","message","options","min","regExPattern","emailRegex","intlMobileRegex","intlAuMobileRegex","cleanedFieldValue","errMsg","invalidRegex","isValid","monthFieldValue","dayValue","yearValue","monthNumber","MONTH","findIndex","monthName","combinedDate","dateValues","today","dateToday","getFullYear","getMonth","getTime","targetValue","targetField","isBefore","isAfter","msgType","messageType","charArr","padStart","weighting","weightingItem","verifyWeighting","parseFloat","bsbMessage","prefix","withdrawAmount","runTotal","current","includes","numVal","minThreshold","amountToTransfer","minimumBalance","availableBalance","availableBalanceField","maximumAmount","toString","postcodeErrorMessages","au","currPostalValue","fieldName","AUSTRALIA_COUNTRY_CODE","hasToken","filter","Boolean","smsfRollovers","esaPerFund","selectedFieldValuesArray","smsfRolloversArray","fundId","selectedSMSFArray","elem","isEqual","sort","fieldIntVal","optionIds","investmentsOption","v","investment","initialStep","investmentOptionCode","investment_id","kebabCase","targetSequence","from","_","i","k","f","allocationPercentage","inRange","optionsTotalLength","maxWithdrawalAmountForInvestmentOptionsProps","withdrawalAmountField","investmentOptions","withdrawalAmount","selectedOptions","maxSelectedAmount","sum","currentValue","amount","otherFieldPath","indexOf","maxAmount","fname","firstName","lname","lastName","firstNameInitial","nameWithoutLastName","isValidLastName","concat","hasMoreThanOneFname","escapedLastName","escapedInputName","some","fnameFilter","someFname","accountNameChecker","GS","onMouseDown","onKeyUp","RawText","uiDisabled","hasCloseIcon","disablePaste","readOnly","trackInput","trackShowClickEvent","handleFocus","handleBlur","triggerError","handleClear","isPasswordType","isShowMasked","setIsShowMasked","showButtonWithin","handleCloseEvent","stopPropagation","onFocus","onPaste","hasStartAdornment","hasEndAdornment","onMouseUp","CLEAR","TooltipModule","createRef","setState","prev","this","INFO","tooltipContent","iconSize","ariaDescription","floaterStyle","tooltipStyle","placement","open","floater","container","backgroundColor","borderRadius","minHeight","minWidth","arrow","position","spread","styles","offset","_tooltipToggleState","pointerEvents","PureComponent","lighten","TooltipContent","generateAddressFields","primaryAddress","additionalAddress","isFormDisabled","stateLabel","suburbLabel","countryLabel","addressLabel","street1Label","street2Label","postcodeLabel","addressFieldsetLegend","additionalAddressLabel","rules","addressInvalidErrorMessage","errorMessages","property","when","eq","fieldPath","ADDITIONAL_ADDRESS","COUNTRY","requiredMessage","countries","doNotSubmit","all","not","getMessageByCode","CONTACT_DETAILS_ERRORS","INVALID_SUBURB","STATE_POSTCODE","y","states","maxLength","onInput","replaceAll","any","generateAddressFieldsConfig","initialAddressValues","initialValues","RadioCheckboxItem","li","hasBorderline","form","radio","active","RadioCheckboxList","isSwitch","isHorizontal","faded","RawRadioCheckboxList","optionDisabled","checked","optionId","RawRadioCheckbox","scAs","as","ariaLabel","customAriaLabel","horizontal","_mapArrayOptions","newValue","submitValues","splice","_checkOptionChecked","_handleInputOnChange","BPAYWrapper","isDashboardModule","bpayIcon","billerCode","referenceNumber","billerCodeLabel","referenceNumberLabel","dataTarget","LOGO_BPAY","isEmpty","ARROW_DROP_DOWN","RawSelect","isInline","hasOptionLabel","optionLabelStartText","isMenuPortal","selectedOption","setSelectedOption","_handleChange","useCallback","isSearchable","Option","optionProps","subLabelText","selectProps","subLabel","OptionComponent","inputId","menuPlacement","SelectAsync","defaultOptions","SelectComponent","handleChangeFromConfig","async","selectOptions","spin","keyframes","LoadingMessage","subdued","SpinningCheckIcon","SuccessMessage","LabelContents","BottomMessage","buttonLink","headingAlign","bodyAlign","onButtonLinkClick","isGreenId","jssLink","config$$1","compose","_len","arguments","funcs","_key","b","apply","arg","_config","fromESObservable","toESObservable","observable","stream","Message","top","right","bottom","left","ExperienceEditorMessage","HELP","appView","URLSearchParams","window","location","search","hasOwnProperty","prototype","is","x","exports","objA","objB","keysA","keysB","NO_FN_EXPECTED","LIVE_PERSON","BUTTON","LP_TAG","DOESNT_EXIST","SITECORE","INACTIVE","EE","STATUS_MESSAGES","LIVE_PERSON_INACTIVE","REACT_STATICS","childContextTypes","contextTypes","getDefaultProps","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","descriptor","createChangeEmitter","currentListeners","nextListeners","ensureCanMutateNextListeners","listen","listener","Error","isSubscribed","emit","listeners","root","self","ponyfill","symbolObservablePonyfill","Symbol","useShowComponentWithDelay","sessionStorageKeyToUse","sitecoreContext","useAppContext","pathname","useLocation","isToShow","setIsToShow","isWelcomeJourneyEnabled","featureToggle","enableWelcomeJourney","isToDelay","getSessionStorageItem","timeoutId","setSessionStorageItem","clearTimeout","Hr","LpLoadingContainer","LpLoadingTextContainer","CtaContainerLeft","CtaContainerRight","LPModalForm","onSubmit","serviceNumber","isServiceIdError","handleLivePersonModal","ER65","CO_BROWSE_ERRORS","SERVICE_CODE_INVALID","formConfig","version","LIVE_PERSON_MODAL_FORM","errorSummaryLabel","ERROR_MESSAGE","serviceNumberLabel","ReactDOMServer","renderToString","liveAssistNumberInfo","MODAL_ARIA_NAMES","DESCRIPTION","liveAssistDescription","loadingMessage","LOADING_TEXT","renderButtons","buttonType","startLabel","cancelButtonLabel","LPModalFormConfirm","onConfirm","invitationMessage","acceptLabel","rejectLabel","LivePerson","LivePersonModal","toggleLivePersonModal","isModalFormLoading","setIsModalFormLoading","showConfirm","setShowConfirm","submitedServiceNumber","setSubmitedServiceNumber","setIsServiceIdError","isShowLivePersonModal","modalStyle","maxWidth","HEADING","liveAssistHeading","isAccepted","lpConfirm","CustomEvent","detail","dispatchEvent","serviceId","lpTag","taglets","cobrowse","loadApi","visitorApi","once","serviceIdInput","blur","onfocus","_ev","event","acceptSupportOffer","cancelSupportOffer","requestSupport","startEvent","log","triggerLivePersonWindow","engagementId","events","hasFired","rendererStub","warn","LinksContainer","DESKTOP_BP","DisclaimerContainer","LinkList","LinkListItem","MaintenanceApiContainer","Circle","colorName","isActive","getCompositionIsDark","lighterBackground","darken","Title","h4","FONT_WEIGHT","SEMI_BOLD","p","OPEN_SANS","REGULAR","typoProps","classNameIdentifier","ContactMethod","withTheme","List","MessageUsButton","ContactUsBar","isLivePersonOnline","setIsLivePersonOnline","isLpTagLoaded","setIsLpTagLoaded","isInSitecorePreviewOrEditMode","lpTagChecking","reps","fetchLpTagInterval","setInterval","clearInterval","_enableLiveChat","normaliseDate","date","ddMm","join","messageUsLink","messageUsIcon","onlineStatusMessage","offlineStatusMessage","publicHolidaysMessage","publicHolidays","phObj","dd","mm","messageUsLinkText","onlineStatusMessageText","isPublicHoliday","useTrackEvent","phoneIcon","phoneNumberLink","phoneNumber","openingTimes","phoneNumberLinkText","phoneNumberLinkUrl","openingTimesText","phoneNumberLinkProps","emailIcon","emailLink","emailUsAdditionalText","emailLinkProps","emailLinkText","emailLinkHref","emailUsAdditionalTextValue","otherContactMethodsIcon","otherContactMethodsLink","otherContactMethodsAdditionalText","otherContactMethodsLinkProps","otherContactMethodsLinkText","otherContactMethodsLinkHref","otherContactMethodsAdditionalTextValue","RoutableSitecoreLink","withExperienceEditorContext","withMemberContext","member","footerLinks","isMemberAuthenticated","isAuthenticated","isToShowAuthenticatedFooter","maintenanceApiStatus","maintenance","footerYearText","template","copyrightText","currentYear","LayoutPadding","footerLink","LIVE_ASSIST_BUTTON_TEXT","generalAdviceDisclaimer","UnauthenticatedFooter","aria-hidden"],"mappings":"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","file":"static/js/Footer.cbcb0d27.chunk.js","sourcesContent":["import styled, { css } from 'styled-components';\n\nimport { JSS_CTA_CLASS, Cta } from 'core/components/Cta/Cta.style';\n\nimport { Segment } from 'core/components/DynamicSubLayout/DynamicSubLayout.style';\n\nexport const CtaContainer = styled.div<{\n\tmargin?: string;\n\tdisableFullWidth: boolean;\n}>`\n\tdisplay: block;\n\n\t${({ margin }) =>\n\t\tmargin &&\n\t\tcss`\n\t\t\tmargin: ${margin};\n\t\t`}\n\n\t.cta {\n\t\tmargin: 0;\n\t\tjustify-content: center;\n\t}\n\n\t${Segment} {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t${({ disableFullWidth }) =>\n\t\t!disableFullWidth &&\n\t\tcss`\n\t\t\t.dynamicSubLayout.-stacked {\n\t\t\t\t${Cta},\n\t\t\t\t.${JSS_CTA_CLASS} {\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\t\t\t}\n\t\t`}\n`;\n","import React from 'react';\n\nimport DynamicSubLayout, {\n\tIProps as DSLprops,\n} from 'core/components/DynamicSubLayout';\n\nimport * as S from './CtaContainer.style';\n\ninterface IProps extends DSLprops {\n\tmargin?: string;\n\t/* Whether to stretch the Cta to full-width when stacked responsively. */\n\tdisableFullWidth?: boolean;\n\tdirection?: string;\n\tchildren: React.ReactNode;\n}\n\nconst STACK_AT = 'xxs';\n\nconst CtaContainer = ({\n\tchildren,\n\tmargin,\n\tdirection = 'row',\n\tdisableFullWidth = false,\n\t...props\n}: IProps) => (\n\t\n\t\t\n\t\t\t{children}\n\t\t\n\t\n);\n\nCtaContainer.defaultProps = {\n\tmargin: '12px 0 0 0',\n};\n\nexport default CtaContainer;\n","import React from 'react';\nimport AnimateHeight from 'react-animate-height';\n\nimport { executeCallback } from 'core/utils/global-utils';\n\ninterface IProps {\n\tisOpen: boolean;\n\n\tforceFlexDisplay?: boolean;\n\tclassName?: string;\n\tcontentClassName?: string;\n\tduration?: number;\n\n\tonOpenStart?: () => void;\n\tonCloseStart?: () => void;\n\tonOpenEnd?: () => void;\n\tonCloseEnd?: () => void;\n\n\tariaAttributes?: { [key: string]: string | number };\n\n\tchildren: React.ReactNode;\n}\n\nconst Collapse = ({\n\tisOpen,\n\n\tforceFlexDisplay,\n\tclassName,\n\tcontentClassName,\n\tduration = 300,\n\n\tonOpenStart,\n\tonCloseStart,\n\tonOpenEnd,\n\tonCloseEnd,\n\n\tariaAttributes,\n\n\tchildren,\n}: IProps) => (\n\t {\n\t\t\tif (isOpen) {\n\t\t\t\texecuteCallback(onOpenStart);\n\t\t\t} else {\n\t\t\t\texecuteCallback(onCloseStart);\n\t\t\t}\n\t\t}}\n\t\tonAnimationEnd={() => {\n\t\t\tif (isOpen) {\n\t\t\t\texecuteCallback(onOpenEnd);\n\t\t\t} else {\n\t\t\t\texecuteCallback(onCloseEnd);\n\t\t\t}\n\t\t}}\n\t\tstyle={forceFlexDisplay ? { display: 'flex' } : {}}\n\t>\n\t\t{children}\n\t\n);\n\nexport default Collapse;\n","import React from 'react';\n\nimport BackgroundContainer, {\n\tBackgroundContainerProps as IBgProps,\n} from 'pods/theme/components/BackgroundContainer';\n\nimport * as S from './Card.style';\n\ninterface IProps extends IBgProps {\n\tnoPadding?: boolean;\n\thover?: boolean;\n\twithShadow?: boolean;\n\tnoBorder?: boolean;\n\tmargin?: string;\n\t/** Allow the content overflow the card container, e.g. dropdown selection */\n\tallowOverflow?: boolean;\n\tallowChildrenEscape?: boolean;\n\tchildren: React.ReactNode;\n}\n\nconst Card = ({\n\tnoPadding = false,\n\twithShadow = false,\n\tnoBorder = false,\n\thover = false,\n\tallowOverflow = false,\n\tallowChildrenEscape = false,\n\tmargin,\n\tchildren,\n\t...bgProps\n}: IProps) => (\n\t\n\t\t\n\t\t\t\n\t\t\t\t{children}\n\t\t\t\n\t\t\n\t\n);\n\nexport default Card;\n","// Ref: https://css-tricks.com/css-grid-in-ie-faking-an-auto-placement-grid-with-gaps/\n\n// ------------------------------------\n// MVP implementation\n\n// TODO \tpotentially defer to `layout` prop if no `layouts` match,\n// \t\t\treverting back to default auto-layout?\n// \t\t\t\t-- e.g. specifying both layout AND layouts\n// TODO \tsupport opt-OUT equal height for segments in rows\n//\t\t\t\t-- plus DOCS for how to enable propagate equal heights within segment wrappers (either display: flex or height: 100%)\n// TODO \tfor bp queries, can we have a type export from dd-bpc for the different/valid queries?\n// TODO \tunit tests\n// TODO \tintegration tests\n// TODO \tflag for opting out of responsive/bpc behaviour? Just purely layout?\n// TODO \tprop for aligning content within segments? like vertically centre align when equal heights stretched\n\n// ------------------------------------\n// Future package-admin\n\n// TODO \tprobably deprecate inline prop? is there actually a use-case for this?\n// TODO \tpotentially deprecate useThisSize? Or? should align with decisions inside dd-bpc whether its kept there or not\n// TODO \tsupport CSS border styles within the grid? somehow?\n// \t\t\t\t-- including sub-options like including perimeter borders, or inner borders only (if possible)\n// \t\t\t\t-- (is this potentially out-of-scope for this package...?)\n// TODO \tcan we remove classnames dependency? (yes!)\n\n// ------------------------------------\n// Known bugs\n\n// TODO \tfully validate IE11 support; it's kinda the whole point we're using the CSS-Tricks implementation (it does work in IE11!)\n// \t\t\t\t-- looks to be a discrepancy bug with the dynamic responsive example? is this replicable?\n// TODO \tedge-to-edge DSL; is this a problem? (no overflow hidden pushes out width by the padding offset?)\n// TODO \toverflow: hidden - is this absolutely necessary? Seems like a limitation?\n\n// ------------------------------------------\n\nimport React from 'react';\n\nimport cx from 'classnames';\n\nimport safeGet from 'lodash/get';\n\nimport {\n\tBreakpointContainer,\n\tresolveBp,\n} from '@deloitte-digital-au/dd-breakpoint-container';\n\nimport * as S from './DynamicSubLayout.style';\n\n// ------------------------------------\n// Types\n\ntype LayoutAlign = 'left' | 'right' | 'center' | 'between';\ntype LayoutGapObject = { x: number; y: number };\ntype LayoutGap = number | LayoutGapObject;\n\ntype LayoutObject = {\n\tbp: string;\n\tlayout?: string;\n\talign?: LayoutAlign;\n\tgap?: LayoutGap;\n};\n\nexport interface IProps {\n\t/** Feed in a named breakpoint from another BreakpointContainer, instead of using a new one. */\n\tuseThisBp?: string;\n\n\t/** Override component behaviour according to the supplied pixel value; component won't use its own BreakpointContainer. */\n\tuseThisSize?: number;\n\n\t/** Breakpoint name from which to stack segments vertically (for mobile layouts). 'Stack from this breakpoint (inclusive) and below'. Opt-out by passing `null`. */\n\tstackAt?: string | number | null;\n\n\t/** CSS marging string applied to component's container. */\n\tmargin?: string;\n\n\t/** Vertical/horizontal spacing between segments in the layout. */\n\tgap?: LayoutGap;\n\n\t/** Align items within the layout; left, right, center, or between. */\n\talign?: LayoutAlign;\n\n\t/** Opt-out of inherent width: 100%; changes wrapper div to `display: inline-block`. */\n\tinline?: boolean;\n\n\t/** Updates current layout order by toggling `flex-direction`. */\n\tdirection?: string;\n\n\t/** Reverses current layout order by toggling `flex-direction`. */\n\treverse?: boolean;\n\n\t/** Layout query string; either a fraction or valid CSS width e.g. `${number}px`, percentage, or calc() expression. */\n\tlayout?: string;\n\n\t/** Array of layouts for dynamic, responsive layouts. Supercedes `layout` prop. */\n\tlayouts?: LayoutObject[];\n\n\t/** Passthrough `debug` flag to */\n\tdebug?: boolean;\n\n\tchildren: React.ReactNode;\n\n\tleftPadding?: number;\n\n\trightPadding?: number;\n\n\tcustomCss?: string;\n}\n\n// ------------------------------------\n// Core functions\n\n/**\n * Find the most relevant layout according to current breakpoint.\n *\n * @param layouts - Responsive layout objects.\n * @param defaultLayout - Default layout object.\n * @param size - Module size in px, or breakpoint name.\n */\nconst getResponsiveLayout = (\n\tlayouts: LayoutObject[],\n\tdefaultLayout: LayoutObject,\n\tsize: number | string,\n): LayoutObject =>\n\tlayouts.reduce((acc, layout) => {\n\t\tif (resolveBp(layout.bp, size)) {\n\t\t\t// Combined with defaultLayout to allow for\n\t\t\t// partial layout specifications, with fallback\n\t\t\t// values according to default layout\n\t\t\treturn { ...defaultLayout, ...layout };\n\t\t} else {\n\t\t\treturn acc;\n\t\t}\n\t\t// (`defaultLayout` is used as accumulator as an overall fallback,\n\t\t// and so any ommitted values have a set of 'default' values)\n\t}, defaultLayout);\n\n// ------------------------------------\n\n/**\n * @param currentLayout - Current layout object.\n * @param idx - Index.\n * @returns {string} A CSS expression: for example a px value, percentage, or calc.\n */\nconst getSegmentWidth = (\n\tcurrentLayout: LayoutObject,\n\tidx: number,\n): string | undefined => {\n\tif (!currentLayout || !currentLayout.layout) return;\n\n\t// Normalise comma/whitespace separation to just commas\n\t// Note we can't accept just whitespace separation, because\n\t// a segment width may be a CSS calc() expression which will\n\t// also contain whitespaces; hence the comma separation requirement\n\tconst layoutWidths = currentLayout.layout\n\t\t.trim()\n\t\t.replace(/,\\s/g, ',')\n\t\t.split(',');\n\tlet layoutIdx = idx;\n\n\t// Check if segment 'overflows' defined layout\n\t// If it does, find which segment/layout index\n\t// it corresponds to for wrapping purposes\n\tif (idx + 1 > layoutWidths.length) {\n\t\tlayoutIdx = (idx + 1) % layoutWidths.length;\n\t\t// If modulo returns 0, it means its ought to in fact\n\t\t// be placed in the last position of the layout\n\t\tlayoutIdx = layoutIdx === 0 ? layoutWidths.length : layoutIdx;\n\t\t// Re-correct for index\n\t\tlayoutIdx -= 1;\n\t}\n\n\t// Get layout definition for the specificed segment\n\tconst segmentWidth = layoutWidths[layoutIdx].trim();\n\tlet widthCSS;\n\n\t// If it's a fraction, convert to a percentage\n\tif (!!segmentWidth.match(/^[0-9]+\\/[0-9]+$/)) {\n\t\tconst [numerator, denominator] = segmentWidth\n\t\t\t.split('/')\n\t\t\t.map(num => parseInt(num));\n\n\t\ttry {\n\t\t\twidthCSS = `${(numerator / denominator) * 100}%`;\n\t\t} catch (e) {\n\t\t\tconsole.error(\n\t\t\t\t'Invalid fraction:',\n\t\t\t\tsegmentWidth,\n\t\t\t\t'parsed as - numerator:',\n\t\t\t\tnumerator,\n\t\t\t\t'denominator:',\n\t\t\t\tdenominator,\n\t\t\t\t'. Full error:',\n\t\t\t\te,\n\t\t\t);\n\t\t}\n\t} else {\n\t\t// Else, we can otherwise assume the definition is a CSS expression\n\t\twidthCSS = segmentWidth;\n\t}\n\n\treturn widthCSS;\n};\n\n// ------------------------------------\n\nconst DynamicSubLayout = ({\n\tstackAt = 's',\n\tmargin,\n\tgap = 20,\n\talign = 'left',\n\tdirection = 'row',\n\tinline = false,\n\treverse = false,\n\tdebug = false,\n\tlayout,\n\tlayouts,\n\tchildren,\n\tuseThisBp,\n\tuseThisSize,\n\tleftPadding,\n\trightPadding,\n\tcustomCss,\n}: IProps) => {\n\t// Component can defer to outside logic for bp or size\n\t// e.g. so this module could be driven by the browser breakpoint,\n\t// or another BreakpointContainer in a controlling component.\n\t// (By default this component will use its own BreakpointContainer)\n\tconst overrideBpc = useThisBp ?? useThisSize;\n\tconst shouldOverrideBpc = !!overrideBpc;\n\n\tconst _renderSubLayout = (\n\t\tbpName: string | undefined,\n\t\tbpcSize: number | undefined,\n\t\tshouldOverrideBpc = false,\n\t): React.ReactNode => {\n\t\tconst size = (overrideBpc ?? bpcSize ?? bpName) as string | number;\n\t\tconst isColumn = direction === 'column';\n\t\tconst isStacked = !!stackAt && resolveBp(`0, ${stackAt}`, size);\n\t\tconst hasFixedLayout = !!layout && !layouts;\n\t\tconst hasResponsiveLayout = !!layouts;\n\n\t\tlet currentLayout = {\n\t\t\tgap,\n\t\t\tlayout: `1/${React.Children.count(children) ?? '1'}`,\n\t\t} as LayoutObject;\n\n\t\tif (hasFixedLayout) {\n\t\t\tcurrentLayout.layout = layout;\n\t\t} else if (hasResponsiveLayout) {\n\t\t\tcurrentLayout = getResponsiveLayout(\n\t\t\t\tlayouts as LayoutObject[],\n\t\t\t\tcurrentLayout,\n\t\t\t\tsize,\n\t\t\t);\n\t\t}\n\n\t\t// Use align from current responsive layout; fallback to default align\n\t\talign = currentLayout?.align ?? align;\n\n\t\tconst xGap = safeGet(gap, 'x') ?? gap;\n\t\tconst yGap = safeGet(gap, 'y') ?? gap;\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{React.Children.map(children, (field, idx) => {\n\t\t\t\t\t\t// It's appropriate to use an index value as a key here because\n\t\t\t\t\t\t// this component never changes the order of its children, and there\n\t\t\t\t\t\t// have been side-effects trying to calculate dynamic unique IDs.\n\t\t\t\t\t\t// The index key doesn't cause a problem here because if the children\n\t\t\t\t\t\t// passed through to DSL are reordered or removed/changed, it's up\n\t\t\t\t\t\t// to the controlling component to maintain the unique keys.\n\t\t\t\t\t\t/* eslint-disable-next-line react/no-array-index-key */\n\t\t\t\t\t\tconst key = idx;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tfield && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{field}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t\n\t\t);\n\t};\n\n\treturn (\n\t\t\n\t\t\t{!shouldOverrideBpc ? (\n\t\t\t\t\n\t\t\t\t\t{(bpName, bpcSize) => _renderSubLayout(bpName, bpcSize)}\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t_renderSubLayout(useThisBp, useThisSize, true)\n\t\t\t)}\n\t\t\n\t);\n};\n\nexport default DynamicSubLayout;\n","import { Text } from '@sitecore-jss/sitecore-jss-react';\nimport React from 'react';\n\nimport Collapse from 'core/components/Collapse';\nimport { Icon, ICONS } from 'core/components/Icon';\nimport { ICONS as EICONS } from 'core/components/Icon/svgs';\nimport RichText from 'core/components/RichText';\nimport ExperienceEditorContent from 'core/sitecore/experience-editor/ExperienceEditorContent';\nimport * as GS from 'core/styles/Containers';\nimport * as Typo from 'core/styles/Typography';\nimport { isJssField, JssTextType } from 'core/utils/sitecore-utils';\nimport HelpText from 'pods/forms/components/base/HelpText';\n\nimport * as S from './UpdatedCtrlHolder.style';\n\ninterface IProps {\n\thtmlId?: string;\n\tlabel?: string | JssTextType;\n\terrorMsg?: string;\n\tappendMsg?: string;\n\tvalue?: any;\n\tdisabled?: boolean;\n\tstartAdornment?: string;\n\tendAdornment?: string;\n\tbottomMsg?: JssTextType;\n\tchildren: React.ReactNode;\n\tfullWidth?: boolean;\n\tctrlHolderFullWidth?: boolean;\n\tplaceholder?: string | JssTextType;\n\thelpText?: string | React.ReactNode;\n\tcustomClassName?: string;\n\tmargin?: string;\n\tenableButtonWithin?: boolean;\n\tbottomMsgWithIcon?: EICONS;\n}\n\nconst UpdatedCtrlHolder = ({\n\tvalue,\n\tlabel,\n\thtmlId,\n\terrorMsg,\n\tappendMsg,\n\tdisabled,\n\tchildren,\n\tfullWidth,\n\tctrlHolderFullWidth,\n\tbottomMsg,\n\tplaceholder,\n\tendAdornment,\n\tstartAdornment,\n\thelpText,\n\tcustomClassName,\n\tmargin,\n\tenableButtonWithin,\n\tbottomMsgWithIcon,\n}: IProps) => {\n\tconst hasError = !!errorMsg;\n\tconst hasValue = !!value;\n\n\tconst isLabelJss = isJssField(label);\n\tconst isPlaceholderJss = isJssField(placeholder);\n\tconst showEEcontent = isLabelJss || isPlaceholderJss;\n\n\treturn (\n\t\t\n\t\t\t{!!helpText && {helpText}}\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{children}\n\t\t\t\t\n\n\t\t\t\t{label && (\n\t\t\t\t\t\n\t\t\t\t\t\t{isJssField(label) ? : label}\n\t\t\t\t\t\n\t\t\t\t)}\n\n\t\t\t\t{!!appendMsg && }\n\n\t\t\t\t{htmlId && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{errorMsg && }\n\t\t\t\t\t\t\t{errorMsg && }\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{!!bottomMsg && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{!!bottomMsgWithIcon && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{showEEcontent && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{isLabelJss && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t
Label:
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{isPlaceholderJss && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t
Placeholder:
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t\n\t\t
\n\t);\n};\n\nexport default UpdatedCtrlHolder;\n","import styled from 'styled-components';\n\nimport * as mx from 'core/styles/mixins';\n\nexport const Wrapper = styled.div`\n\timg {\n\t\t${mx.square('100%')}\n\t}\n`;\n","import React from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport { Image } from '@sitecore-jss/sitecore-jss-react';\n\nimport { getFormattedJSSImage, JssImageType } from 'core/utils/sitecore-utils';\n\nimport * as S from './JssImage.style';\n\ninterface IProps {\n\tfield?: JssImageType;\n}\n\n/**\n * Sitecore never in fact returns a 'null' image, it will instead\n * give us a default 'placeholder' image; however we can discern if\n * this is the case by checking if the adjacent `class` === 'scEmptyImage'.\n */\nexport const doesImageExist = (field: JssImageType | undefined) => {\n\tconst imageClass = field?.value?.class;\n\n\treturn imageClass !== 'scEmptyImage';\n};\n\nconst JssImage = ({ field, ...props }: IProps) =>\n\tdoesImageExist(field) ? (\n\t\t\n\t\t\t\n\t\t\n\t) : null;\n\nexport default JssImage;\n","import styled, { css } from 'styled-components';\n\nexport const BpWrapper = styled.div<{\n\tinline?: boolean;\n}>`\n\twidth: 100%;\n\n\t${({ inline }) =>\n\t\tinline &&\n\t\tcss`\n\t\t\twidth: auto;\n\t\t\tdisplay: inline-block;\n\t\t`}\n`;\n\nexport const Wrapper = styled.div<{\n\tmargin?: string;\n\tdebug?: boolean;\n\tshouldOverrideBpc: boolean;\n\tsize: string | number;\n\tcustomCss?: string;\n}>`\n\toverflow: visible;\n\tposition: relative;\n\n\t${({ margin }) =>\n\t\tmargin &&\n\t\tcss`\n\t\t\tmargin: ${margin};\n\t\t`}\n\n\t${({ debug, shouldOverrideBpc, size }) =>\n\t\tdebug &&\n\t\tcss`\n\t\t\t${shouldOverrideBpc &&\n\t\t\t\tsize &&\n\t\t\t\tcss`\n\t\t\t\t\tborder: 1px dashed black;\n\n\t\t\t\t\t&::before {\n\t\t\t\t\t\tcontent: 'controlled: ${size}';\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\ttop: 0;\n\t\t\t\t\t\tleft: 0;\n\t\t\t\t\t\tbackground-color: white;\n\t\t\t\t\t\tcolor: black;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\tjustify-content: center;\n\t\t\t\t\t\tz-index: 9999;\n\t\t\t\t\t\tborder: 1px dashed red;\n\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\tmin-height: 15px;\n\t\t\t\t\t\tz-index: 9999;\n\t\t\t\t\t\tpadding: 0 3px;\n\t\t\t\t\t\tfont-family: monospace;\n\t\t\t\t\t}\n\t\t\t\t`}\n\t\t`}\n\n\t\t${({ customCss }) =>\n\t\t\tcustomCss &&\n\t\t\tcss`\n\t\t\t\t${customCss}\n\t\t\t`}\n`;\n\nexport const Container = styled.div<{\n\tyGap?: number;\n\txGap?: number;\n\talign?: string;\n\treverse?: boolean;\n\tisStacked: boolean;\n\tdirection?: string;\n\tisColumn?: boolean;\n}>`\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t${({ yGap, xGap }) => css`\n\t\tmargin: 0 -${xGap}px -${yGap}px 0;\n\t`}\n\n\t${({ align }) => css`\n\t\tjustify-content: ${align === 'left'\n\t\t\t? 'flex-start'\n\t\t\t: align === 'right'\n\t\t\t? 'flex-end'\n\t\t\t: align === 'center'\n\t\t\t? 'center'\n\t\t\t: align === 'between'\n\t\t\t? 'space-between'\n\t\t\t: 'initial'};\n\t`}\n\n\t${({ isColumn }) =>\n\t\tisColumn &&\n\t\tcss`\n\t\t\tflex-direction: ${isColumn ? 'column' : 'row'};\n\t\t`}\n\n\t${({ reverse, isStacked }) =>\n\t\treverse &&\n\t\tcss`\n\t\t\tflex-direction: ${isStacked ? 'column-reverse' : 'row-reverse'};\n\t\t`}\n`;\n\nexport const Segment = styled.div<{\n\tdebug: boolean;\n\tisStacked: boolean;\n\twidth?: string;\n\tyGap: number;\n\txGap: number;\n\tleftPadding?: number;\n\trightPadding?: number;\n}>`\n\tborder: 0 solid transparent;\n\tbackground-clip: padding-box;\n\tbox-sizing: border-box;\n\n\t${({ debug }) =>\n\t\tdebug &&\n\t\tcss`\n\t\t\t/* Note we can't use border here due to Segment relying\n\t\t\ton the transparent border to achieve the grid gap. */\n\t\t\tbox-shadow: inset 0 0 0 2px black;\n\t\t`}\n\n\t${({ isStacked, width, yGap, xGap }) => css`\n\t\twidth: ${isStacked ? '100%' : width};\n\t\tborder-width: 0 ${xGap}px ${yGap}px 0;\n\t`}\n\n\t${({ leftPadding, rightPadding }) => css`\n\t\tpadding-left: ${leftPadding ?? '0'}px;\n\t\tpadding-right: ${rightPadding ?? '0'}px;\n\t`}\n`;\n","import React, { useEffect } from 'react';\nimport { useUID } from 'react-uid';\n\nconst DATA_ATTR = {\n\tTRACK_WITHIN_CONTAINER_ID: 'data-analytics-track-within',\n\tANALYTICS_TARGET_ID: 'data-analytics-id',\n};\n\nexport type TTrackingCallbackParams = {\n\ttext: string;\n\tlink: string;\n};\n\nexport type TTargetLinksCallback = [\n\tstring,\n\t(props: TTrackingCallbackParams) => void,\n][];\n\ninterface IProps {\n\ttargetLinks: TTargetLinksCallback;\n\tchildren: React.ReactNode;\n}\n/**\n * Bind tracking events to target links that will exist somewhere\n * amongst the children provided to this component.\n *\n * Useful for when hyperlinks or other clickable content is\n * not explicitly controllable (e.g. in CMS richtext).\n */\nconst TrackLinksWithin = ({ targetLinks, children }: IProps) => {\n\t// Unique ID generated for the container div wrapping the provided\n\t// children. This is necessary to limit the scope of the below\n\t// `querySelectorAll` event bind to just the children provided\n\tconst trackWithinId = useUID();\n\n\t// Ensure component has mounted\n\tuseEffect(() => {\n\t\ttargetLinks.forEach(link => {\n\t\t\tconst [analyticsId, trackingCallback] = link;\n\n\t\t\t// `querySelectorAll` to potentially track multiple links\n\t\t\t// that share the same `DATA_ATTR.ANALYTICS_TARGET_ID` attribute value\n\t\t\tconst targetElements = document.querySelectorAll(\n\t\t\t\t`[${DATA_ATTR.TRACK_WITHIN_CONTAINER_ID}=\"${trackWithinId}\"] [${DATA_ATTR.ANALYTICS_TARGET_ID}=\"${analyticsId}\"]`,\n\t\t\t);\n\n\t\t\ttargetElements.forEach(el => {\n\t\t\t\tconst text = el.textContent as string;\n\t\t\t\tconst link = el.getAttribute('href') as string;\n\n\t\t\t\t// Note that the actual `trackEvent` analytics function\n\t\t\t\t// call still belongs in the implementing component, passed\n\t\t\t\t// into the `targetLinks` props tuple array\n\t\t\t\tel.addEventListener('click', () => trackingCallback({ text, link }));\n\t\t\t});\n\t\t});\n\t}, [targetLinks, trackWithinId, children]);\n\n\t// We're using a data attribute with unique value on the container\n\t// here instead of an ID so we can chain it as a valid selector above\n\t// in `querySelectorAll`; using an `id` attribute would make an invalid selector\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t);\n};\n\nexport default TrackLinksWithin;\n","import styled, { css } from 'styled-components';\n\nexport const Card = styled.div<{\n\twithShadow?: boolean;\n\thover?: boolean;\n\tnoBorder?: boolean;\n\tallowOverflow?: boolean;\n\tmargin?: string;\n}>`\n\n\tborder: 1px solid ${({ theme }) => theme.global.borders.module};\n\ttext-align: left;\n\tborder-radius: 8px;\n\toverflow: ${({ allowOverflow }) => (allowOverflow ? 'visible' : 'hidden')};\n\n\t${({ margin }) =>\n\t\tmargin &&\n\t\tcss`\n\t\t\tmargin: ${margin};\n\t\t`}\n\n\t${({ hover }) =>\n\t\thover &&\n\t\tcss`\n\t\t\tcursor: pointer;\n\n\t\t\t&:hover {\n\t\t\t\tbox-shadow: 0 12px 24px 0 rgba(184, 188, 194.05);\n\t\t\t\ttransition: all ${({ theme }) => theme.variables.baseTransition}\n\t\t\t\t\tease-in-out;\n\t\t\t}\n\t\t`}\n\n\t${({ withShadow, hover }) =>\n\t\twithShadow &&\n\t\t!hover &&\n\t\tcss`\n\t\t\tbox-shadow: 0 3px 8px 0 rgba(212, 222, 232, 0.24);\n\t\t`}\n\n\t${({ noBorder }) =>\n\t\tnoBorder &&\n\t\tcss`\n\t\t\tborder: 0px;\n\t\t`}\n`;\n\nexport const Content = styled.div<{\n\tnoPadding: boolean;\n}>`\n\t${({ noPadding }) =>\n\t\t!noPadding &&\n\t\tcss`\n\t\t\tpadding: 25px;\n\t\t`}\n`;\n\nexport const Wrapper = styled.div``;\n","import styled, {\n\tcss,\n\tFlattenSimpleInterpolation as CSS,\n} from 'styled-components';\nimport { rgba } from 'polished';\n\nimport * as mx from 'core/styles/mixins';\nimport { IThemeObject } from 'pods/theme';\n\nimport { IProps } from './BackgroundContainer';\n\n/**\n * Applies semi-transparent shade/overlay ontop of the background image.\n *\n * @param {Object} theme - Theme object helper functions.\n * @param {string} bgImageShadeColor - `BrandColor` id identifier - or 'black', 'white'.\n * @param {number} bgImageShadeOpacity - CSS opacity of shade overlay.\n */\nconst applyBackgroundShade = (\n\ttheme: IThemeObject,\n\tbgImageShadeColor?: string,\n\tbgImageShadeOpacity?: number,\n): CSS | null => {\n\tconst bgColor =\n\t\t(bgImageShadeColor && theme.core.getCompositionColor(bgImageShadeColor)) ||\n\t\tbgImageShadeColor;\n\tconst shade = Number(bgImageShadeOpacity);\n\n\treturn bgColor && bgColor.toLowerCase() !== 'none'\n\t\t? css`\n\t\t\t\tbackground-color: ${rgba(bgColor, shade)};\n\t\t `\n\t\t: null;\n};\n\n/**\n * Applies background image, and optional shade overlay color.\n * Also sets appropriate text color.\n *\n * @param {Object} theme - Theme object helper functions.\n * @param {string} bgImage - Background image URL.\n * @param {string} [bgImageShadeColor] - `BrandColor` id identifier - or 'black', 'white'.\n * @param {number} [bgImageShadeOpacity] - Opacity of shade overlay, if applicable.\n * @param {string} [bgImagePosition] - CSS 'background-position' property.\n */\nconst applyBackgroundImage = (\n\ttheme: IThemeObject,\n\tbgImage?: string,\n\tbgImageShadeColor?: string,\n\tbgImageShadeOpacity?: number,\n\tbgImagePosition?: string,\n): CSS =>\n\tcss`\n\t\t&::before,\n\t\t&::after {\n\t\t\t${mx.pseudo}\n\t\t\t${mx.square('100%')}\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tz-index: -1;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\t&::before {\n\t\t\tbackground-image: url(${bgImage});\n\t\t\tbackground-size: cover;\n\t\t\tbackground-position: ${bgImagePosition};\n\t\t}\n\n\t\t${bgImageShadeColor &&\n\t\t\tcss`\n\t\t\t\t${bgImageShadeColor === 'black'\n\t\t\t\t\t? css`\n\t\t\t\t\t\t\t${theme.css.getLightText()}\n\n\t\t\t\t\t\t\t&::after {\n\t\t\t\t\t\t\t\t${applyBackgroundShade(theme, 'black', bgImageShadeOpacity)}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t `\n\t\t\t\t\t: bgImageShadeColor === 'white'\n\t\t\t\t\t? css`\n\t\t\t\t\t\t\t${theme.css.getDarkText()}\n\n\t\t\t\t\t\t\t&::after {\n\t\t\t\t\t\t\t\t${applyBackgroundShade(theme, 'white', bgImageShadeOpacity)}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t `\n\t\t\t\t\t: css`\n\t\t\t\t\t\t\t${theme.css.getText(bgImageShadeColor)}\n\n\t\t\t\t\t\t\t&::after {\n\t\t\t\t\t\t\t\t${applyBackgroundShade(\n\t\t\t\t\t\t\t\t\ttheme,\n\t\t\t\t\t\t\t\t\tbgImageShadeColor,\n\t\t\t\t\t\t\t\t\tbgImageShadeOpacity,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t `}\n\t\t\t`}\n\t`;\n\n/**\n * Applies background color and accompanying text color for children to inherit too.\n *\n * @param {Object} theme - Theme object helper functions.\n * @param {string} bgColor - `BrandColor` name identifier - or any other valid CSS colour string.\n */\nconst applyBackgroundColor = (\n\ttheme: IThemeObject,\n\tbgColor?: string,\n): CSS | '' =>\n\tbgColor\n\t\t? !theme.util.isBrandColor(bgColor)\n\t\t\t? css`\n\t\t\t\t\t/* This block constitutes the user essentially setting\n\t\t\t\t\ta 'manual' background colour, as opposed to a 'BrandColor'.\n\t\t\t\t\tThis can be problematic since we can't know the appropriate\n\t\t\t\t\ttext color to set. We can hope that they utilise the\n\t\t\t\t\t'textColor' override prop to set the corresponding light/dark\n\t\t\t\t\tto complement their choice of 'bgColor'; but failing that\n\t\t\t\t\twe can make an educated guess to serve as a robust fallback\n\t\t\t\t\tby applying the inverse text of the global theme default\n\t\t\t\t\tmodule colour. */\n\t\t\t\t\tcolor: ${theme.global.module.isDark\n\t\t\t\t\t\t? theme.global.typography.colors.genericLight\n\t\t\t\t\t\t: theme.global.typography.colors.genericDark};\n\t\t\t\t\tbackground-color: ${bgColor};\n\t\t\t `\n\t\t\t: theme.css.getBackgroundAndText(bgColor)\n\t\t: '';\n\nexport const InlineImgShade = styled.div<{\n\tbgImageShadeColor?: string;\n\tbgImageShadeOpacity?: number;\n}>`\n\tposition: relative;\n\n\t&::before {\n\t\t${mx.pseudo}\n\t\t${mx.square('100%')}\n\t\ttop: 0;\n\t\tleft: 0;\n\n\t\t${({ theme, bgImageShadeColor, bgImageShadeOpacity }) =>\n\t\t\tapplyBackgroundShade(theme, bgImageShadeColor, bgImageShadeOpacity)}\n\t}\n`;\n\nexport const Background = styled.div`\n\tborder-radius: inherit;\n\n\t/* Comprehensive defaults */\n\t${({ isDefaultModule, bgColor, bgImage, theme }) => css`\n\t\t/* Modules can opt-in to having the 'default' background value of\n\t\tthis module set to the global module default, as opposed to null/transparent. */\n\t\t${isDefaultModule &&\n\t\t\t!bgImage &&\n\t\t\tapplyBackgroundColor(theme, theme.global.module.color)}\n\n\t\t/* When there is no background colour or image, apply a default\n\t\ttext colour for children of this component based on the global\n\t\tmodule background colour. This is so any component utilising\n\t\tthis module can totally defer text 'color' responsibilities to this\n\t\tcomponent, even when no 'bgImage' or 'bgColor' has been set. If\n\t\tthis default colour is inaccurate it can be overriden with 'textColor' */\n\t\t${\n\t\t\t!bgColor && !bgImage && theme.global.module.isDark\n\t\t\t\t? theme.css.getLightText()\n\t\t\t\t: theme.css.getDarkText()\n\t\t}\n\t`}\n\n\t/* Optionally apply vertical padding when background color/image exists */\n\t${({ bgColor, bgImage, bgPadding }) =>\n\t\t(bgColor || bgImage) &&\n\t\tcss`\n\t\t\tpadding: ${bgPadding};\n\t\t`}\n\n\t/* Apply background image or color and appropriate text color; image takes priority */\n\t${({\n\t\tbgColor,\n\t\tbgImage,\n\t\tbgImageShadeColor,\n\t\tbgImageShadeOpacity,\n\t\tbgImagePosition,\n\t\ttheme,\n\t}) =>\n\t\tbgImage\n\t\t\t? applyBackgroundImage(\n\t\t\t\t\ttheme,\n\t\t\t\t\tbgImage,\n\t\t\t\t\tbgImageShadeColor,\n\t\t\t\t\tbgImageShadeOpacity,\n\t\t\t\t\tbgImagePosition,\n\t\t\t )\n\t\t\t: bgColor && applyBackgroundColor(theme, bgColor)}\n\n\t/* Optional text color overrides; ONLY applicable\n\tfor background images without a shade/overlay */\n\t${({ textColor, theme, bgImage, bgImageShadeColor }) =>\n\t\ttextColor &&\n\t\tbgImage &&\n\t\t!bgImageShadeColor &&\n\t\t(textColor === 'light'\n\t\t\t? theme.css.getLightText()\n\t\t\t: theme.css.getDarkText())}\n`;\n\n// Ensures:\n// - Absolutely positioned children won't escape component's bounds\n// - Nested BackgroundContainer modules will be layered\n// appropriately with relative z-indexes\n// - Fill available height of container\nexport const Wrapper = styled.div<{\n\tallowChildrenScape?: boolean;\n}>`\n\t${mx.square('100%')}\n\tposition: relative;\n\tz-index: ${props => (props.allowChildrenScape ? 'auto' : '0')};\n\tborder-radius: inherit;\n\n\t&,\n\t${Background as any} {\n\t\theight: 100%;\n\t}\n`;\n","/**\n * Repetitively used Style Component across the app.\n */\n\nimport styled, { css } from 'styled-components';\n\nimport * as mx from 'core/styles/mixins';\nimport {\n\tcaption,\n\tsubHeadingSmall,\n} from 'core/styles/Typography/Typography.style';\n\n/* Add padding to the content */\nexport const ContentWithPadding = styled.div<{\n\tpadding?: string;\n\twithBorderTop?: boolean;\n\tmargin?: string;\n}>`\n\t${({ withBorderTop, theme }) =>\n\t\twithBorderTop &&\n\t\tcss`\n\t\t\tborder-top: 1px solid ${theme.global.borders.hr};\n\t\t`}\n\n\tpadding: ${({ padding }) => padding ?? '25px'};\n\tmargin: ${({ margin }) => margin ?? '0'};\n`;\n\nexport const EEFieldDefinitionList = styled.dl`\n\tpadding: 0 10px;\n\tmargin: 0;\n\n\tdt {\n\t\t${subHeadingSmall}\n\t}\n\n\tdd {\n\t\t${caption}\n\t}\n\n\tdd {\n\t\tmargin-left: 0;\n\t}\n`;\n\nexport const EECtaWrapper = styled.button`\n\t${mx.buttonReset}\n`;\n","import styled from 'styled-components';\n\nimport * as mx from 'core/styles/mixins';\nimport * as vr from 'core/styles/variables';\nimport { FONT_NAMES } from 'core/styles/fonts';\n\nexport const ErrorSummaryContainer = styled.div`\n\tbackground-color: ${vr.formSummaryBackgroundColor};\n\tborder: 2px solid ${vr.formSummaryBorderColor};\n\tborder-radius: ${vr.formfieldBorderRadius};\n\tpadding: 15px 20px;\n\tmargin-bottom: 20px;\n\n\th3 {\n\t\tmargin: 0 0 10px;\n\t\tfont-size: 20px;\n\t\tfont-weight: 500;\n\t\tfont-family: ${FONT_NAMES.GOTHAM_ROUNDED_BOOKED};\n\t\tcolor: ${vr.formSummaryTextColor};\n\t\tline-height: 1.3;\n\t}\n\n\t${mx.bp('l')`\n\t\tmargin-bottom: 40px;\n\t`}\n`;\n\nexport const ErrorSummaryLink = styled.a`\n\tcursor: pointer;\n\ttext-decoration: none;\n\n\t&:hover,\n\t&:focus {\n\t\ttext-decoration: underline;\n\t}\n\n\t&:focus {\n\t\t${mx.mimicFocus}\n\t}\n\n\tul {\n\t\tmargin: 0;\n\t}\n`;\n\nexport const ErrorSummaryList = styled.ul`\n\tlist-style-type: none;\n\tmargin: 0;\n\tpadding: 0;\n\n\t/* Set twice here so it overrides both the default\n\thyperlink color as well as the default li::before dash */\n\t&,\n\t${ErrorSummaryLink} {\n\t\tcolor: ${vr.formSummaryTextColor};\n\t}\n\n\t${ErrorSummaryLink} {\n\t\tstrong {\n\t\t\tfont-weight: 500;\n\t\t}\n\t}\n`;\n","import React from 'react';\nimport { uid } from 'react-uid';\nimport { TransitionGroup, CSSTransition } from 'react-transition-group';\n\nimport CONTENT from 'pods/forms/_formBuilder.content';\nimport Collapse from 'core/components/Collapse';\n\nimport * as S from './ErrorSummary.style';\n\ninterface IProps {\n\tsummaryData: {\n\t\tfieldId: string;\n\t\tlabel: string;\n\t\terrors: string[];\n\t}[];\n}\n\nconst ErrorSummary = ({ summaryData }: IProps) => (\n\t\n\t\t\n\t\t\t

{CONTENT.SUMMARY.TITLE}

\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{summaryData.map(item => (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\tconst errorField = document.getElementById(item.fieldId);\n\n\t\t\t\t\t\t\t\t\t\tif (errorField) {\n\t\t\t\t\t\t\t\t\t\t\terrorField.focus();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{`${item.label}: `}\n\n\t\t\t\t\t\t\t\t\t{item.errors.length > 1 ? (\n\t\t\t\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t\t\t\t\t{item.errors.map(err => (\n\t\t\t\t\t\t\t\t\t\t\t\t
    • {err}
    • \n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<>{item.errors[0]}\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    \n);\n\nexport default ErrorSummary;\n","import React from 'react';\n\nimport RichText from 'core/components/RichText';\nimport Collapse from 'core/components/Collapse';\nimport HelpText from 'pods/forms/components/base/HelpText';\nimport Label from 'pods/forms/components/base/Label';\nimport { Icon, ICONS } from 'core/components/Icon';\nimport { JssTextType } from 'core/utils/sitecore-utils';\n\nimport * as S from './CtrlHolder.style';\n\nexport interface IProps {\n\thtmlId?: string;\n\tlabel?: string;\n\thelpText?: string | React.ReactNode;\n\terrorMsg?: string;\n\ttooltip?: React.ReactNode;\n\trequired?: boolean;\n\treadonly?: boolean;\n\tappendMsg?: string;\n\toptionalText?: string;\n\tbottomMsg?: JssTextType;\n\tvalue?: any;\n\thasErrorIcon?: boolean;\n\t/** Remove top and bottom margin */\n\tnoMargin?: boolean;\n\tchildren: React.ReactNode;\n}\n\nconst CtrlHolder = ({\n\thtmlId,\n\tlabel,\n\thelpText,\n\terrorMsg,\n\ttooltip,\n\trequired = false,\n\treadonly = false,\n\tnoMargin = false,\n\tappendMsg,\n\tvalue,\n\tchildren,\n\toptionalText,\n\tbottomMsg,\n\thasErrorIcon = false,\n}: IProps) => {\n\tconst hasError = !!errorMsg;\n\tconst hasValue = !!value;\n\n\tconst labelProps = {\n\t\thtmlId,\n\t\tlabel,\n\t\thasError,\n\t\trequired,\n\t\treadonly,\n\t\ttooltip,\n\t\toptionalText,\n\t};\n\n\treturn (\n\t\t\n\t\t\t{label && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t)}\n\n\t\t\t\n\t\t\t\t{children}\n\t\t\t\t{!!appendMsg && }\n\n\t\t\t\t{htmlId && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{hasErrorIcon && }\n\t\t\t\t\t\t\t{errorMsg && }\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\t{!!bottomMsg && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n};\n\nexport default CtrlHolder;\n","import styled from 'styled-components';\n\nimport { baseInputStyles } from 'pods/forms/components/inputs/Text/Text.style';\n\nexport const TextArea = styled.textarea`\n\t${props => baseInputStyles(props)}\n\theight: 120px;\n\tresize: vertical;\n\tmin-height: 120px;\n\tmax-height: 300px;\n\tmax-width: 800px;\n\twidth: 100%;\n\twhite-space: pre-wrap;\n\n\t/* Hide the microsoft default 'clear' button */\n\t&::-ms-clear {\n\t\tdisplay: none;\n\t}\n`;\n\nexport const RemainingCharacters = styled.div`\n\tmargin-top: 10px;\n\tfont-size: 14px;\n`;\n\nexport default TextArea;\n","import React from 'react';\n\nimport { isJssField } from 'core/utils/sitecore-utils';\nimport IProps from 'pods/forms/components/formFieldProps.d';\nimport CtrlHolder from 'pods/forms/components/structural/CtrlHolder';\n\nimport * as S from './TextArea.style';\n\nexport const RawTextArea = (props: any) => ;\n\nconst TextArea = ({\n\tconfig,\n\tcomputed,\n\thtmlId,\n\tpath,\n\thandleChangeFast,\n\thandleBlurFast,\n\thandleKeyPressFast,\n\tvalue,\n\tgetDisplayError,\n\trenderTextNode,\n\tctrlHolderProps,\n}: IProps) => {\n\tconst { data = {} } = config ?? {};\n\tconst {\n\t\tinputAttrs = {},\n\t\tlabelHelpText,\n\t\tplaceholder,\n\t\tautoGrow,\n\t\tshowRemainingCharacters = {},\n\t} = data;\n\n\tconst label = isJssField(data.label)\n\t\t? data.label\n\t\t: renderTextNode && renderTextNode(data.label, 'span');\n\tconst helpText = isJssField(labelHelpText)\n\t\t? labelHelpText\n\t\t: renderTextNode && renderTextNode(labelHelpText, 'span');\n\tconst tooltip = renderTextNode && renderTextNode(data.tooltip);\n\tconst errorMsg = getDisplayError && getDisplayError();\n\tconst { required, disabled } = computed;\n\n\tconst _ctrlHolderProps = {\n\t\thtmlId,\n\t\tlabel,\n\t\thelpText,\n\t\terrorMsg,\n\t\trequired,\n\t\tvalue,\n\t\t...(data.tooltip && { tooltip }),\n\t\t...ctrlHolderProps,\n\t};\n\n\tconst hasError = !!errorMsg;\n\tconst hasValue = !!value;\n\tconst hasHelpText = !!helpText;\n\tconst hasAutoGrow = !!autoGrow;\n\tconst hasShowRemainingCharacters = !!showRemainingCharacters?.max;\n\n\tconst handleAutoGrow = (target: HTMLElement) => {\n\t\tconst scrollHeight = target.scrollHeight;\n\t\tif (scrollHeight > target.clientHeight) {\n\t\t\ttarget.style.height = `${scrollHeight}px`;\n\t\t}\n\t};\n\n\tconst remainingCharacters = () => {\n\t\tconst { max, messageTemplate } = showRemainingCharacters;\n\t\tconst n = (max - value.length).toLocaleString();\n\n\t\treturn (\n\t\t\t(messageTemplate && messageTemplate.replace('${n}', n)) ||\n\t\t\t`${n} characters remaining`\n\t\t);\n\t};\n\n\treturn (\n\t\t\n\t\t\t) => {\n\t\t\t\t\thandleChangeFast(e.target.value);\n\t\t\t\t\thasAutoGrow && handleAutoGrow(e.target);\n\t\t\t\t}}\n\t\t\t\tonBlur={() => handleBlurFast()}\n\t\t\t\tonKeyPress={handleKeyPressFast}\n\t\t\t\trequired={required}\n\t\t\t\tdisabled={disabled}\n\t\t\t\taria-describedby={hasHelpText ? `${htmlId}-helpText` : undefined}\n\t\t\t\t{...{ required, disabled, hasError, hasValue, placeholder }}\n\t\t\t\t{...inputAttrs}\n\t\t\t/>\n\t\t\t{hasShowRemainingCharacters && (\n\t\t\t\t{remainingCharacters()}\n\t\t\t)}\n\t\t\n\t);\n};\n\nexport default TextArea;\n","/* stylelint-disable selector-type-no-unknown */\n\nimport styled, { css } from 'styled-components';\n\nimport * as vr from 'core/styles/variables';\n\nimport { baseInputStyles } from 'pods/forms/components/inputs/Text/Text.style';\n\nexport const AddressAutocompleteContainer = styled.div<{\n\thasError?: boolean;\n\tdisabled?: boolean;\n}>`\n\tdisplay: flex;\n\talign-items: center;\n\n\t.formBuilder__addressAutocomplete {\n\t\t${props => baseInputStyles(props)}\n\t\tmax-width: unset;\n\t\tborder: none;\n\t\tpadding: 0;\n\n\t\t&__control {\n\t\t\tpadding: 8px 10px;\n\t\t\ttransition: none;\n\n\t\t\t${({ hasError, disabled }) =>\n\t\t\t\t!disabled &&\n\t\t\t\tcss`\n\t\t\t\t\tborder: 1px solid\n\t\t\t\t\t\t${hasError ? vr.formfieldErrorColor : vr.formfieldBorderColor};\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\toutline: none;\n\t\t\t\t\t\tborder: 1px solid\n\t\t\t\t\t\t\t${hasError\n\t\t\t\t\t\t\t\t? vr.formfieldErrorColor\n\t\t\t\t\t\t\t\t: vr.formfieldOnHoverBorderColor};\n\t\t\t\t\t\tbox-shadow: 0 0 0 1px\n\t\t\t\t\t\t\t${hasError\n\t\t\t\t\t\t\t\t? vr.formfieldErrorColor\n\t\t\t\t\t\t\t\t: vr.formfieldOnHoverBorderColor};\n\t\t\t\t\t}\n\n\t\t\t\t\t&--is-focused {\n\t\t\t\t\t\tpadding: 8px 10px;\n\t\t\t\t\t\toutline: none;\n\t\t\t\t\t\tborder: 1px solid\n\t\t\t\t\t\t\t${hasError\n\t\t\t\t\t\t\t\t? vr.formfieldErrorColor\n\t\t\t\t\t\t\t\t: vr.formfieldBorderColorFocus} !important;\n\t\t\t\t\t\tbox-shadow: 0 0 0 1px\n\t\t\t\t\t\t\t${hasError\n\t\t\t\t\t\t\t\t? vr.formfieldErrorColor\n\t\t\t\t\t\t\t\t: vr.formfieldBorderColorFocus} !important;\n\t\t\t\t\t}\n\t\t\t\t`}\n\n\t\t\t&--is-disabled {\n\t\t\t\tborder: 1px solid ${vr.radioCheckboxDefault} !important;\n\t\t\t}\n\t\t}\n\n\t\t&__value-container {\n\t\t\tpadding: 0 4px;\n\t\t}\n\n\t\t&__menu {\n\t\t\tcolor: ${vr.formfieldColor};\n\t\t}\n\t}\n`;\n\nexport const MenuList = styled.div``;\n\nexport const Option = styled.div``;\n","/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable @typescript-eslint/camelcase */\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/async';\nimport set from 'lodash/set';\nimport get from 'lodash/get';\nimport { MenuListComponentProps } from 'react-select/src/components/Menu';\nimport config from 'jss-boilerplate/temp/config.js';\n\nimport UpdatedCtrlHolder from 'pods/forms/components/structural/UpdatedCtrlHolder';\nimport { isJssField } from 'core/utils/sitecore-utils';\nimport IProps from 'pods/forms/components/formFieldProps.d';\nimport { ADDRESS, MANUAL_ADDRESS } from 'core/constants/form';\n\nimport Richtext from 'core/components/RichText';\nimport { AddressDataType } from 'core/api/client/SystemValidatorApi';\nimport api from 'core/hooks/useGetAddressFields/api';\nimport * as S from './AddressAutocomplete.style';\n\ninterface IAddressOption {\n\tlabel: string;\n\tvalue: string;\n\tfull_address?: string;\n\taddress?: AddressDataType;\n\tcustomLabel?: JSX.Element;\n}\n\nconst myOptionLabel = ({ label, customLabel }: IAddressOption) => {\n\tif (!!customLabel) {\n\t\treturn customLabel;\n\t} else {\n\t\treturn <>{label};\n\t}\n};\n\n// API base config\nconst apiConfig = config;\n\nconst MenuList = (props: MenuListComponentProps) => {\n\treturn {props.children};\n};\n\nconst AddressAutocomplete = ({\n\tconfig,\n\tcomputed,\n\thtmlId,\n\tvalue,\n\thandleChange,\n\tgetDisplayError,\n\trenderTextNode,\n\tctrlHolderProps,\n\tpath,\n\tsetValues,\n\tformValues,\n}: IProps) => {\n\tconst { data = {}, appendMsg, bottomMsg } = config;\n\tconst {\n\t\tplaceholder,\n\t\tlabelHelpText,\n\t\tinputAttrs = {},\n\t\tfullWidth,\n\t\temptyResultLabel,\n\t\tnoMatchLabel,\n\t} = data;\n\n\tconst label = isJssField(data.label)\n\t\t? data.label\n\t\t: renderTextNode(data.label, 'span');\n\tconst helpText = isJssField(labelHelpText)\n\t\t? labelHelpText\n\t\t: renderTextNode(labelHelpText, 'span');\n\tconst tooltip = renderTextNode(data.tooltip);\n\tconst errorMsg = getDisplayError();\n\tconst hasError = !!errorMsg;\n\tconst { required, disabled } = computed;\n\n\tconst [input, setInput] = React.useState('');\n\n\tconst systemValidationBase = `${apiConfig.australianSuperApi?.apiDomain}${apiConfig.australianSuperApi?.apiPathSystemValidation}`;\n\n\tconst { data: response, loading } = api.useGetAddress({\n\t\tbase: systemValidationBase,\n\t\tqueryParams: { full_address: input },\n\t});\n\n\tconst _ctrlHolderProps = {\n\t\thtmlId,\n\t\tlabel,\n\t\thelpText,\n\t\terrorMsg,\n\t\trequired,\n\t\tappendMsg,\n\t\tvalue,\n\t\tdisabled,\n\t\tbottomMsg,\n\t\tplaceholder,\n\t\ttype: inputAttrs?.type,\n\t\tfullWidth: data.fullWidth,\n\t\t...(data.tooltip && { tooltip }),\n\t\t...ctrlHolderProps,\n\t};\n\n\tconst addressPathPrefix = path.split('.')[0];\n\tconst addressValue = get(\n\t\tformValues,\n\t\t`${addressPathPrefix}.${ADDRESS.ADDRESS}`,\n\t);\n\n\tconst onInputChange = (val: string) => {\n\t\tsetInput(val);\n\t};\n\n\t// TODO: test with jss components\n\t//const debounced = React.useCallback(debounce(refetch, 200), []);\n\n\tReact.useEffect(() => {\n\t\tset(\n\t\t\tformValues,\n\t\t\t`${addressPathPrefix}.${ADDRESS.ADDRESS_LOOKUP}`,\n\t\t\taddressValue,\n\t\t);\n\t}, [addressValue]);\n\n\tconst onChange = (val: IAddressOption) => {\n\t\tif (val?.value !== MANUAL_ADDRESS) {\n\t\t\tconst addressPathPrefix = path.split('.')[0];\n\n\t\t\tconst {\n\t\t\t\tsubdwelling_name = '',\n\t\t\t\tstreet_number = '',\n\t\t\t\tstreet_name = '',\n\t\t\t\tstreet_type = '',\n\t\t\t\tsuburb = '', // TODO: missing from api\n\t\t\t\tstate = '',\n\t\t\t\tpostcode = '',\n\t\t\t\tpostal = '',\n\t\t\t} = val?.address ?? {};\n\n\t\t\tconst getStreet1 = (): string => {\n\t\t\t\tlet street1 = '';\n\t\t\t\tif (subdwelling_name.length > 0) {\n\t\t\t\t\tstreet1 += `${subdwelling_name} `;\n\t\t\t\t}\n\t\t\t\tif (street_number.length > 0) {\n\t\t\t\t\tstreet1 += `${street_number} `;\n\t\t\t\t}\n\t\t\t\tif (street_name.length > 0) {\n\t\t\t\t\tstreet1 += `${street_name} `;\n\t\t\t\t}\n\t\t\t\tif (street_type.length > 0) {\n\t\t\t\t\tstreet1 += street_type;\n\t\t\t\t}\n\n\t\t\t\treturn street1;\n\t\t\t};\n\t\t\t//this will set address_line_1 to postal address if all street fields are empty\n\t\t\t//this scenario is expected when the given address is postal\n\t\t\tset(\n\t\t\t\tformValues,\n\t\t\t\t`${addressPathPrefix}.${ADDRESS.STREET_1}`,\n\t\t\t\tgetStreet1() || postal,\n\t\t\t);\n\t\t\tset(formValues, `${addressPathPrefix}.${ADDRESS.STREET_2}`, '');\n\t\t\t// todo: remove N/A once API is fixed\n\t\t\tset(\n\t\t\t\tformValues,\n\t\t\t\t`${addressPathPrefix}.${ADDRESS.SUBURB}`,\n\t\t\t\tsuburb ?? 'N/A',\n\t\t\t);\n\t\t\tset(formValues, `${addressPathPrefix}.${ADDRESS.STATE}`, state);\n\t\t\tset(formValues, `${addressPathPrefix}.${ADDRESS.POSTCODE}`, postcode);\n\n\t\t\tsetValues(formValues);\n\t\t}\n\n\t\thandleChange(val?.value);\n\t};\n\n\tconst _loadAutocompleteOptions = (searchText: string) => {\n\t\treturn new Promise(resolve =>\n\t\t\t// Adding a delay of 2 seconds in order to delay the API call once the user entered a search string.\n\t\t\tsetTimeout(() => {\n\t\t\t\t{\n\t\t\t\t\t// Condition: The user needs to input at least 5 character on the\n\t\t\t\t\t// address search field so that the auto-suggest from the API will appear on the UI.\n\t\t\t\t\tif (searchText.length >= 5) {\n\t\t\t\t\t\t// API result that matched the query params on address field\n\t\t\t\t\t\tconst addressData = response?.data?.addresses ?? [];\n\n\t\t\t\t\t\t// Mapping the response and make it a selection options\n\t\t\t\t\t\tconst addressOptions: IAddressOption[] = addressData\n\t\t\t\t\t\t\t?.map(item => ({\n\t\t\t\t\t\t\t\tlabel: item.full_address,\n\t\t\t\t\t\t\t\tvalue: item.full_address,\n\t\t\t\t\t\t\t\taddress: item.address,\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\t.slice(0, 5);\n\t\t\t\t\t\tsetTimeout(() => resolve(addressOptions), 200);\n\t\t\t\t\t\tconst isResultEmpty = addressOptions.length === 0;\n\t\t\t\t\t\taddressOptions.push({\n\t\t\t\t\t\t\tlabel: isResultEmpty ? 'empty result' : 'manual',\n\t\t\t\t\t\t\tvalue: 'manual',\n\t\t\t\t\t\t\tcustomLabel: (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'empty result',\n\t\t\t\t\t\t\t\tvalue: 'manual',\n\t\t\t\t\t\t\t\tcustomLabel: ,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, 2000),\n\t\t);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tinput.inputValue.length >= 5 ? 'No results' : null\n\t\t\t\t\t}\n\t\t\t\t\taria-label=\"Select\"\n\t\t\t\t\tmenuPortalTarget={document.body}\n\t\t\t\t\tmenuPosition=\"fixed\"\n\t\t\t\t/>\n\t\t\t\n\t\t\n\t);\n};\n\nexport default AddressAutocomplete;\n","/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable @typescript-eslint/camelcase */\nimport React, { useState } from 'react';\nimport AsyncSelect from 'react-select/async';\nimport { MenuListComponentProps } from 'react-select/src/components/Menu';\nimport axios from 'axios';\nimport set from 'lodash/set';\nimport get from 'lodash/get';\nimport { isExperienceEditorActive } from '@sitecore-jss/sitecore-jss-react';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport config from 'jss-boilerplate/temp/config.js';\nimport {\n\tRetrieveAddressResponseDataType,\n\tAddressDataType,\n} from 'core/api/client/SystemValidatorApi';\nimport { doRefreshToken } from 'core/utils/api-utils';\nimport { getAccessToken } from 'core/browserStorage';\nimport { AKAMAI_BOT_FLAG, X_CORRELATION_APP } from 'core/constants';\nimport { ADDRESS } from 'core/constants/form';\nimport GetAddressMock from 'core/hooks/useGetAddressFields/api/mocks/GetAddress.mock.json';\nimport { isJssField } from 'core/utils/sitecore-utils';\nimport IProps from 'pods/forms/components/formFieldProps.d';\nimport UpdatedCtrlHolder from 'pods/forms/components/structural/UpdatedCtrlHolder';\nimport { isStorybook } from 'stories/utils';\n\nimport * as S from './AddressAutocomplete.style';\nimport {\n\tMANUAL_ADDRESS,\n\tMANUAL_OPTION,\n\tSB_FAIL,\n\tSEARCH_RESULTS_MAX_DISPLAY,\n\tSEARCH_TEXT_TRIGGER_LENGTH,\n} from './AddressAutocomplete.const';\n\n// API base config\nconst apiConfig = config;\nconst systemValidationBase = `${apiConfig.australianSuperApi?.apiDomain}${apiConfig.australianSuperApi?.apiPathSystemValidation}`;\n\ninterface IAddressOption {\n\tlabel: string;\n\tvalue: string;\n\tfull_address?: string;\n\taddress?: AddressDataType;\n\tcustomLabel?: JSX.Element;\n}\n\nconst myOptionLabel = ({ label, customLabel }: IAddressOption) => {\n\tif (!!customLabel) {\n\t\treturn customLabel;\n\t} else {\n\t\treturn <>{label};\n\t}\n};\n\nconst MenuList = (props: MenuListComponentProps) => {\n\treturn {props.children};\n};\n\nconst AddressAutocompleteAxios = ({\n\tconfig,\n\tcomputed,\n\thtmlId,\n\tvalue,\n\thandleChange,\n\tgetDisplayError,\n\trenderTextNode,\n\tctrlHolderProps,\n\tpath,\n\tsetValues,\n\tformValues,\n}: IProps) => {\n\tconst [showOptions, setShowOptions] = useState(false);\n\n\tconst { data = {}, appendMsg, bottomMsg } = config;\n\tconst {\n\t\tplaceholder,\n\t\tlabelHelpText,\n\t\tinputAttrs = {},\n\t\tfullWidth,\n\n\t\t// Note: Specific for T19 Withdrawals - SMSF Transfer - Postal Address\n\t\tisWithdrawalPostalAddress,\n\t\twithdrawalPostalAddressPath,\n\t} = data;\n\n\tconst label = isJssField(data.label)\n\t\t? data.label\n\t\t: renderTextNode(data.label, 'span');\n\tconst helpText = isJssField(labelHelpText)\n\t\t? labelHelpText\n\t\t: renderTextNode(labelHelpText, 'span');\n\tconst tooltip = renderTextNode(data.tooltip);\n\tconst errorMsg = getDisplayError();\n\tconst hasError = !!errorMsg;\n\tconst { required, disabled } = computed;\n\n\tconst _ctrlHolderProps = {\n\t\thtmlId,\n\t\tlabel,\n\t\thelpText,\n\t\terrorMsg,\n\t\trequired,\n\t\tappendMsg,\n\t\tvalue,\n\t\tdisabled,\n\t\tbottomMsg,\n\t\tplaceholder,\n\t\ttype: inputAttrs?.type,\n\t\tfullWidth: data.fullWidth,\n\t\t...(data.tooltip && { tooltip }),\n\t\t...ctrlHolderProps,\n\t};\n\n\tconst addressLookupPathPrefix = path.split('.')[0];\n\n\t// Note: Can be from saved forms or payload back/edit\n\tconst storedAddressValue = get(formValues, addressLookupPathPrefix);\n\n\tconst asyncSelectDefaultValue = () => {\n\t\t/**\n\t\t * Note: See notes on onChange else\n\t\t * Since we are storing the value as MANUAL_ADDRESS inside the path value\n\t\t * then we can just change it back to MANUAL_OPTION to display it when\n\t\t * navigating back.\n\t\t */\n\t\treturn storedAddressValue\n\t\t\t? storedAddressValue === MANUAL_ADDRESS\n\t\t\t\t? MANUAL_OPTION\n\t\t\t\t: {\n\t\t\t\t\t\tlabel: storedAddressValue?.label,\n\t\t\t\t\t\tvalue: storedAddressValue?.value,\n\t\t\t\t\t\tcustomLabel: storedAddressValue?.addressValue,\n\t\t\t\t }\n\t\t\t: null;\n\t};\n\n\tconst onInputChange = (searchText: string) => {\n\t\t// Note: Show only option dropdown on\n\t\tif (searchText?.length >= SEARCH_TEXT_TRIGGER_LENGTH) {\n\t\t\tsetShowOptions(true);\n\t\t} else {\n\t\t\tsetShowOptions(false);\n\t\t}\n\t};\n\n\tconst onChange = (option: IAddressOption) => {\n\t\tif (option?.value !== MANUAL_ADDRESS) {\n\t\t\tconst {\n\t\t\t\tsubdwelling_name = '',\n\t\t\t\tstreet_number = '',\n\t\t\t\tstreet_name = '',\n\t\t\t\tstreet_type = '',\n\t\t\t\tsuburb = '',\n\t\t\t\tstate = '',\n\t\t\t\tpostcode = '',\n\t\t\t} = option?.address ?? {};\n\n\t\t\t// Note: Specific for T19 Withdrawals - SMSF Transfer - Postal Address\n\t\t\tif (isWithdrawalPostalAddress) {\n\t\t\t\t// Note: Set address-autocomplete value\n\t\t\t\tset(formValues, addressLookupPathPrefix, option);\n\n\t\t\t\t// Note: Set postal_address object values\n\t\t\t\tconst postalAddressSetter = (variablePath: string, value: string) => {\n\t\t\t\t\tconst cleanPath =\n\t\t\t\t\t\twithdrawalPostalAddressPath ?? addressLookupPathPrefix;\n\t\t\t\t\tset(formValues, `${cleanPath}.${variablePath}`, value);\n\t\t\t\t};\n\n\t\t\t\tpostalAddressSetter(\n\t\t\t\t\tADDRESS.STREET_1,\n\t\t\t\t\t`${subdwelling_name} ${street_number} ${street_name} ${street_type}`,\n\t\t\t\t);\n\t\t\t\tpostalAddressSetter(ADDRESS.STREET_2, '');\n\t\t\t\tpostalAddressSetter(ADDRESS.SUBURB, suburb ?? 'N/A');\n\t\t\t\tpostalAddressSetter(ADDRESS.SUBURB_CITY, suburb ?? 'N/A');\n\t\t\t\tpostalAddressSetter(ADDRESS.STATE, state);\n\t\t\t\tpostalAddressSetter(ADDRESS.POSTCODE, postcode);\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tsetValues(formValues);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\t/**\n\t\t\t * Note: Manual is not saved as an option object for the address lookup path\n\t\t\t * because it is used in the rules to show/hide.\n\t\t\t * The `shown` rule is using includes which can't compare objects.\n\t\t\t * This means that the rule should use MANUAL_ADDRESS as the value to compare to.\n\t\t\t */\n\t\t}\n\n\t\thandleChange(option?.value);\n\t};\n\n\tconst _loadAutocompleteOptions = (searchText: string) => {\n\t\tif (searchText?.length >= SEARCH_TEXT_TRIGGER_LENGTH) {\n\t\t\tif (isStorybook()) {\n\t\t\t\treturn new Promise(resolve => {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (searchText?.toLowerCase() === SB_FAIL) {\n\t\t\t\t\t\t\tresolve([MANUAL_OPTION]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst rawAddressData = GetAddressMock?.data?.addresses ?? [];\n\t\t\t\t\t\t\tconst addressses = rawAddressData?.slice(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tSEARCH_RESULTS_MAX_DISPLAY,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst addressOptions: IAddressOption[] = addressses?.map(\n\t\t\t\t\t\t\t\taddress => ({\n\t\t\t\t\t\t\t\t\tlabel: address.full_address,\n\t\t\t\t\t\t\t\t\tvalue: address.full_address,\n\t\t\t\t\t\t\t\t\taddress: address.address as any, // TODO\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\taddressOptions?.push(MANUAL_OPTION);\n\n\t\t\t\t\t\t\tresolve(addressOptions);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 2000);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst addressLookUpParam = {\n\t\t\t\t\tfull_address: searchText,\n\t\t\t\t};\n\n\t\t\t\treturn new Promise(resolve => {\n\t\t\t\t\tsetTimeout(async () => {\n\t\t\t\t\t\t// Check if we need to do a refreshtoken for the case when the user has been\n\t\t\t\t\t\t// staying in the form for too long\n\t\t\t\t\t\tif (!isStorybook() || !isExperienceEditorActive())\n\t\t\t\t\t\t\tawait doRefreshToken();\n\n\t\t\t\t\t\treturn axios({\n\t\t\t\t\t\t\turl: `${systemValidationBase}/validators/address-lookup`,\n\t\t\t\t\t\t\tparams: addressLookUpParam,\n\t\t\t\t\t\t\tmethod: 'GET',\n\t\t\t\t\t\t\tresponseType: 'json',\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t'Authorization': `Bearer ${getAccessToken()}`,\n\t\t\t\t\t\t\t\t'Accept': 'application/json',\n\t\t\t\t\t\t\t\t'Cache-Control': 'no-cache',\n\t\t\t\t\t\t\t\t'X-API-Key': apiConfig?.externalServices?.coarseGrainApiKey,\n\t\t\t\t\t\t\t\t'X-Correlation-Id': uuidv4(), // FED initiated correlationID\n\t\t\t\t\t\t\t\t'X-Correlation-App': X_CORRELATION_APP, // Link detection of request origin\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\twithCredentials: AKAMAI_BOT_FLAG,\n\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.then(response => {\n\t\t\t\t\t\t\t\tconst rawAddressData = response?.data?.data?.addresses ?? [];\n\t\t\t\t\t\t\t\tconst addressses = rawAddressData?.slice(\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\tSEARCH_RESULTS_MAX_DISPLAY,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tconst addressOptions: IAddressOption[] = addressses?.map(\n\t\t\t\t\t\t\t\t\t(address: RetrieveAddressResponseDataType) => ({\n\t\t\t\t\t\t\t\t\t\tlabel: address.full_address,\n\t\t\t\t\t\t\t\t\t\tvalue: address.full_address,\n\t\t\t\t\t\t\t\t\t\taddress: address.address as string,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\taddressOptions?.push(MANUAL_OPTION);\n\n\t\t\t\t\t\t\t\tresolve(addressOptions);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\t\tresolve([MANUAL_OPTION]);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}, 2000);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\tinput.inputValue.length >= 5 ? 'No results' : null\n\t\t\t\t\t}\n\t\t\t\t\taria-label=\"Select\"\n\t\t\t\t\tmenuPortalTarget={document.body}\n\t\t\t\t\tmenuPosition=\"fixed\"\n\t\t\t\t\tmenuIsOpen={showOptions}\n\t\t\t\t/>\n\t\t\t\n\t\t\n\t);\n};\n\nexport default AddressAutocompleteAxios;\n","/* stylelint-disable selector-type-no-unknown */\n\nimport styled, { css } from 'styled-components';\n\nimport * as vr from 'core/styles/variables';\n\nimport { baseInputStyles } from 'pods/forms/components/inputs/Text/Text.style';\n\nexport const FundsAutocompleteContainer = styled.div<{\n\thasError?: boolean;\n\tdisabled?: boolean;\n}>`\n\tdisplay: flex;\n\talign-items: center;\n\n\t.formBuilder__fundsAutocomplete {\n\t\t${props => baseInputStyles(props)}\n\t\tmax-width: unset;\n\t\tborder: none;\n\t\tpadding: 0;\n\n\t\t&__control {\n\t\t\tpadding: 8px 10px;\n\t\t\ttransition: none;\n\t\t\tcursor: text;\n\n\t\t\t${({ hasError, disabled }) =>\n\t\t\t\t!disabled &&\n\t\t\t\tcss`\n\t\t\t\t\tborder: 1px solid\n\t\t\t\t\t\t${hasError ? vr.formfieldErrorColor : vr.formfieldBorderColor};\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\toutline: none;\n\t\t\t\t\t\tborder: 1px solid\n\t\t\t\t\t\t\t${hasError\n\t\t\t\t\t\t\t\t? vr.formfieldErrorColor\n\t\t\t\t\t\t\t\t: vr.formfieldOnHoverBorderColor};\n\t\t\t\t\t\tbox-shadow: 0 0 0 1px\n\t\t\t\t\t\t\t${hasError\n\t\t\t\t\t\t\t\t? vr.formfieldErrorColor\n\t\t\t\t\t\t\t\t: vr.formfieldOnHoverBorderColor};\n\t\t\t\t\t}\n\n\t\t\t\t\t&--is-focused {\n\t\t\t\t\t\tpadding: 8px 10px;\n\t\t\t\t\t\toutline: none;\n\t\t\t\t\t\tborder: 1px solid\n\t\t\t\t\t\t\t${hasError\n\t\t\t\t\t\t\t\t? vr.formfieldErrorColor\n\t\t\t\t\t\t\t\t: vr.formfieldBorderColorFocus} !important;\n\t\t\t\t\t\tbox-shadow: 0 0 0 1px\n\t\t\t\t\t\t\t${hasError\n\t\t\t\t\t\t\t\t? vr.formfieldErrorColor\n\t\t\t\t\t\t\t\t: vr.formfieldBorderColorFocus} !important;\n\t\t\t\t\t}\n\t\t\t\t`}\n\n\t\t\t&--is-disabled {\n\t\t\t\tborder: 1px solid ${vr.radioCheckboxDefault} !important;\n\t\t\t}\n\t\t}\n\n\t\t&__value-container {\n\t\t\tpadding: 0 4px;\n\t\t}\n\n\t\t&__menu {\n\t\t\tcolor: ${vr.formfieldColor};\n\t\t}\n\t}\n`;\n\nexport const MenuList = styled.div`\n\toverflow: auto;\n\tmax-height: 300px;\n`;\n\nexport const Option = styled.div``;\n","/* eslint-disable @typescript-eslint/camelcase */\n\nimport React, { useState } from 'react';\nimport { Field } from 'formik';\nimport axios from 'axios';\nimport set from 'lodash/set';\nimport AsyncSelect from 'react-select/async';\nimport { v4 as uuidv4 } from 'uuid';\nimport { ValueType } from 'react-select';\nimport { MenuListComponentProps } from 'react-select/src/components/Menu';\nimport { isJwtExpired } from 'jwt-check-expiration';\nimport { isExperienceEditorActive } from '@sitecore-jss/sitecore-jss-react';\n\nimport config from 'jss-boilerplate/temp/config.js';\nimport { isStorybook } from 'stories/utils';\nimport {\n\tReferenceDataSuperFunds,\n\tReferenceDataSuperFundsDataValues,\n} from 'core/api/client/ReferenceDataApi';\nimport { getAccessToken } from 'core/browserStorage';\nimport { doRefreshToken } from 'core/utils/api-utils';\nimport {\n\tAKAMAI_BOT_FLAG,\n\tACTIVE_FUND_STATUS,\n\tX_CORRELATION_APP,\n} from 'core/constants';\nimport GetSuperFundsApra from 'core/hooks/useGetReferences/api/mocks/GetSuperFundsApra.mock.json';\nimport GetSuperFundsUsi from 'core/hooks/useGetReferences/api/mocks/GetSuperFundsUsi.mock.json';\nimport GetSMSFYesAbnFunds from 'core/hooks/useGetReferences/api/mocks/GetSMSFYesAbnFunds.mock.json';\nimport { isJssField } from 'core/utils/sitecore-utils';\nimport IProps from 'pods/forms/components/formFieldProps.d';\nimport UpdatedCtrlHolder from 'pods/forms/components/structural/UpdatedCtrlHolder';\n\nimport {\n\tMANUAL_FUND_OPTION,\n\tMANUAL_LABEL,\n\tSB_FAIL,\n} from './FundsAutocomplete.const';\nimport * as S from './FundsAutocomplete.style';\n\nexport type TOption = {\n\tlabel: string;\n\tvalue: string;\n};\n\nexport type TReferenceDataSuperFundsDataValuesForUsi = Pick<\n\tReferenceDataSuperFundsDataValues,\n\t'eRollover' | 'usi' | 'fund_code' | 'abn' | 'name'\n>;\n\nexport type TReferenceDataSuperFundsUnion =\n\t| ReferenceDataSuperFundsDataValues\n\t| TReferenceDataSuperFundsDataValuesForUsi;\n\n// API base config\nconst apiConfig = config;\nconst referenceBase = `${config.australianSuperApi?.apiDomain}${config.australianSuperApi?.apiPathReferenceData}`;\n\n// Custom react-select components\nconst MenuList = (props: MenuListComponentProps) => {\n\treturn {props.children};\n};\n\nconst FundsAutocomplete = ({\n\tconfig,\n\tcomputed,\n\thtmlId,\n\tvalue,\n\thandleChange,\n\tgetDisplayError,\n\trenderTextNode,\n\tctrlHolderProps,\n\tpath,\n\tsetValues,\n\tformValues,\n}: IProps) => {\n\tconst [showOptions, setShowOptions] = useState(false);\n\tconst [fieldError, setFieldError] = useState('');\n\tconst [searchResult, setSearchResult] = useState<\n\t\tTReferenceDataSuperFundsUnion[] | null\n\t>(null);\n\n\tconst { data = {}, appendMsg, bottomMsg } = config;\n\tconst {\n\t\tplaceholder,\n\t\tlabelHelpText,\n\t\tinputAttrs = {},\n\t\tfullWidth,\n\t\tpathFundName,\n\t\tpathAbn,\n\t\tpathSpinUsi,\n\t\tusiSearch,\n\t\tisATOFundSearch,\n\t\tfundAbnErrMessage,\n\t} = data;\n\n\tconst label = isJssField(data.label)\n\t\t? data.label\n\t\t: renderTextNode(data.label, 'span');\n\tconst helpText = isJssField(labelHelpText)\n\t\t? labelHelpText\n\t\t: renderTextNode(labelHelpText, 'span');\n\tconst tooltip = renderTextNode(data.tooltip);\n\tconst isUsiSearch = typeof usiSearch === 'boolean' ? usiSearch : false;\n\n\tconst [isApiRunning, setIsApiRunning] = useState(false);\n\n\tconst errorMsg = getDisplayError();\n\tconst hasError = !!fieldError || !!errorMsg;\n\tconst { required, disabled } = computed;\n\tconst _ctrlHolderProps = {\n\t\thtmlId,\n\t\tlabel,\n\t\thelpText,\n\t\trequired,\n\t\tappendMsg,\n\t\tvalue,\n\t\tdisabled,\n\t\tbottomMsg,\n\t\tplaceholder,\n\t\ttype: inputAttrs?.type,\n\t\tfullWidth: data.fullWidth,\n\t\terrorMsg: fieldError ?? errorMsg,\n\t\t...(data.tooltip && { tooltip }),\n\t\t...ctrlHolderProps,\n\t};\n\n\tconst pathFundAutocomplete = path.split('.')[0];\n\n\tconst setFormikValues = (path: string, value: string) => {\n\t\t// IMPORTANT: Set Formik values to reflect on formValues\n\t\tset(formValues, path, value);\n\t\t// IMPORTANT: Do not remove. This counters the delay.\n\t\tsetTimeout(() => {\n\t\t\tsetValues(formValues);\n\t\t});\n\t};\n\n\t// TODO: Add this in the JSS Props and make the AutoComplete component call it from there.\n\tconst ER103 =\n\t\tfundAbnErrMessage || 'The ABN should have 11 numbers with no spaces...';\n\n\tconst onInputChange = (inputText: string) => {\n\t\t// =========PLACEHOLDER=========== //\n\n\t\t/***\n\t\t * @description Remove all the spaces in an input\n\t\t * This aims to allow inputs of numbers with spaces on them\n\t\t * Ex: 12 345 678 901 -- This is a valid ABN\n\t\t */\n\t\tconst searchText = inputText.replace(/\\s/g, '');\n\n\t\t// @note: This is a check to see if the input contains letters\n\t\t// If the input contains letters, display the ER103 error\n\t\tconst hasLettersRegex = new RegExp(/[a-zA-Z]/g);\n\t\tif (!!isATOFundSearch && hasLettersRegex.test(searchText)) {\n\t\t\tsetFieldError(ER103);\n\t\t}\n\n\t\t// @note: This is a check to make sure that the\n\t\t// entered ABN is not more than 11 digits\n\t\tif (!!isATOFundSearch && searchText.length > 11) {\n\t\t\tsetFieldError(ER103);\n\t\t\tsetShowOptions(false);\n\t\t} else {\n\t\t\tif (searchText?.length >= 3) {\n\t\t\t\tif (!!isATOFundSearch) {\n\t\t\t\t\tconst regex = new RegExp(/^[0-9 ]*$/);\n\t\t\t\t\tif (regex.test(searchText)) {\n\t\t\t\t\t\tsetFieldError(undefined);\n\t\t\t\t\t\tsetShowOptions(true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetFieldError(ER103);\n\t\t\t\t\t\tsetShowOptions(false);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsetShowOptions(true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsetShowOptions(false);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst onChange = (option: ValueType) => {\n\t\tif (option !== MANUAL_FUND_OPTION) {\n\t\t\tconst selectedFund = searchResult?.find(\n\t\t\t\tfund => fund?.name === (option as TOption)?.value,\n\t\t\t);\n\t\t\t// IMPORTANT: Do not remove. This counters the delay.\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetFormikValues(pathFundAutocomplete, (option as TOption)?.value);\n\t\t\t\tsetFormikValues(\n\t\t\t\t\tpathFundName,\n\t\t\t\t\ttypeof selectedFund?.name === 'string' ? selectedFund?.name : '',\n\t\t\t\t);\n\t\t\t\tsetFormikValues(\n\t\t\t\t\tpathAbn,\n\t\t\t\t\ttypeof selectedFund?.abn === 'string' ? selectedFund?.abn : '',\n\t\t\t\t);\n\t\t\t\tsetFormikValues(\n\t\t\t\t\tpathSpinUsi,\n\t\t\t\t\ttypeof selectedFund?.usi === 'string' ? selectedFund?.usi : '',\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\t// Note: Optional callback\n\t\thandleChange?.(option);\n\t};\n\n\tconst _callFundsAPI = (\n\t\tgetFundsParam: {},\n\t\tresolve: (value: unknown) => void,\n\t) => {\n\t\treturn axios({\n\t\t\turl: `${referenceBase}/datasets/funds`,\n\t\t\tparams: getFundsParam,\n\t\t\tmethod: 'GET',\n\t\t\tresponseType: 'json',\n\t\t\theaders: {\n\t\t\t\t'Authorization': `Bearer ${getAccessToken()}`,\n\t\t\t\t'Accept': 'application/json',\n\t\t\t\t'Cache-Control': 'no-cache',\n\t\t\t\t'X-API-Key': apiConfig?.externalServices?.coarseGrainApiKey,\n\t\t\t\t'X-Correlation-Id': uuidv4(), // FED initiated correlationID\n\t\t\t\t'X-Correlation-App': X_CORRELATION_APP, // Link detection of request origin\n\t\t\t},\n\t\t\twithCredentials: AKAMAI_BOT_FLAG,\n\t\t})\n\t\t\t.then(response => {\n\t\t\t\tconst result = response?.data as ReferenceDataSuperFunds;\n\t\t\t\tconst resultDataValues = result?.data\n\t\t\t\t\t?.values as TReferenceDataSuperFundsUnion[];\n\n\t\t\t\tsetIsApiRunning(false);\n\t\t\t\tsetSearchResult(resultDataValues);\n\n\t\t\t\tif (Array.isArray(resultDataValues) && resultDataValues?.length > 0) {\n\t\t\t\t\tresolve([\n\t\t\t\t\t\t...resultDataValues?.map((fund: TReferenceDataSuperFundsUnion) => ({\n\t\t\t\t\t\t\tlabel: fund?.name,\n\t\t\t\t\t\t\tvalue: fund?.name,\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tMANUAL_FUND_OPTION,\n\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tresolve([MANUAL_FUND_OPTION]);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tresolve([MANUAL_FUND_OPTION]);\n\t\t\t});\n\t};\n\n\tconst _loadAutocompleteOptions = (searchString: string) => {\n\t\tconst searchText = searchString.replace(/\\s/g, '');\n\n\t\t// @note: This is a check to see if the input contains letters\n\t\t// If the input contains letters, display the ER103 error\n\t\tconst hasLettersRegex = new RegExp(/[a-zA-Z]/g);\n\n\t\tif (\n\t\t\t!!isATOFundSearch &&\n\t\t\t(searchText.length > 11 || hasLettersRegex.test(searchText))\n\t\t) {\n\t\t\tsetFieldError(ER103);\n\t\t} else {\n\t\t\tsetFieldError(undefined);\n\t\t\tif (searchText?.length >= 3) {\n\t\t\t\tif (isStorybook()) {\n\t\t\t\t\treturn new Promise(resolve => {\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tif (searchText?.toLowerCase() === SB_FAIL) {\n\t\t\t\t\t\t\t\t// Note: Error scenario\n\t\t\t\t\t\t\t\tresolve([MANUAL_FUND_OPTION]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Note: Success scenario\n\t\t\t\t\t\t\t\tsetSearchResult(\n\t\t\t\t\t\t\t\t\tisATOFundSearch\n\t\t\t\t\t\t\t\t\t\t? GetSMSFYesAbnFunds?.data?.values\n\t\t\t\t\t\t\t\t\t\t: isUsiSearch\n\t\t\t\t\t\t\t\t\t\t? GetSuperFundsUsi?.data?.values\n\t\t\t\t\t\t\t\t\t\t: GetSuperFundsApra?.data?.values,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tresolve([\n\t\t\t\t\t\t\t\t\t...(isATOFundSearch\n\t\t\t\t\t\t\t\t\t\t? GetSMSFYesAbnFunds?.data?.values?.map(\n\t\t\t\t\t\t\t\t\t\t\t\t(fund: TReferenceDataSuperFundsUnion) => ({\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: fund?.name,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: fund?.name,\n\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t: isUsiSearch\n\t\t\t\t\t\t\t\t\t\t? GetSuperFundsUsi?.data?.values?.map(\n\t\t\t\t\t\t\t\t\t\t\t\t(fund: TReferenceDataSuperFundsUnion) => ({\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: fund?.name,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: fund?.name,\n\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t: GetSuperFundsApra?.data?.values?.map(\n\t\t\t\t\t\t\t\t\t\t\t\t(fund: TReferenceDataSuperFundsUnion) => ({\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: fund?.name,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: fund?.name,\n\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t )),\n\t\t\t\t\t\t\t\t\tMANUAL_FUND_OPTION,\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, 1500);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t/**\n\t\t\t\t\t * Note: See Notes in FundAutocomplete.md\n\t\t\t\t\t */\n\t\t\t\t\tconst strippedSearchText = searchText?.replace(/\\s/g, '');\n\t\t\t\t\tconst getFundsParam = isUsiSearch\n\t\t\t\t\t\t? { usi: strippedSearchText }\n\t\t\t\t\t\t: isNaN(Number(strippedSearchText))\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tfund_name: strippedSearchText,\n\t\t\t\t\t\t\t\tfund_status: ACTIVE_FUND_STATUS,\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: isATOFundSearch\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tabn: strippedSearchText,\n\t\t\t\t\t\t\t\tfund_status: ACTIVE_FUND_STATUS,\n\t\t\t\t\t\t\t\tfund_type: 'ATO',\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: { abn: strippedSearchText };\n\n\t\t\t\t\treturn new Promise(resolve => {\n\t\t\t\t\t\t// NOTE: check JWT if expired\n\t\t\t\t\t\t// if YES - call refresh token - then fund ABN API call\n\t\t\t\t\t\t// if NO - just call fund ABN API\n\t\t\t\t\t\tconst isAccesTokenExpired = isJwtExpired(getAccessToken());\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tisAccesTokenExpired &&\n\t\t\t\t\t\t\t(!isStorybook() || !isExperienceEditorActive())\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tdoRefreshToken()\n\t\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\t\tif (isApiRunning) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tsetIsApiRunning(true);\n\n\t\t\t\t\t\t\t\t\treturn _callFundsAPI(getFundsParam, resolve);\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.catch(() => resolve);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetTimeout(async () => {\n\t\t\t\t\t\t\t\tsetIsApiRunning(true);\n\n\t\t\t\t\t\t\t\treturn _callFundsAPI(getFundsParam, resolve);\n\t\t\t\t\t\t\t}, 2000);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\treturn (\n\t\t {\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t// Note: Extra catch but should not be triggered\n\t\t\t\t\t\t\t\t\t// since we are always resolving a manual value on failure\n\t\t\t\t\t\t\t\t\treturn obj?.inputValue?.length >= 3 ? MANUAL_LABEL : null;\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\taria-label=\"Select\"\n\t\t\t\t\t\t\t\tmenuPortalTarget={document.body}\n\t\t\t\t\t\t\t\tmenuPosition=\"fixed\"\n\t\t\t\t\t\t\t\tmenuIsOpen={showOptions}\n\t\t\t\t\t\t\t\tonBlurResetsInput={false}\n\t\t\t\t\t\t\t\t// Note: Empty array is to force \"clear\" dropdown input on every change\n\t\t\t\t\t\t\t\tvalue={[]}\n\t\t\t\t\t\t\t\tonKeyDown={(e: React.KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\tconst value = e.key;\n\t\t\t\t\t\t\t\t\tconst regex = new RegExp(/^[0-9 ]{1,9}$/);\n\t\t\t\t\t\t\t\t\tif (!!isATOFundSearch && !!value && value !== '') {\n\t\t\t\t\t\t\t\t\t\tif (value === 'Backspace' || e.ctrlKey) {\n\t\t\t\t\t\t\t\t\t\t\treturn e.key;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (!regex.test(value)) {\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t}}\n\t\t/>\n\t);\n};\n\nexport default FundsAutocomplete;\n","import React from 'react';\nimport { Text } from '@sitecore-jss/sitecore-jss-react';\n\nimport RichText from 'core/components/RichText';\nimport { JssTextType, isJssField } from 'core/utils/sitecore-utils';\n\ninterface IProps {\n\tconfig: {\n\t\tdata: {\n\t\t\tcontent: string | JssTextType;\n\t\t};\n\t};\n}\n\nconst FormRichtext = ({ config }: IProps) => {\n\treturn isJssField(config.data.content) ? (\n\t\t\n\t) : (\n\t\t\n\t);\n};\n\nexport default FormRichtext;\n","import styled, { css } from 'styled-components';\n\nimport * as vr from 'core/styles/variables';\n\nexport const Wrapper = styled.section<{\n\tmargin?: string;\n\tpadding?: string;\n\thasBorderTop?: boolean;\n\thasBorderBottom?: boolean;\n\tcustomCss?: string;\n}>`\n\t${({ margin }) =>\n\t\t!!margin &&\n\t\tcss`\n\t\t\tmargin: ${margin};\n\t\t`}\n\n\t${({ padding }) =>\n\t\t!!padding &&\n\t\tcss`\n\t\t\tpadding: ${padding};\n\t\t`}\n\n\t${({ hasBorderTop }) =>\n\t\t!!hasBorderTop &&\n\t\tcss`\n\t\t\tborder-top: 1px solid ${vr.borderGrey};\n\t\t`}\n\n\t${({ hasBorderBottom }) =>\n\t\t!!hasBorderBottom &&\n\t\tcss`\n\t\t\tborder-bottom: 1px solid ${vr.borderGrey};\n\t\t`}\n\n\t${({ customCss }) =>\n\t\t!!customCss &&\n\t\tcss`\n\t\t\t${customCss};\n\t\t`}\n`;\n","import React from 'react';\n\nimport IFormFieldProps from 'pods/forms/components/formFieldProps.d';\n\nimport * as S from './Section.style';\n\ninterface IProps extends IFormFieldProps {\n\tchildren: any;\n}\n\nconst Section = ({ config, children }: IProps) => {\n\tconst { data = {} } = config;\n\tconst { margin, padding, hasBorderTop, hasBorderBottom, customCss } = data;\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t);\n};\n\nexport default Section;\n","/* stylelint-disable selector-type-case */\n/* stylelint-disable selector-type-no-unknown */\n\nimport styled from 'styled-components';\n\nimport { Input as Text } from 'pods/forms/components/inputs/Text/Text.style';\nimport { SelectContainer as Select } from 'pods/forms/components/inputs/Select/Select.style';\nimport { TextArea } from 'pods/forms/components/inputs/TextArea/TextArea.style';\nimport {\n\tCtrlHolder,\n\tFieldContents,\n} from 'pods/forms/components/structural/UpdatedCtrlHolder/UpdatedCtrlHolder.style';\n\nexport const Wrapper = styled.div`\n\t/* All of these consume 'baseInputStyles()' from Text.style.ts,\n\twhich sets the max-width of the shared input styles */\n\t${Text},\n\t${Select} .formBuilder__select,\n\t${TextArea},\n\t${FieldContents}\n\t {\n\t\tmax-width: unset !important;\n\t}\n\n\t${CtrlHolder} {\n\t\tmargin-bottom: 0;\n\t}\n`;\n\nexport const FieldSet = styled.fieldset`\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n\n\tlegend {\n\t\tdisplay: inline;\n\t\tposition: static;\n\t\tmargin: 0;\n\t}\n`;\n","import React from 'react';\nimport ConditionalWrap from 'conditional-wrap';\n\nimport DynamicSubLayout from 'core/components/DynamicSubLayout';\nimport CtrlHolder from 'pods/forms/components/structural/CtrlHolder';\nimport IFormFieldProps from 'pods/forms/components/formFieldProps.d';\nimport * as Typo from 'core/styles/Typography';\n\nimport * as S from './FormSubLayout.style';\n\ninterface IProps extends IFormFieldProps {\n\tchildren: any;\n}\n\nconst FormSubLayout = ({ children, config }: IProps) => {\n\tconst {\n\t\tfieldsetOneLineError,\n\t\thtmlId,\n\t\ttargetFields,\n\t\tisFieldset,\n\t\tlegend,\n\t\tnoMargin,\n\t\tdisabled,\n\t\tnoStack,\n\t\t...subLayoutProps\n\t} = config?.data ?? {};\n\n\tlet fieldsetError;\n\t//this will filter the error message\n\t//and set one line of error in Sublayout container for specific fieldset\n\tif (fieldsetOneLineError && htmlId && targetFields) {\n\t\tif (children) {\n\t\t\t//set any as data-type to cater dynamic fields\n\t\t\tchildren.forEach((field: any) => {\n\t\t\t\tconst fieldError = field.props.formik.errors[targetFields[0]];\n\t\t\t\tif (fieldError) {\n\t\t\t\t\t//there is only 1 validation for all of the fields in fieldset\n\t\t\t\t\t//it doesn't matter if we check only one field error\n\t\t\t\t\tfieldsetError = fieldError[0];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\treturn (\n\t\t\n\t\t\t (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{children}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{children}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default FormSubLayout;\n","import React from 'react';\n\nimport IFormFieldProps from 'pods/forms/components/formFieldProps.d';\nimport Card from 'core/components/Card';\n\ninterface IProps extends IFormFieldProps {\n\tchildren: any;\n}\n\n/**\n * Card container inside forms\n * @param isShown - This is created to cater for custom hiding without using form rules.\n * @returns\n */\nconst CardContainer = ({ config, children }: IProps) => {\n\tconst { isShown, topChildren, bottomChildren, ...cardProps } =\n\t\tconfig?.data ?? {};\n\n\treturn (\n\t\t<>\n\t\t\t{isShown ? (\n\t\t\t\t\n\t\t\t\t\t{topChildren ?? null}\n\t\t\t\t\t{children}\n\t\t\t\t\t{bottomChildren ?? null}\n\t\t\t\t\n\t\t\t) : null}\n\t\t\n\t);\n};\n\nexport default CardContainer;\n","import styled from 'styled-components';\n\nimport * as mx from 'core/styles/mixins';\n\nexport const Wrapper = styled.div``;\n\nexport const Section = styled.section`\n\tpadding: 24px;\n\n\t& + & {\n\t\tborder-top: 1px solid ${({ theme }) => theme.global.borders.module};\n\t}\n`;\n\nexport const TitleContainer = styled.div<{\n\tisEdit?: boolean;\n}>`\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tmargin-bottom: ${props => (props.isEdit ? `15px` : '25px')};\n`;\n\nexport const Dl = styled.dl`\n\tmargin: 0;\n\n\tdiv + div {\n\t\tmargin-top: 16px;\n\t}\n\n\tdt {\n\t\t${mx.bp('s')`\n\t\t\tpadding-right: 50px;\n\t\t`}\n\t}\n\n\tdt,\n\tdd {\n\t\tmargin: 0;\n\n\t\t${mx.bp('s')`\n\t\t\tdisplay: inline-block;\n\t\t\twidth: 50%;\n\t\t`}\n\t}\n`;\n\nexport const DlEdit = styled.dl`\n\tmargin: 0;\n\t> div {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\talign-items: center;\n\n\t\t> div:first-child {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\tdt {\n\t\t${mx.bp('s')`\n\t\t\tpadding-right: 50px;\n\t\t`}\n\n\t\t> p {\n\t\t\tcolor: ${({ theme }) =>\n\t\t\t\ttheme.global.typography.colors.default} !important;\n\t\t}\n\t}\n\n\tdt,\n\tdd {\n\t\tmargin: 0;\n\n\t\t${mx.bp('s')`\n\t\t\tdisplay: inline-block;\n\t\t\twidth: 50%;\n\t\t`}\n\t}\n`;\n\nexport const CtaContainerEdit = styled.div`\n\twidth: 62px;\n`;\n","/* eslint-disable react/no-array-index-key */\n\nimport React from 'react';\nimport isArray from 'lodash/isArray';\nimport { uid } from 'react-uid';\n\nimport Cta from 'core/components/Cta';\nimport { ICONS } from 'core/components/Icon/Icon';\nimport { JssTextType, isJssField } from 'core/utils/sitecore-utils';\nimport * as Typo from 'core/styles/Typography';\n\nimport * as S from './FormReview.style';\n\nexport type Content = {\n\t/** Form field label */\n\tlabel: JssTextType | React.ReactNode;\n\t/** Captured info */\n\tinfo: string[] | string | number;\n};\n\ninterface IFormReview {\n\tsections: {\n\t\t/** Title of the review section, usually align with the step title */\n\t\ttitle: JssTextType;\n\t\t/** Content of the review section */\n\t\tcontents: Content[];\n\t\t/** Link of the cta that use to direct the users to a different page (step) */\n\t\tctaLink: JssTextType;\n\t\t/** Callback to handle the click of link */\n\t\tctaCallback?: () => void;\n\t\t/** Flag if Edit button should align on the label and value on the first row */\n\t\tisEditAlignToLabel?: boolean;\n\t\t/** Flag if Edit button should align on the label and value on the first row */\n\t\tisEditCtaVisible?: boolean;\n\t\t/** Flag if header element should be h4 or h3 */\n\t\tisHeaderH3?: boolean;\n\t}[];\n}\n\nconst FormReview = ({ sections }: IFormReview) => (\n\t\n\t\t{sections.map(\n\t\t\t({\n\t\t\t\tctaLink,\n\t\t\t\tctaCallback,\n\t\t\t\tcontents,\n\t\t\t\ttitle,\n\t\t\t\tisEditAlignToLabel = false,\n\t\t\t\tisEditCtaVisible = true,\n\t\t\t\tisHeaderH3 = false,\n\t\t\t}) =>\n\t\t\t\tisEditAlignToLabel ? (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{contents.map(({ label, info }, contentIndex) => {\n\t\t\t\t\t\t\t\tconst isJss = isJssField(label);\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t{isJss ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    {label ?? ''}
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t{/* NOTE: use index as key for the array is static */}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{(isArray(info) ? info : [info]).map(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(value, index) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{value ?? ''}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{contentIndex === 0 && ctaLink && isEditCtaVisible && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ctaLink?.value}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t) : (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{ctaLink && isEditCtaVisible && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{ctaLink?.value}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{contents.map(({ label, info }, contentIndex) => {\n\t\t\t\t\t\t\t\tconst isJss = isJssField(label);\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t{isJss ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t
    {label ?? ''}
    \n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t{/* NOTE: use index as key for the array is static */}\n\t\t\t\t\t\t\t\t\t\t\t{(isArray(info) ? info : [info]).map((value, index) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{value ?? ''}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t),\n\t\t)}\n\t
    \n);\n\nexport default FormReview;\n","import styled from 'styled-components';\n\nimport { CTA_CLASS } from 'core/components/Cta/Cta.style';\n\nexport const Wrapper = styled.div`\n\t.${CTA_CLASS} {\n\t\tpadding: 0;\n\t\tmargin: 5px 0 20px;\n\t}\n`;\n\nexport const CloseButton = styled.div`\n\t.${CTA_CLASS} {\n\t\tmargin: 0;\n\t}\n`;\n","/* eslint-disable react/no-array-index-key */\n\nimport React from 'react';\n\nimport Cta from 'core/components/Cta';\nimport { ICONS } from 'core/components/Icon/Icon';\nimport * as Typo from 'core/styles/Typography';\nimport { useModal } from 'core/hooks';\n\nimport * as S from './HelpLinkModal.style';\n\ninterface IHelpLinkModal {\n\t/** Text of the CTA button */\n\ttext: string;\n\t/** Title of the Modal Dialog */\n\tmodalTitle?: string;\n\t/** Content of the Modal Dialog */\n\tmodalContent: string;\n\t/** Label for Modal Dialog close button */\n\tmodalCloseButtonText?: string;\n\t/** Click event. Useful for adding extra logic to the default behavior */\n\tonClick?: () => void;\n}\n\nconst HelpLinkModal = ({\n\ttext,\n\tmodalTitle,\n\tmodalContent,\n\tmodalCloseButtonText,\n\tonClick,\n}: IHelpLinkModal) => {\n\tconst [Modal, toggleModal] = useModal();\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\tonClick?.();\n\t\t\t\t\t\ttoggleModal();\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{text}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{modalTitle && {modalTitle}}\n\t\t\t\t\n\t\t\t\t\t{modalContent}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t toggleModal()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{modalCloseButtonText ?? 'Close'}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default HelpLinkModal;\n","import React from 'react';\nimport ReCAPTCHA from 'react-google-recaptcha';\n\nimport UpdatedCtrlHolder from 'pods/forms/components/structural/UpdatedCtrlHolder';\nimport IProps from 'pods/forms/components/formFieldProps.d';\n\n// interface ICaptchaProps {\n// \tsetToken: (token: string) => string;\n// }\n\nconst Captcha = ({\n\tconfig,\n\tcomputed,\n\thtmlId,\n\tvalue,\n\tgetDisplayError,\n\tctrlHolderProps,\n}: IProps) => {\n\tconst { appendMsg } = config;\n\n\tconst errorMsg = getDisplayError();\n\tconst { required, disabled } = computed;\n\n\tconst _ctrlHolderProps = {\n\t\thtmlId,\n\t\terrorMsg,\n\t\tappendMsg,\n\t\tvalue,\n\t\tdisabled,\n\t\trequired,\n\t\t...ctrlHolderProps,\n\t};\n\n\treturn (\n\t\t\n\t\t\t setToken(token)}\n\t\t\t\t// onExpired={() => setToken('')}\n\t\t\t/>\n\t\t\n\t);\n};\n\nexport default Captcha;\n","import styled from 'styled-components';\n\nexport const Wrapper = styled.div`\n\tmargin-top: 32px;\n\tdisplay: flex;\n\talign-items: center;\n\tflex-direction: column;\n\tpadding: 0 45px;\n`;\n","/* eslint-disable react/no-array-index-key */\n\nimport React from 'react';\n\nimport Image from 'core/sitecore/jss-proxy-components/JssImage';\nimport { JssImageType, JssTextType } from 'core/utils/sitecore-utils';\nimport * as Typo from 'core/styles/Typography';\n\nimport * as S from './LoadingContent.style';\n\ninterface ILoadingContent {\n\ticon: JssImageType;\n\ttitle: JssTextType;\n\tsubTitle: JssTextType;\n}\n\nconst LoadingContent = ({ icon, title, subTitle }: ILoadingContent) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default LoadingContent;\n","import React from 'react';\n\nimport { useModal } from 'core/hooks';\nimport Cta, { CtaProps as ICtaProps } from 'core/components/Cta';\nimport CtaContainer from 'core/components/CtaContainer';\nimport { IProps as IModalProps } from 'core/components/Modal';\nimport { JssTextType } from 'core/utils/sitecore-utils';\n\ntype onClickType =\n\t| React.MouseEvent\n\t| React.MouseEvent\n\t| React.MouseEvent;\n\ninterface IModalInCtaProps {\n\tctaProps: Omit;\n\tonCtaClick?: (event?: onClickType) => void;\n\n\tmodalProps: IModalProps;\n\n\tctaDataTargetId?: string;\n\tmodalDataTargetId?: string;\n\thasCloseButton?: boolean;\n\tcloseButtonContent?: JssTextType;\n}\n\n/**\n * @description Combined CTA and Modal components for easier importing on forms.\n * Used interfaces of CTA and Modal.\n * onCtaClick was added since we have the toggleModal method inside onClick.\n */\nconst ModalInCta = ({\n\t// CTA Props\n\tctaProps,\n\tonCtaClick,\n\t// Modal Props\n\tmodalProps,\n\t// Optional\n\tctaDataTargetId,\n\tmodalDataTargetId,\n\thasCloseButton,\n\tcloseButtonContent,\n}: IModalInCtaProps) => {\n\tconst [Modal, toggleModal] = useModal();\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t{modalProps?.children}\n\t\t\t\t{hasCloseButton && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\t {\n\t\t\t\t\ttoggleModal();\n\t\t\t\t\tonCtaClick?.(e);\n\t\t\t\t}}\n\t\t\t\t{...ctaProps}\n\t\t\t/>\n\t\t\n\t);\n};\n\nexport default ModalInCta;\n","import React from 'react';\nimport { titleCase } from 'change-case';\n\nimport Text from 'pods/forms/components/inputs/Text';\nimport TextArea from 'pods/forms/components/inputs/TextArea';\nimport Select from 'pods/forms/components/inputs/Select';\nimport AddressAutocomplete from 'pods/forms/components/inputs/AddressAutocomplete';\nimport AddressAutocompleteAxios from 'pods/forms/components/inputs/AddressAutocomplete/AddressAutocompleteAxios';\nimport FundsAutocomplete from 'pods/forms/components/inputs/FundsAutocomplete';\nimport RadioCheckbox from 'pods/forms/components/inputs/RadioCheckbox';\nimport FormRichText from 'pods/forms/components/base/FormRichText';\nimport Section from 'pods/forms/components/structural/Section';\nimport SubLayout from 'pods/forms/components/structural/FormSubLayout';\nimport CardContainer from 'pods/forms/components/structural/CardContainer';\nimport FormReview from 'pods/forms/components/related/FormReview';\nimport HelpLinkModal from 'pods/forms/components/related/HelpLinkModal';\nimport IFormFieldProps from 'pods/forms/components/formFieldProps.d';\nimport BPAYInfo from 'core/components/BPAYInfo';\nimport Captcha from 'pods/forms/components/inputs/Captcha';\nimport LoadingContent from './components/related/LoadingContent';\nimport MessageBlock from './components/related/MessageBlock';\nimport ModalInCta from './components/related/ModalInCta';\n\n/**\n * Shorthand component export for radio checkbox variants.\n */\nconst getRadioCheckboxVariant = (type: string) => {\n\tconst Component = (props: any) => ;\n\n\tComponent.displayName = titleCase(type);\n\n\treturn Component;\n};\n\n/**\n * Map the data object to the component props.\n *\n * @param type - element type for React to create\n */\nconst mapDataToProp = (type: any) => ({\n\tchildren,\n\tconfig,\n}: IFormFieldProps & { children: any }) => {\n\tconst { data } = config;\n\n\treturn React.createElement(type, data, children);\n};\n\nexport default {\n\t// Structural\n\t// ------------------------\n\t'section': {\n\t\tcomponent: Section,\n\t\tdefaultValue: '',\n\t},\n\t'sub-layout': {\n\t\tcomponent: SubLayout,\n\t\tdefaultValue: '',\n\t},\n\t'richtext': {\n\t\tcomponent: FormRichText,\n\t\tdefaultValue: '',\n\t},\n\t'card-container': {\n\t\tcomponent: CardContainer,\n\t\tdefaultValue: '',\n\t},\n\t// Inputs\n\t// ------------------------\n\t'text': {\n\t\tcomponent: Text,\n\t\tdefaultValue: '',\n\t},\n\t'textarea': {\n\t\tcomponent: TextArea,\n\t\tdefaultValue: '',\n\t},\n\t'select': {\n\t\tcomponent: Select,\n\t\tdefaultValue: '',\n\t},\n\t'checkbox': {\n\t\tcomponent: getRadioCheckboxVariant('checkbox'),\n\t\tdefaultValue: '',\n\t},\n\t'radio': {\n\t\tcomponent: getRadioCheckboxVariant('radio'),\n\t\tdefaultValue: '',\n\t},\n\t'switch': {\n\t\tcomponent: getRadioCheckboxVariant('switch'),\n\t\tdefaultValue: '',\n\t},\n\t'address-autocomplete': {\n\t\tcomponent: AddressAutocomplete,\n\t},\n\t'address-autocomplete-with-axios': {\n\t\tcomponent: AddressAutocompleteAxios,\n\t\tdefaultValue: '',\n\t},\n\t'funds-autocomplete': {\n\t\tcomponent: FundsAutocomplete,\n\t\tdefaultValue: '',\n\t},\n\n\t// Multi-step form components\n\t// ------------------------\n\t'help-link-modal': {\n\t\tcomponent: mapDataToProp(HelpLinkModal),\n\t\tdefaultValue: '',\n\t},\n\t'loading-content': {\n\t\tcomponent: mapDataToProp(LoadingContent),\n\t\tdefaultValue: '',\n\t},\n\t'message-block': {\n\t\tcomponent: mapDataToProp(MessageBlock),\n\t\tdefaultValue: '',\n\t},\n\t'modal-in-cta': {\n\t\tcomponent: mapDataToProp(ModalInCta),\n\t\tdefaultValue: '',\n\t},\n\n\t// Custom components\n\t// ------------------------\n\t'bpay-info': {\n\t\tcomponent: mapDataToProp(BPAYInfo),\n\t\tdefaultValue: '',\n\t},\n\t'form-review': {\n\t\tcomponent: mapDataToProp(FormReview),\n\t},\n\t'captcha': {\n\t\tcomponent: Captcha,\n\t\tdefaultValue: '',\n\t},\n\t'custom': {\n\t\tcomponent: ({ config: { data }, ...props }: any) =>\n\t\t\tdata.component({ ...data.componentProps, ...props }),\n\t\tdefaultValue: '',\n\t},\n};\n","import { getIn } from 'formik';\n\ninterface IFormBuilderActions {\n\t[key: string]: any;\n}\n\nconst actions: IFormBuilderActions = {\n\tsetValue: ({ action, formValues, setFieldValue }: any) => {\n\t\tconst sets = action.data && action.data.sets ? action.data.sets : [];\n\n\t\tsets.forEach((set: any) => {\n\t\t\tconst otherFieldValue = getIn(formValues, set.path);\n\t\t\tconst overrideExistingValue =\n\t\t\t\ttypeof set.overrideExistingValue === 'boolean'\n\t\t\t\t\t? set.overrideExistingValue\n\t\t\t\t\t: true;\n\n\t\t\tlet setValue = set.value;\n\t\t\tif (set.value === undefined && set.valuePath) {\n\t\t\t\tsetValue = getIn(formValues, set.valuePath);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\toverrideExistingValue ||\n\t\t\t\totherFieldValue === '' ||\n\t\t\t\totherFieldValue === null ||\n\t\t\t\ttypeof otherFieldValue === 'undefined'\n\t\t\t) {\n\t\t\t\tif (set.computedValue) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetFieldValue(set.path, set.computedValue(setValue));\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetFieldValue(set.path, setValue);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\tcall: ({ action, fieldValue }: any) => {\n\t\tsetTimeout(() => {\n\t\t\taction.functionName(fieldValue);\n\t\t});\n\t},\n\tprocessData: ({ action, formValues }: any) => {\n\t\tconst { data } = action;\n\t\tif (data.processHandler) {\n\t\t\tdata.processHandler(formValues);\n\t\t}\n\t},\n\tcleanupInput: ({ action, formValues, setFieldValue }: any) => {\n\t\tconst { data } = action;\n\t\tconst rawValue = getIn(formValues, data.path);\n\t\tif (typeof rawValue === 'number' || typeof rawValue === 'string') {\n\t\t\t// convert to string and strip all matching pattern\n\t\t\tconst formattedValue = String(rawValue).replace(\n\t\t\t\tdata.patter,\n\t\t\t\tdata.newSubstr ?? '',\n\t\t\t);\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetFieldValue(data.path, formattedValue);\n\t\t\t});\n\t\t}\n\t},\n};\n\nexport default actions;\n","import React from 'react';\nimport FormBuilderLib from 'schematik-forms/lib';\n\nimport ErrorSummary from 'pods/forms/components/structural/ErrorSummary';\nimport { useMemberContext } from 'core/sitecore/member';\nimport { getMemberTrackingProps } from 'core/sitecore/member/utility';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {\n\ttrackEvent as _trackEvent,\n\tITrackEventProps,\n\tITrackMemberProps,\n} from 'core/analytics';\n\nimport validators from './_formBuilder.validators';\nimport components from './_formBuilder.components';\nimport actions from './_formBuilder.actions';\n\nconst FormBuilder = (props: any) => {\n\t// This is to enable using hook for the action configuration\n\tconst memberData = useMemberContext();\n\tconst memberTrackingProps: ITrackMemberProps = getMemberTrackingProps(\n\t\tmemberData,\n\t);\n\n\tconst _actions = cloneDeep(actions);\n\n\t_actions.trackEvent = ({ action }: any) => {\n\t\tconst { data } = action;\n\t\tconst eventProps: ITrackEventProps = {\n\t\t\tevent_section: data.eventSection,\n\t\t\tevent_type: data.eventType,\n\t\t\tevent_title: data.eventTitle,\n\t\t\tevent_label: data.eventLabel,\n\t\t\tevent_trigger: data.eventTrigger,\n\t\t\tevent_url: data.eventUrl,\n\t\t\tevent_message: data.eventMessage,\n\t\t};\n\n\t\t_trackEvent({\n\t\t\t...eventProps,\n\t\t\t...memberTrackingProps,\n\t\t});\n\t};\n\n\treturn (\n\t\t }\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n\nexport default FormBuilder;\n","import { isObject } from 'core/utils/object-utils';\n\n/**\n * Core BackgroundContainer component props\n */\nexport interface BackgroundContainerProps {\n\tbgPadding?: string;\n\tbgColor?: string;\n\tbgImage?: string;\n\tbgImageInlineAltText?: string;\n\tbgImageInline?: boolean;\n\tbgImageShadeColor?: string;\n\tbgImageShadeOpacity?: number;\n\tbgImagePosition?: string;\n\ttextColor?: 'light' | 'dark';\n}\n\n/**\n * Map of JSS prop names corresponding to this module,\n * and their component-prop name equivlanets.\n */\nconst JSSpropsMap: { [key: string]: string } = {\n\tbackgroundColour: 'bgColor',\n\t// ! TODO - what about new definitions for these?\n\t// - also can the knobs helper draw from some central/exported definition const here?\n\tBackgroundImage: 'bgImage',\n\tBackgroundImagePosition: 'bgImagePosition',\n\tImageOverlayColour: 'bgImageShadeColor',\n\tOpacity: 'bgImageShadeOpacity',\n\tTextColour: 'textColor',\n};\n\n/**\n * Sitecore format of the BackgroundContainer props, used for\n * extending interfaces of other components. Usage example:\n *\n * \t\timport { JSSprops as IBgProps } from 'pods/theme/components/BackgroundContainer';\n *\n * \t\tinterface IProps {\n * \t\t\tfields: IBGProps & {\n * \t\t\t\t...\n * \t\t\t};\n * \t\t}\n */\nexport interface JSSprops {\n\tbackgroundColour?: {\n\t\tvalue: BackgroundContainerProps['bgColor'];\n\t};\n\tBackgroundImage?: {\n\t\tvalue: {\n\t\t\tsrc: BackgroundContainerProps['bgImage'];\n\t\t};\n\t};\n\tBackgroundImagePosition?: {\n\t\tvalue: BackgroundContainerProps['bgImagePosition'];\n\t};\n\tImageOverlayColour?: {\n\t\tvalue: BackgroundContainerProps['bgImageShadeColor'];\n\t};\n\tOpacity?: {\n\t\tvalue: BackgroundContainerProps['bgImageShadeOpacity'];\n\t};\n\tTextColour?: {\n\t\tvalue: BackgroundContainerProps['textColor'];\n\t};\n}\n\n/**\n * Extracts all relevant BackgroundContainer JSS props\n * from a provided props `fields` object, and returns just those\n * props appropriately renamed from their JSS equivalents.\n *\n * @param {Object} fields - The instigating module's `props.fields` object.\n * @returns {Object} Only relevant BackgroundContainer props, appropriately renamed.\n */\nexport const getBgProps = (fields: JSSprops): BackgroundContainerProps | {} =>\n\tfields\n\t\t? Object.keys(fields).reduce(\n\t\t\t\t(acc: BackgroundContainerProps, key: string) => {\n\t\t\t\t\tconst matchingKey: string = JSSpropsMap[key];\n\t\t\t\t\tconst value = fields?.[key as keyof JSSprops]?.value as any;\n\n\t\t\t\t\tif (matchingKey && value) {\n\t\t\t\t\t\tif (isObject(value)) {\n\t\t\t\t\t\t\t// BackgroundImage has two edge-cases; firstly its value\n\t\t\t\t\t\t\t// is nested inside an object as 'src' which we must account for.\n\t\t\t\t\t\t\t// secondly Sitecore never returns a 'null' image, it will instead\n\t\t\t\t\t\t\t// give us a default image; however we can discern if this is the\n\t\t\t\t\t\t\t// case by checking the adjacent `class` key, if it's === 'scEmptyImage'\n\t\t\t\t\t\t\t// in which case we can override the default image with null.\n\t\t\t\t\t\t\tif (matchingKey === 'bgImage') {\n\t\t\t\t\t\t\t\tacc[matchingKey] =\n\t\t\t\t\t\t\t\t\tvalue?.class === 'scEmptyImage' ? null : value?.src;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tacc[matchingKey as keyof BackgroundContainerProps] =\n\t\t\t\t\t\t\t\ttypeof value === 'string' ? value.toLowerCase() : value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t{},\n\t\t )\n\t\t: {};\n","// TODO - StyledComponents `theme` provide could negate the necessity of extracting the likes of bgColor from bgProps?\n// -- (and instead have it directly available in the build in `theme` styled component function param?\n\nimport React from 'react';\nimport * as S from './BackgroundContainer.style';\n\nimport { BackgroundContainerProps } from './BackgroundContainer.types';\n\nexport * from './BackgroundContainer.types';\n\nexport interface IProps extends BackgroundContainerProps {\n\tisDefaultModule?: boolean;\n\tchildren?: React.ReactNode;\n\tallowChildrenEscape?: boolean;\n}\n\nconst BackgroundContainer = ({\n\tchildren,\n\tbgImageInline,\n\tbgImageInlineAltText,\n\tallowChildrenEscape,\n\t...props\n}: IProps) => {\n\tconst { bgImage } = props;\n\n\treturn (\n\t\t\n\t\t\t{!!bgImage && bgImageInline ? (\n\t\t\t\t\n\t\t\t\t\t{bgImageInlineAltText}\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t{children}\n\t\t\t)}\n\t\t\n\t);\n};\n\nBackgroundContainer.defaultProps = {\n\tbgPadding: '0',\n\tbgImageShadeColor: null,\n\tbgImageShadeOpacity: 0.6,\n\tbgImagePosition: 'center',\n};\n\nexport default BackgroundContainer;\n","export default {\n\tDEFAULT_TEXT: 'CMS only',\n\tIS_COLLAPSED: 'collapsed',\n\tHOVER_HELP_TEXT:\n\t\t\"This is only visible in Sitecore's Experience Editor for ease-of-authoring.\",\n\n\tBUTTONS: {\n\t\tDISMISS: 'Dismiss',\n\t\tTOGGLE_COLLAPSE: 'Toggle collapse content',\n\t},\n};\n","/**\n * Displays content provided only in Sitecore's Experience Editor,\n * and in a visually consistent frame that can be expanded/collapsed,\n * dismissed (hidden completely) and given a title.\n *\n * The intention of this component is to provide components a means\n * to provide/surface other JSS fields for an author to see/author, when\n * otherwise it might be hidden (e.g. for anything conditionally rendered).\n */\n\nimport React, { useState } from 'react';\nimport { Text } from '@sitecore-jss/sitecore-jss-react';\n\nimport ExperienceEditorContext from 'core/sitecore/ExperienceEditorContext';\nimport ExperienceEditorButton from 'core/sitecore/experience-editor/ExperienceEditorButton';\nimport { Icon, ICONS } from 'core/components/Icon';\nimport Collapse from 'core/components/Collapse';\nimport { JssTextType } from 'core/utils/sitecore-utils';\nimport * as GS from 'core/styles/Containers';\n\nimport * as S from './ExperienceEditorContent.style';\nimport CONTENT from './ExperienceEditorContent.content';\n\ninterface IProps {\n\tchildren?: React.ReactNode;\n\ttitle?: string;\n\tmargin?: string;\n\tstartCollapsed?: boolean;\n\telementDefinitions?: { name: string; jss: JssTextType }[];\n}\n\nconst ExperienceEditorContent = ({\n\tmargin,\n\tchildren,\n\telementDefinitions,\n\tstartCollapsed = false,\n\ttitle = CONTENT.DEFAULT_TEXT,\n}: IProps) => {\n\t// 'Dismiss'; two state variables so we can animate close and then 'display: none'\n\tconst [isVisuallyHidden, setIsVisuallyHidden] = useState(false);\n\tconst [isActuallyHidden, setIsActuallyHidden] = useState(false);\n\n\t// Toggle collapse content\n\tconst [isCollapsed, setIsCollapsed] = useState(startCollapsed);\n\n\treturn (\n\t\t\n\t\t\t{(isEE: boolean) =>\n\t\t\t\tisEE && (\n\t\t\t\t\t setIsActuallyHidden(true)}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{isCollapsed && (\n\t\t\t\t\t\t\t\t\t\t{CONTENT.IS_COLLAPSED}\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t setIsCollapsed(c => !c)}\n\t\t\t\t\t\t\t\t\t\taria-label={CONTENT.BUTTONS.TOGGLE_COLLAPSE}\n\t\t\t\t\t\t\t\t\t\ttitle={CONTENT.BUTTONS.TOGGLE_COLLAPSE}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t setIsVisuallyHidden(true)}\n\t\t\t\t\t\t\t\t\t\taria-label={CONTENT.BUTTONS.DISMISS}\n\t\t\t\t\t\t\t\t\t\ttitle={CONTENT.BUTTONS.DISMISS}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{elementDefinitions && (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{elementDefinitions?.map(({ name, jss }) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    {name}:
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t}\n\t\t
    \n\t);\n};\n\nexport default ExperienceEditorContent;\n","import React from 'react';\nimport { callbackExists } from 'core/utils/global-utils';\nimport { KEYBOARD_EVENT_KEYS } from 'core/constants';\n\nexport function bindKeyboardControls(\n\te: React.KeyboardEvent,\n\tcallback?: (e: React.KeyboardEvent) => void,\n) {\n\tif (\n\t\te &&\n\t\t(e.key === KEYBOARD_EVENT_KEYS.SPACEBAR ||\n\t\t\te.key === KEYBOARD_EVENT_KEYS.ENTER)\n\t) {\n\t\te.preventDefault();\n\n\t\t// If no callback specified, trigger a click on the element\n\t\tif (callbackExists(callback)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tcallback!(e);\n\t\t} else {\n\t\t\t(e.target as HTMLButtonElement).click();\n\t\t}\n\t}\n}\n\nexport function disableSpacebarScroll(\n\te: React.KeyboardEvent,\n) {\n\tif (e && e.key === ' ') {\n\t\te.preventDefault();\n\t}\n}\n","export default {\n\tSUMMARY: {\n\t\tTITLE:\n\t\t\t'The following fields require your attention before you can continue:',\n\t},\n\n\tVALIDATORS: {\n\t\tDIRECT_DEBIT: {\n\t\t\tDEBIT_AMOUNT: 'Debit value cannot be greater than maxValueForPlan',\n\t\t\tBSB_NUMBER: 'Please enter a valid BSB.',\n\t\t},\n\t\tWITHDRAWALS: {\n\t\t\tMINIMUM_BALANCE:\n\t\t\t\t'To keep your account open, you need to leave at least $1,000 in your account after the withdrawal. Please review your withdrawal amount.',\n\t\t\tMINIMUM_VALUE:\n\t\t\t\t'The withdrawal amount must be at least $1000. Please enter a higher amount.',\n\t\t\tWITHDRAWAL_AMOUNT_MISMATCH:\n\t\t\t\t'The amount selected from each investment option must add up to the total amount you want to withdraw.',\n\t\t\tINSUFFICIENT_FUNDS_AVAILABLE: `There's not enough money in this investment option. Select additional option/s to make the withdrawal from.`,\n\t\t\tWHOLE_NUMBER: `Please provide a dollar amount only with no cents or decimal points, for example $450.`,\n\t\t\tREQUIRED_DEBT: 'Please add at least one debt.',\n\t\t},\n\t\tDEFAULT: {\n\t\t\tREQUIRED: 'Please provide this information',\n\t\t\tEMPTY: 'Please complete this detail.',\n\t\t\tEMPTY_MEMBER_NUMBER: 'Please enter your member number.',\n\t\t\tEMPTY_FIRST_NAME: 'Please enter your first name.',\n\t\t\tEMPTY_LAST_NAME: 'Please enter your last name.',\n\t\t\tEMPTY_EMAIL: 'Please enter your email address.',\n\t\t\tMIN_LENGTH:\n\t\t\t\t'This field is shorter than the minimum number of allowed characters.',\n\t\t\tMAX_LENGTH: 'You have exceeded the maximum number of allowed characters.',\n\t\t\tABN_MAX_LENGTH: 'The ABN should have 11 numbers with no spaces..........',\n\t\t\tNAME: 'Please enter a valid name.',\n\t\t\tEMAIL:\n\t\t\t\t\"Please enter a valid email address. It should be in the format 'name@email.com' and contain a maximum of 120 characters\",\n\t\t\tEMAIL_OR_MOBILE: 'Please enter a valid email address or mobile number.',\n\t\t\tDATE: 'Please enter a valid date.',\n\t\t\tFUTURE_DOB: 'Date of birth cannot be a future date.',\n\t\t\tDATE_BEFORE: 'Please enter a date that is before the to date',\n\t\t\tDATE_AFTER: 'Please enter a date that is after the from date',\n\t\t\tPHONE: 'Please enter a valid phone number.',\n\t\t\tVALID_STRING: 'Please enter valid characters.',\n\t\t\tMEMBER_NUMBER: 'Please enter numeric values only and less than 9 digits.',\n\t\t\tREGISTRATION_MEMBER_NUMBER:\n\t\t\t\t'Please enter numeric values only and less than 21 digits.',\n\t\t\tBANK_NAME: 'Please enter alphanumeric values only.',\n\t\t\tDISALLOW_EMAIL_FORMAT_PASSWORD:\n\t\t\t\t\"Don't use your email address in your password\",\n\t\t\tREQUIRED_PWD_MESSAGE:\n\t\t\t\t'Please enter a valid password. Your password must be at least 8 characters long and contain at least one upper case letter, one lower case letter and one number.',\n\t\t\t// TODO: Double check if the variable name here is still applicable\n\t\t\t// Ex: 'SAME_VALUE' and 'SAME_VALUE_CONFIRM_PASSWORD' variables contradicts with it's assigned value\n\t\t\tSAME_VALUE: 'The value entered does not match.',\n\t\t\tSAME_VALUE_CONFIRM_PASSWORD: \"Your passwords don't match.\",\n\t\t\tSAME_EXISTING_VALUE: 'This must match the value you entered earlier.',\n\t\t\tDECIMAL: 'Please enter a valid percentage up to 2 decimal places',\n\t\t\tVALUE: 'Please enter a valid value',\n\t\t\tSPINUSINUMBER: 'Please enter a valid number',\n\t\t\tTFN_FORMAT: 'Please enter a valid TFN.',\n\t\t\tBSB: 'Please enter a valid BSB',\n\t\t\tPOSTCODE: 'For an Australian address, type in a 4-digit postcode.',\n\t\t\tINTL_POSTCODE:\n\t\t\t\t'For international addresses, type in a valid post or zip code.',\n\t\t\tINVALID_ADDRESS:\n\t\t\t\t'Please enter a valid address. You can type in your address if you need to.',\n\t\t\tINVALID_STREET_ADDRESS:\n\t\t\t\t'Please enter a valid address which can include the special characters - or /',\n\t\t\tCAPTCHA: 'Please check this to continue.',\n\t\t\tUSERNAME: 'Please enter a username between 1 and 120 characters',\n\t\t\tINVALID_USERNAME:\n\t\t\t\t'The username cannot have double quotes \", forward or backslashes in it.',\n\t\t\tAMOUNT_EXCEEDS_BALANCE:\n\t\t\t\t'Your entered balance is above the available balance',\n\t\t\tFUND_NOT_SELECTED: 'Please select the account to withdraw from above.',\n\t\t\tSECURITY_CODE: 'Please enter a 6 digit numeric code only',\n\t\t\tLP_SERVICE_ID: 'The service number is invalid',\n\t\t\tSPECIAL_CHARACTERS: `Some special characters aren't allowed in an address. You can only use - or /.`,\n\t\t\tACCOUNT_NAME: `Please enter your bank account name as first name or initials and surname only. The name must match your AustralianSuper account and cannot contain any special symbols, only letters and numbers. For example John Smith or J D Smith. If it’s a joint account you must be one of the account holders.`,\n\t\t},\n\t},\n};\n","import styled from 'styled-components';\n\nexport const InlineFlex = styled.div`\n\tdisplay: inline-flex;\n`;\n","import React from 'react';\n\nimport { Icon, ICONS } from 'core/components/Icon';\nimport * as AC from 'core/styles/AnimationComponents';\n\nimport * as S from './LoadingSpinner.style';\n\ninterface IProps {\n\tsize?: number;\n}\n\nconst LoadingSpinner = ({ size = 30 }: IProps) => (\n\t\n\t\t\n\t\t\t\n\t\t\n\t\n);\n\nexport default LoadingSpinner;\n","import React from 'react';\n\nimport Tooltip from 'core/components/Tooltip';\nimport * as Typo from 'core/styles/Typography';\nimport { isJssField, JssTextType } from 'core/utils/sitecore-utils';\n\nimport * as S from './Label.style';\n\ninterface IProps {\n\thtmlId?: string;\n\tlabel?: string | JssTextType;\n\ttooltip?: React.ReactNode;\n\trequired?: boolean;\n\treadonly?: boolean;\n\toptionalText?: string;\n\twithoutTextWrap?: boolean;\n\tisLabelHidden?: boolean;\n\tmargin?: string;\n}\n\nconst Label = ({\n\tlabel,\n\trequired,\n\treadonly,\n\thtmlId,\n\ttooltip,\n\toptionalText = ' (optional)',\n\twithoutTextWrap = false,\n\tisLabelHidden = false,\n\tmargin,\n}: IProps) => (\n\t\n\t\t\n\t\t\t{isJssField(label) ? (\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\tlabel\n\t\t\t)}\n\t\t\t\n\t\t\t\t{readonly === false && required === false ? optionalText : null}\n\t\t\t\n\t\t\n\t\t{!!tooltip && }\n\t\n);\n\nexport default Label;\n","/* stylelint-disable selector-type-no-unknown */\n\nimport styled, { css } from 'styled-components';\n\nimport * as mx from 'core/styles/mixins';\nimport * as vr from 'core/styles/variables';\nimport { Label } from 'pods/forms/components/base/Label/Label.style';\n\nexport const ErrorMessage = styled.div`\n\tleft: 0;\n\tcolor: ${vr.formfieldErrorColor};\n\tfont-size: ${vr.formfieldErrorMessageFontSize};\n\tdisplay: flex;\n\tmargin-top: 5px;\n\n\t& > i {\n\t\tmargin-right: 4px;\n\t\tflex-shrink: 0;\n\t}\n\n\t/* This gives the error message container some invisible content when the\n\terror message un-renders, making for a smoother closing animation of */\n\t&::after {\n\t\tcontent: '-';\n\t\tfont-size: inherit;\n\t\tcolor: transparent;\n\t}\n`;\n\nexport const HelpText = styled.span`\n\tmargin-top: 12px;\n\tfont-size: ${vr.formfieldHelpTextFontSize};\n\tdisplay: block;\n`;\n\nexport const LabelContents = styled.div``;\n\nexport const FieldContents = styled.div<{\n\tfullWidth?: boolean;\n\tcustomClassName?: string;\n}>`\n\twidth: 100%;\n\tpadding: 0;\n\tposition: relative;\n\n\t${({ fullWidth }) =>\n\t\t!fullWidth &&\n\t\tcss`\n\t\t\tmax-width: 400px;\n\t\t`}\n\n\t&:focus-within > .rah-static {\n\t\tdisplay: none;\n\t}\n\n\t${({ customClassName }) =>\n\t\t!!customClassName &&\n\t\tcss`\n\t\t\tmargin: -30px 0 40px 0;\n\t\t`}\n`;\n\nexport const Field = styled.div<{\n\thasAppendMsg: boolean;\n\tctrlHolderFullWidth: boolean;\n\tstartAdornment?: string;\n\tendAdornment?: string;\n\thasError?: boolean;\n\tenableButtonWithin?: boolean;\n}>`\n\tposition: relative;\n\n\t${({ hasAppendMsg, ctrlHolderFullWidth }) =>\n\t\t!!hasAppendMsg &&\n\t\tcss`\n\t\t\tmargin: 0 0 20px;\n\n\t\t\t${mx.bp('s')`\n\t\t\t\twidth: ${ctrlHolderFullWidth ? '100%' : '200px'};\n\t\t\t\tmargin: 0 30px 0 0;\n\t\t\t\tdisplay: inline-block;\n\t\t\t`}\n\t\t`}\n\n\t\t${({ startAdornment, hasError }) =>\n\t\t\t!!startAdornment &&\n\t\t\tcss`\n\t\t\t&::before {\n\t\t\t\tposition: absolute;\n\t\t\t\tcontent: '${startAdornment}';\n\t\t\t\ttop: 13px;\n\t\t\t\tleft: 16px;\n\t\t\t\tbottom: 0;\n\t\t\t\tcolor: ${hasError ? vr.formfieldErrorColor : vr.formfieldPlaceholderColor};\n\t\t\t}\n\t\t`}\n\n\t${({ endAdornment, hasError }) =>\n\t\t!!endAdornment &&\n\t\tcss`\n\t\t\t&::after {\n\t\t\t\tposition: absolute;\n\t\t\t\tcontent: '${endAdornment}';\n\t\t\t\ttop: 13px;\n\t\t\t\tright: 16px;\n\t\t\t\tbottom: 0;\n\t\t\t\tcolor: ${hasError ? vr.formfieldErrorColor : vr.formfieldPlaceholderColor};\n\t\t\t}\n\t\t`}\n\n\t&:focus-within {\n\t\t${({ enableButtonWithin }) =>\n\t\t\tenableButtonWithin &&\n\t\t\tcss`\n\t\t\t\tinput {\n\t\t\t\t\tpadding-right: 38px;\n\t\t\t\t}\n\t\t\t`}\n\n\t\t.text-button-within {\n\t\t\tvisibility: visible;\n\t\t}\n\t}\n`;\n\nexport const CtrlHolder = styled.div<{\n\thasError: boolean;\n\tmargin?: string;\n}>`\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-top: ${vr.formCtrlHolderSpacing};\n\n\t${({ hasError }) =>\n\t\thasError &&\n\t\tcss`\n\t\t\t${Label} {\n\t\t\t\tcolor: ${vr.formfieldErrorColor};\n\t\t\t}\n\t\t`}\n\n\t${({ margin }) =>\n\t\tmargin &&\n\t\tcss`\n\t\t\tmargin: ${margin};\n\t\t`}\n`;\n\nexport const BottomMessage = styled.div`\n\tmargin-top: 8px;\n\tfont-size: ${vr.formfieldHelpTextFontSize};\n\tcolor: ${vr.formfieldLabelOptionalColor};\n`;\n\nexport const LegendLabel = styled.label<{\n\thasValue: boolean;\n\tdisabled: boolean | undefined;\n\thasError: boolean;\n}>`\n\tposition: absolute;\n\ttop: -10px;\n\tleft: 10px;\n\tbackground-color: ${vr.brandWhite};\n\n\tfont-size: 12px;\n\tborder-radius: 4px;\n\tpadding: 1px 4px;\n\tdisplay: ${({ hasValue }) => (hasValue ? `block` : `none`)};\n\tcolor: ${({ hasError }) =>\n\t\thasError ? vr.formfieldErrorColor : vr.formfieldOnHoverBorderColor};\n\n\t> div, p {\n\t\tfont-size: 12px;\n\t}\n\n\t${Field}:hover + & {\n\t\tdisplay: ${({ disabled, hasValue, hasError }) =>\n\t\t\tdisabled || (!hasValue && hasError) ? `none` : `block`};\n\t}\n\n\t${Field}:focus-within + &,\n\t${Field}:active + & {\n\t\tcolor: ${({ hasError }) =>\n\t\t\thasError ? vr.formfieldOnHoverBorderColor : vr.formfieldBorderColorFocus};\n\t\tdisplay: block;\n\t}\n`;\n\nexport const BottomMessageContainer = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 4px;\n\n\t> i {\n\t\tmargin-top: 4px;\n\t}\n`;\n","import styled from 'styled-components';\n\nimport * as vr from 'core/styles/variables';\n\nexport const HelpText = styled.span`\n\tmargin: 5px 0 10px;\n\tfont-size: ${vr.formfieldHelpTextFontSize};\n\tdisplay: block;\n`;\n","import React from 'react';\nimport { Text } from '@sitecore-jss/sitecore-jss-react';\n\nimport { isJssField, JssTextType } from 'core/utils/sitecore-utils';\n\nimport * as S from './HelpText.style';\n\ninterface IProps {\n\tid?: string;\n\tchildren: React.ReactNode | string;\n}\n\nconst HelpText = ({ children: helpText, id, ...props }: IProps) => (\n\t\n\t\t{isJssField(helpText) ? : helpText}\n\t\n);\n\nexport default HelpText;\n","import styled, { css } from 'styled-components';\n\nimport * as mx from 'core/styles/mixins';\nimport { Icon } from 'core/components/Icon/Icon.style';\nimport { noticeBadge } from '../../../styles/variables';\n\n// -------------------------\n\nexport const PRIMARY = noticeBadge.primary;\nexport const SECONDARY = noticeBadge.secondary;\n// -------------------------\n\nexport const Wrapper = styled.div<{\n\tmargin?: string;\n\thidden: boolean;\n}>`\n\tposition: relative;\n\tborder: 1px dashed ${PRIMARY};\n\n\t${({ margin }) =>\n\t\tmargin &&\n\t\tcss`\n\t\t\tmargin: ${margin};\n\t\t`}\n\n\t${({ hidden }) =>\n\t\thidden &&\n\t\tcss`\n\t\t\tdisplay: none;\n\t\t`}\n`;\n\nexport const Content = styled.div`\n\tpadding: 5px;\n\tpadding-top: 0;\n`;\n\nexport const Header = styled.div`\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tpadding: 5px;\n`;\n\nexport const Notice = styled.div`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tbackground-color: ${PRIMARY};\n\tcolor: ${SECONDARY};\n\tborder-radius: 15px;\n\tpadding: 2px 6px;\n\tfont-size: 12px;\n\tcursor: help;\n\tline-height: 12px;\n`;\n\nexport const Controls = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n`;\n\nexport const IsCollapsed = styled.span`\n\tfont-size: 10px;\n\tcolor: ${PRIMARY};\n\tmargin-right: 5px;\n`;\n\nconst Button = styled.button`\n\t${mx.buttonReset}\n\t${mx.square('25px')}\n\tcolor: ${PRIMARY};\n\tcursor: pointer;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\topacity: 0.5;\n\n\t&:hover,\n\t&:focus {\n\t\topacity: 1;\n\t}\n`;\n\nexport const ToggleCollapse = styled(Button)``;\n\nexport const Dismiss = styled(Button)`\n\t&:hover,\n\t&:focus {\n\t\t&:not(:active) {\n\t\t\t${Icon} {\n\t\t\t\ttransform: scale(1.1);\n\t\t\t}\n\t\t}\n\t}\n`;\n","import { isAfter, isBefore } from 'date-fns/fp';\nimport { getIn } from 'formik';\nimport padStart from 'lodash/padStart';\nimport { inRange, isEqual } from 'lodash';\nimport { kebabCase } from 'change-case';\n\nimport { MONTH } from 'core/constants';\nimport { InvestmentOption as InvestmentOptionPaymentMethod } from 'core/api/client/InvestmentApi';\nimport { InvestmentOption } from 'jss-components/t17-investments/EditInvestmentOptions/EditInvestmentOptions.types';\nimport { TInvestmentOption } from 'jss-components/t19-withdrawals/subcomponents/hooks/useGetInvestmentOptions.hooks';\n\nimport CONTENT from './_formBuilder.content';\nimport { AUSTRALIA_COUNTRY_CODE } from './components/related/AddressFields';\n\nconst getDate = (dateStr: string) => {\n\tconst [day, month, year] = dateStr.split('/');\n\n\treturn new Date(Number(year), Number(month) - 1, Number(day) + 1);\n};\n\nconst weightingSequence = [1, 4, 3, 7, 5, 8, 6, 9, 10];\n\nfunction verifyWeighting(fieldValue: string) {\n\t// Prepends 0 to eight digit TFN - note fieldValue is already type string\n\tconst paddedInput = padStart(fieldValue, 9, '0');\n\n\tconst charArr = paddedInput.split('');\n\tlet weighting = 0;\n\n\t// Multiplies weightItem index item with same index item of 9 digit TFN\n\tweightingSequence.forEach((weightingItem, idx) => {\n\t\tweighting = weighting + weightingItem * parseInt(charArr[idx], 10);\n\t});\n\n\t// Check if total weighting is multiple of 11\n\tconst remainder = weighting % 11;\n\n\treturn remainder === 0;\n}\n\nexport interface IProps {\n\tfieldValue: any;\n\tmessage: string;\n\tformValues: {\n\t\t[key: string]: any;\n\t};\n\toptions?: any;\n}\n\nexport interface IMaxWithdrawalAmountForInvestmentOptionsProps {\n\twithdrawalAmountField: string;\n\tinvestmentOptions: TInvestmentOption[];\n}\n\nexport type ValidatorFn = (args: Partial) => string | undefined;\n\nexport default {\n\t'required': ({ fieldValue, message }: IProps) => {\n\t\t// override the empty string with default error message\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.REQUIRED;\n\n\t\t// ignore the falsy value if the value is boolean\n\t\tif (!fieldValue && typeof fieldValue !== 'boolean') {\n\t\t\treturn message;\n\t\t}\n\n\t\t// check for empty string\n\t\tif (\n\t\t\t(typeof fieldValue === 'string' || fieldValue instanceof String) &&\n\t\t\t!fieldValue.trim()\n\t\t) {\n\t\t\treturn message;\n\t\t}\n\n\t\t// check for empty array\n\t\tif (Array.isArray(fieldValue) && !fieldValue.length) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\t'minLength': ({ fieldValue, message, options }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.MIN_LENGTH;\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (fieldValue.length < options.min) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'stringRegex': ({ fieldValue, message, options }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.VALID_STRING;\n\t\tconst { regExPattern } = options;\n\n\t\tif (!regExPattern || String(regExPattern).length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst regex = new RegExp(regExPattern);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!regex.test(fieldValue)) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'maxLength': ({ fieldValue, message, options }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.MAX_LENGTH;\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (fieldValue.length > options.max) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'email': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.EMAIL;\n\t\tconst regex = new RegExp(\n\t\t\t/^(?!.{121})([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z0-9_\\-\\.]+)$/,\n\t\t);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!regex.test(fieldValue)) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'emailOrMobile': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.EMAIL_OR_MOBILE;\n\t\tconst emailRegex = new RegExp(\n\t\t\t/^(?!.{121})([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$/,\n\t\t);\n\n\t\t// https://stackoverflow.com/questions/39990179/regex-for-australian-phone-number-validation\n\t\t// /^(?:\\+?(61))? ?(?:\\((?=.*\\)))?(0?[2-57-8])\\)? ?(\\d\\d(?:[- ](?=\\d{3})|(?!\\d\\d[- ]?\\d[- ]))\\d\\d[- ]?\\d[- ]?\\d{3})$/,\n\t\tconst intlMobileRegex = new RegExp(\n\t\t\t/^(([+][(]?[0-9]{1,3}[)]?)|([(]?[0-9]{4}[)]?))\\s*[)]?[-\\s\\.]?[(]?[0-9]{1,3}[)]?([-\\s\\.]?[0-9]{3})([-\\s\\.]?[0-9]{3,4})$/,\n\t\t);\n\n\t\tconst intlAuMobileRegex = new RegExp(\n\t\t\t/^(?:\\+?(61))? ?(?:\\((?=.*\\)))?(0?[2-57-8])\\)? ?(\\d\\d(?:[- ](?=\\d{3})|(?!\\d\\d[- ]?\\d[- ]))\\d\\d[- ]?\\d[- ]?\\d{3})$/,\n\t\t);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (\n\t\t\t!emailRegex.test(fieldValue) &&\n\t\t\t(intlMobileRegex.test(fieldValue) || intlAuMobileRegex.test(fieldValue))\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (\n\t\t\t(!intlMobileRegex.test(fieldValue) ||\n\t\t\t\t!intlAuMobileRegex.test(fieldValue)) &&\n\t\t\temailRegex.test(fieldValue)\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (\n\t\t\t(!intlMobileRegex.test(fieldValue) ||\n\t\t\t\t!intlAuMobileRegex.test(fieldValue)) &&\n\t\t\t!emailRegex.test(fieldValue)\n\t\t) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'member-number': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.MEMBER_NUMBER;\n\t\tconst regex = new RegExp(/^[0-9]{1,9}$/);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\t\t// remove dash or space as per FF18 from GL04\n\t\tconst cleanedFieldValue = String(fieldValue).replace(/\\s|-/g, '');\n\n\t\tif (!regex.test(cleanedFieldValue)) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'usernameLength': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.USERNAME;\n\t\tconst regex = new RegExp(/^(.{1,100})$/);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!regex.test(fieldValue)) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'pwdValidator': ({ fieldValue, message }: IProps) => {\n\t\t// TODO we probablhy need to revise this below logic for AusSuper logic\n\t\tconst errMsg = message || CONTENT.VALIDATORS.DEFAULT.REQUIRED_PWD_MESSAGE;\n\t\t// Ref: https://www.thepolyglotdeveloper.com/2015/05/use-regex-to-test-password-strength-in-javascript/\n\t\t// Modified according to requirements\n\t\tconst regex = new RegExp('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})');\n\t\tconst invalidRegex = !regex.test(fieldValue);\n\t\tconst isValid = !invalidRegex;\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (!isValid) {\n\t\t\treturn errMsg;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'emailFormatPwdValidator': ({ fieldValue, message }: IProps) => {\n\t\tconst errMsg =\n\t\t\tmessage || CONTENT.VALIDATORS.DEFAULT.DISALLOW_EMAIL_FORMAT_PASSWORD;\n\t\tconst regex = new RegExp(\n\t\t\t'^(([^<>()[\\\\]\\\\.,;:\\\\s@\"]+(\\\\.[^<>()[\\\\]\\\\.,;:\\\\s@\"]+)*)|(\".+\"))@((\\\\[[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\])|(([a-zA-Z\\\\-0-9]+\\\\.)+[a-zA-Z]{2,}))',\n\t\t);\n\t\tconst isValid = !regex.test(fieldValue);\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (!isValid) {\n\t\t\treturn errMsg;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\t//This will check if all of the fields from date is empty even if we click out to specific field\n\t'required-date': ({ formValues, message, options }: IProps) => {\n\t\t// override the empty string with default error message\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.REQUIRED;\n\n\t\tconst {\n\t\t\ttargetFields: { day, month, year },\n\t\t} = options;\n\t\tconst monthFieldValue = formValues[month];\n\t\tconst dayValue = formValues[day];\n\t\tconst yearValue = formValues[year];\n\n\t\t// find the month in number\n\t\tconst monthNumber =\n\t\t\tmonthFieldValue > 0\n\t\t\t\t? // use the field value if it is a number or a string representing a number such as '12'\n\t\t\t\t monthFieldValue\n\t\t\t\t: MONTH.findIndex(monthName =>\n\t\t\t\t\t\tRegExp(monthName, 'i').test(monthFieldValue),\n\t\t\t\t ) + 1;\n\n\t\tif (!dayValue || !yearValue || monthNumber <= 0) {\n\t\t\treturn message;\n\t\t}\n\t},\n\n\t'date': ({ fieldValue, formValues, options, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.DATE;\n\t\t// Ref: https://stackoverflow.com/a/15504877\n\t\t// Edited according to comments there to enforce YYYY instead of YY\n\t\tconst regex = new RegExp(\n\t\t\t/^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/|-|\\.)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)\\d{2})$|^(?:29(\\/|-|\\.)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/|-|\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)\\d{2})$/,\n\t\t);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (options) {\n\t\t\t// when options provided, assume the date is entered through multiple fields\n\t\t\tconst {\n\t\t\t\ttargetFields: { day, month, year },\n\t\t\t} = options;\n\t\t\tconst monthFieldValue = formValues[month];\n\t\t\tconst dayValue = formValues[day];\n\t\t\tconst yearValue = formValues[year];\n\t\t\t// find the month in number\n\t\t\tconst monthNumber =\n\t\t\t\tmonthFieldValue > 0\n\t\t\t\t\t? // use the field value if it is a number or a string representing a number such as '12'\n\t\t\t\t\t monthFieldValue\n\t\t\t\t\t: MONTH.findIndex(monthName =>\n\t\t\t\t\t\t\tRegExp(monthName, 'i').test(monthFieldValue),\n\t\t\t\t\t ) + 1;\n\t\t\t// only check when all three fields are not empty\n\t\t\tif (!dayValue || !yearValue || monthNumber <= 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst combinedDate = `${dayValue}-${monthNumber}-${yearValue}`;\n\n\t\t\tif (!regex.test(combinedDate)) {\n\t\t\t\treturn message;\n\t\t\t}\n\n\t\t\tconst dateValues = new Date(yearValue, monthFieldValue - 1, dayValue);\n\n\t\t\tconst today = new Date();\n\t\t\tconst dateToday = new Date(\n\t\t\t\ttoday.getFullYear(),\n\t\t\t\ttoday.getMonth(),\n\t\t\t\ttoday.getDate(),\n\t\t\t);\n\n\t\t\tif (dateValues.getTime() > dateToday.getTime()) {\n\t\t\t\treturn CONTENT.VALIDATORS.DEFAULT.FUTURE_DOB;\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!regex.test(fieldValue)) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'date-before': ({ fieldValue, formValues, message, options }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.DATE_BEFORE;\n\n\t\tconst targetField = options.targetField;\n\t\tconst targetValue = formValues[targetField];\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (isBefore(getDate(fieldValue), getDate(targetValue))) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'date-after': ({ fieldValue, formValues, message, options }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.DATE_AFTER;\n\n\t\tconst targetField = options.targetField;\n\t\tconst targetValue = formValues[targetField];\n\n\t\tif (isAfter(getDate(fieldValue), getDate(targetValue))) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'same-value': ({ fieldValue, formValues, message, options }: IProps) => {\n\t\tconst msgType = options.messageType;\n\t\tif (!!message) {\n\t\t\tmessage = message;\n\t\t} else if (!!msgType && msgType === 'confirm-password') {\n\t\t\tmessage = CONTENT.VALIDATORS.DEFAULT.SAME_VALUE_CONFIRM_PASSWORD;\n\t\t} else {\n\t\t\tmessage = CONTENT.VALIDATORS.DEFAULT.SAME_VALUE;\n\t\t}\n\n\t\tconst targetField = options.targetField;\n\t\tconst targetValue = formValues[targetField];\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (fieldValue !== targetValue) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'phone': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.PHONE;\n\n\t\tconst regex = new RegExp(/^(?!.* )[0-9-+() ]{0,40}$/);\n\t\tconst isValid = regex.test(fieldValue);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!isValid) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'mobile-phone': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.PHONE;\n\n\t\tconst regex = new RegExp(/^(?!.* )[0-9+ ]{0,20}$/);\n\t\tconst isValid = regex.test(fieldValue);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!isValid) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'street-address': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.PHONE;\n\n\t\tconst regex = new RegExp(/^[A-Za-z0-9'\\.\\-\\s\\,\\/]+$/);\n\t\tconst isValid = regex.test(fieldValue);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!isValid) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'suburb-address': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.SPECIAL_CHARACTERS;\n\n\t\tconst regex = new RegExp(/^[A-Za-z0-9\\-\\s\\/]+$/);\n\t\tconst isValid = regex.test(fieldValue);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!isValid) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'tfnFormat': ({ fieldValue, message }: IProps) => {\n\t\tconst errMsg = message || CONTENT.VALIDATORS.DEFAULT.TFN_FORMAT;\n\t\tfieldValue = fieldValue.trim().replace(/\\s/g, '');\n\t\tconst regex = new RegExp(/^[0-9]{8,9}$/);\n\t\tconst invalidRegex = !regex.test(fieldValue);\n\t\tconst isValid = !invalidRegex && verifyWeighting(fieldValue);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!isValid) {\n\t\t\treturn errMsg;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'value': ({ fieldValue, message, options }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.VALUE;\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\ttry {\n\t\t\tfieldValue = parseFloat(fieldValue);\n\t\t} catch (err) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tswitch (options.type) {\n\t\t\tcase 'lt':\n\t\t\t\treturn fieldValue < options.value ? undefined : message;\n\t\t\tcase 'lte':\n\t\t\t\treturn fieldValue <= options.value ? undefined : message;\n\t\t\tcase 'gt':\n\t\t\t\treturn fieldValue > options.value ? undefined : message;\n\t\t\tcase 'gte':\n\t\t\t\treturn fieldValue >= options.value ? undefined : message;\n\t\t\tcase 'eq':\n\t\t\tdefault:\n\t\t\t\treturn fieldValue === options.value ? undefined : message;\n\t\t}\n\t},\n\n\t'name': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.NAME;\n\t\t// NOTE: refer to https://australiansuper.atlassian.net/wiki/spaces/MemberPortalV5/pages/46406580/GL04+-+Common+CMS+Definitions+and+Form+Fields\n\t\tconst regex = new RegExp(/^(?:(?!_)[\\w\\d](?:\\s|-|'|’)?)+$/);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn regex.test(fieldValue) ? undefined : message;\n\t},\n\n\t'fundName': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.NAME;\n\t\t// NOTE: refer to https://australiansuper.atlassian.net/wiki/spaces/MemberPortalV5/pages/46406580/GL04+-+Common+CMS+Definitions+and+Form+Fields\n\t\tconst regex = new RegExp(/^[a-zA-Z0-9&' .-]+$/);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn regex.test(fieldValue) ? undefined : message;\n\t},\n\n\t'spinUsiNumber': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.SPINUSINUMBER;\n\t\t// two capital characters followed by four numbers followed by two capital characters\n\t\tconst regex = new RegExp(/^[A-Z]{3}\\d{4}[A-Z]{2}/g);\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn regex.test(fieldValue) ? undefined : message;\n\t},\n\n\t'bsb': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.BSB;\n\t\t// six digit number can be separate with space or dash\n\t\tconst regex = new RegExp(/^\\d{3}(-?|\\s?)\\d{3}$/g);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn regex.test(fieldValue) ? undefined : message;\n\t},\n\n\t'bsb-api': ({ fieldValue, message, options }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.BSB;\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn options?.bsbMessage === true ? message : undefined;\n\t},\n\n\t'withdrawalAmountMatch': ({ formValues, message, options }: IProps) => {\n\t\tconst { prefix, withdrawAmount } = options;\n\t\tconst totalInput = Object.keys(formValues).reduce((runTotal, current) => {\n\t\t\tif (current.includes(prefix)) {\n\t\t\t\tconst numVal = parseFloat(formValues[current]);\n\n\t\t\t\treturn runTotal + (!isNaN(numVal) ? numVal : 0);\n\t\t\t}\n\n\t\t\treturn runTotal;\n\t\t}, 0);\n\n\t\tif (totalInput !== parseFloat(withdrawAmount)) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t/*** Validation to display minimum value error with customizable message and threshold */\n\t'minimumValue': ({ fieldValue, message, options }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.WITHDRAWALS.MINIMUM_VALUE;\n\t\tconst minThreshold = options?.minThreshold || 1000;\n\t\tconst amountToTransfer = parseFloat(fieldValue);\n\n\t\tif (!isNaN(minThreshold) && !isNaN(amountToTransfer)) {\n\t\t\treturn amountToTransfer >= minThreshold ? undefined : message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t/*** Validation to make sure that the withdrawal amount should not be greater than the account's balance */\n\t'minWithdrawalAmount': ({ fieldValue, message, options }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.WITHDRAWALS.MINIMUM_BALANCE;\n\t\tconst minimumBalance = options?.minimumBalance\n\t\t\t? parseFloat(options?.minimumBalance)\n\t\t\t: 1000;\n\t\tconst availableBalance = parseFloat(options?.availableBalanceField);\n\t\tconst amountToTransfer = parseFloat(fieldValue);\n\n\t\tif (!isNaN(availableBalance) && !isNaN(amountToTransfer)) {\n\t\t\treturn availableBalance - amountToTransfer >= minimumBalance\n\t\t\t\t? undefined\n\t\t\t\t: message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t/*** Validation to make sure that the withdrawal amount should not be greater than the maximum amount value */\n\t'maxWithdrawalAmount': ({ fieldValue, message, options }: IProps) => {\n\t\tconst maximumAmount = options?.maximumAmount\n\t\t\t? parseFloat(options?.maximumAmount)\n\t\t\t: 10000;\n\t\tconst amountToTransfer = parseFloat(fieldValue);\n\n\t\tif (!isNaN(amountToTransfer)) {\n\t\t\treturn amountToTransfer > maximumAmount ? message : undefined;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t/**\n\t * This validates the pension:withdrawal with more than 1 investment options\n\t * The required field validation will only be triggered,\n\t * if the user leaves the investment amount field all empty or with the value of zero\n\t */\n\t'requiredInvestmentOptions': ({ formValues, options, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.EMPTY;\n\t\tif (formValues) {\n\t\t\tconst totalInvestmentAmountToWithdraw = Object.keys(formValues).reduce(\n\t\t\t\t(runTotal, current) => {\n\t\t\t\t\tif (current.includes(options.prefix)) {\n\t\t\t\t\t\tconst numVal = parseFloat(formValues[current]);\n\n\t\t\t\t\t\treturn runTotal + (!isNaN(numVal) ? numVal : 0);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Number(runTotal.toString().match(/^\\d+(?:\\.\\d{0,2})?/));\n\t\t\t\t},\n\t\t\t\t0,\n\t\t\t);\n\t\t\tif (totalInvestmentAmountToWithdraw <= 0) {\n\t\t\t\treturn message;\n\t\t\t}\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'postcode': ({ fieldValue, formValues, message, options }: IProps) => {\n\t\tmessage =\n\t\t\toptions.postcodeErrorMessages.au ?? CONTENT.VALIDATORS.DEFAULT.POSTCODE;\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst regex =\n\t\t\tformValues[options.addressPathPrefix].state === 'NT'\n\t\t\t\t? // if NT, allow 0 start (old regex)\n\t\t\t\t new RegExp(\n\t\t\t\t\t\t/^((0[289][0-9]{2})|([1345689][0-9]{3})|(2[0-8][0-9]{2})|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2})|(7[8-9][0-9]{2}))$/,\n\t\t\t\t )\n\t\t\t\t: // if not NT, do not allow leading zero (DDMP-1568)\n\t\t\t\t new RegExp(\n\t\t\t\t\t\t/^(([1-9][289][0-9]{2})|([1345689][0-9]{3})|(2[0-8][0-9]{2})|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2})|(7[8-9][0-9]{2}))$/,\n\t\t\t\t );\n\n\t\treturn regex.test(fieldValue) ? undefined : message;\n\t},\n\n\t'postcode-required': ({ formValues, options, message }: IProps) => {\n\t\t// override the empty string with default error message\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.REQUIRED;\n\n\t\tconst targetValue = getIn(formValues, options.targetField);\n\t\tconst currPostalValue = getIn(formValues, options.fieldName);\n\n\t\tif (targetValue === AUSTRALIA_COUNTRY_CODE && !currPostalValue.trim()) {\n\t\t\treturn options.postcodeErrorMessages.au;\n\t\t}\n\n\t\tif (!currPostalValue.length) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'security-code': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.SECURITY_CODE;\n\t\tconst regex = new RegExp(/^[0-9]{6}$/);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn regex.test(fieldValue) ? undefined : message;\n\t},\n\n\t'standalonePostcodeVerify': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.INTL_POSTCODE;\n\t\tconst regex = new RegExp(/^[a-z0-9]{0,20}$/i);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn regex.test(fieldValue) ? undefined : message;\n\t},\n\n\t'captcha': ({ message, options }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.CAPTCHA;\n\n\t\tif (!options.hasToken) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\t'bank-name': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.BANK_NAME;\n\t\t// NOTE: refer to https://australiansuper.atlassian.net/wiki/spaces/MemberPortalV5/pages/46406580/GL04+-+Common+CMS+Definitions+and+Form+Fields\n\t\tconst regex = new RegExp(\n\t\t\t/^(?! )(?:(?! {2,}|[_\\.\\\\\\/()\\[\\]\\{\\}\\<\\>,`#@%\\*\\^+\"¼½\\$|]).)*(?:(?![_\\.\\\\\\/()\\[\\]\\{\\}\\<\\>,`#@%\\*\\^+\"¼½\\$| ]).)$/,\n\t\t);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn regex.test(fieldValue) ? undefined : message;\n\t},\n\t'transferAmount': ({ fieldValue, formValues, message, options }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.AMOUNT_EXCEEDS_BALANCE;\n\t\tconst availableBalance = parseFloat(\n\t\t\toptions.availableBalanceField\n\t\t\t\t? getIn(formValues, options.availableBalanceField)\n\t\t\t\t: options.availableBalance,\n\t\t);\n\t\tconst amountToTransfer = parseFloat(fieldValue);\n\n\t\tif (!isNaN(availableBalance) && !isNaN(amountToTransfer)) {\n\t\t\treturn amountToTransfer > availableBalance ? message : undefined;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\t'fundRollover': ({ fieldValue, message }: IProps) => {\n\t\tconst eRolloverFundValues = Object.values(fieldValue);\n\n\t\tif (!eRolloverFundValues.filter(Boolean).length) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'lpServiceId': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.LP_SERVICE_ID;\n\n\t\tconst regex = new RegExp(/^\\d{6,12}$/);\n\t\tconst isValid = regex.test(fieldValue);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!isValid) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\t'lpServiceIdRejected': ({ message, options }: IProps) => {\n\t\tif (options) {\n\t\t\treturn message || CONTENT.VALIDATORS.DEFAULT.LP_SERVICE_ID;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\t'esaDropdown': ({ fieldValue, message, options }: IProps) => {\n\t\tconst { smsfRollovers, esaPerFund } = options;\n\n\t\t// Filter true values only on fieldValues since they are the selected ones\n\t\tconst selectedFieldValuesArray = Object.keys(fieldValue).filter(key => {\n\t\t\treturn fieldValue[key];\n\t\t});\n\t\t// Separate SMSF titles into array for easier mapping\n\t\tconst smsfRolloversArray = smsfRollovers.map((fund: any) => fund?.fundId);\n\t\t// Check if the selectedFieldValuesArray are inside smsfRollovers fundId array\n\t\tconst selectedSMSFArray = selectedFieldValuesArray.filter(elem =>\n\t\t\tsmsfRolloversArray.includes(elem),\n\t\t);\n\n\t\tif (!isEqual(Object.keys(esaPerFund)?.sort(), selectedSMSFArray.sort())) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'investmentOrder': ({ fieldValue, formValues, message, options }: IProps) => {\n\t\tconst fieldIntVal = parseInt(fieldValue);\n\t\tconst optionIds = options.investmentsOption.map(\n\t\t\t(v: InvestmentOption | InvestmentOptionPaymentMethod) => {\n\t\t\t\tconst investment: string =\n\t\t\t\t\toptions?.initialStep === -1\n\t\t\t\t\t\t? (v as InvestmentOption)?.fields?.investmentOptionCode?.value\n\t\t\t\t\t\t: (v as InvestmentOptionPaymentMethod)?.investment_id;\n\n\t\t\t\treturn `${options.prefix}-${kebabCase(investment)}`;\n\t\t\t},\n\t\t);\n\n\t\t// Check if the field value is in the target sequence array\n\t\tconst targetSequence = Array.from(\n\t\t\t{ length: optionIds.length },\n\t\t\t(_, i) => i + 1,\n\t\t);\n\n\t\tif (fieldIntVal > optionIds?.length) {\n\t\t\treturn message;\n\t\t}\n\n\t\tif (!targetSequence.includes(fieldIntVal)) {\n\t\t\treturn message;\n\t\t}\n\n\t\t// Filter out the option values first\n\t\tconst optionVals = Object.keys(formValues)\n\t\t\t.filter(k => optionIds.includes(k) && formValues[k])\n\t\t\t.map(key => parseInt(formValues[key] || '0', 10))\n\t\t\t.sort();\n\n\t\tconst curValDupes = optionVals.filter(f => f === fieldIntVal);\n\t\tif (curValDupes.length > 1) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'investmentAllocation': ({ fieldValue, message }: IProps) => {\n\t\tconst allocationPercentage = Number(fieldValue);\n\t\tif (inRange(allocationPercentage, 0, 100) || allocationPercentage === 100) {\n\t\t\treturn undefined;\n\t\t} else {\n\t\t\treturn message;\n\t\t}\n\t},\n\n\t'financialHardshipPaymentValue': ({ fieldValue, message }: IProps) => {\n\t\t// TODO: Confirm the correct message for this one\n\t\t// See: Associated User Stories #9 Scenario 2 & 3\n\t\tmessage = message || 'Invalid format';\n\t\t// Note: https://australiansuper.atlassian.net/wiki/spaces/MemberPortalV5/pages/46400453/T19.E03.P01+-+Financial+Hardship+Claim+Form\n\t\tconst regex = new RegExp(/^(?=(?:\\d\\.?){0,9}$)\\d+(?:\\.\\d{1,2})?$/gm);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn regex.test(fieldValue) ? undefined : message;\n\t},\n\n\t'withdrawalsEligibilityCheckboxes': ({\n\t\tfieldValue,\n\t\tmessage,\n\t\toptions,\n\t}: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.REQUIRED;\n\n\t\tconst { optionsTotalLength } = options;\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn Array.isArray(fieldValue) && fieldValue?.length < optionsTotalLength\n\t\t\t? message\n\t\t\t: undefined;\n\t},\n\n\t/**\n\t * @description Validation if the user's withdrawal amount is not exceeding the selected investment options.\n\t * @param options - Should have an object investmentOptionProps of interface IInvestmentOptionValidatorProps\n\t * @returns - Error message (ER33) or undefined\n\t */\n\t'maxWithdrawalAmountForInvestmentOptions': ({\n\t\tfieldValue,\n\t\tformValues,\n\t\tmessage,\n\t\toptions,\n\t}: IProps) => {\n\t\tmessage =\n\t\t\tmessage || CONTENT.VALIDATORS.WITHDRAWALS.INSUFFICIENT_FUNDS_AVAILABLE;\n\n\t\tconst maxWithdrawalAmountForInvestmentOptionsProps: IMaxWithdrawalAmountForInvestmentOptionsProps =\n\t\t\toptions?.maxWithdrawalAmountForInvestmentOptionsProps;\n\t\tconst {\n\t\t\twithdrawalAmountField,\n\t\t\tinvestmentOptions,\n\t\t} = maxWithdrawalAmountForInvestmentOptionsProps;\n\n\t\tconst withdrawalAmount = formValues?.[withdrawalAmountField];\n\n\t\tconst amountToTransfer = parseFloat(withdrawalAmount);\n\t\tconst selectedOptions:\n\t\t\t| TInvestmentOption[]\n\t\t\t| [] = investmentOptions?.filter((option: TInvestmentOption) =>\n\t\t\tfieldValue?.includes(option?.id),\n\t\t);\n\n\t\tconst maxSelectedAmount = selectedOptions?.reduce(\n\t\t\t(sum, currentValue) => sum + currentValue?.amount,\n\t\t\t0,\n\t\t);\n\n\t\t// This condition is to satisfy the investment options\n\t\t// requirement of https://australiansuper.atlassian.net/browse/DDMP-269\n\t\tif (selectedOptions.length === 0) {\n\t\t\t// Return NO error message if there was no selected investment options\n\t\t\treturn undefined;\n\t\t} else if (!isNaN(amountToTransfer) && !isNaN(maxSelectedAmount)) {\n\t\t\treturn amountToTransfer > maxSelectedAmount ? message : undefined;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t// @note This is a temporary fix to Debt's required field in FHA.\n\t// Long term fix should be included in the 'required' validator type.\n\t'requiredDebt': ({ fieldValue, message }: IProps) => {\n\t\t// override the empty string with default error message\n\t\tmessage = message || CONTENT.VALIDATORS.WITHDRAWALS.REQUIRED_DEBT;\n\n\t\t// ignore the falsy value if the value is boolean\n\t\tif (!fieldValue && typeof fieldValue !== 'boolean') {\n\t\t\treturn message;\n\t\t}\n\n\t\t// check for empty string\n\t\tif (\n\t\t\t(typeof fieldValue === 'string' || fieldValue instanceof String) &&\n\t\t\t!fieldValue.trim()\n\t\t) {\n\t\t\treturn message;\n\t\t}\n\n\t\t// check for empty array\n\t\tif (Array.isArray(fieldValue) && !fieldValue.length) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'username': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.INVALID_USERNAME;\n\t\tconst regex = new RegExp(/^[a-zA-Z0-9-_.+@]*$/);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!regex.test(fieldValue)) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t'wholeNumber': ({ fieldValue, message }: IProps) => {\n\t\t// Note: ER99\n\t\tmessage = message || CONTENT.VALIDATORS.WITHDRAWALS.WHOLE_NUMBER;\n\n\t\t// Note: Regex to allow only digits and a decimal point character\n\t\tconst regex = new RegExp(/^\\d+\\.?$/);\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!regex.test(fieldValue)) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t/**\n\t * @note Initial validation for ABN. No requirement so far.\n\t */\n\t'abn': ({ fieldValue, message }: IProps) => {\n\t\t// Note: Create default content for ABN\n\t\tmessage = message || 'Please enter a valid ABN.';\n\n\t\t// const regex = new RegExp(/^\\d+$/);\n\t\tconst regex = new RegExp(/^[0-9 ]*$/);\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn regex.test(fieldValue) ? undefined : message;\n\t},\n\n\t/**\n\t * @note Not required but is added as an additional check\n\t * to prevent submission on fund lookup's initial state since\n\t * Fund name, Fund ABN & USI fields are hidden at the start\n\t */\n\t'fundLookupRequired': ({\n\t\tfieldValue,\n\t\tmessage,\n\t\tformValues,\n\t\toptions,\n\t}: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.REQUIRED;\n\n\t\t/**\n\t\t * Note: Since Fund name/ABN field & Spin/USI share the same result\n\t\t * if one has a value already (from dropdown select) then the other should be\n\t\t * \"passed\" even if it has 'undefined' value.\n\t\t */\n\t\tif (!!formValues?.[options?.otherFieldPath]) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t/**\n\t\t * Note: Validations below are the same as 'required' validator.\n\t\t */\n\n\t\t// ignore the falsy value if the value is boolean\n\t\tif (!fieldValue && typeof fieldValue !== 'boolean') {\n\t\t\treturn message;\n\t\t}\n\n\t\t// check for empty string\n\t\tif (\n\t\t\t(typeof fieldValue === 'string' || fieldValue instanceof String) &&\n\t\t\t!fieldValue.trim()\n\t\t) {\n\t\t\treturn message;\n\t\t}\n\n\t\t// check for empty array\n\t\tif (Array.isArray(fieldValue) && !fieldValue.length) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t// TODO: This will be used on the component being develop\n\t// for this use case:\n\t// https://www.figma.com/proto/2BEqt5hcan4EMDuzvqPQEf/Showcase?page-id=903%3A53924&node-id=908%3A62407&viewport=334%2C37%2C0.02&scaling=scale-down&starting-point-node-id=908%3A62170&show-proto-sidebar=1\n\t'ageEligibilityCheckboxes': ({ fieldValue, message }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.REQUIRED;\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn Array.isArray(fieldValue) && fieldValue?.length > 0\n\t\t\t? undefined\n\t\t\t: message;\n\t},\n\n\t/*** Validation to make sure that the claimed amount should not be greater than or equal to the maximum amount value */\n\t'maxEqualGreaterThanAmount': ({ fieldValue, message, options }: IProps) => {\n\t\tconst maximumAmount = options?.maximumAmount\n\t\t\t? parseFloat(options?.maximumAmount)\n\t\t\t: 10000;\n\t\tconst amountToTransfer = parseFloat(fieldValue);\n\n\t\tif (!isNaN(amountToTransfer)) {\n\t\t\treturn amountToTransfer >= maximumAmount ? message : undefined;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\n\t// Exclude decimal places maxLength input\n\t'maxLengthExcludeDecimalValue': ({\n\t\tfieldValue,\n\t\tmessage,\n\t\toptions,\n\t}: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.MAX_LENGTH;\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (fieldValue.indexOf('.') === -1) {\n\t\t\treturn fieldValue?.length > options?.max ? message : undefined;\n\t\t} else {\n\t\t\tconst splitValue = fieldValue?.split('.');\n\n\t\t\treturn splitValue[0].length > options?.max ? message : undefined;\n\t\t}\n\t},\n\n\t/*** @note This is a Direct Debit specific validation that limits the users to enter\n\t * an amount greater than $330,000 or any amount specified in the future as per the requirements stated in\n\t * https://australiansuper.atlassian.net/browse/MI0031-2028\n\t * Once the user enters an amount greater than $330K, an error will bre thrown in the UI.\n\t */\n\t'maxDirectDebitAmount': ({ fieldValue, message, options }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.MAX_LENGTH;\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (Number(fieldValue) > Number(options?.maxAmount)) {\n\t\t\treturn message;\n\t\t}\n\n\t\treturn undefined;\n\t},\n\t/**\n\t * This change has been requested by AustralianSuper Operations as a fraud mitigant.\n\t *\n\t * If the member updates the account name (removes the pre-populated account name),\n\t * the new value entered in ‘Account name' input field must contain the member’s\n\t * (in any order):\n\t * - Surname, and\n\t * - First initial of the first name\n\t *\n\t * Additional rules:\n\t * - First name+“ “ AND Surname\n\t * - First name Initial+\" \" AND Surname\n\t * - Surname+“ “ AND First name\n\t * - Surname+“ “ AND First name Initial\n\t *\n\t * Note: initial is isolated as a single word\n\t *\n\t * Refer: https://australiansuper.atlassian.net/browse/MI0031-2056\n\t */\n\t'accountName': ({ fieldValue, message, options }: IProps) => {\n\t\tmessage = message || CONTENT.VALIDATORS.DEFAULT.ACCOUNT_NAME;\n\n\t\tconst inputValue = fieldValue?.toLowerCase().trim() ?? '';\n\t\tconst fname = options?.firstName?.toLowerCase().trim() ?? '';\n\t\tconst lname = options?.lastName?.toLowerCase().trim() ?? '';\n\t\tconst firstNameInitial = fname.slice(0, 1);\n\t\tlet nameWithoutLastName = '';\n\t\tlet isValidLastName = false;\n\n\t\t// return if no change in account name field\n\t\tif (inputValue === fname.concat(' ', lname)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!fieldValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst fnameCounter = fname.split(' ').length;\n\t\tconst hasMoreThanOneFname = fnameCounter > 1;\n\n\t\t// remove last name in the input value string\n\t\tif (inputValue.includes(lname)) {\n\t\t\tconst escapedLastName = lname.replace(' ', '-');\n\t\t\tconst escapedInputName = inputValue.replace(lname, escapedLastName);\n\n\t\t\tif (\n\t\t\t\tescapedInputName\n\t\t\t\t\t.split(' ')\n\t\t\t\t\t.some((lastName: string) => lastName === escapedLastName)\n\t\t\t) {\n\t\t\t\tisValidLastName = true;\n\t\t\t}\n\n\t\t\tnameWithoutLastName = escapedInputName.replace(escapedLastName, '');\n\t\t}\n\n\t\t// if more than 1 fname, get the first of the 2 then check if match to the account name field\n\t\tconst accountNameChecker = () => {\n\t\t\tconst firstName = hasMoreThanOneFname ? fname.split(' ')[0] : fname;\n\t\t\tconst isValid = nameWithoutLastName\n\t\t\t\t.split(' ')\n\t\t\t\t.filter(fnameFilter => fnameFilter !== '')\n\t\t\t\t.some((someFname: string) => {\n\t\t\t\t\tif (someFname === firstName || someFname === firstNameInitial) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} else return false;\n\t\t\t\t});\n\n\t\t\treturn isValid;\n\t\t};\n\n\t\tconst isAccountNameValid = isValidLastName && accountNameChecker();\n\n\t\treturn isAccountNameValid ? undefined : message;\n\t},\n};\n","/**\n * Links and buttons don't 'work' properly in Sitecore's Experience\n * Editor because it supresses `onClick` events so that authors can\n * click-to-edit links/buttons without activating them.\n *\n * We can get around this by utilising another (similar) event handler,\n * `onMouseDown`, as well as taking some additional measures to bring\n * things like keyboard accessibility back on parity with `onClick`.\n *\n * Note this is intended for use within the likes of `ExperienceEditorContent`\n * and thus doesn't have `ExperienceEditorContext` checks of its own.\n */\n\nimport React from 'react';\nimport { StyledComponent } from 'styled-components';\n\nimport { bindKeyboardControls } from 'core/utils/accessibility-utils';\nimport * as GS from 'core/styles/Containers';\n\ninterface IProps extends React.ButtonHTMLAttributes {\n\tStyledComponent?: StyledComponent<'button', any, {}, never>;\n\tcallback: (\n\t\tevent:\n\t\t\t| React.MouseEvent\n\t\t\t| React.KeyboardEvent,\n\t) => void;\n\tchildren: React.ReactNode;\n}\n\nconst ExperienceEditorButton = ({\n\tStyledComponent = GS.EECtaWrapper,\n\tcallback,\n\tchildren,\n\t...props\n}: IProps) => (\n\t bindKeyboardControls(e, callback)}\n\t\t{...props}\n\t>\n\t\t{children}\n\t\n);\n\nexport default ExperienceEditorButton;\n","import React, { useState } from 'react';\n\nimport { executeCallback } from 'core/utils/global-utils';\nimport { isJssField } from 'core/utils/sitecore-utils';\nimport { ICONS, Icon } from 'core/components/Icon';\nimport { bindKeyboardControls } from 'core/utils/accessibility-utils';\nimport UpdatedCtrlHolder from 'pods/forms/components/structural/UpdatedCtrlHolder';\nimport IProps from 'pods/forms/components/formFieldProps.d';\n\nimport * as S from './Text.style';\n\nexport const RawText = (props: any) => (\n\t\n);\n\nexport const TEXT_BTN_CLASS = 'text-button-within';\n\nconst Text = ({\n\tconfig,\n\tcomputed,\n\thtmlId,\n\tpath,\n\thandleChangeFast,\n\thandleBlurFast,\n\thandleKeyPressFast,\n\tvalue,\n\tgetDisplayError,\n\trenderTextNode,\n\tctrlHolderProps,\n}: IProps) => {\n\tconst { data = {}, hasCloseIcon, enableButtonWithin } = config;\n\n\tconst {\n\t\tinputAttrs = {},\n\t\tlabelHelpText,\n\t\tdisablePaste,\n\t\tappendMsg,\n\t\tbottomMsg,\n\t\tctrlHolderFullWidth,\n\t\treadOnly,\n\t\tfullWidth,\n\t\tstartAdornment,\n\t\tendAdornment,\n\t\ttrackInput,\n\t\ttrackShowClickEvent,\n\t\thandleChange,\n\t\thandleFocus,\n\t\thandleBlur,\n\t\ttriggerError,\n\t\tuiDisabled,\n\t\tcustomClassName,\n\t\thandleClear,\n\t\tbottomMsgWithIcon,\n\t} = data;\n\n\tconst label = isJssField(data.label)\n\t\t? data.label\n\t\t: renderTextNode(data.label, 'span');\n\tconst helpText = labelHelpText\n\t\t? isJssField(labelHelpText)\n\t\t\t? labelHelpText\n\t\t\t: renderTextNode(labelHelpText, 'span')\n\t\t: labelHelpText;\n\n\t// Use label value if placeholder value not provided\n\t//TODO get field value placeholder if JSS\n\tconst placeholder =\n\t\tdata.placeholder ||\n\t\t(isJssField(data.label)\n\t\t\t? data.label.value?.props?.jss?.value ?? data.label.value\n\t\t\t: data.label);\n\n\tconst tooltip = renderTextNode(data.tooltip);\n\tconst errorMsg = getDisplayError();\n\n\tconst { required, disabled } = computed;\n\n\tconst _ctrlHolderProps = {\n\t\thtmlId,\n\t\tlabel,\n\t\thelpText,\n\t\terrorMsg,\n\t\tappendMsg,\n\t\tbottomMsg,\n\t\tvalue,\n\t\tdisabled,\n\t\tuiDisabled,\n\t\tstartAdornment,\n\t\tendAdornment,\n\t\tfullWidth,\n\t\tctrlHolderFullWidth,\n\t\trequired,\n\t\treadOnly,\n\t\tcustomClassName,\n\t\tenableButtonWithin,\n\t\tbottomMsgWithIcon,\n\t\t...(data.tooltip && { tooltip }),\n\t\t...ctrlHolderProps,\n\t};\n\n\tconst hasError = !!errorMsg || triggerError;\n\tconst hasValue = !!value;\n\tconst hasHelpText = !!helpText;\n\n\t// For Password type input field\n\tconst isPasswordType = inputAttrs?.type === 'password';\n\tconst [isShowMasked, setIsShowMasked] = useState(isPasswordType);\n\tconst showButtonWithin =\n\t\tenableButtonWithin && !disabled && !uiDisabled && !readOnly && hasValue;\n\n\tconst handleCloseEvent = (e: React.MouseEvent) => {\n\t\te?.stopPropagation();\n\t\thandleClear?.();\n\t\thasCloseIcon ? handleChangeFast('') : setIsShowMasked(!isShowMasked);\n\t\tisShowMasked && executeCallback(trackShowClickEvent);\n\t};\n\n\treturn (\n\t\t\n\t\t\t) => {\n\t\t\t\t\texecuteCallback(trackInput);\n\t\t\t\t\thandleChange?.(e);\n\t\t\t\t\thandleChangeFast(e.target.value);\n\t\t\t\t}}\n\t\t\t\tonFocus={(e: React.ChangeEvent) => {\n\t\t\t\t\tif (!!e.target.placeholder) {\n\t\t\t\t\t\te.target.placeholder = '';\n\t\t\t\t\t}\n\t\t\t\t\thandleFocus?.(e);\n\t\t\t\t}}\n\t\t\t\tonBlur={(e: React.ChangeEvent) => {\n\t\t\t\t\tif (!e.target.value) {\n\t\t\t\t\t\te.target.placeholder = placeholder;\n\t\t\t\t\t}\n\t\t\t\t\thandleBlur?.(value);\n\t\t\t\t\thandleBlurFast();\n\t\t\t\t}}\n\t\t\t\tonPaste={(e: React.FormEvent) => {\n\t\t\t\t\tif (disablePaste) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tonKeyPress={handleKeyPressFast}\n\t\t\t\taria-describedby={hasHelpText ? `${htmlId}-helpText` : undefined}\n\t\t\t\treadOnly={readOnly}\n\t\t\t\thasStartAdornment={!!startAdornment}\n\t\t\t\thasEndAdornment={!!endAdornment}\n\t\t\t\t{...{\n\t\t\t\t\trequired,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tuiDisabled,\n\t\t\t\t\thasError,\n\t\t\t\t\thasValue,\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tfullWidth,\n\t\t\t\t}}\n\t\t\t\t{...inputAttrs}\n\t\t\t\t// For password type input, change type to 'text' to remove the mask on input when isShowMasked set to false\n\t\t\t\t{...(isPasswordType && !isShowMasked && { type: 'text' })}\n\t\t\t/>\n\t\t\t{showButtonWithin && (\n\t\t\t\t handleCloseEvent(e)}\n\t\t\t\t\tonMouseDown={e => handleCloseEvent(e)}\n\t\t\t\t\tonMouseUp={e => handleCloseEvent(e)}\n\t\t\t\t\thasCloseIcon={hasCloseIcon}\n\t\t\t\t\thasValue={!!value}\n\t\t\t\t>\n\t\t\t\t\t{(hasCloseIcon && (\n\t\t\t\t\t\t\n\t\t\t\t\t)) || (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{isShowMasked ? 'Show' : 'Hide'}\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n};\n\nexport default Text;\n","import React from 'react';\nimport Tooltip, { Placement } from 'react-floater';\n\nimport { Icon, ICONS } from 'core/components/Icon';\nimport * as vr from 'core/styles/variables';\n\nimport * as S from './Tooltip.style';\n\ninterface IProps {\n\ticon?: ICONS;\n\ticonSize?: number;\n\tcontent: string | React.ReactNode;\n\t// Content can be JSX, pass aria-describedby value explicitly\n\tariaDescription?: string;\n\t// Optional config for react floater styles. Reference -> shorturl.at/eEFO7\n\t// If none passed falls back to default config.\n\ttooltipStyle?: object;\n\t// Control the placement of floater tooltip relative to the invoking element\n\tplacement?: Placement;\n}\n\ninterface IState {\n\tisOpen: boolean;\n}\n\nexport default class TooltipModule extends React.PureComponent {\n\ttooltipButton = React.createRef();\n\n\tstate = {\n\t\tisOpen: false,\n\t};\n\n\tprivate _tooltipToggleState = (state?: boolean) => {\n\t\tthis.setState((prev: IState) => ({\n\t\t\tisOpen: typeof state === 'boolean' ? state : !prev.isOpen,\n\t\t}));\n\t};\n\n\trender() {\n\t\tconst {\n\t\t\ticon = ICONS.INFO,\n\t\t\tcontent: tooltipContent,\n\t\t\ticonSize,\n\t\t\tariaDescription,\n\t\t\ttooltipStyle: floaterStyle,\n\t\t\tplacement,\n\t\t} = this.props;\n\t\tconst { isOpen: open } = this.state;\n\t\tconst content = {tooltipContent};\n\t\tconst tooltipStyle = floaterStyle\n\t\t\t? floaterStyle\n\t\t\t: {\n\t\t\t\t\tfloater: {\n\t\t\t\t\t\tfilter: 'none',\n\t\t\t\t\t},\n\t\t\t\t\tcontainer: {\n\t\t\t\t\t\t// TODO should we infer this from theme?\n\t\t\t\t\t\tbackgroundColor: '#222222',\n\t\t\t\t\t\tborderRadius: 2,\n\t\t\t\t\t\tcolor: `${vr.brandWhite}`,\n\t\t\t\t\t\tminHeight: 'none',\n\t\t\t\t\t\tminWidth: 'none',\n\t\t\t\t\t\tpadding: 10,\n\t\t\t\t\t\ttextAlign: 'center',\n\t\t\t\t\t},\n\t\t\t\t\tarrow: {\n\t\t\t\t\t\t// TODO should we infer this from theme?\n\t\t\t\t\t\tcolor: '#222222',\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\tlength: 8,\n\t\t\t\t\t\tspread: 12,\n\t\t\t\t\t},\n\t\t\t };\n\n\t\treturn (\n\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\tconst tooltipButton = e.target as HTMLButtonElement;\n\n\t\t\t\t\t\t// Not all browsers will apply focus to the button on click,\n\t\t\t\t\t\t// so we can do so programmatically to ensure expected 'onBlur' behaviour\n\t\t\t\t\t\t// Ref: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus\n\t\t\t\t\t\ttooltipButton.focus();\n\n\t\t\t\t\t\tthis._tooltipToggleState();\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={() => {\n\t\t\t\t\t\tthis._tooltipToggleState(false);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{/* Removing pointer events so clicking on the SVG itself\n\t\t\t\t\tdoesn't interfere with the onClick event's 'e.target' selector */}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n","import styled, { css } from 'styled-components';\nimport { lighten } from 'polished';\n\nimport { Icon } from 'core/components/Icon/Icon.style';\nimport * as mx from 'core/styles/mixins';\n\nexport const Tooltip = styled.button`\n\t${mx.buttonReset}\n\t${mx.square('30px')}\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer !important;\n\n\t${({ theme }) => css`\n\t\t${Icon} {\n\t\t\tcolor: ${theme.global.colors.secondary};\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\t${Icon} {\n\t\t\t\tcolor: ${lighten(0.2, theme.global.colors.secondary.color)};\n\t\t\t}\n\t\t}\n\n\t\t&:active {\n\t\t\t${Icon} {\n\t\t\t\tcolor: ${lighten(0.1, theme.global.colors.secondary.color)};\n\t\t\t}\n\t\t}\n\t`}\n`;\n\nexport const Content = styled.div`\n\t.tooltip-text {\n\t\tpadding: 10px;\n\n\t\t${({ theme }) => css`\n\t\t\tbackground-color: ${theme.global.colors.secondary};\n\n\t\t\t&.place-top {\n\t\t\t\t&::after {\n\t\t\t\t\tborder-top-color: ${theme.global.colors.secondary} !important;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&.place-right {\n\t\t\t\t&::after {\n\t\t\t\t\tborder-right-color: ${theme.global.colors.secondary} !important;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&.place-bottom {\n\t\t\t\t&::after {\n\t\t\t\t\tborder-bottom-color: ${theme.global.colors.secondary} !important;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&.place-left {\n\t\t\t\t&::after {\n\t\t\t\t\tborder-left-color: ${theme.global.colors.secondary} !important;\n\t\t\t\t}\n\t\t\t}\n\t\t`}\n\t}\n`;\n\nexport const TooltipContent = styled.div`\n\tfont-size: 14px;\n\n\tp {\n\t\tfont-size: 14px;\n\t\thyphens: auto;\n\t}\n\n\tp:first-of-type {\n\t\tmargin-top: 0;\n\t}\n\n\tp:last-of-type {\n\t\tmargin-bottom: 0;\n\t}\n`;\n","import { Field, Rule } from 'pods/forms/FormBuilder.d';\nimport { ADDRESS, MANUAL_ADDRESS, STATE_POSTCODE } from 'core/constants/form';\nimport {\n\tgetMessageByCode,\n\tJssTextType,\n\tSitecoreErrorMsgItemType,\n} from 'core/utils/sitecore-utils';\nimport { CONTACT_DETAILS_ERRORS } from 'core/constants';\n\nimport countries from './countries.json';\nimport states from './states.json';\n\nexport const AUSTRALIA_COUNTRY_CODE = 'AUS';\n\ninterface IPostCodeErrorMessages {\n\tau: string;\n\tintel: string;\n}\n\ninterface IGenerateAddressFieldsConfig {\n\t/** Address path used to group input value together */\n\taddressPathPrefix: string;\n\t/** Address auto complete input field label */\n\taddressLabel: JssTextType | string;\n\t/** Street address 1 input field label */\n\tstreet1Label: JssTextType | string;\n\t/** Street address 2 input field label */\n\tstreet2Label: JssTextType | string;\n\t/** Suburb input field label */\n\tsuburbLabel: JssTextType | string;\n\t/** State input field label */\n\tstateLabel: JssTextType | string;\n\t/** Country select field label */\n\tcountryLabel: JssTextType | string;\n\t/** Postcode input field label */\n\tpostcodeLabel: JssTextType | string;\n\t/** Address fieldset legend */\n\taddressFieldsetLegend: JssTextType | string;\n\t/** Additional address checkbox label */\n\tadditionalAddressLabel?: JssTextType | string;\n\t/** DO NOT PROVIDE this param for the additional address fields */\n\t/** NOTE: this will be auto generated for additional address fields */\n\trules?: Rule[];\n\t/** Address error message from Sitecore */\n\taddressInvalidErrorMessage?: string;\n\t/** Postalcode error message from Sitecore (ER09) */\n\tpostcodeErrorMessages?: IPostCodeErrorMessages;\n\t/** Global Error messages */\n\terrorMessages: SitecoreErrorMsgItemType[];\n\t/** Max length: AU postcode = 4 digits, International postcode = 20 alphanumeric */\n\tpostalCodeMaxLength?: number;\n\t/** label used for address auto complete when no result is returned */\n\temptyResultLabel: JssTextType;\n\t/** label used for address auto complete when user cannot find matching address in the result */\n\tnoMatchLabel: JssTextType;\n}\n\n/**\n * Generate address auto complete and manual enter fields.\n *\n * @param primaryAddress - primary address config\n * @param additionalAddress - optional additional address config and only show when additionalAddress checkbox is check\n * @param isFormDisabled - this is to disable all the form fields. Helpful in preventing the user to hit enter key while form is still submitting to avoid mutliple form submission\n * @example\n * // addressPathPrefix = 'homeAddress'\n * // formValues will be\n * {\n * 'homeAddress': {\n * address: 'foo',\n * street1: 'bar',\n * }\n * }\n */\nexport const generateAddressFields = (\n\tprimaryAddress: IGenerateAddressFieldsConfig,\n\tadditionalAddress?: IGenerateAddressFieldsConfig,\n\tisFormDisabled = false,\n): Field[] => {\n\tconst {\n\t\tstateLabel,\n\t\tsuburbLabel,\n\t\tcountryLabel,\n\t\taddressLabel,\n\t\tstreet1Label,\n\t\tstreet2Label,\n\t\tpostcodeLabel,\n\t\taddressPathPrefix,\n\t\taddressFieldsetLegend,\n\t\tadditionalAddressLabel,\n\t\trules,\n\t\taddressInvalidErrorMessage,\n\t\terrorMessages,\n\t\temptyResultLabel,\n\t\tnoMatchLabel,\n\t\tpostcodeErrorMessages,\n\t} = primaryAddress;\n\n\tif (!additionalAddress) {\n\t\treturn [\n\t\t\t{\n\t\t\t\tid: addressPathPrefix,\n\t\t\t\ttype: 'sub-layout',\n\t\t\t\tdata: {\n\t\t\t\t\tlayout: '66%, 100%',\n\t\t\t\t\tisFieldset: true,\n\t\t\t\t\tlegend: addressFieldsetLegend,\n\t\t\t\t\tgap: 0,\n\t\t\t\t},\n\t\t\t\tfields: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: `${addressPathPrefix}.${ADDRESS.COUNTRY}`,\n\t\t\t\t\t\tpath: `${addressPathPrefix}.${ADDRESS.COUNTRY}`,\n\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\trequiredMessage: addressInvalidErrorMessage,\n\t\t\t\t\t\tdisabled: isFormDisabled,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\toptions: countries,\n\t\t\t\t\t\t\tlabel: countryLabel,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalidators: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'required',\n\t\t\t\t\t\t\t\tmessage: addressInvalidErrorMessage,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: ADDRESS.ADDRESS_LOOKUP,\n\t\t\t\t\t\ttype: 'section',\n\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: `${addressPathPrefix}.${ADDRESS.ADDRESS_LOOKUP}`,\n\t\t\t\t\t\t\t\tpath: `${addressPathPrefix}.${ADDRESS.ADDRESS_LOOKUP}`,\n\t\t\t\t\t\t\t\ttype: 'address-autocomplete',\n\t\t\t\t\t\t\t\tdoNotSubmit: true,\n\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\trequiredMessage: addressInvalidErrorMessage,\n\t\t\t\t\t\t\t\tdisabled: isFormDisabled,\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\tlabel: addressLabel,\n\t\t\t\t\t\t\t\t\tfullWidth: true,\n\t\t\t\t\t\t\t\t\temptyResultLabel,\n\t\t\t\t\t\t\t\t\tnoMatchLabel,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvalidators: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttype: 'required',\n\t\t\t\t\t\t\t\t\t\tmessage: addressInvalidErrorMessage,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\trules: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tproperty: 'shown',\n\t\t\t\t\t\t\t\twhen: {\n\t\t\t\t\t\t\t\t\tall: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\teq: {\n\t\t\t\t\t\t\t\t\t\t\t\tfieldPath: `${addressPathPrefix}.${ADDRESS.COUNTRY}`,\n\t\t\t\t\t\t\t\t\t\t\t\tvalues: [AUSTRALIA_COUNTRY_CODE, ''],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tnot: {\n\t\t\t\t\t\t\t\t\t\t\t\teq: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfieldPath: `${addressPathPrefix}.${ADDRESS.ADDRESS_LOOKUP}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalues: [MANUAL_ADDRESS],\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: MANUAL_ADDRESS,\n\t\t\t\t\t\ttype: 'section',\n\t\t\t\t\t\tdata: { align: 'left' },\n\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: `${addressPathPrefix}.${ADDRESS.STREET_1}`,\n\t\t\t\t\t\t\t\tpath: `${addressPathPrefix}.${ADDRESS.STREET_1}`,\n\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\trequiredMessage: addressInvalidErrorMessage,\n\t\t\t\t\t\t\t\thasCloseIcon: true,\n\t\t\t\t\t\t\t\tenableButtonWithin: true,\n\t\t\t\t\t\t\t\tdisabled: isFormDisabled,\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\tfullWidth: true,\n\t\t\t\t\t\t\t\t\tlabel: street1Label,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvalidators: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttype: 'required',\n\t\t\t\t\t\t\t\t\t\tmessage: addressInvalidErrorMessage,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttype: 'street-address',\n\t\t\t\t\t\t\t\t\t\tmessage: getMessageByCode(\n\t\t\t\t\t\t\t\t\t\t\tCONTACT_DETAILS_ERRORS.INVALID_STREET_ADDRESS,\n\t\t\t\t\t\t\t\t\t\t\terrorMessages,\n\t\t\t\t\t\t\t\t\t\t\t'errorMessage',\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: `${addressPathPrefix}.${ADDRESS.STREET_2}`,\n\t\t\t\t\t\t\t\tpath: `${addressPathPrefix}.${ADDRESS.STREET_2}`,\n\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\thasCloseIcon: true,\n\t\t\t\t\t\t\t\tenableButtonWithin: true,\n\t\t\t\t\t\t\t\tdisabled: isFormDisabled,\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\tfullWidth: true,\n\t\t\t\t\t\t\t\t\tlabel: street2Label,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvalidators: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttype: 'street-address',\n\t\t\t\t\t\t\t\t\t\tmessage: getMessageByCode(\n\t\t\t\t\t\t\t\t\t\t\tCONTACT_DETAILS_ERRORS.INVALID_STREET_ADDRESS,\n\t\t\t\t\t\t\t\t\t\t\terrorMessages,\n\t\t\t\t\t\t\t\t\t\t\t'errorMessage',\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'suburbLayout',\n\t\t\t\t\t\t\t\ttype: 'sub-layout',\n\t\t\t\t\t\t\t\tdata: { noMargin: true },\n\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: `${addressPathPrefix}.${ADDRESS.SUBURB}`,\n\t\t\t\t\t\t\t\t\t\tpath: `${addressPathPrefix}.${ADDRESS.SUBURB}`,\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\t\t\trequiredMessage: addressInvalidErrorMessage,\n\t\t\t\t\t\t\t\t\t\thasCloseIcon: true,\n\t\t\t\t\t\t\t\t\t\tenableButtonWithin: true,\n\t\t\t\t\t\t\t\t\t\tdisabled: isFormDisabled,\n\t\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\t\tlabel: suburbLabel,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tvalidators: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'required',\n\t\t\t\t\t\t\t\t\t\t\t\tmessage: addressInvalidErrorMessage,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'suburb-address',\n\t\t\t\t\t\t\t\t\t\t\t\tmessage: getMessageByCode(\n\t\t\t\t\t\t\t\t\t\t\t\t\tCONTACT_DETAILS_ERRORS.INVALID_SUBURB,\n\t\t\t\t\t\t\t\t\t\t\t\t\terrorMessages,\n\t\t\t\t\t\t\t\t\t\t\t\t\t'errorMessage',\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\trules: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tproperty: 'required',\n\t\t\t\t\t\t\t\t\t\t\t\twhen: {\n\t\t\t\t\t\t\t\t\t\t\t\t\teq: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfieldPath: `${addressPathPrefix}.${ADDRESS.COUNTRY}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalues: [AUSTRALIA_COUNTRY_CODE],\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: STATE_POSTCODE,\n\t\t\t\t\t\t\t\ttype: 'sub-layout',\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\tgap: 0,\n\t\t\t\t\t\t\t\t\tnoMargin: true,\n\t\t\t\t\t\t\t\t\tnoStack: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'stateLayout',\n\t\t\t\t\t\t\t\t\t\ttype: 'sub-layout',\n\t\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\t\tlayout: '1/1',\n\t\t\t\t\t\t\t\t\t\t\tgap: { y: 0 },\n\t\t\t\t\t\t\t\t\t\t\tnoMargin: true,\n\t\t\t\t\t\t\t\t\t\t\tnoStack: true,\n\t\t\t\t\t\t\t\t\t\t\trightPadding: 5,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t// Todo: adding a string after id will fix the \"State\" not displaying issue\n\t\t\t\t\t\t\t\t\t\t\t\t// need to find out root cause\n\t\t\t\t\t\t\t\t\t\t\t\tid: `${addressPathPrefix}.${ADDRESS.STATE}Aus`,\n\t\t\t\t\t\t\t\t\t\t\t\tpath: `${addressPathPrefix}.${ADDRESS.STATE}`,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\t\t\t\t\trequiredMessage: addressInvalidErrorMessage,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: isFormDisabled,\n\t\t\t\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: stateLabel,\n\t\t\t\t\t\t\t\t\t\t\t\t\toptions: states,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\tvalidators: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'required',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmessage: addressInvalidErrorMessage,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\trules: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tproperty: 'shown',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twhen: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\teq: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfieldPath: `${addressPathPrefix}.${ADDRESS.COUNTRY}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalues: [AUSTRALIA_COUNTRY_CODE],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t// NOTE: id must be unique even though they won't show up at same time\n\t\t\t\t\t\t\t\t\t\t\t\tid: `${addressPathPrefix}.${ADDRESS.STATE}Intel`,\n\t\t\t\t\t\t\t\t\t\t\t\tpath: `${addressPathPrefix}.${ADDRESS.STATE}`,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\t\t\thasCloseIcon: true,\n\t\t\t\t\t\t\t\t\t\t\t\tenableButtonWithin: true,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: isFormDisabled,\n\t\t\t\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: stateLabel,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\trules: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tproperty: 'shown',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twhen: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnot: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\teq: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfieldPath: `${addressPathPrefix}.${ADDRESS.COUNTRY}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalues: [AUSTRALIA_COUNTRY_CODE],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: ADDRESS.POSTCODE,\n\t\t\t\t\t\t\t\t\t\ttype: 'sub-layout',\n\t\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\t\tgap: { y: 0 },\n\t\t\t\t\t\t\t\t\t\t\tnoMargin: true,\n\t\t\t\t\t\t\t\t\t\t\tnoStack: true,\n\t\t\t\t\t\t\t\t\t\t\tleftPadding: 5,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tid: `${addressPathPrefix}.${ADDRESS.POSTCODE}`,\n\t\t\t\t\t\t\t\t\t\t\t\tpath: `${addressPathPrefix}.${ADDRESS.POSTCODE}`,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\t\t\thasCloseIcon: true,\n\t\t\t\t\t\t\t\t\t\t\t\tenableButtonWithin: true,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: isFormDisabled,\n\t\t\t\t\t\t\t\t\t\t\t\tvalidators: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'postcode',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttargetField: `${addressPathPrefix}.${ADDRESS.COUNTRY}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpostcodeErrorMessages: postcodeErrorMessages,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\taddressPathPrefix: addressPathPrefix,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'postcode-required',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttargetField: `${addressPathPrefix}.${ADDRESS.COUNTRY}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfieldName: `${addressPathPrefix}.${ADDRESS.POSTCODE}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpostcodeErrorMessages: postcodeErrorMessages,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: postcodeLabel,\n\t\t\t\t\t\t\t\t\t\t\t\t\tinputAttrs: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxLength: 20,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonInput: function(e: any) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te.target.value = e.target.value.replaceAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/[^a-zA-Z0-9 -]/g,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\trules: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tproperty: 'shown',\n\t\t\t\t\t\t\t\twhen: {\n\t\t\t\t\t\t\t\t\tany: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\teq: {\n\t\t\t\t\t\t\t\t\t\t\t\tfieldPath: `${addressPathPrefix}.${ADDRESS.ADDRESS_LOOKUP}`,\n\t\t\t\t\t\t\t\t\t\t\t\tvalues: ['manual'],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tnot: {\n\t\t\t\t\t\t\t\t\t\t\t\teq: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfieldPath: `${addressPathPrefix}.${ADDRESS.COUNTRY}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalues: [AUSTRALIA_COUNTRY_CODE, ''],\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t// append rules for show hide of the additional address input groups\n\t\t\t\trules,\n\t\t\t},\n\t\t\t...(!!additionalAddressLabel\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: ADDRESS.ADDITIONAL_ADDRESS,\n\t\t\t\t\t\t\tpath: `${addressPathPrefix}.${ADDRESS.ADDITIONAL_ADDRESS}`,\n\t\t\t\t\t\t\ttype: 'checkbox' as any,\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel: additionalAddressLabel,\n\t\t\t\t\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t ]\n\t\t\t\t: []),\n\t\t];\n\t} else {\n\t\treturn [\n\t\t\t...generateAddressFields(primaryAddress, undefined, isFormDisabled),\n\t\t\t...generateAddressFields(\n\t\t\t\t{\n\t\t\t\t\t...additionalAddress,\n\t\t\t\t\trules: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tproperty: 'shown',\n\t\t\t\t\t\t\twhen: {\n\t\t\t\t\t\t\t\teq: {\n\t\t\t\t\t\t\t\t\tfieldPath: `${addressPathPrefix}.${ADDRESS.ADDITIONAL_ADDRESS}`,\n\t\t\t\t\t\t\t\t\tvalues: [true],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\tisFormDisabled,\n\t\t\t),\n\t\t];\n\t}\n};\n\n/**\n * Generate address fields config including fields and initial values.\n *\n * @param primaryAddress - primary address config\n * @param additionalAddress - optional additional address config and only show when additionalAddress checkbox is check\n * @param isFormDisabled - this is to disable all the form fields. Helpful in preventing the user to hit enter key while form is still submitting to avoid mutliple form submission\n */\nexport const generateAddressFieldsConfig = (\n\tprimaryAddress: IGenerateAddressFieldsConfig,\n\tadditionalAddress?: IGenerateAddressFieldsConfig,\n\tisFormDisabled = false,\n) => {\n\tconst fields = generateAddressFields(\n\t\tprimaryAddress,\n\t\tadditionalAddress,\n\t\tisFormDisabled,\n\t);\n\tconst initialAddressValues = {\n\t\t[ADDRESS.COUNTRY]: AUSTRALIA_COUNTRY_CODE,\n\t\t[ADDRESS.ADDRESS]: '',\n\t\t[ADDRESS.STREET_1]: '',\n\t\t[ADDRESS.STREET_2]: '',\n\t\t[ADDRESS.SUBURB]: '',\n\t\t[ADDRESS.STATE]: '',\n\t\t[ADDRESS.POSTCODE]: '',\n\t};\n\tconst initialValues = {\n\t\t[primaryAddress.addressPathPrefix]: initialAddressValues,\n\t\t...(additionalAddress && {\n\t\t\t[additionalAddress.addressPathPrefix]: initialAddressValues,\n\t\t}),\n\t};\n\n\treturn { fields, initialValues };\n};\n","import styled, { css } from 'styled-components';\n\nimport * as mx from 'core/styles/mixins';\nimport * as vr from 'core/styles/variables';\nimport { Content } from 'pods/forms/components/base/Label/Label.style';\n\nexport const RadioCheckboxItem = styled.li<{\n\thasError: boolean;\n\thasBorderline: boolean;\n}>`\n\t&::before {\n\t\tdisplay: none;\n\t}\n\n\t${Content} {\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t}\n\n\tinput {\n\t\t/* Shared between radio and checkbox */\n\t\t&[type='radio'],\n\t\t&[type='checkbox'] {\n\t\t\t${mx.visuallyhidden};\n\n\t\t\t+ label {\n\t\t\t\tposition: relative;\n\t\t\t\tdisplay: block;\n\t\t\t\tpadding: 5px 20px;\n\t\t\t\tpadding-left: 30px;\n\t\t\t\tline-height: 1.5;\n\n\t\t\t\t&.-hidden {\n\t\t\t\t\t> span {\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\twidth: 1px;\n\t\t\t\t\t\theight: 1px;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\tmargin: -1px;\n\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\tclip: rect(0, 0, 0, 0);\n\t\t\t\t\t\tborder: 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t${props =>\n\t\t\t\t\tprops.hasBorderline\n\t\t\t\t\t\t? css`\n\t\t\t\t\t\t\t\tpadding-left: 20px;\n\t\t\t\t\t\t `\n\t\t\t\t\t\t: css`\n\t\t\t\t\t\t\t\tpadding-left: 30px;\n\t\t\t\t\t\t `}\n\n\t\t\t\tspan {\n\t\t\t\t\tfont-weight: 400;\n\t\t\t\t}\n\n\t\t\t\t&::before,\n\t\t\t\t&::after {\n\t\t\t\t\t${mx.pseudo}\n\t\t\t\t}\n\n\t\t\t\t&::before {\n\t\t\t\t\theight: 20px;\n\t\t\t\t\twidth: 20px;\n\t\t\t\t\tleft: 0;\n\t\t\t\t\ttop: 7px;\n\t\t\t\t\tbackground-color: ${vr.brandWhite};\n\n\t\t\t\t\t${props =>\n\t\t\t\t\t\tprops.hasBorderline\n\t\t\t\t\t\t\t? css`\n\t\t\t\t\t\t\t\t\tborder: unset;\n\t\t\t\t\t\t\t `\n\t\t\t\t\t\t\t: css`\n\t\t\t\t\t\t\t\t\tborder: 1px solid ${vr.radioCheckboxDefault};\n\t\t\t\t\t\t\t `}\n\t\t\t\t}\n\n\t\t\t\t&::after {\n\t\t\t\t\topacity: 0;\n\t\t\t\t\ttransition: opacity ${vr.baseTransition};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:hover:not(:disabled) + label {\n\t\t\t\t&::before {\n\t\t\t\t\tborder-color: ${({ theme }) => theme.global.form.radio.active};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:focus + label {\n\t\t\t\t&::before {\n\t\t\t\t\t${mx.mimicFocus}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:disabled + label {\n\t\t\t\tcursor: default;\n\n\t\t\t\t&::before,\n\t\t\t\t&::after {\n\t\t\t\t\topacity: 0.5;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&[type='select'] {\n\t\t\t${({ hasError }) =>\n\t\t\t\thasError &&\n\t\t\t\tcss`\n\t\t\t\t\t.formBuilder__select_control {\n\t\t\t\t\t\tborder: 1px solid ${vr.formfieldErrorColor};\n\t\t\t\t\t}\n\t\t\t\t`}\n\t\t}\n\n\t\t/* Radio button */\n\t\t&[type='radio'] {\n\t\t\t+ label {\n\t\t\t\t&::before {\n\t\t\t\t\tborder-radius: 25px;\n\t\t\t\t}\n\n\t\t\t\t&::after {\n\t\t\t\t\ttop: 12px;\n\t\t\t\t\tleft: 5px;\n\t\t\t\t\theight: 10px;\n\t\t\t\t\twidth: 10px;\n\t\t\t\t\tborder-radius: 25px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:checked {\n\t\t\t\t& + label {\n\t\t\t\t\t${props =>\n\t\t\t\t\t\tprops.hasBorderline\n\t\t\t\t\t\t\t? css`\n\t\t\t\t\t\t\t\t\tborder: 1.5px solid\n\t\t\t\t\t\t\t\t\t\t${({ theme }) => theme.global.form.radio.active};\n\t\t\t\t\t\t\t `\n\t\t\t\t\t\t\t: css``}\n\n\t\t\t\t\t&::before {\n\t\t\t\t\t\tborder-color: ${({ theme }) => theme.global.form.radio.active};\n\t\t\t\t\t}\n\n\t\t\t\t\t&::after {\n\t\t\t\t\t\tbackground-color: ${({ theme }) => theme.global.form.radio.active};\n\t\t\t\t\t\topacity: ${props => (props.hasBorderline ? `0` : `1`)};\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&:disabled,\n\t\t\t\t&[readonly] {\n\t\t\t\t\t& + label {\n\t\t\t\t\t\t&::before {\n\t\t\t\t\t\t\tborder-color: ${vr.radioCheckboxDisabled};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&::after {\n\t\t\t\t\t\t\tbackground-color: ${vr.radioCheckboxDisabled};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&:disabled + label::after {\n\t\t\t\t\tbackground-color: lighten(0.2, ${vr.radioCheckboxDisabled});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/* Checkbox */\n\t\t&[type='checkbox'] {\n\t\t\t+ label {\n\t\t\t\t&::before {\n\t\t\t\t\tbackground-color: none;\n\t\t\t\t\ttransition: background-color ${vr.baseTransition};\n\t\t\t\t}\n\n\t\t\t\t&::after {\n\t\t\t\t\ttop: 10px;\n\t\t\t\t\tleft: 7px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:checked {\n\t\t\t\t& + label {\n\t\t\t\t\t&::before {\n\t\t\t\t\t\tborder-color: ${({ theme }) => theme.global.form.radio.active};\n\t\t\t\t\t\tbackground-color: ${vr.brandWhite};\n\t\t\t\t\t}\n\n\t\t\t\t\t&::after {\n\t\t\t\t\t\t${mx.tick}\n\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&:disabled,\n\t\t\t\t&[readonly] {\n\t\t\t\t\t& + label {\n\t\t\t\t\t\t&::before {\n\t\t\t\t\t\t\tbackground-color: ${vr.radioCheckboxDisabled};\n\t\t\t\t\t\t\tborder-color: ${vr.radioCheckboxDisabled};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tlabel {\n\t\tpadding-left: 12px;\n\t\tmargin: 0;\n\t\tcursor: pointer;\n\t}\n`;\n\nexport const RadioCheckboxList = styled.ul<{\n\thasError: boolean;\n\tisSwitch: boolean;\n\tisHorizontal: boolean;\n\thasBorderline: boolean;\n}>`\n\t${mx.listReset}\n\n\t> li {\n\t\tmargin-top: 0;\n\n\t\t&:only-child {\n\t\t\tmargin-left: 0;\n\t\t}\n\n\t\t&:last-of-type {\n\t\t\tmargin-bottom: 20px;\n\t\t}\n\t}\n\n\t${({ isSwitch, isHorizontal, hasBorderline, theme }) =>\n\t\t(isSwitch || isHorizontal) &&\n\t\tcss`\n\t\t\tdisplay: flex;\n\t\t\tflex-wrap: wrap;\n\n\t\t\t/* TODO does this work...? */\n\t\t\t${RadioCheckboxItem} {\n\t\t\t\t&:not(:last-child) {\n\t\t\t\t\tmargin-right: 0;\n\t\t\t\t}\n\n\t\t\t\tlabel {\n\t\t\t\t\tborder: ${hasBorderline\n\t\t\t\t\t\t? `1px solid ${theme.global.borders.faded}`\n\t\t\t\t\t\t: `none`};\n\t\t\t\t}\n\t\t\t}\n\t\t`}\n\n\t${({ isSwitch, hasError, theme }) =>\n\t\tisSwitch &&\n\t\tcss`\n\t\t\t/* To offset bottom margin of 'RadioCheckboxItem' elements */\n\t\t\tmargin-bottom: -10px;\n\n\t\t\tli {\n\t\t\t\tmin-width: 75px;\n\t\t\t}\n\n\t\t\t${RadioCheckboxItem} {\n\t\t\t\tmargin: 0 10px 10px 0;\n\n\t\t\t\t&:last-of-type input[type='radio'] + label {\n\t\t\t\t\tmargin-right: 0;\n\t\t\t\t\tborder-radius: 0 3px 3px 0;\n\t\t\t\t}\n\n\t\t\t\t&:not(:last-of-type) input[type='radio'] + label {\n\t\t\t\t\tmargin-right: -1px;\n\t\t\t\t\tborder-radius: 3px 0 0 3px;\n\t\t\t\t}\n\n\t\t\t\tinput[type='radio'] {\n\t\t\t\t\t+ label {\n\t\t\t\t\t\tposition: initial;\n\t\t\t\t\t\tpadding: 12px 16px;\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tborder: 1px solid #66696d;\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\tmin-width: 75px;\n\t\t\t\t\t\tbackground-color: ${vr.brandWhite};\n\t\t\t\t\t\tline-height: 1.4;\n\n\t\t\t\t\t\t${() =>\n\t\t\t\t\t\t\thasError &&\n\t\t\t\t\t\t\tcss`\n\t\t\t\t\t\t\t\tborder: 1px solid ${vr.formfieldErrorColor} !important;\n\t\t\t\t\t\t\t`}\n\n\t\t\t\t\t\t&::before,\n\t\t\t\t\t&::after {\n\t\t\t\t\t\t\tcontent: none;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t&:not(:checked):not(:disabled):not([readonly]) + label:hover {\n\t\t\t\t\t\tbackground-color: ${theme.global.form.radio.hover};\n\t\t\t\t\t}\n\n\t\t\t\t\t&:disabled,\n\t\t\t\t\t&[readonly] {\n\t\t\t\t\t\t+ label {\n\t\t\t\t\t\t\tbackground-color: ${vr.formfieldDisabledBackground};\n\t\t\t\t\t\t\tborder-color: ${vr.radioCheckboxDefault};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t&:checked {\n\t\t\t\t\t\t& + label {\n\t\t\t\t\t\t\tbackground-color: ${theme.global.form.radio.active};\n\t\t\t\t\t\t\tcolor: ${vr.brandWhite};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:disabled,\n\t\t\t\t\t\t&[readonly] {\n\t\t\t\t\t\t\t+ label {\n\t\t\t\t\t\t\t\tborder-color: ${vr.radioCheckboxDisabled};\n\t\t\t\t\t\t\t\tbackground-color: ${vr.radioCheckboxDisabled};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t&:focus + label {\n\t\t\t\t\t\t${mx.mimicFocus}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t`}\n`;\n\n// TODO Radio checkbox specific error styles\n// .ctrlHolder {\n// \t&.-radioCheckbox {\n// \t\tmargin-bottom: 15px;\n// \t\tdisplay: inline-block;\n// \t}\n\n// \t&.-error .o-radioCheckbox {\n// \t\t.ctrlHolder__label {\n// \t\t\tcolor: $formfield-error-color;\n// \t\t}\n\n// \t\t&.-switch .ctrlHolder__label,\n// \t\t.ctrlHolder__label::before {\n// \t\t\tborder: 2px solid $formfield-error-border-color;\n// \t\t}\n\n// \t\t&.-switch .ctrlHolder__label {\n// \t\t\tpadding: 4px 14px; // To offset new border-width\n// \t\t}\n// \t}\n// }\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport React from 'react';\nimport { uid } from 'react-uid';\n\nimport { isEqual } from 'lodash';\n\nimport { isJssField, JssTextType } from 'core/utils/sitecore-utils';\nimport Label from 'pods/forms/components/base/Label';\nimport ISharedProps from 'pods/forms/components/formFieldProps.d';\nimport UpdatedCtrlHolder from 'pods/forms/components/structural/UpdatedCtrlHolder';\n\nimport * as S from './RadioCheckbox.style';\n\n// ----------------------------------------\n// Raw form control exports\n\ninterface IRawRadioCheckboxListProps {\n\ttype?: 'radio' | 'checkbox' | 'switch';\n\tname?: string;\n\tisSwitch?: boolean;\n\tisHorizontal?: boolean;\n\tdisabled?: boolean;\n\trequired?: boolean;\n\thasError?: boolean;\n\tonChange?: (e: React.ChangeEvent) => void;\n\toptions?: {\n\t\tlabel: string | JssTextType;\n\t\tvalue: string;\n\t\tdisabled?: boolean;\n\t\tchecked?: boolean;\n\t}[];\n\tchildren: React.ReactNode;\n\thasBorderline?: boolean;\n\tisLabelHidden?: boolean;\n}\n\nexport const RawRadioCheckboxList = ({\n\ttype = 'checkbox',\n\tname,\n\tisSwitch = false,\n\tisHorizontal = false,\n\thasError = false,\n\trequired = false,\n\tdisabled = false,\n\tonChange,\n\toptions = [],\n\thasBorderline = false,\n\tchildren,\n\tisLabelHidden = false,\n}: IRawRadioCheckboxListProps) => (\n\t\n\t\t{options.map(option => {\n\t\t\tconst { value, label, disabled: optionDisabled, checked } = option;\n\t\t\tconst optionId = uid(option);\n\n\t\t\treturn (\n\t\t\t\t\n\t\t\t);\n\t\t})}\n\t\t{children}\n\t\n);\n\n// ----------------------------------------\n\ninterface IRawRadioCheckboxProps {\n\tid: string;\n\tname?: string;\n\ttype: 'radio' | 'checkbox' | 'switch';\n\tas?: string;\n\tvalue: string;\n\tlabel?: string | JssTextType;\n\tchecked?: boolean;\n\tonChange?: (e: React.ChangeEvent) => void;\n\tonBlur?: any;\n\tonKeyPress?: any;\n\trequired?: boolean;\n\tdisabled?: boolean;\n\tariaLabel?: string;\n\thasError?: boolean;\n\thasBorderline?: boolean;\n\tisLabelHidden?: boolean;\n}\n\nexport const RawRadioCheckbox = ({\n\tas: scAs,\n\ttype = 'checkbox',\n\tlabel,\n\tariaLabel,\n\thasError = false,\n\thasBorderline = false,\n\tisLabelHidden = false,\n\t...props\n}: IRawRadioCheckboxProps) => {\n\tconst customAriaLabel: string =\n\t\t// @ts-ignore: isJssField() already makes sure field is not undefined and has .value\n\t\tariaLabel ?? isJssField(label) ? label.value : label;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n// ----------------------------------------\n\nexport interface IProps extends ISharedProps {\n\ttype: 'radio' | 'checkbox' | 'switch';\n}\n\nconst RadioCheckbox = ({\n\ttype,\n\tconfig,\n\tcomputed,\n\thtmlId,\n\tpath,\n\thandleBlur,\n\thandleKeyPressFast,\n\thandleChange,\n\tvalue,\n\tgetDisplayError,\n\trenderTextNode,\n\tctrlHolderProps,\n}: IProps) => {\n\tconst { data = {} } = config;\n\tconst { disabled, required } = computed;\n\tconst { labelHelpText, horizontal, margin, options = [] } = data;\n\n\tconst label = isJssField(data.label)\n\t\t? data.label\n\t\t: renderTextNode(data.label, 'span');\n\tconst helpText = isJssField(labelHelpText)\n\t\t? labelHelpText\n\t\t: renderTextNode(labelHelpText, 'span');\n\tconst tooltip = renderTextNode(data.tooltip);\n\tconst errorMsg = getDisplayError();\n\tconst _ctrlHolderProps = {\n\t\thtmlId,\n\t\tlabel,\n\t\thelpText,\n\t\terrorMsg,\n\t\trequired,\n\t\tvalue,\n\t\tmargin,\n\t\t...(data.tooltip && { tooltip }),\n\t\t...ctrlHolderProps,\n\t};\n\n\t// ----------------------------------------\n\n\tconst _mapArrayOptions = (newValue: string, checked: boolean) => {\n\t\tlet submitValues: string | string[];\n\n\t\tif (type === 'checkbox') {\n\t\t\tsubmitValues = value ? [].concat(value) : [];\n\n\t\t\tif (checked) {\n\t\t\t\tsubmitValues.push(newValue);\n\t\t\t} else {\n\t\t\t\tsubmitValues.splice(submitValues.indexOf(newValue), 1);\n\t\t\t}\n\t\t} else {\n\t\t\tsubmitValues = [newValue];\n\t\t}\n\n\t\tif (submitValues.length === 1) {\n\t\t\tif (\n\t\t\t\ttype === 'radio' ||\n\t\t\t\ttype === 'switch' ||\n\t\t\t\t(type === 'checkbox' && options.length === 1)\n\t\t\t) {\n\t\t\t\tsubmitValues = submitValues[0];\n\t\t\t}\n\t\t} else if (submitValues.length === 0) {\n\t\t\t// Keep 'empty'/null values type consistent for checkbox/radio respectively\n\t\t\t// i.e. all checkbox output types are arrays, and radio - strings\n\t\t\tsubmitValues = type === 'checkbox' ? [] : '';\n\t\t}\n\n\t\treturn submitValues;\n\t};\n\n\tconst _handleInputOnChange = (value: string, checked: boolean) => {\n\t\tconst submitValues = _mapArrayOptions(value, checked);\n\n\t\thandleChange(submitValues);\n\t};\n\n\tconst _checkOptionChecked = (fieldValue: string) =>\n\t\tArray.isArray(value)\n\t\t\t? value.includes(fieldValue)\n\t\t\t: isEqual(fieldValue, value);\n\n\t// ----------------------------------------\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{options.map(\n\t\t\t\t\t(option: { label: string; value: string; disabled: boolean }) => {\n\t\t\t\t\t\tconst { label, value, disabled: optionDisabled } = option;\n\t\t\t\t\t\tconst id = uid(option);\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t) =>\n\t\t\t\t\t\t\t\t\t_handleInputOnChange(value, e.target.checked)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={_checkOptionChecked(value)}\n\t\t\t\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\t\t\t\tonKeyPress={handleKeyPressFast}\n\t\t\t\t\t\t\t\tdisabled={disabled ?? optionDisabled}\n\t\t\t\t\t\t\t\t{...{ label, type, value, required }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t);\n};\n\nexport default RadioCheckbox;\n","import styled, { css } from 'styled-components';\n\nimport { Icon } from 'core/components/Icon/Icon.style';\nimport * as vr from 'core/styles/variables';\n\nexport const BPAYWrapper = styled.div<{\n\tisDashboardModule: boolean;\n}>`\n\tdisplay: flex;\n\talign-items: center;\n\twidth: 100%;\n\t${({ isDashboardModule }) =>\n\t\tisDashboardModule &&\n\t\tcss`\n\t\t\t${Icon} {\n\t\t\t\tborder: 6px solid white;\n\t\t\t\tborder-radius: 6px;\n\t\t\t}\n\t\t`}\n\t${({ isDashboardModule, theme }) =>\n\t\tcss`\n\t\t\t${Icon} {\n\t\t\t\twidth: ${isDashboardModule ? '84' : '42'}px;\n\t\t\t\theight: ${isDashboardModule ? '124' : '64'}px;\n\t\t\t\tflex-shrink: 0;\n\t\t\t\tcolor: ${isDashboardModule\n\t\t\t\t\t? `${theme.core.getCompositionColor('blue-lighter')}`\n\t\t\t\t\t: `${vr.bpayLogo}`};\n\t\t\t\tbackground-color: white;\n\t\t\t}\n\t\t`}\n`;\n\nexport const BPAYInfo = styled.div`\n\tpadding-left: 16px;\n\n\t> div {\n\t\twidth: 100%;\n\t}\n`;\n","import React from 'react';\nimport isEmpty from 'lodash/isEmpty';\n\nimport * as Typo from 'core/styles/Typography';\nimport { ICONS, Icon } from 'core/components/Icon';\nimport Image from 'core/sitecore/jss-proxy-components/JssImage';\nimport { JssImageType, JssTextType } from 'core/utils/sitecore-utils';\nimport ExperienceEditorContent from 'core/sitecore/experience-editor/ExperienceEditorContent';\n\nimport * as S from './BPAYInfo.style';\n\ninterface IProps {\n\tbpayIcon?: JssImageType;\n\tbillerCode: string | number | undefined;\n\treferenceNumber: string | number | undefined;\n\tbillerCodeLabel?: JssTextType;\n\treferenceNumberLabel?: JssTextType;\n\tdataTarget?: string;\n\tisDashboardModule?: boolean;\n}\n\nconst BPAYInfo = ({\n\tbpayIcon,\n\tbillerCode,\n\treferenceNumber,\n\tbillerCodeLabel = { value: 'Biller code:' },\n\treferenceNumberLabel = { value: 'Reference:' },\n\tdataTarget = 'BPAY-info',\n\tisDashboardModule = false,\n}: IProps) => {\n\tlet icon = (\n\t\t\n\t);\n\tif (!isEmpty(bpayIcon) && !isEmpty(bpayIcon?.value)) {\n\t\ticon = ;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t{icon}\n\t\t\t\t{isDashboardModule ? (\n\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{billerCodeLabel.value}
    \n\t\t\t\t\t\t\t\t{billerCode}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{referenceNumberLabel.value}
    \n\t\t\t\t\t\t\t\t{referenceNumber}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t) : (\n\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{billerCodeLabel.value} {billerCode}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{referenceNumberLabel.value} {referenceNumber}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t)}\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default BPAYInfo;\n","/* eslint-disable react-hooks/exhaustive-deps */\n\nimport React, { useState, useEffect, useCallback } from 'react';\nimport ReactSelect, { components } from 'react-select';\nimport AsyncSelect from 'react-select/async';\n\nimport UpdatedCtrlHolder from 'pods/forms/components/structural/UpdatedCtrlHolder';\nimport { executeCallback } from 'core/utils/global-utils';\nimport { isJssField } from 'core/utils/sitecore-utils';\nimport { Icon, ICONS } from 'core/components/Icon';\nimport IProps from 'pods/forms/components/formFieldProps.d';\nimport * as Typo from 'core/styles/Typography';\n\nimport * as S from './Select.style';\n\nconst DropdownIndicator = () => ;\n\nexport type OptionType = {\n\tlabel: string;\n\tvalue: string;\n};\n\nexport interface IOptionTypeWithSubLabel extends OptionType {\n\tsubLabel?: string;\n}\n\ninterface IRawSelectProps {\n\twidth?: number;\n\tisInline?: boolean;\n\thasError?: boolean;\n\tonChange?: (value: OptionType) => void;\n\tdisabled?: boolean;\n\toptions?: OptionType[];\n\tloadOptions?: () => void;\n\tplaceholder?: string;\n\tdefaultValue?: string;\n\thtmlId?: string;\n\thasOptionLabel?: boolean;\n\toptionLabelStartText?: string;\n\tisLoading?: boolean;\n\tisMenuPortal?: boolean;\n}\n\nfunction OptionComponent({ ...props }: any) {\n\tconst subLabelText = `${props.selectProps.optionLabelStartText ?? ''} ${props\n\t\t.data.subLabel ?? undefined}`;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{props.data.label}\n\t\t\t\t{subLabelText}\n\t\t\t\n\t\t\n\t);\n}\n\nexport const RawSelect = ({\n\twidth,\n\tisInline = false,\n\thasError = false,\n\tonChange,\n\tdisabled = false,\n\toptions,\n\tplaceholder = 'Select...',\n\tdefaultValue,\n\thtmlId,\n\thasOptionLabel,\n\toptionLabelStartText,\n\tisLoading,\n\tisMenuPortal = false,\n}: Omit) => {\n\tconst [selectedOption, setSelectedOption] = useState(\n\t\t// Set the initial value\n\t\toptions?.find(item => item.value === defaultValue) ?? null,\n\t);\n\n\tconst _handleChange = useCallback(\n\t\t(option: OptionType) => {\n\t\t\tsetSelectedOption(option);\n\t\t\texecuteCallback(onChange, option);\n\t\t},\n\t\t[onChange],\n\t);\n\n\tuseEffect(() => {\n\t\tif (!defaultValue) {\n\t\t\t// Reset selected state if the default value change to undefined\n\t\t\tsetSelectedOption(null);\n\t\t} else {\n\t\t\tconst value = options?.find(item => item.value === defaultValue) ?? null;\n\t\t\tif (value) {\n\t\t\t\t_handleChange(value);\n\t\t\t}\n\t\t}\n\t}, [defaultValue]);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nconst SelectAsync = ({\n\twidth,\n\tisInline = false,\n\thasError = false,\n\tonChange,\n\tdisabled = false,\n\tloadOptions,\n\tplaceholder = 'Select...',\n\tdefaultValue,\n\tisMenuPortal = false,\n}: Omit) => {\n\tconst [selectedOption, setSelectedOption] = useState(\n\t\t// Set the initial value\n\t\tnull,\n\t);\n\n\tconst _handleChange = useCallback(\n\t\t(option: OptionType) => {\n\t\t\tsetSelectedOption(option);\n\t\t\texecuteCallback(onChange, option);\n\t\t},\n\t\t[onChange],\n\t);\n\n\tuseEffect(() => {\n\t\tif (!defaultValue) {\n\t\t\t// Reset selected state if the default value change to undefined\n\t\t\tsetSelectedOption(null);\n\t\t}\n\t}, [defaultValue]);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nconst SelectComponent = ({\n\tconfig,\n\tcomputed,\n\thtmlId,\n\tvalue,\n\thandleChange,\n\tgetDisplayError,\n\trenderTextNode,\n\tctrlHolderProps,\n}: IProps) => {\n\tconst { data = {}, appendMsg, bottomMsg } = config;\n\tconst {\n\t\toptions,\n\t\tloadOptions,\n\t\tlabelHelpText,\n\t\tinputAttrs = {},\n\t\tisMenuPortal,\n\t\thasOptionLabel,\n\t\toptionLabelStartText,\n\t\thandleChangeFromConfig,\n\t} = data;\n\n\tconst label = isJssField(data.label)\n\t\t? data.label\n\t\t: renderTextNode(data.label, 'span');\n\tconst helpText = isJssField(labelHelpText)\n\t\t? labelHelpText\n\t\t: renderTextNode(labelHelpText, 'span');\n\tconst tooltip = renderTextNode(data.tooltip);\n\tconst errorMsg = getDisplayError();\n\tconst hasError = !!errorMsg;\n\tconst { required, disabled } = computed;\n\t// use label value if placeholder is not provided\n\tconst placeholder = data.placeholder ?? data.label?.value ?? data.label;\n\n\tconst _ctrlHolderProps = {\n\t\thtmlId,\n\t\tlabel,\n\t\thelpText,\n\t\terrorMsg,\n\t\trequired,\n\t\tappendMsg,\n\t\tvalue,\n\t\tdisabled,\n\t\tbottomMsg,\n\t\ttype: inputAttrs?.type,\n\t\tfullWidth: data.fullWidth,\n\t\t...(data.tooltip && { tooltip }),\n\t\t...ctrlHolderProps,\n\t};\n\n\tconst Component = data.async ? SelectAsync : RawSelect;\n\tconst selectOptions = data.async ? { loadOptions } : { options };\n\n\treturn (\n\t\t\n\t\t\t {\n\t\t\t\t\thandleChange(selectedOption.value);\n\t\t\t\t\thandleChangeFromConfig?.(selectedOption);\n\t\t\t\t}}\n\t\t\t\tdefaultValue={value}\n\t\t\t\t{...selectOptions}\n\t\t\t\t{...{\n\t\t\t\t\tdisabled,\n\t\t\t\t\thasError,\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tvalue,\n\t\t\t\t\thtmlId,\n\t\t\t\t\tisMenuPortal,\n\t\t\t\t\thasOptionLabel,\n\t\t\t\t\toptionLabelStartText,\n\t\t\t\t}}\n\t\t\t/>\n\t\t\n\t);\n};\n\nexport default SelectComponent;\n","import styled, { css, keyframes } from 'styled-components';\n\nimport * as mx from 'core/styles/mixins';\nimport * as vr from 'core/styles/variables';\n\nimport { Icon } from 'core/components/Icon/Icon.style';\nimport { Label } from 'pods/forms/components/base/Label/Label.style';\n\nconst spin = keyframes`\n 0% {\n\ttransform:rotate(0deg);\n }\n 100% {\n transform:rotate(360deg);\n }\n`;\n\nexport const LoadingMessage = (styled.div as any)`\n\tmargin-top: 5px;\n\tcolor: ${({ theme }: any) => theme.global.typography.colors.subdued}\n\tfont-size: ${vr.formfieldErrorMessageFontSize};\n\tdisplay: flex;\n\talign-items: center;\n`;\n\nexport const SpinningCheckIcon = (styled.div as any)`\n\tdisplay: flex;\n\n\t${Icon} {\n\t\tmargin-right: 4px;\n\t\tanimation: ${spin} 2s linear infinite;\n\t\tcolor: ${({ theme }: any) => theme.global.typography.colors.subdued};\n\t}\n`;\n\nexport const ErrorMessage = styled.div`\n\tmargin-top: 5px;\n\tcolor: ${vr.formfieldErrorColor};\n\tfont-size: ${vr.formfieldErrorMessageFontSize};\n\tdisplay: flex;\n\talign-items: center;\n\n\t& > i {\n\t\tmargin-right: 4px;\n\t}\n\n\t/* This gives the error message container some invisible content when the\n\terror message un-renders, making for a smoother closing animation of */\n\t&::after {\n\t\tcontent: '-';\n\t\tfont-size: inherit;\n\t\tcolor: transparent;\n\t}\n`;\n\nexport const SuccessMessage = styled.div`\n\tmargin-top: 5px;\n\tcolor: green;\n\tfont-size: ${vr.formfieldErrorMessageFontSize};\n\tdisplay: flex;\n\talign-items: center;\n\n\t& > i {\n\t\tmargin-right: 4px;\n\t}\n\n\t/* This gives the error message container some invisible content when the\n\terror message un-renders, making for a smoother closing animation of */\n\t&::after {\n\t\tcontent: '-';\n\t\tfont-size: inherit;\n\t\tcolor: transparent;\n\t}\n`;\n\nexport const HelpText = styled.span`\n\tmargin-top: 12px;\n\tfont-size: ${vr.formfieldHelpTextFontSize};\n\tdisplay: block;\n`;\n\nexport const LabelContents = styled.div``;\n\nexport const FieldContents = styled.div`\n\tflex-grow: 1;\n`;\n\nexport const Field = styled.div<{\n\thasAppendMsg: boolean;\n}>`\n\t${({ hasAppendMsg }) =>\n\t\t!!hasAppendMsg &&\n\t\tcss`\n\t\t\tmargin: 0 0 20px 0;\n\n\t\t\t${mx.bp('s')`\n\t\t\t\twidth: 200px;\n\t\t\t\tmargin: 0 30px 0 0;\n\t\t\t\tdisplay: inline-block;\n\t\t\t`}\n\t\t`}\n`;\n\nexport const CtrlHolder = styled.div<{\n\thasError: boolean;\n\tnoMargin: boolean;\n}>`\n\tmargin: ${({ noMargin }) => (noMargin ? 0 : vr.formCtrlHolderSpacing)} 0;\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&:first-of-type {\n\t\tmargin-top: 0;\n\t}\n\n\t${({ hasError }) =>\n\t\thasError &&\n\t\tcss`\n\t\t\t${Label} {\n\t\t\t\tcolor: ${vr.formfieldErrorColor};\n\t\t\t}\n\t\t`}\n`;\n\nexport const BottomMessage = styled.div`\n\tmargin-top: 8px;\n\tfont-size: ${vr.formfieldHelpTextFontSize};\n\tcolor: ${vr.formfieldLabelOptionalColor};\n`;\n","export const SEARCH_RESULTS_MAX_DISPLAY = 5;\nexport const SEARCH_TEXT_TRIGGER_LENGTH = 5;\n\nexport const MANUAL_ADDRESS = 'manual_address';\nexport const E04_CONTENT = `Sorry. We couldn't find your addres`;\nexport const E05_CONTENT = `Enter address manually`;\nexport const SB_FAIL = 'address_fail';\n\nexport const MANUAL_OPTION = {\n\tvalue: MANUAL_ADDRESS,\n\tlabel: E05_CONTENT,\n};\n","export const MANUAL_VALUE = 'manual_fund';\nexport const MANUAL_LABEL = `Can't find fund? Enter manually`;\n\nexport const MANUAL_FUND_OPTION = {\n\tvalue: MANUAL_VALUE,\n\tlabel: MANUAL_LABEL,\n};\n\nexport const SB_FAIL = 'fail';\n","import styled from 'styled-components';\n\nexport const Wrapper = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\ttext-align: center;\n\tpadding: 48px;\n`;\n","/* eslint-disable react/no-array-index-key */\n\nimport React from 'react';\n\nimport TrackLinksWithin from 'core/analytics/TrackLinksWithin';\nimport { TTargetLinksCallback } from 'core/analytics/TrackLinksWithin/TrackLinksWithin';\nimport Image from 'core/sitecore/jss-proxy-components/JssImage';\nimport * as Typo from 'core/styles/Typography';\nimport {\n\tJssImageType,\n\tJssLinkType,\n\tJssTextType,\n} from 'core/utils/sitecore-utils';\nimport CtaContainer from 'core/components/CtaContainer';\nimport Cta from 'core/components/Cta';\n\nimport * as S from './MessageBlock.style';\n\n// Note: From Typo component\ntype TTextAlign =\n\t| 'center'\n\t| 'end'\n\t| 'justify'\n\t| 'left'\n\t| 'match-parent'\n\t| 'right'\n\t| 'start';\n\ninterface IMessageBlock {\n\ticon: JssImageType;\n\ttitle: JssTextType;\n\tsubTitle: JssTextType;\n\tdownloadText?: JssTextType;\n\tbuttonLink: JssLinkType;\n\theadingAlign?: TTextAlign;\n\tbodyAlign?: TTextAlign;\n\tonButtonLinkClick?: () => void;\n\tonSubtitleClick?: () => void;\n\ttargetLinks?: TTargetLinksCallback;\n\tisGreenId?: boolean;\n}\n\nconst MessageBlock = ({\n\ticon,\n\ttitle,\n\tsubTitle,\n\tbuttonLink,\n\theadingAlign = 'center',\n\tbodyAlign = 'center',\n\tonButtonLinkClick,\n\ttargetLinks,\n\tisGreenId,\n}: IMessageBlock) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t{targetLinks ? (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t\n\t\t\t)}\n\n\t\t\t\n\t\t\t\t{isGreenId ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t) : (\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t);\n};\n\nexport default MessageBlock;\n","import React, { createFactory, Component, createElement } from 'react';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport shallowEqual from 'fbjs/lib/shallowEqual';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { polyfill } from 'react-lifecycles-compat';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { createChangeEmitter } from 'change-emitter';\nimport $$observable from 'symbol-observable';\n\nvar setStatic = function setStatic(key, value) {\n return function (BaseComponent) {\n /* eslint-disable no-param-reassign */\n BaseComponent[key] = value;\n /* eslint-enable no-param-reassign */\n\n return BaseComponent;\n };\n};\n\nvar setDisplayName = function setDisplayName(displayName) {\n return setStatic('displayName', displayName);\n};\n\nvar getDisplayName = function getDisplayName(Component$$1) {\n if (typeof Component$$1 === 'string') {\n return Component$$1;\n }\n\n if (!Component$$1) {\n return undefined;\n }\n\n return Component$$1.displayName || Component$$1.name || 'Component';\n};\n\nvar wrapDisplayName = function wrapDisplayName(BaseComponent, hocName) {\n return hocName + \"(\" + getDisplayName(BaseComponent) + \")\";\n};\n\nvar mapProps = function mapProps(propsMapper) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var MapProps = function MapProps(props) {\n return factory(propsMapper(props));\n };\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'mapProps'))(MapProps);\n }\n\n return MapProps;\n };\n};\n\nvar withProps = function withProps(input) {\n var hoc = mapProps(function (props) {\n return _extends({}, props, typeof input === 'function' ? input(props) : input);\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withProps'))(hoc(BaseComponent));\n };\n }\n\n return hoc;\n};\n\nvar pick = function pick(obj, keys) {\n var result = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (obj.hasOwnProperty(key)) {\n result[key] = obj[key];\n }\n }\n\n return result;\n};\n\nvar withPropsOnChange = function withPropsOnChange(shouldMapOrKeys, propsMapper) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n var shouldMap = typeof shouldMapOrKeys === 'function' ? shouldMapOrKeys : function (props, nextProps) {\n return !shallowEqual(pick(props, shouldMapOrKeys), pick(nextProps, shouldMapOrKeys));\n };\n\n var WithPropsOnChange =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithPropsOnChange, _Component);\n\n function WithPropsOnChange() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n computedProps: propsMapper(_this.props),\n prevProps: _this.props\n };\n return _this;\n }\n\n WithPropsOnChange.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n if (shouldMap(prevState.prevProps, nextProps)) {\n return {\n computedProps: propsMapper(nextProps),\n prevProps: nextProps\n };\n }\n\n return {\n prevProps: nextProps\n };\n };\n\n var _proto = WithPropsOnChange.prototype;\n\n _proto.render = function render() {\n return factory(_extends({}, this.props, this.state.computedProps));\n };\n\n return WithPropsOnChange;\n }(Component);\n\n polyfill(WithPropsOnChange);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withPropsOnChange'))(WithPropsOnChange);\n }\n\n return WithPropsOnChange;\n };\n};\n\nvar mapValues = function mapValues(obj, func) {\n var result = {};\n /* eslint-disable no-restricted-syntax */\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n result[key] = func(obj[key], key);\n }\n }\n /* eslint-enable no-restricted-syntax */\n\n\n return result;\n};\n\nvar withHandlers = function withHandlers(handlers) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithHandlers =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithHandlers, _Component);\n\n function WithHandlers() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(_args)) || this;\n _this.handlers = mapValues(typeof handlers === 'function' ? handlers(_this.props) : handlers, function (createHandler) {\n return function () {\n var handler = createHandler(_this.props);\n\n if (process.env.NODE_ENV !== 'production' && typeof handler !== 'function') {\n console.error( // eslint-disable-line no-console\n 'withHandlers(): Expected a map of higher-order functions. ' + 'Refer to the docs for more info.');\n }\n\n return handler.apply(void 0, arguments);\n };\n });\n return _this;\n }\n\n var _proto = WithHandlers.prototype;\n\n _proto.render = function render() {\n return factory(_extends({}, this.props, this.handlers));\n };\n\n return WithHandlers;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withHandlers'))(WithHandlers);\n }\n\n return WithHandlers;\n };\n};\n\nvar defaultProps = function defaultProps(props) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var DefaultProps = function DefaultProps(ownerProps) {\n return factory(ownerProps);\n };\n\n DefaultProps.defaultProps = props;\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'defaultProps'))(DefaultProps);\n }\n\n return DefaultProps;\n };\n};\n\nvar omit = function omit(obj, keys) {\n var rest = _extends({}, obj);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (rest.hasOwnProperty(key)) {\n delete rest[key];\n }\n }\n\n return rest;\n};\n\nvar renameProp = function renameProp(oldName, newName) {\n var hoc = mapProps(function (props) {\n var _extends2;\n\n return _extends({}, omit(props, [oldName]), (_extends2 = {}, _extends2[newName] = props[oldName], _extends2));\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'renameProp'))(hoc(BaseComponent));\n };\n }\n\n return hoc;\n};\n\nvar keys = Object.keys;\n\nvar mapKeys = function mapKeys(obj, func) {\n return keys(obj).reduce(function (result, key) {\n var val = obj[key];\n /* eslint-disable no-param-reassign */\n\n result[func(val, key)] = val;\n /* eslint-enable no-param-reassign */\n\n return result;\n }, {});\n};\n\nvar renameProps = function renameProps(nameMap) {\n var hoc = mapProps(function (props) {\n return _extends({}, omit(props, keys(nameMap)), mapKeys(pick(props, keys(nameMap)), function (_, oldName) {\n return nameMap[oldName];\n }));\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'renameProps'))(hoc(BaseComponent));\n };\n }\n\n return hoc;\n};\n\nvar flattenProp = function flattenProp(propName) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var FlattenProp = function FlattenProp(props) {\n return factory(_extends({}, props, props[propName]));\n };\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'flattenProp'))(FlattenProp);\n }\n\n return FlattenProp;\n };\n};\n\nvar withState = function withState(stateName, stateUpdaterName, initialState) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithState =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithState, _Component);\n\n function WithState() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n stateValue: typeof initialState === 'function' ? initialState(_this.props) : initialState\n };\n\n _this.updateStateValue = function (updateFn, callback) {\n return _this.setState(function (_ref) {\n var stateValue = _ref.stateValue;\n return {\n stateValue: typeof updateFn === 'function' ? updateFn(stateValue) : updateFn\n };\n }, callback);\n };\n\n return _this;\n }\n\n var _proto = WithState.prototype;\n\n _proto.render = function render() {\n var _extends2;\n\n return factory(_extends({}, this.props, (_extends2 = {}, _extends2[stateName] = this.state.stateValue, _extends2[stateUpdaterName] = this.updateStateValue, _extends2)));\n };\n\n return WithState;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withState'))(WithState);\n }\n\n return WithState;\n };\n};\n\nvar withStateHandlers = function withStateHandlers(initialState, stateUpdaters) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithStateHandlers =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithStateHandlers, _Component);\n\n function WithStateHandlers() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(_args)) || this;\n _this.state = typeof initialState === 'function' ? initialState(_this.props) : initialState;\n _this.stateUpdaters = mapValues(stateUpdaters, function (handler) {\n return function (mayBeEvent) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n // Having that functional form of setState can be called async\n // we need to persist SyntheticEvent\n if (mayBeEvent && typeof mayBeEvent.persist === 'function') {\n mayBeEvent.persist();\n }\n\n _this.setState(function (state, props) {\n return handler(state, props).apply(void 0, [mayBeEvent].concat(args));\n });\n };\n });\n return _this;\n }\n\n var _proto = WithStateHandlers.prototype;\n\n _proto.render = function render() {\n return factory(_extends({}, this.props, this.state, this.stateUpdaters));\n };\n\n return WithStateHandlers;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withStateHandlers'))(WithStateHandlers);\n }\n\n return WithStateHandlers;\n };\n};\n\nvar noop = function noop() {};\n\nvar withReducer = function withReducer(stateName, dispatchName, reducer, initialState) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithReducer =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithReducer, _Component);\n\n function WithReducer() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n stateValue: _this.initializeStateValue()\n };\n\n _this.dispatch = function (action, callback) {\n if (callback === void 0) {\n callback = noop;\n }\n\n return _this.setState(function (_ref) {\n var stateValue = _ref.stateValue;\n return {\n stateValue: reducer(stateValue, action)\n };\n }, function () {\n return callback(_this.state.stateValue);\n });\n };\n\n return _this;\n }\n\n var _proto = WithReducer.prototype;\n\n _proto.initializeStateValue = function initializeStateValue() {\n if (initialState !== undefined) {\n return typeof initialState === 'function' ? initialState(this.props) : initialState;\n }\n\n return reducer(undefined, {\n type: '@@recompose/INIT'\n });\n };\n\n _proto.render = function render() {\n var _extends2;\n\n return factory(_extends({}, this.props, (_extends2 = {}, _extends2[stateName] = this.state.stateValue, _extends2[dispatchName] = this.dispatch, _extends2)));\n };\n\n return WithReducer;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withReducer'))(WithReducer);\n }\n\n return WithReducer;\n };\n};\n\nvar identity = function identity(Component$$1) {\n return Component$$1;\n};\n\nvar branch = function branch(test, left, right) {\n if (right === void 0) {\n right = identity;\n }\n\n return function (BaseComponent) {\n var leftFactory;\n var rightFactory;\n\n var Branch = function Branch(props) {\n if (test(props)) {\n leftFactory = leftFactory || createFactory(left(BaseComponent));\n return leftFactory(props);\n }\n\n rightFactory = rightFactory || createFactory(right(BaseComponent));\n return rightFactory(props);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'branch'))(Branch);\n }\n\n return Branch;\n };\n};\n\nvar renderComponent = function renderComponent(Component$$1) {\n return function (_) {\n var factory = createFactory(Component$$1);\n\n var RenderComponent = function RenderComponent(props) {\n return factory(props);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n RenderComponent.displayName = wrapDisplayName(Component$$1, 'renderComponent');\n }\n\n return RenderComponent;\n };\n};\n\nvar Nothing =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(Nothing, _Component);\n\n function Nothing() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = Nothing.prototype;\n\n _proto.render = function render() {\n return null;\n };\n\n return Nothing;\n}(Component);\n\nvar renderNothing = function renderNothing(_) {\n return Nothing;\n};\n\nvar shouldUpdate = function shouldUpdate(test) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var ShouldUpdate =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(ShouldUpdate, _Component);\n\n function ShouldUpdate() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = ShouldUpdate.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return test(this.props, nextProps);\n };\n\n _proto.render = function render() {\n return factory(this.props);\n };\n\n return ShouldUpdate;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'shouldUpdate'))(ShouldUpdate);\n }\n\n return ShouldUpdate;\n };\n};\n\nvar pure = function pure(BaseComponent) {\n var hoc = shouldUpdate(function (props, nextProps) {\n return !shallowEqual(props, nextProps);\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'pure'))(hoc(BaseComponent));\n }\n\n return hoc(BaseComponent);\n};\n\nvar onlyUpdateForKeys = function onlyUpdateForKeys(propKeys) {\n var hoc = shouldUpdate(function (props, nextProps) {\n return !shallowEqual(pick(nextProps, propKeys), pick(props, propKeys));\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'onlyUpdateForKeys'))(hoc(BaseComponent));\n };\n }\n\n return hoc;\n};\n\nvar onlyUpdateForPropTypes = function onlyUpdateForPropTypes(BaseComponent) {\n var propTypes = BaseComponent.propTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!propTypes) {\n /* eslint-disable */\n console.error('A component without any `propTypes` was passed to ' + '`onlyUpdateForPropTypes()`. Check the implementation of the ' + (\"component with display name \\\"\" + getDisplayName(BaseComponent) + \"\\\".\"));\n /* eslint-enable */\n }\n }\n\n var propKeys = Object.keys(propTypes || {});\n var OnlyUpdateForPropTypes = onlyUpdateForKeys(propKeys)(BaseComponent);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'onlyUpdateForPropTypes'))(OnlyUpdateForPropTypes);\n }\n\n return OnlyUpdateForPropTypes;\n};\n\nvar withContext = function withContext(childContextTypes, getChildContext) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithContext =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithContext, _Component);\n\n function WithContext() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.getChildContext = function () {\n return getChildContext(_this.props);\n };\n\n return _this;\n }\n\n var _proto = WithContext.prototype;\n\n _proto.render = function render() {\n return factory(this.props);\n };\n\n return WithContext;\n }(Component);\n\n WithContext.childContextTypes = childContextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withContext'))(WithContext);\n }\n\n return WithContext;\n };\n};\n\nvar getContext = function getContext(contextTypes) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var GetContext = function GetContext(ownerProps, context) {\n return factory(_extends({}, ownerProps, context));\n };\n\n GetContext.contextTypes = contextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'getContext'))(GetContext);\n }\n\n return GetContext;\n };\n};\n\nvar lifecycle = function lifecycle(spec) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n if (process.env.NODE_ENV !== 'production' && spec.hasOwnProperty('render')) {\n console.error('lifecycle() does not support the render method; its behavior is to ' + 'pass all props and state to the base component.');\n }\n\n var Lifecycle =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Lifecycle, _Component);\n\n function Lifecycle() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = Lifecycle.prototype;\n\n _proto.render = function render() {\n return factory(_extends({}, this.props, this.state));\n };\n\n return Lifecycle;\n }(Component);\n\n Object.keys(spec).forEach(function (hook) {\n return Lifecycle.prototype[hook] = spec[hook];\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'lifecycle'))(Lifecycle);\n }\n\n return Lifecycle;\n };\n};\n\nvar isClassComponent = function isClassComponent(Component$$1) {\n return Boolean(Component$$1 && Component$$1.prototype && typeof Component$$1.prototype.render === 'function');\n};\n\nvar toClass = function toClass(baseComponent) {\n var _class, _temp;\n\n return isClassComponent(baseComponent) ? baseComponent : (_temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(ToClass, _Component);\n\n function ToClass() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = ToClass.prototype;\n\n _proto.render = function render() {\n if (typeof baseComponent === 'string') {\n return React.createElement(baseComponent, this.props);\n }\n\n return baseComponent(this.props, this.context);\n };\n\n return ToClass;\n }(Component), _class.displayName = getDisplayName(baseComponent), _class.propTypes = baseComponent.propTypes, _class.contextTypes = baseComponent.contextTypes, _class.defaultProps = baseComponent.defaultProps, _temp);\n};\n\nfunction toRenderProps(hoc) {\n var RenderPropsComponent = function RenderPropsComponent(props) {\n return props.children(props);\n };\n\n return hoc(RenderPropsComponent);\n}\n\nvar fromRenderProps = function fromRenderProps(RenderPropsComponent, propsMapper, renderPropName) {\n if (renderPropName === void 0) {\n renderPropName = 'children';\n }\n\n return function (BaseComponent) {\n var baseFactory = React.createFactory(BaseComponent);\n var renderPropsFactory = React.createFactory(RenderPropsComponent);\n\n var FromRenderProps = function FromRenderProps(ownerProps) {\n var _renderPropsFactory;\n\n return renderPropsFactory((_renderPropsFactory = {}, _renderPropsFactory[renderPropName] = function () {\n return baseFactory(_extends({}, ownerProps, propsMapper.apply(void 0, arguments)));\n }, _renderPropsFactory));\n };\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'fromRenderProps'))(FromRenderProps);\n }\n\n return FromRenderProps;\n };\n};\n\nvar setPropTypes = function setPropTypes(propTypes) {\n return setStatic('propTypes', propTypes);\n};\n\nvar compose = function compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n }, function (arg) {\n return arg;\n });\n};\n\nvar createSink = function createSink(callback) {\n var Sink =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Sink, _Component);\n\n function Sink() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {};\n return _this;\n }\n\n Sink.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) {\n callback(nextProps);\n return null;\n };\n\n var _proto = Sink.prototype;\n\n _proto.render = function render() {\n return null;\n };\n\n return Sink;\n }(Component);\n\n polyfill(Sink);\n return Sink;\n};\n\nvar componentFromProp = function componentFromProp(propName) {\n var Component$$1 = function Component$$1(props) {\n return createElement(props[propName], omit(props, [propName]));\n };\n\n Component$$1.displayName = \"componentFromProp(\" + propName + \")\";\n return Component$$1;\n};\n\nvar nest = function nest() {\n for (var _len = arguments.length, Components = new Array(_len), _key = 0; _key < _len; _key++) {\n Components[_key] = arguments[_key];\n }\n\n var factories = Components.map(createFactory);\n\n var Nest = function Nest(_ref) {\n var children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, [\"children\"]);\n\n return factories.reduceRight(function (child, factory) {\n return factory(props, child);\n }, children);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n var displayNames = Components.map(getDisplayName);\n Nest.displayName = \"nest(\" + displayNames.join(', ') + \")\";\n }\n\n return Nest;\n};\n\nvar hoistStatics = function hoistStatics(higherOrderComponent, blacklist) {\n return function (BaseComponent) {\n var NewComponent = higherOrderComponent(BaseComponent);\n hoistNonReactStatics(NewComponent, BaseComponent, blacklist);\n return NewComponent;\n };\n};\n\nvar _config = {\n fromESObservable: null,\n toESObservable: null\n};\n\nvar configureObservable = function configureObservable(c) {\n _config = c;\n};\n\nvar config = {\n fromESObservable: function fromESObservable(observable) {\n return typeof _config.fromESObservable === 'function' ? _config.fromESObservable(observable) : observable;\n },\n toESObservable: function toESObservable(stream) {\n return typeof _config.toESObservable === 'function' ? _config.toESObservable(stream) : stream;\n }\n};\n\nvar componentFromStreamWithConfig = function componentFromStreamWithConfig(config$$1) {\n return function (propsToVdom) {\n return (\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(ComponentFromStream, _Component);\n\n function ComponentFromStream() {\n var _config$fromESObserva;\n\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n vdom: null\n };\n _this.propsEmitter = createChangeEmitter();\n _this.props$ = config$$1.fromESObservable((_config$fromESObserva = {\n subscribe: function subscribe(observer) {\n var unsubscribe = _this.propsEmitter.listen(function (props) {\n if (props) {\n observer.next(props);\n } else {\n observer.complete();\n }\n });\n\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _config$fromESObserva[$$observable] = function () {\n return this;\n }, _config$fromESObserva));\n _this.vdom$ = config$$1.toESObservable(propsToVdom(_this.props$));\n return _this;\n }\n\n var _proto = ComponentFromStream.prototype;\n\n _proto.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n // Subscribe to child prop changes so we know when to re-render\n this.subscription = this.vdom$.subscribe({\n next: function next(vdom) {\n _this2.setState({\n vdom: vdom\n });\n }\n });\n this.propsEmitter.emit(this.props);\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n // Receive new props from the owner\n this.propsEmitter.emit(nextProps);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n return nextState.vdom !== this.state.vdom;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Call without arguments to complete stream\n this.propsEmitter.emit(); // Clean-up subscription before un-mounting\n\n this.subscription.unsubscribe();\n };\n\n _proto.render = function render() {\n return this.state.vdom;\n };\n\n return ComponentFromStream;\n }(Component)\n );\n };\n};\n\nvar componentFromStream = function componentFromStream(propsToVdom) {\n return componentFromStreamWithConfig(config)(propsToVdom);\n};\n\nvar identity$1 = function identity(t) {\n return t;\n};\n\nvar mapPropsStreamWithConfig = function mapPropsStreamWithConfig(config$$1) {\n var componentFromStream$$1 = componentFromStreamWithConfig({\n fromESObservable: identity$1,\n toESObservable: identity$1\n });\n return function (transform) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n var fromESObservable = config$$1.fromESObservable,\n toESObservable = config$$1.toESObservable;\n return componentFromStream$$1(function (props$) {\n var _ref;\n\n return _ref = {\n subscribe: function subscribe(observer) {\n var subscription = toESObservable(transform(fromESObservable(props$))).subscribe({\n next: function next(childProps) {\n return observer.next(factory(childProps));\n }\n });\n return {\n unsubscribe: function unsubscribe() {\n return subscription.unsubscribe();\n }\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n });\n };\n };\n};\n\nvar mapPropsStream = function mapPropsStream(transform) {\n var hoc = mapPropsStreamWithConfig(config)(transform);\n\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'mapPropsStream'))(hoc(BaseComponent));\n };\n }\n\n return hoc;\n};\n\nvar createEventHandlerWithConfig = function createEventHandlerWithConfig(config$$1) {\n return function () {\n var _config$fromESObserva;\n\n var emitter = createChangeEmitter();\n var stream = config$$1.fromESObservable((_config$fromESObserva = {\n subscribe: function subscribe(observer) {\n var unsubscribe = emitter.listen(function (value) {\n return observer.next(value);\n });\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _config$fromESObserva[$$observable] = function () {\n return this;\n }, _config$fromESObserva));\n return {\n handler: emitter.emit,\n stream: stream\n };\n };\n};\nvar createEventHandler = createEventHandlerWithConfig(config);\n\n// Higher-order component helpers\n\nexport { mapProps, withProps, withPropsOnChange, withHandlers, defaultProps, renameProp, renameProps, flattenProp, withState, withStateHandlers, withReducer, branch, renderComponent, renderNothing, shouldUpdate, pure, onlyUpdateForKeys, onlyUpdateForPropTypes, withContext, getContext, lifecycle, toClass, toRenderProps, fromRenderProps, setStatic, setPropTypes, setDisplayName, compose, getDisplayName, wrapDisplayName, shallowEqual, isClassComponent, createSink, componentFromProp, nest, hoistStatics, componentFromStream, componentFromStreamWithConfig, mapPropsStream, mapPropsStreamWithConfig, createEventHandler, createEventHandlerWithConfig, configureObservable as setObservableConfig };\n","import styled, { css } from 'styled-components';\n\nimport {\n\tPRIMARY,\n\tSECONDARY,\n} from 'core/sitecore/experience-editor/ExperienceEditorContent/ExperienceEditorContent.style';\nimport * as mx from 'core/styles/mixins';\n\nimport { PositionType } from './ExperienceEditorMessage';\n\nconst DEFUALT_OFFSET = '-10px';\n\nexport const Message = styled.div<{\n\tposition: PositionType;\n\tmargin?: string;\n}>`\n\t${mx.circle('22px')}\n\tbackground-color: ${PRIMARY};\n\tcolor: ${SECONDARY};\n\tcursor: help;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\t${({ margin }) =>\n\t\tmargin &&\n\t\tcss`\n\t\t\tmargin: ${margin};\n\t\t`}\n\n\t${({ position }) =>\n\t\tposition !== 'inline' && position !== 'block'\n\t\t\t? css`\n\t\t\t\t\tposition: absolute;\n\n\t\t\t\t\t${() => {\n\t\t\t\t\t\tswitch (position) {\n\t\t\t\t\t\t\tcase 'top-right':\n\t\t\t\t\t\t\t\treturn css`\n\t\t\t\t\t\t\t\t\ttop: ${DEFUALT_OFFSET};\n\t\t\t\t\t\t\t\t\tright: ${DEFUALT_OFFSET};\n\t\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t\tcase 'top-left':\n\t\t\t\t\t\t\t\treturn css`\n\t\t\t\t\t\t\t\t\ttop: ${DEFUALT_OFFSET};\n\t\t\t\t\t\t\t\t\tleft: ${DEFUALT_OFFSET};\n\t\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t\tcase 'bottom-left':\n\t\t\t\t\t\t\t\treturn css`\n\t\t\t\t\t\t\t\t\tbottom: ${DEFUALT_OFFSET};\n\t\t\t\t\t\t\t\t\tleft: ${DEFUALT_OFFSET};\n\t\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t\tcase 'bottom-right':\n\t\t\t\t\t\t\t\treturn css`\n\t\t\t\t\t\t\t\t\tbottom: ${DEFUALT_OFFSET};\n\t\t\t\t\t\t\t\t\tright: ${DEFUALT_OFFSET};\n\t\t\t\t\t\t\t\t`;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\treturn css`\n\t\t\t\t\t\t\t\t\ttop: ${position?.top};\n\t\t\t\t\t\t\t\t\tright: ${position?.right};\n\t\t\t\t\t\t\t\t\tbottom: ${position?.bottom};\n\t\t\t\t\t\t\t\t\tleft: ${position?.left};\n\t\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t `\n\t\t\t: position === 'inline'\n\t\t\t? css`\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t `\n\t\t\t: null}\n`;\n","/**\n * A flexible tooltip-like message for conveying a message to\n * content authors in Sitecore's Experience Editor. Very flexible\n * with how it can be positions so as to \"tag\" something with a note.\n *\n * For example, if a feature is disabled in the Experience Editor (like\n * the LivePerson click-to-chat, for example), this component could\n * be used to communicate that for further clarity.\n */\n\nimport React from 'react';\n\nimport ExperienceEditorContext from 'core/sitecore/ExperienceEditorContext';\nimport { Icon, ICONS } from 'core/components/Icon';\n\nimport * as S from './ExperienceEditorMessage.style';\n\ntype ManualPositionType = {\n\ttop?: string;\n\tleft?: string;\n\tright?: string;\n\tbottom?: string;\n};\n\nexport type PositionType =\n\t| 'inline'\n\t| 'block'\n\t| 'top-right'\n\t| 'top-left'\n\t| 'bottom-right'\n\t| 'bottom-left'\n\t| ManualPositionType;\n\ninterface IProps {\n\tmessage: string;\n\tmargin?: string;\n\tposition?: PositionType;\n}\n\nconst ExperienceEditorMessage = ({\n\tmessage,\n\tposition = 'top-right',\n\tmargin,\n}: IProps) => (\n\t\n\t\t{(isEE: boolean) =>\n\t\t\tisEE && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)\n\t\t}\n\t\n);\n\nexport default ExperienceEditorMessage;\n","const appView = () => {\n\tconst authHeaderSearchParams = new URLSearchParams(window.location.search);\n\tconst isAppView =\n\t\tauthHeaderSearchParams\n\t\t\t.get('appview')\n\t\t\t?.toString()\n\t\t\t.toLowerCase() === 'true'\n\t\t\t? true\n\t\t\t: false;\n\n\treturn isAppView;\n};\nexport default appView;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;","const NO_FN_EXPECTED = `As such, no LivePerson engagement or 'click to chat' functionality should be expected.`;\n\nexport default {\n\tLIVE_PERSON: {\n\t\tBUTTON: 'Click to start live chat',\n\t},\n\n\tLP_TAG: {\n\t\tERROR: `An error occured with LivePerson tag (LPTag). This pertains to the 'Click to chat' functionality within the 'Footer' sub-component 'ContactUsBar'.\\n\\n${NO_FN_EXPECTED}`,\n\t\tDOESNT_EXIST: `LivePerson tag (LPTag) was not found on the window. This pertains to the 'Click to chat' functionality within the 'Footer' sub-component 'ContactUsBar'.\\n\\n${NO_FN_EXPECTED}`,\n\t},\n\n\tSITECORE: {\n\t\tINACTIVE: `LivePerson is not initialised in Sitecore's Experience Editor. ${NO_FN_EXPECTED}`,\n\n\t\tEE: {\n\t\t\tSTATUS_MESSAGES: 'Status messages',\n\t\t\tLIVE_PERSON_INACTIVE:\n\t\t\t\t\"LivePerson (click-to-chat) is disabled in Sitecore's Experience Editor.\",\n\t\t},\n\t},\n};\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try { // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar createChangeEmitter = exports.createChangeEmitter = function createChangeEmitter() {\n var currentListeners = [];\n var nextListeners = currentListeners;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n function listen(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function () {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n function emit() {\n currentListeners = nextListeners;\n var listeners = currentListeners;\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].apply(listeners, arguments);\n }\n }\n\n return {\n listen: listen,\n emit: emit\n };\n};","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","import React from 'react';\nimport { useLocation } from 'react-router-dom';\n\nimport { useAppContext } from 'core/hooks';\nimport {\n\tgetSessionStorageItem,\n\tsetSessionStorageItem,\n} from 'core/browserStorage';\n\n/**\n *\n * @param sessionStorageKeyToUse\n *\n * The initial goal of this hook is to purposely add a delay in showing\n * authenticated header/footer in the homepage when the conditions are satisifed:\n * 1. Welcome Journey flag is enabled - as this is related to welcome journey\n * 2. The session storage item value is empty - so that it can only be done once\n *\n * This is to give an impression that the welcome journey screens are shown first before the dashboard\n * while making sure that the dashboard components are also loading in the background\n *\n * Ideally, the delay should only happen once after logging in, and it should only\n * delay the `showing of UI` part, not the API calls related to the said components\n *\n */\nexport const useShowComponentWithDelay = (sessionStorageKeyToUse: string) => {\n\tconst { sitecoreContext } = useAppContext();\n\tconst { pathname } = useLocation();\n\n\tconst [isToShow, setIsToShow] = React.useState(false);\n\n\tReact.useEffect(() => {\n\t\tconst isInHomePage = pathname === '/';\n\n\t\tif (isInHomePage) {\n\t\t\tconst isWelcomeJourneyEnabled =\n\t\t\t\tsitecoreContext?.featureToggle?.enableWelcomeJourney ?? false;\n\t\t\tconst isToDelay = getSessionStorageItem(sessionStorageKeyToUse) === '';\n\n\t\t\tif (isWelcomeJourneyEnabled && isToDelay) {\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tsetSessionStorageItem(sessionStorageKeyToUse, '1');\n\t\t\t\t\tsetIsToShow(true);\n\t\t\t\t}, 1500);\n\n\t\t\t\treturn () => clearTimeout(timeoutId);\n\t\t\t}\n\t\t}\n\n\t\tsetIsToShow(true);\n\t}, []);\n\n\treturn { isToShow };\n};\n","import styled from 'styled-components';\n\n/**\n * Hide the default LivePerson onClick div, because\n * we be manually triggering the onClick event\n * bound to this div manually.\n */\nexport const ClickToChat = styled.div`\n\tdisplay: none;\n`;\n\nexport const Hr = styled.hr`\n\tmargin-left: -40px;\n\tmargin-right: -40px;\n`;\n\nexport const CtaContainer = styled.div`\n\tmargin-bottom: -30px;\n\tdisplay: flex;\n\tjustify-content: space-between;\n`;\n\nexport const LpLoadingContainer = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n`;\n\nexport const LpLoadingTextContainer = styled.div`\n\tmargin: 20px 0 20px 0;\n`;\n\nexport const CtaContainerLeft = styled.div`\n\tdisplay: flex;\n\twidth: 60%;\n\tjustify-content: space-between;\n`;\n\nexport const CtaContainerRight = styled.div`\n\twidth: 40%;\n\tjustify-content: end;\n\tdisplay: flex;\n`;\n","/**\n * LivePerson script provided by Bish Labib from AusSuper.\n * LivePerson contact is Sandeep Karuppuswamy .\n *\n * Generated from LivePerson account/dashboard.\n * Ref: https://knowledge.liveperson.com/getting-started-add-the-liveperson-tag-to-your-website.html\n */\n\nimport Cta from 'core/components/Cta';\nimport { useAppContext } from 'core/hooks';\nimport React from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport FormBuilder from 'pods/forms/FormBuilder';\nimport { Caption } from 'core/styles/Typography';\nimport { LIVE_PERSON_MODAL_FORM, MODAL_ARIA_NAMES } from 'core/constants';\nimport LoadingSpinner from 'core/components/LoadingSpinner';\nimport IFormConfig from 'pods/forms/FormBuilder.d';\nimport RichText from 'core/components/RichText';\nimport { getMessageByCode } from 'core/utils/sitecore-utils';\nimport { CO_BROWSE_ERRORS } from 'core/constants/errors';\n\nimport * as S from '../LivePerson.style';\nimport { IFields } from '../LivePerson.sitecore';\n\ninterface IForm {\n\tserviceNumber: string;\n}\n\nconst LPModalForm = ({\n\tfields,\n\tonSubmit,\n\tloading,\n\tserviceNumber,\n\tisServiceIdError,\n}: {\n\tfields: IFields;\n\tonSubmit: (serviceId: string) => void;\n\tloading: boolean;\n\tserviceNumber: string;\n\tisServiceIdError: boolean;\n}) => {\n\tconst { handleLivePersonModal } = useAppContext();\n\n\tconst ER65 = getMessageByCode(\n\t\tCO_BROWSE_ERRORS.SERVICE_CODE_INVALID,\n\t\tfields?.errorMessages,\n\t\t'errorMessage',\n\t);\n\n\tconst formConfig: IFormConfig = {\n\t\tversion: 0,\n\t\tid: 'service-number',\n\t\tfields: [\n\t\t\t{\n\t\t\t\tid: 'service-number',\n\t\t\t\tpath: 'serviceNumber',\n\t\t\t\ttype: 'text',\n\t\t\t\trequired: true,\n\t\t\t\tdisabled: false,\n\t\t\t\treadonly: false,\n\t\t\t\trequiredMessage: LIVE_PERSON_MODAL_FORM.REQUIRED,\n\t\t\t\terrorSummaryLabel: LIVE_PERSON_MODAL_FORM.ERROR_MESSAGE,\n\t\t\t\thasCloseIcon: true,\n\t\t\t\tenableButtonWithin: true,\n\t\t\t\tdata: {\n\t\t\t\t\tctrlHolderFullWidth: true,\n\t\t\t\t\tplaceholder: fields?.serviceNumberLabel?.value,\n\t\t\t\t\tendAdornment: null,\n\t\t\t\t\tstartAdornment: null,\n\t\t\t\t\tappendMsg: ReactDOMServer.renderToString(\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{fields?.liveAssistNumberInfo?.value}\n\t\t\t\t\t\t,\n\t\t\t\t\t),\n\t\t\t\t\tfullWidth: true,\n\t\t\t\t},\n\t\t\t\tvalidators: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'lpServiceId',\n\t\t\t\t\t\tmessage: ER65,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'lpServiceIdRejected',\n\t\t\t\t\t\toptions: isServiceIdError,\n\t\t\t\t\t\tmessage: ER65,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t\tinitialValues: {\n\t\t\tserviceNumber: serviceNumber,\n\t\t},\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t{loading ? (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{fields?.loadingMessage?.value ??\n\t\t\t\t\t\t\tLIVE_PERSON_MODAL_FORM.LOADING_TEXT}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{fields?.startLabel?.value}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\thandleLivePersonModal(false);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tdata-target-id=\"live-person-cancel-label\"\n\t\t\t\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{fields?.cancelButtonLabel?.value}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tonSubmit={(values: IForm) => {\n\t\t\t\t\t\t\tonSubmit(values.serviceNumber);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n};\n\nexport default LPModalForm;\n","/**\n * LivePerson script provided by Bish Labib from AusSuper.\n * LivePerson contact is Sandeep Karuppuswamy .\n *\n * Generated from LivePerson account/dashboard.\n * Ref: https://knowledge.liveperson.com/getting-started-add-the-liveperson-tag-to-your-website.html\n */\n\nimport Cta from 'core/components/Cta';\nimport { useAppContext } from 'core/hooks';\nimport React from 'react';\nimport RichText from 'core/components/RichText';\nimport { MODAL_ARIA_NAMES } from 'core/constants';\n\nimport * as S from '../LivePerson.style';\nimport { IFields } from '../LivePerson.sitecore';\n\nconst LPModalFormConfirm = ({\n\tfields,\n\tonConfirm,\n}: {\n\tfields: IFields;\n\tonConfirm: (isAccepted: boolean) => void;\n}) => {\n\tconst { handleLivePersonModal } = useAppContext();\n\n\treturn (\n\t\t<>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tonConfirm(true);\n\t\t\t\t\t\t\t\thandleLivePersonModal(false);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{fields?.acceptLabel?.value}\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tonConfirm(false);\n\t\t\t\t\t\t\t\thandleLivePersonModal(false);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-target-id=\"live-person-cancel-label\"\n\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{fields?.rejectLabel?.value}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\thandleLivePersonModal(false);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-target-id=\"live-person-cancel-label\"\n\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{fields?.cancelButtonLabel?.value}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\n\t);\n};\n\nexport default LPModalFormConfirm;\n","/**\n * LivePerson script provided by Bish Labib from AusSuper.\n * LivePerson contact is Sandeep Karuppuswamy .\n *\n * Generated from LivePerson account/dashboard.\n * Ref: https://knowledge.liveperson.com/getting-started-add-the-liveperson-tag-to-your-website.html\n */\n\nimport React, { useEffect, useState } from 'react';\nimport { useModal, useAppContext } from 'core/hooks';\nimport { LIVE_PERSON_MODAL_FORM, MODAL_ARIA_NAMES } from 'core/constants';\nimport { isStorybook } from 'stories/utils';\nimport * as Typo from 'core/styles/Typography';\n\nimport LPModalForm from './subcomponents/LPModalForm';\nimport LPModalFormConfirm from './subcomponents/LPModalFormConfirm';\nimport { IFields } from './LivePerson.sitecore';\n\nconst LivePerson = ({ fields }: { fields: IFields }) => {\n\tconst [LivePersonModal, toggleLivePersonModal] = useModal(false);\n\tconst [isModalFormLoading, setIsModalFormLoading] = useState(false);\n\tconst [showConfirm, setShowConfirm] = useState(false);\n\tconst [submitedServiceNumber, setSubmitedServiceNumber] = useState('');\n\tconst [isServiceIdError, setIsServiceIdError] = useState(false);\n\n\tconst { isShowLivePersonModal } = useAppContext();\n\n\tuseEffect(() => {\n\t\tif (isShowLivePersonModal || isStorybook()) {\n\t\t\ttoggleLivePersonModal(true);\n\t\t} else {\n\t\t\tsetSubmitedServiceNumber('');\n\t\t\tsetIsModalFormLoading(false);\n\t\t\tsetIsServiceIdError(false);\n\t\t\ttoggleLivePersonModal(false);\n\t\t}\n\t}, [isShowLivePersonModal]);\n\n\tconst onServiceIdSubmit = (serviceId: string) => {\n\t\tsetIsModalFormLoading(true);\n\t\tsetSubmitedServiceNumber(serviceId);\n\t\tif (isStorybook()) {\n\t\t\tsetIsModalFormLoading(false);\n\t\t\tsetShowConfirm(true);\n\t\t} else if (!!window.lpTag.taglets) {\n\t\t\twindow.lpTag.taglets.cobrowse.loadApi(function(visitorApi: any) {\n\t\t\t\tvisitorApi.once('sessionRejected', function() {\n\t\t\t\t\tsetIsServiceIdError(true);\n\t\t\t\t\tsetIsModalFormLoading(false);\n\t\t\t\t\tconst serviceIdInput = document.getElementById(\n\t\t\t\t\t\t'service-number.service-number',\n\t\t\t\t\t) as HTMLElement;\n\t\t\t\t\tserviceIdInput.focus();\n\t\t\t\t\tserviceIdInput.blur();\n\t\t\t\t\tserviceIdInput.onfocus = (_ev: FocusEvent) => {\n\t\t\t\t\t\tsetIsServiceIdError(false);\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tvisitorApi.once('sessionOffered', function(event: any) {\n\t\t\t\t\tdocument.addEventListener('lpConfirm', (e: any) => {\n\t\t\t\t\t\tif (e.detail.isAccepted) {\n\t\t\t\t\t\t\tvisitorApi.acceptSupportOffer(event);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvisitorApi.cancelSupportOffer(event);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetSubmitedServiceNumber('');\n\t\t\t\t\t});\n\t\t\t\t\tsetIsModalFormLoading(false);\n\t\t\t\t\tsetShowConfirm(true);\n\t\t\t\t});\n\n\t\t\t\t//Todo: Remove during clean up phase\n\t\t\t\tfunction sessionReadyCallback(startEvent: any) {\n\t\t\t\t\tif (startEvent) {\n\t\t\t\t\t\tconsole.log('Session is ready and will be started shortly.');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvisitorApi.requestSupport({ serviceId }, sessionReadyCallback);\n\t\t\t});\n\t\t}\n\t};\n\n\tconst onConfirm = (isAccepted: boolean) => {\n\t\tconst lpConfirm = new CustomEvent('lpConfirm', { detail: { isAccepted } });\n\t\tdocument.dispatchEvent(lpConfirm);\n\t\t// setIsAccepted(isAccepted);\n\t\tsetShowConfirm(false);\n\t};\n\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{fields?.liveAssistHeading?.value ?? LIVE_PERSON_MODAL_FORM.HEADING}\n\t\t\t\t\n\t\t\t\t{showConfirm ? (\n\t\t\t\t\t\n\t\t\t\t) : (\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t
    \n\t\t
    \n\t);\n};\n\nexport default LivePerson;\n","import CONTENT from 'jss-components/t01-navigation/Footer/subcomponents/ContactUsBar/ContactUsBar.content';\n\nexport const triggerLivePersonWindow = () => {\n\tif (!window.lpTag) {\n\t\tconsole.warn('-------------------------------');\n\t\tconsole.warn(CONTENT.LP_TAG.DOESNT_EXIST);\n\t\tconsole.warn('-------------------------------');\n\t} else {\n\t\ttry {\n\t\t\tconst engagementId = window.lpTag.events?.hasFired(\n\t\t\t\t'LP_OFFERS',\n\t\t\t\t'OFFER_IMPRESSION',\n\t\t\t\t'OFFER_DISPLAY',\n\t\t\t)[0]?.data?.engagementId;\n\t\t\twindow.lpTag.taglets.rendererStub.click(engagementId);\n\t\t} catch (error) {\n\t\t\tconsole.warn('-------------------------------');\n\t\t\tconsole.warn(CONTENT.LP_TAG.ERROR);\n\t\t\tconsole.warn('-------------------------------');\n\t\t\tconsole.warn(error);\n\t\t\tconsole.warn('-------------------------------');\n\t\t}\n\t}\n};\n","import styled from 'styled-components';\n\nimport { DESKTOP_BP } from 'src/_AppContainer';\nimport * as mx from 'core/styles/mixins';\n\nexport const Wrapper = styled.div`\n\tbackground-color: ${({ theme }) => theme.global.module.color};\n\tpadding: 64px 0 36px;\n`;\n\nexport const LinksContainer = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 64px;\n\n\thr {\n\t\tmargin: 64px 0;\n\t}\n\n\t${mx.bp(DESKTOP_BP)`\n\t\tflex-direction: row;\n\n\t\thr {\n\t\t\tdisplay: none;\n\t\t}\n\t`}\n`;\n\nexport const DisclaimerContainer = styled.div`\n\thr {\n\t\tmargin: 0 0 24px;\n\t}\n`;\n\nexport const LinkList = styled.ul`\n\t${mx.listReset}\n\tmin-width: 300px;\n\n\t${mx.bp(DESKTOP_BP)`\n\t\tmargin-right: 60px;\n\t`}\n\n\ta {\n\t\ttext-decoration: none;\n\t\tfont-size: 14px;\n\t\tline-height: 24px;\n\n\t\t&:focus,\n\t\t&:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n`;\n\nexport const LinkListItem = styled.li`\n\tmargin: 0 0 12px;\n\n\t&:last-child {\n\t\tmargin-bottom: 0;\n\t}\n`;\n\nexport const MaintenanceApiContainer = styled.div`\n\tdisplay: none;\n`;\n","import styled, { css } from 'styled-components';\nimport { darken } from 'polished';\n\nimport * as mx from 'core/styles/mixins';\nimport { Icon } from 'core/components/Icon/Icon.style';\nimport { FONT_NAMES, FONT_WEIGHT } from 'core/styles/fonts';\n\nexport const Circle = styled.div<{\n\tbgColor: string;\n}>`\n\t${mx.circle('63px')}\n\tmin-width: 63px;\n\toverflow: hidden;\n\tposition: relative;\n\tmargin-right: 16px;\n\ttransition: background-color ${({ theme }) => theme.variables.baseTransition}\n\t\tease;\n\n\t${({ theme, bgColor: colorName }) => css`\n\t\t${theme.css.getBackgroundAndText(colorName)}\n\t`}\n\n\t${Icon} {\n\t\t${mx.alignCentre}\n\t\tmargin: 0;\n\t}\n`;\n\nexport const Content = styled.div<{\n\tisActive?: boolean;\n\tbgColor: string;\n}>`\n\tdisplay: flex;\n\tpadding-right: 20px;\n\n\t${({ theme, isActive = true, bgColor: colorName }) => {\n\t\tconst isDark = theme.core.getCompositionIsDark(colorName);\n\t\tconst color = theme.core.getCompositionColor(colorName);\n\t\tconst lighterBackground = theme.core.getCompositionColor('blue-lighter');\n\n\t\treturn (\n\t\t\tisActive &&\n\t\t\tcss`\n\t\t\t\t&:hover,\n\t\t\t\t&:focus {\n\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t${Circle} {\n\t\t\t\t\t\tbackground-color: ${isDark\n\t\t\t\t\t\t\t? lighterBackground\n\t\t\t\t\t\t\t: darken(0.1, color)};\n\t\t\t\t\t}\n\n\t\t\t\t\t.typography--custom__contactUsMethod--title {\n\t\t\t\t\t\ttext-decoration: underline;\n\t\t\t\t\t\tcolor: ${isDark ? lighterBackground : color}!important;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&:focus {\n\t\t\t\t\t${mx.mimicFocus}\n\t\t\t\t}\n\t\t\t`\n\t\t);\n\t}}\n`;\n\nexport const Title = styled.h4`\n\tfont-size: 16px;\n\tline-height: 24px;\n\tfont-family: ${FONT_NAMES.GOTHAM_ROUNDED_BOOKED};\n\tfont-weight: ${FONT_WEIGHT.SEMI_BOLD};\n`;\n\nexport const Text = styled.p`\n\tfont-size: 14px;\n\tline-height: 20px;\n\tfont-family: ${FONT_NAMES.OPEN_SANS};\n\tfont-weight: ${FONT_WEIGHT.REGULAR};\n`;\n","import React from 'react';\nimport { withTheme } from 'styled-components';\n\nimport { IThemeObject } from 'pods/theme';\nimport { JssTextType } from 'core/utils/sitecore-utils';\nimport { Icon, ICONS } from 'core/components/Icon';\nimport * as Typo from 'core/styles/Typography';\n\nimport * as S from './ContactMethod.style';\n\n// -------------------------\n// Component atoms\n\n/**\n * Displays the circle/icon combo driven by the primary theme.\n */\nconst Circle = ({ bgColor, icon }: { bgColor: string; icon: ICONS }) => (\n\t\n\t\t\n\t\n);\n\n/**\n * Title of `ContactMethod`; accepting either a JSS Text component, or a string.\n * (Depending on whether the ContactMethod is itself wrapped in a link or not)\n */\nexport const Title = ({\n\tchildren,\n\tjssText,\n\tisActive = true,\n\t...typoProps\n}: {\n\tchildren?: React.ReactNode;\n\tjssText?: JssTextType;\n\tisActive?: boolean;\n} & Typo.ITypoProps) => (\n\t\n\t\t{!jssText && children}\n\t\n);\n\n/**\n * Text of `ContactMethod`; accepting either JSS Text component or allowing a custom\n * render method to faciliate LivePerson which needs finer-grain control to conditionally\n * render things like public holiday vs online status vs offline status messages.\n */\nexport const Text = ({ content }: { content: JssTextType }) => (\n\t\n);\n\n// -------------------------\n\ninterface IProps {\n\ticon: ICONS;\n\tisActive?: boolean;\n\tchildren: React.ReactNode;\n\ttheme: IThemeObject;\n}\n\nconst ContactMethod = withTheme(\n\t({ icon, isActive = true, children, theme }: IProps) => {\n\t\tconst bgColor = isActive\n\t\t\t? theme.global.colors.secondary.id\n\t\t\t: theme.global.colors.disabled.id;\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t
    {children}
    \n\t\t\t
    \n\t\t);\n\t},\n);\n\nexport default ContactMethod;\n","import styled from 'styled-components';\n\nimport { DESKTOP_BP } from 'src/_AppContainer';\nimport * as mx from 'core/styles/mixins';\n\nexport const List = styled.ul`\n\t${mx.listReset}\n\tdisplay: flex;\n\tflex-flow: column wrap;\n\n\tli {\n\t\twidth: 100%;\n\t\tmargin: 0 0 20px;\n\n\t\t&:last-of-type {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\ta {\n\t\t\ttext-decoration: none;\n\t\t}\n\t}\n\n\t${mx.bp(DESKTOP_BP)`\n\t\tflex-direction: row;\n\n\t\tli {\n\t\t\twidth: 50%;\n\t\t}\n\t`}\n`;\n\nexport const MessageUsButton = styled.button`\n\t${mx.buttonReset}\n\ttext-align: left;\n`;\n","/* eslint-disable @typescript-eslint/camelcase, react/button-has-type */\n\n/**\n * T01.E03 - Contact Us Bar\n * List of clickable contact methods, including LivePerson click-to-chat.\n *\n * Note that although this is specced as a separate module, it lives\n * within the Footer. As such, it's treated as a 'subcomponent' of the Footer.\n *\n * NOTE:\n * - PhoneUs component uses the Telephone link field which is extended from\n * \t the General link field. in the Sitecore editors,\n * \t - The issue with General link is that it will add a 'http:\\\\' prefix to the\n * url value and result in an incorrect href attribute set for the JSS link,\n * e.g `href=\"http:\\\\tel:XXXX\"`.\n * - Therefore decision had made to use Telephone link field with backend solution\n * \t\t to send `\"url\": \"tel:XXXX\"` as the field value prop to the PhoneUs component.\n * - In addition, a hack to override href attribute with url value is required\n * in the PhoneUs Component.\n */\n\nimport React, { useEffect, useState } from 'react';\nimport { isExperienceEditorActive } from '@sitecore-jss/sitecore-jss-react';\nimport { uid } from 'react-uid';\n\nimport ExperienceEditorContent from 'core/sitecore/experience-editor/ExperienceEditorContent';\nimport ExperienceEditorMessage from 'core/sitecore/experience-editor/ExperienceEditorMessage';\nimport Cta from 'core/components/Cta';\nimport RoutableSitecoreLink from 'core/components/RoutableSitecoreLink';\nimport { useTrackEvent } from 'core/hooks';\nimport { isInSitecorePreviewOrEditMode } from 'core/utils/global-utils';\nimport { triggerLivePersonWindow } from 'jss-components/t25-live-person/LivePerson';\nimport ContactMethod, {\n\tTitle as ContactMethodTitle,\n\tText as ContactMethodText,\n} from './subcomponents/ContactMethod';\nimport { IFields } from '../../Footer.sitecore';\nimport CONTENT from './ContactUsBar.content';\nimport * as S from './ContactUsBar.style';\n\ninterface IProps {\n\tfields: IFields;\n}\n\nconst ContactUsBar = ({ fields }: IProps) => {\n\t// ------------------------------\n\t// ------------------------------\n\t// Message (LivePerson click-to-chat)\n\n\t// State management for the below bind (to listen for when LivePerson\n\t// considers itself 'active') is contained in this component as it's not\n\t// used elsewhere. If it were, this logic ought to be hoisted to _AppContainer\n\t// in the AppContext. Note that core LivePerson logic (and the EmbeddedEngagement\n\t// tag this snipper depends-on/listens-to) is found at `core/vendor/LivePerson`.\n\tconst [isLivePersonOnline, setIsLivePersonOnline] = useState(false);\n\tconst [isLpTagLoaded, setIsLpTagLoaded] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (isExperienceEditorActive() || isInSitecorePreviewOrEditMode()) {\n\t\t\tconsole.warn('-------------------------------');\n\t\t\tconsole.warn(CONTENT.SITECORE.INACTIVE);\n\t\t\tconsole.warn('-------------------------------');\n\t\t} else if (!!window) {\n\t\t\tif (typeof window.lpTag === 'undefined') {\n\t\t\t\tconsole.warn('-------------------------------');\n\t\t\t\tconsole.warn(CONTENT.LP_TAG.DOESNT_EXIST);\n\t\t\t\tconsole.warn('-------------------------------');\n\t\t\t} else {\n\t\t\t\t// Check first if windows and lpTag is available serving the expected purpose\n\t\t\t\tconst lpTagChecking =\n\t\t\t\t\ttypeof window.lpTag === 'object' &&\n\t\t\t\t\ttypeof window.lpTag.events === 'object' &&\n\t\t\t\t\ttypeof window.lpTag.events.hasFired === 'function';\n\n\t\t\t\tlet lpTagHasFired = lpTagChecking\n\t\t\t\t\t? window?.lpTag?.events?.hasFired('OFFER_DISPLAY')?.length\n\t\t\t\t\t: 0;\n\t\t\t\tlet reps = 1;\n\n\t\t\t\tconst fetchLpTagInterval = setInterval(() => {\n\t\t\t\t\tlpTagHasFired = lpTagChecking\n\t\t\t\t\t\t? window?.lpTag?.events?.hasFired('OFFER_DISPLAY')?.length\n\t\t\t\t\t\t: 0;\n\n\t\t\t\t\tif (lpTagHasFired > 0 || reps >= 50) {\n\t\t\t\t\t\tsetIsLpTagLoaded(true);\n\t\t\t\t\t\tclearInterval(fetchLpTagInterval);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetIsLpTagLoaded(false);\n\t\t\t\t\t}\n\t\t\t\t\treps += 1;\n\t\t\t\t}, 200);\n\t\t\t}\n\t\t}\n\t}, []);\n\n\tconst _enableLiveChat = () => {\n\t\tconst engagementId =\n\t\t\t(typeof window.lpTag.events === 'object' &&\n\t\t\t\twindow?.lpTag?.events?.hasFired('OFFER_DISPLAY')[0]?.data\n\t\t\t\t\t?.engagementId) ||\n\t\t\tundefined;\n\n\t\tif (!!engagementId) {\n\t\t\tsetIsLivePersonOnline(true);\n\t\t} else {\n\t\t\tsetIsLpTagLoaded(false);\n\t\t\tsetIsLivePersonOnline(false);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tif (isLpTagLoaded) {\n\t\t\t_enableLiveChat();\n\t\t}\n\t}, [isLpTagLoaded]);\n\n\t// ------------------------------\n\n\t/**\n\t * Normalises date/month string values to always have padded zeroes\n\t * where appropriate, so we get exact matches when comapring 'today'\n\t * with values within the content-authorable `publicHolidays` array.\n\t */\n\tconst normaliseDate = (...date: string[]) =>\n\t\tdate.map(ddMm => ddMm.padStart(2, '0')).join('/');\n\n\tconst messageUsLink = fields.messageUsLink; // This is in fact text and NOT a link\n\n\tconst messageUsIcon = fields.messageUsIcon.value;\n\tconst onlineStatusMessage = fields.onlineStatusMessage;\n\tconst offlineStatusMessage = fields.offlineStatusMessage;\n\tconst publicHolidaysMessage = fields.publicHolidaysMessage;\n\tconst publicHolidays = fields.publicHolidays.map(phObj => {\n\t\tconst dd = phObj.fields.date.value;\n\t\tconst mm = phObj.fields.month.value;\n\n\t\treturn normaliseDate(dd, mm);\n\t});\n\n\t// Cannot be done inline lest we get prop-type inference false-positives\n\tconst messageUsLinkText = messageUsLink.value;\n\tconst onlineStatusMessageText = onlineStatusMessage.value;\n\n\tconst date = new Date();\n\tconst today = normaliseDate(\n\t\tdate.getDate().toString(),\n\t\t(date.getMonth() + 1).toString(),\n\t);\n\n\tconst isPublicHoliday = publicHolidays.includes(today);\n\n\t// Analytics spreadsheet:\n\t// - Section: 'Contact Us'\n\tconst { trackEvent } = useTrackEvent(\n\t\t{\n\t\t\tevent_section: 'navigation',\n\t\t\tevent_type: 'contact us',\n\t\t\tevent_title: '', // provided later\n\t\t},\n\t\tfalse,\n\t);\n\n\tconst MessageUs = () => (\n\t\t<>\n\t\t\t {\n\t\t\t\t\ttriggerLivePersonWindow();\n\t\t\t\t\t// Analytics spreadsheet:\n\t\t\t\t\t// - Section: 'Contact Us'\n\t\t\t\t\t// - ID: 1.3.1\n\t\t\t\t\ttrackEvent({\n\t\t\t\t\t\tevent_title: 'message us',\n\t\t\t\t\t\tevent_label: messageUsLinkText,\n\t\t\t\t\t\tevent_message: onlineStatusMessageText,\n\t\t\t\t\t\tevent_trigger: 'click button',\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t{/* Explaining LivePerson won't work in the Experience Editor */}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t{/* Ease of authoring for conditionally hidden JSS text */}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n\n\t// ------------------------------\n\t// Phone\n\n\tconst phoneIcon = fields.phoneIcon.value;\n\tconst phoneNumberLink = fields.phoneNumber;\n\tconst openingTimes = fields.openingTimes;\n\n\t// Cannot be done inline lest we get prop-type inference false-positives\n\tconst phoneNumberLinkText = phoneNumberLink.value.text;\n\tconst phoneNumberLinkUrl = phoneNumberLink.value.url;\n\tconst openingTimesText = openingTimes.value;\n\t// Override href attribute with url value, please read top comment to see why\n\tconst phoneNumberLinkProps = {\n\t\t...phoneNumberLink.value,\n\t\thref: phoneNumberLinkUrl,\n\t};\n\n\tconst PhoneUs = () => (\n\t\t {\n\t\t\t\t// Analytics spreadsheet:\n\t\t\t\t// - Section: 'Contact Us'\n\t\t\t\t// - ID: 1.3.3\n\t\t\t\ttrackEvent({\n\t\t\t\t\tevent_title: 'phone us',\n\t\t\t\t\tevent_label: openingTimesText,\n\t\t\t\t\tevent_message: '',\n\t\t\t\t\tevent_trigger: 'click link',\n\t\t\t\t\tevent_url: phoneNumberLinkUrl,\n\t\t\t\t});\n\t\t\t}}\n\t\t>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{isExperienceEditorActive() || isInSitecorePreviewOrEditMode() ? (\n\t\t\t\t\t\t\n\t\t\t\t\t) : (\n\t\t\t\t\t\tphoneNumberLinkText\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n\n\t// ------------------------------\n\t// Email\n\n\tconst emailIcon = fields.emailIcon.value;\n\tconst emailLink = fields.emailLink;\n\tconst emailUsAdditionalText = fields.emailUsAdditionalText;\n\n\t// Cannot be done inline lest we get prop-type inference false-positives\n\tconst emailLinkProps = emailLink.value;\n\tconst emailLinkText = emailLink.value.text;\n\tconst emailLinkHref = emailLink.value.href;\n\tconst emailUsAdditionalTextValue = emailUsAdditionalText.value;\n\n\tconst EmailUs = () => (\n\t\t {\n\t\t\t\t// Analytics spreadsheet:\n\t\t\t\t// - Section: 'Contact Us'\n\t\t\t\t// - ID: 1.3.2\n\t\t\t\ttrackEvent({\n\t\t\t\t\tevent_title: 'email us',\n\t\t\t\t\tevent_label: emailUsAdditionalTextValue,\n\t\t\t\t\tevent_message: '',\n\t\t\t\t\tevent_trigger: 'click link',\n\t\t\t\t\tevent_url: emailLinkHref,\n\t\t\t\t});\n\t\t\t}}\n\t\t>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{isExperienceEditorActive() || isInSitecorePreviewOrEditMode() ? (\n\t\t\t\t\t\t\n\t\t\t\t\t) : (\n\t\t\t\t\t\temailLinkText\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n\n\t// ------------------------------\n\t// Other contact methods\n\n\tconst otherContactMethodsIcon = fields.otherContactMethodsIcon.value;\n\tconst otherContactMethodsLink = fields.otherContactMethodsLink;\n\tconst otherContactMethodsAdditionalText =\n\t\tfields.otherContactMethodsAdditionalText;\n\n\t// Cannot be done inline lest we get prop-type inference false-positives\n\tconst otherContactMethodsLinkProps = otherContactMethodsLink.value;\n\tconst otherContactMethodsLinkText = otherContactMethodsLink.value.text;\n\tconst otherContactMethodsLinkHref = otherContactMethodsLink.value.href;\n\tconst otherContactMethodsAdditionalTextValue =\n\t\totherContactMethodsAdditionalText.value;\n\n\tconst OtherContactMethods = () => (\n\t\t {\n\t\t\t\t// Analytics spreadsheet:\n\t\t\t\t// - Section: 'Contact Us'\n\t\t\t\t// - ID: 1.3.4\n\t\t\t\ttrackEvent({\n\t\t\t\t\tevent_section: 'navigation',\n\t\t\t\t\tevent_type: 'contact us',\n\t\t\t\t\tevent_title: 'contact us',\n\t\t\t\t\tevent_label: otherContactMethodsAdditionalTextValue,\n\t\t\t\t\tevent_message: '',\n\t\t\t\t\tevent_trigger: 'click link',\n\t\t\t\t\tevent_url: otherContactMethodsLinkHref,\n\t\t\t\t});\n\t\t\t}}\n\t\t>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{isExperienceEditorActive() || isInSitecorePreviewOrEditMode() ? (\n\t\t\t\t\t\t\n\t\t\t\t\t) : (\n\t\t\t\t\t\totherContactMethodsLinkText\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n\n\t// ------------------------------\n\n\treturn (\n\t\t\n\t\t\t{[MessageUs, EmailUs, PhoneUs, OtherContactMethods].map(ContactMethod => (\n\t\t\t\t
  • \n\t\t\t\t\t\n\t\t\t\t
  • \n\t\t\t))}\n\t\t
    \n\t);\n};\n\nexport default ContactUsBar;\n","/**\n * T01.E02 - Footer\n * The Footer is a module that comprises of a couple of separately\n * specced modules; namely, Footer & ContactUsBar.\n *\n * As such you'll see in this component's folder that it containers\n * `subcomponents` that cleanly make this separation (in addition to\n * further breaking down ContactUsBar into some smaller component atoms).\n *\n * LivePerson (click-to-chat) functionality is also implemented here in\n * the Footer (within ContactUsBar) and is handled in `MessageLivePerson.tsx`.\n */\n\nimport React from 'react';\nimport { compose } from 'recompose';\nimport { template } from 'lodash';\nimport ConditionalWrap from 'conditional-wrap';\n\nimport LayoutPadding from 'core/components/LayoutPadding';\nimport { withExperienceEditorContext } from 'core/sitecore/ExperienceEditorContext';\nimport ExperienceEditorContent from 'core/sitecore/experience-editor/ExperienceEditorContent';\nimport Cta from 'core/components/Cta';\nimport * as Typo from 'core/styles/Typography';\nimport { useAppContext, useTrackEvent } from 'core/hooks';\nimport TrackLinksWithin from 'core/analytics/TrackLinksWithin';\nimport { withMemberContext, isAuthenticated } from 'core/sitecore/member';\nimport { Member } from 'core/api/client/MemberApi';\nimport { LIVE_ASSIST_BUTTON_TEXT } from 'core/constants';\nimport { isInSitecorePreviewOrEditMode } from 'core/utils/global-utils';\n\nimport * as S from './Footer.style';\nimport { IFields } from './Footer.sitecore';\nimport UnauthenticatedFooter from './subcomponents/UnauthenticatedFooter';\nimport ContactUsBar from './subcomponents/ContactUsBar';\nimport { useShowComponentWithDelay } from '../hook';\nimport appView from '../appView';\n\ninterface IProps {\n\tfields: IFields;\n\tisExperienceEditorActive: boolean;\n\tmember: Member;\n}\n\nconst Footer = ({ fields, isExperienceEditorActive, member }: IProps) => {\n\tconst { footerLinks } = fields;\n\n\tif (typeof fields?.footerLinks === 'undefined' || !fields?.footerLinks) {\n\t\tconsole.log('[for monitoring] - auth footer fields: ', fields?.footerLinks);\n\t}\n\n\tconst isMemberAuthenticated = isAuthenticated(member);\n\tconst { isToShow: isToShowAuthenticatedFooter } = useShowComponentWithDelay(\n\t\t'footerHasBeenDelayedOnceKey',\n\t);\n\n\t// Analytics spreadsheet:\n\t// - Section: 'Footer'\n\tconst { trackEvent } = useTrackEvent(\n\t\t{\n\t\t\tevent_section: 'navigation',\n\t\t\tevent_type: 'footer',\n\t\t\tevent_title: 'links',\n\t\t},\n\t\tfalse,\n\t);\n\n\tconst { handleLivePersonModal, sitecoreContext } = useAppContext();\n\tconst maintenanceApiStatus =\n\t\tsitecoreContext?.maintenance?.maintenanceApiStatus ?? '';\n\n\tconst footerYearText = template(fields?.copyrightText?.value)({\n\t\tcurrentYear: new Date().getFullYear(),\n\t});\n\n\treturn (\n\t\t
    \n\t\t\t{/* 'Authenticated' Footer */}\n\t\t\t{((isMemberAuthenticated && isToShowAuthenticatedFooter) ||\n\t\t\t\tisExperienceEditorActive ||\n\t\t\t\tisInSitecorePreviewOrEditMode()) &&\n\t\t\t\t!appView() && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t
    \n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{footerLinks &&\n\t\t\t\t\t\t\t\t\t\tfooterLinks.map(({ id, fields }) =>\n\t\t\t\t\t\t\t\t\t\t\tfields?.footerLink?.value?.text !== undefined ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{fields?.footerLink?.value?.text ===\n\t\t\t\t\t\t\t\t\t\t\t\t\tLIVE_ASSIST_BUTTON_TEXT ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleLivePersonModal(true);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{fields?.footerLink?.value?.text}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Analytics spreadsheet:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// - Section: 'Footer'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// - ID: 1.2.1; 1.2.2; 1.2.3; 1.2.4; 1.2.5\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttrackEvent({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_section: 'navigation',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_type: 'footer',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_title: 'links',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_label: fields.footerLink.value.text?.toLowerCase(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_trigger: 'click link',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent_url: fields.footerLink.value.href,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t\t\t\t\t\t`[For monitoring] Footer Auth - linktext value is ${fields?.footerLink?.value?.text}`,\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\ttrackEvent({\n\t\t\t\t\t\t\t\t\t\t\t\t\tevent_label: text,\n\t\t\t\t\t\t\t\t\t\t\t\t\tevent_trigger: 'click link',\n\t\t\t\t\t\t\t\t\t\t\t\t\tevent_url: link,\n\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{footerYearText}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t)}\n\n\t\t\t{/* 'Unauthenticated' Footer */}\n\t\t\t{!isMemberAuthenticated && (\n\t\t\t\t (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\t{maintenanceApiStatus && (\n\t\t\t\t\n\t\t\t\t\tMaintenanceApiStatus: {maintenanceApiStatus}\n\t\t\t\t\n\t\t\t)}\n\t\t
    \n\t);\n};\n\nexport default compose(\n\twithExperienceEditorContext,\n\twithMemberContext,\n)(Footer);\n"],"sourceRoot":""}