Fixing some type errors in app #2 (#9637)

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
This commit is contained in:
Pascal Jufer
2021-12-01 23:36:56 +01:00
committed by GitHub
parent c16592806d
commit d4ec4a9672
6 changed files with 20 additions and 16 deletions

View File

@@ -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;
}

View File

@@ -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) {

View File

@@ -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 {

View File

@@ -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);
},

View File

@@ -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);
}
}

View File

@@ -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;
}