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} -