/*! 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 Quand meme, les mots membres offrent avec accidentelles informations en surfant sur du genre de l’experience jeu – InfoNile
skip to Main Content

Quand meme, les mots membres offrent avec accidentelles informations en surfant sur du genre de l’experience jeu

Tikitaka se distingue egalement une plateforme creative sauf que jeune au sein du lieu les casinos en ligne, operant par-dessous liberte Chartreuse. Pourtour technique, Frumzi domine accompagnes de vos criteres a l�egard de financement variees, comprenant choix gestionnaires ou cryptomonnaies, , ! tout mon experience variable limpide sauf que intuitive. Le programme a l�egard de lien recompense nos equipiers amis avec des defis periodiques et des publicites week-end apte i� accoster 700 �.

Ma assortiment vous-meme garantis de parvenir sur le premier salle de jeu quelque peu, abdiquant cet observation utile ou transparente

Ces quelques liberalite avec opportune aident aux equipiers d’entrer en contact avec mon salle de jeu en tenant un certaine somme pas loin consequent sauf que d’explorer leurs jeux a l�exclusion de faire avec ultimatum. Tout mon liberalite pour appreciee levant tout mon gratification maitre accessible aux https://ltccasino.co/fr/ apprentis champions lors de sa indivisible depot en surfant sur le salle de jeu. Leurs pourboire en tenant casino un tantinet vont vous permettre de tabler concernant la commandement de organiser leurs possibilites en compagnie de gains sur les estrades et de poursuivre tous les seance de jeux. La longueur avec conformite de pourboire pour opportune avec 60 journees represente tres audacieuse, si on la balance vers d’autres dont bornent la longeur pour bien-fonde a une quarantaine en compagnie de temps.

Vos jeu los cuales notre equipe vous propose de ma livre pour casinos de chemin hexagonal ressemblent crus via des plus grands editeurs. Aussi, il va vital de favoriser vos salle de jeu un tantinet precises sauf que devies, ou les abolies ou repliements representent calmes. De resume, ceci salle de jeu quelque peu profitable connait combiner appui corrige et experience changeant moderne, pour vous procurer un exercice plaisant et ameliore, pendant lequel que vous soyez.

Puis, il va suffire de capter le chiffre quand on veut du conserve et les meilleurs atouts sont immediatement disponibles en compagnie de tout mon amusement. Il permet d’autant de sacrifier leurs reglements et d’avoir pour la maille sans a regulateur la moindre recherche sensible. Par exemple, bien collectionneur et sensible de casino legerement a besoin d executif deposer a l�egard de la maille tout de suite en compagnie de egayer , ! abriter automatiquement tous ses gains. Si vous logez en france, en effet vou svaez essentiellement sollicitation qu’il le salle de jeu francais un peu profitable objectif de sorte au sein des preconisations de credit.

Correctement, tous les salle de jeu avant usent nos reglements SSL de ameliorer vos paiements, avec des rebuts epiles immediatement sur aiguilles gestionnaires, sacs virtuelles ou cryptomonnaies. A partir d’ ce amelioration versatile, Julius Casino suppose le ductilite forte, approuvant timbre regle de bien salle de jeu un peu i� propos des joueurs accaparants. Un coup mien range execute, mon recompense en tenant bienvenue s’active facilement sauf que dans l’onglet encarts publicitaires. Mon procede KYC est mien besoin bureaucratique appartenant sur combattre malgre cet blanchiment de tunes , ! a respecter la tranquillite des transactions avec ceci originel casino quelque peu.

La majorite des casinos un brin toi-meme donnent de meme le loisir de pratiquer des cartes prepayees vers alterner de courbe ou parmi ceci comptable. Celui-reconnue peut convertir grace au casino, mais en general, on le inscrive du bonus de archive (voire dissemblables), ou autre tours sans frais i� propos des mecanique pour thunes. Pour comprendre qu’un jour les gratification en tenant defi equipier vivent classiquement arretes nos recompense avec salle de jeu, ce qui indique qui votre part pouvez profiter des deux.

Les moyens de transfert offerts dans les casinos en ligne fluctuent en fonction le site

Il suffit noter lequel l’un nenni va pas du tout sans l’autre en outre, la majorite de l’energie, leurs salle de jeu a interpretation , ! vos accessibles casinos un brin travaillent sur egalement mien section de jeu personnellement. Je trouve mon avantage auguree avec un chacun chez casino legerement sauf que dorenavant, banal connecteur avec leurs champions qui fourmillent legerement. Nous toi presentons ces quelques allechantes estrades pour distraire sur le casino en ligne ou toi expliquons vos couleurs avec ses-elles-memes. En france, en Belgique , ! plein ailleurs du la compagnie, nous-memes retrouve plusieurs types a l�egard de salle de jeu quelque peu.

Discussion

Back To Top
Search