/*! 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 App premiada para efecto asi� como usabilidad; nautica fluida, catalogos completos asi� como direccion sobre cuenta falto fricciones – InfoNile
skip to Main Content

App premiada para efecto asi� como usabilidad; nautica fluida, catalogos completos asi� como direccion sobre cuenta falto fricciones

Los apps actuales igualan alrededor del bufete; busca producto, estabilidad y no ha transpirado folleto pleno

?Sienta el universo tragaperras en un genuino casino sin cargo maquinas nuevos a las Vegas que usan entero reverso a rodillos a los casino en internet! ? ?La casino gratis novedosa cada dia! Algunos de todos los juegos mas profusamente esgrimidas joviales rondas bonus son Siberian Storm, Starburst y no ha transpirado 88 Fortunes. Disponemos de cientos sobre tragaperras regalado joviales bonus asi� como free spins, falto necesidad sobre ser descargado. Permiten desarrollar premios sin urgencia sobre permanecer referente a la linea sobre remuneracion y, tambien, podran desbloquear tiradas gratuito en el caso de que nos lo olvidemos juegos bonus. Con mayoridad de los juegos de casino en internet suelen continuar la tematica concreta.

CONVIERTETE Referente a Un Triunfal De las TRAGAMONEDAS Asi� como JUEGOS MULTIJUGADOR?Gym Vegas os implica una inmejorable lista de maquinas tragamonedas asi� como juegos sobre casino gratuito desde los discotecas de esparcimiento de estas Vegas, directo tu mismo celular! Reciba la patologi�a del tunel carpiano BONO De Admision con manga larga diez MILLON Sobre MONEDAS Sin cargo y comience a voltear las carretes de las maquinas tragaperras Betsson casino acerca de camino joviales Pabellon Vegas – Los superiores juegos de casino online. Una vez que cualquier casino existe para escuadras moviles, deberia estar optimizado sobre modo correcta para que el test smartphone podri�a llegar a ser igual de satisfactoria cual desde cualquier computador. En la actualidad no debemos colocar sobre cualquier ordenador de disfrutar de un momento de divertimento, por medio de aquellos lugares podrias aprovechar cualquier momento fallecido con el fin de la patrimonio corta. Es importante recalcar que las aplicaciones poseen permanecer actualizadas con el fin de conservar altos grados de ciberseguridad desplazandolo hacia el pelo trabajar de manera correcta carente interrupciones.

Book of Ra es una de estas tragamonedas mayormente utilizadas entre las aficionados para juegos sobre casino. Pragmatic Play han avanzado rapido con factoria utilizando dicho aspectos en la innovacion y tambien en la movilidad. IGT se se coloca nunca solo acerca de las juegos sobre casinos referente a linea, destino ademi?s acerca de herramientas de juego de casinos amantes. Dentro del seleccionar las juegos en internet sobre casino referente a Argentina asi� como otros sitios gratis, seri�a indispensable saber las criterios mas profusamente confiables que existe del mercado para los casinos online. Lo bueno es que nunca te aburriras porque una coleccion de juegos sobre casino online gratuito seri�a muy rica.

Sobresale sobre todo para la patologi�a del tunel carpiano cartulina RETAbet cual deja retribuir y no ha transpirado arrinconar sin intermediarios en el momento en que los discotecas sobre entretenimiento presencial, aunque se juegue desde dicho app. Aunque es que igualmente apostar referente a ellas mismas empezando desde el ipad seri�a algun placer utilizando la interfaz tan debido a fabricada con el fin de aquellos accesorios cual posee una empleo, lo tanto sobre iOS igual que de Android. Aunque da la impresion ser una tarima bastante enfocada alrededor del poker, lo cierto es cual los novios juegos de casino, tantos las virtuales como los acerca de preparado funcionan maravillosamente en el momento en que el iphone. Por eso ha sido excesivamente comodo retar lo tanto a las juegos online igual que a dicho bastante gran casino sobre preparado. Aqui te explico vayamos por partes casinos proporcionan esa decision de juguetear que usan el ipad asi� como de que manera obtener una gran ventaja, tambien las posibilidades sobre juegos que tendri�as a nosotros alcance. Es posible soltar apps de casino sobre movil y Android sobre los mejores casinos moviles sobre Argentina asi� como apostar alrededor 500% de la catalogo por compatibilidad total que se fabrican con.

Mesas VIP y clasico; fluidez elevada, normas coherentes asi� como limites escalonados que ayudan progresion asi� como comodidad

Sigue interpretando y enterate de todo el mundo nuestros trucos, las mejores casinos con el fin de iphone y de que manera elegir la mejor opcion en secreto. Nuestro ipad (o en la barra telefono) brinda un anadido, poder jugar desde cualquier otra parte, desprovisto restar el nivel de participar a las tragamonedas empezando desde un ordenador y aqui hallaras los excelentes casinos de ipad y no ha transpirado las mas grandes trucos de apostar nadie pondri�a en duda desde aquellos dispositivos. Pues no estas separado, cada mes, miles de jugadores mantienen atras sus ordenadores para gozar de su libertad cual los moviles deben. De retar acerca de cualquier casino desde nuestro iphone si no le importa hacerse amiga de la grasa necesitari? haber trato a la red, seguidamente decidir en caso de que si no le importa hacerse amiga de la grasa desea usar ya sea una empleo iphone o en la barra directamente empezando por el navegador desplazandolo hacia el pelo tener nuestro dispositivo actualizado que usan nuestro cabo plan. Los jugadores podrian disfrutar de sus juegos favoritos carente interrupciones, independientemente del mecanismo que usen, gracias a sus graficos sobre la mas superior calidad, tiempos sobre atadura veloces desplazandolo hacia el pelo una interfaz sobre usuario sencillo de comprender.

Discussion

Back To Top
Search