diff --git a/app/src/composables/use-item/use-item.ts b/app/src/composables/use-item/use-item.ts index 27277458f1..0acbf3624e 100644 --- a/app/src/composables/use-item/use-item.ts +++ b/app/src/composables/use-item/use-item.ts @@ -17,6 +17,7 @@ import { translate } from '@/utils/translate-object-values'; type UsableItem = { edits: Ref>; + hasEdits: Ref; item: Ref | null>; error: Ref; loading: Ref; @@ -45,6 +46,7 @@ export function useItem(collection: Ref, primaryKey: Ref>({}); + const hasEdits = computed(() => Object.keys(edits.value).length > 0); const isNew = computed(() => primaryKey.value === '+'); const isBatch = computed(() => typeof primaryKey.value === 'string' && primaryKey.value.includes(',')); const isSingle = computed(() => !!collectionInfo.value?.meta?.singleton); @@ -71,6 +73,7 @@ export function useItem(collection: Ref, primaryKey: Ref Object.keys(edits.value).length > 0); - const isSavable = computed(() => { if (saveAllowed.value === false) return false; if (hasEdits.value === true) return true; diff --git a/app/src/modules/files/routes/item.vue b/app/src/modules/files/routes/item.vue index fde34b36a3..430d5791fe 100644 --- a/app/src/modules/files/routes/item.vue +++ b/app/src/modules/files/routes/item.vue @@ -235,6 +235,7 @@ export default defineComponent({ const { isNew, edits, + hasEdits, item, saving, loading, @@ -248,8 +249,6 @@ export default defineComponent({ validationErrors, } = useItem(ref('directus_files'), primaryKey); - const hasEdits = computed(() => Object.keys(edits.value).length > 0); - unsavedChanges(hasEdits); const confirmDelete = ref(false); diff --git a/app/src/modules/settings/routes/roles/item/item.vue b/app/src/modules/settings/routes/roles/item/item.vue index 1d1e8a29da..ab268691b2 100644 --- a/app/src/modules/settings/routes/roles/item/item.vue +++ b/app/src/modules/settings/routes/roles/item/item.vue @@ -139,13 +139,11 @@ export default defineComponent({ const userInviteModalActive = ref(false); const { primaryKey } = toRefs(props); - const { edits, item, saving, loading, error, save, remove, deleting, isBatch } = useItem( + const { edits, hasEdits, item, saving, loading, error, save, remove, deleting, isBatch } = useItem( ref('directus_roles'), primaryKey ); - const hasEdits = computed(() => Object.keys(edits.value).length > 0); - const confirmDelete = ref(false); const adminEnabled = computed(() => { diff --git a/app/src/modules/settings/routes/webhooks/item.vue b/app/src/modules/settings/routes/webhooks/item.vue index cddebe979b..e58e53eaf3 100644 --- a/app/src/modules/settings/routes/webhooks/item.vue +++ b/app/src/modules/settings/routes/webhooks/item.vue @@ -114,6 +114,7 @@ export default defineComponent({ const { isNew, edits, + hasEdits, item, saving, loading, @@ -126,7 +127,6 @@ export default defineComponent({ validationErrors, } = useItem(ref('directus_webhooks'), primaryKey); - const hasEdits = computed(() => Object.keys(edits.value).length > 0); const confirmDelete = ref(false); const title = computed(() => { diff --git a/app/src/modules/users/routes/item.vue b/app/src/modules/users/routes/item.vue index f879d92b4a..2225883025 100644 --- a/app/src/modules/users/routes/item.vue +++ b/app/src/modules/users/routes/item.vue @@ -238,6 +238,7 @@ export default defineComponent({ const { isNew, edits, + hasEdits, item, saving, loading, @@ -259,8 +260,6 @@ export default defineComponent({ }; } - const hasEdits = computed(() => Object.keys(edits.value).length > 0); - unsavedChanges(hasEdits); const confirmDelete = ref(false);