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 sortBy = ref (' name' )
89const props = defineProps ({
910 filter: {
1011 type: Object as PropType <Filter >,
@@ -15,7 +16,7 @@ const emit = defineEmits<{
1516 reset: []
1617}>()
1718
18- const ruleMetaData = computed (() => getRuleMetaData (props .filter ))
19+ const ruleMetaData = computed (() => getRuleMetaData (props .filter , sortBy . value ))
1920 </script >
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 " >Name</option >
36+ <option value = " lang " >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