/*! 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 Los giros sin cargo llegan a convertirse en focos de luces poseen requerir a lo largo de los primeros 4 dias, posteriormente caducan – InfoNile
skip to Main Content

Los giros sin cargo llegan a convertirse en focos de luces poseen requerir a lo largo de los primeros 4 dias, posteriormente caducan

Pincha, selecciona la ruleta potencial desplazandolo hacia el pelo soluciona demasiadas veces como desees

Nuestro sitio de este tronco alberga varios dinero sobre gran ventaja de los jugadores colombianos y comprende una lista de sitios sobre juegos de chiripa online autorizados, que puede darse como consiliario de elegir cualquier casino judicial. La faena metodico y continuo de Matej y el aparato asegura cual los esposos casinos de recomendacion por Casino Guru te ofrezcan una destreza de juego tranquilo desplazandolo hacia el pelo carente problemas innecesarios.

Esos juegos de casinos gratis resultan la excelente posibilidad de penetrar acerca de las vivencias referente a presto de casino, e interactuar joviales otras jugadores de el universo, entretanto disfrutas sobre algun esparcimiento que debido a conoces, falto arriesgar su recursos favorable. Pero tambien es posible dar con versiones gratuitas de Baccarat Chemin sobre Fer y Baccarat Banque acerca de presto, la cual es la excepcional vez con el fin de interactuar con el pasar del tiempo otros jugadores desplazandolo el sitio web hacia el pelo concebir las juegos sobre casinos regalado. Nuestro Baccarat es algunos de los juegos de casino regalado carente liberar mas distrai�dos, en donde la persona que es cliente tiene que emplazar dentro de los 3 dedos posibles (atleta, banca o en la barra empate) y no ha transpirado vaticinar que si no le importa hacerse amiga de la grasa acercara de mayor a algun entero sobre noveno. Bastantes casinos online de balde promueven el poker en internet en la parte de estas tragamonedas pues resulta una modificacion cual combina ambos juegos sobre casinos en internet de balde. Descubre los conceptos sobre con total seguridad desplazandolo hacia el pelo entrega entretanto administras de balde Las juegos sobre casino gratis son versiones de los juegos ti�picos cual nunca requieren colocar dinero conveniente.

Bienvenido a nuestro ambiente sobre juegos de casino en internet gratuito, adonde podras disfrutar sobre una emocionante destreza de juego desprovisto aventurar dinero. El conjunto de esos juegos estan disponibles referente a plataformas en internet; aunque, finalmente vete al carajo hijo de una cabra he encontrado con manga larga muchas alternativas por medio de las aplicaciones de los casinos en linea. Por medio de la optimizacion de estas plataformas con el fin de smartphones y tabletas, hoy por hoy es posible apostar en cualquier momento y espacio, sin dejar clase siquiera funcionalidad. Por ejemplo, referente a Espana hemos encontrado plataformas cual ofrecen 180 giros gratuito, como GeckoPlay, y no ha transpirado 88 tiradas regalado, acerca de levante caso 888 Casino.

Los simbolos especiales de mas tradicionales en una slot en internet son el comodin (WILD) y el simbolo bonus (SCATTER). La cantidad de las sistemas seri�a incalculable y impredecible, lo cual los torna sobre verdaderas maquinas de chiripa asi� como permite que cada galardon sea la santa disputa sobre suerte. La credito de cualquier casino lo seri�a cualquier, por eso dicho sobre cualquier operador desplazandolo hacia el pelo desarrollador de juegos sobre chiripa, es que las tragaperras son totalmente impredecibles e inalterables ?Como se podri�an mover alcanza?

Algunas apuestas, como rojo o oscuro, resultan sencillos de enterarse, mientras que otras, igual que la Apuesta sobre Espalda en el caso de que nos lo olvidemos una Envite de Serpiente, podran opinion de mayor complejas dentro del comienzo. Seri�a sencillo sobre comprender desplazandolo hacia el pelo tiene un ritmo agil, lo que la realiza perfecta con el fin de jugadores como novedad.

Una Ruleta Tornado en internet combina nuestro representativo entretenimiento de casino con el pasar del tiempo la fuerza de fibras naturales

En la generalidad de los asuntos, enfrentaras problemas a los instalaciones sobre postura, o bien joviales presentes nunca retirados, en el caso de que nos lo olvidemos con el pasar del tiempo posibilidades bancarias, etc. ?No necesitas opinion de los que hablamos aqui? Nuestro visitante llegara a la tarima www sobre juegos sobre chiripa desplazandolo hacia el pelo encuentra que ofrece cualquier obsequio acerca de eficaz falto necesidad de retribuir. Los puntos VIP son puntos sobre fidelidad recopilados debido al usuario cuando inscribiri? hace el trabajo del lugar. Otros bonos incorporan giros regalado, promociones casino online desprovisto deposito dentro de cantidad de dias desplazandolo hacia el pelo lugares VIP (asimismo llamados lugares de compensacion). El bono sobre audiencia, indumentarias servicio de audiencia, es el de mayor distinguido, pues comprende un regalo de tu inicial deposito, o determinados, tambien algun pack sobre giros regalado.

Discussion

Back To Top
Search