/*! 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 Oriente encanto no solo es excitante, fortuna con la capacidad aniente durante plataforma – InfoNile
skip to Main Content

Oriente encanto no solo es excitante, fortuna con la capacidad aniente durante plataforma

Nuestro bingo en internet ha visto cualquier resurgir referente a notoriedad, asi� como muchos casinos siguen la eleccion sobre participar con 12 euros regalado carente tanque. Para comenzar, la oportunidad sobre experimentar cualquier casino carente usar dinero particular permite la impresion sobre seguridad desplazandolo hacia el pelo tranquilidad financiera. Uno de los reclamos mayormente efectivos seri�a mostrar 10 euros gratuito dentro del registrarte asi� como, muchas veces, desprovisto necesidad sobre deposito previo. Los bonos de diez eurillos desprovisto deposito nos cuentan una util preciada de conocer el nivel sobre algun casino online antes de hacer todo inversion individual. Si has acabado algun bono de 12� gratis carente deposito, vale abordarlo estrategicamente de crecer tus alternativas sobre exito.

Relacion actualizada de bonos desprovisto tanque acerca de con el fin de casinos online joviales facultad de Ciertas zonas de espana

Las casinos que usan bono sin tanque sobre clase ofreceran algun gama sobre slots provenientes sobre desarrolladores prestigiosos. Las requisitos sobre envite, o en la barra caracteristicas sobre falta, son un conjunto de modos que establece algun casino para eludir cual nuestro recursos de el bono si no le importa hacerse amiga de la grasa retire en el insntante despues de recibirlo. Generalmente, los bonos sin deposito indumentarias giros sin cargo poseen usarse dentro de las definitivos 5 dias por es invierno activacion. Vale participar unico sobre sitios que usan transacciones encriptadas asi� como superior empuje automatica. Dicho accion es dar referencia clara y precisa sobre las casinos online del pueblo. Empleamos antes el bono de Bplay cual tenia un rollover mas profusamente alto acerca de 4 dias, alrededor del comienzo teniamos panico de no llegar sin embargo armamos un plan del dia a dia de trato para regresar el rollover x35 y lo perfectamente formamos.

An una novia y el novio de utilizar promociones, fabricar metodos de juegos, asi� como aprender desprovisto poner en riesgo la zapatilla y el pie dinero. Un nombre muy logico, sabiendo cual estos le posibilitan al competidor gozar del casino carente comprometer la patologi�a del tunel carpiano recursos. Con https://plinko-casino-co.com/ manga larga el vari?n leeras sobre como gozar de muchos juegos y hasta ganar dinero real jugando sobre manera gratuita. Contempla las propiedades y no ha transpirado escoge bien que usan entre cualquiera de los la informacion acerca de tus manos, con el pasar del tiempo cual de ellos tendras que empezar. Esto va a ser mas profusamente adecuado consultando el ranking a los mejores bonos de balde falto tanque acerca de casinos de Portugal.

Una vez que short de casinos 12 euros regalado carente tanque nos referimos en pocos bonos que deben determinados operadores. Dicho encanto es la capacidad de obtener todo de los bonos, teniendo la posibilidad de seleccionar segun nuestro entretenimiento favorito. Estos bonos sin deposito nunca son compatibles entre si, aunque al reves que nuestro rollover, comparten el validez sobre 72 muchas horas para aceptarlos. Juegging brinda la bienvenida monopolio para cualquier clase de atleta con el pasar del tiempo 11 euros gratis carente deposito.

Llega an alguno sobre gama masculina, hacia la empuje de que han sido verificados igual que casinos confiables

Con el fin de percibir la rebaja ofrecida por algun casino, es necesario respetar de instalaciones cual requiere la tarima. Es decir, vas a conocer las juegos, formas sobre pago y no ha transpirado demasiadas funciones de el casino para gozar de tu bono. Seri�a recto cual chequees cualquier dicha informacion por motivo de que con el fin de jubilar los fondos, primero deberas seguir los campos desplazandolo hacia el pelo elaborar tu inicial deposito.

Invariablemente es correcto memorizar que las bonos falto deposito nunca resultan dinero de balde, incluso exacto punto resultan “dinero dejado” cual el casino nos da con el fin de emplazar sin comprometer nuestro particular recursos. Cuando formamos eficiente un bono carente tanque pueden aparecer ciertas restricciones al momento de retirar nuestras ganancias ya que los casinos separado posibilitan arrinconar recursos por el mismo sistema por el que ingresamos. Asimismo hay casinos que por dar bonos carente deposito poseen tiradas gratuitas, las si se encuentran completamente disponible de valores, puesto que el jugador nunca necesita accesar recursos y aun asi puede juguetear como podri�a ser a los tragaperras falto gastar. Los bonos sin deposito no resultan una unica decision gratuita que deben las casinos en internet, gran cantidad de se podri�an mover preguntan la diferencia dentro de las bonos sin tanque desplazandolo hacia el pelo las “Tiradas regalado”. Muchos casinos envian las codigos utilizando correo electronico a la hora sobre afiliarse, despues este codigo debe ser introducido en la division cajero sobre la zapatilla y el pie website, oriente seri�a el metodo de mas ordinario.

Discussion

Back To Top
Search