mirror of
https://github.com/directus/directus.git
synced 2026-01-27 05:28:06 -05:00
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
This commit is contained in:
@@ -54,9 +54,9 @@ export function usePermissions(collection: Ref<string>, item: Ref<any>, isNew: R
|
||||
|
||||
if (!permissions) return fields;
|
||||
|
||||
if (permissions?.fields?.includes('*') === false) {
|
||||
if (permissions.fields?.includes('*') === false) {
|
||||
fields = fields.map((field: Field) => {
|
||||
if (permissions.fields.includes(field.field) === false) {
|
||||
if (permissions.fields?.includes(field.field) === false) {
|
||||
field.meta = {
|
||||
...(field.meta || {}),
|
||||
readonly: true,
|
||||
@@ -67,12 +67,12 @@ export function usePermissions(collection: Ref<string>, item: Ref<any>, isNew: R
|
||||
});
|
||||
}
|
||||
|
||||
if (permissions?.presets) {
|
||||
if (permissions.presets) {
|
||||
fields = fields.map((field: Field) => {
|
||||
if (field.field in permissions.presets) {
|
||||
if (field.field in permissions.presets!) {
|
||||
field.schema = {
|
||||
...(field.schema || {}),
|
||||
default_value: permissions.presets[field.field],
|
||||
default_value: permissions.presets![field.field],
|
||||
} as any;
|
||||
}
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ export default defineDisplay({
|
||||
fields.push(translationsPrimaryKeyField.field);
|
||||
}
|
||||
|
||||
if (languagesRelation?.field && !fields.includes(languagesRelation.field)) {
|
||||
if (languagesRelation && languagesPrimaryKeyField && !fields.includes(languagesRelation.field)) {
|
||||
fields.push(`${languagesRelation.field}.${languagesPrimaryKeyField.field}`);
|
||||
|
||||
if (options?.languageField) {
|
||||
|
||||
@@ -11,7 +11,7 @@ import { layers as directusLayers } from './style';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { useSync } from '@directus/shared/composables';
|
||||
import { LayoutOptions, LayoutQuery } from './types';
|
||||
import { Filter } from '@directus/shared/types';
|
||||
import { Filter, Item } from '@directus/shared/types';
|
||||
import { useCollection } from '@directus/shared/composables';
|
||||
import { useItems } from '@directus/shared/composables';
|
||||
import { getFieldsFromTemplate } from '@directus/shared/utils';
|
||||
@@ -225,20 +225,20 @@ export default defineLayout<LayoutOptions, LayoutQuery>({
|
||||
});
|
||||
}
|
||||
|
||||
function setSelection(ids: Array<string | number>) {
|
||||
selection.value = ids;
|
||||
function setSelection(ids: Item[]) {
|
||||
selection.value = Array.from(new Set(ids));
|
||||
}
|
||||
|
||||
function pushSelection(ids: Array<string | number>) {
|
||||
function pushSelection(ids: Item[]) {
|
||||
selection.value = Array.from(new Set(selection.value.concat(ids)));
|
||||
}
|
||||
|
||||
function handleSelect({ ids, replace }: { ids: Array<string | number>; replace: boolean }) {
|
||||
function handleSelect({ ids, replace }: { ids: Item[]; replace: boolean }) {
|
||||
if (replace) setSelection(ids);
|
||||
else pushSelection(ids);
|
||||
}
|
||||
|
||||
function handleClick({ id, replace }: { id: string | number; replace: boolean }) {
|
||||
function handleClick({ id, replace }: { id: Item; replace: boolean }) {
|
||||
if (props.selectMode) {
|
||||
handleSelect({ ids: [id], replace });
|
||||
} else {
|
||||
|
||||
@@ -283,6 +283,9 @@ export const useFieldsStore = defineStore({
|
||||
if (relation === undefined) return false;
|
||||
|
||||
const relatedCollection = relation.field === field ? relation.related_collection : relation.collection;
|
||||
|
||||
if (relatedCollection === null) return false;
|
||||
|
||||
const relatedField = path.join('.');
|
||||
return this.getField(relatedCollection, relatedField);
|
||||
},
|
||||
|
||||
@@ -28,9 +28,9 @@ export function addRelatedPrimaryKeyToFields(currentCollection: string, fields:
|
||||
const field = fieldsStore.getField(currentCollection, fieldName);
|
||||
const primaryKeyField = fieldsStore.getPrimaryKeyFieldForCollection(field?.collection ?? '');
|
||||
|
||||
const includeField = fieldParts.slice(0, -1).concat(primaryKeyField.field).join('.');
|
||||
const includeField = primaryKeyField && fieldParts.slice(0, -1).concat(primaryKeyField.field).join('.');
|
||||
|
||||
if (!sanitizedFields.includes(includeField)) {
|
||||
if (includeField && !sanitizedFields.includes(includeField)) {
|
||||
sanitizedFields.push(includeField);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { useSettingsStore } from '@/stores';
|
||||
import { Settings } from '@directus/shared/types';
|
||||
|
||||
export default function getSetting(setting: string): any {
|
||||
export default function getSetting(setting: keyof Settings): any {
|
||||
const settingsStore = useSettingsStore();
|
||||
if (settingsStore.settings && setting in settingsStore.settings) return settingsStore.settings[setting];
|
||||
if (settingsStore.settings) return settingsStore.settings[setting];
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user