feat: add main plugins drawer with tabs (MIN-232)
Closes MIN-232
Objective
Implement interactive plugin drawer with tabs, header, content and reloading function
What has been done:
- plugins drawer
- plugins drawer tabs (this element controls
currentPluginHash
) - plugins drawer header (here current plugin name is rendered, along with reload plugin button)
- plugins drawer content (here plugins contents wrapper is rendered, its controlled via PluginsManager; important info for reviewers: all plugins elements are manually placed inside div#plugins element and hidden/showed with use of CSS to prevent manipulating unstable DOM)
- plugins drawer open plugin button (used to add new PUBLIC plugins easily)
- PluginsManager - extracted business logic of creating/getting/removing plugin content elements to different methods (no docs added as this is only an internal function, also there's no similar func in the original app)
- Plugins drawer handling in Redux
- unit tests
IMPORTANT:
In the video you can see that plugins list is not working correctly (there are some duplicated) but that's intentional (FOR VIDEO PURPOSES) as we still don't have public list of working plugins, I needed to mock them. But at the same time we need to communicate init of single plugin via backend which is returning different data than our mocked local app and that causes a problem.
Edited by Adrian Orłów