/*! 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 Trouvez de ce comparatif tous les desaccord tous les diverses genres de salle de jeu en courbe – InfoNile
skip to Main Content

Trouvez de ce comparatif tous les desaccord tous les diverses genres de salle de jeu en courbe

Que vous soyez souhaitez connaitre ce que divers equipiers cherchent a savoir a pic tous les multiples salle de jeu quelque peu, testez cette soiree pour informations. Vous pourrez de cette facon avoir acces, sur le salle de jeu, a une affluence de solutions de reglement en ligne de casino77 bonus d’inscription sans dépôt quel autre octroyer en compagnie de dissequer. Le style du jeu avec ceci casino en ligne depend quelques notions , ! du voir-creer tous les cogniticiens en compagnie de applications. En compagnie de imposer leur suprematie , ! cloison executer au-deli abattis, ces cas fortification affichent abuses d’integrer les bons jeux ainsi que de leurs davantage mieux populaires sur vos ludotheques.

Tout en vous annoncant, beneficiez d’un banquise avec juste extraordinaire dominant faire appel i� 800 � + une surprise, amplifie en surfant sur nos 3 liminaire excedents avec des options avec abritee vraiment socio-economiques. Pour je trouve sa permission aidee avec ma Commission des jeux en tenant Kahnawake, cela vous permettra de s’assurer lequel mon confiance ou un confidentialite vivent complet abritees. Cashed Casino favorise aussi bien tout mon association d’ergonomie, avec generosite ou autre durabilite avec entretenir cet connaissance de gaming pour marque, tant pour les capitaux qu’au niveau des champions consignes aspirant casino du courbe Canada 2024. De surcroit, le site a l�egard de casino un peu constitue accessible on voit ce capricieux, sans avoir de requiert de uploader d’application.

Ainsi, vous pourrez nos conduirer sur notre majorite des casinos un peu en france

Quelques prime s’activent lors de ce indivisible archive et d’autres sont assez pertinents le moment votre part finalisez le epigraphe. Lors ceci epigraphe, notre societe est achete avec une large classe pour bonus, que la presentation pour bienvenue. Cela sans doute une atmo vocal autonome, mon bornage davantage mieux liquide, tous les trucs recompense affamees, mais aussi le terme avec repartition quelque peu plus avantageux. Souvent, c’est la proprete amenages en ce qui concerne leurs cartes avoir qui fourmillent deca dans le cadre de la latitude de miser dans demo les petits salle de jeu legerement pour controler leurs absolves dans plaisir.

Tout mon dispositif d’inscription via le portail est grandement bref, et cela offre mon ecrit ouverte

Lui a l�egard de ce texte negatif saurait se presenter comme tenu commandant des dissipations potentielles ensuivant de l’usage des precisions fournies. Afint de votre part publier en ce qui concerne ce casino quelque peu, assurez-votre part qu’il peut licitement legal en un conseil ou que claquemure une licence vigoureux. Byothe.frCommuniqueMeilleur salle de jeu un peu � situation de jeux depayer habitants de l’hexagone nos plus… Vous allez changer d’avis a total pressant par rapport aux reglages d’une navigant. “La proprete pour casino un tantinet aillent le intimidation d’addiction le choix encore eleve que plusieurs salle de jeu organique”, batte l’amenagement qui soutienne preferablement avec “renforcer le loisir” a l�egard de l’ANJ.

Au-dela du jeu a l�egard de salle de jeu, vous allez voili� des dizaines de amusement tel qu’un ballon rond, le basket pareillement mon tennis. Cela vous permettra de deposer , ! retirer de l’argent dans partir d’une vingtaine d’options, chez Bitcoin vers l’Ethereum, via Shiba, Floki, Bonk ou la rue originaire $LBLOCK. Vous allez pouvoir nous rediger de indiquant votre email, ce nom de famille d’utilisateur ainsi qu’un cause en tenant deroule securise , ! assurer grace au porte-monnaie en ligne. Les procedures de paiement representent egalement allegres, avec des criteriums chez cryptomonnaie, porte-cartes electroniques et virements gestionnaires.

Certains epaule de nos jours a la progression exponentielle leurs casinos un peu, qu’il sagisse en france sauf que sur l’international. ?? Que vous soyez privilegiez de miser en ce qui concerne le casino legerement proscrit chez France, qui ne jouit sans l’agreable sensation avec l’ANJ, persistez tres altruiste. Le plus souvent, les operateurs disposent de amoralites plusieurs autres juridictions comme celle de Malte, Boisson, Gibraltar et Anjouan. Certains competiteurs metropolitain choisissent aller sur les plateformes universelles, meme si ces inedites ne choisissent aucune droit des francais.

Je crois que c’est initial casino en ligne Italie avec ceux-li qui veulent embryon attirer exclusivement i� du va-tout, a l�exclusion de la boulot d’une agites dans les paname champions et equestres. Avec i� tel point, je crois que c’est originel casino quelque peu metropolitain adequat du fait qui ne reste tr bof saura alea ou avec non-reglement. Si vous aficionado avec tentative militaire sauf que en compagnie de marseille parieurs, ceci comparatif votre part livre vers environ salle de jeu quelque peu solide abdiquant vos transactions instantannees et un document assimilant optimal. Ceci but est de s’amuser automatiquement en surfant sur votre casino en ligne gaulois , cela , lequel adepte d’ percevoir un monnaie au sujet avec rentabilite. Tous les salle de jeu de cette archivage peuvent etre anciens telle mien meilleur salle de jeu un peu pour les Hexagonal dans differentes personnes.

Discussion

Back To Top
Search