fix(chess): preserve RulesDrawer scroll position on toggle
This commit is contained in:
parent
7e040c0f27
commit
0f1cb4ff34
1 changed files with 7 additions and 5 deletions
|
|
@ -15,11 +15,13 @@ import { PRESET_REGISTRY } from '../presets/index.js';
|
||||||
*/
|
*/
|
||||||
export function RulesDrawer() {
|
export function RulesDrawer() {
|
||||||
const [open, setOpen] = useState(false);
|
const [open, setOpen] = useState(false);
|
||||||
// Force-refresh trigger. The registry itself has no event emitter so we
|
// Force-refresh trigger. The registry itself has no event emitter, so we
|
||||||
// re-read on every open and every toggle click.
|
// bump this counter on every open and every toggle click to re-read the
|
||||||
const [tick, setTick] = useState(0);
|
// active set. The value is never read directly — only the setter is used
|
||||||
|
// to trigger a re-render of this component.
|
||||||
|
const [, setTick] = useState(0);
|
||||||
|
|
||||||
// Re-read active set on every open/close so external changes reflect.
|
// Re-read active set on every open so external changes reflect.
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (open) setTick((t) => t + 1);
|
if (open) setTick((t) => t + 1);
|
||||||
}, [open]);
|
}, [open]);
|
||||||
|
|
@ -95,7 +97,7 @@ export function RulesDrawer() {
|
||||||
</button>
|
</button>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div className="flex-1 overflow-y-auto p-5 space-y-3" key={tick}>
|
<div className="flex-1 overflow-y-auto p-5 space-y-3">
|
||||||
{presets.map((preset) => {
|
{presets.map((preset) => {
|
||||||
const isOn = activeIds.has(preset.id);
|
const isOn = activeIds.has(preset.id);
|
||||||
const blockedBy = preset.incompatibleWith.filter((id) =>
|
const blockedBy = preset.incompatibleWith.filter((id) =>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue