Skip to content

Commit

Permalink
feat(Dropdown): Add active prop to Dropdown (#895)
Browse files Browse the repository at this point in the history
Fixes #827
  • Loading branch information
gergely-nagy authored and TheSharpieOne committed Mar 7, 2018
1 parent 0648cc2 commit 45de5c5
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/lib/Components/DropdownsPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ export default class DropdownPage extends React.Component {
isOpen: PropTypes.bool,
// For Dropdown usage inside a Nav
nav: PropTypes.bool,
active: PropTypes.bool,
// For Dropdown usage inside a Navbar (disables popper)
inNavbar: PropTypes.bool,
tag: PropTypes.string, // default: 'div' unless nav=true, then 'li'
Expand Down
4 changes: 4 additions & 0 deletions src/Dropdown.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ const propTypes = {
group: PropTypes.bool,
isOpen: PropTypes.bool,
nav: PropTypes.bool,
active: PropTypes.bool,
addonType: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['prepend', 'append'])]),
size: PropTypes.string,
tag: PropTypes.string,
Expand All @@ -29,6 +30,7 @@ const defaultProps = {
isOpen: false,
direction: 'down',
nav: false,
active: false,
addonType: false,
inNavbar: false,
};
Expand Down Expand Up @@ -179,6 +181,7 @@ class Dropdown extends React.Component {
group,
size,
nav,
active,
addonType,
...attrs
} = omit(this.props, ['toggle', 'disabled', 'inNavbar', 'direction']);
Expand All @@ -190,6 +193,7 @@ class Dropdown extends React.Component {
const classes = mapToCssModules(classNames(
className,
direction !== 'down' && `drop${direction}`,
nav && active ? 'active' : false,
{
[`input-group-${addonType}`]: addonType,
'btn-group': group,
Expand Down
8 changes: 8 additions & 0 deletions src/__tests__/Dropdown.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -806,6 +806,14 @@ describe('Dropdown', () => {
});
});

describe('active', () => {
it('should render an active class', () => {
const wrapper = shallow(<Dropdown active nav />);

expect(wrapper.hasClass('active')).toBe(true);
});
});

it('should render with correct class when direction is set', () => {
const dropup = shallow(<Dropdown direction="up" />);
const dropupProp = shallow(<Dropdown dropup />);
Expand Down

0 comments on commit 45de5c5

Please sign in to comment.