1- import  React ,  {  useState  }  from  "react" ; 
1+ import  React ,  {  useCallback ,   useState  }  from  "react" ; 
22import  {  Reorder  }  from  "framer-motion" ; 
33import  {  Container  }  from  "@material-ui/core" ; 
44
@@ -15,11 +15,13 @@ export interface TodoAppProps {
1515function  TodoApp ( props : TodoAppProps )  { 
1616  const  {  defaultItems =  [ ] ,  onChange }  =  props ; 
1717  const  [ items ,  setItems ]  =  useState < TodoItem [ ] > ( defaultItems ) ; 
18+   const  [ focus ,  setFocus ]  =  useState ( - 1 ) ; 
1819
1920  const  setItemsCallback  =  ( updatedItems : TodoItem [ ] )  =>  { 
2021    setItems ( updatedItems ) ; 
2122    onChange ( updatedItems ) ; 
2223  } ; 
24+ 
2325  const  addItem  =  ( item : TodoItem  |  TodoItem [ ] )  =>  { 
2426    const  itemsCopy  =  [ ...items ] ; 
2527    if  ( Array . isArray ( item ) )  { 
@@ -32,6 +34,11 @@ function TodoApp(props: TodoAppProps) {
3234      setItemsCallback ( [ ...itemsCopy ] ) ; 
3335    } 
3436  } ; 
37+ 
38+   const  changeFocus  =  useCallback ( ( focusIndex : number )  =>  { 
39+     setFocus ( focusIndex ) ; 
40+   } , [ ] ) 
41+ 
3542  const  completedItems  =  items . filter ( ( item : TodoItem )  =>  item . isComplete ) ; 
3643  const  todoItems  =  items . filter ( ( item : TodoItem )  =>  ! item . isComplete ) ; 
3744
@@ -51,7 +58,7 @@ function TodoApp(props: TodoAppProps) {
5158
5259  return  ( 
5360    < Container > 
54-       < Form  addItem = { addItem }  /> 
61+       < Form  addItem = { addItem }  changeFocus = { changeFocus }   /> 
5562      < Reorder . Group 
5663        axis = "y" 
5764        values = { items . map ( ( item )  =>  item . uuid ) } 
@@ -65,6 +72,8 @@ function TodoApp(props: TodoAppProps) {
6572              addItem = { addItem } 
6673              itemIndex = { index } 
6774              setItemsCallback = { setItemsCallback } 
75+               changeFocus = { changeFocus } 
76+               focus = { focus } 
6877            /> 
6978          ) ; 
7079        } ) } 
0 commit comments