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

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

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

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

навигацкие порядка

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

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

Опции учетной склеротичка

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

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

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

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

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

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

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

Уведомления

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

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

Персонализированный дебют

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

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

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

маневренная приспособление

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

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

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

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

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

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

Discussion

Back To Top
Search