@miraidesigns/select
v1.0.3
Published
Mirai Designs Framework: Select module
Downloads
4
Maintainers
Readme
Selects
Selects show a set of options the user can choose one from.
Serves as an alternative to the native <select>
element.
Requires the List
and Menu
modules.
HTML
<div class="mdf-select">
<button class="mdf-select__button" aria-haspopup="listbox" aria-labelledby="select-label select-text">
<span id="select-label" class="mdf-select__label">Select</span>
<span id="select-text" class="mdf-select__text"></span>
<span class="mdf-select__icon">
<svg class="mdf-icon" viewBox="0 0 24 24" aria-hidden="true">
<use href="icons.svg#arrow-keyboard"></use>
</svg>
</span>
</button>
<div class="mdf-select__menu mdf-menu">
<ul class="mdf-list" role="listbox" aria-labelledby="select-label" tabindex="-1">
<li class="mdf-list__item mdf-list__item--selected" role="option" data-value="1">Option 1</li>
<li class="mdf-list__item" role="option" data-value="2">Option 2</li>
<li class="mdf-list__item" role="option" data-value="3">Option 3</li>
</ul>
<input class="mdf-select__input" type="hidden" name="option" />
</div>
</div>
Sass
// Include default styles without configuration
@forward '@miraidesigns/select/styles';
// Configure appearance
@use '@miraidesigns/select' with (
$variable: value
);
@include select.styles();
TypeScript
import { MDFSelect } from '@miraidesigns/select';
new MDFSelect(document.querySelector('.mdf-select'));
Attributes
Please see the WAI-ARIA page for attributes and best practices regarding listboxes.
| Name | Element | Description |
| ------------ | ------- | ------------------------------------------------------------------------- |
| data-value
| <li>
| The option's value, equivalent to a native <option value="">
attribute. |
Classes
| Name | Type | Description |
| ----------------------------- | -------------- | ----------------------------------------------------- |
| mdf-select
| Parent | Select container element |
| mdf-select__button
| Child / Parent | Select button element that activates the menu |
| mdf-select__label
| Child | Select label element |
| mdf-select__label--floating
| Modifier | Moves the label above the button |
| mdf-select__text
| Child | Select text element |
| mdf-select__icon
| Child | Select arrow icon element |
| mdf-select__input
| Child | Select hidden input element, holds the selected value |
| mdf-list__item--selected
| Modifier | Marks the list item as selected |
Events
| Name | Data | Description |
| ------------------- | -------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| MDFSelect:opened
| null
| Fires when the select menu opens |
| MDFSelect:changed
| {item: HTMLElement, text: string, value: string}
| Fires whenever the active select item changes. Includes the item itself, its text and input value |
| MDFSelect:closed
| null
| Fires when the select menu closes |
Properties
| Name | Type | Description |
| ------------------------ | --------------------- | --------------------------------------------------- |
| .container
| HTMLElement
| Returns the select container element |
| .items
| HTMLElement[]
| Returns an Array
holding all menu items |
| .menu
| HTMLElement
| Returns the menu element |
| .text
| string
| Get or set the select button text |
| .value
| string
| Get or set the select hidden input value |
| .isActive()
| (): boolean
| Returns wether or not the menu is currently visible |
| .getSelectedElem()
| (): HTMLElement
| Returns the currently selected item |
| .setSelectedElem(elem)
| (HTMLElement): void
| Set the given element as selected |