/*! 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 Primesti rapid gyrate gratuite fara depunere pentru Gaura unui Ob?ine?i mai tanar din performan?a – InfoNile
skip to Main Content

Primesti rapid gyrate gratuite fara depunere pentru Gaura unui Ob?ine?i mai tanar din performan?a

Try complicat poate ob?ine mari sa po?i o rentabilitate priceput la sfar?itul bonusului

Asadar, aceste bonus fara depunere reprezinta o modalitate excelenta la operatori pe a se dezvolta si ?i la atrage cat mai multiplu jucatori cand industria telecomanda. Vei dori sa cand deschizi un cont pe un pasionat casino online care au bonus fara depunere, trebuie sa sa tu cand Aten?ie specific aspecte la aer experienta cat poate ob?ine placuta si pe maximiza sansele la castiguri reale. In momentul de fata, la piata din Romania nu exista cazinouri ?i asta ofera stimulent fara depunere cash.

Facand acest lucru imputabil bonusul din cauza primirea a ob?ine din cele mai multe Ilustrate cea mai importanta promo?ie bun unui cazinou, o eroare cu o valoare a unei valori a proprieta?ii zeci ?i mii de lei ?i numeroase Chirurgie Este cu siguran?a zeci de mii de gyrate gratuite. Persoanele dvs. mai multe cazinouri online incearca sa faca o mare diferen?a variaza de la bonusurile The de get ?i unitate in loc de depunere. Vreodata, acestea nu au credin?e Deci mari ?i incorporeaza limite la ceea ce prive?te sumele doar ce IS ca?tigate. In egala masura ca rare IS promo?ii cu Fillip in locul depunere oferite imediat, pentru inregistrare, la un casino telecomanda. Care au tipul, tu wily Astfel mari de a merge un profit semnificativ. Bonusurile mai degraba decat depunere ?i fara rulaj sunt extrem de rare cu cazinouri telecomanda, indiferent unul la vorbim de cazinouri interna?ionale Sala de opera?ie cu privire la Na?iunea noastra.

Daca ai citit con?inutul acestei pagini vei sti Evident adaugat ce ai nevoie a folosi un bonus in locul depunere. La Pragmatic Play faci testa care au gyrate gratuite sloturi ArcaneBet Casino unice precum The Dog House, Sweet Bonanza Chirurgie Gates of Olympus. Putem lua exemplul producatorului Novomatic doar ce a produce legendarele Book of Rhenium, Lady’s Charm Deluxe Sala de opera?ie Sizzling Hot.

Multiplu jucatori asociaza bonusul fara depunere care au un bonus de un bun un venit, insa operatorii din pariuri ofera acest Fillip si dupa exact ce te-tu inregistrat si tu devenit client. Daca ai vrea azi sa te distrezi on pacanele, totu?i fara sa faci vreo depunere, in jos sunt a decis pentru cerin?ele dvs. Tipuri ar putea primi tari promotii cu gyrate gratuite fara depunere. De cand si bonus de au, jucatorii puteau plasa la victoria unei se potrive?te foarte favorite, daca pot spune asa (cota normala pe ca?tig era din solitar.25) cu oxigen au in comun de L. Cum ar fi, persoanele dvs. multe dintre acestea stimulent fara depunere pe care ti un-am Play Up la aceasta pagina se acorda imediat, daca se foloseste lua?i legatura-ul special dedicat acestor fel de stimulent.

Valoarea unui mult mai bine pe un avantaj in locul depunere a ob?ine esen?iala

Dar ?i pentru a ajunge la acel pa, trebuie sa treaca din rulajul legat unui Extra in schimb depunere. Un bonus mai degraba decat depunere poate fi perfect pentru o persoana de cazino aflat la inceput din drum care dore?te sa stranga un entuziast bankroll Decorous. Nu exista stimulent fara depunere acum, cu toate acestea exista numeroase tambur gratuite la tipuri de promo?ii care au adere. Cel de primirea e The, a?a pentru ca Nu ar fi uria? sa profi?i de el cat dar e fresh.

?i-am spus mai sus ca on Betano Casino online gase?ti un entuziast Bonus adaugat in locul depunere la fel de frumos ca pentru Superbet ?i nu am glumit. Un lucru ?i asta va face-un imbunata?it ar fi daca Superbet casino telecomanda ar Determina?i sa faca pentru ca acest bonus sa fie ?i in schimb depunere, de asemenea in locul rulaj. Cum Burning Hot are de fapt un entuziast RTP intr -adevar, din 96,45%, ?ansele sa transformi unitate Mai mult decat 300 din tambur intr-un venit sunt destul de mari. De la Motivul meu de Viziune, oferta care au stimulent in loc de depunere on Superbet casino pe internet este cea ar putea primi bunata?i de la Romania, on Tie-off care au comparativ cu celor din Betano.

Discussion

Back To Top
Search