Type snippetDrawer
This commit is contained in:
parent
39ff078978
commit
25c5f7f70c
|
@ -64,7 +64,7 @@
|
||||||
import { setContext, createEventDispatcher, onDestroy } from "svelte"
|
import { setContext, createEventDispatcher, onDestroy } from "svelte"
|
||||||
import { generate } from "shortid"
|
import { generate } from "shortid"
|
||||||
|
|
||||||
export let title
|
export let title = null
|
||||||
export let forceModal = false
|
export let forceModal = false
|
||||||
|
|
||||||
const dispatch = createEventDispatcher()
|
const dispatch = createEventDispatcher()
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
export let context = null
|
export let context = null
|
||||||
export let snippets: Snippet[] | null = null
|
export let snippets: Snippet[] | null = null
|
||||||
export let autofocusEditor = false
|
export let autofocusEditor = false
|
||||||
export let placeholder = null
|
export let placeholder: string | null = null
|
||||||
export let showTabBar = true
|
export let showTabBar = true
|
||||||
|
|
||||||
let mode: BindingMode
|
let mode: BindingMode
|
||||||
|
|
|
@ -620,7 +620,6 @@
|
||||||
padding-bottom: var(--spacing-l);
|
padding-bottom: var(--spacing-l);
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
/* gap: var(--spacing-s); */
|
|
||||||
}
|
}
|
||||||
.snippet {
|
.snippet {
|
||||||
font-size: var(--font-size-s);
|
font-size: var(--font-size-s);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script>
|
<script lang="ts">
|
||||||
import {
|
import {
|
||||||
Button,
|
Button,
|
||||||
Drawer,
|
Drawer,
|
||||||
|
@ -14,6 +14,7 @@
|
||||||
import { getSequentialName } from "@/helpers/duplicate"
|
import { getSequentialName } from "@/helpers/duplicate"
|
||||||
import ConfirmDialog from "@/components/common/ConfirmDialog.svelte"
|
import ConfirmDialog from "@/components/common/ConfirmDialog.svelte"
|
||||||
import { ValidSnippetNameRegex } from "@budibase/shared-core"
|
import { ValidSnippetNameRegex } from "@budibase/shared-core"
|
||||||
|
import { Snippet } from "@budibase/types"
|
||||||
|
|
||||||
export let snippet
|
export let snippet
|
||||||
|
|
||||||
|
@ -22,11 +23,11 @@
|
||||||
|
|
||||||
const firstCharNumberRegex = /^[0-9].*$/
|
const firstCharNumberRegex = /^[0-9].*$/
|
||||||
|
|
||||||
let drawer
|
let drawer: Drawer
|
||||||
let name = ""
|
let name = ""
|
||||||
let code = ""
|
let code = ""
|
||||||
let loading = false
|
let loading = false
|
||||||
let deleteConfirmationDialog
|
let deleteConfirmationDialog: ConfirmDialog
|
||||||
|
|
||||||
$: defaultName = getSequentialName($snippets, "MySnippet", {
|
$: defaultName = getSequentialName($snippets, "MySnippet", {
|
||||||
getName: x => x.name,
|
getName: x => x.name,
|
||||||
|
@ -40,11 +41,11 @@
|
||||||
const saveSnippet = async () => {
|
const saveSnippet = async () => {
|
||||||
loading = true
|
loading = true
|
||||||
try {
|
try {
|
||||||
const newSnippet = { name, code: rawJS }
|
const newSnippet: Snippet = { name, code: rawJS || "" }
|
||||||
await snippets.saveSnippet(newSnippet)
|
await snippets.saveSnippet(newSnippet)
|
||||||
drawer.hide()
|
drawer.hide()
|
||||||
notifications.success(`Snippet ${newSnippet.name} saved`)
|
notifications.success(`Snippet ${newSnippet.name} saved`)
|
||||||
} catch (error) {
|
} catch (error: any) {
|
||||||
notifications.error(error.message || "Error saving snippet")
|
notifications.error(error.message || "Error saving snippet")
|
||||||
}
|
}
|
||||||
loading = false
|
loading = false
|
||||||
|
@ -61,7 +62,7 @@
|
||||||
loading = false
|
loading = false
|
||||||
}
|
}
|
||||||
|
|
||||||
const validateName = (name, snippets) => {
|
const validateName = (name: string, snippets: Snippet[]) => {
|
||||||
if (!name?.length) {
|
if (!name?.length) {
|
||||||
return "Name is required"
|
return "Name is required"
|
||||||
}
|
}
|
||||||
|
@ -78,7 +79,7 @@
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Drawer bind:this={drawer}>
|
<Drawer bind:this={drawer} forceModal>
|
||||||
<svelte:fragment slot="title">
|
<svelte:fragment slot="title">
|
||||||
{#if snippet}
|
{#if snippet}
|
||||||
{snippet.name}
|
{snippet.name}
|
||||||
|
@ -108,7 +109,11 @@
|
||||||
Delete
|
Delete
|
||||||
</Button>
|
</Button>
|
||||||
{/if}
|
{/if}
|
||||||
<Button cta on:click={saveSnippet} disabled={!code || loading || nameError}>
|
<Button
|
||||||
|
cta
|
||||||
|
on:click={saveSnippet}
|
||||||
|
disabled={!code || loading || !!nameError}
|
||||||
|
>
|
||||||
Save
|
Save
|
||||||
</Button>
|
</Button>
|
||||||
</svelte:fragment>
|
</svelte:fragment>
|
||||||
|
@ -124,9 +129,7 @@
|
||||||
value={code}
|
value={code}
|
||||||
on:change={e => (code = e.detail)}
|
on:change={e => (code = e.detail)}
|
||||||
>
|
>
|
||||||
<div slot="tabs">
|
<Input placeholder="Name" />
|
||||||
<Input placeholder="Name" />
|
|
||||||
</div>
|
|
||||||
</BindingPanel>
|
</BindingPanel>
|
||||||
{/key}
|
{/key}
|
||||||
</svelte:fragment>
|
</svelte:fragment>
|
||||||
|
|
Loading…
Reference in New Issue