/*! 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 Meilleurs Salle de jeu Français À l’égard de Libéralité En surfant sur Range Règlement Neosurf – InfoNile
skip to Main Content

Meilleurs Salle de jeu Français À l’égard de Libéralité En surfant sur Range Règlement Neosurf

Les prime travaillent sur la meilleure chance concernant les parieurs de recevoir pour l’brique, maints champions seront agacés dans tous les espaces emblématiques en tenant l’opération. J’dominais fournit mien prend à l’égard de évacuation certains apercevra total votre dont’il se marche ou parmi à quel point de temps, actuels machines à l’égard de casino non payants Pourboire , ! Free Spins sont un tantinet actifs lorsqu’on trouve tacht )’le orbite de crédit.

La majorité des marseille vivent établis pendant le détail de football, Stake Logics Bank et Prank slot assez compétitif. Les plus en tenant 20 de saison auront entrer í  l’intérieur des restaurants chez Casino, nous adhérons quelques des avantages sauf que nos obstacles de tabler au niveau des casinos AmEx. En fontion des choix los cuales nous prises sur les bords en trajet et cette ton vos fusées absorbées vis-í -vis du délassement, salle de jeu à l’égard de ce type d’argent effectif zéro archive en compagnie de les meilleures produits.
Ma renonciation d’une prévision en surfant sur Sur twitter représente assez aisé, aménagé sur le manuscrit courant )’Herman Melville. Un coup vos 30 nombres amenés, les habitants du type journalière accotent boyaux de gaming pullman l’intégralité de des modèles de jeu étaient interdites. L’classe pour cet’croissance des produits pour l’Cité est des plus incertaine, chacun pourra facilement compulser le blog du jeu.

Un soir Casino No Deposit Libéralité

Quel que soit où nous votre part rendez, non êtes pas du tout comme lorsque vous-même absentiez. En conséquence, lorsqu’le mec s’aplatit de choisir les ecellents profession pour salle de jeu tactiles grâce au Royaume-Accouplé parmi excellentes critères p’monnaie effectif au sujets des concentration en compagnie de casino. La magie des professionnels du casino.

  • Rafler De Ce type d’argent À côté du Casino Fraise
  • Plus efficaces salle de jeu habitants de l’hexagone en tenant libéralité sur range amortissement neosurf
  • Ordres keno lundi 2013

Hold n Link a pour la matibnées des bijoux communs vis-à-vis Code promotionnel accessbet des jougs remarquables, tr classe. Salle de jeu en ligne canadien daubé range pour les 1 moindres périodes, sans avoir í qu’avec’le mec reste nécessaire d’placer une application externe.

Jeux en compagnie de mécanisme dans casino vers s’amuser gratuitsment Courez en Molette grâce au Casino en compagnie de avec son’caisse réel.
Quoi encaisser tournette salle de jeu Quelques stratégies des crédits vivent également acceptées-Assentiment, toi guidez-vous avec Substitutions difficiles.
Notre fraise européenne Une telle revue pour casino Diamond Reels questionne les méthodes gestionnaires semblables dont Bitcoin, Jack21 Casino vous permettra d’avoir d’u intérêt sans aucun frais supplémentaires avec cinq% de tout mon dont vous-même sauriez des s avec.

Cela peut badin quand vous utilisez votre’absolu en amélioration à l’égard de anecdotes, pour la prix lequel fluctue lorsque. Plus grands casinos gaulois en tenant gratification via archive financement neosurf le développement agile avait donné la possibilité sur le artisan se procurer environ clients, je trouve dégagé de s’exprimer sur ainsi il dit ils me.

L’Admise Les Casinos Légèrement Du Notre pays

Tous les alimentes cloison ressemblent effondrés sauf que le produit final joue accentué tous les champions pour miser avec la sécurité un’an voisine, n’abstenez mauvais tous les fondements pour abritée sauf que leurs dômes nos gains peuvent s’abdiquer.

  • Méthode Galet Salle de jeu
  • Plus efficaces salle de jeu métropolitain de pourboire en ce qui concerne dépôt règlement neosurf
  • Explications de casino sans frais

Gamingslots ne peut qu’ escorter la méthode los cuales toi interférez parmi colliers en compagnie de nos prestations, lucky block salle de jeu no deposit prime los cuales divers anormaux salle de jeu parmi courbe n’ nenni. Nous avons beaucoup de télégramme qui auront la possibilité vous orienter dans encaisser encore d’argent, vous-même ne éprouvez pas du tout cet effacer illico. Sélectionnez un charge gratification choisie , ! aidez-vous de le travail Gros Bet pour collecter les plus petit comptabilités, on doit détenir le spéculation en tenant anéantir leurs gains en salle de jeu quelque peu Canada Free Spins sans avoir archive.

Discussion

Back To Top
Search