Browse Source

intregation of an extandedAction button and its popup on folder

AlexiCauvin 6 years ago
parent
commit
df1b7ad6b9

+ 15 - 0
src/component/ExtandedActionComponent/BtnEditFolder.jsx View File

@@ -0,0 +1,15 @@
1
+import React, { Component } from 'react'
2
+
3
+class BtnEditFolder extends Component {
4
+  render () {
5
+    return (
6
+      <div className='btneditfolder'>
7
+        <div className='btneditfolder__button btn btn-outline-primary'>
8
+          Modifier le Dossier
9
+        </div>
10
+      </div>
11
+    )
12
+  }
13
+}
14
+
15
+export default BtnEditFolder

+ 62 - 0
src/component/ExtandedActionComponent/ContentTypeList.jsx View File

@@ -0,0 +1,62 @@
1
+import React, { Component } from 'react'
2
+
3
+class ContentTypeList extends Component {
4
+  render () {
5
+    return (
6
+      <div className='contenttype'>
7
+        <ul className='contenttype__list'>
8
+          <li className='contenttype__list__item'>
9
+            <div className='contenttype__list__item__icon'>
10
+              <i className='fa fa-fw fa-file-text-o' />
11
+            </div>
12
+            <div className='contenttype__list__item__text'>
13
+              Page Html
14
+            </div>
15
+          </li>
16
+          <li className='contenttype__list__item'>
17
+            <div className='contenttype__list__item__icon'>
18
+              <i className='fa fa-fw fa-file-code-o' />
19
+            </div>
20
+            <div className='contenttype__list__item__text'>
21
+              Page markdown
22
+            </div>
23
+          </li>
24
+          <li className='contenttype__list__item'>
25
+            <div className='contenttype__list__item__icon'>
26
+              <i className='fa fa-fw fa-file-image-o' />
27
+            </div>
28
+            <div className='contenttype__list__item__text'>
29
+              Fichier
30
+            </div>
31
+          </li>
32
+          <li className='contenttype__list__item'>
33
+            <div className='contenttype__list__item__icon'>
34
+              <i className='fa fa-fw fa-comments-o' />
35
+            </div>
36
+            <div className='contenttype__list__item__text'>
37
+              Discussion
38
+            </div>
39
+          </li>
40
+          <li className='contenttype__list__item'>
41
+            <div className='contenttype__list__item__icon'>
42
+              <i className='fa fa-fw fa-list-ul' />
43
+            </div>
44
+            <div className='contenttype__list__item__text'>
45
+              Tâches
46
+            </div>
47
+          </li>
48
+          <li className='contenttype__list__item'>
49
+            <div className='contenttype__list__item__icon'>
50
+              <i className='fa fa-fw fa-ticket' />
51
+            </div>
52
+            <div className='contenttype__list__item__text'>
53
+              Ticket
54
+            </div>
55
+          </li>
56
+        </ul>
57
+      </div>
58
+    )
59
+  }
60
+}
61
+
62
+export default ContentTypeList

+ 117 - 9
src/component/Workspace/Folder.jsx View File

@@ -3,12 +3,14 @@ import { translate } from 'react-i18next'
3 3
 import PropTypes from 'prop-types'
4 4
 import classnames from 'classnames'
5 5
 import FileItem from './FileItem.jsx'
6
+import PopupExtandedAction from '../../container/PopupExtandedAction.jsx'
6 7
 
