/** * DO NOT EDIT THIS FILE. * See the following change record for more information, * https://www.drupal.org/node/2815083 * @preserve **/ (function (Drupal, drupalSettings, once) { Drupal.shippingRecalculate = { recalculateButtonSelector: '', submitButtonSelector: '[id^=edit-actions-next]', wrapper: '', onChange: function onChange(element) { var waitForAjaxComplete = function waitForAjaxComplete(element) { setTimeout(function () { if (element.disabled) { waitForAjaxComplete(element); return; } if (Drupal.shippingRecalculate.canRecalculateRates()) { Drupal.shippingRecalculate.recalculateRates(); } }, 100, element); }; waitForAjaxComplete(element); }, init: function init(context) { var _this = this; var requiredInputs = document.getElementById(this.wrapper).querySelectorAll('input[required], select[required], input[type=checkbox]'); if (requiredInputs.length) { once('shipping-recalculate', requiredInputs, context).forEach(function (element) { element.addEventListener('change', function (el) { _this.onChange(el.target); }); }); } }, canRecalculateRates: function canRecalculateRates() { var canRecalculate = true; var requiredInputs = document.getElementById(this.wrapper).querySelectorAll('input[required], select[required]'); Array.prototype.forEach.call(requiredInputs, function (el) { if (!el.value) { canRecalculate = false; return false; } }); return canRecalculate; }, recalculateRates: function recalculateRates() { var buttons = document.querySelectorAll(this.submitButtonSelector); if (buttons.length) { buttons[0].disabled = true; } document.getElementById(this.wrapper).querySelector(this.recalculateButtonSelector).dispatchEvent(new Event('mousedown')); } }; Drupal.behaviors.shippingRatesRecalculate = { attach: function attach(context) { Drupal.shippingRecalculate.wrapper = drupalSettings.commerceShipping.wrapper; Drupal.shippingRecalculate.recalculateButtonSelector = drupalSettings.commerceShipping.recalculateButtonSelector; Drupal.shippingRecalculate.init(context); } }; })(Drupal, drupalSettings, once);