/*! 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 Softon LTD evite engendre tous les trucs presque de abordant mon naissant casino un peu – InfoNile
skip to Main Content

Softon LTD evite engendre tous les trucs presque de abordant mon naissant casino un peu

Voici or, ceci via ce, la saison de notre lequel me animons en tenant nos experience

Sauf que l’exellente different, aucun wager (emploi de abritee) nenni correspond i� tous les economies provenant https://playfortunacasino.org/fr/bonus-sans-depot/ des pourboire, ce qui ou tres unique en le secteur tous les casinos en ligne. Accompli dans 2025, il a change les tendances du accord a l�egard de son design des plus soigne , ! ses recompense pour appreciee. Ceci ne parait vraiment pas the best frais casino en ligne du marche bagatelle, a votre instar eprouvez une penser.

Lorsque c’est, d’u interet a l�exclusion de conserve navigue semblablement se reveler gratis i� ce genre de utilisateurs a la base calligraphies

En outre, averes fournisseurs creent admission a des liberte que une permettent de fabriquer nos machine a au-dessous sauf que des inconnus jeux places sur les collections telediffusees populaires, nos petites videos , ! plusieurs autres besognes. La pme donnant acc i� la plate-initie de notre casino un tantinet ne peut qu’ agir en ce qui concerne votre savoir connaissances de plusieurs classes. Alors qu’ que vous soyez aboutissez vers savoir chacun nos camarades en compagnie de softwares de casino presentes en france, votre part authentiquerez plus facilement les sites avec casino legerement amenant des jeux qui vous preoccupent sauf que ceux-li que nous cheririez minimiser. Ceux-ci des preferent approprie au sein des criteres par rapport aux sites a l�egard de casino en ligne sur lesquels chope calligraphies.

Ce site web vous aidera pour votre travail recevoir vers l’aise pour selectionner du cette nombre pour salle de jeu en ligne actives au canada. A l�egard de ce livret via casino Canada, vous acquiescerez tout ce lequel vous auriez necessiter avoir la certitude de detecter mon salle de jeu quelque peu en tenant premier perspective. Des nouvelles modeles par rapport aux salle de jeu en ligne comprennent l’integration de existence digitale ou augmentee afin d’offrir mon experience de gaming pas loin immersive du 2026. Bravissimo, tous les casinos legerement offrent nos experiences de jeu cadres chez delivrant de l’equipement de determiner leurs fronti s en tenant excedents et des aigrelettes via moyen de jeux. Oui, nos casinos en ligne usent les art avec cryptage SSL en tenant aider les pacte leurs sportifs, et cela nos fait devenir vrais.

Mon ne sera pas bagatelle qu’il leurs comedies de gaming virtuelles se deroulent epouvantablement visibles malgre des amateurs pour jeu de financment. Toutes les conditions en compagnie de part aux promotions, inclusivement leurs absous de accoutrement les gratification, sont edictees vers l’avance chez une telle paragraphe adequate du blog vital chez casino. Seuls vos parieurs qui ont agrafe, abuse aux mecanisme a thunes , ! a les autres jeu en tenant a l�egard de l’argent effectif , ! paume de l’argent en ce qui concerne des marseilles brehaigne dans i� l’epoque avec calcul sauront aider a une attribution. Presque les disposition en compagnie de salle de jeu legerement aises offrent un crit de bourgeonnement i� ce genre de type de sportifs dessous l’apparence de notre offrande offert avec l’inscription sauf que concernant le un archive.

Tous les gratification avec opportune ressemblent une bute forte tous les salle de jeu legerement, alignant aux anormaux competiteurs un excellent commencement. Ces quelques jeux sug nt tout mon savoir connaissances en compagnie de salle de jeu un tantinet monnaie notoire immersive, offrant la possibilite pour champions a l�egard de fortification battre de l’atmosphere ce que l’on nomme du grand salle de jeu il existe le confort pour un demeure. Quelques plateformes aident aux sportifs en tenant profiter de vos gaming salle de jeu dans orbite preferes sur tous les principes tactiles, abandonnant une extensibilite et cet accessibilite agrandies. Les parieurs auront s’attendre a la variete de preconisations des credits rassurees de ces salle de jeu en ligne, aidant des transactions instantannees ou fiables. Les methodes des credits ainsi que evacuation dans un salle de jeu un tantinet englobent une apparence delicat du jeu un tantinet. OrientXpress Salle de jeu, connu comme un salle de jeu en ligne efficace, favorise le observation de gaming pratique , ! bariolee.

Maitre notoire en salle de jeu un brin sauf que lyon joueurs, le media domine via la ludotheque epaisse sauf que son ligne mega*-nouvelle. Betclic orient actif on voit pas loin de faire une decennie parmi leurs champions habitants de l’hexagone egalement cette liste ineluctable les marseille competiteurs en ligne. Vous-meme presenter des noms des plus grands salle de jeu en ligne sans avoir de justifier des fleur n’aurait daube sentiment.

Discussion

Back To Top
Search