mirror of
https://github.com/BradGroux/veritas-kanban.git
synced 2026-10-09 13:17:52 +00:00
fix: remove hide/show feature, allow deleting any managed list item
- Removed isDefault protection from delete (any item can be deleted) - Removed hide/show toggle button from ManagedListManager - Delete still blocked if item has task references (with clear message) - Cleaned up isHidden flags from task-types.json - Simplified delete dialog messaging
This commit is contained in:
parent
d28cf29598
commit
e6ac8cfe6a
3 changed files with 26 additions and 45 deletions
|
|
@ -4,30 +4,30 @@
|
|||
"label": "Code",
|
||||
"icon": "Code",
|
||||
"color": "border-l-violet-500",
|
||||
"order": 1,
|
||||
"order": 2,
|
||||
"isDefault": true,
|
||||
"created": "2026-01-28T04:03:21.782Z",
|
||||
"updated": "2026-01-28T04:27:49.587Z"
|
||||
"updated": "2026-01-28T04:32:03.855Z"
|
||||
},
|
||||
{
|
||||
"id": "research",
|
||||
"label": "Research",
|
||||
"icon": "BookOpen",
|
||||
"color": "border-l-cyan-500",
|
||||
"order": 3,
|
||||
"order": 4,
|
||||
"isDefault": true,
|
||||
"created": "2026-01-28T04:03:21.782Z",
|
||||
"updated": "2026-01-28T04:27:49.587Z"
|
||||
"updated": "2026-01-28T04:32:03.855Z"
|
||||
},
|
||||
{
|
||||
"id": "content",
|
||||
"label": "Content",
|
||||
"icon": "FileText",
|
||||
"color": "border-l-orange-500",
|
||||
"order": 2,
|
||||
"order": 3,
|
||||
"isDefault": true,
|
||||
"created": "2026-01-28T04:03:21.782Z",
|
||||
"updated": "2026-01-28T04:27:49.587Z"
|
||||
"updated": "2026-01-28T04:32:59.581Z"
|
||||
},
|
||||
{
|
||||
"id": "automation",
|
||||
|
|
@ -37,6 +37,15 @@
|
|||
"order": 0,
|
||||
"isDefault": true,
|
||||
"created": "2026-01-28T04:03:21.782Z",
|
||||
"updated": "2026-01-28T04:27:49.587Z"
|
||||
"updated": "2026-01-28T04:32:03.855Z"
|
||||
},
|
||||
{
|
||||
"label": "Bug",
|
||||
"icon": "Bug",
|
||||
"color": "border-l-red-500",
|
||||
"id": "bug-GdN5rT",
|
||||
"order": 1,
|
||||
"created": "2026-01-28T04:31:31.690Z",
|
||||
"updated": "2026-01-28T04:32:03.855Z"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ export class ManagedListService<T extends ManagedListItem> {
|
|||
const referenceCount = this.referenceCounter ? await this.referenceCounter(id) : 0;
|
||||
|
||||
return {
|
||||
allowed: !isDefault && referenceCount === 0,
|
||||
allowed: referenceCount === 0,
|
||||
referenceCount,
|
||||
isDefault,
|
||||
};
|
||||
|
|
@ -189,11 +189,6 @@ export class ManagedListService<T extends ManagedListItem> {
|
|||
return { deleted: false };
|
||||
}
|
||||
|
||||
// Don't allow deleting default items
|
||||
if (item.isDefault && !force) {
|
||||
return { deleted: false, referenceCount: 0 };
|
||||
}
|
||||
|
||||
// Check references if not forced
|
||||
if (!force && this.referenceCounter) {
|
||||
const referenceCount = await this.referenceCounter(id);
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import {
|
|||
AlertDialogHeader,
|
||||
AlertDialogTitle,
|
||||
} from '../ui/alert-dialog';
|
||||
import { Trash2, GripVertical, Eye, EyeOff } from 'lucide-react';
|
||||
import { Trash2, GripVertical } from 'lucide-react';
|
||||
import {
|
||||
DndContext,
|
||||
closestCenter,
|
||||
|
|
@ -101,10 +101,6 @@ function SortableItem<T extends ManagedListItem>({
|
|||
setDeleteDialogOpen(false);
|
||||
};
|
||||
|
||||
const handleToggleHidden = async () => {
|
||||
await onUpdate(item.id, { isHidden: !item.isHidden });
|
||||
};
|
||||
|
||||
const handleExtraFieldChange = (patch: Partial<T>) => {
|
||||
onUpdate(item.id, patch);
|
||||
};
|
||||
|
|
@ -146,9 +142,6 @@ function SortableItem<T extends ManagedListItem>({
|
|||
onClick={() => setIsEditing(true)}
|
||||
>
|
||||
{item.label}
|
||||
{item.isDefault && (
|
||||
<span className="ml-2 text-xs text-muted-foreground">(default)</span>
|
||||
)}
|
||||
{item.isHidden && (
|
||||
<span className="ml-2 text-xs text-muted-foreground">(hidden)</span>
|
||||
)}
|
||||
|
|
@ -159,23 +152,11 @@ function SortableItem<T extends ManagedListItem>({
|
|||
</div>
|
||||
|
||||
<div className="flex items-center gap-1">
|
||||
{item.isDefault && (
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
onClick={handleToggleHidden}
|
||||
title={item.isHidden ? 'Show' : 'Hide'}
|
||||
>
|
||||
{item.isHidden ? <Eye className="h-4 w-4" /> : <EyeOff className="h-4 w-4" />}
|
||||
</Button>
|
||||
)}
|
||||
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
onClick={handleDeleteClick}
|
||||
disabled={item.isDefault}
|
||||
title={item.isDefault ? 'Cannot delete default item' : 'Delete'}
|
||||
title="Delete"
|
||||
>
|
||||
<Trash2 className="h-4 w-4" />
|
||||
</Button>
|
||||
|
|
@ -189,16 +170,12 @@ function SortableItem<T extends ManagedListItem>({
|
|||
{deleteInfo && !deleteInfo.allowed ? 'Cannot Delete' : 'Delete Item?'}
|
||||
</AlertDialogTitle>
|
||||
<AlertDialogDescription>
|
||||
{deleteInfo && deleteInfo.isDefault && (
|
||||
<span>This is a default item and cannot be deleted.</span>
|
||||
)}
|
||||
{deleteInfo && !deleteInfo.isDefault && deleteInfo.referenceCount > 0 && !deleteInfo.allowed && (
|
||||
<span>This item is referenced by {deleteInfo.referenceCount} task(s) and cannot be deleted.</span>
|
||||
)}
|
||||
{deleteInfo && deleteInfo.allowed && (
|
||||
<span>Are you sure you want to delete "{item.label}"? This action cannot be undone.</span>
|
||||
)}
|
||||
{!deleteInfo && (
|
||||
{deleteInfo && deleteInfo.referenceCount > 0 && !deleteInfo.allowed ? (
|
||||
<span>
|
||||
"{item.label}" is used by {deleteInfo.referenceCount} task(s).
|
||||
Remove or reassign those tasks first before deleting this item.
|
||||
</span>
|
||||
) : (
|
||||
<span>Are you sure you want to delete "{item.label}"? This action cannot be undone.</span>
|
||||
)}
|
||||
</AlertDialogDescription>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue