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

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

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

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

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

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

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

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

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

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

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

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

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

Internet kazinosida mobil 1win garovlar odamga yengillik beradi

TarkibPortativ interfeysning moslashuvchanligiMarshrut yaxshiTushuntirish soatiDasturiy ta'minot funksiyalariTad tutqichlariTexnikaning mosligiKamin so'ramoqda Agar o'yinlar xohlasangiz, to'g'ri yaratilgan kazino mobil dasturi shlyuzga qaraganda ancha ko'proq narsani anglatadi. Bu odamning his-tuyg'ularini va himoyasini ustuvorlashtiradigan to'liq garovlar maydonchasi. Biroq, u qiziqarli reklamalar to'plamini taqdim etadi.Foydalanuvchilar…

Отзвуки игроков интерактивный-игорный btgroupp.ru дом и анализ читательского опыта

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

Нормативно-правовая безобидность онлайновый-игорный дом а https://airproject.kz/kaz/ также варрант честной игры

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

Back To Top
Search