|
|
|
@ -10,16 +10,39 @@ |
|
|
|
ProgressCircle, |
|
|
|
} from "@budibase/bbui" |
|
|
|
import getTemplates from "builderStore/store/screenTemplates" |
|
|
|
import { onDestroy } from "svelte" |
|
|
|
|
|
|
|
import { createEventDispatcher } from "svelte" |
|
|
|
|
|
|
|
export let selectedScreens = [] |
|
|
|
export let chooseModal |
|
|
|
export let save |
|
|
|
export let showProgressCircle = false |
|
|
|
|
|
|
|
let selectedScreens = [] |
|
|
|
|
|
|
|
const blankScreen = "createFromScratch" |
|
|
|
const dispatch = createEventDispatcher() |
|
|
|
|
|
|
|
function setScreens() { |
|
|
|
dispatch("save", { |
|
|
|
screens: selectedScreens, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
$: blankSelected = selectedScreens?.length === 1 |
|
|
|
$: autoSelected = selectedScreens?.length > 0 && !blankSelected |
|
|
|
|
|
|
|
let templates = getTemplates($store, $tables.list) |
|
|
|
|
|
|
|
const confirm = async () => { |
|
|
|
if (autoSelected) { |
|
|
|
setScreens() |
|
|
|
await save() |
|
|
|
} else { |
|
|
|
setScreens() |
|
|
|
chooseModal(1) |
|
|
|
} |
|
|
|
} |
|
|
|
const toggleScreenSelection = table => { |
|
|
|
if (selectedScreens.find(s => s.table === table.name)) { |
|
|
|
selectedScreens = selectedScreens.filter( |
|
|
|
@ -32,14 +55,18 @@ |
|
|
|
selectedScreens = [...partialTemplates, ...selectedScreens] |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
onDestroy(() => { |
|
|
|
selectedScreens = [] |
|
|
|
}) |
|
|
|
</script> |
|
|
|
|
|
|
|
<div style="overflow-y: auto; max-height: 1000px"> |
|
|
|
<div> |
|
|
|
<ModalContent |
|
|
|
title="Add screens" |
|
|
|
confirmText="Add Screens" |
|
|
|
cancelText="Cancel" |
|
|
|
onConfirm={() => (autoSelected ? save() : chooseModal(1))} |
|
|
|
onConfirm={() => confirm()} |
|
|
|
disabled={!selectedScreens.length} |
|
|
|
size="L" |
|
|
|
> |
|
|
|
@ -70,29 +97,31 @@ |
|
|
|
{/if} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<Detail size="S">Autogenerated Screens</Detail> |
|
|
|
{#if $tables.list.filter(table => table._id !== "ta_users").length > 0} |
|
|
|
<Detail size="S">Autogenerated Screens</Detail> |
|
|
|
|
|
|
|
{#each $tables.list.filter(table => table._id !== "ta_users") as table} |
|
|
|
<div |
|
|
|
class:disabled={blankSelected} |
|
|
|
class:selected={selectedScreens.find(x => x.table === table.name)} |
|
|
|
on:click={() => toggleScreenSelection(table)} |
|
|
|
class="item" |
|
|
|
> |
|
|
|
<div class="content"> |
|
|
|
<div class="text">{table.name}</div> |
|
|
|
</div> |
|
|
|
{#each $tables.list.filter(table => table._id !== "ta_users") as table} |
|
|
|
<div |
|
|
|
style="color: var(--spectrum-global-color-green-600); float: right" |
|
|
|
class:disabled={blankSelected} |
|
|
|
class:selected={selectedScreens.find(x => x.table === table.name)} |
|
|
|
on:click={() => toggleScreenSelection(table)} |
|
|
|
class="item" |
|
|
|
> |
|
|
|
{#if selectedScreens.find(x => x.table === table.name)} |
|
|
|
<div class="checkmark-spacing"> |
|
|
|
<Icon size="S" name="CheckmarkCircleOutline" /> |
|
|
|
</div> |
|
|
|
{/if} |
|
|
|
<div class="content"> |
|
|
|
<div class="text">{table.name}</div> |
|
|
|
</div> |
|
|
|
<div |
|
|
|
style="color: var(--spectrum-global-color-green-600); float: right" |
|
|
|
> |
|
|
|
{#if selectedScreens.find(x => x.table === table.name)} |
|
|
|
<div class="checkmark-spacing"> |
|
|
|
<Icon size="S" name="CheckmarkCircleOutline" /> |
|
|
|
</div> |
|
|
|
{/if} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
{/each} |
|
|
|
{/each} |
|
|
|
{/if} |
|
|
|
</Layout> |
|
|
|
<div slot="footer"> |
|
|
|
{#if showProgressCircle} |
|
|
|
|