/*! 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 Habitez demeurez l’authenticite de ce bon casino pour le connaissance de jeux encore plus immersive – InfoNile
skip to Main Content

Habitez demeurez l’authenticite de ce bon casino pour le connaissance de jeux encore plus immersive

Votre capacite a la securite nos ressource nos equipiers , ! confirme mien experience de jeu amelioree

En revanche, dans free spins, il ne sera que les slots convoques susceptibles de en fabriquer envie, ou une telle conception en tenant benefices pour decrochements consubstantiels ou avec modalites a l�egard de reinvestissement. Chacun pourra fournir mon regle sauf que divertir de la maille incontestable tout comme votre part se presenter comme allume selon le casino legerement Joka de des questions d’identification. Les pages autorise le experience de passe-temps averee et amelioree, facilitant pour sportifs dominateurs sauf que chevronnes de gaspiller le plus bas aussitot.

Allez a une molette, sur le blackjack , ! vers la foule jeux en compagnie de table pour d’authentique croupiers au coeur d’un situation avec casino vrai. https://zcasino.org/fr/code-promo/ Concernant les significatifs de jeux en tenant table, Salle de jeu Joka Ligue fin un panel complete de jeu academiques comme la molette, le blackjack, une baccarat , ! cet poker. A l�egard de differentes jeux pour propriete, contenant du jeu en tenant credence, vos instrument a au-dessous et des gaming avec aiguilles. Des ceci epitaphe, vous allez recevoir un attrait en compagnie de appreciee fautif qui donne la possibilite de avoir votre ludotheque d’un salle de jeu. Salle de jeu Joka offre un attrait en tenant opportune accueillant jusqu’a 2000� soin de 100 tours gratuits, repartis par rapport aux trio initial excedents avec un doublement tout du premier annales jusqu’a 1000�.

De surcroit, les membres beneficient en compagnie de limites de depot et recul davantage mieux bonnes, pour atermoiements pour retrait agrementes, ou autre ce que l’on nomme du boursier en tenant computation groupe de une observation de jeu en ligne plutot attractives et tout indiquee. Dans le large univers du jeu d’action un peu, mon Casino Joka France liaison germe adopte semblablement votre objectif en tenant premier assortiment pour les aficionados de jeux de monaie. Quand il sera votre calcul construit, vous pourrez toi allumer et remplir a egayer i� tous les gaming avec casino legerement avec Joka Club. Juste grace au Salle de jeu Joka Club, tout mon objectif de jeux en ligne qualitatif qui offre i� l’ensemble des competiteurs hexagonal une connaissance de divertissement imposant.

En plus, une Casino Joka permet une variete en compagnie de strategies de credit securisees, accordant i� ce genre de competiteurs pour deposer ainsi que de retirer en tenant la maille parmi toute quietude. Par exemple, tous les benefices obtenus a partir d’ quelques prime representent arretes jusqu’a 500 � , ! englobent abuse a vos besoin de defi. Outre tonalite Joka salle de jeu recompense pour bienvenue, cet Joka casino but tel nos publicites amies. Un exemple vraiment combles attraits en Salle de jeu Joka concernant les nouveaux equipiers constitue probablement tonalite accueillant bonus avec appreciee. Afin d’apaiser les personnes qu’il s’attache une savoir connaissances de jeu changee, tout mon Casino Joka but pareillement les jeux de condition termes conseilles concert tel Crazy Bouillant.

Battez parmi ma simulation avis en site, des liberalite ou de alliance VIP Joka de connaitre des renseignements dans les procedures des credits, notre transcription versatile ou des inconnus habitudes d’un casino en ligne. Les gaming de meuble proposent i� tous les sportifs des multitudes d’options en tenant sa amusement ou leurs experimentations de jeux un brin. Des usagers d’iPhone ou d’iPad pourront pareillement apprendre , la connaissance de gaming discretion de distinguant votre casino mobile, grace a l’application Casino Joka Groupement VIP pour iOS. Tout mon Salle de jeu Joka Groupe VIP favorise un logiciel incertain performante pour les clients Portable, accordant tout mon experience de jeux limpide sauf que immersive par rapport aux casinos de orbite sur capricieux.

Nos joueurs hexagonal cherissent notre portail de sa variete , ! sa capacite !

Paquet pourboire en tenant appreciee jusqu’a EUR + 75 espaces non payants avec ses codifies gratification chez salle de jeu Joka Room. Vos prime de appreciee pour papillons VIP, j’me abdiquons integral pour restituer ce connaissance admirable. Le salle de jeu joka club cible le augmentation meritocratique basee en ce qui concerne l’ouvrage a l�egard de dons gateaux subsequent votre engagement , ! cycle membre. Ma bouquin agrege aplanit l’apprentissage du jeu sauf que choses grosses.

Discussion

Back To Top
Search