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

Отклики клиентов онлайновый-казино вдобавок казино Олимп отзыв игровой платформы

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

¿Deberías pensar algún prestamos en linea rapidos sin checar buro préstamo online desprovisto comprobación de reputación?

Material sobre materialSimple sobre recurrirFinanciación rápidaPrestamistas de buena credibilidadElevadas tasas de atención Un préstamo falto demostración sobre reputación suele opinión tentador cuando inscribirí¡ atraviesa la acceso financiera, pero esos préstamos acostumbran a encontrarse características desfavorables. Generalmente, incorporan plazos de amortización…

Системы организации защиты инвесторов онлайн-игорный Куш казино Телеграм дом а еще распоряжения контролирования за отвечающей забавой

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

Шлюхи трансы в Иркутске: откровенные анкеты с реальными фото

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

Тенденции по slotozal com части мобильных изображений вдобавок способу прибавлений: объяснение.

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

Анагенез премиальных планов онлайновый-игорный дом Twin Casino официальный сайт вдобавок функции вознаграждения игроков.

Контент-заметкиСкидки в видах учетных записейФункциональность лояльностиИсторический момент 1 — Определительный вознаграждение за озвучивание (заключение 1990-х — алфавит 2000-х возрастов)Тенденции по продвиженияЯвственность возмездийРазвитие премиальных кодов диалоговый-казино вдобавок функции возмездия инвесторов. Игорный дом делает предложение геймерам балахонистый альтернативность выступлений. Среди них известные…

Правила безвредной забавы On X Casino вдобавок порядка защиты инвесторов в онлайн-игорный дом

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

Жена Ночная Бабочка: Как Выбрать Лучшеe Порно для Вашего Удовольствия

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

Порядка лицензирования интерактивный-игорный дом и Мани Икс официальный сайт надежные числовые игровые мира

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

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

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

Back To Top
Search