/*! 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 Wirtualny asystent., zapewniajac wysokie standard obslugi, roznorodnosc metod uzywanie, i nawet kryptowaluty, oraz calodobowa pomoc techniczna – InfoNile
skip to Main Content

Wirtualny asystent., zapewniajac wysokie standard obslugi, roznorodnosc metod uzywanie, i nawet kryptowaluty, oraz calodobowa pomoc techniczna

Betonred Casino placi technologia informacyjna, zaprojektowany, sportowcy mogli z latwoscia odkryc wytyczne cokolwiek twoje Jackbit wlasne lokalizacji oraz preferencji jezykowych, z powodu wielojezycznemu zespolowi obslugi klienta. Duzo wiecej informacji sa prawo na stronie kasyno hazardowe.

Betonred technologia informacyjna miedzynarodowe kasyno online oferujace kilka gier kasynowych, takich jak automaty do gier, gra stolowe oraz gra online ktorzy maja krupierem przetrzymaj, po prostu co karte do losowania czesto doswiadczonych graczy, poniewaz i bedziesz nowicjuszy. Program dziala licencji uzyskanej w Curacao, umozliwia na prowadzenie dzialalnosci w wielu krajach, gwarantujac astat tym bezpieczenstwo oraz ustawodawstwo zgodne posiadanie wymogami licencyjnymi. Betonred probuje obslugiwane przez Uno Digital Media B.

Kasyno rowniez oferuje ekstensywne zachety i mozesz reklamy, ktore sie zdarzaja atrakcyjnym elementem w nowych uzytkownikow oraz stalych graczy, i cashbacki, bezplatne spiny i programy lojalnosciowe. Dzieki latwemu na obsludze interfejsowi oraz rozbudowanej elementu odpowiedzialnej gra wideo Betonred ma stale, szczesliwe ekosystem do graczy, dbajac jednoczesnie w sprawie zasady odpowiedzialnego hazardu.

FAQ

  • Jak wybrac wiarygodne kasyno online/bukmachera?
  • Jakiekolwiek fillip i bedziesz reklamy sa dostepne dla nowych i bedziesz stalych graczy?
  • Jak to zrobic wydac masz zarobki ktorzy maja konta gracza?
  • Jakie wskazowki dla wplat i bedziesz wyplat pojawia sie?
  • Jakie sa ograniczone i mozesz maksymalne granie roznych gier lub moze wydarzen?
  • Kiedys zatrudniaja programy lojalnosciowe i bedziesz nocne miejsce VIP?
  • Jak wpasc, jesli gra lub moze wlasnie obliczony jest rozsadne?
  • Sa tam kroki mogli zwiekszyc moje szanse na wygrana na kasynie lub po prostu po prostu zakladach sportowych?
  • Po prostu co musze zrobic, kiedy powinienes zdecydowac mam problemy posiadanie dostepem z poziomy lub moze dokonywaniem transakcji finansowych?

Zarejestrowal sie na calym swiecie siec kasyna i mozesz przekonaj sie, ze internetowe kasyna zapewniaja znakomita rozrywke, ze miec dobre korzysci. Potwierdzenie oceny kasyn, motywacja, odkryj wiatr twoj publikacja hazardowy, przeczytaj rzeczy o tym, jak grac online i randki najnowsze propozycje dla wygranych.

Wiekszosc z kasyno Darmowe spiny Przedsiebiorstwa hazardowe w czasie rzeczywistym Informacje kasyno Nowe kasyno Pay azot play Premia 100% na 2000 PLN + dwiescie darmowe spiny Wsrod lepszych zespol oprogramowania Deposit method: Time ograniczenie: 0-5 dni Madrosc Przedsiebiorstwa hazardowe odsloniete Styl mobilna Minuty. Deposit Wprowadzenie

Sprawdz, czy sa jakies korzysci oferuje technologia informacyjna kusza kasyno internetowe, swatanie nasza ankiete przedsiebiorstwa hazardowe Wazamba i dowiedz sie, sa tam korzysci czekaja na ciebie podazaniu rejestracja w celu.

Procent bonusowy Bezplatne spiny niezliczona ilosc% do 2000 PLN + jedno C darmowych obrotow piec ofert powitalnych Deposit method: Gra jak popularnych usluga oprogramowania Licznych ofert powitalnych do wyboru Akceptuje kryptowaluty Madrosc Kasyna odsloniete Wersja mobilna Tajwanska. Deposit Wprowadzenie Procent bonusowy Bezkosztowe spiny 100% w 2000 PLN +dwiescie spinow bonusowych Telefon przyjacielski przedsiebiorstwa hazardowe Deposit method: Informacja Kasyno rozpoczete Wersja mobilna Min. Deposit Wprowadzenie

Wazamba to kolorowe kasyna, ktorego przewodnim motywem probuje idz zaginionego ladu szukam skarbow

Malina Casino to jeszcze inny twor uznanej grupy operatorow 7StarsPartners i bardzo udane kasyno internetowe, stawiajace do nowoczesny wyglad oraz grzechotanie zalety. Zobaczcie przejrzyj i przekonajcie sie, jakie eksperci moga tu odkryc inicjuj gracze i mozesz weterani gier w sieci.

Procent bonusowy Bezkosztowe spiny niezliczona ilosc% na 2000 PLN +200 darmowych obrotow Tawerny dealera na zywo Deposit method: Time limit: 0-piec dni Plyn design. Dom wiodacych obsluga oprogramowania. 24-godzinne wygrana – kontynuowaniu przetworzeniu. Informacja Kasyna rozpoczete Forma mobilna Minuty. Deposit Wprowadzenie

Szukacie fabrycznie nowego przedsiebiorstwa hazardowe, i to posiada byc dostepnym oprocz gre do automatach, jesli czy nie ktorzy maja krupierem, jeszcze chcielibyscie w jednym miejscu obstawiac jednak zaklady bukmacherskie, a do otrzymywac niezle zachety? Sprawdzcie ankiete Kasyna Rabona i mozesz dowiedzcie sie, dlaczego korzystne dolaczyc i mozesz rozpoczac gre w sprawie prawdziwa kase.

Procent bonusowy Bezplatne spiny 100% na 1000 PLN Caly wez gra kasyno Deposit method: Time ograniczenie: 0-piec dni Calkowicie sek-gra na kasynie. Zabezpieczone szyfrowaniem SSL. Dokladnie przetestowane z eCogra. Wiedza Przedsiebiorstwa hazardowe uruchomione Wersja mobilna Min. Deposit Wprowadzenie

Energy Casino technologia informacyjna absolutorium elektryzujacych gier kasyno online, z fenomenalna oferta w stalych klientow. Zobaczcie ankiete Energy Casino i mozesz dowiedzcie sie, dlaczego technologia informacyjna dzialajace jak wiekszosc lata . stary kasyno online cechy jedna z najciekawszych propozycji.

Discussion

Back To Top
Search