-
+
-
+ {#if eventItem.description}
+
+ {/if}
@@ -65,10 +67,9 @@
{#if eventItem.slot.end && new Date(eventItem.slot.end).getTime() != new Date(eventItem.slot.start).getTime()}
{#if new Date(eventItem.slot.end).getDay() - new Date(eventItem.slot.start).getDay() != 0}
-  -*
+ -*
{:else}
-
-  - {new Date(eventItem.slot.end).toLocaleTimeString('el-GR', { hour: '2-digit', minute: '2-digit', hour12: false })}
+ - {new Date(eventItem.slot.end).toLocaleTimeString('el-GR', { hour: '2-digit', minute: '2-digit', hour12: false })}
{/if}
{/if}
@@ -80,7 +81,7 @@
diff --git a/src/lib/components/calendar/event/EventModal.svelte b/src/lib/components/calendar/event/EventModal.svelte
new file mode 100644
index 00000000..6ea7874a
--- /dev/null
+++ b/src/lib/components/calendar/event/EventModal.svelte
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {event.title || $t('event.title')}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/translations/translations.js b/src/lib/translations/translations.js
index 0fa13eba..fde20032 100644
--- a/src/lib/translations/translations.js
+++ b/src/lib/translations/translations.js
@@ -114,6 +114,7 @@ export default {
"links.erasmus": "Γραφείο Erasmus",
"schedule.title": "Ημερολόγιο",
"schedule.no_event": "Δεν υπάρχουν προγραμματισμένα συμβάντα αυτήν τη μέρα.",
+ "schedule.no_events_day": "Δεν υπάρχουν συμβάντα για αυτήν την ημέρα",
"event.title": "Συμβάν",
"event.start": "Έναρξη",
"event.end": "Λήξη",
@@ -345,6 +346,7 @@ export default {
'links.erasmus': 'Erasmus Office',
'schedule.title': 'Calendar',
'schedule.no_event': 'There are no scheduled events for this day.',
+ 'schedule.no_events_day': 'No events for this day',
'event.title': 'Event',
'event.start': 'Starts',
'event.end': 'Ends',
diff --git a/src/routes/pages/calendar/+page.svelte b/src/routes/pages/calendar/+page.svelte
index 4e4efe28..e61c2b9e 100644
--- a/src/routes/pages/calendar/+page.svelte
+++ b/src/routes/pages/calendar/+page.svelte
@@ -1,343 +1,334 @@
+
+
-
-
- {$t('schedule.title')}
-
- {modalOpen=true; selectedEvent=null; recreatePrototype();}} aria-hidden>
-
-
-
-
-
-
-
-
-
- {#if eventList.length > 0}
-
-
-
- {#each eventList as eventItem}
-
- {/each}
-
-
-
- {:else}
-
-
- {$t('schedule.no_event')}
-
- {/if}
+
+
-
+
+
+
+ {activeDate.toLocaleDateString(undefined, {
+ weekday: 'long',
+ year: 'numeric',
+ month: 'long',
+ day: 'numeric'
+ })}
+
+ {#if eventList.length > 0}
+
+ {#each eventList as eventItem}
+
+ {/each}
+
+ {:else}
+
+ {$t('schedule.no_events_day')}
+
+ {/if}
+
-
{modalOpen = event.detail.breakpoint!=0; if(!modalOpen) selectedEvent=null;}}
- on:ionModalDidDismiss={()=>{modalOpen=false; selectedEvent=null; recreatePrototype();}}
- on:ionModalWillPresent={setupModal}
- >
-
-
-
-
-
-
-
-
-
- {selectedEvent?.title? selectedEvent.title : $t('event.title')}
-
- {modalOpen=false; selectedEvent=null; recreatePrototype();}} aria-hidden>
-
-
-
-
-
-
+
+
+
+
+
+
-
{
+
+ {#if selectedEvent}
+
+ {/if}
+
+
+ {
addInactiveDateToEvent(selectedEvent);
- }
- },
- {
- text: $t('event.deleteAll'),
- role: 'destructive',
- handler: () => {
- removeEvent(selectedEvent);
- }
- },
- {
- text: $t('event.cancel'),
- role: 'cancel',
- handler: () => {
+ }
+ },
+ {
+ text: $t('event.deleteAll'),
+ role: 'destructive',
+ handler: () => {
+ if (selectedEvent) {
+ handleEventDelete(selectedEvent);
+ deleteModalOpen = false;
+ }
+ }
+ },
+ {
+ text: $t('event.cancel'),
+ role: 'cancel',
+ handler: () => {
deleteModalOpen = false;
selectedEvent = null;
- }
}
- ]}
- mode="ios">
-
-
-
+ }
+ ]}
+ mode="ios">
+
+
\ No newline at end of file
+ ion-fab-button {
+ --background: var(--ion-color-primary);
+ --color: white;
+ --border-radius: 16px;
+ --box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
+ --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+ width: 56px;
+ height: 56px;
+ }
+ ion-fab-button:hover {
+ --box-shadow: 0 6px 20px rgba(0, 0, 0, 0.16);
+ transform: scale(1.05);
+ }
+ ion-fab-button::part(native) {
+ border-radius: 16px;
+ }
+ ion-fab-button ion-icon {
+ font-size: 28px;
+ }
+
diff --git a/src/routes/persistedStoreDeclarations.ts b/src/routes/persistedStoreDeclarations.ts
index ed1d5dc3..a5614383 100644
--- a/src/routes/persistedStoreDeclarations.ts
+++ b/src/routes/persistedStoreDeclarations.ts
@@ -25,5 +25,5 @@ const persistedStores: CapacitorPersistedStore
[] = [
export async function loadPersistedStores() {
console.log('Loading persisted stores');
- persistedStores.forEach(async (store) => { await store.loadFromStorage();});
+ await Promise.all(persistedStores.map(store => store.loadFromStorage()));
}