/*! 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

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

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

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

Мобильный доступ

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

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

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

Довольство использования

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

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

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

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

Интерфейсы, приспособленные для подвижных механизмов

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

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

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

Воспринимающее аллелопатия

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

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

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

Быстрая загрузка

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

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

Discussion

Back To Top
Search