@miraidesigns/menu
v1.0.3
Published
Mirai Designs Framework: Menu module
Downloads
2
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 |