it-tools/src/tools/http-status-codes/http-status-codes.vue
2023-06-25 13:00:50 +00:00

47 lines
1.2 KiB
Vue

<script setup lang="ts">
import { codesByCategories } from './http-status-codes.constants';
import { useFuzzySearch } from '@/composable/fuzzySearch';
const search = ref('');
const { searchResult } = useFuzzySearch({
search,
data: codesByCategories.flatMap(({ codes, category }) => codes.map(code => ({ ...code, category }))),
options: {
keys: [{ name: 'code', weight: 3 }, { name: 'name', weight: 2 }, 'description', 'category'],
},
});
const codesByCategoryFiltered = computed(() => {
if (!search.value) {
return codesByCategories;
}
return [{ category: 'Search results', codes: searchResult.value }];
});
</script>
<template>
<div>
<c-input-text
v-model:value="search"
placeholder="Search http status..."
autofocus raw-text mb-10
/>
<div v-for="{ codes, category } of codesByCategoryFiltered" :key="category" mb-8>
<div mb-2 text-xl>
{{ category }}
</div>
<c-card v-for="{ code, description, name, type } of codes" :key="code" mb-2>
<div text-lg font-bold>
{{ code }} {{ name }}
</div>
<div op-70>
{{ description }} {{ type !== 'HTTP' ? `For ${type}.` : '' }}
</div>
</c-card>
</div>
</div>
</template>