feat: improve memo editing workflow
ci / gitleaks (push) Successful in 45s
ci / docker (push) Successful in 7m16s

This commit is contained in:
2026-09-14 17:59:23 +08:00
parent 31c2218edc
commit 4e8045159f
12 changed files with 1398 additions and 90 deletions
+27
View File
@@ -0,0 +1,27 @@
import { describe, expect, it } from 'vitest'
import { deriveMemoShellState } from './app-shell-state'
describe('deriveMemoShellState', () => {
it('switches background inertness and FAB visibility across responsive memo states', () => {
expect(deriveMemoShellState({ view: 'memos', detailOpen: true, compact: false, trash: false })).toEqual({
backgroundInert: false,
showFab: false,
})
expect(deriveMemoShellState({ view: 'memos', detailOpen: true, compact: true, trash: false })).toEqual({
backgroundInert: true,
showFab: false,
})
expect(deriveMemoShellState({ view: 'memos', detailOpen: false, compact: true, trash: false })).toEqual({
backgroundInert: false,
showFab: true,
})
expect(deriveMemoShellState({ view: 'memos', detailOpen: false, compact: true, trash: true })).toEqual({
backgroundInert: false,
showFab: false,
})
expect(deriveMemoShellState({ view: 'tasks', detailOpen: true, compact: true, trash: true })).toEqual({
backgroundInert: false,
showFab: true,
})
})
})
+14
View File
@@ -0,0 +1,14 @@
export type MemoShellStateInput = {
view: string
detailOpen: boolean
compact: boolean
trash: boolean
}
export function deriveMemoShellState(input: MemoShellStateInput) {
const isMemoView = input.view === 'memos'
return {
backgroundInert: isMemoView && input.detailOpen && input.compact,
showFab: !isMemoView || (!input.trash && !input.detailOpen),
}
}