1. @joe_kerr/stackthemmodals
Stack them modals.
@joe_kerr/stackthemmodals
Package: @joe_kerr/stackthemmodals
Created by: Joe-Kerr
Last modified: Tue, 05 Apr 2022 22:08:40 GMT
Version: 1.0.7
License: MIT
Downloads: 6
Repository: https://github.com/Joe-Kerr/stackThemModals

Install

npm install @joe_kerr/stackthemmodals
yarn add @joe_kerr/stackthemmodals

StackThemModals: modal stack controller

Modal elemets are all around the place, be it popups, tooltips, context menus, widgets like colour pickers, and so on. So technically, for every element you needed to set up a document click listener, check whether clicks went inside or outside the element, evaluate what to do if there are modal elements on top of modal elements, etc.

Since this is far from being just a one-liner, it makes sense to provide this as a separate service.

Features

  • Only one listener for all modal elements.
  • Knows what modals to close if multiples are opened.

Demo

See it in action.

Requirements

  • Web browser

Install

1)

npm install @joe_kerr/stackthemmodals

2)

import modalStack from "./where_you_put_it/src/index.js";

or

const modalStack  = require("./where_you_put_it/dist/stackThemModals.common.js");

or

<html> <script src=""./where_you_put_it/dist/stackThemModals.browser.js""></script>

Use

push(<dom node> element, <func> callback, config)

Adds modal behaviour to the given element. Calls the callback if clicked outside of the element.

By default, when there are multiple modal elements, clicking outside of element A but within element B only destroys modal behaviour for A.

<obj>config

  • <bool>stopPropagation: Should the modal click listener consume the event.

forcePop(<bool>stack)

Cancels the modal behaviour - before it was clicked outside - of the last element (default) or, if the parameter is true, empties the entire stack.

Notice, just to be clear, you only need to call forcePop if you do not want to wait for the user to click outside of the modal. E.g.: if a user selects an option in a select box which should close the underlying modal container.

Notes

  • More options #todo.

Versions

1.0.7

  • Fixed: Added missing tests for propagation handling

1.0.6

  • Changed: Mouse event passed to user callbacks

1.0.5

  • Changed: Added check in .push if element parameter is DOM el

1.0.4

  • Fixed: Reversed propagation (issue #1)
  • Changed: Simplified live demo

1.0.3

  • Changed: Added live demo with github pages

1.0.2

  • Fixed: ohh, I see now: https://github.com/webpack/webpack/issues/7646

1.0.1

  • Public release

MIT (c) Joe Kerr 2019

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code