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

Beef online kaszinó HU – befizetések, kifizetések és fizetési lehetőségek

Beef online kaszinó HU – befizetések, kifizetések és fizetési lehetőségek ▶️ JÁTSZANI Содержимое Beef online kaszinó HU: befizetések, kifizetések és fizetési lehetőségek Fizetési lehetőségek részletesen Bankkártyás befizetések a leggyorsabb elinduláshoz Azonnali tranzakciók előnyei Biztonság és adatvédelem A beef online kaszinó hu platform a magyar játékosok számára egyaránt kínál gyors és biztonságos pénzügyi megoldásokat, amelyek lehetővé […]

Millioner online καζίνο – καταθέσεις, αναλήψεις και πληρωμές

Millioner online καζίνο – καταθέσεις, αναλήψεις και πληρωμές ▶️ ΠΑΊΖΩ Содержимое Ασφαλείς μέθοδοι κατάθεσης για άμεση πρόσβαση στα παιχνίδια Ηλεκτρονικά πορτοφόλια (e‑wallets) Πιστωτικές/Χρεωστικές κάρτες Το millioner καζίνο gr έχει εδραιωθεί ως μία από τις πιο αξιόπιστες πλατφόρμες στην ελληνική αγορά, προσφέροντας εύκολες και γρήγορες μεθόδους καταθέσεων που καλύπτουν τόσο τις ανάγκες των νέων όσο και […]

Millioner καζίνο GR – παιχνίδια, μπόνους και μέθοδοι πληρωμής

Millioner καζίνο GR – παιχνίδια, μπόνους και μέθοδοι πληρωμής ▶️ ΠΑΊΖΩ Содержимое Πώς να επιλέξετε τα πιο κερδοφόρα παιχνίδια στο Millioner Στρατηγικές επιλογής Ανάλυση RTP και μεταβλητότητας Βέλτιστες στρατηγικές για αξιοποίηση των μπόνους και ασφαλείς τρόπους πληρωμής Επιλογή κατάλληλου μπόνους Ασφαλείς τρόποι πληρωμής Το millioner αποτελεί ορόσημο στον ελληνικό χώρο των διαδικτυακών τζακινόυ, προσφέροντας μια […]

Mindesteinzahlung von 10 CHF: der Ratgeber

Mindesteinzahlung von 10 CHF: der Ratgeber Mit 10 CHF Mindesteinzahlung lasst sich ein Casino ohne grossen Einsatz ausprobieren. Gerade in der Schweiz kommt das gut an. Dieser Beitrag erklart Vorteile und Grenzen. Erst die Bedingungen zeigen, ob sich ein Anbieter lohnt. So findet man das passende Casino rasch. Laufend kommen neue Angebote dazu. Damit gibt […]

Casino Willkommensbonus ohne Einzahlung: das sollte man wissen

Casino Willkommensbonus ohne Einzahlung: das sollte man wissen Kaum ein Angebot begrusst neue Spieler so verlockend wie der Willkommensbonus. In der Schweiz sind solche Angebote sehr gefragt. Wie er funktioniert, beschreibt Redakteurin Lina Steiner. Casinos gibt es zahlreiche. Etablierte Namen uberzeugen. So bleibt es serios Erreichbarkeit ist ein Plus. So gibt es keine Sackgasse Vielfalt […]