file download icon + styling
This commit is contained in:
parent
fed8575daa
commit
828be4b8e6
|
@ -32,11 +32,11 @@
|
||||||
<TextButton text medium blue href="/_builder/{_id}">
|
<TextButton text medium blue href="/_builder/{_id}">
|
||||||
Open {name} →
|
Open {name} →
|
||||||
</TextButton>
|
</TextButton>
|
||||||
<TextButton text medium blue on:click={exportApp}>
|
|
||||||
{#if appExportLoading}
|
{#if appExportLoading}
|
||||||
<Spinner size="10" />
|
<Spinner size="10" />
|
||||||
{:else}Export{/if}
|
{:else}
|
||||||
</TextButton>
|
<i class="ri-folder-download-line" on:click={exportApp} />
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -54,7 +54,17 @@
|
||||||
.card-footer {
|
.card-footer {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: baseline;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
i {
|
||||||
|
font-size: var(--font-size-l);
|
||||||
|
cursor: pointer;
|
||||||
|
transition: 0.2s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
i:hover {
|
||||||
|
color: var(--blue);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -2,22 +2,48 @@
|
||||||
import { Label, Heading, Input } from "@budibase/bbui"
|
import { Label, Heading, Input } from "@budibase/bbui"
|
||||||
import Dropzone from "components/common/Dropzone.svelte"
|
import Dropzone from "components/common/Dropzone.svelte"
|
||||||
|
|
||||||
|
const BYTES_IN_MB = 1000000
|
||||||
|
const FILE_SIZE_LIMIT = BYTES_IN_MB * 5
|
||||||
|
|
||||||
export let validationErrors
|
export let validationErrors
|
||||||
export let template
|
export let template
|
||||||
|
|
||||||
let blurred = { appName: false }
|
let blurred = { appName: false }
|
||||||
let files
|
let file
|
||||||
|
|
||||||
$: if (files) {
|
function handleFile(evt) {
|
||||||
template.fileImportPath = files[0]
|
const fileArray = Array.from(evt.target.files)
|
||||||
|
if (fileArray.some(file => file.size >= FILE_SIZE_LIMIT)) {
|
||||||
|
notifier.danger(
|
||||||
|
`Files cannot exceed ${FILE_SIZE_LIMIT /
|
||||||
|
BYTES_IN_MB}MB. Please try again with smaller files.`
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
file = fileArray[0]
|
||||||
|
template.fileImportPath = file.path
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<h2>Create your Web App</h2>
|
{#if template.fromFile}
|
||||||
|
<h2>Import Your Web App From A File</h2>
|
||||||
|
{:else}
|
||||||
|
<h2>Create your Web App</h2>
|
||||||
|
{/if}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
{#if template.fromFile}
|
{#if template.fromFile}
|
||||||
<div class="template">
|
<div class="template">
|
||||||
<Dropzone bind:files />
|
<Label extraSmall grey>Import File</Label>
|
||||||
|
<div class="dropzone">
|
||||||
|
<input
|
||||||
|
id="file-upload"
|
||||||
|
accept=".txt"
|
||||||
|
type="file"
|
||||||
|
on:change={handleFile} />
|
||||||
|
<label for="file-upload" class:uploaded={file}>
|
||||||
|
{#if file}{file.name}{:else}Import{/if}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{:else if template}
|
{:else if template}
|
||||||
<div class="template">
|
<div class="template">
|
||||||
|
@ -44,4 +70,48 @@
|
||||||
/* Fix layout due to LH 0 on heading */
|
/* Fix layout due to LH 0 on heading */
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dropzone {
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
border-radius: 10px;
|
||||||
|
transition: all 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uploaded {
|
||||||
|
color: var(--blue);
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="file"] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
font-family: var(--font-sans);
|
||||||
|
cursor: pointer;
|
||||||
|
font-weight: 500;
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: hidden;
|
||||||
|
border-radius: var(--border-radius-s);
|
||||||
|
color: var(--ink);
|
||||||
|
padding: var(--spacing-m) var(--spacing-l);
|
||||||
|
transition: all 0.2s ease 0s;
|
||||||
|
display: inline-flex;
|
||||||
|
text-rendering: optimizeLegibility;
|
||||||
|
min-width: auto;
|
||||||
|
outline: none;
|
||||||
|
font-feature-settings: "case" 1, "rlig" 1, "calt" 0;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
user-select: none;
|
||||||
|
flex-shrink: 0;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100%;
|
||||||
|
background-color: var(--grey-2);
|
||||||
|
font-size: var(--font-size-xs);
|
||||||
|
line-height: normal;
|
||||||
|
border: var(--border-transparent);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
import AppList from "components/start/AppList.svelte"
|
import AppList from "components/start/AppList.svelte"
|
||||||
import { get } from "builderStore/api"
|
import { get } from "builderStore/api"
|
||||||
import CreateAppModal from "components/start/CreateAppModal.svelte"
|
import CreateAppModal from "components/start/CreateAppModal.svelte"
|
||||||
import { Button, Heading, Modal } from "@budibase/bbui"
|
import { Button, Heading, Modal, Spacer } from "@budibase/bbui"
|
||||||
import TemplateList from "components/start/TemplateList.svelte"
|
import TemplateList from "components/start/TemplateList.svelte"
|
||||||
import analytics from "analytics"
|
import analytics from "analytics"
|
||||||
|
|
||||||
|
@ -57,9 +57,12 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<Heading medium black>Welcome to the Budibase Beta</Heading>
|
<Heading medium black>Welcome to the Budibase Beta</Heading>
|
||||||
|
<div class="button-group">
|
||||||
<Button secondary on:click={initiateAppImport}>Import Web App</Button>
|
<Button secondary on:click={initiateAppImport}>Import Web App</Button>
|
||||||
|
<Spacer medium />
|
||||||
<Button primary on:click={modal.show}>Create New Web App</Button>
|
<Button primary on:click={modal.show}>Create New Web App</Button>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="banner">
|
<div class="banner">
|
||||||
<img src="/_builder/assets/orange-landscape.png" alt="rocket" />
|
<img src="/_builder/assets/orange-landscape.png" alt="rocket" />
|
||||||
|
@ -112,4 +115,9 @@
|
||||||
color: white;
|
color: white;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.button-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
Loading…
Reference in New Issue