carbon-components-svelte/src/PaginationNav/PaginationOverflow.svelte
Eric Liu 3214d8563f
Reactive audit (#449)
* refactor(search): resolve svelte file paths

* docs(Search): add reactive example

* refactor(tag): use class name directive for tag types, resolve svelte icon path

* chore(button-skeleton): deprecate small prop

* fix(breadcrumb-item): type default slot

* refactor(breadcrumb-skeleton): omit unused index

* refactor(aspect-ratio): use class name directive

* refactor(accordion): use the class name directive, resolve svelte icon paths

* refactor(code-snippet): use class name directive, resolve svelte icon paths

* fix(code-snippet-skeleton): CodeSnippetSkeleton can only be single or multi

* refactor(content-switcher): use class name directive

* docs(content-switcher): add reactive example

* docs(content-switcher): remove unused import

* docs(toggle): add reactive example

* refactor(tooltip-definition): use class name directive

* refactor(tooltip-icon): use class name directive

* refactor(tooltip): resolve svelte icon import

* fix(select): type dispatched change event

* refactor(select): resolve svelte icon import

* feat(select-item): spread rest props, avoid $ variable name

* fix(pagination-nav): type dispatched events

* refactor(pagination): resolve svelte imports

* fix(pagination): type dispatched update event

* fix(overflow-menu): type dispatched close event

* fix(number-input): type dispatched change event

* refactor(modal): use class name directive, resolve svelte imports

* refactor(inline-loading): use class name directive, resolve svelte imports

* refactor(composed-modal): resolve svelte icon imports

* refactor(combo-box): resolve svelte imports

* fix(fluid-form): rest props should not override Form class

* refactor(progress-step): resolve svelte icon imports
2020-12-06 03:59:30 -08:00

56 lines
1.6 KiB
Svelte

<script>
/**
* @event {{ index: number; }} select
*/
/** Specify the pivot start index */
export let fromIndex = 0;
/** Specify the pivot end index */
export let count = 0;
import { createEventDispatcher } from "svelte";
import OverflowMenuHorizontal16 from "carbon-icons-svelte/lib/OverflowMenuHorizontal16/OverflowMenuHorizontal16.svelte";
import PaginationItem from "./PaginationItem.svelte";
const dispatch = createEventDispatcher();
let value = "";
</script>
{#if count > 1}
<li class:bx--pagination-nav__list-item="{true}">
<div class:bx--pagination-nav__select="{true}">
<!-- svelte-ignore a11y-no-onchange -->
<select
aria-label="Select Page number"
value="{value}"
class:bx--pagination-nav__page="{true}"
class:bx--pagination-nav__page--select="{true}"
on:change="{({ target }) => {
value = '';
dispatch('select', { index: Number(target.value) });
}}"
>
<option value="" hidden></option>
{#each Array.from({ length: count }, (_, i) => i) as i}
<option value="{fromIndex + i}" data-page="{fromIndex + i + 1}">
{fromIndex + i + 1}
</option>
{/each}
</select>
<div class:bx--pagination-nav__select-icon-wrapper="{true}">
<OverflowMenuHorizontal16 class="bx--pagination-nav__select-icon" />
</div>
</div>
</li>
{:else if count === 1}
<PaginationItem
page="{fromIndex + 1}"
on:click="{() => {
dispatch('select', { index: fromIndex });
}}"
>
Page
</PaginationItem>
{/if}