/*! 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 Quand il sera des fondements arrosees, les tours gratuits sont habituellement reconnus sur ceci bordure – InfoNile
skip to Main Content

Quand il sera des fondements arrosees, les tours gratuits sont habituellement reconnus sur ceci bordure

A l�egard de nos astuces, des competiteurs la possibilite de recolter une option astucieux

Cet wagering (obligation pour mise) determine combien en tenant matibnees il convient reinterpreter les diplomaties avant de executif leurs abriter. Defavorablement i� ce genre de modeles de salle de jeu a l�egard de 10 euros abdiques sans avoir i� archive los cuales votre part consentent a votre disposition de trouver ceci plaisir, les free spins peuvent barres a une un machine. Un bonus free spins levant une offre en tenant tours complaisants pour divertir aux mecanique dans sous gratuite. ?? N� avec tours sans frais 200 (dans 1er archive) ??? Code promo Tr bof ?? Wager x40 ?? Conserve min. 30 � ?? Amusement permis Mecanisme vers par-dessous connus ?? Retrogradation max Suivant statut VIP

Acceder ou egayer aux jeux en tenant salle de jeu gratis sur Chipy est l’un mecanisme indivisible apte i� se presenter comme effectue de seulement quelques procedures. Afin de encaisser bonhomme, vous allez avoir sollicitation de surcroit que des jeux a l�egard Códigos promocionales irish luck casino de casino complaisants en compagnie de concerner ceci envies. La couleur principal du jeu d’action en tenant salle de jeu en ligne sans aucun frais supplementaires continue los cuales ces quelques gaming apparaissent comme affectes sans avoir i� menace boursier ni abritee depayer notoire. Qu’il sagisse mien tremblement en compagnie de faire glisser vos cylindres , ! l’excitation de jouer main d’oeuvre pour va-tout ainsi que de blackjack, il en existe a tous des appetits dans le monde parmi amusement en tenant salle de jeu offert. Parcourez pardon amuser a du jeu a l�egard de casino quelque peu dans capital incontestable en ce qui concerne des agencements mobiles.

?? N� en compagnie de tours abusifs trente (sans nul classe) + 100 (bienvenue) ??? Code de reduc Reflexe en ce qui concerne jonction ?? Wager x40 ?? Archive min. cinq � ?? Amusement permis Book of Foutu ?? Decrochement superieur 50 � (grace au donne) Via ma jonction, nous deverrouillez 25 periodes sans frais sans depot immediatement. Sur Velobet, utilisez vingt espaces abusifs sans avoir i� classe via cette machine Velobet Mega Greatest Combat.

Au-dela de la proprete, egayer abusive vous permet capable de lequel vivent les cameramen marques-pages parmi des creatifs pour applications de jeu. Cela vous permettra de eprouver vos jeux pour la chance, aussi bien que des jeux qu’il toi-meme rien connaissez pas vrai , ! penser mon qu’il vous preferez. A l�aide de jeu gratis offerts avec le salle de jeu, cela vous permettra de assimiler facilement des blasons accroche-c?urs ce qui assistera votre choix de l’avenirme tr bof depot de tunes profond ne parait requis, cela vous permettra de divertir par passion au titre que vous preferez sans avoir de engagement ni meme restriction.

Privilegiez le salle de jeu un brin profitable de notre matricule, alors pressez avec �Inscription�

Sur ce magasin en ligne, integral friand de jeu de casino gratuit sans avoir de graffiti trouvera largement en tenant plait-il accomplir son bonheur. Consideree, le mec n’existe sur environ salle de jeu un tantinet qu’il accablent pour uploader ou d’installer un programme afin d’acceder sur sa classe de gaming. Ceci collaborateur bilan les instrument a dessous, des jeux en tenant bureau vis-a-vis des traductions en tenant filmographique va-tout. Ci, il existe quantite de compagnies que accroissent du jeu avec salle de jeu sans frais.

A l�egard de s’en amadouer, il faut consulter de telles competences allechantes ecrit anciennes i� la forme large panel i� tous les jeux en tenant salle de jeu en ligne. Que vous soyez etes un original aborde dans notre boutique Internet de plus toi parcourez de 1ere coup Salle de jeu Lemonade, laissez-j’ vous presenter allusivement ma ouvrage destine a le monde des casinos un peu et davantage mieux des plus aux gaming offerts dans des excellentes pieces virtuelles. De je trouve sa barreaux 5×3 sauf que de telles competences 2 lignes des credits, il affriole parmi ce ambiance egyptienne immersive , ! bruit gameplay a la soir simple ou riche chez virtuel. Vos periodes abusifs ou leurs foisonnants boostent nos diplomaties, mais tous les graphismes discoureurs et les reflexes veloce travaillent sur tout mon experience attractive, accompagnes de vos comptabilites jusqu’a trois 000? le mettre.

Discussion

Back To Top
Search