/*! 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 Una diferente forma breve sobre escoger la tragamonedas de clase seri�a optar por varios juegos ampliamente afamados – InfoNile
skip to Main Content

Una diferente forma breve sobre escoger la tragamonedas de clase seri�a optar por varios juegos ampliamente afamados

Dicho de las seri�a sumergirte totalmente en el entretenimiento

Por eso, bastantes optan por un casino carente registro en el caso de que nos lo olvidemos cualquier casino gratuito online sin registrarse para gozar de una habilidad fluida, en secreto asi� como adaptada en consonancia de la es digital. En vez de hacerlo crear una cuenta indumentarias enviar documentos intimos, los jugadores pueden alcanzar directamente utilizando productos sobre banca instantanea o bien monederos electronicos cual confirman la personalidad de manera automatica. Ademi?s, gran cantidad de jugadores optan por cualquier casino online desprovisto registro o incluso cualquier casino sin cargo en internet sin registrarse debido a la comodidad y la intimidad cual brindan.

Sumergite en una cultura milenaria llena de simbolos, colores y no ha transpirado sabiduria ancestral

Nuestro Blackjack Sin cargo deja participar a tu particular ritmo, procurar las estrategias que funcionan con el fin de vos y incrementar tus Maria Casino en línea propiedades antes de pasar en cualquier casino cierto. Los reglas resultan precisamente feminas, a nuestra amiga la unica diferencia que no podrias perder, siquiera ganar, dinero conveniente. Se puede usar los filtros de la pagina con el fin de ordenar los juegos conforme las predilecciones, igual que nuestro suministrador en el caso de que nos lo olvidemos una compatibilidad en compania de conjuntos moviles. Tras pocos segundos de contribucion, leeras sobre como competir para el resto de mencionadas anteriormente reglas cual se va a apoyar sobre el silli�n aplican dentro del efectuarlo con recursos favorable.

En caso de que andas participar que usan recursos eficaz, se va a apoyar sobre el silli�n recomienda juguetear a las tragamonedas nada mas acerca de clubes sobre casinos online especializada para evitar situaciones peligrosas. Tanto si deseas marchar referente a metodos sobre apuestas avanzadas como percibir un esparcimiento completamente reciente, las mas grandes juegos de tragamonedas sin cargo online proporcionan algun escenario con total seguridad con el fin de onedas en internet a los que se podri? competir en compania de recursos eficaz se fabrican con tambien una interpretacion gratuita. No obstante, debido a la corta desarrollo que han adulto los tragamonedas virtuales, en seguida acostumbran a efectuarse mayormente asignaciones, animaciones y no ha transpirado enseres sobre ruido, y generalmente son mas profusamente espectaculares que las maquinas sobre frutas clasicas. El mundo de internet de juegos de casino estuviese repleto sobre tragamonedas regalado una diversidad de asuntos desplazandolo hacia el pelo acciones especiales. Una bien poseen simbolos especificas, como las comodines, los simbolos sobre lanzamiento desplazandolo hacia el pelo los simbolos de bonus.

Si hay cualquier esparcimiento en internet cual queres juguetear gratuito, lo deberas hallar aqui lo mas rapido como este vacante. Los tragamonedas clasicas son mas sencillos sobre entender asi� como nunca necesitan cualquier discernimiento extenso de diversas utilidades sobre descuento.

Alrededor participar a las tragamonedas, vale saber ciertas prestaciones como las comodines, las simbolos scatter y los multiplicadores, puesto que podrian marcar la discrepancia en tu entretenimiento. Hasta si eres un fanatico sobre retar con recursos eficaz y no ha transpirado te encuentras intentando sacar margen, existe momentos en algunos que debes reflexionar participar este tipo de tragamonedas gratuito. Thunderkick e Yggdrasil, como podri�a ser, resultan dos niveles amistades por las juegos de tragamonedas 3D sobre genial clase. Alrededor del indagar las video tragamonedas online regalado, a menudo os hallaras con manga larga tiradas gratis, juegos sobre descuento asi� como simbolos especiales.

Incluso de este modo, es conveniente continuar pautas primaria para evitar sitios asi� como apps escaso fiables, desplazandolo hacia el pelo si te ha pasado que decides apostar en compania de dinero positivo, puedes efectuarlo con criterios sobre verificacion. Si tu meta es participar sobre manera demo o sin cargo, no hallaraas riesgo asequible si no hay postura joviales recursos. En la ejercicio, el diseno demo o gratuito suele someterse del distribuidor del juego y puede estar disponible en lugares informativos o en la barra sobre entornos sobre demostracion.

Durante ejercicio, estas promociones suelen quedar condicionadas al asignacion, a la comprobacion, a limites de tratamiento, en plazos sobre validez y en instalaciones de envite. Si, puedes participar a la mayoridad de los juegos de casino asi� como tragaperras acerca de aquellos aparatos que tengan cualquier buscador online, inclui�do ordenadores sobre sobremesa, portatiles, moviles (ipad indumentarias Android) desplazandolo hacia el pelo tabletas. Si en la actualidad quieres juguetear sin cargo en juegos sobre casino asi� como te dirijes colocar dinero eficaz, vas a fabricar una cuenta acerca de algun casino en internet.

Discussion

Back To Top
Search