Skip to content

Commit 3f9c913

Browse files
committed
fix(devtools): improve ui
1 parent cffec4b commit 3f9c913

File tree

9 files changed

+51
-21
lines changed

9 files changed

+51
-21
lines changed

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
"build:debug": "NUXT_DEBUG_BUILD=true pnpm -r run build",
99
"watch": "pnpm -r run watch",
1010
"dev": "pnpm -C packages/devtools-vite run dev",
11+
"play:devtools": "pnpm -C packages/devtools run play",
12+
"play:devtools:standalone": "pnpm -C packages/devtools run play:standalone",
13+
"play:ui": "pnpm -C packages/devtools-vite run dev",
1114
"prepare": "npx simple-git-hooks && pnpm -C packages/devtools-vite run dev:prepare",
1215
"lint": "pnpm -C packages/devtools-vite run dev:prepare && eslint .",
1316
"test": "vitest",

packages/devtools/src/client/webcomponents/.generated/css.ts

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

packages/devtools/src/client/webcomponents/components/Dock.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ onMounted(() => {
225225
ref="anchorEl"
226226
:style="[anchorStyle]"
227227
:class="{
228+
'vite-devtools-horizontal': !isVertical,
228229
'vite-devtools-vertical': isVertical,
229230
'vite-devtools-minimized': isMinimized,
230231
}"

packages/devtools/src/client/webcomponents/components/DockEntries.vue

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,25 +24,32 @@ function toggleDockEntry(dock: DevToolsDockEntry) {
2424

2525
<template>
2626
<div
27-
class="flex items-center w-full h-full justify-center transition-opacity duration-300"
27+
class="vite-devtools-dock-entries flex items-center w-full h-full justify-center transition-opacity duration-300"
2828
>
29-
<button
29+
<div
3030
v-for="dock of entries"
3131
:key="dock.id"
32-
:title="dock.title"
33-
:class="[
34-
isVertical ? 'rotate-270' : '',
35-
selected ? selected.id !== dock.id ? 'op50 saturate-0' : 'scale-120' : '',
36-
]"
37-
class="flex items-center justify-center p1.5 rounded-xl hover:bg-[#8881] hover:scale-120 transition-all duration-300"
38-
@click="toggleDockEntry(dock)"
32+
class="relative group vite-devtools-dock-entry"
3933
>
40-
<img
41-
:src="dock.icon"
42-
:alt="dock.title"
43-
class="w-5 h-5 select-none"
44-
draggable="false"
34+
<button
35+
:title="dock.title"
36+
:class="[
37+
isVertical ? 'rotate-270' : '',
38+
selected ? selected.id !== dock.id ? 'op50 saturate-0' : 'scale-120' : '',
39+
]"
40+
class="flex items-center justify-center p1.5 rounded-xl hover:bg-[#8881] hover:scale-120 transition-all duration-300 relative"
41+
@click="toggleDockEntry(dock)"
4542
>
46-
</button>
43+
<img
44+
:src="dock.icon"
45+
:alt="dock.title"
46+
class="w-5 h-5 select-none"
47+
draggable="false"
48+
>
49+
</button>
50+
<div class="vite-devtools-dock-label text-xs group-hover:opacity-100 opacity-0 transition-opacity duration-300 w-max bg-glass border border-base z-10 rounded px2 absolute p1">
51+
{{ dock.title }}
52+
</div>
53+
</div>
4754
</div>
4855
</template>

packages/devtools/src/client/webcomponents/components/DockPanel.vue

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,11 @@ onMounted(() => {
184184
:is-resizing="isResizing"
185185
:entry="entry"
186186
:iframes="iframes"
187+
:iframe-style="{
188+
border: '1px solid #8885',
189+
borderRadius: '0.5rem',
190+
zIndex: '2147483645',
191+
}"
187192
rounded
188193
/>
189194
<div

packages/devtools/src/client/webcomponents/components/ViewEntry.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script setup lang="ts">
22
import type { DevToolsDockEntry } from '@vitejs/devtools-kit'
3+
import type { CSSProperties } from 'vue'
34
import type { DevToolsDockState } from './DockProps'
45
import type { IframeManager } from './IframeManager'
56
import ViewIframe from './ViewIframe.vue'
@@ -10,6 +11,7 @@ defineProps<{
1011
isResizing: boolean
1112
entry: DevToolsDockEntry
1213
iframes: IframeManager
14+
iframeStyle?: CSSProperties
1315
}>()
1416
</script>
1517

@@ -21,6 +23,7 @@ defineProps<{
2123
:is-resizing="isResizing"
2224
:entry="entry"
2325
:iframes="iframes"
26+
:iframe-style="iframeStyle"
2427
/>
2528
<div v-else>
2629
Unknown entry: {{ entry }}

packages/devtools/src/client/webcomponents/components/ViewIframe.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script setup lang="ts">
22
import type { DevToolsViewIframe } from '@vitejs/devtools-kit'
3+
import type { CSSProperties } from 'vue'
34
import type { DevToolsDockState } from './DockProps'
45
import type { IframeManager } from './IframeManager'
56
import { nextTick, onMounted, onUnmounted, useTemplateRef, watch, watchEffect } from 'vue'
@@ -10,17 +11,16 @@ const props = defineProps<{
1011
isResizing: boolean
1112
entry: DevToolsViewIframe
1213
iframes: IframeManager
14+
iframeStyle?: CSSProperties
1315
}>()
1416
1517
const viewFrame = useTemplateRef<HTMLDivElement>('viewFrame')
1618
1719
onMounted(() => {
1820
const holder = props.iframes.getIframeHolder(props.entry.id)
19-
holder.iframe.style.border = '1px solid #8885'
20-
holder.iframe.style.borderRadius = '0.5rem'
2121
holder.iframe.style.boxShadow = 'none'
2222
holder.iframe.style.outline = 'none'
23-
holder.iframe.style.zIndex = '2147483645'
23+
Object.assign(holder.iframe.style, props.iframeStyle)
2424
2525
if (!holder.iframe.src)
2626
holder.iframe.src = props.entry.url
@@ -42,6 +42,7 @@ onMounted(() => {
4242
() => {
4343
holder.iframe.style.pointerEvents = (props.isDragging || props.isResizing) ? 'none' : 'auto'
4444
},
45+
{ flush: 'sync' },
4546
)
4647
})
4748

packages/devtools/src/client/webcomponents/style.css

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,12 @@
6969
--uno: hidden;
7070
}
7171
}
72+
73+
.vite-devtools-dock-label {
74+
--uno: translate-x--1/2 bottom--7 left-1/2;
75+
}
76+
77+
.vite-devtools-vertical .vite-devtools-dock-label {
78+
--uno: rotate-270 bottom--10;
79+
}
80+

packages/devtools/src/node/cli.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,11 @@ cli
9393
})
9494

9595
const app = createApp()
96-
app.use('/__vite_devtools__', h3.handler)
9796
app.use('/', eventHandler(async (event) => {
98-
return sendRedirect(event, '/__vite_devtools__/')
97+
if (event.node.req.url === '/')
98+
return sendRedirect(event, '/__vite_devtools__/')
9999
}))
100+
app.use('/__vite_devtools__', h3.handler)
100101

101102
const server = createServer(toNodeListener(app))
102103

0 commit comments

Comments
 (0)