mirror of
https://github.com/CorentinTh/it-tools.git
synced 2025-05-08 23:25:03 -04:00
47 lines
1.2 KiB
Vue
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>
|