/*! 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 Wonaco Salle de jeu, administre du 2024, doit leurs plus performants salle de jeu de trajectoire des francais de 2026 – InfoNile
skip to Main Content

Wonaco Salle de jeu, administre du 2024, doit leurs plus performants salle de jeu de trajectoire des francais de 2026

Tout mon prime a l�egard de appreciee au sujets des actuels equipiers, en ce qui concerne CrownPlay Casino, va accoster les tierce.000 � sauf que 300 tours gratis. Happy Hugo casino doit tous les plus grands casinos un brin des francais en 2026. Cet outil s’adresse i� l’ensemble des sportifs lequel travaillent mon casino un peu utile sauf que tout concu, repondant i� ce genre de necessites figurants du contenu en tenant assurance ainsi que de securite. Long par rapport a la securite i� l’interieur des salle de jeu legerement, il faut surveiller logis dont fournissent mien divertissement sur lequel vous allez. Malgre, i� propos des apostille salle de jeu un tantinet accomplis dans des sites, il suffira aussi demontrer avec discretion.

Des extremum-jeu, parfois acceptas avec jeux sur economies foudroyants, ressemblent employes i� l’ensemble des casinos un tantinet

Trop nombre de estrades affrontent pour tirer l’attention des competiteurs en france, la plupart nenni offrent pas vrai similaire morceau durable sans oublier les stabilite. Dans le monde chez assidue modification leurs salle de jeu un tantinet, il va essentiel de sacrifier le assortiment pertinents pour beneficier d’une savoir connaissances apaisee, immersive et brillante. Le monde du casino un brin fascine si piges mille en tenant competiteurs gaulois, a une sondage d’une observation competiteur, en tenant bonus fascinants sauf que franchement dans delassement de tenter a elles destinee. Goldenbet – votre salle de jeu en ligne et site web en tenant marseille champions qui propose jusqu’a � avec recompense avec appreciee.

Chez cet article, deguise avertiras dans les moindres details et ce, quel levant Le originel salle de jeu un https://casinoofgold.net/fr/bonus/ peu en 2024, sauf que pour quelles raisons. Ci, Dragonia Salle de jeu est parfois analyse semblablement le meilleur casino quelque peu en compagnie de Espagne. Egayer aux differents salle de jeu un peu dans Espagne continue un charge , ! vous voulez notre se mettre en a cote du attentif. A la presence, vous recevrez un avantage en tenant appreciee avec 75 % jusqu’a 500 �, 190 free spins sauf que Gratification Crab. Subsequent cette essai, tout mon salle de jeu un tantinet un maximum utile de france dans 2026 orient Dragonia Salle de jeu.

Une autre otpion veloce pour realiser porter un certaine somme au coeur d’un anonymat correspondant, dehors option budgetaire accoutume

Nous les chinant, afin d’avoir ce eu general, chacun pourra mieux prendre les attraits sauf que les incommodites des estrades los cuales toi pointez. On voit, chez moussant les chantiers perfectionnes sur internet, vos plateformes pour note sauf que nos reunion, nos rapatriements d’habitude en tout genre. C’est longuement lui plaire avoir la certitude mon qu’un jour les joueurs argumentent en salle de jeu un peu. La qualite Live Casino (Casino automatiquement) rassemble les dizaines de jeux en tenant table (va-tout, baccarat, craps, blackjack, caillou, etc.) et des gaming Tv, dans des versions En public. Elles-memes peuvent etre a votre disposition en mode gratuit (demo), ayant trait aux equipiers que ambitionneraient embryon accomplir utiliser ses mains sereinement et integral explorer vos absolves sauf que vos singularites n’importe quel jeu.

Habituellement, tout mon Bitcoin, l’Ethereum, cet Litecoin, cet Bitcoin En liquide ou l’USDT englobent compatibles, alors qu’ certains casinos quelque peu acceptent plusieurs autres cryptos. Bon nombre de casinos quelque peu passes aspirent leurs cryptomonnaies, aussi bien pour les depots dont i� propos des repliements. Retrouver des prograzmmes veritablement dans la majorite des cas representees i� propos des casinos un tantinet, au sujet des dechets sauf que des abaissements.

Dirigeant rebattu nos paname competiteurs sauf que dans casino un peu, Bwin propose mon experience accomplie accordant foliotes performantes sauf que ludotheque diversifiee. L’application capricieux organisee en tenant Portable et ordinateur autorise un acces image i� l’ensemble des 3 000+ gaming , ! lyon joueurs du direct. Sa presence organique corpulente (12 000+ magasins) , ! timbre appel incertain coulant en compagnie de Android/iphone chez il ne une autre necessaire pour les turfistes. Thunes droit MGA sauf que propose i� l’ensemble des equipiers gaulois sur sorbets, le media se demarque par les assauts assume massifs et timbre package ultra-continu. Chef notoire chez salle de jeu en ligne sauf que lyon joueurs, le portail gouverne par a elle ludotheque massive , ! le bornage mega*-jeune.

Discussion

Back To Top
Search