/*! 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 Non appena crei il tuo bordo, attiva l’autenticazione a coppia fattori verso una preminente decisione – InfoNile
skip to Main Content

Non appena crei il tuo bordo, attiva l’autenticazione a coppia fattori verso una preminente decisione

In questo luogo gli fruitori possono posare in tutta disposizione contro �, interpellare l’elenco completo delle energia sull’app 888 Bingo Casino addirittura ottenere pezzo a promozioni speciali. La basamento garantisce ad esempio corrente andamento non solo ratto ancora certo a ogni rso compratori Italico. Le classifiche del week-end consentono ai sostenitore Italico di sbattere premi in patrimonio anche di sottoscrivere a tornei privati aperti scapolo a lei.

L’offerta di 888 trambusto app e davvero di prim’ordine e comprende migliaia di slot machine (comprese le slot come traditore di piu) aggiornate con buona affluenza, video slot sopra jackpot e slot esclusive 888. Il Bonus di prima cambio non sara qualificato nell’eventualita che non verra sposato frammezzo a adagio estremita. Dopo aver effettuato la avanti sostituzione sul adatto conto di bazzecola, il scommettitore dovra cliccare sul tastiera ‘Incassa il tuo Bonus’ attuale nell’email di prova che razza di ricevera. Rso soldi saranno disponibili prontamente ovvero in mezzo a pochi minuti, a collabora del metodo preferito.

L’app 888 poker e lesto e sicura, dispone di indivis sterminio di tornei https://madslotscasino.org/it/app/ poker anche promette costantemente cospicui gratifica di bnevenuto addirittura ottime promozioni regolari. Arrivati a questo punto, ti offriamo alcune dritte per riconoscere battere volte tornei di poker offerti da 888. Ci sono un mucchio di tornei disponibili ancora di numeroso segno a cui approvare, frammezzo a cui Multi Table Tournaments (MTTs), Sit �N’ Go’s (SNGs) di nuovo, evidentemente, Cash Games.

Nell’eventualita che siete pronti verso godervi l’esperienza completa del casino nel gloria della vostra stile, seguite le istruzioni ora al di sotto verso alleggerire l’app 888casino sul vostro ingranaggio amovibile. Come siate appassionati di slot, giochi da quadro ovvero opzioni di bisca dal acuto, l’app chavire adatto agire ovunque addirittura in qualsivoglia circostanza. La programma sinon e costruita una solida analisi per il proprio design comodo da sentire e verso la coula sicurezza di forte posizione.

L’app 888 Bingo Casino ha un’interfaccia modesto da usare come ti consente di orientarti presumibilmente

Il corso di abitato dell’app 888 mucchio circa sistemi Apple (iPhone di nuovo iPad) sinon distingue verso l’estrema velocita. Sopra soldoni, non solo facendo il luogo sinon adatta naturalmente allo videoclip del congegno trasportabile mediante metodo, smartphone o tablet. Fu reso �idoneo� il nostro ingranaggio ad ricevere applicazioni da fonti sconosciute bastera appressarsi al messo dell’operatore di nuovo rimuovere l’apk 888 tumulto. Di default qualsiasi congegno mediante attuale prassi operativo non e competente all’installazione di app non provenienti dal Play Filtre, percio sara dovuto sopportare l’888 download Android dell’applicazione sullo smartphone. A procurarsi il gratifica di benvenuto sull’app 888 mucchio e borioso ultimare la procedura di schedatura da smartphone ovverosia iPhone.

Analizzare la connessione internet, rinviare l’app nell’eventualita che necessario anche riattaccare il dispositivo

Naturalmente, qualora si dispone appunto di indivisible account 888, sopraggiungere dall’app e ed con l’aggiunta di agevole, in quanto bisognera agevolmente registrare username addirittura password. E’ invero fattibile esaminare i con l’aggiunta di importanti eventi sportivi durante streaming immediatamente sull’applicazione e lo schermo disinteressato di indivis tablet garantisce una vista chiara dei incontro in diretta! Qualora non avete in nessun caso eseguito excretion processo cosi per il vostro device, forse le impostazioni di fabbrica bloccheranno l’apertura dell’installer, giacche verra affermato breve indiscutibile essendo condizione smontato al di fuori dello panneau ufficiale. In realta bastera scrivere nel moto di elemosina, subito dal device arredo, �888 App Apk� a mostrare improvvisamente la facciata autorizzato del bookmaker italico dedicata all’applicazione per Android. Stop avviarsi sulla pagina dedicata del situazione del bookmaker ed angustiare sul logo associato dalla saetta rossa sopra cima nella nostra immagine.

Nel societa del mobile, l’app 888casino sinon distingue a prestazioni solide e razionalita utili verso farti contare con come chiaro, dappertutto ti trovi. Seguite facilmente le istruzioni per installarla sul vostro congegno. Alla fine, tanto l’app di 888 Mucchio che l’esperienza desktop offrono interessanti opportunita di gioco online, ma ognuna ha rso suoi vantaggi. L’app offre un’ampia tipo di metodi di rimessa a appagare le diverse preferenze, in mezzo a cui carte di opportuno/fama, cartella elettronici quale PayPal ancora Skrill di nuovo bonifici bancari. Tanto quale sinon giochi sull’app 888 Trambusto a Android oppure sulla esposizione verso iOS, il processo e progettato a essere veloce e competente da usare. La dirigenza dei depositi di nuovo dei prelievi sull’app 888casino e semplice di nuovo sicura.

Discussion

Back To Top
Search