forked from zabute/formsy-semantic-ui-react
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDropdownExamples.js
More file actions
144 lines (131 loc) · 3.71 KB
/
DropdownExamples.js
File metadata and controls
144 lines (131 loc) · 3.71 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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import React, { Component } from 'react';
import Form from 'formsy-react';
import { Container, Button, Label, Segment } from 'semantic-ui-react';
import { Dropdown } from '../src';
const styles = {
root: {
marginTop: 18,
},
};
const options = [
{ text: 'Hat', value: 'hat' },
{ text: 'Scarf', value: 'scarf' },
{ text: 'Jacket', value: 'jacket' },
{ text: 'T-Shirt', value: 't_shirt' },
{ text: 'Gloves', value: 'gloves' },
{ text: 'Watch', value: 'watch' },
{ text: 'Belt', value: 'belt' },
{ text: 'Pants', value: 'pants' },
{ text: 'Shoes', value: 'shoes' },
{ text: 'Socks', value: 'socks' },
];
export default class CheckboxExamples extends Component {
onValidSubmit = (formData) => alert(JSON.stringify(formData)) // eslint-disable-line
render() {
const errorLabel = <Label color="red" pointing="left"/>;
const dropdownSingle = (
<Dropdown
name="dropdownSingle"
placeholder="Select Product"
search
selection
required
validationErrors={{
isDefaultRequiredValue: 'You need to select a product',
}}
errorLabel={ errorLabel }
options={ options }
/>
);
const singleSelectWithDefaultValue = (
<Dropdown
name="singleSelectWithDefaultValue"
placeholder="Select Product"
search
selection
defaultValue="gloves"
required
validationErrors={{
isDefaultRequiredValue: 'You need to select a product',
}}
errorLabel={ errorLabel }
options={ options }
/>
);
const dropdownMultiple = (
<Dropdown
name="dropdownMultiple"
placeholder="Select Product"
multiple
search
selection
validations={{
customValidation: (values, value) => !(!value || value.length < 4),
}}
validationErrors={{
customValidation: 'You need to select at least FOUR products',
}}
errorLabel={ errorLabel }
options={ options }
/>
);
const multipleWithDefaultValues = (
<Dropdown
name="multipleWithDefaultValues"
placeholder="Select Product"
multiple
search
selection
defaultValue={['scarf', 'jacket']}
validations={{
customValidation: (values, value) => !(!value || value.length < 2),
}}
validationErrors={{
customValidation: 'You need to select at least TWO products',
}}
errorLabel={ errorLabel }
options={ options }
/>
);
return (
<Container style={ styles.root }>
<Form
noValidate
onValidSubmit={ this.onValidSubmit }
ref={ref => this.form = ref }
>
<Segment>
<h5> Single-select </h5>
{ dropdownSingle }
</Segment>
<Segment>
<h5> Single-select with default value </h5>
{ singleSelectWithDefaultValue }
</Segment>
<Segment>
<h5> Multi-select (Four selections minimum)</h5>
{ dropdownMultiple }
</Segment>
<Segment>
<h5> Multi-select with default values (Two selections minimum) </h5>
{ multipleWithDefaultValues }
</Segment>
<Button
content="Submit"
style={ styles.formElement }
color="orange"
/>
<Button
type="button"
onClick={ () => this.form.reset({
singleSelectWithDefaultValue: 'gloves',
multipleWithDefaultValues: ['scarf', 'jacket'],
})}
content="Reset"
color="black"
/>
</Form>
</Container>
);
}
}