"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 3 – Crystal Detailing

Hellspin Casino Welcome Bonus: Avoid Common Mistakes

Embarking on your online gaming journey can be incredibly exciting, especially when a generous offer is on the table. Many players look forward to kickstarting their experience with a special incentive, and understanding how to maximize these promotions is key to a positive start. Navigating the terms and conditions carefully is crucial, and for those […]

Galactic Casino Login: Your Gateway to Cosmic Gaming Fun

Embarking on an online gaming adventure can be an exhilarating experience, promising excitement and potential rewards right from your own home. Navigating the vast universe of online casinos requires a reliable starting point, and for many, this means finding a secure and user-friendly portal to their favorite games. Discovering a platform that prioritizes player experience […]

7bit Casino Mobile App: Your Ultimate Beginner’s Guide

Embarking on the online casino journey can be an exhilarating experience, offering a world of entertainment and potential wins right at your fingertips. For those looking to dive into this exciting realm, understanding the available platforms is key, and many players find the convenience of mobile gaming irresistible, making resources like https://7bitcasinos-online.com/app/ invaluable for getting […]

High Roller Casino Bonus: Comparing Your Top Options

Embarking on the thrilling journey of online casino gaming often begins with a quest for the most enticing offers. For those seeking an elevated experience, understanding the landscape of premium incentives is paramount. Exploring the diverse range of promotions available is crucial, and a comprehensive look at what leading platforms provide, such as the various […]

Kingdom Casino Registration: Your Gateway to Premium Gaming

Embarking on the journey of online gambling can be both exhilarating and complex. For players seeking a distinguished experience, the process of joining a reputable platform is paramount. Understanding the nuances of creating an account is the first step towards unlocking a world of entertainment and potential winnings, and for many, the straightforward procedure found […]

Unlock 888 Casino Welcome Bonus: Your Step-by-Step Guide

Embarking on your online casino journey can be an exciting prospect, and securing a lucrative welcome bonus is often the first step towards an enhanced gaming experience. Understanding the intricacies of these offers is crucial for maximizing your potential winnings and enjoyment. For those looking to dive into the world of online gaming with a […]

Casino Days Bonus: Real Stories of Big Wins and Joy

The allure of online casinos often stems from the dream of a life-changing win, a moment where luck strikes and everything changes. Many players find themselves drawn to the excitement and potential rewards, exploring various platforms in search of that perfect gaming experience. For those looking to explore the exciting world of online gaming and […]

Unlock Your Gaming Journey: Guts Casino Welcome Bonus Guide

Embarking on the thrilling world of online casinos can be an exhilarating experience, especially when a generous offer awaits new players. For those venturing into the New Zealand market, understanding the intricacies of promotions is key to maximizing your enjoyment and potential winnings. Navigating the landscape of online gaming deals, it’s beneficial to be aware […]

Play on the Go: Royal Panda Casino Mobile App Insights

The online gambling industry is constantly evolving, offering players more ways to enjoy their favourite games than ever before. With the rise of smartphones and tablets, mobile gaming has become a dominant force, and casinos are adapting quickly to meet this demand. For players in New Zealand looking for a premium mobile experience, exploring options […]

Imperial Wins Casino Registration Guide for New Players

Embarking on the journey into the world of online casinos can be an exciting prospect, offering a diverse range of entertainment and potential rewards. For those eager to explore the offerings at a premier platform, initiating the process is straightforward and secure, and you can begin by visiting the dedicated registration portal at https://imperialwinscasino-online.com/registration/. This […]