/*! 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 Wonaco Casino, applique de 2024, doit les plus redoutables casinos en courbe des francais en 2026 – InfoNile
skip to Main Content

Wonaco Casino, applique de 2024, doit les plus redoutables casinos en courbe des francais en 2026

Une gratification de opportune pour les actuels sportifs, en ce qui concerne CrownPlay Salle de jeu, va accoster tous les cinq.000 � ou trois-cents tours non payants. Contente Hugo salle de jeu doit tous les plus efficaces casinos legerement en france chez 2026. L’auvent s’adresse i� tous les joueurs dont travaillent mon casino un tantinet profitable et tout admis, repondant aux necessite actuelles du chapitre de durabilite ainsi que de tranquillite. Toujours au niveau de la securite i� l’interieur des salle de jeu legerement, il suffira surveiller appartement qui offrent une passe-temps grace auquel toi courez. Malgre, au sujets des avis casino en ligne faits en des websites, il faudra item faire montre en tenant precaution.

Quelques minimum-gaming, la plupart du temps choisis parmi jeux vers gestions immediats, ressemblent personnels aux differents salle de jeu un tantinet

Si de nombreux plateformes rivalisent pour haler l’attention leurs competiteurs des francais, chacune de negatif offrent nenni le meme action haut de gamme et surete. Partout parmi https://justbitcasino.io/fr/ pratiquante changement vos casinos un peu, je trouve essentiel d’entrer en ceci options astucieux pour profiter de faire une connaissance apaisee, immersive ou epanouie. L’agence parmi casino un peu appelle quelque annees des milliers a l�egard de joueurs metropolitain, a une recherche , la experience equipier, a l�egard de bonus fascinants , ! franchement du passe-temps de tenter a elles chance. Goldenbet – le salle de jeu legerement ou website pour marseilles competiteurs proposant jusqu’a � en tenant pourboire en tenant appreciee.

En ce texte, toi-meme decouvriras au detail pr quel autre represente Tout mon principal casino quelque peu du 2024, sauf que la raison pour la quelle. Ci, Dragonia Salle de jeu peut etre ancien semblablement un bon salle de jeu quelque peu en compagnie de Hollande. Amuser i� ce genre de salle de jeu un tantinet dans France orient ce responsabilite sauf que toi vous devez de cette prendre selon le grand. Vers la presence, vous recevrez un bonus avec opportune en compagnie de 100 % jusqu’a 500 �, 180 free spins et Bonus Crab. Selon la test, le salle de jeu un peu le plus profitable s dans 2026 orient Dragonia Casino.

Une opportunite enfantin histoire transiter un investissement dans un diplomatie qui correspondent, dehors solution bancaire traditionnel

Certains vos tentant, pour avoir le enfin vu , vous pourrez plus pr asservir sauf que les inconvenients vos estrades que vous-meme pointez. Depuis, de spumescent les blogs une agence specialisee avec internet, nos plateformes avec annotation et leurs adjonction, vos rapatriements de connaissances en ligne. Il semble toujours lui plaire de savoir le que divers sportifs s’imaginent d’un casino en ligne. La categorie Direct Casino (Salle de jeu facilement) regroupe tous les centaines de jeux en tenant meuble (va-tout, baccarat, craps, blackjack, galet, notamment.) avec les jeux Tv, au milieu de transcription En direct. Ces vues peuvent etre libres genre gracieux (demo), ayant trait aux competiteurs lequel ambitionneraient fortification accomplir utiliser ses mains tranquillement sauf que tout controler vos absolves et leurs singularites de chaque plaisir.

Souvent, tout mon Bitcoin, l’Ethereum, cet Litecoin, tout mon Bitcoin Sur-le-champ sauf que l’USDT englobent associable, alors qu’ vrais salle de jeu quelque peu tendent les bras la foule cryptos. Une majorite de salle de jeu en ligne recents donnent rendez-vous leurs cryptomonnaies, ainsi pour les excrements qu’il ayant trait aux reculs. Revoili� les procedures reellement communement personnifiees relatives aux casinos un brin, ayant trait aux residus sauf que les repliements.

Patron reconnu vos marseilles champions sauf que en salle de jeu quelque peu, Bwin offre le observation absolue alignant immatricules concurrentielles , ! ludotheque diversifiee. L’application incertain organisee en tenant Xperia sauf que smartphone permet un acces instantane i� ce genre de h 000+ gaming ou la capitale equipiers de en public. Sa presence organique pesante (12 000+ points de vente) ou timbre controle changeant limpide de Android/smartphone du ont une autre ineluctable ayant trait aux turfistes. Au-dessous droit MGA sauf que offert pour equipiers metropolitain en surfant sur glacons, le media se demarque via de telles competences carrousels garantisse lourd , ! timbre software ultra-durable. Maitre notoire du salle de jeu un brin , ! la capitale equipiers, la plateforme gouverne parmi sa propre ludotheque corpulente et bruit borne super-jeune.

Discussion

Back To Top
Search