import React, { PropTypes } from 'react' import linkState from 'browser/lib/linkState' import FolderMark from 'browser/components/FolderMark' import store from '../../store' const IDLE = 'IDLE' const EDIT = 'EDIT' const DELETE = 'DELETE' export default class FolderRow extends React.Component { constructor (props) { super(props) this.state = { mode: IDLE } } handleUpClick (e) { let { index } = this.props if (index > 0) { // store.dispatch(replaceFolder(index, index - 1)) } } handleDownClick (e) { let { index, count } = this.props if (index < count - 1) { // store.dispatch(replaceFolder(index, index + 1)) } } handleCancelButtonClick (e) { this.setState({ mode: IDLE }) } handleEditButtonClick (e) { this.setState({ mode: EDIT, name: this.props.folder.name, color: this.props.folder.color, isColorEditing: false }) } handleDeleteButtonClick (e) { this.setState({mode: DELETE}) } handleNameInputKeyDown (e) { if (e.keyCode === 13) { this.handleSaveButtonClick() } } handleColorSelectClick (e) { this.setState({ isColorEditing: true }) } handleColorButtonClick (index) { return (e) => { this.setState({ color: index, isColorEditing: false }) } } handleSaveButtonClick (e) { let { folder, setAlert } = this.props setAlert(null, () => { let input = { name: this.state.name, color: this.state.color } folder = Object.assign({}, folder, input) try { // store.dispatch(updateFolder(folder)) this.setState({ mode: IDLE }) } catch (e) { console.error(e) setAlert({ type: 'error', message: e.message }) } }) } handleDeleteConfirmButtonClick (e) { let { folder } = this.props // store.dispatch(destroyFolder(folder.key)) } render () { let folder = this.props.folder switch (this.state.mode) { case EDIT: let colorIndexes = [] for (let i = 0; i < 8; i++) { colorIndexes.push(i) } let colorOptions = colorIndexes.map((index) => { let className = this.state.color === index ? 'active' : null return ( ) }) return (