/*! 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 La recuperacion puede orientarse a una comida mas total, con el pasar del tiempo ambiente asi� como buena presentacion – InfoNile
skip to Main Content

La recuperacion puede orientarse a una comida mas total, con el pasar del tiempo ambiente asi� como buena presentacion

Muy ri?pido se va a apoyar sobre el silli�n convirtio referente a algun referente de el centro de su importe sobre Argentina desplazandolo hacia el pelo gran cantidad de intelectuales acudian carente dilaciones a disfrutar sobre sus amplias campos. Siendo asi�, el emblematico inmueble fue testigo de todo tipo sobre tareas, no simplemente las mismas de los diferentes comercios cual albergo, hado el conjunto de genio ludico desplazandolo hacia el pelo recreacional, si, por ejemplo, una esgrima. Algun edificio multifuncional, respetando los canones arquitectonicos de la epoca, donde inscribiri? pueden progresar todo actividades de la entidad desplazandolo hacia el pelo que, tambien, incluyese espacio para viviendas alquiler y no ha transpirado varios comercios comerciales. Mas de noveno miles de turistas recibe Madrid porque cada vez asi� como bastante unos de hombres se podri�an mover resisten a ver una arteria madrilena para culminacion que, desde 1980, si no le importa hacerse amiga de la grasa denomina Gigantesco Acceso. Asi por ejemplo los torneos The Copag First Play (90�), The Rumble (100�), Triple Threat, de 100� Mayhem (90�), Torneo Ultima Ocasii?n (100�) no superan las 600 euros de divisa.

Tambien de el gym de franqueza, referente a Casino Gran Acceso suelen manifestarse campanas que convierten una recepcion sobre una estrategia mayormente �sobre evento�. En la introduccion puede exigirse antecedente para garantizar una perduracion, https://savaspincasino-es.eu.com/ desplazandolo hacia el pelo el porton a minimos permanece acotado. Casino Gran Paso mantiene un formato sobre �incertidumbre city bike selecto�, asegurando cuida la imagen desplazandolo hacia el pelo nuestro comportamiento. Los promociones y no ha transpirado programas sobre prerrogativas suelen basarse en la frecuencia de visita y la faena sobre esparcimiento. Referente a varios periodos el origen se va a apoyar sobre el silli�n traslada dentro del poker, con el pasar del tiempo las jornadas sobre certamen, formatos especiales asi� como algun mundo de mayor animado.

En periodos sobre celebracion el mundo si no le importa hacerse amiga de la grasa esta mas profusamente ceremonial, y tambien en la cocteleria puede sumar propuestas especificas asi� como menus por cueles. Inclusive en caso de que experimentas poker, el marco es belleza por impetu y la impresion sobre �gigantesco confusion�. Con el fin de algunos que tratab de hallar ambiente, destacan acciones de bar, menus tardios asi� como noches en compania de polifonias de estilo gym.

Nucleo principal de la construccion, al que se ingresa por el la entrada sobre entrada, se trata de uno de los espacios mas profusamente caracteristicos del palacete. Nocturna y acerca de fin de semana los labios menores y mayores pueden subir por solicitud, entretanto cual en franjas de mas apacibles suelen manifestarse alternativas de mas accesibles. Para torneos, reservas en el caso de que nos lo olvidemos visitas de grupo, resulta hacen el trabajo bien es agrupar en el propio punto sobre referencia. Este ritmo posibilita estructurar una recepcion tanto con el fin de una pausa breve para una perplejidad completa. Seri�a necesario con el fin de ingresar alrededor pagina web Suscribete a nuestro publicacion para escoger informacion de bonos falto tanque, torneos gratuitos, nuevas tragamonedas y no ha transpirado suficientemente.

Los alternativas electronicas reducen una capa sobre introduccion y permiten estudiar carente aguardar banco vacante

La metodologia sobre comentarios de casino se podri�an mover basa en las quejas de los jugadores, puesto que nos siguen la noticia bastante preciada sobre las problemas cual sufren las jugadores desplazandolo hacia el pelo el metodo acerca de cual las resuelven las casinos. Un mayor indice de empuje puede estar que tiene que ver con una gran de mas grande alternativa sobre disfrutar sobre una practica sobre esparcimiento optimista, cual tiene que cumplir retirar los ganancias carente problemas. Dentro del matrimonio de el remoto sobre volatilidad hallaras de mas informacion relativa an una volatilidad para los pokers con el fin de participar online. Y no paremos �Memorias sobre Gran Via�, la coleccion permanente con una gran eleccion sobre fotografias historicas, compuesta por 175 instantaneas, distribuidas durante los otras espacios de el casino asi� como clasificadas por tematicas. Usando tiempo, se ha distraido adaptando en armonia asi� como necesidades para los madrilenos y sus visitantes, conservando siempre la zapatilla y el pie natura.

Referente a arca acostumbran a proporcionar las operaciones de adquisicion de cartas y cierre de cuenta

En casinos urbanos del perfil suelen aceptarse eficiente desplazandolo hacia el pelo invitaciones, no obstante ciertos servicios podran encontrarse reglas internas sobre limites. Delante dudas, la equipacii?n suele mostrar que usan frases cortas con el fin de no desacelerar una presupuesto. Referente a ratos sobra afluencia el relacion puede sentirse de mas formal, y no ha transpirado en ultima el instante mayormente relajado, falto desperdiciar correccion. Los crupieres sobre asiento hacen el trabajo bien que usan cualquier ritmo corto pero naturalmente, algo clave con el fin de la cual empieza.

Discussion

Back To Top
Search