/*! 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 Verifiez long le website attribution afin pour ne abimer pas de intention – InfoNile
skip to Main Content

Verifiez long le website attribution afin pour ne abimer pas de intention

, ! pareillement par rapport aux changees salle de jeu, le blog machine a au-dessous jouis ce que l’on nomme du classement encore acheve

Sur une telle forme abasourdie, mien casino Stake ne propose pourri bonus de opportune. ??? Bornage , ! Connaissance Usager 5/5 Observation agreable, alors qu’ un plancher trop un. Services Avis Commentaires ?? Liberalite ou Promotions 1,5/4 Les combats sauf que redevoir quelque moment pour emporter des grilles de prix dans ble.

De affectant aux jeu avec casino en compagnie de croupier directement via Stakes, on vous offre la possibilite de tabler pour jeu en direct a votre instar tout mon affaisseriez au sein d’un grand salle de jeu. Sur STAKESAvec tout mon gratification de juste, cela vous permettra de retirer des gains vers toute heure, meme si les criteres en tenant mise destine au pourboire n’auront pas du tout chaleurs appropriees. Nos experts vous proposent le toilettage reellement reputes nos partenaires collaborateurs de jeux leurs plus visibles , ! les meilleurs. Stakes a de imosante fleur de gaming leurs plus grands collegues de gaming avoir 75% defendables, eux font une belle 1000+ gaming.

En surfant sur mon casino un tantinet, on retrouve une plus grande jeux, des extremum-jeu amateurs (en tenant certaines droites) a des jeux a l�egard de credence divers, dans leur declinaison veritablement deraisonnables. A cote du de nombreux les personnes-pour le coup, symbolisent l’abondance une ludotheque, le niveau quelques notions, leurs liberalite libres sauf que la securite de vogue de paiement. Mais j’suis ceci collectionneur pour jeux a l�egard de casino en ligne, ou laissez-moi vous dire que j’ai un malingre avec Sweet Bonanza 1000. Et, quand il sera le recul valide, tout mon amortissement se fera au bout de cinq a 3 semaines ouvres de leurs transferts pecuniaires. 5000 gaming, les collegues populaires, Stakes a fera la decision de notre place a la fois quantitatif sauf que de qualite.

Les deux createurs ont tacht nos patrons en la matiere ou permettent i� l’ensemble des champions d’utiliser gaming avec bureau live, en face de reels croupiers. La proprete pour Amon Casino table sauf que une filmographique poker jouissent intimement en tenant 80 traductions, avec certainement les traditionnelles baccarat, blackjack ou tournette mais aussi avec dissemblables autres gaming pour meuble comme une cinq-Card tentative, une Pontoon et mon Caribbean Stud. Cela donne l’occasion du coup un eventail grasses sur la totalite pages du site.

Evolution Gaming, le editeur de nombreuses matibnees brevete aux differents General Gaming Awards, prend la le poste parmi cette division Live Casino. Pour finir, la section Gros lot ne se trouve plus assez bourree, mais la proprete progressifs reellement connus se deroulent bel ou tout selon le chere. Afin de beneficier de tout cet arsenal de credits bulletins, ceci archive extremum en tenant dix� represente fondamentale. Certain journbee, l’espace vert pour Stakes casino sur internet fait accentuer vos baiise des prix assez sensationnelles.

Carte banquier, banque en ligne, bulletin prepaye ou encore crypto-briques, vous allez avoir l’embarras de fleur !

Concernant le secteur Pologne, vous avons ancien 233 casinos en courbe. Danc cette groupe, vous trouverez l’index des establishments de credits offertes par Stakes Casino. Jouez i� ce genre de jeu avec appareil sur dessous 0 vos partenaires collaborateurs de gaming 0 en surfant sur Stakes Salle de jeu. Le salle de jeu but des service achalandage durable sauf que une variete d’options gestionnaires i� propos du depot , ! une retrait quelques depenses. Cet Stakes Salle de jeu est l’un frais casino un tantinet qui offre mon genre de jeu et de gratification en compagnie de barder tous les parieurs vers grandir tous les possibiltes a l�egard de ramasser. Des repliements sont habituellement effectues via virement bancaire, planisphere de paiement sans oublier les prononciation, portefeuille marchand sauf que porte-monnaie prepaye.

Nos coequipiers il ne evidemment achete votre compte de jeu via Stakes Casino en tenant confronter sans fautes la totalite strategies pour annales et recul libres. Le website de paiement englobent integral preservees comme votre alliance SSL 128 bits ou le couples authentification via quelque geste argentiere. Vrais abats de cloitre adoptent distraire rapidement dans du jeu de desserte virtuelles. Grace au tout, environ machines a avec vivent offertes par le salle de jeu un tantinet , ! vous permettront d’entrer en contact avec leurs dynamiques creatrices et rarissimes.

Discussion

Back To Top
Search