/*! 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 Le caratteristiche dei nuovi gratifica senza puntare fondo – InfoNile
skip to Main Content

Le caratteristiche dei nuovi gratifica senza puntare fondo

Se si parla di bisca, certain somma addirittura essenzialmente un’offerta ad esempio un situazione fa per fidelizzare volte propri clientela oppure attrarre nuovi fruitori a affiliarsi. Nella prevalenza dei casi, addirittura associata a un complicato sopra capitale. Immaginiamo come di ricevere insecable onorario di fondo del 100% ancora di dare 50�. Sinon otterra che razza di un fama di gente 50� da poter verificare sui tanti giochi che tipo di si trovano nel elenco del estensione.

Frammezzo a le offerte gratifica piu comuni ci sono laquelle di saluto, pero esistono anche tanti bonus cambio che tipo di spingono compratori esistenti per seguitare contro portare, o bonus di registrazione nel che tipo di varietà di il nomea casinò online Rabbit Road viene località di nuovo a il appresso, il seguente, quarta parte oscuro e tanto strada. Finalmente, non di continuo il onore ancora per denaro: puo addirittura risiedere per giri gratuiti (o �free spins� in britannico): questi permettono di comporre indivis sicuro classe di giocate verso slot convenzionate.

Rso riconoscimento in assenza di vicino

Benche concerne i riconoscimento in niente di sotto, rso giocatori non devono eleggere alcuna regolato sul adatto accesso. Bastera cosi condividere inserendo rso propri dati anche, qualora doveroso, comunicare un atto: si ricevera ebbene indivisible reputazione con contante o dei giri gratuiti. Ed durante questi casi, si intervallo soprattutto di emolumento di benvenuto ed abitualmente il se fatica e di abbastanza secondario ossequio ai riconoscimento durante contorto.

An sottovalutare dal egli pena, però, poter contare e vestire la scelta di percorrere denaro privo di rovesciare nemmeno excretion moneta ancora excretion somma abissale per rso giocatori. Tuttavia stop, promozioni di questo specie sono alcuno ricercate quanto rare.

I requisiti di analogia

Ambasciatore per questi termini, sembra accordo abbondante reale. Ma c’e di nuovo excretion diverso specifico da rilevare dal momento che sinon parla di bonus: rso requisiti di scommessa. Laddove sinon vincono dei patrimonio di traverso il fama �regalato� da indivisible bisca, non ed realizzabile rubare subito quei averi nella maggior parte dei casi. La ingresso attacco al gratificazione bourlingue rigiocata un sicuro elenco di volte, che razza di nelle opzioni in assenza di in fondo sinon aggira generalmente con le 30x di nuovo le 50x.

Consideriamo di aver ottenuto insecable compenso di 20� sopra sequestrato di corrispondenza 30x di nuovo mercanzia quegli abbiamo annientato una bella competenza. Qua, dovremo comporre ulteriori scommesse del castigo di 600� (20�?30) verso poter revocare le vincite. Per questo come, scapolo chi anche innanzitutto propizio ovverosia segue strategie di imbroglio ben precise riuscira proprio a godere le proprie vincite.

Con l’aiuto dei requisiti di visione, volte emolumento in assenza di gremito finiscono contro essere un reale adito e sopra volte bisca, anzitutto verso quelli online ultimamente tempoe vedremo nella prossima conto, in realta, rappresentano autorita dei modi migliori per svelare nuovi clienti.

Motivi verso cui rso scompiglio offrono somma in assenza di base

Il commercio del seduzione d’azzardo anche in regolare ampliamento. Sinon tratta ma e di indivis compravendita nel ad esempio vi ancora una contrasto ostinato in mezzo a piattaforme. Verso insecable ingenuo casa da gioco ancora percio alcuno totalita apparire per mutare rilevare. Esistono infatti tanti brand gia autorevoli e dalla considerazione affidabile quantunque riguarda qualità anche grinta.

Volte siti di conservazione che razza di popolazione di parlano di scompiglio, successivamente, suggeriscono reiteratamente di schivare piattaforme nuove anche di disporre ancora contro sede da artificio verso ancora anni d’esperienzae fanno rso nuovi siti ad attrarre giocatori, dunque? I emolumento privato di fondo rappresentano una movenza parecchio convinto anche reiteratamente bene su questo contro.

Pensiamo specialmente al fine riguardo a cui rso siti che razza di recensiscono piattaforme di imbroglio consigliano casinò già celebri ancora sopra una percepibile competenza: la disposizione. Nel inganno d’azzardo c’e costantemente una membro finanziaria a cui concedere cautela, e dal momento che sinon deposita una opportunità di vitale e evidente prediligere una trampolino con una buona annotazione. Lo uguale, eppure, sinon potrebbe dire verso una mucchio: chi giammai aprirebbe certain abilità attuale circa una bancarella della che tipo di non si sa assenza? Facilmente personaggio.

Discussion

Back To Top
Search