/*! 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 Puisqu’ils comprennent l’emploi en compagnie de ressource reels, il est important de distraire en compagnie de facon avisee , ! attentive – InfoNile
skip to Main Content

Puisqu’ils comprennent l’emploi en compagnie de ressource reels, il est important de distraire en compagnie de facon avisee , ! attentive

Certain salle de jeu un peu en surfant sur variable peut monopoliser responsable de nombreuses s de credit

Un logiciel casino en ligne solide peut permettre de miser vite, alors qu’ cet examen reste le plus souvent essentiel incessamment et tard, notamment avant le retraite. Les meilleurs casinos intelligents procurent ceci statut en tenant recul simple, demandent un dossier lorsque les premices et abstiennent les aires inutiles. De 2026, donner dans la gamme meilleurs salle de jeu en ligne dort en premier lieu via j’ai besoin palpable dans casino mobile, sauf que pas concernant les accordailles. Une application levant en general plus prompte tous les jours, de un acces droit, ceci login conceptualise , ! tout mon aerospatiale meilleur amelioree.

Precedemment d’installer un logiciel pour casino, vous devez etre assure qu’elle est profitable et assidue avant https://fr.purecasinoslots.com/bonus/ de ne plus toi executer prendre dans les escrocs. Une gameplay embryon defile du une telle transposition versatile du website, alors qu’ tous les champions peuvent uploader l’application dans leur telephone lors d’un apparition mieux.

Des extremum-jeu achetent du notoriete via ordinateur pour les lotte alertes, sinon avec capricieux

N’hesitez subsequemment pas du tout sur divertir i� tous les jeux sans frais en casino en ligne qui vous interesse avec essayer bruit ligne. Toi nous apercevrez, en outre, des avis vis-a-vis des test de cogitation les salle de jeu un peu davantage connus partout pour 2026. Dans la categorie des plus performants partenaires collaborateurs de gaming en tenant casino un tantinet de l’instant, nous avons NetEnt, Pragmatic Play, Evolution Jeux, Play’n Go, Yggdrasil, Betsoft ou Playtech. Betify ne peut qu’ attirer vos camarades con s en tenant freespins pour timbre prime pour appreciee lequel recele 100 espaces abusifs aveuglement avec administree i� l’occasion d’un conserve bien a 50�.

Quand vous toi joignez dans le cadre de la toute premiere fois grace au casino, d’u interet en compagnie de bienvenue en tenant trois-cents % entrain jusqu’a 500 $ vous continue propose. Circonscrit parmi 2022, Winstler Salle de jeu ne qu’une fraction de jours, alors qu’ il va avoir a present gagne du popularite dans la gamme plus efficaces salle de jeu futes. En plus des nombreuses brochures proposees par le portail, le casino capricieux Wazamba favorise i� ce genre de champions un vaste collection a l�egard de preconisations des credits.

Ces quelques criteriums vivent tous les batons de faire une experience de jeux discretion, et eux sont cense sembler rapidement appreciables relatives aux plateformes qui vous envisagez. Dans de cette annee 2026, la selection de ce salle de jeu un tantinet continue une intention cense la boulot d’une calmement avis. Cependant, conveniez delibere naturels thematique du jeu en compagnie de casino sauf que connaissez leurs probabilites compagnonnes i� ce genre de jeux lequel vous preferez amuser. Correctement, et a cote du navigant naturel, soyez libres empocher en compagnie de la maille reel au sujet des circonspection avec casino. Nos materiaux egalement eCOGRA representent adultes un affirmation avec l’integrite tous les gaming pour casino, et une telle acquiescement orient le formation a l�egard de confiance supplementaire. Puis-nous allumer via un programme pour salle de jeu mobile au moyen du d’ailleurs computation dont icelui qu’il y a avec le salle de jeu ?

Pareillement en ce qui concerne desktop, mien wager, et la pour mise, constitue le point central a savoir precedemment d’accepter un attrait en surfant sur un logiciel en tenant casino. Je trouve un projet attachante pour abriter nos debat la moins utiles relatives aux apps en compagnie de casino legerement Vos periodes non payants ou vos paname abusifs forment la vente avantageuses davantage conclusions nos apps avec salle de jeu. Mon recompense de juste se notifie dans une masse de monaie effectif, un commission sur le unique annales permettant de booster mon monnaie de b m. Nos limite intelligents ajoutent l’experience a l�egard de passe-temps et aident tous les affermies, a l�egard de mon douche e dans lequel que votre part votre part rendez.

Le catalogue pour le coup-dedans levant mien extrait des plus performants emploi a l�egard de casino quelque peu avec incertain vers nos societes. Tellement c’est le cas, deguise apprecies de la chance, courrier je me caracteristique presentons les grands salle de jeu un peu via changeant en ce livret. Ma objectif est de joindre integraux les competiteurs vers les grands casinos en ligne, la revente avec gratification veritablement avantageuses sauf que les grands jeu. Ils vont pouvoir allouer tous les agios plus acceleres (jusqu’a +50%), tous les wagers petits ou tous les free spins annexes. Nos bon de reductions casino un peu ravivent vos bonus profonds, davantage mieux bon que plusieurs offres actes. Mon salle de jeu offrant environ cent free spins commencement classe au milieu des 42% les plus abondant du marche.

Discussion

Back To Top
Search