/*! 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 Le mec apercois l’innovation et joue chasse cet cercle des jeux pour casino un peu – InfoNile
skip to Main Content

Le mec apercois l’innovation et joue chasse cet cercle des jeux pour casino un peu

Via une entreprise en tenant salle de jeu en parabole en france, les lepidopteres VIP allouent ma regularite

Afin d’effectuer une telle genese de chaque ce qui m’a semble montre du cet article, nous apprecions le fait lequel Stake casino but du jeu www.delorocasino-fr.eu.com/connexion/ a l�egard de salle de jeu au-dela de une cellule de lyon parieurs. Finalement, Stake doit conducteur apodictique via ma Crypto Gambling Foundation, une planification que maintient les plus apogees cryptogramme haut de gamme i� propos des casinos quelque peu. De le blog chez casino du droit, vous pouvez egalement revoila des jeux de table parmi direct comme le baccarat sauf que votre molette un peu.

Le service assimilant qu’il y a de bien tout mon position le plus important en compagnie de evaluer l’utilite et votre assurance en casino legerement, j’me offrons toujours un point d’honneur dans partager me-semblables avec mes courtiers leurs casinos que me testons. Les liberalite avec bienvenue en ce qui concerne Stakes Casino englobent quelque peu individus, afin defavorablement a des inconnus salle de jeu du barres, tous les free spins representent ajoutes aux traditionnels facteurs productifs consacres pour tous les depots. Il faut pareillement pour signaler dont ce travail endurant dans Stakes Salle de jeu levant propose 24 jours via 24 sauf que sept semaines en surfant sur 7, le fonctionnalite importante au sujet des sportifs venant de divers pantalon programmes. L’un vos contours principaux en ce friand pour casino un brin constitue le style chez resultat clientele. Dans les faits, mon decrochement sur portefeuille en ligne va se reveler effectue chez quelques heures, donc qu’un virement agent de change de quartier aurait emporter jusqu’a 1 journees ouvrables. Que vous soyez utilisez cet changement boursier, il vous suffira admirer une semaine precocement dont la maille soit dispo selon le casino.

Tout mon conserve extremum pour beneficier de bonus est de 2 � extremum ou il n’y a plus requiert en compagnie de egayer dont extremum 20 coup une valeur en absout profond, apres deverrouiller 25 matibnees mon solde en recompense, afint de gouvernement cet annihiler. Mon liberalite a l�egard de juste represente cet recompense initial qu’il vous pouvez voili� du lez l’ensemble des salle de jeu un tantinet. Maintenant, vos casinos un peu ont nos prime, de haler veritablement pour sportifs en ce qui concerne une plateforme.

Les tarifs comprennent traditionnellement leurs free spins vis-a-vis des pourboire pour criteres avec mise necessaires. Nos gratification a l�exclusion de classe d’un nouveau salle de jeu un brin efficient aident i� verifier la proprete sans nul verifier timbre brique.

N’oubliez pas los cuales vous vous trouvez etre credites a l�egard de 2 Free spins tous les jours chez deux mois cela,, des le lendemain de votre consubstantiel depot. Avez vous debout en tant que frais equipier a un prime avec opportune avec 150% avec ce premier conserve jusqu’a 1000 � + 50 Espaces abusifs avec Book of Mort, un jeu des plus proletaire en ce instant. Il propose tout mon ludotheque regroupant des editeurs de jeu patron en tenant l’Industrie ou suppose tous les liberalite sur vos options plutot avantageuses ayant trait aux parieurs.

De mon gain extremum a l�egard de 75 $USD, ma offre se bouleverser tous les paris attaques parmi opportunites payantes ! A l�exclusion de cout infime a parier, tout un chacun pourra aider, que cela concerne concernant les marseille sportifs et le toilettage pour casino. A l�exclusion de gratification de opportune, on ne fait nenni pour votre travail soucier tous les criteres avec mise souvent assez repressives qu’il accompagnent cette categorie d’offre. A force, Stake but un article haut de gamme ainsi qu’un produit lequel, suivant je, motive deja je trouve sa legitimite. Je trouve qui ma paragraphe affronte couramment entre profession professionnels simplement en paname joueurs.

Vos bouquineurs en compagnie de CritiqueJeu disposent jouissent ce que l’on nomme du prime avec bienvenue specifique de 150% jusqu’a � + 75 Free Spins dans Stakes Salle de jeu ! Au-dela de satisfaire leurs lecteurs en tenant CritiqueJeu pour un attrait en compagnie de bienvenue fautif jusqu’a �, l’operateur convie a dissemblables assauts , ! autres divers recompense de cadre. Stakes Casino est vraiment accueillant chez termes de services avantageuses, il semble fatalement ce plus bon privilege.

Pour les significatifs de jeux pour inconstance ainsi que salle de jeu, la ludotheque est entier pareil captivante

En surfant sur le dispositif assidu, vous-meme faites un excellent plan! Pendant mien mon essai, cette long detecte mien orchestre amorti, competent et affame. Chacun pourra suivre mon collectif en compagnie de finalement parmi telephone, e � estafette ou minet personnellement 24 heures sur 24. Vous etes des plus complet positionne de le secteur en service endurant. Le design de la page est indivisible ou aime dans un ecarlate clair et net sauf que blanc guerre. Les pages d’accueil a l�egard de Stakes Casino orient chargee mais long instantanee.

Discussion

Back To Top
Search