humaan / Modaal

An accessible dialog window library for all humans.
http://humaan.com/modaal/
MIT License
2.72k stars 183 forks source link

Register the modal without link #62

Closed ghost closed 6 years ago

ghost commented 8 years ago

I didn't find in the documentation to register the modal without a link. Is this possible? e.g: I want to trigger the modal when a div is clicked. I can't just use a tag, because the div contain some a tags.

danhumaan commented 8 years ago

hi @bersujamu Thanks for your patience and apologies for the delay and in reposnding. This is something we've been putting some more thought into recently as a way of further extending Modaal's functionality.

The challenge we're facing currently is how we handle focus states, specifically where do we shift the focus state back to on close for an item that isn't a modaal.

This is the scenario we're planning out: You're currently focused on element A at the top of the page, you scroll down the page so element A is now out of the viewport and interact with element B in a way that won't move your focus to element B, but will open a Modaal dialog. When you close that Modaal dialog, we need to reset the focus, which in this case is element A so the page scrolls back up to focus on element A. Not ideal for the user because you moved past that point and we would ideally allow you to continue where you opened the Modaal from, not somewhere else on the page.

As we get further in working out how to best handle this we'll address this task in conjunction with others and update as required.

Thanks again, and keep watching this space for more updates.

danhumaan commented 6 years ago

It's been a long time coming, but I've just implemented support for non <a href="#"> triggers such as button, with a new content_source options. See the readme for more detailed documentation, but this can now be used like:

<button class="inline">Show</button>
$('.inline').modaal({
    content_source: '#inline'
});

or for inline attribute application

<button data-modaal-content-source="#inline" class="modaal">Show</button>