@magic-spells/dropdown-panel
Version:
Accessible custom dropdown panel web component.
36 lines (31 loc) • 785 B
JavaScript
/**
* Dropdown trigger component
* Manages user interactions for opening and closing the dropdown
* @class DropdownTrigger
* @extends HTMLElement
*/
export class DropdownTrigger extends HTMLElement {
constructor() {
super();
}
/**
* when element is connected to the dom
*/
connectedCallback() {
const _ = this;
// ensure trigger has an ID for ARIA relationships
if (!_.id) {
_.id = `dropdown-trigger-${Date.now()}`;
}
// ensure trigger is focusable
if (!_.hasAttribute('tabindex')) {
_.setAttribute('tabindex', '0');
}
// set role for accessibility
if (!_.hasAttribute('role')) {
_.setAttribute('role', 'button');
}
// prevent text selection on trigger
_.style.userSelect = 'none';
}
}