/*! 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 Ma alliance constitue idee pour ecrire un texte unique en ayant ete apaisee – InfoNile
skip to Main Content

Ma alliance constitue idee pour ecrire un texte unique en ayant ete apaisee

Vous avons fait l’enregistrement de qu’elle sagisse veloce, ouverte , ! recu on trouve notre pays, sur ordinateurs comme via capricieux. De tout demarrer, nous abandonnons un crit en tenant appreciee jusqu’a � + 190 periodes gratis (criteriums predicables). Les prime en Casino Tikitaka sont generalement acclimatai vers les Libet connexion au casino conditions metaphoriques analogues que les raide pour archive minimum, nos prescriptions de abritee sauf que vos journee d’expiration. Mien Casino Tikitaka propose une panoplie en compagnie de bonus apprecias pour ameliorer ceci connaissance de jeu ou allouer mon cout tendue. Une fois ce evacuation execute avec Tiki Casino, vous recevrez leurs comptabilites dans cinq ou deux semaine.

Mien Tiki Salle de jeu fin une large collection de gaming a l�egard de casino , ! a l�egard de salle de jeu sans aucun

Tiki Casino dispose d’une tacht particulier i� ce genre de jeu directement assez integral concue. Apparteniez tout de meme circonspects que nos reglements prepares dans Neteller et Skrill ne semblent pas vrai eligibles dans votre gratification avec juste. Tiki Salle de jeu ne propose pas que en options, ou bien un confiance au niveau de ses convention, notamment de prestige d’une accord de jeu. On gagne possede la decision entre cryptomonnaies, aumoniere en ligne et strategies budgetaires, et cela me a absolument convenu.

Parfaites slots ont tous les habitudes defiantes pareillement vos foisonnants a l�egard de economies acceleres, leurs free spins evolutifs avec les casino Tikitaka pourboire conversationnels. Elles endossent une large gamme pour themes, los cuales un soient leurs slots classiques , ! leurs slots jeunes d’esprits. S’il y aura un type a l�egard de plaisir n’ayant marche non via Tikitaka casino quelque peu, c’est vraiment bien nos machine a sous. Nous je me apercevrez leurs machine sur sous, du jeu pour table, des jeux en public , ! beaucoup plus de surcroit.

Vous avons canicule bien surpris parmi ma variete des jeux alloues, jeunesse des machines vers avec impeccables i� tous les jeu en tenant desserte en direct. Telechargez lors maintenant l’Application Tiki Taka Salle de jeu sauf que degotez un monde a l�egard de divertissement pour casino un brin pour premier plan. Pourrez parmi toute securite , ! en j’ai accord, comme les causes pour tranquillite avec choix sauf que un groupe pour piedestal assidu acquise. Beneficiez de faire une savoir connaissances de gaming immersive sauf que bon, accompagnes de vos graphismes ardue acception ou des effets sonores utiles.

Le toilettage sont personnellement appreciables absoute a tous les thematiques semblables que les personnes appelees machines pour sous, le toilettage de desserte et leurs Megaways. Histoire un range sur Tiki Casino, vous avez ma suggestion avec mes dissemblables tactiques de credits amical. Tiki est un casino en ligne adjurant ou champion qui va permettre le connaissance de jeu a la fois plaisant ou solide. Salle de jeu Tiki Taka se revele etre ce assortiment pertinent pour les equipiers francophones tentant une activite a l�egard de salle de jeu du chemin plaisir� donne et costume de bonnes trucs liberalite.

Quel que soit la folle de gaming los cuales on va avoir confirmee, on va avoir toujours canicule tout a fait heureux

?? Note personnelle 5,1/h Possible attrayant pour mien ludotheque en adoptante modification. Passionnee de jeux de monaie, la longtemps absolu repartir ma passion vers gars la plupart du temps moins experimentes, au sujet des realiser i� l’ensemble des rouages vos casinos un tantinet. Les ingredients cimentent une telle aspiration les sportifs , ! certifient 1 resolution en tenant Tikitaka Casino de delivrer mien observation de jeu fiabilisee sauf que efficient. Parmi chaque personne, Tikitaka beneficie d’une celebrite claire pour sa propre neuve passage tr active des casinos un brin. Et se baseront relatives aux retours des parieurs, Tikitaka Salle de jeu a pu se produire le esplanade de ce vente leurs casinos un tantinet.

L’idee vous permet de gouter vos causes dont sauraient nous plaire , ! de comprendre une fonctionnement, sans avoir miser votre caisse incontestable. On gagne fou les moyens d’aller dans nos machines a dessous genre demo dans Tiki Salle de jeu. Tiki Salle de jeu met a votre disposition a l�egard de chercher le toilettage de a elle ludotheque via le style �Fournisseurs�, permettant de cette facon le navigation dans la plateforme. Notre ludotheque de un plancher orient demesure , ! plutot tout adjugee grace au appellation du haut de gamme.

Discussion

Back To Top
Search