forked from a64f7bb4-7358-4778-9fbe-3b882c34cc1d/v1
70 lines
2.3 KiB
JavaScript
70 lines
2.3 KiB
JavaScript
/**
|
|
* 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); |