feat: FE calendar, context menu, dashboard

This commit is contained in:
Michael 2025-03-26 10:33:44 +01:00
parent ca005ebb0b
commit b389f37a1d
6 changed files with 123 additions and 84 deletions

View file

@ -1,6 +1,7 @@
import type {ContextMenu} from "@models/misc/contextMenu"
import type {ContextMenu, ExtractActionTriggers} from "@models/misc/contextMenu"
export interface calendarShowEvent {
showInstanceIndex: Number,
showInstanceId: Number,
title: string,
color: string,
@ -9,6 +10,8 @@ export interface calendarShowEvent {
timed: boolean,
}
export type ShowEventActionTrigger = ExtractActionTriggers<typeof calendarShowEventMenu>;
export const calendarShowEventMenu: ContextMenu = {
entries: [
{

View file

@ -24,6 +24,12 @@ interface ContextMenuEntryWithChildren {
type ContextMenuEntry = ContextMenuEntryWithAction | ContextMenuEntryWithChildren;
export type ExtractActionTriggers<T> =
T extends { actionTrigger: infer U } ? U :
T extends { children: infer C } ? ExtractActionTriggers<C> :
T extends (infer R)[] ? ExtractActionTriggers<R> :
never;
export function menuEntryWithAction(entry: ContextMenuEntry): entry is ContextMenuEntryWithAction {
return 'actionTrigger' in entry;
}