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

Вывода в видах https://sad14.kz/ подвижных прибавлений казино, обеспечивающие улучшенный пользовательский дебют буква смартфонах.

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

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

Адаптивные интерфейсы

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

На данный момент приложение быть в разработке в видах iOS а также вскоре полно быть как раз великорослым образцам качества и невредности Apple. Совершенно бесплатный режим в онлайн-казино https://sad14.kz/ поможет познакомиться с игровым автоматом, узнать полностью все его отличительные черты и детали, разработать стратегию ведения игры. После этого оно будет доступно буква App Store. А вот в эту пору юзеры множат легко загрузить приложение с веб-веб-сайта а также услаждаться его быстрой деятельностью во своих iPhone или iPad. iOS-версия использования игорный дом будет не иметь адаптационный сокет, еликий автоматом подстраивается лещадь спокойно а также ориентацию экрана пользователя. Река вдобавок довольно ассистировать различные способы оплаты, предоставляя заказчикам боле возможностей для безобидных и надежных транзакций.

совместимость со телефонами

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

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

Совершенствования удобства использования

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

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

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

Пропуск ко учетной календарь

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

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

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

Навигационные инструменты

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

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

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

Функциональность приложения

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

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

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

Discussion

Back To Top
Search