Skip to content
This repository was archived by the owner on Jan 6, 2024. It is now read-only.

Commit 04af532

Browse files
committed
feat: supports filtering documents
1 parent c7c3e25 commit 04af532

File tree

1 file changed

+29
-15
lines changed

1 file changed

+29
-15
lines changed

src/client/pages/documentations.vue

+29-15
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@ import { rpc } from '../logic/rpc'
33
import type { DocumentInfo } from '../../types'
44
import { data } from '../logic/documentations'
55
6+
const rawItems = data
67
const items = ref(data)
78
const iframeViewUrl = ref('')
9+
let packagesName
10+
811
rpc.getPackages().then((res) => {
9-
const packagesName = Object.keys(res.packages)
10-
items.value = items.value.filter(item => packagesName.includes(item.id))
12+
packagesName = Object.keys(res.packages)
13+
items.value = rawItems.filter(item => packagesName.includes(item.id))
1114
})
1215
1316
function navigate(data: DocumentInfo) {
@@ -17,24 +20,35 @@ function navigate(data: DocumentInfo) {
1720
iframeViewUrl.value = data.website
1821
}
1922
23+
const keywords = ref('')
24+
25+
watch(keywords, () => {
26+
items.value = rawItems.filter(item => packagesName.includes(item.id) && (item.id.includes(keywords.value) || keywords.value.length === 0))
27+
})
28+
2029
function back() {
2130
iframeViewUrl.value = ''
2231
}
2332
</script>
2433

2534
<template>
26-
<div v-if="iframeViewUrl" relative h-screen>
27-
<IframeView :src="iframeViewUrl" />
28-
<teleport to="body">
29-
<span
30-
fixed left-2 top-2 z-1000 h-8 w-8 flex cursor-pointer select-none items-center justify-center rounded-5
31-
bg-base hover="text-primary" @click.prevent.stop="back"
32-
>
33-
<i tabler:arrow-back-up />
34-
</span>
35-
</teleport>
36-
</div>
37-
<div v-else grid grid-cols-minmax-400px h-screen select-none gap3 overflow-scroll p4 class="no-scrollbar">
38-
<DocDetails v-for="(item, index) in items" :key="index" :data="item" @navigate="navigate" />
35+
<div class="overflow-y-scroll">
36+
<div border="b base" flex="~ col gap1" px4 py3 navbar-glass>
37+
<VTextInput v-model="keywords" font-mono icon="carbon:search" placeholder="Filter Documentations" op50 />
38+
</div>
39+
<div v-if="iframeViewUrl">
40+
<IframeView :src="iframeViewUrl" />
41+
<teleport to="body">
42+
<span
43+
fixed left-2 top-2 z-1000 h-8 w-8 flex cursor-pointer select-none items-center justify-center rounded-5
44+
bg-base hover="text-primary" @click.prevent.stop="back"
45+
>
46+
<i tabler:arrow-back-up />
47+
</span>
48+
</teleport>
49+
</div>
50+
<div v-else grid grid-cols-minmax-400px h-screen select-none gap3 overflow-scroll p4 class="no-scrollbar">
51+
<DocDetails v-for="(item, index) in items" :key="index" :data="item" @navigate="navigate" />
52+
</div>
3953
</div>
4054
</template>

0 commit comments

Comments
 (0)