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 {
--cds-skeleton-01: #474747;
border-radius: var(--borderRadius);
position: relative;
padding: 0;
border: none;
@ -94,6 +95,7 @@
.bx--skeleton__placeholder::before {
--cds-skeleton-02: #525252;
border-radius: var(--borderRadius);
position: absolute;
top: 0;
left: 0;

View file

@ -3,11 +3,11 @@
import { boredState } from '$lib/stores/boredState';
export let form: ActionData;
console.log('advanced search form', form);
console.log('advanced search form data', form);
let submitting = $boredState?.loading;
let minAge = form?.minAge || 1;
let minPlayers = form?.minPlayers || 1;
let maxPlayers = form?.maxPlayers || 1;
let minAge = +form?.minAge || 1;
let minPlayers = +form?.minPlayers || 1;
let maxPlayers = +form?.maxPlayers || 1;
let exactMinPlayers = form?.exactMinPlayers || false;
let exactMaxPlayers = form?.exactMaxPlayers || false;
</script>
@ -41,9 +41,11 @@
/>
</label>
{#if form?.error?.id === 'minPlayers'}
<p aria-label={`Error: ${form.error.message}`} class="center error">
Error: {form.error.message}
</p>
<div id="minPlayers-error" class="error">
<p aria-label={`Error: ${form.error.message}`} class="center">
Error: {form.error.message}
</p>
</div>
{/if}
</div>
<div>
@ -68,9 +70,11 @@
/>
</label>
{#if form?.error?.id === 'maxPlayers'}
<p aria-label={`Error: ${form.error.message}`} class="center error">
Error: {form.error.message}
</p>
<div id="maxPlayers-error" class="error">
<p aria-label={`Error: ${form.error.message}`} class="center">
Error: {form.error.message}
</p>
</div>
{/if}
</div>
</fieldset>

View file

@ -11,6 +11,10 @@
let submitting = $boredState?.loading;
let name = form?.name || '';
let disclosureOpen = false;
if (form?.error) {
disclosureOpen = true;
}
</script>
<div class="search">
@ -28,18 +32,21 @@
</label>
</fieldset>
{#if advancedSearch}
<Disclosure let:open>
<DisclosureButton class="disclosure-button">
<Disclosure>
<DisclosureButton
class="disclosure-button"
on:click={() => (disclosureOpen = !disclosureOpen)}
>
<span>Advanced Search?</span>
<ChevronRightIcon
class="icon disclosure-icon"
style={open
style={disclosureOpen
? 'transform: rotate(90deg); transition: transform 0.5s ease;'
: 'transform: rotate(0deg); transition: transform 0.5s ease;'}
/>
</DisclosureButton>
{#if open}
{#if disclosureOpen}
<div transition:fade>
<!-- Using `static`, `DisclosurePanel` is always rendered,
and ignores the `open` state -->

View file

@ -20,6 +20,9 @@
console.log('Formed data:', JSON.stringify(data));
let pageSize: number;
let currentPage: number;
let submitting = $boredState?.loading;
console.log({ submitting });
$: totalItems = 0;
console.log('totalItems', totalItems);
@ -51,9 +54,7 @@
}));
}
let isOpen: boolean = false;
let gameToRemove: GameType | SavedGameType;
console.log('isOpen', isOpen);
interface RemoveGameEvent extends Event {
detail: GameType | SavedGameType;
@ -144,7 +145,21 @@
/>
{/each}
</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}
{currentPage}
{totalItems}
@ -155,9 +170,6 @@
on:previousPageEvent={(event) => console.log('Prev page called', event)}
on:perPageEvent={(event) => console.log('Per page called', event)}
/> -->
</div>
{/if}
<style lang="scss">
.game-search {
display: grid;

View file

@ -355,7 +355,11 @@ ol {
}
.error {
color: var(--tomatoOrange);
margin: 1rem;
padding: 0.5rem;
border-radius: var(--borderRadius);
background-color: var(--tomatoOrange);
font-weight: 700;
}
/* Base Dialog Styles */