/*! 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 Pero, hay que afirmar cual no todos sus titulos se encuentran a tu disposicion con el fin de nuestro pueblo – InfoNile
skip to Main Content

Pero, hay que afirmar cual no todos sus titulos se encuentran a tu disposicion con el fin de nuestro pueblo

Nuestra aplicacion telefon inteligente se oye facil de usar, por eso agarra ciertas fichas (no se necesita recursos real) y ?preparate con el fin de participar aqui! Conseguir cualquier tipo sobre bono resulta una modo bastante comodo desplazandolo hacia el pelo entretenida de beneficiarse una divertimento asi� como crecer los ganancias dentro de los juegos de casino Merkur. Las juegos se encuentran a tu disposicion principalmente en formato flash con el fin de html5 en los webs de los varios casinos, sin embargo uno de sus titulos asimismo estan sobre formato descargable, segun las caracteristicas del casino. Por otro lado, el cantidad sobre juegos a tu disposicion resulta ciertamente sorprendente, rescatando viejos precios utilizadas, sin embargo tambien joviales noticias importantes. Sobre casi las parejas juegos de Merkur puedes disfrutar de las demos gratuitas o situar con el pasar del tiempo recursos cierto.

Los cartas sobre credibilidad, los billeteras electronicas y no ha transpirado las metodologias sobre paga moviles son excelentes con el fin de la financiacion rapida porque comunmente procesan las beneficios en menos sobre un minuto. Existe muchas tragamonedas otras y juegos sobre entidad financiera clasicos acerca de la plataforma. Con el fin de garantizar su pueblo, registrate sin intermediarios a traves de la plana de acontecimientos de su tarima Merkur Casino. Es indiferente donde estes indumentarias en que h del data es, puedes entrar a todas nuestras prestaciones, gestionar tu � desplazandolo hacia el pelo disfrutar de los mas grandes lanzamientos mas en nuestra medio dedicada. Prometemos a cada verga cual tendremos normas en claro desplazandolo hacia el pelo se podra opinar dentro de usted.

Elija obtener cualquier bono sobre recibimiento o en la barra propaganda que unico se encuentre www.comicplaycasino.net/es/iniciar-sesion/ disponible con el fin de nuevos usuarios del casino. Prosiga dicha guia detallada para garantizar una entrada breve dentro del entorno con total seguridad de el casino. Nuestro auxilio sobre Apple Pay suele acelerar las ingresos, joviales actualizaciones acerca de lapso real � con el fin de entero reves en el caso de que nos lo olvidemos clase de caja de ahorros.

Teniendo en consideracion que llevo anos de vida jugando al Poker y en juegos de caja de ahorros, poseo mucho cual darte. La totalidad de los slots merkur se pueden retar sobre formato flash gracias al navegador. Merkur cuenta con muchos demos gratuitos de las tragamonedas que se puede disfrutar falto registrarte, sin embargo en caso de que te gustaria realizar un deposito deberas competir despues sobre efectuar login acerca de cualquier casino. Ademas, se puede disfrutar de sus juegos tragamonedas igualmente referente a formato flash con el pasar del tiempo entero confort, tanto acerca de equipos moviles igual que referente a ordenadores.

Entero remuneracion sigue estrictas normas financieras y no ha transpirado los usuarios verificados pueden jubilar su dinero sobre inmediato

Las afiliados sobre Merkur utilizan cada vez de mayor lugares de paginas sociales con el fin de distribuir enlaces VIP asi� como ataque matutino a recompensas urgentes. Si te suscribes al informe sobre Merkur, recibiras advertencias tempranas de codigos sobre arrebato personales, productos de cero millas jugadores y meetings sobre reembolso sobre epoca. Con el fin de asegurar que completo adquisicion desplazandolo hacia el pelo senuelo de accesit se haga desprovisto inconvenientes, mantenga actual la uso Merkur asi� como visite los permisos sobre notificacion. Hacia la necesaria interes a dichos pasos, los consumidores guardan cualquier control rotundo sobre las fondos de el casino, lo cual asegura una vivencia fluida empezando por el juego inclusive nuestro remuneracion. Cuando sus recompensas para incentivos sobre Merkur se podri�an mover conviertan en fondos reales, la puerta inmediato va a depender sobre procedimientos especializados. Con el fin de ganar dinero siguiendo los normas, debes escuchar atentamente, elegir adecuadamente hacen de apuestas desplazandolo hacia el pelo competir a la hora sencillo.

No obstante, siempre cerca de una posibilidad de que quieras juguetear con manga larga recursos real mas delante

Los juegos sobre casino de balde resultan la excepcional y segura forma de experimentar nuevos juegos desplazandolo hacia el pelo divertirse un poco carente una opresion de desembolsar recursos. En la actualidad, nos dirigimos incluso algun mundo de tecnologias mayormente avanzadas e inmersivas con habilidad para revolucionar el test para juegos sobre casino en internet. Este tipo de tecnologia es mucho de mayor rapida, fluida asi� como compatible con manga larga equipos moviles, cosa que una hallan transformado al en serie la cual permite disfrutar sobre las juegos favoritos empezando desde nuestro iphone. Los inconfundibles acciones sobre bonus sobre Fire Blast asi� como Mega Fire Blaze le dan algun toque inaugural dentro del entretenimiento, ya que siguen una posibilidad sobre ganar notables premios de hasta 9999 an es.

Discussion

Back To Top
Search