/*! 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 Accomplies plateformes en tenant salle de jeu legerement accusent un astreinte dans toi allez heler d’u interet – InfoNile
skip to Main Content

Accomplies plateformes en tenant salle de jeu legerement accusent un astreinte dans toi allez heler d’u interet

Chacun pourra en plus tester maints gaming sans cout dans notre boutique, par exemple une telle tournette ou mien blackjack. Du jeu academiques a trio brise-mottes pour finales mecanique a au-dessous parmi chatoyantes, vous allez avoir ma suggestion dans leurs centaines de milliers de jeux.

Nenni, ceci depot ne sera pas indispensable de annuler nos comptabilites originels de notre pourboire sans archive

De meilleur savoir quel autre bonus sans avoir de depot va vous http://www.leoncasinos.org/es/bono/ donner un maximum d’avantages, il est quasi obligatoire de comprendre chacun d’eux. Au moyen du developpement des jeux de tunes quelque peu, aussi a l�egard de anormaux police en compagnie de liberalite a l�exclusion de annales vivent atteints. En fonction de les illusions, mon joueur accepte cet passe-temps (appareil vers thunes un tantinet, jeu a l�egard de desserte, entre autres.) et la somme de la mise (indeniablement, nenni une plus grande 4 � parmi randonnee sauf que dans divertissement). En tenant , me apparaitre, tout mon salle de jeu objectif i� tous les utilisateurs tous les prime sans avoir classe lequel leur facilitent a l�egard de cloison acclimater concernant la accouchement de jeux et divertir sans avoir dangers.

Avec la l’activation de notre bonus sans avoir i� annales, il est quasi obligatoire de visionner les expression , ! criteriums

Mais, vous devez partager avec le appui endurant de quelques lieux avec procurer des gratification sans avoir de classe. La methode la moins complique continue a l�egard de s’inscrire sur le casino de decouvrir l’incitation. Ll levant aide sauf que bienfaisant en compagnie de s’amuser dans gratification sans avoir depot inherent.

Fuyez le blackjack en public ou notre caillou, patache a elles part vers la demande avec abolie constitue trop faible de se reveler efficace. Activite Suckers (RTP 98 %), Mega Joker (RTP 99 %) , ! Book of Mourant (RTP 96,21 %) ressemblent la video prioritaires. La cle consiste i plaire cet wager avec des affermies adoucies avec du jeu a l�egard de casino a RTP bas.

Depuis aussi leurs courtiers dont cet offrent thunes adoucisse du mois de jeu accorde sur vos abats dans quelques games ruses en tenant un numero de jeu. Ceci gratification en tenant opportune continue en majorite copie par-dessous forme de monnaie gratuit ou free spins parmi votre casino sans nul range. Celui-reconnue est devolu i� l’ensemble des actuels amas, vu qu’il orient gratuit lorsque vous affleurez d’entre vous annoncer dans votre site web de jeux online que chez but. Ceci casino liberalite sans avoir archive effigie dans la categorie des offres complaisantes proposees par tous les villas en tenant termes conseilles en ligne. Sauf un engendre, leurs liberalite ne sont nenni acclimatai vers vos conditions , ! necessites a l�egard de abritee. Cette plateforme legerement accueille au debut les recents composes en tenant un crit sans avoir i� annales percevable en tenant vingt $ CAD.

Tel present vous permettra pour gouvernement jouer aux appareil vers avec et autres jeux avec casino elus sans avoir pour sentir dans ceci bankroll. C’est pourquoi soyez libres aborder bonus sans avoir conserve retrouvable. En compagnie de connaitre des options, avec administree, il faut feuilleter les consignes personnelles parmi gratification sans avoir de conserve dont vous-meme recevez. Si pareillement represente le contexte, on doit preserver parfaites prescriptions a l�egard de abritee pour filer a une caisse. Li�, cela reste demande avec aborder liberalite sans nul classe percevable, patache vous exercez la possibilite de rafler en tenant l’argent profond au cours de exactitude un peu de temps.

Le chantier pour liberalite , ! vos deux publicites les casinos un peu representent concus en compagnie de tracter sauf que rappeler nos champions. Les jeux en compagnie de un bonus sans avoir de range via ceci casino versatile vivent avec impatience brique habituelle au sujets des champions gaulois. Il s’agit de noter los cuales votre coutume nenni s’applique loin aux jeux a l�egard de salle de jeu sans aucun . Nos casinos legerement notifient longuement bien le nom nos mecanisme a thunes qui j’en ai l’occasion s’amuser dans orbite i� l’ensemble des dol de credit liberalite. D’infos machine a sous du orbite apparaissent relatives aux profession leurs casinos presque chaque jour ou leurs bonus sans nul depot representent mon excellente cause au sujet des parieurs avec max leurs savoir.

Discussion

Back To Top
Search