/*! elementor-pro - v3.28.0 - 30-03-2025 */
"use strict";
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["woocommerce-checkout-page"],{
/***/ "../modules/woocommerce/assets/js/frontend/handlers/base.js":
/*!******************************************************************!*\
!*** ../modules/woocommerce/assets/js/frontend/handlers/base.js ***!
\******************************************************************/
/***/ ((__unused_webpack_module, exports) => {
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
class Base extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
stickyRightColumn: '.e-sticky-right-column'
},
classes: {
stickyRightColumnActive: 'e-sticky-right-column--active'
}
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$stickyRightColumn: this.$element.find(selectors.stickyRightColumn)
};
}
bindEvents() {
// Add our wrapper class around the select2 whenever it is opened.
elementorFrontend.elements.$document.on('select2:open', event => {
this.addSelect2Wrapper(event);
});
}
addSelect2Wrapper(event) {
// The select element is recaptured every time because the markup can refresh
const selectElement = jQuery(event.target).data('select2');
if (selectElement.$dropdown) {
selectElement.$dropdown.addClass('e-woo-select2-wrapper');
}
}
isStickyRightColumnActive() {
const classes = this.getSettings('classes');
return this.elements.$stickyRightColumn.hasClass(classes.stickyRightColumnActive);
}
activateStickyRightColumn() {
const elementSettings = this.getElementSettings(),
$wpAdminBar = elementorFrontend.elements.$wpAdminBar,
classes = this.getSettings('classes');
let stickyOptionsOffset = elementSettings.sticky_right_column_offset || 0;
if ($wpAdminBar.length && 'fixed' === $wpAdminBar.css('position')) {
stickyOptionsOffset += $wpAdminBar.height();
}
if ('yes' === this.getElementSettings('sticky_right_column')) {
this.elements.$stickyRightColumn.addClass(classes.stickyRightColumnActive);
this.elements.$stickyRightColumn.css('top', stickyOptionsOffset + 'px');
}
}
deactivateStickyRightColumn() {
if (!this.isStickyRightColumnActive()) {
return;
}
const classes = this.getSettings('classes');
this.elements.$stickyRightColumn.removeClass(classes.stickyRightColumnActive);
}
/**
* Activates the sticky column
*
* @return {void}
*/
toggleStickyRightColumn() {
if (!this.getElementSettings('sticky_right_column')) {
this.deactivateStickyRightColumn();
return;
}
if (!this.isStickyRightColumnActive()) {
this.activateStickyRightColumn();
}
}
equalizeElementHeight($element) {
if ($element.length) {
$element.removeAttr('style'); // First remove the custom height we added so that the new height can be re-calculated according to the content
let maxHeight = 0;
$element.each((index, element) => {
maxHeight = Math.max(maxHeight, element.offsetHeight);
});
if (0 < maxHeight) {
$element.css({
height: maxHeight + 'px'
});
}
}
}
/**
* WooCommerce prints the Purchase Note separated from the product name by a border and padding.
* In Elementor's Order Summary design, the product name and purchase note are displayed un-separated.
* To achieve this design, it is necessary to access the Product Name line before the Purchase Note line to adjust
* its padding. Since this cannot be achieved in CSS, it is done in this method.
*
* @param {Object} $element
*
* @return {void}
*/
removePaddingBetweenPurchaseNote($element) {
if ($element) {
$element.each((index, element) => {
jQuery(element).prev().children('td').addClass('product-purchase-note-is-below');
});
}
}
/**
* `elementorPageId` and `elementorWidgetId` are added to the url in the `_wp_http_referer` input which is then
* received when WooCommerce does its cart and checkout ajax requests e.g `update_order_review` and `update_cart`.
* These query strings are extracted from the url and used in our `load_widget_before_wc_ajax` method.
*/
updateWpReferers() {
const selectors = this.getSettings('selectors'),
wpHttpRefererInputs = this.$element.find(selectors.wpHttpRefererInputs),
url = new URL(document.location);
url.searchParams.set('elementorPageId', elementorFrontend.config.post.id);
url.searchParams.set('elementorWidgetId', this.getID());
wpHttpRefererInputs.attr('value', url);
}
}
exports["default"] = Base;
/***/ }),
/***/ "../modules/woocommerce/assets/js/frontend/handlers/checkout-page.js":
/*!***************************************************************************!*\
!*** ../modules/woocommerce/assets/js/frontend/handlers/checkout-page.js ***!
\***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/woocommerce/assets/js/frontend/handlers/base.js"));
class Checkout extends _base.default {
getDefaultSettings() {
const defaultSettings = super.getDefaultSettings(...arguments);
return {
selectors: {
...defaultSettings.selectors,
container: '.elementor-widget-woocommerce-checkout-page',
loginForm: '.e-woocommerce-login-anchor',
loginSubmit: '.e-woocommerce-form-login-submit',
loginSection: '.e-woocommerce-login-section',
showCouponForm: '.e-show-coupon-form',
couponSection: '.e-coupon-anchor',
showLoginForm: '.e-show-login',
applyCoupon: '.e-apply-coupon',
checkoutForm: 'form.woocommerce-checkout',
couponBox: '.e-coupon-box',
address: 'address',
wpHttpRefererInputs: '[name="_wp_http_referer"]'
},
classes: defaultSettings.classes,
ajaxUrl: elementorProFrontend.config.ajaxurl
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
...super.getDefaultElements(...arguments),
$container: this.$element.find(selectors.container),
$loginForm: this.$element.find(selectors.loginForm),
$showCouponForm: this.$element.find(selectors.showCouponForm),
$couponSection: this.$element.find(selectors.couponSection),
$showLoginForm: this.$element.find(selectors.showLoginForm),
$applyCoupon: this.$element.find(selectors.applyCoupon),
$loginSubmit: this.$element.find(selectors.loginSubmit),
$couponBox: this.$element.find(selectors.couponBox),
$checkoutForm: this.$element.find(selectors.checkoutForm),
$loginSection: this.$element.find(selectors.loginSection),
$address: this.$element.find(selectors.address)
};
}
bindEvents() {
super.bindEvents(...arguments);
this.elements.$showCouponForm.on('click', event => {
event.preventDefault();
this.elements.$couponSection.slideToggle();
});
this.elements.$showLoginForm.on('click', event => {
event.preventDefault();
this.elements.$loginForm.slideToggle();
});
this.elements.$applyCoupon.on('click', event => {
event.preventDefault();
this.applyCoupon();
});
this.elements.$loginSubmit.on('click', event => {
event.preventDefault();
this.loginUser();
});
elementorFrontend.elements.$body.on('updated_checkout', () => {
this.applyPurchaseButtonHoverAnimation();
this.updateWpReferers();
});
}
onInit() {
super.onInit(...arguments);
this.toggleStickyRightColumn();
this.updateWpReferers();
this.equalizeElementHeight(this.elements.$address); // Equalize
boxes height
if (elementorFrontend.isEditMode()) {
this.elements.$loginForm.show();
this.elements.$couponSection.show();
this.applyPurchaseButtonHoverAnimation();
}
}
onElementChange(propertyName) {
if ('sticky_right_column' === propertyName) {
this.toggleStickyRightColumn();
}
}
onDestroy() {
super.onDestroy(...arguments);
this.deactivateStickyRightColumn();
}
applyPurchaseButtonHoverAnimation() {
const purchaseButtonHoverAnimation = this.getElementSettings('purchase_button_hover_animation');
if (purchaseButtonHoverAnimation) {
// This element is recaptured every time because the checkout markup can refresh
jQuery('#place_order').addClass('elementor-animation-' + purchaseButtonHoverAnimation);
}
}
applyCoupon() {
// Wc_checkout_params is required to continue, ensure the object exists
// eslint-disable-next-line camelcase
if (!wc_checkout_params) {
return;
}
this.startProcessing(this.elements.$couponBox);
const data = {
// eslint-disable-next-line camelcase
security: wc_checkout_params.apply_coupon_nonce,
coupon_code: this.elements.$couponBox.find('input[name="coupon_code"]').val()
};
jQuery.ajax({
type: 'POST',
// eslint-disable-next-line camelcase
url: wc_checkout_params.wc_ajax_url.toString().replace('%%endpoint%%', 'apply_coupon'),
context: this,
data,
success(code) {
jQuery('.woocommerce-error, .woocommerce-message').remove();
this.elements.$couponBox.removeClass('processing').unblock();
if (code.includes('woocommerce-error') || code.includes('does not exist')) {
jQuery('html, body').animate({
scrollTop: 0
}, 'fast');
}
if (code) {
this.elements.$checkoutForm.before(code);
this.elements.$couponSection.slideUp();
elementorFrontend.elements.$body.trigger('applied_coupon_in_checkout', [data.coupon_code]);
elementorFrontend.elements.$body.trigger('update_checkout', {
update_shipping_method: false
});
}
},
dataType: 'html'
});
}
loginUser() {
this.startProcessing(this.elements.$loginSection);
const data = {
action: 'elementor_woocommerce_checkout_login_user',
username: this.elements.$loginSection.find('input[name="username"]').val(),
password: this.elements.$loginSection.find('input[name="password"]').val(),
nonce: this.elements.$loginSection.find('input[name="woocommerce-login-nonce"]').val(),
remember: this.elements.$loginSection.find('input#rememberme').prop('checked')
};
jQuery.ajax({
type: 'POST',
url: this.getSettings('ajaxUrl'),
context: this,
data,
success(code) {
code = JSON.parse(code);
this.elements.$loginSection.removeClass('processing').unblock();
const messages = jQuery('.woocommerce-error, .woocommerce-message');
messages.remove();
if (code.logged_in) {
location.reload();
} else {
this.elements.$checkoutForm.before(code.message);
elementorFrontend.elements.$body.trigger('checkout_error', [code.message]);
}
}
});
}
startProcessing($form) {
if ($form.is('.processing')) {
return;
}
/**
* .block() is from a jQuery blockUI plugin loaded by WooCommerce. This code is based on WooCommerce
* core in order for the Checkout widget to behave the same as WooCommerce Checkout pages.
*/
$form.addClass('processing').block({
message: null,
overlayCSS: {
background: '#fff',
opacity: 0.6
}
});
}
}
exports["default"] = Checkout;
/***/ })
}]);
//# sourceMappingURL=woocommerce-checkout-page.470384546c61ebcaa89d.bundle.js.map
Ruth Mwizeere – Page 11341 – InfoNile
skip to Main Content
Anywhere between day-after-day look at-in, the brand new Mega Wheel, and continual promotions, there is lots of gold coins so you're able to ranch versus spending some thing. The working platform spends geolocation clogging, and if you are being able…
Forschen Diese nutzliche Casinos inside Bundesrepublik deutschland & welches am besten exakt im voraus Der Haustur? Dabei Sie z. b. in Nordrhein-Westfalen weiters Kitchener schon uber xviii Jahren zum besten geben durfen, gelte inside den bayerischen Spielbanken ein Mindestalter durch…
Yay Casino also offers a strong form of slots, jackpots, or other slot-relevant game, but its library does not have card games and live blackjack, roulette, and you will baccarat headings. Meanwhile, we within SweepsKings are examining upwards-and-coming labels which…
Real time Betting comes with the credit about the fresh graphically complex slot video game additionally the more worthwhile desk game all of the waiting around for you. For those who have questions otherwise need help and you will pointers…
Quand le site sensation des indications, il devra savoir comment , ! a laquelle imminent elles-mêmes peuvent être vérifiées. Une bonne composition visuelle transmets a assimiler tout de suite leurs rougeurs de vos s, des catégories avec instrument vers sous,…
Der triftiger Bonus ermoglicht Dir einen echten Uberschuss oder erhoben Dein Spielvergnugen. Damit den optimalen Casino Verbunden Bonus fur Dich nachdem fundig werden, solltest Du ausgewahlte Angebote vergleichen. As part of mark Umsatzzeitraum durch 10 Tagen, waren sera als nachstes…
Online slot games have come to be progressively popular in recent times, providing a thrilling and wild dice casino practical method to experience the excitement of a gambling establishment from the convenience of your very own home. With many alternatives…
Such bodies lay legislation you to definitely casinos need follow and you will display screen all of them to make certain game is fair, repayments is actually treated securely, and members are handled honestly. Before you sign up-and put within…
Players make use of these currencies playing slots, desk online game, or other gambling Napoleon Casino enterprise preferred, that have Coins are simply for activities and you can Sweeps Coins delivering an entry with the sweepstakes advertisements. This will make…
Bally's force for it extension for up to 12 months so you're able to finish the Lake West venue again raises questions regarding perhaps the renamed Dual River gaming company has spread by itself also narrow which have multibillion money…
Back To Top