Keeping advanced search open if error and using Skeleton on search results.

This commit is contained in:
Bradley Shellnut 2022-11-04 18:02:11 -04:00
parent 5fb3e910e6
commit 71b525a5b1
5 changed files with 50 additions and 21 deletions

View file

@ -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;

View file

@ -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>

View file

@ -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 -->

View file

@ -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;

View file

@ -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 */