"use strict"; (self["webpackChunkelementorFrontend"] = self["webpackChunkelementorFrontend"] || []).push([["accordion"],{ /***/ "../assets/dev/js/frontend/handlers/accordion.js": /*!*******************************************************!*\ !*** ../assets/dev/js/frontend/handlers/accordion.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 _baseTabs = _interopRequireDefault(__webpack_require__(/*! ./base-tabs */ "../assets/dev/js/frontend/handlers/base-tabs.js")); class Accordion extends _baseTabs.default { getDefaultSettings() { const defaultSettings = super.getDefaultSettings(); return { ...defaultSettings, showTabFn: 'slideDown', hideTabFn: 'slideUp' }; } } exports["default"] = Accordion; /***/ }), /***/ "../assets/dev/js/frontend/handlers/base-tabs.js": /*!*******************************************************!*\ !*** ../assets/dev/js/frontend/handlers/base-tabs.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js"); __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ "../node_modules/core-js/modules/esnext.iterator.filter.js"); __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js"); class baseTabs extends elementorModules.frontend.handlers.Base { getDefaultSettings() { return { selectors: { tablist: '[role="tablist"]', tabTitle: '.elementor-tab-title', tabContent: '.elementor-tab-content' }, classes: { active: 'elementor-active' }, showTabFn: 'show', hideTabFn: 'hide', toggleSelf: true, hidePrevious: true, autoExpand: true, keyDirection: { ArrowLeft: elementorFrontendConfig.is_rtl ? 1 : -1, ArrowUp: -1, ArrowRight: elementorFrontendConfig.is_rtl ? -1 : 1, ArrowDown: 1 } }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { $tabTitles: this.findElement(selectors.tabTitle), $tabContents: this.findElement(selectors.tabContent) }; } activateDefaultTab() { const settings = this.getSettings(); if (!settings.autoExpand || 'editor' === settings.autoExpand && !this.isEdit) { return; } const defaultActiveTab = this.getEditSettings('activeItemIndex') || 1, originalToggleMethods = { showTabFn: settings.showTabFn, hideTabFn: settings.hideTabFn }; // Toggle tabs without animation to avoid jumping this.setSettings({ showTabFn: 'show', hideTabFn: 'hide' }); this.changeActiveTab(defaultActiveTab); // Return back original toggle effects this.setSettings(originalToggleMethods); } handleKeyboardNavigation(event) { const tab = event.currentTarget, $tabList = jQuery(tab.closest(this.getSettings('selectors').tablist)), // eslint-disable-next-line @wordpress/no-unused-vars-before-return $tabs = $tabList.find(this.getSettings('selectors').tabTitle), isVertical = 'vertical' === $tabList.attr('aria-orientation'); switch (event.key) { case 'ArrowLeft': case 'ArrowRight': if (isVertical) { return; } break; case 'ArrowUp': case 'ArrowDown': if (!isVertical) { return; } event.preventDefault(); break; case 'Home': event.preventDefault(); $tabs.first().trigger('focus'); return; case 'End': event.preventDefault(); $tabs.last().trigger('focus'); return; default: return; } const tabIndex = tab.getAttribute('data-tab') - 1, direction = this.getSettings('keyDirection')[event.key], nextTab = $tabs[tabIndex + direction]; if (nextTab) { nextTab.focus(); } else if (-1 === tabIndex + direction) { $tabs.last().trigger('focus'); } else { $tabs.first().trigger('focus'); } } deactivateActiveTab(tabIndex) { const settings = this.getSettings(), activeClass = settings.classes.active, activeFilter = tabIndex ? '[data-tab="' + tabIndex + '"]' : '.' + activeClass, $activeTitle = this.elements.$tabTitles.filter(activeFilter), $activeContent = this.elements.$tabContents.filter(activeFilter); $activeTitle.add($activeContent).removeClass(activeClass); $activeTitle.attr({ tabindex: '-1', 'aria-selected': 'false', 'aria-expanded': 'false' }); $activeContent[settings.hideTabFn](); $activeContent.attr('hidden', 'hidden'); } activateTab(tabIndex) { const settings = this.getSettings(), activeClass = settings.classes.active, $requestedTitle = this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]'), $requestedContent = this.elements.$tabContents.filter('[data-tab="' + tabIndex + '"]'), animationDuration = 'show' === settings.showTabFn ? 0 : 400; $requestedTitle.add($requestedContent).addClass(activeClass); $requestedTitle.attr({ tabindex: '0', 'aria-selected': 'true', 'aria-expanded': 'true' }); $requestedContent[settings.showTabFn](animationDuration, () => elementorFrontend.elements.$window.trigger('elementor-pro/motion-fx/recalc')); $requestedContent.removeAttr('hidden'); } isActiveTab(tabIndex) { return this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]').hasClass(this.getSettings('classes.active')); } bindEvents() { this.elements.$tabTitles.on({ keydown: event => { // Support for old markup that includes an `` tag in the tab if (jQuery(event.target).is('a') && `Enter` === event.key) { event.preventDefault(); } // We listen to keydowon event for these keys in order to prevent undesired page scrolling if (['End', 'Home', 'ArrowUp', 'ArrowDown'].includes(event.key)) { this.handleKeyboardNavigation(event); } }, keyup: event => { switch (event.code) { case 'ArrowLeft': case 'ArrowRight': this.handleKeyboardNavigation(event); break; case 'Enter': case 'Space': event.preventDefault(); this.changeActiveTab(event.currentTarget.getAttribute('data-tab')); break; } }, click: event => { event.preventDefault(); this.changeActiveTab(event.currentTarget.getAttribute('data-tab')); } }); } onInit(...args) { super.onInit(...args); this.activateDefaultTab(); } onEditSettingsChange(propertyName) { if ('activeItemIndex' === propertyName) { this.activateDefaultTab(); } } changeActiveTab(tabIndex) { const isActiveTab = this.isActiveTab(tabIndex), settings = this.getSettings(); if ((settings.toggleSelf || !isActiveTab) && settings.hidePrevious) { this.deactivateActiveTab(); } if (!settings.hidePrevious && isActiveTab) { this.deactivateActiveTab(tabIndex); } if (!isActiveTab) { this.activateTab(tabIndex); } } } exports["default"] = baseTabs; /***/ }) }]); //# sourceMappingURL=accordion.b9a0ab19c7c872c405d7.bundle.js.map developer – Page 11 – Crystal Detailing

