mirror of
				https://github.com/KevinMidboe/vue-js-modal.git
				synced 2025-10-29 18:00:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			129 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Vue.js 2.0+ modal
 | |
| 
 | |
| [](https://badge.fury.io/js/vue-js-modal)
 | |
| 
 | |
| ##### Simple to use, highly customizable, mobile friendly Vue.js 2.0+ modal. http://vue-js-modal.yev.io/
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| Demo: http://vue-js-modal.yev.io/
 | |
| 
 | |
| ### How to use
 | |
| 
 | |
| Include plugin in your main.js file.
 | |
| ```javascript
 | |
| import vmodal from 'vue-js-modal'
 | |
| 
 | |
| Vue.use(vmodal)
 | |
| ```
 | |
| 
 | |
| Create modal
 | |
| ```html
 | |
| <modal name="hello-world">
 | |
|   hello, world!
 | |
| </modal>
 | |
| ```
 | |
| Call it from anywhere in the app
 | |
| ```javascript
 | |
| methods: {
 | |
|   show () {
 | |
|     this.$modal.show('hello-world');
 | |
|   },
 | |
|   hide () {
 | |
|     this.$modal.hide('hello-world');
 | |
|   }
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### Properties
 | |
| 
 | |
| | Name      | Required | Type          | Default     | Description |
 | |
| | ---       | ---      | ---           | ---         | ---         |
 | |
| | name      | true  | [String, Number] |             | Name of the modal |
 | |
| | delay     | false | Number           | 0           | Delay between showing overlay and actual modal box |
 | |
| | resizable | false | Boolean          | false       | If true, allows to resize modal window, keeping it in the center of the screen. |
 | |
| | adaptive  | false | Boolean          | false       | If true, modal box will try to adapt to the window size |
 | |
| | draggable | false | [Boolean, String]| false       | If true, modal box will be draggable. |
 | |
| | transition| false | String           |             | Transition name |
 | |
| | classes   | false | [String, Array]  | 'nice-modal'| Classes that will eb applied to the actual modal box, if specified not specified, the default 'nice-modal' class will eb applied |
 | |
| | width     | false | Number           | 600         | |
 | |
| | height    | false | Number           | 300         | |
 | |
| | minWidth  | false | Number           | 0           | The minimum width to which modal can be resized  |
 | |
| | minHeight | false | Number           | 0           | The minimum height to which modal can be resized |
 | |
| | pivotX    | false | Number (0 - 1.0) | 0.5         | Horizontal position in %, default is 0.5 (meaning that modal box will be in the middle (50% from top) of the window |
 | |
| | pivotY    | false | Number (0 - 1.0) | 0.5         | | 
 | |
| 
 | |
| ### Events
 | |
| 
 | |
| | Name         | Description |
 | |
| | ---          | --- |
 | |
| | before-open  | Emits while modal is still invisible, but was added to the DOM |
 | |
| | opened       | Emits after modal became visible or started transition |
 | |
| | before-close | Emits before modal is going to be closed. Can be stopped from the event listener calling `event.stop()` (example: you are creating a text editor, and want to stop closisng and ask user to correct mistakes if text is not valid)
 | |
| | closed       | Emits right before modal is destoyed |
 | |
| 
 | |
| Example:
 | |
| ```vue
 | |
| <template>
 | |
|   <modal name="example"
 | |
|          :width="300"
 | |
|          :height="300"
 | |
|          @before-open="beforeOpen"
 | |
|          @before-close="beforeClose">
 | |
|     <b>{{time}}</b>
 | |
|   </modal>
 | |
| </template>
 | |
| <script>
 | |
| export default {
 | |
|   name: 'ExampleModal',
 | |
|   data () {
 | |
|     return {
 | |
|       time: 0,
 | |
|       duration: 5000
 | |
|     }
 | |
|   },
 | |
|   methods: {
 | |
|     beforeOpen (event) {
 | |
|       console.log(event)
 | |
|       // Set the opening time of the modal
 | |
|       this.time = Date.now()
 | |
|     },
 | |
|     beforeClose (event) {
 | |
|       console.log(event)
 | |
|       // If modal was open less then 5000 ms - prevent closing it
 | |
|       if (this.time + this.duration < Date.now()) {
 | |
|         event.stop()
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 | |
| </script>
 | |
| ```
 | |
| 
 | |
| This example, initializes `time` variable every time the modal is being opened. 
 | |
| And then forbits closing it for the next 5000 ms
 | |
| 
 | |
| ### Developers
 | |
| 
 | |
| To run an example:
 | |
| ```sh
 | |
| # Clone repo 
 | |
| 
 | |
| git clone https://github.com/euvl/vue-js-modal.git
 | |
| 
 | |
| # Build main library
 | |
| 
 | |
| cd vue-js-modal
 | |
| npm install
 | |
| npm run build
 | |
| 
 | |
| # Build and run demo
 | |
| 
 | |
| cd demo
 | |
| npm install
 | |
| npm run dev
 | |
| ```
 | |
| 
 | |
| 
 |