11import { FC } from 'react' ;
22import { useFormContext } from 'react-hook-form' ;
33
4+ import { useSelector } from 'react-redux' ;
5+ import { RootState } from '@slices-my/store' ;
6+
47import { Share } from '@types-my/Form.type' ;
58
69interface Props {
7- fraction : 'в доле' | 'га'
10+ fraction : 'в доле' | 'га' ;
811}
912
10- const FunctionalComponent :FC < Props > = ( { fraction } ) => {
11- const { register, formState : { errors } , watch } = useFormContext < Share > ( ) ;
12- return (
13- < div id = 'share' >
14- < div className = "line" >
15- < label > Размер доли в праве</ label >
16- < input
17- className = 'share_size'
18- placeholder = { fraction === 'в доле' ? '144' : '10' }
19- type = "number"
20- { ...register ( 'share_size_ch' , {
21- required : "Это поле обязательное" ,
22- min : {
23- value : 0 ,
24- message : "Слишком малое значение"
25- }
26- } ) }
27- />
28- { fraction === "в доле" &&
29- < >
30-
13+ const ShareSize : FC < Props > = ( { fraction } ) => {
14+ const {
15+ register,
16+ formState : { errors } ,
17+ } = useFormContext < Share > ( ) ;
18+
19+ // Получаем объект general_info из Redux.
20+ const general_info = useSelector ( ( state : RootState ) => state . general_info . general_info ) ;
3121
22+ // Вычисляем значение прямо в рендере.
23+ const isShareSize = general_info ?. isShareWithCommon === true ;
24+
25+ return (
26+ < div id = "share" >
27+ < div className = "line" >
28+ < label > Размер доли в праве</ label >
29+ < input
30+ className = "share_size"
31+ placeholder = { fraction === 'в доле' ? '144' : '10' }
32+ type = "number"
33+ { ...register ( 'share_size_ch' , {
34+ required : 'Это поле обязательное' ,
35+ min : {
36+ value : 0 ,
37+ message : 'Слишком малое значение' ,
38+ } ,
39+ } ) }
40+ />
41+ { fraction === 'в доле' && (
42+ < >
3243 < span > /</ span >
3344 < input
34- type = "number"
35- className = ' share_size'
36- placeholder = ' 256'
37- { ...register ( 'share_size_z' , {
38- required : " Это поле обязательное" ,
45+ type = "number"
46+ className = " share_size"
47+ placeholder = " 256"
48+ { ...register ( 'share_size_z' , {
49+ required : ' Это поле обязательное' ,
3950 min : {
40- value : 1 ,
41- message : " Слишком малый знаменатель"
42- }
43- } ) }
51+ value : 1 ,
52+ message : ' Слишком малый знаменатель' ,
53+ } ,
54+ } ) }
4455 />
45- </ >
46- }
47- < label > Размер доли с общим знаменателеи</ label >
56+ </ >
57+ ) }
58+ { general_info . isShareWithCommon == 'true' && (
59+ < >
60+ < label > Размер доли с общим знаменателем</ label >
4861 < input
49- className = ' share_size'
50- type = "text"
51- placeholder = '1'
52- { ...register ( 'share_size_with_common_ch' , {
53- required : " Это поле обязательное" ,
62+ className = " share_size"
63+ type = "text"
64+ placeholder = "1"
65+ { ...register ( 'share_size_with_common_ch' , {
66+ required : ' Это поле обязательное' ,
5467 min : {
55- value : 1 ,
56- message : " Слишком малый числитель"
57- }
58- } ) }
59- />
60- < span > /</ span >
68+ value : 1 ,
69+ message : ' Слишком малый числитель' ,
70+ } ,
71+ } ) }
72+ />
73+ < span > /</ span >
6174 < input
62- className = ' share_size'
63- type = "text"
64- placeholder = '2'
65- { ...register ( 'share_size_with_common_z' , {
66- required : " Это поле обязательное" ,
75+ className = " share_size"
76+ type = "text"
77+ placeholder = "2"
78+ { ...register ( 'share_size_with_common_z' , {
79+ required : ' Это поле обязательное' ,
6780 min : {
68- value : 1 ,
69- message : "Слишком малый знаменатель"
70- }
71- } ) }
72- />
73- </ div >
74- < div className = "validate_errors" >
75- < p className = "validate_error" > { errors . share_size_ch && errors . share_size_ch . message } </ p >
76- < p className = "validate_error" > { errors . share_size_z && errors . share_size_z . message } </ p >
77- < p className = "validate_error" > { errors . share_size_with_common_ch && errors . share_size_with_common_ch . message } </ p >
78- < p className = "validate_error" > { errors . share_size_with_common_z && errors . share_size_with_common_z . message } </ p >
79- </ div >
81+ value : 1 ,
82+ message : 'Слишком малый знаменатель' ,
83+ } ,
84+ } ) }
85+ />
86+ </ >
87+ ) }
88+ </ div >
89+ < div className = "validate_errors" >
90+ < p className = "validate_error" > { errors . share_size_ch && errors . share_size_ch . message } </ p >
91+ < p className = "validate_error" > { errors . share_size_z && errors . share_size_z . message } </ p >
92+ < p className = "validate_error" > { errors . share_size_with_common_ch && errors . share_size_with_common_ch . message } </ p >
93+ < p className = "validate_error" > { errors . share_size_with_common_z && errors . share_size_with_common_z . message } </ p >
94+ </ div >
8095 </ div >
81- )
82- }
96+ ) ;
97+ } ;
8398
84- export default FunctionalComponent ;
99+ export default ShareSize ;
0 commit comments