feat: add right-click context menu on calendar events

This commit is contained in:
Linus Rath
2026-04-18 13:46:49 +02:00
parent 028e78a0c9
commit 6fa0029d0b
25 changed files with 531 additions and 36 deletions
+8 -2
View File
@@ -1972,7 +1972,10 @@
"resize": "Termingröße ändern",
"duplicate": "Duplizieren",
"today_header": "Heute",
"tomorrow_header": "Morgen"
"tomorrow_header": "Morgen",
"export_ics": "Als .ics exportieren",
"copy_title": "Titel kopieren",
"copy_link": "Meeting-Link kopieren"
},
"detail": {
"add_note": "Notiz hinzufügen...",
@@ -2119,7 +2122,10 @@
"rsvp_error": "Antwort konnte nicht aktualisiert werden",
"event_duplicated": "Termin dupliziert",
"event_error": "Termin konnte nicht gespeichert werden",
"task_due": "Aufgabe fällig"
"task_due": "Aufgabe fällig",
"event_exported": "Termin exportiert",
"title_copied": "Titel kopiert",
"link_copied": "Link kopiert"
},
"status": {
"loading_calendars": "Kalender werden geladen...",
+8 -2
View File
@@ -1979,7 +1979,10 @@
"resize": "Resize event",
"duplicate": "Duplicate",
"today_header": "Today",
"tomorrow_header": "Tomorrow"
"tomorrow_header": "Tomorrow",
"export_ics": "Export as .ics",
"copy_title": "Copy title",
"copy_link": "Copy meeting link"
},
"detail": {
"add_note": "Add a note...",
@@ -2126,7 +2129,10 @@
"rsvp_error": "Failed to update response",
"event_duplicated": "Event duplicated",
"event_error": "Failed to save event",
"task_due": "Task due"
"task_due": "Task due",
"event_exported": "Event exported",
"title_copied": "Title copied",
"link_copied": "Link copied"
},
"status": {
"loading_calendars": "Loading calendars...",
+8 -2
View File
@@ -1972,7 +1972,10 @@
"resize": "Redimensionar evento",
"duplicate": "Duplicar",
"today_header": "Hoy",
"tomorrow_header": "Mañana"
"tomorrow_header": "Mañana",
"export_ics": "Exportar como .ics",
"copy_title": "Copiar título",
"copy_link": "Copiar enlace de reunión"
},
"detail": {
"add_note": "Añadir una nota...",
@@ -2119,7 +2122,10 @@
"rsvp_error": "Error al actualizar la respuesta",
"event_duplicated": "Evento duplicado",
"event_error": "Error al guardar el evento",
"task_due": "Tarea vencida"
"task_due": "Tarea vencida",
"event_exported": "Evento exportado",
"title_copied": "Título copiado",
"link_copied": "Enlace copiado"
},
"status": {
"loading_calendars": "Cargando calendarios...",
+8 -2
View File
@@ -1972,7 +1972,10 @@
"resize": "Redimensionner l'événement",
"duplicate": "Dupliquer",
"today_header": "Aujourd'hui",
"tomorrow_header": "Demain"
"tomorrow_header": "Demain",
"export_ics": "Exporter en .ics",
"copy_title": "Copier le titre",
"copy_link": "Copier le lien de réunion"
},
"detail": {
"add_note": "Ajouter une note...",
@@ -2119,7 +2122,10 @@
"rsvp_error": "Échec de la mise à jour de la réponse",
"event_duplicated": "Événement dupliqué",
"event_error": "Échec de l'enregistrement de l'événement",
"task_due": "Tâche à échéance"
"task_due": "Tâche à échéance",
"event_exported": "Événement exporté",
"title_copied": "Titre copié",
"link_copied": "Lien copié"
},
"status": {
"loading_calendars": "Chargement des calendriers...",
+8 -2
View File
@@ -1972,7 +1972,10 @@
"resize": "Ridimensiona evento",
"duplicate": "Duplica",
"today_header": "Oggi",
"tomorrow_header": "Domani"
"tomorrow_header": "Domani",
"export_ics": "Esporta come .ics",
"copy_title": "Copia titolo",
"copy_link": "Copia link riunione"
},
"detail": {
"add_note": "Aggiungi una nota...",
@@ -2119,7 +2122,10 @@
"rsvp_error": "Impossibile aggiornare la risposta",
"event_duplicated": "Evento duplicato",
"event_error": "Salvataggio dell'evento non riuscito",
"task_due": "Attività in scadenza"
"task_due": "Attività in scadenza",
"event_exported": "Evento esportato",
"title_copied": "Titolo copiato",
"link_copied": "Link copiato"
},
"status": {
"loading_calendars": "Caricamento calendari...",
+8 -2
View File
@@ -1972,7 +1972,10 @@
"resize": "イベントのサイズ変更",
"duplicate": "複製",
"today_header": "今日",
"tomorrow_header": "明日"
"tomorrow_header": "明日",
"export_ics": ".icsとしてエクスポート",
"copy_title": "タイトルをコピー",
"copy_link": "会議リンクをコピー"
},
"detail": {
"add_note": "メモを追加...",
@@ -2119,7 +2122,10 @@
"rsvp_error": "回答の更新に失敗しました",
"event_duplicated": "予定を複製しました",
"event_error": "予定の保存に失敗しました",
"task_due": "タスクの期限です"
"task_due": "タスクの期限です",
"event_exported": "イベントをエクスポートしました",
"title_copied": "タイトルをコピーしました",
"link_copied": "リンクをコピーしました"
},
"status": {
"loading_calendars": "カレンダーを読み込み中...",
+8 -2
View File
@@ -1972,7 +1972,10 @@
"resize": "일정 크기 조절",
"duplicate": "복제",
"today_header": "오늘",
"tomorrow_header": "내일"
"tomorrow_header": "내일",
"export_ics": ".ics로 내보내기",
"copy_title": "제목 복사",
"copy_link": "회의 링크 복사"
},
"detail": {
"add_note": "메모 추가...",
@@ -2119,7 +2122,10 @@
"rsvp_error": "응답을 업데이트하지 못했어요",
"event_duplicated": "일정이 복제되었어요",
"event_error": "일정을 저장하지 못했어요",
"task_due": "할 일 기한이 다가와요"
"task_due": "할 일 기한이 다가와요",
"event_exported": "이벤트 내보내기 완료",
"title_copied": "제목이 복사되었습니다",
"link_copied": "링크가 복사되었습니다"
},
"status": {
"loading_calendars": "캘린더를 불러오는 중...",
+8 -2
View File
@@ -1971,7 +1971,10 @@
"resize": "Mainīt pasākuma laiku",
"duplicate": "Dublēt",
"today_header": "Šodien",
"tomorrow_header": "Rīt"
"tomorrow_header": "Rīt",
"export_ics": "Eksportēt kā .ics",
"copy_title": "Kopēt nosaukumu",
"copy_link": "Kopēt sapulces saiti"
},
"detail": {
"add_note": "Pievienot piezīmi...",
@@ -2118,7 +2121,10 @@
"rsvp_error": "Neizdevās atjaunināt atbildi",
"event_duplicated": "Pasākums dublēts",
"event_error": "Neizdevās saglabāt pasākumu",
"task_due": "Uzdevuma termiņš"
"task_due": "Uzdevuma termiņš",
"event_exported": "Notikums eksportēts",
"title_copied": "Nosaukums nokopēts",
"link_copied": "Saite nokopēta"
},
"status": {
"loading_calendars": "Ielādē kalendārus...",
+8 -2
View File
@@ -1972,7 +1972,10 @@
"resize": "Evenement formaat wijzigen",
"duplicate": "Dupliceren",
"today_header": "Vandaag",
"tomorrow_header": "Morgen"
"tomorrow_header": "Morgen",
"export_ics": "Exporteren als .ics",
"copy_title": "Titel kopiëren",
"copy_link": "Vergaderlink kopiëren"
},
"detail": {
"add_note": "Notitie toevoegen...",
@@ -2119,7 +2122,10 @@
"rsvp_error": "Reactie kon niet worden bijgewerkt",
"event_duplicated": "Evenement gedupliceerd",
"event_error": "Evenement opslaan mislukt",
"task_due": "Taak vervalt"
"task_due": "Taak vervalt",
"event_exported": "Afspraak geëxporteerd",
"title_copied": "Titel gekopieerd",
"link_copied": "Link gekopieerd"
},
"status": {
"loading_calendars": "Agenda's laden...",
+8 -2
View File
@@ -1972,7 +1972,10 @@
"resize": "Zmień rozmiar wydarzenia",
"duplicate": "Duplikuj",
"today_header": "Dzisiaj",
"tomorrow_header": "Jutro"
"tomorrow_header": "Jutro",
"export_ics": "Eksportuj jako .ics",
"copy_title": "Kopiuj tytuł",
"copy_link": "Kopiuj link do spotkania"
},
"detail": {
"add_note": "Dodaj notatkę...",
@@ -2119,7 +2122,10 @@
"rsvp_error": "Nie udało się zaktualizować odpowiedzi",
"event_duplicated": "Wydarzenie zduplikowano",
"event_error": "Nie udało się zapisać wydarzenia",
"task_due": "Termin zadania"
"task_due": "Termin zadania",
"event_exported": "Wydarzenie wyeksportowane",
"title_copied": "Tytuł skopiowany",
"link_copied": "Link skopiowany"
},
"status": {
"loading_calendars": "Ładowanie kalendarzy...",
+8 -2
View File
@@ -1972,7 +1972,10 @@
"resize": "Redimensionar evento",
"duplicate": "Duplicar",
"today_header": "Hoje",
"tomorrow_header": "Amanhã"
"tomorrow_header": "Amanhã",
"export_ics": "Exportar como .ics",
"copy_title": "Copiar título",
"copy_link": "Copiar link da reunião"
},
"detail": {
"add_note": "Adicionar uma nota...",
@@ -2119,7 +2122,10 @@
"rsvp_error": "Falha ao atualizar resposta",
"event_duplicated": "Evento duplicado",
"event_error": "Falha ao salvar o evento",
"task_due": "Tarefa vencendo"
"task_due": "Tarefa vencendo",
"event_exported": "Evento exportado",
"title_copied": "Título copiado",
"link_copied": "Link copiado"
},
"status": {
"loading_calendars": "Carregando calendários...",
+8 -2
View File
@@ -1972,7 +1972,10 @@
"resize": "Изменить размер события",
"duplicate": "Дублировать",
"today_header": "Сегодня",
"tomorrow_header": "Завтра"
"tomorrow_header": "Завтра",
"export_ics": "Экспорт в .ics",
"copy_title": "Скопировать название",
"copy_link": "Скопировать ссылку встречи"
},
"detail": {
"add_note": "Добавить заметку...",
@@ -2119,7 +2122,10 @@
"rsvp_error": "Не удалось обновить ответ",
"event_duplicated": "Событие дублировано",
"event_error": "Не удалось сохранить событие",
"task_due": "Срок задачи"
"task_due": "Срок задачи",
"event_exported": "Событие экспортировано",
"title_copied": "Название скопировано",
"link_copied": "Ссылка скопирована"
},
"status": {
"loading_calendars": "Загрузка календарей...",
+8 -2
View File
@@ -1972,7 +1972,10 @@
"resize": "Змінити розмір події",
"duplicate": "дублікат",
"today_header": "Сьогодні",
"tomorrow_header": "завтра"
"tomorrow_header": "завтра",
"export_ics": "Експортувати як .ics",
"copy_title": "Скопіювати назву",
"copy_link": "Скопіювати посилання зустрічі"
},
"detail": {
"add_note": "Додати примітку...",
@@ -2119,7 +2122,10 @@
"rsvp_error": "Не вдалося оновити відповідь",
"event_duplicated": "Подія дублюється",
"event_error": "Не вдалося зберегти подію",
"task_due": "Термін виконання завдання"
"task_due": "Термін виконання завдання",
"event_exported": "Подію експортовано",
"title_copied": "Назву скопійовано",
"link_copied": "Посилання скопійовано"
},
"status": {
"loading_calendars": "Завантаження календарів...",
+8 -2
View File
@@ -1972,7 +1972,10 @@
"resize": "调整事件大小",
"duplicate": "复制",
"today_header": "今天",
"tomorrow_header": "明天"
"tomorrow_header": "明天",
"export_ics": "导出为 .ics",
"copy_title": "复制标题",
"copy_link": "复制会议链接"
},
"detail": {
"add_note": "添加注释...",
@@ -2119,7 +2122,10 @@
"rsvp_error": "无法更新回复",
"event_duplicated": "活动已复制",
"event_error": "无法保存活动",
"task_due": "任务到期"
"task_due": "任务到期",
"event_exported": "日程已导出",
"title_copied": "标题已复制",
"link_copied": "链接已复制"
},
"status": {
"loading_calendars": "正在加载日历...",