JS Playground: CDK resizable panes (files, editor, variables, console) + localStorage #134

Closed
opened 2026-05-13 15:51:32 +00:00 by spikerj · 1 comment
Owner

Goal

Improve the JavaScript Playground layout so users can size each major region (file list, editor, variables, console) to match their workflow, and remember those sizes across sessions.

UX / behavior

  • Use Angular CDK drag handles/sliders (or CDK drag-resize patterns) on the splitters between:
    • Files container
    • Main editor
    • Variables panel
    • Console
  • Dragging a handle updates sizes live with sensible min/max widths/heights so the UI never collapses unusably.
  • On release (or debounced while dragging), persist splitter positions to localStorage (scoped key per playground or app area).
  • On load, restore saved dimensions; if no saved state, use current default layout.
  • Optional: Reset layout item can clear saved keys (may be tied separately to View menu work).

Acceptance criteria

  • All listed regions are resizable via CDK-based splitters.
  • Sizes restore after refresh and revisiting the page (same browser profile).
  • Graceful fallback when localStorage is missing or corrupt.

Dependencies / notes

  • Coordinate with the menu bar ticket if Reset view should clear these stored values.
## Goal Improve the JavaScript Playground layout so users can **size each major region** (file list, editor, variables, console) to match their workflow, and **remember those sizes** across sessions. ## UX / behavior - Use **Angular CDK** drag handles/sliders (or CDK drag-resize patterns) on the **splitters** between: - Files container - Main editor - Variables panel - Console - Dragging a handle updates sizes **live** with sensible **min/max** widths/heights so the UI never collapses unusably. - On release (or debounced while dragging), persist splitter positions to **`localStorage`** (scoped key per playground or app area). - On load, **restore** saved dimensions; if no saved state, use current default layout. - Optional: **Reset layout** item can clear saved keys (may be tied separately to View menu work). ## Acceptance criteria - [ ] All listed regions are resizable via CDK-based splitters. - [ ] Sizes restore after refresh and revisiting the page (same browser profile). - [ ] Graceful fallback when `localStorage` is missing or corrupt. ## Dependencies / notes - Coordinate with the menu bar ticket if **Reset view** should clear these stored values.
Author
Owner

Closing as superseded. The JavaScript playground was rebuilt on the shared LanguageRunner (libraries/platform/language-runner) + dev-tools-javascript-runner rather than the bespoke CDK-resizable-panes + localStorage layout described here. Pane layout is now owned by the shared shell across all language playgrounds, so this JS-specific CDK-resize/persist design no longer maps to the current architecture. If resizable panes with persistence are still wanted, they should be re-scoped against the shared LanguageRunner as a new ticket.

Closing as **superseded**. The JavaScript playground was rebuilt on the shared `LanguageRunner` (`libraries/platform/language-runner`) + `dev-tools-javascript-runner` rather than the bespoke CDK-resizable-panes + localStorage layout described here. Pane layout is now owned by the shared shell across all language playgrounds, so this JS-specific CDK-resize/persist design no longer maps to the current architecture. If resizable panes with persistence are still wanted, they should be re-scoped against the shared `LanguageRunner` as a new ticket.
Sign in to join this conversation.