File tree Expand file tree Collapse file tree 2 files changed +16
-8
lines changed Expand file tree Collapse file tree 2 files changed +16
-8
lines changed Original file line number Diff line number Diff line change 11<script  setup lang="ts">
22import  NumberFlow , { continuous  } from  ' @number-flow/vue' 
3- import  { type  Filter , getRuleMetaData  } from  ' ./data' 
4- import  { computed , type  PropType  } from  ' vue' 
3+ import  { type  Filter , getRuleMetaData  } from  ' ./data.js ' 
4+ import  { computed , ref ,  type  PropType  } from  ' vue' 
55import  RuleItem  from  ' ./RuleItem.vue' 
66import  IconDown  from  ' ../components/utils/IconDown.vue' 
77
8+ const =  ref (' name' 
89const =  defineProps ({
910  filter: { 
1011    type: Object  as  PropType <Filter >, 
@@ -15,7 +16,7 @@ const emit = defineEmits<{
1516  reset:  [] 
1617}>() 
1718
18- const =  computed (() =>  getRuleMetaData (props .filter ))
19+ const =  computed (() =>  getRuleMetaData (props .filter ,  sortBy . value ))
1920script >
2021
2122<template >
@@ -30,9 +31,9 @@ const ruleMetaData = computed(() => getRuleMetaData(props.filter))
3031      />
3132      <label  class =" sort-by" 
3233        Sort by:
33-         <select >
34-           <option >Name</option >
35-           <option >Lang</option >
34+         <select   v-model = " sortBy " 
35+           <option   value = " name " option >
36+           <option   value = " lang " option >
3637        </select >
3738        <IconDown />
3839      </label >
Original file line number Diff line number Diff line change @@ -5,16 +5,23 @@ export function intersect(a: string[], b: string[]) {
55  return  a . some ( x  =>  b . includes ( x ) ) 
66} 
77
8- export  function  getRuleMetaData ( filter : Filter )  { 
8+ export  function  getRuleMetaData ( filter : Filter ,   sortBy   =   'name' )  { 
99  const  { 
1010    selectedLanguages, 
11+     selectedRules, 
1112  }  =  filter 
1213  return  allRules . filter ( meta  =>  { 
1314    const  langFilter  =  ! selectedLanguages . length  ||  selectedLanguages . includes ( meta . language ) 
14-     const  ruleFilter  =  ! filter . selectedRules . length  ||  intersect ( filter . selectedRules ,  meta . rules ) 
15+     const  ruleFilter  =  ! selectedRules . length  ||  intersect ( selectedRules ,  meta . rules ) 
1516    const  featureFilter  =  ! filter . selectedFeatures . length  ||  intersect ( filter . selectedFeatures ,  meta . features ) 
1617    const  typeFilter  =  ! filter . selectedTypes . length  ||  filter . selectedTypes . includes ( meta . type ) 
1718    return  langFilter  &&  ruleFilter  &&  featureFilter  &&  typeFilter 
19+   } ) . toSorted ( ( a ,  b )  =>  { 
20+     if  ( sortBy  ===  'name' )  { 
21+       return  a . name . localeCompare ( b . name ) 
22+     }  else  { 
23+       return  a . language . localeCompare ( b . language ) 
24+     } 
1825  } ) 
1926} 
2027
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments