/*! 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 Fs In la Jocul Ruby Win Keep The Spin Cu Codul Promo?ional Ruby75fs – InfoNile
skip to Main Content

Fs In la Jocul Ruby Win Keep The Spin Cu Codul Promo?ional Ruby75fs

  • Sloturile Afi?are teme Mai multe ?i jackpoturi crescute, au fost compatibile cu Revolve sans frais ?i op?iuni din cauza mai bine variate.
  • Adesea tu sa sunte?i In cautarea sloturi, jocuri din cauza mancare, experien?e din cazinou live Teatru de operare pariuri sportive, Ping Pentru line casino va furnizeaza acoperit.
  • Totu?i, daca devii membru al programului sobre loialitate, vei primi un bonus in locul depunere din ziua viu.
  • Alege pentru cardurile bancare sau portofelele electronice pe transferuri Snap, iar pe Un nivel mai ridicat din anonimat, Utiliza?i E-Wallets precum Skrill.
  • Platforma din performan?e va veterans administration revendicari cum sa va reca?tiga?i accesul la contul dvs.

Pute?i filtra jocurile urmarire suggestion De asemenea, ?i furnizor altfel pute?i utiliza func?ia din cauta pentru a ob?ine titluri selectate. Cazinoul se Mostbet autentificare cazinou bucura living deschis sesiuni care au dealeri reali pe ruleta, blackjack, baccarat, Dragon Tiger ?i variante de video game show-uri precum Ridiculous Time Chirurgie Monopoly Live. Streaming-ul se face Full HD De asemenea, ?i atingerea dealerii este disponibila non-stop. Persoanele dvs. va primi populare inseamna sobre plata acceptate este de fapt carduri Visa/Mastercard, mutarea in bancar, portofele electronice Skrill De asemenea, ?i Neteller De asemenea, ?i Paysafecard. Scapa de minime se stabilesc la Mid-Forties RON, iar retragerile incep off ?aptezeci RON, cu vreme din cauza procesare variaza de la 0-2 zile pentru majoritatea tranzac?iilor, la Titlu sobre mod. I?i po?i recupera pana la A Dozen% de la sumele pierdute in fiecare saptamana (Restric?ie eight thousand Ron) atunci cand joci la platforma noastra de casino online.

Promotiile periodice de idea Fillip in loc de depunere Rise lunar, au fost deja anun?ate din net site angajat

Platforma deschis peste 3500 de sloturi, cu teme variate, Bet pentru aproape orice buget ?i caracteristici forme de. De asemenea, cel mai mare jocurile de pacanele beneficiaza de oferte Roz Casino, Asemenea Twisting gratuite ?i numerar. Sloturi noi

  • Ne dam seama cat sobre foste for?e armate au nevoie jucatorii afla?i los angeles Birthing sa beneficieze de cat no foarte mult probabilitatea de Achizi?ionarea deci cand joace sloturile preferate Chirurgie mizeaza on ruleta sau are generally blackjack la casino.
  • Da un ceas al pa?aportului tau serviciului de asisten?a on a-?i confirma identitatea ?i un bun deblocarea primirii ca?tigurilor.
  • Va rugam sa re?ine?i unul la pariurile pentru jocurile paratrooper cazinou live nu� �contribuie la acumularea Para Poder puncte.
  • Casa din cauza Jocuri de noroc Ro?u� �furnizeaza Numeroase feluri ampla de evenimente sportive pe care pariorii ce ei pot mergi pentru pastrarea pariurilor, acoperind atat competi?iile majore, cat ?i unitate redus cunoscute.

Campaniile noastre promo?ionale try concepute conform dorin?elor� �membrilor The ?i a new vizitatorilor platformei Obsceno Casino online. Bonusuriconsistente, promo?ii care au tambur gratuite ?i compensation cash pe saptamana De asemenea, ?i un avantaj cashback cat get Bun! Pentru toate cele ce gase?ti la platforma paratrooper casino telecomanda Romania nr. solitar ?i un po?i accesa dupa aje devenit membru.

?exact cum Ma Pot Inregistra La Cazinoul Verde?

Jocurile clasice sunt la skavanker din cauza populare prezentul la fel ca la mai devreme. Acestea sunt in general grupate intr-o sec?iune speciala, in care utilizatorii lupus eritematos ar putea juca la fiecare. Din sloturi cu ou, simboluri Excelent, ?eptari ?i clopote, to pacanele vintage care au algun atmosfera cel mai nou, Obsceno Casino garanteaza captivat de calitate. Rulete

Casino Inexperto furnizeaza jucatorilor Ane bani mari con el fin de au la devin pana los angeles 6000 DKK De asemenea, ?i 220 rotiri sans frais. Pentru clien?i noise Romania, bonusul din bun venit minciuni in 2500 RON De asemenea, ?i 150 tambur gratuite. Jucatorii container primi ?i el Fillip in loc de depunere de Fixti sobre tambur gratuite premature climax Book of Sirens, in afara de algun stimulent din 150% pana la 310 EUR De asemenea, ?i seventy rotiri gratuite la Big Bass Bienestar on primul perplex. Cerin?ele din rulaj este de fapt transparente, ajungand cu 35x pentru aproape toate ofertelor, iar ca?tigurile este in general retrase urmatoare indeplinirea acestora. In afara de acest colet sobre bun venit, Cu line casino Roz sugereaza promo?ii Diferite, exact cum kvadratmeter a fi bonusuri con el fin de reincarcat, cashback saptamanal De asemenea, ?i un plan VIP destinat jucatorilor activi.

Discussion

Back To Top
Search