@@ -16,6 +16,7 @@ function isInternalKeyword(keyword) {
16
16
class Plugin {
17
17
constructor ( object ) {
18
18
this . _package = object . package ;
19
+ this . _flags = object . flags ? object . flags : { } ;
19
20
}
20
21
21
22
get key ( ) {
@@ -26,6 +27,16 @@ class Plugin {
26
27
return this . _package . name ;
27
28
}
28
29
30
+ get isDeprecated ( ) {
31
+ const isDeprecated = this . _flags . deprecated ? true : false ;
32
+ return isDeprecated ;
33
+ }
34
+
35
+ get deprecatedMessage ( ) {
36
+ const deprecatedMessage = this . _flags . deprecated ? this . _flags . deprecated : '' ;
37
+ return deprecatedMessage ;
38
+ }
39
+
29
40
get description ( ) {
30
41
return this . _package . description ;
31
42
}
@@ -95,21 +106,30 @@ function PluginFooter({ keywords = [] }) {
95
106
}
96
107
97
108
function PluginComponent ( { plugin } ) {
109
+ const { isDeprecated, deprecatedMessage } = plugin
110
+ const cardClasses = classnames ( 'card' , { [ styles . pluginDeprecatedCard ] : isDeprecated } ) ;
111
+ const cardHeaderClasses = classnames ( 'card__header' , {
112
+ [ styles . pluginCardHeader ] : ! isDeprecated ,
113
+ [ styles . deprecatedCardHeader ] : isDeprecated
114
+ } ) ;
115
+ const cardBodyClasses = 'card__body' ;
116
+
98
117
return (
99
118
< div className = "row padding-vert--md" >
100
119
< div className = "col col--10 col--offset-1" >
101
- < div key = { plugin . key } className = "card" >
102
- < div className = { classnames ( 'card__header' , styles . pluginCardHeader ) } >
120
+ < div key = { plugin . key } className = { cardClasses } >
121
+ < div className = { cardHeaderClasses } >
122
+ { isDeprecated && < span className = "badge badge--primary" > Deprecated</ span > }
103
123
< h2 > < a className = { styles . primaryUrl } href = { plugin . primaryUrl } > { plugin . name } </ a > </ h2 >
104
- < span className = "badge badge--primary" > { plugin . version } </ span >
124
+ { ! isDeprecated && < span className = "badge badge--primary" > { plugin . version } </ span > }
105
125
</ div >
106
- < div className = "card__body" >
107
- { plugin . description }
126
+ < div className = { cardBodyClasses } >
127
+ { isDeprecated ? < div className = { styles . deprecatedMessage } > { deprecatedMessage } </ div > : plugin . description }
108
128
< div className = "padding-top--sm" >
109
129
{ plugin . links . map ( ( link ) => < a key = { link . text } className = "padding-right--sm" href = { link . href } > { link . text } </ a > ) }
110
130
</ div >
111
131
</ div >
112
- < PluginFooter keywords = { plugin . keywords } />
132
+ { ! isDeprecated && < PluginFooter keywords = { plugin . keywords } /> }
113
133
</ div >
114
134
</ div >
115
135
</ div >
@@ -141,7 +161,6 @@ function keywordsToQuerystring(keywords) {
141
161
} else {
142
162
keywordsStr += `gulpplugin` ;
143
163
}
144
-
145
164
return keywordsStr ;
146
165
}
147
166
@@ -150,6 +169,8 @@ async function fetchPackages(keywords, searchText = '', pageNumber = 0) {
150
169
151
170
let search = [
152
171
keywordsToQuerystring ( keywords ) ,
172
+ "is:unstable" ,
173
+ "not:unstable"
153
174
] ;
154
175
if ( searchText ) {
155
176
search . push ( encodeURIComponent ( searchText ) ) ;
0 commit comments