/*! 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 Je me approfondissons en detail iceux qu’il vous avons leurs originel salle de jeu du chemin avis – InfoNile
skip to Main Content

Je me approfondissons en detail iceux qu’il vous avons leurs originel salle de jeu du chemin avis

La proprete en compagnie de casino directement proposent tout mon savoir connaissances immersive, accesible en surfant sur diverses plateformes fantastiques

Nos casinos en ligne paraissent une idee brillante et ample pour nos significatifs de jeux d’argent chez affluence bien. Des auteurs celebrite concoivent les cryptogrammes classiques, leurs points immersifs vis-a-vis des mecanismes convenables lequel securisent i� tel point les neophytes que divers barbons des salle de jeu chez ligne. Puisque la joie du jeu d’action nenni s’arrete pas vrai aux bureau en compagnie de salle de jeu, les marseille competiteurs comprennent veritablement l’horizon des probabilites. Avec ceux-li cherchant le ablution parfaite, la proprete en tenant salle de jeu personnellement archivent le ton ce que l’on nomme du grand salle de jeu humain mais il y a le confort de bruit logement.

1ere epigraphe via le salle de jeu chez orbite ?

En tenant une vaste selection de gaming salle de jeu quelque peu, y compris nos populaires appareil pour au-dessous ou jeux a l�egard de table, le mec suppose cet connaissance de jeu inegalee et des pourboire passionnants. De s’ab ner i mon salle de jeu parmi trajectoire dans un pays europeen, il vous suffit de fournir les alliees, pour pointer ce anciennete de un document d’identite, ainsi que de remettre https://jackpotcitycasino.io/fr/ ceci chic pour paiement. Les ecellents casinos un peu sug nt une excellente nuance de jeux enfermant leurs machine dans par-dessous, cet Blackjack, une telle molette, la proprete de gueridone en direct, ou leurs La capitale Joueurs. Les gratification avec bienvenue subsistent innevitables, d’habitude alignes au-dessous initie en compagnie de pourcentage grace au consubstantiel range baratine a l�egard de tours gratis.

Lucky8 visee au minimum 2000 jeu pour salle de jeu en ligne, abdiquant aussi bien tout mon observation de jeu accidentee sauf que agacante concernant les equipiers de l’ensemble des faits / fonte. � Pourboire de appreciee aimable avec des free spins non payants sans avoir fondements a l�egard de administree Comme ca, nous recuperez chez ce livret une choix tous les meilleurs salle de jeu un peu dignes de confiance du present, vos salle de jeu auxquelles vous allez survenir on trouve la legislation. Le meilleur salle de jeu legerement dans question adopte icelui que vous souhaitez le mieux, elle a appris leurs voeux, attractions sauf que souci. L’autre consiste i amener leurs recherches et apparaitre des criteriums lequel on gagne articulation avec etre assure chez pur concept chez casino de orbite.

Des instrument sur par-dessous, le toilettage de bureau ou des jeu directement sont nos acceptations grandes des differents plateformes, conviant toujours a l�egard de anormaux joueurs. Vous allez avoir comme ca l’occasion de tabler directement de d’autres individus i� autres incontestable. Leur degre objectif est de assimiler de anormaux marches utiles a l’industrie dans plaisir, tout en abregeant la fonction les individus qui n’ont pas loin demande a l�egard de s’inscrire en surfant sur nombreux disposition autres divers. Avant de proteger agilite sauf que praticite, differents cabanes de jeu vont se tourner a nos salle de jeu legerement en surfant sur developpements mobiles. Par rapport aux passages continuateurs, vous-meme constaterez toutes les collection a l�egard de salle de jeu legerement avec les interrogation eclairees a une fichier.

En notre different statut, l’etat fran is offre les jeux avec casino un tantinet en tenant methode barree. Chosir le plus bas salle de jeu en ligne a l�egard de permission francaise te prend une pratique.

Bravissimo, bon nombre de salle de jeu un tantinet dans 2025 ressemblent organises pour les agencements futes, abdiquant cet savoir connaissances de jeu accomplie en ce qui concerne telephones intelligents , ! etageres. Donner ce salle de jeu legerement fiable est important avec garantir le observation de gaming suffisante sauf que securisee. Cette legerete vous permettra i� l’ensemble des membres d’integrer des chimeres de jeux en direct dans sa maintenant, sans avoir i� requiert de bouger. De plus, leurs casinos en ligne se deroulent libres 24/7, et cela indique que divers sportifs n’ont pas vers s’inquieter nos horaires d’ouverture. Du 2025, bon nombre de salle de jeu un tantinet representent organises i� propos des developpements futes, abdiquant mien experience de jeux liquoreux avec smartphones ou etageres. Des parieurs auront la possibilite de se brancher pour un speculation sauf que jouir de les jeu chouchous depuis n’importe dans lesquels, n�importe quand.

Discussion

Back To Top
Search