2022-07-25 20:22:24 +00:00
|
|
|
<script lang="ts">
|
2022-10-26 02:19:30 +00:00
|
|
|
import { boredState } from '$lib/stores/boredState';
|
2022-12-25 18:52:36 +00:00
|
|
|
|
2023-05-15 04:08:30 +00:00
|
|
|
export let form;
|
|
|
|
|
export let errors;
|
|
|
|
|
export let constraints;
|
|
|
|
|
console.log('advanced search data', $form);
|
2022-07-25 20:22:24 +00:00
|
|
|
|
2022-10-26 02:19:30 +00:00
|
|
|
let submitting = $boredState?.loading;
|
2023-05-15 04:08:30 +00:00
|
|
|
let minAge = +$form?.minAge || 1;
|
|
|
|
|
let minPlayers = +$form?.minPlayers || 1;
|
|
|
|
|
let maxPlayers = +$form?.maxPlayers || 1;
|
|
|
|
|
let exactMinPlayers = Boolean($form?.exactMinPlayers) || false;
|
|
|
|
|
let exactMaxPlayers = Boolean($form?.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>
|
2023-05-15 04:08:30 +00:00
|
|
|
{#if $errors?.minAge}
|
2022-12-05 01:29:56 +00:00
|
|
|
<div id="minPlayers-error" class="error">
|
2023-05-15 04:08:30 +00:00
|
|
|
<p aria-label={`Error: ${$errors?.minAge}`} class="center">
|
|
|
|
|
{$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>
|
2023-05-15 04:08:30 +00:00
|
|
|
{#if $errors?.minPlayers}
|
2022-11-04 22:02:11 +00:00
|
|
|
<div id="minPlayers-error" class="error">
|
2023-05-15 04:08:30 +00:00
|
|
|
<p aria-label={`Error: ${$errors?.minPlayers}`} class="center">
|
|
|
|
|
{$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>
|
2023-05-15 04:08:30 +00:00
|
|
|
{#if $errors?.id === 'maxPlayers'}
|
2022-11-04 22:02:11 +00:00
|
|
|
<div id="maxPlayers-error" class="error">
|
2023-05-15 04:08:30 +00:00
|
|
|
<p aria-label={`Error: ${$errors.message}`} class="center">
|
|
|
|
|
Error: {$errors.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>
|