Browse Source

static integration of workspace file list

Skylsmoi 6 years ago
parent
commit
b69dd4cf70

+ 1 - 0
src/component/common/Input/Button.jsx View File

@@ -7,6 +7,7 @@ const Button = props => {
7 7
     <button
8 8
       type={props.htmlType}
9 9
       className={classnames(props.customClass, 'btn', `btn-${props.bootstrapType}`)}
10
+      onClick={props.onClick}
10 11
     >
11 12
       {props.label}
12 13
     </button>

+ 46 - 0
src/component/common/Input/DropdownCreateButton.jsx View File

@@ -0,0 +1,46 @@
1
+import React from 'react'
2
+import PropTypes from 'prop-types'
3
+import classnames from 'classnames'
4
+
5
+const DropdownCreateButton = props => {
6
+  return (
7
+    <div className={classnames(props.parentClass, props.customClass, 'dropdownCreateBtn')}>
8
+      <button
9
+        className={classnames(`${props.parentClass}__label`, 'dropdownCreateBtn__label btn btn-succes dropdown-toggle')}
10
+        type='button'
11
+        id='dropdownCreateBtn'
12
+        data-toggle='dropdown'
13
+        aria-haspopup='true'
14
+        aria-expanded='false'
15
+      >
16
+        <div className={classnames(`${props.parentClass}__label__text`, 'dropdownCreateBtn__label__text')}>
17
+          Créer ...
18
+        </div>
19
+      </button>
20
+
21
+      <div
22
+        className={classnames(`${props.parentClass}__setting`, 'dropdownCreateBtn__setting dropdown-menu')}
23
+        aria-labelledby='dropdownCreateBtn'
24
+      >
25
+        <div className='setting__link dropdown-item'>
26
+          Créer un workspace
27
+        </div>
28
+        <div className='setting__link dropdown-item'>
29
+          Créer un fichiers
30
+        </div>
31
+      </div>
32
+    </div>
33
+  )
34
+}
35
+
36
+export default DropdownCreateButton
37
+
38
+DropdownCreateButton.propTypes = {
39
+  parentClass: PropTypes.string,
40
+  customClass: PropTypes.string
41
+}
42
+
43
+DropdownCreateButton.defaultProps = {
44
+  parentClass: '',
45
+  customClass: ''
46
+}

+ 23 - 0
src/component/common/layout/PageContent.jsx View File

@@ -0,0 +1,23 @@
1
+import React from 'react'
2
+import PropTypes from 'prop-types'
3
+import classnames from 'classnames'
4
+
5
+const PageContent = props => {
6
+  return (
7
+    <div className={classnames(props.parentClass, props.customClass, 'pageContentGeneric')}>
8
+      {props.children}
9
+    </div>
10
+  )
11
+}
12
+
13
+PageContent.propTypes = {
14
+  parentClass: PropTypes.string,
15
+  customClass: PropTypes.string
16
+}
17
+
18
+PageContent.defaultProps = {
19
+  parentClass: '',
20
+  customClass: ''
21
+}
22
+
23
+export default PageContent

+ 27 - 0
src/component/common/layout/PageTitle.jsx View File

@@ -0,0 +1,27 @@
1
+import React from 'react'
2
+import PropTypes from 'prop-types'
3
+import classnames from 'classnames'
4
+
5
+const PageTitle = props => {
6
+  return (
7
+    <div className={classnames(props.parentClass, props.customClass, 'pageTitleGeneric')}>
8
+      <div className={classnames(`${props.parentClass}__title`, 'pageTitleGeneric__title')}>
9
+        {props.title}
10
+      </div>
11
+      {props.children}
12
+    </div>
13
+  )
14
+}
15
+
16
+PageTitle.propTypes = {
17
+  title: PropTypes.string.isRequired,
18
+  parentClass: PropTypes.string,
19
+  customClass: PropTypes.string
20
+}
21
+
22
+PageTitle.defaultProps = {
23
+  parentClass: '',
24
+  customClass: ''
25
+}
26
+
27
+export default PageTitle

+ 35 - 0
src/component/common/layout/PageWrapper.jsx View File

@@ -0,0 +1,35 @@
1
+import React from 'react'
2
+import PropTypes from 'prop-types'
3
+import classnames from 'classnames'
4
+import PageTitle from './PageTitle.jsx'
5
+import PageContent from './PageContent.jsx'
6
+
7
+const PageWrapper = props => {
8
+  return (
9
+    <div className={classnames(props.customeClass, 'pageWrapperGeneric')}>
10
+      <div className='container-fluid'>
11
+        {props.children}
12
+      </div>
13
+    </div>
14
+  )
15
+}
16
+
17
+export default PageWrapper
18
+
19
+PageWrapper.propTypes = {
20
+  customClass: PropTypes.string,
21
+  children: PropTypes.arrayOf((children, key, componentName /* , location, propFullName */) => {
22
+    if (
23
+      children.length > 2 ||
24
+      children[0].type !== PageTitle ||
25
+      children[1].type !== PageContent
26
+      // children.some(p => p.type !== CardHeader && p.type !== CardBody)
27
+    ) {
28
+      return new Error(`PropType Error: childrens of ${componentName} must be: 1 PageTitle and 1 PageContent.`)
29
+    }
30
+  }).isRequired
31
+}
32
+
33
+PageWrapper.defaultProps = {
34
+  customClass: ''
35
+}

+ 185 - 0
src/container/Chat.jsx View File

@@ -0,0 +1,185 @@
1
+import React, { Component } from 'react'
2
+import classnames from 'classnames'
3
+import imgProfil from '../img/img_profil.png'
4
+
5
+class Chat extends Component {
6
+  render () {
7
+    return (
8
+      <div className={classnames('wsFileChat wsFileGeneric', {'visible': this.props.visible})}>
9
+        <div className='wsFileChat__header wsFileGeneric__header'>
10
+          <div className='wsFileGeneric__header__icon'>
11
+            <i className='fa fa-comments' />
12
+          </div>
13
+          <div className='wsFileGeneric__header__text mr-auto'>
14
+            Discussions à propos du nouveau système de facturation
15
+          </div>
16
+          <div className='wsFileGeneric__header__close'>
17
+            <i className='fa fa-times' />
18
+          </div>
19
+        </div>
20
+        <div className='wsFileGeneric__option'>
21
+          <div className='wsFileGeneric__option__menu'>
22
+            <div className='wsFileGeneric__option__menu__action'>
23
+              <i className='fa fa-pencil' />
24
+            </div>
25
+            <div className='wsFileGeneric__option__menu__action'>
26
+              <i className='fa fa-archive' />
27
+            </div>
28
+            <div className='wsFileGeneric__option__menu__action'>
29
+              <i className='fa fa-trash' />
30
+            </div>
31
+          </div>
32
+        </div>
33
+        <div className='wsFileChat__wrapper wsFileGeneric__wrapper'>
34
+          <ul className='wsFileChat__messagelist wsFileGeneric__messagelist'>
35
+
36
+            <li className='wsFileChat__messagelist__item wsFileGeneric__messagelist__item sended'>
37
+              <div className='wsFileGeneric__messagelist__item__avatar'>
38
+                <img src={imgProfil} alt='avatar' />
39
+              </div>
40
+              <div className='wsFileGeneric__messagelist__item__createhour'>
41
+                27/11/17 à 11h45
42
+              </div>
43
+              <div className='wsFileChat__messagelist__item__content wsFileGeneric__messagelist__item__content'>
44
+                Proident esse laboris in sed officia exercitation ut anim ea.
45
+              </div>
46
+            </li>
47
+
48
+            <li className='wsFileGeneric__messagelist__item received'>
49
+              <div className='wsFileGeneric__messagelist__item__avatar'>
50
+                <img src={imgProfil} alt='avatar' />
51
+              </div>
52
+              <div className='wsFileGeneric__messagelist__item__createhour'>
53
+                27/11/17 à 11h47
54
+              </div>
55
+              <div className='wsFileChat__messagelist__item__content wsFileGeneric__messagelist__item__content'>
56
+                Proident esse laboris in sed officia exercitation ut anim ea.
57
+                Proident esse laboris in sed officia exercitation ut anim ea.
58
+                Proident esse laboris in sed officia exercitation ut anim ea.
59
+                Proident esse laboris in sed officia exercitation ut anim ea.
60
+                Proident esse laboris in sed officia exercitation ut anim ea.
61
+              </div>
62
+            </li>
63
+
64
+            <li className='wsFileGeneric__messagelist__item sended'>
65
+              <div className='wsFileGeneric__messagelist__item__avatar'>
66
+                <img src={imgProfil} alt='avatar' />
67
+              </div>
68
+              <div className='wsFileGeneric__messagelist__item__createhour'>
69
+                27/11/17 à 11h45
70
+              </div>
71
+              <div className='wsFileChat__messagelist__item__content wsFileGeneric__messagelist__item__content'>
72
+                Proident esse laboris in sed officia exercitation ut anim ea.
73
+              </div>
74
+            </li>
75
+
76
+            <li className='wsFileGeneric__messagelist__item sended'>
77
+              <div className='wsFileGeneric__messagelist__item__avatar'>
78
+                <img src={imgProfil} alt='avatar' />
79
+              </div>
80
+              <div className='wsFileGeneric__messagelist__item__createhour'>
81
+                27/11/17 à 11h45
82
+              </div>
83
+              <div className='wsFileChat__messagelist__item__content wsFileGeneric__messagelist__item__content'>
84
+                Proident esse laboris in sed officia exercitation ut anim ea.
85
+              </div>
86
+            </li>
87
+
88
+            <li className='wsFileGeneric__messagelist__item received'>
89
+              <div className='wsFileGeneric__messagelist__item__avatar'>
90
+                <img src={imgProfil} alt='avatar' />
91
+              </div>
92
+              <div className='wsFileGeneric__messagelist__item__createhour'>
93
+                27/11/17 à 11h47
94
+              </div>
95
+              <div className='wsFileChat__messagelist__item__content wsFileGeneric__messagelist__item__content'>
96
+                Proident esse laboris in sed officia exercitation ut anim ea.
97
+                Proident esse laboris in sed officia exercitation ut anim ea.
98
+                Proident esse laboris in sed officia exercitation ut anim ea.
99
+                Proident esse laboris in sed officia exercitation ut anim ea.
100
+                Proident esse laboris in sed officia exercitation ut anim ea.
101
+              </div>
102
+            </li>
103
+
104
+            <li className='wsFileGeneric__messagelist__item received'>
105
+              <div className='wsFileGeneric__messagelist__item__avatar'>
106
+                <img src={imgProfil} alt='avatar' />
107
+              </div>
108
+              <div className='wsFileGeneric__messagelist__item__createhour'>
109
+                27/11/17 à 11h47
110
+              </div>
111
+              <div className='wsFileChat__messagelist__item__content wsFileGeneric__messagelist__item__content'>
112
+                Proident esse laboris in sed officia exercitation ut anim ea.
113
+                Proident esse laboris in sed officia exercitation ut anim ea.
114
+                Proident esse laboris in sed officia exercitation ut anim ea.
115
+                Proident esse laboris in sed officia exercitation ut anim ea.
116
+                Proident esse laboris in sed officia exercitation ut anim ea.
117
+              </div>
118
+            </li>
119
+
120
+            <li className='wsFileGeneric__messagelist__item sended'>
121
+              <div className='wsFileGeneric__messagelist__item__avatar'>
122
+                <img src={imgProfil} alt='avatar' />
123
+              </div>
124
+              <div className='wsFileGeneric__messagelist__item__createhour'>
125
+                27/11/17 à 11h45
126
+              </div>
127
+              <div className='wsFileChat__messagelist__item__content wsFileGeneric__messagelist__item__content'>
128
+                Proident esse laboris in sed officia exercitation ut anim ea.
129
+              </div>
130
+            </li>
131
+
132
+            <li className='wsFileGeneric__messagelist__item received'>
133
+              <div className='wsFileGeneric__messagelist__item__avatar'>
134
+                <img src={imgProfil} alt='avatar' />
135
+              </div>
136
+              <div className='wsFileGeneric__messagelist__item__createhour'>
137
+                27/11/17 à 11h47
138
+              </div>
139
+              <div className='wsFileChat__messagelist__item__content wsFileGeneric__messagelist__item__content'>
140
+                Proident esse laboris in sed officia exercitation ut anim ea.
141
+                Proident esse laboris in sed officia exercitation ut anim ea.
142
+                Proident esse laboris in sed officia exercitation ut anim ea.
143
+                Proident esse laboris in sed officia exercitation ut anim ea.
144
+                Proident esse laboris in sed officia exercitation ut anim ea.
145
+              </div>
146
+            </li>
147
+
148
+            <li className='wsFileGeneric__messagelist__item sended'>
149
+              <div className='wsFileGeneric__messagelist__item__avatar'>
150
+                <img src={imgProfil} alt='avatar' />
151
+              </div>
152
+              <div className='wsFileGeneric__messagelist__item__createhour'>
153
+                27/11/17 à 11h45
154
+              </div>
155
+              <div className='wsFileChat__messagelist__item__content wsFileGeneric__messagelist__item__content'>
156
+                Proident esse laboris in sed officia exercitation ut anim ea.
157
+              </div>
158
+            </li>
159
+
160
+          </ul>
161
+          <form className='wsFileChat__texteditor wsFileGeneric__texteditor'>
162
+            <div className='wsFileChat__texteditor__simpletext wsFileGeneric__texteditor__simpletext input-group'>
163
+              <input type='text' className='wsFileChat__texteditor__simpletext__input wsFileGeneric__texteditor__simpletext__input form-control' placeholder='...' />
164
+              <div className='wsFileChat__texteditor__simpletext__icon wsFileGeneric__texteditor__simpletext__icon input-group-addon'>
165
+                <i className='fa fa-font' />
166
+              </div>
167
+            </div>
168
+            <div className='wsFileGeneric__texteditor__wysiwyg d-none d-xl-block'>
169
+              <textarea />
170
+            </div>
171
+            <div className='wsFileChat__texteditor__submit wsFileGeneric__texteditor__submit d-xl-flex justify-content-xl-center'>
172
+              <button type='submit' className='wsFileChat__texteditor__submit__btn wsFileGeneric__texteditor__submit__btn btn btn-primary'>Envoyer
173
+                <div className='wsFileChat__texteditor__submit__btn__icon wsFileGeneric__texteditor__submit__btn__icon'>
174
+                  <i className='fa fa-paper-plane-o' />
175
+                </div>
176
+              </button>
177
+            </div>
178
+          </form>
179
+        </div>
180
+      </div>
181
+    )
182
+  }
183
+}
184
+
185
+export default Chat

+ 55 - 0
src/container/FileItem.jsx View File

@@ -0,0 +1,55 @@
1
+import React, { Component } from 'react'
2
+
3
+class FileItem extends Component {
4
+  render () {
5
+    const { type, status, customClass } = this.props
6
+
7
+    let faClass = ''
8
+    if (type === 'file') faClass = 'fa fa-file-text-o docandfile-color'
9
+    else if (type === 'chat') faClass = 'fa fa-comments talk-color'
10
+    else if (type === 'task') faClass = 'fa fa-list-ul task-color'
11
+
12
+    let iconStatus = ''
13
+    if (status === 'current') iconStatus = 'fa fa-cogs current-color'
14
+    else if (status === 'nouse') iconStatus = 'fa fa-ban nouse-color'
15
+    else if (status === 'check') iconStatus = 'fa fa-check check-color'
16
+
17
+    let classInFolder = ''
18
+    if (customClass === 'inFolder') classInFolder = 'inFolder'
19
+
20
+    return (
21
+      <div className={'fileitem__rowfile align-items-center ' + (classInFolder)} onClick={this.props.onClickElement}>
22
+        <div className='col-2 col-sm-2 col-md-2 col-lg-2 col-xl-1'>
23
+          <div className='fileitem__rowfile__type'>
24
+            <i className={faClass} />
25
+          </div>
26
+        </div>
27
+        <div className='col-8 col-sm-8 col-md-8 col-lg-8 col-xl-10'>
28
+          <div className='fileitem__rowfile__name'>
29
+            <div className='fileitem__rowfile__name__text'>
30
+              { this.props.name }
31
+            </div>
32
+            <div className='fileitem__rowfile__name__icons d-none d-md-flex'>
33
+              <div className='fileitem__rowfile__name__icons__download'>
34
+                <i className='fa fa-download' />
35
+              </div>
36
+              <div className='fileitem__rowfile__name__icons__archive'>
37
+                <i className='fa fa-archive' />
38
+              </div>
39
+              <div className='fileitem__rowfile__name__icons__delete'>
40
+                <i className='fa fa-trash-o' />
41
+              </div>
42
+            </div>
43
+          </div>
44
+        </div>
45
+        <div className='col-2 col-sm-2 col-md-2 col-lg-2 col-xl-1'>
46
+          <div className='fileitem__rowfile__status'>
47
+            <i className={iconStatus} />
48
+          </div>
49
+        </div>
50
+      </div>
51
+    )
52
+  }
53
+}
54
+
55
+export default FileItem

+ 27 - 0
src/container/FileItemHeader.jsx View File

@@ -0,0 +1,27 @@
1
+import React, { Component } from 'react'
2
+
3
+class FileItemHeader extends Component {
4
+  render () {
5
+    return (
6
+      <div className='fileitemheader'>
7
+        <div className='col-2 col-sm-2 col-md-2 col-lg-2 col-xl-1'>
8
+          <div className='fileitemheader__type'>
9
+            Type
10
+          </div>
11
+        </div>
12
+        <div className='col-8 col-sm-8 col-md-8 col-lg-8 col-xl-10'>
13
+          <div className='fileitemheader__name'>
14
+            Nom du document ou fichier
15
+          </div>
16
+        </div>
17
+        <div className='col-2 col-sm-2 col-md-2 col-lg-2 col-xl-1'>
18
+          <div className='fileitemheader__status'>
19
+            Statut
20
+          </div>
21
+        </div>
22
+      </div>
23
+    )
24
+  }
25
+}
26
+
27
+export default FileItemHeader

+ 51 - 0
src/container/Folder.jsx View File

@@ -0,0 +1,51 @@
1
+import React, { Component } from 'react'
2
+
3
+class Folder extends Component {
4
+  constructor (props) {
5
+    super(props)
6
+    this.state = {
7
+      open: false
8
+    }
9
+    this.handleClickToggleFolder = this.handleClickToggleFolder.bind(this)
10
+  }
11
+
12
+  handleClickToggleFolder = () => this.setState({open: !this.state.open})
13
+
14
+  render () {
15
+    return (
16
+      <div className={'folder' + (this.state.open ? ' active' : '')}>
17
+        <div className='folder__header' onClick={this.handleClickToggleFolder}>
18
+          <div className='folder__header__triangleborder'>
19
+            <div className='folder__header__triangleborder__triangle' />
20
+          </div>
21
+          <div className='folder__header__name'>
22
+            <div className='folder__header__name__icon'>
23
+              <i className='fa fa-folder-open-o' />
24
+            </div>
25
+            <div className='folder__header__name__text'>
26
+              Dossier Facture
27
+            </div>
28
+            <div className='folder__header__name__addbtn'>
29
+              <div className='folder__header__name__addbtn__text btn btn-primary'>
30
+                créer ...
31
+              </div>
32
+            </div>
33
+          </div>
34
+          <div className='folder__header__contenttype'>
35
+            <div className='folder__header__contenttype__text'>
36
+              Type de Contenu :
37
+            </div>
38
+            <div className='folder__header__contenttype__icon'>
39
+              <i className='fa fa-list-ul' />
40
+              <i className='fa fa-file-text-o' />
41
+              <i className='fa fa-comments' />
42
+            </div>
43
+          </div>
44
+        </div>
45
+        { this.props.children }
46
+      </div>
47
+    )
48
+  }
49
+}
50
+
51
+export default Folder

+ 7 - 1
src/container/Login.jsx View File

@@ -25,7 +25,13 @@ class Login extends React.Component {
25 25
   handleChangePassword = e => this.setState({inputPassword: e.target.value})
26 26
   handleChangeRememberMe = () => this.setState(prev => ({inputRememberMe: !prev.inputRememberMe}))
27 27
 
28
-  handleClickSubmit = () => this.props.dispatch(userLogin(this.state.inputLogin, this.state.inputPassword))
28
+  handleClickSubmit = () => {
29
+    const { history, dispatch } = this.props
30
+    const { inputLogin, inputPassword } = this.state
31
+
32
+    dispatch(userLogin(inputLogin, inputPassword))
33
+    .then(() => history.push('/'))
34
+  }
29 35
 
30 36
   render () {
31 37
     return (

+ 163 - 0
src/container/PageText.jsx View File

@@ -0,0 +1,163 @@
1
+import React, { Component } from 'react'
2
+import classnames from 'classnames'
3
+import imgProfilOrange from '../img/imgProfil_orange.png'
4
+import imgProfilReverse from '../img/imgProfil_reverse.png'
5
+
6
+class PageText extends Component {
7
+  render () {
8
+    return (
9
+      <div className={classnames('wsFileText wsFileGeneric', {'visible': this.props.visible})}>
10
+        <div className='wsFileText__header wsFileGeneric__header'>
11
+          <div className='wsFileGeneric__header__icon'>
12
+            <i className='fa fa-file-text-o' />
13
+          </div>
14
+          <div className='wsFileText__header__title wsFileGeneric__header__title mr-auto'>
15
+            Facture 57840 - Jean-michel Chevalier - 04/09/2017
16
+          </div>
17
+          <div className='wsFileGeneric__header__close'>
18
+            <i className='fa fa-times' />
19
+          </div>
20
+        </div>
21
+        <div className='wsFileGeneric__option'>
22
+          <div className='wsFileGeneric__option__menu'>
23
+            <div className='wsFileGeneric__option__menu__action'>
24
+              <i className='fa fa-pencil' />
25
+            </div>
26
+            <div className='wsFileGeneric__option__menu__action'>
27
+              <i className='fa fa-archive' />
28
+            </div>
29
+            <div className='wsFileGeneric__option__menu__action'>
30
+              <i className='fa fa-trash' />
31
+            </div>
32
+          </div>
33
+        </div>
34
+        <div className='wsFileText__contentpage wsFileGeneric__contentpage'>
35
+          <div className='wsFileText__contentpage__textnote'>
36
+            <div className='wsFileText__contentpage__textnote__latestversion'>
37
+              Dernière version : v3
38
+            </div>
39
+            <div className='wsFileText__contentpage__textnote__title'>
40
+              Titre de 30px de font size
41
+            </div>
42
+            <div className='wsFileText__contentpage__textnote__data'>
43
+              Labore tempor sunt id quis quis velit ut officia amet ut
44
+              adipisicing in in commodo exercitation cupidatat culpa
45
+              eiusmo dolor consectetur dolor ut proident proident culpamet
46
+              denim consequat in sit ex ullamco duis.
47
+              <br />
48
+              Labore tempor sunt id quis quis velit ut officia amet ut
49
+              adipisicing in in commodo exercitation cupidatat culpa
50
+              eiusmo dolor consectetur dolor ut proident proident culpamet
51
+              denim consequat in sit ex ullamco duis.
52
+              <br />
53
+              Labore tempor sunt id quis quis velit ut officia amet ut
54
+              adipisicing in in commodo exercitation cupidatat culpa
55
+              eiusmo dolor consectetur dolor ut proident proident culpamet
56
+              denim consequat in sit ex ullamco duis.
57
+              <br />
58
+              Labore tempor sunt id quis quis velit ut officia amet ut
59
+              adipisicing in in commodo exercitation cupidatat culpa
60
+              eiusmo dolor consectetur dolor ut proident proident culpamet
61
+              denim consequat in sit ex ullamco duis.
62
+            </div>
63
+          </div>
64
+          <div className='wsFileText__contentpage__wrapper wsFileGeneric__wrapper'>
65
+            <div className='wsFileText__contentpage__header'>
66
+              Timeline
67
+            </div>
68
+
69
+            <ul className='wsFileText__contentpage__messagelist wsFileGeneric__messagelist'>
70
+
71
+              <li className='wsFileText__contentpage__messagelist__item wsFileGeneric__messagelist__item sended'>
72
+                <div className='wsFileText__contentpage__messagelist__item__avatar wsFileGeneric__messagelist__item__avatar'>
73
+                  <img src={imgProfilOrange} alt='avatar' />
74
+                </div>
75
+                <div className='wsFileText__contentpage__messagelist__item__createhour wsFileGeneric__messagelist__item__createhour'>
76
+                  27/11/17 à 11h45
77
+                </div>
78
+                <div className='wsFileText__contentpage__messagelist__item__content wsFileGeneric__messagelist__item__content'>
79
+                  Proident esse laboris in sed officia exercitation ut anim ea.
80
+                </div>
81
+              </li>
82
+
83
+              <li className='wsFileText__contentpage__messagelist__item wsFileGeneric__messagelist__item received'>
84
+                <div className='wsFileText__contentpage__messagelist__item__avatar wsFileGeneric__messagelist__item__avatar'>
85
+                  <img src={imgProfilReverse} alt='avatar' />
86
+                </div>
87
+                <div className='wsFileText__contentpage__messagelist__item__createhour wsFileGeneric__messagelist__item__createhour'>
88
+                  27/11/17 à 11h47
89
+                </div>
90
+                <div className='wsFileText__contentpage__messagelist__item__content wsFileGeneric__messagelist__item__content'>
91
+                  Proident esse laboris in sed officia exercitation ut anim ea.
92
+                  Proident esse laboris in sed officia exercitation ut anim ea.
93
+                  Proident esse laboris in sed officia exercitation ut anim ea.
94
+                  Proident esse laboris in sed officia exercitation ut anim ea.
95
+                  Proident esse laboris in sed officia exercitation ut anim ea.
96
+                </div>
97
+              </li>
98
+
99
+              <div className='wsFileText__contentpage__messagelist__version wsFileGeneric__messagelist__version'>
100
+                <div className='wsFileText__contentpage__messagelist__version__btn btn-primary'>
101
+                  <i className='fa fa-code-fork' />
102
+                  version 3
103
+                </div>
104
+                <div className='wsFileText__contentpage__messagelist__version__dateversion'>
105
+                  Créer le 22/11/17
106
+                </div>
107
+              </div>
108
+
109
+              <li className='wsFileText__contentpage__messagelist__item wsFileGeneric__messagelist__item sended'>
110
+                <div className='wsFileText__contentpage__messagelist__item__avatar wsFileGeneric__messagelist__item__avatar'>
111
+                  <img src={imgProfilOrange} alt='avatar' />
112
+                </div>
113
+                <div className='wsFileText__contentpage__messagelist__item__createhour wsFileGeneric__messagelist__item__createhour'>
114
+                  27/11/17 à 11h45
115
+                </div>
116
+                <div className='wsFileText__contentpage__messagelist__item__content wsFileGeneric__messagelist__item__content'>
117
+                  Proident esse laboris in sed officia exercitation ut anim ea.
118
+                </div>
119
+              </li>
120
+
121
+              <li className='wsFileText__contentpage__messagelist__item wsFileGeneric__messagelist__item received'>
122
+                <div className='wsFileText__contentpage__messagelist__item__avatar wsFileGeneric__messagelist__item__avatar'>
123
+                  <img src={imgProfilReverse} alt='avatar' />
124
+                </div>
125
+                <div className='wsFileText__contentpage__messagelist__item__createhour wsFileGeneric__messagelist__item__createhour'>
126
+                  27/11/17 à 11h47
127
+                </div>
128
+                <div className='wsFileText__contentpage__messagelist__item__content wsFileGeneric__messagelist__item__content'>
129
+                  Proident esse laboris in sed officia exercitation ut anim ea.
130
+                  Proident esse laboris in sed officia exercitation ut anim ea.
131
+                  Proident esse laboris in sed officia exercitation ut anim ea.
132
+                  Proident esse laboris in sed officia exercitation ut anim ea.
133
+                  Proident esse laboris in sed officia exercitation ut anim ea.
134
+                </div>
135
+              </li>
136
+
137
+            </ul>
138
+            <form className='wsFileText__contentpage__texteditor wsFileGeneric__texteditor'>
139
+              <div className='wsFileText__contentpage__texteditor__simpletext wsFileGeneric__texteditor__simpletext input-group'>
140
+                <input type='text' className='wsFileText__contentpage__texteditor__simpletext__input wsFileGeneric__texteditor__simpletext__input form-control' placeholder='...' />
141
+                <div className='wsFileText__contentpage__texteditor__simpletext__icon wsFileGeneric__texteditor__simpletext__icon input-group-addon'>
142
+                  <i className='fa fa-font' />
143
+                </div>
144
+              </div>
145
+              <div className='wsFileText__contentpage__texteditor__wysiwyg wsFileGeneric__texteditor__wysiwyg d-none d-xl-block'>
146
+                <textarea />
147
+              </div>
148
+              <div className='wsFileText__contentpage__texteditor__submit wsFileGeneric__texteditor__submit d-xl-flex justify-content-xl-center'>
149
+                <button type='submit' className='wsFileText__contentpage__texteditor__submit__btn wsFileGeneric__texteditor__submit__btn btn btn-primary'>Envoyer
150
+                  <div className='wsFileText__contentpage__texteditor__submit__btn__icon wsFileGeneric__texteditor__submit__btn__icon'>
151
+                    <i className='fa fa-paper-plane-o' />
152
+                  </div>
153
+                </button>
154
+              </div>
155
+            </form>
156
+          </div>
157
+        </div>
158
+      </div>
159
+    )
160
+  }
161
+}
162
+
163
+export default PageText

+ 246 - 230
src/container/Sidebar.jsx View File

@@ -1,6 +1,5 @@
1 1
 import React from 'react'
2
-import { connect } from 'react-redux'
3
-import { userLogin } from '../action-creator.async.js'
2
+import {connect} from 'react-redux'
4 3
 
5 4
 class Sidebar extends React.Component {
6 5
   // constructor (props) {
@@ -11,250 +10,267 @@ class Sidebar extends React.Component {
11 10
   //   }
12 11
   // }
13 12
 
14
-
15 13
   // <div className='sidebar-expandbar'>
16 14
   //   <i className='fa fa-minus-square-o sidebar-expandbar__icon' />
17 15
   // </div>
18 16
 
19
-render () {
17
+  render () {
20 18
     return (
21 19
       <div className='sidebar d-none d-lg-table-cell'>
22 20
         <nav className='sidebar__navigation navbar navbar-light'>
23
-        <div className='sidebar__navigation__menu'>
24
-        <ul className='sidebar__navigation__menu__workspace navbar-nav collapse navbar-collapse'>
25
-        <li className='sidebar__navigation__menu__workspace__item nav-item dropdown'>
26
-        <div className='sidebar__navigation__menu__workspace__item__number'>
27
-        01
28
-        </div>
29
-      <div className='sidebar__navigation__menu__workspace__item__name'>
30
-        Workspace 1
31
-      </div>
21
+          <div className='sidebar__navigation__menu'>
22
+            <ul className='sidebar__navigation__menu__workspace navbar-nav collapse navbar-collapse'>
23
+              <li className='sidebar__navigation__menu__workspace__item nav-item dropdown'>
24
+                <div className='sidebar__navigation__menu__workspace__item__number'>
25
+                  01
26
+                </div>
32 27
 
33
-      <div className='sidebar__navigation__menu__workspace__item__icon'>
34
-        <i className='fa fa-chevron-down' />
35
-        </div>
36
-      <ul className='sidebar__navigation__menu__workspace__item__submenu'>
37
-        <li className='sidebar__navigation__menu__workspace__item__submenu__dropdown'>
38
-          <div className='sidebar__navigation__menu__workspace__item__submenu__dropdown__showdropdown dropdown-toggle' role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
39
-            <div className='dropdown__icon'>
40
-              <i className='fa fa-th' />
41
-            </div>
42
-            <div className='dropdown__title' id='navbarDropdown'>
43
-              <div className='dropdown__title__text'>
44
-                Tous les fichiers
45
-              </div>
46
-            </div>
47
-          </div>
48
-          <div className='dropdown__subdropdown dropdown-menu' aria-labelledby='navbarDropdown'>
49
-            <div className='dropdown__subdropdown__item dropdown-item'>
50
-              <div className='dropdown__subdropdown__item__iconfile alignname'>
51
-                <i className='fa fa-file-text-o' />
52
-              </div>
53
-              <div className='dropdown__subdropdown__item__textfile alignname'>
54
-                Documents Archivés
55
-              </div>
56
-            </div>
57
-            <div className='dropdown__subdropdown__item dropdown-item'>
58
-              <div className='dropdown__subdropdown__item__iconfile alignname'>
59
-                <i className='fa fa-file-text-o' />
60
-              </div>
61
-              <div className='dropdown__subdropdown__item__textfile alignname'>
62
-                Documents Supprimés
63
-              </div>
64
-            </div>
65
-          </div>
66
-        </li>
67
-        <li className='sidebar__navigation__menu__workspace__item__submenu__dropdown'>
68
-          <div className='sidebar__navigation__menu__workspace__item__submenu__dropdown__showdropdown dropdown-toggle' role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
69
-            <div className='dropdown__icon'>
70
-              <i className='fa fa-signal dashboard-color' />
71
-            </div>
72
-            <div className='dropdown__title' id='navbarDropdown'>
73
-              <div className='dropdown__title__text'>
74
-                Tableau de bord
75
-              </div>
76
-            </div>
77
-          </div>
78
-          <div className='dropdown__subdropdown dropdown-menu' aria-labelledby='navbarDropdown'>
79
-            <div className='dropdown__subdropdown__item dropdown-item'>
80
-              <div className='dropdown__subdropdown__item__iconfile alignname'>
81
-                <i className='fa fa-file-text-o' />
82
-              </div>
83
-              <div className='dropdown__subdropdown__item__textfile alignname'>
84
-                Documents Archivés
85
-              </div>
86
-            </div>
87
-            <div className='dropdown__subdropdown__item dropdown-item'>
88
-              <div className='dropdown__subdropdown__item__iconfile alignname'>
89
-                <i className='fa fa-file-text-o' />
90
-              </div>
91
-              <div className='dropdown__subdropdown__item__textfile alignname'>
92
-                Documents Supprimés
93
-              </div>
94
-            </div>
95
-          </div>
96
-        </li>
97
-        <li className='sidebar__navigation__menu__workspace__item__submenu__dropdown'>
98
-          <div className='sidebar__navigation__menu__workspace__item__submenu__dropdown__showdropdown dropdown-toggle' role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
99
-            <div className='dropdown__icon'>
100
-              <i className='fa fa-list-ul task-color' />
101
-            </div>
102
-            <div className='dropdown__title'>
103
-              <div className='dropdown__title__text'>
104
-                Liste des tâches
105
-              </div>
106
-            </div>
107
-          </div>
108
-          <div className='dropdown__subdropdown dropdown-menu' aria-labelledby='navbarDropdown'>
109
-            <div className='dropdown__subdropdown__item dropdown-item'>
110
-              <div className='dropdown__subdropdown__item__iconfile alignname'>
111
-                <i className='fa fa-file-text-o' />
112
-              </div>
113
-              <div className='dropdown__subdropdown__item__textfile alignname'>
114
-                Documents Archivés
115
-              </div>
116
-            </div>
117
-            <div className='dropdown__subdropdown__item dropdown-item'>
118
-              <div className='dropdown__subdropdown__item__iconfile alignname'>
119
-                <i className='fa fa-file-text-o' />
120
-              </div>
121
-              <div className='dropdown__subdropdown__item__textfile alignname'>
122
-                Documents Supprimés
123
-              </div>
124
-            </div>
125
-          </div>
126
-        </li>
127
-        <li className='sidebar__navigation__menu__workspace__item__submenu__dropdown'>
128
-          <div className='sidebar__navigation__menu__workspace__item__submenu__dropdown__showdropdown dropdown-toggle' role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
129
-            <div className='dropdown__icon'>
130
-              <i className='fa fa-folder-o docandfile-color' />
131
-            </div>
132
-            <div className='dropdown__title'>
133
-              <div className='dropdown__title__text'>
134
-                Documents & fichiers
135
-              </div>
136
-            </div>
137
-          </div>
138
-          <div className='dropdown__subdropdown dropdown-menu' aria-labelledby='navbarDropdown'>
139
-            <div className='dropdown__subdropdown__item dropdown-item'>
140
-              <div className='dropdown__subdropdown__item__iconfile alignname'>
141
-                <i className='fa fa-file-text-o' />
142
-              </div>
143
-              <div className='dropdown__subdropdown__item__textfile alignname'>
144
-                Documents Archivés
145
-              </div>
146
-            </div>
147
-            <div className='dropdown__subdropdown__item dropdown-item'>
148
-              <div className='dropdown__subdropdown__item__iconfile alignname'>
149
-                <i className='fa fa-file-text-o' />
150
-              </div>
151
-              <div className='dropdown__subdropdown__item__textfile alignname'>
152
-                Documents Supprimés
153
-              </div>
154
-            </div>
155
-          </div>
156
-        </li>
157
-        <li className='sidebar__navigation__menu__workspace__item__submenu__dropdown'>
158
-          <div className='sidebar__navigation__menu__workspace__item__submenu__dropdown__showdropdown dropdown-toggle' role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
159
-            <div className='dropdown__icon'>
160
-              <i className='fa fa-comments talk-color' />
161
-            </div>
162
-            <div className='dropdown__title'>
163
-              <div className='dropdown__title__text'>
164
-                Discussions
165
-              </div>
166
-            </div>
167
-          </div>
168
-          <div className='dropdown__subdropdown dropdown-menu' aria-labelledby='navbarDropdown'>
169
-            <div className='dropdown__subdropdown__item dropdown-item'>
170
-              <div className='dropdown__subdropdown__item__iconfile alignname'>
171
-                <i className='fa fa-file-text-o' />
172
-              </div>
173
-              <div className='dropdown__subdropdown__item__textfile alignname'>
174
-                Documents Archivés
175
-              </div>
176
-            </div>
177
-            <div className='dropdown__subdropdown__item dropdown-item'>
178
-              <div className='dropdown__subdropdown__item__iconfile alignname'>
179
-                <i className='fa fa-file-text-o' />
180
-              </div>
181
-              <div className='dropdown__subdropdown__item__textfile alignname'>
182
-                Documents Supprimés
183
-              </div>
184
-            </div>
185
-          </div>
186
-        </li>
187
-        <li className='sidebar__navigation__menu__workspace__item__submenu__dropdown'>
188
-          <div className='sidebar__navigation__menu__workspace__item__submenu__dropdown__showdropdown dropdown-toggle' role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
189
-            <div className='dropdown__icon'>
190
-              <i className='fa fa-calendar calendar-color' />
191
-            </div>
192
-            <div className='dropdown__title'>
193
-              <div className='dropdown__title__text'>
194
-                Calendrier
195
-              </div>
196
-            </div>
197
-          </div>
198
-          <div className='dropdown__subdropdown dropdown-menu' aria-labelledby='navbarDropdown'>
199
-            <div className='dropdown__subdropdown__item dropdown-item'>
200
-              <div className='dropdown__subdropdown__item__iconfile alignname'>
201
-                <i className='fa fa-file-text-o' />
202
-              </div>
203
-              <div className='dropdown__subdropdown__item__textfile alignname'>
204
-                Documents Archivés
205
-              </div>
206
-            </div>
207
-            <div className='dropdown__subdropdown__item dropdown-item'>
208
-              <div className='dropdown__subdropdown__item__iconfile alignname'>
209
-                <i className='fa fa-file-text-o' />
210
-              </div>
211
-              <div className='dropdown__subdropdown__item__textfile alignname'>
212
-                Documents Supprimés
213
-              </div>
214
-            </div>
215
-          </div>
216
-        </li>
217
-      </ul>
218
-      </li>
28
+                <div className='sidebar__navigation__menu__workspace__item__name'>
29
+                  Workspace 1
30
+                </div>
219 31
 
220
-      <li className='sidebar__navigation__menu__workspace__item nav-item dropdown'>
221
-        <div className='sidebar__navigation__menu__workspace__item__number'>
222
-          02
223
-        </div>
224
-        <div className='sidebar__navigation__menu__workspace__item__name'>
225
-          Workspace 2
226
-        </div>
32
+                <div className='sidebar__navigation__menu__workspace__item__icon'>
33
+                  <i className='fa fa-chevron-down' />
34
+                </div>
35
+                <ul className='sidebar__navigation__menu__workspace__item__submenu'>
36
+                  <li className='sidebar__navigation__menu__workspace__item__submenu__dropdown'>
37
+                    <div
38
+                      className='sidebar__navigation__menu__workspace__item__submenu__dropdown__showdropdown dropdown-toggle'
39
+                      role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
40
+                      <div className='dropdown__icon'>
41
+                        <i className='fa fa-th' />
42
+                      </div>
43
+                      <div className='dropdown__title' id='navbarDropdown'>
44
+                        <div className='dropdown__title__text'>
45
+                          Tous les fichiers
46
+                        </div>
47
+                      </div>
48
+                    </div>
49
+                    <div className='dropdown__subdropdown dropdown-menu' aria-labelledby='navbarDropdown'>
50
+                      <div className='dropdown__subdropdown__item dropdown-item'>
51
+                        <div className='dropdown__subdropdown__item__iconfile alignname'>
52
+                          <i className='fa fa-file-text-o' />
53
+                        </div>
54
+                        <div className='dropdown__subdropdown__item__textfile alignname'>
55
+                          Documents Archivés
56
+                        </div>
57
+                      </div>
58
+                      <div className='dropdown__subdropdown__item dropdown-item'>
59
+                        <div className='dropdown__subdropdown__item__iconfile alignname'>
60
+                          <i className='fa fa-file-text-o' />
61
+                        </div>
62
+                        <div className='dropdown__subdropdown__item__textfile alignname'>
63
+                          Documents Supprimés
64
+                        </div>
65
+                      </div>
66
+                    </div>
67
+                  </li>
227 68
 
228
-        <div className='sidebar__navigation__menu__workspace__item__icon'>
229
-          <i className='fa fa-chevron-down' />
230
-        </div>
231
-      </li>
69
+                  <li className='sidebar__navigation__menu__workspace__item__submenu__dropdown'>
70
+                    <div
71
+                      className='sidebar__navigation__menu__workspace__item__submenu__dropdown__showdropdown dropdown-toggle'
72
+                      role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
73
+                      <div className='dropdown__icon'>
74
+                        <i className='fa fa-signal dashboard-color' />
75
+                      </div>
76
+                      <div className='dropdown__title' id='navbarDropdown'>
77
+                        <div className='dropdown__title__text'>
78
+                          Tableau de bord
79
+                        </div>
80
+                      </div>
81
+                    </div>
82
+                    <div className='dropdown__subdropdown dropdown-menu' aria-labelledby='navbarDropdown'>
83
+                      <div className='dropdown__subdropdown__item dropdown-item'>
84
+                        <div className='dropdown__subdropdown__item__iconfile alignname'>
85
+                          <i className='fa fa-file-text-o' />
86
+                        </div>
87
+                        <div className='dropdown__subdropdown__item__textfile alignname'>
88
+                          Documents Archivés
89
+                        </div>
90
+                      </div>
91
+                      <div className='dropdown__subdropdown__item dropdown-item'>
92
+                        <div className='dropdown__subdropdown__item__iconfile alignname'>
93
+                          <i className='fa fa-file-text-o' />
94
+                        </div>
95
+                        <div className='dropdown__subdropdown__item__textfile alignname'>
96
+                          Documents Supprimés
97
+                        </div>
98
+                      </div>
99
+                    </div>
100
+                  </li>
232 101
 
233
-      <li className='sidebar__navigation__menu__workspace__item nav-item dropdown'>
234
-        <div className='sidebar__navigation__menu__workspace__item__number'>
235
-        03
236
-        </div>
237
-      <div className='sidebar__navigation__menu__workspace__item__name'>
238
-        Workspace 3
239
-      </div>
102
+                  <li className='sidebar__navigation__menu__workspace__item__submenu__dropdown'>
103
+                    <div
104
+                      className='sidebar__navigation__menu__workspace__item__submenu__dropdown__showdropdown dropdown-toggle'
105
+                      role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
106
+                      <div className='dropdown__icon'>
107
+                        <i className='fa fa-list-ul task-color' />
108
+                      </div>
109
+                      <div className='dropdown__title'>
110
+                        <div className='dropdown__title__text'>
111
+                          Liste des tâches
112
+                        </div>
113
+                      </div>
114
+                    </div>
115
+                    <div className='dropdown__subdropdown dropdown-menu' aria-labelledby='navbarDropdown'>
116
+                      <div className='dropdown__subdropdown__item dropdown-item'>
117
+                        <div className='dropdown__subdropdown__item__iconfile alignname'>
118
+                          <i className='fa fa-file-text-o' />
119
+                        </div>
120
+                        <div className='dropdown__subdropdown__item__textfile alignname'>
121
+                          Documents Archivés
122
+                        </div>
123
+                      </div>
124
+                      <div className='dropdown__subdropdown__item dropdown-item'>
125
+                        <div className='dropdown__subdropdown__item__iconfile alignname'>
126
+                          <i className='fa fa-file-text-o' />
127
+                        </div>
128
+                        <div className='dropdown__subdropdown__item__textfile alignname'>
129
+                          Documents Supprimés
130
+                        </div>
131
+                      </div>
132
+                    </div>
133
+                  </li>
240 134
 
241
-      <div className='sidebar__navigation__menu__workspace__item__icon'>
242
-        <i className='fa fa-chevron-down' />
243
-        </div>
244
-    </li>
245
-    </ul>
246
-    </div>
135
+                  <li className='sidebar__navigation__menu__workspace__item__submenu__dropdown'>
136
+                    <div
137
+                      className='sidebar__navigation__menu__workspace__item__submenu__dropdown__showdropdown dropdown-toggle'
138
+                      role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
139
+                      <div className='dropdown__icon'>
140
+                        <i className='fa fa-folder-o docandfile-color' />
141
+                      </div>
142
+                      <div className='dropdown__title'>
143
+                        <div className='dropdown__title__text'>
144
+                          Documents & fichiers
145
+                        </div>
146
+                      </div>
147
+                    </div>
148
+                    <div className='dropdown__subdropdown dropdown-menu' aria-labelledby='navbarDropdown'>
149
+                      <div className='dropdown__subdropdown__item dropdown-item'>
150
+                        <div className='dropdown__subdropdown__item__iconfile alignname'>
151
+                          <i className='fa fa-file-text-o' />
152
+                        </div>
153
+                        <div className='dropdown__subdropdown__item__textfile alignname'>
154
+                          Documents Archivés
155
+                        </div>
156
+                      </div>
157
+                      <div className='dropdown__subdropdown__item dropdown-item'>
158
+                        <div className='dropdown__subdropdown__item__iconfile alignname'>
159
+                          <i className='fa fa-file-text-o' />
160
+                        </div>
161
+                        <div className='dropdown__subdropdown__item__textfile alignname'>
162
+                          Documents Supprimés
163
+                        </div>
164
+                      </div>
165
+                    </div>
166
+                  </li>
167
+
168
+                  <li className='sidebar__navigation__menu__workspace__item__submenu__dropdown'>
169
+                    <div
170
+                      className='sidebar__navigation__menu__workspace__item__submenu__dropdown__showdropdown dropdown-toggle'
171
+                      role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
172
+                      <div className='dropdown__icon'>
173
+                        <i className='fa fa-comments talk-color' />
174
+                      </div>
175
+                      <div className='dropdown__title'>
176
+                        <div className='dropdown__title__text'>
177
+                          Discussions
178
+                        </div>
179
+                      </div>
180
+                    </div>
181
+                    <div className='dropdown__subdropdown dropdown-menu' aria-labelledby='navbarDropdown'>
182
+                      <div className='dropdown__subdropdown__item dropdown-item'>
183
+                        <div className='dropdown__subdropdown__item__iconfile alignname'>
184
+                          <i className='fa fa-file-text-o' />
185
+                        </div>
186
+                        <div className='dropdown__subdropdown__item__textfile alignname'>
187
+                          Documents Archivés
188
+                        </div>
189
+                      </div>
190
+                      <div className='dropdown__subdropdown__item dropdown-item'>
191
+                        <div className='dropdown__subdropdown__item__iconfile alignname'>
192
+                          <i className='fa fa-file-text-o' />
193
+                        </div>
194
+                        <div className='dropdown__subdropdown__item__textfile alignname'>
195
+                          Documents Supprimés
196
+                        </div>
197
+                      </div>
198
+                    </div>
199
+                  </li>
247 200
 
248
-    </nav>
249
-      <div className='sidebar__btnnewworkspace'>
250
-        <button className='sidebar__btnnewworkspace__btn btn btn-success'>
251
-          Créer un workspace
252
-        </button>
201
+                  <li className='sidebar__navigation__menu__workspace__item__submenu__dropdown'>
202
+                    <div
203
+                      className='sidebar__navigation__menu__workspace__item__submenu__dropdown__showdropdown dropdown-toggle'
204
+                      role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
205
+                      <div className='dropdown__icon'>
206
+                        <i className='fa fa-calendar calendar-color' />
207
+                      </div>
208
+                      <div className='dropdown__title'>
209
+                        <div className='dropdown__title__text'>
210
+                          Calendrier
211
+                        </div>
212
+                      </div>
213
+                    </div>
214
+                    <div className='dropdown__subdropdown dropdown-menu' aria-labelledby='navbarDropdown'>
215
+                      <div className='dropdown__subdropdown__item dropdown-item'>
216
+                        <div className='dropdown__subdropdown__item__iconfile alignname'>
217
+                          <i className='fa fa-file-text-o' />
218
+                        </div>
219
+                        <div className='dropdown__subdropdown__item__textfile alignname'>
220
+                          Documents Archivés
221
+                        </div>
222
+                      </div>
223
+                      <div className='dropdown__subdropdown__item dropdown-item'>
224
+                        <div className='dropdown__subdropdown__item__iconfile alignname'>
225
+                          <i className='fa fa-file-text-o' />
226
+                        </div>
227
+                        <div className='dropdown__subdropdown__item__textfile alignname'>
228
+                          Documents Supprimés
229
+                        </div>
230
+                      </div>
231
+                    </div>
232
+                  </li>
233
+                </ul>
234
+              </li>
235
+
236
+              <li className='sidebar__navigation__menu__workspace__item nav-item dropdown'>
237
+                <div className='sidebar__navigation__menu__workspace__item__number'>
238
+                  02
239
+                </div>
240
+                <div className='sidebar__navigation__menu__workspace__item__name'>
241
+                  Workspace 2
242
+                </div>
243
+
244
+                <div className='sidebar__navigation__menu__workspace__item__icon'>
245
+                  <i className='fa fa-chevron-down' />
246
+                </div>
247
+              </li>
248
+
249
+              <li className='sidebar__navigation__menu__workspace__item nav-item dropdown'>
250
+                <div className='sidebar__navigation__menu__workspace__item__number'>
251
+                  03
252
+                </div>
253
+                <div className='sidebar__navigation__menu__workspace__item__name'>
254
+                  Workspace 3
255
+                </div>
256
+
257
+                <div className='sidebar__navigation__menu__workspace__item__icon'>
258
+                  <i className='fa fa-chevron-down' />
259
+                </div>
260
+              </li>
261
+            </ul>
262
+          </div>
263
+        </nav>
264
+
265
+        <div className='sidebar__btnnewworkspace'>
266
+          <button className='sidebar__btnnewworkspace__btn btn btn-success'>
267
+            Créer un workspace
268
+          </button>
269
+        </div>
253 270
       </div>
254
-    </div>
255 271
     )
256 272
   }
257 273
 }
258 274
 
259
-const mapStateToProps = ({ user }) => ({ user })
275
+const mapStateToProps = ({user}) => ({user})
260 276
 export default connect(mapStateToProps)(Sidebar)

+ 9 - 5
src/container/Tracim.jsx View File

@@ -2,10 +2,10 @@ import React from 'react'
2 2
 import { connect } from 'react-redux'
3 3
 import Footer from '../component/Footer.jsx'
4 4
 import Header from './Header.jsx'
5
-// import Sidebar from './Sidebar.jsx'
5
+import Sidebar from './Sidebar.jsx'
6 6
 import Login from './Login.jsx'
7 7
 import Page from './Page.jsx'
8
-import Home from './Home.jsx'
8
+import Workspace from './Workspace.jsx'
9 9
 import {
10 10
   Route,
11 11
   withRouter
@@ -14,13 +14,17 @@ import PrivateRoute from './PrivateRoute.jsx'
14 14
 
15 15
 class Tracim extends React.Component {
16 16
   render () {
17
+    const { location } = this.props
17 18
     return (
18 19
       <div>
19 20
         <Header />
20 21
 
21
-        {/* <Sidebar /> */}
22
-        <PrivateRoute exact path='/' component={Home} />
23 22
         <Route path='/login' component={Login} />
23
+
24
+        { location.pathname !== '/login' && // cant find "except" in <Route path />
25
+          <Sidebar />
26
+        }
27
+        <Route exact path='/' component={Workspace} />
24 28
         <PrivateRoute path='/page' component={Page} />
25 29
 
26 30
         <Footer />
@@ -29,5 +33,5 @@ class Tracim extends React.Component {
29 33
   }
30 34
 }
31 35
 
32
-const mapStateToProps = ({ user }) => ({ user })
36
+const mapStateToProps = () => ({})
33 37
 export default withRouter(connect(mapStateToProps)(Tracim))

+ 87 - 0
src/container/Workspace.jsx View File

@@ -0,0 +1,87 @@
1
+import React from 'react'
2
+import { connect } from 'react-redux'
3
+import classnames from 'classnames'
4
+import Folder from './Folder.jsx'
5
+import FileItem from './FileItem.jsx'
6
+import FileItemHeader from './FileItemHeader.jsx'
7
+// import Chat from './Chat.jsx'
8
+// import PageText from './PageText.jsx'
9
+import PageWrapper from '../component/common/layout/PageWrapper.jsx'
10
+import PageTitle from '../component/common/layout/PageTitle.jsx'
11
+import PageContent from '../component/common/layout/PageContent.jsx'
12
+import DropdownCreateButton from '../component/common/Input/DropdownCreateButton.jsx'
13
+
14
+class Workspace extends React.Component {
15
+  constructor (props) {
16
+    super(props)
17
+    this.state = {
18
+      activeFileType: ''
19
+    }
20
+  }
21
+
22
+  render () {
23
+    return (
24
+      <PageWrapper customeClass='workspace'>
25
+        <PageTitle
26
+          parentClass='workspace__header'
27
+          customClass='justify-content-between'
28
+          title='Documents & Fichiers'
29
+        >
30
+          <DropdownCreateButton parentClass='workspace__header__btnaddworkspace' />
31
+        </PageTitle>
32
+
33
+        <PageContent parentClass='workspace__content'>
34
+
35
+          <div className='workspace__content__fileandfolder'>
36
+            <FileItemHeader />
37
+
38
+            <FileItem name='Facture 57841 - Pierre Maurice - 06/06/2017' type='file' status='current' />
39
+            <FileItem
40
+              type='file'
41
+              name='Facture 57840 - Jean-michel Chevalier - 04/09/2017'
42
+              status='check'
43
+              onClickElement={() => this.setState({activeFileType: 'file'})}
44
+            />
45
+            <FileItem
46
+              type='chat'
47
+              name='Discussions à propos du nouveau système de facturation'
48
+              status='nouse'
49
+              customClass='inFolder'
50
+              onClickElement={() => this.setState({activeFileType: 'chat'})}
51
+            />
52
+
53
+            <Folder>
54
+              <FileItem type='file' name='Facture 57839 - Société ABC - 01/09/2017' status='current' customClass='inFolder' />
55
+              <FileItem type='file' name='Facture 57839 - Société ABC - 01/09/2017' status='current' customClass='inFolder' />
56
+              <FileItem type='task' name='Editer la facture pour Phillipe GIRARD' status='check' customClass='inFolder' />
57
+
58
+              <Folder>
59
+                <FileItem type='chat' name='Discussions à propos du nouveau système de facturation' status='nouse' customClass='inFolder' />
60
+                <FileItem type='file' name='Facture 57537 - Claudia Martin - 14/08/2017' status='check' customClass='inFolder' />
61
+              </Folder>
62
+              <FileItem name='Facture 57841 - Pierre Maurice - 06/06/2017' type='file' status='current' customClass='inFolder' />
63
+              <FileItem type='file' name='Facture 57840 - Jean-michel Chevalier - 04/09/2017' status='check' customClass='inFolder' />
64
+              <FileItem name='Facture 57841 - Pierre Maurice - 06/06/2017' type='file' status='current' customClass='inFolder' />
65
+              <Folder>
66
+                <FileItem type='chat' name='Discussions à propos du nouveau système de facturation' status='nouse' customClass='inFolder' />
67
+                <FileItem type='file' name='Facture 57537 - Claudia Martin - 14/08/2017' status='check' customClass='inFolder' />
68
+              </Folder>
69
+              <FileItem type='file' name='Facture 57840 - Jean-michel Chevalier - 04/09/2017' status='check' customClass='inFolder' />
70
+            </Folder>
71
+          </div>
72
+
73
+          <DropdownCreateButton customClass='workspace__content__button mb-5' />
74
+
75
+          {/*
76
+          <Chat visible={this.state.activeFileType === 'chat'} />
77
+          <PageText visible={this.state.activeFileType === 'file'} />
78
+          */}
79
+        </PageContent>
80
+
81
+      </PageWrapper>
82
+    )
83
+  }
84
+}
85
+
86
+const mapStateToProps = ({ user }) => ({ user })
87
+export default connect(mapStateToProps)(Workspace)

+ 37 - 0
src/css/FileItem.styl View File

@@ -0,0 +1,37 @@
1
+.fileitem__rowfile
2
+  display flex
3
+  border 1px solid dark-blue
4
+  border-bottom 0
5
+  &:hover
6
+    background-color hover-files
7
+  &:last-child
8
+    border-bottom 1px solid dark-blue
9
+  &__type
10
+    font-size 30px
11
+    text-align center
12
+  &__name
13
+    display flex
14
+    justify-content space-between
15
+    padding 15px 5px
16
+    cursor pointer
17
+    &__text
18
+      font-size 17px
19
+    &__icons
20
+      &__download
21
+        display inline-block
22
+        margin-right 10px
23
+      &__archive
24
+        display inline-block
25
+        margin-right 10px
26
+      &__delete
27
+        display inline-block
28
+        margin-right 10px
29
+  &__status
30
+    font-size 30px
31
+    text-align center
32
+
33
+@media (min-width: max-xs) and (max-width: max-lg)
34
+  .fileitem__rowfile
35
+    border-right 1px solid grey
36
+    &__name__icons
37
+        margin-top 5px

+ 15 - 0
src/css/FileItemHeader.styl View File

@@ -0,0 +1,15 @@
1
+.fileitemheader
2
+  display flex
3
+  &__type
4
+    padding 15px 0
5
+    text-align center
6
+    font-size 17px
7
+  &__name
8
+    padding 15px 5px
9
+    width 100%
10
+    font-size 17px
11
+  &__status
12
+    padding 15px 0
13
+    width 100%
14
+    text-align center
15
+    font-size 17px

+ 124 - 0
src/css/Folder.styl View File

@@ -0,0 +1,124 @@
1
+/****** FOLDER CLOSE *******/
2
+
3
+folderclose()
4
+  height 0
5
+  visibility hidden
6
+  opacity 0
7
+  border 0
8
+
9
+/*****************************/
10
+
11
+/****** FOLDER OPEN *******/
12
+
13
+folderopen()
14
+  height 100%
15
+  opacity 1
16
+  visibility visible
17
+  transition opacity 1s
18
+
19
+/*****************************/
20
+
21
+.folder
22
+  padding-left 30px
23
+  &:last-child
24
+    border-bottom 1px solid dark-blue
25
+  & > .inFolder
26
+    folderclose()
27
+    &:last-child
28
+      border-bottom 0
29
+  & > .folder
30
+    folderclose()
31
+  &.active
32
+    & > .inFolder
33
+      border 1px solid dark-blue
34
+      border-bottom 0
35
+      folderopen()
36
+    & > .folder
37
+      folderopen()
38
+    & > .folder__header
39
+      .folder__header__triangleborder
40
+        display block
41
+        &__triangle
42
+          display block
43
+  &__header
44
+    position relative
45
+    display flex
46
+    justify-content space-between
47
+    margin-left -30px
48
+    border 1px solid dark-blue
49
+    border-bottom 0
50
+    background-color light-grey
51
+    cursor pointer
52
+    &:hover
53
+      background-color hover
54
+      .folder__header__triangleborder__triangle
55
+        border-color hover transparent transparent transparent
56
+    &__triangleborder
57
+      display none
58
+      position absolute
59
+      top 61px
60
+      left -1px
61
+      border-style solid
62
+      border-width 25px 30px 0 30px
63
+      border-color dark-blue transparent transparent transparent
64
+      z-index 1
65
+      &__triangle
66
+        display none
67
+        position absolute
68
+        top -26px
69
+        left -30px
70
+        border-style solid
71
+        border-width 25px 30px 0 30px
72
+        border-color light-grey transparent transparent transparent
73
+    &__name
74
+      display flex
75
+      padding-left 5px
76
+      &__icon
77
+        margin auto 15px
78
+        font-size 25px
79
+        color dark-blue
80
+      &__text
81
+        margin auto 15px
82
+        font-size 17px
83
+        color dark-blue
84
+      &__addbtn
85
+        margin auto 0
86
+        cursor pointer
87
+        &:hover > .folder__header__name__addbtn__text
88
+          color white
89
+        &__text
90
+          border 1px solid dark-blue
91
+          background-color transparent
92
+          color dark-blue
93
+          font-size 17px
94
+    &__contenttype
95
+      display flex
96
+      &__text
97
+        padding 18px 15px
98
+        font-size 17px
99
+        color dark-blue
100
+      &__icon
101
+        padding 18px 5px
102
+        font-size 17px
103
+        color dark-blue
104
+        & > i
105
+          margin-right 15px
106
+
107
+/*****************************/
108
+
109
+/**** MEDIA 575px ****/
110
+
111
+@media (max-width: max-xs)
112
+
113
+  .folder
114
+    &__header
115
+      &__triangleborder
116
+        top 59px
117
+      &__name
118
+        &__icon
119
+          padding 14px 15px
120
+          font-size 20px
121
+        &__text
122
+          font-size 15px
123
+      &__contenttype
124
+        display none

+ 72 - 0
src/css/Generic.styl View File

@@ -0,0 +1,72 @@
1
+.pageWrapperGeneric
2
+  display table-cell
3
+  vertical-align top
4
+  padding-top 87px
5
+  width 100%
6
+  &__header
7
+    display flex
8
+  &__content
9
+    margin 10px 10px 120px 10px
10
+@media (min-width: min-md) and (max-width: max-md)
11
+  .pageWrapperGeneric
12
+    display block
13
+    padding-top 87px
14
+    &__header
15
+      margin 95px 0 5px 30px
16
+    &__content
17
+      margin 0
18
+@media (min-width: min-sm) and (max-width: max-sm)
19
+  .pageWrapperGeneric
20
+    display block
21
+    padding-top 87px
22
+    &__header
23
+      margin 95px 0 35px 0
24
+      &__title
25
+        display inline-block
26
+        margin-left 0
27
+    &__content
28
+      margin 0
29
+@media (max-width: max-xs)
30
+  .pageWrapperGeneric
31
+    display block
32
+    padding-top 87px
33
+    &__header
34
+      display block
35
+      margin-top 60px
36
+    &__content
37
+      margin 0
38
+
39
+
40
+.pageTitleGeneric
41
+  display flex
42
+  margin 45px 0
43
+  &__title
44
+    margin-left 10px
45
+    font-size 30px
46
+    color dark-grey
47
+@media (max-width: max-xs)
48
+  .pageTitleGeneric
49
+    display block
50
+
51
+
52
+.pageContentGeneric
53
+  margin 10px 10px 120px 10px
54
+
55
+
56
+.dropdownCreateBtn
57
+  &__label
58
+    padding 10px 65px
59
+    background-color green
60
+    cursor pointer
61
+    &__text
62
+      display inline-block
63
+      color white
64
+    &::after //bootstrap override
65
+      display inline-block
66
+      margin-left 30px
67
+      color white
68
+  &__setting
69
+    padding 0
70
+    cursor pointer
71
+    .setting__link
72
+      padding 5px 65px 5px 10px

+ 17 - 0
src/css/Variable.styl View File

@@ -42,3 +42,20 @@ max-lg = 1199px
42 42
 
43 43
 min-xl = 1200px
44 44
 /***********************/
45
+
46
+.dashboard-color
47
+  color purple
48
+.task-color
49
+  color green
50
+.docandfile-color
51
+  color orange
52
+.talk-color
53
+  color blue
54
+.calendar-color
55
+  color red
56
+.current-color
57
+  color blue
58
+.nouse-color
59
+  color dark-grey
60
+.check-color
61
+  color green

+ 21 - 0
src/css/Workspace.styl View File

@@ -0,0 +1,21 @@
1
+.workspace
2
+  &__content
3
+    &__button
4
+      display flex
5
+      justify-content flex-end
6
+      margin 50px 10px 0 10px
7
+      &__btnaddworkspace
8
+        margin-bottom 50px
9
+        padding 10px 55px
10
+@media (min-width: min-sm) and (max-width: max-sm)
11
+  .workspace
12
+    &__header
13
+      &__btnaddworkspace
14
+        display inline-block
15
+        margin-right 0
16
+
17
+@media (max-width: max-xs)
18
+  .workspace
19
+    &__header
20
+      &__title
21
+        margin 0 0 20px 0

+ 6 - 0
src/css/index.styl View File

@@ -4,9 +4,15 @@ html, body, #content, #content > div
4 4
   height 100%
5 5
 
6 6
 @import 'Variable'
7
+@import 'Generic'
7 8
 
8 9
 @import 'Sidebar'
9 10
 @import 'Header'
10 11
 @import 'Footer'
11 12
 
12 13
 @import 'Login'
14
+@import 'Workspace'
15
+
16
+@import 'FileItem'
17
+@import 'FileItemHeader'
18
+@import 'Folder'