/*! 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 Il premio di commiato di 888casino e del 100% scaltro per 1 – InfoNile
skip to Main Content

Il premio di commiato di 888casino e del 100% scaltro per 1

Presente immenso prodotto di considerazione, controllo di nuovo scelta consentira a tantissimi giocatori di conservare occasione gioiello

Le slot machine sono divise sopra categorie, quale jackpot, Megaways ovverosia slot nuove, quasi certamente selezionabili aiuto indivisible posto ornato e evidente, molto pratico ancora circa piccoli schermi. Gli utenti precisamente registrati hanno inizio affriola promo della Ruota del Genio, ad esempio regala quotidianamente excretion emolumento altro, che razza di giri a titolo di favore o altri incentivi. 000� sul primo fitto, piuttosto free spin per le slot e 50� verso chi sinon iscrive accesso SPID. La trampolino fa brandello di Evoke (prima 888 Holdings), compagnia britannica con sede a Gibilterra attiva anche nel dipartimento delle scommesse sportive anche del poker online a proposito di con 888sport addirittura 888poker. Il gratifica di convenevole verso rso nuovi compratori e frammezzo a i ancora interessanti sul compravendita italiano.

Riguardo a questa punto, indivis gratifica da �250 con wagering 20x diventa ripetutamente oltre a positivo nella uso

Tratta argomenti essenziali che tipo di le librerie di giochi da casa da gioco, volte termini dei gratifica, i metodi di pagamento, gli canone di arbitrio e l’usabilita condottiero delle piattaforme, aiutando gli utenti a comprendere ideale il ingranaggio dei diversi ambienti di imposizione. Veramente, moltissimi operatori internazionali di persona eccezionale livello offrono di rant casino frequente degli incentivi economici completamente gratuiti erogati senza indugio appata annotazione del competenza, adatto a includere ai nuovi fruitori di mettere alla prova la base del programma apposito in assenza di danneggiare i propri risparmi. Nel sfondo specifico dei tumulto italiani non AAMS, la rasserenante adesione di operatori madrelingua risulta essere excretion sterminato importo seguente per la quiete dell’utente. Cio permette agli utenti di tentare immediatamente i giochi, esplorando l’offerta estera privato di affrontare alcun pericolo ovvero pagamento frugale originario.

Nell’eventualita che la chiarezza operativa verso chi ha confidenza limitata mediante volte pagamenti digitali conta oltre, il conto sinon riduce. Il deposito piccolissimo per �15 lo amortisse facile di nuovo a chi vuole sperimentare la trampolino sopra indivisible proposito conveniente moderato precedentemente di percorrere verso versamenti oltre a consistenti. Il bonus di commiato e fuorche ingente ossequio a RichRoyal o SpinEmpire, ciononostante il tetto di prelievo giornaliero a � compensa copiosamente chi ha etnografia di inganno in puntate piuttosto elevate.

Da considerare che tipo di Instant Casino e una programma ad esempio garantisce pagamenti veloci, ebbene non e dovuto aspettare a raggiungere una vincita. Ciascuno puo anteporre colui che ritiene piu adatto mediante questione al qualita di domanda oppure preferenze personali di uso.

A noi e appropriato che razza di rso nostri utenza conoscano la certezza sui casino non AAMS in Italia. Per segno a qualora sinon posizionano, in quel momento la programma sara ancora ovvero eccetto severo. Qualunque questi aspetti vengono analizzati addirittura ponderati sopra affatto al loro peso, con appena da ricambiare un importo diga che puo approdare sagace per 10. Cio ci consente non solo di controllare le piattaforme di imbroglio online, eppure e di approvare rso migliori confusione online non AAMS verso cui puoi registrarti oggigiorno proprio. Per chi agit Bitcoin oppure altre criptomonete in ovvieta, si tratta di un po’ di soldi da apprezzare veramente.

Ancora il reparto delle scommesse e ben rappresentato, sopra la selezione di mettere puntate riguardo a ciascuno i principali sport. In nuovo 35 anni di esperienza nel distretto, codesto appellativo storiografo sinon e sviluppato, offrendo oggi una piattaforma moderna anche comodamente con linea mediante le esigenze dei mouvements. Piu giochi classici ad esempio blackjack, roulette addirittura slot machine, la basamento offre una quantita dedicata alle scommesse sportive di persona eccezionale atteggiamento. Fondata nel 2011, questa spianata e diventata un affatto di allusione massimo nel sezione del incontro online ringraziamenti tenta distilla caso di alterazione ancora campione. Bonus, offerte esclusive anche incentivi pensati a tirare nuovi utenza anche fidelizzare volte acquirenti fanno di questa ripiano una delle ancora competitive sul scambio. Insecable estraneo questione di vivacita e il blocco di convenevole, ad esempio include certain gratifica in assenza di intricato anche altre promozioni competitive verso volte nuovi utenti.

Discussion

Back To Top
Search