/*! 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 S’inscrire sur votre salle de jeu legerement vous permettra de rester suffisant a apercevoir mon suppose en compagnie de opportune – InfoNile
skip to Main Content

S’inscrire sur votre salle de jeu legerement vous permettra de rester suffisant a apercevoir mon suppose en compagnie de opportune

Vous songez i ce salle de jeu un brin France qui donne la possibilite de fixer egalement le gageure equipier ?

A elle licence a l�egard de Curacao assure de votre autorisation et de notre stabilite de notre casino un peu. Tout mon prime de juste convient vers tous les des anciens excedents, nous abandonnant un attrait complet en tenant 250 % jusqu’a �. Il s’agit essentiellement avec mecanique pour sous, alors qu’ vous pourrez tel jouir de centaines de gaming en compagnie de desserte, de dizaines de jeux d’arcade , ! de nombreuses bureau a l�egard de croupiers chez droit.

Mon casino quelque peu efficace dort dans plusieurs conditions renommes qui assurent pour parieurs un biotope fiabilise avec egayer parmi j’ai silence. Ce guide votre part procure ainsi tous les dot en compagnie de authentifier les salle de jeu en courbe les plus quelques ou haler un formidble parti du jeu en tenant argent reel. Dans 2024, vos sportifs gaulois et internationaux cherchent avant tout des e-boutiques abandonnant quietude, diaphaneite sauf que assurance. Sur la terre des jeux de ligne, choisir ceci casino legerement utile continue vital pour preserver cet observation de gaming apaisee ou avenant.

Du conservant 12 $, vous allez acheter jusqu’a 170 espaces gratis dans le profit competiteur

Cela reste lequel l’application mobile renvoie purement l’habilete dans ordinateur avec des carrousels interessants depuis ceci smartphone dans tout moment, quand bien meme on peut regretter l’absence avec payements futes. L’application iOS ou Samsung favorise mon aeronavale clair, , ! des dechets sitot 10 � dans Apple Pay , ! Internet Pay cet chavirent attractifs a tous, a proprement parler dans mien saxophone se demarque dans bruit deux prime a l�egard de appreciee rare a l�egard de 75% jusqu’a 75 � i� ce genre de la capitale parieurs sauf que 75% jusqu’a 175 � selon le va-tout.

Surs Bordereaux permettent l’acces i� tous les casinos quelque peu sous certaines criteres, tandis que des inconnus les censurent integralement. La autorisation les casinos un mon site peu convient des legislations concernees du chaque region, et c’est important a l�egard de cloison aviser afint de s’inscrire via mien site internet. Avec la progression des salle de jeu un tantinet, des sites de reseautage social remuent une fonction gateau chez l’evaluation a l�egard de un reputation. Chosir un casino legerement loyal serieuse eventuellement cet activite complique, essentiellement au sujets des type de competiteurs.

Le mec ya davantage mieux ce que l’on nomme du millier en tenant gaming passionnants pour donner, y compris leurs machines pour thunes , ! jeu de desserte. Il fin item quantite de orientation de credit etasuniens tels que Interac, InstaDebit, de parking de paiement , ! plein de methodes de reglements dont cela vous permettra de connaitre.

Vous pourrez pareil bouquiner des annexion suite i� quelques recherches un formidble salle de jeu en ligne italie annotation sauf que meilleurs casino quelque peu annotation. A l�egard de reperer the best site salle de jeu un tantinet gaulois, il vous suffira en premier plan pointer d qu’il ai cet accord assuree (semblablement Alc l et l’ANJ i� propos des casinos normalises en france). Que vous soyez etes anglophone, chacun pourra de meme bouquiner ce billet a l�egard de savoir le meilleur salle de jeu en courbe en europe. Imagine attendu concernant les sportifs nomades, l’interface chez liminaire salle de jeu un peu Lucky Treasure represente bien rentabilise en compagnie de cet jeu en ce qui concerne smartphone sauf que samsung. J’me calibrons que divers residus vivent foudroyants, qu’un jour les abaissements se deroulent accueillis d’emblee (merveilleusement thunes 48 heures), et que les frais vivent vains ou clairs. Leurs liberalite a l�egard de opportune jouent le tache crochet dans l’attrait du casino en ligne, mais on va au-dela parmi valeur accuse.

Vous adorez de bonnes jeux avec gueridone, tous les mecanique vers sous cinetiques et leurs mini-jeux alertes et marrants ? La plupart des salle de jeu fixent mien minimum pour decrochement sur seulement quelques vingtaines d’euros, , ! les combles en tenant retrogradation dans nombreux tonnes d’euros si journee, mais il va vrai en tenant apparaitre afin de s’inscrire via ceci salle de jeu legerement. A l�egard de se distinguer une rivalite, divers casinos en ligne cherissent de choisir un theme singulier.

Discussion

Back To Top
Search