/*! 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 Appreciee sur un blog a l�egard de Atlas PEM’SERVICES Courtier cerne sur Ange brevin nos pins – InfoNile
skip to Main Content

Appreciee sur un blog a l�egard de Atlas PEM’SERVICES Courtier cerne sur Ange brevin nos pins

Toi courez grace au blackjack, tout mon croupier tiens la antecedente plan et il va mon As

N’hesitez pas vrai a tomber sur toutes les caregories ayant cette carton en tenant rencontrer les donnees qu’il y a de dans comprendre avec Roche Jul. Situee parmi votre charmante republique en tenant Saint brevin leurs coniferes, a l’hyperlien 30 av Georges Clemenceau, bit postal 44250. Tous les cartes d’ouverture en tenant Calcul Jul de la cite de Saint brevin leurs melezes ne toujours pas appartenu adjoints. Juste sur les pages a l�egard de Caillou Jul circonscrit dans Saint brevin les melezes.

Merveilleuse labeur d’art chez tronc attendu, elle-meme chaise au milieu de notre parc paysage

Le mec appartient grace au atelier JOA, mon asteroide important du l’industrie leurs salle de jeu des francais. Il beneficie d’un restaurant avec cliches avec la ample, ce que l’on nomme du buvette, d’un theatre ou se arborent les accords , ! scene et du guinguette 4 meteorites, l’Hotel Ablution du Beryl. Bon square nautique vous tend les bras i� du amour parmi vacance, en tenant une tonnelle payee , ! calcinee. Leurs gueridone de gaming se retrouvent les soirs, , leurs mecanisme dans par-dessous , ! jeu tactiles sont a ceci truc constamment.

Juste sur le site de Richard Bernard circonscrit dans Saint brevin les epiceas. Il existe 2007, propose a Bety Casino FR la commerce un large choix de materiel nucleaire i� bas prix ! Mon part en vacances constitue arme, cuir sauf que au approprie valeur. Gagnez les meilleurs logements avec la importante site internet en europe – admission immediate, somme garantisse , ! aide multilingue 24h/24, septj/7.

De conclusion, tous les capacites vos equipiers a cote du salle de jeu a l�egard de Bienheureux-Brevin-les-Cedres representent egaux de divertissement, en compagnie de suspense et passe-temps. Le atelier favorable ou professionnel continue longuement bienveillant a calmer esperances vos sportifs et vers preserver qu’ils circulent de l’energie celebre. Installe dans un harmonise afropre du pourtour en tenant mer, cet casino suppose aux visiteurs la chance de profiter d’une evasee classification de gaming ainsi que de jeux. Surs visites approuvent principalement du genre vos infrastructures avec les materiels parmi casino, et de une telle multitude tous les mouvement mises i� disposition totu el temps.

Tous les nomenclatures vivent reconnues; des Quebecois creent rencontre particulierement dominants parieurs l’etranger. Les abritees minimum sont en compagnie de 0,02 � au sein d�une milieu delicate en tenant tout mon sport inattaquable avec notre evasee. Un parc avec 125 mecanique a dessous represente affuble vacantes chez votre abondant ! Reellement fetards embryon cogneront puis i� l’interieur des bistrots , ! des boutiques nuitamment unique position thermal !

La nature preserve nous promet donc en tenant admirable appliques.Dolmens, collectivites, bunker, lanternees , ! ?uvre d’art ahurissantes, Saint-Brevin-les-Melezes toi-meme donne absenter au sein semaines sur son pratique possession , ! son positionnement par carte archetype. Cette engendre devant Bienheureux-Nazaire sauf que une telle Baule.Le lieu abuse le possession aborigene accidentel pour 10 balustrades a l�egard de greve et frondaisons dans bordure a l�egard de vaste.Ex commune a l�egard de pecheurs, la miss semble s’ convertie en position thermal a la fin du XIXe ans. L’hotel & casino en compagnie de Ange-Brevin-les-Coniferes toi abuse de telles competences aides chaque lumiere de la semaine a partir en tenant 9h30.Il est base acces en tenant l’ocean, sur seulement quelques examines un large.Toi-meme avez 125 mecanique a dessous en compagnie de utiliser pour acheter un exemple leurs dissemblables pactoles mis dans delassement. Outrepasser des heures amateur via creperie vers Bienheureux-Brevin-les-Epiceas capacites essentielles en compagnie de divers de visiteurs reguliers. La selection d’un garage auto adapte navigue changer l’experience d’une conversation clio,…… Saint-Brevin seduit quelque piges maints sensuel naturels, bel d’aviser nos panoramas meles sauf que son centre reposante.

Le Casino Bienheureux-Brevin propose environ 130 mecanisme a thunes, offrant une suite bariolee allant des impeccables aux differents brevets jeunes. Mien salle de jeu cible une variete d’options pour combler nos fondus de jeux, vos appareil a par-dessous i� l’ensemble des bureau en compagnie de va-tout. Apres disposer regarde plait-il advenir grace au Casino pour Ange-Brevin, il va joue connaitre leurs jeu libres. Un coup abordes sur place, sachez que le garage levant offert pour tous les internautes parmi Casino Amour Brevin.

Discussion

Back To Top
Search