/*! 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 Los operaciones financieras referente a las casinos cual aceptan HalCash son rapidas y seguras – InfoNile
skip to Main Content

Los operaciones financieras referente a las casinos cual aceptan HalCash son rapidas y seguras

Este tipo de sencillez resulta una genial ventaja, especialmente con el fin de quienes se sienten a gusto con estrategias sobre remuneracion directos desplazandolo hacia el pelo desprovisto complicaciones. La disparidad y tambien en la calidad para estrategias sobre pago resultan causas estrategico con el fin de mega dice casino iniciar sesión la vivencia sobre usuario optimista. Sin embargo seri�a preciso cual nuestro casino acepte HalCash, asimismo importa cual presente una amplia serie de estrategias de pago con el fin de satisfacer las necesidades sobre aquellos jugadores. Enseguida, detallamos los puntos que analizamos de designar los superiores casinos cual aceptan HalCash.

Al final, ayudara a pasar del entretenimiento lo mas agil viable

Mientras que muchos metodos de paga deben cualquier tiempo de procesamiento sobre 48 situaciones, este permite efectuar los retiros practicamente sobre manera instantaneao ocurre que usan los novios metodos de paga, existen alguna informacion que resulta importante saber, igual que la marcha sobre trabajo o las comisiones que llegar an existir. En algunos como varios 14 anos sobre trabajo correcto, el aparato de remuneracion deberian sufrido varios cambios y no ha transpirado deberian visto mejoras. Incluso los casas sobre apuestas y casinos nos lo perfectamente colocan extremadamente facil con el fin de lograr eximir nuestro dinero. ?Has ganado alguna dinero y no ha transpirado te gustaria retirar joviales HalCash de las viviendas sobre apuestas?

Es sobre todo trascendente leer la consiliario con el fin de mayoritariamente

La primera permiso seri�a la mas significativo. Vale memorizar participar de modo serio, no comparta es invierno apelativo sobre consumidor/contrasena con manga larga otras personas. Aca ademas puede designar nuestro prototipo de rebaja, en funcion de su recorrido buscados.

Los novios metodos de registro resultan equivalentes, sin embargo para conseguir utilizar plenamente un monton de acciones sobre SpinBetter acerca de el futuro debera proveer an una administracion las informaciones entendibles que queden. En caso de pregunta, la monitor sobre bonos y los normas asociadas muestran vayamos por partes tipos sobre juego contribuyen y no ha transpirado cuales no con el fin de todo promocion especi�fica. En caso de que entiendes cual el juego te permanece dejando problemas, igualmente usar nuestras la mecanica y la bicicleta internas, se podri? recurrir a organizaciones especializadas igual que GamCare, BeGambleAware, Gamblers Anonymous, Gambling Therapy o bien la National Gambling Helpline, que siguen apoyo para ti asi� como recursos adicionales. Las tipos sobre juegos sobre bandada, casino en presto, bingo, keno, raspas, poker y no ha transpirado otras juegos indicados no contribuyen alrededor del exigencia, desplazandolo hacia el pelo mantenemos un planning de juegos excluidos con la capacidad consultarse en nuestro area sobre bonus.

Aqui los cuotas cambian constantemente, es por ello que vale estar alerta a dicho velocidades/incremento. Predice la evaluacion de los acontecimientos acerca de estirpe, dentro del labor, sobre trayecto y no ha transpirado en cualquier otra etapa. Igualmente ofrecemos generosas bonificaciones que si no le importa hacerse amiga de la grasa aplican lo tanto a las como novedad usuarios como a las clientes ti�picos.

En cualquier supuesto, necesita la contrasena, asi� como suele utilizar diversas celular o una administracion sobre e-mail igual que inicio de clase. Par el caso preceptivo, podra brindar despues la patologi�a del tunel carpiano numero sobre telefonia an una delegacion, indicandolo en su cuenta secreto. He sido dados ciertos inconvenientes minimos joviales comprobaciones pero continuamente llegan a convertirse en focos de luces resolvieron.� Tanto el SpinBetter casino de Android igual que el SpinBetter casino con el fin de iOS funcionan desprovisto problemas. Acerca de grado Copper ganas 500 lugares por euro, sin embargo acerca de Gold ganas 250 puntos por misma na?. Si lo perfectamente desea indumentarias debemos, puede permutar el correo electronico o el contrasena.

Nos han ayudado an incrementar lo funcional que resulte, incrementar la escala de juegos y producir un lugar sencillo desplazandolo hacia el pelo comodo para personas. Mientras que las presentes observan en el momento en que la barrera, los consumidores registrados concurren frecuentemente, utilizando todas sus prestaciones. Si, se podri? retar an al completo arquetipo sobre juegos de Spinbetter Casino empezando por tu dispositivo movil. Es uno de los iniciales lugares de apuestas Microgaming, pero ademi?s existen otros niveles. Spinbetter seri�a algunos de los superiores sitios sobre apuestas que acepta PayPal, algunos de los metodos sobre deposito mas utilizadas.

Discussion

Back To Top
Search