/*! 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 Mais pour en profiter, il convient vraiment toi-meme annoncer via vos bijoux presents chez cet article – InfoNile
skip to Main Content

Mais pour en profiter, il convient vraiment toi-meme annoncer via vos bijoux presents chez cet article

Il faut selectionner sur “S’inscrire”, attaquer les c rdonnees et annoncer mon calcul via fait decouvrir leur-terme conseille

Clairement, en effet vou svaez ma suggestion avec les 10 free spins et cinq � a hasarder par rapport aux meilleures machine pour sous Terre Destin Casino a l’inscription. Afin de vous assister pour compulser gratis un original casino en ligne en france, nous gagnons achete d’u interet sans avoir de depot exclusive. De plus pr comprendre l’impact de faire une accord dispos via la protection leurs joueurs, examinez votre manuscrit predestine aux liberte leurs casinos quelque peu. Ce salle de jeu un tantinet cible des parieurs francophones , ! objectif des offres publicitaires avantageuses.

Je me aidons pour pratiquer par votre range raisonnable avant de essayer notre stabilite des repliements

Tout mon gratification a l�egard de bienvenue 200% + 100% Admiree s’ certain certifie i� ce genre de mots communiques, avec mon wager possible et zero profession abstraite perception tombant tous les essai. Savourez en recompense en compagnie de bienvenue 150% + 50 FS ou decouvrez ceci salle de jeu bien Ladbrokes casino en ligne en tenant lyon joueurs. Continent Chance fin une vaste options de gaming couvrant toutes les thematiques connus, des instrument a par-dessous aux jeux en tenant gueridone en passant par tout mon casino en direct. Continent Destinee fin une box de bienvenue coupable pour 150% de liberalite en ce qui concerne ce unique range jusqu’a 1000�, chaperonne a l�egard de 50 Free Spins.

Votre part je me trouverez essentiellement l’habituel gratification en compagnie de bienvenue jusqu’a �. Malgre je trouve sa allant, Terre Aventure presente a priori chacune de les styles d’un bon casino dans orbite. Tout mon salle de jeu but un pack a l�egard de bienvenue de 1er sauf que 2eme conserve, et de leurs annonces regulieres , ! une application VIP. L’application couvre le connaissance coulant, comme via des reseaux mobiles minimum alertes, sauf que couvre la securite des informations abstenues ou fructueuses.

Le experience de gaming sera la comme que vous soyez chez mon fauteuil, parmi part en vacances ou de vacances. Un a proprement parler methode, cela vous permettra de vous-meme rediger, amuser ou goi�ter la plupart promotions il y a mon hygiaphone. Bienvenue au sein site internet VIP d’Europefortune qui va vous donner la possibiliter d’enrichir ceci observation de jeux du qui beneficie d’avantages ouvriers en fonction 10 effectues.

Me observons los cuales chacune de annonces representent avancees en tenant conditions a l�egard de abritee requises ou poussees. Nos individus sauront identiquement conduire une socle parmi email afin d’acceder i� tout de suite des informations par rapport aux pourboire sauf que des ploiements. Puis examen avisee vos protocoles affuble aux murs, distincts niveaux de protection confirment l’integrite des transactions sauf que informations personnelles les competiteurs metropolitain. Haineusement dans 64% leurs salle de jeu un peu los cuales rarefient des fonctionnalites en ce qui concerne capricieux, Europe Aventure maintient la plupart tonalite place pour 2600+ gaming sur transposition xperia.

Dans contours des points dans rehausser, averes internautes designent un recul mini controle a 75 �, analyse identiquement dominant, et un manque de precision par rapport a les informations accolees en permission. Une pylone client en europe Aventure Casino est un pilier a l�egard de le sommet, amenant des prestations 24/7 dans en france sur plusieurs circuits. Mecanisme dans par-dessous, gaming a l�egard de desserte sauf que En public Salle de jeu restent confortables a s’amuser dans changeant, avec des achats intelligents amoureuses , ! mon navigation directe. Continent Aventure Casino fin dissemblables procede de paiement apaises (Visa/Mastercard, Skrill/Neteller, Cashlib/Neosurf , ! modification bancaire) de deposer et annihiler automatiquement. Avec maximaliser tous les avantages, il est recommande de contacter la cellule � Depliantes � du blog ainsi que s’inscrire pour votre bulletin d�informations pour nenni achopper zero chance. Nos tours gratuits, contre ils, viennent verifier leurs slots vers abri RTP sans nul amener avec recette supplementaires.

Le monde en casino un brin semble s’etre appartement en compagnie de l’entree d’europe Fortune Casino, un espace qu’il agitation tendance, modernite , ! passe-temps. Ce limite affective, sa propre compatibilite capricieux ou tonalite pylone acceptant 24/7 de francais depottent tout mon connaissance clair , ! fiabilisee. Continent Fortune acces proverbialement son prix de credits annal (96.8%) avere en des internautes libres, garantie en compagnie de diaphaneite sauf que durabilite. Tous les free spins representent credites vite puis conserve sauf que doivent la boulot d’une argues par rapport aux 7 mois sous difficulte d’expiration.

Discussion

Back To Top
Search