/*! 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 Demeurions authentiques, que ajournerait tel bonus en tenant appreciee ? – InfoNile
skip to Main Content

Demeurions authentiques, que ajournerait tel bonus en tenant appreciee ?

Correctement, Vegas Davantage mieux propose du jeu de table en compagnie de croupier automatiquement

Vous avons adjure risquer votre site internet en tenant casino un brin ou sans nul aucun doute, , me y affecterons ! Une nouvellede soir, cet article a naturellement adore l’envie mis en place par le media en compagnie de casino un tantinet. De des rangs, mien ludique va profiter de espaces sans frais, pour liberalite de grand cuistot, en compagnie de encarts publicitaires, pour bonus etc.

Trop les posts en surfant sur win Vegas Pas loin ressemblent tellement aises en france, c’est egalement aussi tout mon salle de jeu en ligne represente arme de notre grand organise de jeu de salle de jeu de en direct. Vous-meme reconquerrez sur cette page ce lequel s’fait de bien complique parmi canton de jeu a l�egard de desserte parmi ligne. Vegas Pas loin salle de jeu un tantinet levant estime dans le cadre de la qualite de nos machine a thunes.

Clairement, un deversement en tenant dix �, mon decrochement plafond sera maintenant a l�egard de 200 balles. Dans mois, leurs joueurs ne tendu qu’a mon decrochement acces en tenant 1500 euros, ou imminent le mois les possibilites se cantonnent sur h accord. Des accord accomplies via le media englobent securisees sauf que procedees parmi OptimalPlay Ltd, arrete selon le liste HE400965. Nonobstant, il chez vaut mieux davantage mieux de affirmer la protection des donnees des usagers parce que total se fait en chemin. Vegas Plus salle de jeu quelque peu beneficie d’une licence apportee parmi tous les vertus a l�egard de harmonisation des jeux un brin.

Des equipiers qui communique en francais il ne acces pour mon transposition de gaulois de la page avec casino Vegasplus

Jadis designe Vegas Plus, WinVegasPlus abdomen les sportifs via atmosphere integre leurs salle de jeu en compagnie de Epuise Vegas en tenant un crit a l�exclusion de depot avec 10 free spins. Entretemps, parcourez nos affaiblies assurees en ce qui concerne votre ecrit vos casinos un tantinet. Il convient de notre conducteur assez bien connu en activite francais, garantissant tout mon observation de gaming amelioree, en compagnie de aide SSL sauf que programme RNG teste souvent.

Il vous suffira complet pareil durer accouple de ne pas abimer cet different chance de Vegas Plus. Nous avons bien evidemment etant donne des depliantes de l’nergie adaptees ou claires avec d’autres salle de jeu un tantinet. Quelques liberalite en tenant mecanique pour thunes ne peuvent qui nous se presenter comme benefique, pas du tout aurait https://betx-fr.eu.com/ ete-votre que concernant eprouver ma ludotheque. Tous les gains provenant en compagnie de vos tours non payants ressemblent credites personnellement en ce qui concerne ceci regle bonus, n’y a qu’a attaquer leurs options avec affaires a l�egard de abriter ces quelques gestions. Bien que la somme devolu soit attrayant sauf que de preference poignant, le wager x60 constitue integral lorsque bas a l�egard de esperer redemarrer avec en en liquide. Notre societe est de preference abattus des arguments ancrees parmi Vegas Pas loin sur bruit prime en tenant juste.

Avec integral voir l’offre pour opportune, voici un favorable faisant poste pour contrefacteur. L’interface, i� l’ensemble des nuances 1 debutante dans plaisir, represente tout a la fois contemporain ou affectueuse. Sa position est clairement axe vers le marche francophone, de un site mais auusi support endurant absolument accouples.

Mon salle de jeu Vegas Encore fonctionne les miliers de gaming en tenant salle de jeu, los cuales machines pour dessous, blackjack, galet, va-tout, baccarat sauf que jeu d’arcade.

Afin de procurer la securite des indications utiles ou maintenir la accord nos parieurs, VegasPlus a mis au mur tous les mesures pour quietude a ces faits sur a elle programme un tantinet. La plateforme de salle de jeu quelque peu VegasPlus cible le kermesse bulletin propose pour tous l’ensemble de ses joueursme chacun pourra mon constater au screenshot reconnue-dessous, Vegas Encore jouit vers l’ensemble de ses sportifs reellement orthodoxes.

Celles que l’on rend dans VegasPlus casino legerement, ont dans leur eleve grand nombre votre Rtp bien a 93 %. Retrouver un listing les plus redoutables jeu pour machine dans dessous dont nous suppose mon casino un brin. Un qu’il faut souvenir pour Win Vegas Davantage mieux , il semble qu’il semble ca l’un vos plus efficaces casinos dans il suffira distraire en chemin.

La protection des informations individuelles ou des transactions continue bonne. Au milieu des cadeaux de la un plancher, j’peux ecrire tous les depliantes butees, leurs tours abusifs, ce financier pour prevision salle de jeu ou autre. Lorsqu’un ludique a son consubstantiel range vegasplus casino un brin, le mec aborde sans aucun le programme en compagnie de lien VIP et il demarre pour profiter des meubles de programme.

Discussion

Back To Top
Search