feat: Enhance MegaMenu with localization, caching, and new properties
- Added localization support for loading states, empty navigation, and submenu actions in both German and English. - Introduced new properties in IMenuItem for description, openInNewWindow, and external links. - Updated SPTermStorePickerService to handle cache versioning and language-specific caching. - Implemented a new MegaMenuCore service for handling term properties, cache management, and navigation URL resolution. - Refactored TaxonomyNavigationService to build menu hierarchy and filter hidden terms. - Added automated tests for MegaMenu core functionalities and static asset validation. - Removed unused ItemDictionary service. - Created a comprehensive ToDo document outlining the implementation status and future tasks.
This commit is contained in:
59
ToDo.md
Normal file
59
ToDo.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# MegaMenu – Arbeitsplan Version 2.2
|
||||
|
||||
Status: Implementierung abgeschlossen; Ship-Build auf der vorgesehenen Node-8-Buildumgebung ausstehend
|
||||
|
||||
## Funktionsumfang
|
||||
|
||||
- [x] Mobile Navigation als Hamburger-Menü mit aufklappbaren Unterebenen umsetzen.
|
||||
- [x] Hover als Komfortfunktion beibehalten; Bedienung per Klick, Touch und Tastatur gleichwertig unterstützen.
|
||||
- [x] Für Menüpunkte mit Ziel und Unterpunkten eine getrennte Öffnen-Schaltfläche anbieten.
|
||||
- [x] Navigations-URLs validieren und unsichere Protokolle blockieren.
|
||||
- [x] Externe Links und `MegaMenu.OpenInNewWindow` sicher unterstützen.
|
||||
- [x] Lade-, Leer- und Fehlerzustände verständlich und barrierearm darstellen.
|
||||
|
||||
## Lokale Term-Eigenschaften
|
||||
|
||||
- [x] `MegaMenu.Hidden` zum gezielten Ausblenden eines Terms unterstützen.
|
||||
- [x] `MegaMenu.OpenInNewWindow` für ein neues Browserfenster unterstützen.
|
||||
- [x] `MegaMenu.Description` als optionale Linkbeschreibung unterstützen.
|
||||
- [x] Eigenschaften in Modern und Classic identisch auswerten.
|
||||
|
||||
Die Eigenschaften werden im Term Store als lokale benutzerdefinierte Eigenschaften am jeweiligen Term gepflegt. Styling bleibt Aufgabe der Solution Custom Branding.
|
||||
|
||||
## Cache
|
||||
|
||||
- [x] Cache-Schlüssel um Site Collection, Sprache und Schemaversion erweitern.
|
||||
- [x] Konfigurierbare `cacheVersion` zur administrativen Invalidierung ergänzen.
|
||||
- [x] Abgelaufene und ungültige Cache-Einträge sicher entfernen.
|
||||
- [x] Bei einem temporären Taxonomy-Fehler auf den letzten vorhandenen Cache zurückfallen.
|
||||
|
||||
## Mehrsprachigkeit
|
||||
|
||||
- [x] Sämtliche sichtbaren Status- und ARIA-Texte lokalisieren.
|
||||
- [x] Bevorzugtes Term-Label anhand der aktuellen SharePoint-Sprache verwenden.
|
||||
- [x] Cache nach Sprache trennen.
|
||||
- [x] Deutsche und englische Ressourcen pflegen.
|
||||
|
||||
## Barrierefreiheit
|
||||
|
||||
- [x] Semantische Schaltflächen für das Öffnen von Untermenüs verwenden.
|
||||
- [x] Vollständige Tastaturbedienung inklusive Pfeiltasten und Escape sicherstellen.
|
||||
- [x] Fokus beim Öffnen und Schließen nachvollziehbar führen.
|
||||
- [x] Mobile Accordion-Zustände über `aria-expanded` kommunizieren.
|
||||
- [x] Fokusdarstellung, Hochkontrast und reduzierte Bewegung berücksichtigen.
|
||||
|
||||
## Qualitätssicherung
|
||||
|
||||
- [x] Automatisierte Tests für URL-Validierung und externe Links ergänzen.
|
||||
- [x] Automatisierte Tests für lokale Term-Eigenschaften ergänzen.
|
||||
- [x] Automatisierte Tests für Cache-Schlüssel und Cache-Verhalten ergänzen.
|
||||
- [x] Automatisierte Tests für Hierarchie, Sortierung und aktive URLs ergänzen.
|
||||
- [x] TypeScript-, Classic-Syntax-, Classic-Build- und statische Asset-Prüfungen ausführen.
|
||||
- [ ] `npm run package` mit Node.js 8.17.0 auf der vorgesehenen Buildumgebung ausführen.
|
||||
|
||||
Der lokale SPFx-Gulp-Build wurde mit Node.js 24 gestartet und erwartungsgemäß durch die alte Gulp-3-Abhängigkeit mit `primordials is not defined` beendet. Das ist kein TypeScript- oder Projektfehler; SPFx 1.4.1 benötigt für diesen Schritt Node.js 8.17.0.
|
||||
|
||||
## Nicht Bestandteil dieses Durchlaufs
|
||||
|
||||
- [ ] PortalSettings in Version 3 als SPFx-Webpart neu aufbauen.
|
||||
- [ ] MegaMenu-Diagnose und Live-Vorschau in PortalSettings integrieren.
|
||||
Reference in New Issue
Block a user