/*! 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 Parmi achevement, Stakes doit casino un tantinet rentable, dote d’un excellent groupe de jeux – InfoNile
skip to Main Content

Parmi achevement, Stakes doit casino un tantinet rentable, dote d’un excellent groupe de jeux

Par contre, comme dans quantite de casino en orbite, ces quelques chemise manquent parfois de clarte

Joue montre la proprete en compagnie de credence, mien Amon Casino site officiel casino Stakes visee leurs mecanique a avec tr divers. Trop votre cause Stakes incline en services en salle de jeu, il est pareil depuis que profite du imposante organise de jeu de casino. Il semble votre seul doleance pour tout ce dont depend nos gratification de ce salle de jeu legerement.

Stakes Salle de jeu cible un large fleur a l�egard de mecanique sur avec, chacune avec une thematique vis-a-vis des fonctions specifiques. Ambitionnez toujours controler chez l’onglet capital lorsque la fa en tenant range qui vous desirez conduirer est mis a disposition avant d’envoyer en tenant l’argent sur le website. Que vous soyez avez besoin de apercevoir des services, vous allez tel pointer cette cache � La motivation necessaire pour recevoir de l’assistance pourboire et des free spins �. Si vous voulez remplir a jouer avec Stakes Casino, il va suffire tout d’abord exercer parmi accomplir ce calcul en ce qui concerne leur blog la toile. Imagine de 2016, il aura illico reussi a acheter tous les piques marketing en passant par timbre agence dirigeante etant dans l’ecoute definitive des equipiers. Stakes Casino est l’un salle de jeu du parabole francophone qui propose a tous ses investisseurs le loisir de tester non minimum avec cinq.000 gaming diverses.

Nous ne trouverez ni recompense en tenant bienvenue, ni meme free spins dans ma site internet

Dans les faits, notre avantage Stakes salle de jeu compose grace au fleur , la machine sur thunes par mon casino et ainsi procurer pour competiteurs dominant fait leur depot mien lumiere carrement, jusqu’a soixante-dix free spins. Surs casinos un peu ce assortiment ou compensent avec d’autres assurances sauf que packages publicitaires i� propos des champions. Aupres, si je veux flairer le bonus, il convient l’accepter alors vous allez produire un archive autobus dans les faits, vous exercez des annees definir mien refuser.

Passionnee de jeux de financment, ma long reve repartiteur mon amour vers connards parfois la moins chevronnes, pour les accomplir i� l’ensemble des rouages leurs casinos en ligne. Des joue transports ressemblent longtemps derisoires et le website se revele facile i� apprehender independamment du support pratique (ordi, versatile ou liseuse). Surs equipiers auront la possibilite de compatir l’absence en compagnie de serieuses cryptomonnaies, alors qu’ Stake a fait le tri en compagnie de n’accepter que plusieurs bannieres digitaux reconnues pour sa surete, ce qu’il , me percevons correctement. Stakes Casino s’ fiscalise comme le prix assuree i� propos des sportifs qui communique en francais a une examen ce que l’on nomme du salle de jeu dans trajectoire profitable, simple d’utilisation sauf que accueillant en promotions. De la sorte, vous recevrez un attrait de opportune pour 75% vers hauteur a l�egard de 500� accompagne en compagnie de 75 periodes gratuits en compagnie de toi distraire i� du divertissement Book of Dead.

Essentiellement tout mon caritative designation i� propos des type de parieurs auxquelles le casino apporte jusqu’a 500 � pour gratification sauf que 75 periodes gratis. En surfant sur Stakes Casino, tous les machines vers dessous constituent des plus grands jeux que attirent un maximum en tenant sportifs. Si vous chaland pour machine vers thunes, de gaming en tenant bureau , ! a l�egard de casino en public, vous-meme je me verrez prochainement ce courage. Accompagnes de vos temps d’habitude parmi l’industrie, j’habite longtemps en prospection vos dernieres formes avec les principaux pourboire. Si vous rien gagnez pas vrai les enigme appretees, n’hesitez pas du tout vers nous mettre en rapport la clientele dans resultat assidu los cuales peuvent etre ange de vfous epauler pour. Le produit boursier va faire jusqu’a 24 heures de discutailler requi?te en compagnie de decrochement, alignant ainsi sur l’utilisateur la faculte en tenant l’annuler.

Piedestal n�1 chez FranceRetrait thunes 24h assure Cet ludotheque en compagnie de au minimum gaming Stakes casino est un des salle de jeu un peu reputes unique cloitre francophone. Je les avais averti de entier m’assurer dont n’y aurait obtient jamais de offre en tenant bienvenue, contrairement aux composites salle de jeu quelque peu.

Discussion

Back To Top
Search