blob: 121a626eaecf1468a0b80d148b5fb2efffdfb995 [file] [log] [blame]
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
import PropTypes from 'prop-types';
import React from 'react';
import { Table } from 'react-bootstrap';
import ConfigOption from './ConfigOption';
export default class ConfigTable extends React.Component {
static propTypes = {
options: PropTypes.arrayOf(PropTypes.shape({
editing: PropTypes.bool.isRequired,
header: PropTypes.bool,
optionName: PropTypes.string.isRequired,
sectionName: PropTypes.string.isRequired,
value: PropTypes.string
})).isRequired,
saving: PropTypes.bool.isRequired,
onDeleteOption: PropTypes.func.isRequired,
onEditOption: PropTypes.func.isRequired,
onSaveOption: PropTypes.func.isRequired,
onCancelEdit: PropTypes.func.isRequired
};
createOptions = () => {
return _.map(this.props.options, (option) => (
<ConfigOption
option={option}
saving={this.props.saving}
onDelete={this.props.onDeleteOption}
onSave={this.props.onSaveOption}
onEdit={this.props.onEditOption}
onCancelEdit={this.props.onCancelEdit}
key={`${option.sectionName}/${option.optionName}`}
/>
));
};
render() {
const options = this.createOptions();
return (
<Table striped>
<thead>
<tr>
<th id="config-section" width="22%">Section</th>
<th id="config-option" width="22%">Option</th>
<th id="config-value">Value</th>
<th id="config-trash"></th>
</tr>
</thead>
<tbody>
{options}
</tbody>
</Table>
);
}
}