Horizon should support multiple theme configurations
Currently, the theme can be changed through local_settings.py and is only a single value. This allows for only a single theme to be used while Horizon is running. Many times, a user will want to change a theme dynamically, through the front end. Some use cases of this are the ability to toggle between a light and dark theme, or the ability to turn on a high contrast theme for accessibility reasons. Therefore, it would be beneficial for customization to allow a configuration that supports multiple dynamic themes.
I believe that we may be able to turn the custom theme variable into a tuple, to support multiple configured themes at once. Once in a tuple, we can 'build' multiple theme by wrapping the compress tag with a for loop.
Right now, the theme structure does not currently support building multiple themes, as it has no idea WHAT theme it is building, but only that is it located at /static/custom. Some change around this logic will need to occur to push the actual theme name through the compression loop and into the
This work can be split into two patches:
1. Pull CSS by theme name
2. Angular directive to show available themes and select desired theme
Blueprint information
- Status:
- Complete
- Approver:
- David Lyle
- Priority:
- Low
- Drafter:
- Kelly Domico
- Direction:
- Approved
- Assignee:
- Diana Whitten
- Definition:
- Approved
- Series goal:
- None
- Implementation:
-
Implemented
- Milestone target:
-
mitaka-3
- Started by
- Diana Whitten
- Completed by
- David Lyle
Related branches
Related bugs
Sprints
Whiteboard
Gerrit topic: https:/
Addressed by: https:/
Context Picker should inherit BS dropdown styles
Addressed by: https:/
'material' checkmark is visible in responsive menu
Addressed by: https:/
Style: Material Design: navbar inherit colors
Addressed by: https:/
Material: Better Inverse Dropdown Header Color
Addressed by: https:/
WIP Dynamic Themes
Addressed by: https:/
Provide an integration test for dynamic themes
Gerrit topic: https:/
Gerrit topic: https:/
Addressed by: https:/
Default theme lacks support for dropup menus
Addressed by: https:/
Datepicker should inherit from theme
Gerrit topic: https:/
Gerrit topic: https:/