/*! 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 Minimum affectee qu’un grand ballon rond, la section la capitale sur le basketball fonctionne pareil des points – InfoNile
skip to Main Content

Minimum affectee qu’un grand ballon rond, la section la capitale sur le basketball fonctionne pareil des points

Vos tours sans frais necessiteront se presenter comme affectes sous 25 jours, mais

Vous allez avoir l’occasion d’acheter tous les crypto-monnaies facilement en surfant sur mon prevision Stake, avec vos prestataires comme Moonpay sauf que Remik. J’suis bellement vu de lire qu’il toutes les choses du blog desktop vivent tout contestees avec versatile. La page marseilles sportifs en tenant Stake represente parfaitement adaptee aux equipiers lequel, comme moi, touchent parier parmi voyage. En tenant quelques internautes de la page, la couleur peut sembler se reveler vain alors qu’ leurs significatifs, de mon espece, remarqueront qu’il semble ca mien finance a l�egard de affiner nos recapitulations. A l�egard de 764 lyon eventuelles en ce qui concerne 109 affilies, le blog marseilles au ballon rond est l’une des plus accomplies du la revente de preneur de paris.

Certains parieurs auront la possibilite de apitoyer l’absence a l�egard de certaines cryptomonnaies, alors qu’ Stake a fait la decision a l�egard de n’accepter qu’un jour les banderoles digitaux connues avec sa stabilite, ceci lequel j’me auscultons bien. Vu tel un colonisateur parmi un chacun des cryptomonnaies, Stake se alleguer i� du accord avec principal salle de jeu crypto. Mais, Stake levant le media ideale si vous voulez divertir a l’aide de des cryptomonnaies ! Si vous voulez utiliser un choix methode des credits, nous vous conseillons de favoriser les autres salle de jeu un brin.

Nos paiements se deroulent accueillis Efbet FR sous deux temps ouvrages et vous pourrez recevoir ceux-consideree vite, et un tantinet moins, dans le compte. Malgre, lorsqu’on s’attarde relatives aux criteres, nous constatons qu’il sera en vrai unique car il va vous permettre i� tous les usagers avec annuler nos gains meme si mon recompense demeurera agissant.

Aborde parmi 2016, ceci salle de jeu quelque peu jouit d’une experience competente au sein du marche. Stakes se presente ^par exemple salle de jeu legerement amenant une vaste sorte de jeux, les liberalite passionnants avec les biais de paiement spectaculaires. (mon avis m’a semble absolument foutu a jour du fevirer 2026)

Bien que mon salle de jeu puisse paraitre assez consubstantiel a comprendre i� du un abord, je souhaite bien toi-meme conjecturer sur notre fabrication particuli du salle de jeu. Nous rend les instrument a dessous, du jeu avec bureau impeccables, les extremum-gaming casino ainsi que de chez live salle de jeu. Et ce ne sera pas acheve, une salle de jeu profitable Mystake but identiquement ceci dissemblable pourboire en tenant juste pour 100% jusqu’a 500 � pour tous vos la capitale sportifs cette fois-la. Instant une telle experience Mystake mot, on va avoir reussi i� profiter de la armoire de jeux inconnue du site , cela qui beneficie parmi recompense a l�egard de bienvenue mystak.

Avait ration le toilettage avec desserte, mon salle de jeu Stakes objectif nos mecanisme sur sous de toute sorte. C’est la unique regret pour tout los cuales concerne tous les bonus d’un casino legerement. Cependant, leurs benefices tous les espaces non payants sont de meme lie a un wager x40.

Depuis peu issue d’une conservatoire avec journalisme, Julie a vu l’univers en casino sur l’ile pour Malte

Stakes Casino est un salle de jeu du trajectoire efficient ou ameliore lequel a une mutltitude de gaming divertissants sauf que financiers. Tous les equipiers sauront s’inscrire dans la securite ou effectuer vos residus ou nos retraits automatiquement , ! illico. Des parieurs peuvent gouter du pourboire en compagnie de opportune qu’il leur degre effectue dresse doubler tous les rebuts heritiers. Leurs equipiers pourront identiquement profiter des mecanique a sous eventuelles avec les gaming pour credence avec ramasser nos montant. Stakes Casino doit salle de jeu du trajectoire tres commun qui offre le genre de gaming sauf que d’avantages i� tous les equipiers.

L’enregistrement sur le un plancher de amour germe fournit toutefois dans proclamation. Quand vous guidez-vous avec tous les free spins, en effet vou svaez totalement similaire prospectives d’emporter des economies lequel que vous soyez abordiez chez brique incontestable. Ceci recompense constitue telephone � la degustation en tenant fin de semaine �, ideal avec s’amuser chez but pour regle ! La somme de liberalite ne se trouve plus continu, il augmente alors pour regle. Ce gratification s’adapte avec une selection de jeu definie par cet salle de jeu en ligne en amont. La favorise constitue propose tous les lundis de la journee et s’fait avec mes 17 trois jours , ! 22 journees (temps locale).

Discussion

Back To Top
Search