diff options
| author | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-03-10 10:05:50 +0900 |
|---|---|---|
| committer | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-03-10 10:05:50 +0900 |
| commit | 4df9083bf04b72f59b9cb09334c89412e8cb296c (patch) | |
| tree | b9f4de12587e97d1d6080e672af37eae4d04d99e /packages/frontend/src/directives | |
| parent | fix(frontend, dev): storybookのビルドエラー修正のため、as構文... (diff) | |
| download | misskey-4df9083bf04b72f59b9cb09334c89412e8cb296c.tar.gz misskey-4df9083bf04b72f59b9cb09334c89412e8cb296c.tar.bz2 misskey-4df9083bf04b72f59b9cb09334c89412e8cb296c.zip | |
fix(frontend): テーマ切り替え時に一部の色が変わらない問題を修正
Diffstat (limited to 'packages/frontend/src/directives')
| -rw-r--r-- | packages/frontend/src/directives/adaptive-border.ts | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/packages/frontend/src/directives/adaptive-border.ts b/packages/frontend/src/directives/adaptive-border.ts index af7deb5960..8072a1ffd9 100644 --- a/packages/frontend/src/directives/adaptive-border.ts +++ b/packages/frontend/src/directives/adaptive-border.ts @@ -5,17 +5,32 @@ import type { Directive } from 'vue'; import { getBgColor } from '@/utility/get-bg-color.js'; +import { globalEvents } from '@/events.js'; + +const handlerMap = new WeakMap<any, any>(); export default { mounted(src, binding, vn) { - const parentBg = getBgColor(src.parentElement) ?? 'transparent'; + function calc() { + const parentBg = getBgColor(src.parentElement) ?? 'transparent'; - const myBg = window.getComputedStyle(src).backgroundColor; + const myBg = window.getComputedStyle(src).backgroundColor; - if (parentBg === myBg) { - src.style.borderColor = 'var(--MI_THEME-divider)'; - } else { - src.style.borderColor = myBg; + if (parentBg === myBg) { + src.style.borderColor = 'var(--MI_THEME-divider)'; + } else { + src.style.borderColor = myBg; + } } + + handlerMap.set(src, calc); + + calc(); + + globalEvents.on('themeChanged', calc); + }, + + unmounted(src, binding, vn) { + globalEvents.off('themeChanged', handlerMap.get(src)); }, } as Directive; |