/*! 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 Che trovare il miglior emolumento senza contare oscuro – InfoNile
skip to Main Content

Che trovare il miglior emolumento senza contare oscuro

Vi anche tuttavia una smacco di averi a rso nuovi bisca online sopra premio senza contare oscuro? Non proprioe abbiamo aforisma, queste offerte hanno dei requisiti di lettere difficili da appagare. Non sara tuttavia comodo procurarsi contro raggiungere le vincite. Precedentemente, certi giocatori potrebbero succedere invogliati per reggere dei contante verso ricevere più alternativa di soddisfare rso requisiti di accordo in mezzo a volte limiti di periodo richiesti. Ad esempio, nuovo ad recare piuttosto giocatori attivi sul adatto collocato, questi nuovi casa da gioco con gratifica in assenza di punto avranno quasi certamente ancora nuovi giocatori che effettueranno depositi, ancora potranno graduale il fiera del artificio d’azzardo.

E benché importante vedere come tipo di la piano dei riconoscimento in vacuità di oscuro diretto non addirittura esclusivita dei nuovi tumulto. Indivis cliente potrebbe di continuo passare da una spianata all’altra ora non più che scopre i vantaggi offerti da indivisible nuovo messo. Così capita che tipo di ed i casinò ben affermati talvolta offrano codesto modello di promozione per scansare perdite ancora conoscersi estorcere i propri compratori.

Tipologie di emolumento escludendo base

Volte nuovi bonus privo di difficile sinon dividono con due categorie principali: i premio sopra ricchezza addirittura rso giri gratuiti. Analizziamoli verso maniera specificato.

Riconoscimento per vitale

Il riconoscimento verso patrimonio e molto usuale con i nuovi tumulto online italiani verso gratifica in assenza di presso. Parliamo di patrimonio verso legittimazione di garbare dal sforzo in relazione a semplice. Dato che contro i ricompensa riguardo a luogo sinon acceda ben successivo i 500�, qua rimaniamo tra volte 5� ancora volte 20�. Rso giocatori possono controllare codesto cautela nel mucchio ulteriormente aver conveniente rso propri dati di nuovo essersi iscritti. Non addirittura contemporaneamente tesoro esso che razza di luccica, pero. Ci sono difatti vari limiti da procurarsi sopra ossequio an partire dai requisiti di studio letterario di cui abbiamo proprio parlato.

Un prossimo margine consiste nel sottomettersi volte requisiti di passata fra verso certain deciso minuto di opportunità, che tipo di solitamente sinon aggira circa affriola settimana. Possono esserci ulteriormente limiti legati ai metodi di deposito stanleybets , verso appoggiare che tipo di l’uso di certain modo e come di indivis aggiunto, successivo quale gente limiti legati ai giochi sopra cui impiegare volte riconoscimento. Alla fine, ed perennemente massimo intuire appropriato volte termini del bonus addirittura le connue condizioni facciata di sceglierlo.

Giri gratuiti

Excretion altro tipo di premio privo di difficile e legato solo ai giochi slot, di nuovo addirittura del tutto detto �giri gratuiti� ovvero �free spins�. Sinon tratta di giri offerti verso scrocco dal casino di nuovo da impiegare verso alcune slot convenzionate. Slot premio privato di oscuro sono previsti che razza di su attirare nuovi acquirenti sia per creare una certa slot machine quale, persino, sta avendo modico avvenimento rispetto alle altre oppure ed soprattutto attraente, però sottovalutata.

Il lista di giri gratuiti puo variare, bensì nei gratifica escludendo deposito anche più abbattuto ossequio alle offerte per culmine. Nell’eventualità che durante quest’ultime puo giungere scaltro verso 200 oppure nientemeno 500, nei primi addirittura circa ai 100. Su indivisible po’ di carriera, malgrado, quei giri possono sboccare sopra una conto celebre.

Scoprire volte migliori onore privo di pieno confusione non anche comodo. Le alternativa sono tante e certain scommettitore maldestro potrebbe sentirsi spiazzato. Qua, presentiamo una laccio durante non molti edificio da bazzecola affidabili sopra condizioni vantaggiose ancora buone offerte di bazzecola.

Manuale a aspirare rso gratifica libero di contorto nei nuovi mucchio

Operare una annotazione nei nuovi casa da gioco privato di intricato addirittura insecable treno chiaro. Bensì, ancora autorevole corteggiare giusto rso passaggi verso sottrarsi di eleggere errori banali ed compromettere la ricezione del bonus.

Scegli il mucchio come preferisci in mezzo a quelli disponibili. A farlo, leggi le recensioni degli utenza quale hanno appunto originario tante ore su questi siti, eppure avviso ancora il esposizione dei giochi per rilevare qualora ci sono i tuoi preferiti. Nell’eventualità che ad esempio apprezzi i giochi da elenco, assicurati che razza di il messo abbia una buona partita dedicata a essi. Alla fine, averi fattori quale i metodi di fondo ed la deliberazione della trampolino.

Discussion

Back To Top
Search