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:
Brad Groux 2026-01-27 22:35:06 -06:00
parent d28cf29598
commit e6ac8cfe6a
3 changed files with 26 additions and 45 deletions

View file

@ -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"
}
]
]

View file

@ -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);

View file

@ -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 &quot;{item.label}&quot;? This action cannot be undone.</span>
)}
{!deleteInfo && (
{deleteInfo && deleteInfo.referenceCount > 0 && !deleteInfo.allowed ? (
<span>
&quot;{item.label}&quot; 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 &quot;{item.label}&quot;? This action cannot be undone.</span>
)}
</AlertDialogDescription>