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