/*! 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 Sobre el caso, deseamos ensenarte los siguientes clasificaciones de casino – InfoNile
skip to Main Content

Sobre el caso, deseamos ensenarte los siguientes clasificaciones de casino

Seri�a la cuantia de veces cual deberias apostar las ganancias antiguamente sobre retirarlas

Usando bono desprovisto tanque de Luckia de 20�, podras jugar lo tanto acerca de su parte sobre Casino como de Slots, cosa que lo hacen de acerca de unas los ofertas de mas generosas del comercio carente necesidad de deposito. Levante bono nada mas podra enviarse una vez para cuenta de juego desplazandolo https://pauseandplaycasino-es.com/bono-sin-deposito/ hacia el pelo caduca a los 3 momentos naturales despues de cual lo perfectamente recibas referente a su cuentao al ayer, solo puede disponerse sobre un solo bono para cliente desplazandolo hacia el pelo podemos comprar usarlo en dicho division de Casino. La utilidad aca es que no vas a elaborar algun deposito anteriormente, al reves cual referente a las bonos sobre recibimiento.

Las instalaciones sobre apuestas en casino online con tiradas sin cargo colocan limites, nunca nada mas alrededor del volumen de las ganancias, suerte alrededor tratamiento de diferentes bonificaciones igual que, por ejemplo, las rondas de giros gratis obtenidas sobre las apuestas a las tragaperras. El bono de giros de balde posee terminos desplazandolo hacia el pelo condiciones cual deberas leer detenidamente de conocer las limites de las ganancias, los numeros de giros ciertos asi� como fechas sobre victoria desplazandolo hacia el pelo, aceptar dentro de caso, en caso de que te gustaria comprarlo. El bono sobre casino falto tanque en Portugal seri�a uno de los desmedidos bonos atractivos cual podrian presentar los operadores online. Esos tiempos, hemos especificamente dedicado la resena completa movernos ano especialmente lo que concierne del bono sobre recibo falto deposito desplazandolo hacia el pelo otras similares.

Si, las bonos sobre recibimiento sobre casino resultan especificamente de mas jugadores cual se va a apoyar sobre el silli�n piensen por inicial ocasion alrededor casino. El bono se podri�an mover activa automaticamente en el terminar el deposito en el caso de que nos lo olvidemos, en ocasiones, suele requerir un ley promocional la cual proporcionan el casino o sitios afiliados. Seri�a ordinario cual las bonos sobre bienvenida de casino esten a tu disposicion en buena condicion fisica de porcentaje acerca del inicial deposito o en la barra por medio de giros de balde acerca de juegos seleccionados. En caso de que estas accediendo en cualquier bono sobre casino o cualquier otra promocion, concierna hacerlo joviales dominacion desplazandolo hacia el pelo culpabilidad. Acerca de Webapuestas, ademas de mostrarte los excelentes casinos en compania de bonos sobre bienvenida en De cualquier parte del mundo, nos tomamos bastante por completo nuestro compromiso utilizando esparcimiento importante. La bono por registro es perfecta con el fin de como novedad jugadores cual llegan a convertirse en focos de luces entiendan acerca de un casino en internet.

Algunas de bonos estan vinculados a una tragaperras concreta (Book of Dead, Big Bass Bonanza, etc.), aunque en ocasiones incluyen diversas slots. Durante generalidad de casinos oscila dentro de 20x asi� como 60x, aunque lo ideal es elegir bonos en compania de 0x�40x. Referente a oriente supuesto, la promocion sobre tiradas gratis se encuentre del apartado para bonos para como novedad jugadores.

Los giros gratuitos acostumbran a tener una vigencia corta, suelen de 6 a treinta jornadas

Nunca, de conseguir las giros gratis, los instalaciones resultan registrarse y no ha transpirado no haber recibido una cuenta en con anterioridad. Los tragaperras lo perfectamente hacen gracias 100% de estas ganancias, mientras cual las juegos sobre asiento (ruleta, blackjack) y casino en directo lo hacen sobre un una treintena% acerca de los dos casos. Si, unicamente cuando hayan ya confirmado su idiosincrasia y no ha transpirado edad tu cuenta se encontrara presente comprobada, asi� como seri�a entonces una vez que recibiras el bono carente tanque ?? Nuestro participante dispondra de seis momentos para fortalecer el bono asi� como treinta dias de completar las instalaciones de apuestas.

Las tiradas gratuito sobre casino, igual que nuestro propio sustantivo es la explicacion de, resultan un obsequio vano mediante un que vas a tener muchas giros o en la barra tiradas sobre tragamonedas para competir en el inscribirte a un casino online. ?Asi que, con relacion te cedo los excelentes bonos desprovisto deposito de casino segun al mes, actualizando todo el tiempo segun asisten modificandolos! Las los excelentes bonos desprovisto deposito de casino son bastante cambiantes y no ha transpirado no hay 2 sitios que ofrezcan lo mismo todo nuestro lapso.

Discussion

Back To Top
Search