feat(pagination): dispatch change event

Whenever the user interacts with Pagination, `change` is dispatched
This commit is contained in:
Enrico Sacchetti 2022-09-26 16:50:21 -04:00
commit 7e64ee57de
5 changed files with 29 additions and 9 deletions

View file

@ -2682,11 +2682,12 @@ None.
### Events ### Events
| Event name | Type | Detail | | Event name | Type | Detail |
| :--------------------- | :--------- | :----------------------------------------------- | | :--------------------- | :--------- | :------------------------------------------------ |
| update | dispatched | <code>{ pageSize: number; page: number; }</code> | | change | dispatched | <code>{ page?: number; pageSize?: number }</code> |
| click:button--previous | dispatched | <code>{ page: number; }</code> | | click:button--previous | dispatched | <code>{ page: number; }</code> |
| click:button--next | dispatched | <code>{ page: number; }</code> | | click:button--next | dispatched | <code>{ page: number; }</code> |
| update | dispatched | <code>{ pageSize: number; page: number; }</code> |
## `PaginationNav` ## `PaginationNav`

View file

@ -8405,8 +8405,8 @@
"events": [ "events": [
{ {
"type": "dispatched", "type": "dispatched",
"name": "update", "name": "change",
"detail": "{ pageSize: number; page: number; }" "detail": "{ page?: number; pageSize?: number }"
}, },
{ {
"type": "dispatched", "type": "dispatched",
@ -8417,6 +8417,11 @@
"type": "dispatched", "type": "dispatched",
"name": "click:button--next", "name": "click:button--next",
"detail": "{ page: number; }" "detail": "{ page: number; }"
},
{
"type": "dispatched",
"name": "update",
"detail": "{ pageSize: number; page: number; }"
} }
], ],
"typedefs": [], "typedefs": [],

View file

@ -1,8 +1,9 @@
<script> <script>
/** /**
* @event {{ pageSize: number; page: number; }} update * @event {{ page?: number; pageSize?: number }} change - Dispatched after any user interaction
* @event {{ page: number; }} click:button--previous * @event {{ page: number; }} click:button--previous
* @event {{ page: number; }} click:button--next * @event {{ page: number; }} click:button--next
* @event {{ pageSize: number; page: number; }} update
*/ */
/** Specify the current page index */ /** Specify the current page index */
@ -109,6 +110,9 @@
hideLabel hideLabel
noLabel noLabel
inline inline
on:change="{() => {
dispatch('change', { pageSize });
}}"
bind:selected="{pageSize}" bind:selected="{pageSize}"
> >
{#each pageSizes as size, i (size)} {#each pageSizes as size, i (size)}
@ -136,6 +140,10 @@
labelText="Page number, of {totalPages} pages" labelText="Page number, of {totalPages} pages"
inline inline
hideLabel hideLabel
on:input="{() => console.log('select input event')}"
on:change="{() => {
dispatch('change', { page });
}}"
bind:selected="{page}" bind:selected="{page}"
> >
{#each selectItems as size, i (size)} {#each selectItems as size, i (size)}
@ -161,6 +169,7 @@
on:click="{() => { on:click="{() => {
page--; page--;
dispatch('click:button--previous', { page }); dispatch('click:button--previous', { page });
dispatch('change', { page });
}}" }}"
/> />
<Button <Button
@ -176,6 +185,7 @@
on:click="{() => { on:click="{() => {
page++; page++;
dispatch('click:button--next', { page }); dispatch('click:button--next', { page });
dispatch('change', { page });
}}" }}"
/> />
</div> </div>

View file

@ -5,6 +5,9 @@
<Pagination <Pagination
totalItems="{102}" totalItems="{102}"
pageSizes="{[10, 15, 20]}" pageSizes="{[10, 15, 20]}"
on:change="{(e) => {
console.log(e.detail); // { pageSize?: number, page?: number }
}}"
on:update="{(e) => { on:update="{(e) => {
console.log(e.detail); // { pageSize: number; page: number; } console.log(e.detail); // { pageSize: number; page: number; }
}}" }}"

View file

@ -103,9 +103,10 @@ export interface PaginationProps
export default class Pagination extends SvelteComponentTyped< export default class Pagination extends SvelteComponentTyped<
PaginationProps, PaginationProps,
{ {
update: CustomEvent<{ pageSize: number; page: number }>; change: CustomEvent<{ page?: number; pageSize?: number }>;
["click:button--previous"]: CustomEvent<{ page: number }>; ["click:button--previous"]: CustomEvent<{ page: number }>;
["click:button--next"]: CustomEvent<{ page: number }>; ["click:button--next"]: CustomEvent<{ page: number }>;
update: CustomEvent<{ pageSize: number; page: number }>;
}, },
{} {}
> {} > {}