7 8
 class Folder extends React.Component {
8 9
   constructor (props) {
9 10
     super(props)
10 11
     this.state = {
11
-      open: false
12
+      open: false,
13
+      openExtandedAction: false
12 14
     }
13 15
   }
14 16
 
@@ -22,6 +24,19 @@ class Folder extends React.Component {
22 24
     console.log('new file') // @TODO
23 25
   }
24 26
 
27
+  handleClickModify = e => {
28
+    e.stopPropagation() // because we have a link inside a link (togler and newFile)
29
+    console.log('modifier') // @TODO
30
+  }
31
+
32
+  handleClickToggleExtandedAction = e => {
33
+    e.stopPropagation()
34
+
35
+    this.setState(prevState => ({
36
+      openExtandedAction: !prevState.openExtandedAction
37
+    }))
38
+  }
39
+
25 40
   render () {
26 41
     const { app, folderData, onClickItem, onClickFolder, isLast, t } = this.props
27 42
 
@@ -38,22 +53,115 @@ class Folder extends React.Component {
38 53
             </div>
39 54
           </div>
40 55
 
41
-          <div className='col-5 col-sm-5 col-md-5 col-lg-6 col-xl-8'>
42
-            <div className='folder__header__name align-items-center'>
56
+          <div className='col-10 col-sm-10 col-md-10 col-lg-10 col-xl-11'>
57
+            <div className='folder__header__name align-items-center justify-content-between'>
58
+
43 59
               <div className='folder__header__name__text'>
44 60
                 { folderData.title }
45 61
               </div>
46
-              <div className='folder__header__name__addbtn' onClick={this.handleClickNewFile}>
47
-                <div className='folder__header__name__addbtn__text btn btn-primary'>
48
-                  {t('Folder.create')} ...
62
+
63
+              <div className='folder__header__name__button d-flex align-items-center '>
64
+
65
+                {this.state.openExtandedAction === false &&
66
+                  <div>
67
+                    <div className='folder__header__name__button__advancedbtn btn btn-outline-primary d-none d-md-block' onClick={this.handleClickToggleExtandedAction}>
68
+                      <i className='fa fa-fw fa-ellipsis-h' />
69
+                    </div>
70
+                  </div>
71
+                }
72
+
73
+                {this.state.openExtandedAction === true &&
74
+                  <PopupExtandedAction
75
+                    openExtandedAction={this.state.openExtandedAction}
76
+                    onClickCloseBtn={this.handleClickToggleExtandedAction}
77
+                  />
78
+                }
79
+
80
+                <div className='folder__header__name__button__addbtn mx-4' onClick={this.handleClickNewFile}>
81
+                  <button className='addbtn__text btn btn-outline-primary dropdown-toggle' type='button' id='dropdownMenuButton' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
82
+                    {t('Folder.create')} ...
83
+                  </button>
84
+                  <div className='addbtn__subdropdown dropdown-menu' aria-labelledby='dropdownMenuButton'>
85
+                    <div className='subdropdown__link dropdown-item'>
86
+                      <div className='subdropdown__link__folder d-flex align-items-center'>
87
+                        <div className='subdropdown__link__folder__icon mr-3'>
88
+                          <i className='fa fa-fw fa-folder-o' />
89
+                        </div>
90
+                        <div className='subdropdown__link__folder__text'>
91
+                          Créer un Dossier
92
+                        </div>
93
+                      </div>
94
+                    </div>
95
+                    <div className='subdropdown__link dropdown-item'>
96
+                      <div className='subdropdown__link__apphtml d-flex align-items-center'>
97
+                        <div className='subdropdown__link__apphtml__icon mr-3'>
98
+                          <i className='fa fa-fw fa-file-text-o' />
99
+                        </div>
100
+                        <div className='subdropdown__link__apphtml__text'>
101
+                          Créer une page Html
102
+                        </div>
103
+                      </div>
104
+                    </div>
105
+                    <div className='subdropdown__link dropdown-item'>
106
+                      <div className='subdropdown__link__appfile d-flex align-items-center'>
107
+                        <div className='subdropdown__link__appfile__icon mr-3'>
108
+                          <i className='fa fa-fw fa-file-image-o' />
109
+                        </div>
110
+                        <div className='subdropdown__link__appfile__text'>
111
+                          Importer un fichier
112
+                        </div>
113
+                      </div>
114
+                    </div>
115
+                    <div className='subdropdown__link dropdown-item'>
116
+                      <div className='subdropdown__link__appmarkdown d-flex align-items-center'>
117
+                        <div className='subdropdown__link__appmarkdown__icon mr-3'>
118
+                          <i className='fa fa-fw fa-file-code-o' />
119
+                        </div>
120
+                        <div className='subdropdown__link__appmarkdown__text'>
121
+                          Créer une page markdown
122
+                        </div>
123
+                      </div>
124
+                    </div>
125
+                    <div className='subdropdown__link dropdown-item'>
126
+                      <div className='subdropdown__link__appthread d-flex align-items-center'>
127
+                        <div className='subdropdown__link__appthread__icon mr-3'>
128
+                          <i className='fa fa-fw fa-comments-o' />
129
+                        </div>
130
+                        <div className='subdropdown__link__appthread__text'>
131
+                          Créer une discussion
132
+                        </div>
133
+                      </div>
134
+                    </div>
135
+                    <div className='subdropdown__link dropdown-item'>
136
+                      <div className='subdropdown__link__apptask d-flex align-items-center'>
137
+                        <div className='subdropdown__link__apptask__icon mr-3'>
138
+                          <i className='fa fa-fw fa-list-ul' />
139
+                        </div>
140
+                        <div className='subdropdown__link__apptask__text'>
141
+                          Créer une tâche
142
+                        </div>
143
+                      </div>
144
+                    </div>
145
+                    <div className='subdropdown__link dropdown-item'>
146
+                      <div className='subdropdown__link__appissue d-flex align-items-center'>
147
+                        <div className='subdropdown__link__appissue__icon mr-3'>
148
+                          <i className='fa fa-fw fa-ticket' />
149
+                        </div>
150
+                        <div className='subdropdown__link__appissue__text'>
151
+                          Créer un ticket
152
+                        </div>
153
+                      </div>
154
+                    </div>
155
+                  </div>
49 156
                 </div>
157
+
50 158
               </div>
51 159
             </div>
52 160
           </div>
53 161
 
54
-          <div className='col-5 col-sm-5 col-md-5 col-lg-4 col-xl-3'>
55
-            <div className='folder__header__contenttype'>
56
-              <div className='folder__header__contenttype__text'>
162
+          <div className='col-5 col-sm-5 col-md-5 col-lg-4 col-xl-3 d-none'>
163
+            <div className='folder__header__contenttype d-none d-sm-flex'>
164
+              <div className='folder__header__contenttype__text d-none d-lg-flex'>
57 165
                 {t('Folder.content_type')} :
58 166
               </div>
59 167
               <div className='folder__header__contenttype__icon'>

+ 31 - 0
src/container/PopupExtandedAction.jsx View File

@@ -0,0 +1,31 @@
1
+import React, { Component } from 'react'
2
+import ContentTypeList from '../component/ExtandedActionComponent/ContentTypeList.jsx'
3
+import BtnEditFolder from '../component/ExtandedActionComponent/BtnEditFolder.jsx'
4
+
5
+class PopupExtandedAction extends Component {
6
+  render () {
7
+    return (
8
+      <div className='card extandedaction d-none d-md-block' style={{display: this.props.openExtandedAction ? 'block' : 'none'}}>
9
+        <div className='card-body extandedaction__content'>
10
+          <div className='extandedaction__content__close d-flex justify-content-end' onClick={this.props.onClickCloseBtn}>
11
+            <i className='fa fa-fw- fa-times' />
12
+          </div>
13
+          <div className='extandedaction__content__type'>
14
+            <div className='extandedaction__content__type__title'>
15
+              Type de contenu du dossier :
16
+            </div>
17
+            <ContentTypeList />
18
+          </div>
19
+          <div className='extandedaction__content__advancedfolder'>
20
+            <div className='extandedaction__content__advancedfolder__title'>
21
+              Activer l'édition du Dossier :
22
+            </div>
23
+            <BtnEditFolder />
24
+          </div>
25
+        </div>
26
+      </div>
27
+    )
28
+  }
29
+}
30
+
31
+export default PopupExtandedAction

+ 4 - 0
src/css/BtnEditFolder.styl View File

@@ -0,0 +1,4 @@
1
+.btneditfolder
2
+  margin 0 0 10px 10px
3
+  &__button
4
+    cursor pointer

+ 13 - 0
src/css/ContentTypeList.styl View File

@@ -0,0 +1,13 @@
1
+.contenttype
2
+  margin-bottom 30px
3
+  &__list
4
+    display flex
5
+    flex-wrap wrap
6
+    margin 0
7
+    padding 0
8
+    list-style none
9
+    &__item
10
+      display flex
11
+      align-items center
12
+      padding 10px
13
+

+ 22 - 14
src/css/Folder.styl View File

@@ -83,15 +83,29 @@ folderopen()
83 83
         text-align center
84 84
       &__text
85 85
         margin 0 15px 0 0
86
+        white-space nowrap
87
+        text-overflow ellipsis
88
+        overflow hidden
89
+        width 400px
86 90
         font-size 17px
87 91
         color darkBlue
88
-      &__addbtn
89
-        margin auto 0
90
-        cursor pointer
91
-        &:hover > .folder__header__name__addbtn__text
92
-          color white
93
-        &__text
94
-          font-size 17px
92
+      &__button
93
+        &__advancedbtn
94
+          position relative
95
+        &__addbtn
96
+          margin auto 0
97
+          cursor pointer
98
+          &:hover > .folder__header__name__addbtn__text
99
+            color white
100
+          .addbtn
101
+            &__text
102
+              font-size 17px
103
+              &::after
104
+                margin-left 20px
105
+            &__subdropdown
106
+              padding 0
107
+              .subdropdown__link
108
+                padding 10px
95 109
     &__contenttype
96 110
       display flex
97 111
       justify-content flex-end
@@ -104,11 +118,6 @@ folderopen()
104 118
         & > i
105 119
           margin-right 3px
106 120
 
107
-@media (min-width: min-sm) and (max-width: max-sm)
108
-  .folder
109
-      &__contenttype
110
-        display none
111
-
112 121
 @media (max-width: max-xs)
113 122
   .folder
114 123
     &__header
@@ -118,5 +127,4 @@ folderopen()
118 127
           font-size 20px
119 128
         &__text
120 129
           font-size 15px
121
-      &__contenttype
122
-        display none
130
+

+ 20 - 0
src/css/PopupExtandedAction.styl View File

@@ -0,0 +1,20 @@
1
+titlerules()
2
+  margin 0 0 20px 10px
3
+  border-bottom 1px solid blue
4
+  padding-bottom 2px
5
+
6
+.extandedaction
7
+  position absolute
8
+  right 170px
9
+  z-index 1
10
+  &__content
11
+    &__close
12
+      cursor pointer
13
+    &__type
14
+      &__title
15
+        titlerules()
16
+        width 215px
17
+    &__advancedfolder
18
+      &__title
19
+        titlerules()
20
+        width 205px

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

@@ -34,3 +34,7 @@ html, body, #content
34 34
 
35 35
 @import 'Homepage'
36 36
 @import 'HomepageCard'
37
+
38
+@import 'PopupExtandedAction'
39
+@import 'ContentTypeList'
40
+@import 'BtnEditFolder'