Skip to content

Commit cd46761

Browse files
committed
feat(app): better sidebar hover when collapsed
1 parent 7016be0 commit cd46761

1 file changed

Lines changed: 25 additions & 7 deletions

File tree

packages/app/src/pages/layout.tsx

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,12 @@ export default function Layout(props: ParentProps) {
138138
const [hoverProject, setHoverProject] = createSignal<string | undefined>()
139139

140140
const [nav, setNav] = createSignal<HTMLElement | undefined>(undefined)
141+
const navLeave = { current: undefined as number | undefined }
142+
143+
onCleanup(() => {
144+
if (navLeave.current === undefined) return
145+
clearTimeout(navLeave.current)
146+
})
141147

142148
const sidebarHovering = createMemo(() => !layout.sidebar.opened() && hoverProject() !== undefined)
143149
const sidebarExpanded = createMemo(() => layout.sidebar.opened() || sidebarHovering())
@@ -1702,9 +1708,10 @@ export default function Layout(props: ParentProps) {
17021708
>
17031709
<HoverCard
17041710
openDelay={1000}
1705-
closeDelay={sidebarHovering() ? 300 : 0}
1706-
placement="right"
1707-
gutter={28}
1711+
closeDelay={sidebarHovering() ? 600 : 0}
1712+
placement="right-start"
1713+
gutter={16}
1714+
shift={-2}
17081715
trigger={item}
17091716
mount={!props.mobile ? nav() : undefined}
17101717
open={hoverSession() === props.session.id}
@@ -2067,7 +2074,7 @@ export default function Layout(props: ParentProps) {
20672074
size="large"
20682075
onClick={(e: MouseEvent) => {
20692076
loadMore()
2070-
;(e.currentTarget as HTMLButtonElement).blur()
2077+
; (e.currentTarget as HTMLButtonElement).blur()
20712078
}}
20722079
>
20732080
{language.t("common.loadMore")}
@@ -2302,7 +2309,7 @@ export default function Layout(props: ParentProps) {
23022309
size="large"
23032310
onClick={(e: MouseEvent) => {
23042311
loadMore()
2305-
;(e.currentTarget as HTMLButtonElement).blur()
2312+
; (e.currentTarget as HTMLButtonElement).blur()
23062313
}}
23072314
>
23082315
{language.t("common.loadMore")}
@@ -2663,9 +2670,20 @@ export default function Layout(props: ParentProps) {
26632670
ref={(el) => {
26642671
setNav(el)
26652672
}}
2673+
onMouseEnter={() => {
2674+
if (navLeave.current === undefined) return
2675+
clearTimeout(navLeave.current)
2676+
navLeave.current = undefined
2677+
}}
26662678
onMouseLeave={() => {
2667-
setHoverSession(undefined)
2668-
setHoverProject(undefined)
2679+
if (!sidebarHovering()) return
2680+
2681+
if (navLeave.current !== undefined) clearTimeout(navLeave.current)
2682+
navLeave.current = window.setTimeout(() => {
2683+
navLeave.current = undefined
2684+
setHoverProject(undefined)
2685+
setHoverSession(undefined)
2686+
}, 300)
26692687
}}
26702688
>
26712689
<div class="@container w-full h-full contain-strict">

0 commit comments

Comments
 (0)