Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Components
Introducing server-side rendered frontend components. The idea is pretty simple: use composition like in React to build UIs, except the components are type-checked and rendered by the backend.
The base component can render any other component, including just strings. To make a Sailfish template into a component, just call
component!on the struct, e.g:component!(MyTemplateStruct).MyTemplateStructmust be derived fromsailfish::TemplateOnce.CLI
To help with building components, we've created a
cargocommand that bundles CSS and JS into their respective bundles and can also generate components.To install the CLI:
Bundling
Run this after changing Sass or JS code:
cargo pgml-components bundle.Creating new components
This will automatically generate:
sailfish::TemplaceOnceMisc
/playgroundpage where we should test and render components. Analogous to how Material UI does it: https://mui.com/material-ui/react-autocomplete/