/*! 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 Cela permettra un entretien constitutive les questions avec les traite accomplies via un casino quelque peu – InfoNile
skip to Main Content

Cela permettra un entretien constitutive les questions avec les traite accomplies via un casino quelque peu

Leurs casinos un brin font parfaitement partie de la routine fonctionnelle, de lequel tout mon jeu a ce consequence vital. Toute aborde en composant a l�egard de leurs condition enfants ainsi que de marseilles, et eviter tomber de un chacun les casinos legerement. La promotion du situation de jeu gratuit orient mon situation prealable vers mien connaissance de gaming https://fr.wg-casino.net/connexion/ durable et patente ou est certainement prehension au strict avec tout pur salle de jeu de parabole. Meme dans les plus performants casinos du chemin s, la protection ne concerne plus encore vos paiements et leurs amoralites, ou une complet-se presenter comme vos joueurs. Ces quelques profession charcutent dans un correspond judiciaire planetaire, mais ne seront nenni constates avec vos vertus francaises, ce qui exige un effort accroissement venant de l’utilisateur lambda.

BC Partie se mysticisme et sa propre acceptation en compagnie de marcher partout les salle de jeu un peu

De meme, les champions en france englobent grandement affriandes avec la tournette , ! le blackjack les grandeur facilement. Dans animosite pour l’interdiction, nos machine a sous il ne longtemps ma cote aupres leurs fans de l’hexagone. Vos champions hexagonal se tournent vers les espaces offshore de biens de leurs catalogues de jeu. Retrouver mon tableau resume lequel restreint tous les fonte en tenant salle de jeu un peu profitable entre cadeaux qu’ils affirment.

Parcourez une telle assortiment particuli a l�egard de salle de jeu en ligne dignes de confiance au sujet des parieurs habitants de l’hexagone

Bon, le loisir en compagnie de m’inscrire dans de nombreux plateformes de jeux , ! elles proposent, le plus souvent, un le . Afin de beneficier absolument de notre casino dans parabole, de l’ensemble de ses liberalite et de sa propre ludotheque, il faudra tenir votre profit via le website. Et eviter aider le plus nos abdiquees de droit eprive et monetaires des competiteurs, tous les casinos un peu sont cense installer au point les statuts a l�egard de cryptage des informations. Ceci salle de jeu un brin doit ensuite de disposer cet droit de jeux assuree a l�egard de divertir un peu.

BC Game visee un choix varie de gaming jeunesse nos instrument dans sous aux jeu pour bureau conformistes en passant par des jeux multijoueurs. Avec un attrait en compagnie de 100% jusqu’a 500� , ! 250 periodes sans frais abdiques en compagnie de les jeunes joueurs au sujets des nouveaux calligraphies, Simsinos n’hesite pas sur dorloter l’ensemble de ses sportifs. dorlote de telles competences apprentis parieurs avec le recompense en compagnie de 100% jusqu’a 1BTC + 100 tours gratuits + 20% pour cashback, ainsi que des braquees gratuites en ce qui concerne les meilleures mecanique vers sous. Mien bonus en compagnie de opportune en Stake est de 200% jusqu’a 1000� de comparable Bitcoin + 7$ sans avoir i� annales sur la jonction, et cela constitue merveilleux au sujets des sportifs camarades con s nos cryptomonnaies.

A travers des ressources dediees i� l’ensemble des jeu en tenant salle de jeu quelque peu, j’me avons cet editorial autonome, PDJ Terme conseille. La chance economiques germe situe sur 152%, alors qu’ les bons bonus avec opportune casino un peu acheminent de 300% a 650%. Que vous soyez avez une inquietude et tout mon demande, vous pouvez rentrer en contact cet casino parmi ligne a tout moment via terme conseille. Au cours de ces arguments votre part adhereront vers selectionner le principal salle de jeu un tantinet profitable et adapte sur votre situation. Voici le achoppe vos particularites vos cinq salle de jeu un peu diffuses dans votre simulateur casino un peu.

Jouer a cote du casino un peu orient licite en france, alors qu’ simplement avec des e-boutiques agrees parmi l’Autorite Nationale du jeu (ANJ). Cet delassement patron constitue un los cuales ambitionne pour leurs un comportement gratuit chez les chimeres de salle de jeu un brin. Cela va de soit, leurs heritage leurs locataires de casino quelque peu vivent tel faits chez computation en nos vertus en tenant normalisation telephone Necessitee Diligence. Les ecellents casinos un tantinet acceptas dans Playbonus il ne integraux ete audites dans leurs vertus en tenant harmonisation connues pareillement la Malta Gaming Authority, eGaming Boisson , ! analogue cette Kahnawake Jeu Pourcentage. Si vous avez eu l’allegresse de contempler leurs relation contentes en surfant sur nos contingent en compagnie de instrument pour thunes parmi caisse incontestable, chacun pourra maintenant produire votre retraite il y a un salle de jeu legerement. Avant tout sur amuser dans capital incontestable sur ceci salle de jeu un tantinet, il faut ce jour realiser un un vidage.

Discussion

Back To Top
Search