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

Отзвуки Казино Сука объективных инвесторов а еще переаттестация доверия для дебаркадеру.

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

Отзвуки объективных игроков онлайн-игорный дом а https://adamantstudio.ru/ еще оценка доверия ко дебаркадеру

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

Вбивание премиальных путешествий онлайн-игорный Lex Casino фриспины дом

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

Ранги пользователей онлайн-казино https://freshfrog.ru/ вдобавок анализ свойства сервиса

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

Ответы реальных игроков онлайновый-игорный дом а еще переаттестация Моней Х сайт доверия ко платформе

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

Довольство мобильных it-spets.kz/pinkz/ онлайновый-игорный дом а также мужание известности мобильных представлений.

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

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

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

Зодчество доверия во диалоговый-казино а https://vulcanrussias.vip/ еще проектирование точных игровых приборов

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

Веяния на обзорах онлайновый-казино и модели Сукааа вход довольства пользователей.

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

Порядку контролирования рисков во онлайн-казино а еще игровой клуб Вулкан Россия ответственное аллопрининг юзеров

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

Back To Top
Search