@@ -340,9 +340,29 @@ const JobDetails = ({
340340 }
341341 help = { toErrorString ( errors . attachments ) }
342342 >
343- < Upload fileList = { fileList } onChange = { handleFileChange } >
343+ < Upload
344+ fileList = { fileList }
345+ onChange = { handleFileChange }
346+ beforeUpload = { ( file ) => {
347+ const isPdf = file . type === "application/pdf" ;
348+ if ( ! isPdf ) {
349+ message . error ( "You can only upload PDF files!" ) ;
350+ return Upload . LIST_IGNORE ;
351+ }
352+ const isLt2M = file . size / 1024 / 1024 <= 2 ;
353+ if ( ! isLt2M ) {
354+ message . error ( "File must be smaller than 2MB!" ) ;
355+ return Upload . LIST_IGNORE ;
356+ }
357+ return true ;
358+ } }
359+ >
344360 < Button icon = { < UploadOutlined /> } > Click to Upload</ Button >
345361 </ Upload >
362+ < ul className = "list-disc text-black opacity-70 text-xs pl-5" >
363+ < li > Accepted file types .pdf</ li >
364+ < li > File size < 2 MB.</ li >
365+ </ ul >
346366 </ Form . Item >
347367 </ Col >
348368 </ Row >
@@ -444,8 +464,6 @@ const JobDetails = ({
444464 < Button type = "dashed" onClick = { ( ) => add ( ) } block >
445465 + Add Test
446466 </ Button >
447-
448-
449467 </ >
450468 ) }
451469 </ Form . List >
@@ -490,8 +508,6 @@ const JobDetails = ({
490508 < Button type = "dashed" onClick = { ( ) => add ( ) } block >
491509 + Add Interview
492510 </ Button >
493-
494-
495511 </ >
496512 ) }
497513 </ Form . List >
@@ -632,24 +648,102 @@ const JobDetails = ({
632648 < Row gutter = { 24 } >
633649 < Col span = { 12 } >
634650 < Form . Item
635- label = "Tenth Marks"
651+ label = "Tenth Marks (%) "
636652 name = { [ field . name , "tenthMarks" ] }
653+ rules = { [
654+ {
655+ validator : ( _ , value ) => {
656+ if ( value === undefined || value === "" )
657+ return Promise . resolve ( ) ;
658+ const strValue = String ( value ) . replace ( / \s + / g, "" ) ;
659+ if ( ! / ^ \d * \. ? \d * $ / . test ( strValue ) ) {
660+ return Promise . reject (
661+ "Please enter a positive decimal value" ,
662+ ) ;
663+ }
664+ const num = parseFloat ( strValue ) ;
665+ if ( isNaN ( num ) || num > 100 ) {
666+ return Promise . reject (
667+ "Value must be less than or equal to 100" ,
668+ ) ;
669+ }
670+ return Promise . resolve ( ) ;
671+ } ,
672+ } ,
673+ ] }
674+ getValueFromEvent = { ( e ) => {
675+ const value = e . target . value . replace ( / \s + / g, "" ) ;
676+ return value ;
677+ } }
637678 >
638679 < Input placeholder = "Tenth Marks" />
639680 </ Form . Item >
640681 </ Col >
641682 < Col span = { 12 } >
642683 < Form . Item
643- label = "Twelveth Marks"
644- name = { [ field . name , "twelvethMarks" ] }
684+ label = "Twelfth Marks (%)"
685+ name = { [ field . name , "twelthMarks" ] }
686+ rules = { [
687+ {
688+ validator : ( _ , value ) => {
689+ if ( value === undefined || value === "" )
690+ return Promise . resolve ( ) ;
691+ const strValue = String ( value ) . replace ( / \s + / g, "" ) ;
692+ if ( ! / ^ \d * \. ? \d * $ / . test ( strValue ) ) {
693+ return Promise . reject (
694+ "Please enter a positive decimal value" ,
695+ ) ;
696+ }
697+ const num = parseFloat ( strValue ) ;
698+ if ( isNaN ( num ) || num > 100 ) {
699+ return Promise . reject (
700+ "Value must be less than or equal to 100" ,
701+ ) ;
702+ }
703+ return Promise . resolve ( ) ;
704+ } ,
705+ } ,
706+ ] }
707+ getValueFromEvent = { ( e ) => {
708+ const value = e . target . value . replace ( / \s + / g, "" ) ;
709+ return value ;
710+ } }
645711 >
646- < Input placeholder = "Twelveth Marks" />
712+ < Input placeholder = "Twelfth Marks" />
647713 </ Form . Item >
648714 </ Col >
649715 </ Row >
650716 < Row gutter = { 24 } >
651717 < Col span = { 12 } >
652- < Form . Item label = "Min CPI" name = { [ field . name , "minCPI" ] } >
718+ < Form . Item
719+ label = "Min CPI"
720+ name = { [ field . name , "minCPI" ] }
721+ rules = { [
722+ {
723+ pattern : / ^ \d * \. ? \d * $ / ,
724+ message : "Please enter a positive decimal value" ,
725+ } ,
726+ {
727+ validator : ( _ , value ) => {
728+ if ( value === undefined || value === "" )
729+ return Promise . resolve ( ) ;
730+ if ( ! / ^ \d * \. ? \d * $ / . test ( value ) )
731+ return Promise . resolve ( ) ;
732+ const num = parseFloat ( value ) ;
733+ if ( isNaN ( num ) || num > 10 ) {
734+ return Promise . reject (
735+ "Value must be less than or equal to 10" ,
736+ ) ;
737+ }
738+ return Promise . resolve ( ) ;
739+ } ,
740+ } ,
741+ ] }
742+ getValueFromEvent = { ( e ) => {
743+ const value = e . target . value . replace ( / \s + / g, "" ) ;
744+ return value ;
745+ } }
746+ >
653747 < Input placeholder = "Min CPI" />
654748 </ Form . Item >
655749 </ Col >
0 commit comments