@miraidesigns/menu
v1.0.3
Published
Mirai Designs Framework: Menu module
Maintainers
Readme
Menus
Menus display a list of choices or options to the user.
Requires the List module for correct appearance.
HTML
<button id="menu-anchor" class="mdf-button">Show menu</button>
<div class="mdf-menu">
<ul class="mdf-list" role="menu" aria-orientation="vertical" aria-hidden="true" tabindex="-1">
<li class="mdf-list__item" role="menuitem" tabindex="-1">Menu item</li>
<li class="mdf-list__item" role="menuitem" tabindex="-1">Menu item</li>
<li class="mdf-list__item" role="menuitem" tabindex="-1">Menu item</li>
</ul>
</div>Sass
// Include default styles without configuration
@forward '@miraidesigns/menu/styles';// Configure appearance
@use '@miraidesigns/menu' with (
$variable: value
);
@include menu.styles();TypeScript
import { MDFMenu } from '@miraidesigns/menu';
new MDFMenu(document.querySelector('.mdf-menu'), {
anchor: document.getElementById('menu-anchor')
});Implementation
Attributes
Please see the WAI-ARIA page for attributes and best practices regarding menus.
| Name | Element | Description |
| -------------------- | ------- | -------------------------------------------------------------------- |
| data-menu-callback | <li> | Name of the callback has to match the name set in the script options |
Classes
| Name | Type | Description |
| ------------------- | -------- | ------------------------------------ |
| mdf-menu | Parent | Contains the menu list and its items |
| mdf-menu--active | Modifier | Fades-in and moves menu on-screen |
| mdf-menu__caption | Child | Caption to describe the menu |
Events
| Name | Data | Description |
| ------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
| MDFMenu:opened | null | Fires when the menu opens |
| MDFMenu:activated | {callback: string, index: number, item: HTMLElement} | Fires whenever the a menu item is activated. Includes the callback name, the item itself and its index |
| MDFMenu:closed | null | Fires when the menu closes |
Properties
| Name | Type | Description |
| ----------------------- | ----------------- | ------------------------------------------------------ |
| .anchor | HTMLElement | Returns the anchor element |
| .items | HTMLElement[] | Returns an Array with all menu items |
| .menu | HTMLElement | Returns the menu element |
| .isActive() | (): boolean | Wether or not the menu is visible |
| .openMenu(setFocus?) | (boolean): void | Open the menu (optionally set focus on the first item) |
| .closeMenu(setFocus?) | (boolean): void | Close the menu (optionally set focus on the anchor) |
Options
| Name | Type | Default | Description |
| ------------- | ---------------------------- | ------------ | --------------------------------------------------------------------------------- |
| anchor | Element | null | The anchor element that will call the menu |
| posX | string | center | The menu's position on the X-axis. Values are left center right |
| posY | string | bottom | The menu's position on the Y-axis. Values are top center bottom |
| origin | string | top center | Origin of the menu transition. Same values as the transform-origin CSS property |
| callbacks | Record<string, () => void> | {} | Object holding the menu item callbacks |
| onOpen | () => void | null | Function will run when the menu is opened |
| onClose | () => void | null | Function will run when the menu is closed |
| hideOnClick | boolean | true | Close the menu when a click is registered outside of it |
