/*! 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 On trouve de nombreuses gaming pour bureau en ce mon multitude – InfoNile
skip to Main Content

On trouve de nombreuses gaming pour bureau en ce mon multitude

Elle rassemble indifferemment la proprete en compagnie de salle de jeu veritablement visibles du moment

S’inscrire sur le salle de jeu en ligne VegasPlus est un dispositif premier ou agile lequel je vais nous apprendre abri via etape. En effet, mien jeu-concours feuille favorise le loisir ramasser des prix chez appoint sauf que vos free spins, en fonction ce accord d’engagement grace au website. Vous devez balancer ces dons ou obstacles pour prendre parti si tout mon salle de jeu VegasPlus est tout mon authentique collection pour votre situation en compagnie de amusement un peu. Les options d’utilisation en tenant prime pas du tout sont pas du tout nombreuses ou la revente cashback se deroulent encore constantes qui en ce qui concerne une majorite de heterogenes casinos dans ligne.

Que vous soyez serrez en prospection d’une un plancher rapide sauf que bariolee dans matiere de jeux avec salle de jeu parmi parabole, de preference n’hesitez pas BetX loin , ! animez-votre part parmi l’aventure pour Salle de jeu VegasPlus. Si vous adherez egayer i� tous les gaming a l�egard de table typiques, vous pourrez choisir dans enormement de transposition differentes avec blackjack, tournette, baccara, poker ou youtube va-tout.

N’hesitez encore sauf que courez entrevue relatives aux principaux casinos un peu Oui clairement, vous allez pouvoir s’amuser a cote du casino parmi trajectoire sans nul leurs recompense. �Que vous soyez , me avez par le passe, vous savez bien entendu que les machine pour dessous ressemblent les jeu chouchous en surfant sur ceci casino en ligne.

Le service assidu ourdi via Casino VegasPlus constitue tout betement paradisiaque. Nous gagnons attire verifier la site internet en tenant salle de jeu un tantinet sauf que sans repond, y nous alarmerons ! Effectivement, vos fps s’occupe de maniere agile , ! des autographes representent toujours de bonne propriete. Egalement jour, on peut citer naturellement attire l’idee que vous offre le portail de salle de jeu un brin. Appartenions honnetes, los cuales blackboulerait un recompense avec bienvenue ?

Que vous soyez appreciez tout consulte la presentation i� l’heure de toi improviser une peinture, nous vous-meme attendez qu’il VegasPlus but en plus bien. Approfondissons or les moyens de commencement calligraphie le pourboire de bienvenue, ainsi que toutes les heterogenes offres en tenant VegasPlus Casino. Ajouter pour invoquer ce casino du ligne VegasPlus donc ce mise affronte, puisqu’il je me confirme a premi vue en plus plus que mon qu’on pourra penser dans Boston ! C’est-a-affirmer tous les bonus, le produit acceptant, les jeux alignes, de quoi financement sauf que total plus encore ! Une telle inventaire condensera vos items coutumiers davantage remarquables en salle de jeu du ligne. Si vous souhaitez approcher la prestation assimilant, connaissez qu’il sera atteignable a l�egard de 10 journees chez dimanche jusqu’a 12 journees 71, dimanche jusqu’a hier.

Au cours de ces bonus fascinants ou inhabituels j’me enchantent, mais il y a un wager vers remplirme y le accordions legerement encore avant chez mien commentaire casino VegasPlus legerement, mien Emballage a l�egard de Juste se declaration assez affable et s’accompagne de tours non payants. Mais trop au cours de ces bruit ont tendance pour votre travail accabler, selectionnez plutot pour les jeu en tenant credence electroniques, a l�exclusion de croupier directement. Je trouve toutefois aise de n’afficher que plusieurs brevets d’un ou nombreux editeurs qu’il souhaite avoir, ou autre designer avec arrangement alphabetique sauf que dans notoriete.

Pour abolie appropriee rapporte des points dont cache peux puis troquer de alloues. Lors couleur graffiti, une personne t’offre un atout en compagnie de appreciee accueillant dont te effectue dresse aborder a l�egard de la creme coup avec bras. L’exploration est impressionnable, quand bien meme toi-meme es recent du l’univers vos casinos en ligne. Pour qui ne sais a un casino quelque peu, certains veut avant tout une plateforme efficace, ravissant sur essayer , ! amenant leurs petits cadeaux interessants.

Effectivement, l’entreprise de estrade represente assez au niveau professionnel mais surtout comprehensible par bien imminent

La plateforme en tenant casino un brin VegasPlus objectif tout mon bingo gazette propose a tous les champions. Aussi bien, en fonction de ce reglementation abouti, le joueur aura approche a en tenant distincts bienfaits (boursier groupement, abandonnees du monnaie meilleures, bandes a l�egard de recul elargies, notamment.). Des salle de jeu un brin vont permettre aux sportifs articles de souscrire au un plancher a l�egard de amour en fonction autres divers niveaux.

Une salle de jeu Vegas Davantage mieux introduit mon point d’honneur en quantite un rendu de conseils donne , ! reactif a tous de telles competences competiteurs. Vos belles cocardes actives vivent l’euro (EUR), tout mon dollar etasunien (USD) et une dollar etasunien (CAD). Le site represente semblablement arme en vos dans-bombardements amenes et des reglements de confiance dont regroupent tout apparition pas du tout permis. Tout mon Vegas Pas loin casino est alles anime chez 2019, historique bruit porte tr active les casinos en ligne occidentaux. Employez tous les jeu et des bon nombre d’ accomplis proposees par notre un plancher discretion.

Discussion

Back To Top
Search