1- import React , { Component , PropTypes } from 'react'
1+ import React , { Component , PropTypes } from 'react'
22import cn from 'classnames'
33import { PROJECT_STATUS } from '../../config/constants'
44import './ProjectStatus.scss'
55
66export const enhanceDropdown = ( CompositeComponent ) => class extends Component {
77 constructor ( props ) {
88 super ( props )
9- this . state = { isOpen : false }
9+ this . state = { isOpen : false }
1010 this . handleClick = this . handleClick . bind ( this )
1111 this . onSelect = this . onSelect . bind ( this )
1212 this . onClickOutside = this . onClickOutside . bind ( this )
@@ -19,13 +19,12 @@ export const enhanceDropdown = (CompositeComponent) => class extends Component {
1919
2020 document . dispatchEvent ( dropdownClicked )
2121
22- this . setState ( { isOpen : ! this . state . isOpen } )
22+ this . setState ( { isOpen : ! this . state . isOpen } )
2323 }
2424
2525 onSelect ( value ) {
2626 this . handleClick ( )
27-
28- if ( this . props . onChangeStatus ) this . props . onChangeStatus ( value )
27+ if ( this . props . onSelect ) this . props . onSelect ( value )
2928 }
3029
3130 onClickOutside ( evt ) {
@@ -34,7 +33,7 @@ export const enhanceDropdown = (CompositeComponent) => class extends Component {
3433 console . log ( 'onClickOutside' )
3534
3635 do {
37- if ( currNode . className
36+ if ( currNode . className
3837 && currNode . className . indexOf
3938 && currNode . className . indexOf ( 'dropdown-wrap' ) > - 1 ) {
4039 isDropdown = true
@@ -43,11 +42,11 @@ export const enhanceDropdown = (CompositeComponent) => class extends Component {
4342
4443 currNode = currNode . parentNode
4544
46- if ( ! currNode )
45+ if ( ! currNode )
4746 break
48- } while ( currNode . tagName )
47+ } while ( currNode . tagName )
4948
50- if ( ! isDropdown ) {
49+ if ( ! isDropdown ) {
5150 this . setState ( { isOpen : false } )
5251 }
5352 }
@@ -75,9 +74,9 @@ export const enhanceDropdown = (CompositeComponent) => class extends Component {
7574 < div onClick = { ( e ) => e . stopPropagation ( ) } className = "dropdown-wrap" >
7675 < CompositeComponent
7776 { ...this . props }
78- isOpen = { isOpen }
79- handleClick = { this . handleClick }
80- onSelect = { this . onSelect }
77+ isOpen = { isOpen }
78+ handleClick = { this . handleClick }
79+ onSelect = { this . onSelect }
8180 />
8281 </ div >
8382 )
@@ -86,32 +85,35 @@ export const enhanceDropdown = (CompositeComponent) => class extends Component {
8685
8786
8887/*eslint-enable camelcase */
89- const ProjectStatus = ( { canEdit, isOpen, status, handleClick, onSelect, showText, withoutLabel, unifiedHeader= true } ) => {
88+ const ProjectStatus = ( { canEdit, isOpen, status, handleClick, onSelect, showText, withoutLabel, unifiedHeader = true } ) => {
9089 const selected = PROJECT_STATUS . filter ( ( opt ) => opt . value === status ) [ 0 ]
9190 return (
9291 < div className = "ProjectStatus" >
93- < div className = { cn ( 'status-header' , 'ps-' + selected . value , { active : isOpen , editable : canEdit , 'unified-header' : unifiedHeader } ) } onClick = { handleClick } >
92+ < div className = { cn ( 'status-header' , 'ps-' + selected . value , { active : isOpen , editable : canEdit , 'unified-header' : unifiedHeader } ) } onClick = { handleClick } >
9493 < div className = "status-icon" > < i /> </ div >
95- { showText && ( < span className = "status-label" > { withoutLabel ? selected . fullName : selected . name } < i className = "caret" /> </ span > ) }
94+ { showText && ( < span className = "status-label" > { withoutLabel ? selected . fullName : selected . name } < i className = "caret" /> </ span > ) }
95+ </ div >
96+ { isOpen && canEdit && < div className = "status-dropdown" >
97+ < div className = "status-header" > Project Status</ div >
98+ < ul >
99+ {
100+ PROJECT_STATUS . map ( ( item ) =>
101+ < li key = { item . value } >
102+ < a
103+ href = "javascript:"
104+ className = { cn ( 'status-option' , 'ps-' + item . value , { active : item . value === status } ) }
105+ onClick = { ( e ) => {
106+ onSelect ( item . value , e )
107+ } }
108+ >
109+ < span className = "status-icon" > < i /> </ span >
110+ < span className = "status-label" > { item . name } </ span >
111+ </ a >
112+ </ li >
113+ )
114+ }
115+ </ ul >
96116 </ div >
97- { isOpen && canEdit && < ul className = "status-dropdown" >
98- {
99- PROJECT_STATUS . map ( ( item ) =>
100- < li key = { item . value } >
101- < a
102- href = "javascript:"
103- className = { cn ( 'status-option' , 'ps-' + item . value , { active : item . value === status } ) }
104- onClick = { ( e ) => {
105- onSelect ( item . value , e )
106- } }
107- >
108- < span className = "status-icon" > < i /> </ span >
109- < span className = "status-label" > { item . name } </ span >
110- </ a >
111- </ li >
112- )
113- }
114- </ ul >
115117 }
116118 </ div >
117119 )
0 commit comments