feat(web): Widget-Titel je Widget ausblenden, Seitenleiste gegliedert
Neuer Schalter im Bearbeitungsmodus (neben dem Griff) setzt hideTitle in der Widget-Konfiguration (setWidgetConfig im Dashboard-Store, optimistisch mit Ruecksetzen); in der Ansicht entfaellt die Titelzeile per data-hide-title, Aktionen der Titelzeile bleiben oben rechts. Kategorien der Seitenleiste 14 px, Moduleintraege 13 px / 32 px hoch. Version 1.5.2. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -26,6 +26,8 @@ interface DashboardState {
|
||||
updateLayouts: (layouts: Record<string, unknown>) => void;
|
||||
addWidget: (widgetType: WidgetType) => Promise<void>;
|
||||
removeWidget: (id: string) => Promise<void>;
|
||||
/** Teil-Konfiguration eines Widgets setzen — sofort sichtbar, bei Fehler zurueck. */
|
||||
setWidgetConfig: (id: string, partial: Record<string, unknown>) => Promise<void>;
|
||||
loadDashboard: () => Promise<void>;
|
||||
saveLayout: () => Promise<void>;
|
||||
selectDashboard: (id: string) => Promise<void>;
|
||||
@@ -159,6 +161,22 @@ export const useDashboardStore = create<DashboardState>()((set, get) => ({
|
||||
}
|
||||
},
|
||||
|
||||
setWidgetConfig: async (id: string, partial: Record<string, unknown>) => {
|
||||
const before = get().widgets.find((w) => w.id === id)?.config;
|
||||
if (!before) return;
|
||||
const patch = (config: Record<string, unknown>) =>
|
||||
set((state) => ({
|
||||
widgets: state.widgets.map((w) => (w.id === id ? { ...w, config } : w)),
|
||||
}));
|
||||
patch({ ...before, ...partial });
|
||||
try {
|
||||
await api.updateWidgetConfig(id, partial);
|
||||
} catch (err) {
|
||||
console.error('Failed to update widget config:', err);
|
||||
patch(before);
|
||||
}
|
||||
},
|
||||
|
||||
loadDashboard: async () => {
|
||||
set({ isLoading: true, error: null });
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user