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 1
1
<script setup lang="ts">
2
2
import 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'
5
5
import RuleItem from ' ./RuleItem.vue'
6
6
import IconDown from ' ../components/utils/IconDown.vue'
7
7
8
+ const sortBy = ref (' name' )
8
9
const props = defineProps ({
9
10
filter: {
10
11
type: Object as PropType <Filter >,
@@ -15,7 +16,7 @@ const emit = defineEmits<{
15
16
reset: []
16
17
}>()
17
18
18
- const ruleMetaData = computed (() => getRuleMetaData (props .filter ))
19
+ const ruleMetaData = computed (() => getRuleMetaData (props .filter , sortBy . value ))
19
20
</script >
20
21
21
22
<template >
@@ -30,9 +31,9 @@ const ruleMetaData = computed(() => getRuleMetaData(props.filter))
30
31
/>
31
32
<label class =" sort-by" >
32
33
Sort by:
33
- <select >
34
- <option >Name</option >
35
- <option >Lang</option >
34
+ <select v-model = " sortBy " >
35
+ <option value = " name " >Name</option >
36
+ <option value = " lang " >Lang</option >
36
37
</select >
37
38
<IconDown />
38
39
</label >
Original file line number Diff line number Diff line change @@ -5,16 +5,23 @@ export function intersect(a: string[], b: string[]) {
5
5
return a . some ( x => b . includes ( x ) )
6
6
}
7
7
8
- export function getRuleMetaData ( filter : Filter ) {
8
+ export function getRuleMetaData ( filter : Filter , sortBy = 'name' ) {
9
9
const {
10
10
selectedLanguages,
11
+ selectedRules,
11
12
} = filter
12
13
return allRules . filter ( meta => {
13
14
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 )
15
16
const featureFilter = ! filter . selectedFeatures . length || intersect ( filter . selectedFeatures , meta . features )
16
17
const typeFilter = ! filter . selectedTypes . length || filter . selectedTypes . includes ( meta . type )
17
18
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
+ }
18
25
} )
19
26
}
20
27
You can’t perform that action at this time.
0 commit comments