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

Innovative_Lösungen_für_Unternehmen_mit_https_my-empire_com_de_entwickeln_lang

Innovative Lösungen für Unternehmen mit https://my-empire.com.de entwickeln langfristigen Erfolg sicher Digitale Transformation als Schlüssel zum Erfolg Die Bedeutung von Datenanalyse Effektives Marketing im digitalen Zeitalter Content Marketing: Wertvolle Inhalte schaffen Optimierung von Geschäftsprozessen Lean Management: Verschwendung vermeiden Nachhaltigkeit und soziale Verantwortung Zukunftsperspektiven und innovative Geschäftsmodelle 🔥 Spielen ▶️ Innovative Lösungen für Unternehmen mit https://my-empire.com.de entwickeln […]

Erlebnisreiche_Unterhaltung_mit_vielen_Extras_bietet_https_rolldorado-casino_com

Erlebnisreiche Unterhaltung mit vielen Extras bietet https://rolldorado-casino.com.de für dein Spielvergnügen Die Vielfalt des Spielangebots bei Rolldorado Sichere und faire Spielumgebung Bonusangebote und Promotionen bei Rolldorado Loyalitätsprogramm und VIP-Vorteile Mobile Spielerfahrung mit Rolldorado Kompatibilität und Benutzerfreundlichkeit Kundensupport und Zahlungsmethoden bei Rolldorado Nachhaltige Innovation und zukünftige Entwicklungen bei Rolldorado 🔥 Spielen ▶️ Erlebnisreiche Unterhaltung mit vielen Extras […]

Genuine_stories_unlock_captivating_moments_with_FishingFrenzy_gameplay_adventure

Genuine stories unlock captivating moments with FishingFrenzy gameplay adventures Mastering the Art of the Cast: Core Gameplay Mechanics Understanding Fish Behavior and Patterns Expanding Your Arsenal: Upgrades and Customization The Importance of Bait Selection Social Fishing: Competing and Collaborating with Others Participating in Tournaments and Events Exploring Diverse Environments: From Rivers to the Open Ocean […]

Genuine_comfort_and_https_honey-betz_cz_elevate_your_gaming_experience_today

Genuine comfort and https://honey-betz.cz elevate your gaming experience today Enhancing Your Gameplay with Superior Platform Features The Importance of Seamless Integration and Accessibility Building a Thriving Gaming Community The Role of Fair Play and Responsible Gaming Implementing Effective Safeguards Against Exploitation Exploring Emerging Trends in Online Gaming Looking Ahead: The Future of Interactive Entertainment 🔥 […]

Genuine_rewards_and_zodiaccasino_nz_deliver_satisfying_casino_entertainment_expe

Genuine rewards and zodiaccasino.nz deliver satisfying casino entertainment experiences Understanding the Appeal of Online Casinos The Importance of Licensing and Regulation Navigating the World of Online Casino Games Mobile Gaming and the Future of Online Casinos Understanding Bonus Structures and Promotions The Importance of Secure Payment Methods and Customer Support 🔥 Play ▶️ Genuine rewards […]

Einsteigerfreundliche_Angebote_von_spinogambinocasino_ch_für_sicheres_Spielverg

Einsteigerfreundliche Angebote von spinogambinocasino.ch für sicheres Spielvergnügen und hohe Gewinne Die Vielfalt der Spielauswahl bei spinogambinocasino.ch Die Bedeutung von Softwareanbietern für die Spielqualität Bonusangebote und Promotionen bei spinogambinocasino.ch Die Bedeutung der Bonusbedingungen Sicherheit und Kundenservice Die Bedeutung eines zuverlässigen Kundenservices Mobile Verfügbarkeit von spinogambinocasino.ch Zukunftsperspektiven und Innovationen bei spinogambinocasino.ch 🔥 Spielen ▶️ Einsteigerfreundliche Angebote von […]

Genuine_strategy_and_informed_insights_await_with_https_taka-bet_net_for_confide

Genuine strategy and informed insights await with https://taka-bet.net for confident betting choices Understanding the Core Principles of Successful Prediction The Role of Data Analytics in Modern Betting Strategies Risk Management: A Cornerstone of Sustainable Betting The Future of Predictive Analysis and its Impact on Betting Beyond the Bet: Utilizing Data for Informed Engagement 🔥 Play […]