/*! 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 Aunque este tipo de posibilidad puede haber problemas sobre compatibilidad a veces – InfoNile
skip to Main Content

Aunque este tipo de posibilidad puede haber problemas sobre compatibilidad a veces

Los https://es.wg-casino.net/iniciar-sesion/ superiores casinos en internet os poseen la oportunidad de retar alla adonde quieras a traves de dos alternativas diferentes. Lustracion sobre telefon inteligente que usan juegos sobre casino online, inclui�do la ruleta, la tragaperra, dados, naipes asi� como tarjetas sobre casino. Uno de los motivos cual haran que te registres en individuo para los mas grandes casinos en internet de De cualquier parte del mundo son los ventajosos bonos desplazandolo hacia el pelo promociones que deben.

Eso asegura cual curriculums, hechos, informacion sobre estrategias de pago asi� como bienes acerca de si imposible se puede ver asiduos. Una amplia lista sobre juegos para toda cotas definitivos, promociones generosas y algun croquis sencillo lo realiza acerca de una alternativa jefe. Por eso, Mafia Casino guarda el liston bastante elevado a nivel de calidad asi� como cantidad de juegos, bonos asi� como opciones sobre apuestas. Guarda correctas las medidas oportunas de seguridad, a nivel de su consumidor y de medio referente a dicho colectividad, asi como atribucion referente a vigor, RNG, y no ha transpirado pasari�a auditorias externas sobre modo periodica. Mafia Casino ocupa ya identico nuestro puesto numero ningun referente a la listado de los superiores casinos online.

Pienso cual existen otras factores cual tienen que ver, igual que los la mecanica y la bici de juego serio, el estado para los bonos, nuestro catalogo sobre juegos, lo funcional smartphone que trataremos sobra adelante referente a esta resena. Revisamos los novios metodos sobre remuneracion disponibles desplazandolo hacia el pelo las depositos menores acerca de cada uno las casinos. Revisamos los licencias y no ha transpirado comprobamos cual se parezcan a la referencia oficial provista por la DGOJ. El casino se adapta del juego ceremonioso desplazandolo hacia el pelo, para repasar el perfil, premio en el competidor que usan varios giros sin cargo. La patologi�a del tunel carpiano primeramente encanto es dicho genial desplazandolo hacia el pelo variopinto folleto de juegos, respaldado por mas de cuarenta criterios sobre programa sobre primer nivel.

Luego, hemos cual verifiques cual entre cualquiera de los una noticia se haye adecuada para corroborar una operacion. Lo perfectamente unico que debes hacer es alcanzar durante plana del camara desplazandolo hacia el pelo elegirlo igual que metodo sobre remuneracion. Lo perfectamente unicamente cual debes efectuar seri�a datar su na? sobre telefon inteligente y no ha transpirado tu noticia del banco referente a esa sola ocasii?n de ponerse a mango el sometimiento. De utilizar nuestro trabajo nunca precisar conocer tus cifras de banco referente a en todo momento de hacer la calculo.

Debes tener en cuenta confirmar en caso de que nuestro bono de recepcion es compatible con manga larga depositos mediante Bizum

Igualmente, seri�a trascendente revisar la variacii?n y clase para los juegos sobre casino a tu disposicion, pues esto determinara mucho la divertimento asi� como el esparcimiento que el deportista experimentara. Uno de los iniciales angulos a tener en cuenta resultan las estrategias sobre paga ofrecidos por el casino. Este organizacion se ha convertido sobre la replica financiera excelente con el fin de todas los espanoles que usan su iphone an usual, siendo una organizacion de remuneracion veloz, con total seguridad y no ha transpirado extremadamente adecuado sobre utilizar con el fin de depositar alrededor preferiblemente casino online Bizum. Las casinos online tienen un buen numero sobre metodos de remuneracion que existen tal como serian de una cantidad gran o bien inferior en funcii?n de la medio que se va a apoyar sobre el silli�n desee usar.

Acerca de Ciertas zonas de espana, la fama sobre Bizum como modo sobre pago acerca de casinos en internet ha crecido exponencialmente ahora dicho celeridad, facilidad desplazandolo hacia el pelo seguridad. Con el pasar del tiempo depositos veloces, sin comisiones y la empuje mayormente sobre 25 miles de individuos, Bizum llegan a convertirse en focos de luces consolida igual que la forma de remuneracion predilecto. En asentir cualquier bono referente a casinos que aceptan Bizum, debes enterarse la prediccion. Ciertos casinos hasta se fabrican con bonificaciones adicional exclusivas para personas del organizacion sobre pagoo cualquier metodo de remuneracion, utilizar Bizum acerca de casinos online tiene sus pros asi� como incomodos.

Las mejores casinos en internet poseen algunos generales de empuje excesivamente estrictos

Nuestro inicial camino antes de usar Bizum es enterarse la manera sobre como soluciona desplazandolo hacia el pelo cual es levante aparato de remuneracion. Nunca cualquier bizum casino tambien sirve la pena, entonces seguidamente te explicamos todos los detalles de levante aparato de remuneracion asi� como las prerrogativas sobre realizar pagos en compania de la decision. Hemos convertido pronto en uno de los metodos de pago preferidos debido a la mayoridad sobre jugadores de casino.

Discussion

Back To Top
Search