{"version":3,"file":"Shared.CallbackModal-535f21cc229d8c9b10ff.js","mappings":"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","sources":["webpack://@whistleout/webui/./Areas/Shared/js/CallbackModal.js"],"sourcesContent":["(function () {\n 'use strict';\n\n function main() {\n\n var modal = wo$('#call-back-modal');\n if (!modal.length) return;\n var modalData = WhistleOut.readLookupData(modal);\n var data;\n\n var callbackModalController = {\n\n init: function () {\n modal.on('show.bs.modal', function (e) {\n data = WhistleOut.readLookupData(wo$(e.relatedTarget).parent());\n modal.find('[data-gateway-heading]').text(data.heading);\n modal.find('[data-gateway-sub-heading]').text(data.subHeading);\n modal.find('[data-gateway-product-heading]').text(data.productHeading);\n modal.find('[data-original-supplier-name]').text(data.originalSupplierName);\n modal.find('[data-supplier-image]').attr('src', data.supplierImageUrl);\n modal.find('[data-supplier-image]').attr('alt', data.supplierName);\n if (data.hasDevice === true &&\n data.deviceImageUrl &&\n data.deviceImageUrl.length > 0) {\n modal.find('[data-device-image]').attr('src', data.deviceImageUrl);\n modal.find('[data-device-image]').attr('alt', data.productName);\n modal.find('[data-device-image]').show();\n } else {\n modal.find('[data-device-image]').hide();\n }\n modal.find('[data-product-name]').text(data.productName);\n modal.find('[data-price-whole]').text(data.priceWhole);\n if (!data.priceWhole) {\n modal.find('[data-price-currency-symbol]').text('');\n }\n\n modal.find('[data-price-decimal-and-frequency]').text(data.paymentFrequency);\n if (data.showMinTotalCost) {\n modal.find('[data-min-total-cost]').text(data.minTotalCost);\n modal.find('[data-min-total-cost]').show();\n } else {\n modal.find('[data-min-total-cost]').hide();\n }\n\n if (data.hideCallbackTime) {\n modal.find('[data-callback-time]').hide();\n } else {\n modal.find('[data-callback-time]').show();\n }\n modal.find('[data-gateway-option-1]').text(data.option1Text);\n if (data.hideOption2) {\n modal.find('[data-option-2]').hide();\n } else {\n modal.find('[data-gateway-option-2]').text(data.option2Text);\n modal.find('[data-option-2]').show();\n }\n\n if (!data.optInText || data.optInText === '') {\n modal.find('[data-optin]').hide();\n modal.find('[data-privacy]').show();\n } else {\n modal.find('[data-optin]').show();\n modal.find('#optin-label').html(data.optInText);\n modal.find('[data-privacy]').hide();\n }\n });\n\n modal.on('shown.bs.modal', function () {\n modal.find('#fname').focus();\n });\n\n modal.on('hide.bs.modal', function () {\n callbackModalController.clearError();\n modal.find('#fname').val('');\n modal.find('#lname').val('');\n modal.find('#phone').val('');\n modal.find('#email').val('');\n modal.find('#store').val(modal.find('#store option:first').val());\n modal.find('#preferredtime').val(modal.find('#preferredtime option:first').val());\n modal.find('#option1').prop('checked', false);\n modal.find('#option2').prop('checked', false);\n modal.find('#optin').prop('checked', false);\n\n var defaultState = modal.data('default-state');\n modal.find('#state').val(defaultState);\n\n modal.find('[data-form-controls]').show();\n });\n\n modal.find('#callback-modal-submit').click(function () {\n callbackModalController.clearError();\n\n var invalid = false;\n var firstName = modal.find('#fname').val();\n if (firstName.trim() === '') {\n invalid = true;\n callbackModalController.showError('#fname');\n }\n var lastName = modal.find('#lname').val();\n if (lastName.trim() === '') {\n invalid = true;\n callbackModalController.showError('#lname');\n }\n var phone = modal.find('#phone').val();\n if (phone.trim() === '') {\n invalid = true;\n callbackModalController.showError('#phone');\n } else if (!new RegExp(modal.find('#phone').data('validation-regex')).test(phone.trim())) {\n invalid = true;\n callbackModalController.showError('#phone', true);\n }\n\n var email = modal.find('#email').val();\n if (email.trim() === '') {\n invalid = true;\n callbackModalController.showError('#email');\n } else if (!new RegExp(modal.find('#email').data('validation-regex')).test(email.trim())) {\n invalid = true;\n callbackModalController.showError('#email', true);\n }\n\n var storeList = modal.find('#store');\n var store = storeList.val();\n\n var stateList = modal.find('#state');\n var state = stateList.val();\n if (stateList.length > 0 && state.trim() === '') {\n invalid = true;\n callbackModalController.showError('#state');\n }\n\n if (modal.find('[data-optin]').is(':visible') && !modal.find('#optin').is(':checked')) {\n invalid = true;\n callbackModalController.showError('#optin');\n }\n\n if (!invalid) {\n callbackModalController.clearError();\n\n modal.find('button[name=\"modal-submit\"]').attr('disabled', 'disabled');\n modal.find('span[name=\"modal-submit-spinner\"]').show();\n\n var callbackData = {\n gatewayId: data.gatewayId,\n productId: data.productId,\n deviceId: data.deviceId,\n firstName: firstName,\n lastName: lastName,\n phone: phone,\n email: email,\n state: state,\n storeId: store,\n time: modal.find('#preferredtime').val(),\n option1: modal.find('#option1').is(':checked'),\n option2: modal.find('#option2').is(':checked'),\n productUrl: data.productUrl\n };\n\n wo$.ajax({\n url: modal.data('url'),\n type: 'POST',\n data: callbackData,\n dataType: 'json',\n success: function (result) {\n switch (result) {\n case 2:\n callbackModalController.showSubmitError(modalData.alreadySubmitted);\n break;\n case 3:\n callbackModalController.showSubmitError(modalData.invalidPhoneNumber);\n break;\n default:\n modal.find('[data-form-controls]').hide();\n WhistleOut.trackEvent('CallbackPopup', 'Submit', data.supplierId);\n modal.find('[data-submit-success]').show();\n modal.find('button[name=\"modal-submit\"]').attr('disabled', 'disabled');\n modal.find('span[name=\"modal-submit-spinner\"]').hide();\n setTimeout(function () {\n modal.modal('hide');\n }, 5000);\n break;\n }\n },\n error: function () {\n callbackModalController.showSubmitError(modalData.genericError);\n }\n });\n }\n });\n },\n\n showError: function (inputSelector, isInvalidValidation) {\n modal.find(inputSelector).parent().addClass('has-error');\n if (isInvalidValidation === true) {\n modal.find(inputSelector).siblings('[data-validation-error-invalid]').show();\n } else {\n modal.find(inputSelector).siblings('[data-validation-error]').show();\n }\n modal.find('button[name=\"modal-submit\"]').prop('disabled', false);\n modal.find('span[name=\"modal-submit-spinner\"]').hide();\n },\n\n showSubmitError: function (error) {\n modal.find('[data-submit-error]').html(error);\n modal.find('[data-submit-error]').show();\n modal.find('button[name=\"modal-submit\"]').prop('disabled', false);\n modal.find('span[name=\"modal-submit-spinner\"]').hide();\n },\n\n clearError: function () {\n modal.find('.form-group').removeClass('has-error');\n modal.find('[data-validation-error]').hide();\n modal.find('[data-validation-error-invalid]').hide();\n modal.find('[data-submit-error]').hide();\n modal.find('[data-submit-success]').hide();\n modal.find('button[name=\"modal-submit\"]').prop('disabled', false);\n modal.find('span[name=\"modal-submit-spinner\"]').hide();\n }\n };\n\n callbackModalController.init();\n };\n\n WhistleOut.initModule(import.meta.url, main);\n\n}());\n"],"names":["WhistleOut","initModule","import","modal","wo$","length","data","modalData","readLookupData","callbackModalController","init","on","e","relatedTarget","parent","find","text","heading","subHeading","productHeading","originalSupplierName","attr","supplierImageUrl","supplierName","hasDevice","deviceImageUrl","productName","show","hide","priceWhole","paymentFrequency","showMinTotalCost","minTotalCost","hideCallbackTime","option1Text","hideOption2","option2Text","optInText","html","focus","clearError","val","prop","defaultState","click","invalid","firstName","trim","showError","lastName","phone","RegExp","test","email","store","stateList","state","is","callbackData","gatewayId","productId","deviceId","storeId","time","option1","option2","productUrl","ajax","url","type","dataType","success","result","showSubmitError","alreadySubmitted","invalidPhoneNumber","trackEvent","supplierId","setTimeout","error","genericError","inputSelector","isInvalidValidation","addClass","siblings","removeClass"],"sourceRoot":""}