forked from themesberg/flowbite-svelte
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathControls.svelte
More file actions
37 lines (31 loc) · 1.13 KB
/
Controls.svelte
File metadata and controls
37 lines (31 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<script lang="ts">
import type { ControlsProps } from "$lib";
import ControlButton from "./ControlButton.svelte";
import { getTheme } from "$lib/theme/themeUtils";
import clsx from "clsx";
import { getCarouselContext } from "$lib/context";
let { children, class: className, ...restProps }: ControlsProps = $props();
const theme = $derived(getTheme("controlButton"));
const _state = getCarouselContext();
function changeSlide(forward: boolean) {
if (!_state) return;
_state.changeSlide(forward ? _state.index + 1 : _state.index - 1);
}
</script>
<!-- Slider controls -->
{#if children}
{@render children(changeSlide)}
{:else}
<ControlButton name="Previous" forward={false} onclick={() => changeSlide(false)} class={clsx(theme, className)} {...restProps} />
<ControlButton name="Next" forward={true} onclick={() => changeSlide(true)} class={clsx(theme, className)} {...restProps} />
{/if}
<!--
@component
[Go to docs](https://flowbite-svelte.com/)
## Type
[ControlsProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L498)
## Props
@prop children
@prop class: className
@prop ...restProps
-->