mirror of
https://github.com/BradNut/boredgame
synced 2025-09-08 17:40:22 +00:00
Keeping advanced search open if error and using Skeleton on search results.
This commit is contained in:
parent
5fb3e910e6
commit
71b525a5b1
5 changed files with 50 additions and 21 deletions
|
|
@ -74,6 +74,7 @@
|
||||||
|
|
||||||
.bx--skeleton__placeholder {
|
.bx--skeleton__placeholder {
|
||||||
--cds-skeleton-01: #474747;
|
--cds-skeleton-01: #474747;
|
||||||
|
border-radius: var(--borderRadius);
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border: none;
|
border: none;
|
||||||
|
|
@ -94,6 +95,7 @@
|
||||||
|
|
||||||
.bx--skeleton__placeholder::before {
|
.bx--skeleton__placeholder::before {
|
||||||
--cds-skeleton-02: #525252;
|
--cds-skeleton-02: #525252;
|
||||||
|
border-radius: var(--borderRadius);
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@
|
||||||
import { boredState } from '$lib/stores/boredState';
|
import { boredState } from '$lib/stores/boredState';
|
||||||
|
|
||||||
export let form: ActionData;
|
export let form: ActionData;
|
||||||
console.log('advanced search form', form);
|
console.log('advanced search form data', form);
|
||||||
let submitting = $boredState?.loading;
|
let submitting = $boredState?.loading;
|
||||||
let minAge = form?.minAge || 1;
|
let minAge = +form?.minAge || 1;
|
||||||
let minPlayers = form?.minPlayers || 1;
|
let minPlayers = +form?.minPlayers || 1;
|
||||||
let maxPlayers = form?.maxPlayers || 1;
|
let maxPlayers = +form?.maxPlayers || 1;
|
||||||
let exactMinPlayers = form?.exactMinPlayers || false;
|
let exactMinPlayers = form?.exactMinPlayers || false;
|
||||||
let exactMaxPlayers = form?.exactMaxPlayers || false;
|
let exactMaxPlayers = form?.exactMaxPlayers || false;
|
||||||
</script>
|
</script>
|
||||||
|
|
@ -41,9 +41,11 @@
|
||||||
/>
|
/>
|
||||||
</label>
|
</label>
|
||||||
{#if form?.error?.id === 'minPlayers'}
|
{#if form?.error?.id === 'minPlayers'}
|
||||||
<p aria-label={`Error: ${form.error.message}`} class="center error">
|
<div id="minPlayers-error" class="error">
|
||||||
Error: {form.error.message}
|
<p aria-label={`Error: ${form.error.message}`} class="center">
|
||||||
</p>
|
Error: {form.error.message}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -68,9 +70,11 @@
|
||||||
/>
|
/>
|
||||||
</label>
|
</label>
|
||||||
{#if form?.error?.id === 'maxPlayers'}
|
{#if form?.error?.id === 'maxPlayers'}
|
||||||
<p aria-label={`Error: ${form.error.message}`} class="center error">
|
<div id="maxPlayers-error" class="error">
|
||||||
Error: {form.error.message}
|
<p aria-label={`Error: ${form.error.message}`} class="center">
|
||||||
</p>
|
Error: {form.error.message}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,10 @@
|
||||||
|
|
||||||
let submitting = $boredState?.loading;
|
let submitting = $boredState?.loading;
|
||||||
let name = form?.name || '';
|
let name = form?.name || '';
|
||||||
|
let disclosureOpen = false;
|
||||||
|
if (form?.error) {
|
||||||
|
disclosureOpen = true;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="search">
|
<div class="search">
|
||||||
|
|
@ -28,18 +32,21 @@
|
||||||
</label>
|
</label>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{#if advancedSearch}
|
{#if advancedSearch}
|
||||||
<Disclosure let:open>
|
<Disclosure>
|
||||||
<DisclosureButton class="disclosure-button">
|
<DisclosureButton
|
||||||
|
class="disclosure-button"
|
||||||
|
on:click={() => (disclosureOpen = !disclosureOpen)}
|
||||||
|
>
|
||||||
<span>Advanced Search?</span>
|
<span>Advanced Search?</span>
|
||||||
<ChevronRightIcon
|
<ChevronRightIcon
|
||||||
class="icon disclosure-icon"
|
class="icon disclosure-icon"
|
||||||
style={open
|
style={disclosureOpen
|
||||||
? 'transform: rotate(90deg); transition: transform 0.5s ease;'
|
? 'transform: rotate(90deg); transition: transform 0.5s ease;'
|
||||||
: 'transform: rotate(0deg); transition: transform 0.5s ease;'}
|
: 'transform: rotate(0deg); transition: transform 0.5s ease;'}
|
||||||
/>
|
/>
|
||||||
</DisclosureButton>
|
</DisclosureButton>
|
||||||
|
|
||||||
{#if open}
|
{#if disclosureOpen}
|
||||||
<div transition:fade>
|
<div transition:fade>
|
||||||
<!-- Using `static`, `DisclosurePanel` is always rendered,
|
<!-- Using `static`, `DisclosurePanel` is always rendered,
|
||||||
and ignores the `open` state -->
|
and ignores the `open` state -->
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,9 @@
|
||||||
console.log('Formed data:', JSON.stringify(data));
|
console.log('Formed data:', JSON.stringify(data));
|
||||||
let pageSize: number;
|
let pageSize: number;
|
||||||
let currentPage: number;
|
let currentPage: number;
|
||||||
|
let submitting = $boredState?.loading;
|
||||||
|
console.log({ submitting });
|
||||||
|
|
||||||
$: totalItems = 0;
|
$: totalItems = 0;
|
||||||
console.log('totalItems', totalItems);
|
console.log('totalItems', totalItems);
|
||||||
|
|
||||||
|
|
@ -51,9 +54,7 @@
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
let isOpen: boolean = false;
|
|
||||||
let gameToRemove: GameType | SavedGameType;
|
let gameToRemove: GameType | SavedGameType;
|
||||||
console.log('isOpen', isOpen);
|
|
||||||
|
|
||||||
interface RemoveGameEvent extends Event {
|
interface RemoveGameEvent extends Event {
|
||||||
detail: GameType | SavedGameType;
|
detail: GameType | SavedGameType;
|
||||||
|
|
@ -144,7 +145,21 @@
|
||||||
/>
|
/>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
<!-- <Pagination
|
</div>
|
||||||
|
{:else if $boredState.loading}
|
||||||
|
<div class="games">
|
||||||
|
<h1>Games Found:</h1>
|
||||||
|
<div class="games-list">
|
||||||
|
{#each [1, 2, 3, 4] as game, i}
|
||||||
|
<SkeletonPlaceholder
|
||||||
|
style="width: 100%; height: 500px; border-radius: var(--borderRadius);"
|
||||||
|
/>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<!-- <Pagination
|
||||||
{pageSize}
|
{pageSize}
|
||||||
{currentPage}
|
{currentPage}
|
||||||
{totalItems}
|
{totalItems}
|
||||||
|
|
@ -155,9 +170,6 @@
|
||||||
on:previousPageEvent={(event) => console.log('Prev page called', event)}
|
on:previousPageEvent={(event) => console.log('Prev page called', event)}
|
||||||
on:perPageEvent={(event) => console.log('Per page called', event)}
|
on:perPageEvent={(event) => console.log('Per page called', event)}
|
||||||
/> -->
|
/> -->
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.game-search {
|
.game-search {
|
||||||
display: grid;
|
display: grid;
|
||||||
|
|
|
||||||
|
|
@ -355,7 +355,11 @@ ol {
|
||||||
}
|
}
|
||||||
|
|
||||||
.error {
|
.error {
|
||||||
color: var(--tomatoOrange);
|
margin: 1rem;
|
||||||
|
padding: 0.5rem;
|
||||||
|
border-radius: var(--borderRadius);
|
||||||
|
background-color: var(--tomatoOrange);
|
||||||
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Base Dialog Styles */
|
/* Base Dialog Styles */
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue