31 lines
1.5 KiB
Plaintext
31 lines
1.5 KiB
Plaintext
<li class="flex align-center gap-half margin-none" style="--bubble-color: <%= bubble.color %>; <%= bubble_rotation(bubble) %>"
|
|
data-controller="animation" data-animation-play-class="bubble--wobble" data-animation-play-on-load-value="true" data-action="mouseover->animation#play">
|
|
<div class="bubble__shape flex-item-no-shrink"></div>
|
|
|
|
<div class="flex flex-column">
|
|
<%= link_to bucket_bubble_path(bubble.bucket, bubble), class: "bubble__title-link flex align-center gap min-width" do %>
|
|
<strong class="bubble__title-text flex--inline gap-half overflow-ellipsis"><%= bubble.title %></strong>
|
|
<% end %>
|
|
|
|
<div class="flex align-end gap-half txt-small">
|
|
<%= render "bubbles/tags", bubble: bubble %>
|
|
</div>
|
|
</div>
|
|
|
|
<hr class="separator--horizontal flex-item-grow" aria-hidden="true" style="--border-color: var(--color-subtle-dark); --border-style: dashed" />
|
|
|
|
<div class="flex align-center gap-half flex-item-no-shrink">
|
|
<% bubble.assignees.each do |assignee| %>
|
|
<%= link_to bubbles_path(@filter.to_params.merge(assignee_ids: [ assignee.id ])), class: "btn avatar txt-x-small" do %>
|
|
<%= avatar_image_tag assignee, loading: :lazy %>
|
|
<% end %>
|
|
<% end %>
|
|
</div>
|
|
|
|
<% if bubble.due_on.present? %>
|
|
<time class="txt-nowrap txt-small fill-black txt-reversed border-radius" style="background-color: <%= bubble.color %>; padding: 0.3em 0.6em;">
|
|
<strong>DUE:</strong> <%= bubble.due_on.strftime("%b %d") %>
|
|
</time>
|
|
<% end %>
|
|
</li>
|