diff --git a/src/components/input/SelectProject.vue b/src/components/input/SelectProject.vue index b5a946d82..50b6ba248 100644 --- a/src/components/input/SelectProject.vue +++ b/src/components/input/SelectProject.vue @@ -20,11 +20,20 @@ import type {IProject} from '@/modelTypes/IProject' import ProjectService from '@/services/project' import {includesById} from '@/helpers/utils' +type ProjectFilterFunc = (p: IProject) => boolean + const props = defineProps({ modelValue: { type: Array as PropType, default: () => [], }, + projectFilter: { + type: Function as PropType, + default: () => { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + return (_: IProject) => true + }, + }, }) const emit = defineEmits<{ (e: 'update:modelValue', value: IProject[]): void @@ -58,6 +67,8 @@ async function findProjects(query: string) { const response = await projectService.getAll({}, {s: query}) as IProject[] // Filter selected items from the results - foundProjects.value = response.filter(({id}) => !includesById(projects.value, id)) + foundProjects.value = response + .filter(({id}) => !includesById(projects.value, id)) + .filter(props.projectFilter) } \ No newline at end of file diff --git a/src/components/project/partials/filters.vue b/src/components/project/partials/filters.vue index 5ea3de591..49ea31f66 100644 --- a/src/components/project/partials/filters.vue +++ b/src/components/project/partials/filters.vue @@ -164,6 +164,7 @@ v-model="entities.projects" @select="changeMultiselectFilter('projects', 'project_id')" @remove="changeMultiselectFilter('projects', 'project_id')" + :project-filter="p => p.id > 0" />