Skip to content

Commit eea25ec

Browse files
committed
feat: integrate TagMultiSelect with AddTaskDialog
1 parent 1465795 commit eea25ec

3 files changed

Lines changed: 10 additions & 54 deletions

File tree

frontend/src/components/HomeComponents/Tasks/AddTaskDialog.tsx

Lines changed: 7 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,18 @@ import {
2424
} from '@/components/ui/select';
2525
import { AddTaskDialogProps } from '@/components/utils/types';
2626
import { format } from 'date-fns';
27+
import { TagMultiSelect } from './TagMultiSelect';
2728

2829
export const AddTaskdialog = ({
2930
isOpen,
3031
setIsOpen,
3132
newTask,
3233
setNewTask,
33-
tagInput,
34-
setTagInput,
3534
onSubmit,
3635
isCreatingNewProject,
3736
setIsCreatingNewProject,
3837
uniqueProjects = [],
38+
uniqueTags = [],
3939
allTasks = [],
4040
}: AddTaskDialogProps) => {
4141
const [annotationInput, setAnnotationInput] = useState('');
@@ -102,20 +102,6 @@ export const AddTaskdialog = ({
102102
});
103103
};
104104

105-
const handleAddTag = () => {
106-
if (tagInput && !newTask.tags.includes(tagInput, 0)) {
107-
setNewTask({ ...newTask, tags: [...newTask.tags, tagInput] });
108-
setTagInput('');
109-
}
110-
};
111-
112-
const handleRemoveTag = (tagToRemove: string) => {
113-
setNewTask({
114-
...newTask,
115-
tags: newTask.tags.filter((tag) => tag !== tagToRemove),
116-
});
117-
};
118-
119105
return (
120106
<Dialog open={isOpen} onOpenChange={setIsOpen}>
121107
<DialogTrigger asChild>
@@ -417,40 +403,14 @@ export const AddTaskdialog = ({
417403
Tags
418404
</Label>
419405
<div className="col-span-6">
420-
<Input
421-
id="tags"
422-
name="tags"
423-
placeholder="Add a tag"
424-
value={tagInput}
425-
onChange={(e) => setTagInput(e.target.value)}
426-
onKeyDown={(e) => e.key === 'Enter' && handleAddTag()}
427-
required
428-
className="col-span-6"
406+
<TagMultiSelect
407+
availableTags={uniqueTags}
408+
selectedTags={newTask.tags}
409+
onTagsChange={(tags) => setNewTask({ ...newTask, tags })}
410+
placeholder="Select or create tags"
429411
/>
430412
</div>
431413
</div>
432-
433-
<div className="mt-2">
434-
{newTask.tags.length > 0 && (
435-
<div className="grid grid-cols-4 items-center">
436-
<div> </div>
437-
<div className="flex flex-wrap gap-2 col-span-3">
438-
{newTask.tags.map((tag, index) => (
439-
<Badge key={index}>
440-
<span>{tag}</span>
441-
<button
442-
type="button"
443-
className="ml-2 text-red-500"
444-
onClick={() => handleRemoveTag(tag)}
445-
>
446-
447-
</button>
448-
</Badge>
449-
))}
450-
</div>
451-
</div>
452-
)}
453-
</div>
454414
<div className="grid grid-cols-8 items-center gap-4">
455415
<Label htmlFor="annotations" className="text-right col-span-2">
456416
Annotation

frontend/src/components/HomeComponents/Tasks/Tasks.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ export const Tasks = (
105105
const [isCreatingNewProject, setIsCreatingNewProject] = useState(false);
106106
const [isAddTaskOpen, setIsAddTaskOpen] = useState(false);
107107
const [_isDialogOpen, setIsDialogOpen] = useState(false);
108-
const [tagInput, setTagInput] = useState('');
109108
const [_selectedTask, setSelectedTask] = useState<Task | null>(null);
110109
const [editedTags, setEditedTags] = useState<string[]>(
111110
_selectedTask?.tags || []
@@ -1123,12 +1122,11 @@ export const Tasks = (
11231122
setIsOpen={setIsAddTaskOpen}
11241123
newTask={newTask}
11251124
setNewTask={setNewTask}
1126-
tagInput={tagInput}
1127-
setTagInput={setTagInput}
11281125
onSubmit={handleAddTask}
11291126
isCreatingNewProject={isCreatingNewProject}
11301127
setIsCreatingNewProject={setIsCreatingNewProject}
11311128
uniqueProjects={uniqueProjects}
1129+
uniqueTags={uniqueTags}
11321130
allTasks={tasks}
11331131
/>
11341132
</div>
@@ -1433,12 +1431,11 @@ export const Tasks = (
14331431
setIsOpen={setIsAddTaskOpen}
14341432
newTask={newTask}
14351433
setNewTask={setNewTask}
1436-
tagInput={tagInput}
1437-
setTagInput={setTagInput}
14381434
onSubmit={handleAddTask}
14391435
isCreatingNewProject={isCreatingNewProject}
14401436
setIsCreatingNewProject={setIsCreatingNewProject}
14411437
uniqueProjects={uniqueProjects}
1438+
uniqueTags={uniqueTags}
14421439
allTasks={tasks}
14431440
/>
14441441
</div>

frontend/src/components/utils/types.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,11 @@ export interface AddTaskDialogProps {
119119
setIsOpen: (value: boolean) => void;
120120
newTask: TaskFormData;
121121
setNewTask: (task: TaskFormData) => void;
122-
tagInput: string;
123-
setTagInput: (value: string) => void;
124122
onSubmit: (task: TaskFormData) => void;
125123
isCreatingNewProject: boolean;
126124
setIsCreatingNewProject: (value: boolean) => void;
127125
uniqueProjects: string[];
126+
uniqueTags: string[];
128127
allTasks?: Task[];
129128
}
130129

0 commit comments

Comments
 (0)