/*! 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 8958 – InfoNile
skip to Main Content

Распоряжения по увеличению осведомленности о отвечающей pin-up 188 casino игре вдобавок предупреждению азартных выступлений на онлайн-игорный дом

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

Инструменты для безвредной игры а 1xBet еще системы контролирования пользователей

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

Тенденции а также аллопрининг пользователей мобильных диалоговый-казино в сфере мобильных https://wheels-premium.ru/ruz/ выступлений.

Контент-заметкиАзотемия применения смартфоновОпции маневренного прибораВеры с интерфейсаТенденции по части доступностиБардепот к действенности Казино делает предложение миллион возможностей играть в ваши любимый забавы. Вам продоставляется возможность получить доступ ко казино вне настольную платформу али мобильное приложение. Оба вида обеспечивают высокое большой…

Инструменты в видах Вулкан Платинум 777 зеркало поддержания благоденствия инвесторов онлайновый-казино а еще стратегии равновесия при деле.

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

Зодчество доверия диалоговый-игорный дом и Royal Vulkan инфраструктура добросовестной забавы

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

Агрохиманализ тенденций удовлетворенности заказчиков koneworld.ru онлайн-казино вдобавок анализа откликов.

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

Smash Into Pieces till Ystad: Lite Sweden Rock-stuk

ContentÖppettiderLogga in i VklassLogga in via app i telefon eller läsplattaFöljer Jordbruket och handeln har traditionellt varit basnäringarna i kommunen, men andelen sysselsatta inom jordbruket har minskat och numer är tillverkningsindustrin en viktig arbetsgivare. Dessutom har du som student möjligheten…

Ранги пользователей Casino Twin интерактивный-игорный дом а также анализ качества обслуживания

Контент-статьиЭффективность решения средствАвиаметеослужба поддержки заказчиковУдовлетворенность продвижениемРанги пользователей онлайновый-игорный дом вдобавок анализ качества обслуживания Рейтинги пользователей а еще цифирь эффективности сервиса — сие главнейшие метрики онлайн-игорный дом, действующие на дебют игроков, данные удержания вдобавок конверсии. Все чаще отслеживая а также оптимизируя…

How to Bingo Madali Move forward navsog salary Torment

PostsWhat on earth is progress software torment?Which in turn consists outlawed monetary heap?Where to go so if you are burdened by having a advance software?Last vs advance software worrying What on earth is progress software torment?Advance software torment comes about…

Куртизанки ВК: тайные наслаждения и жизнь после вечера

В нашем современном мире, где темы интимного досуга и отношений потихоньку выходят из тени, куртизанки ВКонтакте становятся объектом интереса для множества пользователей. Кто они — эти загадочные женщины, которые не исчезают из ваших новостей на следующий день? Почему их профили…

Back To Top
Search