drawer-kit
tests214 passing gzip4.21 kB licenseMIT
A focus-managed drawer primitive for the DOM you already have. No portal, no provider, no peer dependencies. Ships as one ES module; the whole trap logic is 180 lines you can read over coffee.
Install
# npm 10+
npm i drawer-kit
Usage
import { createDrawer } from "drawer-kit";
const drawer = createDrawer("#cart", {
returnFocus: true, // back to the trigger on Escape
lockScroll: "padded" // compensates scrollbar width
});
Focus is trapped with a sentinel pair, not a keydown walker, so it survives VoiceOver rotor jumps and Firefox caret browsing. Tested against 214 cases across Chromium and WebKit.
About
Accessible drawer & sheet primitive. 4.21 kB, zero dependencies.
a11yfocus-trapdrawervanilla-jstypescript
- Stars
- 4,382
- Forks
- 291
- Used by
- 2.1k
- Release
- v3.2.0 · Jun 28