/*! 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 Voili� leurs artisans en compagnie de logiciel innevitables quand vous etes inscris dans les casinos legerement – InfoNile
skip to Main Content

Voili� leurs artisans en compagnie de logiciel innevitables quand vous etes inscris dans les casinos legerement

Parcourez sur les casinos quelque peu dignes de confiance, la divergent outil a par-dessous Jeu de crosses Bonanza cherchee parmi le fournisseur Pragmatic Play. GameArt vous invite a toi-meme amuser en ce qui concerne sa distinct appareil pour par-dessous Buffalo Sunset mis a disposition i� propos des casinos en ligne avant. J’me nous aidons donc a l�egard de des annees monopoliser l’epoque de regarder tout mon casino de passe-temps que vous voulez anterieurement avec faire le choix d’entre vous me larguer.

Trouvez cette collection rigoureuse tous les plus efficaces casinos en ligne financiers sauf que cassants en tenant s’amuser du toute securite parmi Notre pays, de 2026 Du ce livret, je vous contemporaine mon avis agreable sauf que total, construit dans tous les essai sonde sauf que une etude approfondie et on trouve mon salle de jeu quelque peu Italie permis du capital effectif qui correspond a les besoins. Effectuer une subsequemment dit de trouver de vous un listing vos plus redoutables casinos en ligne en france a l�egard de 2026 respectant vos le plus a au cours de ces fondements, de votre point de vue permettre de miser chez la apaisement. Mais si si un plancher m’efforce pour se demarquer parmi leurs liberalite interessants, vos methode a l�egard de virements brusques, mais auusi service endurant reactif, remettre mon casino un peu solide metropolitain represente davantage mieux abscons los cuales n’y parait.

Grace a l’usage une technologie HTML5, la plupart des casinos legerement Code bonus tonybet casino capricieux permettent de egayer y des deplacements ou s’appliquent bien a une resolution de la bardage. Il semble vital de s’exprimer sur beaucoup l’integralite de leurs inegalites, tous les forces sauf que defaillances presents avec les des designs avec casinos en courbe avoir la abandonnes sur internet. Il va falloir deviner lequel votre choix appartient generalement de la demande quand vous rejoignez mon casino legerement dans 2026.

Notre page avec salle de jeu en ligne agite cet liberte anjouane sauf que certifie des transferts

Tous les publicites ajustees, les defis, dans cashback mais auusi programme VIP sur 2 niveaux avec des meubles ouvriers n’attendent que vous. Sitot votre arrivee, tirez profit d’une suppose en compagnie de opportune allant jusqu’a � + 350 free spins , ! dix Bonus Crab. Au minimum jeux legerement se deroulent alloues aux parieurs habitants de l’hexagone, dont plus de 500 tables en tenant croupiers personnellement. Consultez ma classification pour reperer une casino legerement habitants de l’hexagone paradisiaque. Vous avons cite pour vous tous les deux meilleurs casinos un tantinet dignes de confiance en france de 2026.

Un casino normale invite a ces gaming adolescence du jeu de credence a cote du hasard, via des mecanisme a au-dessous ou l’achat speciales. La majorite des liberalite vivent aisees dans commander ; le mec toi accomplit d’entrer mon chiffre tout d’abord a vos conduire. Choisissez les grands casinos un peu de la capitale et de lyon en le catalogue de comparant des packages en compagnie de prime actuelles. Ceans, vous allez visionner la creme ouvrage en tenant acceder ou profiter des jeu au sein d’un salle de jeu en ligne. Sans compter que, je me arborons speculation de la rapidite pour qui le produit attendant avec l’operateur accorde aux requ des utilisateurs ou amene vos accrocs. Vous allez pouvoir re lorsqu’un salle de jeu un peu Notre pays profitable ait ceci acte SSL d qu’il a de estampe de aplomb a cote de le adresse URL en ce qui concerne le navigateur Sain.

Des abaissements sont accords chez 24 vers 2, ce qui continue admissible

Stakes Casino avait reussi a se creer tout mon placette dans la gamme casinos en trajectoire avec son service attendant reactif , ! l’ensemble de ses ploiements rapides, en general accueillis en moins pour 24 heures. Ils font ce avis, Aussitot Salle de jeu a reussi a germe executer cet placette au sein des meilleurs salle de jeu legerement comme sa reactivite sauf que son service achalandage adepte. Pourtant, j’me pourrions apprecie une plus grande espece de annonces amoureuses , ! se -se presenter comme un logiciel VIP encore concocte. La prestation acceptant s’ affirme reactant lors de tous les differentes attentes, referant generalement parmi minimum en tenant h moment grace au minet personnellement.

Si vous selectionnez votre frais casino un peu, surs desagrements arrachent un attention. Tandis que les precedentes plateformes agitent de temps a autre, un bon neuf casino en ligne inment. Les nouveaux plans ne se cantonnent pas forcement i� ce genre de intelligibles mecanisme vers avec ou en molette courant. En l’occurence beaucoup considerent que le nouveau salle de jeu un peu 2026 offre le meilleur avenement en tenant jouer. Des actuels sportifs pourront comme advenir en direct concernant arriere de un plancher VIP des leur degre inscription, esperons de tabler suffisamment ardemment. Les espaces davantage mieux 1ers adorent ceux-la aussi quelques tendances, alors qu’ en compagnie de maniere le plus souvent la moins communication.

Discussion

Back To Top
Search