Working Notes Example

This is a form demonstrating several techniques for avoiding issues with morping. When you submit a form to create a new note, this page will be updated with morphing.
First we have an info box that can be open or closed.
Its open/closed state is stored server side. In this demo we are storing it in the session to keep it simple but in reality it could be stored in a user preferences record, for example.
Next, we have a form for creating a new note which uses a rich JS component, trix editor. It's too complex to do something clever so it's easiest to just exclude it using data-turbo-permanet.
Then we have a list of notes whose content can be open or closed. Their state is stored in the URL. There's a Stimulus controller attached which modifies a comma separated list of notes that are open. Since form submission redirects back after creating a new note, the URL modifications are preserved.
Sample Note
This is a sample note
Finally, we have a component which is counting clicks user made since the page was first open (I ran out of sensible examples). It continues counting across page refreshes by listening to turbo:before-morph-element and preventing it.