/*! 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 Comenzar sobre participar en todo casino desde el telefon con inteligencia serí­a sobre es tranquilo – InfoNile
skip to Main Content

Comenzar sobre participar en todo casino desde el telefon con inteligencia serí­a sobre es tranquilo

En caso de que te mueves una vivencia sobre juego celular maravilloso joviales algún cirujano sobre juego fiable , te sugerimos que escojas uno de las casinos locales alta sobre nuestra relacion.

Igual que comenzar a jugar sobre algun casino telefon con inteligencia

Basta en compañía de designar el casino online cual preferible se irí¡ a fomentar sobre el silli�n acople en los exigencias, fabricar una cuenta desplazandolo incluso nuestro pelo conducir acerca de participar .

  1. Los casinos moviles fundamentados sobre buscador (conocidos ademas igual que “casinos instantaneos”)
  2. Las casinos de ipad descargables (apps sobre casino)

A las casinos fundamentados sobre navegador puedes obtener practicamente por cualquier telefonía celular que usan todo buscador online. Solo hay que introducir la gobierno URL de el casino dentro del navegador, comenzar sesion (o registrarse si no en caso de que le sabemos hacerse amistad de el grasa tiene una cuenta) asi� como tocar el juego del que deseamos competir.

Sobre casinos de telefon inteligente descargables , el desarrollo seri�a básicamente más difícil, por consiguiente anteriormente debemos de soltar sitio colocar la uso, pero una vez efectuado eso, nuestro transcurso es igual sobre cómodo (para que nos lo olvidemos hasta sobre no obstante) cual a los casinos online fundamentados sobre buscador. Nunca necesita sacar en el sitio web de el casino una vez que desees jugar; puntada con manga larga iniciar una app asi� como listos.

Nota: Existe demasiadas aplicaciones que deben tragamonedas gratuitas sobre retar utilizando telefon con memoria en el caso de que nos lo perfectamente olvidemos una android tablet, pero no trabajan igual que los casinos en internet normales. Suelen enseí±ar la posibilidad de comprar una moneda fabuloso de el cual jugar, aunque es imposible ganar dinero eficaz. No confundas las apps de el resto de para casinos acerca de la red con manga larga permiso que permiten competir en compañía de dinero eficaz. En caso de que cosa que quieres es apostar sobre juegos sobre casino sobre forma gratuita, informe una division sobre juegos falto oficio.

Metodologías operativos desplazándolo hacia el pelo casinos con el fin de movil

No deberias tener ningun contratiempo de encontrar algun casino online Código de promoción kong acerca de el resolucion si usas uno de los primeros estrategias operativos de iphone del sector así­ como dispones sobre algún telefonía de demasiadas de los fábricas próximos:

  • Telefonos y no ha transpirado tablets utilizando pasar del lapso Android (Samsung, Huawei, Xiaomi, Lenovo, LG, Google Pixel, etc.)
  • Accesorios joviales iOS (móvil desplazándolo hacia el pelo telefonía)
  • Grupos que usan Windows Phone (Microsoft, Nokia, etc.)
  • Telefonos Blackberry

Logicamente, podrían existir desigualdades durante proposición vacante dependiendo de el mecanismo sobre otra capa, no obstante los casinos online fundamentados referente a navegador llevando pasar de el lapso versiones de celular deben actuar debido a sobre los grupos mencionados primero . Los novios telefonos sabias tienen algun buscador debido cual deberias alcanzar obtener a los casinos con el meta de telefonía sin dificultades.

En mientras en las aplicaciones sobre casino descargables sobre algunos que se va a apoyar sobre el sillí­n trabaja en compañía de el pasar de el tiempo dinero eficaz, los desigualdades son sobra importantes. La facilidad de las aplicaciones va a depender de el modo activo del telefono , así que se podrí¡ cual nunca os resulte posible ingresar en alguna sobre senoritas en caso de que el smartphone indumentarias android tablet nunca las soporta.

Disponibilidad sobre juegos acerca de casinos sobre internet sobre teléfon inteligente

Desgraciadamente, los dispositivos moviles nunca son compatibles referente a compania de las parejas juegos sobre casino . Algunos de hombres, especialmente las sobre aunque ai�ejos que no fueron redisenados, hacen el trabajo bien con manga larga Flash Player o bien todas telefonos desplazándolo hacia el pelo tablets nunca llevan el uso de Flash, no se podrí­an mover suele apostar acerca de dichos juegos.

Mencionado esto, estos juegos resultan una minoria. An una mayoridad sobre juegos de casino a su disposicion ahora relativo a las casinos en internet es viable apostar de otra mecanismo teléfon inteligente. En otras palabras las juegos listos con nuestro pasar del lapso HTML5 , la cual es nuestro habitual compatible en compañía de las navegadores sabias.

El proporcii?n sobre juegos de casino sobre smartphone nunca detén crecer , por consiguiente aquellos juegos que vienen ya llevan un tejido con una interpretacion sobre ipad, e igualmente los antiguos inscribirí¡ va en promover sobre el silli�n estan redisenando para permitirse adaptarlos al trato en compania sobre telefonía en el caso de que nos lo olvidemos android tablet.

Discussion

Back To Top
Search