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

Пьяные шлюхи: миф или реальность? Погружение в мир интима и алкогольных страстей

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

Отзвуки клиентов онлайн-игорный дом Sykaaa Casino войти вдобавок анализ качества сервиса.

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

Указатели доверия ко онлайн-казино Сукаа Казино официальный сайт а еще агрохиманализ откликов пользователей.

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

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

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

Kumarhane Programına Erişilebilirlik ve Mobil demo sweet bonanza İşlevsellik Geliştirmelerinin Başlatılması

MakalelerProgramın uyumlu olmasıVentilatör yanıtıOptimizasyon olanaklarıNavigasyon iyiHücresel sadelik Casino, çok sayıda çevrimiçi oyun oynamanın ve geceleyin spor etkinlikleri/e-spor oyunlarına başlamanın harika bir yolunu sunuyor. Bunu sağlamak için, dış mekan çözümlerinde indirilen uygulamalara izin vermek üzere Android sistem sıcaklıklarında olumlu değişiklikler yapmaya…

Ранги сообщества онлайн-казино и оценка качества https://freshcasino-ofitsialnyj-sajt.clients.site обслуживания

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

Бесплатные куртизанки: тайны и реалии интимных услуг без оплаты

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

Jak uzyskać zaliczkę gotówkową aasa pożyczki logowanie bez oceny ekonomicznej

ArtykułyZdobyłem kartęZaliczka gotówkowaPrzerwy w spłacie ratSzczęśliwszy Kredyty z zerowym potwierdzeniem pieniężnym wydają się atrakcyjne, ale ich wysokie opłaty za obsługę mogą aasa pożyczki logowanie zniechęcić pożyczkobiorców do korzystania z Twojego poziomu finansowego. W przeciwnym razie, skorzystaj z usług instytucji finansowych,…

Организации обзоров онлайновый-казино а также мани икс стратегии развития репутации

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

Порядка безопасной онлайн казино Spin City забавы на онлайн-казино а также функции контроля поведения.

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

Back To Top
Search