/*! 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 risultato e perfetto non solo dal apparenza di branding che razza di verso l’esperienza di gioco – InfoNile
skip to Main Content

Il risultato e perfetto non solo dal apparenza di branding che razza di verso l’esperienza di gioco

Per mettere soldi sul competenza di imbroglio, 888casino offre insecable serie di metodi diversi. Prima terminata la regolazione corrente in SPID, riceverai indivisible SMS, in cui ti verra proposto di accogliere il gratifica privo di fitto da 50�. Ulteriore al premio di saluto sul deposito, posso sollecitare ed il gratifica di 50� appata registrazione? 00 alle , 7 giorni circa 7.

L’offerta di cerimonia risulta prima di tutto avvincente, riconoscenza al bonus senza contare fitto astuto per 50� durante regolazione SPID, ai 50 Free Spin e al gratifica sul anteriore tenuta sagace verso 1.000�. Il passato e indivis bonus in assenza di base, ugualmente per 20� con regolazione classica o magro verso 50� mediante schedatura SPID. Codesto puo capitare prima di tutto efficiente a chi desidera amministrare il adatto contegno di bazzecola, durante la possibilita di fondare indivisible periodo di favore a certain lasso di tempo sancito. Tanto, 888 Confusione offre la opzione di accertare limiti di tenuta personalizzati per partecipare rso giocatori a condurre il proprio stanziamento di artificio. 888 Svago si posiziona che tipo di una delle piattaforme leader nel sezione delle scommesse sportive. 888 Mucchio si avvale della ausilio per non molti dei con l’aggiunta di rinomati software provider del area del artificio online, garantendo cosi un’offerta di giochi di alta varieta.

La live chat di 888casino e mancanza dalle 8

Nonostante la Merkur Slots bonus senza deposito professione e continuamente insecable termine, preferire slot sopra indivisible RTP leggero potrebbe aumentare le abats possibilita di successo. Inaspettatamente alcune idee a designare le slot ancora vantaggiose, in maniera da massimizzare le abat giocate cosi in il premio in assenza di intricato sia mediante quegli sul anteriore base. Ex registrati, venivano elargiti all’utente addirittura non solo poteva innescare la specifica voto, che razza di si trattasse del bonus di ossequio o quant’altro.

Presente e abitualmente il prigioniero riportato nella foglio dell’offerta privo di deposito dei bisca ADM. Il fun gratifica escludendo base non potra capitare prelevato precedentemente che razza di il giocatore effettui un’azione che razza di, ad esempio, excretion competenza microscopico di giri a titolo di favore provati riguardo a una ovvero piuttosto slot. Indivis Fun Gratifica e indivis credito quale il bisca puo caricare sul tuo opportunita inganno mentre ti iscrivi a la inizialmente cambiamento o mentre invii il verbale, mediante segno ai termini addirittura alle condizioni dell’offerta. Cio permette per un sportivo di attribuirsi il tempo necessario per risolvere nel caso che e dal momento che mettere sul competenza di imbroglio. Ciononostante, va evidenziato quale c’e addirittura l’opportunita di acquistare gratifica escludendo base e essendo proprio iscritti al casa da gioco. Sagace ad qui abbiamo parlato dei tumulto bonus privo di deposito 2024 facendo rimando alle offerte ad esempio possono avere luogo godute single dai nuovi iscritti.

Difatti, addirittura coloro quale non sono iscritti possono giungere tenta chat dal attuale

Mediante incertezza 2.500 titoli disponibili, puoi scoprire slot classiche, videoclip slot anche slot durante jackpot progressivi. L’originale caso tra provider nazionale 888 di nuovo gente provider popolari anche di sgabuzzino, consente a questo venditore di esaltare una delle offerte di giochi oltre a originali di totale il occhiata dei bisca online disponibili sopra retee molti grandi brand, addirittura 888 ha indivis adatto Boss Program, quale prende il reputazione di 888 Circolo.

Per poter sottrarre il bonus dovrete sottomettersi indivis playthrough (segregato di puntata) di 30, oppure dovrete divertirsi l’intero fatica 30 pirouette. La somma totale del premio di commiato dedicato dall’operatore sinon riceve sfruttando insecable premio sui primi tre depositi di nuovo la promozione �Happy Hour�. A nostro sentenza e ottima addirittura la possibilita di avvicinarsi, per lo identico disegno, alle piattaforme 888sport e 888poker raccolto a sistemazione dallo proprio esecutore. Ha una principio di 90 giorni addirittura richiede il intelligente di certain requisito di scorsa identico per 50x per manifestare prelevabili le eventuali vincite. Volte Free Spin hanno una fondamento di 7 giorni e le vincite generate sono prelevabili celibe poi il intelligente del segregato di puntata identico a 50x sulle vincite.

Discussion

Back To Top
Search