Add panel mode toggle to reader settings menu

Add a checkbox menu item to the demo reader's settings menu that
allows users to toggle panel detection mode on or off.

Implementation details:
- Adds "Panel Mode" checkbox to existing settings menu
- Uses the createMenu API with type="checkbox"
- Safely checks for togglePanelMode method availability
- Checks current panel-mode state before toggling
- Properly enables/disables panel mode via attribute API

User-facing behavior:
- Click gear icon → settings menu appears
- Check/uncheck "Panel Mode" to enable/disable
- Works seamlessly with existing layout options
- Only active when viewing fixed-layout content

This change only affects the demo reader (reader.html + reader.js),
not the foliate-js library itself. The library's panel detection
API in fixed-layout.js remains unchanged.

The panel mode toggle provides easy access to the new panel
navigation features for testing and demonstration purposes.
This commit is contained in:
2026-04-13 16:51:11 -04:00
parent 3373506ed2
commit 6d37470814
+18
View File
@@ -101,6 +101,24 @@ class Reader {
this.view?.renderer.setAttribute("flow", value); this.view?.renderer.setAttribute("flow", value);
}, },
}, },
{
name: "panel-mode",
label: "Panel Mode",
type: "checkbox",
checked: false,
onclick: () => {
// ← No 'value' parameter for checkbox
const renderer = this.view?.renderer;
if (!renderer?.togglePanelMode) return;
const isActive = renderer.hasAttribute("panel-mode");
if (isActive) {
renderer.removeAttribute("panel-mode");
} else {
renderer.togglePanelMode();
}
},
},
]); ]);
menu.element.classList.add("menu"); menu.element.classList.add("menu");