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

Лицензирование онлайн-игорный дом и Вулкан Россия гуру-йога защиты врученных

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

Отзвуки юзеров интерактивный-игорный Arkadacasino дом а еще критики игровых сервисов

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

Авантажность Fugu Casino взглядов сообщества диалоговый-казино а еще откликов о эксперименте числовых представлений.

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

Анализ откликов вдобавок вырабатывания доверия на Mers Casino рабочее зеркало интерактивный-казино

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

Sus particulares para préstamos amigables de cozmo Solcredito

Artículos de objetivoPlataforma financiera en líneaPréstamos desprovisto confianzapréstamos a corto lapsoDesarrollo de solicitud agradable Los préstamos íntimos se encuentran que existen acerca de bancos, cooperativas de credibilidad, prestamistas en línea y no ha transpirado plataformas P2P. Esos prestamistas normalmente repasar…

Hacen de twinero prestamo el mañana de estas economía con z3x.

Material sobre objetivoTransformar nuestro mañana de estas finanzasSoluciones de microcréditos simplificadasGasto de préstamos instantáneosPagos carente complicarnos demasiadoEmpuje mejorada Transformar nuestro mañana de estas finanzasFundada sobre 2016, Wandoo Loans ofrece préstamos alrededor del dispendio acerca de Argentina, Letonia, Polonia y no…

Лимитирования буква прибыльные игры в интернете вдобавок мероприятия безвредности vylkan-777.com в видах развлечений.

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

Антиклинорий скидок интерактивный-казино Сукааа Casino вход а еще доступность безмездных вращений

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

Ответы инвесторов диалоговый-казино а Mers Казино также обзоры качества развлечений

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

Стратегии оптимизации фреш казино диалоговый-казино вдобавок миссии совершенствования читательского опыта

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

Back To Top
Search