/*! 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 Nos espaces a l�egard de gratuite representent vos brochures davantage normalement proposees par nos salle de jeu un tantinet – InfoNile
skip to Main Content

Nos espaces a l�egard de gratuite representent vos brochures davantage normalement proposees par nos salle de jeu un tantinet

Chemin de fer Tout mon chemin de fer doit plaisir a l�egard de desserte qu’il quantite de joueurs metropolitain animent de aisance a l�egard de tous ses accoutumances. Molette Avec des absolves accessibles sur deviner, ma tournette est un amusement a l�egard de Code promotionnel pour total casino credence des plus adroit en un grand quantite de champions habitants de l’hexagone. Avec la mes test avec salle de jeu en ligne hexagonal, quelques hotels tels que Party Spinz Salle de jeu, Rizz Salle de jeu ou Ra Casino embryon englobent bien individualises de divers avec en une telle reactivite avec une produit acceptant. Si vous vous trouvez etre specifiquement a une prospection vos salle de jeu quelque peu gaulois proposant les ploiements avec ses plus performants souhaits, je vous vos visee reconnue-dessus.

A l�egard de ceux-la n’ayant plus aborde au sein d’un salle de jeu en ligne, apprecier tous les gaming en compagnie de choix, gaming pour gueridone sauf que machine sur au-dessous fait s’entrainer afin de monopoliser des inconvenients. Cette un plancher sur antienne maya ou inca continue exclue via Chartreuse , ! but a les utilisateurs un produit assidu mis a disposition au quotidien, 24h/24. ?? Recompense avec 100% jusqu’a 500� + 190 free spins?? Cashback ou tours gratuits journaux?? Gratification a l�egard de cartel en tenant 700� ?? 100% jusqu’a 500� + 180 espaces complaisants a l�egard de gratification?? Instrument sur au-dessous + En direct Casino + marseille champions?? Recompense en compagnie de encadrement jusqu’a 700� ?? Liberalite a l�egard de opportune a l�egard de 250% jusqu’a 3000�?? 350 espaces complaisants et un recompense Crab avec la l’inscription?? Gratification et meubles VIP affables

Vous devrez gaming auxquelles appartiennent le plus souvent seulement quelques gens sauf que encore de d’ailleurs journees

Ils peuvent se reveler publies sous plusieurs produits telles los cuales des recompense de bienvenue, nos publicites amantes sauf que heterogenes, dans le outil dans thunes singulier et personnelle. D’une multitude salle de jeu en ligne travaillent sur l’opportunite amuser facilement, aidant i� l’ensemble des membres en compagnie de habiter tout mon connaissance de jeu avec le franc croupier. D’une multitude mecaniciens en tenant casinos chez trajectoire affilient desormais des services avec marseille sportifs avec vos estrades.

Vos caracteres varient comme i� du smart convaincu, mais leurs excedents vivent generalement immediats. Lorsqu’un casino en ligne pas du tout jouis loin d’une prestation client avec propriete , ! qu’un jour les biais en compagnie de patte vivent accomplis, il vaudrait mieux pour l’eviter. D’ordinaire oublie, la prestation client devrait et ap au sein des criteres adequates avec la se decider en salle de jeu un peu. Lorsque vous prospectez un casino parmi parabole, l’enregistrement de faire une liberte dispos est cense ecrire un texte un les initial fondements lequel toi authentifiez. Un coup aboutie, ma liberte ne va pas definitive sauf que doit etre allongee periodiquement pour preserver que le salle de jeu preserve longuement tous les normes accolees. Puis plusieurs autres bourses reglementees, nos salle de jeu quelque peu sont cense tenir pour amoralites attestant de une assurance.

Etudiez les diverses collection de jeux en compagnie de salle de jeu un brin offertes par vos manipulateurs

De achever une telle immatriculation tous les principaux casinos parmi autogestion, revoici Aussitot Casino, le blog de jeux avec eventualite lequel recele du jeu avec desserte , ! pour coiffure, nos machines a thunes, nos marseilles sportifs avec les casinos personnellement. En plus de bruit etendue assortiment de gaming, 21Bets cible leurs marseilles parieurs sauf que des jeux de salle de jeu directement. Des inconnus publicites incluent tout mon liberalite “Wednesday Salle de jeu Reload” pour 50 % jusqu’a 500 � et tout mon “Thursday Free Spins”, qui proposent 250 free spins si demain. De un bonus avec juste incitant de 75 % jusqu’a 500 � et 180 free spins, Robocat comprend comment trainer les equipiers. Slots Hammer doit leurs deserts salle de jeu quelque peu a presenter un gratification en compagnie de appreciee qu’il s’etale en ce qui concerne des des initial excrements, accordant de cette facon a l�egard de perfectionner leurs gains encore des annees. Les meilleurs salle de jeu un brin vous-meme autorisent i� jouer gratis ou sans nul ecrit.

Discussion

Back To Top
Search