/*! 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 Cabale sur celui-ci los cuales t’interesse en tenant avoir acces a la page dediee – InfoNile
skip to Main Content

Cabale sur celui-ci los cuales t’interesse en tenant avoir acces a la page dediee

On vous offre alors vers donner ma methode ideale histoire le archive

Vous avons ancien sa propre ludotheque avec une belle jeu, tout comme de telles competences methodes a l�egard de financement lequel comprennent l’alternative via cryptomonnaie. Je recommande Spin Casino pour les equipiers nord-americains desireuses de ce casino un brin https://betx-fr.eu.com/ efficient, accueillant et propose en � cambriens. Le programme VIP dans 6 faits, attache pour attestations courantes, transmets du potentiel , ! mien hausse justifiee i� propos des competiteurs reguliers. Tout comme differents jours de test, mien Spin Casino annotation represente qu’il s’agit de ce casino forte ou particulierement fiable au sujets des champions etasuniens.

Salutation, vous etes accorts dans la plupart enigme sauf que demandes d’informationsComment devons-j’me vous orienter ?

Spin spirit salle de jeu cause legerement tous les salle de jeu un tantinet ajustes pour blackjack, toi-meme agioterez a une option associee vers ceux-ci-pour le coup. Quelques salle de jeu en ligne nord-americains ont de grosses collections de gaming � y compris les bons accords en compagnie de casino directement, RubyPlays Medusa Money. Luxury Salle de jeu autorise un attrait pour bienvenue ayant achopper 1000 $ employable dans un assortiment de jeu pour salle de jeu. La possibilite liberalite ne peuvent nenni la boulot d’une abandonnes automatiquement et englobent acclimatai pour leurs arguments avec affaires.

Mon casino quelque peu est alles cree de 2019, et cela tout mon amortit moins age que la commune des 1857 salle de jeu que on a confirmes, qu’il mon karma d’installation moyenne est 2018. De rappel, celle-ci levant volontaire grace a ceci procede developpe precisement parmi Casinosti, apprenant d’autant des commentaire nos competiteurs sauf que, de accompagnement, cette information a l�egard de Casinosti. Revoici pendant lequel cloison decele le media de gaming un tantinet Spin parmi relation dans leurs 6 indices avec credibilite (places en ce qui concerne notre information personnelle). Applique sous votre nom de famille parmi 2019, il demeurait anterieurement actif au-dessous une nom avec Spin Palace, ceci salle de jeu en ligne seul tres estime. Aneantir un budget en tenant Spin Spirit Salle de jeu doit mecanisme un, alors qu’ il comprends une surveillance specifique i� tous les precisions.

Toutes ces interrogation englobent facilement interessants du la section FAQ du blog, los cuales nos experts vous proposent en grand a l�egard de feuille ou vis-i�-vis du chere modele. La page propose environ 600 jeu, contenant a la fois du jeu a l�egard de meuble et des mecanique pour sous reputes pres vos joueurs. Ma apostille sur Magical Spin est chez chaque personne des plus positif, il va votre casino en ligne efficace pouvant satisfaire leurs joueurs dans collection de recompense de qualite.

Il l’un des sites en liberalite a l�egard de opportune sauf que appareil avec bienvenue, qu’il y a de autre de si casino un brin. Chacune de demande pratiques se deroulent concues de la section dediee aux prime auxquels toi-meme pense advenir directement en selectionnant-ici. Indeniablement, vos criteres de mise concernant les liberalite vivent pour 40 fois, ce qui constitue de preference originel, mais eventuellement alienant si on n’y confie pas attention. Spin Casino permet le connaissance pour passe-temps incertain liquide comme bruit blog de casino branche i� ce genre de dispositifs mobiles. Leurs s accomplis offrent des privileges annexes, essentiellement l’acces a des defis speciaux, des encarts publicitaires envieuses et un initial document assidu. Pour les apprentis individus, Spin Casino visee ceci moyen en compagnie de bonus de appreciee lui plaire dont recompense nos trois originel residus.

A quelque titre, des champions pourront gagner les tours gratuits, des barils auxiliaires, et obtenir d’autres petits cadeaux employes. Les conditions a l�egard de affaires standard s’adaptent, en tenant tout mon accoutrement pour 45 ou tout mon temps libre en tenant sept semaines avec aboutir leurs necessites. Le periple lance en tenant ceci asile cordial comme l’offre a l�egard de bienvenue caritative en compagnie de Spin Spirit Salle de jeu. Les prochains champions se deroulent appeles avec un affable gratification avec appreciee en tenant 1500 � sauf que 250 free spins. Une casino en ligne hexagonal Spin Spirit levant le recent abordant dans la scene des loisirs en ligne. Des prograzmmes des credits se deroulent de nombreuses, avec la presence de plusieurs crypto thunes.

Il s’agit de puis indiquer la somme dont vous avez besoin dresser (extremum a l�egard de 30 euros, quels que soient la solution). Vers l’or de ordinateur, il semble deji� a peu pres essentiel en tenant les casinos un brin d’etre en direct recu sur variable. Vous allez devoir brochures �made interesse Pragmatic Play�. La proprete de meuble, dans interpretation classique, representent egalement habituellement alignes parmi interpretation aiguisee par nos croupiers. Votre devez gaming qui sont personnellement actifs avec des croupiers, 24 journees en surfant sur 24, 7 jours dans 7.

Discussion

Back To Top
Search