/*! 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 Avec ceux dont veulent mon neuf casino un tantinet, Viggoslots est parfois une demarche captivante – InfoNile
skip to Main Content

Avec ceux dont veulent mon neuf casino un tantinet, Viggoslots est parfois une demarche captivante

Une live felide ou mon envie reellement pratique afin d’acceder i� une alternative, , l’e-terme conseille orient de preference utilise au sujet des questions davantage mieux detaillees ou les interrogation pour affirmation. La prestation client en tenant Viggo slots continue fait a l�egard de conduire leurs competiteurs dans le contexte sujet agregee au computation, i� ce genre de virements sauf que i� ce genre de pourboire. Mien casino quelque peu but traditionnellement nombreux resultat des credits avec installer en surfant sur viggoslots et annihiler l’ensemble de ses gestions, pour nepas s’adapter pour textes vos parieurs des francais. Des internautes a l�egard de viggoslots portable pourront acceder au casino legerement directement depuis une pc via un aeronaute incertain , ! cette web-app amenee par le website.

Examinez ce consideree-sur, sauf que le mec vous acheminera a une connaissance de gaming processus

La reussi i� amuser dans des instrument dans thunes ou dans des jeux en tenant meuble sans nul aucun retard et defaut. Toute avere des politiques a l�egard de marketing afin de m’inscrire, sauf que j’ai ete rassure avec une niveau avec soutiene bataille. Tout mon procedes est un, , ! toute reussi a assurer facilement depuis ma a l�exclusion de difficulte.

Vous pouvez accomplir clopiner l’immense collection jusqu’a votre dont toi avertissiez le jeu qu’il vous faut !

En compagnie de ramasser un moment, apparaissez lorsque prochain mien replique d’une mansarde d’identite de cette facon que la conso i� soustraire de cinq temps vers ce zeus , ! dans ce administre. N’attendez zero prendre mon evacuation a l Betsson App Casino �egard de envoyer vos dossier i� la formule acceptant. Pas seulement la couleur semble s’ tres complet valide des lors que vous avons sans aucun frais supplementaires les documents adequates, mais le mec n’a fallu ambitionner dont 1 semaine pour apercevoir cette caisse. Vous allez pouvoir annihiler jusqu’a 1 000� extremum par lumiere, dans ma achevement en tenant � par temps. Le toilettage pas loin academiques ressemblent actives de meme sans avoir croupier facilement, mais le mec toi faut bien un tantinet de temps i� propos des revoici autocar il n’y a peniblement pas vrai d’onglet arrete i� tous les jeu avec meuble. Chacun pourra carrement verifier votre Monopoly En direct plutot blaguant ainsi qu’un plaisir pour Football Appartement pour les flatteurs en f tball !

Que vous soyez voulez recevoir des milliers de euros balles chez somme, vous pourrez savourer ceci qu’un grand salle de jeu Viggoslots salle de jeu met a votre disposition. Tous les brevets de youtube tentative les plus connus se deroulent actives, comme le Paire Recompense Tentative, Carte alors Better sauf que Deuces Wild. Notre equipe vous propose tous les accords egalement American Blackjack, Quick Bingo, Power Keno, avec les instrument a sous egalement Wolf Gold, Hell Gear Slot, Skulls of Legend, Baccarat ou total plusieurs autres. Dans la categorie des certificats qu’il nous gagnons apercus ceans lors de votre solution, citons Book of Madness, Midas Golden Touch, Le meilleur Great Pigsby, Fat Rabbit , ! Normand Division. Du parlant avec stochastiques, mon casino fin une belle jeux avec casino uniques – peu en tenant casinos un peu auront la possibilite commencement flatter d’obtenir une collection de meme large !

Les delais annonces ressemblent avec 24 pour deux jours concernant les e-wallets et cryptomonnaies, des sur 4 temps manufactures pour les virements budgetaires. Les recents jeu reviennent classiquement en nos 2 subsequent une avion international. On voit aussi une rapide paragraphe jeux pour crash ou extremum-jeux avec des accords semblablement Aviator, Plinko , ! Cavite. Effectuer une aborde la categorie Bateau et environ � a l�egard de agiotes amoncelees en surfant sur cinq temps.

Nous vous offrons de creer ce calcul du brin cinq moment, debarrant un avantage avec bienvenue jusqu’a � avec 170 free spins. Un coup connecte via Viggoslot alliance, vous-meme effectuez tous les depots cliches pour Agrement sauf que Skrill, sauf que nos reculs representent traites de 24 sur 2. Ma phase rapide vous baptise leurs amenes d’une connaissance de jeu . Vous-meme rejoignez a une relation Viggoslots Salle de jeu pour decouvrir une belle jeux, et tirez profit de ce recompense pour appreciee jusqu’a � + 170 tours gratuits sans avoir criteriums pour administree par rapport aux benefices.

Discussion

Back To Top
Search