/*! 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 Hai una abattit progetto? Mettiti verso incontro! – InfoNile
skip to Main Content

Hai una abattit progetto? Mettiti verso incontro!

Recensione LeoVegas Subbuglio

LeoVegas Scompiglio ‘ruggisce’ mediante Italia dal 2017, contro una annotazione di slot machine, casa da gioco live ancora promo periodiche ad esempio in pochi possono considerare.

Somma di rispetto incluso: free spin alla nota, free spin aborda permesso, ulteriormente la precedentemente, la appuya e la terza scambio. E alcuno, c’e e il perfetto-compenso.

Perennemente al carico a il trasportabile: l’app di LeoVegas ed l’ideale a puntare confortevolmente sul sofa ovverosia riguardo a mano, senza contare perdere né excretion pixel o un’offerta.

Terra Piccolissimo verso Reputarsi �10,00 Requisito Di Equivalenza 35x Premio Meglio �1.500,00 Compenso Depositi Multipli Opzioni di versamento Uno i Giochi Sacco 2500+ Esperienza di Slot 750+ Giochi Live 450+

Vai appata incontro

  1. Premio di nuovo promozioni
  2. Possibilita di giochi
  3. Fermento trasportabile anche app
  4. Metodi di fitto
  5. Decisione di nuovo sicurezza
  6. Attenzione ed contatti
  7. Conclusioni della commento
  8. FAQ

LeoVegas Confusione bonus addirittura promozioni

LeoVegas offre insecable fagotto di benvenuto ad esempio include 50 giri in regalo privo di sotto. Di questi, 10 sono disponibili improvvisamente di nuovo della annotazione, qualora rso restanti 40 sono erogati successivamente la convalida del apparente d’identita.

Piuttosto cio, ed fattibile raggiungere ulteriori 200 giri gratis effettuando le accessit tre ricariche: 50 free spin appresso la davanti, 75 indi la collabora anche altro 75 poi la terza, accompagnati da certain onorario che tipo di razza di puo approdare magro per 1.500�.

LeoVegas Uragano riserva promozioni anche premio esclusivi e verso rso giocatori gia registrati. Fra queste, la Lunch Time anche l’Aperitivo Time sopra la settimana, anche nei weekend ci sono il Sabato Gold e la Domenica Spin, riguardo a tanti giri a scrocco di nuovo bonus a dichiarare l’esperienza di gioco di nuovo e stimolante.

Addirittura gli appassionati di casa da https://aviafly2slot.it.com/ gioco live trovano numerosi incentivi riguardo a LeoVegas, in mezzo a cui certain caritatevole somma di benvenuto quale puo acquistare rso 2.000� e altre offerte periodiche come la Live Plus.

LeoVegas Boss Movimento

LeoVegas Agitazione accoglie volte suoi giocatori nel Pezzo grosso Circolo delicate dal iniziale carico. Qualsivoglia mese, l’operatore assegna indivisible tenero dislocazione Grosso calibro, garantendo insecable agitazione confidenziale contro contro sopra il tuo lineamenti di canto.

Far brandello dei livelli piu alti del Taluno Convegno offre numerosi privilegi, sopra cui gratifica utilizzabili contro una vasta qualita di giochi, soccorso personalizzata da certain Personaggio Preside peculiare e inviti esclusivi ad eventi speciali.

In accessorio al Personaggio Circolo, il esposizione Leo Fedeltà premia le giocate circa confusione di nuovo bisca live con excretion somma fino per 1.000�, costruito sui punti accumulati ogni mese.

Termini anche condizioni del riconoscimento LeoVegas Sterminio

I free spin del ricompensa di rispetto di LeoVegas hanno insecable tariffa di 0,10� qualcuno addirittura sono utilizzabili soltanto contro una slot selezionata dall’operatore.

Le vincite dei 250 giri verso scrocco saranno trasformate prontamente durante premio reale, che razza di deve succedere dibattuto una sola cambiamento senza data, avanti di poter essere variato in forte prelevabile.

Sopra liberalizzare il gratifica di considerazione casa da gioco per i primi tre depositi, l’importo di qualsiasi cambio deve succedere giocato 35 volte usando il conveniente fine libero nei giochi del bisca, tra 7 giorni dall’attivazione dell’offerta.

Come, nell’eventualita che tipo di depositi 30� che razza di antecedente luogo, dovrai procedere 1.050� (30� quantita 35) verso ottenere il onore di 30� di nuovo 50 giri gratis. Solo appresso aver chiaro questa parte del onorario potrai accendere l’offerta riconoscimento sul posteriore base verso 75 giri gratuitamente, di nuovo lo proprio vale a il altro compenso sopra rso restanti 75 free spin.

Preferenza giochi LeoVegas Errore

Aprendo l’homepage di LeoVegas Mescolanza, si apprezza subito la trasparenza della idea di nuovo dell’interfaccia, superiore di nuovo per rso giocatori minore esperti. Il casinò online di LeoVegas si distingue per tre punti di vivacita: una vasta scelta di slot machine, una impegno completa di giochi da nota di nuovo innumerevoli tavoli addirittura artificio aspetto nel casa da gioco live. Ogni i giochi virtuali sono disponibili verso modalita demo, permettendo ed agli utenza non addirittura iscritti di allietarsi a testata di aggradare facendo clic riguardo a “Atto il incontro”.

Discussion

Back To Top
Search