JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q31065F
  • License MIT

Vue modals

Package Exports

  • vue-root-modals

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (vue-root-modals) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

vue-root-modals

A handy promise-based library for modal windows.

Demo

Edit Vue Template

Install

Via Yarn:

yarn add vue-root-modals

Via NPM:

npm i vue-root-modals

Quick start

vue-root-modals doesn't offer ready-to-use modals, but it allows you easily create your own.

Let's start with SimpleModal.vue:

<template>
  <article class="modal">
    {{ text }}
  </article>
</template>

<script>
export default {
  name: "modal",
  props: {
    modalID: Number,
    resolve: Function,
    reject: Function,
    text: String,
  }
};
</script>

<style>
.modal {
  display: block;
  background-color: white;
  color: black;
  max-width: 200px;
  padding: 10px;
}
</style>

The next step is to create a file which holds all your modals. For example, modals.js:

import RootModals from "vue-root-modals";
import SimpleModal from "./SimpleModal.vue";

// Create new instance and pass there our modal
const rootModals = new RootModals({
  SimpleModal
});

export default rootModals;

Then we should import modals.js inside main.js and pass RootModals object to Vue.use() method. Also you should register the library in components:

import { RootModal } from 'vue-root-modals';
import modals from './modals.js'
Vue.use(modals)

new Vue({
  components: {
    RootModal
  },
  template: `
    <div id="app">
      <root-modal></root-modal>
      <button @click="$modals.SimpleModal">Open Modal</button>
    </div>
  `
})

That's all. You can call modals from anywhere with simple this.$modals.SimpleModal({ options }) now. All modals generate methods based on object key name you have passed to new RootModals({...}) and then they are in $modals.

All options are passed to modal as props. Also there are properties resolve, reject & modalID. Thanks to this you can work with modals using promises:

const methods = {
  async openModal() {
    try {
      const response = await this.$modals.SimpleModal();
    } catch (err) {
      console.log(err);
    }
  }
}