custom/static-plugins/WexoProjectCustomizations/src/Resources/views/storefront/component/account/register.html.twig line 1

Open in your IDE?
  1. {% sw_extends "@Storefront/storefront/component/account/register.html.twig" %}
  2. {% block component_account_register %}
  3.     {{ parent() }}
  4.     {% if config('WexoProjectCustomizations').config.activateAutocomplete %}
  5.         <div class="autocomplete-form"></div>
  6.         <script
  7.             src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDhHvbZden9wcgx8IQ5ZGX4X43YiaZGRqw&libraries=places&callback=initAutocomplete"
  8.             async defer>
  9.         </script>
  10.         <script>
  11.             let autocompleteBilling;
  12.             let billingAddress1Field;
  13.             let billingPostCode;
  14.             let billingCity;
  15.             let autocompleteShipping;
  16.             let shippingAddress1Field;
  17.             let shippingPostCode;
  18.             let shippingCity;
  19.             function initAutocomplete() {
  20.                 initAutocompleteBilling();
  21.                 initAutocompleteShipping();
  22.             }
  23.             function initAutocompleteBilling() {
  24.                 billingAddress1Field = document.querySelector("#billingAddressAddressStreet");
  25.                 billingPostCode = document.querySelector("#billingAddressAddressZipcode");
  26.                 billingCity = document.querySelector("#billingAddressAddressCity");
  27.                 // Create the autocomplete object, restricting the search predictions to
  28.                 autocompleteBilling = new google.maps.places.Autocomplete(billingAddress1Field, {
  29.                     fields: ["address_components", "geometry"],
  30.                     types: ["address"],
  31.                     componentRestrictions: {country:'dk'}
  32.                 });
  33.                 // When the user selects an address from the drop-down, populate the
  34.                 // address fields in the form.
  35.                 autocompleteBilling.addListener("place_changed", fillInAddressBilling);
  36.             }
  37.             function fillInAddressBilling() {
  38.                 // Get the place details from the autocomplete object.
  39.                 const place = autocompleteBilling.getPlace();
  40.                 let address1 = "";
  41.                 let postcode = "";
  42.                 // Get each component of the address from the place details,
  43.                 // and then fill-in the corresponding field on the form.
  44.                 // place.address_components are google.maps.GeocoderAddressComponent objects
  45.                 // which are documented at http://goo.gle/3l5i5Mr
  46.                 for (const component of place.address_components) {
  47.                     const componentType = component.types[0];
  48.                     switch (componentType) {
  49.                         case "route": {
  50.                             address1 = `${component.long_name} ${address1}`;
  51.                             break;
  52.                         }
  53.                         case "street_number": {
  54.                             address1 += component.short_name;
  55.                             break;
  56.                         }
  57.                         case "postal_code": {
  58.                             document.querySelector("#billingAddressAddressZipcode").value = component.long_name;
  59.                             break;
  60.                         }
  61.                         case "postal_code_suffix": {
  62.                             postcode = `${postcode}-${component.long_name}`;
  63.                             break;
  64.                         }
  65.                         case "postal_town": {
  66.                             document.querySelector("#billingAddressAddressCity").value = component.long_name;
  67.                             break;
  68.                         }
  69.                         case "locality": {
  70.                             document.querySelector("#billingAddressAddressCity").value = component.long_name;
  71.                             break;
  72.                         }
  73.                         case "administrative_area_level_1": {
  74.                             document.querySelector("#state").value = component.short_name;
  75.                             break;
  76.                         }
  77.                         case "country": {
  78.                             $("#billingAddressAddressCountry option[data-iso='" + component.short_name + "']").prop("selected", true);
  79.                             break;
  80.                         }
  81.                     }
  82.                 }
  83.                 billingAddress1Field.value = address1;
  84.             }
  85.             function initAutocompleteShipping() {
  86.                 shippingAddress1Field = document.querySelector("#shippingAddressAddressStreet");
  87.                 shippingPostCode = document.querySelector("#shippingAddressAddressZipcode");
  88.                 shippingCity = document.querySelector("#shippingAddressAddressCity");
  89.                 // Create the autocomplete object, restricting the search predictions to
  90.                 autocompleteShipping = new google.maps.places.Autocomplete(shippingAddress1Field, {
  91.                     fields: ["address_components", "geometry"],
  92.                     types: ["address"],
  93.                     componentRestrictions: {country:'dk'}
  94.                 });
  95.                 // When the user selects an address from the drop-down, populate the
  96.                 // address fields in the form.
  97.                 autocompleteShipping.addListener("place_changed", fillInAddressShipping);
  98.             }
  99.             function fillInAddressShipping() {
  100.                 // Get the place details from the autocomplete object.
  101.                 const place = autocompleteShipping.getPlace();
  102.                 let address1 = "";
  103.                 let postcode = "";
  104.                 // Get each component of the address from the place details,
  105.                 // and then fill-in the corresponding field on the form.
  106.                 // place.address_components are google.maps.GeocoderAddressComponent objects
  107.                 // which are documented at http://goo.gle/3l5i5Mr
  108.                 for (const component of place.address_components) {
  109.                     const componentType = component.types[0];
  110.                     switch (componentType) {
  111.                         case "route": {
  112.                             address1 = `${component.long_name} ${address1}`;
  113.                             break;
  114.                         }
  115.                         case "street_number": {
  116.                             address1 += component.short_name;
  117.                             break;
  118.                         }
  119.                         case "postal_code": {
  120.                             document.querySelector("#shippingAddressAddressZipcode").value = component.long_name;
  121.                             break;
  122.                         }
  123.                         case "postal_code_suffix": {
  124.                             postcode = `${postcode}-${component.long_name}`;
  125.                             break;
  126.                         }
  127.                         case "postal_town": {
  128.                             document.querySelector("#shippingAddressAddressCity").value = component.long_name;
  129.                             break;
  130.                         }
  131.                         case "locality": {
  132.                             document.querySelector("#shippingAddressAddressCity").value = component.long_name;
  133.                             break;
  134.                         }
  135.                         case "administrative_area_level_1": {
  136.                             document.querySelector("#state").value = component.short_name;
  137.                             break;
  138.                         }
  139.                         case "country": {
  140.                             if (document.querySelector("#state").value === "Northern Ireland") {
  141.                                 $("#shippingAddressAddressCountry option[value='315f0beac6764136a4482f7ff5635148']").prop("selected", true);
  142.                             } else if (document.querySelector("#state").value === "England") {
  143.                                 $("#shippingAddressAddressCountry option[value='92c4bbd1cb884370a0b1ee11de0825e0']").prop("selected", true);
  144.                             } else {
  145.                                 $("#shippingAddressAddressCountry option[data-iso='" + component.short_name + "']").prop("selected", true);
  146.                             }
  147.                             break;
  148.                         }
  149.                     }
  150.                 }
  151.                 shippingAddress1Field.value = address1;
  152.             }
  153.         </script>
  154.     {% endif %}
  155. {% endblock %}