Show popover

This commit is contained in:
Adria Navarro 2025-02-20 13:10:29 +01:00
parent c0830f310c
commit 1bb9dccfa1
1 changed files with 21 additions and 8 deletions

View File

@ -21,7 +21,7 @@
let popover: Popover let popover: Popover
let popoverAnchor: HTMLElement | null let popoverAnchor: HTMLElement | null
let hoverTarget: { let hoverTarget: {
helper: boolean type: "binding" | "helper" | "snippet"
code: string code: string
description?: string description?: string
} | null } | null
@ -119,26 +119,39 @@
stopHidingPopover() stopHidingPopover()
popoverAnchor = target popoverAnchor = target
hoverTarget = { hoverTarget = {
helper: false, type: "binding",
code: binding.valueHTML, code: binding.valueHTML,
} }
popover.show() popover.show()
} }
const showHelperPopover = (helper: any, target: HTMLElement) => { const showHelperPopover = (helper: Helper, target: HTMLElement) => {
stopHidingPopover() stopHidingPopover()
if (!helper.displayText && helper.description) { if (!helper.displayText && helper.description) {
return return
} }
popoverAnchor = target popoverAnchor = target
hoverTarget = { hoverTarget = {
helper: true, type: "helper",
description: helper.description, description: helper.description,
code: getHelperExample(helper, mode === BindingMode.JavaScript), code: getHelperExample(helper, mode === BindingMode.JavaScript),
} }
popover.show() popover.show()
} }
const showSnippetPopover = (snippet: Snippet, target: HTMLElement) => {
stopHidingPopover()
if (!snippet.code) {
return
}
popoverAnchor = target
hoverTarget = {
type: "snippet",
code: snippet.code,
}
popover.show()
}
const hidePopover = () => { const hidePopover = () => {
hideTimeout = setTimeout(() => { hideTimeout = setTimeout(() => {
popover.hide() popover.hide()
@ -329,15 +342,15 @@
{#if filteredSnippets?.length} {#if filteredSnippets?.length}
<div class="sub-section"> <div class="sub-section">
<ul class="helpers"> <ul class="helpers">
{#each filteredSnippets as helper} {#each filteredSnippets as snippet}
<li <li
class="binding" class="binding"
on:mouseenter={e => on:mouseenter={e =>
showHelperPopover(helper, e.currentTarget)} showSnippetPopover(snippet, e.currentTarget)}
on:mouseleave={hidePopover} on:mouseleave={hidePopover}
on:click={() => addSnippet(helper)} on:click={() => addSnippet(snippet)}
> >
<span class="binding__label">{helper.name}</span> <span class="binding__label">{snippet.name}</span>
<span class="binding__typeWrap"> <span class="binding__typeWrap">
<span class="binding__type">snippet</span> <span class="binding__type">snippet</span>
</span> </span>