2
2
import * as React from "react" ;
3
3
import { IProgressIndicatorProps , ProgressIndicator } from "office-ui-fabric-react/lib/ProgressIndicator" ;
4
4
import { MessageBar , MessageBarType } from "office-ui-fabric-react/lib/MessageBar" ;
5
- import { StickyContainer } from "react-sticky" ;
6
5
import pnp , { Web } from "sp-pnp-js" ;
7
6
import IProgramProjectStatusProps , { ProgramProjectStatusDefaultProps } from "./IProgramProjectStatusProps" ;
8
7
import IProgramProjectStatusState from "./IProgramProjectStatusState" ;
@@ -21,6 +20,7 @@ import * as config from "../../config";
21
20
export default class ProgramProjectStatus extends React . Component < IProgramProjectStatusProps , IProgramProjectStatusState > {
22
21
public static displayName = "ProgramProjectStatus" ;
23
22
public static defaultProps = ProgramProjectStatusDefaultProps ;
23
+ private container : HTMLDivElement ;
24
24
25
25
/**
26
26
* Constructor
@@ -52,15 +52,33 @@ export default class ProgramProjectStatus extends React.Component<IProgramProjec
52
52
53
53
54
54
public render ( ) : React . ReactElement < IProgramProjectStatusProps > {
55
- const { isLoading, errorMessage, loadProgress, enrichedProjects } = this . state ;
55
+ const {
56
+ isLoading,
57
+ errorMessage,
58
+ loadProgress,
59
+ enrichedProjects,
60
+ } = this . state ;
61
+
56
62
if ( isLoading ) {
57
- return < ProgressIndicator { ...loadProgress } /> ;
63
+ return (
64
+ < div ref = { ele => this . container = ele } >
65
+ < ProgressIndicator { ...loadProgress } />
66
+ </ div >
67
+ ) ;
58
68
}
59
69
if ( errorMessage ) {
60
- return < MessageBar messageBarType = { MessageBarType . error } > { errorMessage } </ MessageBar > ;
70
+ return (
71
+ < div ref = { ele => this . container = ele } >
72
+ < MessageBar messageBarType = { MessageBarType . error } > { errorMessage } </ MessageBar >
73
+ </ div >
74
+ ) ;
61
75
}
62
76
if ( enrichedProjects . length === 0 ) {
63
- return < NoStoredProjectsMessage /> ;
77
+ return (
78
+ < div ref = { ele => this . container = ele } >
79
+ < NoStoredProjectsMessage />
80
+ </ div >
81
+ ) ;
64
82
}
65
83
return this . renderSummarySections ( ) ;
66
84
}
@@ -70,8 +88,9 @@ export default class ProgramProjectStatus extends React.Component<IProgramProjec
70
88
*/
71
89
private renderSummarySections ( ) {
72
90
const { enrichedProjects, failedProjects } = this . state ;
91
+
73
92
return (
74
- < div >
93
+ < div ref = { ele => this . container = ele } style = { { width : this . container . parentElement . clientWidth } } >
75
94
< div >
76
95
{ failedProjects . map ( p => (
77
96
< div style = { { marginBottom : 10 } } >
@@ -80,20 +99,18 @@ export default class ProgramProjectStatus extends React.Component<IProgramProjec
80
99
) ) }
81
100
</ div >
82
101
< div className = "ms-Grid" >
83
- < StickyContainer >
84
- { enrichedProjects . map ( ( { Title, URL , Data } , i ) => {
85
- return (
86
- < SummarySection
87
- key = { `ProjectSummarySection_${ i } ` }
88
- webUrl = { URL }
89
- title = { Title }
90
- titleUrl = { `${ URL } /SitePages/ProjectStatus.aspx` }
91
- style = { { marginBottom : 20 , paddingBottom : 20 } }
92
- project = { Data . project }
93
- sections = { Data . sections } />
94
- ) ;
95
- } ) }
96
- </ StickyContainer >
102
+ { enrichedProjects . map ( ( { Title, URL , Data } , i ) => {
103
+ return (
104
+ < SummarySection
105
+ key = { `ProjectSummarySection_${ i } ` }
106
+ webUrl = { URL }
107
+ title = { Title }
108
+ titleUrl = { `${ URL } /SitePages/ProjectStatus.aspx` }
109
+ style = { { marginBottom : 20 , paddingBottom : 20 } }
110
+ project = { Data . project }
111
+ sections = { Data . sections } />
112
+ ) ;
113
+ } ) }
97
114
</ div >
98
115
</ div >
99
116
) ;
@@ -132,7 +149,7 @@ export default class ProgramProjectStatus extends React.Component<IProgramProjec
132
149
failedProjects . push ( project ) ;
133
150
}
134
151
}
135
- let enrichedProjects : EnrichedProjectItem [ ] = enrichedProjectsArray . sort ( ( p1 , p2 ) => { return p1 . Title . localeCompare ( p2 . Title ) ; } ) ;
152
+ let enrichedProjects : EnrichedProjectItem [ ] = enrichedProjectsArray . sort ( ( p1 , p2 ) => { return p1 . Title . localeCompare ( p2 . Title ) ; } ) ;
136
153
return { enrichedProjects, failedProjects } ;
137
154
}
138
155
}
0 commit comments