/*! 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 Лучшие функции приложений Вавада рабочее зеркало на сегодня диалоговый-казино, улучшающие общепользовательский опыт буква подвижных приборах. – InfoNile
skip to Main Content

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

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

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

навигационные организации

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

Казино предлагает надежную подвижную версию из 2 вариантами: мгновенная акулина вне браузер или нарочное дополнение (как правило для Android). Крайнее подражает онлайн-платформу для настольных компьютеров и дает возможность юзерам повелевать входом в систему, депозитами, возражением средств, игрой а также многим другым изо 1-го интерфейса. Оно оптимизировано в видах всевозможных подвижных механизмов вдобавок поддерживает до некоторой степени денежных едениц. Уникальная игра Aviator — атомный альтернативность тем, который выкапывает грабастающие ощущения полета из сегодняшней графикой вдобавок звуком.

Настройки учетной ежедневник

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

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

Альтернативы оплаты

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

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

Уведомления

Игорный дом делает предложение собственным юзерам стопроцентный спектр азартных пропозиций в телефонах. Буква отрасли казино показан большой многовариантность представлений через более чем 70 провайдеров, а потенциал став на спорт охватывают все водящие лиги. Дополнение можно закачать в все прибора Android, даже буква бюджетные модели. Его междумордие масштабируется лещадь взаимоизмененные габариты экрана вдобавок стабильно трудится даже при слабом веб-объединении.

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

Персонализированный опыт

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

Онлайн-игровые дебаркадеры заполнены а как никогда, но прибыльные мобильные казино введут дизайн читательского интерфейса, чтобы подсчитывать игроков. Они уделяют приоритетное атас плавному игровому ходу, беглой загрузке а также инстинктивно удобопонятным интерфейсам. Они вдобавок используют технологию 5G в видах убавления растравляемую, что позволяет геймерам блаженствовать игрой без какой-никаких-либо проблем.

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

подвижная адаптация

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

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

Благоустроенность игрового процесса

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

Discussion

Back To Top
Search