39ea1474a5
- Web: Union-Mitglied, Constraints, Icon, Registry-Eintrag, wire-Funktion, Katalog, Seiten-Verdrahtung, Tests und i18n (de/en) fuer den Typ link entfernt; link-widget.tsx/.test.tsx geloescht - API: create-widget.dto.ts (@IsIn-Liste) und widget-module-map.ts (Kommentare) auf sieben Typen angepasst; schema.prisma unveraendert - Neue Migration 20260916120000_remove_link_widget: eine idempotente DELETE-Anweisung auf WidgetInstance, FavoriteLink kaskadiert ueber den bestehenden FK; wird in diesem Auftrag NICHT ausgefuehrt - Neuer widget-wrapper-Test belegt den grauen Fallback fuer unbekannte Widget-Typen (Bestandsverhalten, jetzt festgeschrieben) - Handbuch (Widget-Tabelle, Einstellungs-Hinweise) und CHANGELOG (Geaendert/Entfernt/Behoben) aktualisiert - Web: 52 Dateien / 344 Tests gruen, tsc Exit 0; API: tsc Exit 0, dashboard-Spec 31 Tests gruen Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
17 lines
483 B
TypeScript
17 lines
483 B
TypeScript
import { IsIn, IsObject, IsOptional, IsString } from 'class-validator';
|
|
|
|
/**
|
|
* DTO for creating a new widget instance on a user's dashboard.
|
|
* widgetType must be one of the seven supported types.
|
|
* config is optional and defaults to {} on the model.
|
|
*/
|
|
export class CreateWidgetDto {
|
|
@IsString()
|
|
@IsIn(['clock', 'search', 'calendar', 'note', 'calculator', 'favorites', 'stopwatch'])
|
|
widgetType!: string;
|
|
|
|
@IsOptional()
|
|
@IsObject()
|
|
config?: Record<string, unknown>;
|
|
}
|