diff --git a/i18n/en.json b/i18n/en.json
index 217c62b76f..55fa27c981 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -768,8 +768,10 @@
"go_to_search": "Go to search",
"go_to_folder": "Go to folder",
"group_albums_by": "Group albums by...",
+ "group_country": "Group by country",
"group_no": "No grouping",
"group_owner": "Group by owner",
+ "group_places_by": "Group places by...",
"group_year": "Group by year",
"has_quota": "Has quota",
"hi_user": "Hi {name} ({email})",
@@ -987,6 +989,7 @@
"pick_a_location": "Pick a location",
"place": "Place",
"places": "Places",
+ "places_count": "{count, plural, one {{count, number} Place} other {{count, number} Places}}",
"play": "Play",
"play_memories": "Play memories",
"play_motion_photo": "Play Motion Photo",
@@ -1278,6 +1281,7 @@
"unfavorite": "Unfavorite",
"unhide_person": "Unhide person",
"unknown": "Unknown",
+ "unknown_country": "Unknown Country",
"unknown_year": "Unknown Year",
"unlimited": "Unlimited",
"unlink_motion_video": "Unlink motion video",
diff --git a/web/src/lib/components/elements/dropdown.svelte b/web/src/lib/components/elements/dropdown.svelte
index 25d279b0f4..52360f04de 100644
--- a/web/src/lib/components/elements/dropdown.svelte
+++ b/web/src/lib/components/elements/dropdown.svelte
@@ -26,12 +26,14 @@
controlable?: boolean;
hideTextOnSmallScreen?: boolean;
title?: string | undefined;
+ position?: 'bottom-left' | 'bottom-right';
onSelect: (option: T) => void;
onClickOutside?: () => void;
render?: (item: T) => string | RenderedOption;
}
let {
+ position = 'bottom-left',
class: className = '',
options,
selectedOption = $bindable(options[0]),
@@ -76,9 +78,24 @@
};
let renderedSelectedOption = $derived(renderOption(selectedOption));
+
+ const getAlignClass = (position: 'bottom-left' | 'bottom-right') => {
+ switch (position) {
+ case 'bottom-left': {
+ return 'left-0';
+ }
+ case 'bottom-right': {
+ return 'right-0';
+ }
+
+ default: {
+ return '';
+ }
+ }
+ };
-
+