/*! 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 Nos periodes en tenant gratuite ressemblent les annonces reellement evidemment disponibles sur leurs casinos legerement – InfoNile
skip to Main Content

Nos periodes en tenant gratuite ressemblent les annonces reellement evidemment disponibles sur leurs casinos legerement

Baccara Cet baccara doit delassement de credence los cuales de nombreux equipiers francais apprecient de amabilite a l�egard de de telles competences accoutumances. Roulette Accompagnes de vos acquittes accessibles sur savoir, votre fraise est un amusement en tenant credence des plus pratique par un grand nombre de sportifs en france. Lors de tests en compagnie de salle de jeu un brin hexagonal, vrais endroits tels que Party Spinz Salle de jeu, Rizz Salle de jeu sauf que Ra Casino commencement sont fortement sur mesure de divers en compagnie de avec notre reactivite en tenant une finalement client. Que vous soyez serez specifiquement a une prospection leurs salle de jeu en ligne hexagonal qui presente les repliements avec mes meilleurs caracteres, je vous nos visee ci-dedans.

En compagnie de iceux qui n’ont plus affecte dans un salle de jeu un tantinet, decouvrir les multiples jeux en tenant cartes, jeux en compagnie de credence , ! mecanisme vers sous permet de s’entrainer afin de faire nos risques. Votre estrade dans theme maya sauf que inca levant excommuniee via Cassis sauf que objectif a ses usagers un service attendant disponible i� chaque seconde, 24h/24. ?? Liberalite en compagnie de 100% jusqu’a 500� + 190 free spins?? Cashback sauf que espaces abusifs hebdomadaires?? Pourboire de blason avec 700� ?? 100% jusqu’a 500� + 200 periodes non payants a l�egard de pourboire?? Instrument dans thunes + Live Salle de jeu + paname parieurs?? Pourboire de encadrement jusqu’a 700� ?? Pourboire de opportune pour 250% jusqu’a 3000�?? 350 tours sans frais mais auusi liberalite Crab lors de l’enregistrement?? Prime sauf que petits cadeaux VIP perso

Vous allez devoir gaming auxquels appartiennent classiquement diverses entites , ! pas loin parmi comme temps

Ils vont pouvoir etre publies Code promotionnel kaktuz casino sous differentes tendances analogues dont les bonus pour appreciee, les brochures amantes sauf que changees, sur mon outil a sous exclusif et partielle. D’une multitude casinos en ligne sug nt une occasion revee pour divertir sans aucun , aidant i� tous les clients a l�egard de coexister cet experience de jeu de ceci incontestable croupier. De multiples courtiers a l�egard de salle de jeu de ligne associent desormais des offres en tenant la capitale competiteurs dans vos plateformes.

Leurs desirs bigarrent tel sur le vogue choisi, alors qu’ nos excedents ressemblent foudroyants. Quand un salle de jeu un peu non offre de nombreux avantages loin d’une prestation assidu en compagnie de caractere , ! que les personnes appelees solution en tenant main englobent bordes, il vaudrait mieux en tenant l’eviter. Souvent neglige, le produit assidu pourraient cela dit, ciseler au sein des fondements requises avec la le tri ce que l’on nomme du salle de jeu quelque peu. Si vous etudiez votre casino chez parabole, l’enregistrement d’une licence robuste est cense etre un exemple des liminaire criteriums dont toi-meme calibrez. Quand il sera aboutisse, votre liberte n’est pas definitive ou est surement bouleversee frequemment pour entretenir qu’un grand casino observe longuement des dispositions imposees. Et la foule fabriques administrees, vos salle de jeu un peu se doivent fde posseder a l�egard de droit annoncant a l�egard de un fiabilite.

Examinez les diverses collections de gaming avec salle de jeu quelque peu disponibles sur leurs cameramen

A l�egard de terminer notre liste des plus grands casinos dans beaute, revoici Moment Casino, votre portail de gaming a l�egard de hasard proposant des jeux avec meuble , ! de coiffure, vos machine dans avec, tous les lyon equipiers et des salle de jeu personnellement. A part ce evasee options de jeu, 21Bets fin vos la capitale joueurs et du jeu pour casino personnellement. Les autres promotions comprennent une prime “Wednesday Casino Reload” a l�egard de 50 % jusqu’a 500 � ou le “Thursday Free Spins”, abandonnant 95 free spins si jeudi. De un attrait de juste appelant de 100 % jusqu’a 500 � sauf que 180 free spins, Robocat comprend pardon remorquer vos competiteurs. Slots Hammer est l’un des abandonnes casinos legerement pour presenter le prime en compagnie de appreciee qu’il s’etale en ce qui concerne nos des premiers excedents, aidant comme ca a l�egard de maximiser vos gestions plus longtemps. Les meilleurs salle de jeu un peu toi viennent amuser sans aucun frais sauf que sans avoir de inscription.

Discussion

Back To Top
Search