From eb3f8268fa2d26e6fa17ca69e3cad6dfdfe232ae Mon Sep 17 00:00:00 2001 From: Matthew Bentley Date: Thu, 28 May 2020 12:23:46 -0700 Subject: [PATCH 1/8] Added Event Forwarding To Pagination --- src/components/Pagination/Pagination.svelte | 24 ++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/components/Pagination/Pagination.svelte b/src/components/Pagination/Pagination.svelte index 83724018..103a5517 100644 --- a/src/components/Pagination/Pagination.svelte +++ b/src/components/Pagination/Pagination.svelte @@ -22,6 +22,19 @@ import CaretRight24 from 'carbon-icons-svelte/lib/CaretRight24'; import { cx, fillArray } from '../../lib'; import Select, { SelectItem } from '../Select'; + import { createEventDispatcher } from 'svelte'; + + const dispatch = createEventDispatcher(); + const handlePaginationChange = (type, value) => { + if (type === 'pageSize') { + page = 1; + pageSize = value; + } else { + page = value; + } + + dispatch('update', {pageSize, page}); + }; $: totalPages = Math.max(Math.ceil(totalItems / pageSize), 1); $: selectItems = fillArray(totalPages); @@ -43,9 +56,9 @@ labelText="" hideLabel noLabel - inline - on:change={() => { - page = 1; + inline + on:blur={() => { + handlePaginationChange('pageSize', pageSize); }} bind:selected={pageSize}> {#each pageSizes as size, i (size)} @@ -68,6 +81,9 @@ labelText={`Page number, of ${totalPages} pages`} inline hideLabel + on:blur={() => { + handlePaginationChange('page', page); + }} bind:selected={page}> {#each selectItems as size, i (size)} @@ -82,6 +98,7 @@ class={cx('--pagination__button', '--pagination__button--backward', backButtonDisabled && '--pagination__button--no-index')} on:click={() => { page--; + handlePaginationChange('page', page); }} aria-label={backwardText} disabled={backButtonDisabled}> @@ -93,6 +110,7 @@ aria-label={forwardText} on:click={() => { page++; + handlePaginationChange('page', page); }} disabled={forwardButtonDisabled}> From 8f27c983a594d67e1bd6254b03a7a5063aeac9d5 Mon Sep 17 00:00:00 2001 From: Matthew Bentley Date: Fri, 29 May 2020 10:04:09 -0700 Subject: [PATCH 2/8] Made use of after update --- src/components/Pagination/Pagination.svelte | 34 ++++++--------------- 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/src/components/Pagination/Pagination.svelte b/src/components/Pagination/Pagination.svelte index 103a5517..56a149b0 100644 --- a/src/components/Pagination/Pagination.svelte +++ b/src/components/Pagination/Pagination.svelte @@ -17,24 +17,18 @@ export let pageText = page => `page ${page}`; export let style = undefined; export let totalItems = 0; - + import CaretLeft24 from 'carbon-icons-svelte/lib/CaretLeft24'; import CaretRight24 from 'carbon-icons-svelte/lib/CaretRight24'; import { cx, fillArray } from '../../lib'; import Select, { SelectItem } from '../Select'; - import { createEventDispatcher } from 'svelte'; + import { afterUpdate, createEventDispatcher } from 'svelte'; const dispatch = createEventDispatcher(); - const handlePaginationChange = (type, value) => { - if (type === 'pageSize') { - page = 1; - pageSize = value; - } else { - page = value; - } - dispatch('update', {pageSize, page}); - }; + afterUpdate(() => { + dispatch('update', {pageSize, page}); + }); $: totalPages = Math.max(Math.ceil(totalItems / pageSize), 1); $: selectItems = fillArray(totalPages); @@ -57,9 +51,6 @@ hideLabel noLabel inline - on:blur={() => { - handlePaginationChange('pageSize', pageSize); - }} bind:selected={pageSize}> {#each pageSizes as size, i (size)} @@ -80,10 +71,7 @@ class={cx('--select__page-number')} labelText={`Page number, of ${totalPages} pages`} inline - hideLabel - on:blur={() => { - handlePaginationChange('page', page); - }} + hideLabel bind:selected={page}> {#each selectItems as size, i (size)} @@ -96,9 +84,8 @@