aboutsummaryrefslogtreecommitdiff
path: root/assets/src/components/share
diff options
context:
space:
mode:
Diffstat (limited to 'assets/src/components/share')
-rw-r--r--assets/src/components/share/DataSelector.svelte47
-rw-r--r--assets/src/components/share/ShareStatus.svelte2
-rw-r--r--assets/src/components/share/selector/DataSelector.svelte62
-rw-r--r--assets/src/components/share/selector/DataTypePicker.svelte47
4 files changed, 110 insertions, 48 deletions
diff --git a/assets/src/components/share/DataSelector.svelte b/assets/src/components/share/DataSelector.svelte
deleted file mode 100644
index 22a83ba..0000000
--- a/assets/src/components/share/DataSelector.svelte
+++ /dev/null
@@ -1,47 +0,0 @@
-<script lang="ts">
- import { ChoosingData, getShareState } from "../../state/share";
- import ShareIcon from "../icons/ShareIcon.svelte";
-
- let value = "";
-
- const submit = () => {
- const share = getShareState().state as ChoosingData;
- share.submitData(value);
- };
-
- // TODO: Accept data other than text.
-</script>
-
-<form on:submit|preventDefault={submit}>
- <!-- TODO: Prettier input field -->
- <input type="text" bind:value />
- <button class="start-sharing-button" type="submit">
- <ShareIcon color="black" />
- Start Sharing
- </button>
-</form>
-
-<style>
- input {
- border: none;
- font-size: 14px;
- color: black;
- background-color: white;
- padding: 10px 20px;
- box-sizing: border-box;
- }
-
- .start-sharing-button {
- border: none;
- font-size: 14px;
- background-color: white;
- color: black;
- padding: 10px 14px;
-
- display: flex;
- align-items: center;
- gap: 10px;
-
- margin-top: 20px;
- }
-</style>
diff --git a/assets/src/components/share/ShareStatus.svelte b/assets/src/components/share/ShareStatus.svelte
index ba0fea0..cc1993f 100644
--- a/assets/src/components/share/ShareStatus.svelte
+++ b/assets/src/components/share/ShareStatus.svelte
@@ -1,6 +1,6 @@
<script lang="ts">
import { getShareState, ShareStateType, Sharing } from "../../state/share";
- import DataSelector from "./DataSelector.svelte";
+ import DataSelector from "./selector/DataSelector.svelte";
import DataView from "../DataView.svelte";
const state = getShareState().type;
diff --git a/assets/src/components/share/selector/DataSelector.svelte b/assets/src/components/share/selector/DataSelector.svelte
new file mode 100644
index 0000000..33d971e
--- /dev/null
+++ b/assets/src/components/share/selector/DataSelector.svelte
@@ -0,0 +1,62 @@
+<script lang="ts">
+ import { DataType } from "../../../models/data_type";
+ import { ChoosingData, getShareState } from "../../../state/share";
+ import ShareIcon from "../../icons/ShareIcon.svelte";
+ import DataTypePicker from "./DataTypePicker.svelte";
+
+ let value = "";
+
+ const submit = () => {
+ const share = getShareState().state as ChoosingData;
+ share.submitData(value);
+ };
+
+ let type: DataType = DataType.TEXT;
+
+ function setType(t: DataType) {
+ type = t;
+ value = "";
+ }
+
+ // TODO: Accept data other than text.
+</script>
+
+<DataTypePicker {type} {setType} />
+{#if type === DataType.TEXT}
+ <form on:submit|preventDefault={submit}>
+ <!-- TODO: Prettier input field -->
+ <input type="text" bind:value />
+ <button class="start-sharing-button" type="submit">
+ <ShareIcon color="black" />
+ Start Sharing
+ </button>
+ </form>
+{:else}
+ <p>No file sharing yet!</p>
+{/if}
+
+<style>
+ input {
+ border: none;
+ font-size: 14px;
+ color: black;
+ background-color: white;
+ padding: 10px 20px;
+ box-sizing: border-box;
+ }
+
+ .start-sharing-button {
+ border: none;
+ font-size: 14px;
+ background-color: white;
+ color: black;
+ padding: 10px 14px;
+
+ display: flex;
+
+ align-items: center;
+ gap: 10px;
+
+ margin-top: 20px;
+ }
+</style>
diff --git a/assets/src/components/share/selector/DataTypePicker.svelte b/assets/src/components/share/selector/DataTypePicker.svelte
new file mode 100644
index 0000000..204b0c5
--- /dev/null
+++ b/assets/src/components/share/selector/DataTypePicker.svelte
@@ -0,0 +1,47 @@
+<script lang="ts">
+ import { DataType } from "../../../models/data_type";
+
+ export let type: DataType;
+
+ export let setType: (type: DataType) => void;
+
+ function setText() {
+ setType(DataType.TEXT);
+ }
+
+ function setFiles() {
+ setType(DataType.FILES);
+ }
+</script>
+
+<div>
+ <span class:selected={type === DataType.TEXT} on:click={setText}>
+ Text
+ </span>
+ <span class="splitter">|</span>
+ <span class:selected={type === DataType.FILES} on:click={setFiles}>
+ Files
+ </span>
+</div>
+
+<style>
+ div {
+ margin-bottom: 20px;
+ }
+
+ span {
+ font-size: 16px;
+ color: #626262;
+ cursor: pointer;
+ }
+
+ .splitter {
+ padding: 0 20px;
+ cursor: default;
+ user-select: none;
+ }
+
+ .selected {
+ color: white;
+ }
+</style>