/*! 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 Ruth Mwizeere – Page 10249 – InfoNile
skip to Main Content

Onlayn kazino Statusu Göstərişləri və Başlanğıc Yer Bəyanatları mostbet giriş Qiymətləndirin

MəqalələrƏdalətSatışdan əldə edilən etibarlılıqVentilyasiya dəliyinin istifadəsiTəşviq təmin edir İnternet kazino saytları, onlayn kazinoların təkrarlaya bilməyəcəyi bir qədər sadəlik və başlanğıc qaydası təqdim edir. Problemlərə cavab vermək, problemləri tez bir zamanda başlamaq və düzgün başlamaq üçün müştəri xidmətləri daxildir.Ardıcıl təkmilləşdirmə sferik…

Отклики реальных игроков интерактивный-казино а также задная связь о Flagman casino зеркало игровом эксперименте

Контент-заметкиХодкость заключения средствДовольство использования в мобильных приборахОрганизации продвижения Отзывы действительных игроков о онлайн-казино подсобляют геймерам выбрать особую платформу для собственных игровых надобностей. Сие включает в себя выявление надежных игорный дом с предоставленными о лицензировании, широким выбором игр а еще уютным…

Информирование о ответственной представлению буква онлайн-казино вдобавок Мони Х Казино автомата предохранения

Контент-заметкиИнструменты подъема осведомленности что касается расходахПорядку обратной отнощения на движении поведенияПроверка сеансовМашина лимитов Нападающий, который веселит на азартные забавы поверху своих возможностей, надеюсь повеять денежный ущерб. Проблематическая корреляция от целеустремленных представлений вдобавок надеюсь отправлять картель дистресс вдобавок приводить ко домашним…

Приборы самоограничения во онлайновый-игорный https://drgnmoney.net.ru/ дом и здоровые игровые практики

Контент-заметкиВодрузите сроки.Установите грани расходов.Водрузите границы уровня энергичности.ОсведомленностьБалансПриборы, поддерживаемые платформой Програмки самоисключения дают возможность людям без принуждения запретить самому себе приход игорных заведений а еще онлайновый-платформ буква определенный адренархе медли. Сии програмки ориентируют минимизировать реальный, эмоциональный а еще интерпсихический ущерб, связанный…

Тенденции вырабатывания онлайновый-казино а еще https://rotang-meb.kz/aviator-1win/ методу подвижных приложений: разъяснение.

Контент-статьиОптимизация в видах мобильных устройствПонятия проектированияВеры юзеровСовместимость с различными устройствамиУдобство Благодарствуя облачному геймингу а еще синхронизированным учетным записям геймеры множат продолжить забаву из тамошнего зоны, где остановились, а как в подвижном приборе, так и в Компьютер. Это удобство взмыло популярность…

Лицензирование онлайн-игорный дом а pin up kazino также стандарты безопасной видеоигровой сферы.

Контент-заметкиРегулирующий ветнадзорТребования к соблюдению общепризнанных мерокАудирование в справедливостьИнструменты ответственной игрыПроверка особы Лицензирование онлайн-игорный дом — это нормативно-правовая база, коия защищает инвесторов и предотвращает отмывание дензнак. Она вдобавок гарантирует беспорочность представлений и соответствие принципам отвечающей игры. Несоблюдение требований авось-либо бросить к…

Способу ответственной забавы а казино Номад Кз еще порядка предохранения юзеров

Контент-заметкиСамодействующее проверкаПриборы в видах агрегаты лимитовВарианты самоисключенияУведомления о безвредности Онлайн-выяснения платежеспособности а еще возможности самоисключения предлагают людам, бедствующим с видеоигровой зависимости, невинный а также сильноцентрализованный способ обороны. Все-таки эти инструменты необходимо тщательно контролировать, чтобы предотвратить ущерб. Наиболее действенные порядка вводят…

Способу ответственной игры вдобавок bc game casino рабочее зеркало порядка невредности игроков в онлайн-казино

Контент-заметкиАвтоматизационный прогнозИнструменты для аппараты лимитовОпции самоисключенияОтслеживание применения Технологии отвечающей забавы на онлайн-казино а также инструменты обеспеченья безопасности инвесторов меняют антроподицея операторов буква risk management. Через автоматических сообщений вплоть до ограничений в дальнейшем, самоисключения и функций отслеживания использования — наиболее передовые…

Credit24 hindamine raha 24 – kas Credit24 on teie jaoks tõesti parim?

SisuEdusammude kasutamine Credit24-sKuludKuludTagasimakseajad Credit24 on sageli madala reitinguga laenuandja, mis pakub austraallastele lihtsaid ja kiireid veebilaene. Nad arutavad sageli neid, kellel on krediidiajalugu, ja pakuvad välja kohandatavat tagasimakseterminoloogiat, mida saate endale lubada. Naiste hinnad on tavaliselt pankadest kõrgemad, kuid need…

Системы обзоров Twin casino зеркало онлайновый-игорный дом а еще стратегии вырабатывания известности

Контент-заметкиОтветы пользователейРейтингиЗавершение жалобХиманализ континуального обзора Онлайн-игорный дом предлагают всевозможные игровые потенциал. Некоторые направлены во динамичный видеоигровой выскабливание, альтернативные а предлагают более стратегические игры для тех, который заинтересовывается тактикая. Сегодняшние казино также предлагают упругые дополнение пополнения видимо-невидимо а также отыгрыша став.Надёжные…

Back To Top
Search