File Editor
Directories:
.. (Back)
packages
Files:
152486453d0e39071cdb.bundle.js
294b4bf3066815c5927f.bundle.min.js
2f08057553c95b827d30.bundle.min.js
4748df03726015eef04f.bundle.min.js
49d9a23b08ff2c138b03.bundle.min.js
49d9a23b08ff2c138b03.bundle.min.js.LICENSE.txt
7b18c3f2f2bfffda289f.bundle.js
9c42cff515a6191fddaf.bundle.min.js
a730ee9caa710006b307.bundle.js
accordion.8799675460c73eb48972.bundle.min.js
accordion.c16b88b2e8a0c50189bc.bundle.js
admin-feedback.js
admin-feedback.min.js
admin-modules.js
admin-modules.min.js
admin-modules.min.js.LICENSE.txt
admin-notifications.js
admin-notifications.min.js
admin-notifications.min.js.LICENSE.txt
admin-top-bar.js
admin-top-bar.min.js
admin.js
admin.min.js
admin.min.js.LICENSE.txt
ai-admin.js
ai-admin.min.js
ai-admin.min.js.LICENSE.txt
ai-gutenberg.js
ai-gutenberg.min.js
ai-gutenberg.min.js.LICENSE.txt
ai-layout.js
ai-layout.min.js
ai-layout.min.js.LICENSE.txt
ai-media-library.js
ai-media-library.min.js
ai-media-library.min.js.LICENSE.txt
ai.js
ai.min.js
ai.min.js.LICENSE.txt
alert.c3c6a3fdf4745bd26b7f.bundle.js
alert.cbc2a0fee74ee3ed0419.bundle.min.js
announcements-app.js
announcements-app.min.js
announcements-app.min.js.LICENSE.txt
app-loader.js
app-loader.min.js
app-packages.js
app-packages.min.js
app-packages.min.js.LICENSE.txt
app.js
app.min.js
app.min.js.LICENSE.txt
atomic-widgets-editor.js
atomic-widgets-editor.min.js
b7931adecb98651a09c7.bundle.min.js
bdd4030576f6a94a4f0d.bundle.js
beta-tester.js
beta-tester.min.js
c96bb3445f3bc9de7d26.bundle.min.js
checklist.js
checklist.min.js
checklist.min.js.LICENSE.txt
common-modules.js
common-modules.min.js
common.js
common.min.js
common.min.js.LICENSE.txt
contact-buttons.31aad77620f461830ce9.bundle.min.js
contact-buttons.a5e2cc7274ba4c94eb66.bundle.js
container-converter.js
container-converter.min.js
container.a7f0a15dfa05df34e1f7.bundle.js
container.c65a2a923085e1120e75.bundle.min.js
counter.02cef29c589e742d4c8c.bundle.min.js
counter.3f74a246dff765f39aea.bundle.js
d91e4d7f57d57af2aab9.bundle.min.js
d9299811bc70ddb82fbf.bundle.js
dev-tools.js
dev-tools.min.js
e-home-screen.js
e-home-screen.min.js
e-wc-product-editor.js
e-wc-product-editor.min.js
e-wc-product-editor.min.js.LICENSE.txt
e3f753621bf9be55ec4d.bundle.js
editor-document.js
editor-document.min.js
editor-environment-v2.js
editor-environment-v2.min.js
editor-loader-v1.js
editor-loader-v1.min.js
editor-loader-v2.js
editor-loader-v2.min.js
editor-modules.js
editor-modules.min.js
editor-modules.min.js.LICENSE.txt
editor-notifications.js
editor-notifications.min.js
editor-notifications.min.js.LICENSE.txt
editor.js
editor.min.js
editor.min.js.LICENSE.txt
element-manager-admin.js
element-manager-admin.min.js
element-manager-admin.min.js.LICENSE.txt
elementor-admin-bar.js
elementor-admin-bar.min.js
f634673e5824ceb13f3d.bundle.js
fa0cbd4c7b6a8ad83224.bundle.js
fd6a00ae23a1bc2c6190.bundle.js
floating-bars.1ebb83f158244b35bda6.bundle.js
floating-bars.e4547b87bc6fb09381ca.bundle.min.js
floating-elements-modal.js
floating-elements-modal.min.js
frontend-modules.js
frontend-modules.min.js
frontend.js
frontend.min.js
gutenberg.js
gutenberg.min.js
image-carousel.4455c6362492d9067512.bundle.min.js
image-carousel.9399f19d95d7300cbc2e.bundle.js
import-export-admin.js
import-export-admin.min.js
kit-elements-defaults-editor.js
kit-elements-defaults-editor.min.js
kit-elements-defaults-editor.min.js.LICENSE.txt
kit-library.1f8d31888dc9d19dd031.bundle.min.js
kit-library.ac1a4cd5deae5526ce49.bundle.js
lightbox.01a419d1fcdd47a75a77.bundle.min.js
lightbox.2c9ae19597fcd2a76c3a.bundle.js
media-hints.js
media-hints.min.js
nested-accordion.82e5c4e9017e457a5f2e.bundle.js
nested-accordion.c3b109b714293a16bd95.bundle.min.js
nested-accordion.js
nested-accordion.min.js
nested-accordion.min.js.LICENSE.txt
nested-elements.js
nested-elements.min.js
nested-tabs.js
nested-tabs.min.js
nested-tabs.min.js.LICENSE.txt
nested-title-keyboard-handler.0b608656da2be746fb80.bundle.min.js
nested-title-keyboard-handler.92a73d7a8a75bcb8cd67.bundle.js
new-template.js
new-template.min.js
notes.js
notes.min.js
onboarding.4a4002ff7ea58bfa166e.bundle.min.js
onboarding.5ceee1b219b66e943cb0.bundle.js
progress.6d15c16f0f5c4792940f.bundle.js
progress.985f012a6336ab21cb44.bundle.min.js
responsive-bar.js
responsive-bar.min.js
styleguide-app-initiator.js
styleguide-app-initiator.min.js
styleguide-app-initiator.min.js.LICENSE.txt
styleguide.js
styleguide.min.js
tabs.520bc2ed4560c561029e.bundle.js
tabs.c2af5be7f9cb3cdcf3d5.bundle.min.js
text-editor.2c35aafbe5bf0e127950.bundle.min.js
text-editor.2f2f7e0ea1e16387a004.bundle.js
text-path.39fb59e43970222f5a3e.bundle.min.js
text-path.39fb59e43970222f5a3e.bundle.min.js.LICENSE.txt
text-path.a20877e832db83423958.bundle.js
toggle.31881477c45ff5cf9d4d.bundle.min.js
toggle.d79746a764407a0828ee.bundle.js
video.78c625e89ab767d621c5.bundle.min.js
video.817bd6a65a1542503aac.bundle.js
web-cli.js
web-cli.min.js
web-cli.min.js.LICENSE.txt
webpack.runtime.js
webpack.runtime.min.js
wp-audio.75f0ced143febb8cd31a.bundle.min.js
wp-audio.b8efdc046bc9df72a075.bundle.js
Create New File
Create
Edit File: nested-accordion.82e5c4e9017e457a5f2e.bundle.js
/*! elementor - v3.25.0 - 13-11-2024 */ "use strict"; (self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["nested-accordion"],{ /***/ "../assets/dev/js/frontend/handlers/accessibility/nested-title-keyboard-handler.js": /*!*****************************************************************************************!*\ !*** ../assets/dev/js/frontend/handlers/accessibility/nested-title-keyboard-handler.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 */ "../assets/dev/js/frontend/handlers/base.js")); class NestedTitleKeyboardHandler extends _base.default { __construct(settings) { super.__construct(settings); this.directionNext = 'next'; this.directionPrevious = 'previous'; this.focusableElementSelector = 'audio, button, canvas, details, iframe, input, select, summary, textarea, video, [accesskey], [contenteditable], [href], [tabindex]:not([tabindex="-1"])'; } getWidgetNumber() { return this.$element.find('> .elementor-widget-container > .e-n-tabs, > .e-n-tabs').attr('data-widget-number'); } getDefaultSettings() { return { selectors: { itemTitle: `[id*="e-n-tab-title-${this.getWidgetNumber()}"]`, itemContainer: `[id*="e-n-tab-content-${this.getWidgetNumber()}"]` }, ariaAttributes: { titleStateAttribute: 'aria-selected', activeTitleSelector: '[aria-selected="true"]' }, datasets: { titleIndex: 'data-tab-index' }, keyDirection: { ArrowLeft: elementorFrontendConfig.is_rtl ? this.directionNext : this.directionPrevious, ArrowUp: this.directionPrevious, ArrowRight: elementorFrontendConfig.is_rtl ? this.directionPrevious : this.directionNext, ArrowDown: this.directionNext } }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { $itemTitles: this.findElement(selectors.itemTitle), $itemContainers: this.findElement(selectors.itemContainer), $focusableContainerElements: this.getFocusableElements(this.findElement(selectors.itemContainer)) }; } getFocusableElements($elements) { return $elements.find(this.focusableElementSelector).not('[disabled], [inert]'); } getKeyDirectionValue(event) { const direction = this.getSettings('keyDirection')[event.key]; return this.directionNext === direction ? 1 : -1; } /** * @param {HTMLElement} itemTitleElement * * @return {string} */ getTitleIndex(itemTitleElement) { const { titleIndex: indexAttribute } = this.getSettings('datasets'); return itemTitleElement.getAttribute(indexAttribute); } /** * @param {string|number} titleIndex * * @return {string} */ getTitleFilterSelector(titleIndex) { const { titleIndex: indexAttribute } = this.getSettings('datasets'); return `[${indexAttribute}="${titleIndex}"]`; } getActiveTitleElement() { const activeTitleFilter = this.getSettings('ariaAttributes').activeTitleSelector; return this.elements.$itemTitles.filter(activeTitleFilter); } onInit() { super.onInit(...arguments); } bindEvents() { this.elements.$itemTitles.on(this.getTitleEvents()); this.elements.$focusableContainerElements.on(this.getContentElementEvents()); } unbindEvents() { this.elements.$itemTitles.off(this.getTitleEvents()); this.elements.$focusableContainerElements.children().off(this.getContentElementEvents()); } getTitleEvents() { return { keydown: this.handleTitleKeyboardNavigation.bind(this) }; } getContentElementEvents() { return { keydown: this.handleContentElementKeyboardNavigation.bind(this) }; } isDirectionKey(event) { const directionKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End']; return directionKeys.includes(event.key); } isActivationKey(event) { const activationKeys = ['Enter', ' ']; return activationKeys.includes(event.key); } handleTitleKeyboardNavigation(event) { if (this.isDirectionKey(event)) { event.preventDefault(); const currentTitleIndex = parseInt(this.getTitleIndex(event.currentTarget)) || 1, numberOfTitles = this.elements.$itemTitles.length, titleIndexUpdated = this.getTitleIndexFocusUpdated(event, currentTitleIndex, numberOfTitles); this.changeTitleFocus(titleIndexUpdated); event.stopPropagation(); } else if (this.isActivationKey(event)) { event.preventDefault(); if (this.handeTitleLinkEnterOrSpaceEvent(event)) { return; } const titleIndex = this.getTitleIndex(event.currentTarget); elementorFrontend.elements.$window.trigger('elementor/nested-elements/activate-by-keyboard', { widgetId: this.getID(), titleIndex }); } else if ('Escape' === event.key) { this.handleTitleEscapeKeyEvents(event); } } handeTitleLinkEnterOrSpaceEvent(event) { const isLinkElement = 'a' === event?.currentTarget?.tagName?.toLowerCase(); if (!elementorFrontend.isEditMode() && isLinkElement) { event?.currentTarget?.click(); event.stopPropagation(); } return isLinkElement; } getTitleIndexFocusUpdated(event, currentTitleIndex, numberOfTitles) { let titleIndexUpdated = 0; switch (event.key) { case 'Home': titleIndexUpdated = 1; break; case 'End': titleIndexUpdated = numberOfTitles; break; default: const directionValue = this.getKeyDirectionValue(event), isEndReached = numberOfTitles < currentTitleIndex + directionValue, isStartReached = 0 === currentTitleIndex + directionValue; if (isEndReached) { titleIndexUpdated = 1; } else if (isStartReached) { titleIndexUpdated = numberOfTitles; } else { titleIndexUpdated = currentTitleIndex + directionValue; } } return titleIndexUpdated; } changeTitleFocus(titleIndexUpdated) { const $newTitle = this.elements.$itemTitles.filter(this.getTitleFilterSelector(titleIndexUpdated)); this.setTitleTabindex(titleIndexUpdated); $newTitle.trigger('focus'); } setTitleTabindex(titleIndex) { this.elements.$itemTitles.attr('tabindex', '-1'); const $newTitle = this.elements.$itemTitles.filter(this.getTitleFilterSelector(titleIndex)); $newTitle.attr('tabindex', '0'); } handleTitleEscapeKeyEvents() {} handleContentElementKeyboardNavigation(event) { if ('Tab' === event.key && !event.shiftKey) { this.handleContentElementTabEvents(event); } else if ('Escape' === event.key) { event.preventDefault(); event.stopPropagation(); this.handleContentElementEscapeEvents(event); } } handleContentElementEscapeEvents() { this.getActiveTitleElement().trigger('focus'); } handleContentElementTabEvents() {} } exports["default"] = NestedTitleKeyboardHandler; /***/ }), /***/ "../modules/nested-accordion/assets/js/frontend/handlers/nested-accordion-title-keyboard-handler.js": /*!**********************************************************************************************************!*\ !*** ../modules/nested-accordion/assets/js/frontend/handlers/nested-accordion-title-keyboard-handler.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 _nestedTitleKeyboardHandler = _interopRequireDefault(__webpack_require__(/*! elementor-frontend/handlers/accessibility/nested-title-keyboard-handler */ "../assets/dev/js/frontend/handlers/accessibility/nested-title-keyboard-handler.js")); class NestedAccordionTitleKeyboardHandler extends _nestedTitleKeyboardHandler.default { __construct() { super.__construct(...arguments); const config = arguments.length <= 0 ? undefined : arguments[0]; this.toggleTitle = config.toggleTitle; } getDefaultSettings() { const parentSettings = super.getDefaultSettings(); return { ...parentSettings, selectors: { itemTitle: '.e-n-accordion-item-title', itemContainer: '.e-n-accordion-item > .e-con' }, ariaAttributes: { titleStateAttribute: 'aria-expanded', activeTitleSelector: '[aria-expanded="true"]' }, datasets: { titleIndex: 'data-accordion-index' } }; } handeTitleLinkEnterOrSpaceEvent(event) { this.toggleTitle(event); } handleContentElementEscapeEvents(event) { this.getActiveTitleElement().trigger('focus'); this.toggleTitle(event); } handleTitleEscapeKeyEvents(event) { const detailsNode = event?.currentTarget?.parentElement, isOpen = detailsNode?.open; if (isOpen) { this.toggleTitle(event); } } } exports["default"] = NestedAccordionTitleKeyboardHandler; /***/ }), /***/ "../modules/nested-accordion/assets/js/frontend/handlers/nested-accordion.js": /*!***********************************************************************************!*\ !*** ../modules/nested-accordion/assets/js/frontend/handlers/nested-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 _base = _interopRequireDefault(__webpack_require__(/*! elementor-frontend/handlers/base */ "../assets/dev/js/frontend/handlers/base.js")); var _nestedAccordionTitleKeyboardHandler = _interopRequireDefault(__webpack_require__(/*! ./nested-accordion-title-keyboard-handler */ "../modules/nested-accordion/assets/js/frontend/handlers/nested-accordion-title-keyboard-handler.js")); class NestedAccordion extends _base.default { constructor() { super(...arguments); this.animations = new Map(); } getDefaultSettings() { return { selectors: { accordion: '.e-n-accordion', accordionContentContainers: '.e-n-accordion > .e-con', accordionItems: '.e-n-accordion-item', accordionItemTitles: '.e-n-accordion-item-title', accordionItemTitlesText: '.e-n-accordion-item-title-text', accordionContent: '.e-n-accordion-item > .e-con', directAccordionItems: ':scope > .e-n-accordion-item', directAccordionItemTitles: ':scope > .e-n-accordion-item > .e-n-accordion-item-title' }, default_state: 'expanded', attributes: { index: 'data-accordion-index', ariaLabelledBy: 'aria-labelledby' } }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { $accordion: this.findElement(selectors.accordion), $contentContainers: this.findElement(selectors.accordionContentContainers), $accordionItems: this.findElement(selectors.accordionItems), $accordionTitles: this.findElement(selectors.accordionItemTitles), $accordionContent: this.findElement(selectors.accordionContent) }; } onInit() { super.onInit(...arguments); if (elementorFrontend.isEditMode() && !elementorCommon.config.experimentalFeatures.e_nested_atomic_repeaters) { this.interlaceContainers(); } this.injectKeyboardHandler(); } injectKeyboardHandler() { if ('nested-accordion.default' === this.getSettings('elementName')) { new _nestedAccordionTitleKeyboardHandler.default({ $element: this.$element, toggleTitle: this.clickListener.bind(this) }); } } interlaceContainers() { const { $contentContainers, $accordionItems } = this.getDefaultElements(); $contentContainers.each((index, element) => { $accordionItems[index].appendChild(element); }); } linkContainer(event) { const { container, index, targetContainer, action: { type } } = event.detail, view = container.view.$el, id = container.model.get('id'), currentId = this.$element.data('id'); if (id === currentId) { const { $accordionItems } = this.getDefaultElements(); let accordionItem, contentContainer; switch (type) { case 'move': [accordionItem, contentContainer] = this.move(view, index, targetContainer, $accordionItems); break; case 'duplicate': [accordionItem, contentContainer] = this.duplicate(view, index, targetContainer, $accordionItems); break; default: break; } if (undefined !== accordionItem) { accordionItem.appendChild(contentContainer); } this.updateIndexValues(); this.updateListeners(view); elementor.$preview[0].contentWindow.dispatchEvent(new CustomEvent('elementor/elements/link-data-bindings')); } } move(view, index, targetContainer, accordionItems) { return [accordionItems[index], targetContainer.view.$el[0]]; } duplicate(view, index, targetContainer, accordionItems) { return [accordionItems[index + 1], targetContainer.view.$el[0]]; } updateIndexValues() { const { $accordionContent, $accordionItems } = this.getDefaultElements(), settings = this.getSettings(), itemIdBase = $accordionItems[0].getAttribute('id').slice(0, -1); $accordionItems.each((index, element) => { element.setAttribute('id', `${itemIdBase}${index}`); element.querySelector(settings.selectors.accordionItemTitles).setAttribute(settings.attributes.index, index + 1); element.querySelector(settings.selectors.accordionItemTitles).setAttribute('aria-controls', `${itemIdBase}${index}`); element.querySelector(settings.selectors.accordionItemTitlesText).setAttribute('data-binding-index', index + 1); $accordionContent[index].setAttribute(settings.attributes.ariaLabelledBy, `${itemIdBase}${index}`); }); } updateListeners(view) { this.elements.$accordionTitles = view.find(this.getSettings('selectors.accordionItemTitles')); this.elements.$accordionItems = view.find(this.getSettings('selectors.accordionItems')); this.elements.$accordionTitles.on('click', this.clickListener.bind(this)); } bindEvents() { this.elements.$accordionTitles.on('click', this.clickListener.bind(this)); elementorFrontend.elements.$window.on('elementor/nested-container/atomic-repeater', this.linkContainer.bind(this)); } unbindEvents() { this.elements.$accordionTitles.off(); } clickListener(event) { event.preventDefault(); this.elements = this.getDefaultElements(); const settings = this.getSettings(), accordionItem = event?.currentTarget?.closest(settings.selectors.accordionItems), accordion = event?.currentTarget?.closest(settings.selectors.accordion), itemSummary = accordionItem.querySelector(settings.selectors.accordionItemTitles), accordionContent = accordionItem.querySelector(settings.selectors.accordionContent), { max_items_expended: maxItemsExpended } = this.getElementSettings(), directAccordionItems = accordion.querySelectorAll(settings.selectors.directAccordionItems), directAccordionItemTitles = accordion.querySelectorAll(settings.selectors.directAccordionItemTitles); if ('one' === maxItemsExpended) { this.closeAllItems(directAccordionItems, directAccordionItemTitles); } if (!accordionItem.open) { this.prepareOpenAnimation(accordionItem, itemSummary, accordionContent); } else { this.closeAccordionItem(accordionItem, itemSummary); } } animateItem(accordionItem, startHeight, endHeight, isOpen) { accordionItem.style.overflow = 'hidden'; let animation = this.animations.get(accordionItem); if (animation) { animation.cancel(); } animation = accordionItem.animate({ height: [startHeight, endHeight] }, { duration: this.getAnimationDuration() }); animation.onfinish = () => this.onAnimationFinish(accordionItem, isOpen); this.animations.set(accordionItem, animation); accordionItem.querySelector('summary')?.setAttribute('aria-expanded', isOpen); } closeAccordionItem(accordionItem, accordionItemTitle) { const startHeight = `${accordionItem.offsetHeight}px`, endHeight = `${accordionItemTitle.offsetHeight}px`; this.animateItem(accordionItem, startHeight, endHeight, false); } prepareOpenAnimation(accordionItem, accordionItemTitle, accordionItemContent) { accordionItem.style.overflow = 'hidden'; accordionItem.style.height = `${accordionItem.offsetHeight}px`; accordionItem.open = true; window.requestAnimationFrame(() => this.openAccordionItem(accordionItem, accordionItemTitle, accordionItemContent)); } openAccordionItem(accordionItem, accordionItemTitle, accordionItemContent) { const startHeight = `${accordionItem.offsetHeight}px`, endHeight = `${accordionItemTitle.offsetHeight + accordionItemContent.offsetHeight}px`; this.animateItem(accordionItem, startHeight, endHeight, true); } onAnimationFinish(accordionItem, isOpen) { accordionItem.open = isOpen; this.animations.set(accordionItem, null); accordionItem.style.height = accordionItem.style.overflow = ''; } closeAllItems(items, titles) { titles.forEach((title, index) => { this.closeAccordionItem(items[index], title); }); } getAnimationDuration() { const { size, unit } = this.getElementSettings('n_accordion_animation_duration'); return size * ('ms' === unit ? 1 : 1000); } } exports["default"] = NestedAccordion; /***/ }) }]); //# sourceMappingURL=nested-accordion.82e5c4e9017e457a5f2e.bundle.js.map
Save Changes
Rename File
Rename