From 252c812125920297250afa4f797be3ff7f4c514c Mon Sep 17 00:00:00 2001 From: venashial Date: Mon, 20 Jun 2022 15:34:45 -0700 Subject: [PATCH] Add `FileUpload` component --- docs/components/Example.svelte | 8 +- docs/routes/components/FileUpload.md | 31 +++++++ src/components/Button.svelte | 2 +- src/components/Field.svelte | 1 + src/components/FileUpload.svelte | 118 +++++++++++++++++++++++++++ src/index.ts | 2 + src/styles/classes/link.postcss | 1 - 7 files changed, 159 insertions(+), 4 deletions(-) create mode 100644 docs/routes/components/FileUpload.md create mode 100644 src/components/FileUpload.svelte diff --git a/docs/components/Example.svelte b/docs/components/Example.svelte index 303b7dcf..84eebaf3 100644 --- a/docs/components/Example.svelte +++ b/docs/components/Example.svelte @@ -3,14 +3,14 @@ import IconMoon from 'virtual:icons/heroicons-outline/moon' import IconSun from 'virtual:icons/heroicons-outline/sun' - export let meta: { raised: boolean } + export let meta: { raised: boolean; column: boolean } let theme = 'light' let background = meta.raised ? 'var(--color-raised-bg)' : 'var(--color-bg)'
-
+
@@ -44,6 +44,10 @@ justify-content: flex-start; z-index: 1; padding: 1rem; + + &.column { + flex-direction: column; + } } &__source { diff --git a/docs/routes/components/FileUpload.md b/docs/routes/components/FileUpload.md new file mode 100644 index 00000000..99f0a5d0 --- /dev/null +++ b/docs/routes/components/FileUpload.md @@ -0,0 +1,31 @@ +### Single constrained example + +```svelte example raised column + + + + + + +File name: {file?.name} +``` + +### Multiple example + +```svelte example raised column + + + + + + +Count: {files.length} +``` diff --git a/src/components/Button.svelte b/src/components/Button.svelte index 98e2d266..936dbe45 100644 --- a/src/components/Button.svelte +++ b/src/components/Button.svelte @@ -68,7 +68,7 @@ align-items: center; justify-content: center; padding: 0.5rem 1rem; - min-width: 2rem; + min-width: min-content; gap: 0.5rem; cursor: pointer; position: relative; diff --git a/src/components/Field.svelte b/src/components/Field.svelte index d2010d74..2a3de3ef 100644 --- a/src/components/Field.svelte +++ b/src/components/Field.svelte @@ -23,6 +23,7 @@ display: flex; flex-direction: column; gap: 0.5rem; + min-width: 0; &__label { display: flex; diff --git a/src/components/FileUpload.svelte b/src/components/FileUpload.svelte new file mode 100644 index 00000000..8dd7f562 --- /dev/null +++ b/src/components/FileUpload.svelte @@ -0,0 +1,118 @@ + + +
+ {#if !file || multiple} +
addFiles(event.dataTransfer.files)} + on:dragover|preventDefault + on:click={() => { + if (inputElement) inputElement.click() + }}> + + {$t('images.how_to')} + + addFiles(inputElement.files)} /> +
+ {/if} + + {#each files as file (file.name)} +
+
+ +
{file.name}
+ +
+ {#if file.type.startsWith('image/')} + Uploaded file preview + {/if} +
+ {/each} +
+ + diff --git a/src/index.ts b/src/index.ts index 1c5b8041..ecf439c4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -14,6 +14,8 @@ export { default as Chips } from './components/Chips.svelte' export { default as Field } from './components/Field.svelte' +export { default as FileUpload } from './components/FileUpload.svelte' + export { default as Modal } from './components/Modal.svelte' export { default as ModalDeletion } from './components/ModalDeletion.svelte' diff --git a/src/styles/classes/link.postcss b/src/styles/classes/link.postcss index 32992a57..258b0e5c 100644 --- a/src/styles/classes/link.postcss +++ b/src/styles/classes/link.postcss @@ -18,7 +18,6 @@ .link { color: var(--color-text); - margin-right: 1rem; &:hover { color: var(--color-link);