Skip to content

Rewrite status #19

Open
Open
@JulianCataldo

Description

@JulianCataldo

I'm going to do a major rewrite for JSFE, to make it much more modular and easy to integrate in any kind of setups.

This issue will keep track of the tasks on a next branch, until some tests are properly setup, and the rewrite finished, of course.

For now, it's a bit of a dump that will be more structured later.


  • Make an external form controller, a subclass of EventTarget with TC39 signals (via Lit) for various states
  • Focus on Shoelace and System (bare widgets), update Shoelace to WebAwesome
  • Make a ready to consume Shoelace/WA form, preloaded with presets and with swappable widgets
    • Slots were evaluated for swapping specific fields, but sadly, it's too boilerplatey to pass the inputs event in the light DOM to a shadowed form
    • Make this implementation (100-200 LOC max) with both Lit and React, to demonstrate versatility
  • Tests with playwright(with SSR, React, Lit…) with WebAwesome and Gracile
  • Unit tests for the core (node:test and c8)
  • In the prolongation of SSR (but that's not a strict requirement), ensure progressive enhancements with native form functioning at 100% + smooth JS take-over.
  • Maintain a coherent integration with native JS APIs (notably, events), while providing reactive helpers for userland templates (e.g. for advanced errors reporting)
  • Make strong typings all over the boards, with aligned semantics and well defined mapping for HTML / JS / JSON Schema / "widgets"… vocabularies.
  • Re-organize the repos, remove a lot of stuff (like alternative UI implementation)
  • Reflect all the changes to the playground
  • Use Vite for distributing both the lib and the themes (separately), so we can do further optimizations
  • Fix the SCSS to CSS.TS pipeline. It's flaky right now in dev.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions