Can panels and dialogs be more flexible?

For panels, the docs state:

Panels are interface elements displayed above or below the editor. They use sticky positioning to stay in view even when the editor is partially scrolled out of view. They are a good way to display things like dialogs, status bars, and menu bars.

Excellent! Is there value in:

  1. left and right positioning in addition to top?
  2. an option to stack multiple panels and tab between them?
  3. a way to access open panels to dynamically determine layout? I went down the rabbit hole to see how to do this, but it looks like you need access to panelPlugin or the panel’s constructor.
  4. a way to override panels rendering, similar to menubar?

For dialogs, the docs state:

Dialogs are panels opened as a side-effect, and closed by user action.

…

The result should contain at least one <form> element.

Why? I can see uses for inspecting attributes like blame tracking. Closable status bars seem good to me.

Looking through the source to try to understand, I see a lot of inflexible form handling code – like adding wg-* classes, input names, buttons, and event handlers for keydown and onsubmit.

Extensible form builders are nearly impossible to get right. Is there really a need for a form builder, or can it be left to the user? Removing this code could allow for the form constraint to be lifted.

I could complicate this endlessly, but I don’t think it’s a good idea to ship a an endlessly complicated UI framework to the user, and I don’t want to maintain such a thing. Panels provide a simple abstraction for a single useful thing, and I think that’s the right scope.

It is left to the user, except in trivial cases (single input element with a caption and a button), where it can be practical to get your dialog as a one-liner.