Skip to content

Commit 92c62b1

Browse files
mking-clarieddywashere
authored andcommitted
feat(Dropdown): add size prop (#90)
1 parent ee17a47 commit 92c62b1

4 files changed

Lines changed: 98 additions & 0 deletions

File tree

docs/lib/Components/DropdownsPage.jsx

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
DropdownMenu } from 'reactstrap';
1010
import DropdownExample from '../examples/Dropdown';
1111
const DropdownExampleSource = require('!!raw!../examples/Dropdown.jsx');
12+
import DropdownSizingExample from '../examples/DropdownSizing';
1213

1314
export default class DropdownPage extends React.Component {
1415
constructor(props) {
@@ -120,6 +121,44 @@ DropdownToggle.propTypes = {
120121
{'<DropdownItem disabled>Action</DropdownItem>'}
121122
</PrismCode>
122123
</pre>
124+
<h3>Sizing</h3>
125+
<div className="docs-example">
126+
<div>
127+
<DropdownSizingExample group size="lg" />
128+
<DropdownSizingExample className="m-t-1" />
129+
<DropdownSizingExample className="m-t-1" group size="sm" />
130+
</div>
131+
</div>
132+
<pre>
133+
<PrismCode className="language-jsx">
134+
{`<Dropdown group isOpen={this.state.dropdownOpen} size="lg" toggle={this.toggle}>
135+
<DropdownToggle caret>
136+
Dropdown
137+
</DropdownToggle>
138+
<DropdownMenu>
139+
...
140+
</DropdownMenu>
141+
</Dropdown>
142+
143+
<Dropdown isOpen={this.state.dropdownOpen} toggle={this.toggle}>
144+
<DropdownToggle caret>
145+
Dropdown
146+
</DropdownToggle>
147+
<DropdownMenu>
148+
...
149+
</DropdownMenu>
150+
</Dropdown>
151+
152+
<Dropdown group isOpen={this.state.dropdownOpen} size="sm" toggle={this.toggle}>
153+
<DropdownToggle caret>
154+
Dropdown
155+
</DropdownToggle>
156+
<DropdownMenu>
157+
...
158+
</DropdownMenu>
159+
</Dropdown>`}
160+
</PrismCode>
161+
</pre>
123162
</div>
124163
);
125164
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import React from 'react';
2+
import { Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';
3+
4+
export default class Example extends React.Component {
5+
constructor(props) {
6+
super(props);
7+
8+
this.toggle = this.toggle.bind(this);
9+
this.state = {
10+
dropdownOpen: false
11+
};
12+
}
13+
14+
toggle() {
15+
this.setState({
16+
dropdownOpen: !this.state.dropdownOpen
17+
});
18+
}
19+
20+
render() {
21+
return (
22+
<Dropdown isOpen={this.state.dropdownOpen} toggle={this.toggle} {...this.props}>
23+
<DropdownToggle caret>
24+
Dropdown
25+
</DropdownToggle>
26+
<DropdownMenu>
27+
<DropdownItem header>Header</DropdownItem>
28+
<DropdownItem>Action</DropdownItem>
29+
</DropdownMenu>
30+
</Dropdown>
31+
);
32+
}
33+
}

src/Dropdown.jsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const propTypes = {
1313
dropup: PropTypes.bool,
1414
group: PropTypes.bool,
1515
isOpen: PropTypes.bool,
16+
size: PropTypes.string,
1617
tag: PropTypes.string,
1718
tether: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),
1819
toggle: PropTypes.func,
@@ -162,6 +163,7 @@ class Dropdown extends React.Component {
162163
className,
163164
dropup,
164165
group,
166+
size,
165167
tag: Tag,
166168
isOpen,
167169
...attributes
@@ -171,6 +173,7 @@ class Dropdown extends React.Component {
171173
className,
172174
{
173175
'btn-group': group,
176+
[`btn-group-${size}`]: !!size,
174177
dropdown: !group,
175178
open: isOpen,
176179
dropup: dropup

test/Dropdown.spec.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,4 +245,27 @@ describe('Dropdown', () => {
245245
wrapper.detach();
246246
});
247247
});
248+
249+
it('should render different size classes', () => {
250+
const small = mount(
251+
<Dropdown group isOpen={isOpen} size="sm" toggle={toggle}>
252+
<DropdownToggle>Toggle</DropdownToggle>
253+
<DropdownMenu>
254+
<DropdownItem>Test</DropdownItem>
255+
</DropdownMenu>
256+
</Dropdown>
257+
);
258+
259+
const large = mount(
260+
<Dropdown group isOpen={isOpen} size="lg" toggle={toggle}>
261+
<DropdownToggle>Toggle</DropdownToggle>
262+
<DropdownMenu>
263+
<DropdownItem>Test</DropdownItem>
264+
</DropdownMenu>
265+
</Dropdown>
266+
);
267+
268+
expect(small.find('.btn-group-sm').length).toBe(1);
269+
expect(large.find('.btn-group-lg').length).toBe(1);
270+
});
248271
});

0 commit comments

Comments
 (0)