30 lines
1.3 KiB
Markdown
30 lines
1.3 KiB
Markdown
# Data Model: Combatant Row Declutter
|
|
|
|
**Feature**: 019-combatant-row-declutter
|
|
**Date**: 2026-03-06
|
|
|
|
## No Data Model Changes
|
|
|
|
This feature is a purely visual/interaction refactor within the web adapter layer. No domain entities, application state, or persistence formats are affected.
|
|
|
|
### Existing entities (unchanged)
|
|
|
|
- **Combatant**: `id`, `name`, `initiative`, `maxHp`, `currentHp`, `ac`, `conditions`, `isConcentrating` — no fields added, removed, or modified.
|
|
|
|
### Existing callbacks (unchanged)
|
|
|
|
- `onAdjustHp(id: CombatantId, delta: number)` — same signature, now triggered from popover instead of inline QuickHpInput.
|
|
- `onSetAc(id: CombatantId, value: number | undefined)` — same signature, now triggered from click-to-edit instead of always-visible input.
|
|
|
|
### UI State (component-local only)
|
|
|
|
New component-local state introduced in the HP popover (not persisted):
|
|
- **popoverOpen**: boolean — whether the HP adjustment popover is visible.
|
|
- **inputValue**: string — the draft delta value in the popover input.
|
|
|
|
New component-local state in the AC click-to-edit (not persisted):
|
|
- **editing**: boolean — whether the inline AC edit input is visible.
|
|
- **draft**: string — the draft AC value being edited.
|
|
|
|
These follow the same patterns as existing component-local state (`EditableName.editing`, `ConditionPicker` open state).
|