cncjs
80 строк · 2.2 Кб
1import PropTypes from 'prop-types';2import React, { PureComponent } from 'react';3import Toggle from 'react-toggle';4import i18n from 'app/lib/i18n';5
6class WidgetListItem extends PureComponent {7static propTypes = {8id: PropTypes.string,9caption: PropTypes.string,10details: PropTypes.string,11checked: PropTypes.bool,12disabled: PropTypes.bool,13onChange: PropTypes.func14};15
16state = {17checked: this.props.checked18};19
20handleChange = (event) => {21const checked = event.target.checked;22this.setState({ checked: checked });23this.props.onChange(this.props.id, checked);24};25
26render() {27const { checked } = this.state;28const styles = {29thumbnail: {30fontSize: 100,31backgroundColor: '#f5f6f7',32color: checked ? 'rgba(64, 64, 64, 0.8)' : '#ccc',33textShadow: '2px 2px 2px #a0a0a0'34},35caption: {36color: '#333',37fontWeight: 'bold',38opacity: checked ? 1 : 0.639},40details: {41color: '#333',42height: 60,43marginTop: 15,44maxHeight: 60,45opacity: checked ? 1 : 0.646}47};48
49return (50<div className="panel panel-default">51<div className="panel-head text-center" style={styles.thumbnail}>52<i className="fa fa-list-alt" style={{ fontSize: 'inherit' }} />53</div>54<div className="panel-body">55<div className="row no-gutters">56<div className="col-sm-8 text-left">57<span style={styles.caption}>{this.props.caption}</span>58</div>59<div className="col-sm-4 text-right">60<span61title={checked ? i18n._('On') : i18n._('Off')}62>63<Toggle64disabled={this.props.disabled}65defaultChecked={checked}66onChange={this.handleChange}67/>68</span>69</div>70</div>71<div style={styles.details}>72<p>{this.props.details}</p>73</div>74</div>75</div>76);77}78}
79
80export default WidgetListItem;81