{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_urbanelectric/cartridge/client/default/js/components/utils.js","webpack:///./cartridges/app_urbanelectric/cartridge/client/default/js/countryFormSelect.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/util.js","webpack:///./cartridges/app_urbanelectric/cartridge/client/default/js/components/dropdown.js","webpack:///./cartridges/app_urbanelectric/cartridge/client/default/js/components/countryFormSelect.js"],"names":["installedModules","__webpack_require__","moduleId","module","i","l","exports","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","getParameter","paramName","val","params","window","location","search","substring","split","length","removeParam","sourceURL","rtn","paramsArr","queryString","indexOf","splice","join","updateQueryStringParameter","uri","re","RegExp","separator","match","replace","arraymove","arr","fromIndex","toIndex","element","processInclude","require","$","document","ready","_typeof","iterator","constructor","include","keys","forEach","buildConfiguratorDropdown","$dropDownEl","appendOption","v","groupName","hasClass","showPrice","isSharedLink","id","dropdownData","selectedValueId","pidParam","selected","$dropdownmenu","append","createConfiguratorDesktopMenuOption","attr","$selectmenu","createConfiguratorMobileSelectOption","isScrollable","removeClass","utils","children","$customDropdown","$mobileSelectContainer","$mobileSelect","data","addClass","valueGroups","group","currentGroup","DisplayName","values","Values","createDesktopMenuHeader","customerVisible","buildBasicDropdown","createOptions","createDesktopMenuOption","createMobileSelectOption","Array","isArray","optionValue","label","removeInvalidClass","container","$customDropdownToggle","searchChar","timer","newHeader","createElement","setAttribute","textContent","option","$el","setButtonText","text","newMenuOp","newSelectOp","displayValue","price","sales","formatted","note","initializeDropDowns","not","each","type","this","on","initDropDowns","setVal","optionVal","mobileMenu","selectedOpt","dropdownmenu","parent","dropdownContainer","siblings","find","concat","lastClickedDropdown","removeAttr","prop","trigger","mobileSelectVal","textVal","mobileSelectContainer","topLevelDropdownContainer","button","html","dropdownButton","customDropDownContainer","change","setInitialVal","selectedText","updateValidationStyle","target","observer","MutationObserver","mutations","mutation","customdropdown","desktopdropdown","config","attributes","childList","characterData","index","observe","handleKeyboard","e","stopPropagation","String","fromCharCode","which","toUpperCase","matches","filter","trim","startsWith","firstMatch","first","clearTimeout","setTimeout","dropdown","showErrors","preventDefault","setCustomValidity","validity","valid","validationMessage","patternMismatch","rangeOverflow","rangeUnderflow","tooLong","tooShort","valueMissing","closest","parents","$invalidEl","headerHeight","$header","height","eq","offset","top","animate","scrollTop","selectCountryUpdate","hasStates","countryCode","countrySelect","countryListVal","zipName","skipPostalCode","countryData","actionPage","$this","selectedCountryCode","JSON","parse","phonePrefix","shippingPhone","$accountPhone","$stateWrapper","event","$currentFormStateWrapper","stateName","stateLabel","$addressTwo","dynamicForms","addressDetails","stateCode","skipState","skip","prev","optionsStatesMobile","map","state","optionsStatesDesktop","required","requiredText","empty","$currentFormZipWrapper","postalCode","postalCodeRequired","postalCodePattern","pattern","after","remove","show","hide","field","fieldIsRequired","formGroup","off","selectDropdown"],"mappings":"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","file":"cartridges/app_urbanelectric/cartridge/static/default/js/countryFormSelect.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 191);\n","module.exports = {\n getParameter: function (paramName) {\n var searchString = window.location.search.substring(1),\n i,\n val,\n params = searchString.split('&');\n\n for (i = 0; i < params.length; i++) {\n val = params[i].split('=');\n\n if (val[0] === paramName) {\n return val[1];\n }\n }\n return null;\n },\n removeParam: function (key, sourceURL) {\n var rtn = sourceURL.split('?')[0],\n param,\n paramsArr = [],\n queryString = (sourceURL.indexOf('?') !== -1) ? sourceURL.split('?')[1] : '';\n if (queryString !== '') {\n paramsArr = queryString.split('&');\n for (var i = paramsArr.length - 1; i >= 0; i -= 1) {\n param = paramsArr[i].split('=')[0];\n if (param === key) {\n paramsArr.splice(i, 1);\n }\n }\n rtn = rtn + '?' + paramsArr.join('&');\n }\n return rtn;\n },\n updateQueryStringParameter: function (uri, key, value) {\n var re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');\n var separator = uri.indexOf('?') !== -1 ? '&' : '?';\n if (uri.match(re)) {\n return uri.replace(re, '$1' + key + '=' + value + '$2');\n }\n return uri + separator + key + '=' + value;\n },\n\n arraymove: function (arr, fromIndex, toIndex) {\n var element = arr[fromIndex];\n arr.splice(fromIndex, 1);\n arr.splice(toIndex, 0, element);\n }\n};\n","'use strict';\n\nvar processInclude = require('base/util');\n\n$(document).ready(function () {\n processInclude(require('./components/countryFormSelect'));\n});\n","'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar $customDropdownToggle = '.custom-dropdown-toggle';\nvar $mobileSelectContainer = '.mobile-select-container';\nvar $mobileSelect = '.mobile-select';\nvar $customDropdown = '.custom-dropdown';\nvar searchChar = '';\nvar timer = null;\n\nvar createDesktopMenuHeader = function (groupName) {\n var newHeader = document.createElement('h6');\n\n newHeader.setAttribute('class', 'dropdown-header');\n newHeader.textContent = groupName;\n\n return newHeader;\n};\n\nvar createDesktopMenuOption = function (option, $el) {\n var newMenuOp = document.createElement('div');\n var setButtonText = function (text) {\n if (option.selected) {\n $el.children($customDropdown).children($customDropdownToggle).text(text);\n }\n };\n\n // add 'dropdown-item' class to tie into jQuery dropdown logic\n newMenuOp.setAttribute('class', 'dropdown-item');\n\n // set the data option val, if value passed\n if (option.value) {\n newMenuOp.setAttribute('data-option-val', option.value);\n }\n\n // set the text content\n if (option.label) {\n newMenuOp.textContent = option.label;\n setButtonText(option.label);\n } else if (option.value) {\n newMenuOp.textContent = option.value;\n setButtonText(option.value);\n }\n\n // set the id, if passed\n if (option.id) {\n newMenuOp.setAttribute('id', option.id);\n }\n\n return newMenuOp;\n};\n\nvar createMobileSelectOption = function (option) {\n var newSelectOp = document.createElement('option');\n\n // add 'dropdown-item' class to tie into jQuery dropdown logic\n newSelectOp.setAttribute('class', 'dropdown-item');\n\n // set value if passed\n if (option.value) {\n newSelectOp.setAttribute('value', option.value);\n }\n\n // set textContent based on attributes passed\n if (option.label) {\n newSelectOp.textContent = option.label;\n } else if (option.groupName && option.value) {\n newSelectOp.textContent = option.groupName + ' - ' + option.value;\n } else if (option.value) {\n newSelectOp.textContent = option.value;\n }\n\n // set id if passed\n if (option.id) {\n newSelectOp.setAttribute('id', option.id);\n }\n\n // set selected if passed\n if (option.selected) {\n newSelectOp.setAttribute('selected', option.selected);\n }\n\n return newSelectOp;\n};\n\nvar createConfiguratorDesktopMenuOption = function (option, $el) {\n var newMenuOp = document.createElement('div');\n var setButtonText = function (text) {\n if (option.value.selected) {\n $el.children($customDropdown).children($customDropdownToggle).text(text);\n }\n };\n\n // set the text content\n if (option.value.displayValue) {\n newMenuOp.textContent = option.value.displayValue;\n setButtonText(option.value.displayValue);\n }\n\n // add 'dropdown-item' class to tie into jQuery dropdown logic\n newMenuOp.setAttribute('class', 'dropdown-item');\n\n if (option.value.displayValue && option.value.showPrice) {\n newMenuOp.textContent = option.value.displayValue + ' – starting at ' + option.value.price.sales.formatted;\n } else if (option.value.displayValue) {\n var note = option.value.note ? ' (' + option.value.note + ')' : '';\n newMenuOp.textContent = option.value.displayValue + note;\n }\n\n // set the id, if passed\n if (option.value.id) {\n newMenuOp.setAttribute('id', option.value.id);\n newMenuOp.setAttribute('data-option-val', option.value.id);\n }\n\n return newMenuOp;\n};\n\nvar createConfiguratorMobileSelectOption = function (option) {\n var newSelectOp = document.createElement('option');\n\n // add 'dropdown-item' class to tie into jQuery dropdown logic\n newSelectOp.setAttribute('class', 'dropdown-item');\n\n // set value if passed\n if (option.value.displayValue) {\n newSelectOp.setAttribute('value', option.value.displayValue);\n }\n // set textContent based on attributes passed\n if (option.groupName && option.value.displayValue) {\n newSelectOp.textContent = option.groupName + ' - ' + option.value.displayValue;\n } else if (option.value.displayValue) {\n newSelectOp.textContent = option.value.displayValue;\n }\n\n // set id if passed\n if (option.value.id) {\n newSelectOp.setAttribute('id', option.value.id);\n }\n\n // set selected if passed\n if (option.value.selected) {\n newSelectOp.setAttribute('selected', option.value.selected);\n }\n\n return newSelectOp;\n};\n\n/*\n* Creates dropdown DOM elements based on configurator data\n*/\nvar buildConfiguratorDropdown = function ($dropDownEl) {\n var isScrollable = false;\n var isSharedLink = utils.getParameter('shared');\n var pidParam = utils.getParameter('pid');\n\n // desktop dropdown element\n var $dropdownmenu = $dropDownEl.children($customDropdown).children('.dropdown-menu');\n // mobile select element\n var $selectmenu = $dropDownEl.children($mobileSelectContainer).children($mobileSelect);\n var dropdownData = $dropDownEl.data('dropdown-data');\n var appendOption = function (v, groupName) {\n if ($dropDownEl.hasClass('sizedropdown')) {\n v.showPrice = true;\n }\n\n if ((isSharedLink && v.id === dropdownData.selectedValueId) || (isSharedLink && v.id === pidParam)) {\n v.selected = true;\n }\n\n $dropdownmenu.append(createConfiguratorDesktopMenuOption({ value: v }, $dropDownEl));\n\n if (groupName && $dropdownmenu.attr('show-group-name') === 'true') {\n $selectmenu.append(createConfiguratorMobileSelectOption({ value: v, groupName: groupName }));\n } else {\n $selectmenu.append(createConfiguratorMobileSelectOption({ value: v }));\n }\n\n if (!isScrollable) {\n // control overflow property for IE-11\n isScrollable = true;\n $dropdownmenu.removeClass('disable-scroll');\n }\n };\n if (dropdownData) {\n $dropDownEl.addClass('dropdown-inited');\n\n if (dropdownData.valueGroups) {\n Object.keys(dropdownData.valueGroups).forEach(function (group) {\n // ex. primary-finish.valueGroups.standard\n var currentGroup = dropdownData.valueGroups[group];\n // ex. 'Standard'\n var groupName = currentGroup.DisplayName;\n // ex. primary-finish.valueGroups.standard.values = [ 001 ]\n var values = currentGroup.Values;\n // create the 'dropdown-header' DOM elements\n $dropdownmenu.append(createDesktopMenuHeader(groupName));\n values.forEach(function (value) {\n dropdownData.values.forEach(function (v) {\n if (v.id === value && v.customerVisible) {\n appendOption(v, groupName);\n }\n });\n });\n });\n } else if (dropdownData.values) {\n var values = dropdownData.values;\n values.forEach(function (v) {\n appendOption(v);\n });\n }\n }\n};\n\n/*\n* Creates dropdown DOM elements based on a basic array or stringified array\n*/\nvar buildBasicDropdown = function ($dropDownEl) {\n var isScrollable = false;\n // desktop dropdown element\n var $dropdownmenu = $dropDownEl.children($customDropdown).children('.dropdown-menu');\n // mobile select element\n var $selectmenu = $dropDownEl.children($mobileSelectContainer).children($mobileSelect);\n var dropdownData = $dropDownEl.data('dropdown-data');\n var createOptions = function (value) {\n $dropdownmenu.append(createDesktopMenuOption({ value: value }));\n $selectmenu.append(createMobileSelectOption({ value: value }));\n if (!isScrollable) {\n // control overflow property for IE-11\n isScrollable = true;\n $dropdownmenu.removeClass('disable-scroll');\n }\n };\n\n // handle variable type of dropdown-data\n // can take an array or comma seperated string\n\n if (typeof dropdownData === 'string') {\n dropdownData.split(',').forEach(function (value) {\n createOptions(value);\n });\n } else if (Array.isArray(dropdownData)) {\n dropdownData.forEach(function (value) {\n var optionValue = value.hasOwnProperty('label') ? value.label : value;\n\n createOptions(optionValue);\n });\n }\n};\n\n/*\n* Toggles invalid class if present. Used to update look when dropdown changs\n*/\nvar removeInvalidClass = function (container) {\n if (container.hasClass('invalid-dropdown')) {\n container.removeClass('invalid-dropdown');\n }\n};\n\n/**\n * Init dropdown\n */\nfunction initializeDropDowns() {\n var $dropdownEls = $('.custom-dropdown-container').not('.address-dropdown');\n\n $dropdownEls.each(function () {\n var type = $(this).data('dropdown-type') || null;\n\n if ($(this).data('dropdown-data')) {\n if (type === 'configurator' && !$(this).hasClass('dropdown-inited')) {\n buildConfiguratorDropdown($(this));\n } else {\n buildBasicDropdown($(this));\n }\n }\n });\n}\n\n$(document).on('initDropDowns:reinit', initializeDropDowns);\n\nmodule.exports = {\n initDropDowns: function () {\n initializeDropDowns();\n },\n\n setVal: function () {\n $(document).on('click', '.dropdown-item:not(.address-dropdown-item)', function () {\n let dropdownmenu = $(this).parent();\n\n if (dropdownmenu.hasClass('variation')) { return; }\n\n let optionVal = $(this).data('option-val'),\n dropdownContainer = dropdownmenu.parent(),\n mobileMenu = dropdownContainer.siblings($mobileSelectContainer).children($mobileSelect),\n selectedOpt = mobileMenu.find(`option[id=\"${optionVal}\"]`);\n\n if (!mobileMenu.length) {\n mobileMenu = window.lastClickedDropdown;\n }\n\n // remove selected attribute from any children\n mobileMenu.children().removeAttr('selected');\n\n if (selectedOpt.length) {\n selectedOpt.prop('selected', true).attr('selected', true);\n } else {\n mobileMenu.val(optionVal);\n }\n\n dropdownContainer.children('button').val(mobileMenu.val()).text(mobileMenu.val());\n mobileMenu.trigger('change');\n });\n\n $(document).on('change', '.mobile-select:not(.addressSelector)', function () {\n var mobileSelectVal = $(this).val(),\n textVal = $('option:selected', this).text(),\n mobileSelectContainer = $(this).parent(),\n topLevelDropdownContainer = mobileSelectContainer.parent(),\n button = mobileSelectContainer.siblings($customDropdown).children($customDropdownToggle);\n\n // if no select value, set button html to \"-\"\n if (mobileSelectVal === '' || mobileSelectVal === null) {\n button.html('-');\n } else if (topLevelDropdownContainer.data('dropdown-type') === 'geo') {\n // due to country and state codes, use the textVal rather than the select's value\n button.text(textVal);\n } else {\n button.text(mobileSelectVal);\n }\n\n $(document).trigger('select:changed', [$(this)]);\n\n window.lastClickedDropdown = $(this);\n\n removeInvalidClass(topLevelDropdownContainer);\n });\n\n $(document).on('click', '.dropdown-item.address-dropdown-item', function () {\n var optionVal = $(this).data('option-val');\n var textVal = $(this).text();\n var parent = $(this).parent();\n var dropdownButton = parent.siblings('.dropdown-toggle');\n var customDropDownContainer = parent.parent();\n var mobileMenu = customDropDownContainer.siblings($mobileSelectContainer).children('.addressSelector');\n // set the button value and html to display\n dropdownButton.val(optionVal);\n dropdownButton.text(textVal);\n // set the mobile select value\n mobileMenu.val(optionVal);\n // call change to trigger form update functions\n mobileMenu.change();\n\n removeInvalidClass(customDropDownContainer.parent());\n });\n $(document).on('change', '.addressSelector.mobile-select', function () {\n var mobileSelectVal = $(this).val();\n var textVal = $('option:selected', this).text();\n var mobileSelectContainer = $(this).parent();\n var button = mobileSelectContainer.siblings($customDropdown).children($customDropdownToggle);\n\n // set the button value\n button.val(mobileSelectVal);\n\n // if no select value, set button html to -\n if (mobileSelectVal === '') {\n button.text('new address');\n } else {\n button.text(textVal);\n }\n\n removeInvalidClass(mobileSelectContainer.parent());\n });\n },\n\n setInitialVal: function () {\n var $dropdownEls = $('*[data-dropdown-type=\"geo\"], *[data-dropdown-type=\"quantity\"]');\n $dropdownEls.each(function () {\n var selected = $(this).children($mobileSelectContainer).children($mobileSelect).find('option:selected');\n\n if (selected) {\n // if select element has an option with select set on load, set the button text\n var selectedText = selected.text();\n $(this).children($customDropdown).children($customDropdownToggle).text(selectedText);\n }\n });\n },\n\n updateValidationStyle: function () {\n var target = $('.custom-dropdown-feedback');\n\n // create an observer instance\n var observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n var mobileselect = $(mutation.target).siblings('.mobile-select');\n var customdropdown = mobileselect.parent().siblings('.custom-dropdown');\n var desktopdropdown = customdropdown.children('.custom-dropdown-toggle');\n var label = customdropdown.siblings('label');\n\n desktopdropdown.addClass('is-invalid');\n label.addClass('is-invalid');\n });\n });\n\n var config = { attributes: true, childList: true, characterData: true };\n\n target.each(function (index, element) {\n observer.observe($(element)[0], config);\n });\n },\n\n handleKeyboard: function () {\n $(document).on('keypress', '.custom-dropdown-container, .state-wrapper', function (e) {\n e.stopPropagation();\n\n searchChar += String.fromCharCode(e.which).toUpperCase();\n\n var matches = $(this).find('option').filter(function () {\n var text = $(this).text().trim().toUpperCase();\n return text.startsWith(searchChar);\n }),\n mobileMenu = $(this).find($mobileSelectContainer).children($mobileSelect);\n\n\n if (matches.length > 0) {\n $(this).find('.custom-dropdown-toggle').trigger('click');\n\n var firstMatch = matches.first();\n var selectedOpt = mobileMenu.find(`option[id=\"${firstMatch.attr('id')}\"]`);\n\n if (selectedOpt.length) {\n // remove previously selected value\n mobileMenu.children().removeAttr('selected');\n selectedOpt.prop('selected', true).attr('selected', true);\n }\n\n mobileMenu.val(firstMatch.val());\n mobileMenu.change();\n }\n\n // allow multiple character search with timer, reset after 1 second\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n\n timer = setTimeout(function () {\n timer = null;\n searchChar = '';\n }, 1000);\n });\n }\n};\n","var dropdown = require('./dropdown');\n\n// build state select depending on country\nvar select = function (stateName, stateLabel, optionsStatesDesktop, optionsStatesMobile, required) {\n var requiredText = required ? 'required' : '';\n return '
'\n + ''\n + '
'\n + ''\n + '
' + optionsStatesDesktop + '
'\n + '
Please select a State
'\n + '
'\n + '
'\n + ''\n + '
Please select a State
'\n + '
';\n};\n\n// build state input depending on country\nvar inputState = function (stateName, stateLabel, stateCode) {\n var requiredText = stateCode.required ? 'required' : '';\n return '
'\n + ''\n + ''\n + '
Please select a State
'\n + '
';\n};\n\n// build zip input depending on country\nvar zipInput = function (required, zipName, pattern, label) {\n var requiredText = required ? 'required' : '';\n return '
'\n + ''\n + ''\n + '
Please enter a ZIP Code
'\n + '
';\n};\n\n/**\n * build state field depending on selected country\n * @param {string} countryCode - country code id\n * @param {Object} countrySelect - country select\n * @param {Object} event - country select event\n */\nfunction buildStateSelector(countryCode, countrySelect, event) {\n var countryListVal = $('#countryList').val();\n var countryListObj = JSON.parse(countryListVal);\n var countryData = countryListObj[countryCode];\n var $currentFormStateWrapper = countrySelect.closest('.state-parent-form');\n var stateName = $currentFormStateWrapper.find('.state-wrapper').data('state-name');\n var stateLabel = countryCode === 'US' ? 'STATE' : 'STATE / PROVINCE / REGION';\n var addressTwoLabel = 'ADDRESS 2';\n var $addressTwo = $currentFormStateWrapper.find('.shippingAddressTwo');\n var hasStates = countryData\n && countryData.dynamicForms\n && countryData.dynamicForms.addressDetails\n && countryData.dynamicForms.addressDetails.stateCode\n && countryData.dynamicForms.addressDetails.stateCode.values;\n var skipState = countryData\n && countryData.dynamicForms\n && countryData.dynamicForms.addressDetails\n && countryData.dynamicForms.addressDetails.stateCode\n && countryData.dynamicForms.addressDetails.stateCode.skip;\n\n if ($addressTwo.length) {\n $addressTwo.prev().text(addressTwoLabel);\n }\n\n if (hasStates) {\n var optionsStatesMobile = countryData.dynamicForms.addressDetails.stateCode.values.map(function (state) {\n return '';\n }).join('');\n\n var optionsStatesDesktop = countryData.dynamicForms.addressDetails.stateCode.values.map(function (state) {\n return '
' + state.label + '
';\n }).join('');\n\n $currentFormStateWrapper.find('.state-wrapper').html(select(stateName, stateLabel, optionsStatesDesktop, optionsStatesMobile, countryData.dynamicForms.addressDetails.stateCode.required));\n dropdown.updateValidationStyle();\n } else if (skipState) {\n $currentFormStateWrapper.find('.state-wrapper').empty();\n\n if (countrySelect.closest('.shipping-form').length) {\n $(document).trigger('emptyStates:init', [event]);\n }\n } else {\n $currentFormStateWrapper.find('.state-wrapper').html(inputState(stateName, stateLabel, countryData.dynamicForms.addressDetails.stateCode));\n\n if (countrySelect.closest('.shipping-form').length) {\n $(document).trigger('emptyStates:init', [event]);\n }\n }\n}\n\n/**\n * build postal field depending on selected country\n * @param {string} countryCode - country code id\n * @param {Object} countrySelect - country select\n */\nfunction buildPostalInput(countryCode, countrySelect) {\n var countryListVal = $('#countryList').val();\n var countryListObj = JSON.parse(countryListVal);\n var countryData = countryListObj[countryCode];\n var $currentFormZipWrapper = countrySelect.closest('.state-parent-form');\n var zipName = $currentFormZipWrapper.find('.zip-wrapper').data('zip-name');\n var skipPostalCode = countryData\n && countryData.dynamicForms\n && countryData.dynamicForms.addressDetails\n && countryData.dynamicForms.addressDetails.postalCode\n && countryData.dynamicForms.addressDetails.postalCode.skip;\n var postalCodeRequired = countryData\n && countryData.dynamicForms\n && countryData.dynamicForms.addressDetails\n && countryData.dynamicForms.addressDetails.postalCode\n && countryData.dynamicForms.addressDetails.postalCode.required;\n var postalCodePattern = countryData\n && countryData.dynamicForms\n && countryData.dynamicForms.addressDetails\n && countryData.dynamicForms.addressDetails.postalCode\n && countryData.dynamicForms.addressDetails.postalCode.pattern;\n var required = postalCodeRequired ? 'required' : '';\n var pattern = postalCodePattern || '';\n var label = countryCode === 'US' ? 'ZIP CODE' : 'Zip / Postal Code';\n\n if (skipPostalCode) {\n $currentFormZipWrapper.find('.zip-wrapper').empty();\n } else {\n $currentFormZipWrapper.find('.zip-wrapper').html(zipInput(required, zipName, pattern, label));\n\n if (!pattern) {\n $currentFormZipWrapper.find('.zip-wrapper input').removeAttr('pattern');\n }\n }\n}\n\n/**\n * Show validation error\n * @param {jQuery.event} e - Event to be canceled if form is invalid.\n * @returns {void}\n */\nfunction showErrors(e) {\n e.preventDefault();\n this.setCustomValidity('');\n if (!this.validity.valid) {\n var validationMessage = this.validationMessage;\n $(this).addClass('is-invalid');\n if (this.validity.patternMismatch && $(this).data('pattern-mismatch')) {\n validationMessage = $(this).data('pattern-mismatch');\n }\n if ((this.validity.rangeOverflow || this.validity.rangeUnderflow)\n && $(this).data('range-error')) {\n validationMessage = $(this).data('range-error');\n }\n if ((this.validity.tooLong || this.validity.tooShort)\n && $(this).data('range-error')) {\n validationMessage = $(this).data('range-error');\n }\n if (this.validity.valueMissing && $(this).data('missing-error')) {\n validationMessage = $(this).data('missing-error');\n }\n if (this.validity.valueMissing && $(this).closest('form').hasClass('share-form')) {\n validationMessage = 'Required field';\n }\n $(this).parents('.form-group').find('.invalid-feedback')\n .text(validationMessage);\n\n // Add 'is-invalid' for custom select\n if ($(this).hasClass('mobile-select')) {\n var customdropdown = $(this).parent().siblings('.custom-dropdown');\n var desktopdropdown = customdropdown.children('.custom-dropdown-toggle');\n var label = customdropdown.siblings('label');\n\n desktopdropdown.addClass('is-invalid');\n label.addClass('is-invalid');\n }\n\n var $invalidEl = $(document).find('.is-invalid').parent();\n\n if ($invalidEl.length && $('.create-account-form').length) {\n var $header = $('header');\n var headerHeight = $header.length ? $header.height() : 0;\n var target = $invalidEl.eq(0).offset().top - headerHeight;\n $('html, body').animate({\n scrollTop: target\n }, 0);\n }\n }\n}\n\n/**\n * Reinit validation events\n * @returns {void}\n */\nfunction reinitValidation() {\n $('form input, form select, form textarea').off('invalid', showErrors).on('invalid', showErrors);\n}\n\n/**\n * Change required status of all address details except state, country, and postal code\n * @param {Object} countryData - data validation schema for particular country\n */\nfunction otherAddressRequirements(countryData) {\n var fieldsToDo = ['address1', 'city'];\n if (countryData && countryData.dynamicForms && countryData.dynamicForms.addressDetails) {\n fieldsToDo.forEach(function (field) {\n if (countryData.dynamicForms.addressDetails[field]) {\n var fieldIsRequired = countryData.dynamicForms.addressDetails[field].required;\n $('#' + field).prop('required', fieldIsRequired);\n var formGroup = $('#' + field).closest('.form-group');\n if (fieldIsRequired && !formGroup.hasClass('required')) {\n formGroup.addClass('required');\n }\n\n if (!fieldIsRequired && formGroup.hasClass('required')) {\n formGroup.removeClass('required');\n }\n }\n });\n }\n}\n\nmodule.exports = {\n selectCountryUpdate: function () {\n $(document).on('change', '.country-select', function (e) {\n var actionPage = $('.page').data('action');\n e.preventDefault();\n var $this = $(this);\n var selectedCountryCode = $this.find('option:selected').attr('id') || $this.find('option[selected]').attr('id');\n var countryListVal = $('#countryList').val();\n var countryListObj = JSON.parse(countryListVal);\n var countryData = countryListObj[selectedCountryCode];\n var phonePrefix = countryData && countryData.phonePrefix ? countryData.phonePrefix : '';\n var shippingPhone = $('.shippingPhoneNumber');\n var $accountPhone = $('.phone-number-prefix');\n\n if (!$this.closest('.custom-dropdown-container').parent().hasClass('tbd-country-wrapper')) {\n if (phonePrefix || selectedCountryCode === 'OT') {\n shippingPhone.val(phonePrefix);\n }\n // updated the phone country code only if the user did not enter the phone number\n if ($accountPhone.val() && $accountPhone.val().length < 10) {\n $accountPhone.val(phonePrefix);\n }\n }\n\n buildStateSelector(selectedCountryCode, $this, e);\n buildPostalInput(selectedCountryCode, $this);\n var $stateWrapper = $('.state-select-wrapper');\n if (selectedCountryCode !== 'US') {\n if (actionPage === 'Account-TradeSignup' && selectedCountryCode === 'OTHER' && $('.country-input-row').length === 0) {\n // Handle free text input\n var name = $(this).attr('name');\n var countryInput = '
'\n + '
'\n + ''\n + ''\n + '
'\n + '