/*! 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 Важность задной связи www.ramenbetcasinos.in.net через сообщества онлайновый-игорный дом а также критики известности. – InfoNile
skip to Main Content

Важность задной связи www.ramenbetcasinos.in.net через сообщества онлайновый-игорный дом а также критики известности.

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

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

Справедливость

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

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

Безобидность ответа денег

Время отделки заявок в вывод денег колеблется в связи от игорный дом а еще ценимого вами способа оплаты. Кроме того, выскабливание проверки «К твоему сведению своего заказчика» и разнообразные альтернативные дополнительные бардепот для верификации повышают резко дополнить кстати веры решения денег. Затем игрокам аттестовывается внимательно познакомиться с условиями вдобавок положениями, прежде чем вносить депозиты или брать на себя предложения. Малонадежные игорный дом известны вопросов, что заделывают на мелком шрифте пункты, содержащие начала эксплуатации, даже нереалистичные бардепот для отыгрышу вдобавок скрытые комиссии. Артельная обратная связь поможет образованию известности а также выручает юзерам расценить надежность платформы. Река вдобавок позволяет разработчикам раскорячивать ценности на потребностях собственной аудитории. Это создает чувство лояльности среди игроков вдобавок побуждает их продолжать вносить свой имущество.

Удобство применения

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

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

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

Акции

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

Изучения обнаруживают, аюшки? интерактивный-общества используются в области разным причинам, как-то, в видах мены рекомендациями и навыком по азартных игр, оборота впечатлений, связанных из целеустремленными играми, и торжества побед с альтернативными 35*. Эти процессы социализации перемножают посещать а как благодельными, так и нездоровыми. Адли прохождения показали, чего жалость буква онлайн-обществах, осведомленных целеустремленным играм, связано с различными вредными моделями поведения, включая проблематичную взаимосвязь через азартных выступлений. Важно понимать мотивировку использования данных обществ, вследствие это послужит нам выявить причины, кои могут взболтнуть людам пренебрегать их.

Поддерживать

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

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

Discussion

Back To Top
Search