An accessible dialog window library for all humans.

Overview


  • 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
inline
image
iframe
confirm
video
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
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
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
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
false
Set this to true if you want the Modaal window to launch immediately on load.
fullscreen boolean false true
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
false
Set this to true to enable the page to scroll behind the open modal
should_open boolean
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
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
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 the action occurs, as seen below in after_open.

$('.my-link').modaal({
	before_open: function() {
		alert('Before open');
	},
	after_open: myFunction
});

function myFunction() {
	alert('After open');
}

3. Methods

3.1. Programatically Creating Modaals

To initialise a programatically created Modaal, but not open, it can been called like any other doc ready instance, with

$('.my-link').modaal();

Or with any options as available:

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

3.2. Programatically Open a Modaal

For any modaal instance that has already been initialised, it can be triggered to open with

$('.my-link').modaal('open');

If the modaal has been programatically created and needs to open straight away, the following approach can be used to initialise and open immediately:

$('.my-link').modaal({ start_open: true });

This approach allows you to define other options that may be required as well as open immediately once it's ready.

3.3. Programatically Close a Modaal

Currently Modaal only supports a close method which can be called like so.

$('.my-link').modaal('close');

Based on this example, we know we've already established (and opened) the modal associated to the .my-link class, so to close we use the same selector with a string of close instead of options;

4. Tips & Tricks

4.1. Avoiding Conflicts

Through development, we've worked hard to ensure no conflicts will occur with any existing code, however it's important to note some of the classes currently in use and best to avoid in your own stylesheet. These include:

modaal-inline, modaal-ajax, modaal-image, modaal-confirm, modaal-iframe, modaal-video, modaal-wrapper, modaal-outer-wrapper, modaal-inner-wrapper, modaal-container, modaal-close, modaal-content

4.2. Customising the CSS

We wanted to provide users the chance to really extend on Modaal's base through customising the modal styles to meet their own project. We understand working with various projects and differing styles how important it is to tailor the aesthetics right down to even the most minute detail.

Provided in the distribution files are both un-minified css and SASS files to best integrate with your workflow. Within the SASS file you'll find a number of variables located at the top of the document for which you can tweak as desired.

It's our recommendation, should you wish to change any styling, that you minify your final output so as to save on overall page weight. The primary recommendation would be to run the gulp dist task which will minify the CSS (and JS if changes have been made), with another alternative to be found at cssminifier.com.

4.3. Video file URLs

The Modaal video type has been tested thoroughly using both Vimeo and Youtube. For best outcome, please ensure the url format looks like the one of the following below. We transplant this URL into an iframe which then each service provider controls all the necessary play back from there.

4.3.1. Youtube

https://www.youtube.com/embed/cBJyo0tgLnw where the ID at the end is your unique video id. This can be found by selecting 'Share' on a youtube video, then clicking on 'Embed'. You'll find this URL within the content presented.

4.3.1. Vimeo

https://player.vimeo.com/video/109626219 where the ID at the end is your unique video id. This can be found by selecting 'Share' on a vimeo video (commonly seen on the right hand side), and by selecting the content within 'Embed'. You'll find the URL necessary towards the very beginning of that embed code inside src="".

5. Reporting issues and contributing code

5.1. Reporting an issue

  1. Please ensure the issue you're reporting is reproducible in a standalone environment, and not a result of something in your own build.
  2. Use jsFiddle or jsBin to provide a test page showing issue.
  3. In your issue, please indicate which browser, operating system and os version you're using.
  4. Please also indicate plugin version.
  5. If you have made any alterations to the plugin files (JS or CSS), please also list and include code samples.

The more information you can provide regarding an issue, the better.

5.2. Contributing to the plugin

