Split the Bedside clinical reference section out of calculators.js (~1220 lines) into 20 focused ES modules under public/js/bedside/. Each module owns one clinical topic (cardiac, seizure, sepsis, burns, etc.) and exports an init() wired up by bedside/index.js. Shared helpers live in shared.js and also set window._EM for back-compat with the 4 remaining call sites in calculators.js. Load order: classic defer calculators.js first, then module script bedside/index.js. Handlers bind at DOM-ready; runtime _EM lookups resolve after both are evaluated. Makes bedside content editable per-section, shrinks calculators.js from 4111 to 2891 lines, and keeps the existing Playwright smoke suite (e2e/tests/bedside-smoke.spec.js) as the behavioral contract.
18 lines
849 B
JavaScript
18 lines
849 B
JavaScript
// ============================================================
|
|
// bedside/sub-nav.js
|
|
// EMERGENCIES SUB-NAV — data-em pill switching.
|
|
// ============================================================
|
|
|
|
export function init() {
|
|
document.addEventListener('click', function(e) {
|
|
var pill = e.target.closest('[data-em]');
|
|
if (!pill) return;
|
|
document.querySelectorAll('[data-em]').forEach(function(p) { p.classList.remove('active'); });
|
|
pill.classList.add('active');
|
|
var sections = ['neonatal','airway','cardiac','respiratory','ventilation','seizure','sepsis','anaphylaxis','sedation','agitation','antiemetics','antimicrobials','burns','toxicology','trauma'];
|
|
sections.forEach(function(s) {
|
|
var el = document.getElementById('em-' + s);
|
|
if (el) el.style.display = pill.dataset.em === s ? '' : 'none';
|
|
});
|
|
});
|
|
}
|