diff --git a/webapp/src/components/cardDetail.tsx b/webapp/src/components/cardDetail.tsx index 536ed935e..1f15c597a 100644 --- a/webapp/src/components/cardDetail.tsx +++ b/webapp/src/components/cardDetail.tsx @@ -6,6 +6,7 @@ import {FormattedMessage, IntlShape, injectIntl} from 'react-intl' import {BlockIcons} from '../blockIcons' import {MutableTextBlock} from '../blocks/textBlock' import {BoardTree} from '../viewModel/boardTree' +import {PropertyType} from '../blocks/board' import {CardTree, MutableCardTree} from '../viewModel/cardTree' import mutator from '../mutator' import {OctoListener} from '../octoListener' @@ -163,8 +164,12 @@ class CardDetail extends React.Component {
mutator.renameProperty(board, propertyTemplate.id, newName)} + onTypeChanged={(newType: PropertyType) => mutator.changePropertyType(boardTree, propertyTemplate, newType)} + onDelete={(id: string) => mutator.deleteProperty(boardTree, id)} />
void + onTypeChanged: (newType: string) => void + onDelete: (id: string) => void } type State = { name: string } -export default class PropertyMenu extends React.Component { +export default class PropertyMenu extends React.PureComponent { private nameTextbox = React.createRef() public shouldComponentUpdate(): boolean { @@ -29,9 +31,7 @@ export default class PropertyMenu extends React.Component { constructor(props: Props) { super(props) - this.state = { - name: (this.props.property && this.props.property.name) || '', - } + this.state = {name: this.props.propertyName} } public componentDidMount(): void { @@ -62,16 +62,7 @@ export default class PropertyMenu extends React.Component { } } - private saveName = (): void => { - if (this.state.name !== this.props.property.name) { - Utils.log('menu.onNameChanged') - mutator.renameProperty(this.props.boardTree.board, this.props.property.id, this.state.name) - } - } - public render(): JSX.Element { - const {boardTree, property} = this.props - const {board} = boardTree return ( { onClick={(e) => e.stopPropagation()} onChange={(e) => this.setState({name: e.target.value})} value={this.state.name} - onBlur={this.saveName} + onBlur={() => this.props.onNameChanged(this.state.name)} onKeyDown={(e) => { if (e.keyCode === 13 || e.keyCode === 27) { - this.saveName() + this.props.onNameChanged(this.state.name) e.stopPropagation() } }} /> mutator.changePropertyType(boardTree, property, 'text')} + onClick={() => this.props.onTypeChanged('text')} /> mutator.changePropertyType(boardTree, property, 'number')} + onClick={() => this.props.onTypeChanged('number')} /> mutator.changePropertyType(boardTree, property, 'select')} + onClick={() => this.props.onTypeChanged('select')} /> mutator.changePropertyType(boardTree, property, 'createdTime')} + onClick={() => this.props.onTypeChanged('createdTime')} /> mutator.changePropertyType(boardTree, property, 'updatedTime')} + onClick={() => this.props.onTypeChanged('updatedTime')} /> mutator.deleteProperty(boardTree, property.id)} + onClick={() => this.props.onDelete(this.props.propertyId)} /> )