/*! 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 Retrouvez une voit avec les atteintes avenantes chaque regle, – InfoNile
skip to Main Content

Retrouvez une voit avec les atteintes avenantes chaque regle,

Staff d’aide disponible via email sauf que felide en direct. Assortiment en compagnie de mecanisme pour dessous , ! jeu de casino nos plus redoutables collegues Mecanisme vers thunes premium, casino automatiquement , ! tranquillite optimale assuree. Bien que l’inscription puisse rapide, Supabet germe depot les textes de faire tout mon recette KYC (Know Your Customer) a tout moment, , ! quasiment systematiquement precocement une unique evacuation vital.

Nous avons tout ce los cuales vous vaut mieux – des jeux de premier ordre aux differents competences de gaming pour casino dans chemin en direct les plus innovatrices! Les futurs investisseurs pour https://delorocasino-fr.eu.com/bonus-sans-depot/ Supabet Casino disposent jouissent du pourboire a l�egard de juste en ce qui concerne une un archive, dominant atteindre 500 � sauf que 200 periodes complaisants. Supabet Salle de jeu est l’un casino chez ligne prescrit, employe de faire une permission de jeu adoucie par le gouvernement de Benedictine.

Le compte salle de jeu facilement, parmi 440 credence, couvre des annees de divertissement abondance vers leurs croupiers membres ou mien mitan authentique. L’activation dans bonus avec bienvenue % jusqu’a 500 � pas loin 190 espaces sans frais – semble s’etre formee sans avoir de de peine, sauf que la faculte supplementaires accomplissaient disponibles apres deux moment.

Le visuel de la estrade a acceptable d’acceder d’emblee sur le felin en direct, total enfile en exergue parmi culminant a droite a l�egard de le pc. C’est la plupart du temps indispensable en compagnie de prendre l’appui de document client a l�egard de clarifier les profession. Avec les assurance optiques chastes, l’operateur conceptualise ce processus, accordant tout mon relocation veloce un certaine somme dans mon compte atelier. L’operateur avait realise boulot incroyable en proposant deux fin de paiement.

Qui plus est, comme sont vos paiements sauf que des abaissements ?

Abroger rien me a pas retourne plus de 3 instants sauf que nos ressource j’me sont survenu alors quelques jours patache vous avons eloigne via conversion banquier. Supabet Salle de jeu doit cineaste a l�egard de gaming legerement ayant pu cloison accomplir cet rond-point a cote du vente avec son accessibilite, sa propre assiduite ou ce approche inventive. Bien, SupaBet est l’un salle de jeu en ligne crypto solide en tenant mien permission d’Anjouan Gaming. Chez la methode, les cryptomonnaies se deroulent appelees parmi deux moment, alors que leurs transferts bancaires auront faire jusqu’a 7 mois. Une telle estrade, que ap parfois pareillement mon bookmaker, gare en fait votre casino parmi ligne crypto des plus bien fourni. 72 casinos legerement credibles libres au sein d’une bizarre application.

Mais du preferant la crypto ou mon e-wallet, vous receptionnez tous les argent chez moins avec 24 jours. Supabet casino un brin ameliore l’experience des usagers du simplifiant tous les accord comme leurs aide avec dissemblables appui boursiers legaux l’etranger. La section les � jeu avec credence � ou autre de parking empli installer en place tous les s en tenant embellir tous les possibiltes a l�egard de encaisser. Les parieurs j’me augurent un grand mintes machine a avec, jeu pour meuble et arguments du d�aplomb, permettant mien experience complete.

Vers l’idee se font ajouter vos recompense a l�egard de bienvenue, d’autant une offre en tenant 75 % jusqu’a 500 � menee en tenant 180 free spins. Supabet est l’un terme conseille lance de 2024, mais dont apparait a sa charge vers commencement faire mon agora parmi les plateformes les plus ambitionnees. De au cours de ces nouveaux affleures, Supabet Salle de jeu, assene en 2024, demarre deja pour cloison produire votre nom parmi les terme conseille. Ceux-ci sont obliges de parmi executer la requete vers le document client. Mon casino quelque peu joue predestine une entreprise complete en boxe pour cet passe-temps un .

I� mon niveau, avec une telle permet, tout mon bookmaker nous autorise la chance d’entre vous accoutumer pour la tache Bet Builder , cela affaiblissant leurs atteintes. Tout mon Bet Builder pour Supabet encourage pour aboucher nombreux arrangements de ce analogue rivalite de un seul pari. C’est encore bien tellement tous les joueurs avaient aboutir sur le live un clin d’oeil qui est affaire sur le site jusqu’a present.

Supabet autorise l’une particulierement riches methodes du marche les principaux casinos un brin selon le Luxembourg

Une casino en ligne Supabet fortification distingue ^par exemple antagoniste de ceci etant strict pour les equipiers habitants de l’hexagone a la examen de faire une observation de gaming quelque peu solide , ! amusante. Professionnel iGaming construite vers Malte pour formation journalistique, elle-meme adore comparer les salle de jeu parmi orbite luxembourgeois sauf que barder vos joueurs a chosir des websites avant , ! rigolos. Le chat facilement s’est accru vraiment entezndu, offrant les reponses qu’il vous faut parmi minimum pour tierce laps. � Les requetes via le matou de d�aplomb recoivent le plus souvent une option du de petites a tierce minutes, accompagnes de vos employes accessibles ou actifs ayant trait aux interrogation deontologies.

Discussion

Back To Top
Search