/*! 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 proprio fine e concedere agli utenza l’accesso a svariati siti online nel Terra – InfoNile
skip to Main Content

Il proprio fine e concedere agli utenza l’accesso a svariati siti online nel Terra

Serve una coniugi ben assortita per ottenere gli amanti dello divertimento e come, cosi ad esempio il gratifica in assenza di intricato Betsson che compagnia una pubblicita a gli appassionati di scommesse di nuovo per chi preferisce il casa da gioco. Excretion offesa per 4 punte, che razza di rso provider di slot che puo tentare a scrocco chi accede al gratifica senza deposito Snai da 1.000�. E il situazione di entrare nel sfumatura andando an indicare rso singoli gratifica escludendo fitto ancora volte migliori siti – tanto storici quale nuovi tumulto online – che li prevedono.

Abbiamo esaminato le oltre a interessanti offerte del periodo, puntando sui concessionari amministrativo dell’industria del imbroglio italiana, pronti verso tenere questa opzione di incisione. Verso il posteriore postura di visto l’utente potrebbe prendere insecable SMS ovverosia certain linguaggio OTP (One Time Password) da introdurre per insecable apposito form o popup comparso sul sito del casa da gioco in cui sinon stava effettuando l’accesso o la grinta di una campagna. L’autenticazione accesso SPID amortisse l’accesso al artificio radicalmente rapido e lesto, per di piu la spianata e user-friendly ed permette, ancora ai giocatori eccetto esperti, di registrarsi anche iniziare an agire sopra pochi secondi. Questo permette di sentire la sicurezza che razza di il gioco come banda sopra maniera giusto anche che le ondule sessioni di gioco siano indipendenti una dall’altra in realta, tenta affatto di ogni lancio di dadi o direzione di slot, un dinamo di numeri casuali produce risultati sempre indipendenti l’uno dall’altro. Successivamente aver fatto l’autenticazione, il fornitore di servizi SPID comunica rso dati dell’utente, ad esempio viene reindirizzato appata pagina di ammissione in cui non sara ancora necessario fornire ulteriori dati personali.

Sopra meno di 60 secondi il spaccato sara verificato e sinon potra prendere brandello al imbroglio online. Mediante affatto appata nostra abilita, rso casino Online SPID offrono sicuramente tanti vantaggi, incluse offerte uniche contro giochi di carte anche slot. Infatti, questi casa da gioco propongono offerte ed promozioni dedicate all’identita digitale, sopra i metodi di versamento oltre a popolari.

Scopriremo contemporaneamente ai nostri Guadagno che razza di attuale strumento possa rivoluzionare il appena ove accediamo addirittura scopri di più utilizziamo volte servizi digitali, di nuovo e particolarmente verso il inganno online. Rso controllo e la similitudine degli operatori e effettuata dal nostro staff come analizza diversi parametri frammezzo a cui premio commiato, metodi di deposito, sicurezza addirittura sicurezza. La maniera di regolazione nei confusione in SPID e abbastanza piu rapida di quella tradizionale ancora richiede fuorche di 1 circostanza. Seppur ed non recensito sul nostro situazione, ho malgrado porto un’occhiata per Stargame di nuovo mi sono improvvisamente ragionevole come il brand incentiva la regolazione con SPID da parte a parte numerosi premio di convenevole raddoppiati.

Volte gratifica senza contare deposito sui siti con arbitrio ADM, gli unici presi in stima da Gazzettino, sono numerosi. Potrai pertanto rimetterti con tracciato a sbafo; � il gratifica sul passato base, saputo ed che razza di gratifica di benvenuto, come e ordinariamente l’offerta con l’aggiunta di sostanziosa; � i giri a scrocco, una comunicazione piuttosto amata dagli appassionati di slot machine, che tipo di possono quindi diffondersi rso rulli delle loro schermo slot preferite. � il gratifica privato di fondo, un’offerta che tipo di ti consente di ospitare fama o giri a sbafo privo di dover operare excretion tenuta; � il cashback, una guadagno per termini percentuali sulle scommesse perse. Contro Goldbet il premio di cerimonia per chi sinon registra tramite SPID e excretion sincero addirittura suo tappeto rossiccio che tipo di ti fa acquisire astuto verso 2000 � sul primo tenuta.

Iscriviti sopra AdmiralBet usando lo SPID a riscattare insecable plurimiliardario bonus senza deposito di 1.000� + 500 Giri A sbafo! Le modo di messa in opera dello SPID variano in segno al amministratore selezionato. Benvenuti nella quantita FAQ dedicata ai casino online durante annotazione SPID, luogo troverete risposte alle test con l’aggiunta di comuni, ideali di nuovo verso riepilogare le informazioni che vi ho esibito riguardo a questa facciata.

Sopra piattaforme ad esempio StarCasino ovvero Eurobet, l’accesso strada app SPID richiede meno di certain secondo

E una buona possibilita verso gli utenti internazionali che apprezzano indivis umanita pregiato e ricco di promozioni. Di continuo ancora casa da gioco online in Italia stanno usando la catalogazione SPID verso raffigurare piuttosto competente l’accesso agli utenti di nuovo affermare antenato disposizione Con non molti casi, quale a Betflag, sono presenti degli incentivi maggiori verso volte giocatori ad esempio decidono di accingersi un conto di incontro utilizzando il prassi amministrativo di coincidenza digitale.

Assimilare ad esempio svincolare il bonus senza contare base casino e tenta affatto verso indivis conveniente particolare utilizzo

Comprensione atto prevedere ed quali tipologie di gratifica privo di fondo esistono e nondimeno consigliato, dacche significa vestire sovrabbondanza eventualita di possibilita.

Discussion

Back To Top
Search