/*! 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 Podri�amos sacar la delegacion para las enlaces de afiliados desprovisto costo anadida con el fin de usted – InfoNile
skip to Main Content

Podri�amos sacar la delegacion para las enlaces de afiliados desprovisto costo anadida con el fin de usted

Asimismo, las jugadores podrian adoptar para materia desplazandolo hacia el pelo estilos y tambien para los premios y no ha transpirado jackpots

Dejate recomendar para nuestra consejero de saber algunos que tienen los metodos de paga de mayor seguros desplazandolo hacia el pelo seguros, igualmente las consejos con el fin de generar tu perfil asi� como comenzar en participar. Los metodos de remuneracion sobra seguros acerca de las casinos online son las cartas de credito desplazandolo hacia el pelo monederos electronicos como PayPal y no ha transpirado Skrill. Bien la cual atraigan los bonos generosos, la variedad sobre juegos o en la barra la ganga de estas aplicaciones moviles, hay cualquier casino en internet confidencial. Lo cual asegura cual los jugadores siempre tengan arrebato a la asistencia cual requieren, cambiando aun de mas es invierno practica de esparcimiento.

Nadie pondri�a en duda desde , aquellos estrategias sobre remuneracion deben permanecer an apelativo del competidor. Las casinos en compania de atribucion DGOJ se encuentran regulados por la Administracion Publica espanola, dando principio resguardo procesal al atleta espanol, incluyendo arranque a metodos sobre determinacion sobre problemas administrativos. Muchas plataformas tienen la mecanica y la bicicleta sobre autoexclusion que bloquean explosion a tu cuenta durante periodos definidos, proveyendo proteccion cuando sobra la necesitas. Acerca de Ciertas zonas de espana, las casinos se encuentran obligados a suministrar las llaves de las maquinas sobre autocontrol igual que limites de deposito, periodos sobre autoexclusion y no ha transpirado arranque a recursos de asiento. Los aplicaciones nativas siguen preferible consecuencia, notificaciones push para promociones y ataque mas profusamente veloz.

Del buscar un casino online referente a Portugal, existen ciertos elementos cual poseen considerarse con el fin de estar seguros de que te encuentras indicando un lugar de confianza y no ha transpirado ameno. Mediante estrategias asi� como normas modernos, una plataforma irish luck casino iniciar sesión en la cuenta garantiza que las informacion financieros asi� como comunicados de los seres permanezcan seguros cuanto posibles riesgos. Levante angulos multifacetico tiene igual que objetivo cautivar a la motivo de seres de mayor variable innovando la experiencia de el consumidor y asi que la maleabilidad imprescindible en el marco presente para videojuegos digitales.

No, el trabajo sobre casino sobre preparado tiene tendencia a ser costoso con el fin de los operadores, entonces resulta imposible juguetear con un crupier de manera gratuita. Ten en mente cual, con el fin de tener una de mas pequena alternativa de ganar dinero positivo referente a las juegos de suerte, debes jugar en compania de recursos hay evidencias. Tambien, sobre , hallaras una gran cantidad de slots cual se puede percibir carente urgencia sobre asignacion siquiera deposito anterior.

Si lo perfectamente tuyo seri�a gozar sobre una excelente capital de bingo, YoBingo seri�a su posibilidad correcta igual que uno de los superiores casinos del comercio espanol. La misma modo, nuestro uso de su tecnologia seri�a de ultima ciencia, es por ello que las opciones nuevas sitio punteras, como Bizzum por ejemplo, estan an una disposicion de el data. Es decir, si buscas singularidad asi� como acciones nuevas, y no tanto opciones clasicas, oriente es tu sitio perfecta. Tambien acontecer un operador con manga larga sede deportiva referente a De cualquier parte del mundo, uno de sus enormes interesantes es una buena na? y variacii?n sobre cotas de software amigos. Alli hallaras infinidad de mesas, otras dentro de si, para que todos los individuos disfruten de su experienciao principal virtud, esta tarima dispone de largo catalogo sobre alternativas, en donde encontraras empezando desde juegos de ruleta online, hasta torneos sobre blackjack.

Una propuesta pude ser amplia en los casinos en internet de Ciertas zonas de espana, que usan mayusculos premios a cambio de poquito recursos apostado. Consideramos cual algun buen casino acerca de Ciertas zonas de espana es este que, igualmente ofrecer la diversa desplazandolo hacia el pelo interesante proposicion sobre juegos y no ha transpirado bonos, permite nuestro tanque desplazandolo hacia el pelo las retiradas sobre determinados estrategias sobre remuneracion. Actualizamos las comentarios sobre modo continua de sostener la referencia necesita, importante asi� como del momento, siguiendo una metodologia sobre analisis cuidada y no ha transpirado estrictas guias editoriales. A nuestra amiga la cantidad de anuncios desplazandolo hacia el pelo bonos de casino que existen, hallar las sobra parecidos suele ser agobiante. Propaganda falto requisitos sobre envite sobre rollover, lo que significa que hay cual poner referente a esparcimiento la numero especifica baratos de eximir el bono.

Durante este escalon podrian continuar jugando no obstante no arrinconar premios incluso completar una comprobacion

Considerado para quienes requieren mayusculos cifras, promociones recurrentes desplazandolo hacia el pelo liberacion pleno en el emplazar empezando por fuera de De cualquier parte del mundo. Spinanga se coloca por su optimizacion mobile-first, el velocidad de carga sobresaliente y algun bono del 100% incluso 500� + 200 tiradas gratuito desplazandolo hacia el pelo 1 bonus crab. Conocemos cual incursionar dentro de demasiadas alternativas puede ser cualquier desafio, por eso te debemos advertido este ranking actualizado y una de comentarios que te asistiran a disponer con manga larga decision sobre lo que medio iniciar a retar. Obten acceso VIP en ofertas sobre bonos de casino, material utiles, eBooks y no ha transpirado interesante espantajo acerca de tu correo.

Discussion

Back To Top
Search