Format code

This commit is contained in:
Adria Navarro 2025-02-20 13:18:24 +01:00
parent 1bb9dccfa1
commit 6b2e87c0f3
1 changed files with 39 additions and 16 deletions

View File

@ -5,6 +5,8 @@
import { handlebarsCompletions } from "@/constants/completions" import { handlebarsCompletions } from "@/constants/completions"
import type { EnrichedBinding, Helper, Snippet } from "@budibase/types" import type { EnrichedBinding, Helper, Snippet } from "@budibase/types"
import { BindingMode } from "@budibase/types" import { BindingMode } from "@budibase/types"
import { EditorModes } from "../CodeEditor"
import CodeEditor from "../CodeEditor/CodeEditor.svelte"
export let addHelper: (_helper: Helper, _js?: boolean) => void export let addHelper: (_helper: Helper, _js?: boolean) => void
export let addBinding: (_binding: EnrichedBinding) => void export let addBinding: (_binding: EnrichedBinding) => void
@ -41,7 +43,14 @@
Snippets: "Code", Snippets: "Code",
} as Record<string, string> } as Record<string, string>
$: categories = Object.entries(groupBy("category", bindings)) $: categories = Object.entries(groupBy("category", bindings))
$: categoryNames = getCategoryNames(categories)
$: filteredSnippets = getFilteredSnippets(
mode,
allowSnippets,
snippets || [],
search
)
$: categoryNames = getCategoryNames(categories, filteredSnippets.length > 0)
$: searchRgx = new RegExp(search, "ig") $: searchRgx = new RegExp(search, "ig")
$: filteredCategories = categories $: filteredCategories = categories
.map(([name, categoryBindings]) => ({ .map(([name, categoryBindings]) => ({
@ -65,17 +74,15 @@
) )
}) })
$: filteredSnippets = getFilteredSnippets(
allowSnippets,
snippets || [],
search
)
const getFilteredSnippets = ( const getFilteredSnippets = (
mode: BindingMode,
enableSnippets: boolean, enableSnippets: boolean,
snippets: Snippet[], snippets: Snippet[],
search: string search: string
) => { ) => {
if (mode !== BindingMode.JavaScript) {
return []
}
if (!enableSnippets || !snippets.length) { if (!enableSnippets || !snippets.length) {
return [] return []
} }
@ -98,12 +105,15 @@
return example || "" return example || ""
} }
const getCategoryNames = (categories: [string, EnrichedBinding[]][]) => { const getCategoryNames = (
categories: [string, EnrichedBinding[]][],
showSnippets: boolean
) => {
const names = [...categories.map(cat => cat[0])] const names = [...categories.map(cat => cat[0])]
if (allowHelpers) { if (allowHelpers) {
names.push("Helpers") names.push("Helpers")
} }
if (allowSnippets) { if (showSnippets) {
names.push("Snippets") names.push("Snippets")
} }
return names return names
@ -192,7 +202,10 @@
on:mouseenter={stopHidingPopover} on:mouseenter={stopHidingPopover}
on:mouseleave={hidePopover} on:mouseleave={hidePopover}
> >
<div class="binding-popover" class:helper={hoverTarget.helper}> <div
class="binding-popover"
class:has-code={hoverTarget.type !== "binding"}
>
{#if hoverTarget.description} {#if hoverTarget.description}
<div> <div>
<!-- eslint-disable-next-line svelte/no-at-html-tags--> <!-- eslint-disable-next-line svelte/no-at-html-tags-->
@ -200,9 +213,17 @@
</div> </div>
{/if} {/if}
{#if hoverTarget.code} {#if hoverTarget.code}
{#if mode === BindingMode.JavaScript}
<CodeEditor
value={hoverTarget.code?.trim()}
mode={EditorModes.JS}
readonly
/>
{:else if mode === BindingMode.Text}
<!-- eslint-disable-next-line svelte/no-at-html-tags--> <!-- eslint-disable-next-line svelte/no-at-html-tags-->
<pre>{@html hoverTarget.code}</pre> <pre>{@html hoverTarget.code}</pre>
{/if} {/if}
{/if}
</div> </div>
</Popover> </Popover>
{/if} {/if}
@ -323,7 +344,6 @@
class="binding" class="binding"
on:mouseenter={e => on:mouseenter={e =>
showHelperPopover(helper, e.currentTarget)} showHelperPopover(helper, e.currentTarget)}
on:mouseleave={hidePopover}
on:click={() => on:click={() =>
addHelper(helper, mode === BindingMode.JavaScript)} addHelper(helper, mode === BindingMode.JavaScript)}
> >
@ -347,7 +367,6 @@
class="binding" class="binding"
on:mouseenter={e => on:mouseenter={e =>
showSnippetPopover(snippet, e.currentTarget)} showSnippetPopover(snippet, e.currentTarget)}
on:mouseleave={hidePopover}
on:click={() => addSnippet(snippet)} on:click={() => addSnippet(snippet)}
> >
<span class="binding__label">{snippet.name}</span> <span class="binding__label">{snippet.name}</span>
@ -503,7 +522,7 @@
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
} }
.binding-popover.helper pre { .binding-popover.has-code pre {
color: var(--spectrum-global-color-blue-700); color: var(--spectrum-global-color-blue-700);
} }
.binding-popover pre :global(span) { .binding-popover pre :global(span) {
@ -515,7 +534,11 @@
padding: 0; padding: 0;
margin: 0; margin: 0;
} }
.binding-popover.helper :global(code) { .binding-popover.has-code :global(code) {
font-size: 12px; font-size: 12px;
} }
.binding-popover.has-code :global(.cm-line),
.binding-popover.has-code :global(.cm-content) {
padding: 0;
}
</style> </style>