1.0.2 • Published 6 years ago

action-outside v1.0.2

Weekly downloads
83
License
ISC
Repository
github
Last release
6 years ago

action-outside :mag_right:

Invoke a callback function when clicked or tabbed outside one or multiple DOM elements.

action-outside

import ActionOutside from 'action-outside';

const menu = document.querySelector('.menu');
const actionOutsideMenu = new ActionOutside(menu, () => {
  console.log('clicked or tabbed outside menu!');
});
actionOutsideMenu.listen(true);

NPM

npm install --save action-outside

parameters

parametertypedescription
elementsDOM element or array of DOM elementsclicking or tabbing outside these elements will invoke the callback function
callbackfunctionis invoked after a click or tab outside the specified elements
const myActionOutside = new ActionOutside(elements, callback);

methods

methodargument typedescription
.listen()booleanadd or remove the event listener for mouseup (click) and keyup (tab)
const myActionOutside = new ActionOutside(elements, callback);
myActionOutside.listen(true);
myActionOutside.listen(false);

demo

import ActionOutside from 'action-outside';

const dropdown = document.querySelector('.dropdown');
const dropdownButton = document.querySelector('.dropdown__button');
const dropdownList = document.querySelector('.dropdown__list');
let expanded = (dropdownButton.getAttribute('aria-expanded') == 'true');

dropdownButton.addEventListener('click', toggleDropdown);
const dropdownActionOutside = new ActionOutside(dropdown, toggleDropdown);

function toggleDropdown() {
  dropdownButton.setAttribute('aria-expanded', !expanded);
  dropdownList.setAttribute('aria-hidden', expanded);
  dropdownActionOutside.listen(!expanded);
  expanded = !expanded;
}

Note: you most likely want your callback function to remove the event listener by using the listen(false) method!