{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_bardot/cartridge/client/default/js/storeLocator.js","webpack:///./cartridges/app_bardot/cartridge/client/default/js/storeLocator/storeLocator.js","webpack:///../sfra/cartridges/app_storefront_base/cartridge/client/default/js/storeLocator/storeLocator.js","webpack:///../sfra/cartridges/app_storefront_base/cartridge/client/default/js/util.js","webpack:///../sfra/cartridges/app_storefront_base/cartridge/client/default/js/components/formValidation.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","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","processInclude","require","$","document","ready","formValidation","baseStoreLocator","geocodingCountryCode","appendToUrl","url","params","newUrl","indexOf","keys","map","encodeURIComponent","join","initMap","mapCanvas","querySelector","dataset","defaultcountrycode","googleMapId","mapid","mapOptions","scrollwheel","zoom","center","google","maps","LatLng","Number","defaultlat","defaultng","mapId","window","Map","selectStore","store","mapMarker","infowindow","getZoom","setZoom","getBounds","contains","getPosition","setCenter","setOptions","content","infoWindowHtml","open","updateMap","skipInit","InfoWindow","mapdiv","attr","JSON","parse","bounds","LatLngBounds","length","forEach","item","storeLocation","latitude","longitude","marker","Marker","position","title","storeDiv","getElementById","ID","addEventListener","addListener","checked","extend","fitBounds","updateStoresResults","data","$resultsDiv","$mapDiv","hasResults","stores","show","hide","empty","radius","searchKey","locations","storesResultsHtml","append","searchStoresUsingCoordinates","$form","method","spinner","innerHTML","val","urlParams","lat","long","ajax","type","dataType","success","stop","prop","search","element","frm","dialog","closest","postalCode","find","formMethod","start","postalCodeCoordinates","sessionStorage","getItem","e","getPostalCodeCoordinatesFromSessionCache","Geocoder","geocode","componentRestrictions","country","results","types","coordinates","geometry","location","toJSON","lng","setItem","stringify","setPostalCodeCoordinatesInSessionCache","init","width","detectLocation","on","navigator","geolocation","getCurrentPosition","coords","submit","preventDefault","this","click","changeRadius","change","searchKeys","events","markerImg","path","fillColor","fillOpacity","scale","strokeColor","strokeWeight","anchor","Point","labelOrigin","lable","parseInt","icon","label","text","toString","color","fontSize","payload","is","serialize","selectedStore","storeID","searchRadius","searchPostalCode","storeDetailsHtml","siblings","html","event","trigger","updateSelectStoreButton","include","formElement","form","removeClass","clearFormErrors","remove","fields","feedbackElement","parent","children","Array","isArray","addClass","error","parents","prepend"],"mappings":"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","file":"default\\js\\storeLocator.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 = 144);\n","'use strict';\r\n\r\nvar processInclude = require('base/util');\r\n\r\n$(document).ready(function () {\r\n processInclude(require('./storeLocator/storeLocator'));\r\n});\r\n","/* globals google */\r\n'use strict';\r\n\r\nvar formValidation = require('base/components/formValidation');\r\nvar baseStoreLocator = require('base/storeLocator/storeLocator');\r\n\r\nvar geocodingCountryCode = 'AU';\r\n\r\n/**\r\n * appends params to a url\r\n *\r\n * @param {string} url - Original url\r\n * @param {Object} params - Parameters to append\r\n * @returns {string} result url with appended parameters\r\n */\r\nfunction appendToUrl(url, params) {\r\n var newUrl = url;\r\n newUrl += (newUrl.indexOf('?') !== -1 ? '&' : '?') + Object.keys(params).map(function (key) {\r\n return key + '=' + encodeURIComponent(params[key]);\r\n }).join('&');\r\n\r\n return newUrl;\r\n}\r\n\r\n/**\r\n * Init google map\r\n * @returns {Object} map - Google Maps Object\r\n */\r\nfunction initMap() {\r\n var mapCanvas = document.querySelector('.map-canvas');\r\n geocodingCountryCode = mapCanvas.dataset.defaultcountrycode;\r\n var googleMapId = mapCanvas.dataset.mapid;\r\n var latlng = new google.maps.LatLng(Number(mapCanvas.dataset.defaultlat), Number(mapCanvas.dataset.defaultng)); // eslint-disable-line\r\n var mapOptions = {\r\n scrollwheel: false,\r\n zoom: 5,\r\n center: latlng,\r\n mapId: googleMapId\r\n };\r\n window.map = new google.maps.Map(mapCanvas, mapOptions);\r\n return window.map;\r\n}\r\n\r\n/**\r\n * This function is invoked when a store is selected by either clicking on the\r\n * - radio button from store results list OR\r\n * - clicking on the marker object\r\n *\r\n * @param {Object} map - Google map object\r\n * @param {Object} store - Store object\r\n * @param {Object} mapMarker - Google map Marker object\r\n * @param {Object} infowindow - Google map InfoWindow object\r\n */\r\nfunction selectStore(map, store, mapMarker, infowindow) {\r\n if (map.getZoom() < 16) {\r\n map.setZoom(16);\r\n }\r\n\r\n if (!map.getBounds().contains(mapMarker.getPosition())) {\r\n map.setCenter(mapMarker.getPosition());\r\n }\r\n\r\n infowindow.setOptions({\r\n content: store.infoWindowHtml\r\n });\r\n infowindow.open(map, mapMarker);\r\n}\r\n\r\n/**\r\n * Uses google maps api to render a map\r\n * @param {boolean} skipInit - whether to skip map init\r\n */\r\nfunction updateMap(skipInit) {\r\n var mapCanvas = document.querySelector('.map-canvas');\r\n var map;\r\n if (!skipInit) {\r\n var googleMapId = mapCanvas.dataset.mapid;\r\n var latlng = new google.maps.LatLng(Number(mapCanvas.dataset.defaultlat), Number(mapCanvas.dataset.defaultng)); // eslint-disable-line\r\n var mapOptions = {\r\n scrollwheel: false,\r\n zoom: 5,\r\n center: latlng,\r\n mapId: googleMapId\r\n };\r\n map = new google.maps.Map(mapCanvas, mapOptions);\r\n } else {\r\n map = window.map;\r\n }\r\n var infowindow = new google.maps.InfoWindow();\r\n\r\n var mapdiv = $('.map-canvas').attr('data-locations');\r\n mapdiv = JSON.parse(mapdiv);\r\n var bounds = new google.maps.LatLngBounds();\r\n if (mapdiv.length) {\r\n if (mapdiv.length > 1) {\r\n Object.keys(mapdiv).forEach(function (key) {\r\n var item = mapdiv[key];\r\n var storeLocation = new google.maps.LatLng(item.latitude, item.longitude);\r\n var marker = new google.maps.Marker({\r\n position: storeLocation,\r\n map: map,\r\n title: item.name\r\n });\r\n\r\n var storeDiv = document.getElementById('input-' + item.ID);\r\n if (storeDiv) {\r\n storeDiv.addEventListener('click', function () {\r\n selectStore(map, item, marker, infowindow);\r\n });\r\n }\r\n\r\n marker.addListener('click', function () {\r\n selectStore(map, item, marker, infowindow);\r\n storeDiv.checked = true;\r\n });\r\n\r\n // Create a minimum bound based on a set of storeLocations\r\n bounds.extend(marker.position);\r\n });\r\n map.fitBounds(bounds);\r\n } else {\r\n var item = mapdiv[0];\r\n var storeLocation = new google.maps.LatLng(item.latitude, item.longitude);\r\n var marker = new google.maps.Marker({\r\n position: storeLocation,\r\n map: map,\r\n title: item.name\r\n });\r\n selectStore(map, item, marker, infowindow);\r\n }\r\n } else {\r\n initMap();\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Renders the results of the search and updates the map\r\n * @param {Object} data - Response from the server\r\n */\r\nfunction updateStoresResults(data) {\r\n var $resultsDiv = $('.results');\r\n var $mapDiv = $('.map-canvas');\r\n var hasResults = data.stores.length > 0;\r\n\r\n if (!hasResults) {\r\n $resultsDiv.hide();\r\n $('.store-locator-no-results').show();\r\n } else {\r\n $resultsDiv.show();\r\n $('.store-locator-no-results').hide();\r\n }\r\n\r\n $resultsDiv.empty()\r\n .data('has-results', hasResults)\r\n .data('radius', data.radius)\r\n .data('search-key', data.searchKey);\r\n\r\n $mapDiv.attr('data-locations', data.locations);\r\n\r\n if (data.storesResultsHtml) {\r\n $resultsDiv.append(data.storesResultsHtml);\r\n }\r\n\r\n if ($mapDiv.data('has-google-api')) {\r\n updateMap(false);\r\n } else {\r\n $('.store-locator-no-apiKey').show();\r\n }\r\n}\r\n\r\n/**\r\n * This function gets the coordinates set within sessionStorage for the postal code entered by the customer.\r\n * This helps reduce the number of API calls to Google\r\n *\r\n * @param {*} postalCode - Postal code entered by customer\r\n * @returns {Object} Coordinates of the postal code\r\n */\r\nfunction getPostalCodeCoordinatesFromSessionCache(postalCode) {\r\n try {\r\n let data = sessionStorage.getItem('storelocatorPostalCodeCoordinates');\r\n let postalCodeCoordinates = data ? JSON.parse(data) : {};\r\n if (postalCode in postalCodeCoordinates) {\r\n return postalCodeCoordinates[postalCode];\r\n }\r\n } catch (e) {\r\n // Session storage is not supported\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * This function sets the coordinates returned by Google geocoding service for the postal code\r\n * entered by the customer within sessionStorage. This helps reduce the number of API calls to Google\r\n *\r\n * @param {*} postalCode - Postal code entered by customer\r\n * @param {*} latitude - Latitude coordinate\r\n * @param {*} longitude - Longitude coordinate\r\n */\r\nfunction setPostalCodeCoordinatesInSessionCache(postalCode, latitude, longitude) {\r\n try {\r\n let data = sessionStorage.getItem('storelocatorPostalCodeCoordinates');\r\n let postalCodeCoordinates = data ? JSON.parse(data) : {};\r\n if (!(postalCode in postalCodeCoordinates)) {\r\n postalCodeCoordinates[postalCode] = {\r\n latitude: latitude,\r\n longitude: longitude\r\n };\r\n }\r\n sessionStorage.setItem('storelocatorPostalCodeCoordinates', JSON.stringify(postalCodeCoordinates));\r\n } catch (e) {\r\n // Session storage is not supported\r\n }\r\n}\r\n\r\n/**\r\n * This function searches for stores within SFCC using the postal code coordinates\r\n *\r\n * @param {*} $form - Form object\r\n * @param {*} latitude - Latitude coordinate\r\n * @param {*} longitude - Longitude coordinate\r\n * @param {*} method - Form method\r\n * @param {*} spinner - Spinner object\r\n */\r\nfunction searchStoresUsingCoordinates($form, latitude, longitude, method, spinner) {\r\n var radius;\r\n if ($('.js-option-selected').length > 0) {\r\n radius = $('.js-option-selected')[0].innerHTML;\r\n } else {\r\n radius = $('#radius').val();\r\n }\r\n var url = $form.attr('action');\r\n var urlParams = { radius: radius };\r\n if (latitude) {\r\n urlParams.lat = latitude;\r\n }\r\n if (longitude) {\r\n urlParams.long = longitude;\r\n }\r\n url = appendToUrl(url, urlParams);\r\n\r\n $.ajax({\r\n url: url,\r\n type: method,\r\n dataType: 'json',\r\n success: function (data) {\r\n spinner.stop();\r\n updateStoresResults(data);\r\n $('.select-store').prop('disabled', true);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Search for stores with new zip code\r\n * @param {HTMLElement} element - the target html element\r\n */\r\nfunction search(element) {\r\n\tvar frm = $('form[name=\"storelocator\"]');\r\n\tformValidation(frm, {});\r\n var dialog = element.closest('.in-store-inventory-dialog');\r\n var spinner = dialog.length ? dialog.spinner() : $.spinner();\r\n var $form = element.closest('.store-locator');\r\n var postalCode = $form.find('[name=\"postalCode\"]').val();\r\n var formMethod = $form.attr('method');\r\n\r\n spinner.start();\r\n\r\n var postalCodeCoordinates = getPostalCodeCoordinatesFromSessionCache(postalCode);\r\n if (postalCodeCoordinates && postalCodeCoordinates.latitude && postalCodeCoordinates.longitude) {\r\n searchStoresUsingCoordinates($form, postalCodeCoordinates.latitude, postalCodeCoordinates.longitude, formMethod, spinner);\r\n return;\r\n }\r\n var geocoder = new google.maps.Geocoder();\r\n\r\n geocoder.geocode({\r\n componentRestrictions: {\r\n country: geocodingCountryCode,\r\n postalCode: postalCode\r\n }\r\n }, function (results) {\r\n var latitude = '';\r\n var longitude = '';\r\n if (results && (results.length > 0) && results[0].types.indexOf('country_code') === -1) {\r\n var coordinates = results[0].geometry.location.toJSON();\r\n latitude = coordinates.lat;\r\n longitude = coordinates.lng;\r\n } else {\r\n spinner.stop();\r\n }\r\n setPostalCodeCoordinatesInSessionCache(postalCode, latitude, longitude);\r\n\r\n searchStoresUsingCoordinates($form, latitude, longitude, formMethod, spinner);\r\n });\r\n}\r\n\r\n\r\nbaseStoreLocator.init = function () {\r\n if ($('.map-canvas').data('has-google-api')) {\r\n var viewport = $(window).width();\r\n if (viewport >= 576) {\r\n initMap();\r\n updateMap(true);\r\n }\r\n } else {\r\n $('.store-locator-no-apiKey').show();\r\n }\r\n};\r\n\r\nbaseStoreLocator.detectLocation = function () {\r\n // clicking on detect location.\r\n $('.detect-location').on('click', function () {\r\n $.spinner().start();\r\n if (!navigator.geolocation) {\r\n $.spinner().stop();\r\n return;\r\n }\r\n\r\n navigator.geolocation.getCurrentPosition(function (position) {\r\n var $detectLocationButton = $('.detect-location');\r\n var url = $detectLocationButton.data('action');\r\n var radius;\r\n if ($('.js-option-selected').length > 0) {\r\n radius = $('.js-option-selected')[0].innerHTML;\r\n } else {\r\n radius = $('#radius').val();\r\n }\r\n var urlParams = {\r\n radius: radius,\r\n lat: position.coords.latitude,\r\n long: position.coords.longitude\r\n };\r\n\r\n url = appendToUrl(url, urlParams);\r\n $.ajax({\r\n url: url,\r\n type: 'get',\r\n dataType: 'json',\r\n success: function (data) {\r\n $.spinner().stop();\r\n updateStoresResults(data);\r\n $('.select-store').prop('disabled', true);\r\n }\r\n });\r\n });\r\n });\r\n};\r\n\r\nbaseStoreLocator.search = function () {\r\n $('.store-locator-container form.store-locator').submit(function (e) {\r\n e.preventDefault();\r\n search($(this));\r\n });\r\n $('.store-locator-container .btn-storelocator-search[type=\"button\"]').click(function (e) {\r\n e.preventDefault();\r\n search($(this));\r\n });\r\n};\r\n\r\nbaseStoreLocator.changeRadius = function () {\r\n $('.store-locator-container .radius').change(function () {\r\n var radius;\r\n if ($('.js-option-selected').length > 0) {\r\n radius = $('.js-option-selected')[0].innerHTML;\r\n } else {\r\n radius = $('#radius').val();\r\n }\r\n var searchKeys = $('.results').data('search-key');\r\n var url = $('.radius').data('action-url');\r\n var urlParams = {};\r\n\r\n if (searchKeys.postalCode) {\r\n urlParams = {\r\n radius: radius,\r\n postalCode: searchKeys.postalCode\r\n };\r\n } else if (searchKeys.lat && searchKeys.long) {\r\n urlParams = {\r\n radius: radius,\r\n lat: searchKeys.lat,\r\n long: searchKeys.long\r\n };\r\n }\r\n\r\n url = appendToUrl(url, urlParams);\r\n var dialog = $(this).closest('.in-store-inventory-dialog');\r\n var spinner = dialog.length ? dialog.spinner() : $.spinner();\r\n spinner.start();\r\n $.ajax({\r\n url: url,\r\n type: 'get',\r\n dataType: 'json',\r\n success: function (data) {\r\n spinner.stop();\r\n updateStoresResults(data);\r\n $('.select-store').prop('disabled', true);\r\n }\r\n });\r\n });\r\n};\r\n\r\n/**\r\n * Initialise common events that can be used for GoogleMaps storelocator\r\n * and GooglePlaces driven storelocator\r\n */\r\nbaseStoreLocator.events = function () {\r\n $('form.store-locator').on('custom:searchStoresUsingCoordinates', function (e, data) {\r\n var spinner = $.spinner();\r\n spinner.start();\r\n var $form = $('form.store-locator');\r\n searchStoresUsingCoordinates($form, data.latitude, data.longitude, 'get', spinner);\r\n });\r\n};\r\n\r\nmodule.exports = baseStoreLocator;\r\n","/* globals google */\r\n'use strict';\r\n\r\n/**\r\n * appends params to a url\r\n * @param {string} url - Original url\r\n * @param {Object} params - Parameters to append\r\n * @returns {string} result url with appended parameters\r\n */\r\nfunction appendToUrl(url, params) {\r\n var newUrl = url;\r\n newUrl += (newUrl.indexOf('?') !== -1 ? '&' : '?') + Object.keys(params).map(function (key) {\r\n return key + '=' + encodeURIComponent(params[key]);\r\n }).join('&');\r\n\r\n return newUrl;\r\n}\r\n\r\n/**\r\n * Uses google maps api to render a map\r\n */\r\nfunction maps() {\r\n var map;\r\n var infowindow = new google.maps.InfoWindow();\r\n\r\n // Init U.S. Map in the center of the viewport\r\n var latlng = new google.maps.LatLng(37.09024, -95.712891);\r\n var mapOptions = {\r\n scrollwheel: false,\r\n zoom: 4,\r\n center: latlng\r\n };\r\n\r\n map = new google.maps.Map($('.map-canvas')[0], mapOptions);\r\n var mapdiv = $('.map-canvas').attr('data-locations');\r\n\r\n mapdiv = JSON.parse(mapdiv);\r\n\r\n var bounds = new google.maps.LatLngBounds();\r\n\r\n // Customized google map marker icon with svg format\r\n var markerImg = {\r\n path: 'M13.5,30.1460153 L16.8554555,25.5 L20.0024287,25.5 C23.039087,25.5 25.5,' +\r\n '23.0388955 25.5,20.0024287 L25.5,5.99757128 C25.5,2.96091298 23.0388955,0.5 ' +\r\n '20.0024287,0.5 L5.99757128,0.5 C2.96091298,0.5 0.5,2.96110446 0.5,5.99757128 ' +\r\n 'L0.5,20.0024287 C0.5,23.039087 2.96110446,25.5 5.99757128,25.5 L10.1445445,' +\r\n '25.5 L13.5,30.1460153 Z',\r\n fillColor: '#0070d2',\r\n fillOpacity: 1,\r\n scale: 1.1,\r\n strokeColor: 'white',\r\n strokeWeight: 1,\r\n anchor: new google.maps.Point(13, 30),\r\n labelOrigin: new google.maps.Point(12, 12)\r\n };\r\n\r\n Object.keys(mapdiv).forEach(function (key) {\r\n var item = mapdiv[key];\r\n var lable = parseInt(key, 10) + 1;\r\n var storeLocation = new google.maps.LatLng(item.latitude, item.longitude);\r\n var marker = new google.maps.Marker({\r\n position: storeLocation,\r\n map: map,\r\n title: item.name,\r\n icon: markerImg,\r\n label: { text: lable.toString(), color: 'white', fontSize: '16px' }\r\n });\r\n\r\n marker.addListener('click', function () {\r\n infowindow.setOptions({\r\n content: item.infoWindowHtml\r\n });\r\n infowindow.open(map, marker);\r\n });\r\n\r\n // Create a minimum bound based on a set of storeLocations\r\n bounds.extend(marker.position);\r\n });\r\n // Fit the all the store marks in the center of a minimum bounds when any store has been found.\r\n if (mapdiv && mapdiv.length !== 0) {\r\n map.fitBounds(bounds);\r\n }\r\n}\r\n\r\n/**\r\n * Renders the results of the search and updates the map\r\n * @param {Object} data - Response from the server\r\n */\r\nfunction updateStoresResults(data) {\r\n var $resultsDiv = $('.results');\r\n var $mapDiv = $('.map-canvas');\r\n var hasResults = data.stores.length > 0;\r\n\r\n if (!hasResults) {\r\n $('.store-locator-no-results').show();\r\n } else {\r\n $('.store-locator-no-results').hide();\r\n }\r\n\r\n $resultsDiv.empty()\r\n .data('has-results', hasResults)\r\n .data('radius', data.radius)\r\n .data('search-key', data.searchKey);\r\n\r\n $mapDiv.attr('data-locations', data.locations);\r\n\r\n if ($mapDiv.data('has-google-api')) {\r\n maps();\r\n } else {\r\n $('.store-locator-no-apiKey').show();\r\n }\r\n\r\n if (data.storesResultsHtml) {\r\n $resultsDiv.append(data.storesResultsHtml);\r\n }\r\n}\r\n\r\n/**\r\n * Search for stores with new zip code\r\n * @param {HTMLElement} element - the target html element\r\n * @returns {boolean} false to prevent default event\r\n */\r\nfunction search(element) {\r\n var dialog = element.closest('.in-store-inventory-dialog');\r\n var spinner = dialog.length ? dialog.spinner() : $.spinner();\r\n spinner.start();\r\n var $form = element.closest('.store-locator');\r\n var radius = $('.results').data('radius');\r\n var url = $form.attr('action');\r\n var urlParams = { radius: radius };\r\n\r\n var payload = $form.is('form') ? $form.serialize() : { postalCode: $form.find('[name=\"postalCode\"]').val() };\r\n\r\n url = appendToUrl(url, urlParams);\r\n\r\n $.ajax({\r\n url: url,\r\n type: $form.attr('method'),\r\n data: payload,\r\n dataType: 'json',\r\n success: function (data) {\r\n spinner.stop();\r\n updateStoresResults(data);\r\n $('.select-store').prop('disabled', true);\r\n }\r\n });\r\n return false;\r\n}\r\n\r\nmodule.exports = {\r\n init: function () {\r\n if ($('.map-canvas').data('has-google-api')) {\r\n maps();\r\n } else {\r\n $('.store-locator-no-apiKey').show();\r\n }\r\n\r\n if (!$('.results').data('has-results')) {\r\n $('.store-locator-no-results').show();\r\n }\r\n },\r\n\r\n detectLocation: function () {\r\n // clicking on detect location.\r\n $('.detect-location').on('click', function () {\r\n $.spinner().start();\r\n if (!navigator.geolocation) {\r\n $.spinner().stop();\r\n return;\r\n }\r\n\r\n navigator.geolocation.getCurrentPosition(function (position) {\r\n var $detectLocationButton = $('.detect-location');\r\n var url = $detectLocationButton.data('action');\r\n var radius = $('.results').data('radius');\r\n var urlParams = {\r\n radius: radius,\r\n lat: position.coords.latitude,\r\n long: position.coords.longitude\r\n };\r\n\r\n url = appendToUrl(url, urlParams);\r\n $.ajax({\r\n url: url,\r\n type: 'get',\r\n dataType: 'json',\r\n success: function (data) {\r\n $.spinner().stop();\r\n updateStoresResults(data);\r\n $('.select-store').prop('disabled', true);\r\n }\r\n });\r\n });\r\n });\r\n },\r\n\r\n search: function () {\r\n $('.store-locator-container form.store-locator').submit(function (e) {\r\n e.preventDefault();\r\n search($(this));\r\n });\r\n $('.store-locator-container .btn-storelocator-search[type=\"button\"]').click(function (e) {\r\n e.preventDefault();\r\n search($(this));\r\n });\r\n },\r\n\r\n changeRadius: function () {\r\n $('.store-locator-container .radius').change(function () {\r\n var radius = $(this).val();\r\n var searchKeys = $('.results').data('search-key');\r\n var url = $(this).data('action-url');\r\n var urlParams = {};\r\n\r\n if (searchKeys.postalCode) {\r\n urlParams = {\r\n radius: radius,\r\n postalCode: searchKeys.postalCode\r\n };\r\n } else if (searchKeys.lat && searchKeys.long) {\r\n urlParams = {\r\n radius: radius,\r\n lat: searchKeys.lat,\r\n long: searchKeys.long\r\n };\r\n }\r\n\r\n url = appendToUrl(url, urlParams);\r\n var dialog = $(this).closest('.in-store-inventory-dialog');\r\n var spinner = dialog.length ? dialog.spinner() : $.spinner();\r\n spinner.start();\r\n $.ajax({\r\n url: url,\r\n type: 'get',\r\n dataType: 'json',\r\n success: function (data) {\r\n spinner.stop();\r\n updateStoresResults(data);\r\n $('.select-store').prop('disabled', true);\r\n }\r\n });\r\n });\r\n },\r\n selectStore: function () {\r\n $('.store-locator-container').on('click', '.select-store', (function (e) {\r\n e.preventDefault();\r\n var selectedStore = $(':checked', '.results-card .results');\r\n var data = {\r\n storeID: selectedStore.val(),\r\n searchRadius: $('#radius').val(),\r\n searchPostalCode: $('.results').data('search-key').postalCode,\r\n storeDetailsHtml: selectedStore.siblings('label').find('.store-details').html(),\r\n event: e\r\n };\r\n\r\n $('body').trigger('store:selected', data);\r\n }));\r\n },\r\n updateSelectStoreButton: function () {\r\n $('body').on('change', '.select-store-input', (function () {\r\n $('.select-store').prop('disabled', false);\r\n }));\r\n }\r\n};\r\n","'use strict';\r\n\r\nmodule.exports = function (include) {\r\n if (typeof include === 'function') {\r\n include();\r\n } else if (typeof include === 'object') {\r\n Object.keys(include).forEach(function (key) {\r\n if (typeof include[key] === 'function') {\r\n include[key]();\r\n }\r\n });\r\n }\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * Remove all validation. Should be called every time before revalidating form\r\n * @param {element} form - Form to be cleared\r\n * @returns {void}\r\n */\r\nfunction clearFormErrors(form) {\r\n $(form).find('.form-control.is-invalid').removeClass('is-invalid');\r\n}\r\n\r\nmodule.exports = function (formElement, payload) {\r\n // clear form validation first\r\n clearFormErrors(formElement);\r\n $('.alert', formElement).remove();\r\n\r\n if (typeof payload === 'object' && payload.fields) {\r\n Object.keys(payload.fields).forEach(function (key) {\r\n if (payload.fields[key]) {\r\n var feedbackElement = $(formElement).find('[name=\"' + key + '\"]')\r\n .parent()\r\n .children('.invalid-feedback');\r\n\r\n if (feedbackElement.length > 0) {\r\n if (Array.isArray(payload[key])) {\r\n feedbackElement.html(payload.fields[key].join('
'));\r\n } else {\r\n feedbackElement.html(payload.fields[key]);\r\n }\r\n feedbackElement.siblings('.form-control').addClass('is-invalid');\r\n }\r\n }\r\n });\r\n }\r\n if (payload && payload.error) {\r\n var form = $(formElement).prop('tagName') === 'FORM'\r\n ? $(formElement)\r\n : $(formElement).parents('form');\r\n\r\n form.prepend('
'\r\n + payload.error.join('
') + '
');\r\n }\r\n};\r\n"],"sourceRoot":""}