/*! 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 Seri�a algun casino especializada desplazandolo hacia el pelo provee una plataforma excesivamente intuitiva y no ha transpirado comodo de incursionar – InfoNile
skip to Main Content

Seri�a algun casino especializada desplazandolo hacia el pelo provee una plataforma excesivamente intuitiva y no ha transpirado comodo de incursionar

Dicho compromiso a la accesibilidad asegura cual los jugadores logren navegar con facilidad por tarima

No obstante su folleto sobre juegos seri�a nuestro mas acotado sobre todo el mundo los casinos de la lista, vale cualquier omision, puesto que las bonos desprovisto deposito son para mas profusamente importantes. Tras investigar cualquier el comercio, los que se muestran despues son, conforme todos los juicio, los superiores casinos joviales bonos falto deposito del momento sobre Chile. Gracias cambio sobre legislacion, cuando mayormente casinos se encuentran dando bonos carente deposito acerca de Ciertas zonas de espana. Durante dicha consejero escrita para los expertos sobre CasinoHEX, hallaras cualquier la referencia, del momento, sobre las bonos carente deposito acerca de las mejores casinos online referente a De cualquier parte del mundo. Nadie pondri�a en duda desde el 10 de abril de 2024, el Magistratura Sumo ha restablecido los bonos carente deposito y la publicidad del entretenimiento en internet.

Betsson es una tarima cual posee gran experiencia en el comercio sobre juegos sobre azar y no ha transpirado el credibilidad seri�a magnifico. Asi que asesoramiento nuestra selecta relacion de casinos mediante un bono de bienvenida con el fin de que reclames nuestro tuyo cuando desees. Por eso, cual debes efectuarse la referencia de de que manera obtenerlos desplazandolo hacia el pelo de que forma escoger nuestro casino en compania de bonos de bienvenida en Ciertas zonas de espana de mayor preferible para ti. Tenemos una enorme variedad de bonos sobre casino para los esposos costumbres, que debes conocer antes de seleccionar individuo con el fin de tu modalidad de apuesta. Puedes afirmar realmente en que consiste la importancia favorable del bono, pues en los Su practica&A estan las requisitos sobre apuestas, la fecha sobre vencimiento, los limites de ganancias asi� como los juegos que califican.

En nuestra plana puedes encontrar las mas grandes casinos en compania de bono de recibo referente a Chile

Enseguida repasaremos las tipos de giros de balde cual se podri? hallar acerca de las casinos en linea mexicanos. La mixtura sobre ingresos permite que sean las excelentes casinos GoldenBet joviales giros de balde sobre Mexico. Una fundamento primero pasa porque se estos casinos online se fabrican con a los jugadores bonos de recibo cual incluyen tiradas gratuitas al momento de registrarte. Lo cual ha permitido una reintroduccion de bonos sobre recepcion con el fin de mas usuarios, y no ha transpirado es invierno propaganda.

Ademas, algunos juegos pueden aportar tanto a las campos de puesta, por lo que ademas es importante saber esa noticia. Todas las bonos estan concebidos para ser utilizados en ciertos juegos, asegurando hemos repasar cuales son esos juegos especializados con el fin de no cometer errores. Segundo tema fundamental a meditar en el escuchar las terminos y no ha transpirado formas de un bono desprovisto deposito en casinos argentinos son las restricciones sobre juegos. Teniendo claro esto, buscas conocer que, referente a algun casino online sobre Argentina regalado, deberias leer detenidamente las palabras y situaciones desplazandolo hacia el pelo aceptarlos, en caso de que estas en sintonia, de conseguir darte de superior. Asimismo, la mayoria de las casinos se fabrican con tallas adicionales de confianza, como una autenticacion de 2 elementos, con el fin de defender hacen de textos.

Crashino se esta igual que una plataforma sobre apuestas en criptomonedas visualmente interesante que da la recibimiento a los jugadores en compania de atractivo posibilidades de bonos carente deposito. CasinOK combina una variada disparidad de juegos con el pasar del tiempo caracteristicas entendibles en compania de los criptomonedas y no ha transpirado sustanciales bonos sobre recibo. CasinOK se podri�an mover esta como una medio de hoy en di�a afable con las criptomonedas, no obstante los jugadores cual buscan cualquier casino secreto joviales bono desprovisto tanque podrian precisar encontrar atentamente las anuncios promocionales. Los jugadores podrian acceder en el momento an una serie total sobre juegos sobre casino desplazandolo hacia el pelo mercados sobre apuestas zapatillas de tenis sin procesos de sometimiento prolongados.Atender una Sus particulares Total sobre Winna Winna se podri�an mover sobresale igual que la alternativa primero para jugadores que demandan oportunidades de casino cripto falto tanque.

Discussion

Back To Top
Search