Skip to content

Commit 99a0c07

Browse files
committed
Add loading state to entry
1 parent 6de6183 commit 99a0c07

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

lib/ex_rss_web/feed_live/index.ex

+11-6
Original file line numberDiff line numberDiff line change
@@ -186,10 +186,11 @@ defmodule ExRssWeb.FeedLive.Index do
186186
end
187187

188188
attr :entry, Entry, required: true
189+
attr :dom_id, :string, required: true
189190

190191
def entry(assigns) do
191192
~H"""
192-
<ul class="flex flex-col">
193+
<ul id={@dom_id} class="flex flex-col phx-click-loading:opacity-50">
193194
<li class="flex flex-col md:flex-row">
194195
<div class="flex flex-col">
195196
<a href={@entry.url} target="_blank">{@entry.title}</a>
@@ -201,12 +202,16 @@ defmodule ExRssWeb.FeedLive.Index do
201202
href={@entry.url}
202203
target="_blank"
203204
aria-label={"View entry #{@entry.title}"}
204-
phx-click="mark_as_read"
205+
phx-click={JS.push("mark_as_read", loading: "##{@dom_id}")}
205206
phx-value-entry-id={@entry.id}
206207
>
207208
<.icon name="hero-arrow-top-right-on-square-solid" />
208209
</a>
209-
<button aria-label="Mark as read" phx-click="mark_as_read" phx-value-entry-id={@entry.id}>
210+
<button
211+
aria-label="Mark as read"
212+
phx-click={JS.push("mark_as_read", loading: "##{@dom_id}")}
213+
phx-value-entry-id={@entry.id}
214+
>
210215
<.icon name="hero-check-circle-solid" />
211216
</button>
212217
</div>
@@ -228,19 +233,19 @@ defmodule ExRssWeb.FeedLive.Index do
228233
~H"""
229234
<ul class="mb-6 flex flex-col space-y-4">
230235
<li :for={entry <- @head_entries}>
231-
<.entry entry={entry} />
236+
<.entry entry={entry} dom_id={"entry-#{entry.id}"} />
232237
</li>
233238
<div>{@number_of_entries_not_shown} entries not shown</div>
234239
<li :for={entry <- @tail_entries}>
235-
<.entry entry={entry} />
240+
<.entry entry={entry} dom_id={"entry-#{entry.id}"} />
236241
</li>
237242
</ul>
238243
"""
239244
else
240245
~H"""
241246
<ul class="mb-6 flex flex-col space-y-4">
242247
<li :for={entry <- @entries}>
243-
<.entry entry={entry} />
248+
<.entry entry={entry} dom_id={"entry-#{entry.id}"} />
244249
</li>
245250
</ul>
246251
"""

lib/ex_rss_web/feed_live/index.html.heex

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676

7777
<div class="mb-6">
7878
<%= if @oldest_unread_entry do %>
79-
<.entry entry={@oldest_unread_entry} />
79+
<.entry entry={@oldest_unread_entry} dom_id="entry-oldest-unread" />
8080
<% else %>
8181
<div>No entry found</div>
8282
<% end %>

0 commit comments

Comments
 (0)