2021-11-11 23:37:42 +01:00
|
|
|
<script lang="ts">
|
2021-12-21 14:32:47 +01:00
|
|
|
import { Link, useLocation, useNavigate, useParams } from "svelte-navigator";
|
|
|
|
import { useMatch } from "svelte-navigator";
|
2022-01-16 22:58:05 +01:00
|
|
|
import { addEmitter } from "../AddModal.svelte";
|
2021-12-30 19:28:43 +01:00
|
|
|
import Icon from "../utils/Icon.svelte";
|
|
|
|
import Input from "../utils/Input.svelte";
|
2021-12-21 14:32:47 +01:00
|
|
|
const navigate = useNavigate();
|
|
|
|
const location = useLocation();
|
|
|
|
|
|
|
|
const searchMatch = useMatch("/search/:query");
|
|
|
|
|
|
|
|
let searchQuery = $searchMatch?.params.query || "";
|
|
|
|
$: if (!$location.pathname.includes("search")) searchQuery = "";
|
2022-01-10 22:28:46 +01:00
|
|
|
function onInput(event: CustomEvent<string>) {
|
|
|
|
searchQuery = event.detail;
|
2021-12-21 16:27:35 +01:00
|
|
|
|
|
|
|
if (searchQuery.length > 0) {
|
|
|
|
navigate(`/search/${searchQuery}`);
|
|
|
|
} else {
|
|
|
|
navigate("/");
|
|
|
|
}
|
|
|
|
}
|
2022-01-16 22:58:05 +01:00
|
|
|
|
|
|
|
let fileInput: HTMLInputElement;
|
|
|
|
function onFileChange() {
|
|
|
|
if (fileInput.files.length > 0) {
|
|
|
|
addEmitter.emit("files", Array.from(fileInput.files));
|
|
|
|
}
|
|
|
|
}
|
2021-11-11 23:37:42 +01:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<div class="header">
|
|
|
|
<h1>
|
|
|
|
<Link to="/">
|
|
|
|
<img class="logo" src="/assets/upend.svg" alt="UpEnd logo" />
|
|
|
|
UpEnd
|
|
|
|
</Link>
|
|
|
|
</h1>
|
2021-12-30 19:28:43 +01:00
|
|
|
<div class="input">
|
2022-01-10 22:03:41 +01:00
|
|
|
<Input
|
|
|
|
placeholder="Search or add..."
|
|
|
|
value={searchQuery}
|
|
|
|
on:input={onInput}
|
|
|
|
>
|
2021-12-30 19:28:43 +01:00
|
|
|
<Icon name="search" slot="prefix" />
|
|
|
|
</Input>
|
|
|
|
</div>
|
2022-01-16 22:58:05 +01:00
|
|
|
<button class="add-button" on:click={() => fileInput.click()}>
|
2022-01-10 22:03:41 +01:00
|
|
|
<Icon name="plus-circle" />
|
2022-01-16 22:58:05 +01:00
|
|
|
<input type="file" bind:this={fileInput} on:change={onFileChange} />
|
2022-01-10 22:03:41 +01:00
|
|
|
</button>
|
2021-11-11 23:37:42 +01:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
.header {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
2021-11-30 00:29:27 +01:00
|
|
|
padding: 0 0.5rem;
|
|
|
|
height: 3.5rem;
|
2021-11-11 23:37:42 +01:00
|
|
|
border-bottom: 1px solid var(--foreground);
|
|
|
|
|
|
|
|
background: var(--background);
|
|
|
|
|
|
|
|
h1 {
|
|
|
|
font-size: 16pt;
|
|
|
|
font-weight: normal;
|
|
|
|
margin: 0;
|
|
|
|
|
|
|
|
:global(a) {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
|
2021-12-30 23:24:38 +01:00
|
|
|
color: var(--foreground-lightest);
|
2021-11-11 23:37:42 +01:00
|
|
|
text-decoration: none;
|
|
|
|
font-weight: normal;
|
|
|
|
}
|
|
|
|
|
|
|
|
img {
|
|
|
|
margin-right: 0.5em;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.logo {
|
|
|
|
display: inline-block;
|
|
|
|
height: 1.5em;
|
|
|
|
}
|
|
|
|
|
2021-12-30 19:28:43 +01:00
|
|
|
.input {
|
2021-11-11 23:37:42 +01:00
|
|
|
margin-left: 1em;
|
|
|
|
flex-grow: 1;
|
|
|
|
}
|
2022-01-10 22:03:41 +01:00
|
|
|
|
|
|
|
.add-button {
|
|
|
|
border: 1px solid var(--foreground);
|
|
|
|
border-radius: 4px;
|
|
|
|
background: var(--background-lighter);
|
|
|
|
color: var(--foreground);
|
|
|
|
margin: 0 0.5em;
|
|
|
|
padding: 0.25em 1em;
|
|
|
|
line-height: 1;
|
|
|
|
display: block;
|
|
|
|
cursor: pointer;
|
2022-01-16 22:58:05 +01:00
|
|
|
|
|
|
|
input {
|
|
|
|
display: none;
|
|
|
|
}
|
2022-01-10 22:03:41 +01:00
|
|
|
}
|
2021-11-11 23:37:42 +01:00
|
|
|
}
|
|
|
|
</style>
|