@@ -31,19 +31,19 @@ import { format } from 'date-fns';
3131import { ADDTASKDIALOG_FIELDS } from './constants' ;
3232import { useAddTaskDialogKeyboard } from './UseTaskDialogKeyboard' ;
3333import { useAddTaskDialogFocusMap } from './UseTaskDialogFocusMap' ;
34+ import { TagMultiSelect } from './TagMultiSelect' ;
3435
3536export 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 >
0 commit comments