Hey y’all I’m working on a new app and I think i’m misunderstanding streams. I’ve read the docs and I seem to be missing something.
Here’s the Heex snippet i’m working on,
<div class="absolute inset-0 z-20" phx-update="stream" id="albums">
<img
:for={{dom_id, album} <- @streams.albums}
id={dom_id}
draggable="false"
class="max-w-none border-blue-700 absolute top-0 left-0 box-border cursor-pointer"
style={"transform: #{album[:transform]}; transform-origin: 0px 0px; border-width: #{if @selected_index == album[:id], do: "15px", else: "0"}; width: 512px; height: 512px;"}
src={album["image"]}
phx-click={JS.push("set_selected", value: %{id: album[:id]})}
data-id={album[:id]}
/>
</div>
The issue is that the style is not updating when the @selected_index changes. I saw something somewhere that says I would have to move selected attribute into the stream, but that feels really weird to me. That would require updating every item in the stream to selected=false anytime an item is selected. Is that the case? That feels wrong to me.
Thanks for the help!