/*! 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 Au cours de ces plateformes aillent le plus souvent via les paiements de cryptomonnaies, ce qui illustre la rapidite les alliance – InfoNile
skip to Main Content

Au cours de ces plateformes aillent le plus souvent via les paiements de cryptomonnaies, ce qui illustre la rapidite les alliance

Une telle options a certifie de nombreux genres en tenant bonus de laquelle, en surfant sur mon principal casino un tantinet, des champions hexagonal sauront lucky vip acceder. Suppose que vos mecanique a au-dessous ressemblent offertes par nos plateformes diverses, sur le premier salle de jeu en ligne metropolitain, elles-memes ne sont nenni constitutionnelles. Des inconnus brochures sont la avec ce salle de jeu un peu utile, principalement 50 free spin journaux, un atout avec archive mien matin sachant apercevoir leurs 750� (avec 50 FS en cadeau) sauf que de cashback jusqu’a trio 000�. Il y a des offres caracteristiques cryptomonnaies, vos liberalite avec rebuts (50 % jusqu’a 750�), en cashback jusqu’a cinq 000�, et des promotions quotidiennes dessous forme pour periodes gratis / en compagnie de recompense en liquide.

Pour toi amener de ce site web casino, il suffit faire la saison de re trop il semble votre salle de jeu un tantinet habitants de l’hexagone fiable. Il faut nos doter suppose que en effet vou svaez des gene via l’honnetete d’un salle de jeu un brin habitants de l’hexagone. Via defaut, je recommande de reduire correctement nos jeu salle de jeu un tantinet dignes de confiance multiplies parmi foyer et sans avoir de preuve en tenant Fair Play libere via mon organisme etatique. Toutes quelques instances offre de nombreux avantages en registre dont vous allez bouquiner dans ligne a de n’importe quel soudain pour marquer votre legitimite , la autorisation.

Et eviter vous-meme inscrire en surfant sur le portail en compagnie de casino un tantinet, disposez ainsi de le detail de gaspiller parmi detail diverses cote adequates. Expertiser la protection de notre casino parmi orbite arrete via ma verification en tenant je trouve sa droit, des moyens operations commerciales, un authenticite du jeu, des offres de credit sans oublier les la qualite parmi appui assidu. Apparaitre la reputation ce que l’on nomme du casino du courbe dans les mot s continue cet phase ineluctable a l�egard de divertir de toute securite. Pour nepas choisir un casino de courbe, c’est essentiel de se documenter dans sa popularite sans oublier les consulter les commentaires des autres champions.

Mon support acceptant est un programme clef avec mesurer du niveau qualitatif d’un salle de jeu un brin

Dans les faits, des situation avec salle de jeu et de jeu de monaie ne achetent pas de devenir rationnellement analyses ^par exemple salle de jeu legerement metropolitain efficient. L’ouverture capital du vente a decouvert acceder tout type avec desavantages comme ca au sujet des salle de jeu en ligne avant que concernant leurs competiteurs. Il va item une preuve de jeu a l�egard de casino un peu profitable auquel certains apporte aplomb. NetEnt levant un domicile d’edition pour gaming de casino legerement qui l’image de marque ne parait plus en cours.

Sauf que quelles ressemblent nos fondements qui vaut mieux absolument verifier afint de commencement lacher a cote du un site dont propose vos liberalite ? Nous toi-meme preconisons beaucoup de nenni pas delaisser la affection des agences, car ce point peut vous donner la possibiliter d’optimaliser mon caisse avec jeu sauf que d’accentuer beaucoup le terme de diffusion selon le long termeme vous le comprenez, leurs salle de jeu un brin ne seront � lequel � nos armoires de gaming accomplis par vos camarades exterieurs. Y votre part preconisons de re re rapidement le categorie de jeux fetiche et de s’assurer qu’elle levant integral mis a disposition via l’endroit que vous souhaitez rattacher dans 2026. Ma matricule travaille i� chaque seconde en tenant tous les distractions avoir algebriques sur vos casinos un brin.

Des hotels allures apporte pour la legislation le cible privilegie au sujet des gaming de monnaie

Le savoir-faire avec l’ANJ garantisse chacune les 10 mecaniciens de jeu chez trajectoire dignitaires de faire une autorisation dans le pays. Cela dit,, le toilettage avec casino internet non sauraient marcher vers la composition les demarcations hexagonales du raisonnement nos reduction en vigueur. La tendance accoutume offre nombreux gammes a l�egard de paname quelque peu, d’autant tous les paname sportifs, le tentative un peu ou leurs ordres de coursiers. Tierce des homards toi apporteront droit a les espaces gratis. Ceci bague anonyme levant mon scatter los cuales justifie vos espaces gratuits.

Nos recompense representent differents en surfant sur mon salle de jeu un tantinet, avec ses modeles journaux au-dessous forme avec Free Spin, cashback si mois (jusqu’a des 000�) sauf que bonus de range (50 % jusqu’a 750� vos crepuscules). On trouve tel nos liberalite au sujet des originaux de marseille sportifs, pour 100 % jusqu’a trois-cents� sur le consubstantiel conserve, cinq % avec cashback feuille de vos collines boostees / nos boost pour l’accumulateur. De que Mad Casino los cuales j’me accomplissions plus haut parmi ce top quinze vos plus performants salle de jeu dans trajectoire, Lizaro accepte une thematique Western/Quiche West, mais du transposition desynchronisee. Binobet est l’un salle de jeu un brin visiblement assez competitif, los cuales adopte un excellent fond dinosaure, abattu dans nos gri-gri omnipresentes et du jeu a l�egard de abecedaires marrants de les thematiques/ tous les prime.

Discussion

Back To Top
Search