@@ -38,6 +38,7 @@ let pathName = window.location.pathname;
3838let searchQuery = '' ;
3939let selectedLanguage = 'all' ;
4040let selectedComponent = 'all' ;
41+ let selectedFlag = 'all' ; // Added selectedFlag
4142
4243parseUrlParams ( ) ;
4344
@@ -49,7 +50,12 @@ if (pathName.includes('registry')) {
4950 showBody ( ) ;
5051 }
5152
52- if ( selectedLanguage !== 'all' || selectedComponent !== 'all' ) {
53+ // Set the dropdown values from query params
54+ if (
55+ selectedLanguage !== 'all' ||
56+ selectedComponent !== 'all' ||
57+ selectedFlag !== 'all'
58+ ) {
5359 if ( selectedLanguage !== 'all' ) {
5460 document . getElementById ( 'languageDropdown' ) . textContent =
5561 document . getElementById (
@@ -62,6 +68,10 @@ if (pathName.includes('registry')) {
6268 `component-item-${ selectedComponent } ` ,
6369 ) . textContent ;
6470 }
71+ if ( selectedFlag !== 'all' ) {
72+ document . getElementById ( 'flagsDropdown' ) . textContent =
73+ document . getElementById ( `flag-item-${ selectedFlag } ` ) . textContent ;
74+ }
6575 updateFilters ( ) ;
6676 }
6777
@@ -106,6 +116,22 @@ if (pathName.includes('registry')) {
106116 updateFilters ( ) ;
107117 } ) ,
108118 ) ;
119+ // Flags dropdown event listener
120+
121+ let flagList = document
122+ . getElementById ( 'flagsFilter' )
123+ . querySelectorAll ( '.dropdown-item' ) ;
124+
125+ flagList . forEach ( ( element ) =>
126+ element . addEventListener ( 'click' , function ( evt ) {
127+ let val = evt . target . getAttribute ( 'value' ) ;
128+ selectedFlag = val ;
129+ document . getElementById ( 'flagsDropdown' ) . textContent =
130+ evt . target . textContent ;
131+ setInput ( 'flag' , val ) ;
132+ updateFilters ( ) ;
133+ } ) ,
134+ ) ;
109135 } ) ;
110136}
111137
@@ -208,34 +234,51 @@ function setInput(key, value) {
208234 history . replaceState ( null , null , '?' + queryParams . toString ( ) ) ;
209235}
210236
211- // Filters items based on language and component filters
237+ // Filters items based on language, component and flags
212238function updateFilters ( ) {
213239 let allItems = [ ...document . getElementsByClassName ( 'registry-entry' ) ] ;
214- if ( selectedComponent === 'all' && selectedLanguage === 'all' ) {
240+ if (
241+ selectedComponent === 'all' &&
242+ selectedLanguage === 'all' &&
243+ selectedFlag === 'all'
244+ ) {
245+ // Show all items if all filters are set to 'all'
215246 allItems . forEach ( ( element ) => element . classList . remove ( 'd-none' ) ) ;
216247 } else {
248+ // Apply the filters
217249 allItems . forEach ( ( element ) => {
218250 const dc = element . dataset . registrytype ;
219251 const dl = element . dataset . registrylanguage ;
220- if (
221- ( dc === selectedComponent || selectedComponent === 'all' ) &&
222- ( dl === selectedLanguage || selectedLanguage === 'all' )
223- ) {
252+ const df = element . dataset . registryflags
253+ ? element . dataset . registryflags . split ( ' ' ) . map ( ( f ) => f . toLowerCase ( ) )
254+ : [ ] ;
255+
256+ const componentMatches =
257+ dc === selectedComponent || selectedComponent === 'all' ;
258+ const languageMatches =
259+ dl === selectedLanguage || selectedLanguage === 'all' ;
260+ const flagMatches =
261+ selectedFlag === 'all' || df . includes ( selectedFlag . toLowerCase ( ) ) ;
262+
263+ if ( flagMatches ) {
264+ console . log ( 'Flag matches:' , df ) ;
265+ }
266+
267+ if ( componentMatches && languageMatches && flagMatches ) {
268+ // Changed
224269 element . classList . remove ( 'd-none' ) ;
225- } else if ( dc === selectedComponent && dl !== selectedLanguage ) {
226- element . classList . add ( 'd-none' ) ;
227- } else if ( dl === selectedLanguage && dc !== selectedComponent ) {
228- element . classList . add ( 'd-none' ) ;
229270 } else {
230271 element . classList . add ( 'd-none' ) ;
231272 }
232273 } ) ;
233274 }
234275}
235276
277+ // Parse URL parameters and update variables
236278function parseUrlParams ( ) {
237279 let urlParams = new URLSearchParams ( window . location . search ) ;
238280 searchQuery = urlParams . get ( 's' ) ;
239281 selectedLanguage = urlParams . get ( 'language' ) || 'all' ;
240282 selectedComponent = urlParams . get ( 'component' ) || 'all' ;
283+ selectedFlag = urlParams . get ( 'flag' ) || 'all' ; // Added
241284}
0 commit comments