diff --git a/src/lib/components/AnimateScale.svelte b/src/lib/components/AnimateScale.svelte index 6cfcd41..a1a799a 100644 --- a/src/lib/components/AnimateScale.svelte +++ b/src/lib/components/AnimateScale.svelte @@ -1,18 +1,22 @@
diff --git a/src/lib/components/Card/Card.svelte b/src/lib/components/Card/Card.svelte index 42f757d..e4baa8d 100644 --- a/src/lib/components/Card/Card.svelte +++ b/src/lib/components/Card/Card.svelte @@ -43,7 +43,7 @@ on:enter class={classNames( 'relative flex flex-shrink-0 rounded-xl group hover:text-inherit overflow-hidden text-left cursor-pointer', - 'transition-transform selectable', + 'selectable', { 'aspect-video': orientation === 'landscape', 'aspect-[2/3]': orientation === 'portrait', @@ -63,54 +63,51 @@ src={backdropUrl} class="absolute inset-0 group-hover:scale-105 transition-transform" /> -
- - -
- -
-
- -
-

{title}

-

{subtitle}

-
-
- -
- -
-
- -
- {#if rating} -

- {rating.toFixed(1)} -

- {/if} -
-
- -
- -
-
- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {#if jellyfinId}
+ import Container from '../../Container.svelte'; + import { createEventDispatcher } from 'svelte'; + + const dispatch = createEventDispatcher<{ + change: boolean; + }>(); + + export let checked: boolean; + let input: HTMLInputElement; + + const handleChange = (e: Event) => { + checked = e.target?.checked; + dispatch('change', e.target?.checked); + }; + + + { + e.detail.options.setFocusedElement = input; + }} + on:clickOrSelect={() => input?.click()} +> + +
+ diff --git a/src/lib/pages/ManagePage.svelte b/src/lib/pages/ManagePage.svelte index e591521..fa0e36d 100644 --- a/src/lib/pages/ManagePage.svelte +++ b/src/lib/pages/ManagePage.svelte @@ -4,34 +4,50 @@ import Button from '../components/Button.svelte'; import { onMount } from 'svelte'; import { isTizen } from '../utils/browser-detection'; + import Toggle from '../components/Toggle.svelte'; + import { localSettings } from '../stores/localstorage.store'; let lastKeyCode = 0; let lastKey = ''; let tizenMediaKey = ''; - onMount(() => { - if (isTizen()) { - var myMediaKeyChangeListener = { - onpressed: function (key: string) { - console.log('Pressed key: ' + key); - tizenMediaKey = key; - } - }; - - // eslint-disable-next-line no-undef - tizen.tvinputdevice.registerKey('MediaPlayPause'); - (tizen as any).mediakey.setMediaKeyEventListener(myMediaKeyChangeListener); - } - }); + // onMount(() => { + // if (isTizen()) { + // const myMediaKeyChangeListener = { + // onpressed: function (key: string) { + // console.log('Pressed key: ' + key); + // tizenMediaKey = key; + // } + // }; + // + // // eslint-disable-next-line no-undef + // tizen?.tvinputdevice?.registerKey?.('MediaPlayPause'); + // (tizen as any)?.mediakey?.setMediaKeyEventListener?.(myMediaKeyChangeListener); + // } + // }); - User agent: {window.navigator.userAgent} + User agent: {window?.navigator?.userAgent}
Last key code: {lastKeyCode}
Last key: {lastKey}
{#if tizenMediaKey}
Tizen media key: {tizenMediaKey}
{/if} +
+ + localSettings.update((p) => ({ ...p, animateScrolling: detail }))} + /> +
+
+ + localSettings.update((p) => ({ ...p, useCssTransitions: detail }))} + /> +
diff --git a/src/lib/selectable.ts b/src/lib/selectable.ts index ae0c4eb..e11872c 100644 --- a/src/lib/selectable.ts +++ b/src/lib/selectable.ts @@ -1,5 +1,6 @@ import { derived, get, type Readable, type Writable, writable } from 'svelte/store'; import { getScrollParent } from './utils'; +import { localSettings } from './stores/localstorage.store'; export type Registerer = (htmlElement: HTMLElement) => { destroy: () => void }; export type Registrar = (e: CustomEvent) => () => void; @@ -727,6 +728,8 @@ export const scrollElementIntoView = (htmlElement: HTMLElement, offsets: Offsets offsets.right = offsets.all; } + const scrollBehavior: ScrollBehavior = get(localSettings).animateScrolling ? 'smooth' : 'instant'; + const boundingRect = htmlElement.getBoundingClientRect(); const verticalParent = getScrollParent(htmlElement, 'vertical'); const horizontalParent = getScrollParent(htmlElement, 'horizontal'); @@ -763,7 +766,7 @@ export const scrollElementIntoView = (htmlElement: HTMLElement, offsets: Offsets if (top !== -1) { verticalParent.scrollTo({ - behavior: 'smooth', + behavior: scrollBehavior, top }); } @@ -800,7 +803,7 @@ export const scrollElementIntoView = (htmlElement: HTMLElement, offsets: Offsets if (left !== -1) { horizontalParent.scrollTo({ - behavior: 'smooth', + behavior: scrollBehavior, left }); } diff --git a/src/lib/stores/localstorage.store.ts b/src/lib/stores/localstorage.store.ts index 2e95474..6e03f8d 100644 --- a/src/lib/stores/localstorage.store.ts +++ b/src/lib/stores/localstorage.store.ts @@ -29,3 +29,10 @@ export const videoPlayerSettings = createLocalStorageStore<{ muted: false, volume: 1 }); +export const localSettings = createLocalStorageStore<{ + animateScrolling: boolean; + useCssTransitions: boolean; +}>('settings', { + animateScrolling: true, + useCssTransitions: true +});