@vuesimple/vs-modal
A simple vue modal. Perfect for all your modal/ dialogs scenarios.
4,747
33
| Install | |
|---|---|
npm install @vuesimple/vs-modal |
|
| Latest Version: | 3.1.8 |
| Vue: | 3 |
| Older releases: | 2 |
| License: | MIT |
| Last Updated: | Oct 14, 2026 |
| Links: | GitHub · npm |
Maintainer: ashwinkshenoy
Vue Simple Modal
🗃 A simple vue modal. Perfect for all your modal/ dialogs scenarios.
A light weight vue plugin built groundup, with importance to accessibility.
📺 Live Demo
Demo: Link
🛠 Install
npm i @vuesimple/vs-modal
🚀 Usage
<template>
<button size="sm" @click="openModal('modal1')">Basic Modal</button>
<vs-modal ref="modal1" title="Funny, Modal Works 🥳"> Hello Peeps from vs-modal!! </vs-modal>
<button size="sm" @click="openModal('backdrop-modal')">Basic Modal (with blur backdrop)</button>
<vs-modal ref="backdrop-modal" backdropBlur title="Funny, Modal Works 🥳">
Wow!! Backdrop is blurred out 🔥
</vs-modal>
</template>
<script>
import VsModal from '@vuesimple/vs-modal';
export default {
components: {
VsModal,
},
methods: {
openModal(ref) {
this.$refs[ref].open();
},
closeModal(ref) {
this.$refs[ref].close();
},
},
};
</script>
🌎 CDN
<script src="https://unpkg.com/@vuesimple/vs-modal@<version>/dist/vs-modal.min.js"></script>
// Main/Entry file
app.use(VsModal.plugin);
<template>
<button size="sm" @click="openModal('modal1')">Basic Modal</button>
<vs-modal ref="modal1" title="Funny, Modal Works 🥳"> Hello Peeps from vs-modal!! </vs-modal>
</template>
<script>
export default {
methods: {
openModal(ref) {
this.$refs[ref].open();
},
closeModal(ref) {
this.$refs[ref].close();
},
},
};
</script>
⚙ Props
| Name | Type | Default | Description |
|---|---|---|---|
| title | String | Modal title | The modal title (text only). For HTML, use the header slot. |
| size | String | m |
The size of the modal. One of s, m, l, fullscreen, or auto. Setting the size to auto will make the modal's width grow to fit its content. |
| alignTop | Boolean | false | Whether or not the modal should be vertically aligned to the top of the viewport. When true, the modal will be top aligned, instead of vertically centered. |
| alignTopMargin | Number | 60 | The modal's distance from the top of the viewport, in pixels. Applies only when the alignTop prop is true. |
| role | String | dialog | The ARIA role for the modal (important for accessibility). One of dialog or alertdialog. |
| removeHeader | Boolean | false | Whether or not the modal header is removed. |
| removeCloseButton | Boolean | false | Whether or not the header close button is removed. |
| preventShift | Boolean | false | Whether or not to add a dummy scrollbar to the modal backdrop to prevent the modal shifting horizontally when the <body> scrollbar is hidden. Set to true to prevent the modal shift. |
| dismissible | Boolean | true | Whether or not the modal can be dismissed. Set to false to prevent the user from dismissing the modal. This will also hide the header close button. |
| dismissOn | String | backdrop close-button esc |
The type of event or events that will cause the modal to be dismissed. One or more of backdrop, close-button, or esc. Separate multiple events with a space. |
🔥 Events
| Name | Description |
|---|---|
| open | Emitted when the modal starts to open. Listen for it using @open. |
| reveal | Emitted when the modal is revealed (i.e. when the transition completes). Listen for it using @reveal. |
| close | Emitted when the modal starts to close. Listen for it using @close. |
| hide | Emitted when the modal close transition completes. Listen for it using @hide. |
📎 Slots
You can define own item markup via slots:
| Name | Description |
|---|---|
| (default) | Holds the modal body and can contain HTML. |
| header | Holds the the modal header and can contain HTML. |
| footer | Holds the the modal footer and can contain HTML. |
Related Packages
@melmacaluso/vue-modal
3,442
29
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 3.1.8 | ^3.2.37 | MIT | |
| 3.1.7 | ^3.2.37 | MIT | |
| 3.1.6 | ^3.2.37 | MIT | |
| 3.1.5 | ^3.2.37 | MIT | |
| 3.1.3 | ^3.2.37 | MIT | |
| 3.1.2 | ^3.2.37 | MIT | |
| 3.1.1 | ^3.2.37 | MIT | |
| 3.0.9 | ^3.2.37 | MIT | |
| 3.0.8 | ^3.2.37 | MIT | |
| 3.0.7 | ^3.2.37 | MIT | |
| 3.0.6 | ^3.2.37 | MIT | |
| 3.0.5 | ^3.2.37 | MIT | |
| 3.0.4 | ^3.2.37 | MIT | |
| 3.0.3 | ^3.2.37 | MIT | |
| 3.0.2 | ^3.2.37 | MIT | |
| 3.0.1 | ^3.2.37 | MIT | |
| 3.0.0 | ^3.2.37 | MIT | |
| 1.4.18 | 2.6.10 | MIT | |
| 1.4.15 | 2.6.10 | MIT | |
| 1.4.14 | 2.6.10 | MIT | |
| 1.4.13 | 2.6.10 | MIT | |
| 1.4.12 | 2.6.10 | MIT | |
| 1.4.11 | 2.6.10 | MIT | |
| 1.4.10 | 2.6.10 | MIT | |
| 1.4.9 | 2.6.10 | MIT | |
| 1.4.8 | 2.6.10 | MIT | |
| 1.4.6 | 2.6.10 | MIT | |
| 1.4.5 | 2.6.10 | MIT | |
| 1.4.4 | 2.6.10 | MIT | |
| 1.4.3 | 2.6.10 | MIT |
Showing the latest 30 of 57. See every release on npm