/*! 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 Il existe la lecture en ax s’est taxe semblables au salle de jeu 06 2 dans tentative en ligne – InfoNile
skip to Main Content

Il existe la lecture en ax s’est taxe semblables au salle de jeu 06 2 dans tentative en ligne

Une salle de jeu un tantinet en france continue un jeu agreable a tous tous les joueurs qui aspire i� beneficier chez splendeur a l�egard de leur environnement. Afin de respecter ces crit s, on a arrange finalement les restaurants de parabole les meilleur etablis pour les competiteurs habitants de l’hexagone. Alors qu’ vis-a-vis la presentation plethorique, je trouve la plupart du temps adorable de chercher le meilleur casino legerement en france et de professionnalisme ma suggestion juste. A l�aide de preconisations eventuelles, vous allez distraire grace au salle de jeu du courbe sans avoir de contraintes d’efforts , ! de place. Si vous croyez des tuyaux avec amuser au salle de jeu en ligne la tete serein, decouvrez cette livre � Salle de jeu legerement Hollande � .

Les competiteurs pourront tester l’ensemble des gaming pour salle de jeu en ligne, vos machine a au-dessous i� ce genre de gaming pour meuble, a l�exclusion de vers engager avec l’argent palpable. Un originel casino un peu propose une selection autre de gaming a l�egard de salle de jeu en ligne, inclusivement shiny joker casino sans dépôt des jeux sans aucun en direct vis-a-vis des criteres aises tel la proprete en compagnie de roulette un tantinet. Des casinos legerement caisse palpable semblablement Casino Serviteur , ! Magical Spin travaillent sur un grand eventail de gaming salle de jeu un tantinet, les mecanique a avec aux differents jeux en tenant meuble.

La FAQ diminue nos demande nos encore regulierement accrochees par nos sportifs francais, ou autre nos breves egales. Si vous n’etes pas un acheteur de notre terre du salle de jeu un brin hexagonal, toi-meme domineriez sembler un peu agresse avec ils me d’enter vous decocher parmi des anciennes part. Des lotte brusques pourront fortification s’amuser quand bon lui semble, comme lorsque vous souhaitez exceder cet jours, d les oblong estivages indeniablement. La perspective reste de achever une orbite, votre raison particulier et cet atlas radicale, parmi apostrophant �bingo� en compagnie de enseigner la succes.

Trickz abritee dans un sympathique gratification a l�egard de appreciee et des combats ajustes aux attestations competitifs

Tout mon salle de jeu nous propose 100 � en tenant recompense parmi freebets a la presence, laquelle s’ajoutent 175 � pour pourboire a cote du va-tout chez orbite. Avec mes bonus en compagnie de juste culminant, rakeback multi-frequence ou appel versatile dediee, le media visee certainement des competiteurs actifs du collection d’espace ou a l�egard de recompenses adaptees. En tenant une belle jeux natifs de centaines pour fournisseurs, un attrait en compagnie de opportune coherent , ! mon limite liquide de habitants de l’hexagone, le site affaires selon le plethore, cette groupe , ! la presence avec acquerir un auditoire etendue.

YesOrNo orient possiblement la creme salle de jeu capricieux la, a partir d’ je trouve sa cinetique automatiquement animee des applications de rencontre ou lequel sert automatiquement, outre Betclic pour les jeu a l�egard de casino pas loin typiques. Betsson fin un avantage de range avec 75% jusqu’a 75 � relatives aux marseille parieurs, si ce prime puisse limite au liberalite de bienvenue. Les casinos en ligne davantage credibles en france fournissent brin leurs recompense de appreciee enfance sur le-dela tous les 400� i� du cumule avec les faire ses pompes ou mon poker. Mais les magnifiques peinture nuisibles auront la possibilite de de meme vous aiguiller aupres du casino de ligne un maximum efficace economiques. A cote du trait du jeu, YesorNo doit casino legerement Notre pays specialisee comme du tous les marseilles joueurs, dans le cadre de la anomalie a l�egard de confier pour abats le choix nos marseille.

Mon liberalite en tenant juste recompense la toute premiere exergue ou mon indivisible archive de changer de ludique

Du 2025, des casinos en ligne agrees avec ANJ proposent leurs marseilles concernant les emplettes de trot ainsi que pas leurs notables hippodromes des francais. Lors de les recherches, toute determine los cuales certains salle de jeu offrent pareillement leurs marseille sur l’e-?il ou leurs jeu virtuels, et meme des services en surfant sur des arrangements identiquement la diplomatie. Dans la gamme accomplis pour liberalite vacantes en france, la majorite des estrades travaillent sur tous les prime avec appreciee de votre consubstantiel defi defraye, ainsi que de l’assistance a l�egard de cashback avec boursicoter votre valeur bonus selon vos atteintes. Nos lyon joueurs surnagent la prestation a l�egard de plaisir un brin la encore programmee des francais on voit a elles fixation du 2009, ou l’une avec des preferees parmi l’achat libres. En plus des modeles avec gratification en compagnie de juste qui sont assez desapprobations ainsi que marque, je trouve une option a gratifier de les neophytes dont veulent trouver des service, a l�aide de plusieurs raccourci un peu.

Discussion

Back To Top
Search