diff --git a/frontend/src/lib/components/ChecklistModal.svelte b/frontend/src/lib/components/ChecklistModal.svelte
index ecd7341d..afdbe8da 100644
--- a/frontend/src/lib/components/ChecklistModal.svelte
+++ b/frontend/src/lib/components/ChecklistModal.svelte
@@ -5,6 +5,7 @@
import { onMount } from 'svelte';
let modal: HTMLDialogElement;
import { t } from 'svelte-i18n';
+ import DateInput from '$lib/components/DateInput.svelte';
import CheckboxIcon from '~icons/mdi/checkbox-multiple-marked-outline';
@@ -290,15 +291,14 @@
>
{/if}
-
diff --git a/frontend/src/lib/components/CollectionModal.svelte b/frontend/src/lib/components/CollectionModal.svelte
index 03c79d5b..52645ce7 100644
--- a/frontend/src/lib/components/CollectionModal.svelte
+++ b/frontend/src/lib/components/CollectionModal.svelte
@@ -3,6 +3,7 @@
import { onMount } from 'svelte';
import { t } from 'svelte-i18n';
import MarkdownEditor from './MarkdownEditor.svelte';
+ import DateInput from '$lib/components/DateInput.svelte';
import { addToast } from '$lib/toasts';
import { copyToClipboard } from '$lib/index';
import type { Collection, ContentImage, SlimCollection } from '$lib/types';
@@ -343,12 +344,10 @@
{$t('adventures.start_date')}
-
@@ -360,12 +359,10 @@
{$t('adventures.end_date')}
-
diff --git a/frontend/src/lib/components/DateInput.svelte b/frontend/src/lib/components/DateInput.svelte
new file mode 100644
index 00000000..8c5c6970
--- /dev/null
+++ b/frontend/src/lib/components/DateInput.svelte
@@ -0,0 +1,68 @@
+
+
+
+
+
+
diff --git a/frontend/src/lib/components/DateTimeInput.svelte b/frontend/src/lib/components/DateTimeInput.svelte
new file mode 100644
index 00000000..8d8a0f5d
--- /dev/null
+++ b/frontend/src/lib/components/DateTimeInput.svelte
@@ -0,0 +1,72 @@
+
+
+
+
+
+
diff --git a/frontend/src/lib/components/ImmichSelect.svelte b/frontend/src/lib/components/ImmichSelect.svelte
index 050e1815..a8d398be 100644
--- a/frontend/src/lib/components/ImmichSelect.svelte
+++ b/frontend/src/lib/components/ImmichSelect.svelte
@@ -3,6 +3,7 @@
import { t } from 'svelte-i18n';
import CheckIcon from '~icons/mdi/check';
import CloseIcon from '~icons/mdi/close';
+ import DateInput from '$lib/components/DateInput.svelte';
import type { ImmichAlbum } from '$lib/types';
import { debounce } from '$lib';
@@ -26,16 +27,18 @@
const dispatch = createEventDispatcher();
// Reactive statements
- $: {
- if (searchCategory === 'album' && currentAlbum) {
- immichImages = [];
- fetchAlbumAssets(currentAlbum);
- } else if (searchCategory === 'date' && selectedDate) {
- clearAlbumSelection();
- searchImmich();
- } else if (searchCategory === 'search') {
- clearAlbumSelection();
- }
+ $: if (searchCategory === 'album' && currentAlbum) {
+ immichImages = [];
+ fetchAlbumAssets(currentAlbum);
+ }
+
+ $: if (searchCategory === 'date' && selectedDate) {
+ clearAlbumSelection();
+ searchImmich();
+ }
+
+ $: if (searchCategory === 'search') {
+ clearAlbumSelection();
}
// Helper functions
@@ -149,7 +152,11 @@
}
// Event handlers
- const searchImmich = debounce(() => {
+ function searchImmich() {
+ debouncedSearchImmich();
+ }
+
+ const debouncedSearchImmich = debounce(() => {
_searchImmich();
}, 500);
@@ -245,11 +252,10 @@
{:else if searchCategory === 'date'}
-
diff --git a/frontend/src/lib/components/NoteModal.svelte b/frontend/src/lib/components/NoteModal.svelte
index 3d81f6eb..b326fb98 100644
--- a/frontend/src/lib/components/NoteModal.svelte
+++ b/frontend/src/lib/components/NoteModal.svelte
@@ -6,6 +6,7 @@
import { onMount } from 'svelte';
import { t } from 'svelte-i18n';
import MarkdownEditor from './MarkdownEditor.svelte';
+ import DateInput from '$lib/components/DateInput.svelte';
let modal: HTMLDialogElement;
import { marked } from 'marked'; // Import the markdown parser
@@ -306,15 +307,14 @@
>
{/if}
-
diff --git a/frontend/src/lib/components/collections/CollectionMap.svelte b/frontend/src/lib/components/collections/CollectionMap.svelte
index 907842f9..8f17c0e0 100644
--- a/frontend/src/lib/components/collections/CollectionMap.svelte
+++ b/frontend/src/lib/components/collections/CollectionMap.svelte
@@ -10,6 +10,7 @@
import PinIcon from '~icons/mdi/map-marker';
import Clear from '~icons/mdi/close';
import NewLocationModal from '$lib/components/locations/LocationModal.svelte';
+ import DateInput from '$lib/components/DateInput.svelte';
import { t } from 'svelte-i18n';
import { get as getStore } from 'svelte/store';
import type { Collection, Location, User } from '$lib/types';
@@ -855,26 +856,28 @@
diff --git a/frontend/src/lib/components/locations/LocationVisits.svelte b/frontend/src/lib/components/locations/LocationVisits.svelte
index f9967686..f3a27795 100644
--- a/frontend/src/lib/components/locations/LocationVisits.svelte
+++ b/frontend/src/lib/components/locations/LocationVisits.svelte
@@ -8,6 +8,8 @@
TransportationVisit
} from '$lib/types';
import TimezoneSelector from '../TimezoneSelector.svelte';
+ import DateInput from '$lib/components/DateInput.svelte';
+ import DateTimeInput from '$lib/components/DateTimeInput.svelte';
import { t } from 'svelte-i18n';
import { updateLocalDate, updateUTCDate, validateDateRange, formatUTCDate } from '$lib/dateUtils';
import { onMount } from 'svelte';
@@ -818,20 +820,18 @@
{typeConfig.startLabel}
{#if allDay}
-
{:else}
-
{#if allDay}
-
{:else}
- {$t('adventures.start_date')}
-
+
diff --git a/frontend/src/lib/components/lodging/LodgingDetails.svelte b/frontend/src/lib/components/lodging/LodgingDetails.svelte
index 0a4d8634..aab01b68 100644
--- a/frontend/src/lib/components/lodging/LodgingDetails.svelte
+++ b/frontend/src/lib/components/lodging/LodgingDetails.svelte
@@ -16,6 +16,8 @@
import MarkdownEditor from '../MarkdownEditor.svelte';
import TimezoneSelector from '../TimezoneSelector.svelte';
import MoneyInput from '../shared/MoneyInput.svelte';
+ import DateInput from '$lib/components/DateInput.svelte';
+ import DateTimeInput from '$lib/components/DateTimeInput.svelte';
import { DEFAULT_CURRENCY, normalizeMoneyPayload, toMoneyValue } from '$lib/money';
// @ts-ignore
import { DateTime } from 'luxon';
@@ -733,20 +735,18 @@
{$t('adventures.check_in')}
{#if allDay}
-
{:else}
- {$t('adventures.check_out')}
{#if allDay}
-
{:else}
- {$t('transportation.departure_date')}
{#if allDay}
-
{:else}
- {$t('transportation.arrival_date')}
{#if allDay}
-
{:else}
-