// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import React, {PureComponent} from 'react'; import PropTypes from 'prop-types'; import {View} from 'react-native'; import RadioButton from './radio_button'; export default class RadioButtonGroup extends PureComponent { static propTypes = { children: PropTypes.node.isRequired, name: PropTypes.string.isRequired, onSelect: PropTypes.func }; state = {}; constructor(props) { super(props); this.selected = null; React.Children.forEach(this.props.children, (option) => { if (option) { const { value, checked } = option.props; if (!this.state.selected && checked) { this.selected = value; } } }); this.state = {selected: this.selected}; } get value() { return this.state.selected; } set value(value) { this.onChange(value); } onChange = (value) => { const {onSelect} = this.props; this.setState({ selected: value }, () => { if (onSelect) { onSelect(value); } }); }; render = () => { const options = React.Children.map(this.props.children, (option) => { if (option) { const { value, label, disabled, ...other } = option.props; const {name} = this.props; return ( ); } return null; }, this); return ( {options} ); }; }