feat(topbar): 语言按钮前加主题切换+最小化窗口按钮(参考sage)
- 主题按钮:dark/light切换,localStorage持久化,刷新恢复;图标随主题变 - 最小化窗口按钮:bricks.app.show_windows_panel(app-dock.svg图标) - theme_toggle.js:页面加载恢复主题+同步图标(注册any权限,防401渲染中断) - merge_i18n补两按钮tip词条
This commit is contained in:
parent
f750f024f9
commit
4ef2825b59
@ -32,3 +32,5 @@ Submit: Submit
|
||||
营销产线: Marketing Pipeline
|
||||
运维产线(面向FOMS)规划中,尚未开发: Operations Pipeline (for FOMS) is planned, not yet developed
|
||||
营销产线规划中,尚未开发: Marketing Pipeline is planned, not yet developed
|
||||
切换主题: Toggle theme
|
||||
显示所有已最小化的窗口: Show all minimized windows
|
||||
|
||||
@ -32,3 +32,5 @@ Submit: 送信
|
||||
营销产线: マーケティングパイプライン
|
||||
运维产线(面向FOMS)规划中,尚未开发: 運用パイプライン(FOMS向け)は計画中で、まだ開発されていません
|
||||
营销产线规划中,尚未开发: マーケティングパイプラインは計画中で、まだ開発されていません
|
||||
切换主题: テーマ切替
|
||||
显示所有已最小化的窗口: 最小化されたすべてのウィンドウを表示
|
||||
|
||||
@ -32,3 +32,5 @@ Submit: 제출
|
||||
营销产线: 마케팅 파이프라인
|
||||
运维产线(面向FOMS)规划中,尚未开发: 운영 파이프라인(FOMS 대상)은 계획 중이며 아직 개발되지 않았습니다
|
||||
营销产线规划中,尚未开发: 마케팅 파이프라인은 계획 중이며 아직 개발되지 않았습니다
|
||||
切换主题: 테마 전환
|
||||
显示所有已最小化的窗口: 최소화된 모든 창 표시
|
||||
|
||||
@ -32,3 +32,5 @@ Submit: Submit
|
||||
营销产线: 营销产线
|
||||
运维产线(面向FOMS)规划中,尚未开发: 运维产线(面向FOMS)规划中,尚未开发
|
||||
营销产线规划中,尚未开发: 营销产线规划中,尚未开发
|
||||
切换主题: 切换主题
|
||||
显示所有已最小化的窗口: 显示所有已最小化的窗口
|
||||
|
||||
@ -55,6 +55,7 @@ PERMS = [
|
||||
("/index.ui", "app", "any"),
|
||||
("/todo_badge.js", "app", "any"),
|
||||
("/index_tab.js", "app", "any"),
|
||||
("/theme_toggle.js", "app", "any"),
|
||||
("/pipeline-sdlc/index.ui", "pipeline_sdlc", "any"),
|
||||
("/pipeline_core/index.ui", "pipeline_core", "any"),
|
||||
("/pipeline_ops/index.ui", "pipeline_ops", "any"),
|
||||
|
||||
@ -273,5 +273,7 @@
|
||||
"🎤 KTV": "🎤 KTV",
|
||||
"🎬 MTV": "🎬 MTV",
|
||||
"🎵 音乐": "🎵 Music",
|
||||
"📱 短视频": "📱 Short Video"
|
||||
"📱 短视频": "📱 Short Video",
|
||||
"切换主题": "Toggle theme",
|
||||
"显示所有已最小化的窗口": "Show all minimized windows"
|
||||
}
|
||||
@ -273,5 +273,7 @@
|
||||
"🎤 KTV": "🎤 KTV",
|
||||
"🎬 MTV": "🎬 MTV",
|
||||
"🎵 音乐": "🎵 音楽",
|
||||
"📱 短视频": "📱 ショート動画"
|
||||
"📱 短视频": "📱 ショート動画",
|
||||
"切换主题": "テーマ切替",
|
||||
"显示所有已最小化的窗口": "最小化されたすべてのウィンドウを表示"
|
||||
}
|
||||
@ -273,5 +273,7 @@
|
||||
"🎤 KTV": "🎤 KTV",
|
||||
"🎬 MTV": "🎬 MTV",
|
||||
"🎵 音乐": "🎵 음악",
|
||||
"📱 短视频": "📱 숏폼 영상"
|
||||
"📱 短视频": "📱 숏폼 영상",
|
||||
"切换主题": "테마 전환",
|
||||
"显示所有已最小化的窗口": "최소화된 모든 창 표시"
|
||||
}
|
||||
@ -95,5 +95,7 @@
|
||||
"🎤 KTV": "🎤 KTV",
|
||||
"🎬 MTV": "🎬 MTV",
|
||||
"🎵 音乐": "🎵 音乐",
|
||||
"📱 短视频": "📱 短视频"
|
||||
"📱 短视频": "📱 短视频",
|
||||
"切换主题": "切换主题",
|
||||
"显示所有已最小化的窗口": "显示所有已最小化的窗口"
|
||||
}
|
||||
@ -51,6 +51,48 @@
|
||||
{
|
||||
"widgettype": "Filler"
|
||||
},
|
||||
{
|
||||
"widgettype": "Button",
|
||||
"id": "theme_toggle_btn",
|
||||
"options": {
|
||||
"label": "🌙",
|
||||
"css": "text",
|
||||
"width": "36px",
|
||||
"height": "36px",
|
||||
"borderRadius": "50%",
|
||||
"border": "1px solid #475569",
|
||||
"bgcolor": "transparent",
|
||||
"cfontsize": 1.1,
|
||||
"tip": "切换主题"
|
||||
},
|
||||
"binds": [
|
||||
{
|
||||
"wid": "self",
|
||||
"event": "click",
|
||||
"actiontype": "script",
|
||||
"target": "self",
|
||||
"script": "var h=document.documentElement;var t=h.getAttribute('data-theme')||'light';var n=t=='light'?'dark':'light';h.setAttribute('data-theme',n);try{localStorage.setItem('pipeline_ui_theme',n);}catch(e){}if(window.applyPipelineTheme){window.applyPipelineTheme(n);}"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"widgettype": "Svg",
|
||||
"options": {
|
||||
"css": "clickable",
|
||||
"rate": 2,
|
||||
"tip": "显示所有已最小化的窗口",
|
||||
"url": "{{entire_url('/bricks/imgs/app-dock.svg')}}"
|
||||
},
|
||||
"binds": [
|
||||
{
|
||||
"wid": "self",
|
||||
"event": "click",
|
||||
"actiontype": "script",
|
||||
"target": "app",
|
||||
"script": "bricks.app.show_windows_panel(event)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"widgettype": "urlwidget",
|
||||
"options": {
|
||||
|
||||
27
wwwroot/theme_toggle.js
Normal file
27
wwwroot/theme_toggle.js
Normal file
@ -0,0 +1,27 @@
|
||||
/* 顶栏主题切换:页面加载时恢复上次主题 + 同步按钮图标
|
||||
约定:light 主题显示 🌙(点击切暗),dark 主题显示 ☀️(点击切亮) */
|
||||
(function(){
|
||||
if (typeof bricks === 'undefined') return;
|
||||
var KEY = 'pipeline_ui_theme';
|
||||
|
||||
function applyTheme(t){
|
||||
document.documentElement.setAttribute('data-theme', t);
|
||||
var btn = bricks.getWidgetById('theme_toggle_btn', bricks.app);
|
||||
if (btn && btn.dom_element){
|
||||
btn.opts.label = (t === 'light') ? '🌙' : '☀️';
|
||||
btn.dom_element.textContent = btn.opts.label;
|
||||
}
|
||||
}
|
||||
window.applyPipelineTheme = applyTheme;
|
||||
|
||||
function _start(){
|
||||
if (bricks.app && bricks.getWidgetById){
|
||||
var t = null;
|
||||
try { t = localStorage.getItem(KEY); } catch(e) {}
|
||||
applyTheme(t || 'light');
|
||||
} else {
|
||||
setTimeout(_start, 300);
|
||||
}
|
||||
}
|
||||
setTimeout(_start, 300);
|
||||
})();
|
||||
Loading…
x
Reference in New Issue
Block a user