diff -r 183b128a4189 -r a642639dbc07 client/src/components/SessionForm.js --- a/client/src/components/SessionForm.js Mon Oct 08 03:30:54 2018 +0200 +++ b/client/src/components/SessionForm.js Mon Oct 08 04:09:19 2018 +0200 @@ -11,26 +11,37 @@ state = { createGroup: false, - protocolOpen: false - } - - onChange = (e) => { - const { name, value } = e.target; - const changes = { [name]: value } - this.onChangeThrottle(changes); + protocolOpen: false, + titleEditMode: false, + descriptionEditMode: false, + enterKeyValue: false, } - onChangeThrottle = _.debounce((changes) => { - this.props.sessionsActions.updateSession(this.props.currentSession, changes); - }, 750) +onChange = (e) => { + const { name, value } = e.target; + const changes = { [name]: value } + this.onChangeThrottle(changes); +} + +onChangeThrottle = _.debounce((changes) => { + this.props.sessionsActions.updateSession(this.props.currentSession, changes); +}, 750) + +onGroupChange = (e) => { + const groupName = e.target.value; - onGroupChange = (e) => { - const groupName = e.target.value; + const group = this.props.groups.find((g) => g.get('name') === groupName); + + this.props.sessionsActions.updateSession(this.props.currentSession, { group: groupName, protocol: group?group.get('protocol'):'' }); +} - const group = this.props.groups.find((g) => g.get('name') === groupName); +componentDidMount() { + document.addEventListener('mousedown', this.handleClickOutside); +} - this.props.sessionsActions.updateSession(this.props.currentSession, { group: groupName, protocol: group?group.get('protocol'):'' }); - } +componentWillUnmount() { + document.removeEventListener('mousedown', this.handleClickOutside); +} componentWillUpdate = (nextProps, nextState) => { if (nextState.createGroup && nextProps.createGroup.get('success')) { @@ -45,6 +56,129 @@ }); } + toggleOnTitleEditMode = (e) => { + e.preventDefault(); + this.setState({ + titleEditMode: true, + }); + } + + toggleOnDescriptionEditMode = (e) => { + e.preventDefault(); + this.setState({ + descriptionEditMode: true, + }); + } + + toggleOffTitleEditMode = (e) => { + e.preventDefault(); + this.setState({ + titleEditMode: false, + }); + } + + toggleOffDescriptionEditMode = (e) => { + e.preventDefault(); + this.setState({ + descriptionEditMode: false, + }); + } + + handleClickOutside = (e) => { + if (this.title && !this.title.contains(e.target)) { + this.toggleOffTitleEditMode(e) + } + + if (this.desc && !this.desc.contains(e.target)) { + this.toggleOffDescriptionEditMode(e) + } + } + + saveEdit = (e) => { + + e.preventDefault(); + + if (e.key === 'Enter') { + this.setState({enterKeyValue: true}) + } + + if (e.key !== 'Enter') { + this.setState({enterKeyValue: false}) + } + + if (e.key === 'Enter' && this.state.enterKeyValue === true) { + + e.preventDefault(); + this.setState({ + enterKeyValue: false, + titleEditMode: false, + descriptionEditMode: false, + }) + } + } + + titleEditMode = () => { + + if (this.state.titleEditMode === false) { + return ( +