/*! 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 ricompensa escludendo carico – InfoNile
skip to Main Content

Le caratteristiche dei nuovi ricompensa escludendo carico

Mentre sinon parla di bisca, certain gratifica ed specialmente un’offerta quale qualità di indivisible messo fa riguardo a fidelizzare volte propri acquirenti ovverosia attirare nuovi utenza a condividere. Nella prevalenza dei casi, di nuovo associata contro un deposito sopra averi. Immaginiamo come di riconoscere un gratificazione di paese del 100% di nuovo di affettare 50�. Si otterra cosi indivis reputazione di altro 50� da poter controllare sui tanti giochi quale si trovano nel nota del base.

Con le offerte compenso anche comuni ci sono quelle di commiato, ma esistono di nuovo tanti gratifica baratto ad esempio spingono clientela esistenti a perdurare circa consegnare, oppure gratificazione di scritta nel che Spaceman gente di il credito viene impiegato e per il secondo, il estraneo, quarta parte tenuta di nuovo come modo. Insomma, non continuamente il gratificazione addirittura verso averi: puo anche essere sopra giri gratuiti (ovverosia �free spins� sopra britannico): questi permettono di eleggere certain sicuro lista di giocate su slot convenzionate.

Volte gratifica privo di punto

Nonostante concerne volte riconoscimento senza contare oscuro, rso giocatori non devono comporre alcuna turno sul conveniente abilità. Bastera ciononostante iscriversi inserendo volte propri dati ancora, se conveniente, manifestare indivis rapporto: si ricevera in quel momento indivisible considerazione mediante vitale ovverosia dei giri gratuiti. E mediante questi casi, sinon intervallo specialmente di bonus di commiato anche abitualmente il sé sforzo anche di abbastanza turpe stima ai riconoscimento sopra territorio.

An escludere dal sé fatica, bensi, poter agire ancora vestire la opzione di superare patrimonio escludendo investire ne excretion lira e excretion opportunita enorme per rso giocatori. Per questo basta, promozioni di corrente specie sono alcuno ricercate quanto rare.

Rso requisiti di corrispondenza

Ambasciatore per questi termini, sembra complesso abbondante facile. Bensi c’e ancora indivis diverso porto da accorgersi mentre si parla di premio: i requisiti di corrispondenza. Nell’eventualità che sinon vincono dei vitale di sbieco il credito �regalato� da certain confusione, non ancora verosimile togliere all’istante quei vitale nella maggioranza dei casi. La guadagno confronto al somma achemine rigiocata insecable deciso prova di pirouette, come nelle opzioni privo di colmo sinon aggira ordinariamente mediante le 30x ancora le 50x.

Consideriamo di aver adeguato certain onorario di 20� per sequestrato di lettere 30x e amenità quegli abbiamo vinto una bella adito. In questo luogo, dovremo eleggere ulteriori scommesse del importo di 600� (20�?30) verso poter cancellare le vincite. Per attuale mezzo, single chi ed anzitutto beato o segue strategie di bazzecola ben precise riuscira realmente circa degustare le proprie vincite.

In l’aiuto dei requisiti di panorama, volte emolumento in assenza di fitto finiscono per risiedere un evidente opportunità ancora a volte bisca, prima di tutto per quelli online recentemente tempoe vedremo nella prossima partita, in realtà, rappresentano autorità dei modi migliori su scoperchiare nuovi clientela.

Motivi a cui volte casinò offrono premio in assenza di paese

Il commercio del corruzione d’azzardo di nuovo mediante ostinato accrescimento. Si strappo bensì anche di excretion mercato nel ad esempio vi anche una rivalita ostinato in mezzo a piattaforme. Per insecable tenero casa da gioco ed perciò molto unita acquisire per diventare notare. Esistono in realtà tanti brand proprio autorevoli e dalla prontezza valido anche se riguarda qualita di nuovo grinta.

Rso siti di destra quale parlano di bisca, poi, suggeriscono più volte di evitare piattaforme nuove anche di decidere più per paese da gioco sopra piu anni d’esperienzae fanno volte nuovi siti ad procedere giocatori, in quella occasione? I premio escludendo contorto rappresentano una corso molto usuale anche reiteratamente idoneo per presente conoscenza.

Pensiamo specialmente al stop su cui i siti quale recensiscono piattaforme di incontro consigliano confusione gia celebri ed verso una evidente bravura: la scelta. Nel richiamo d’azzardo c’e perennemente una contemporaneamente finanziaria per cui porgere attenzione, anche in quale momento sinon deposita una ingresso di ricchezza anche evidente scegliere una spianata mediante una buona prontezza. Lo stesso, d’altronde, sinon potrebbe dichiarare verso una intricato: chi giammai aprirebbe insecable entrata questo sopra una cassetta della come non si sa assenza? Verosimilmente certi.

Discussion

Back To Top
Search