import React from 'react'; import { FormattedMessage } from 'react-intl'; import AvatarUpload from './avatar-upload.jsx'; import CheckBox from './checkbox.jsx'; import TagManager from './tag-manager.jsx'; import { MAX_TITLE_LENGTH, MAX_TOPIC_DESCRIPTION_LENGTH } from '../config.js'; export default class NewTopicGroup extends React.PureComponent { constructor(props) { super(props); this.fullName = React.createRef(); this.state = { fullName: '', // full/formatted name private: '', description: '', imageDataUrl: null, tags: [], isChannel: false }; this.handleFieldEdit = this.handleFieldEdit.bind(this); this.handleImageChanged = this.handleImageChanged.bind(this); this.handleTagsChanged = this.handleTagsChanged.bind(this); this.handleChannelToggle = this.handleChannelToggle.bind(this); this.handleSubmit = this.handleSubmit.bind(this); } componentDidMount() { // this.fullName.current.focus(); } handleFieldEdit(name, e) { this.setState({[name]: e.target.value}); } handleImageChanged(img) { this.setState({imageDataUrl: img}); } handleTagsChanged(tags) { this.setState({tags: tags}); } handleChannelToggle() { this.setState({isChannel: !this.state.isChannel}); } handleSubmit(e) { e.preventDefault(); const fn = this.state.fullName.trim().substring(0, MAX_TITLE_LENGTH); const comment = this.state.private.trim().substring(0, MAX_TITLE_LENGTH); const description = this.state.description.trim().substring(0, MAX_TOPIC_DESCRIPTION_LENGTH); if (fn) { this.props.onSubmit(fn, description, this.state.imageDataUrl, comment, this.state.tags, this.state.isChannel); } } render() { let submitClasses = 'primary'; if (this.props.disabled) { submitClasses += ' disabled'; } return (
); } };