@@ -15,16 +15,16 @@ class CascadingPaneNav extends React.Component {
1515 selected : props . cascNav || '' ,
1616 fetched : props . fetchedNav ,
1717 dataWithClass : props . data
18- ? props . data . map ( item => {
18+ ? props . data . map ( ( item ) => {
1919 const newItem = JSON . parse ( JSON . stringify ( item ) ) ;
20- newItem . className = `nav-item-${ item [
20+ newItem . className = `nav-item-${ item [ props . itemIdField ] } ${ item [
2121 props . itemIdField
22- ] } ${ item [ props . itemIdField ] === props . cascNav
22+ ] === props . cascNav
2323 ? 'active'
2424 : '' } `;
2525 return newItem ;
2626 } )
27- : [ ]
27+ : [ ] ,
2828 } ;
2929
3030 this . onHandleClick = this . onHandleClick . bind ( this ) ;
@@ -34,65 +34,62 @@ class CascadingPaneNav extends React.Component {
3434 const { fetchedNav, cascNav, data } = this . props ;
3535 if ( fetchedNav !== nextProps . fetchedNav ) {
3636 this . setState ( {
37- fetched : nextProps . fetchedNav
37+ fetched : nextProps . fetchedNav ,
3838 } ) ;
3939 }
4040 if ( cascNav ) {
4141 if ( ! nextProps . cascNav ) {
42- window . location . href = `${ window . location . href . split (
43- '?'
44- ) [ 0 ] } ?cascNav=${ nextProps . data [ 0 ] [ nextProps . itemIdField ] } `;
42+ window . location . href = `${ window . location . href . split ( '?' ) [ 0 ] } ?cascNav=${ nextProps
43+ . data [ 0 ] [ nextProps . itemIdField ] } `;
4544 }
4645 if ( cascNav !== nextProps . cascNav ) {
4746 this . setState ( {
4847 selected : nextProps . cascNav || '' ,
4948 dataWithClass : nextProps . data
50- ? nextProps . data . map ( item => {
49+ ? nextProps . data . map ( ( item ) => {
5150 const newItem = JSON . parse ( JSON . stringify ( item ) ) ;
52- newItem . className = `nav-item-${ item [
51+ newItem . className = `nav-item-${ item [ nextProps . itemIdField ] } ${ item [
5352 nextProps . itemIdField
54- ] } ${ item [ nextProps . itemIdField ] ===
55- nextProps . cascNav
53+ ] === nextProps . cascNav
5654 ? 'active'
5755 : '' } `;
5856 return newItem ;
5957 } )
60- : [ ]
58+ : [ ] ,
6159 } ) ;
6260 }
6361 } else if ( nextProps . cascNav ) {
6462 this . setState ( {
6563 selected : nextProps . cascNav ,
6664 dataWithClass : nextProps . data
67- ? nextProps . data . map ( item => {
65+ ? nextProps . data . map ( ( item ) => {
6866 const newItem = JSON . parse ( JSON . stringify ( item ) ) ;
69- newItem . className = `nav-item-${ item [
67+ newItem . className = `nav-item-${ item [ nextProps . itemIdField ] } ${ item [
7068 nextProps . itemIdField
71- ] } ${ item [ nextProps . itemIdField ] === nextProps . cascNav
69+ ] === nextProps . cascNav
7270 ? 'active'
7371 : '' } `;
7472 return newItem ;
7573 } )
76- : [ ]
74+ : [ ] ,
7775 } ) ;
7876 } else if ( nextProps . data && nextProps . data . length > 0 ) {
79- window . location . href = `${ window . location . href . split (
80- '?'
81- ) [ 0 ] } ?cascNav=${ nextProps . data [ 0 ] [ nextProps . itemIdField ] } `;
77+ window . location . href = `${ window . location . href . split ( '?' ) [ 0 ] } ?cascNav=${ nextProps
78+ . data [ 0 ] [ nextProps . itemIdField ] } `;
8279 }
8380 if ( JSON . stringify ( data ) !== JSON . stringify ( nextProps . data ) ) {
8481 this . setState ( {
8582 dataWithClass : nextProps . data
86- ? nextProps . data . map ( item => {
83+ ? nextProps . data . map ( ( item ) => {
8784 const newItem = JSON . parse ( JSON . stringify ( item ) ) ;
88- newItem . className = `nav-item-${ item [
85+ newItem . className = `nav-item-${ item [ nextProps . itemIdField ] } ${ item [
8986 nextProps . itemIdField
90- ] } ${ item [ nextProps . itemIdField ] === nextProps . cascNav
87+ ] === nextProps . cascNav
9188 ? 'active'
9289 : '' } `;
9390 return newItem ;
9491 } )
95- : [ ]
92+ : [ ] ,
9693 } ) ;
9794 }
9895 }
@@ -105,9 +102,7 @@ class CascadingPaneNav extends React.Component {
105102 selected !== prevState . selected ||
106103 JSON . stringify ( data ) !== JSON . stringify ( prevProps . data )
107104 ) {
108- const groupSelected = data . filter (
109- item => item [ itemIdField ] === selected
110- ) ;
105+ const groupSelected = data . filter ( item => item [ itemIdField ] === selected ) ;
111106 updateGroupSelect ( groupSelected [ 0 ] ) ;
112107 }
113108 }
@@ -117,9 +112,9 @@ class CascadingPaneNav extends React.Component {
117112 const { selected } = this . state ;
118113
119114 if ( selected !== item [ itemIdField ] ) {
120- window . location . href = `${ window . location . href . split (
121- '?'
122- ) [ 0 ] } ?cascNav= ${ item [ itemIdField ] } `;
115+ window . location . href = `${ window . location . href . split ( '?' ) [ 0 ] } ?cascNav= ${ item [
116+ itemIdField
117+ ] } `;
123118 }
124119 }
125120
@@ -135,7 +130,8 @@ class CascadingPaneNav extends React.Component {
135130 getCascadingNav,
136131 logoField,
137132 titleField,
138- isHiddenField
133+ itemIdField,
134+ isHiddenField,
139135 } = this . props ;
140136 const { fetched, dataWithClass } = this . state ;
141137
@@ -145,32 +141,25 @@ class CascadingPaneNav extends React.Component {
145141 name : 'Logo' ,
146142 className : 'nav-group-logo' ,
147143 display : item => (
148- < img
149- role = "presentation"
150- src = { item [ logoField ] }
151- className = "cascading-nav-logo"
152- />
153- )
144+ < img role = "presentation" src = { item [ logoField ] } className = "cascading-nav-logo" />
145+ ) ,
154146 } ) ;
155147 }
156148 navFormat . push ( {
157149 name : 'Title' ,
158150 className : 'nav-group-title' ,
159- display : item => item [ titleField ]
151+ display : item => item [ titleField ] || item [ itemIdField ] ,
160152 } ) ;
161153 if ( isHiddenField ) {
162154 navFormat . push ( {
163155 name : 'Visibility' ,
164156 className : 'nav-group-visibility' ,
165157 display : item =>
166158 item [ isHiddenField ] ? (
167- < Glyphicon
168- glyph = "eye-close"
169- title = "Only visible to CUD administrators"
170- />
159+ < Glyphicon glyph = "eye-close" title = "Only visible to CUD administrators" />
171160 ) : (
172161 ''
173- )
162+ ) ,
174163 } ) ;
175164 }
176165 if ( itemConfigDisplay ) {
@@ -180,39 +169,26 @@ class CascadingPaneNav extends React.Component {
180169 display : item =>
181170 React . cloneElement (
182171 itemConfigDisplay ,
183- Object . assign (
184- { } ,
185- { item } ,
186- { updateNav : ( ) => getCascadingNav ( ) }
187- )
172+ Object . assign ( { } , { item } , { updateNav : ( ) => getCascadingNav ( ) } ) ,
188173 ) ,
189- excludeRowClick : true
174+ excludeRowClick : true ,
190175 } ) ;
191176 }
192177
193178 return (
194- < div
195- className = { classNames ( className , 'cascading-pane-nav' ) }
196- key = { key }
197- >
179+ < div className = { classNames ( className , 'cascading-pane-nav' ) } key = { key } >
198180 { headerDisplay }
199181 < LoadingComponent { ...navFetch } >
200182 < div className = "cascading-pane-nav-list" >
201- { fetched &&
202- ! data && (
203- < Alert bsStyle = "danger" >
204- No data available
205- </ Alert >
206- ) }
183+ { fetched && ! data && < Alert bsStyle = "danger" > No data available</ Alert > }
207184 { fetched &&
208185 data && (
209186 < FilteredTable
210187 className = "table table-striped table-bordered table-condensed table-cascading-nav"
211188 data = { dataWithClass }
212189 itemFormat = { navFormat }
213190 rowClickable
214- onRowClick = { item =>
215- this . onHandleClick ( item ) }
191+ onRowClick = { item => this . onHandleClick ( item ) }
216192 />
217193 ) }
218194 </ div >
@@ -230,7 +206,7 @@ CascadingPaneNav.propTypes = {
230206 getCascadingNav : PropTypes . func ,
231207 navFetch : PropTypes . shape ( {
232208 status : PropTypes . string ,
233- isFetching : PropTypes . bool
209+ isFetching : PropTypes . bool ,
234210 } ) ,
235211 fetchedNav : PropTypes . bool ,
236212 cascNav : PropTypes . string ,
@@ -244,7 +220,7 @@ CascadingPaneNav.propTypes = {
244220
245221 headerDisplay : PropTypes . element ,
246222 footerDisplay : PropTypes . element ,
247- itemConfigDisplay : PropTypes . element
223+ itemConfigDisplay : PropTypes . element ,
248224} ;
249225
250226CascadingPaneNav . defaultProps = {
@@ -254,7 +230,7 @@ CascadingPaneNav.defaultProps = {
254230 getCascadingNav : f => f ,
255231 navFetch : {
256232 status : '' ,
257- isFetching : false
233+ isFetching : false ,
258234 } ,
259235 fetchedNav : false ,
260236 cascNav : '' ,
@@ -264,7 +240,7 @@ CascadingPaneNav.defaultProps = {
264240 itemIdField : 'id' ,
265241 logoField : '' ,
266242 titleField : 'title' ,
267- isHiddenField : ''
243+ isHiddenField : '' ,
268244} ;
269245
270246export default CascadingPaneNav ;
0 commit comments