5
5
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
6
*/
7
7
8
- import { useCallback } from 'react' ;
8
+ import { useCallback , useMemo } from 'react' ;
9
9
import { FieldValues , Resolver , useForm } from 'react-hook-form' ;
10
10
import { yupResolver } from '@hookform/resolvers/yup' ;
11
11
import { UUID } from 'crypto' ;
@@ -28,7 +28,6 @@ import { FILTER_EQUIPMENTS_ATTRIBUTES } from './explicitNaming/ExplicitNamingFil
28
28
const emptyFormData = {
29
29
[ FieldConstants . NAME ] : '' ,
30
30
[ FieldConstants . DESCRIPTION ] : '' ,
31
- [ FieldConstants . FILTER_TYPE ] : FilterType . EXPERT . id ,
32
31
[ FieldConstants . EQUIPMENT_TYPE ] : null ,
33
32
...getExplicitNamingFilterEmptyFormData ( ) ,
34
33
...getExpertFilterEmptyFormData ( ) ,
@@ -40,7 +39,6 @@ const formSchema = yup
40
39
. shape ( {
41
40
[ FieldConstants . NAME ] : yup . string ( ) . trim ( ) . required ( 'nameEmpty' ) ,
42
41
[ FieldConstants . DESCRIPTION ] : yup . string ( ) . max ( MAX_CHAR_DESCRIPTION , 'descriptionLimitError' ) ,
43
- [ FieldConstants . FILTER_TYPE ] : yup . string ( ) . required ( ) ,
44
42
[ FieldConstants . EQUIPMENT_TYPE ] : yup . string ( ) . required ( ) ,
45
43
...explicitNamingFilterSchema ,
46
44
...expertFilterSchema ,
@@ -56,6 +54,7 @@ export interface FilterCreationDialogProps {
56
54
id : UUID ;
57
55
equipmentType : string ;
58
56
} ;
57
+ filterType : { id : string ; label : string } ;
59
58
}
60
59
61
60
export function FilterCreationDialog ( {
@@ -64,6 +63,7 @@ export function FilterCreationDialog({
64
63
activeDirectory,
65
64
language,
66
65
sourceFilterForExplicitNamingConversion = undefined ,
66
+ filterType,
67
67
} : FilterCreationDialogProps ) {
68
68
const { snackError } = useSnackMessage ( ) ;
69
69
@@ -81,7 +81,7 @@ export function FilterCreationDialog({
81
81
82
82
const onSubmit = useCallback (
83
83
( filterForm : FieldValues ) => {
84
- if ( filterForm [ FieldConstants . FILTER_TYPE ] === FilterType . EXPLICIT_NAMING . id ) {
84
+ if ( filterType ?. id === FilterType . EXPLICIT_NAMING . id ) {
85
85
saveExplicitNamingFilter (
86
86
filterForm [ FILTER_EQUIPMENTS_ATTRIBUTES ] ,
87
87
true ,
@@ -97,7 +97,7 @@ export function FilterCreationDialog({
97
97
onClose ,
98
98
activeDirectory
99
99
) ;
100
- } else if ( filterForm [ FieldConstants . FILTER_TYPE ] === FilterType . EXPERT . id ) {
100
+ } else if ( filterType ?. id === FilterType . EXPERT . id ) {
101
101
saveExpertFilter (
102
102
null ,
103
103
filterForm [ EXPERT_FILTER_QUERY ] ,
@@ -115,17 +115,25 @@ export function FilterCreationDialog({
115
115
) ;
116
116
}
117
117
} ,
118
- [ activeDirectory , snackError , onClose ]
118
+ [ activeDirectory , snackError , onClose , filterType ]
119
119
) ;
120
-
120
+ const titleId = useMemo ( ( ) => {
121
+ if ( sourceFilterForExplicitNamingConversion ) {
122
+ return 'convertIntoExplicitNamingFilter' ;
123
+ }
124
+ if ( filterType ?. id === FilterType . EXPERT . id ) {
125
+ return 'createNewCriteriaFilter' ;
126
+ }
127
+ return 'createNewExplicitNamingFilter' ;
128
+ } , [ sourceFilterForExplicitNamingConversion , filterType ] ) ;
121
129
return (
122
130
< CustomMuiDialog
123
131
open = { open }
124
132
onClose = { onClose }
125
133
onSave = { onSubmit }
126
134
formSchema = { formSchema }
127
135
formMethods = { formMethods }
128
- titleId = { sourceFilterForExplicitNamingConversion ? 'convertIntoExplicitNamingFilter' : 'createNewFilter' }
136
+ titleId = { titleId }
129
137
removeOptional
130
138
disabledSave = { ! ! nameError || ! ! isValidating }
131
139
language = { language }
@@ -134,6 +142,7 @@ export function FilterCreationDialog({
134
142
< FilterForm
135
143
creation
136
144
activeDirectory = { activeDirectory }
145
+ filterType = { filterType }
137
146
sourceFilterForExplicitNamingConversion = { sourceFilterForExplicitNamingConversion }
138
147
/>
139
148
</ CustomMuiDialog >
0 commit comments