diff --git a/client/src/components/TaskRegistry.tsx b/client/src/components/TaskRegistry.tsx
index 056ef69..009a54e 100644
--- a/client/src/components/TaskRegistry.tsx
+++ b/client/src/components/TaskRegistry.tsx
@@ -7,7 +7,7 @@ import { Badge } from '@/components/ui/badge';
import { Checkbox } from '@/components/ui/checkbox';
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog';
import { Label } from '@/components/ui/label';
-import { Settings2, Calendar, User, Search, X as XIcon, Paperclip, AlertCircle, CheckCircle2, GripVertical } from 'lucide-react';
+import { Settings2, Calendar, User, Search, X as XIcon, Paperclip, AlertCircle, CheckCircle2, GripVertical, Trash2 } from 'lucide-react';
import { type ColumnSort } from '@/hooks/useColumnFilters';
import { resolveFieldDisplayValue, type FieldDisplayContext } from '@/lib/fieldDisplay';
import { statusBadgeStyle } from '@/lib/statusColor';
@@ -121,6 +121,9 @@ interface TaskRegistryProps {
onToggleSelectAll?: () => void;
onSelectRange?: (taskIds: number[]) => void;
onSetAnchorTaskId?: (taskId: number | null) => void;
+ // Bulk actions (тулбар заменяется панелью на месте — без сдвига layout)
+ onClearSelection?: () => void;
+ onRequestBulkDelete?: () => void;
}
// Отображает значение поля с учётом типа
@@ -258,7 +261,7 @@ const REGISTRY_INLINE_TYPES = new Set([
// Типы полей, которые переключаются по одиночному клику
const REGISTRY_QUICK_TOGGLE_TYPES = new Set(['checkbox', 'toggle']);
-const TaskRegistry = ({ tasks, relatedTaskTitles = {}, fields, statuses, users = [], roles = [], formId, onFilteredCountChange, onTaskClick, filters, sort, setFilter, clearFilter, clearAll, setSort, clearSort, hasActiveFilters, searches, onAddSearch, onRemoveSearch, isAdmin, selectedTaskIds, anchorTaskId, onToggleSelected, onToggleSelectAll, onSelectRange, onSetAnchorTaskId }: TaskRegistryProps) => {
+const TaskRegistry = ({ tasks, relatedTaskTitles = {}, fields, statuses, users = [], roles = [], formId, onFilteredCountChange, onTaskClick, filters, sort, setFilter, clearFilter, clearAll, setSort, clearSort, hasActiveFilters, searches, onAddSearch, onRemoveSearch, isAdmin, selectedTaskIds, anchorTaskId, onToggleSelected, onToggleSelectAll, onSelectRange, onSetAnchorTaskId, onClearSelection, onRequestBulkDelete }: TaskRegistryProps) => {
const { toast } = useToast();
// Текущая редактируемая ячейка: { taskId, columnKey }
@@ -683,8 +686,30 @@ const TaskRegistry = ({ tasks, relatedTaskTitles = {}, fields, statuses, users =
return (
- {/* Панель управления + активные фильтры (один ряд) */}
+ {/* Панель управления + активные фильтры (один ряд); при выделении — bulk-панель на том же месте */}