// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import React from 'react' import {injectIntl, IntlShape, FormattedMessage} from 'react-intl' import {BlockIcons} from '../blockIcons' import {Board} from '../blocks/board' import mutator from '../mutator' import Menu from '../widgets/menu' import MenuWrapper from '../widgets/menuWrapper' import Editable from '../widgets/editable' import Button from './button' import './viewTitle.scss' type Props = { board: Board intl: IntlShape } type State = { title: string } class ViewTitle extends React.Component { private titleEditor = React.createRef() shouldComponentUpdate(): boolean { return true } static getDerivedStateFromProps(nextProps: Props, prevState: State) { if (prevState.title !== nextProps.board.title) { return { title: nextProps.board.title, } } return null } constructor(props: Props) { super(props) this.state = {title: props.board.title} } render(): JSX.Element { const {board, intl} = this.props return ( <>
{board.icon &&
{board.icon}
mutator.changeIcon(board, BlockIcons.shared.randomIcon())} /> mutator.changeIcon(board, undefined, 'remove icon')} />
} this.setState({title})} onSave={() => mutator.changeTitle(board, this.state.title)} onCancel={() => this.setState({title: this.props.board.title})} />
) } } export default injectIntl(ViewTitle)