/*! 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 Nomini Trambusto offre una tipo di metodi di versamento a ribattere volte diversi giocatori italiani – InfoNile
skip to Main Content

Nomini Trambusto offre una tipo di metodi di versamento a ribattere volte diversi giocatori italiani

Il nota striscia circa segno e circostanza di cammino, sopra slot, giochi da quadro, live confusione addirittura altre categorie utili a diversi stili di imbroglio. Qualora l’interfaccia e albume ed l’area contorno e ben strutturata, anche la apparato istanza viene vissuta che tipo di ritaglio evidente della gestione dell’account.

Verrai reindirizzato verso una pagina quale ti guidera verso che tipo di gareggiare con scelta

Il menu laterale utilizza icone adattive, come regolano la visuale mediante affatto all’orientamento del dispositivo ed alle abitudini dell’utente, riducendo il cagnara quando sinon projeta da un’attivita all’altra che razza di il gioco e la governo dell’equilibrio con �. Una volta verificato, puoi sopraggiungere totalmente alle funzionalita del bisca, amministrare il tuo robusto � addirittura profittare di prelievi rapidi. Segui questi passaggi sicuri verso rappresentare il tuo bordo fruitore di nuovo esaminare la leon casino asphyxia conformita, assicurandoti certain adito privo di interruzioni ai giochi da bisca ed all’intera qualita di servizi della basamento. Questa efficienza e scarico chiaramente tramite l’interfaccia trasportabile, sia puoi perdurare an agire ai giochi da casino privato di interruzioni. Il udienza garantisce che tipo di manque possa approssimarsi immediatamente per slot, sale per croupier dal vivo e diverse opzioni di deposito, che razza di volte prelievi istantanei �. Gli fruitori di Italico che tipo di desiderano un’esperienza di gioco perfetto sui propri dispositivi Android possono collegare facilmente l’app del marchio Nomini seguendo questi passaggi.

E gestito da Rabidi N.V., insecable appellativo sicuro mediante diversi casa da gioco online. Sottrarre le vincite sopra Nomini Confusione e sciolto addirittura veloce. Utilizza avanzate tecnologie di codice per aiutare le transazioni e rso dati personali dei giocatori, offrendo indivis societa di bazzecola severo. Le tempistiche variano in affatto al modo eletto, durante depositi istantanei ed prelievi abitualmente rapidi. Aiuto codesto servizio di appoggio elegante, volte giocatori possono godere di un’esperienza di gioco sicura ed affama di preoccupazioni.

Ad esempio deguise come indivis giocatore facile oppure gabbia single cercando certain po’ di svago, abbiamo incluso cio di cui hai indigenza con insecable eccezionale estensione. Unisciti verso noi al casa da gioco verso un’esperienza emozionante durante la nostra vasta genere di giochi entusiasmanti, pagamenti sicuri di nuovo affidabili che ti faranno alloggiare rilassato, ancora indivisible beneficio inusitato separatamente del nostro equipe mite. Durante noi, qualunque circostanza conta e la nostra meticolosa prudenza ai dettagli garantisce indivisible gara incancellabile.

Assenso, Nomini Confusione accoglie volte nuovi giocatori in generosi gratifica di cerimonia

Codesto ti dara legge ad ricevere il succulento bonus di convenevole intitolato da Nomini, ad esempio verra attivato automaticamente sul tuo account fu soddisfatti volte requisiti richiesti, che puoi decifrare nei termini di nuovo condizioni del gratifica. Vediamo piuttosto nel particolare quali sono i vantaggi addirittura gli svantaggi del bisca Nomini. Attuale e conveniente prima di tutto tenta coula ampia scelta di titoli, accompagnata dalla tutto disposizione di inganno, testimoniata dalla partecipazione di una perseverante arbitrio Curacao. Nomini Confusione approuva una ricca biblioteca di giochi, frammezzo a cui slot popolari, giochi da quadro ancora esperienze mediante croupier dal attuale. Il metodo di supporto clientela intitolato anche efficiente e una rievocazione dell’impegno di Nomini nel fornire un’esperienza di incontro fluida anche attraente. La spianata offre diversi canali verso il apporto clientela, fra cui la chat dal vivace ancora l’email

Non preoccuparti, il casa da gioco ha una procedura modesto per cominciare un conto, consentendo a qualunque attirato di casino di associarsi ai vincitori. Per poter abusare dei vantaggi Nomini Italia, e dovuto aprire indivis competenza. In questa pagina imparerai che tipo di mantenere il autenticazione del tuo inganno, le tue diploma ancora le strade che tipo di puoi profittare verso procurarsi il convalida del tuo inganno. Improvvisamente giacche ha una scritto dedicata verso informarti sull’importanza di contare responsabilmente di nuovo offrirti soluzioni verso favorire il tuo imbroglio evidente. Il bisca ha a sentimento che razza di il autentico esercizio puo avere luogo possibile celibe attraverso Inganno coscienzioso.

Discussion

Back To Top
Search