frontend: drop the Panel forwarding object and the side-panel-body compat class
Per mara's review: '2 and maybe 1, but 3 also sounds reasonable on first
glance' (against 3 options I posted). Doing 2 and 1, leaving open()/
openNamed() as-is (option 3, tentative only).
Both dashboard/common.js and agent/app.js now export/use the
<hive-side-panel> element instance directly (sidePanel) instead of a
thin Panel = { open, openNamed, refresh, close } object that existed
purely to keep the old call-site shape unchanged. All 6 real call sites
updated to call the element's own methods directly.
The .side-panel-body class each wrapper stamped onto its own instance,
purely so common.css/agent.css's pre-existing content-styling selectors
kept matching, is gone too -- those selectors now use the element's own
tag name as the root (hive-side-panel .md, hive-side-panel .agent-inbox),
which already uniquely identifies the light-DOM instance without a
compatibility class. Verified via headless Chromium/CDP that the
tag-name selectors resolve correctly with no class needed.
Drive-by: removed an unrelated dead Panel import in call.js.
This commit is contained in:
parent
996899fcad
commit
399a837e17
8 changed files with 73 additions and 90 deletions
|
|
@ -9,11 +9,11 @@
|
|||
it is slotted, so this file needs zero `::slotted()`. The one slotted
|
||||
node (the caller's opaque content, passed to open()/openNamed()/
|
||||
refresh()) is intentionally un-styled from in here: each package's own
|
||||
content-type-specific rules (`.side-panel-body .md` in the dashboard,
|
||||
`.side-panel-body .agent-inbox` in the agent UI) live in that package's
|
||||
own global stylesheet and reach the slotted content via a light-DOM
|
||||
class its own wrapper puts directly on its `<hive-side-panel>` instance
|
||||
— same architecture floor as `<hive-menu>`'s item-row styling, not a
|
||||
content-type-specific rules (`hive-side-panel .md` in the dashboard,
|
||||
`hive-side-panel .agent-inbox` in the agent UI) live in that package's
|
||||
own global stylesheet and reach the slotted content via the element's
|
||||
own tag name as the selector root — no compatibility class needed,
|
||||
same architecture floor as `<hive-menu>`'s item-row styling, not a
|
||||
scope choice.
|
||||
|
||||
`:host(.open)`/`:host(.resizing)` respond to the two state classes the
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
// hive-side-panel.js — <hive-side-panel>, the generic slide-in drawer
|
||||
// shadow-DOM custom element behind the dashboard's and the per-agent UI's
|
||||
// side panel (file previews, diffs, logs, inbox/todo lists — anything too
|
||||
// long to expand inline). One singleton instance per page, created +
|
||||
// appended lazily by each package's own thin wrapper
|
||||
// (dashboard/src/common.js's `Panel`, agent/src/app.js's `Panel`) — same
|
||||
// lazy-creation pattern `themedToast` uses for its toast-stack container.
|
||||
// long to expand inline). One singleton instance per page, created once,
|
||||
// eagerly, by each package's own module (dashboard/src/common.js's
|
||||
// `sidePanel`, agent/src/app.js's `sidePanel`) and used directly — no
|
||||
// wrapper object, no per-call lazy-init guard.
|
||||
//
|
||||
// Builds all structural chrome itself in `connectedCallback` (backdrop,
|
||||
// drawer, resize handle, header, title, close button) — shadow-owned,
|
||||
|
|
@ -12,8 +12,9 @@
|
|||
// caller-built DOM, appended as a light-DOM child and picked up by the
|
||||
// shadow tree's single default `<slot>`, exactly like `<hive-menu>`'s
|
||||
// `content` (see that file's header for why). Each package's own global
|
||||
// stylesheet reaches that content the same way it always did, via a
|
||||
// light-DOM class its own wrapper puts on the instance it owns.
|
||||
// stylesheet reaches that content via the element's own tag name as the
|
||||
// selector root (`hive-side-panel .md`, `hive-side-panel .agent-inbox`)
|
||||
// — no compatibility class needed.
|
||||
//
|
||||
// Public API is instance methods: `open(title, content)`,
|
||||
// `openNamed(name, title, content)`, `refresh(name, title, content)`,
|
||||
|
|
|
|||
Loading…
Reference in a new issue