diff --git a/docs/components/content/examples/ModalExampleDisableOverlay.vue b/docs/components/content/examples/ModalExampleDisableOverlay.vue
new file mode 100644
index 00000000..c4e460bc
--- /dev/null
+++ b/docs/components/content/examples/ModalExampleDisableOverlay.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/docs/components/content/examples/ModalExampleDisableTransition.vue b/docs/components/content/examples/ModalExampleDisableTransition.vue
new file mode 100644
index 00000000..b8a24890
--- /dev/null
+++ b/docs/components/content/examples/ModalExampleDisableTransition.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/docs/components/content/examples/ModalExamplePreventClose.vue b/docs/components/content/examples/ModalExamplePreventClose.vue
new file mode 100644
index 00000000..6e4f78eb
--- /dev/null
+++ b/docs/components/content/examples/ModalExamplePreventClose.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+ Modal
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/content/6.overlays/1.modal.md b/docs/content/6.overlays/1.modal.md
index f56a73bf..ce55f398 100644
--- a/docs/content/6.overlays/1.modal.md
+++ b/docs/content/6.overlays/1.modal.md
@@ -8,6 +8,8 @@ headlessui:
## Usage
+Use a `v-model` to control the Modal state.
+
::component-example
#default
:modal-example-basic
@@ -64,6 +66,93 @@ const isOpen = ref(false)
```
::
+### Disable overlay
+
+::component-example
+#default
+:modal-example-disable-overlay
+
+#code
+```vue
+
+
+
+
+
+```
+::
+
+### Disable transition
+
+::component-example
+#default
+:modal-example-disable-transition
+
+#code
+```vue
+
+
+
+
+
+```
+::
+
+### Prevent close
+
+::component-example
+#default
+:modal-example-prevent-close
+
+#code
+```vue
+
+
+
+
+
+
+
+
+
+
+
+ Modal
+
+
+
+
+
+
+
+
+
+
+```
+::
+
## Props
:component-props
diff --git a/src/runtime/components/overlays/Modal.vue b/src/runtime/components/overlays/Modal.vue
index b28b2330..66d66d9f 100644
--- a/src/runtime/components/overlays/Modal.vue
+++ b/src/runtime/components/overlays/Modal.vue
@@ -1,6 +1,6 @@
-
+ !preventClose && close(e)">
@@ -54,6 +54,10 @@ export default defineComponent({
type: Boolean,
default: true
},
+ preventClose: {
+ type: Boolean,
+ default: false
+ },
ui: {
type: Object as PropType>,
default: () => appConfig.ui.modal
@@ -87,6 +91,7 @@ export default defineComponent({
function close (value: boolean) {
isOpen.value = value
+
emit('close')
}