- Notifications
You must be signed in to change notification settings - Fork5
worldzhao/vue-nice-modal
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Vue version of@ebay/nice-modal-react.
vue-nice-modal is a utility library that converts Vue.js modal components into Promise-based APIs.
Supports Vue 2.x viavue-demi.
English |简体中文
An elegant Vue modal state management solution, supporting both Vue 2 and Vue 3.
- 🎯 Simple and intuitive API
- 🔄 Promise-based modal operations
- 🎨 Framework agnostic - works with any UI library
- ⚡️ Lightweight, zero dependencies
- 🔌 Supports both Vue 2 and Vue 3
- 📦 Full TypeScript support
# npmnpm install vue-nice-modal# pnpmpnpm add vue-nice-modal
<!-- App.vue --><template><NiceModalProvider><router-view/></NiceModalProvider></template><scriptsetup>import{ProviderasNiceModalProvider}from'vue-nice-modal';</script>
<!-- my-modal.vue --><template><van-dialogshow-cancel-button:value="modal.visible.value":close-on-click-overlay="false":title="title":message="content"@closed="modal.remove"@confirm="handleConfirm"@cancel="handleCancel"/></template><scriptsetup>import{useModal}from'vue-nice-modal';constmodal=useModal();defineProps(['title','content']);consthandleCancel=()=>{modal.reject('cancel');modal.hide();};consthandleConfirm=()=>{modal.resolve('confirm');modal.hide();};</script>
Can be used with any UI library, such as element-ui
<!-- my-modal.vue --><template><el-dialog:title="title":visible="modal.visible.value"append-to-body@closed="modal.remove"><span>{{ content }}</span><spanslot="footer"class="dialog-footer"><el-button@click="handleCancel">Cancel</el-button><el-buttontype="primary"@click="handleConfirm">Confirm</el-button></span></el-dialog></template>
Create modal higher-order component using NiceModal.create
// my-modal.jsimportNiceModalfrom'vue-nice-modal';import_MyModalfrom'./my-modal.vue';exportconstMyModal=NiceModal.create(_MyModal);
constshowModal=async()=>{try{constres=awaitNiceModal.show(MyModal,{title:'Title',content:'Content',});console.log('Result:',res);}catch(error){console.log('Cancelled:',error);}};
Can inherit context from declaration
<template><MyModalid="my-modal"/></template><scriptsetup>constshowModal=async()=>{try{constres=awaitNiceModal.show('my-modal',{title:'Title',content:'Content',});console.log('Result:',res);}catch(error){console.log('Cancelled:',error);}};</script>
constmodal=NiceModal.useModal(MyModal);constshowModal=async()=>{try{constres=awaitmodal.show({title:'Title',content:'Content',});console.log('Result:',res);}catch(error){console.log('Cancelled:',error);}};
// Pre-register modalNiceModal.register('register-modal',MyModal);constshowModal=async()=>{try{constres=awaitNiceModal.show('register-modal',{title:'Title',content:'Content',});console.log('Result:',res);}catch(error){console.log('Cancelled:',error);}};
Modal container component, needs to wrap the outermost layer of the application.
Higher-order component for creating modal components.
Show modal, supports passing parameters.
modalId
: Modal ID or componentargs
: Parameters passed to modal- Returns: Promise
Hide modal.
modalId
: Modal ID or component- Returns: Promise
Remove modal from DOM.
modalId
: Modal ID or component
Register modal component.
id
: Modal IDcomponent
: Modal componentprops
: Default props
Unregister modal component.
id
: Modal ID
Return values:
id
: Modal IDargs
: Modal parametersvisible
: Visibility stateshow(args?)
: Show modalhide()
: Hide modalremove()
: Remove modalresolve(value)
: Resolve modal Promisereject(reason)
: Reject modal PromiseresolveHide(value)
: Resolve hide Promise
This package provides complete TypeScript type declarations, supporting type inference for props and parameters.
- Supports Tree Shaking
- Provides both ESM/CJS formats
dist/ ├── esm/# ES Module format └── lib/# CommonJS format
- iOS >= 9
- Android >= 4.4
- Latest two versions of modern browsers
MIT
About
Vue version of @ebay/nice-modal-react
Topics
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors3
Uh oh!
There was an error while loading.Please reload this page.