Add snippets to bindingPanel

This commit is contained in:
Adria Navarro 2025-02-20 12:23:07 +01:00
parent bd82399e94
commit c0830f310c
2 changed files with 47 additions and 0 deletions

View File

@ -436,6 +436,7 @@
addBinding={onSelectBinding} addBinding={onSelectBinding}
{addSnippet} {addSnippet}
{mode} {mode}
{snippets}
/> />
{:else if sidePanel === SidePanel.Evaluation} {:else if sidePanel === SidePanel.Evaluation}
<EvaluationSidePanel <EvaluationSidePanel

View File

@ -10,6 +10,7 @@
export let addBinding: (_binding: EnrichedBinding) => void export let addBinding: (_binding: EnrichedBinding) => void
export let addSnippet: (_snippet: Snippet) => void export let addSnippet: (_snippet: Snippet) => void
export let bindings: EnrichedBinding[] export let bindings: EnrichedBinding[]
export let snippets: Snippet[] | null
export let mode: BindingMode export let mode: BindingMode
export let allowHelpers: boolean export let allowHelpers: boolean
export let allowSnippets: boolean export let allowSnippets: boolean
@ -64,6 +65,28 @@
) )
}) })
$: filteredSnippets = getFilteredSnippets(
allowSnippets,
snippets || [],
search
)
const getFilteredSnippets = (
enableSnippets: boolean,
snippets: Snippet[],
search: string
) => {
if (!enableSnippets || !snippets.length) {
return []
}
if (!search?.length) {
return snippets
}
return snippets.filter(snippet =>
snippet.name.toLowerCase().includes(search.toLowerCase())
)
}
const getHelperExample = (helper: Helper, js: boolean) => { const getHelperExample = (helper: Helper, js: boolean) => {
let example = helper.example || "" let example = helper.example || ""
if (js) { if (js) {
@ -301,6 +324,29 @@
</div> </div>
{/if} {/if}
{/if} {/if}
{#if selectedCategory === "Snippets" || search}
{#if filteredSnippets?.length}
<div class="sub-section">
<ul class="helpers">
{#each filteredSnippets as helper}
<li
class="binding"
on:mouseenter={e =>
showHelperPopover(helper, e.currentTarget)}
on:mouseleave={hidePopover}
on:click={() => addSnippet(helper)}
>
<span class="binding__label">{helper.name}</span>
<span class="binding__typeWrap">
<span class="binding__type">snippet</span>
</span>
</li>
{/each}
</ul>
</div>
{/if}
{/if}
{/if} {/if}
</Layout> </Layout>
</div> </div>