/*! 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 Jak zaczac Zrelaksowac sie i grac na gra za gotowke ktorzy maja telefonu? – InfoNile
skip to Main Content

Jak zaczac Zrelaksowac sie i grac na gra za gotowke ktorzy maja telefonu?

Kazdego najlepszych kasyn internet oni rzeczywiste wedrowanie wersje swoich duzych kasyn internet

  • SSL (https) i mozesz licencje bezpieczenstwa. SSL (Secure Socket Layer) to szyfrowanie, ktore dziala w celu zaszyfrowania absolutnie calej komunikacji miedzy kazdym uzytkownikiem a witrynami internetowymi, umozliwia to tylko temu uzytkownikowi i prawdziwej witrynie udostepnianie informacji lub danych osobowych. Istotnym jest, ze najlepsze kasyna mobilne uzywaja tej funkcji, jako ze przedsiebiorstwa w branzy iGaming sa zawsze narazone na ryzyko kradziezy danych finansowych i osobistych graczy. Cyberprzestepczosc stale rosnie, a bez tego oprogramowania uzywanego przez kasyno na prawdziwe pieniadze, korzystanie z niego wcale nie jest bezpieczne. Wiarygodne kasyna mobilne online, ktore pokazuja na swojej stronie internetowej, ze posiadaja niezbedne, wiarygodne certyfikaty bezpieczenstwa, okazuja sie byc najbezpieczniejsze.
  • Proste jest uzywany propozycje dla wplat za pomoca telefonu komorkowego. Najlepsze mobilne kasyna w Polsce oferuja wiele prostych i latwych metod wplat, dzieki czemu mozesz wybrac takie, ktory jest odpowiednie dla Ciebie. Wazne jest, aby kasyna mobilne byly zroznicowane pod wzgledem metod platnosci, gdyz jesli oferuja tylko jeden lub dwa sposoby platnosci, ogranicza to tylko ich obecnym lub przyszlym graczom placenie i granie w gry. Im wiecej metod wplat, tym lepiej, gracze moga wowczas wybrac metode, ktorej chcieliby uzyc wedlug wlasnego uznania, co przyczynia sie to do tego, ze operator kasyna staje sie jednym z najlepszych polskich kasyn mobilnych.
  • Odpowiedni ze wszystkimi sierzania najpopularniejszych polskich witryn kasyn mobilnych powinienes uzasadnienie, jesli czy nie ich strona jest wlasciwie kompatybilna kiedy uzywam platformami lorsque ekranu. Lub nawet jest wlasciwie one standaryzowane razem z twoim urzadzeniem, technologia informacyjna zupelnie prawdopodobnym sa, ty na pewno uniemozliwi to caly gre. Szuflada kasyno hazardowe mobilne oferuja kompatybilnosc z wieloma smartfonow, tak wszyscy sportowcy uwzgledniaja wybor grania na tej rodzaju mobilnej. Oczywiscie, pozwalaja one do licznych dopasowan do kilku jak duzy ekranu, ktore sa miec sportowcy. Oni automatycznie wynosi kasyna z telefony komorkowe z stacja spolecznosciowa jednego z w zasadzie najbardziej, jak obejmuje wszystkie rozne problemy nie bede miec twoje graczy.
  • Wybor gier. To, co natychmiast wyroznia najlepsze polskie kasyno mobilne, to zakres gier, ktore faktycznie sa oferowane graczowi. Jesli przyjazne mobilne kasyno oferuje tylko kilka gier, spowoduje to, ze wielu graczy szybko przestanie sie interesowac i skonczy grajac w innym miejscu. Dobrze jest miec zatem rozne gry i byc na biezaco z popularnymi trendami, ktorych wymagaja gracze. Gry sa istotna czescia hazardu na smartfonach. Bez nich przeciez, w co inwestowaliby swoj czas i pieniadze nasi gracze? Pamietajmy jednak, ze oferowne gry musza byc obu tych zasobow (czasu i pieniedzy) warte i oczywiscie oferowac ogrom zabawy dla graczy. Jesli szukasz darmowe gry hazardowe na telefon, mozesz zagrac w takie na naszej stronie w wersji demo.
  • Firmy oprogramowania mobilnego kasyno hazardowe. Niektore kasyna online w Polsce korzystaja z uslug niezaleznych programistow, ale wiekszosc z nich wspolpracuje z zaufanymi, renomowanymi programistami zewnetrznymi. Wiekszosc najlepszych witryn kasyn mobilnych w Polsce wspolpracuje z programistami zewnetrznymi, takimi jak NetEnt, Playtech i Microgaming, ktorzy sa najpopularniejszymi programistami, ktorzy zostali uznani za najlepszych w branzy hazardowej. Tacy dostawcy sa najlepiej znani z roznorodnej oferty gier, funkcji i roznego rodzaju platform, na ktorych mozna grac. Jesli wiec widzisz mobilne kasyno wspolpracujace z jednym z tych najlepszych psow, to mobilne kasyno internetowe jest godne zaufania na poczatek.
  • Rozmawiac przetrzymaj i serwis 24/7. Wazne jest, aby szukac systemu wsparcia, ktory ma do zaoferowania twoje najlepsze kasyno mobilne online. Wiedzac, ze oferuje ono pomoc, gdy tylko jest ona potrzebna, predzej uznamy ich za najlepszego operatora. Utrudniloby to znacznie sytuacje, gdyby gracze nie mieli zadnych dostepnych wskazowek, utkneli w grze lub nie podolali platnosciom lub depozytowi, a nawet gdyby gracz potrzebowal pomocy w zrozumieniu, jak grac. Zaufane kasyna na telefony komorkowe wiedza, ze konieczne jest oferowanie pomocy nowym i istniejacym graczom, buduje to wieksze zaufanie i lojalnosc.

Mozesz wykorzystac uzywa otworzyc na przegladarce mobilnej i mozesz korzystac z gier zyczenie, jak z komputera

Mozna znalezc kilka wskazuje rozpoczecia gra wideo na kasynie mobilnym. Pierwszym z nich jest gry kasyno do pobrania na telefon, czyli pobranie aplikacji kasyna na smartfona i wykorzystanie jej do grania w gry kasyno na telefon. Ta opcja jest wygodna, poniewaz Twoje ulubione casino na Fambet Casino telefon zawsze bedzie w zasiegu, jednakze aplikacja kasyna pochlonie troche miejsca w pamieci smartfona, wiec miej to na uwadze. Innym sposobem jest granie w internetowym kasynie mobilnym. Obie opcje kasyno na komorke sa dobre, dopoki nie grasz tylko w niezawodnych kasynach, wiec po prostu wybierz te, z ktora czujesz sie bardziej komfortowo.

Discussion

Back To Top
Search