2022-07-25 20:22:24 +00:00
|
|
|
<script lang="ts">
|
2022-10-27 02:38:30 +00:00
|
|
|
import type { ActionData } from './$types';
|
2022-10-26 02:19:30 +00:00
|
|
|
import { boredState } from '$lib/stores/boredState';
|
2022-12-25 18:52:36 +00:00
|
|
|
import type { PageData } from '.svelte-kit/types/src/routes/$types';
|
|
|
|
|
|
|
|
|
|
export let data: PageData;
|
2022-07-25 20:22:24 +00:00
|
|
|
|
2022-10-26 02:19:30 +00:00
|
|
|
let submitting = $boredState?.loading;
|
2022-12-25 18:52:36 +00:00
|
|
|
let minAge = +data?.minAge || 1;
|
|
|
|
|
let minPlayers = +data?.minPlayers || 1;
|
|
|
|
|
let maxPlayers = +data?.maxPlayers || 1;
|
|
|
|
|
let exactMinPlayers = Boolean(data?.exactMinPlayers) || false;
|
|
|
|
|
let exactMaxPlayers = Boolean(data?.exactMaxPlayers) || false;
|
2022-07-25 20:22:24 +00:00
|
|
|
</script>
|
|
|
|
|
|
2022-08-07 21:53:21 +00:00
|
|
|
<fieldset class="advanced-search" aria-busy={submitting} disabled={submitting}>
|
2022-10-26 02:19:30 +00:00
|
|
|
<div>
|
|
|
|
|
<label for="minAge">
|
|
|
|
|
Min Age
|
2022-12-05 01:29:56 +00:00
|
|
|
<input id="minAge" name="minAge" bind:value={minAge} type="number" min={1} max={120} />
|
2022-10-26 02:19:30 +00:00
|
|
|
</label>
|
2022-12-25 18:52:36 +00:00
|
|
|
{#if data?.errors?.minAge}
|
2022-12-05 01:29:56 +00:00
|
|
|
<div id="minPlayers-error" class="error">
|
2022-12-25 18:52:36 +00:00
|
|
|
<p aria-label={`Error: ${data?.errors?.minAge}`} class="center">
|
|
|
|
|
{data?.errors?.minAge}
|
2022-12-05 01:29:56 +00:00
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
{/if}
|
2022-10-26 02:19:30 +00:00
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<label for="minPlayers">
|
|
|
|
|
Min Players
|
|
|
|
|
<input
|
|
|
|
|
id="minPlayers"
|
|
|
|
|
name="minPlayers"
|
|
|
|
|
bind:value={minPlayers}
|
|
|
|
|
type="number"
|
2022-12-05 01:29:56 +00:00
|
|
|
min={1}
|
|
|
|
|
max={50}
|
2022-10-26 02:19:30 +00:00
|
|
|
/>
|
|
|
|
|
</label>
|
|
|
|
|
<label for="exactMinPlayers" style="display: flex; gap: 1rem; place-items: center;">
|
|
|
|
|
<span>Exact?</span>
|
|
|
|
|
<input
|
|
|
|
|
id="exactMinPlayers"
|
|
|
|
|
type="checkbox"
|
|
|
|
|
name="exactMinPlayers"
|
|
|
|
|
bind:checked={exactMinPlayers}
|
2022-12-05 01:29:56 +00:00
|
|
|
bind:value={exactMinPlayers}
|
2022-10-26 02:19:30 +00:00
|
|
|
/>
|
|
|
|
|
</label>
|
2022-12-25 18:52:36 +00:00
|
|
|
{#if data?.errors?.minPlayers}
|
2022-11-04 22:02:11 +00:00
|
|
|
<div id="minPlayers-error" class="error">
|
2022-12-25 18:52:36 +00:00
|
|
|
<p aria-label={`Error: ${data?.errors?.minPlayers}`} class="center">
|
|
|
|
|
{data?.errors?.minPlayers}
|
2022-11-04 22:02:11 +00:00
|
|
|
</p>
|
|
|
|
|
</div>
|
2022-10-26 02:19:30 +00:00
|
|
|
{/if}
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<label for="maxPlayers">
|
|
|
|
|
Max Players
|
|
|
|
|
<input
|
|
|
|
|
id="maxPlayers"
|
|
|
|
|
name="maxPlayers"
|
|
|
|
|
bind:value={maxPlayers}
|
|
|
|
|
type="number"
|
2022-12-05 01:29:56 +00:00
|
|
|
min={1}
|
|
|
|
|
max={50}
|
2022-10-26 02:19:30 +00:00
|
|
|
/>
|
|
|
|
|
</label>
|
|
|
|
|
<label for="exactMaxPlayers" style="display: flex; gap: 1rem; place-items: center;">
|
|
|
|
|
<span>Exact?</span>
|
|
|
|
|
<input
|
|
|
|
|
id="exactMaxPlayers"
|
|
|
|
|
type="checkbox"
|
|
|
|
|
name="exactMaxPlayers"
|
|
|
|
|
bind:checked={exactMaxPlayers}
|
2022-12-05 01:29:56 +00:00
|
|
|
bind:value={exactMaxPlayers}
|
2022-10-26 02:19:30 +00:00
|
|
|
/>
|
|
|
|
|
</label>
|
2022-12-25 18:52:36 +00:00
|
|
|
{#if data?.error?.id === 'maxPlayers'}
|
2022-11-04 22:02:11 +00:00
|
|
|
<div id="maxPlayers-error" class="error">
|
2022-12-25 18:52:36 +00:00
|
|
|
<p aria-label={`Error: ${data.error.message}`} class="center">
|
|
|
|
|
Error: {data.error.message}
|
2022-11-04 22:02:11 +00:00
|
|
|
</p>
|
|
|
|
|
</div>
|
2022-11-02 03:10:02 +00:00
|
|
|
{/if}
|
2022-10-26 02:19:30 +00:00
|
|
|
</div>
|
2022-08-07 21:53:21 +00:00
|
|
|
</fieldset>
|
2022-07-25 20:22:24 +00:00
|
|
|
|
|
|
|
|
<style lang="scss">
|
2022-10-26 02:19:30 +00:00
|
|
|
fieldset {
|
|
|
|
|
display: grid;
|
|
|
|
|
grid-template-columns: repeat(3, 1fr);
|
2022-07-28 05:12:40 +00:00
|
|
|
|
2022-10-26 02:19:30 +00:00
|
|
|
@media (max-width: 800px) {
|
|
|
|
|
grid-template-columns: 1fr;
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-07-25 20:22:24 +00:00
|
|
|
|
2022-10-26 02:19:30 +00:00
|
|
|
label {
|
|
|
|
|
display: grid;
|
|
|
|
|
margin: 1rem;
|
|
|
|
|
}
|
2022-07-25 20:22:24 +00:00
|
|
|
</style>
|