2019-08-07 20:03:49 +12:00
|
|
|
<script>
|
2021-08-26 21:11:48 +12:00
|
|
|
import { tables } from "stores/backend"
|
2022-04-22 23:22:21 +12:00
|
|
|
import { ModalContent, Body, Layout, Icon, Heading } from "@budibase/bbui"
|
2021-11-30 00:53:46 +13:00
|
|
|
|
2022-03-03 08:10:18 +13:00
|
|
|
export let onConfirm
|
|
|
|
export let onCancel
|
2021-11-30 00:53:46 +13:00
|
|
|
|
2022-04-06 21:10:53 +12:00
|
|
|
let autoCreateModeKey = "autoCreate"
|
|
|
|
let blankScreenModeKey = "blankScreen"
|
2021-11-30 00:53:46 +13:00
|
|
|
|
2022-04-06 21:10:53 +12:00
|
|
|
let selectedScreenMode
|
2021-11-30 00:53:46 +13:00
|
|
|
|
2022-03-03 08:10:18 +13:00
|
|
|
const confirmScreenSelection = async () => {
|
2022-04-06 21:10:53 +12:00
|
|
|
await onConfirm(selectedScreenMode)
|
2022-03-03 08:10:18 +13:00
|
|
|
}
|
2019-08-07 20:03:49 +12:00
|
|
|
</script>
|
|
|
|
|
2021-11-30 00:53:46 +13:00
|
|
|
<div>
|
2021-11-24 09:14:28 +13:00
|
|
|
<ModalContent
|
|
|
|
title="Add screens"
|
2022-04-22 23:22:21 +12:00
|
|
|
confirmText="Continue"
|
2021-11-24 09:14:28 +13:00
|
|
|
cancelText="Cancel"
|
2022-03-03 08:10:18 +13:00
|
|
|
onConfirm={confirmScreenSelection}
|
|
|
|
{onCancel}
|
2022-04-06 21:10:53 +12:00
|
|
|
disabled={!selectedScreenMode}
|
2021-11-24 09:14:28 +13:00
|
|
|
size="L"
|
2021-11-09 22:33:34 +13:00
|
|
|
>
|
2021-11-24 09:14:28 +13:00
|
|
|
<Layout noPadding gap="S">
|
2021-11-09 22:33:34 +13:00
|
|
|
<div
|
2022-04-06 21:10:53 +12:00
|
|
|
class="screen-type item"
|
|
|
|
class:selected={selectedScreenMode == blankScreenModeKey}
|
|
|
|
on:click={() => {
|
|
|
|
selectedScreenMode = blankScreenModeKey
|
|
|
|
}}
|
2021-11-09 22:33:34 +13:00
|
|
|
>
|
2022-04-06 21:10:53 +12:00
|
|
|
<div data-cy="blank-screen" class="content screen-type-wrap">
|
|
|
|
<Icon name="WebPage" />
|
2022-04-22 23:22:21 +12:00
|
|
|
<div class="screen-type-text">
|
|
|
|
<Heading size="XS">Blank screen</Heading>
|
|
|
|
<Body size="S">Add a blank screen</Body>
|
|
|
|
</div>
|
2021-11-09 22:33:34 +13:00
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
style="color: var(--spectrum-global-color-green-600); float: right"
|
|
|
|
>
|
2022-04-06 21:10:53 +12:00
|
|
|
{#if selectedScreenMode == blankScreenModeKey}
|
2021-11-24 09:14:28 +13:00
|
|
|
<div class="checkmark-spacing">
|
2022-04-06 21:10:53 +12:00
|
|
|
<Icon size="S" name="CheckmarkCircle" />
|
2021-11-24 09:14:28 +13:00
|
|
|
</div>
|
2021-11-09 22:33:34 +13:00
|
|
|
{/if}
|
|
|
|
</div>
|
|
|
|
</div>
|
2021-11-24 09:14:28 +13:00
|
|
|
|
2022-04-06 21:10:53 +12:00
|
|
|
<div
|
|
|
|
class="screen-type item"
|
|
|
|
class:selected={selectedScreenMode == autoCreateModeKey}
|
|
|
|
on:click={() => {
|
|
|
|
selectedScreenMode = autoCreateModeKey
|
|
|
|
}}
|
|
|
|
class:disabled={!$tables.list.filter(table => table._id !== "ta_users")
|
|
|
|
.length}
|
|
|
|
>
|
|
|
|
<div data-cy="autogenerated-screens" class="content screen-type-wrap">
|
|
|
|
<Icon name="WebPages" />
|
2022-04-22 23:22:21 +12:00
|
|
|
<div class="screen-type-text">
|
2022-04-23 01:57:13 +12:00
|
|
|
<Heading size="XS">Autogenerated screens</Heading>
|
2022-04-22 23:22:21 +12:00
|
|
|
<Body size="S">
|
|
|
|
Add autogenerated screens with CRUD functionality to get a working
|
2022-09-14 23:11:20 +12:00
|
|
|
app quickly! (Requires a datasource)
|
2022-04-22 23:22:21 +12:00
|
|
|
</Body>
|
|
|
|
</div>
|
2022-04-06 21:10:53 +12:00
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
style="color: var(--spectrum-global-color-green-600); float: right"
|
|
|
|
>
|
|
|
|
{#if selectedScreenMode == autoCreateModeKey}
|
|
|
|
<div class="checkmark-spacing">
|
|
|
|
<Icon size="S" name="CheckmarkCircle" />
|
2021-11-30 00:53:46 +13:00
|
|
|
</div>
|
2022-04-06 21:10:53 +12:00
|
|
|
{/if}
|
|
|
|
</div>
|
|
|
|
</div>
|
2021-11-24 09:14:28 +13:00
|
|
|
</Layout>
|
|
|
|
</ModalContent>
|
|
|
|
</div>
|
2021-11-09 22:33:34 +13:00
|
|
|
|
|
|
|
<style>
|
2022-04-06 21:10:53 +12:00
|
|
|
.screen-type.item {
|
|
|
|
padding: var(--spectrum-alias-item-padding-xl);
|
|
|
|
}
|
|
|
|
.screen-type-wrap {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
align-items: center;
|
|
|
|
}
|
2021-11-09 22:33:34 +13:00
|
|
|
.disabled {
|
|
|
|
opacity: 0.3;
|
|
|
|
pointer-events: none;
|
|
|
|
}
|
2021-11-24 09:14:28 +13:00
|
|
|
.checkmark-spacing {
|
|
|
|
margin-right: var(--spacing-m);
|
|
|
|
}
|
2021-11-09 22:33:34 +13:00
|
|
|
.content {
|
|
|
|
letter-spacing: 0px;
|
|
|
|
}
|
|
|
|
.item {
|
|
|
|
cursor: pointer;
|
|
|
|
grid-gap: var(--spectrum-alias-grid-margin-xsmall);
|
|
|
|
padding: var(--spectrum-alias-item-padding-s);
|
2022-04-26 01:57:12 +12:00
|
|
|
background: var(--spectrum-alias-background-color-secondary);
|
2021-11-09 22:33:34 +13:00
|
|
|
transition: 0.3s all;
|
2021-11-26 10:57:27 +13:00
|
|
|
border: 1px solid var(--spectrum-global-color-gray-300);
|
2021-11-24 09:14:28 +13:00
|
|
|
border-radius: 4px;
|
2021-11-09 22:33:34 +13:00
|
|
|
border-width: 1px;
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-between;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
.item:hover,
|
|
|
|
.selected {
|
|
|
|
background: var(--spectrum-alias-background-color-tertiary);
|
|
|
|
}
|
2022-04-22 23:22:21 +12:00
|
|
|
.screen-type-wrap .screen-type-text {
|
|
|
|
padding-left: var(--spectrum-alias-item-padding-xl);
|
|
|
|
}
|
2022-04-26 01:57:12 +12:00
|
|
|
.screen-type-wrap .screen-type-text :global(h1) {
|
|
|
|
padding-bottom: var(--spacing-xs);
|
|
|
|
}
|
2022-04-22 23:22:21 +12:00
|
|
|
.screen-type-wrap :global(.spectrum-Icon) {
|
|
|
|
min-width: var(--spectrum-icon-size-m);
|
|
|
|
}
|
|
|
|
.screen-type-wrap :global(.spectrum-Heading) {
|
|
|
|
padding-bottom: var(--spectrum-alias-item-padding-s);
|
|
|
|
}
|
2021-11-09 22:33:34 +13:00
|
|
|
</style>
|