PATH:
home
/
lab2454c
/
caimegroup.com
/
wp-content
/
plugins
/
elementor-pro
/
assets
/
js
/*! elementor-pro - v3.20.0 - 26-03-2024 */ "use strict"; (self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["menu-title-keyboard-handler"],{ /***/ "../modules/mega-menu/assets/js/frontend/handlers/menu-title-keyboard-handler.js": /*!***************************************************************************************!*\ !*** ../modules/mega-menu/assets/js/frontend/handlers/menu-title-keyboard-handler.js ***! \***************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class MenuTitleKeyboardHandler extends elementorModules.frontend.handlers.Base { __construct() { super.__construct(...arguments); this.focusableElementSelector = 'audio, button, canvas, details, iframe, input, select, summary, textarea, video, [accesskey], [contenteditable], a[href], area[href], [tabindex]'; this.handleMenuToggleKeydown = this.handleMenuToggleKeydown.bind(this); } getDefaultSettings() { return { selectors: { widgetInnerWrapper: '.e-n-menu', menuItemWrapper: '.e-n-menu-title', menuItemElement: '.e-focus', itemContainer: '.e-n-menu-content > .e-con', menuToggle: '.e-n-menu-toggle' }, ariaAttributes: { titleStateAttribute: 'aria-expanded', activeTitleSelector: '[aria-expanded="true"]', titleControlAttribute: 'aria-controls' }, datasets: { titleIndex: 'data-focus-index' } }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { $menuItemWrappers: this.findElement(selectors.menuItemWrapper), $menuItemElements: this.findElement(selectors.menuItemElement), $itemContainers: this.findElement(selectors.itemContainer), $focusableContainerElements: this.getFocusableElements(this.findElement(selectors.itemContainer)), $menuToggle: this.findElement(selectors.menuToggle) }; } getFocusableElements($elements) { return $elements.find(this.focusableElementSelector).not('[disabled], [inert], [tabindex="-1"]'); } getTitleIndex(menuItemElement) { const { titleIndex: indexAttribute } = this.getSettings('datasets'); return parseInt(menuItemElement?.getAttribute(indexAttribute)); } getTitleFilterSelector(titleIndex) { const { titleIndex: indexAttribute } = this.getSettings('datasets'); return `[${indexAttribute}="${titleIndex}"]`; } getActiveTitleElement() { const activeTitleFilter = this.getSettings('ariaAttributes').activeTitleSelector; return this.elements.$menuItemElements.filter(activeTitleFilter); } onInit() { super.onInit(...arguments); let focusTitleCount = 1; this.elements.$menuItemElements.each((index, title) => { title.setAttribute(this.getSettings('datasets').titleIndex, focusTitleCount++); }); } getTitleEvents() { return { keydown: this.handleTitleKeyboardNavigation.bind(this) }; } getContentElementEvents() { return { keydown: this.handleContentElementKeyboardNavigation.bind(this) }; } bindEvents() { this.elements.$menuItemElements.on(this.getTitleEvents()); this.elements.$focusableContainerElements.on(this.getContentElementEvents()); this.elements.$menuToggle.on('keydown', this.handleMenuToggleKeydown); } unbindEvents() { this.elements.$menuItemElements.off(); this.elements.$focusableContainerElements.off(this.getContentElementEvents()); this.elements.$menuToggle.off('keydown', this.handleMenuToggleKeydown); } handleMenuToggleKeydown(event) { if ('Escape' !== event.key) { return; } event.preventDefault(); event.stopPropagation(); this.closeMenuDropdown(); } handleTitleKeyboardNavigation(event) { switch (event.key) { case 'Tab': if (event.shiftKey) { this.closeActiveContentElements(); } else { this.handleTitleTab(event); } break; case 'Home': case 'End': this.handleTitleHomeOrEndKey(event); break; case 'Enter': case ' ': this.handleTitleActivationKey(event); break; case 'Escape': this.handleTitleEscapeKey(event); break; } } handleTitleTab(event) { const currentTitleIndex = this.getTitleIndex(event.currentTarget); this.maybeFocusMenuToggle(event, currentTitleIndex); const $activeTitle = this.getActiveTitleElement(), activeTitleIndex = this.getTitleIndex($activeTitle[0]) || false, isActiveTitle = currentTitleIndex === activeTitleIndex, activeTitleControl = $activeTitle.attr(this.getSettings('ariaAttributes').titleControlAttribute), $activeContainer = this.elements.$itemContainers.filter(`#${activeTitleControl}`), activeContainerHasFocusableItems = 0 !== this.getFocusableElements($activeContainer).length; if (!isActiveTitle || !activeContainerHasFocusableItems) { this.closeActiveContentElements(); return; } this.focusFirstFocusableContainerElement(event, activeTitleControl); } maybeFocusMenuToggle(event, titleIndex) { const isLastTitle = this.isLastTitle(titleIndex); if (!isLastTitle || !this.isDropdownLayout()) { return; } const activeStateAttribute = this.getSettings('ariaAttributes').titleStateAttribute, currentTitle = event.currentTarget, isContainerOpen = 'true' === currentTitle.getAttribute(activeStateAttribute), containerHasFocusableItems = 0 !== this.getFocusableElements(this.elements.$itemContainers.last()).length; if (isContainerOpen && containerHasFocusableItems) { return; } this.setFocusToMenuToggle(); event.preventDefault(); event.stopPropagation(); } setFocusToMenuToggle() { const selectors = this.getSettings('selectors'); this.$element.find(selectors.menuToggle).trigger('focus'); } isDropdownLayout() { const selectors = this.getSettings('selectors'); return 'dropdown' === this.$element.find(selectors.widgetInnerWrapper).attr('data-layout'); } closeMenuDropdown() { elementorFrontend.elements.$window.trigger('elementor/mega-menu/dropdown-toggle-by-keyboard', { widgetId: this.getID(), show: false }); } handleTitleHomeOrEndKey(event) { event.preventDefault(); const currentTitleIndex = this.getTitleIndex(event.currentTarget) || 1, numberOfTitles = this.elements.$menuItemElements.length, titleIndexUpdated = this.getTitleIndexFocusUpdated(event, currentTitleIndex, numberOfTitles); this.setTitleFocus(titleIndexUpdated); event.stopPropagation(); } handleTitleActivationKey(event) { event.preventDefault(); if (this.handleTitleLinkEnterOrSpaceEvent(event)) { return; } const titleIndex = this.getTitleIndex(event.currentTarget); elementorFrontend.elements.$window.trigger('elementor/nested-elements/activate-by-keyboard', { widgetId: this.getID(), titleIndex }); } setTitleFocus(titleIndexUpdated) { const $newTitle = this.elements.$menuItemElements.filter(this.getTitleFilterSelector(titleIndexUpdated)); $newTitle.trigger('focus'); } isLastTitle(titleIndex) { return this.elements.$menuItemElements.length === titleIndex; } handleTitleLinkEnterOrSpaceEvent(event) { const isLinkElement = 'a' === event?.currentTarget?.tagName?.toLowerCase(); if (!elementorFrontend.isEditMode() && isLinkElement) { event?.currentTarget?.click(); event.stopPropagation(); } return isLinkElement; } handleTitleEscapeKey(event) { event.preventDefault(); event.stopPropagation(); if (this.isDropdownLayout()) { elementorFrontend.elements.$window.trigger('elementor/mega-menu/dropdown-toggle-by-keyboard', { widgetId: this.getID() }); this.setFocusToMenuToggle(); } elementorFrontend.elements.$window.trigger('elementor/nested-elements/activate-by-keyboard', { widgetId: this.getID() }); } handleContentElementKeyboardNavigation(event) { switch (event.key) { case 'Tab': const tabDirection = event.shiftKey ? 'previous' : 'next'; this.handleContentElementTabEvents(event, tabDirection); break; case 'Escape': event.preventDefault(); event.stopPropagation(); this.handleContentElementEscapeEvents(event); break; } } handleContentElementTabEvents(event, direction) { const $currentElement = jQuery(event.currentTarget), containerSelector = this.getSettings('selectors').itemContainer, $currentContainer = $currentElement.closest(containerSelector), $focusableContainerElements = this.getFocusableElements($currentContainer); let $lastFocusableElement; if ('previous' === direction) { $lastFocusableElement = $focusableContainerElements.first(); } else { $lastFocusableElement = $focusableContainerElements.last(); } const isCurrentElementLastFocusableElement = $currentElement.is($lastFocusableElement); if (!isCurrentElementLastFocusableElement) { return; } event.preventDefault(); const $activeTitle = this.getActiveTitleElement(), activeTitleIndex = this.getTitleIndex($activeTitle[0]); this.setTitleFocus(activeTitleIndex); event.stopPropagation(); } handleContentElementEscapeEvents() { this.getActiveTitleElement().trigger('focus'); this.closeActiveContentElements(); } focusFirstFocusableContainerElement(event, titleControl) { const currentContainerSelector = `#${titleControl}`, $activeContainer = this.elements.$itemContainers.filter(currentContainerSelector), $firstFocusableContainer = this.getFocusableElements($activeContainer).first(); if (0 === $firstFocusableContainer.length) { return; } event.preventDefault(); $firstFocusableContainer[0]?.focus(); event.stopPropagation(); } closeActiveContentElements() { elementorFrontend.elements.$window.trigger('elementor/nested-elements/activate-by-keyboard', { widgetId: this.getID() }); } } exports["default"] = MenuTitleKeyboardHandler; /***/ }) }]); //# sourceMappingURL=menu-title-keyboard-handler.255f6b16a2f292e5c260.bundle.js.map
[+]
..
[-] frontend.min.js
[edit]
[-] media-carousel.d8417210e0b731dd32b8.bundle.js
[edit]
[-] woocommerce-cart.73c6990b0b1a1ea18220.bundle.js
[edit]
[-] woocommerce-menu-cart.010ec7298aee1fcdc2ea.bundle.js
[edit]
[-] mega-menu-stretch-content.60ca9e1e97c52ac3bf8c.bundle.min.js
[edit]
[-] progress-tracker.3ec316715116e9087057.bundle.js
[edit]
[-] elements-handlers.js
[edit]
[-] editor.js
[edit]
[-] screenshot.min.js
[edit]
[-] gallery.805130d33e18cb04635f.bundle.js
[edit]
[-] qunit-tests.min.js
[edit]
[-] jszip.vendor.99a5b769619f50a6cb60.bundle.min.js.LICENSE.txt
[edit]
[-] elements-handlers.min.js
[edit]
[-] nested-carousel.9145d6891784d5818672.bundle.min.js
[edit]
[-] social.deeefd0e3641200f8239.bundle.js
[edit]
[-] form.efd3434e4ecbe4dd5fc6.bundle.js
[edit]
[-] form-submission-admin.js
[edit]
[-] frontend.js
[edit]
[-] woocommerce-my-account.6509f179e93231fa2b6a.bundle.js
[edit]
[-] load-more.bc9573b5d1f73abd80b9.bundle.min.js
[edit]
[-] form-submission-admin.min.js
[edit]
[-] hotspot.70886883c622dd8d5eb2.bundle.js
[edit]
[-] admin.js
[edit]
[-] mega-menu-stretch-content.4648b25d00c1f94cec4e.bundle.js
[edit]
[-] preview.min.js
[edit]
[-] woocommerce-notices.d8c0850de1984ac89f33.bundle.js
[edit]
[-] stripe-button.2acbca466dfeb9585680.bundle.min.js
[edit]
[-] taxonomy-filter.b42e9c10a9d0abc3454e.bundle.min.js
[edit]
[-] 60745ddf42fde6647dbc.bundle.min.js.LICENSE.txt
[edit]
[-] animated-headline.3efc6517c2a055f6c242.bundle.min.js
[edit]
[-] nested-carousel-editor.6337dab68af203be7c04.bundle.min.js
[edit]
[-] display-conditions.js
[edit]
[-] webpack-pro.runtime.min.js
[edit]
[-] app.min.js
[edit]
[-] app.js
[edit]
[-] form.10bf1a6475f0741920ff.bundle.min.js
[edit]
[+]
packages
[-] preloaded-elements-handlers.min.js.LICENSE.txt
[edit]
[-] 98217e0c00e1f53421ef.bundle.js
[edit]
[-] page-transitions.min.js
[edit]
[-] taxonomy-filter.9d41aac2f76c01cfdb42.bundle.js
[edit]
[+]
notes
[-] nav-menu.d43af66e5000fd109c04.bundle.min.js
[edit]
[-] hotspot.6ab1751404c381bfe390.bundle.min.js
[edit]
[-] 60745ddf42fde6647dbc.bundle.min.js
[edit]
[-] search-form.4beabae7f0e0a3129ef7.bundle.js
[edit]
[-] product-add-to-cart.e099bc90899376d00959.bundle.js
[edit]
[-] social.2d2e44e8608690943f29.bundle.min.js
[edit]
[-] video-playlist.74fca1f2470fa6474595.bundle.min.js
[edit]
[-] posts.caaf3e27e57db8207afc.bundle.min.js
[edit]
[-] countdown.be941c879efa861dbbfa.bundle.min.js
[edit]
[-] countdown.60cf02eaf22d71d83f3d.bundle.js
[edit]
[-] mega-menu-editor.319a739ef1260a2b2da1.bundle.min.js
[edit]
[-] portfolio.9a52c1f0953359d74119.bundle.js
[edit]
[-] 4abfbfd970d6f7680bc7.bundle.js
[edit]
[-] loop-carousel.4e8fd6593adbba21698e.bundle.min.js
[edit]
[-] loop-filter-editor.21982d6e76a4fba12cd5.bundle.min.js
[edit]
[-] woocommerce-menu-cart.faa7b80e9ba9e5072070.bundle.min.js
[edit]
[-] menu-title-keyboard-handler.255f6b16a2f292e5c260.bundle.js
[edit]
[-] gutenberg-woocommerce-notice.min.js
[edit]
[-] editor.min.js
[edit]
[-] nested-carousel-editor.2fdc278ce6bc9f6ec2e0.bundle.js
[edit]
[-] archive-posts.d30c917134774f65dd6d.bundle.min.js
[edit]
[-] share-buttons.58e0fcb000aa02df3f24.bundle.js
[edit]
[-] 1b816ba777b14157325b.bundle.min.js
[edit]
[-] display-conditions.min.js
[edit]
[-] custom-code.js
[edit]
[-] loop-carousel.827a11bd7f1b0343de42.bundle.js
[edit]
[-] mega-menu-editor.bbef3f7412481cbce555.bundle.js
[edit]
[-] product-add-to-cart.023d7d31fbf96c3dbdfc.bundle.min.js
[edit]
[-] table-of-contents.82ad797536446d523057.bundle.min.js
[edit]
[-] media-carousel.aca2224ef13e6f999011.bundle.min.js
[edit]
[-] popup.1f90f6cfd0d44ef28772.bundle.js
[edit]
[-] woocommerce-notices.aaa7a3d06f24f7ea6951.bundle.min.js
[edit]
[-] woocommerce-checkout-page.9b1242f2568f94bb8d5c.bundle.js
[edit]
[-] preloaded-elements-handlers.js
[edit]
[-] woocommerce-cart.fc30c6cb753d4098eff5.bundle.min.js
[edit]
[-] menu-title-keyboard-handler.80c53fcbf2fdb487c91d.bundle.min.js
[edit]
[-] slides.fb6b9afd278bb9c5e75b.bundle.min.js
[edit]
[-] paypal-button.3028ea98fc2e17fdfe8f.bundle.js
[edit]
[-] webpack-pro.runtime.js
[edit]
[-] gallery.8ca9a354ce039d1ba641.bundle.min.js
[edit]
[-] mega-menu.bc1b8483f0d497cb1b50.bundle.js
[edit]
[-] paypal-button.3d0d5af7df85963df32c.bundle.min.js
[edit]
[-] carousel.9b02b45d7826c1c48f33.bundle.min.js
[edit]
[-] slides.3b185c687f9167dfae0c.bundle.js
[edit]
[-] woocommerce-my-account.3ee10d01e625dad87f73.bundle.min.js
[edit]
[-] screenshot.js
[edit]
[-] ajax-pagination.bc400e6cb24a14a2ea97.bundle.js
[edit]
[-] woocommerce-purchase-summary.46445ab1120a8c28c05c.bundle.min.js
[edit]
[-] gutenberg-woocommerce-notice.js
[edit]
[-] animated-headline.e4c2ed3934d0df18c40a.bundle.js
[edit]
[-] jszip.vendor.a3c65615c1de5560962d.bundle.js
[edit]
[-] popup.085c1727e36940b18f29.bundle.min.js
[edit]
[-] portfolio.b5c5e89624dc6b81a11a.bundle.min.js
[edit]
[-] preview.js
[edit]
[-] loop.c4d9f09c7596d4e1df61.bundle.js
[edit]
[-] loop-filter-editor.d1bae86a5ed21c0e9981.bundle.js
[edit]
[-] table-of-contents.e67f9eaf44032e14dc57.bundle.js
[edit]
[-] lottie.a00fda0bbf10f9b99eae.bundle.js
[edit]
[-] ajax-pagination.a8dae0f5699fe9733e7d.bundle.min.js
[edit]
[-] code-highlight.28a979661569ddbbf60d.bundle.min.js
[edit]
[-] video-playlist.964a12bbea2078517f07.bundle.js
[edit]
[-] carousel.998a291abf70435fd698.bundle.js
[edit]
[-] share-buttons.08f4daf4a4285a8632b8.bundle.min.js
[edit]
[-] archive-posts.0aae8c3bd7d196797b6c.bundle.js
[edit]
[-] admin.min.js
[edit]
[-] preloaded-elements-handlers.min.js
[edit]
[-] page-transitions.js
[edit]
[-] qunit-tests.js
[edit]
[-] custom-code.min.js
[edit]
[-] woocommerce-purchase-summary.8d56a92f38ab4fc4575f.bundle.js
[edit]
[-] jszip.vendor.99a5b769619f50a6cb60.bundle.min.js
[edit]
[-] lottie.565b778d23c04461c4ea.bundle.min.js
[edit]
[-] nested-carousel.da220b2d6ef36e95bbad.bundle.js
[edit]
[-] loop.e45e73509acb0a350776.bundle.min.js
[edit]
[-] posts.5d2d70b1d6918b6d8205.bundle.js
[edit]
[-] nav-menu.ad2c1632628f619ad9e9.bundle.js
[edit]
[-] search-form.a25a87283d08dad12f18.bundle.min.js
[edit]
[-] load-more.ad89e46f2f6bfd9c27e8.bundle.js
[edit]
[-] stripe-button.b00915f9aec396f7b070.bundle.js
[edit]
[-] code-highlight.8b676d9a001f56fb77fa.bundle.js
[edit]
[-] woocommerce-checkout-page.b18af78282979b6f74e4.bundle.min.js
[edit]
[-] mega-menu.ff65163e28a043660c7b.bundle.min.js
[edit]
[-] progress-tracker.53951a08af7543da98e6.bundle.min.js
[edit]