-
Notifications
You must be signed in to change notification settings - Fork 131
Expand file tree
/
Copy pathScrollToValidation.demo.tsx
More file actions
94 lines (81 loc) · 3.11 KB
/
Copy pathScrollToValidation.demo.tsx
File metadata and controls
94 lines (81 loc) · 3.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import React from 'react';
import { Button } from '@skbkontur/react-ui/components/Button';
import { Input } from '@skbkontur/react-ui/components/Input';
import type { ValidationInfo } from '../../../../src';
import { ValidationContainer, ValidationWrapper } from '../../../../src';
import { Form } from '../../../Common/Form';
import { SpaceFiller } from '../../../Common/SpaceFiller';
import type { Nullable } from '../../../../typings/Types';
export default class ScrollToValidationDemo extends React.Component {
public state = {
value0: '',
value1: '',
value2: '',
value3: '',
};
private container: Nullable<ValidationContainer> = null;
public render() {
return (
<ValidationContainer ref={this.refContainer}>
<Form>
<SpaceFiller height={200}>Пустое место 200px</SpaceFiller>
<Form.Line title={'value0'}>
<ValidationWrapper validationInfo={this.validate(this.state.value0)}>
<Input
placeholder={'Только цифры'}
value={this.state.value0}
onValueChange={(value) => this.setState({ value0: value })}
/>
</ValidationWrapper>
</Form.Line>
<Form.Line title={'value1'}>
<ValidationWrapper validationInfo={this.validate(this.state.value1)}>
<Input
placeholder={'Только цифры'}
value={this.state.value1}
onValueChange={(value) => this.setState({ value1: value })}
/>
</ValidationWrapper>
</Form.Line>
<SpaceFiller height={1600}>Пустое место 1600px</SpaceFiller>
<Form.Line title={'value2'}>
<ValidationWrapper validationInfo={this.validate(this.state.value2)}>
<Input
placeholder={'Только цифры'}
value={this.state.value2}
onValueChange={(value) => this.setState({ value2: value })}
/>
</ValidationWrapper>
</Form.Line>
<Form.Line title={'value3'}>
<ValidationWrapper validationInfo={this.validate(this.state.value3)}>
<Input
placeholder={'Только цифры'}
value={this.state.value3}
onValueChange={(value) => this.setState({ value3: value })}
/>
</ValidationWrapper>
</Form.Line>
<Form.ActionsBar>
<Button use={'primary'} onClick={this.handleSubmit}>
Submit
</Button>
</Form.ActionsBar>
</Form>
</ValidationContainer>
);
}
private validate = (value: string): Nullable<ValidationInfo> => {
if (!value) {
return { message: 'Укажите значение', type: 'submit' };
}
if (!/^\d*$/.test(value)) {
return { message: 'Только цифры' };
}
return null;
};
private handleSubmit = async (): Promise<void> => {
await this.container?.submit();
};
private refContainer = (el: Nullable<ValidationContainer>) => (this.container = el);
}