Skip to content

Commit ddc563b

Browse files
committed
Make port placeholder depends on selected protocol
1 parent b14dd02 commit ddc563b

File tree

4 files changed

+64
-36
lines changed

4 files changed

+64
-36
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import React, { useState } from 'react';
2+
import { Form, InputNumber, Radio, RadioChangeEvent } from 'antd';
3+
import { useTranslation } from 'react-i18next';
4+
5+
import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants';
6+
7+
export const ConnectionHttpProtocol = () => {
8+
const { t } = useTranslation('connection');
9+
10+
const formInstance = Form.useFormInstance();
11+
Form.useWatch('protocol', formInstance);
12+
13+
const [defaultPort, setDefaultPort] = useState("443");
14+
15+
const handleProtocolChange = (e: RadioChangeEvent) => {
16+
if (e.target.value === 'https') {
17+
setDefaultPort("443");
18+
} else {
19+
setDefaultPort("80");
20+
}
21+
}
22+
23+
return (
24+
<>
25+
<Form.Item
26+
label={t('protocol')}
27+
name={['connection_data', 'protocol']}
28+
rules={[{ required: true }]}
29+
initialValue="https"
30+
>
31+
<Radio.Group onChange={handleProtocolChange}>
32+
<Radio.Button value="http">HTTP</Radio.Button>
33+
<Radio.Button value="https">HTTPS</Radio.Button>
34+
</Radio.Group>
35+
</Form.Item>
36+
<Form.Item label={t('port')} name={['connection_data', 'port']}>
37+
<InputNumber size="large" min={MIN_ALLOWED_PORT} max={MAX_ALLOWED_PORT} placeholder={defaultPort} />
38+
</Form.Item>
39+
</>
40+
);
41+
};

src/entities/connection/ui/ConnectionTypeForm/components/ConnectionS3/index.tsx

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import React from 'react';
2-
import { Form, Input, InputNumber, Radio } from 'antd';
2+
import { Form, Input, Radio } from 'antd';
33
import { useTranslation } from 'react-i18next';
44

5-
import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants';
65
import { ConnectionAuthS3 } from '../ConnectionAuthS3';
6+
import { ConnectionHttpProtocol } from '../ConnectionHttpProtocol';
77

88
export const ConnectionS3 = () => {
99
const { t } = useTranslation('connection');
@@ -13,20 +13,7 @@ export const ConnectionS3 = () => {
1313
<Form.Item label={t('host')} name={['connection_data', 'host']} rules={[{ required: true }]}>
1414
<Input size="large" placeholder="s3.mycompany.com" />
1515
</Form.Item>
16-
<Form.Item
17-
label={t('protocol')}
18-
name={['connection_data', 'protocol']}
19-
rules={[{ required: true }]}
20-
initialValue="https"
21-
>
22-
<Radio.Group>
23-
<Radio.Button value="http">HTTP</Radio.Button>
24-
<Radio.Button value="httpS">HTTPS</Radio.Button>
25-
</Radio.Group>
26-
</Form.Item>
27-
<Form.Item label={t('port')} name={['connection_data', 'port']}>
28-
<InputNumber size="large" min={MIN_ALLOWED_PORT} max={MAX_ALLOWED_PORT} placeholder="443" />
29-
</Form.Item>
16+
<ConnectionHttpProtocol />
3017
<Form.Item label={t('s3.bucketStyle')} name={['connection_data', 'bucket_style']} rules={[{ required: true }]} initialValue="domain">
3118
<Radio.Group>
3219
<Radio.Button value="domain">bucket.s3.mycompany.com</Radio.Button>

src/entities/connection/ui/ConnectionTypeForm/components/ConnectionSamba/index.tsx

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,25 @@
1-
import React from 'react';
2-
import { Form, Input, InputNumber, Radio } from 'antd';
1+
import React, { useState } from 'react';
2+
import { Form, Input, InputNumber, Radio, RadioChangeEvent } from 'antd';
33
import { useTranslation } from 'react-i18next';
44

55
import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants';
66
import { ConnectionAuthSamba } from '../ConnectionAuthSamba';
77

88
export const ConnectionSamba = () => {
99
const { t } = useTranslation('connection');
10+
11+
const formInstance = Form.useFormInstance();
12+
Form.useWatch('protocol', formInstance);
13+
14+
const [defaultPort, setDefaultPort] = useState("445");
15+
16+
const handleProtocolChange = (e: RadioChangeEvent) => {
17+
if (e.target.value === 'SMB') {
18+
setDefaultPort("445");
19+
} else {
20+
setDefaultPort("139");
21+
}
22+
}
1023

1124
return (
1225
<>
@@ -19,13 +32,13 @@ export const ConnectionSamba = () => {
1932
rules={[{ required: true }]}
2033
initialValue="SMB"
2134
>
22-
<Radio.Group>
35+
<Radio.Group onChange={handleProtocolChange}>
2336
<Radio.Button value="NetBIOS">NetBIOS</Radio.Button>
2437
<Radio.Button value="SMB">SMB</Radio.Button>
2538
</Radio.Group>
2639
</Form.Item>
2740
<Form.Item label={t('port')} name={['connection_data', 'port']}>
28-
<InputNumber size="large" min={MIN_ALLOWED_PORT} max={MAX_ALLOWED_PORT} placeholder="445" />
41+
<InputNumber size="large" min={MIN_ALLOWED_PORT} max={MAX_ALLOWED_PORT} placeholder={defaultPort} />
2942
</Form.Item>
3043
<Form.Item label={t('samba.share')} name={['connection_data', 'share']} rules={[{ required: true }]}>
3144
<Input size="large" placeholder="MYSHARE" />

src/entities/connection/ui/ConnectionTypeForm/components/ConnectionWebdav/index.tsx

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import React from 'react';
2-
import { Form, Input, InputNumber, Radio } from 'antd';
2+
import { Form, Input } from 'antd';
33
import { useTranslation } from 'react-i18next';
44

5-
import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants';
65
import { ConnectionAuthBasic } from '../ConnectionAuthBasic';
6+
import { ConnectionHttpProtocol } from '../ConnectionHttpProtocol';
77

88
export const ConnectionWebdav = () => {
99
const { t } = useTranslation('connection');
@@ -13,20 +13,7 @@ export const ConnectionWebdav = () => {
1313
<Form.Item label={t('host')} name={['connection_data', 'host']} rules={[{ required: true }]}>
1414
<Input size="large" placeholder="myserver.mycompany.com" />
1515
</Form.Item>
16-
<Form.Item
17-
label={t('protocol')}
18-
name={['connection_data', 'protocol']}
19-
rules={[{ required: true }]}
20-
initialValue="https"
21-
>
22-
<Radio.Group>
23-
<Radio.Button value="http">HTTP</Radio.Button>
24-
<Radio.Button value="httpS">HTTPS</Radio.Button>
25-
</Radio.Group>
26-
</Form.Item>
27-
<Form.Item label={t('port')} name={['connection_data', 'port']}>
28-
<InputNumber size="large" min={MIN_ALLOWED_PORT} max={MAX_ALLOWED_PORT} placeholder="443" />
29-
</Form.Item>
16+
<ConnectionHttpProtocol/>
3017
<ConnectionAuthBasic />
3118
</>
3219
);

0 commit comments

Comments
 (0)