@@ -3,11 +3,14 @@ import { rpc } from '../logic/rpc'
33import type { DocumentInfo } from ' ../../types'
44import { data } from ' ../logic/documentations'
55
6+ const rawItems = data
67const items = ref (data )
78const iframeViewUrl = ref (' ' )
9+ let packagesName
10+
811rpc .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
1316function 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+
2029function 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