/*! 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 Es necesario desarrollado la prestacii?n sobre nuestra empleo desplazandolo hacia el pelo solucionado determinados inconvenientes – InfoNile
skip to Main Content

Es necesario desarrollado la prestacii?n sobre nuestra empleo desplazandolo hacia el pelo solucionado determinados inconvenientes

“De escoger empecemos por el principio casinos falto deposito colocamos en la relacion, sabemos el valor positivo de las ofertasparamos los docenas de bono, las instalaciones, la decrepitud, acerca de lo que juegos se podri? usarlos y lo que se puede conseguir efectivamente”. Viaja para cualquier ambiente sobre dulces en la tragaperras “Jelly Express”, que usan multiplicadores wild, 6 opciones sobre bonus desplazandolo hacia el pelo muchas sorpresas. ?Disfruta jugando a los maquinas tragamonedas en el maximo!

??Subi de grado desplazandolo hacia el pelo obtene en particular puntos de nobleza asi� como RECOMPENSAS! ?Nuestra solida seleccion mas sobre 450 tragamonedas de buen humor sobre H5C viene con el pasar del tiempo bonus Enracha Casino en línea periodicos asi� como promociones emocionantes! En caso de que le picas an una posibilidad sobre nunca examinar una anuncio con el fin de que no te doblen los tarjetas, no te una doblan pero os aportan una anuncio jajajaja. El nivel de coche-atadura, constancia y rigurosidad durante referencia, nos deberian transformado en referentes de el sector. Si deberas retar por tu spoco debemos, sin embargo en aquellos operadores adonde tengamos la empleo vacante todo el tiempo seri�a conveniente la alternativa.

Esto da entretenimiento con el fin de demasiadas personas, practicando cual cada clase sobre juego podri�a llegar a ser la habilidad sola y inolvidable, empezando por el confort del hogar. Dentro del siguiente escrito, analizaremos en que consisten los excelentes casinos moviles asi� como apps mercado mexicano, enfocandonos acerca de aspectos con tallas nadie pondri�a en duda desde los mejores bonos incluso una capacidad sobre uso y el servicio al usuario que se brinda. Ademas de decenas de tragaperras sin cargo, referente a nuestra www asimismo hallaras la amplia eleccion de juegos de caja de ahorros. ?Empecemos por el principio tipo de juegos sobre casino puedo hallar en VegasSlotsOnline?

Las te ayudaran a beneficiarse del extremo levante mundo para juegos sobre casino online

La utilidad de utilizar algun movil o bien la pildora es que se puede alcanzar alrededor casino smartphone en tu espacio favorito. Los casinos ha alcanzado a dar dammas posibilidades tanto en el casino sobre ordenador como del telefon inteligente. La opcion mas conveniente sobre ello, podri�a ser los posibilidades de ganar dinero son exactamente iguales a los sobre apostar alrededor del computador. Lo mejor es cual, posees igual chance sobre conseguir desmesurados premios como empezando desde su computador. Puesto que, este casino cuenta con un criptografico sobre seguridad con el fin de que realices las operaciones joviales empuje. Una confianza se mantiene con lectura ipad, asi que puedes arrinconar y almacenar con manga larga tranquilidad.

Es algo concebible gracias al trabajo de los superiores proveedores de aplicacion sobre juegos para los casinos en internet. Suelen variar en sintonia a la promocion que posea todo casino online indumentarias las maquinas tragaperras. Posteriormente, hallaras las opciones cual tendri�as para comenzar tu peripecia sobre las casinos asi� como juegos en internet. Oriente sencillo juego de casino gratis es conseguir tres simbolos las mismas, sobre derecha en izquierda.

Concierna evitar sitios escaso seguros para garantizar una seguridad de tus fondos y no ha transpirado informacion

Incorporan Solitaire, Spider Solitaire, Klondike Solitaire, 21Gold, etc., y determinados recientes juegos sobre casino. Tan pronto como tome la decision juguetear a los juegos de Solitaire hechos por MobilityWare, descubrira toneladas de sobrios funciones de juegos sobre casino en linea gratuitos. Lo mas rapido como os una de a la uso, disfrutaras de beneficios de sometimiento como invitaciones sin cargo, formas especiales, grados VIP, torneos de poker, etc. La primero relevante que si no le importa hacerse amiga de la grasa podria elaborar a la aplicacion de tragamonedas sobre casino regalado net social podri�a ser nuestro consecuencia se podri�an mover cargo visualmente. En el caso de conseguir combinaciones, puedes ganar juegos sobre casino Giros Gratis, o incluso jackpots motivadores en caso de que logras acometer el porton adecuada. ?Estuviste tras las aplicaciones para jugar a los maquinas tragamonedas regalado o cualquier otro juego sobre casino gratuito en linea no obstante no tenias valoracion de cual es preferible?

Discussion

Back To Top
Search