import React, { useMemo } from "react"; import styles from "./task-list-table.module.css"; import { Task } from "../../types/public-types"; const localeDateStringCache = {}; const toLocaleDateStringFactory = (locale: string) => ( date: Date, dateTimeOptions: Intl.DateTimeFormatOptions ) => { const key = date.toString(); let lds = localeDateStringCache[key]; if (!lds) { lds = date.toLocaleDateString(locale, dateTimeOptions); localeDateStringCache[key] = lds; } return lds; }; const dateTimeOptions: Intl.DateTimeFormatOptions = { weekday: "short", year: "numeric", month: "long", day: "numeric", }; export const TaskListTableDefault: React.FC<{ rowHeight: number; rowWidth: string; fontFamily: string; fontSize: string; locale: string; tasks: Task[]; selectedTaskId: string; setSelectedTask: (taskId: string) => void; onExpanderClick: (task: Task) => void; }> = ({ rowHeight, rowWidth, tasks, fontFamily, fontSize, locale, onExpanderClick, }) => { const toLocaleDateString = useMemo(() => toLocaleDateStringFactory(locale), [ locale, ]); return (
{tasks.map(t => { let expanderSymbol = ""; if (t.hideChildren === false) { expanderSymbol = "▼"; } else if (t.hideChildren === true) { expanderSymbol = "▶"; } return (
onExpanderClick(t)} > {expanderSymbol}
{t.name}
 {toLocaleDateString(t.start, dateTimeOptions)}
 {toLocaleDateString(t.end, dateTimeOptions)}
); })}
); };