client/src/components/SessionForm.js
author ymh <ymh.work@gmail.com>
Fri, 30 Nov 2018 10:53:15 +0100
changeset 183 f8f3af9e5c83
parent 170 7da1d5137b0b
child 191 3f71ad81a5a9
permissions -rw-r--r--
Change the settings to avoid using Session authentication for rest framework as it raise exceptions in case client and backend are on the same domain On the filter, adapt to take into account new version of django_filters
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     1
import React, { Component } from 'react';
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     2
import { connect } from 'react-redux';
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     3
import { bindActionCreators } from 'redux';
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     4
import '../App.css';
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     5
import * as sessionsActions from '../actions/sessionsActions';
100
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
     6
import * as authActions from '../actions/authActions';
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     7
import _ from 'lodash';
135
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
     8
import './SessionForm.css';
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     9
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    10
class SessionForm extends Component {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    11
100
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    12
  state = {
135
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    13
    createGroup: false,
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    14
    protocolOpen: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    15
    titleEditMode: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    16
    descriptionEditMode: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    17
    enterKeyValue: false,
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    18
  }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    19
164
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    20
  onChange = (e) => {
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    21
    const { name, value } = e.target;
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    22
    const changes = { [name]: value }
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    23
    this.onChangeThrottle(changes);
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    24
  }
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    25
164
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    26
  onChangeThrottle = _.debounce((changes) => {
169
f98efa1bddd1 Correct session edition
ymh <ymh.work@gmail.com>
parents: 168
diff changeset
    27
    this.props.sessionsActions.updateSession(this.props.currentSession._id, changes);
164
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    28
  }, 750)
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    29
164
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    30
  onGroupChange = (e) => {
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    31
    const groupName = e.target.value;
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    32
168
ea92f4fe783d - move SlateEditor and dependencies to its own folder
ymh <ymh.work@gmail.com>
parents: 164
diff changeset
    33
    const group = this.props.groups.find((g) => g.name === groupName);
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    34
168
ea92f4fe783d - move SlateEditor and dependencies to its own folder
ymh <ymh.work@gmail.com>
parents: 164
diff changeset
    35
    this.props.sessionsActions.updateSession(this.props.currentSession, { group: groupName, protocol: group?group.protocol:'' });
164
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    36
  }
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    37
164
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    38
  componentDidMount() {
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    39
    document.addEventListener('mousedown', this.handleClickOutside);
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    40
  }
133
6f3078f7fd47 Work on correct protocol propagation
ymh <ymh.work@gmail.com>
parents: 132
diff changeset
    41
164
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    42
  componentWillUnmount() {
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    43
    document.removeEventListener('mousedown', this.handleClickOutside);
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    44
  }
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    45
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    46
  componentWillUpdate = (nextProps, nextState) => {
168
ea92f4fe783d - move SlateEditor and dependencies to its own folder
ymh <ymh.work@gmail.com>
parents: 164
diff changeset
    47
    if (nextState.createGroup && nextProps.createGroup.success) {
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    48
      this.setState({ createGroup: false })
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    49
    }
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    50
  }
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    51
135
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    52
  toggleProtocol = (e) => {
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    53
    e.preventDefault();
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    54
    this.setState({
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    55
      protocolOpen: !this.state.protocolOpen
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    56
    });
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    57
  }
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    58
164
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    59
  toggleOnTitleEditMode = () => {
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    60
    this.setState({
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    61
      titleEditMode: true,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    62
    });
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    63
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    64
164
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    65
  toggleOnDescriptionEditMode = () => {
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    66
    this.setState({
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    67
      descriptionEditMode: true,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    68
    });
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    69
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    70
164
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    71
  toggleOffTitleEditMode = () => {
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    72
    this.setState({
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    73
      titleEditMode: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    74
    });
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    75
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    76
164
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    77
  toggleOffDescriptionEditMode = () => {
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    78
    this.setState({
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    79
      descriptionEditMode: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    80
    });
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    81
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    82
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    83
  handleClickOutside = (e) => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    84
    if (this.title && !this.title.contains(e.target)) {
164
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    85
      this.toggleOffTitleEditMode()
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    86
    }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    87
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    88
    if (this.desc && !this.desc.contains(e.target)) {
164
30a5baa31314 Fix SessionForm component edit mode
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    89
      this.toggleOffDescriptionEditMode()
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    90
    }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    91
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    92
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    93
  saveEdit = (e) => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    94
169
f98efa1bddd1 Correct session edition
ymh <ymh.work@gmail.com>
parents: 168
diff changeset
    95
    // e.preventDefault();
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    96
169
f98efa1bddd1 Correct session edition
ymh <ymh.work@gmail.com>
parents: 168
diff changeset
    97
    // if (e.key === 'Enter') {
f98efa1bddd1 Correct session edition
ymh <ymh.work@gmail.com>
parents: 168
diff changeset
    98
    //   this.setState({enterKeyValue: true})
f98efa1bddd1 Correct session edition
ymh <ymh.work@gmail.com>
parents: 168
diff changeset
    99
    // }
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   100
169
f98efa1bddd1 Correct session edition
ymh <ymh.work@gmail.com>
parents: 168
diff changeset
   101
    // if (e.key !== 'Enter') {
f98efa1bddd1 Correct session edition
ymh <ymh.work@gmail.com>
parents: 168
diff changeset
   102
    //   this.setState({enterKeyValue: false})
f98efa1bddd1 Correct session edition
ymh <ymh.work@gmail.com>
parents: 168
diff changeset
   103
    // }
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   104
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   105
    if (e.key === 'Enter' && this.state.enterKeyValue === true) {
169
f98efa1bddd1 Correct session edition
ymh <ymh.work@gmail.com>
parents: 168
diff changeset
   106
f98efa1bddd1 Correct session edition
ymh <ymh.work@gmail.com>
parents: 168
diff changeset
   107
      e.preventDefault();
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   108
      this.setState({
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   109
        enterKeyValue: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   110
        titleEditMode: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   111
        descriptionEditMode: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   112
      })
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   113
    }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   114
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   115
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   116
  titleEditMode = () => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   117
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   118
    if (this.state.titleEditMode === false) {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   119
      return (
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   120
      <div
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   121
        onClick={this.toggleOnTitleEditMode}
170
7da1d5137b0b Upgrade dependencies and correct theme colors
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   122
        className='session-page-title border-0 bg-irinotes-headers text-muted ml-3'
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   123
      >
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   124
        { this.props.currentSession.title || 'Espace titre' }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   125
      </div>
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   126
    );
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   127
    }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   128
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   129
    if (this.state.titleEditMode === true) {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   130
    return (
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   131
    <div className="form-group pr-5">
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   132
      <textarea className='session-page-title form-control border-primary bg-secondary text-muted ml-3'
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   133
        onKeyDown={ this.saveEdit }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   134
        onChange={ this.onChange }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   135
        type="textarea"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   136
        name="title"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   137
        defaultValue={ this.props.currentSession.title || 'Espace titre' }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   138
        placeholder="Espace titre"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   139
        ref={title => this.title = title}
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   140
      >
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   141
      </textarea>
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   142
    </div>
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   143
    );
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   144
    }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   145
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   146
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   147
  descriptionEditMode = () => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   148
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   149
  if (this.state.descriptionEditMode === false) {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   150
    return (
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   151
    <div
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   152
      onClick={this.toggleOnDescriptionEditMode}
170
7da1d5137b0b Upgrade dependencies and correct theme colors
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   153
      className="session-page-description border-0 bg-irinotes-headers text-muted ml-3"
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   154
    >
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   155
      { this.props.currentSession.description || 'Espace description' }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   156
    </div>
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   157
  );
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   158
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   159
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   160
  if (this.state.descriptionEditMode === true) {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   161
  return (
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   162
    <div className="form-group mt-2 pb-2">
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   163
    <textarea className="session-page-description form-control border-primary bg-secondary text-muted ml-3"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   164
      onKeyDown={ this.saveEdit }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   165
      onChange={ this.onChange }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   166
      type="textarea"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   167
      name="description"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   168
      defaultValue={ this.props.currentSession.description || 'Espace description' }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   169
      placeholder="Espace description"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   170
      ref={desc => this.desc = desc}
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   171
    >
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   172
    </textarea>
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   173
  </div>
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   174
  );
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   175
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   176
}
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   177
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   178
  render() {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   179
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   180
    if (!this.props.currentSession) {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   181
      return (
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   182
        <form></form>
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   183
      )
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   184
    }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   185
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   186
    return (
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   187
        <div className="session-page-panel panel-default sticky-top">
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   188
          <div className="session-page-card card-body bg-secondary pr-5">
143
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 135
diff changeset
   189
            <form onSubmit={ e => { e.preventDefault() } }>
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   190
              {this.titleEditMode()}
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   191
              {this.descriptionEditMode()}
143
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 135
diff changeset
   192
            </form>
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 135
diff changeset
   193
          </div>
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 135
diff changeset
   194
        </div>
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   195
    );
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   196
  }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   197
}
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   198
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   199
function mapStateToProps(state, props) {
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   200
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   201
  let group;
168
ea92f4fe783d - move SlateEditor and dependencies to its own folder
ymh <ymh.work@gmail.com>
parents: 164
diff changeset
   202
  if (props.session && props.session.group) {
ea92f4fe783d - move SlateEditor and dependencies to its own folder
ymh <ymh.work@gmail.com>
parents: 164
diff changeset
   203
    group = state.groups.find(group => props.session.group === group.name)
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   204
  }
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   205
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   206
  return {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   207
    currentSession: props.session,
168
ea92f4fe783d - move SlateEditor and dependencies to its own folder
ymh <ymh.work@gmail.com>
parents: 164
diff changeset
   208
    createGroup: state.createGroup,
ea92f4fe783d - move SlateEditor and dependencies to its own folder
ymh <ymh.work@gmail.com>
parents: 164
diff changeset
   209
    groups: state.groups,
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   210
    group
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   211
  };
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   212
}
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   213
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   214
function mapDispatchToProps(dispatch) {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   215
  return {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   216
    sessionsActions: bindActionCreators(sessionsActions, dispatch),
100
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
   217
    authActions: bindActionCreators(authActions, dispatch),
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   218
  }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   219
}
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   220
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   221
export default connect(mapStateToProps, mapDispatchToProps)(SessionForm);