46 lines
1.5 KiB
Ruby
46 lines
1.5 KiB
Ruby
module MembershipsHelper
|
|
def get_name_or_email(user)
|
|
user.full_name.present? ? user.full_name : user.email
|
|
end
|
|
|
|
def image_or_text_avatar(user)
|
|
if user.avatar.attached?
|
|
image_avatar(user)
|
|
else
|
|
text_avatar(user)
|
|
end
|
|
end
|
|
|
|
def image_avatar(user)
|
|
image_tag(tiny_variant(user.avatar), class: "rounded-circle", alt: "User Avatar")
|
|
end
|
|
|
|
def text_avatar(user, size: 2.5)
|
|
font_size = size / 2.5
|
|
|
|
if user.first_name.present? && user.last_name.present?
|
|
initials = (user.first_name.first + user.last_name.first).upcase
|
|
else
|
|
initials = user.email.first(2).upcase
|
|
end
|
|
|
|
content_tag(:div,
|
|
class: "bg-light border rounded-circle d-inline-flex justify-content-center align-items-center",
|
|
style: "width:#{size}rem;height:#{size}rem;") do
|
|
content_tag(:span, initials, class: "h-5 m-0 p-0 text-muted no-line-height", style: "font-size:#{font_size}rem")
|
|
end
|
|
end
|
|
|
|
def team_member_list(members)
|
|
list_classes = "list-unstyled d-flex flex-row justify-content-start align-items-center flex-nowrap overflow-hidden"
|
|
|
|
content_tag(:ul, class: list_classes) do
|
|
members.each.with_index do |member, index|
|
|
concat content_tag(:li, image_or_text_avatar(member),
|
|
class: class_string("rounded-circle border border-white border-thicker", "ml-n3" => !index.zero?),
|
|
style: "z-index:#{100-index}")
|
|
end
|
|
end
|
|
end
|
|
end
|