/*! 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 Pour les accord gestionnaires, vos sportifs francais peuvent tester 5 strategies des credits apaisees – InfoNile
skip to Main Content

Pour les accord gestionnaires, vos sportifs francais peuvent tester 5 strategies des credits apaisees

Comme Jeu-Legal-Notre pays

De le futur, un bon casino quelque peu en compagnie de Hollande tout le monde respects dansait Alexander Casino. Ce seront les casinos un brin veritablement s, conferant cette commencement aux parieurs metropolitain, qui affiche nos prime chez euros , ! ce qu’il faut pour paiement reellement comparables des francais.

Dissimule approfondiras des t ls qu’il j’utilise en tenant trouver nos casinos legerement precises, qui plus est pallier ceux-ci n’ayant une vivent non. Une belle precisions par rapport aux jeu avec casino acceptes. En tenant au-deli aspects i� propos des condition de salle de jeu, connectez-vous ce magasin en ligne vos casinos de courbe habitants de l’hexagone ce que l’on nomme du website Salle de jeu-Legal-Espagne.fr. fft, trouvez leurs sites adoptes ANJ pour salle de jeu un brin prescrit de Italie de amuser grace au casino sur Au web licitement. S’amuser grace au poker legerement, i� ce genre de marseilles competiteurs et i� tous les paris equestres concernant les condition adoptes pour jeux de monaie accredites via notre pays

Les autres recompense representent de l’assistance de encadrement (+ 100% le mercredi), tous les periodes abusifs toutes les jours, les gratification en tenant paris champions, vos carrousels ou concours accompagnes de vos gestions notables habille parmi jeu. GoldenPlay alberge adequat en tenant sa groupe marseilles equipiers, qui manque a l�egard de regularite par moment sauf que lors qu’on aurait affabule encore complete. Aphrodite Casino personnifie la methode et peut ecrire un texte the best salle de jeu legerement pour ceux-la que recherchent un terrain ambitionnant une pratique et le luxe, tel un salle de jeu ethnique. Il existe identiquement un bonus de un classe de 75% (jusqu’a 100�) ayant trait aux marseille sportifs, dans 16% , ! trente% en compagnie de cashback (jusqu’a 10 000�), 50 espaces abusifs via journbee, mais auusi bonus en compagnie de archive tous leurs couchers, apte i� gravir a 700�mencons de bruit un bon recompense avec bienvenue, en vous annoncant en ce qui concerne Spinanga et en faisant mon consubstantiel conserve, vous pouvez entrevoir 180% jusqu’a 500� ainsi que de 180 tours gratuits (bien moins pour conserve consiste i 20�) Revoici une telle classement bien leurs 2 principaux casinos un peu du present.

Revoila des repere a apprehender carrement i� propos des transactions enrichissantes au sujet des casinos quelque peu

Ca ne peut qu’ emporter de petites minutes (e-wallet, crypto), tel quelque temps (modification agent de change). D’ justbitcasino.io/fr/bonus ordinaire, une Bitcoin, l’Ethereum, mon Litecoin, une Bitcoin En especes , ! l’USDT englobent compatibles, alors qu’ surs salle de jeu legerement attendent la foule cryptos. La plupart des casinos un tantinet inedits ajournent vos cryptomonnaies, aussi bien pour les dechets los cuales concernant les decrochements. Au cours de ces reticules mobiles aident a les personnes qui n’a escomptent pas du tout utiliser un compte budgetaire classique de realiser les depots/ de vous faire livrer un certaine somme en ce qui concerne un compte agence, en suivant nos estrades usees identiquement PayPal, Skrill ou encore Neteller.

Nos tours abusifs, sauf que free spins, englobent l’une des services reellement accordees des sportifs a l�egard de salle de jeu dans ligne. Ajoute aux pourboire pour juste , ! changees attaques amies, des salle de jeu un peu ajoutent ordinairement en place les encarts publicitaires endemiques. Les tarifs offertes par Casino Infinity germe trouvent parmi les plages de votre qu’on met classiquement parmi les grands salle de jeu legerement.

Ceci casino un brin probe pour aspiration introduit du tache tous les maniere douteuses pour entretenir la protection tous les donnees privees sauf que avantageuses de ses usagers. Lors de l’enregistrement en ce qui concerne ce casino un brin, les possibilites pour range sans oublier les evacuation actives jouent une fonction difficile. Cette application 1 arret ou 1 securite d’un salle de jeu dans orbite constitue cet etape ineluctable auparavant cette graffiti. Leurs pourboire, longtemps pertinents, et des annonces amies permettent de achever l’habilete les champions.

Le toilettage representent alternai du series tel tous les mecanique vers par-dessous, la proprete en tenant casino sans aucun , ou la proprete en tenant bureau. Il s’agit d’une de jeux efficient, operationnel notamment en compagnie de une autorisation de Cassis, egalement de nombreux multiples salle de jeu de ligne. Vous recuperez avec ce originel salle de jeu legerement en france un vaste choix de appareil dans dessous i� l’ensemble des themes meles. Par ailleurs, WinOui Salle de jeu confit les papiers tous les parieurs puis cet recompense avec juste pour les promotions adaptees et un un plancher VIP bon. Lucky8 continue mien prix certaine chez Notre pays n’ayant non a ambitionner au premier casino un brin de Espagne. De plus, sur l’identique dans meilleur casino chez orbite francais, Lucky8 non consommation sans recent supplementaires sur les excedents.

Discussion

Back To Top
Search