Merge branch 'theme-html-tags' into 'master'

[ADD] Theme html tags

See merge request allianceauth/allianceauth!1642
This commit is contained in:
Ariel Rin 2024-08-21 04:59:18 +00:00
commit de9d2b39a6
5 changed files with 18 additions and 6 deletions

View File

@ -27,6 +27,7 @@ class BootstrapThemeHook(ThemeHook):
self, self,
"Bootstrap", "Bootstrap",
"Powerful, extensible, and feature-packed frontend toolkit.", "Powerful, extensible, and feature-packed frontend toolkit.",
html_tags={"data-theme": "bootstrap"},
css=CSS_STATICS, css=CSS_STATICS,
js=JS_STATICS, js=JS_STATICS,
header_padding="3.5em" header_padding="3.5em"
@ -44,9 +45,9 @@ class BootstrapDarkThemeHook(ThemeHook):
self, self,
"Bootstrap Dark", "Bootstrap Dark",
"Powerful, extensible, and feature-packed frontend toolkit.", "Powerful, extensible, and feature-packed frontend toolkit.",
html_tags={"data-theme": "bootstrap-dark"},
css=CSS_STATICS, css=CSS_STATICS,
js=JS_STATICS, js=JS_STATICS,
html_tags="data-bs-theme=dark",
header_padding="3.5em" header_padding="3.5em"
) )

View File

@ -13,6 +13,7 @@ class DarklyThemeHook(ThemeHook):
self, self,
"Darkly", "Darkly",
"Flatly in night mode!", "Flatly in night mode!",
html_tags={"data-theme": "darkly"},
css=[{ css=[{
"url": "https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.3.3/darkly/bootstrap.min.css", "url": "https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.3.3/darkly/bootstrap.min.css",
"integrity": "sha512-HDszXqSUU0om4Yj5dZOUNmtwXGWDa5ppESlX98yzbBS+z+3HQ8a/7kcdI1dv+jKq+1V5b01eYurE7+yFjw6Rdg==" "integrity": "sha512-HDszXqSUU0om4Yj5dZOUNmtwXGWDa5ppESlX98yzbBS+z+3HQ8a/7kcdI1dv+jKq+1V5b01eYurE7+yFjw6Rdg=="

View File

@ -13,6 +13,7 @@ class FlatlyThemeHook(ThemeHook):
self, self,
"Flatly", "Flatly",
"Flat and modern!", "Flat and modern!",
html_tags={"data-theme": "flatly"},
css=[{ css=[{
"url": "https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.3.3/flatly/bootstrap.min.css", "url": "https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.3.3/flatly/bootstrap.min.css",
"integrity": "sha512-qoT4KwnRpAQ9uczPsw7GunsNmhRnYwSlE2KRCUPRQHSkDuLulCtDXuC2P/P6oqr3M5hoGagUG9pgHDPkD2zCDA==" "integrity": "sha512-qoT4KwnRpAQ9uczPsw7GunsNmhRnYwSlE2KRCUPRQHSkDuLulCtDXuC2P/P6oqr3M5hoGagUG9pgHDPkD2zCDA=="

View File

@ -1,10 +1,10 @@
from typing import List, Optional from typing import List, Optional, Union
class ThemeHook: class ThemeHook:
""" """
Theme hook for injecting a Bootstrap 5 Theme and associated JS into alliance auth. Theme hook for injecting a Bootstrap 5 Theme and associated JS into alliance auth.
these can be local or CDN delivered These can be local or CDN delivered.
""" """
def __init__(self, def __init__(self,
@ -14,7 +14,7 @@ class ThemeHook:
js: List[dict], js: List[dict],
css_template: Optional[str] = None, css_template: Optional[str] = None,
js_template: Optional[str] = None, js_template: Optional[str] = None,
html_tags: Optional[str] = "", html_tags: Optional[Union[dict, str]] = None,
header_padding: Optional[str] = "4em"): header_padding: Optional[str] = "4em"):
""" """
:param name: Theme python name :param name: Theme python name
@ -29,6 +29,10 @@ class ThemeHook:
:type css_template: Optional[str], optional :type css_template: Optional[str], optional
:param js_template: _description_, defaults to None :param js_template: _description_, defaults to None
:type js_template: Optional[str], optional :type js_template: Optional[str], optional
:param html_tags: Attributes added to the `<html>` tag, defaults to None
:type html_tags: Optional[dict|str], optional
:param header_padding: Top padding, defaults to "4em"
:type header_padding: Optional[str], optional
""" """
self.name = name self.name = name
self.description = description self.description = description
@ -41,7 +45,11 @@ class ThemeHook:
self.css_template = css_template self.css_template = css_template
self.js_template = js_template self.js_template = js_template
self.html_tags = html_tags self.html_tags = (
" ".join([f"{key}={value}" for key, value in html_tags.items()])
if isinstance(html_tags, dict)
else html_tags
)
self.header_padding = header_padding self.header_padding = header_padding
def get_name(self): def get_name(self):
return f"{self.__class__.__module__}.{self.__class__.__name__}" return f"{self.__class__.__module__}.{self.__class__.__name__}"

View File

@ -13,6 +13,7 @@ class MateriaThemeHook(ThemeHook):
self, self,
"Materia", "Materia",
"Material is the metaphor", "Material is the metaphor",
html_tags={"data-theme": "materia"},
css=[{ css=[{
"url": "https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.3.3/materia/bootstrap.min.css", "url": "https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.3.3/materia/bootstrap.min.css",
"integrity": "sha512-2S9Do+uTmZmmJpdmAcOKdUrK/YslcvAuRfIF2ws8+BW9AvZXMRZM+o8Wq+PZrfISD6ZlIaeCWWZAdeprXIoYuQ==" "integrity": "sha512-2S9Do+uTmZmmJpdmAcOKdUrK/YslcvAuRfIF2ws8+BW9AvZXMRZM+o8Wq+PZrfISD6ZlIaeCWWZAdeprXIoYuQ=="