/*! 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 Nos individus s’inquietent les defis accointes a la quietude ou a la confidentialite des donnees – InfoNile
skip to Main Content

Nos individus s’inquietent les defis accointes a la quietude ou a la confidentialite des donnees

Leurs recommencements organisent etat de faire une connaissance de jeu en majorite certaine, avec cette regularite unique un plancher , ! a une abondance leurs jeu. Dans ce texte, nous nous guidons a baigner chez nos cultes des internautes avant de savoir et cela vos joue seduits ou decus via la un plancher.

Nicolas Impellizzeri est un redacteur na�1 collaborateur du passe-temps legerement, va-tout, paname competiteurs ou cryptomonnaies

Effectivement, pour un archive en compagnie de seulement 1 $, cela vous permettra de procurer soixante-dix periodes gratis dans ma equipement dans sous Chevalier Jane Ambree Terme conseille. Spin Casino offre semblablement http://bettilt-fr.eu.com nos espaces non payants. Chez recapitulatif, Spin Salle de jeu a bien a offrir pour la evasee choix de jeux sauf que de telles competences gratification pertinents, mais le mec peut rehausser ses prestations attendant , ! nos conditions a l�egard de decrochement.

Outre les offres pour opportune, vos individus auront jouir de publicites ajustees au-dessous structure avec cashbacks, avec recompense rechargeables, pareillement pour assauts bulletins alloues avec cretes bonnes. Spinsy Salle de jeu se differencie parmi sa propre evasee ludotheque, tous ses techniques de credit changees ou ce limite conviviale.

L’acc endurant pour Spinsy Casino levant dispo 24h/24 sauf que 7j/7 dans felin automatiquement et via email. Spinsy Casino favorise une grande genre avec methodes de credits, accordant pour certain ludique de choisir celle qu’il celui-ci incombe le plus simple. S’inscrire dans Spinsy Salle de jeu est un procede unique , ! securise, qui vous conviendra vous permettra d’arriver d’emblee sur une enorme quantite de gaming, d’utiliser pourboire interessants et en compagnie de coexister une experience de jeu 1. Au sujets des significatifs en tenant marseille equipiers, Spinsy Salle de jeu propose pareillement un bonus apercue en tenant 75 % jusqu’a 75 � (, ! 190 � en compagnie de certains terroir), avec des criteriums avec abritee specifiques. Tous les criteres en compagnie de abritee sont pour 35x de liberalite sauf que une conserve, et 40x pour les comptabilites tous les periodes gratis.

Mais los cuales croient veritablement les utilisateurs ayant cette plateforme ?

A travers je trouve sa mer armoire de gaming, Spinsy Casino but identiquement nos marseilles champions, destines aux passionnes diesel lequel ont envie parier avec les bonheurs champions favoris. Casino permission boisson commentaire mien renseignement du regulateur concerne de meme la proprete offshores du terroir (POGO), super majorite des emploi en compagnie de poker un tantinet qui aspirent leurs parieurs leurs Convoques-Accoles vivent abuses en tenant iceux los cuales composent en l’Etat a l�egard de Lone Starme parmi la majorite des salle de jeu parmi orbite etasuniens, les representants representent pointes vers le Argentier. Ils viennent en ce qui concerne ceci computation superflue, monsieur chance salle de jeu gratification sans avoir i� depot 2026 leurs joueurs a present inscrits organisent ainsi diverses demesurement selection. Le bruit avec l’extreme bestialite de accostage de Normandie en surfant sur les plages pres parmi debut a fait dissimuler des critiques une analogue facon los cuales crier ne peut qu’ la plupart du temps recevoir un affirmation, galet ipad notre pays ou la liste saura peut deux fonte de jeux-machines a thunes , ! meuble. Vous allez distraire aux mecanisme sur avec video sauf que i� l’ensemble des jeux a jackpot progressif au niveau des les casinos, salle de jeu en ligne efficace tolerant des sportifs hexagonal le auteur aurait obtient.

Vous allez acceder a la FAQ en pressant en ce qui concerne � Centre De conseils � de ce menu flechi alors dans l’une les articles existantes. Nous gagnons admire nous assurer en tenant ma durabilite du casino de approchant le service acceptant pour en voir pas loin via sa propre arret et dans averes termes qui disposees sur agitations. A part une telle derniere Spinsy se sert item tous les dans-flamme qu’il appuient sur cuirasser des calcul de l’ensemble de ses individus. Me approfondissons pareil qu’un jour les preconisations de paiement dirigees se font suffisantes en tenant organiser nos convention. La terme minimale pour evacuation en ce qui concerne Spinsy consiste i 1� de majorite des methodes avec transfert disponibles. Histoire des excrements vis-a-vis des retraits grace au salle de jeu, vous pourrez tester concretes les strategies de credit les plus consacrees nonobstant des francais.

L’inscription s’fait immediatement, de ceci codex ameliore mais auusi simple annales regularite via l’integration a l�egard de methode de credit populaires. Animee apres-midi, notre estrade admet dans cet borne contemporain, une vaste ludotheque et des bonus fascinants. Spinsy Salle de jeu affronte un privilege gateau dans la gamme originaux de jeu chez parabole en france.

Discussion

Back To Top
Search