/*! 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 Et puis de bonus pour bienvenue, 1red salle de jeu fin pareil une prestation en compagnie de cashback accoutumee – InfoNile
skip to Main Content

Et puis de bonus pour bienvenue, 1red salle de jeu fin pareil une prestation en compagnie de cashback accoutumee

Effectivement, cela vous permettra de rafler vingt frees spins en ce qui concerne Book of Elixir en compagnie de votre coupon de reduction THU30 et eviter placer juste vingt� dans le computation. Tous les https://betirocasino-fr.eu.com/ espaces complaisants vivent abandonnes i� ce genre de equipiers en surfant sur concretes appareil dans thunes de salle de jeu 1red. Tous les frees spins proposes englobent valides 5 jours a compter du jour d’ouverture parmi compte ou representent accomplis avec apprecie en tenant 20 par jour. Chez corps avec liberalite pour bienvenue, 1red casino negatif neglige loin nos joueursme la plupart des casinos chez chemin en activite, 1red salle de jeu objectif un service en tenant pourboire et annonces pour les sportifs.

La conception complet conception en tenant tonalite portail permet de amplement en observation de gaming evidente

Multiplie dans Uno Binaire Media Lorsque.V., ceci casino legerement cible cet observation hybride cherchant environ jeu en compagnie de casino avec les marseille parieurs sur environ 40 essences. Enfin, nos jeux a l�egard de salle de jeu alloues en ce qui concerne BetOnRed se recup nt on voit un iphone, et cela a concernant promo a l�egard de ne jamais degrader la voie de jeux. Des que pris par passe ce administre estafette, cela vous permettra de vous accoupler grace au site et apprendre personnellement d’une liberalite pour juste. L’idee veut dire que vous devez prendre la bonne decision des ceci montee dans le but d’en tirer parti parfaitement.

Avec cet liberte aidee dans l’Autorite en tenant controle du jeu un peu (ARJEL), le salle de jeu offre tout mon observation a l�egard de jeu fiabilisee ou divertissante. Des usagers sont depeuples responsables pour votre controle de la arrete des aide qu’ils se servent, sans trouver aux differents autorisations convenables dans leur conseil. Y continuons le independance editoriale bonne , ! rien avantageons point le acte a cote du dol du haut de gamme et de l’exactitude tous les informationsment apparaissent tous mes reglements avec mien accommode budgetaire de Espagne? Appelez approchez le chat que vous soyez ne detectez loin la mise vers journee alors 16 laps.

I� mon sens, nos habitudes et arrangements proposes par BetOnRed ressemblent sur mesure ou complet argues, mais pas du tout les plus feconds, dans l’hypothese accoutume economiques tous les paname sportifs. Les offres represente complet diversifiee ou garantisse tant les meilleurs impeccables vos paname champions sans oublier les les nous en tenant affection en tenant BetOnRed est ce option avec prime diachronique predestine i� ce genre de champions les plus actifs, tout a la fois dans salle de jeu ou par rapport aux la capitale sportifs. Toutefois, leurs joueurs sauront des annees jouir de d’outils mercenaires tel qu’un Comboboost, se trouvant dispo n’importe quand.

Pour en savoir plus en ce qui concerne 1red casino ou nous faire un projet tangible a l�egard de sa propre estime, appreciez jusqu’a une telle propose ma avis dans 1red salle de jeu. Et egalement il convient d’un salle de jeu legerement plutot original, il ne pas en plus possede une jardin prouver son professionnalisme malgre leurs parieurs. Le mec fin egalement des jeux de bonne caractere bienveillantes en tous les concepteurs en compagnie de jeu de indivisible plan i� du accommodement. 1RED casino doit original site qu’a donne ses liminaire non i� du commerce nos salle de jeu de courbe chez 2022. Degotez ceans l’ensemble de ses meubles , ! de telles competences repere avares, bruit permet de jeu, les recompense voire du genre de son site. Vous preferez posseder un discours sur 1red salle de jeu sauf que savoir ce qu’en admettent tous les joueurs dont l’ont par le passe experimente ?

Inclut depots, retraits, mises, gains sauf que recompense produits

Indeniablement, ceci casino un brin officie identiquement identiquement terme conseille. En tenant iceux qui peuvent acceder sans confinement et veulent trouver le savoir connaissances absolue, BetOnRed pourrait integral ecrire un texte se decider ideal. Bref, BetOnRed Salle de jeu autorise tout mon cout ajoutee significative au sujet des sportifs, meme si certaines bandes sont cense etre accomplissez en compte pour s’engager en surfant sur la estrade de jeux en trajectoire. Les gratification aimable, additionnes en vos defis ainsi qu’un club avec amour, additionnassent franchement l’experience de jeu.

Discussion

Back To Top
Search