senangwebs-modals
v1.1.1
Published
Lightweight JavaScript library that enables easy creation and customization of modal dialogs using HTML data attributes.
Readme
SenangWebs Modals (SWM)
SenangWebs Modals (SWM) is a lightweight JavaScript library that enables easy creation and customization of modal dialogs using HTML data attributes or JavaScript. With minimal setup, you can add engaging modals to your web pages, enhancing user interaction and experience.
Features
- Easy to integrate with existing projects
- Two methods of modal creation: HTML attributes and JavaScript API
- Customizable modal positioning: center, top, bottom, left, right, and corners
- Adjustable background color and opacity
- Customizable blur effect for the overlay
- Custom z-index support
- Smooth open and close animations
- Flexible content support with custom titles and footers
- Keyboard support: close modals with the Escape key
- Accessibility: dialog ARIA attributes and keyboard focus containment
- Focus management: focus enters the modal, stays trapped while open, and returns on close
- Responsive and works on all modern browsers
Examples
See examples/index.html for a live demo.
Installation
Using npm
npm install senangwebs-modalsUsing a CDN
You can include SenangWebs Modals directly in your HTML file using unpkg:
<link rel="stylesheet" href="https://unpkg.com/senangwebs-modals@latest/dist/swm.css">
<script src="https://unpkg.com/senangwebs-modals@latest/dist/swm.js"></script>Usage
1. HTML Attribute-based Modals
Add data attributes to the HTML elements to create modals:
<div data-swm id="myModal">
<button
data-swm-btn
data-swm-title="Custom Modal"
data-swm-position="center"
data-swm-bg-color="#3498db"
data-swm-bg-opacity="0.7"
data-swm-bg-blur="3"
data-swm-z-index="9999"
data-swm-footer="Custom Footer"
>
Open Modal
</button>
<div data-swm-body>
<p>This is the content of the modal.</p>
</div>
</div>2. JavaScript API
Create modals programmatically using the JavaScript API:
SWM.createModal({
title: 'Programmatic Modal',
content: '<p>This modal was created using JavaScript!</p>',
footer: 'Custom Footer',
position: 'center',
bgColor: '#3498db',
bgOpacity: '0.7',
bgBlur: '3',
zIndex: '9999'
});3. Opening Existing Modals
Open a modal defined with HTML attributes using JavaScript:
SWM.openModal('#myModal');You can also open modals without a trigger button by placing configuration attributes on the container:
<div data-swm id="autoModal" data-swm-title="Auto Modal" data-swm-position="center">
<div data-swm-body>
<p>This modal can be opened without a trigger button.</p>
</div>
</div>SWM.openModal('#autoModal');4. Closing Modals
Modals can be closed by:
- Clicking the close (X) button
- Clicking outside the modal on the overlay
- Pressing the Escape key
Programmatically created modals return a closeModal method:
const { closeModal } = SWM.createModal({
title: 'Closable Modal',
content: '<p>Close this modal programmatically.</p>'
});
// Close the modal later
closeModal();Keyboard and Accessibility
- Focus moves to the close button when a modal opens.
TabandShift+Tabcycle through controls within the topmost modal.Escapecloses only the topmost modal.- Focus returns to the element that was active before the modal opened.
- The modal panel uses
role="dialog",aria-modal="true", and an accessible title.
Configuration Options
You can configure modals using the following options:
| Option | HTML Attribute | JavaScript Property | Description |
|--------|----------------|---------------------|-------------|
| Title | data-swm-title | title | Sets the title of the modal |
| Position | data-swm-position | position | Sets the position of the modal |
| Background Color | data-swm-bg-color | bgColor | Sets the background color of the modal overlay (hex format) |
| Background Opacity | data-swm-bg-opacity | bgOpacity | Sets the opacity of the modal overlay (0 to 1) |
| Background Blur | data-swm-bg-blur | bgBlur | Sets the blur effect for the background (in pixels) |
| Z-Index | data-swm-z-index | zIndex | Sets the z-index of the modal overlay |
| Footer | data-swm-footer | footer | Adds a custom footer to the modal |
Supported Positions
- Center:
center - Top:
top,top left,top right - Bottom:
bottom,bottom left,bottom right - Left:
left - Right:
right
Browser Support
SenangWebs Modals works on all modern browsers, including:
- Chrome
- Firefox
- Safari
- Edge
- Opera
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE.md file for details.
Acknowledgments
- Inspired by various modal libraries in the web development community
- Thanks to all contributors who have helped to improve this library
Support
If you encounter any issues or have questions, please file an issue on the GitHub repository.
