{"version":3,"file":"button-menu.mjs","sources":["../../../../src/moj/components/button-menu/button-menu.mjs"],"sourcesContent":["import { ConfigurableComponent } from 'govuk-frontend'\n\n/**\n * @augments {ConfigurableComponent<ButtonMenuConfig>}\n */\nexport class ButtonMenu extends ConfigurableComponent {\n  /**\n   * @param {Element | null} $root - HTML element to use for button menu\n   * @param {ButtonMenuConfig} [config] - Button menu config\n   */\n  constructor($root, config = {}) {\n    super($root, config)\n\n    // If only one button is provided, don't initiate a menu and toggle button\n    // if classes have been provided for the toggleButton, apply them to the single item\n    if (this.$root.children.length === 1) {\n      const $button = this.$root.children[0]\n\n      $button.classList.forEach((className) => {\n        if (className.startsWith('govuk-button-')) {\n          $button.classList.remove(className)\n        }\n\n        $button.classList.remove('moj-button-menu__item')\n        $button.classList.add('moj-button-menu__single-button')\n      })\n\n      if (this.config.buttonClasses) {\n        $button.classList.add(...this.config.buttonClasses.split(' '))\n      }\n    }\n    // Otherwise initialise a button menu\n    if (this.$root.children.length > 1) {\n      this.initMenu()\n    }\n  }\n\n  initMenu() {\n    this.$menu = this.createMenu()\n    this.$root.insertAdjacentHTML('afterbegin', this.toggleTemplate())\n    this.setupMenuItems()\n\n    this.$menuToggle = this.$root.querySelector(':scope > button')\n    this.$items = this.$menu.querySelectorAll('a, button')\n\n    this.$menuToggle.addEventListener('click', (event) => {\n      this.toggleMenu(event)\n    })\n\n    this.$root.addEventListener('keydown', (event) => {\n      this.handleKeyDown(event)\n    })\n\n    document.addEventListener('click', (event) => {\n      if (event.target instanceof Node && !this.$root.contains(event.target)) {\n        this.closeMenu(false)\n      }\n    })\n  }\n\n  createMenu() {\n    const $menu = document.createElement('ul')\n\n    $menu.setAttribute('role', 'list')\n    $menu.hidden = true\n    $menu.classList.add('moj-button-menu__wrapper')\n\n    if (this.config.alignMenu === 'right') {\n      $menu.classList.add('moj-button-menu__wrapper--right')\n    }\n\n    this.$root.appendChild($menu)\n\n    while (this.$root.firstChild !== $menu) {\n      $menu.appendChild(this.$root.firstChild)\n    }\n\n    return $menu\n  }\n\n  setupMenuItems() {\n    Array.from(this.$menu.children).forEach(($menuItem) => {\n      // wrap item in li tag\n      const $listItem = document.createElement('li')\n      this.$menu.insertBefore($listItem, $menuItem)\n      $listItem.appendChild($menuItem)\n\n      $menuItem.setAttribute('tabindex', '-1')\n\n      if ($menuItem.tagName === 'BUTTON') {\n        $menuItem.setAttribute('type', 'button')\n      }\n\n      $menuItem.classList.forEach((className) => {\n        if (className.startsWith('govuk-button')) {\n          $menuItem.classList.remove(className)\n        }\n      })\n\n      // add a slight delay after click before closing the menu, makes it *feel* better\n      $menuItem.addEventListener('click', () => {\n        setTimeout(() => {\n          this.closeMenu(false)\n        }, 50)\n      })\n    })\n  }\n\n  toggleTemplate() {\n    return `\n    <button type=\"button\" class=\"govuk-button moj-button-menu__toggle-button ${this.config.buttonClasses || ''}\" aria-haspopup=\"true\" aria-expanded=\"false\">\n      <span>\n       ${this.config.buttonText}\n       <svg width=\"11\" height=\"5\" viewBox=\"0 0 11 5\"  xmlns=\"http://www.w3.org/2000/svg\">\n         <path d=\"M5.5 0L11 5L0 5L5.5 0Z\" fill=\"currentColor\"/>\n       </svg>\n      </span>\n    </button>`\n  }\n\n  /**\n   * @returns {boolean}\n   */\n  isOpen() {\n    return this.$menuToggle.getAttribute('aria-expanded') === 'true'\n  }\n\n  /**\n   * @param {MouseEvent} event - Click event\n   */\n  toggleMenu(event) {\n    event.preventDefault()\n\n    // If menu is triggered with mouse don't move focus to first item\n    const keyboardEvent = event.detail === 0\n    const focusIndex = keyboardEvent ? 0 : -1\n\n    if (this.isOpen()) {\n      this.closeMenu()\n    } else {\n      this.openMenu(focusIndex)\n    }\n  }\n\n  /**\n   * Opens the menu and optionally sets the focus to the item with given index\n   *\n   * @param {number} focusIndex - The index of the item to focus\n   */\n  openMenu(focusIndex = 0) {\n    this.$menu.hidden = false\n    this.$menuToggle.setAttribute('aria-expanded', 'true')\n    if (focusIndex !== -1) {\n      this.focusItem(focusIndex)\n    }\n  }\n\n  /**\n   * Closes the menu and optionally returns focus back to menuToggle\n   *\n   * @param {boolean} moveFocus - whether to return focus to the toggle button\n   */\n  closeMenu(moveFocus = true) {\n    this.$menu.hidden = true\n    this.$menuToggle.setAttribute('aria-expanded', 'false')\n    if (moveFocus) {\n      this.$menuToggle.focus()\n    }\n  }\n\n  /**\n   * Focuses the menu item at the specified index\n   *\n   * @param {number} index - the index of the item to focus\n   */\n  focusItem(index) {\n    if (index >= this.$items.length) index = 0\n    if (index < 0) index = this.$items.length - 1\n\n    const $menuItem = this.$items.item(index)\n    if ($menuItem) {\n      $menuItem.focus()\n    }\n  }\n\n  currentFocusIndex() {\n    const $activeElement = document.activeElement\n    const $menuItems = Array.from(this.$items)\n\n    return (\n      ($activeElement instanceof HTMLAnchorElement ||\n        $activeElement instanceof HTMLButtonElement) &&\n      $menuItems.indexOf($activeElement)\n    )\n  }\n\n  /**\n   * @param {KeyboardEvent} event - Keydown event\n   */\n  handleKeyDown(event) {\n    if (event.target === this.$menuToggle) {\n      switch (event.key) {\n        case 'ArrowDown':\n          event.preventDefault()\n          this.openMenu()\n          break\n        case 'ArrowUp':\n          event.preventDefault()\n          this.openMenu(this.$items.length - 1)\n          break\n      }\n    }\n\n    if (\n      event.target instanceof Node &&\n      this.$menu.contains(event.target) &&\n      this.isOpen()\n    ) {\n      switch (event.key) {\n        case 'ArrowDown':\n          event.preventDefault()\n          if (this.currentFocusIndex() !== -1) {\n            this.focusItem(this.currentFocusIndex() + 1)\n          }\n          break\n        case 'ArrowUp':\n          event.preventDefault()\n          if (this.currentFocusIndex() !== -1) {\n            this.focusItem(this.currentFocusIndex() - 1)\n          }\n          break\n        case 'Home':\n          event.preventDefault()\n          this.focusItem(0)\n          break\n        case 'End':\n          event.preventDefault()\n          this.focusItem(this.$items.length - 1)\n          break\n      }\n    }\n\n    if (event.key === 'Escape' && this.isOpen()) {\n      this.closeMenu()\n    }\n    if (event.key === 'Tab' && this.isOpen()) {\n      this.closeMenu(false)\n    }\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'moj-button-menu'\n\n  /**\n   * Button menu config\n   *\n   * @type {ButtonMenuConfig}\n   */\n  static defaults = Object.freeze({\n    buttonText: 'Actions',\n    alignMenu: 'left',\n    buttonClasses: ''\n  })\n\n  /**\n   * Button menu config schema\n   *\n   * @type {Schema<ButtonMenuConfig>}\n   */\n  static schema = Object.freeze(\n    /** @type {const} */ ({\n      properties: {\n        buttonText: { type: 'string' },\n        buttonClasses: { type: 'string' },\n        alignMenu: { type: 'string' }\n      }\n    })\n  )\n}\n\n/**\n * @typedef {object} ButtonMenuConfig\n * @property {string} [buttonText='Actions'] - Label for the toggle button\n * @property {\"left\" | \"right\"} [alignMenu='left'] - the alignment of the menu\n * @property {string} [buttonClasses='govuk-button--secondary'] - css classes applied to the toggle button\n */\n\n/**\n * @import { Schema } from 'govuk-frontend/dist/govuk/common/configuration.mjs'\n */\n"],"names":["ButtonMenu","ConfigurableComponent","constructor","$root","config","children","length","$button","classList","forEach","className","startsWith","remove","add","buttonClasses","split","initMenu","$menu","createMenu","insertAdjacentHTML","toggleTemplate","setupMenuItems","$menuToggle","querySelector","$items","querySelectorAll","addEventListener","event","toggleMenu","handleKeyDown","document","target","Node","contains","closeMenu","createElement","setAttribute","hidden","alignMenu","appendChild","firstChild","Array","from","$menuItem","$listItem","insertBefore","tagName","setTimeout","buttonText","isOpen","getAttribute","preventDefault","keyboardEvent","detail","focusIndex","openMenu","focusItem","moveFocus","focus","index","item","currentFocusIndex","$activeElement","activeElement","$menuItems","HTMLAnchorElement","HTMLButtonElement","indexOf","key","moduleName","defaults","Object","freeze","schema","properties","type"],"mappings":"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"}