feat: separate column toggle buttons
This commit is contained in:
@@ -12,7 +12,7 @@ import {
|
||||
import { KanbanOutboundMessage } from "@/kanban/outboundMessages";
|
||||
import { appError, AppErrorVariant } from "@/error";
|
||||
import { LocatedTask, TaskLocation, TaskScope } from "@/model/taskLocation";
|
||||
import { TaskStatus } from "@/model/taskStatus";
|
||||
import { TaskStatus, TASK_STATUS_META, TASK_STATUS_ORDER } from "@/model/taskStatus";
|
||||
import { IConfigProvider, ITaskRepository } from "@/ports";
|
||||
import { presentError } from "@/ui/presentError";
|
||||
import { TASK_SCOPE_LABELS } from "@/ui/taskLabels";
|
||||
@@ -60,7 +60,7 @@ export class TaskKanbanPanel {
|
||||
|
||||
#tasks: LocatedTask[] = [];
|
||||
#scopeFilter: KanbanScopeFilter = "all";
|
||||
#showHidden = false;
|
||||
#shownHiddenColumns: TaskStatus[] = [];
|
||||
#disposed = false;
|
||||
|
||||
constructor(panel: vscode.WebviewPanel, deps: TaskKanbanDeps) {
|
||||
@@ -125,9 +125,8 @@ export class TaskKanbanPanel {
|
||||
this.#postState();
|
||||
return;
|
||||
|
||||
case "setShowHidden":
|
||||
this.#showHidden = message.showHidden;
|
||||
this.#postState();
|
||||
case "toggleHiddenColumn":
|
||||
this.#toggleHiddenColumn(message.status);
|
||||
return;
|
||||
|
||||
case "createTask":
|
||||
@@ -201,6 +200,16 @@ export class TaskKanbanPanel {
|
||||
this.#deps.onTasksMutated?.();
|
||||
}
|
||||
|
||||
#toggleHiddenColumn(status: TaskStatus): void {
|
||||
const index = this.#shownHiddenColumns.indexOf(status);
|
||||
if (index >= 0) {
|
||||
this.#shownHiddenColumns.splice(index, 1);
|
||||
} else {
|
||||
this.#shownHiddenColumns.push(status);
|
||||
}
|
||||
this.#postState();
|
||||
}
|
||||
|
||||
async #pickLocationForCreate(): Promise<TaskLocation | undefined> {
|
||||
const locations = resolveTaskLocations(this.#deps.config);
|
||||
if (locations.length === 0) {
|
||||
@@ -251,13 +260,17 @@ export class TaskKanbanPanel {
|
||||
#postState(): void {
|
||||
const board = buildKanbanBoard(
|
||||
this.#filteredTasks().map((item) => item.task),
|
||||
{ showHiddenStatuses: this.#showHidden },
|
||||
{ shownHiddenColumns: this.#shownHiddenColumns },
|
||||
);
|
||||
|
||||
this.#post({
|
||||
variant: "state",
|
||||
board,
|
||||
scopeFilter: this.#scopeFilter,
|
||||
showHidden: this.#showHidden,
|
||||
shownHiddenColumns: this.#shownHiddenColumns,
|
||||
defaultHiddenStatuses: TASK_STATUS_ORDER.filter(
|
||||
(s) => TASK_STATUS_META[s].defaultHidden,
|
||||
),
|
||||
availableScopes: this.#availableScopes(),
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user