(no title)
ianpurton | 1 year ago
For me, I've been able to get turbo style links with the boost to get nice page transitions. I can also see how I could use the class-tools extension to enable buttons to open dialogs etc.
I'm curious to see when people say they needed an SPA for interactivity, what interactive features Htmx can already do and when do we need to break out some JS.
An example that I think needs JS is a copy paste button.
fhd2|1 year ago
One example is incremental filtering: I added an input field, and made it (a few ms after the last value change) load the same page the user is already on with a query parameter that filters the items in the response. Then I just replace the list of items with the contents from the response, ignoring the rest of the page.
It's a bit wasteful perhaps, but all this took just a few lines of HTML.
kisamoto|1 year ago
But I want things like an on-site calculator. I load in products and prices, users can adjust sliders to change the quantity and relevant number is calculated. I don't want to use HTMX for this to call the server each time, I want instant reactivity and state in the frontend maintained so when the user has tweaked as necessary they can just check out.
HTMX does not fit this use case so I use React to build widgets (or if even more complex SPA then Angular). If I'm using a JS framework anyway, then I don't need HTMX. It's just something else to clutter the project and remember to use.
HTMX has its place but with the user expectation for reactivity in the browser I personally find it too limiting.
BiteCode_dev|1 year ago
This is making your life needlessly difficult.
HTMX is just a fancy ajax layer with a little event handling sprinkled on top. You can and should script to your heart content even if you use it, when you need so.
I use js in all most of my HTMX powered pages. Sometimes just a few lines. Sometimes a whole lot. Sometimes vanilla, sometimes alpine. I even have one where I load react for one single page because I want a community widget while the rest of the site is pure HTMX.
You can do whatever you want.
halfcat|1 year ago
HTMX is really only about swapping out the elements on the page and pushing updates to the server, which in this case might just be lazy loading the calculator component that contains Alpine attributes and Tailwind elements, and HTMX only if there are elements to swap or you need to save state to the server.
yawaramin|1 year ago
And what happens after the user spent all that time adjusting their order, submits it, and then is told at the very end that some items are out of stock? Do you think they're going to be happy about that?
What if their browser crashes and the order they had built up carefully is lost? Will they bother to try again?
Will you do price calculations properly with a proper decimal library or allow the user to see what IEEE754 floats think '0.1 + 0.2' should be?
Lot of questions come up with the client-only approach.
bjackman|1 year ago
It's a simple usecase but nonetheless I was blown away by how trivial HTMX made it! Very cool.
srid|1 year ago
serial_dev|1 year ago
And it’s fine? htmx allows you to write JavaScript. It’s probably one line, I don’t think everything you can come up with needs to be part of htmx.
It’s not all or nothing.
srid|1 year ago
Evidently you can use Hyperscript for this. Its website <https://hyperscript.org/> demonstrates it with a similar "copy" button.
sublinear|1 year ago
Don't bother with libraries like this.
spirodonfl|1 year ago