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