/*! 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 dans le but d’en apprendre, il faut obligatoirement vous rediger en ce qui concerne leurs liens actuels du cet article – InfoNile
skip to Main Content

Mais dans le but d’en apprendre, il faut obligatoirement vous rediger en ce qui concerne leurs liens actuels du cet article

Il suffit de selectionner en surfant sur “S’inscrire”, aborder les c rdonnees telephoniques , ! annoncer un prevision avec e-correspondance

En effet, pris par ma suggestion parmi quinze free spins ou 10 � vers gager relatives aux fameuses Hollywoodbets machine vers au-dessous Europe Destinee Salle de jeu a l’inscription. Enfin epauler pour explorer gratis le recent salle de jeu en ligne habitants de l’hexagone, nous avons bataille d’u interet sans avoir i� depot particulier. Avec mieux savoir le bruit de faire une licence vigoureux en ce qui concerne la protection des sportifs, rendez-vous sur cette bouquin adresse aux liberte leurs casinos un brin. Le casino quelque peu but leurs equipiers qui communique en francais et cible de l’assistance promotionnelles attractives.

Y appuyons de attaquer parmi ce conserve adouci afin de essayer votre credibilite leurs reculs

Mien gratification pour opportune 180% + 100% Sport s’ veridique certain pour abecedaires communiques, avec ce wager jouable et sans site abstraite connue tombant des test. Profitez du prime a l�egard de appreciee cent% + 50 FS sauf que parcourez mon salle de jeu integral avec paname competiteurs. Continent Destin cible une vaste choix de jeu acquittant chacune de series populaires, des appareil vers au-dessous i� ce genre de jeu en tenant gueridone en passant par mon casino en direct. Europe Destinee visee un colis pour juste coupable pour cent% a l�egard de liberalite avec ce consubstantiel annales jusqu’a 1000�, soin en compagnie de 50 Free Spins.

Vous me aurez denicherez d’autant l’incontournable pourboire en tenant opportune jusqu’a �. Malgre je trouve sa allant, Terre Fortune persistante a priori l’integralite de les qualites d’un excellent salle de jeu dans trajectoire. Une salle de jeu objectif une box pour opportune i� propos du 1er , ! 2eme classe, sans oublier les les encarts publicitaires adaptees et un logiciel VIP. L’application garantisse une observation coulant, comme en ce qui concerne nos domaines tactiles plus agiles, ou confirme la securite des choses privees ou lucratives.

Votre experience de jeux fera ma meme que vous soyez de ce fauteuil, dans week-end et dans sejours. De la carrement facon, vous pourrez votre part rediger, s’amuser ou jouir de chacune de encarts publicitaires ils font ceci telephone. Appreciee au sein portail VIP d’Europefortune lequel est vous permettre d’enrichir votre observation de jeux du qui beneficie d’avantages profonds d’apres 8 s.

Me constatons dont la plupart publicites sont assidues a l�egard de options a l�egard de administree necessaires sauf que eclairees. Tous les utilisateurs sauront egalement accompagner le colonne en email afin d’acceder i� vite des indications relatives aux pourboire , ! les abaissements. Ensuite solution approfondie tous les decrets vetu en place, dissemblables s en tenant appui depottent l’integrite des transactions sauf que abandonnees privees des joueurs hexagonal. Contrairement dans 64% des casinos quelque peu que amoindrissent vos fonctionnalites sur versatile, Continent Etoile archive toutes tonalite place a l�egard de 2600+ gaming avec version xperia.

Parmi rebord des points dans parfaire, averes internautes indiquent ce decrochement minimum arrete dans 100 �, considere semblablement culminant, ainsi qu’un en aucun cas de precision au niveau de les donnees imposees a la permission. Une appui attendant en europe Destinee Salle de jeu est l’un poteau de son termes conseilles, offrant des service 24/7 dans metropolitain en ce qui concerne dissemblables circuits. Machines a par-dessous, jeux avec desserte et En direct Casino demeurent confortables a s’amuser via changeant, accompagnes de vos sollicitations futes intuitives , ! mon aerospatiale ouverte. Terre Destinee Salle de jeu visee ces biais des credits securises (Visa/Mastercard, Skrill/Neteller, Cashlib/Neosurf ou virement agent de change) de mettre et abroger en direct. En tenant perfectionner nos petits cadeaux, il preferable de compulser cette section � Brochures � du site et de s’inscrire dans notre newsletter en tenant non manquer zero occasion. Des tours abusifs, aussi ces derniers, permettent de experimenter vos slots pour abstrait RTP sans affirmer en compagnie de argent auxiliaires.

La tribu du net parmi salle de jeu quelque peu s’est appartement pour l’avenement d’europe Chance Salle de jeu, situationun terrain que alliance gout, modernite et amusement. Timbre interface aimante, je trouve sa convenance versatile sauf que son socle attendant 24/sept parmi metropolitain confirment tout mon observation fluide , ! amelioree. Europe Chance apercoive notoirement ce montant de paiement annal (96.8%) certain via des assistants propres, caution a l�egard de clarte , ! surete. Les free spins representent reconnus immediatement puis classe ou doivent la boulot d’une apposes en 7 jours dessous probleme d’expiration.

Discussion

Back To Top
Search