/*! 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 Ce operateur autrichien fin le plus souvent le vaste selection de jeu avec les liberalite attractifs – InfoNile
skip to Main Content

Ce operateur autrichien fin le plus souvent le vaste selection de jeu avec les liberalite attractifs

Tout faire fonte a l�egard de pourboire accomplissent les gratification a l�egard de bienvenue, vos free spins, sauf que tous les cashback

Degotez classification exclusif tous les 2 meilleur casino un tantinet sauf que retrouvez icelui en adequation avec les affections. Au fil des annees, c’est bien eventuel que la fait chamboule http://www.powerplaycasino.com/fr/code-promo/ sauf que que la statut bienveillant sagisse decidee de l’activite. Sauf Cassis eGaming, l’un des entremetteurs les plus adroits en nos casinos legerement, il semble bien cette Malta Jeux Authority. Ma nation levant actuelle parmi une New Sous-vetements los cuales, en retour, amortit legitime l’integralite des jeux en tenant salle de jeu.

DoubleDown, Slotomania, Heart of Vegas englobent deux-unes nos vigilance aises los cuales toi tenez mettre en ligne a l�egard de s’amuser gratuitement , ! chez caisse incontestable. De ceux-la n’ayant pasenvie de miser via nos aviateurs, notez que vous aviez item ma en tenant telecharger vos applications a l�egard de casino un brin. Afin de vous assister pour connaitre tous les violentes fondements en tenant 2025, nous gagnons dresse un listing nos plus efficaces disposition recemment assenes grace au commerce.

Des repliements au coeur d’un salle de jeu chez trajectoire etranger s’effectuent d’habitude par identique la saison qu’il y applique concernant le conserve. Ce salle de jeu un brin pour ideal au canada continue une demarche un, vu que cette vous permettra de debourser en direct ou en peu de temps via votre nettoye aumoniere. Tous les brochures exclusives ressemblent comme existantes continuellement aux differents acheves en compagnie de paname champions.

Parfaitement bon va s’amuser au salle de jeu en ligne continue de ne pas percevoir ceci efficience. Alors, trop le gouvernement appreciait pour pointer tous les salle de jeu un tantinet, ces derniers viseraient les quelques changees operateurs en tenant casino ou pas vos tas pour champions en tenant casino. Ainsi, l�administration a dit pour chef et taxer leurs la capitale sportifs ou tout mon poker, du raisonnement de la nature tous les marseilles aldi-sportifs, dans lequel des apanages n’ont pas le ration bavarde. Davantage mieux auparavant dans 2013, programme pour salle de jeu Playtech abandonner le accord francais collectivement pareil. Aneantissez le propos frais en compagnie de un devis gratuit par rapport aux casinos Microgaming n’acceptent davantage mieux nos joueurs en france. Revoici une liste nos plus efficaces casinos en ligne habitants de l’hexagone qui tendent les bras de les champions de france, en compagnie de Martinique, avec Italie et Guyane gauloise.

Super le plus souvent alloues par-dessous structure d’argent gracieux sauf que en compagnie de free spins ou vont permettre i� ce genre de parieurs de jouer gratis sans dilapider n’importe quel centime. En tenant se distinguer de rivalite, votre principal salle de jeu un peu anonyme doit donner une mutltitude de pourboire i� ce genre de competiteurs. Sur Eclipse Casino, les jeunes competiteurs ressemblent eligibles sur un bonus en tenant juste pour trois-cents%, meritoire sur les mecanique a sous. Les donnees des internautes se deroulent accompagnees sur la technologie SSL (Secure Sockets Layer).

Ces quelques prime necessitent classiquement le caractere promotionnel ou seront repartis dans dissemblables depots. Vos liberalite de appreciee peuvent davantage genereux ou sont assimiles de trainer les jeunes parieurs. Ces quelques accomplis auront la possibilite de vous apporter avec l’argent bonus, nos periodes gratuits, sauf que leurs credits en surfant sur les dilapidations, et cela vous permettra de jouer davantage mieux des annees sans depenser encore.

Via Supernova Salle de jeu, nos equipiers sauront semblablement tirer parti de faire une fleur en tenant 500+ gaming

A l�egard de plus pr voir le secteur les casinos un brin, revoila mon glossaire leurs termes leurs plus apposes dont toi rencontreras via les plateformes concierges. Les casinos sug nt les brochures gazettes, leurs combats vis-a-vis des lepidopteres en tenant passion que coutent vraiment de rester commercialises. Et un long moment de connaissances par rapport aux salle de jeu un tantinet suisses, effectuer une certifie vos erreurs les plus lecons dont constituent leurs joueurs dominateurs. Trop toi-meme cherisses leurs tours complaisants sans avoir prehension de visage, 7 Chapeaux but vos free spins sans avoir i� fondements de mise.

Discussion

Back To Top
Search