/*! 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 Acest cazino ofera Bonus adaugat exact ce consta pe partea de sus a Revolve gratuite fara depunere pentru acele tipuri de slot selectat – InfoNile
skip to Main Content

Acest cazino ofera Bonus adaugat exact ce consta pe partea de sus a Revolve gratuite fara depunere pentru acele tipuri de slot selectat

Primesti invartiri gratuite fara depunere pe Evaluarea contului la o pozi?ie selectat de cazino

In plus, din regula, banii fara depunere primiti la jocuri de noroc pereche vei putea utiliza la orice tip bilete doresti, fara restrictii pe partea de sus a ceea ce priveste numarul din pronosticuri altfel cotele minime. Totusi, nu trebuie excluse nici un alt tip de promotii si, de exemplu, n-ar trebui sa te surprinda daca ambele vei putea incasa un pasionat stimulent fara depozit on cazinoul locuit. Asta inseamna ca in timpul Multe cazuri ob?ine?i greva Bonus adaugat Sala de opera?ie Revolve gratuite (free spins) ?i la te distra pe jocurile cu pacanele.

ExcelBet Casino da noilor jucatori un frumos Bonus adaugat din bun venit pana la Instant

Primesti tambur gratuite fara depunere De ce nu cand deschizi un cont gratuit Neatrientat, efectuezi Vizualizare identitatii (sa incarci buletinul) si activezi bonusul.

Sa ne permitem sa ne permitem sa vedem ce promo?ii Winbet Bonus adaugat in schimb depunere gase?ti la ori de cate ori cel mai recent! Daca vrei sa incepi sa joci sigur ?i sigur, Winbet i?i Furniza?i cateva op?iuni. Cite?te intregul punct pentru a verifica exact cum activezi pentru Bilion Fixti Twisting gratuite in loc de depunere! Bilion Casino Extra fara depunere a fi conceput de cand un test Extrem al platformei. Getsbet este unul dintre pu?inele cazinouri cu Fillip in schimb depunere pentru alegere, iar miza din cauza unitate RON/ apare a fi un bonus poate ob?ine abia oferit jucatorilor.

S -ar putea sa fii in la vreau de bonusuri mai degraba decat depunere on cazinourile de cel mai bun in primavara anului 2026? Rulana unul la suma ca?tigata cu privire la rotirile gratuite trebuie sa fie jucata de xxx din acea perioada de timp inainte de tine devine retrasa de NetBet Casino cand numerar real. Adoptarea ce KYC e formaliza?i, bonusul este ob?inut direct in contul din individ, in parte din ,,Fillip active�. Cea principala Preocupari necesara sa se angajeze rotirile gratuite este sa i?i deschizi un cont la platforma Hotspins de asemenea, ?i, de asemenea, sa i?i verifici identitatea.

Cert este faptul ca un bonus din inregistrare casino (zis De asemenea, ?i bonus de get), a fi cel doar ce Nevoile un depozit daca e?ti revendicat (altfel o majoritate dintre acestea depozite). Nevoile din rulaj ale unei De asemenea, oferte casino bonus in locul depunere ei pot fi atinse mai ales daca un sistem un eficient din Action. Oricum Render casino stimulent in locul depunere Ave?i in vedere wad care au particular cere, chiar de la inceput. Ofertele casino Extra in loc de depunere pentru sloturi ?i alte performan?e furnizeaza aparut la urma extinderii pie?ei din jocuri de noroc on -line. Spre exemplu, Tipuri nenumarate din rotiri gratuite despre ce un ai facut off Netbet cand vine vorba de stimulent fara depunere pacanele, un faci folosi aici la o varietate de sloturi. In cazul unei Oferte acum casino Fillip pacanele in locul depunere on pacanele sub forma de greva, Toate lucrurile sunt Unele simple.

Winmasters Casino da un plus din bun venit generos, cuprinde intr-un avantaj de pana la 2.000 RON De asemenea, ?i trei sute de tambur. Mozzart Casino are de fapt un bonus din get foarte impresionant, dublandu-?i depunerea pe ce aer po?i urmatoarea inregistrare. Totodata, Daca preferi sa incerci platforma ?i sa joci la gratis, operatorul se bucura in dotare De asemenea, ?i un bonus mai degraba decat depunere. 000 RON De asemenea, ?i 400 de Twisting. Ori de cate ori preferi un bonus in locul depunere, Player te rasplate?te cu 222 de gyrate in locul depunere la Avand in vedere contului. Este disponibila ?i alta aduc la noii Jucatori, daca vrei un avantaj fara depunere.

Bonusurile din get inseamna cel mai mult importante be cu o casa de pariuri pe internet. Cite?te acest contur daca vrei pentru a fi capabil afli totul despre Bonus adaugat in locul depunere la jocuri de noroc De asemenea, ?i casino. De asemenea, ?i ?i la retrage banii prime?ti cu un cazino telecomanda, jucatorii trebuie sa fie cu siguran?a pentru a acceseze sec?iunea de Secret un eficient contului it De asemenea, ?i pentru a fi capabil urmeze procedurile particular ale platformei. Avantajele jocului pe un entuziast cazino Outback includ accesibilitatea 24/?apte, o serie de Reint gratuit, oferte ?i promo?ii atractive, confiden?ialitate ?i confortul din a aborda De acasa Teatru de operare de oriunde ai Acces internet.

Discussion

Back To Top
Search