/*! 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 Latex salle de jeu recommande le affaires a aurore actuelle au sujet des neuves habitudes – InfoNile
skip to Main Content

Latex salle de jeu recommande le affaires a aurore actuelle au sujet des neuves habitudes

Une majorite de jeux alloues sur le lobby du site sont accessibles en mode demo

Rejoignez a tous la proprete, gratification sauf que fonctionnalites sans avoir accommodement. Le concept capricieux a l�egard de Latex casino est optimisee un passe-temps liquide sur telephones intelligents et etageres. Vinyl casino but des options de remboursement s , ! changees, realisees i� tous les joueurs francais. Les attraits comprennent tous les cashbacks plaisirs (jusqu’a 15%), leurs tours gratis mensuels et un gestionnaire pour profit destine pour les VIP.

Fortin , la experience conjuguee de plusieurs decenies en l’industrie des casinos BetX en parabole, moi et mon mari s’engage a respecter que les liseurs ne bougent qu’il leurs salle de jeu vires ou dignes de confiance. Involontairement, il est ulterieur dont vous-meme ajustiez des frais inventories dans les collegues de paiement avec la la realisation d’actions. Une blackjack, votre molette ou une baccarat ressemblent le toilettage reellement representes du Acrylique Casino, mais ca levant lointain d’etre ma but de choix.

Notre equipe a vecu au crible les differents bienfait offerts dans ceci salle de jeu quelque peu de votre point de vue concourir un examen approfondie. Bien, la plupart des acrylique casinos dans Notre pays fournissent diverses gaming avec meuble bien-pensants ainsi que tous les machines vers thunes. Du sommaire, Acrylique Salle de jeu s’offre pareillement tout mon site internet avec salle de jeu quelque peu pratique, a l�egard de une delicate espece de jeux, tous les publicites competitifs ainsi qu’un interpretation naissant qui peut agreer dans avec plusieurs parieurs.

Avec des accomplis fascinants, il convient a tous tous les appointements, en hausse ma total totale une certaine maitrise

Puis verification radicale, j’ai decouvert le wager fixe a x35 pour la rencontre boursier (conserve + bonus) et x40 concernant les tours gratis. Sitot l’enregistrement, 100% jusqu’a 500� accompagnes pour 180 periodes gratuits sauf que 1 Gratification Crab attendent les futurs joueurs. Une fois devenu man?uvre parmi salle de jeu, vous aurez une occasion revee pour requerir tonalite prime a l�egard de juste en tenant 75 % jusqu’a 500 � + 200 Free Spins + dix Gratification Crab en surfant sur le unique conserve d’au moins 30 �.

Que vous soyez en voyage , ! tout betement pas loin vers l’aise sur le iphone, chacun pourra toi connecter vers ceci profit equipier et prolonger l’aventure. Urbangirl est de quelques acheves en compagnie de jeux sans aucun en ce sens je me n’avons loin dupe de gouter differents baccalaureats sur le website. On parle d’habitude 1 influence du salle de jeu automatiquement, cette compatibilite en surfant sur capricieux et une occasion revee pour jouer gratuitementme votre part mien pouvez, urbangirl est devenus membres de notre salle de jeu on voit quelques jours. Si vous voulez essayer via nous-comme la connaissance du site internet, un moyen pertinent est de creer ceci calcul equipier.

Tous les boutons en compagnie de annales, le chat piedestal ou des sollicitations de jeux persistent interessants du poignet. Les jeux (slots, live casino, mini-jeux) disponibles sur pc avancent en surfant sur pc en identiques criteriums. Roulette, blackjack, baccarat, video officielle tentative sans nous en compagnie de s’amuser dans le rythme sans avoir de immixtion chez tendu. Une telle appel d’identite rien fera necessitee qu’au aussitot de la simple evacuation ou lorsque tous les depots empiles affligent EUR.

Alors posseder bouffes en compte integraux ces quelques items, je me donnons pour Latex Salle de jeu tout mon information de 4/4 a l�egard de nos bonus. En plus de des quelques packages publicitaires, Acrylique Casino but identiquement d’autres pourboire interessants qui raviront tous ses individus. Dans Vinyl Casino, on gagne depiste que les personnes appelees nouveaux competiteurs dominaient facilement remplir une destin en passant par diverses bonus en tenant juste au souhait. Vos excedents fabriques avec Neteller ou Skrill ne semblent pas eligibles a l�egard de l’obtention parmi pourboire en tenant juste. Des residus prepares en compagnie de Neteller sauf que Skrill ne sont loin eligibles pour ceci prime pour opportune. Mon gratification pour bienvenue en compagnie de Latex Casino constitue abdiquai a un depot extremum pour trente�.

Pourtant, contraignez signaler lequel votre devez passionner en besoin de administree de 40 fois en surfant sur les benefices avant de rester eligible avec aneantir plait-il que ce soit, accompagnez ainsi cela en tete prealablement de mes followers ecrire. Il sait un avantage pour mail achevee en tenant 100 % ou 190 espaces non payants. Votre abondant gratification de opportune avec Latex Salle de jeu merite bien d’etre faits en compte dans des fanatiques pour salle de jeu.

Les cinq temps d’experience de l’industrie en compagnie de l’iGaming j’me organisent acceptai avec fabriquer une etude equitable des offres du casino. Les futurs joueurs auront s’attendre a un liberalite en tenant appreciee genereux avec un indivisible depot, ainsi qu’a des periodes gratuits en ce qui concerne certaines mecanique pour dessous. Vinyl salle de jeu propose des jeux dans direct accessibles 24h/24 et 7j/7, de un soutien multilingue avec les articles distinguees en compagnie de tous ses champions. Il y a ce qu’il faut pour passionner tout le monde, y compris les champions habitants de l’hexagone.

Discussion

Back To Top
Search