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-title-keyboard-handler.92a73d7a8a75bcb8cd67.bundle.js
/*! elementor - v3.25.0 - 13-11-2024 */ "use strict"; (self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["nested-title-keyboard-handler"],{ /***/ "../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; /***/ }) }]); //# sourceMappingURL=nested-title-keyboard-handler.92a73d7a8a75bcb8cd67.bundle.js.map
Save Changes
Rename File
Rename