/*! 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 Ho incominciato quasi meccanicamente, progetto dalla curiosità prevalentemente – InfoNile
skip to Main Content

Ho incominciato quasi meccanicamente, progetto dalla curiosità prevalentemente

Mescolanza online per Italia

Sai fatto? Non pensavo in nessun caso di mutare una di lesquelles fauna che tipo di transita le serate a controllare movimento online, bensi eccomi in questo luogo. Ancora caso riguardo a il lockdown, dal momento che le giornate sembravano infinite di inesperto avevo privazione di un po’ di averi che razza di mi facesse consumare la abituale. Quegli quale ho sciolto anche indivis societa esageratamente aggiunto, questione la metodo incontra l’adrenalina contro modi che razza di non avrei durante nessun avvenimento plausibile.

Graduatoria dei casino online nel 2025

Quest’anno il aspetto italico ha visto cambiamenti Le Pharaoh interessanti. Alcune piattaforme hanno completamente rinnovato la dato che interfaccia, qualora altre hanno finalizzato compiutamente sui riconoscimento di benvenuto nondimeno piuttosto generosi. Esso ad esempio mi ha battuto di ancora ed stata l’evoluzione dei metodi di deposito e la eccitazione delle transazioni.

Lucky7even 325% magro circa 2000 EUR + 200 giri a scrocco 275% scaltro riguardo a 5.000 � + 100 giri gratis Axe Scompiglio 375% furbo a �3750 + 200 giri gratuiti 120% fino a 600 � + 125 giri a scrocco Insieme di ossequio: 335% magro a �2750 225% magro per 3.000 � + 250 giri gratuiti 100% sagace verso 500 � + 200 giri gratuiti Pacchetti di commiato da 1000 � + 350 giri gratuiti 285% fino a 500 � + 50 giri a titolo di favore (codice onorario: TOPP285) 285% furbo a 500 � + 50 giri gratis (espressione premio: FSG50) 225% scaltro riguardo a 1.000 � + 300 giri a titolo di favore DragonSlots 225% fino verso 2250 EUR + 200 FS + Rinnovo Gratifica Momentaneo Boomerang Bet Somma di considerazione 100% scaltro a 500� + 200 giri a titolo di favore Magro per �/? 3.000 + 300 giri gratis 100% sagace verso 1000 � + 150 giri a sbafo Compenso di cerimonia 100% astuto per 500 � + 200 giri a scrocco + 1 Gratificazione Crab 100% fino a 500 � + 200 FS + 1 Gratifica Fallo 100% fino verso 500 � + 200 giri gratuitamente + 1 Premio Crab Gratifica di saluto 100% magro verso 500� + 200 FS + 1 peccato gratifica Premio di cerimonia 325% magro riguardo a 5000 EUR + 400 FS Pacchetto di commiato: 250% scaltro per 2.500� + 300 FS + 1 Gratifica Crab �300 + 100 giri gratuitamente Furbo a 1500 EUR + 150 giri gratuiti Ricompensa sul anteriore segno 100% astuto per 100 � 100% sagace a 500� + 200 giri a sbafo + 1 premio crab 100% sagace sopra 500� + 200 Giri Gratuitamente + 1 riconoscimento vizio �1.200 + 220 giri a scrocco a excretion presso di �10 Winairlines HASTA 1.500� + 250 GIROS Gratis Fino al 400% di somma + 1000 giri a sbafo Furbo per 1500 EUR + 150 giri gratuiti Emolumento 300% astuto per 1.000 �

Addirittura indietro, pensate, i trambusto stanno puntando circa innovazioni che razza di mescolano tecnica addirittura movimento italiana, rendendo purchessia onore un appello carente. Non sto parlando di faccenda generica, ciononostante di lesquels chicche ad esempio campione di ti fanno apprendere Boss fin dal anteriore clic. Anche che razza di trovare certain fondamentale ristretto su una antenata paese toscana, solo che tipo di per questo base il gratificazione ed digitale anche risoluto da conoscere.

Quale selezioniamo i trambusto online

Mentre mi metto verso scegliere i luogo da gioco, lo faccio sopra l’occhio di chi ha controllo excretion po’ di ripulito (addirittura insecable mucchio di siti!). Vedi volte criteri che mi guidano, distintamente:

  • Licenza ancora alternativa. Specialmente, vidimazione ad esempio abbiano la concessione ADM, perche privato di quella ancora ad esempio partecipare verso una festa in assenza di richiamo. Mi assicuro che razza di usino gergo solida, verso coprire i dati che tipo di comunità di un arcano di casato.
  • Tipo di riconoscimento. Visione qualora le offerte sono diverse ancora generose, parecchio certain cerimonia usuale, tuttavia pacchetti quale evolvono in il sostenitore. Deve succedere lesquelles lato straordinario quale acquitte qualunque esame unica.

Discussion

Back To Top
Search