Unlock Your Winnings with the National Casino Bonus

Embarking on an online casino adventure can be an exhilarating journey, filled with the thrill of chance and the potential for significant rewards. For those seeking a premier destination that understands the value of a warm welcome and ongoing appreciation, exploring the offers at https://nationalcasinos-online.com/bonuses/ is a must. This platform has carved a niche by […]

Unlock Your Game: Euro Palace Casino Welcome Bonus Guide

Embarking on your online casino journey can be an exciting prospect, especially when attractive offers are on the table. Understanding the nuances of these promotions is key to maximizing your gaming experience and potential winnings. For those looking to dive into a reputable platform, exploring the details of the Euro Palace Casino Welcome Bonus is […]

Unlock Your Winnings: The Complete Beep Beep Casino Bonus Guide

Navigating the exciting world of online casinos can be a thrilling experience, especially when you’re looking for the best value for your money. Many players actively seek out promotions that enhance their gameplay and boost their winning potential. If you’re in New Zealand and curious about the latest offers, exploring the Beep Beep Casino bonus […]

Bitstarz Casino Registration: Avoid These Common Pitfalls

Embarking on your online gaming adventure with a reputable platform like Bitstarz can be incredibly rewarding, offering a vast array of games and attractive bonuses. To ensure a smooth and hassle-free start, it’s crucial to navigate the registration process with care and attention to detail. Many players overlook simple steps, which can lead to minor […]

Unlock More Wins: Mummys Gold Casino Bonus Strategies

Are you looking to maximize your gaming experience and potentially boost your winnings at an online casino? Exploring the various offers available is a fantastic way to do just that. For those interested in the specific promotions, a great starting point is to check out the fantastic deals and opportunities that await players, so diving […]

Gamdom Casino Registration: Your Ultimate Guide

Embarking on a new online casino adventure can be an exhilarating experience, filled with anticipation and the promise of exciting gameplay. For those in New Zealand looking to dive into a world of digital dice, slots, and live dealer action, the process of signing up is the first crucial step. Many players search for reliable […]

Casibom Casino – Güvenilir Online Casino Giriş Adresi

Casibom Casino – Güvenilir Online Casino Giriş Adresi ▶️ OYNAMAK Содержимое Casibom Casino Hakkında Genel Bilgiler Casibom Casino’da Güvenliği Nasıl Kontrol Ediyorum? Casibom Casino’da Oynarken Ne Tercih Ediyorum? Casibom casino için güncel giriş adresi casibom.com olarak bilinir. Bu güvenli ve etkili platformda, her tür oyunu bulabilirsiniz. Casibom giriş sayfasını ziyaret ederek, çeşitli bonuslar ve tekliflerle […]

Покердом – Официальный сайт онлайн казино Pokerdom

Покердом – Официальный сайт онлайн казино Pokerdom ▶️ ИГРАТЬ Содержимое Преимущества игры в онлайн-казино Pokerdom Как начать играть в онлайн-казино Pokerdom Шаг 1: Регистрация Шаг 2: Депозит Бонусы и акции в онлайн-казино Pokerdom Если вы ищете надежный и безопасный способ играть в онлайн-казино, то Pokerdom – ваш выбор. Официальный сайт Pokerdom предлагает широкий спектр игр, […]

Mostbet AZ – bukmeker ve kazino Mostbet – Giriş rəsmi sayt

Mostbet AZ – bukmeker ve kazino Mostbet – Giriş rəsmi sayt ▶️ OYNA Содержимое Mostbet AZ-də qeydiyyatdan keçmək və hesab açmaq Mostbet-də idman mərcləri və kazino oyunları Mostbet AZ-də idman mərcləri Mostbet AZ-də ödənişlər və bonuslar mostbet Azerbaijan oyunçuları üçün ən yaxşı seçimdir, çünki burada müxtəlif idman növləri və kazino oyunları mövcuddur. Mostbet saytına daxil […]

Mostbet – Site Oficial de Casino Online e Apostas no Portugal

Mostbet – Site Oficial de Casino Online e Apostas no Portugal ▶️ JOGAR Содержимое Mostbet – O Melhor Site de Casino Online e Apostas no Portugal Registre-se Agora e Gane! Como registrar-se no Mostbet? Se você está procurando por um site de casino online e apostas de confiança no Portugal, você chegou ao lugar certo. […]