refactor: move from union type to object enum
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
export const TaskStatus = {
|
||||
BACKLOG: "backlog",
|
||||
TODO: "todo",
|
||||
IN_PROGRESS: "in-progress",
|
||||
DONE: "done",
|
||||
CANCELLED: "cancelled",
|
||||
} as const;
|
||||
|
||||
export type TaskStatus = (typeof TaskStatus)[keyof typeof TaskStatus];
|
||||
|
||||
export type TaskStatusMeta = {
|
||||
label: string;
|
||||
/** Hide column by default in kanban (toggle can show later). */
|
||||
defaultHidden: boolean;
|
||||
/** Codicon id for tree; adapters wrap in ThemeIcon. */
|
||||
icon: string;
|
||||
};
|
||||
|
||||
/** Explicit display / column order (not Object.values). */
|
||||
export const TASK_STATUS_ORDER: TaskStatus[] = [
|
||||
TaskStatus.BACKLOG,
|
||||
TaskStatus.TODO,
|
||||
TaskStatus.IN_PROGRESS,
|
||||
TaskStatus.DONE,
|
||||
TaskStatus.CANCELLED,
|
||||
];
|
||||
|
||||
export const TASK_STATUS_META: Record<TaskStatus, TaskStatusMeta> = {
|
||||
[TaskStatus.BACKLOG]: {
|
||||
label: "Backlog",
|
||||
defaultHidden: true,
|
||||
icon: "inbox",
|
||||
},
|
||||
[TaskStatus.TODO]: {
|
||||
label: "To Do",
|
||||
defaultHidden: false,
|
||||
icon: "circle-outline",
|
||||
},
|
||||
[TaskStatus.IN_PROGRESS]: {
|
||||
label: "In Progress",
|
||||
defaultHidden: false,
|
||||
icon: "sync",
|
||||
},
|
||||
[TaskStatus.DONE]: {
|
||||
label: "Done",
|
||||
defaultHidden: false,
|
||||
icon: "check",
|
||||
},
|
||||
[TaskStatus.CANCELLED]: {
|
||||
label: "Cancelled",
|
||||
defaultHidden: true,
|
||||
icon: "close",
|
||||
},
|
||||
};
|
||||
|
||||
export function isTaskStatus(value: unknown): value is TaskStatus {
|
||||
return (
|
||||
typeof value === "string" && (TASK_STATUS_ORDER as string[]).includes(value)
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user