0.0.7 • Published 4 years ago

g8-popup-menu v0.0.7

Weekly downloads
7
License
GPL-3.0
Repository
github
Last release
4 years ago

popup-menu

master build vulnerabilities maintainability master coverage dev build dev coverage

A Vue.js multi-level popup menu, using a page like navigation inside the menu container.

Demo

Props

Prop nameDescriptionTypeDefault
idKeyField name in the menu item data set that holds item identifier.string'id'
labelKeyField name in the menu item data set that holds item label.string'label'
subtitleKeyField name in the menu item data set that holds item subtitle.string'subtitle'
hintKeyField name in the menu item data set that holds item tool tip.string'hint'
checkerKeyField name in the menu item data set that tells whether the item has acheckbox attached.string'checker'
checkedKeyField name in the menu item data set that holds item's checkbox is checked.string'checked'
shortcutKeyField name in the menu item data set that holds item keyboard shortcut.string'shortcut'
childrenKeyField name in the menu item data set that holds sub-menu item.string'children'
addElementIdWhether to add element id attribute, using the idKey field.booleanfalse

Slots

NameDescriptionBindings
defaultItem labelitem: G8MenuItem
subtitleItem subtitleitem: G8MenuItem

Events

Event nameTypeDescription
openMouseEventThe popup menu has been opened.
closeG8MenuItemThe popup menu has been closed.
clickG8MenuItemClickedA menu item has been clicked.
state-changedG8MenuItemA checkbox in the menu item has been checked or unchecked.
selectG8MenuItemA menu item has been selected.

Types

/**
 * Menu item. Fields listed here serve default data structure. There can be
 * arbitrary fields in the data set. Actual fields used in rendering can be
 * customized using component properties such as `idKey`.
 */
export interface G8MenuItem {
  /**
   * Arbitrary field declaration, also enables accessing via index.
   */
  [key: string]: unknown | undefined;

  /**
   * Arbitrary field declaration, also enables accessing via index.
   */
  [key: number]: unknown | undefined;

  /**
   * Default menu item identifier.
   */
  id?: string;

  /**
   * Default menu item label. `'---'` here denotes a separator item. Separator
   * item will not close menu or trigger any event.
   */
  label?: string;

  /**
   * Default menu item subtitle.
   */
  subtitle?: string;

  /**
   * Default menu item tool tip (mouse hover).
   */
  hint?: string;

  /**
   * Whether the item has a checkbox attached. Items with checkbox will not
   * close the menu while clicked. However, the `click` event will be fired,
   * followed by `state-changed` event.
   */
  checker?: boolean;

  /**
   * Whether checkbox of the item has been checked.
   */
  checked?: boolean;

  /**
   * Keyboard shortcut, must be on single character.
   */
  shortcut?: string;

  /**
   * Sub-menu items
   */
  children?: G8MenuItem[];
}

/**
 * A menu item has been clicked.
 */
export class G8MenuItemClicked extends Event {
  /**
   * The item that was clicked.
   */
  data?: G8MenuItem;
}