diff options
author | Alexander Tseung <alextsg@gmail.com> | 2018-07-21 01:25:45 +0800 |
---|---|---|
committer | Alexander Tseung <alextsg@gmail.com> | 2018-07-24 00:23:43 +0800 |
commit | cdda52d799ea9edeb135de44e02fecc9d6d8e94b (patch) | |
tree | 05aa2ffd128eb715934233b5063da2bd0a83a422 /ui/app/components/button-group/button-group.component.js | |
parent | 6d04c80302736133b0e741aa51719d0802cd8a2f (diff) | |
download | tangerine-wallet-browser-cdda52d799ea9edeb135de44e02fecc9d6d8e94b.tar tangerine-wallet-browser-cdda52d799ea9edeb135de44e02fecc9d6d8e94b.tar.gz tangerine-wallet-browser-cdda52d799ea9edeb135de44e02fecc9d6d8e94b.tar.bz2 tangerine-wallet-browser-cdda52d799ea9edeb135de44e02fecc9d6d8e94b.tar.lz tangerine-wallet-browser-cdda52d799ea9edeb135de44e02fecc9d6d8e94b.tar.xz tangerine-wallet-browser-cdda52d799ea9edeb135de44e02fecc9d6d8e94b.tar.zst tangerine-wallet-browser-cdda52d799ea9edeb135de44e02fecc9d6d8e94b.zip |
Add ButtonGroup component
Diffstat (limited to 'ui/app/components/button-group/button-group.component.js')
-rw-r--r-- | ui/app/components/button-group/button-group.component.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/ui/app/components/button-group/button-group.component.js b/ui/app/components/button-group/button-group.component.js new file mode 100644 index 000000000..f99f710ce --- /dev/null +++ b/ui/app/components/button-group/button-group.component.js @@ -0,0 +1,61 @@ +import React, { PureComponent } from 'react' +import PropTypes from 'prop-types' +import classnames from 'classnames' + +export default class ButtonGroup extends PureComponent { + static propTypes = { + defaultActiveButtonIndex: PropTypes.number, + disabled: PropTypes.bool, + children: PropTypes.array, + className: PropTypes.string, + style: PropTypes.object, + } + + static defaultProps = { + className: 'button-group', + } + + state = { + activeButtonIndex: this.props.defaultActiveButtonIndex || 0, + } + + handleButtonClick (activeButtonIndex) { + this.setState({ activeButtonIndex }) + } + + renderButtons () { + const { children, disabled } = this.props + + return React.Children.map(children, (child, index) => { + return child && ( + <button + className={classnames( + 'button-group__button', + { 'button-group__button--active': index === this.state.activeButtonIndex }, + )} + onClick={() => { + this.handleButtonClick(index) + child.props.onClick && child.props.onClick() + }} + disabled={disabled || child.props.disabled} + key={index} + > + { child.props.children } + </button> + ) + }) + } + + render () { + const { className, style } = this.props + + return ( + <div + className={className} + style={style} + > + { this.renderButtons() } + </div> + ) + } +} |