SkillAgentSearch skills...

Modaal

An accessible dialog window library for all humans.

Install / Use

/learn @humaan/Modaal
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<img src="http://humaan.com/modaal/demo/social-share-modaal.png" />
  • Version 0.4.4
  • Requires jQuery 1.11.2 or higher (v2 not tested, v3 works but not extensively stress tested).
  • Built by Humaan

Modaal

Modaal is a WCAG 2.0 Level AA accessible modal window plugin.

Demos

View Modaal Demos

Another modal plugin? why?

It's hard to find a plugin with the right mix of quality, flexibility and accessibility. We thought it would be interesting to develop something that would work in a variety of projects, furthering the cause for an accessible web.


1. Getting Setup

1.1. Installation

  • Download ZIP
  • First, copy and paste js/modaal.min.js in your project, and link to it before the closing </body> element.
  • Next, you'll need to copy and paste the plugin's css into your project. We include both a SASS file and CSS file for flexibility.
  • Lastly, link to your new modaal.css file before the closing </head> element.

Note: This plugin requires your website or application already runs a copy of jQuery, version 1.11.2 or higher. Currently version 2 has not been tested. Version 3 works but has not been stress tested for bugs/issues.

1.2. Installation with Package Managers

Modaal is now setup and ready to be used with Bower and NPM and can be installed using the following commands.

bower install  modaal

npm install  modaal

1.3 Installation with CDN

Modaal is now setup and ready to be used with CDN JSDelivr jsDelivr Hits

1.4. The Basics

Out of the box Modaal is setup to work using inline content using as little customisation as possible. The first thing you'll require is a link to trigger the modal window. It's recommended that your href attribute targets a unique ID for a hidden element on the page containing your modal content. Like so:

<a href="#inline" class="inline">Show</a>
<div id="inline" style="display:none;">
	<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</p>
</div>
$('.inline').modaal();

If you would prefer your trigger element is not an <a href="#">, you can define a content_source value like so:

<button class="inline">Show</button>
<div id="inline" style="display:none;">
	<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</p>
</div>
$('.inline').modaal({
	content_source: '#inline'
});

2. Configuration

2.1. Practical Example

$('.my-link').modaal({
	type: 'ajax',
	loading_content: 'Loading content, please wait.'
});

2.2. Configuration Options

key | type | default | values | notes ----|------|---------|--------|------- type|string|inline|ajax<br /> inline<br /> image<br /> iframe<br /> confirm<br /> video<br /> instagram| content_source|string|null||Accepts a string value for your target element, such as '#my-content'. This allows for when trigger element is an <a href="#"> link. Not to be confused with the already existing source event. animation|string|fade|fade, none| animation_speed|integer|300||Animation speed is the duration it takes to reveal the Modaal window once triggered. It's important to note, that if you change this, you must also change the after_callback_delay below so that callback events sync up. This will be overwritten and set to 0 if type is none. after_callback_delay|integer|350||Specify a delay value for the after open callbacks. This is necessary because with the bundled animations have a set duration in the bundled CSS. Specify a delay of the same amount as the animation duration in so more accurately fire the after open/close callbacks. Defaults 350, does not apply if animation is 'none', after open callbacks are dispatched immediately is_locked|boolean|false|true<br /> false|Set this to true to disable closing the modal via keypress or by clicking the close or background. Beware that if type is confirm there will be no interface to dismiss the modal. If is_locked is true, you'd have to programmatically arrange to dismiss the modal. Confirm modals are always locked regardless of this option. hide_close|boolean|false|true<br /> false|Set this to true to hide the close modal button. Key press and overlay click will still close the modal. This method is best used when you want to put a custom close button inside the modal container space. background|string|#000||Sets the background overlay color overlay_opacity|float|0.8||Sets the background overlay transparency overlay_close|boolean|true|true<br /> false|Controls whether the overlay background can be clicked to close. accessible_title|string|Dialog Window||Set the aria-label attribute value used for Accessibility purposes. start_open|boolean|false|true<br /> false|Set this to true if you want the Modaal window to launch immediately on load. fullscreen|boolean|false|true<br /> false|Set this to true to make the Modaal fill the entire screen, false will default to own width/height attributes. custom_class|string|''||Fill in this string with a custom class that will be applied to the outer most modal wrapper. background_scroll|boolean|false|true<br /> false|Set this to true to enable the page to scroll behind the open modal should_open|boolean<br />function|true||Set to false or make the closure return false to prevent the modal from opening close_text|string|Close||String for close button text. Available for localisation and alternative languages to be used. close_aria_label|string|Close (Press escape to close)||String for close button aria-label attribute (value that screen readers will read out). Available for localisation and alternative languages to be used. width|integer|null||Set the desired width of the modal. height|integer|null||Set the desired height of the modal. gallery_active_class|string|gallery_active_item||Active class applied to the currently active image or image slide in a gallery outer_controls|boolean|false|true<br /> false|Set to true to put the next/prev controls outside the Modaal wrapper, at the edges of the browser window. confirm_button_text|string|Confirm||Text on the confirm button. confirm_cancel_button_text|string|Cancel||Text on the confirm modal cancel button. confirm_title|string|Confirm Title||Title for confirm modal. Default confirm_content|string|<p>This is the default confirm dialog content. Replace me through the options</p>||HTML content for confirm message loading_content|string|Loading &hellip;||HTML content for loading message. loading_class|string|is_loading||Class name to be applied while content is loaded via AJAX. ajax_error_class|string|modaal-error||Class name to be applied when content has failed to load. Default is '' instagram_id|string|null||Unique photo ID for an Instagram photo.

2.3. Inline Attribute Configuration

Modaal has been developed to support common jQuery configuration options, but in an effort to extend functionality and widen its usage we've developed support for inline data-option-name attribute support.

To enable this, the Modaal trigger link must have a class of modaal, then you can add attributes to the link as needed like so:

<a href="#inline" data-modaal-type="inline" data-modaal-animation="fade" class="modaal">Show</a>

Or for non <a href="#"> elements:

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

It's important to note, that configuration options that contain an underscore (_) in them need to be replaced with a hyphen (-) in it's respective html attribute. For example, overlay_opacity configuration would read data-overlay-opacity="0.8".

2.4. Configuration Events

event | params | notes ------|--------|------- before_open|event|Executed before the modaal has revealed after_open|modal_wrapper|Executed once the duration for Option after_callback_delay has expired after the open method is called. before_close|modal_wrapper|Executed once the Modaal has been instructed to close. after_close||Executed once the the duration for after_callback_delay has expired after the close method is called. before_image_change|current_item<br /> incoming_item|Executed before the image changes in a gallery Modaal. after_image_change|current_item| Executed after the image has changed in a gallery Modaal. confirm_callback|lastFocus|Executed when the confirm button is pressed as opposed to cancel. confirm_cancel_callback|lastFocus|Executed when the cancel button is pressed as opposed to confirm. source||Callback function executed on the default source, it is intended to transform the source (href in an AJAX modal or iframe). The function passes in the triggering element as well as the default source depending of the modal type. The default output of the function is an untransformed default source. ajax_success|target|Callback for when AJAX content is loaded in

2.4.1 Working With Events

There are two approaches to using events. The first is to call the entire function() { } in where the event configuration is set as seen below in before_open, and the second is to reference only the JS function name where the rest of t

Related Skills

View on GitHub
GitHub Stars2.7k
CategoryDevelopment
Updated6d ago
Forks180

Languages

JavaScript

Security Score

100/100

Audited on Mar 25, 2026

No findings