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

Casino Foundation belgilari yoki alomatlari va aniq iste'molchi tajribasi hisoblarini vivi casino uz boshlash

Kontent maqolalariTavsif farovonlikQo'shimcha samaradorlikOlov so'rashQiziqarli kod Poydevor muhim bo'lgan elektron raqamli muhitda foydalanuvchilar veb-saytda obro'ga ega bo'lish bilan bog'liq muammolarga alternativalarni topishga yordam berishadi. E'tiborga loyiq xilma-xillik ularning to'lovni davom ettirishi, hisobot berishi va boshlashiga ta'sir qilishda muhim rol o'ynaydi.Qimorxonalarda…

Kazinoning ko'chma ilovasi zamonaviy mobil tikish soddaligini taqdim Pin-Up casino вход etadi

MaqolalarMoslashuvchan saralashTez zaryadlash funksiyasiIzoh Kirish imkoniyatiInterfeys foydalanuvchilarga qulaylikPortativ sozlamalarKo'p qirrali ishlash Casino'ersus mobil internet kazino ilovasi o'yinchi Pin-Up casino вход tuyg'usini kuchaytiradigan umumiy garov havosini taklif etadi. Uning tarkibida batafsil aylanma katalog va kichik monitorlar bilan qonunchilikka muvofiq yaxshilangan mijozlar-shaxslararo…

Qimor muassasasi shaxslarining fikr-mulohazalari va Pin Up casino вход garov ulanish testlarini boshlang

XabarlarTasdiqlarVideo o'yinTavsif xo'jayinMijozlarni qo'llab-quvvatlash Qimor o'yinlari muassasalari foydalanuvchilari qimor o'yinlari bo'yicha tavsiya etilgan alternativalarni majburlash uchun hisoblarga tayanadilar. Shaxsiy hikoyalar ko'pincha mukofot xizmatlari, komissiya to'lovlari va mijozlarga xizmat ko'rsatishni boshlash kabi masalalarga qaratilgan.Tajribali sharhlar individual hikoyalarga qaraganda ishonchliroq bo'lishga moyil,…

Обзоры онлайновый-казино: организации а также впечатления через веселий. Задная казино фреш авиасвязь.

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

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

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

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

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

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

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

Гидроразработка прибавлений для онлайновый-казино а еще Lev casino скачать эволюция мобильных технологий.

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

Подвижные заключения в vulcanrussias.vip видах онлайновый-казино вооружают беглый и хороший доступ для играм.

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

Játékterem 5gringoshu.net Felhasználói vélemények és a Dobogó Stabilitási Felülvizsgálatának kezdeményezése

TartalomMéltányosságEladó lángokat készítettHasználhatóságOnline kaszinó Felhasználói vélemények olvasása és a platform stabilitásának értékelése A kaszinó felhasználói vélemények és a rendszer stabilitásának áttekintése várható források a játékosok számára, akik megbízható fogadási módszereket választanak. Ezeknek a beszámolóknak a során az emberek megismerik a…

Back To Top
Search