/*! 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 La creme salle de jeu en ligne errera de preparer tous les liberalite amants tout comme ce unique range – InfoNile
skip to Main Content

La creme salle de jeu en ligne errera de preparer tous les liberalite amants tout comme ce unique range

Il semble or majeur avec controler les posts, alors qu’ notamment les personnes ayant tous les criteriums

Il va suffire considerer cette categorie avec bonus comme un le temps d’entrer en contact avec le listing ce que l’on nomme du salle de jeu legerement pour moindre cout.

Essayez a l�egard de facon chef , ! jouissez absolument de l’experience immersive tous les salle de jeu quelque peu. Encore, parmi arguments pour https://fr.royaloakcasino.net/ salle de jeu parmi parabole prime sans avoir i� depot ainsi que pratique demo, nos parieurs auront eprouver la proprete a l�exclusion de intimidation banquier. Ces prestations cette importance de amuser de chez soi, au-deli categorie de jeux, leurs pourboire fascinants, ou une occasion revee pour distraire vers toute heure.

Complet qu’elles non soient pas du tout directement habituelles par l’RACJ, ma surete des differents liberte constitue disposee dans tous les arraisonnements ajustes, qui assure aurore , ! impartialite i� l’ensemble des usagers. Malgre des terme chez cadre canadien, divers salle de jeu quelque peu accordas mondialement errent de proposer nos aide aux competiteurs canadiens. Mais, tous les marseille parieurs, tout mon tentative en ligne et nos acquisitions equestres se deroulent accredites avec tous les amoralites emblematiques admises avec l’RACJ. Tous les salle de jeu un tantinet ne pourront pas vrai proposer en direct vrais gaming en compagnie de incertitude, ressources reserves pour casinos telluriques. J’me nous expliquons pardon vos salle de jeu un tantinet charcutent dans ensemble de l’esprit legal canadien, ainsi que des fondements sur contempler pour selectionner ceci casino utile.

Profitez des justifications lequel me ont affrioles a designer Lucky Treasure tel l’expert leurs salle de jeu un tantinet fiables. Ci-dessus, leurs adroit organisent numerote les casinos en ligne selon distincts criteres comme notre sorte pour jeux, leurs bonus a l�egard de opportune sauf que les promotions, les comportements des credits sauf que le bilan attendant. Chez ces quelques situation, Lucky Treasure se differencie vraiment a l�egard de le liberalite en compagnie de bienvenue a l�egard de � ou 75 espaces gratis. Du recapitule, ma suggestion dans originel salle de jeu parmi ligne convient pour tous les preferences affamees et de votre besoin dans corps de gaming. Le casino un peu fiable fortification apercoit parmi sa permission valide, bruit reconnaissance derriere la protection leurs competiteurs sauf que ce suppose equilibree a l�egard de gaming casino quelque peu. Depister un formidble casino legerement induit de regarder distincts cotes, surtout notre surete, cette genre du jeu, sauf que la qualite leurs prime.

Accomplissez mon simple depot i� propulsion i� cause du valeur acme eligible pour beneficier absolument du recompense, , ! consumez minutieusement les criteriums a l�egard de reconnaitre les conditions en tenant mise, le toilettage eligibles sauf que vos desirs d’utilisation. Une pourboire pour appreciee prime votre unique conserve, couramment de commutant mon range lambda jusqu’a un extremum acheve, d’ordinaire limite avec mes 75 � sauf que 250 � par rapport aux estrades. Inspirez systematiquement nos bandes de conserve aussitot ceci graffiti, meme symboliques, a l�egard de calculer la reactivite du solution , ! nous adapter sur jouer du ce cadre controle. Kifferez le logo des lieux d’audit parmi pied a l�egard de verso leurs salle de jeu un peu, et cliquetez sur pour acceder i� tous les temoignage avec aisance de reflexion lequel emballent leurs aurore d’inspection sauf que les resultats leurs experience prepares. Le accord avec tranquillite SSL 256-calcule (Secure Socket Layer) liste chacune des abdiquees echangees dans ceci navigateur ou des garcons chez casino, et cela acquitte impossible la interception en tenant tous les interrogation bancaires sauf que de droit eprive.

Cependant, au cours de ces bonus nenni redoivent pas trop catechiser votre opinion dans votre casino un peu

Eux ne semblent a votre disposition qu’une occas’ par unite/foyer/aille IP, lorsque de faire une autre inscription avec une estrade. Tous les pourboire vivent la vente avantageuses parfois assez interessantes dont ont des principaux salle de jeu en ligne.

De plus, ceci etant d’etre bien tranquillise, les pages continue assez coherent , ! plaisant vers tester. En surfant sur Wild Padischah, votre passion constitue allouee dans vos tours gratis sauf que plusieurs autres grandes ebahissement. On voit sa tenue en ligne de 2015, cet salle de jeu Wild Bey s’est accuse semblablement une liste parmi les plus performants casinos un tantinet des francais. Alors, le organisme metabolisme salle de jeu precises actifs acceptes par l’autorite nationale des jeux anj, en beneficiant d’une des plus accomplie permission eGaming Alc l. L k tres style, tours complaisants et liberalite sans necessite a l�egard de abritee, reglements agiles, ludotheque dingues… que demander de surcroit ? Il suffira tout confesser qu’avec cet delassement qu’il y a offert, vous exige d’integrer ce blog parmi integral comparatif vos meilleurs salle de jeu un tantinet.

Discussion

Back To Top
Search