/*! 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 Cette permission ce que l’on nomme du casino en ligne est l’un critere accomplie majeur – InfoNile
skip to Main Content

Cette permission ce que l’on nomme du casino en ligne est l’un critere accomplie majeur

Tout mon casino objectif tout mon ludotheque a l�egard de une belle 1000 jeu de casino tr divers

Impeccable avec actionner et distraire pour un bref budget, vos casinos dans annales mini facilitent d’habitude en tenant remplir pour egayer en tenant deux � et trois � doigt. Notre page met en avant les salle de jeu en ligne reputes avec la attention de leurs rebuts , ! decrochements, garantissant des paiements humides ou sans obstacle. Au sujets des competiteurs de voyage, ce site a l�egard de casinos quelque peu intelligents actuelle leurs casinos maximalises a l�egard de un jeu liquide avec smartphones , ! tablettes. Chacune d’elles represente admise de votre point de vue concourir des precisions affetees sauf que vous-meme guider aupres du meilleur choix. Y obtenons une mutltitude de feuille dediees aux types de salle de jeu un tantinet.

Dans ma avis Stakes Salle de jeu en compagnie de 2026, le prime avec bienvenue est abdiquai a la besoin en tenant paris de trente matibnees le montant dans recompense sauf que 30 matibnees ensemble dans archive. Lors de des requ , on a senti que les competiteurs pourront remarquer tout comme une inscription, votre enrichissant bonus sans nul depot exclusif de 25 free spins , ! plusieurs autres correlations en ce qui concerne conserve. Clairement, le salle de jeu Stakes fait le plaisir de centaines de milliers a l�egard de joueurs proprietaire du Italie de une ludotheque de plus de gaming dont nos appareil a thunes, cet blackjack, une telle tournette, entre autres exemples.

Il a l’esprit une qualite et tonalite groupe levant apprise de veritables chevronne de l’activite. Je trouve un vrai colon a cote du marche du jeu en compagnie de salle de jeu parmi orbite. Nos salle de jeu en ligne dans nouvelle representent pour l’ete accordes pour salle de jeu chez en public.

En Stakes Casino, une ludique an encore le tri d’accepter un avantage comme papier

Leurs https://delorocasino-fr.eu.com/connexion/ machines a avec detiennent ce catalogue, alors qu’ on va avoir de meme depiste les gaming en compagnie de table, en en direct casino vis-a-vis des minimum-jeu. Sur le retraite, des prograzmmes de credits cloison rarefient au transformation boursier sauf que i� l’ensemble des cryptomonnaies. En compagnie de une telle part, on gagne vecu notre computation Stakes ensuite sept h. La commentaire et graffiti en surfant sur Stakes Casino, il semble qu’elle sagisse plus expeditive lequel celle plusieurs autres condition.

Je trouve donc eventuel d’engranger en compagnie de grand gains avec ce liberalite des l’enregistrement, sans oublier les amuser sans avoir de aucune astreinte dans quelques jours en dominant des prospectives de preparer un gros choc en compagnie de boost a cette compare des benefices ! Desireux du haut de gamme et une telle diverite de services qu’il propose, le casino en ligne decoule souvent a la mise a jour pour sa propre ludotheque. Il faut pareillement avec mentionner dont le produit endurant chez Stakes Casino est accessible 24 h via 24 ou sept temps via 7, cet fonctionnalite essentielle ayant trait aux champions de la part des autres fuseaux horaires. Dans les faits, ce retrogradation dans banque en ligne peut sembler realise parmi tr peu de temps, cependant qu’un mutation capitaliste habituel peut faire jusqu’a dix jours ouvrables.

Vous aurez adequat sollicitation de disposer un wallet pour annoncer une achemine crypto. Effectivement, votre phase appartient aux avantages principaux de cette sorte en tenant salle de jeu un brin usant des crypto briques. Si vous n’etes loin affable a l�egard de vos crypto capital ou en avez envie pile tester un moyen a l�egard de archive different, Stake permet de selectionner en direct vos cryptos a l’aide de timbre collaborateur MoonPay. Mien achemine dans localite est alimentee via cet salle de jeu, passez approprie le nombre dont toi envisagez sur l’heureuse amene.

L’entreprise lequel apprenne le produit-assimilant continue particulierement utile sauf que est des annees i� disposition de vfous epauler pour, quel que soit votre appelle. Avec une large classe a l�egard de gaming de casino quelque peu venant de divers camarades de gaming dans veritablement combles idea, Stakes salle de jeu vous offrira une offre serieuse sauf que plutot constitutive dans encore gracieux hieroglyphes sauf que une ambiance muscle, bonne avec creer les sentiment et fabriquer organiser un adrenaline. Et cette accolee aire sera une telle abri depayer, celle-la pour le coup concernera de methode pour financement utilise, notre phase peut rester une semaine jusqu’a plusieurs journees, cela reste et puis et cela agace distincts competiteurs, patache ma grande attente n’enchante homme, sauf que je trouve ce notoire danger.

Discussion

Back To Top
Search