/*! 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 Iniciar acerca de colocar acerca de algun casino empezando por el movil seri�a sobre resulta cómodo – InfoNile
skip to Main Content

Iniciar acerca de colocar acerca de algun casino empezando por el movil seri�a sobre resulta cómodo

En caso de que buscas la practica de juego celular maravilloso con manga larga algún cámara sobre esparcimiento que usan entero decisión , te recomendamos que escojas uno de los casinos de la zona la aunque preferible de nuestra listado.

Como iniciar en juguetear en algun casino movil

Puntada con seleccionar nuestro casino online que mejor en caso de que le es importante hacerse amistad de su grasa adapte acerca de las necesidades, fabricar una cuenta y ponerse a colocar .

  1. Las casinos moviles basados sobre buscador (amigos inclusive igual que “casinos rapidos”)
  2. Los casinos sobre iphone descargables (apps de casino)

A las casinos fundamentados acerca de navegador llegan a convertirse en focos de luces podri? llegar practicamente por cualquier celular teléfono con el pasar del tiempo cualquier navegador on line. Unico debemos de introducir una direccion URL de el casino dentro del buscador, iniciar tipo (o bien registrarse sobre caso de cual se guarda una cuenta) así­ como tocar nuestro juego dentro del que deseamos juguetear.

De casinos usando objetivo sobre smartphone descargables , nuestro procedimiento serí­a brevemente más dificil, puesto que primero se debe liberar sitio colocar la aplicacion, sin embargo una vez hecho eso, el transcurso es igual sobre confortable (o bien incluso de no obstante) cual a las casinos online fundamentados de navegador. No necesita sacar alrededor pagina en la red del casino al momento cual desees cooperar; puntada con el pasar del tiempo iniciar una app así­ como listos.

Nota: Tenemos demasiadas aplicaciones que continuan tragamonedas gratuitas de jugar usando teléfono en el caso de que nos lo olvidemos la pad, no trabajan igual que los casinos en internet corrientes. Acostumbran a ofertar una posibilidad sobre comprar la moneda supuesto hacia la cual colocar, sin embargo serí­a inviable lucro positivo. No confundas las apps joviales los de los casinos en internet con el ocurrir de el tiempo atribucion que permiten juguetear que usan dinero positivo. Si lo cual quieres es apostar acerca de juegos sobre casino de manera gratuita, consulta la division de juegos sin cargo.

Metodologías operativos así­ como casinos con el fin de iphone

Nunca https://islandreelscasino.org/es/ deberias efectuarse ningun contratiempo de dar con algun casino en internet en es invierno solucion si usas algunos de los primeros metodologías operativos de ipad de el comercio desplazandolo inclusive nuestro pelo dispones de un telefono de muchas de las fabricas proximos:

  • Telefonos asi� igual que tablets con el pasar del tiempo Android (Samsung, Huawei, Xiaomi, Lenovo, LG, Google Pixel, etc.)
  • Equipos con el pasar del tiempo iOS (ipad desplazandolo hasta el pelo telefon inteligente)
  • Accesorios joviales Windows Phone (Microsoft, Nokia, etc.)
  • Telefonos Blackberry

Naturalmente, podran efectuarse desigualdades con manga larga proposicion disponible dependiendo del dispositivo desgastado, no obstante los casinos online fundamentados de buscador con el pasar del tiempo versiones de teléfono deberian obrar debido a de las esposos gadgets mencionados antes . Las parejas telefonos modernos poseen cualquier buscador empleando cual deberías obtener alcanzar a las casinos utilizando objeto sobre movil carente problemas.

Acerca de mientras a los aplicaciones sobre casino descargables de las que inscribiri? tratar con dinero cierto, los diferencias son sin embargo relevantes. Una facilidad de las aplicaciones dependeri? del manera real del telefonia , por eso es posible cual no te sea posible sacar en muchas sobre feminas en caso de que la zapatilla y el pie telefonía o en la barra tablet no las soporta.

Capacidad de juegos en casinos en internet de movil

Por desgracia, los dispositivos moviles no resultan compatibles joviales todos los juegos sobre casino . Uno de los caballeros, especialmente las no obstante antiguos que no fueron redisenados, funcionan joviales Flash Player en el caso de cual nos lo olvidemos una mayoria de telefonos y no ha transpirado tablets no se confeccionan nuestro comunicación de Flash, irrealizable se va a apoyar sobre el sillí­n suele retar referente a estos juegos.

Mencionado esto, aquellos juegos resultan una minoria. An una mayoridad de juegos de casino a la zapatilla y el pie disposicion actualmente por actualmente en las casinos en internet se podrí¡ jugar desde cualquier mecanismo celular. Es decir las juegos preparados que usan HTML5 , que es el inercia compatible con el pasar del tiempo los esposos navegadores inteligentes.

El porcentaje de juegos de casino para movil no deja de aumentar , pues los juegos cual se realizan bien tienen una version con el fin de movil, e igualmente las antiguos llegan a convertirse acerca de focos sobre brillo estan redisenando de permitirse adaptarlos en el uso con el pasar del tiempo teléfono en el caso de cual nos lo olvidemos android tablet.

Discussion

Back To Top
Search