diff --git a/package.json b/package.json index ee9baa1..4492700 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "my-weekly-todo-list", - "version": "1.110.0", + "version": "1.110.1", "description": "A web-based weekly task management application that organizes to-dos and calendar events in a single, intuitive weekly view", "main": "index.js", "scripts": { diff --git a/src/components/WeeklyView.tsx b/src/components/WeeklyView.tsx index e05bb8e..7437b6c 100644 --- a/src/components/WeeklyView.tsx +++ b/src/components/WeeklyView.tsx @@ -5761,6 +5761,9 @@ export default function WeeklyView() {
+ @@ -6063,8 +6066,8 @@ export default function WeeklyView() { {/* Mobile Header */} {isMobile && (
- {/* Left: Mobile sidebar */} - @@ -6112,12 +6115,12 @@ export default function WeeklyView() {
)} - {/* Mobile left sidebar */} + {/* Mobile left sidebar (icon rail — mirrors desktop collapsed rail) */} {isMobile && showMobileRail && ( <>
setShowMobileRail(false)} + onClick={() => { setShowMobileRail(false); setFlyoutSection(null); }} style={{ position: "fixed", inset: 0, background: "rgba(0,0,0,0.35)", zIndex: 200 }} />
- {/* Close */} - -
+ {/* Collapse */} + + {railSep} {/* Navigation */} - - + + - - -
- {/* Actions */} - - - - - + + + {railSep} + {/* View flyout */} + + {/* Columns flyout */} + + {/* Slot flyout */} + {profile.showTimeGrid && ()} + {railSep} + {/* Quick Actions */} + + + + + + + + {railSep} + {/* Visibility flyout */} + + {/* Appearance flyout */} + + {railSep} + {/* History & Utilities */} + + + + +
-
- - + {railSep} + {/* Settings + User/logout */} +
+ {/* Mobile flyout panel — positioned right of the 60px rail */} + {flyoutSection && ( + <> +
setFlyoutSection(null)} style={{ position: "fixed", inset: 0, zIndex: 202 }} /> +
e.stopPropagation()}> + {flyoutSection === "view" && ( + <> +
{profile.language === "de" ? "Ansicht" : "View"}
+
{[{ key: "simple", icon: , label: profile.language === "de" ? "Einfach" : "Simple" }, { key: "calendar", icon: , label: profile.language === "de" ? "Kalender" : "Calendar" }, { key: "list", icon: , label: profile.language === "de" ? "Liste" : "List" }, { key: "kanban", icon: , label: "Kanban" }, { key: "priority", icon: , label: profile.language === "de" ? "Priorität" : "Priority" }].map((v) => ())}
+ + )} + {flyoutSection === "columns" && ( + <> +
{profile.language === "de" ? "Spalten" : "Days"}
+
{[1, 2, 3, 5, 7].map((num) => ())}
+ + )} + {flyoutSection === "slot" && ( + <> +
{profile.language === "de" ? "Zeitfenster" : "Slot Duration"}
+
{(([15, 20, 30, 60] as CellDuration[])).map((d) => ())}
+
:15/:30/:45
+ + )} + {flyoutSection === "visibility" && ( + <> +
{profile.language === "de" ? "Sichtbarkeit" : "Visibility"}
+ {[{ label: profile.language === "de" ? "Irgendwann" : "Someday", value: effectiveShowSomeday, toggle: () => saveViewSetting("showSomeday", !effectiveShowSomeday, true) }, { label: profile.language === "de" ? "Ganztägig" : "All-day", value: effectiveShowAllDay, toggle: () => saveViewSetting("showAllDayEvents", !effectiveShowAllDay, true) }, { label: profile.language === "de" ? "Checkboxen" : "Checkboxes", value: effectiveShowTaskCheckboxes, toggle: () => saveViewSetting("showTaskCheckboxes", !effectiveShowTaskCheckboxes, true) }, { label: profile.language === "de" ? "Projekt-Icons" : "Project Icons", value: effectiveShowProjectIcons, toggle: () => saveViewSetting("showProjectIcons", !effectiveShowProjectIcons, true) }, { label: profile.language === "de" ? "Prioritäts-Icons" : "Priority Icons", value: effectiveShowPriorityIcons, toggle: () => saveViewSetting("showPriorityIcons", !effectiveShowPriorityIcons, true) }, ...((profile.weatherEnabled || profile.weatherLat || profile.weatherLon) ? [{ label: profile.language === "de" ? "Wetter" : "Weather", value: effectiveWeatherEnabled, toggle: () => { const v = !effectiveWeatherEnabled; setProfile((p: any) => ({ ...p, weatherEnabled: v })); saveViewSetting("weatherEnabled", v, true); } }] : []) ].map(({ label, value, toggle }) => (
{label}
))} + + )} + {flyoutSection === "display" && ( + <> +
{profile.language === "de" ? "Darstellung" : "Appearance"}
+
{profile.language === "de" ? "Textgröße" : "Text size"}
{(["S", "M", "L"] as const).map((size) => ())}
+
{profile.language === "de" ? "Starten mit" : "Start on"}
+
{profile.language === "de" ? "Anzeige" : "Display"}
+ + )} +
+ + )} )}