From bd0345df1a9d547d027e921119b8c72442da9bf6 Mon Sep 17 00:00:00 2001 From: RKWojs Date: Tue, 14 Oct 2025 13:13:16 +0200 Subject: [PATCH] feat: add locale support for date formatting in task components --- src/app/tasks/page.js | 7 ++++++- src/components/ProjectTasksDashboard.js | 8 +++++++- src/components/ProjectTasksList.js | 11 ++++++++--- src/components/TaskCommentsModal.js | 8 ++++++-- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/app/tasks/page.js b/src/app/tasks/page.js index 1ae6bf3..38b353c 100644 --- a/src/app/tasks/page.js +++ b/src/app/tasks/page.js @@ -8,6 +8,7 @@ import Badge from "@/components/ui/Badge"; import TaskStatusDropdownSimple from "@/components/TaskStatusDropdownSimple"; import { Input } from "@/components/ui/Input"; import { formatDistanceToNow, parseISO } from "date-fns"; +import { pl, enUS } from "date-fns/locale"; import { formatDate } from "@/lib/utils"; import PageContainer from "@/components/ui/PageContainer"; import PageHeader from "@/components/ui/PageHeader"; @@ -17,7 +18,10 @@ import { LoadingState } from "@/components/ui/States"; import { useTranslation } from "@/lib/i18n"; export default function ProjectTasksPage() { - const { t } = useTranslation(); + const { t, language } = useTranslation(); + + // Get locale for date-fns + const locale = language === 'pl' ? pl : enUS; const [allTasks, setAllTasks] = useState([]); const [filteredTasks, setFilteredTasks] = useState([]); const [searchTerm, setSearchTerm] = useState(""); @@ -381,6 +385,7 @@ export default function ProjectTasksPage() { Added{" "} {formatDistanceToNow(parseISO(task.date_added), { addSuffix: true, + locale: locale })} {task.max_wait_days > 0 && ( diff --git a/src/components/ProjectTasksDashboard.js b/src/components/ProjectTasksDashboard.js index 4113d2d..0e3095f 100644 --- a/src/components/ProjectTasksDashboard.js +++ b/src/components/ProjectTasksDashboard.js @@ -13,11 +13,17 @@ import { parseISO, formatDistanceToNow, } from "date-fns"; +import { pl, enUS } from "date-fns/locale"; import { formatDate } from "@/lib/utils"; +import { useTranslation } from "@/lib/i18n"; export default function ProjectTasksDashboard() { + const { language } = useTranslation(); const [allTasks, setAllTasks] = useState([]); const [loading, setLoading] = useState(true); + + // Get locale for date-fns + const locale = language === 'pl' ? pl : enUS; const [filter, setFilter] = useState("all"); const [searchTerm, setSearchTerm] = useState(""); @@ -283,7 +289,7 @@ export default function ProjectTasksDashboard() { const addedDate = task.date_added.includes("T") ? parseISO(task.date_added) : new Date(task.date_added + "T00:00:00"); - return formatDistanceToNow(addedDate, { addSuffix: true }); + return formatDistanceToNow(addedDate, { addSuffix: true, locale: locale }); } catch (error) { return task.date_added; } diff --git a/src/components/ProjectTasksList.js b/src/components/ProjectTasksList.js index e461a1b..7c76756 100644 --- a/src/components/ProjectTasksList.js +++ b/src/components/ProjectTasksList.js @@ -14,12 +14,16 @@ import { parseISO, formatDistanceToNow, } from "date-fns"; +import { pl, enUS } from "date-fns/locale"; import { formatDate } from "@/lib/utils"; import { useTranslation } from "@/lib/i18n"; import { useSession } from "next-auth/react"; export default function ProjectTasksList() { - const { t } = useTranslation(); + const { t, language } = useTranslation(); + + // Get locale for date-fns + const locale = language === 'pl' ? pl : enUS; const { data: session } = useSession(); const [allTasks, setAllTasks] = useState([]); const [loading, setLoading] = useState(true); @@ -366,6 +370,7 @@ export default function ProjectTasksList() { const completedDate = new Date(task.date_completed); return formatDistanceToNow(completedDate, { addSuffix: true, + locale: locale }); } catch (error) { return task.date_completed; @@ -380,7 +385,7 @@ export default function ProjectTasksList() { {(() => { try { const startedDate = new Date(task.date_started); - return formatDistanceToNow(startedDate, { addSuffix: true }); + return formatDistanceToNow(startedDate, { addSuffix: true, locale: locale }); } catch (error) { return task.date_started; } @@ -393,7 +398,7 @@ export default function ProjectTasksList() { const addedDate = task.date_added.includes("T") ? parseISO(task.date_added) : new Date(task.date_added); - return formatDistanceToNow(addedDate, { addSuffix: true }); + return formatDistanceToNow(addedDate, { addSuffix: true, locale: locale }); } catch (error) { return task.date_added; } diff --git a/src/components/TaskCommentsModal.js b/src/components/TaskCommentsModal.js index 59836df..0cb511e 100644 --- a/src/components/TaskCommentsModal.js +++ b/src/components/TaskCommentsModal.js @@ -5,10 +5,14 @@ import Button from "./ui/Button"; import Badge from "./ui/Badge"; import { formatDate } from "@/lib/utils"; import { formatDistanceToNow, parseISO } from "date-fns"; +import { pl, enUS } from "date-fns/locale"; import { useTranslation } from "@/lib/i18n"; export default function TaskCommentsModal({ task, isOpen, onClose }) { - const { t } = useTranslation(); + const { t, language } = useTranslation(); + + // Get locale for date-fns + const locale = language === 'pl' ? pl : enUS; const [notes, setNotes] = useState([]); const [loading, setLoading] = useState(true); const [newNote, setNewNote] = useState(""); @@ -159,7 +163,7 @@ export default function TaskCommentsModal({ task, isOpen, onClose }) { const date = dateString.includes("T") ? parseISO(dateString) : new Date(dateString); return { label, - relative: formatDistanceToNow(date, { addSuffix: true }), + relative: formatDistanceToNow(date, { addSuffix: true, locale: locale }), absolute: formatDate(date, { includeTime: true }) }; } catch (error) {