Sha256: b2ba3ba5594784f518eb70423bbe7f3cdd105a6e2478865290e3a2c85c252cef

Contents?: true

Size: 1 KB

Versions: 131

Compression:

Stored size: 1 KB

Contents

import { Controller } from "@hotwired/stimulus";

export default class extends Controller {
  static targets = [ "menuItemHeader", "menuItemGroup", "menuItemLink" ];

  showSubmenu() {
    this.menuItemGroupTarget.classList.remove('invisible');
  }

  // TODO: Stimulus JS should be able to use `keydown.tab` and `keydown.tab+shift` as actions.
  // https://stimulus.hotwired.dev/reference/actions#keyboardevent-filter
  hideSubmenu(event) {
    let hideMenu = false;

    // If we're tabbing forward and go outside of the submenu, we hide the group.
    // Else if we're tabbing backwards and go outside via the menu item header, we hide the group.
    if(event.key == 'Tab' && !event.shiftKey) {
      let lastIndex = this.menuItemLinkTargets.length - 1;
      hideMenu = event.target == this.menuItemLinkTargets[lastIndex]
    } else if (event.key == 'Tab' && event.shiftKey) {
      hideMenu = event.target == this.menuItemHeaderTarget
    }

    if(hideMenu) { this.menuItemGroupTarget.classList.add('invisible'); }
  }
}

Version data entries

131 entries across 131 versions & 1 rubygems

Version Path
bullet_train-1.14.0 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.13.0 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.12.3 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.12.2 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.12.1 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.12.0 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.11.0 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.10.0 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.9.0 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.8.5 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.8.4 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.8.3 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.8.2 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.8.1 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.8.0 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.7.23 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.7.22 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.7.21 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.7.20 app/javascript/controllers/desktop_menu_controller.js
bullet_train-1.7.19 app/javascript/controllers/desktop_menu_controller.js