From bffa9f1e96b367c281f5e2d75de32b3159346507 Mon Sep 17 00:00:00 2001 From: ToBinio Date: Wed, 10 Jun 2026 11:20:51 +0200 Subject: [PATCH] basic reminder ui --- app/components/Edit/DesktopTodoDataSelect.vue | 4 + app/components/Edit/EditTodoSheet.vue | 3 +- app/components/Edit/MobileTodoDataSelect.vue | 1 + app/components/Edit/NewTodoSheet.vue | 5 +- app/components/Edit/Reminder.vue | 108 ++++++++++++++++++ app/components/Edit/ReminderSelect.vue | 48 ++++++++ app/components/Edit/TabedDataSelect.vue | 8 +- app/components/Edit/Time/TimePointSelect.vue | 2 +- i18n/locales/de.json | 5 + i18n/locales/en.json | 5 + 10 files changed, 183 insertions(+), 6 deletions(-) create mode 100644 app/components/Edit/Reminder.vue create mode 100644 app/components/Edit/ReminderSelect.vue diff --git a/app/components/Edit/DesktopTodoDataSelect.vue b/app/components/Edit/DesktopTodoDataSelect.vue index 053fdb1..2315f56 100644 --- a/app/components/Edit/DesktopTodoDataSelect.vue +++ b/app/components/Edit/DesktopTodoDataSelect.vue @@ -10,6 +10,7 @@ import TimeRangeSelect from "./Time/TimeRangeSelect.vue"; import TimeRecurringSelect from "./Time/TimeRecurringSelect.vue"; import TitleSelect from "./TitleSelect.vue"; + import ReminderSelect from "./ReminderSelect.vue"; const { t } = useI18n(); @@ -95,6 +96,9 @@ /> + + + diff --git a/app/components/Edit/EditTodoSheet.vue b/app/components/Edit/EditTodoSheet.vue index ec07239..20d66d0 100644 --- a/app/components/Edit/EditTodoSheet.vue +++ b/app/components/Edit/EditTodoSheet.vue @@ -37,7 +37,8 @@ ? todo.tags.map((tag) => tag.uuid) : undefined; todoData.value.category = todo.category?.uuid; - todoData.value.time = todo.time; + todoData.value.time = todo.time; + todoData.value.reminders = todo.reminders; isOpen.value = true; }, diff --git a/app/components/Edit/MobileTodoDataSelect.vue b/app/components/Edit/MobileTodoDataSelect.vue index 12c8063..07d7348 100644 --- a/app/components/Edit/MobileTodoDataSelect.vue +++ b/app/components/Edit/MobileTodoDataSelect.vue @@ -15,6 +15,7 @@ v-model:tags="todoData.tags" v-model:category="todoData.category" v-model:note="todoData.note" + v-model:reminders="todoData.reminders" />
diff --git a/app/components/Edit/NewTodoSheet.vue b/app/components/Edit/NewTodoSheet.vue index 6848fc5..c5ecf89 100644 --- a/app/components/Edit/NewTodoSheet.vue +++ b/app/components/Edit/NewTodoSheet.vue @@ -24,8 +24,6 @@ title: "", note: "", tags: [], - time: undefined, - category: undefined, }); watch(isOpen, () => { @@ -49,7 +47,8 @@ todoData.value.time = timeFilter.value === "all" ? undefined - : { type: "range", start: today, end: today }; + : { type: "range", start: today, end: today }; + todoData.value.reminders = undefined; } function onAddTodo() { diff --git a/app/components/Edit/Reminder.vue b/app/components/Edit/Reminder.vue new file mode 100644 index 0000000..060b0e6 --- /dev/null +++ b/app/components/Edit/Reminder.vue @@ -0,0 +1,108 @@ + + + diff --git a/app/components/Edit/ReminderSelect.vue b/app/components/Edit/ReminderSelect.vue new file mode 100644 index 0000000..1dda069 --- /dev/null +++ b/app/components/Edit/ReminderSelect.vue @@ -0,0 +1,48 @@ + + + diff --git a/app/components/Edit/TabedDataSelect.vue b/app/components/Edit/TabedDataSelect.vue index f18176d..4ac7456 100644 --- a/app/components/Edit/TabedDataSelect.vue +++ b/app/components/Edit/TabedDataSelect.vue @@ -6,13 +6,14 @@ TabsRoot, TabsTrigger, } from "reka-ui"; - import type { Time, UUID } from "~/utils/types"; + import type { Reminder, Time, UUID } from "~/utils/types"; import CategorySelect from "../Utils/Label/CategorySelect.vue"; import TagSelect from "../Utils/Label/TagSelect.vue"; import NoteSelect from "./NoteSelect.vue"; import TimePointSelect from "./Time/TimePointSelect.vue"; import TimeRangeSelect from "./Time/TimeRangeSelect.vue"; import TimeRecurringSelect from "./Time/TimeRecurringSelect.vue"; + import ReminderSelect from "./ReminderSelect.vue"; const { t } = useI18n(); @@ -24,6 +25,7 @@ required: true, }); const note = defineModel("note", { required: true }); + const reminders = defineModel("reminders", { required: true }); const { timeRange, timeRecurring, timePoint } = useExtractedTime(time); @@ -111,6 +113,10 @@ v-if="selectedTimeType === 'point'" v-model:timePoint="timePoint" /> +
+

{{ t("reminders") }}

+ +
diff --git a/app/components/Edit/Time/TimePointSelect.vue b/app/components/Edit/Time/TimePointSelect.vue index 4539821..90c0683 100644 --- a/app/components/Edit/Time/TimePointSelect.vue +++ b/app/components/Edit/Time/TimePointSelect.vue @@ -9,7 +9,7 @@ import { DateFieldInput, DateFieldRoot } from "reka-ui"; import type { TimePoint } from "~/utils/types"; - const { t, locale } = useI18n(); + const { locale } = useI18n(); const timePoint = defineModel("timePoint"); if (timePoint.value === undefined) { diff --git a/i18n/locales/de.json b/i18n/locales/de.json index 3641810..7214248 100644 --- a/i18n/locales/de.json +++ b/i18n/locales/de.json @@ -1,6 +1,11 @@ { "categories": "Kategorien", "tags": "Tags", + "reminders": "Erinnerungen", + "reminder": { + "relative": "Relativ", + "time": "Zeit Punkt" + }, "time": "Zeit", "all": "Alle", "today": "Heute", diff --git a/i18n/locales/en.json b/i18n/locales/en.json index 776a1b8..bb17a85 100644 --- a/i18n/locales/en.json +++ b/i18n/locales/en.json @@ -1,6 +1,11 @@ { "categories": "Categories", "tags": "Tags", + "reminders": "Reminders", + "reminder": { + "relative": "Relative", + "time": "Time Point" + }, "time": "Time", "all": "All", "today": "Today", -- 2.51.2