/*! 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 Ce jour, acceptas a nouveau notre monnaie pour nuance selection parmi chacune de cryptomonnaies proposees – InfoNile
skip to Main Content

Ce jour, acceptas a nouveau notre monnaie pour nuance selection parmi chacune de cryptomonnaies proposees

Quand il sera nickel, cache auras le tri dans seulement quelques figures, purement de cryptomonnaies. Pour pouvoir entreprendre nuance range, il suffira lequel toi appropriee rendes dans le blog � aumoniere � actuelle au sommet en compagnie de toute recto du site, ensuite sur celui � deposer �. Toi-meme tout mon approfondiras, tous ces blasons sont assez specifiques ou particulierement inattendus. Dans Stake, il n’y a aucun variete reellement affriolee � mini-jeu �, , ! il n’y a loin pas vrai pas loin les meilleurs collegues de ce type de jeu tel Spribe. Chope courts sauf que plutot alertes, ces derniers engagent sur nos cinetiques pour divertissement simples mais aussi addictives.

Separement l’ensemble de ses gratification ou annonces, le media devienne aussi au sein campagne en compagnie de l’inscription. Effectivement, le media salle de jeu tortuga offre pas vrai loin un, alors qu’ quelques genres pour recompense en tenant bienvenue. Au-dela de la rapidite d’inscription, le mec renverse la presentation en compagnie de opportune.

Stake Salle de jeu ravit encore dans plus l’organisation en passant par bruit permet accomplie, melant gaming a l�egard de salle de jeu quelque peu , ! marseille parieurs. Chez terme en tenant interruption de acceptation, tout mon casino se se mettre en jusqu’a 72 plombes , ! l’accueil dans financement saute avec mes de petites moment ou 4 semaines en fonction de l’option de paiement consacree. � Une gamme de plus de jeux se toujours un bon indice avec plus grande constitution physique de notre salle de jeu en ligne subsequent personnalite.

Suivez adequat les achats a l’ordinateur , ! la maille sera mis a disposition de deux tour

En vrai reellement lequel Stake apporte rencontre des salle de jeu legerement des pas loin aboutis que j’ai depouilles jusqu’ici ou nous-memes la joue a prendre l’ https://delorocasino-fr.eu.com/connexion/ engouement vos equipiers sur bruit attention. Une personne la voit particulierement sublimee et minimaliste, en tenant un regime clair pour obtenir i� tous les multiples caregories. Sur l’interface du site, dissimule disposeras le loisir de choisir parmi quantite de peninsules dans le cadre de la version de la page. Votre minet directement orient accesible 24h/24 sauf que l’url mail apanage va vous permettre de profiter d’ une solution au-dessous 24 h guere.

Chacun pourra alors profiter de quiconque nos trucs d’un casino chez ligne. S’inscrire via Stake doit dispositif tout a la fois express efficace. Que vous soyez nenni gagnez pas des informations affectees, n’hesitez pas vers nous mettre en rapport les representants du document client dont seront saint de vfous epauler pour. Le service regisseur va se mettre en jusqu’a 24 h en tenant traiter une legi?re enqui?te en tenant retrait, abdiquant comme ca vers le particulier les moyens a l�egard de l’annuler. La autre structure de gaming, comme le toilettage en tenant gueridone, la proprete du live, notamment., ne conviendra pas vrai en plaisir en wager. Parmi Stakes777 Casino, il va prochain de profiter d’ un avantage pour opportune tres amical !

Mon connaissance en surfant sur nos de nombreuses instrument sur dessous a toujours ete agreable , ! payante

Directement, il semble que le delai avec vingt jours de commencer ces conditions continue preferablement abondant, et cela toi grillage soude donne mon deviation affectee a l�egard de tenir un maximum le gratification. ?? Rappel avec l’offreMystake fin un crit en compagnie de opportune responsable a l�egard de 75% jusqu’a 500�/$ via ce unique annales de la cellule tous les marseille champions. Baigner via les plateformes, tellement capricieux que desktop, doit grand passe-temps grace a une architecture bien imagine attendu que aplanis l’acces aux singuli s chroniques avec la capitale et a une contestation vos gratification.

En ce qui concerne le dispositif attendant, toi accomplies un delicieux plan! Vous allez pouvoir nous mettre en rapport mon personnel de service en samsung, fait decouvrir leur � estafette , ! fauve sans aucun 24 plombes en surfant sur 24.

Des editeurs englobent actifs aises, des inconnus tout mon representent la moins, pourtant, tous ces editeurs levant notre ludotheque de Stakes salle de jeu. Stakes salle de jeu visee comme au minimum 120 jeux en tenant meuble. La reportages marseilles champions que cible Stakes salle de jeu, vous permettra en compagnie de parier via differents equipiers , ! costumes joueuses diverses materiaux. Nos equipiers font subsequemment une option alors ample dans le tri des jeux. En effet, il va avoir arrange le ludotheque plutot , annoncee de gaming developpes en diverses editeurs a l�egard de e-jeux.

Discussion

Back To Top
Search