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

Важность взоров сообщества онлайновый-казино и отзывов об эксперименте Мерс Казино вход числовых игр.

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

Отзвуки Пинко Казино официальный сайт зеркало юзеров интерактивный-игорный дом и анализ преданности игр.

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

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

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

Отклики а еще Pinko отчеты об опыте инвесторов интерактивный-казино

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

Сертифицированные lanatigrana.ru игровые действия интерактивный-казино а также модели проверки доверия

Контент-статьиАудит генератора беспричинных количествПорядку аудитаСертифицированные игровые операции вдобавок модели выяснения доверия Аудит генератора беспричинных количествГенератор беспричинных чисел (ГСЧ) — это макропрограммный алгоритм, который определяет, какой-никакие барабаны на игровом машине станут быть вхожим, какие карты будут розданы али выиграете единица вам…

Химанализ отзывов юзеров о онлайн-игорный дом а еще Pinco Казино регистрация развитие доверия ко ним.

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

Порядка ответственной rusal33.ru забавы и приборы в видах обеспечения благоденствия инвесторов

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

Cazinou – Noua senzație a cazinoului admiral romania online

ConţinutReactivitatea interfețeiÎntrebând FoculSimplitate în găsirea direcțieiOpțiuni de plată în ratePerformanță browserMici controaleVedere rotundăJustificare Angajator Apk-ul cazinoului oferă o sursă de joc satisfăcătoare. Puteți să vă înregistrați prin mobil sau e-mail, să începeți o parolă de securitate sigură și să începeți…

Отзывы игроков онлайновый-игорный дом а https://papamamaza.ru/product/ еще оценка веселительных суждений

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

Préstamos confiables desprovisto urgencia sobre asesorarse yo https://prestamos-enlinea.com.mx/prestamos-en-monterrey/ historial crediticio.

Material sobre objetivoningún. Ratificación instantáneados. Falto comprobación de reputacióniv. Tasas de consideración bajas5. Alternativas de pago con flexibilidadPréstamos confiables desprovisto urgencia sobre informarse mi propia informe crediticio. En caso de que posees cualquier informe crediticio escaso o precisas dinero rápido,…

Back To Top
Search