diff --git a/web/src/routes/(user)/tags/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/tags/[[photos=photos]]/[[assetId=id]]/+page.svelte
index 442d3cef6c..7f873aa918 100644
--- a/web/src/routes/(user)/tags/[[photos=photos]]/[[assetId=id]]/+page.svelte
+++ b/web/src/routes/(user)/tags/[[photos=photos]]/[[assetId=id]]/+page.svelte
@@ -15,9 +15,24 @@
import { joinPaths, TreeNode } from '$lib/utils/tree-utils';
import { deleteTag, getAllTags, type TagResponseDto } from '@immich/sdk';
import { Button, HStack, modalManager, Text } from '@immich/ui';
- import { mdiPencil, mdiPlus, mdiTag, mdiTagMultiple, mdiTrashCanOutline } from '@mdi/js';
+ import { mdiDotsVertical, mdiPencil, mdiPlus, mdiTag, mdiTagMultiple, mdiTrashCanOutline } from '@mdi/js';
import { t } from 'svelte-i18n';
import type { PageData } from './$types';
+ import AssetSelectControlBar from '$lib/components/timeline/AssetSelectControlBar.svelte';
+ import AddToAlbum from '$lib/components/timeline/actions/AddToAlbumAction.svelte';
+ import ArchiveAction from '$lib/components/timeline/actions/ArchiveAction.svelte';
+ import ChangeDate from '$lib/components/timeline/actions/ChangeDateAction.svelte';
+ import ChangeDescription from '$lib/components/timeline/actions/ChangeDescriptionAction.svelte';
+ import ChangeLocation from '$lib/components/timeline/actions/ChangeLocationAction.svelte';
+ import CreateSharedLink from '$lib/components/timeline/actions/CreateSharedLinkAction.svelte';
+ import DeleteAssets from '$lib/components/timeline/actions/DeleteAssetsAction.svelte';
+ import DownloadAction from '$lib/components/timeline/actions/DownloadAction.svelte';
+ import FavoriteAction from '$lib/components/timeline/actions/FavoriteAction.svelte';
+ import SelectAllAssets from '$lib/components/timeline/actions/SelectAllAction.svelte';
+ import SetVisibilityAction from '$lib/components/timeline/actions/SetVisibilityAction.svelte';
+ import TagAction from '$lib/components/timeline/actions/TagAction.svelte';
+ import ButtonContextMenu from '$lib/components/shared-components/context-menu/button-context-menu.svelte';
+ import { preferences, user } from '$lib/stores/user.store';
interface Props {
data: PageData;
@@ -79,6 +94,11 @@
// navigate to parent
await navigateToView(tag.parent ? tag.parent.path : '');
};
+
+ const handleSetVisibility = (assetIds: string[]) => {
+ timelineManager.removeAssets(assetIds);
+ assetInteraction.clearMultiselect();
+ };
@@ -131,3 +151,45 @@
{/if}
+
+
+ {#if assetInteraction.selectionActive}
+
+
assetInteraction.clearMultiselect()}
+ >
+
+
+
+
+
+
+ timelineManager.update(ids, (asset) => (asset.isFavorite = isFavorite))}
+ >
+
+
+
+
+
+ timelineManager.update(ids, (asset) => (asset.visibility = visibility))}
+ />
+ {#if $preferences.tags.enabled}
+
+ {/if}
+ timelineManager.removeAssets(assetIds)}
+ onUndoDelete={(assets) => timelineManager.upsertAssets(assets)}
+ />
+
+
+
+
+ {/if}
+