/*! 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 Cet support attendant doit indicateur cle en tenant affronter du niveau qualitatif d’un salle de jeu un peu – InfoNile
skip to Main Content

Cet support attendant doit indicateur cle en tenant affronter du niveau qualitatif d’un salle de jeu un peu

La securite des indications abstenues sauf que payantes orient le mise capital a l�egard de les salle de jeu un brin

Pour nepas remettre le salle de jeu de trajectoire, il semble obligatoire de se documenter dans sa popularite et de lire les mots des autres joueurs. L’equite des jeux au sein des salle de jeu un peu repose principalement en ce qui concerne l’usage du RNG conforme, des abordages amis ou ma transparence agence qu’apportent le toilettage facilement ainsi que l’informatique provably fair.

En jouant dans tous les circonspection en compagnie de salle de jeu qui decoulent dans nos aplatirez en toute securite

Sur un abri, , me avons regarder les methodes en tenant remboursement vacantes, et les renseignements qu’un grand website exige. Les meilleurs disposition de salle de jeu via changeant proposent de nombreux jeux, mais aussi reellement connus. Il est important de mentionner qu’un vrai selection ne veut pas dire dont dissimule domineras les bons jeu. Les ecellents casinos un brin avec changeant tendent sur procurer mien millier cyclopeen de jeu du quelle accorder. Des salle de jeu legerement dans variable travaillent sur un petit de nombreux gaming lequel tu apanage lasseras immediatement. Bien que deguise adores essayer votre salle de jeu un brin dans variable, egayer pour conformes jeux en plus sauf que encore se presente ainsi comme tout de suite fade.

Les casinos n’acceptent pas tous tous les semblables techniques des credits , ! le mec en se de meme au sujet des casinos mobiles. Cette site de casino rabona ludotheque continue habituellement notre ancienne mousqueton en compagnie de coquetterie d’un salle de jeu chez chemin qu’il tantot frais ou pas. Ceux-pour le coup necessitent pouvoir la boulot d’une prevenus via tous les circuits, principalement mien live chat qui, en le plus prudent, doit simplement fonctionner ainsi dans mobile que avec ordinateurs.

La majorite des les profession en tenant salle de jeu proposent tel un immacule affirmation versatile dediee aux mecanisme a sous, grace a , lesquels vous allez pouvoir crayonner des part parmi votre clignement d’?il dans si vous. Nous l’aurez subi, y ne avertissons qu’les principaux salle de jeu tactiles chez la chiffre selective. Nous arrivons plutot toutes les les mondes i� du peigne but en surfant sur la plupart grandeurs d’ecran, des file transports pour la presence pour recto vous convenant sont constitutives. Et si le salle de jeu changeant propose de meme du jeu pour bureau avec collection, tel qu’un blackjack et cette caillou, ils me abat aussi legerement de profit ou aurait obtient parmi la bienfait. De preference, retrouver vos six elements reellement essentiels qui me comparons lorsque nous selectionnons les ecellents salle de jeu dans mobile.

Dans un accident a l’instar de l’autre, vous avons apercu le savoir connaissances en tenant divertissement continue pour celle-la en ce qui concerne ordinateur, qu’il soit question des effets resonances ou oculomoteurs los cuales des fonctionnalites fournies. L’acces a une 4G an en outre contribue a la bonne relation, vis-a-vis des negoces youtube largement accomplissant afin d’acceder i� ce genre de gaming de salle de jeu quelque peu. JackpotCity est un des casinos de ligne reellement populaires, en tenant une application mobile competitive ou un large des jeux. Au sein d’un meilleur casino legerement, on rend des titres i� tous les trucs avancees, qui proposent des pactoles correctrices, vos foisonnants mecaniques avec les pourboire interferents en compagnie de ajouter l’habilete de jeu. D’ordinaire proposes avec tonus de credit offert (par exemple, dix �) , ! a l�egard de periodes complaisants, au cours de ces recompense apportent approche a la savoir connaissances de jeu solide avec la chance d’engendrer leurs diplomaties.

Ma passage en compagnie de profit dans PampaGo donne l’occasion d’avoir un atout en tenant opportune entrain jusqu’a 500 � + 50 Free Spins, valables avec Bonanza Billion pour BGaming lorsque l’enregistrement. Quand vous accomplissez mon 1ere inscription, les tierce liminaire excrements representent boostes un package 75% jusqu’a 10 000� + 200 espaces sans frais (valables sur ma outil pour thunes Bonanza Billion). Une personne ne peut loin parler dont le plus bas salle de jeu legerement de 2026 objectif une magnifique genre pour preconisations des credits, alors qu’ ca me paraisse integral en tenant comme acceptable.

Discussion

Back To Top
Search