@refrakt-md/behaviors 0.14.3 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/behaviors/drawer.d.ts +51 -0
- package/dist/behaviors/drawer.d.ts.map +1 -0
- package/dist/behaviors/drawer.js +392 -0
- package/dist/behaviors/drawer.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drawer behavior (SPEC-060, WORK-258).
|
|
3
|
+
*
|
|
4
|
+
* Progressive enhancement for `<section class="rf-drawer">` produced by the
|
|
5
|
+
* drawer rune (WORK-257). On init:
|
|
6
|
+
*
|
|
7
|
+
* 1. Replace the section with a `<dialog>`, preserving id and attributes so
|
|
8
|
+
* fragment navigation and `data-rune` queries still work.
|
|
9
|
+
* 2. Reveal the close button (the schema marks it `hidden` so the no-JS
|
|
10
|
+
* rendering doesn't show a non-functional control).
|
|
11
|
+
* 3. Wire every `a[data-target-type="drawer"]` whose href fragment matches
|
|
12
|
+
* this drawer's id — clicking intercepts navigation and opens the dialog.
|
|
13
|
+
* 4. Wire the close button, backdrop clicks, and `keyboard shortcut` if set.
|
|
14
|
+
* 5. URL hash sync: open on load if `location.hash` matches; update the
|
|
15
|
+
* hash via `replaceState` on open / clear it on close; close on
|
|
16
|
+
* `popstate` when the hash changes away.
|
|
17
|
+
*
|
|
18
|
+
* Esc-to-close, focus trap, and `inert` background come from native
|
|
19
|
+
* `<dialog>` semantics — the platform handles them, this module doesn't.
|
|
20
|
+
*
|
|
21
|
+
* The module keeps a per-document registry of enhanced drawers so the
|
|
22
|
+
* shortcut and popstate listeners run once globally instead of once per
|
|
23
|
+
* drawer. Cleanups remove listeners and (best-effort) restore the
|
|
24
|
+
* original `<section>` for HMR-style re-init scenarios.
|
|
25
|
+
*/
|
|
26
|
+
import type { CleanupFn } from '../types.js';
|
|
27
|
+
interface ParsedShortcut {
|
|
28
|
+
key: string;
|
|
29
|
+
cmd: boolean;
|
|
30
|
+
ctrl: boolean;
|
|
31
|
+
alt: boolean;
|
|
32
|
+
shift: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** Clear all per-document drawer state. Intended for tests — production
|
|
35
|
+
* code should rely on the cleanup function returned by `drawerBehavior`. */
|
|
36
|
+
export declare function __resetDrawerState(): void;
|
|
37
|
+
/** Parse a shortcut string into modifiers + key. Accepts forms like
|
|
38
|
+
* `"."`, `"k"`, `"cmd+k"`, `"shift+/"`, `"ctrl+alt+x"`. Returns null when
|
|
39
|
+
* the input is unparsable so the caller can drop it silently. */
|
|
40
|
+
export declare function parseShortcut(input: string): ParsedShortcut | null;
|
|
41
|
+
/**
|
|
42
|
+
* Drawer behavior — enhance one `[data-rune="drawer"]` element.
|
|
43
|
+
*
|
|
44
|
+
* The function detects the no-JS shape (a `<section>`), replaces it with
|
|
45
|
+
* a `<dialog>` carrying the same attributes (id, class, data-*), and
|
|
46
|
+
* registers the dialog with the per-document state so global listeners
|
|
47
|
+
* (shortcut, popstate) can act on it.
|
|
48
|
+
*/
|
|
49
|
+
export declare function drawerBehavior(el: HTMLElement): CleanupFn;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=drawer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../src/behaviors/drawer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQ7C,UAAU,cAAc;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CACf;AAiBD;6EAC6E;AAC7E,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AAED;;kEAEkE;AAClE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAalE;AA4BD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,WAAW,GAAG,SAAS,CAiIzD"}
|
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drawer behavior (SPEC-060, WORK-258).
|
|
3
|
+
*
|
|
4
|
+
* Progressive enhancement for `<section class="rf-drawer">` produced by the
|
|
5
|
+
* drawer rune (WORK-257). On init:
|
|
6
|
+
*
|
|
7
|
+
* 1. Replace the section with a `<dialog>`, preserving id and attributes so
|
|
8
|
+
* fragment navigation and `data-rune` queries still work.
|
|
9
|
+
* 2. Reveal the close button (the schema marks it `hidden` so the no-JS
|
|
10
|
+
* rendering doesn't show a non-functional control).
|
|
11
|
+
* 3. Wire every `a[data-target-type="drawer"]` whose href fragment matches
|
|
12
|
+
* this drawer's id — clicking intercepts navigation and opens the dialog.
|
|
13
|
+
* 4. Wire the close button, backdrop clicks, and `keyboard shortcut` if set.
|
|
14
|
+
* 5. URL hash sync: open on load if `location.hash` matches; update the
|
|
15
|
+
* hash via `replaceState` on open / clear it on close; close on
|
|
16
|
+
* `popstate` when the hash changes away.
|
|
17
|
+
*
|
|
18
|
+
* Esc-to-close, focus trap, and `inert` background come from native
|
|
19
|
+
* `<dialog>` semantics — the platform handles them, this module doesn't.
|
|
20
|
+
*
|
|
21
|
+
* The module keeps a per-document registry of enhanced drawers so the
|
|
22
|
+
* shortcut and popstate listeners run once globally instead of once per
|
|
23
|
+
* drawer. Cleanups remove listeners and (best-effort) restore the
|
|
24
|
+
* original `<section>` for HMR-style re-init scenarios.
|
|
25
|
+
*/
|
|
26
|
+
// Per-document state. The behavior is scoped to `document` rather than
|
|
27
|
+
// per-element because shortcuts + popstate are global concerns, and
|
|
28
|
+
// trigger anchors live anywhere on the page (not just inside the drawer).
|
|
29
|
+
const drawerRegistry = new Map();
|
|
30
|
+
const globalListenersAttached = new WeakSet();
|
|
31
|
+
function getRegistry(doc) {
|
|
32
|
+
let m = drawerRegistry.get(doc);
|
|
33
|
+
if (!m) {
|
|
34
|
+
m = new Map();
|
|
35
|
+
drawerRegistry.set(doc, m);
|
|
36
|
+
}
|
|
37
|
+
return m;
|
|
38
|
+
}
|
|
39
|
+
/** Clear all per-document drawer state. Intended for tests — production
|
|
40
|
+
* code should rely on the cleanup function returned by `drawerBehavior`. */
|
|
41
|
+
export function __resetDrawerState() {
|
|
42
|
+
for (const doc of drawerRegistry.keys()) {
|
|
43
|
+
doc.documentElement.classList.remove('rf-drawer-open');
|
|
44
|
+
}
|
|
45
|
+
drawerRegistry.clear();
|
|
46
|
+
}
|
|
47
|
+
/** Parse a shortcut string into modifiers + key. Accepts forms like
|
|
48
|
+
* `"."`, `"k"`, `"cmd+k"`, `"shift+/"`, `"ctrl+alt+x"`. Returns null when
|
|
49
|
+
* the input is unparsable so the caller can drop it silently. */
|
|
50
|
+
export function parseShortcut(input) {
|
|
51
|
+
const parts = input.split('+').map((p) => p.trim().toLowerCase()).filter(Boolean);
|
|
52
|
+
if (parts.length === 0)
|
|
53
|
+
return null;
|
|
54
|
+
const key = parts[parts.length - 1];
|
|
55
|
+
if (!key)
|
|
56
|
+
return null;
|
|
57
|
+
const mods = new Set(parts.slice(0, -1));
|
|
58
|
+
return {
|
|
59
|
+
key,
|
|
60
|
+
cmd: mods.has('cmd') || mods.has('meta'),
|
|
61
|
+
ctrl: mods.has('ctrl') || mods.has('control'),
|
|
62
|
+
alt: mods.has('alt') || mods.has('option'),
|
|
63
|
+
shift: mods.has('shift'),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/** True when the event matches the parsed shortcut. cmd and ctrl are
|
|
67
|
+
* intentionally collapsed — authors writing `cmd+k` mean "the platform's
|
|
68
|
+
* primary modifier", which is Cmd on macOS and Ctrl elsewhere. */
|
|
69
|
+
function shortcutMatches(parsed, ev) {
|
|
70
|
+
if (ev.key.toLowerCase() !== parsed.key)
|
|
71
|
+
return false;
|
|
72
|
+
// Allow either cmd OR ctrl when the shortcut requests one of them.
|
|
73
|
+
const primaryHeld = ev.metaKey || ev.ctrlKey;
|
|
74
|
+
const primaryNeeded = parsed.cmd || parsed.ctrl;
|
|
75
|
+
if (primaryNeeded && !primaryHeld)
|
|
76
|
+
return false;
|
|
77
|
+
if (!primaryNeeded && primaryHeld)
|
|
78
|
+
return false;
|
|
79
|
+
if (parsed.alt !== ev.altKey)
|
|
80
|
+
return false;
|
|
81
|
+
if (parsed.shift !== ev.shiftKey)
|
|
82
|
+
return false;
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
/** True when keyboard focus is in a form field or content-editable area;
|
|
86
|
+
* shortcuts skip these to avoid hijacking what the user is typing. */
|
|
87
|
+
function focusInTextInput(doc) {
|
|
88
|
+
const el = doc.activeElement;
|
|
89
|
+
if (!el)
|
|
90
|
+
return false;
|
|
91
|
+
const tag = el.tagName;
|
|
92
|
+
if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT')
|
|
93
|
+
return true;
|
|
94
|
+
if (el.isContentEditable)
|
|
95
|
+
return true;
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Drawer behavior — enhance one `[data-rune="drawer"]` element.
|
|
100
|
+
*
|
|
101
|
+
* The function detects the no-JS shape (a `<section>`), replaces it with
|
|
102
|
+
* a `<dialog>` carrying the same attributes (id, class, data-*), and
|
|
103
|
+
* registers the dialog with the per-document state so global listeners
|
|
104
|
+
* (shortcut, popstate) can act on it.
|
|
105
|
+
*/
|
|
106
|
+
export function drawerBehavior(el) {
|
|
107
|
+
const doc = el.ownerDocument;
|
|
108
|
+
if (!doc || !doc.defaultView)
|
|
109
|
+
return () => { };
|
|
110
|
+
const win = doc.defaultView;
|
|
111
|
+
// Enhancement step — replace the section with a dialog. If the element
|
|
112
|
+
// is already a <dialog> (re-init), skip the replacement and just reuse it.
|
|
113
|
+
const dialog = el instanceof win.HTMLDialogElement ? el : enhanceToDialog(el);
|
|
114
|
+
if (!dialog)
|
|
115
|
+
return () => { };
|
|
116
|
+
const id = dialog.id;
|
|
117
|
+
if (!id) {
|
|
118
|
+
// A drawer without an id can't be addressed — leave it as a styled
|
|
119
|
+
// inline section by not enhancing further. The schema enforces id,
|
|
120
|
+
// so this is a defensive branch.
|
|
121
|
+
return () => { };
|
|
122
|
+
}
|
|
123
|
+
// Reveal the close button — schema marks it hidden so the no-JS
|
|
124
|
+
// rendering doesn't show a non-functional control.
|
|
125
|
+
const closeBtn = dialog.querySelector('.rf-drawer__close');
|
|
126
|
+
if (closeBtn)
|
|
127
|
+
closeBtn.hidden = false;
|
|
128
|
+
const shortcutAttr = dialog.getAttribute('data-shortcut') ?? undefined;
|
|
129
|
+
const shortcut = shortcutAttr ? parseShortcut(shortcutAttr) ?? undefined : undefined;
|
|
130
|
+
const registry = getRegistry(doc);
|
|
131
|
+
if (registry.has(id)) {
|
|
132
|
+
// Two drawers with the same id on one page shouldn't happen — the
|
|
133
|
+
// register hook warns at build time — but if it does, defensively
|
|
134
|
+
// keep the first.
|
|
135
|
+
return () => { };
|
|
136
|
+
}
|
|
137
|
+
// Shortcut collision detection. The spec says last-registered wins;
|
|
138
|
+
// we still warn so authors notice.
|
|
139
|
+
if (shortcut) {
|
|
140
|
+
for (const other of registry.values()) {
|
|
141
|
+
if (other.shortcut && describeShortcut(other.shortcut) === describeShortcut(shortcut)) {
|
|
142
|
+
// eslint-disable-next-line no-console
|
|
143
|
+
console.warn(`[refrakt drawer] shortcut "${shortcutAttr}" is registered by drawers "${other.id}" and "${id}"; the later one wins.`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
registry.set(id, { dialog, id, shortcut });
|
|
148
|
+
const cleanups = [];
|
|
149
|
+
// ── Trigger interception ─────────────────────────────────────────
|
|
150
|
+
const fragment = `#${id}`;
|
|
151
|
+
const onTriggerClick = (ev) => {
|
|
152
|
+
ev.preventDefault();
|
|
153
|
+
openDrawer(dialog);
|
|
154
|
+
};
|
|
155
|
+
const triggers = [];
|
|
156
|
+
doc.querySelectorAll(`a[data-target-type="drawer"]`).forEach((link) => {
|
|
157
|
+
const href = link.getAttribute('href') ?? '';
|
|
158
|
+
if (href === fragment || href.endsWith(fragment)) {
|
|
159
|
+
link.addEventListener('click', onTriggerClick);
|
|
160
|
+
triggers.push(link);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
cleanups.push(() => {
|
|
164
|
+
for (const link of triggers)
|
|
165
|
+
link.removeEventListener('click', onTriggerClick);
|
|
166
|
+
});
|
|
167
|
+
// ── Close button ──────────────────────────────────────────────────
|
|
168
|
+
if (closeBtn) {
|
|
169
|
+
const onClose = () => closeDrawer(dialog);
|
|
170
|
+
closeBtn.addEventListener('click', onClose);
|
|
171
|
+
cleanups.push(() => closeBtn.removeEventListener('click', onClose));
|
|
172
|
+
}
|
|
173
|
+
// ── Backdrop click ────────────────────────────────────────────────
|
|
174
|
+
const onBackdropClick = (ev) => {
|
|
175
|
+
if (ev.target === dialog)
|
|
176
|
+
closeDrawer(dialog);
|
|
177
|
+
};
|
|
178
|
+
dialog.addEventListener('click', onBackdropClick);
|
|
179
|
+
cleanups.push(() => dialog.removeEventListener('click', onBackdropClick));
|
|
180
|
+
// ── Esc / native cancel — animate out instead of snapping shut ────
|
|
181
|
+
// `<dialog>` fires `cancel` when the user presses Esc. We preventDefault
|
|
182
|
+
// so the browser doesn't immediately call `close()` itself, then drive
|
|
183
|
+
// the close through our animated path.
|
|
184
|
+
const onCancel = (ev) => {
|
|
185
|
+
ev.preventDefault();
|
|
186
|
+
closeDrawer(dialog);
|
|
187
|
+
};
|
|
188
|
+
dialog.addEventListener('cancel', onCancel);
|
|
189
|
+
cleanups.push(() => dialog.removeEventListener('cancel', onCancel));
|
|
190
|
+
// ── Hash maintenance on natural close ─────────────────────────────
|
|
191
|
+
const onDialogClose = () => {
|
|
192
|
+
dialog.setAttribute('data-state', 'closed');
|
|
193
|
+
if (win.location.hash === fragment) {
|
|
194
|
+
win.history.replaceState(null, '', win.location.pathname + win.location.search);
|
|
195
|
+
}
|
|
196
|
+
// Lift the body-scroll lock once no other drawer is still open.
|
|
197
|
+
releaseBodyScrollLockIfIdle(doc);
|
|
198
|
+
};
|
|
199
|
+
dialog.addEventListener('close', onDialogClose);
|
|
200
|
+
cleanups.push(() => dialog.removeEventListener('close', onDialogClose));
|
|
201
|
+
// ── Hash deep-link on load ────────────────────────────────────────
|
|
202
|
+
// Use a microtask so the dialog is sure to be in the DOM and any sibling
|
|
203
|
+
// drawers have also had a chance to register (last drawer with the matching
|
|
204
|
+
// hash wins — duplicates would already have surfaced a build warning).
|
|
205
|
+
if (win.location.hash === fragment) {
|
|
206
|
+
win.queueMicrotask(() => {
|
|
207
|
+
if (!dialog.open)
|
|
208
|
+
openDrawer(dialog);
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
// ── Global listeners (attached once per document) ────────────────
|
|
212
|
+
if (!globalListenersAttached.has(doc)) {
|
|
213
|
+
globalListenersAttached.add(doc);
|
|
214
|
+
attachGlobalListeners(doc);
|
|
215
|
+
}
|
|
216
|
+
return () => {
|
|
217
|
+
for (const fn of cleanups)
|
|
218
|
+
fn();
|
|
219
|
+
registry.delete(id);
|
|
220
|
+
// Lift the body-scroll lock if no drawer remains active.
|
|
221
|
+
releaseBodyScrollLockIfIdle(doc);
|
|
222
|
+
// Leave global listeners attached — they no-op when the registry is empty.
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
function enhanceToDialog(el) {
|
|
226
|
+
const doc = el.ownerDocument;
|
|
227
|
+
if (!doc)
|
|
228
|
+
return null;
|
|
229
|
+
const dialog = doc.createElement('dialog');
|
|
230
|
+
// Copy attributes from the section to the dialog (id, class, data-*).
|
|
231
|
+
for (const attr of Array.from(el.attributes)) {
|
|
232
|
+
dialog.setAttribute(attr.name, attr.value);
|
|
233
|
+
}
|
|
234
|
+
// Move children.
|
|
235
|
+
while (el.firstChild)
|
|
236
|
+
dialog.appendChild(el.firstChild);
|
|
237
|
+
// Swap in the DOM.
|
|
238
|
+
if (el.parentNode)
|
|
239
|
+
el.parentNode.replaceChild(dialog, el);
|
|
240
|
+
dialog.setAttribute('data-state', 'closed');
|
|
241
|
+
return dialog;
|
|
242
|
+
}
|
|
243
|
+
function openDrawer(dialog) {
|
|
244
|
+
const doc = dialog.ownerDocument;
|
|
245
|
+
if (!doc || !doc.defaultView)
|
|
246
|
+
return;
|
|
247
|
+
const win = doc.defaultView;
|
|
248
|
+
// Close any other open drawer first. Native `<dialog>.showModal()`
|
|
249
|
+
// throws if another modal is open, so this is also a correctness
|
|
250
|
+
// requirement, not just UX polish.
|
|
251
|
+
const registry = drawerRegistry.get(doc);
|
|
252
|
+
if (registry) {
|
|
253
|
+
for (const other of registry.values()) {
|
|
254
|
+
if (other.dialog !== dialog && other.dialog.open) {
|
|
255
|
+
other.dialog.close();
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
if (!dialog.open) {
|
|
260
|
+
try {
|
|
261
|
+
dialog.showModal();
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
// Some environments (jsdom without explicit polyfill) may not
|
|
265
|
+
// implement showModal. Fall back to setting the `open` attribute
|
|
266
|
+
// so tests can still observe state changes.
|
|
267
|
+
dialog.setAttribute('open', '');
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
dialog.setAttribute('data-state', 'open');
|
|
271
|
+
applyBodyScrollLock(doc);
|
|
272
|
+
if (dialog.id) {
|
|
273
|
+
const fragment = `#${dialog.id}`;
|
|
274
|
+
if (win.location.hash !== fragment) {
|
|
275
|
+
win.history.replaceState(null, '', win.location.pathname + win.location.search + fragment);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/** Animation duration for the close transition. Mirrors
|
|
280
|
+
* `--rf-drawer-anim-duration` (220ms) in CSS — kept in JS as a fallback
|
|
281
|
+
* in case `animationend` doesn't fire (reduced motion, environments
|
|
282
|
+
* without real animations like jsdom). Slightly longer than the CSS
|
|
283
|
+
* value so the event has a chance to land first. */
|
|
284
|
+
const CLOSE_ANIMATION_FALLBACK_MS = 280;
|
|
285
|
+
function closeDrawer(dialog) {
|
|
286
|
+
if (!dialog.open)
|
|
287
|
+
return;
|
|
288
|
+
if (dialog.getAttribute('data-state') === 'closing')
|
|
289
|
+
return;
|
|
290
|
+
// Flip into the closing state — CSS picks up the slide-out keyframe
|
|
291
|
+
// animation off `[data-state="closing"]`. We then wait for the
|
|
292
|
+
// animation to land before actually calling `dialog.close()`, so the
|
|
293
|
+
// browser keeps painting the dialog (with its modal backdrop and top-
|
|
294
|
+
// layer placement) during the slide.
|
|
295
|
+
dialog.setAttribute('data-state', 'closing');
|
|
296
|
+
let finished = false;
|
|
297
|
+
const finish = () => {
|
|
298
|
+
if (finished)
|
|
299
|
+
return;
|
|
300
|
+
finished = true;
|
|
301
|
+
dialog.removeEventListener('animationend', onAnimationEnd);
|
|
302
|
+
if (fallbackTimer !== undefined)
|
|
303
|
+
clearTimeout(fallbackTimer);
|
|
304
|
+
try {
|
|
305
|
+
dialog.close();
|
|
306
|
+
}
|
|
307
|
+
catch {
|
|
308
|
+
dialog.removeAttribute('open');
|
|
309
|
+
}
|
|
310
|
+
// `data-state` is reset to `closed` by the `close` event listener
|
|
311
|
+
// on the dialog itself — same path the native dialog close uses.
|
|
312
|
+
};
|
|
313
|
+
const onAnimationEnd = (ev) => {
|
|
314
|
+
// Filter to the drawer's own animations so a child animation
|
|
315
|
+
// finishing (e.g. an embedded reveal) doesn't trigger close early.
|
|
316
|
+
if (ev.target !== dialog)
|
|
317
|
+
return;
|
|
318
|
+
if (ev.animationName && !ev.animationName.startsWith('rf-drawer-slide-out'))
|
|
319
|
+
return;
|
|
320
|
+
finish();
|
|
321
|
+
};
|
|
322
|
+
dialog.addEventListener('animationend', onAnimationEnd);
|
|
323
|
+
const fallbackTimer = setTimeout(finish, CLOSE_ANIMATION_FALLBACK_MS);
|
|
324
|
+
}
|
|
325
|
+
/** Body-scroll lock — set when any drawer is open, lifted when the last
|
|
326
|
+
* open drawer closes. Implemented as a class on `<html>` so themes can
|
|
327
|
+
* add additional rules (e.g. preserving scrollbar gutter) by extending
|
|
328
|
+
* the selector. */
|
|
329
|
+
function applyBodyScrollLock(doc) {
|
|
330
|
+
doc.documentElement.classList.add('rf-drawer-open');
|
|
331
|
+
}
|
|
332
|
+
function releaseBodyScrollLockIfIdle(doc) {
|
|
333
|
+
const registry = drawerRegistry.get(doc);
|
|
334
|
+
if (!registry) {
|
|
335
|
+
doc.documentElement.classList.remove('rf-drawer-open');
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
for (const record of registry.values()) {
|
|
339
|
+
if (record.dialog.open)
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
doc.documentElement.classList.remove('rf-drawer-open');
|
|
343
|
+
}
|
|
344
|
+
function describeShortcut(s) {
|
|
345
|
+
const parts = [];
|
|
346
|
+
if (s.cmd || s.ctrl)
|
|
347
|
+
parts.push('mod');
|
|
348
|
+
if (s.alt)
|
|
349
|
+
parts.push('alt');
|
|
350
|
+
if (s.shift)
|
|
351
|
+
parts.push('shift');
|
|
352
|
+
parts.push(s.key);
|
|
353
|
+
return parts.join('+');
|
|
354
|
+
}
|
|
355
|
+
function attachGlobalListeners(doc) {
|
|
356
|
+
const win = doc.defaultView;
|
|
357
|
+
if (!win)
|
|
358
|
+
return;
|
|
359
|
+
// ── Keyboard shortcut listener ────────────────────────────────────
|
|
360
|
+
const onKeydown = (ev) => {
|
|
361
|
+
if (focusInTextInput(doc))
|
|
362
|
+
return;
|
|
363
|
+
const registry = drawerRegistry.get(doc);
|
|
364
|
+
if (!registry)
|
|
365
|
+
return;
|
|
366
|
+
let match;
|
|
367
|
+
for (const record of registry.values()) {
|
|
368
|
+
if (record.shortcut && shortcutMatches(record.shortcut, ev)) {
|
|
369
|
+
// Last-registered wins (matches build warning policy).
|
|
370
|
+
match = record;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
if (!match)
|
|
374
|
+
return;
|
|
375
|
+
ev.preventDefault();
|
|
376
|
+
openDrawer(match.dialog);
|
|
377
|
+
};
|
|
378
|
+
doc.addEventListener('keydown', onKeydown);
|
|
379
|
+
// ── Popstate (back button) ────────────────────────────────────────
|
|
380
|
+
const onPopstate = () => {
|
|
381
|
+
const registry = drawerRegistry.get(doc);
|
|
382
|
+
if (!registry)
|
|
383
|
+
return;
|
|
384
|
+
for (const record of registry.values()) {
|
|
385
|
+
if (record.dialog.open && win.location.hash !== `#${record.id}`) {
|
|
386
|
+
closeDrawer(record.dialog);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
};
|
|
390
|
+
win.addEventListener('popstate', onPopstate);
|
|
391
|
+
}
|
|
392
|
+
//# sourceMappingURL=drawer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawer.js","sourceRoot":"","sources":["../../src/behaviors/drawer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -39,6 +39,7 @@ export declare function initLayoutBehaviors(container?: HTMLElement | Document):
|
|
|
39
39
|
export declare function getBehaviorNames(): Set<string>;
|
|
40
40
|
export { copyBehavior } from './behaviors/copy.js';
|
|
41
41
|
export { accordionBehavior } from './behaviors/accordion.js';
|
|
42
|
+
export { drawerBehavior } from './behaviors/drawer.js';
|
|
42
43
|
export { tabsBehavior } from './behaviors/tabs.js';
|
|
43
44
|
export { revealBehavior } from './behaviors/reveal.js';
|
|
44
45
|
export { datatableBehavior } from './behaviors/datatable.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA8C1D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CAM9E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,IAAI,CAEnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAChC,SAAS,GAAE,WAAW,GAAG,QAAmB,EAC5C,OAAO,CAAC,EAAE,WAAW,GACnB,MAAM,IAAI,CAkCZ;AASD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAClC,SAAS,GAAE,WAAW,GAAG,QAAmB,GAC1C,MAAM,IAAI,CAeZ;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,GAAG,CAAC,MAAM,CAAC,CAE9C;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGrE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACtG,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { isFrameworkManaged } from './utils.js';
|
|
2
2
|
import { copyBehavior } from './behaviors/copy.js';
|
|
3
3
|
import { accordionBehavior } from './behaviors/accordion.js';
|
|
4
|
+
import { drawerBehavior } from './behaviors/drawer.js';
|
|
4
5
|
import { tabsBehavior } from './behaviors/tabs.js';
|
|
5
6
|
import { revealBehavior } from './behaviors/reveal.js';
|
|
6
7
|
import { datatableBehavior } from './behaviors/datatable.js';
|
|
@@ -38,6 +39,7 @@ const behaviors = {
|
|
|
38
39
|
gallery: galleryBehavior,
|
|
39
40
|
juxtapose: juxtaposeBehavior,
|
|
40
41
|
nav: navBehavior,
|
|
42
|
+
drawer: drawerBehavior,
|
|
41
43
|
};
|
|
42
44
|
/**
|
|
43
45
|
* Register additional behavior functions (e.g., from community/official packages).
|
|
@@ -139,6 +141,7 @@ export function getBehaviorNames() {
|
|
|
139
141
|
}
|
|
140
142
|
export { copyBehavior } from './behaviors/copy.js';
|
|
141
143
|
export { accordionBehavior } from './behaviors/accordion.js';
|
|
144
|
+
export { drawerBehavior } from './behaviors/drawer.js';
|
|
142
145
|
export { tabsBehavior } from './behaviors/tabs.js';
|
|
143
146
|
export { revealBehavior } from './behaviors/reveal.js';
|
|
144
147
|
export { datatableBehavior } from './behaviors/datatable.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,SAAS,WAAW,CAAC,EAAe;IACnC,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC/C,IAAI,WAAW;QAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACvC,IAAI,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,kGAAkG;AAClG,MAAM,SAAS,GAA+B;IAC7C,SAAS,EAAE,iBAAiB;IAC5B,gBAAgB,EAAE,iBAAiB;IACnC,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,YAAY;IAC1B,MAAM,EAAE,cAAc;IACtB,YAAY,EAAE,iBAAiB;IAC/B,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,iBAAiB;IAC5B,GAAG,EAAE,WAAW;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED