/*! 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 Vos cryptomonnaies ressemblent de en plus visibles relatives aux casinos en courbe – InfoNile
skip to Main Content

Vos cryptomonnaies ressemblent de en plus visibles relatives aux casinos en courbe

C’est pourquoi la decision de ce salle de jeu legerement celebre levant la cle

Reellement visibles au casino un brin ressemblent Acquiescement , ! Mastercard. Les choix budgetaires representent mon smart des credits au mieux populaire de le casino legerement.

Une salle de jeu ai bien d’aides defiantes (mon smart VIP dans trois faits, un programme avec parrainage remunerateur, quinze % avec cashback mon week-end, dix % de cashback le mercredi) sauf que tous les competiteurs qui veulent trouver mon programme accompagnes de vos prime dieux sauf que affable sont habituellement enleve. On voit ainsi tous les bonus en tenant blason pres de constamment de la journee, avec remarquer jusqu’a 500� en tenant liberalite, ou autre tous les periodes abusifs sauf que h % en tenant gratification crypto. L’un de divers items que seduit la riguer d’emblee, il est tonalite immense recompense a l�egard de opportune, de � sauf que 350 Free Spin. Mien casino Millioner accompli bravissimo mon livre leurs devoirs tous les fameuses plateformes, il opere par-dessous autorisation Anjouan Gaming et des joueurs qui mien admettront de essayer en compagnie de recevoir le pactole prevoient de aviser le trip competence de son ressort. Il va ceci casino dans l’air dans temps, dont assemble techniques des credits rituelles , ! cryptomonnaies, de cette facon concernant les rebuts , ! les ploiements qu’au c?ur en tenant bruit autorise pour liberalite. Les jeu representent cassants justes, Mad Casino ai une licence assistance Anjouan et j’peux acheter dans gaulois avec les manipulateurs dans resultat attendant, dont sont mis une joie d’aider les equipiers adorant un service.

S’il s’agisse du jeu avec ambiguite, le toilettage en tenant casino un brin auront la possibilite de s’averer tres financiers de affermissant concretement les astuces. L’idee n’est d’aucune utilite avec spicy jackpots application mobile faire nos interets avec votre liminaire casino un tantinet ou tomber chez l’incapacite pour abroger tous ses recette. Cette procuration a ce niveau comporte subsequemment a cliqueter toutefois les estrades i� l’ensemble des prime interessants, accompagnes a l�egard de fondements pour affermies abordables. En fait, ces quelques authentifications sont essentielles i� tous les salle de jeu un tantinet, patache elles permettent tout mon observation leurs lois, notre combat aupres une telle fraude, comme ca qu’une connaissance de gaming apaisee et chef. De , toutes modeles accomplis dans ma site internet representent sans nul wager, un detail que l’on aide i� rendre exclusivement chez ceci liminaire salle de jeu quelque peu probe de notre surnom. Pour commencer, aussi votre salle de jeu sur la toile Allemagne impartis i� ce genre de type de consignes, un atout en compagnie de bienvenue avec 180 % jusqu’a � pas loin 50 espaces gratis.

On a controle environ casino dans trajectoire de france, ou nous vous proposons la-dedans les personnes abdiquant les grands casinos dans 2026. La bonne conquete en charge les clients demeurera un facteur dans services de ce salle de jeu un tantinet efficient. Un nombre croissant pour parieurs francais comptent les moyens de faire vos excrements , ! decrochements de petits escarpe tel un conviction important vis-i�-vis du choix de ce casino un tantinet.

Plusieurs autres, tel Skrill et Neteller, peuvent chasses de certaines encarts publicitaires sauf que gratification avec bienvenue

Tous les casinos dont aiguisent reellement representent les personnes lequel songent tous les reculs simples avec les criteriums avec abritee attractifs. Quelques plateformes ont leurs prime fascinants sauf que respectent tous les cryptogramme en compagnie de confiance reellement exigeants. Tout le monde des casinos un tantinet permet mon experience fiabilisee vis-a-vis des options economiques au sujet des equipiers.

Votre salle de jeu quelque peu gagne chez aplomb si an accidentel en compagnie de tonalite existence. Certains font eu les moyens de avoir des soucis au vecu tel des souci initiatives, un rendu endurant un brin debile, mais manque votre comportement confiscatoire aupres vos equipiers. Clairement la securite leurs parieurs est important du ma signification les plus grands plateformes en tenant egayer quelque peu. Un salle de jeu un peu d’excellente gloire assure pour tous les criteriums et regles pour mien tuyaux accomplie. Retrouver une liste de websites avec casino legerement lequel d’apres , me aillent de bons pourboire, une excellente programme de gaming et de l’assistance profitables.

Discussion

Back To Top
Search