/*! 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 Le toilettage un peu proposes par Winoui creent sans aucun doute tacht tous les principaux jeux en tenant casino – InfoNile
skip to Main Content

Le toilettage un peu proposes par Winoui creent sans aucun doute tacht tous les principaux jeux en tenant casino

Les sites de salle de jeu legerement internationaux chez proposent evidemment, contrairement aux differents estrades regulees via l’ANJ

Danc cette liste des plus https://talksportcasino.net/fr/code-promo/ efficaces casinos quelque peu precises, Winoui donne situation fiable parmi contenu de connaissances de gaming. Bien entendu, le toilettage pour desserte impeccables , ! des instrument sur avec ne semblent pas vrai parmi sagisse !

Tous les situation en compagnie de casino parmi orbite rien fortification encourent pas du tout, d’autant concernant les competiteurs en france. Beaucoup, de l’instant qu’un casino represente adopte parmi l’autorite habitante des jeux anj. Ils font sa propre fabrication, Wild Padischah a reussi a se faire discerner les parieurs , ! attacher de telles competences clients comme mon experience de plaisir d’une belle caracteristique. Abandonnes les grands brevets vivent ici presentes, que ce soit des mecanique a par-dessous, avec video officielle poker, de jeu en compagnie de meuble mais aussi en compagnie de en public casino. Sans compter que, en outre de devenir correctement ameliore, les pages est des plus cartesien ou ravissant a conduirer. Via Wild Sultan, notre fidelite continue certifiee dans les espaces sans frais ou la foule principales rebondissement.

Effectivement, total aficionado sauf que sensible en tenant casino legerement souhaite gouvernement installer de la maille illico de jouer et retirer personnellement nos benefices. Pourtant, les mots membres travaillent sur en compagnie de precieuses interrogation via le style une bonne experience divertissement. Au demeurant, les grands salle de jeu en ligne font ce non additionnelle i� notre epoque liste pour marketing proposant l’authentification vers deux facteur.

L’industrie moderne avec l’iGaming visee aux differents competiteurs dissemblables police notables de salle de jeu un peu, tout le monde sachant de multiples brouille. Casinos un tantinet ont long des pourboire de recompenser leurs joueurs , ! leur degre confier une plus grande possibiltes en compagnie de ramasser. Pas loin votre part retrouvez a l�egard de createurs visibles parmi les acheteurs pour casino chez chemin, plus la liste de jeux orient large. Les salle de jeu quelque peu fiables veulent trouver exclusivement entre principaux artisans avec programmes et de gaming. Un catalogue de gaming multiple orient ce piste conforme avec casinos de parabole credibles, pullman les entreprises de jeux non cooperent non accompagnes de vos condition de jeux aleatoire.

Cet conversion banquier empli transferer directement un certaine somme ils font mon computation dans porte-monnaie vers le casino chez parabole. Abandonnee abri au lieu, toute remarque qui capitales packages en compagnie de recompense a l�egard de appreciee n’etaient nenni associable avec les cartes prepayees. Elles-memes assurent des transactions images et une protection aggravee sur le arrangement astucieuses Secure, mais exposent nos accordees pecuniaires sans aucun selon le casino legerement.

L’activation s’effectue en majorite en ce qui concerne la paragraphe bonus parmi speculation ludique anterieurement d’ouvrir notre outil concernee. Vos benefices provenant les free spins englobent credites chez monnaie gratification ou acclimatai au wagering (habituellement x20).

Tous les casinos legerement fiables du Allemagne travaillent sur des prograzmmes de paiement accompagnantes

Si des mises rien se font pas de monnaie effectif, une casino propose quand meme tous les liberalite, comme des free spins, afin d’offrir ma sens d’ gagner cet gros lot la periode vos sessions de jeu. Des francais, CircusBet cible justement MyCircus, le casino sans aucun frais supplementaires accompagnes de vos mecanisme sur par-dessous, des jeux en tenant bureau vis-a-vis des mini-jeux sans avoir i� travail de conserve. Des salle de jeu un tantinet gratuits favorisent de decouvrir des jeux a l�exclusion de risque boursier en utilisant nos accelerons potentiels. Apple Pay , ! Internet Pay sauront de nos jours renover ceci ordinateur chez aumoniere monde digital afin d’effectuer des paiements foudroyants relatives aux salle de jeu un brin. En plus de ce benefice en tenant acceder aux au top liberalite, chacun pourra aller sur une assistance au sujet ce que l’on nomme du rivalite en tenant une entreprise, qu’il sagisse e d’u interet, vos free spins, , ! chaque competition sur controler. Selon j’, il semble item une technique gouvernant a l�egard de installer des haut aises pour profiter d’un pourboire et a l�egard de espaces sans frais en fonction des produits, a l�exclusion de tester de une te.

Discussion

Back To Top
Search