feat: Episode card frames

This commit is contained in:
Aleksi Lassila
2024-04-04 12:17:24 +03:00
parent d1eb3a4cfe
commit df1623eb53
8 changed files with 152 additions and 18 deletions

View File

@@ -0,0 +1,37 @@
<script lang="ts">
import classNames from 'classnames';
import { onMount } from 'svelte';
import Container from '../../../Container.svelte';
let element: HTMLDivElement;
let scrollX = 0;
let maxScrollX = 0;
let fadeLeft = false;
let fadeRight = true;
$: {
fadeLeft = scrollX > 10;
fadeRight = scrollX < maxScrollX - 10;
}
function updateScrollPosition() {
scrollX = element.scrollLeft;
maxScrollX = element.scrollWidth - element.clientWidth;
}
onMount(() => {
updateScrollPosition();
});
</script>
<Container
direction="horizontal"
class={classNames($$restProps.class, 'overflow-x-scroll scrollbar-hide relative p-1')}
style={`mask-image: linear-gradient(to right, transparent 0%, ${
fadeLeft ? '' : 'black 0%, '
}black 5%, black 95%, ${fadeRight ? '' : 'black 100%, '}transparent 100%);`}
on:scroll={updateScrollPosition}
bind:element
>
<slot />
</Container>