Files
multica/apps/web/features/issues/stores/selection-store.ts
Jiayuan 10f88c5fcd feat(issues): add batch operations for issue list view
Add multi-select with batch update/delete support in the list view.
Users can select issues via checkboxes (per-row or per-status-group)
and apply bulk status, priority, assignee changes or delete via a
floating toolbar.
2026-03-30 13:52:59 +08:00

36 lines
952 B
TypeScript

"use client";
import { create } from "zustand";
interface IssueSelectionState {
selectedIds: Set<string>;
toggle: (id: string) => void;
select: (ids: string[]) => void;
deselect: (ids: string[]) => void;
clear: () => void;
}
export const useIssueSelectionStore = create<IssueSelectionState>()((set) => ({
selectedIds: new Set<string>(),
toggle: (id) =>
set((state) => {
const next = new Set(state.selectedIds);
if (next.has(id)) next.delete(id);
else next.add(id);
return { selectedIds: next };
}),
select: (ids) =>
set((state) => {
const next = new Set(state.selectedIds);
for (const id of ids) next.add(id);
return { selectedIds: next };
}),
deselect: (ids) =>
set((state) => {
const next = new Set(state.selectedIds);
for (const id of ids) next.delete(id);
return { selectedIds: next };
}),
clear: () => set({ selectedIds: new Set() }),
}));