Skip to content

Commit f6c346c

Browse files
committed
feat: integrate TagMultiSelect with AddTaskDialog
1 parent 9a6e0b7 commit f6c346c

3 files changed

Lines changed: 11 additions & 54 deletions

File tree

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

Lines changed: 8 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,19 @@ import { format } from 'date-fns';
3131
import { ADDTASKDIALOG_FIELDS } from './constants';
3232
import { useAddTaskDialogKeyboard } from './UseTaskDialogKeyboard';
3333
import { useAddTaskDialogFocusMap } from './UseTaskDialogFocusMap';
34+
import { TagMultiSelect } from './TagMultiSelect';
3435

3536
export const AddTaskdialog = ({
3637
onOpenChange,
3738
isOpen,
3839
setIsOpen,
3940
newTask,
4041
setNewTask,
41-
tagInput,
42-
setTagInput,
4342
onSubmit,
4443
isCreatingNewProject,
4544
setIsCreatingNewProject,
4645
uniqueProjects = [],
46+
uniqueTags = [],
4747
allTasks = [],
4848
}: AddTaskDialogProps) => {
4949
const [annotationInput, setAnnotationInput] = useState('');
@@ -164,20 +164,6 @@ export const AddTaskdialog = ({
164164
});
165165
};
166166

167-
const handleAddTag = () => {
168-
if (tagInput && !newTask.tags.includes(tagInput, 0)) {
169-
setNewTask({ ...newTask, tags: [...newTask.tags, tagInput] });
170-
setTagInput('');
171-
}
172-
};
173-
174-
const handleRemoveTag = (tagToRemove: string) => {
175-
setNewTask({
176-
...newTask,
177-
tags: newTask.tags.filter((tag) => tag !== tagToRemove),
178-
});
179-
};
180-
181167
return (
182168
<Dialog open={isOpen} onOpenChange={handleDialogOpenChange}>
183169
<DialogTrigger asChild>
@@ -523,44 +509,19 @@ export const AddTaskdialog = ({
523509
<div
524510
className={`grid grid-cols-4 items-center gap-4 border-b py-6 px-2 w-full ${focusedField === 'tags' ? 'dark:bg-muted/50 bg-black/15' : ''} `}
525511
>
526-
<Label htmlFor="tags" className="text-left col-spa w-[77px]">
512+
<Label htmlFor="tags" className="text-left col-span-1 w-[77px]">
527513
Tags
528514
</Label>
529515
<div className="col-span-3">
530-
<Input
531-
ref={(element) => (inputRefs.current.tags = element)}
532-
id="tags"
533-
name="tags"
534-
placeholder="Add a tag"
535-
value={tagInput}
536-
onChange={(e) => setTagInput(e.target.value)}
537-
onKeyDown={(e) => e.key === 'Enter' && handleAddTag()}
538-
required
539-
className="col-span-6"
516+
<TagMultiSelect
517+
availableTags={uniqueTags}
518+
selectedTags={newTask.tags}
519+
onTagsChange={(tags: string[]) => setNewTask({ ...newTask, tags })}
520+
placeholder="Select or create tags"
540521
/>
541522
</div>
542523
</div>
543524

544-
{newTask.tags.length > 0 && (
545-
<div className="grid grid-cols-4 items-center">
546-
<div> </div>
547-
<div className="flex flex-wrap gap-2 col-span-3">
548-
{newTask.tags.map((tag, index) => (
549-
<Badge key={index}>
550-
<span>{tag}</span>
551-
<button
552-
type="button"
553-
className="ml-2 text-red-500"
554-
onClick={() => handleRemoveTag(tag)}
555-
>
556-
557-
</button>
558-
</Badge>
559-
))}
560-
</div>
561-
</div>
562-
)}
563-
564525
<div
565526
className={`grid grid-cols-4 items-center gap-4 border-b py-6 px-2 w-full ${focusedField === 'annotations' ? 'dark:bg-muted/50 bg-black/15' : ''} `}
566527
>

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 || []
@@ -1124,12 +1123,11 @@ export const Tasks = (
11241123
setIsOpen={setIsAddTaskOpen}
11251124
newTask={newTask}
11261125
setNewTask={setNewTask}
1127-
tagInput={tagInput}
1128-
setTagInput={setTagInput}
11291126
onSubmit={handleAddTask}
11301127
isCreatingNewProject={isCreatingNewProject}
11311128
setIsCreatingNewProject={setIsCreatingNewProject}
11321129
uniqueProjects={uniqueProjects}
1130+
uniqueTags={uniqueTags}
11331131
allTasks={tasks}
11341132
/>
11351133
</div>
@@ -1435,12 +1433,11 @@ export const Tasks = (
14351433
setIsOpen={setIsAddTaskOpen}
14361434
newTask={newTask}
14371435
setNewTask={setNewTask}
1438-
tagInput={tagInput}
1439-
setTagInput={setTagInput}
14401436
onSubmit={handleAddTask}
14411437
isCreatingNewProject={isCreatingNewProject}
14421438
setIsCreatingNewProject={setIsCreatingNewProject}
14431439
uniqueProjects={uniqueProjects}
1440+
uniqueTags={uniqueTags}
14441441
allTasks={tasks}
14451442
/>
14461443
</div>

frontend/src/components/utils/types.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,11 @@ export interface AddTaskDialogProps {
123123
setIsOpen: (value: boolean) => void;
124124
newTask: TaskFormData;
125125
setNewTask: (task: TaskFormData) => void;
126-
tagInput: string;
127-
setTagInput: (value: string) => void;
128126
onSubmit: (task: TaskFormData) => void;
129127
isCreatingNewProject: boolean;
130128
setIsCreatingNewProject: (value: boolean) => void;
131129
uniqueProjects: string[];
130+
uniqueTags: string[];
132131
allTasks?: Task[];
133132
}
134133

0 commit comments

Comments
 (0)