Files
project-manager/web/src/lib/cardOrder.ts
T

30 lines
1.0 KiB
TypeScript
Raw Normal View History

import { apiRequest } from './api'
import type { Card } from '../types'
/** A vuedraggable @change payload -- shared by every column that can be a
* drag source/target (a project's kanban columns, the sidebar's inbox). */
export type ColumnChange = {
added?: { element: Card; newIndex: number }
removed?: { element: Card; oldIndex: number }
moved?: { element: Card; oldIndex: number; newIndex: number }
}
/**
* Set the contents and order of one column -- the inbox (both null) or a
* project's status (both set). Shared by the sidebar's inbox list and a
* project's kanban columns, since either can be a drag source or target for
* the other (dragging a card in re-parents it; its old column is re-packed
* server-side).
*/
export async function reorderColumn(
projectId: number | null,
statusId: number | null,
cardIds: number[],
): Promise<{ cards: Card[] }> {
return apiRequest<{ cards: Card[] }>('/cards/order', {
method: 'PUT',
auth: true,
body: { project_id: projectId, status_id: statusId, card_ids: cardIds },
})
}