diff --git a/zero.Web.UI/App/components/forms/form-header.vue b/zero.Web.UI/App/components/forms/form-header.vue
index d871ba5e..7128ebe4 100644
--- a/zero.Web.UI/App/components/forms/form-header.vue
+++ b/zero.Web.UI/App/components/forms/form-header.vue
@@ -29,6 +29,8 @@
export default {
name: 'uiFormHeader',
+ emits: ['delete'],
+
props: {
title: {
type: String,
@@ -69,7 +71,7 @@
computed: {
actionsDefined()
{
- return !this.isCreate && (this.canDelete || this.$scopedSlots.hasOwnProperty('actions'));
+ return !this.isCreate && (this.canDelete || typeof this.$slots.actions === 'function');
}
},
diff --git a/zero.Web.UI/App/components/forms/form.vue b/zero.Web.UI/App/components/forms/form.vue
index c6792339..4c5b22ca 100644
--- a/zero.Web.UI/App/components/forms/form.vue
+++ b/zero.Web.UI/App/components/forms/form.vue
@@ -32,6 +32,8 @@
}
},
+ emits: ['load', 'submit'],
+
data: () => ({
dirty: false,
loadingState: 'default',
diff --git a/zero.Web.UI/App/components/forms/input-list.vue b/zero.Web.UI/App/components/forms/input-list.vue
index 76d50787..ebcb21f2 100644
--- a/zero.Web.UI/App/components/forms/input-list.vue
+++ b/zero.Web.UI/App/components/forms/input-list.vue
@@ -16,6 +16,8 @@
export default {
name: 'uiInputList',
+ emits: ['input'],
+
props: {
addLabel: {
type: String,
diff --git a/zero.Web.UI/App/components/forms/media-old.vue b/zero.Web.UI/App/components/forms/media-old.vue
index 622c9a6d..9e42dee5 100644
--- a/zero.Web.UI/App/components/forms/media-old.vue
+++ b/zero.Web.UI/App/components/forms/media-old.vue
@@ -66,6 +66,8 @@
export default {
name: 'uiMediaOld',
+ emits: ['input'],
+
props: {
disabled: {
type: Boolean,
diff --git a/zero.Web.UI/App/components/forms/rte.vue b/zero.Web.UI/App/components/forms/rte.vue
index 8d13b892..431b7846 100644
--- a/zero.Web.UI/App/components/forms/rte.vue
+++ b/zero.Web.UI/App/components/forms/rte.vue
@@ -19,6 +19,8 @@
export default {
name: 'uiRte',
+ emits: ['input'],
+
props: {
value: {
type: String,
diff --git a/zero.Web.UI/App/components/forms/search.vue b/zero.Web.UI/App/components/forms/search.vue
index b7247a54..31064c8e 100644
--- a/zero.Web.UI/App/components/forms/search.vue
+++ b/zero.Web.UI/App/components/forms/search.vue
@@ -23,6 +23,8 @@
}
},
+ emits: ['input', 'change', 'submit'],
+
computed: {
},
diff --git a/zero.Web.UI/App/components/forms/tags.vue b/zero.Web.UI/App/components/forms/tags.vue
index cb1814a4..a2599a5a 100644
--- a/zero.Web.UI/App/components/forms/tags.vue
+++ b/zero.Web.UI/App/components/forms/tags.vue
@@ -9,6 +9,8 @@
export default {
name: 'uiTags',
+ emits: ['input'],
+
props: {
addLabel: {
type: String,
diff --git a/zero.Web.UI/App/components/forms/toggle.vue b/zero.Web.UI/App/components/forms/toggle.vue
index bb5fb5b1..5f49fbc1 100644
--- a/zero.Web.UI/App/components/forms/toggle.vue
+++ b/zero.Web.UI/App/components/forms/toggle.vue
@@ -13,6 +13,8 @@
export default {
name: 'uiToggle',
+ emits: ['input'],
+
props: {
value: {
type: Boolean,
diff --git a/zero.Web.UI/App/components/modules/module-preview.vue b/zero.Web.UI/App/components/modules/module-preview.vue
index 5eda7488..ecf21518 100644
--- a/zero.Web.UI/App/components/modules/module-preview.vue
+++ b/zero.Web.UI/App/components/modules/module-preview.vue
@@ -33,6 +33,8 @@
export default {
name: 'uiModulePreview',
+ emits: ['edit', 'remove', 'isActive'],
+
props: {
value: {
type: Object,
diff --git a/zero.Web.UI/App/components/modules/modules-select.vue b/zero.Web.UI/App/components/modules/modules-select.vue
index 49386b92..4385736d 100644
--- a/zero.Web.UI/App/components/modules/modules-select.vue
+++ b/zero.Web.UI/App/components/modules/modules-select.vue
@@ -36,6 +36,8 @@
export default {
name: 'uiModulesSelect',
+ emits: ['selected'],
+
props: {
value: Array,
config: Object,
diff --git a/zero.Web.UI/App/components/modules/modules.vue b/zero.Web.UI/App/components/modules/modules.vue
index 789bcebf..98a487b8 100644
--- a/zero.Web.UI/App/components/modules/modules.vue
+++ b/zero.Web.UI/App/components/modules/modules.vue
@@ -17,6 +17,8 @@
export default {
name: 'uiModules',
+ emits: ['input'],
+
props: {
value: {
type: Array,
diff --git a/zero.Web.UI/App/components/overlays/confirm.vue b/zero.Web.UI/App/components/overlays/confirm.vue
index 2c64a458..2cf2a8f2 100644
--- a/zero.Web.UI/App/components/overlays/confirm.vue
+++ b/zero.Web.UI/App/components/overlays/confirm.vue
@@ -12,8 +12,6 @@
diff --git a/zero.Web.UI/App/components/overlays/dropdown.vue b/zero.Web.UI/App/components/overlays/dropdown.vue
index 03c569fe..c1a288d0 100644
--- a/zero.Web.UI/App/components/overlays/dropdown.vue
+++ b/zero.Web.UI/App/components/overlays/dropdown.vue
@@ -16,6 +16,8 @@
export default {
name: 'uiDropdown',
+ emits: ['opened', 'closed'],
+
props: {
align: {
type: String,
@@ -39,7 +41,7 @@
hasButton()
{
- return this.$scopedSlots.hasOwnProperty('button');
+ return typeof this.$slots.button === 'function';
},
dropdownClasses()
diff --git a/zero.Web.UI/App/components/overlays/overlay-holder.vue b/zero.Web.UI/App/components/overlays/overlay-holder.vue
index 253a6e2a..112e1753 100644
--- a/zero.Web.UI/App/components/overlays/overlay-holder.vue
+++ b/zero.Web.UI/App/components/overlays/overlay-holder.vue
@@ -13,12 +13,12 @@