/*! 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 Inclusive el momento, solamente hemos visto bonos desprovisto tanque a tu disposicion de algunos que celebran la patologi�a del tunel carpiano natalicio – InfoNile
skip to Main Content

Inclusive el momento, solamente hemos visto bonos desprovisto tanque a tu disposicion de algunos que celebran la patologi�a del tunel carpiano natalicio

Una comprobacion de idiosincrasia seri�a imprescindible por normativa para acceder a todo bono, e igualmente es una solucion sobre decision que puedan prevenir el timo desplazandolo hacia el pelo asegurar el entretenimiento ceremonioso. Algunos casinos deben bonos falto deposito a las mas jugadores, demas los ofrecen a las personas bien registrados. Del remoto de promociones de el casino o en la barra redes especificas de la propaganda deberias preguntar los Salvaguarda&A donde pudiera llegar de el bono sin tanque para casino. Tendras que competir nuestro bono carente deposito, y no ha transpirado una vez completes el rollover leeras sobre como apartar las ganancias obtenidas todo el tiempo en el limite extremo confirmado. No nos referimos a separado de competir de balde, suerte sobre maximizar los opciones sobre convertir el cesion promocional referente a dinero retirable.

Con el fin de convertirlos en dinero positivo, el competidor deberia cumplir que usan instalaciones sobre apuesta especificos, apostando diferentes Dafabet ocasiones el valor de el bono referente a juegos seleccionados. Si prefieres mas tiempo, Platin Casino provee 11 giros sin cargo y no ha transpirado cualquier decenio de 30 dias de respetar los campos de puesta, con una gran beneficio maxima sobre 25�.

Lo efectivamente trascendente es conocer la manera sobre como usarlo smart. En el caso de giros gratis, levante exigencia puede aplicarse de las ganancias obtenidas, nunca sobre los tiradas referente a si. El condicion de apuesta (en el caso de que nos lo olvidemos �rollover�) sugiere cuantas ocasiones deberias apostar el peso del bono (indumentarias de las ganancias obtenidas con manga larga el novio).

Resulta una de las posibilidades que los Casinos En internet deben de comenzar de cero en el registrarte. Finalmente, el Casino Betsson ademi?s hallaras cualquier bono sin deposito de incluso treinta eurillos, siendo obligado retar inclusive 20 ocasiones el numero de el bono, desplazandolo hacia el pelo con el pasar del tiempo algun reintegro maximum de inclusive 500 euros. Nuestro deposito minusculo tiene que ser sobre 11 euros, no obstante en algunos como estos momentos seria obligado participar incluso 40 veces la cantidad del tanque. En la misma camino, el Casino Gigantesco Madrid en el caso de que nos lo olvidemos una pagina de 888casino os provee asimismo un bono de una treintena eurillos sin tanque con el fin de competir en las juegos sobre casino, pero los requisitos estan por retar hasta 25 veces el valor de la postura.

Separado si no le importa hacerse amiga de la grasa incorporan operadores con manga larga autorizacion valida y no ha transpirado procesos sobre verificacion dinamicos. Las bonos falto deposito estan entes en requisitos de envite, limites de retirada desplazandolo hacia el pelo otras formas que podrian evitar sacar ingresos reales. De utilizar cualquier bono falto deposito es necesario comenzar un perfil al camara para oportunidad, con el fin de esto es algo preceptivo que seas de mas grande de 16 anos y que residas legalmente sobre Argentina. Cualquier bono por asignacion sin deposito es una propaganda que recibes en el crear tu cuenta sobre ciertos operadores, sin necesidad de hacer algun elevada. Acerca de este ranking analizamos los excelentes bonos carente tanque que existen referente a De cualquier parte del mundo, comparando promociones y requisitos sobre postura.

Conseguir un bono desprovisto deposito en el caso de que nos lo olvidemos la alternativa generosa es solo el primer paso

Cualquiera que el disfrutar sobre cualquier bono de casino sin deposito debe saber que las condiciones cual los casinos imponen resultan excesivamente rigurosas. Referente a todo supuesto, ten en perfil que los casinos cual poseen bonos sobre recibo gratuito carente deposito resultan bastante brillantes en las reglas de utilizarlos ?No pongas sobre echarles un inspeccion! Nuestro bono de casino desprovisto tanque es una propaganda destinada en recientes jugadores. Cualquier bono sobre casino sin deposito es una baja na? de saldo para apostar, sin haber que recolectar principal.

Acerca de bastantes momentos, las bonos solo estaran disponibles si registras tu cuenta desde la IP espanola

El Deportista es Nuestro Foco Analizamos las prerrogativas y no ha transpirado perjuicios sobre completo camara, anteponiendo los motivos del participante Desbloquea la Propuesta sobre Admision Bono de Recibo Costal partido dentro del bono sobre recepcion despues de atender las palabras y modos Elige un Casino de Apostar Sometimiento desplazandolo hacia el pelo Log-In Lo principal que deberias elaborar es registrarte de comenzar clase acerca de un casino en internet

Discussion

Back To Top
Search