Thanks for your contribution! Please refer to the guidelines below.

  1. Please ensure the issue you're reporting is reproducible in a standalone environment, and not a result of something in your own build.
  2. Please ensure your pull request has a base branch of develop selected. pull request's with base master will not be accepted.
  3. Please ensure the problem you're resolving has an open issue ticket.
  4. Adhere to the current style and formatting of the plugin files, including CSS, SASS and JS.
  5. Please ensure any changes are tested thoroughly in multiple browsers. We will do this, but if we locate bugs in the new code, the pull request will not be accepted.
  6. Outline all changes in your commit message and also reference the issue ticket. For example "Contribution: Fix for issue #17 - Update to XYZ file to do make it do ABC"

5.3. Development Setup

  1. Ensure you're running NodeJS
  2. Install Gulp by running npm install --global gulp. More details are available through the Gulp documentation.
  3. Install the NPM dependencies by running npm install. (if this throws an error, try sudo the command).
  4. The build can now be called by running gulp watch to watch for SASS updates.
  5. When you're happy with the final output, please also run gulp dist to minify and compress changes.

License

Copyright © Humaan Licensed under the MIT license.

Comments
  • Modaal demo hosted on GitHub Pages

    Modaal demo hosted on GitHub Pages

    Hi Humaans,

    After the Port80 meetup last Wednesday and a discussion with @cbotman, I decided to spend some time and convert your demo page from PHP to Jekyll/Liquid. This means, the demo can be hosted on GitHub Pages. This may make the deployment process simpler (more of that below).

    Demo

    The code in this PR is currently running on a GitHub Page on my account:

    Changes

    As you can see in the diff, I have

    • made the demo folder completely self-standing.
    • changed the .php files to html and svg respectively (no php on gh-pages, so no include() or sleep()).
    • added a new gulp task to copy the minified source into the demo folder (copy-to-demo).
    • added another gulp task to deploy the demo to gh-pages (deploy-to-gh-pages).
    • moved each Modaal example into a partial.

    What needs to happen before the demo works 100%:

    • Update Google Analytics settings(?)
    • Update addthis settings
    • Create modaal.humaan.com.au subdomain that points to this repository’s gh-pages.

    Caveat

    Just as it was a hurdle to get the demo to work locally for someone with no Apache/PHP installed, it has now shifted to a Ruby dependency. However, it could easily shift to just being HTML only (if you would go without requiring the Modaal logo and just inline it). Alternatively, I can add a Gemfile with the necessary RubyGems to get it to run locally.

    Let me know what you think. Looking forward to your feedback and a discussion about my proposed changes.

    Cheers Patrik

    Fixed: Awaiting Release 
    opened by pzi 10
  • add an open method. closes #63

    add an open method. closes #63

    This adds support to open the method. Similar to the close support.

    For example:

    $('.my-link').modaal('open');
    

    I tested this on the demo page, and it seems to be working nicely.

    I have a linter and formatter enabled on my editor. So there are some tweaks to the formatting.

    Basically, I added a new method create_modaal which is used by both the element click-to-open and the new pass a string to close option. I also added code to stop the modal from being recreated when open is called on a modal that is already open.

    opened by james2doyle 7
  • Open modaal from element inside iframe

    Open modaal from element inside iframe

    Hi there,

    thanxs for the great library. Is there a way to open modaal from an element e.g. a button inside an element? I load an svg inside an object and this svg should be opened by modaal but the triggering button should be within the svg?

    Haven't found a way to solve this...

    Thanks for your help.

    Best, hirschferkel

    opened by hirschferkel 6
  • Open method

    Open method

    "Currently Modaal only supports a close method which can be called like so." Why does it only support close instead of supporting open & close ? open method is useful when we want to trigger the modaal's open programatically

    enhancement Fixed: Awaiting Release 
    opened by ghost 6
  • Instagram have added a URL parameter which makes modaal pop up use small thumbnail

    Instagram have added a URL parameter which makes modaal pop up use small thumbnail

    A URL parameter now appears in the Instagram URL used, wp=2 or wp=1, which makes the pop up image show at small thumbnail size, and appear very blurred. I tried some string replacing in the code to see if I could fix it and get that parameter out of there, but no joy.

    See your own Instagram example at the bottom to see the bug in action: http://humaan.com/modaal/

    Cheers!

    bug help wanted 
    opened by paulburgess 5
  • Large images overflow viewport when height > 1024px

    Large images overflow viewport when height > 1024px

    Large images overflow the viewport when the viewport height is greater than 1024px. At smaller sizes the image more appropriately is maxed at a height of 85vh.

    I see no reason why the img element shouldn't have a max-height (and max-width for that matter) of 85vh/vw at all viewport sizes.

    bug Fixed: Awaiting Release 
    opened by jsit 5
  • Having trouble with

    Having trouble with "is-locked"

    I cannot seem to get the is-locked option to work for me using the inline data-option-name method. Calling it through a jQuery call does work for me:

    <script>
        jQuery( document ).ready(function() {
            jQuery('.modaal').modaal({
                is_locked: 'true'
            });
        });
    </script>
    

    Here is a jsfiddle where I am trying to get it working inline.

    https://jsfiddle.net/bmcwebdev/mouvcbgq/

    Thanks gang!

    bug Fixed: Awaiting Release 
    opened by BMCwebdev 5
  • Unable set Modaal width or height

    Unable set Modaal width or height

    I am not able to set width or height of the modal by both default as well as inline attribute method. I tried this: <script type="text/javascript"> $('.modaal-inline').modaal({ type: 'inline', accessible_title: 'Modal title', width: '400', height: '200' }); </script> and also this <a href="#inline-content" data-modaal-type="inline" data-modaal-width="200px" data-modaal-accessible-title="Inline Dialog Window" data-modaal-overlay-opacity="0.4" class="modaal">Show Modaal</a>

    Am I doing it wrong?

    enhancement Fixed: Awaiting Release 
    opened by suyashbansal 5
  • Open modal on page ready

    Open modal on page ready

    Is there an option already built in to open the modal on page ready? I notice in the js file you have a section to look if there is only one modal on the page (on page load check if single '.modaal' exists) wondering if this is related. Thank you for the well done work.

    question 
    opened by BMCwebdev 5
  • How to set `aria-label` for items in gallery

    How to set `aria-label` for items in gallery

    I like Modaal a lot, but I'm stumped on how to set the aria-label value on each item in a lightbox gallery. When the gallery is opened, each item is labeled as;

    <div class="modaal-gallery-item gallery-item-1 is_active" aria-label="Image 1 no description" tabindex="0">
      <img src="http://placehold.it/300x500" alt=" " style="width:100%">
      <div class="modaal-gallery-label"><span class="modaal-accessible-hide">Image 2</span></div>
    </div>
    

    How can I change the value from "Image 1 no description" to something meaningful? I've tried adding aria-label and aria-description attributes to both the a tag that triggers Modaal and the contained img element.

    I can't find anything in the documentation or elsewhere. Thanks.

    bug help wanted 
    opened by sposhe 4
  • Opening a modal fails when triggering anchors are programatically created

    Opening a modal fails when triggering anchors are programatically created

    Hi Humaan,

    Greetings from another Perth frontender.

    I've noticed an annoying bug with Modaal: I have a project where I dynamically add/create or remove elements to a list based on user filtering. A very basic webapp. Some of these elements contains anchor links that are supposed to open modals. So because these links are not in the markup on page load, I have to use JavaScript to open the modals rather than using the data attributes. I also have to delegate the click handlers like this:

    $(document).on('click', 'selector', e => {
        e.preventDefault();     
         $(e.currentTarget).modaal(); 
      });
    

    And well, that doesn't work, I have to click twice for it to open the modal. The first click does some modal initialisation stuff, but doesn't go as far as opening it. I've found a workaround that looks like:

    $(document).on('click', 'selector', e => {
        e.preventDefault();        
        if(!$(e.currentTarget).data('modaal-scope')) {
          $(e.currentTarget).modaal();
          setTimeout(()=> $(e.currentTarget).trigger('click'), 20);
        } else {
          $(e.currentTarget).modaal();
        }
      });
    

    And it works, but it lacks elegance.

    I think a static method to open a modal, one that doesn't rely on an anchor/modal coupling, could solve this. Something like Modaal.open('selector'). Or you might want to investigate the way your register your events handlers.

    Anyway, thanks for your great plugin.

    bug enhancement Fixed: Awaiting Release 
    opened by rkgttr 4
  • MP4 video not start in Mac Safari

    MP4 video not start in Mac Safari

    Thanks for Modaal development.

    It is excellent to show video in modal, but only in Safari video will not show up to full width of container, and stops at really small thumbnail. Clicking on the image will start the video with full width. In other browser, Edge, Chrome, FF, no problem. It just start video.

    スクリーンショット 2022-12-16 10 46 14
    opened by Ikaring 0
  • Animation options

    Animation options

    Does the animation option work completely? It works if i use animation: 'none' or animation 'fade', but up, down and expand don't seem to do anything but break.

    opened by senojeel 0
  • How can I make this work with keyboard shortcuts.

    How can I make this work with keyboard shortcuts.

    Thank you for the Modal, I have been using it since last year. I would like to open Modal/s with keyboard shortcuts using with libraries like Keymaster, is there any way to do this?

    opened by sandipkc7 0
  • Modal content outside ARIA landmark

    Modal content outside ARIA landmark

    The default behavior of injecting the div.modaal-wrapper at the end of the body has the side-effect of removing the content therein from any ARIA landmarks defined on the page. This limits the ability of assistive technologies to navigate to the content and also causes failures in automated accessibility checks.

    I suggest checking for the presence of one of the tags with an implicit ARIA landmark role as parent of the modal content and inserting the div.modaal-wrapper element at the end of that element, falling back to current behavior if such an element is not present.

    I'm willing to work on developing this update if it seems valuable to the project.

    opened by peterh-capella 2
  • Support ES6 loading

    Support ES6 loading

    Currently it is impossible to load this plugin when building sources using, e.g. gulp, because import 'modaal' fails with Uncaught ReferenceError: jQuery is undefined, even if you have code like this:

    import $ from 'jquery'; <-- This does not define window.jQuery when building code in Node.
    import 'modaal'; <-- This subsequently does not have access to a global jQuery object.
    

    I've found a pretty nice workaround for this, but it requires changes in your source code, there's nothing I can do in my code to make it work: https://gist.github.com/monkeymonk/c08cb040431f89f99928132ca221d647 This can obviously be merged into a single JS file, the gist is simply a flexible solution.

    opened by jurchiks 0
  • Releases(v0.4.4)
    • v0.4.4(Oct 8, 2018)

    • v0.4.3(Jul 10, 2018)

      Through development a recent enhancement introduced a bug in image galleries where href source was not being pulled in correctly.

      This bug as highlighted in #104 and #108 has been resolved to check for multiple sources (href, content_source (data-modaal-content-source, src) and fall back to relevant error message if none of the above work.

      Source code(tar.gz)
      Source code(zip)
    • v0.4.2(Jul 5, 2018)

      A new minor version is being pushed to ensure a Safari bug is being resolved and is available as the latest package for users.

      To best describe the bug, safari wasn't correctly applying document.activeElement where we store self.lastFocus. It's currently unclear of why this may be the case, however an update to how we store the lastFocus has been made to ensure full browser support and accurate and expected accessibility.

      Source code(tar.gz)
      Source code(zip)
    • v0.4.1(Jun 22, 2018)

      • Enhancements to support non <a href="#"> trigger element with new content_source option (data-modaal-content-source as inline attribute) (#62)
      • Bug fix for Instagram quality issue (#95) and multi-instance failure to show content (#106)
      Source code(tar.gz)
      Source code(zip)
    • v0.4.0(May 29, 2018)

      Version 0.4.0 addresses a number of bugs and improvements as highlighted and outlined in the below linked issues:

      #43, #63, #66, #72, #76, #81, #84, #87, #92, #93, #96

      Source code(tar.gz)
      Source code(zip)
    • v0.3.1(Jul 25, 2016)

      Hi everyone,

      Thanks again for logging of bugs and enhancements. Thanks to all the people watching the repo and who have Starred it as well, we're excited about how Modaal has progressed so far and are looking forward to continuing to develop it.

      With some recent free time we've been able to address a few enhancements to the plugin, including:

      • #41: Enhancement to make Close button text (and aria-label) values an options
      • Tasks #44 and #48 gave us a prompt to review how the image sizing and gallery resizing was operating. As a result we've pushed out a number of improvements to this. Most importantly when images are larger than the viewport size how we're handling this and the resize between images in a gallery.
      • #53: New configuration option for should_open has been added that can be used for flexibility for if the modaal should open or not.

      Any questions or comments, please don't hesitate to give us a shout.

      Thanks!

      Source code(tar.gz)
      Source code(zip)
    • v0.3.0(Jun 21, 2016)

      Hi everyone, thanks so much for logging all the issues, question, features and enhancement requests. This particular release is a bit overdue, but includes some major improvements to the plugin that we're excited to share, including:

      • #50: Send focus to more semantic element on open
      • #36: Duplicate iFrame markup and iFrame width/height
      • #35: Review/revise Modaal load process
      • #33: Having trouble with "is-locked"
      • #34: Model content should include top-level text nodes
      • #28: Another way for focus to escape modal (shift+tab as first action)
      • #27: Unable set Modaal width or height
      • #22: Scrolling on mobile does not have a momentum
      • Other auxiliary bug fixes and enhancements

      Any questions or comments, please don't hesitate to give us a shout.

      Source code(tar.gz)
      Source code(zip)
    • v0.2.11(Apr 29, 2016)

      Thanks everyone who has contributed so far, it's much appreciated.

      • Added an .editorconfig file and defined the code style. Here's the project URL: http://editorconfig.org/
      • Formatting and indentation tidy up.
      • Tidied up gulp script, added autoprefixer, etc.
      • Fixed bug parsing inline-attributes.
      • Fixed issue #21 with centering video modals.
      • Fixed issue #19, replacing calls to jQuery's .bind with .on.
      • Fixed typos (issues #17 and #18).
      Source code(tar.gz)
      Source code(zip)
    • v0.2.10(Apr 21, 2016)

    • v0.2.9(Apr 21, 2016)

      Updates include:

      • Bug fix for gallery and single image where next and previous keyboard controls were still active and attempting to change content.
      • New background_scroll option (defaults to false) which allowing the user to allow the page to scroll behind the modaal window when open
      • Bug fixes for inline attribute which were formatted incorrectly.
      Source code(tar.gz)
      Source code(zip)
    Owner
    Humaan
    We make digital things for awesome clients. Websites, mobile, eCommerce and apps.
    Humaan
    A lightweight (~850 B) library for easy mac/window shortcut notation. kbd-txt convert shortcut text depending on the type of OS (window/linux/mac).

    kbd-txt A lightweight (~850 B) library for easy mac/window shortcut notation. kbd-txt convert shortcut text depending on the type of OS (window/linux/

    Minung Han 6 Jan 1, 2023
    Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

    JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

    Svante Jonsson IT-Högskolan 3 May 18, 2022
    Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

    Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

    null 4 May 3, 2022
    Kurs-repo för kursen Webbserver och Databaser

    Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

    null 14 Jan 3, 2023
    A simple Form Validation Utility for Bootstrap 3, Bootstrap 4, and Bootstrap 5 for Humans.

    bootstrap-validate A simple Form Validation Utility for Bootstrap 3, Bootstrap 4, and Bootstrap 5 for Humans. ?? Support us with Developer Merchandise

    null 138 Jan 2, 2023
    A simple JavaScript library, to display a window inside of the browser

    WindowJS WindowJS is a simple JavaScript library, to display a functional window inside of the browser. Demo: prod.thalmann.it/windowjs/demo.html Navi

    Matthias Thalmann 12 Dec 14, 2022
    An extensible HTML DOM window manager with a professional look and feel

    Wingman An extensible HTML DOM window manager with a professional look and feel. Installation Wingman only requires two files: wingman.css and wingman

    nethe550 1 Jan 21, 2022
    Tools for Dump NUXT JS Environment Config Through Browser Window Object

    Introduction Nuxt JS is an open source javascript framework making web development simple and powerful. This tool is used to get environment configura

    Agus Setya R 7 Sep 5, 2022
    A simple cmatrix-like terminal decoration written in JavaScript that supports window resizing.

    jsmatrix A simple cmatrix-like terminal decoration written in JavaScript that supports window resizing. Getting Started Dependencies NodeJS Any termin

    Fülöp Tibor 7 Mar 27, 2022
    A prototype snap for injecting gas fee prices into a confirmation window that also serves as the basis for a 5-minute Snaps tutorial

    @Montoya/gas-fee-snap A simple Snap example based on @MetaMask/template-snap. Read below for a tutorial! Prerequisites Before you begin, make sure you

    Christian Montoya 18 Dec 8, 2022
    This tool uses native browser APIs to take screenshots of a given web page, tab, window, or the user's entire screen.

    This tool uses native browser APIs to take screenshots of a given web page, tab, window, or the user's entire screen.

    xataio 761 Jan 1, 2023
    Window.fetch polyfill

    window.fetch polyfill This project adheres to the [Open Code of Conduct][code-of-conduct]. By participating, you are expected to uphold this code. [co

    null 38 Sep 11, 2020
    Finer control of the Obsidian sidebars. To be used with an external window manager.

    Sidebar Toggler Finer control of the Obsidian sidebars. To be used with an external window manager. What the plugin does It adds four commands for tog

    pseudometa 8 Nov 4, 2022
    A work-in-progress HTML sanitizer that strives for: performance like window.Sanitizer, readiness like DOMPurify, and ability to run in a WebWorker like neither of those.

    Amuchina A work-in-progress HTML sanitizer that strives for: performance like window.Sanitizer, readiness like DOMPurify, and ability to run in a WebW

    Fabio Spampinato 9 Sep 17, 2022
    Simulating raindrops falling on a window

    RainyDay.js A simple script for simulating raindrops falling on a glass surface. Project Page How to use Just add script to page and initilize RainyDa

    Muhammad Ubaid Raza 89 Nov 7, 2022
    A simple JS example for NextAuth Google login with a popup window instead of redirect.

    A simple JS example for NextAuth Google login with a popup window instead of redirect.

    null 13 Dec 7, 2022
    Test utility to mock `window.matchMedia` for JSDOM environments.

    mock-match-media Test utility for mocking window.matchMedia in JSDOM environments. JSDOM doesn't provide support for window.matchMedia, which means te

    Raymond Wang 2 Oct 12, 2022
    Open a new Arc browser window for a specific workspace.

    Alfred "New Arc Window" Workflow (naw) Open a new Arc browser window on a specific space. Demo: https://youtu.be/IKz3Sl9Hcn8. Get it on Packal Or down

    Pokai Chang 7 Dec 1, 2022
    Simple, fast, accessible accordion library with no dependency

    React Fast Accordion ⚡️ Dynamic, fast, accessible & zero dependency accordion for React How it's fast? Instead of adding event listener on all the ite

    Shivam 59 Oct 8, 2022