register/zlayer/anchor/motion/density are pure cores over plain data, so most of the suite runs with no DOM at all; jsdom covers only what is genuinely DOM. 100 tests, zero elements. These five are why v4 had 11 hand-built modals and 7 hand-built popovers: there was nothing shared to reuse. register makes an element exist only because a file defined it; portal gives every overlay one stacking parent; zlayer owns the only z-index in the app; dismiss keeps one stack so Escape pops the top and not the modal underneath; anchor measures, flips and clamps once. Three bugs the tests found: unmount() called removeChild on null when no portal existed yet, focusables() checked aria-hidden on the element instead of its ancestors so a hidden subtree stayed tab-reachable, and the density ratios v4 hand-tuned are now derived from the gap they were meant to allow for.
11 lines
421 B
JavaScript
11 lines
421 B
JavaScript
// Entry point. Increment 2: the kit's internals exist and the module graph
|
|
// loads; no elements are defined yet, so there is nothing to render.
|
|
|
|
import { entries } from "./composer/composer.js";
|
|
|
|
const count = [...entries()].length;
|
|
document.querySelector("#app").textContent =
|
|
count === 0
|
|
? "FunPack v5 — Composer internals loaded, no elements defined yet"
|
|
: `FunPack v5 — ${count} elements registered`;
|