diff --git a/web/src/lib/components/album-page/album-viewer.svelte b/web/src/lib/components/album-page/album-viewer.svelte
index 3f8587a232..1a4d04f58e 100644
--- a/web/src/lib/components/album-page/album-viewer.svelte
+++ b/web/src/lib/components/album-page/album-viewer.svelte
@@ -4,7 +4,7 @@
import AlbumMap from '$lib/components/album-page/album-map.svelte';
import SelectAllAssets from '$lib/components/photos-page/actions/select-all-assets.svelte';
import AssetSelectControlBar from '$lib/components/photos-page/asset-select-control-bar.svelte';
- import AssetGrid from '$lib/components/timeline/base-components/base-timeline.svelte';
+ import Timeline from '$lib/components/timeline/timeline.svelte';
import { TimelineManager } from '$lib/managers/timeline-manager/timeline-manager.svelte';
import { AssetInteraction } from '$lib/stores/asset-interaction.svelte';
import { assetViewingStore } from '$lib/stores/asset-viewing.store';
@@ -61,7 +61,7 @@
/>
-
+
-
+
diff --git a/web/src/lib/components/asset-viewer/actions/delete-action.svelte b/web/src/lib/components/asset-viewer/actions/delete-action.svelte
index 0badc97c87..034e5c05e1 100644
--- a/web/src/lib/components/asset-viewer/actions/delete-action.svelte
+++ b/web/src/lib/components/asset-viewer/actions/delete-action.svelte
@@ -5,7 +5,6 @@
notificationController,
} from '$lib/components/shared-components/notification/notification';
import Portal from '$lib/components/shared-components/portal/portal.svelte';
-
import DeleteAssetDialog from '$lib/components/timeline/actions/delete-asset-dialog.svelte';
import { AssetAction } from '$lib/constants';
import { showDeleteModal } from '$lib/stores/preferences.store';
diff --git a/web/src/lib/components/timeline/actions/timeline-keyboard-actions.svelte b/web/src/lib/components/timeline/actions/timeline-keyboard-actions.svelte
index d04f9ce698..53d968b70a 100644
--- a/web/src/lib/components/timeline/actions/timeline-keyboard-actions.svelte
+++ b/web/src/lib/components/timeline/actions/timeline-keyboard-actions.svelte
@@ -212,7 +212,9 @@
onConfirm={async (result: AbsoluteResult | RelativeResult) => {
isShowSelectDate = false;
if (result.mode === 'absolute') {
- const asset = await timelineManager.getClosestAssetToDate(result.dateTime.toObject());
+ const asset = await timelineManager.getClosestAssetToDate(
+ (DateTime.fromISO(result.date) as DateTime).toObject(),
+ );
if (asset) {
setFocusAsset(asset);
}
diff --git a/web/src/lib/components/timeline/base-components/base-timeline-viewer.svelte b/web/src/lib/components/timeline/base-components/base-timeline-viewer.svelte
index ee609a1858..be890f2e5b 100644
--- a/web/src/lib/components/timeline/base-components/base-timeline-viewer.svelte
+++ b/web/src/lib/components/timeline/base-components/base-timeline-viewer.svelte
@@ -2,11 +2,8 @@
import { afterNavigate, beforeNavigate } from '$app/navigation';
import { page } from '$app/stores';
import { resizeObserver, type OnResizeCallback } from '$lib/actions/resize-observer';
- import AssetGridActions from '$lib/components/timeline/actions/timeline-keyboard-actions.svelte';
import Skeleton from '$lib/components/timeline/base-components/skeleton.svelte';
import SelectableTimelineDay from '$lib/components/timeline/internal-components/selectable-timeline-day.svelte';
- import TimelineAssetViewer from '$lib/components/timeline/internal-components/timeline-asset-viewer.svelte';
- import { AssetAction } from '$lib/constants';
import type { DayGroup } from '$lib/managers/timeline-manager/day-group.svelte';
import type { MonthGroup } from '$lib/managers/timeline-manager/month-group.svelte';
import { TimelineManager } from '$lib/managers/timeline-manager/timeline-manager.svelte';
@@ -15,10 +12,8 @@
import { assetViewingStore } from '$lib/stores/asset-viewing.store';
import { mobileDevice } from '$lib/stores/mobile-device.svelte';
import { navigate } from '$lib/utils/navigation';
- import { type AlbumResponseDto, type PersonResponseDto } from '@immich/sdk';
import { onMount, type Snippet } from 'svelte';
import type { UpdatePayload } from 'vite';
- import Portal from '../../shared-components/portal/portal.svelte';
interface Props {
customThumbnailLayout?: Snippet<[TimelineAsset]>;
@@ -31,21 +26,12 @@
enableRouting: boolean;
timelineManager: TimelineManager;
assetInteraction: AssetInteraction;
- removeAction?:
- | AssetAction.UNARCHIVE
- | AssetAction.ARCHIVE
- | AssetAction.FAVORITE
- | AssetAction.UNFAVORITE
- | AssetAction.SET_VISIBILITY_TIMELINE;
withStacked?: boolean;
showArchiveIcon?: boolean;
- isShared?: boolean;
- album?: AlbumResponseDto | null;
- person?: PersonResponseDto | null;
+ showSkeleton?: boolean;
isShowDeleteConfirmation?: boolean;
onAssetOpen?: (dayGroup: DayGroup, asset: TimelineAsset, defaultAssetOpen: () => void) => void;
onSelect?: (asset: TimelineAsset) => void;
- onEscape?: () => void;
header?: Snippet<[handleScrollTop: (top: number) => void]>;
children?: Snippet;
empty?: Snippet;
@@ -60,30 +46,23 @@
enableRouting,
timelineManager = $bindable(),
assetInteraction,
- removeAction,
withStacked = false,
+ showSkeleton = $bindable(true),
showArchiveIcon = false,
- isShared = false,
- album = null,
- person = null,
isShowDeleteConfirmation = $bindable(false),
onAssetOpen,
onSelect,
- onEscape,
children,
empty,
header,
handleTimelineScroll = () => {},
}: Props = $props();
- let { isViewing: showAssetViewer, gridScrollTarget } = assetViewingStore;
+ let { gridScrollTarget } = assetViewingStore;
let element: HTMLElement | undefined = $state();
-
let timelineElement: HTMLElement | undefined = $state();
- let showSkeleton = $state(true);
-
let scrubberWidth = $state(0);
const maxMd = $derived(mobileDevice.maxMd);
@@ -161,7 +140,7 @@
return true;
};
- const scrollToAsset = (asset: TimelineAsset) => {
+ export const scrollToAsset = (asset: TimelineAsset) => {
const monthGroup = timelineManager.getMonthGroupByAssetId(asset.id);
if (!monthGroup) {
return false;
@@ -264,9 +243,6 @@
});
-
-
{@render header?.(scrollTop)}
@@ -352,12 +328,6 @@
-
- {#if $showAssetViewer}
-
- {/if}
-
-