feat(CdkMenu/CdkContextMenuTriggerFor): Allow CdkMenu to be programmatically opened/closed
- Vorherrschende Sprache
- TypeScript
- Sterne
- 25k
- Forks
- 6.8k
- Ø Merge
- 1 T. 8 Std.
- Gemergte PRs (30 T.)
- 91
Beschreibung
## Feature Description
### Current Behaviour
The directive `CdkMenu` is used with combination of `CdkContextMenuTriggerFor`. When user right-clicks (context-menu event), the menu gets opened and clicking on outside of the menu will close the menu.
### New Feature Requested
It would be great if user can manually/programmatically open/close the menu. And also disable closing the menu clicking outside.
#### Possible Solutions
1. Add a boolean input property `cdkContextMenuDisableCloseOnOutsideClick` - This will disable closing the `CdkMenu` on outside click
2. Add an event emitter property `cdkContextMenuTriggered` - This will emit everytime user right-clicks (context-menu event) with the coordinates
3. Add an event emitter property `cdkContextMenuClickedOutside` - This will emit everytime user clicks outside of the `CdkMenu`
### Use Case
This will allow users to handle animations with `CdkMenu` if they want to apply on open/close.
Beitragsleitfaden
Rechercherichtung
Beginnen Sie damit, die Directive-Einstiegspunkte CdkMenu und CdkContextMenuTriggerFor zu lesen und das vorhandene Verhalten zum Öffnen des Kontextmenüs und zum Schließen bei Klicks außerhalb nachzuverfolgen. Klären Sie die öffentliche API und die Ereignissemantik für das programmgesteuerte Öffnen/Schließen, das Deaktivieren des Schließens bei Klicks außerhalb sowie Benachrichtigungen über Kontextmenü-/Klicks außerhalb. Als erledigt gilt die Aufgabe, wenn das vereinbarte Verhalten implementiert und durch die relevanten Menütests abgedeckt ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- angular, typescript
- Bereich
- frontend
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100