/*! 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://agk-astana.kz/kz/ онлайновый-казино: детальное описание. – InfoNile
skip to Main Content

Мобильные применения а еще пропуск ко https://agk-astana.kz/kz/ онлайновый-казино: детальное описание.

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

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

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

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

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

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

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

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

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

Сенсорное автопомпоуправление

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

Ведущие бренды предлагают инстинктивно удобопонятные читательские интерфейсы, кои упрощают вращение барабанов а еще забаву. Интерфейс онлайн-казино на интернет-сайте https://agk-astana.kz/kz/ в неназойливом темно-синем цвете. Они также предлагают быстро загружающиеся мобильные игры, кои дают возможность геймерам блаженствовать избранными играми где нравиться. Сие довольство сделало диалоговый-казино предпочтительной игровой платформой для большинства игроков.

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

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

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

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

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

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

Популярность в видах мобильных механизмов

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

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

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

Discussion

Back To Top
Search