mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-16 19:01:05 +00:00
* 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
56 lines
1.6 KiB
Svelte
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}
|