Skip to content

Commit 918dd49

Browse files
feat(applet): support filter on router page (#762)
1 parent e758ac3 commit 918dd49

File tree

1 file changed

+29
-4
lines changed
  • packages/applet/src/modules/router/components/routes

1 file changed

+29
-4
lines changed

packages/applet/src/modules/router/components/routes/Index.vue

+29-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
import type { CustomInspectorNode, CustomInspectorState } from '@vue/devtools-kit'
33
import { DevToolsMessagingEvents, rpc } from '@vue/devtools-core'
44
import { parse } from '@vue/devtools-kit'
5-
import { until } from '@vueuse/core'
5+
import { VueInput } from '@vue/devtools-ui'
6+
import { until, useToggle, watchDebounced } from '@vueuse/core'
67
import { Pane, Splitpanes } from 'splitpanes'
78
import { computed, onUnmounted, ref, watch } from 'vue'
89
import DevToolsHeader from '~/components/basic/DevToolsHeader.vue'
@@ -21,6 +22,8 @@ const customInspectState = useCustomInspectorState()
2122
const inspectorId = computed(() => customInspectState.value.id!)
2223
2324
const selected = ref('')
25+
const filterKey = ref('')
26+
const [filtered, toggleFiltered] = useToggle(true)
2427
const tree = ref<CustomInspectorNode[]>([])
2528
const treeNodeLinkedList = computed(() => tree.value?.length ? dfs(tree.value?.[0]) : [])
2629
const flattenedTreeNodes = computed(() => flattenTreeNodes(tree.value))
@@ -92,8 +95,8 @@ watch(selected, () => {
9295
getRoutesState(selected.value)
9396
})
9497
95-
const getRoutesInspectorTree = () => {
96-
rpc.value.getInspectorTree({ inspectorId: inspectorId.value, filter: '' }).then((_data) => {
98+
const getRoutesInspectorTree = async (filter = '') => {
99+
await rpc.value.getInspectorTree({ inspectorId: inspectorId.value, filter }).then((_data) => {
97100
const data = parse(_data!)
98101
tree.value = data
99102
if (!selected.value && data.length) {
@@ -145,6 +148,18 @@ onUnmounted(() => {
145148
rpc.functions.off(DevToolsMessagingEvents.INSPECTOR_TREE_UPDATED, onInspectorTreeUpdated)
146149
rpc.functions.off(DevToolsMessagingEvents.INSPECTOR_STATE_UPDATED, onInspectorStateUpdated)
147150
})
151+
152+
function search(v: string) {
153+
const value = v.trim().toLowerCase()
154+
toggleFiltered()
155+
getRoutesInspectorTree(value).then(() => {
156+
toggleFiltered()
157+
})
158+
}
159+
160+
watchDebounced(filterKey, (v) => {
161+
search(v)
162+
}, { debounce: 300 })
148163
</script>
149164

150165
<template>
@@ -155,12 +170,22 @@ onUnmounted(() => {
155170
<Splitpanes class="flex-1 overflow-auto">
156171
<Pane border="r base" size="40" h-full>
157172
<div h-full select-none overflow-scroll p2 class="no-scrollbar">
173+
<div class="pb2">
174+
<VueInput
175+
v-model="filterKey" placeholder="Search routes"
176+
:loading="!filtered"
177+
:loading-debounce-time="250" class="text-3.5"
178+
/>
179+
</div>
158180
<ComponentTree v-model="selected" :data="tree" />
159181
</div>
160182
</Pane>
161183
<Pane size="60">
162184
<div h-full overflow-scroll class="no-scrollbar">
163-
<RootStateViewer v-if="selected" class="p3" :data="state" node-id="" inspector-id="router" expanded-state-id="routes-state" />
185+
<RootStateViewer
186+
v-if="selected" class="p3" :data="state" node-id="" inspector-id="router"
187+
expanded-state-id="routes-state"
188+
/>
164189
<Empty v-else>
165190
No Data
166191
</Empty>

0 commit comments

Comments
 (0)