# @resultium/svelte-carousel
This is a fork of [svelte-carousel](https://github.com/vadimkorr/svelte-carousel) project originally made bt [vadimkorr](https://github.com/vadimkorr) made due to lack of maintainment of the original package
This package is not published to any public registries due to being intended to be used exclusively in Resultium projects, however you are free to fork or use this codebase as per Apache-2.0 license
## Usage
1. Install as development dependancy
2. Import and use
```svelte
{#if browser}
1
2
3
{/if}
```
## Props
| Prop | Type | Default | Description |
|---------------------------|------------|-----------------|-----------------------------------------------|
| `arrows` | `boolean` | `true` | Enables next/prev arrows |
| `infinite` | `boolean` | `true` | Infinite looping |
| `initialPageIndex` | `number` | `0` | Page to start on |
| `duration` | `number` | `500` | Transition duration (ms) |
| `autoplay` | `boolean` | `false` | Enables autoplay of pages |
| `autoplayDuration` | `number` | `3000` | Autoplay change interval (ms) |
| `autoplayDirection` | `string` | `'next'` | Autoplay change direction (`next` or `prev`) |
| `pauseOnFocus` | `boolean` | `false` | Pauses autoplay on focus (for touchable devices - tap the carousel to toggle the autoplay, for non-touchable devices - hover over the carousel to pause the autoplay) |
| `autoplayProgressVisible` | `boolean` | `false` | Shows autoplay duration progress indicator |
| `dots` | `boolean` | `true` | Current page indicator dots |
| `timingFunction` | `string` | `'ease-in-out'` | CSS animation timing function |
| `swiping` | `boolean` | `true` | Enables swiping |
| `particlesToShow` | `number` | `1` | Number of elements to show |
| `particlesToScroll` | `number` | `1` | Number of elements to scroll |
## Events
### `pageChange`
It is dispatched on page change
| Payload field | Type | Description |
|--------------------|-------------|---------------------------------------|
| `event.detail` | `number` | Current page index |
```svelte
console.log(`Current page index: ${event.detail}`)
}
>
```
## Slots
### `prev` and `next`
They are used for customizing prev and next buttons.
Slot props:
| Prop | Type | Description |
|--------------------|-------------|---------------------------------------|
| `showPrevPage` | `function` | Call it to switch to the previos page |
| `showNextPage` | `function` | Call it to switch to the next page |
```svelte
```
### `dots`
This slot is used for customizing how dots look like.
Slot props:
| Prop | Type | Description |
|---------------------|--------------|----------------------------------------------|
| `currentPageIndex` | `number` | Represents current page index (start from 0) |
| `pagesCount` | `number` | Total pages amount |
| `showPage` | `function` | Takes index as page to be shown |
```svelte
```
### Default slot
This slot takes content for the carousel.
Slot props:
| Prop | Type | Description |
|--------------------|------------|----------------------------------------------------------------------|
| `loaded` | `number[]` | Contains indexes of pages to be loaded. Can be used for lazy loading |
| `currentPageIndex` | `number` | Represents current page index (start from 0) |
```svelte
```
## Methods
### `goTo`
Navigates to a page by index. `(pageIndex, options) => Promise`.
Arguments:
| Argument | Type | Default | Description |
|--------------------|-------------|---------|---------------------------------------|
| `pageIndex` | `number` | | Page number |
| `options.animated` | `boolean` | `true` | Should it be animated or not |
```svelte
```
### `goToPrev`
Navigates to the previous page. `(options) => Promise`.
Arguments:
| Argument | Type | Default | Description |
|--------------------|-------------|---------|-------------------------------|
| `options.animated` | `boolean` | `true` | Should it be animated or not |
```svelte
```
### `goToNext`
Navigates to the next page. `(options) => Promise`.
Arguments:
| Argument | Type | Default | Description |
|--------------------|-------------|---------|------------------------------|
| `options.animated` | `boolean` | `true` | Should it be animated or not |
```svelte
```