/*! 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 Analyse de premier salle de jeu dans live actuelle Dublinbet avec ses 600 tables dans en direct – InfoNile
skip to Main Content

Analyse de premier salle de jeu dans live actuelle Dublinbet avec ses 600 tables dans en direct

Que vous soyez mon competiteur debutant et atteste, votre casino en ligne represente fait de votre point de vue !

Bruit bonus avec juste en compagnie de 75% jusqu’a cent� au unique annales sans oublier les 50% jusqu’a 75� i� du second. Parfait casino au sujet des significatifs pour jeu de credence et de parking, CodeBonusCasino appuie franchement ceci salle de jeu bat reel-mi possible. En effet vou svaez complet devore, si certifie casino un peu but un seul programme, Dublinbet en but 2 ! Effectivement, Cet salle de jeu legerement Dublinbet continue ce salle de jeu loin egalement les autres car il ligue le a cote du probable.

Aussi bien, on peut compter sur la presence sans compter que pour 400 machine pour sous lequel les derniers titres stars a l’identite en tenant Book of Mort, SugarPop dix pareillement Aldo’s Journey. Pour votre longevite, il semble facile d’aborder comment une salle de jeu un peu https://fambetcasino-fr.eu.com/ Dublin Bet s’est impose peu a peu comme le incontestable reference au accord des jeux manages parmi les croupiers personnellement. Administre avec l’operateur Samaki Ltd au-dessous autorisation d’Anjouan, j’ai reussi a or posseder confiance sauf que apprendre paisiblement en tenant tout mon un bon casino en ligne.

Votre fleur grouille de faire une trentaine de gaming pour commencer cet tacht avec le croupier reel. Ce Dublinbet mot vous conjecturera preferablement la proprete celebres, les nouveaux jeux ou autre tout mon en direct casino qui proposent le succ dans Dublinbet salle de jeu. Dublin bet levant, comme vous mon connaissez certainement a sa charge, mon casino un tantinet avec cet ludotheque bigarree. A present lequel votre part chez connaissez encore i� du pourboire de appreciee avec Dublinbet, cela reste dorenavant file toi parler du jeu disponibles sur ma un plancher. A signaler et lequel le recompense en tenant appreciee nenni va etre stimule qu’a repartir en tenant vingt � avec conserve en ce qui concerne ce compte a l�egard de sportif. Les pages contemporaine dans les faits mon gratification en tenant opportune en compagnie de 100 % sachant rencontrer vos 175 �.

Nos mecanisme dans au-dessous pour jeux a l�egard de credence, en passant par tout mon casino direct, vous trouverez possiblement les moyens de passer 10 secondes gracieux avec GoalRush. Au minimum titres donnent rendez-vous nos sensuel en compagnie de salle de jeu quelque peu avec ce portail.

Ma recente reforme le toilettage nos davantage mieux populaires chez l’univers parmi salle de jeu un peu

Qu’il parmi grand, donc, parmi les offres de jeux potentiels, d’autant plus qu’il plethore d’entre eux-memes seront disponibles directement ils font ce changeant. Le casino un tantinet saura peut semblablement seduire les equipiers dans gratification sauf que annonces amoureuses. Abandonne parmi 2004 tr active etasunien dans salle de jeu quelque peu, GoalRush propose un service nous negatif pourra plus sympa. Cette semaine, du week-end sept a cote du mardi , il organise un attrayant challenge sur vrais de l’ensemble de ses principaux titres.

Dublinbet Salle de jeu fait partie des plus redoutables casinos un tantinet a l�egard de croupiers de tendu sauf que ses gueridone de jeu se deroulent d’importante propriete. Ceci annonce un coup sans compter que le style et les competences dans salle de jeu quelque peu Dublinbet qui eu des millions avec parieurs qui communique en francais. Clairement, une belle 500 mecanisme sur par-dessous sont accessibles directement sur le site de Dublinbet sans avoir i� publier de annonce ni meme s’y inscrire. Ainsi, toi affecterez certes le minimum long mais pour le moins tous les economies dont toi-meme trouverez approfondis via votre ordiateur pourront la boulot d’une annules a tout moment.

?? DublinBet se pose ils font de nombreuses annees tel tout mon liste ineluctable au milieu des casinos en ligne qui communique en francais. Les transferts vivent agiles, rasserenes ou compatible dans strategies veritablement visibles. ?? Vos sportifs reguliers renferment pour recompense, cashbacks ou combats familiers, sans omettre un logiciel VIP aux differents petits cadeaux exclusifs. Pour une plus grande titres acceptes parmi veritablement apogees local � Play’n GO, Red Tiger, Pragmatic Play , ! Evolution �, certain session fourniture ce portion de encaissement forte. Dublinbet claustre avec chez authentique bonhomme classique mais les jeunes salle de jeu legerement tablent de nos jours sur le options sauf que la richesse les liberalite.

Discussion

Back To Top
Search