feat: add issue kanban/attachments/deadlines, dashboard widget DnD, and checklisten system

This commit is contained in:
Matthias Hochmeister
2026-03-28 15:19:41 +01:00
parent a1cda5be51
commit 0c2ea829aa
42 changed files with 4804 additions and 201 deletions

View File

@@ -1,5 +1,5 @@
import { api } from './api';
import type { Issue, IssueComment, CreateIssuePayload, UpdateIssuePayload, IssueTyp, IssueFilters, AssignableMember, IssueStatusDef, IssuePriorityDef, IssueWidgetSummary, IssueHistorie } from '../types/issue.types';
import type { Issue, IssueComment, CreateIssuePayload, UpdateIssuePayload, IssueTyp, IssueFilters, AssignableMember, IssueStatusDef, IssuePriorityDef, IssueWidgetSummary, IssueHistorie, IssueDatei } from '../types/issue.types';
export const issuesApi = {
getIssues: async (filters?: IssueFilters): Promise<Issue[]> => {
@@ -98,4 +98,20 @@ export const issuesApi = {
deletePriority: async (id: number): Promise<void> => {
await api.delete(`/api/issues/priorities/${id}`);
},
// Files
uploadFile: async (issueId: number, file: File): Promise<IssueDatei> => {
const formData = new FormData();
formData.append('file', file);
const r = await api.post(`/api/issues/${issueId}/files`, formData, {
headers: { 'Content-Type': 'multipart/form-data' },
});
return r.data.data;
},
getFiles: async (issueId: number): Promise<IssueDatei[]> => {
const r = await api.get(`/api/issues/${issueId}/files`);
return r.data.data;
},
deleteFile: async (fileId: string): Promise<void> => {
await api.delete(`/api/issues/files/${fileId}`);
},
};