11import type { IOmnichannelRoom } from '@rocket.chat/core-typings' ;
22import {
3- Field ,
43 Button ,
5- TextInput ,
64 Modal ,
75 Box ,
8- FieldGroup ,
9- FieldLabel ,
10- FieldRow ,
11- FieldError ,
126 ModalHeader ,
137 ModalIcon ,
148 ModalTitle ,
@@ -17,8 +11,9 @@ import {
1711 ModalFooter ,
1812 ModalFooterControllers ,
1913} from '@rocket.chat/fuselage' ;
14+ import { Field , FieldGroup , FieldLabel , FieldRow , FieldError , TextInput } from '@rocket.chat/fuselage-forms' ;
2015import { useCallback , useEffect } from 'react' ;
21- import { useForm } from 'react-hook-form' ;
16+ import { useForm , Controller } from 'react-hook-form' ;
2217import { useTranslation } from 'react-i18next' ;
2318
2419type TranscriptModalProps = {
@@ -34,7 +29,7 @@ const TranscriptModal = ({ email: emailDefault = '', room, onRequest, onSend, on
3429 const { t } = useTranslation ( ) ;
3530
3631 const {
37- register ,
32+ control ,
3833 handleSubmit,
3934 setValue,
4035 setFocus,
@@ -72,8 +67,6 @@ const TranscriptModal = ({ email: emailDefault = '', room, onRequest, onSend, on
7267 }
7368 } , [ setValue , transcriptRequest ] ) ;
7469
75- // const canSubmit = isValid && Boolean(watch('subject'));
76-
7770 return (
7871 < Modal open wrapperFunction = { ( props ) => < Box is = 'form' onSubmit = { handleSubmit ( submit ) } { ...props } /> } { ...props } >
7972 < ModalHeader >
@@ -87,23 +80,33 @@ const TranscriptModal = ({ email: emailDefault = '', room, onRequest, onSend, on
8780 < Field >
8881 < FieldLabel > { t ( 'Email' ) } *</ FieldLabel >
8982 < FieldRow >
90- < TextInput
91- disabled = { ! ! emailDefault || ! ! transcriptRequest }
92- error = { errors . email ?. message }
93- flexGrow = { 1 }
94- { ...register ( 'email' , { required : t ( 'Required_field' , { field : t ( 'Email' ) } ) } ) }
83+ < Controller
84+ name = 'email'
85+ control = { control }
86+ rules = { { required : t ( 'Required_field' , { field : t ( 'Email' ) } ) } }
87+ render = { ( { field } ) => (
88+ < TextInput
89+ { ...field }
90+ disabled = { ! ! emailDefault || ! ! transcriptRequest }
91+ error = { errors . email ?. message }
92+ flexGrow = { 1 }
93+ required = { true }
94+ />
95+ ) }
9596 />
9697 </ FieldRow >
97- < FieldError > { errors . email ?. message } </ FieldError >
98+ { errors . email && < FieldError > { errors . email ?. message } </ FieldError > }
9899 </ Field >
99100 < Field >
100101 < FieldLabel > { t ( 'Subject' ) } *</ FieldLabel >
101102 < FieldRow >
102- < TextInput
103- disabled = { ! ! transcriptRequest }
104- error = { errors . subject ?. message }
105- flexGrow = { 1 }
106- { ...register ( 'subject' , { required : t ( 'Required_field' , { field : t ( 'Subject' ) } ) } ) }
103+ < Controller
104+ name = 'subject'
105+ control = { control }
106+ rules = { { required : t ( 'Required_field' , { field : t ( 'Subject' ) } ) } }
107+ render = { ( { field } ) => (
108+ < TextInput { ...field } disabled = { ! ! transcriptRequest } error = { errors . subject ?. message } flexGrow = { 1 } required = { true } />
109+ ) }
107110 />
108111 </ FieldRow >
109112 < FieldError > { errors . subject ?. message } </ FieldError >
@@ -119,12 +122,12 @@ const TranscriptModal = ({ email: emailDefault = '', room, onRequest, onSend, on
119122 </ Button >
120123 ) }
121124 { roomOpen && ! transcriptRequest && (
122- < Button aria-label = 'request-button' disabled = { isSubmitting } loading = { isSubmitting } primary type = 'submit' >
125+ < Button disabled = { isSubmitting } loading = { isSubmitting } primary type = 'submit' >
123126 { t ( 'Request' ) }
124127 </ Button >
125128 ) }
126129 { ! roomOpen && (
127- < Button aria-label = 'send-button' disabled = { isSubmitting } loading = { isSubmitting } primary type = 'submit' >
130+ < Button disabled = { isSubmitting } loading = { isSubmitting } primary type = 'submit' >
128131 { t ( 'Send' ) }
129132 </ Button >
130133 ) }
0 commit comments