@@ -35,6 +35,11 @@ export type HandleTaskPhaseChangeProps = {
3535 setActionSelected : SetActionSelected ;
3636 setPhaseId : SetPhaseId ;
3737 setSelectedSuggestedTags : React . Dispatch < React . SetStateAction < string [ ] > > ;
38+ activities : ActivityTypeEnum [ ] ;
39+ focusActivity : ( ) => void ;
40+ activityType : ActivityTypeEnum | undefined ;
41+ constants : Constants ;
42+ setFieldTouched : SetFieldTouched ;
3843} ;
3944
4045export type HandleTaskActionChangeProps = {
@@ -60,9 +65,17 @@ export const handleTaskPhaseChange = ({
6065 setActionSelected,
6166 setPhaseId,
6267 setSelectedSuggestedTags,
68+ activities,
69+ focusActivity,
70+ activityType,
71+ constants,
72+ setFieldTouched,
6373} : HandleTaskPhaseChangeProps ) : void => {
6474 setFieldValue ( 'taskPhase' , phase ) ;
65- setFieldValue ( 'activityType' , '' ) ;
75+ const activitySelection = activities . find ( ( activity ) =>
76+ activityType ?. includes ( activity . replace ( phase + '_' , '' ) ) ,
77+ ) as ActivityTypeEnum ;
78+ setFieldValue ( 'activityType' , activitySelection || '' ) ;
6679 setFieldValue ( 'subject' , '' ) ;
6780 setFieldValue ( 'displayResult' , null ) ;
6881 setFieldValue ( 'result' , null ) ;
@@ -71,6 +84,10 @@ export const handleTaskPhaseChange = ({
7184 setActionSelected ( null ) ;
7285 setPhaseId ( phase ) ;
7386 setSelectedSuggestedTags ( [ ] ) ;
87+ setTaskName ( constants , activitySelection , setFieldValue , setFieldTouched ) ;
88+ if ( ! activitySelection ) {
89+ focusActivity ( ) ;
90+ }
7491} ;
7592
7693export const handleTaskActionChange = ( {
@@ -82,23 +99,7 @@ export const handleTaskActionChange = ({
8299} : HandleTaskActionChangeProps ) : void => {
83100 setFieldValue ( 'activityType' , activityType ) ;
84101 setActionSelected ( activityType || null ) ;
85- const activity = constants ?. activities ?. find (
86- ( activity ) => activity . id === activityType ,
87- ) ;
88- if ( activity ) {
89- setFieldValue (
90- 'subject' ,
91- activity ?. name
92- ? activity . name
93- . split ( ' ' )
94- . map ( ( word ) => {
95- return word [ 0 ] . toUpperCase ( ) + word . substring ( 1 ) ;
96- } )
97- . join ( ' ' )
98- : '' ,
99- ) ;
100- }
101- setTimeout ( ( ) => setFieldTouched ( 'activityType' , true ) ) ;
102+ setTaskName ( constants , activityType , setFieldValue , setFieldTouched ) ;
102103} ;
103104
104105export const handleResultChange = ( {
@@ -189,3 +190,28 @@ export const extractSuggestedTags = (
189190 } ) ;
190191 return { additionalTags, suggestedTags } ;
191192} ;
193+
194+ const setTaskName = (
195+ constants : Constants ,
196+ activityType : ActivityTypeEnum | null ,
197+ setFieldValue : SetFieldValue ,
198+ setFieldTouched : SetFieldTouched ,
199+ ) => {
200+ const activity = constants ?. activities ?. find (
201+ ( activity ) => activity . id === activityType ,
202+ ) ;
203+ if ( activity ) {
204+ setFieldValue (
205+ 'subject' ,
206+ activity ?. name
207+ ? activity . name
208+ . split ( ' ' )
209+ . map ( ( word ) => {
210+ return word [ 0 ] . toUpperCase ( ) + word . substring ( 1 ) ;
211+ } )
212+ . join ( ' ' )
213+ : '' ,
214+ ) ;
215+ }
216+ setTimeout ( ( ) => setFieldTouched ( 'activityType' , true ) ) ;
217+ } ;
0 commit comments