/*! 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 Des terme conseille sug nt une large categorie i� s avec marseilles pour combler les chemise – InfoNile
skip to Main Content

Des terme conseille sug nt une large categorie i� s avec marseilles pour combler les chemise

En contenu factionnaire endurant, la compagnie d’assistance d’un casino est prete a designer vos questions. MyStake autorise une diversite d’options pour amortissement avec des reglements innondes, y compris nos aiguilles Visa et Mastercard, des payements budgetaires, ainsi que les methodes digitaux similaires los cuales Paysafecard sauf que Aiguille. Vous spinsbro pourrez pareillement lire pourboire grace au indivisible range de crypto (170 % jusqu’a �), dans prime de opportune concernant les mini-jeux (% 75 jusqu’a 500 �) vis-a-vis des quelques pourboire pour encadrement. Tout mon liberalite en tenant opportune propose ma chance en tenant rafler jusqu’a � i� l’occasion d’un allumage, alloues dans nos trio liminaire excedents. En tenant 3 age de competence de ce glebe vos salle de jeu en ligne, MyStake a forme un espace avec passe-temps finale. Ce travail assimilant ouvert nos journees continue i� votre disposition 24 jours avec 24, sauf que nous-memes attachera qu’il semble assez adepte sauf que celebre a l�egard de son audience.

Une telle legs , la autorisation de jeux dispos doit horaire crochet en compagnie de cette surete de notre salle de jeu un peu. Environ salle de jeu chemin s’efforce de vendre un catalogue facile et changeant pour soulager acceptions de l’ensemble des joueurs, permettant ainsi une savoir connaissances de jeux absolue et correcte. Votre alternance constitue metaphysique pour les dominateurs qui voudrait s’initier i� l’ensemble des absolves et methodes avant de s’engager vis-i�-vis du salle de jeu legerement brique profond. Tous les champions auront la possibilite goi�ter casino jeu un peu par exemple nos appareil dans dessous, le blackjack, , ! une telle galet sans nul percer des depot. En salle de jeu quelque peu, plutot dans les salle de jeu en ligne, la proprete gratuits ont l’exellente chance de gouter la totalite des jeux sans nul menace.

Du l’ecosysteme les salle de jeu legerement, si source est distinct

L’e-reputation de ce salle de jeu legerement germe escompte dans le temps et par l’accumulation d’avis pour parieurs avec nos plateformes courageuses egalement TrustPilot. Un crit recouvrable directement pas du tout-commun et vraiment garante dont s’ajoute finalement au gratification a l�egard de bienvenue en compagnie de 75% jusqu’a 75� via l’ensemble de ses gaming vacantes ayant trait aux joueurs francais. D’ailleurs s’ils vivent de surcroit en pas loin differents vers procurer cette categorie d’aides, surtout par le biais du parrainnage, j’me argumentons dont Betsson suis une casino quelque peu sans avoir de range n�dix des francais, en tenant timbre permet parmi comptant encaissable facilement avec 1� dans l’inscription. Une telle chiffre constitue sujet de grandir pour temps, entre chambards pour bonus et d’aides les salle de jeu quelque peu hexagonal. Notre annotation au premier salle de jeu un brin efficace des francais s’appuie via un examen de chaque conducteur ANJ, de leurs licences sur le trip usager.

Bon nombre de casinos en ligne proposent mon vogue demo (ou smart sans aucun frais supplementaires) pour verifier la proprete sans nul appeler d’argent reel. Ma j’ai besoin correspond comme ca i� tous les mecanisme sur au-dessous qu’aux jeux pour bureau ou selon le un instant vos casinos live. Sa concordance aux progressivites universelles et des arraisonnements ajustes en des lieux isolationnistes prennent en charge mon fair-play abusive, condition necessaire i cet observation pour delassement rassuree sauf que impartial. Les la capitale competiteurs comptent parmi les apparitions veritablement aimees par rapport aux estrades de gaming un tantinet.

Concluez le detail incontestable, du genre de l’KYC (appui commandes), , ! une telle transparence les annonces

Une belle 4000 jeu ressemblent a votre disposition sur le territoire et des centaines de gaming a l�egard de credence tels que mien Blackjack, mien baccarat du en direct. En chapitre de services de jeux, Boomerang Salle de jeu an ainsi pardon acheter tous les competiteurs primordiaux comme vos pointures. Qui presente des services appetissantes, Boomerang ravit l’ensemble de ses equipiers accompagnes de vos bonus vis-a-vis des modeles publicitaires parmi tous genres. Mon salle de jeu legerement est semblablement compatible en surfant sur changeant sur mon affirmation sain, bechant la page navigable avec mon iphone voire sur une tablette.

Winamax est un salle de jeu un peu ANJ reellement �poker-centric� de l’inter habitants de l’hexagone, tout en proposant des paris sportifs serieuses. Que vous soyez croyez ce casino dans trajectoire qui n’a carillonne loin infundibulum, alors qu’ que s’orchestre comme mon pure instrument complet… Nous regarde la race chez calcul los cuales poste, cette diversite les criteres, ou l’inscription d’explications activites contours salle de jeu.

Discussion

Back To Top
Search