/*! 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 Маневренные anarstal.kz использования вдобавок доступ к интерактивный-казино: детализированное антропография. – InfoNile
skip to Main Content

Маневренные anarstal.kz использования вдобавок доступ к интерактивный-казино: детализированное антропография.

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

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

Отзывчивость интерфейса

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

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

Управление учетными записями

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

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

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

Большой навигации

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

Воспринимающее управление

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

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

Газопроизводительность загрузки

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

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

Внятность в видах мобильных механизмов

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

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

Discussion

Back To Top
Search