diff --git a/public/css/components/calendar/frame.css b/public/css/components/calendar/frame.css index 22f8cae37..dcad26abf 100644 --- a/public/css/components/calendar/frame.css +++ b/public/css/components/calendar/frame.css @@ -127,6 +127,9 @@ height: calc(var(--fhc-calendar-fontsize-event, .875rem) + 2 * var(--fhc-calendar-margin-event-icon, .5rem)); overflow: hidden; } +.fhc-calendar-mode-month .fhc-calendar-base-grid-line-event .placeholder-glow { + text-indent: 0; +} .fhc-calendar-mode-month .fhc-calendar-base-grid-line-event * { max-height: 100%; max-width: 100%; diff --git a/public/js/components/Calendar/Mode/Day/View.js b/public/js/components/Calendar/Mode/Day/View.js index 8371405d3..56065bbfd 100644 --- a/public/js/components/Calendar/Mode/Day/View.js +++ b/public/js/components/Calendar/Mode/Day/View.js @@ -63,9 +63,14 @@ export default { if (this.events.find(e => e == this.chosenEvent)) return this.chosenEvent; } + let first = null; if (this.events) - return this.events.find(Boolean); // undefined => none found - return null; // null => loading + first = this.events.find(Boolean); // undefined => none found + + if (first && first.type == 'loading') + return null; // null => loading + + return first; } }, watch: { @@ -123,7 +128,10 @@ export default { diff --git a/public/js/components/Calendar/Mode/List/View.js b/public/js/components/Calendar/Mode/List/View.js index 50560c0e7..38b1f9855 100644 --- a/public/js/components/Calendar/Mode/List/View.js +++ b/public/js/components/Calendar/Mode/List/View.js @@ -53,7 +53,10 @@ export default {
,
- +
+ +
+
diff --git a/public/js/components/Calendar/Mode/Month/View.js b/public/js/components/Calendar/Mode/Month/View.js index b2268e43d..fc21e452b 100644 --- a/public/js/components/Calendar/Mode/Month/View.js +++ b/public/js/components/Calendar/Mode/Month/View.js @@ -78,6 +78,9 @@ export default { :date="slot.event.start" :class="{ disabled: day.month != slot.event.start.month }" /> +
+ +
diff --git a/public/js/components/Calendar/Mode/Week/View.js b/public/js/components/Calendar/Mode/Week/View.js index 8941a755a..64cd4b1a6 100644 --- a/public/js/components/Calendar/Mode/Week/View.js +++ b/public/js/components/Calendar/Mode/Week/View.js @@ -66,7 +66,10 @@ export default { diff --git a/public/js/composables/EventLoader.js b/public/js/composables/EventLoader.js index 7fc1c5abc..5af20f6be 100644 --- a/public/js/composables/EventLoader.js +++ b/public/js/composables/EventLoader.js @@ -1,5 +1,8 @@ export function useEventLoader(rangeInterval, getPromiseFunc) { + let loading_id = 0; const events = Vue.ref([]); + const loadingEvents = Vue.ref([]); + const allEvents = Vue.computed(() => events.value.concat(loadingEvents.value)); const lv = Vue.ref(null); const eventsLoaded = []; @@ -93,9 +96,16 @@ export function useEventLoader(rangeInterval, getPromiseFunc) { } } - if (start.ts > end.ts) + if (start.ts >= end.ts) return result; + loadingEvents.value.push({ + loading_id: loading_id++, + type: "loading", + isostart: start.toISODate() + 'T' + start.toISOTime(), + isoend: end.toISODate() + 'T' + end.toISOTime() + }); + return mergePromiseArr(getPromiseFunc(start, end), result); }; @@ -116,10 +126,11 @@ export function useEventLoader(rangeInterval, getPromiseFunc) { lv.value = res.value.meta.lv; events.value = events.value.concat(res.value.data); + loadingEvents.value = []; } }) }); }) - return { events, lv } + return { events: allEvents, lv } } \ No newline at end of file