@@ -98,6 +98,7 @@ const VALIDATION_MESSAGES = {
9898 MAX_VALUE : ( max : number ) => `Value must not exceed ${ max } ` ,
9999 INVALID_YEAR : "Please enter a valid year" ,
100100 INVALID_SIZE : "Please enter a valid company size" ,
101+ DOMAINS_REQUIRED : "Please select at least one domain" ,
101102} ;
102103
103104interface ValidationErrors {
@@ -183,6 +184,14 @@ export default function RecruiterSignup() {
183184 loadData ( ) ;
184185 } , [ ] ) ;
185186
187+ // Validation function for domains array
188+ const validateDomainsField = ( domains : string [ ] ) : string => {
189+ if ( createCompany && ( ! domains || domains . length === 0 ) ) {
190+ return VALIDATION_MESSAGES . DOMAINS_REQUIRED ;
191+ }
192+ return "" ;
193+ } ;
194+
186195 // Real-time validation functions
187196 const validateField = ( field : string , value : string ) : string => {
188197 if ( ! value . trim ( ) && isRequiredField ( field ) ) {
@@ -291,7 +300,7 @@ export default function RecruiterSignup() {
291300 const isRequiredField = ( field : string ) : boolean => {
292301 const requiredPersonalFields = [ "name" , "email" , "contact" , "designation" ] ;
293302 const requiredCompanyFields = createCompany
294- ? [ "companyName" , "category" , "line1" , "city" , "state" , "country" ]
303+ ? [ "companyName" , "category" , "line1" , "city" , "state" , "country" , "domains" ]
295304 : [ "companyId" ] ;
296305
297306 return (
@@ -324,6 +333,11 @@ export default function RecruiterSignup() {
324333
325334 const handleDomainsChange = ( value : string [ ] ) => {
326335 setCompanyInfo ( ( prev ) => ( { ...prev , domains : value } ) ) ;
336+
337+ // Real-time validation for domains
338+ const error = validateDomainsField ( value ) ;
339+ setValidationErrors ( ( prev ) => ( { ...prev , domains : error } ) ) ;
340+ setTouched ( ( prev ) => ( { ...prev , domains : true } ) ) ;
327341 } ;
328342
329343 const handleAddressChange = ( field : string , value : string ) => {
@@ -381,6 +395,13 @@ export default function RecruiterSignup() {
381395 isValid = false ;
382396 }
383397 } ) ;
398+
399+ // Validate domains
400+ const domainsError = validateDomainsField ( companyInfo . domains ) ;
401+ if ( domainsError ) {
402+ errors . domains = domainsError ;
403+ isValid = false ;
404+ }
384405 } else {
385406 // Validate company selection
386407 if ( ! companyInfo . companyId ) {
@@ -951,13 +972,20 @@ export default function RecruiterSignup() {
951972 </ div >
952973 < div className = "space-y-2" >
953974 < Label className = "text-sm font-medium text-gray-700" >
954- Domains
975+ Domains *
955976 </ Label >
956977 < MultiSelect
957978 givenOptions = { jaf ?. domains || [ ] }
958979 formData = { companyInfo . domains }
959980 setFormData = { handleDomainsChange }
981+ hasError = { isFieldInvalid ( "domains" ) }
960982 />
983+ { getFieldError ( "domains" ) && (
984+ < div className = "flex items-center gap-1 text-red-500 text-sm" >
985+ < AlertCircle className = "h-3 w-3" />
986+ { getFieldError ( "domains" ) }
987+ </ div >
988+ ) }
961989 </ div >
962990 </ div >
963991
0 commit comments