Merge pull request #5580 from node-red/5577-extend-theme-plugin-support

Allow theme plugin to override settings and add menu options
pull/5581/head^2
Nick O'Leary 2026-03-23 15:27:22 +00:00 committed by GitHub
commit 675f44ed5c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 16 additions and 11 deletions

View File

@ -133,7 +133,7 @@ async function loadThemePlugin () {
}
// check and load page settings from theme
if (themePlugin.page) {
if (themePlugin.page.favicon && !theme.page.favicon) {
if (themePlugin.page.favicon) {
const result = serveFilesFromTheme(
[themePlugin.page.favicon],
themeApp,
@ -145,7 +145,7 @@ async function loadThemePlugin () {
themeContext.page.favicon = result[0]
}
}
if (themePlugin.page.tabicon && themePlugin.page.tabicon.icon && !theme.page.tabicon) {
if (themePlugin.page.tabicon && themePlugin.page.tabicon.icon) {
const result = serveFilesFromTheme(
[themePlugin.page.tabicon.icon],
themeApp,
@ -158,14 +158,13 @@ async function loadThemePlugin () {
themeContext.page.tabicon.colour = themeContext.page.tabicon.colour || themeContext.page.tabicon.colour
}
}
// if the plugin has a title AND the users settings.js does NOT
if (themePlugin.page.title && !theme.page.title) {
if (themePlugin.page.title) {
themeContext.page.title = themePlugin.page.title || themeContext.page.title
}
}
// check and load header settings from theme
if (themePlugin.header) {
if (themePlugin.header.image && !theme.header.image) {
if (themePlugin.header.image) {
const result = serveFilesFromTheme(
[themePlugin.header.image],
themeApp,
@ -176,17 +175,23 @@ async function loadThemePlugin () {
// update themeContext header image
themeContext.header.image = result[0]
}
} else if (themePlugin.header.image === false) {
themeContext.header.image = false
}
// if the plugin has a title AND the users settings.js does NOT have a title
if (themePlugin.header.title && !theme.header.title) {
themeContext.header.title = themePlugin.header.title || themeContext.header.title
// if the plugin has a title
if (themePlugin.header.hasOwnProperty('title')) {
themeContext.header.title = themePlugin.header.title
}
// if the plugin has a header url AND the users settings.js does NOT
if (themePlugin.header.url && !theme.header.url) {
themeContext.header.url = themePlugin.header.url || themeContext.header.url
// if the plugin has a header url
if (themePlugin.header.hasOwnProperty('url')) {
themeContext.header.url = themePlugin.header.url
}
}
if (themePlugin.menu) {
themeSettings.menu = Object.assign({}, themeSettings.menu, themePlugin.menu);
}
if (Array.isArray(themePlugin.palette?.theme)) {
themeSettings.palette = themeSettings.palette || {};
themeSettings.palette.theme = themePlugin.palette.theme;