@@ -17,6 +17,10 @@ import {
17
17
SelectValidator
18
18
} from 'react-material-ui-form-validator' ;
19
19
20
+ import { getStates , getDistrict , getColleges } from './helper' ;
21
+
22
+ // import axios from 'axios';
23
+
20
24
const useStyles = makeStyles ( theme => ( {
21
25
root : {
22
26
width : '100%'
@@ -308,6 +312,9 @@ function FormEducationInfo({
308
312
} ) {
309
313
const classes = useStyles ( ) ;
310
314
const [ formData , updateFormData ] = useState ( data . education ) ;
315
+ const [ districtToCollegePair , updateDistrictToCollegePair ] = useState ( { } ) ;
316
+ const [ districts , updateDistricts ] = useState ( [ ] ) ;
317
+ const [ collegeList , updateCollege ] = useState ( [ ] ) ;
311
318
312
319
const handleChange = event => {
313
320
updateFormData ( {
@@ -339,9 +346,40 @@ function FormEducationInfo({
339
346
setActiveStep ( 2 ) ;
340
347
} ;
341
348
349
+ const handleStateFieldChange = event => {
350
+ updateFormData ( {
351
+ ...formData ,
352
+ [ event . target . name ] : event . target . value
353
+ } ) ;
354
+ updateDistrictToCollegePair ( getDistrict ( event . target . value ) ) ;
355
+ } ;
356
+
357
+ const handleDistrictFieldChange = event => {
358
+ updateFormData ( {
359
+ ...formData ,
360
+ [ event . target . name ] : event . target . value
361
+ } ) ;
362
+ updateCollege ( getColleges ( districtToCollegePair , event . target . value ) ) ;
363
+ } ;
364
+
365
+ const handleDistrictFocus = ( ) => {
366
+ if ( formData . state != undefined ) {
367
+ updateDistricts ( Object . keys ( districtToCollegePair ) ) ;
368
+ }
369
+ } ;
370
+
371
+ function notIndia ( ) {
372
+ return (
373
+ formData . country === undefined ||
374
+ formData . country . trim ( ) . toLowerCase ( ) !== 'india'
375
+ ) ;
376
+ }
377
+
342
378
const years = Array ( 25 )
343
- . fill ( 2000 )
344
- . map ( ( x , y ) => x + y ) ;
379
+ . fill ( 2024 )
380
+ . map ( ( x , y ) => x - y ) ;
381
+
382
+ const states = getStates ( ) ;
345
383
346
384
return (
347
385
< ValidatorForm onSubmit = { handleSubmit } >
@@ -361,7 +399,6 @@ function FormEducationInfo({
361
399
return < MenuItem value = { year } > { year } </ MenuItem > ;
362
400
} ) }
363
401
</ SelectValidator >
364
-
365
402
< TextValidator
366
403
key = "college"
367
404
className = { classes . textField }
@@ -374,32 +411,114 @@ function FormEducationInfo({
374
411
validators = { [ 'required' ] }
375
412
errorMessages = { [ 'College is a required field' ] }
376
413
/>
414
+ { notIndia ( ) ? (
415
+ < TextValidator
416
+ key = "state"
417
+ className = { classes . textField }
418
+ autoComplete = "true"
419
+ label = "State"
420
+ variant = "outlined"
421
+ value = { formData . state }
422
+ fullWidth
423
+ name = "state"
424
+ onChange = { handleChange }
425
+ validators = { [ 'required' ] }
426
+ errorMessages = { [ 'State is a required field' ] }
427
+ />
428
+ ) : (
429
+ < SelectValidator
430
+ key = "state"
431
+ className = { classes . textField }
432
+ autoComplete = "true"
433
+ label = "State"
434
+ variant = "outlined"
435
+ value = { formData . state }
436
+ fullWidth
437
+ name = "state"
438
+ onChange = { handleStateFieldChange }
439
+ validators = { [ 'required' ] }
440
+ errorMessages = { [ 'State is a required field' ] }
441
+ >
442
+ { states . sort ( ) . map ( state => {
443
+ return < MenuItem value = { state } > { state } </ MenuItem > ;
444
+ } ) }
445
+ </ SelectValidator >
446
+ ) }
377
447
378
- < TextValidator
379
- key = "state"
380
- className = { classes . textField }
381
- label = "State"
382
- variant = "outlined"
383
- value = { formData . state }
384
- fullWidth
385
- name = "state"
386
- onChange = { handleChange }
387
- validators = { [ 'required' ] }
388
- errorMessages = { [ 'State is a required field' ] }
389
- />
448
+ { notIndia ( ) ? (
449
+ < TextValidator
450
+ key = "district"
451
+ className = { classes . textField }
452
+ autoComplete = "true"
453
+ label = "District"
454
+ variant = "outlined"
455
+ value = { formData . district }
456
+ fullWidth
457
+ name = "district"
458
+ onChange = { handleChange }
459
+ validators = { [ 'required' ] }
460
+ errorMessages = { [ 'State is a required field' ] }
461
+ />
462
+ ) : (
463
+ < SelectValidator
464
+ key = "district"
465
+ className = { classes . textField }
466
+ autoComplete = "true"
467
+ label = "District"
468
+ variant = "outlined"
469
+ value = { formData . district }
470
+ fullWidth
471
+ onFocus = { handleDistrictFocus }
472
+ name = "district"
473
+ onChange = { handleDistrictFieldChange }
474
+ validators = { [ 'required' ] }
475
+ errorMessages = { [ 'State is a required field' ] }
476
+ >
477
+ { formData . state === undefined ? (
478
+ < MenuItem value = "undefined" > { 'Select State' } </ MenuItem >
479
+ ) : (
480
+ districts . sort ( ) . map ( dis => {
481
+ return < MenuItem value = { dis } > { dis } </ MenuItem > ;
482
+ } )
483
+ ) }
484
+ </ SelectValidator >
485
+ ) }
390
486
391
- < TextValidator
392
- key = "country"
393
- className = { classes . textField }
394
- label = "Country"
395
- variant = "outlined"
396
- value = { formData . country }
397
- fullWidth
398
- name = "country"
399
- onChange = { handleChange }
400
- validators = { [ 'required' ] }
401
- errorMessages = { [ 'Country is a required field' ] }
402
- />
487
+ { notIndia ( ) ? (
488
+ < TextValidator
489
+ key = "college"
490
+ className = { classes . textField }
491
+ label = "College"
492
+ variant = "outlined"
493
+ value = { formData . college }
494
+ onChange = { handleChange }
495
+ fullWidth
496
+ name = "college"
497
+ validators = { [ 'required' ] }
498
+ errorMessages = { [ 'College is a required field' ] }
499
+ />
500
+ ) : (
501
+ < SelectValidator
502
+ key = "college"
503
+ className = { classes . textField }
504
+ label = "College"
505
+ variant = "outlined"
506
+ value = { formData . college }
507
+ fullWidth
508
+ onChange = { handleChange }
509
+ name = "college"
510
+ validators = { [ 'required' ] }
511
+ errorMessages = { [ 'College is a required field' ] }
512
+ >
513
+ { formData . district === undefined ? (
514
+ < MenuItem value = "undefined" > { 'Select District' } </ MenuItem >
515
+ ) : (
516
+ collegeList . sort ( ) . map ( college => {
517
+ return < MenuItem value = { college } > { college } </ MenuItem > ;
518
+ } )
519
+ ) }
520
+ </ SelectValidator >
521
+ ) }
403
522
404
523
< Button variant = "outlined" onClick = { handlePrev } color = "secondary" >
405
524
Prev
0 commit comments