diff --git a/apps/client/src/widgets/buttons/calendar.ts b/apps/client/src/widgets/buttons/calendar.ts index 286b94a14..0d993540e 100644 --- a/apps/client/src/widgets/buttons/calendar.ts +++ b/apps/client/src/widgets/buttons/calendar.ts @@ -56,18 +56,6 @@ const DROPDOWN_TPL = ` `; -const DAYS_OF_WEEK = [ - t("calendar.sun"), - t("calendar.mon"), - t("calendar.tue"), - t("calendar.wed"), - t("calendar.thu"), - t("calendar.fri"), - t("calendar.sat") -]; - - - interface WeekCalculationOptions { firstWeekType: number; minDaysInFirstWeek: number; @@ -100,7 +88,6 @@ export default class CalendarWidget extends RightDropdownButtonWidget { super.doRender(); this.$month = this.$dropdownContent.find('[data-calendar-area="month"]'); - this.$weekHeader = this.$dropdownContent.find(".calendar-week"); this.manageFirstDayOfWeek(); this.initWeekCalculation(); @@ -216,14 +203,6 @@ export default class CalendarWidget extends RightDropdownButtonWidget { this.weekNoteEnable = noteAttributes.some(a => a.name === 'enableWeekNote'); } - // Store firstDayOfWeek as ISO (1–7) - manageFirstDayOfWeek() { - let localeDaysOfWeek = [...DAYS_OF_WEEK]; - const shifted = localeDaysOfWeek.splice(0, rawFirstDayOfWeek); - localeDaysOfWeek = ['', ...localeDaysOfWeek, ...shifted]; - this.$weekHeader.html(localeDaysOfWeek.map((el) => `${el}`).join('')); - } - initWeekCalculation() { this.weekCalculationOptions = { firstWeekType: options.getInt("firstWeekOfYear") || 0, diff --git a/apps/client/src/widgets/launch_bar/CalendarWidget.tsx b/apps/client/src/widgets/launch_bar/CalendarWidget.tsx index b8b94ba73..f8b20c2f0 100644 --- a/apps/client/src/widgets/launch_bar/CalendarWidget.tsx +++ b/apps/client/src/widgets/launch_bar/CalendarWidget.tsx @@ -7,7 +7,7 @@ import { useTriliumOptionInt } from "../react/hooks"; import clsx from "clsx"; import "./CalendarWidget.css"; import server from "../../services/server"; -import { DateRangeInfo, getMonthInformation, getWeekNumber } from "./CalendarWidgetUtils"; +import { DateRangeInfo, DAYS_OF_WEEK, getMonthInformation, getWeekNumber } from "./CalendarWidgetUtils"; import { VNode } from "preact"; interface DateNotesForMonth { @@ -17,8 +17,6 @@ interface DateNotesForMonth { export default function CalendarWidget({ launcherNote }: { launcherNote: FNote }) { const { title, icon } = useLauncherIconAndTitle(launcherNote); const [ date, setDate ] = useState(); - const [ rawFirstDayOfWeek ] = useTriliumOptionInt("firstDayOfWeek") ?? 0; - const firstDayOfWeekISO = (rawFirstDayOfWeek === 0 ? 7 : rawFirstDayOfWeek); useEffect(() => { @@ -36,23 +34,41 @@ export default function CalendarWidget({ launcherNote }: { launcherNote: FNote } }} > {date &&
- +
} ) } -function Calendar({ date, firstDayOfWeekISO }: { date: Dayjs, firstDayOfWeekISO: number }) { +function Calendar({ date }: { date: Dayjs }) { + const [ rawFirstDayOfWeek ] = useTriliumOptionInt("firstDayOfWeek") ?? 0; + const firstDayOfWeekISO = (rawFirstDayOfWeek === 0 ? 7 : rawFirstDayOfWeek); + const month = date.format('YYYY-MM'); const firstDay = date.startOf('month'); const firstDayISO = firstDay.isoWeekday(); const monthInfo = getMonthInformation(date, firstDayISO, firstDayOfWeekISO); return ( -
- {firstDayISO !== firstDayOfWeekISO && } - - + <> + +
+ {firstDayISO !== firstDayOfWeekISO && } + + +
+ + ) +} + +function CalendarWeekHeader({ rawFirstDayOfWeek }: { rawFirstDayOfWeek: number }) { + let localeDaysOfWeek = [...DAYS_OF_WEEK]; + const shifted = localeDaysOfWeek.splice(0, rawFirstDayOfWeek); + localeDaysOfWeek = ['', ...localeDaysOfWeek, ...shifted]; + + return ( +
+ {localeDaysOfWeek.map(dayOfWeek => {dayOfWeek})}
) } diff --git a/apps/client/src/widgets/launch_bar/CalendarWidgetUtils.ts b/apps/client/src/widgets/launch_bar/CalendarWidgetUtils.ts index e7a59aa4a..3b598bbe9 100644 --- a/apps/client/src/widgets/launch_bar/CalendarWidgetUtils.ts +++ b/apps/client/src/widgets/launch_bar/CalendarWidgetUtils.ts @@ -1,4 +1,15 @@ import { Dayjs } from "@triliumnext/commons"; +import { t } from "../../services/i18n"; + +export const DAYS_OF_WEEK = [ + t("calendar.sun"), + t("calendar.mon"), + t("calendar.tue"), + t("calendar.wed"), + t("calendar.thu"), + t("calendar.fri"), + t("calendar.sat") +]; export interface DateRangeInfo { weekNumbers: number[];