mirror of
https://github.com/directus/directus.git
synced 2026-04-25 03:00:53 -04:00
Check for default values
This commit is contained in:
@@ -16,6 +16,20 @@ export function useCollection(collectionKey: string | Ref<string>) {
|
||||
return fieldsStore.getFieldsForCollection(collection.value);
|
||||
});
|
||||
|
||||
const defaults = computed(() => {
|
||||
if (!fields.value) return {};
|
||||
|
||||
const defaults: Record<string, any> = {};
|
||||
|
||||
for (const field of fields.value) {
|
||||
if (field.schema?.default_value) {
|
||||
defaults[field.field] = field.schema.default_value;
|
||||
}
|
||||
}
|
||||
|
||||
return defaults;
|
||||
});
|
||||
|
||||
const primaryKeyField = computed(() => {
|
||||
// Every collection has a primary key; rules of the land
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
@@ -32,5 +46,5 @@ export function useCollection(collectionKey: string | Ref<string>) {
|
||||
return info.value?.meta?.sort_field || null;
|
||||
});
|
||||
|
||||
return { info, fields, primaryKeyField, userCreatedField, sortField };
|
||||
return { info, fields, defaults, primaryKeyField, userCreatedField, sortField };
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ export function useItem(collection: Ref<string>, primaryKey: Ref<string | number
|
||||
const saving = ref(false);
|
||||
const deleting = ref(false);
|
||||
const archiving = ref(false);
|
||||
const edits = ref({});
|
||||
const edits = ref<Record<string, any>>({});
|
||||
const isNew = computed(() => primaryKey.value === '+');
|
||||
const isBatch = computed(() => typeof primaryKey.value === 'string' && primaryKey.value.includes(','));
|
||||
const isSingle = computed(() => !!collectionInfo.value?.meta?.singleton);
|
||||
|
||||
@@ -267,7 +267,7 @@ export default defineComponent({
|
||||
|
||||
const revisionsDrawerDetail = ref<Vue | null>(null);
|
||||
|
||||
const { info: collectionInfo, primaryKeyField } = useCollection(collection);
|
||||
const { info: collectionInfo, defaults, primaryKeyField } = useCollection(collection);
|
||||
|
||||
const {
|
||||
isNew,
|
||||
@@ -288,11 +288,24 @@ export default defineComponent({
|
||||
validationErrors,
|
||||
} = useItem(collection, primaryKey);
|
||||
|
||||
const hasEdits = computed<boolean>(() => Object.keys(edits.value).length > 0);
|
||||
const hasEdits = computed(() => Object.keys(edits.value).length > 0);
|
||||
|
||||
const isSavable = computed<boolean>(
|
||||
() => saveAllowed.value === true && (hasEdits.value === true || isNew.value === true)
|
||||
);
|
||||
const isSavable = computed(() => {
|
||||
if (saveAllowed.value === false) return false;
|
||||
|
||||
if (
|
||||
!primaryKeyField.value?.schema?.has_auto_increment &&
|
||||
!primaryKeyField.value?.meta?.special?.includes('uuid')
|
||||
) {
|
||||
return !!edits.value?.[primaryKeyField.value.field];
|
||||
}
|
||||
|
||||
if (isNew.value === true) {
|
||||
return Object.keys(defaults.value).length > 0 || hasEdits.value;
|
||||
}
|
||||
|
||||
return hasEdits.value;
|
||||
});
|
||||
|
||||
const confirmDelete = ref(false);
|
||||
const confirmArchive = ref(false);
|
||||
|
||||
Reference in New Issue
Block a user