{"version":3,"sources":["Global/icons/SvgIcons.js","Global/Component/alert/alert.js","Component/libs/input/input.js","Component/libs/select/select.js","Component/libs/button/button.js","Component/libs/validator.js","Global/Component/breadcrumbs/breadcrumbs.js","Analytics/tagging.js","Component/CallMeBackSuccess/CallMeBackSuccess.js","Global/Component/Loader/Loader.js","Component/libs/forms/forms.js","Global/model.js","Component/CallMeBack/CallMeBack.js","App.js","serviceWorker.js","index.js"],"names":["SVGIcon","getSvg","name","className","viewBox","id","x1","y1","x2","y2","strokeLinecap","strokeLinejoin","points","cx","cy","r","d","strokeMiterlimit","transform","stroke","strokeWidth","x","y","width","height","rx","ry","fill","focusable","aria-hidden","data-name","this","props","Component","Alert","state","mainBlueclass","setState","close","children","onClick","onMblClick","Input","hasError","error","focused","event","stopPropagation","errors","control","err","console","Object","assign","onBlur","e","checkFormValidity","onFocus","htmlFor","style","top","value","required","placeholder","Select","hidden","defaultValue","disabled","display","Button","React","VodacomValidator","validateRSAIdNumber","rsaIdNumber","undefined","length","correct","tempDate","Date","substring","id_date","getDate","id_month","getMonth","getYear","parseInt","charAt","tempTotal","checkSum","multiplier","count","i","Math","floor","BreadCrums","backRedirection","getUrlParameter","sParam","tmpURL","decodeURIComponent","document","URL","sURLVariables","indexOf","split","sParameterName","href","tagging","pageLoad","captureInput","tagPageLoad","window","MyTIQ","view","page_event","page_name","page_channel","warn","tagCaptureInput","link","page_form_event","page_form_name","tagError","page_errors","tagApiError","tagCallMeBackThankYou","sales_event","CallMeBackSuccess","homeRedirection","Loader","xmlns","strokeDasharray","validator","valid","trim","pattern","RegExp","test","minLength","toString","maxLength","validatorFunctions","FormControl","config","validatorFn","updateControl","touched","Promise","resolve","reject","hasOwnProperty","currentValidator","validation","isValid","validationMessage","update","validators","Array","func","FormGroup","controls","key","values","keys","EMAIL_REGEX","PASSPORT_REGEX","CONTACT_NUMBER_REGEX","CallMeBack","idTypes","callMeBackForm","firstName","type","lastName","contactNumber","email","idType","options","idNumber","isSubmitted","showSpinner","handleChange","bind","updateForm","persist","target","getControl","setValue","clearValidators","setValidator","Validator","getValues","param","axios","post","then","success","status","scrollTo","catch","template","onChange","map","option","data","onAlertClose","noValidate","clear","saveDetails","App","Boolean","location","hostname","match","ReactDOM","render","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.6827b18b.chunk.js","sourcesContent":["import React, {Component} from \"react\";\n\nclass SVGIcon extends Component {\n \n getSvg = (name) => {\n switch (name) {\n case \"icon-close\":\n return (\n \n \n \n );\n case \"icon-chevron-down\":\n return (\n \n \n \n );\n case \"icon-search\":\n return (\n \n \n \n );\n case \"icon-tick\":\n return (\n \n \n \n );\n case \"icon-chevron-right\":\n return (\n \n \n \n );\n case \"icon-chevron-left\":\n return (\n \n \n \n );\n case \"icon-arrow-right\":\n return (\n \n \n \n );\n case \"icon-add-or-plus\":\n return (\n \n \n \n );\n case \"icon-security\":\n return (\n \n \n \n );\n case \"icon-circle-help\":\n return (\n \n \n \n );\n case \"icon-info-circle\":\n return (\n \n \n \n );\n \n \n case \"icon-minus\":\n return (\n \n \n \n );\n\n case \"icon-call\":\n return (\n \n \" d=\"M115.81,129.17l12.85-9.7c3.39-1.74,6.88-2.16,9-.87,3.19,2,30,19.88,32.23,21.47s3.29,6.09.13,10.47S152.33,172.23,146.25,172s-31.39-1-78.61-48.47S20.13,51,20,45,37.62,24.88,42.1,21.84s9-1.86,10.59.31c1.77,2.47,19.22,29.17,21.14,32.23,1.31,2.09.79,5.56-1,8.88s-9.33,16-9.33,16S68.58,88.13,86,105.67C94.3,114.17,115.81,129.17,115.81,129.17Z\" transform=\"translate(-16 -16)\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n \n );\n\n\n case \"icon-tick-circle\":\n return (\n \n \n \n );\n\n default:\n return '';\n }\n };\n\n render() {\n return (\n \n {this.getSvg(this.props.name)}\n \n );\n }\n}\n\nexport default SVGIcon;","import React, { Component } from \"react\";\n//import infoImgMainCart from '../../images/solid_info.png';\nimport SVGIcon from '../../icons/SvgIcons.js';\nimport \"./alert.css\";\nclass Alert extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n mainBlueclass: 'blue_notification'\n }\n }\n\n onMblClick() {\n this.setState({\n //mainBlueclass: 'blue_notification remove_notificaion',\n },()=>{\n this.props.close && this.props.close();\n })\n }\n\n render() {\n let [props, state] = [this.props, this.state];\n return (\n
\n {/* \"\" */}\n \n \n {props.children}\n \n
this.onMblClick()}>\n \n DISMISS\n \n \n \n \n
\n
\n )\n }\n}\n\nexport default Alert;","import React, { Component } from \"react\";\nimport \"./input.css\";\nclass Input extends Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false,\n error: null,\n focused:false\n };\n }\n\n\n checkFormValidity(event) {\n event && event.stopPropagation();\n try {\n let props = this.props;\n let errors = props.control.errors || {};\n let err = { hasError: false, error: null };\n for (let error in errors) {\n if (errors[error] && errors[error][0] === false) {\n let [valid, validationMessage] = errors[error];\n err = {\n hasError: !valid,\n error: validationMessage\n }\n break;\n }\n }\n\n this.setState({\n hasError: err.hasError,\n error: err.error,\n focused:false\n })\n } catch (error) {\n console.error(error);\n }\n }\n\n render() {\n let props = Object.assign(this.props);\n let state = this.state;\n return (\n
this.checkFormValidity(e)} onFocus={()=>this.setState({focused:true})}>\n \n \n {state.hasError ? (\n
\n {state.error}\n
\n ) : null}\n
\n );\n }\n}\n\nexport default Input;\n","import React, { Component } from \"react\";\nimport \"./select.css\";\nimport SvgIcon from '../../../Global/icons/SvgIcons';\n\nclass Select extends Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false,\n error: null,\n focused: false\n };\n }\n\n getPlaceHolders() { }\n\n checkFormValidity(event) {\n event && event.stopPropagation();\n try {\n let props = this.props;\n let errors = props.control.errors || {};\n let err = { hasError: false, error: null };\n for (let error in errors) {\n if (errors[error] && errors[error][0] === false) {\n let [valid, validationMessage] = errors[error];\n err = {\n hasError: !valid,\n error: validationMessage\n }\n break;\n }\n }\n\n this.setState({\n hasError: err.hasError,\n error: err.error,\n focused: false\n })\n } catch (error) {\n console.error(error);\n }\n }\n\n render() {\n let props = Object.assign(this.props);\n let state = this.state;\n return (\n
this.checkFormValidity(e)} onFocus={() => this.setState({ focused: true })}>\n \n {state.hasError ? (\n
\n {state.error}\n
\n ) : null}\n \n \n \n {props.required ? \"* \" : \"\"}\n {props.placeholder}\n \n \n \n \n
\n );\n }\n}\n\nexport default Select;\n","import React from \"react\";\nimport \"./button.css\";\nclass Button extends React.Component {\n // constructor(props) {\n // super(props);\n // }\n\n render() {\n let props = this.props;\n return (\n
\n \n
\n );\n }\n}\nexport default Button;\n","\nlet VodacomValidator = (function () {\n\n const validateRSAIdNumber = function (rsaIdNumber) {\n // Test for null and undefined.\n if ((rsaIdNumber === null || rsaIdNumber === undefined)) {\n // consoleLogger(\"Invalid number<\" + rsaIdNumber + \"> to test for RSA ID compliance.\");\n return;\n }\n // Ref: http://www.sadev.co.za/content/what-south-african-id-number-made\n // SA ID Number have to be 13 digits, so check the length\n if (rsaIdNumber.length !== 13) {\n // consoleLogger(\"Failed validation of RSA ID number <\" + rsaIdNumber + \"> on length.\");\n return [false,\"Length must be 13 characters\"];\n }\n //var idPassNumber = rsaIdNumber;\n // assume everything is correct and if it later turns out not to be,\n // just set this to false\n let correct = true;\n // get first 6 digits as a valid date\n var tempDate = new Date(rsaIdNumber.substring(0, 2), rsaIdNumber.substring(2, 4) - 1, rsaIdNumber.substring(4, 6));\n\n var id_date = tempDate.getDate();\n var id_month = tempDate.getMonth();\n //var id_year = tempDate.getFullYear();\n \n //var fullDate = id_date + \"-\" + id_month + 1 + \"-\" + id_year;\n if (!((tempDate.getYear() === parseInt(rsaIdNumber.substring(0, 2))) && (id_month === parseInt(rsaIdNumber.substring(2, 4) - 1)) && (id_date === parseInt(rsaIdNumber.substring(4, 6))))) {\n return [false,\"Invalid ID number\"];\n }\n if (parseInt(rsaIdNumber.charAt(10)) > 1) {\n // check for Citizenship 0[SA citizen , 1 [permanent SA citizen]\n // consoleLogger(\"Failed to validate of SA Citizenship\");\n return [false,\"Invalid ID number\"];\n }\n // apply Luhn formula for check-digits\n let [tempTotal,checkSum,multiplier,count] = [0,0,0,0];\n for (let i = 0; i < 13; ++i) {\n multiplier = count % 2 + 1;\n count++;\n tempTotal = multiplier * parseInt(rsaIdNumber.charAt(i));\n tempTotal = Math.floor(tempTotal / 10) + (tempTotal % 10);\n checkSum += tempTotal;\n }\n checkSum = (checkSum * 9) % 10;\n if ((checkSum % 10) !== 0) {\n correct = false;\n }\n if (correct) {\n // consoleLogger(\"Successfully validated RSA ID number <\"+rsaIdNumber+\">.\");\n return [true,\"\"];\n }\n // consoleLogger(\"Failed validation of RSA ID number <\"+rsaIdNumber+\"> on checksum.\");\n return [false,\"Invalid ID number\"];;\n }\n\n return {\n validateRSAIdNumber\n }\n\n})();\n\nexport default VodacomValidator;","import React, {Component} from 'react';\nimport SVGIcon from '../../icons/SvgIcons';\nimport './breadcrumbs.css';\n\nclass BreadCrums extends Component{\n \n constructor(props) {\n super(props);\n this.state = {\n backRedirection: '/'\n };\n }\n\n componentDidMount() {\n let isMiniApp = this.getUrlParameter(\"miniApp\") === 'true' ? true : false;\n if (isMiniApp) {\n this.setState({\n backRedirection: `javascript:history.back()`\n })\n }\n }\n\n getUrlParameter(sParam) {\n var tmpURL = decodeURIComponent(document.URL);\n var sPageURL = tmpURL.substring(tmpURL.indexOf('?') + 1);\n\n var sURLVariables = sPageURL.split('&');\n for (var i = 0; i < sURLVariables.length; i++) {\n var sParameterName = sURLVariables[i].split('=');\n if (sParameterName[0] === sParam) {\n return sParameterName[1];\n }\n }\n }\n\n render(){\n return(\n
\n \n
\n )\n }\n}\nexport default BreadCrums;","let tagging = (function () {\n\n let pageLoad = false;\n let captureInput = false;\n\n let tagPageLoad = function () {\n try {\n if(!pageLoad){\n window.MyTIQ.view({\n page_event: \"view\",\n page_name: \"shopping: call me back\",\n page_channel: \"shopping\"\n });\n }\n pageLoad = true;\n } catch (error) {\n console.warn(\"tagPageLoad Could not tag\");\n }\n };\n\n let tagCaptureInput = function () {\n try {\n if (!captureInput) {\n window.MyTIQ.link({\n page_form_event: \"started\",\n page_form_name: \"shopping: call me back form\"\n });\n }\n captureInput = true;\n } catch (error) {\n console.warn(\"tagCaptureInput Could not tag\");\n }\n };\n\n let tagApiError = function () {\n try {\n window.MyTIQ.view({\n page_event: \"view\",\n page_name: \"shopping: call me back: form error\",\n page_form_event: \"error\",\n page_errors: \"api call error message\"\n });\n } catch (error) {\n console.warn(\"tagApiError Could not tag\");\n }\n };\n\n let tagError = function () {\n try {\n window.MyTIQ.view({\n page_event: \"view\",\n page_name: \"shopping: call me back: form error\",\n page_form_event: \"error\",\n page_errors: \"capture error message\"\n });\n } catch (error) {\n console.warn(\"tagError Could not tag\");\n }\n };\n\n let tagCallMeBackThankYou = function () {\n try {\n window.MyTIQ.view({\n page_event: \"view\",\n page_name: \"shopping: call me back: thank you\",\n page_form_event: \"success\",\n page_form_name: \"shopping: call me back form\",\n sales_event: \"sale_lead_form\",\n page_channel: \"shopping\"\n })\n } catch (error) {\n console.warn(\"tagCallMeBackThankYou Could not tag\");\n }\n };\n\n return {\n tagPageLoad,\n tagCaptureInput,\n tagError,\n tagApiError,\n tagCallMeBackThankYou\n };\n})();\n\nexport default tagging;\n","import React, { Component } from 'react';\nimport SVGIcon from '../../Global/icons/SvgIcons';\nimport '../CallMeBack/CallMeBack.css';\nimport tagging from \"../../Analytics/tagging\";\n\nclass CallMeBackSuccess extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n homeRedirection: '/'\n };\n }\n\n componentDidMount() {\n let isMiniApp = this.getUrlParameter(\"miniApp\") === 'true' ? true : false;\n if (isMiniApp) {\n this.setState({\n homeRedirection: '/shopping/products?miniApp=true'\n })\n }\n }\n\n getUrlParameter(sParam) {\n var tmpURL = decodeURIComponent(document.URL);\n var sPageURL = tmpURL.substring(tmpURL.indexOf('?') + 1);\n\n var sURLVariables = sPageURL.split('&');\n for (var i = 0; i < sURLVariables.length; i++) {\n var sParameterName = sURLVariables[i].split('=');\n if (sParameterName[0] === sParam) {\n return sParameterName[1];\n }\n }\n }\n\n render() {\n tagging.tagCallMeBackThankYou();\n return (\n
\n
\n \n
We'll be in touch shortly!
\n
\n A call centre agent will give you a call within the next 24 hours\n
\n
\n GO TO HOME\n
\n
\n
\n );\n }\n}\n\nexport default CallMeBackSuccess;\n","import React from 'react';\n\nimport \"./Loader.css\";\n\nconst Loader = props => {\n return (\n
\n
\n
\n \n \n \n \n
\n
\n );\n}\n\nexport default Loader;","let validator = (function validator() {\n let required = value => {\n let valid = [true, \"\"];\n if (\n (typeof value == \"string\" && value.trim() === \"\") ||\n value === null ||\n value === undefined\n ) {\n valid = [false, \"required\"];\n }\n return valid;\n };\n\n let pattern = (value, pattern) => {\n let valid = [true, \"\"];\n let isMatched = pattern instanceof RegExp ? pattern.test(value) : false;\n if (!isMatched) {\n valid = [false, \"invalid\"];\n }\n return valid;\n };\n\n let minLength = (value, length) => {\n let valid = [true, \"\"];\n if (value && typeof value == 'string') {\n if (value.length < length) {\n valid = [false, `minimum length should be ${length}`]\n }\n } else {\n value = value.toString();\n if (value.length < length) {\n valid = [false, `minimum length should be ${length}`]\n }\n }\n return valid;\n };\n\n let maxLength = (value, length) => {\n let valid = [true, \"\"];\n if (value && typeof value == 'string') {\n if (value.length > length) {\n valid = [false, `maximum length should be ${length}`]\n }\n } else {\n value = value.toString();\n if (value.length > length) {\n valid = [false, `maximum length should be ${length}`]\n }\n }\n return valid;\n };\n\n let validatorFunctions = () => { };\n\n return {\n required,\n pattern,\n minLength,\n maxLength,\n validatorFunctions\n };\n})();\n\nclass FormControl {\n validationMessage;\n valid;\n touched;\n errors;\n constructor(value, config = {}, validatorFn = {}) {\n this.value = value;\n this.config = config;\n this.validatorFn = validatorFn;\n this.updateControl();\n }\n\n setValue(value) {\n this.value = value;\n }\n\n getValue() {\n return this.value;\n }\n\n markTouched() {\n this.touched = true;\n }\n\n markUntouch() {\n this.touched = false;\n }\n\n reset() {\n this.value = null;\n this.touched = false;\n this.valid = false;\n }\n\n valueChanges() {\n return Promise((resolve, reject) => { });\n }\n\n hasError(error) {\n if (this.errors && this.errors.hasOwnProperty(error)) {\n return this.errors[error];\n }\n }\n\n setValidator(validator) {\n this.validatorFn = Object.assign({}, (this.validatorFn || {}), validator);\n this.updateControl();\n }\n\n removeValidator(validator) {\n let currentValidator = Object.assign({}, this.validatorFn);\n for (let validation of validator) {\n if (currentValidator && currentValidator.hasOwnProperty(validation)) {\n delete currentValidator[validation];\n }\n }\n this.validatorFn = currentValidator;\n this.updateControl();\n }\n\n clearValidators() {\n this.validatorFn = {};\n this.updateControl();\n }\n\n update(valid) {\n let [isValid, validationMessage] = valid;\n this.valid = isValid;\n this.validationMessage = validationMessage;\n }\n\n updateControl() {\n try {\n this.touched = true;\n let valid = [true, \"\"];\n this.errors = {};\n if (this.validatorFn.hasOwnProperty(\"required\") && this.validatorFn.required) {\n valid = validator.required(this.value);\n this.errors['required'] = valid;\n this.update(valid);\n if (!valid[0]) {\n return;\n }\n }\n\n if (this.validatorFn.hasOwnProperty(\"pattern\") && this.validatorFn.pattern instanceof RegExp && this.value) {\n valid = validator.pattern(this.value, this.validatorFn.pattern);\n this.errors['pattern'] = valid;\n this.update(valid);\n if (!valid[0]) {\n return;\n }\n }\n\n if (this.validatorFn.hasOwnProperty('minLength') && this.validatorFn.minLength) {\n valid = validator.minLength(this.value, this.validatorFn.minLength);\n this.errors['minLength'] = valid;\n this.update(valid);\n if (!valid[0]) {\n return;\n }\n }\n\n if (this.validatorFn.hasOwnProperty('maxLength') && this.validatorFn.maxLength) {\n valid = validator.maxLength(this.value, this.validatorFn.maxLength);\n this.errors['maxLength'] = valid;\n this.update(valid);\n if (!valid[0]) {\n return;\n };\n }\n\n if (this.validatorFn.hasOwnProperty('validators') && this.validatorFn.validators instanceof Array) {\n for (let func of this.validatorFn.validators) {\n if (typeof func == 'function') {\n valid = func(this.value);\n if (!valid[0]) {\n this.errors['others'] = valid;\n break;\n }\n else\n continue\n }\n }\n this.update(valid);\n }\n\n this.update(valid);\n } catch (error) {\n console.error(error);\n }\n }\n}\n\nclass FormGroup {\n constructor(controls) {\n this.controls = controls;\n }\n\n markAllAsTouched() {\n try {\n } catch (error) { }\n }\n\n isValid() {\n let valid = [true, \"\"];\n for (let key in this.controls) {\n let control = this.controls[key];\n control.updateControl();\n if (control instanceof FormControl) {\n if (!control.valid) {\n valid = [false, `${key} is required`];\n }\n } else {\n valid = [false, `${key} is not instanceof Formcontrol`];\n }\n }\n return valid;\n }\n\n getControl(control) {\n if (this.controls && this.controls.hasOwnProperty(control)) {\n return this.controls[control];\n }\n }\n\n getValues() {\n try {\n let values = {};\n for (let control in this.controls) {\n values[control] = this.controls[control].value;\n }\n return values;\n } catch (error) {\n console.error(error);\n }\n }\n\n updateForm() {\n\n if (this.controls && Object.keys(this.controls).length > 0) {\n let [valid, validationMessage] = this.isValid();\n this.valid = valid;\n this.validationMessage = validationMessage;\n }\n }\n}\n\nclass FormArray { }\n\nclass FormBuilder { }\n\nexport { FormControl, FormGroup, FormArray, FormBuilder };\n","// eslint-disable-next-line no-useless-escape\nconst EMAIL_REGEX = /^(([^<>()[\\].,;:\\s@\"]+(.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@(([^<>()[\\].,;:\\s@\"]+.)+[^<>()[\\].,;:\\s@\"]{2,})$/i;\nconst PASSPORT_REGEX = /^[a-zA-Z0-9_.-]*$/i ;\nconst CONTACT_NUMBER_REGEX = /^0(6|7|8){1}[0-9]{1}[0-9]{7}$/; \n\nexport { EMAIL_REGEX,PASSPORT_REGEX,CONTACT_NUMBER_REGEX };","import React, { Component } from \"react\";\nimport \"./CallMeBack.css\";\nimport SVGIcon from \"../../Global/icons/SvgIcons\";\nimport Alert from \"../../Global/Component/alert/alert\";\nimport { Input, Select, Button, Validator } from \"../libs\";\nimport Breadcrumbs from '../../Global/Component/breadcrumbs/breadcrumbs';\nimport CallMeBackSuccess from '../CallMeBackSuccess/CallMeBackSuccess';\nimport Loader from '../../Global/Component/Loader/Loader';\nimport {\n FormControl,\n FormGroup,\n} from \"../libs/forms/forms\";\nimport { EMAIL_REGEX, PASSPORT_REGEX, CONTACT_NUMBER_REGEX } from \"../../Global/model\";\nimport axios from \"axios\";\nimport tagging from \"../../Analytics/tagging\";\n\nclass CallMeBack extends Component {\n idTypes = [\n { id: \"SAID\", name: \"South African ID\" },\n { id: \"PASSPORT\", name: \"Passport\" }\n ];\n\n constructor(props) {\n super(props);\n let callMeBackForm = new FormGroup({\n firstName: new FormControl(\"\", { name: \"firstName\", type: \"text\", placeholder: \"First Name\" }, { required: true }),\n lastName: new FormControl(\"\", { name: \"lastName\", type: \"text\", placeholder: \"Last Name\" }, { required: true }),\n contactNumber: new FormControl(\"\", { name: \"contactNumber\", type: \"number\", placeholder: \"Contact Number\" }, { required: true,pattern: CONTACT_NUMBER_REGEX }),\n email: new FormControl(\"\", { name: \"email\", type: \"email\", placeholder: \"Email Address\" }, { required:true,pattern: EMAIL_REGEX }),\n idType: new FormControl(\"\", { name: \"idType\", type: \"select\", placeholder: \"ID Type\", options: this.idTypes }, { required: true }),\n idNumber: new FormControl(\"\", { name: \"idNumber\", type: \"text\", placeholder: \"ID Number / Passport Number\" }, {required:true}),\n });\n //console.log(callMeBackForm);\n this.state = {\n callMeBackForm: callMeBackForm,\n isSubmitted: false,\n error: null,//\"We've encountered a technical issue. Please try again later\",\n showSpinner: false\n };\n this.handleChange = this.handleChange.bind(this);\n }\n\n /**\n * @author SSW\n * @description this function is used for updating form on blur\n */\n updateForm() {\n this.state.callMeBackForm.updateForm();\n let state = Object.assign({}, this.state.callMeBackForm);\n this.setState(state);\n }\n\n /**\n * @author SSW\n * @description this function is used for handling changes\n * @param {*} event\n */\n handleChange(event) {\n event && event.persist();\n tagging.tagCaptureInput();\n let target = event.target;\n let state = Object.assign({}, this.state);\n state.callMeBackForm.getControl(target.name).setValue(target.value);\n if (target.name === 'idType' && target.value === 'PASSPORT') {\n let control = state.callMeBackForm.getControl('idNumber');\n control.clearValidators();\n control.setValidator({ required: true, pattern: PASSPORT_REGEX, minLength: 7, maxLength: 13, placeholder: 'Passport Number' });\n } else if (target.name === 'idType' && target.value === 'SAID') {\n let control = state.callMeBackForm.getControl('idNumber');\n control.clearValidators();\n control.setValidator({ required: true, minLength: 13, maxLength: 13, validators: [Validator.validateRSAIdNumber], placeholder: 'ID Number' })\n } else if (target.name === 'idType') {\n let control = state.callMeBackForm.getControl('idNumber');\n control.clearValidators();\n }\n\n //console.log(state);\n this.setState(state);\n this.updateForm(event)\n }\n\n /**\n * @author SSW\n * @description this function is used for saving leads\n * @param {*} event\n */\n saveDetails(event) {\n try {\n\n this.setState({\n error:null,\n showSpinner: true\n });\n let values = this.state.callMeBackForm.getValues();\n //let param = this.state.callMeBackForm.getValues();\n let param = {\n \"altNumber\": values.contactNumber,\n \"emailAddress\": values.email,\n \"name\": values.firstName,\n \"requestType\": \"leads_new\",\n \"surname\": values.lastName,\n \"channel\": \"ONLINE\",\n \"msisdn\": values.contactNumber,\n \"idDocType\": values.idType,\n \"idNumber\": values.idNumber\n }\n\n //console.log(param);\n let LEAD_URL = \"/cloud/api/vetting-manage/customers/leads\";//\"http://vod-ms-swagger-combined.qa.cloud.vodacom.corp/vod-ms-vetting-manage/public-services/vetting/manage/customers/leads\";\n axios.post(LEAD_URL, param, {\n 'Content-Type': 'application/json'\n })\n .then(\n (success) => {\n //console.log(success);\n if (success.status === 200) {\n this.setState({\n isSubmitted: true,\n showSpinner: false\n });\n window.scrollTo(0, 0);\n }\n }\n )\n .catch(\n (error) => {\n //console.error(error);\n tagging.tagApiError();\n this.setState({\n showSpinner: false,\n error: \"We've encountered a technical issue. Please try again later\" });\n window.scrollTo(0, 0);\n }\n )\n } catch (error) { }\n }\n\n /**\n * @author SSW\n * @param {*} control\n * @param {*} key\n * @description this function is uses for creating controlled UI\n */\n getControl(control, key) {\n let [value, config, validation] = [control.value, control.config, control.validatorFn]\n let template = \"\";\n switch (config.type) {\n case (\"text\"):\n case (\"number\"):\n case (\"email\"):\n template = (\n
\n this.handleChange(e)}\n />\n
);\n break;\n case (\"select\"):\n template = (\n
\n this.updateForm(e)}\n >\n {\n config.options.map((option, i) => {\n return \n })\n }\n \n
\n )\n break;\n default:\n template = \"\";\n }\n return template;\n }\n\n /**\n * @author SSW\n * @param {*} data\n * @description this function will be executed on alert close\n */\n onAlertClose(data) {\n try {\n this.setState({ error: null });\n } catch (error) {\n //console.error(error);\n }\n }\n\n /**\n * @author SSW\n * @description this function is used for creating UI\n */\n render() {\n let state = this.state;\n tagging.tagPageLoad();\n return (\n [\n state.showSpinner ? : null,\n state.error ? this.onAlertClose(e)}>{state.error} : null,\n !state.isSubmitted ? : null,\n !state.isSubmitted ?
\n
\n \n
Let us call you back
\n
\n Please enter your details below and a call centre agent will get\n back to you as soon as possible.\n
\n
\n
\n
\n {Object.values(this.state.callMeBackForm.controls).map((control, key) => {\n return this.getControl(control, key.toString());\n })}\n
\n
\n \n
\n\n
\n\n
: null,\n state.isSubmitted ? : null\n ]\n );\n }\n}\n\nexport default CallMeBack;\n","\nimport React, { Component } from 'react';\nimport CallMeBack from './Component/CallMeBack/CallMeBack';\nimport './Global/css/page_structure.css';\nclass App extends Component{\n render() {\n return (\n
\n
\n \n
\n
\n );\n }\n\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}