/*! 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 Basta addossare una purchessia delle nostre slot, giochi da tavolato, ecc – InfoNile
skip to Main Content

Basta addossare una purchessia delle nostre slot, giochi da tavolato, ecc

Approvazione, offriamo una norma “Demo” gratuita contro quasi tutti rso nostri giochi, ad favore dei tavoli per croupier dal attuale. La alternativa di giochi e spaziale, con diverse varianti di blackjack, roulette, baccarat addirittura aggiunto ancora. Selezionate Visa dall’elenco dei metodi di versamento, inserite i dati della vostra lista di nuovo l’importo ad esempio desiderate posare ancora il artificio e affare. Da in quella occasione sono diventato un fruitore solito, particolarmente cosicche adoro volte lui gratifica di ricarica settimanali che mantengono apogeo il svago.

Seppure non offriamo un’applicazione trasportabile dedicata, il nostro sito web e situazione esatto ottimizzato verso garantire la sovrabbondanza compatibilita per i dispositivi mobilio riguardo a qualsiasi volte sistemi operativi. Con l’aggiunta di un’ampia preferenza di giochi, offriamo bonus interessanti, insecable piano fedelta e appoggio clientela 24 ore verso 24, 7 giorni contro 7. Nella nostra voto troverete slot, giochi da tavolato ancora casino live di provider rinomati che Pragmatic Play, Endorphina ovverosia Spinomenal. L’app supporta una vasta qualita di metodi di pagamento, con cui Visa, MasterCard, Maestro, Riduzione Bancario, MiFinity, Bitcoin, Ethereum, Tether addirittura Binance.

Qualsiasi gli fruitori Android https://cherry-jackpot-casino.com/it/ addirittura iOS possono profittare di complesso il virtuale del bisca, poiche l’intera varieta di promozioni di nuovo giochi e mancanza sul situazione ottimizzato a volte dispositivi arredamento. Pero, suggeriamo di afferrare d’occhio il adatto sito web, dato che non e sgradevole quale venga buttata un’applicazione di finale. Sfortunatamente, cosicche principianti, non potrete approfittare di questa promessa, pero una volta raggiunto il postura 2 di Bellicoso, potrete abbozzare a ricevere il indennizzo. Alt sottoporre a intervento il login di nuovo vedere il proprio spaccato a notare l’offerta del ricorrenza di nuovo attivarla.

Specialmente, parliamo della sommo bravura del bisca dal acuto

Gli appassionati di giochi da tavolato possono sollazzarsi sopra diverse varianti di blackjack, roulette, baccarat e poker. L’ampia libreria comprende le slot preferite dai fan, che tipo di Book of Dead, di nuovo titoli emergenti sopra meccaniche uniche. Hit’n’Spin ???? offre un’affollata arrivo di giochi da casa da gioco online verso i giocatori del Belgio e non scapolo. La facilita addirittura la fortuna delle transazioni rendono l’esperienza di artificio su HitnSpin ancora con l’aggiunta di attraente addirittura senza contare interruzioni.

Hit’N’Spin Trambusto si distingue quale una delle principali destinazioni di gioco online, offrendo indivisible ripulito certo, precisamente anche piacevole verso qualsiasi i giocatori. Vedi una trattato inchiesta sui metodi di deposito disponibili, inclusi depositi addirittura prelievi, per aiutarti a dirigere rso tuoi patrimonio sopra mezzo valido. La programma offre una modello di metodi di versamento per ribattere rso giocatori di diverse regioni e preferenze. Ricorda, il tuo primo fitto ti posizione verso il premio di benvenuto, cosi assicurati di verificare rso requisiti minimi di intricato.

Per garantire un’esperienza di bazzecola perfetta anche gratificante, abbiamo universo un atteggiamento di assistenza acquirenti completo, progettato verso gestire le vostre preoccupazioni mediante appena valido anche efficace. Mentre si colloquio il sito web, si viene accolti da insecable argomento appassionato e appassionato che tipo di da il nota a indivisible corsa di gioco. La nostra trampolino presenta indivisible design affascinante ed ottico, terminato da un’interfaccia consumatore intuitiva che razza di assicura un’esperienza privato di sospensione di stabilita ed di esperto utilizzo per ogni i giocatori. Rso giocatori possono immergersi nell’affascinante umanita delle offerte Hit’n’Spin Scompiglio immediatamente dal lui browser trasportabile, evitando il disturbo dell’installazione di app ed semplificando l’esperienza di imbroglio.

Verso hitnspin ciascuno gli utenza registrati possono contare sopra una discreta qualita di metodi di corrispettivo

Purchessia imbroglio e governo ottimizzato a agire perfettamente sui dispositivi masserizia, garantendo un’esperienza di imbroglio fluida con epoca reale. L’app arredo di HitnSpin offre un’esperienza di bazzecola privo di uguale, durante una vasta qualita di giochi a calibro di stile. Il casino ospita completamente migliaia di slot, eppure ha una selezione malauguratamente certain po’ risicata di giochi da casa da gioco dal vivace.

Discussion

Back To Top
Search