Compare commits

..

3 commits

Author SHA1 Message Date
d24096ceaf
Redesign member view/edit UI with improved accessibility
All checks were successful
continuous-integration/drone/push Build is passing
- Group fields into Personal Data, Custom Fields, and Payment Data sections
- Fix WCAG AA contrast issues and semantic HTML (dt/dd in dl)
- Format mailto links with member name in href attribute
2025-12-03 13:45:56 +01:00
0cafdbafcd Merge pull request 'Fix mailto email formatting' (#243) from fix_mailto into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #243
2025-12-03 12:36:50 +01:00
125f9ae77b
fix: mailto formatting
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-03 10:14:57 +01:00
5 changed files with 95 additions and 136 deletions

View file

@ -137,13 +137,7 @@ defmodule MvWeb.MemberLive.Index do
selected_ids = socket.assigns.selected_members selected_ids = socket.assigns.selected_members
# Filter members that are in the selection and have email addresses # Filter members that are in the selection and have email addresses
formatted_emails = formatted_emails = format_selected_member_emails(socket.assigns.members, selected_ids)
socket.assigns.members
|> Enum.filter(fn member ->
MapSet.member?(selected_ids, member.id) && member.email && member.email != ""
end)
|> Enum.map(&format_member_email/1)
email_count = length(formatted_emails) email_count = length(formatted_emails)
cond do cond do
@ -887,9 +881,20 @@ defmodule MvWeb.MemberLive.Index do
end end
end end
# Filters selected members with email addresses and formats them.
# Returns a list of formatted email strings in the format "First Last <email>".
# Used by both copy_emails and mailto links.
def format_selected_member_emails(members, selected_members) do
members
|> Enum.filter(fn member ->
MapSet.member?(selected_members, member.id) && member.email && member.email != ""
end)
|> Enum.map(&format_member_email/1)
end
# Formats a member's email in the format "First Last <email>" # Formats a member's email in the format "First Last <email>"
# Used for copy_emails feature to create email-client-friendly format. # Used for copy_emails feature and mailto links to create email-client-friendly format.
defp format_member_email(member) do def format_member_email(member) do
first_name = member.first_name || "" first_name = member.first_name || ""
last_name = member.last_name || "" last_name = member.last_name || ""

View file

@ -14,7 +14,12 @@
</.button> </.button>
<.button <.button
:if={Enum.any?(@members, &MapSet.member?(@selected_members, &1.id))} :if={Enum.any?(@members, &MapSet.member?(@selected_members, &1.id))}
href={"mailto:?bcc=#{@members |> Enum.filter(&(MapSet.member?(@selected_members, &1.id) && &1.email)) |> Enum.map(& &1.email) |> Enum.join(",")}"} href={
"mailto:?bcc=" <>
(MvWeb.MemberLive.Index.format_selected_member_emails(@members, @selected_members)
|> Enum.join(", ")
|> URI.encode())
}
aria-label={gettext("Open email program with BCC recipients")} aria-label={gettext("Open email program with BCC recipients")}
> >
<.icon name="hero-envelope" /> <.icon name="hero-envelope" />

View file

@ -15,7 +15,7 @@ msgstr ""
msgid "Actions" msgid "Actions"
msgstr "Aktionen" msgstr "Aktionen"
#: lib/mv_web/live/member_live/index.html.heex:243 #: lib/mv_web/live/member_live/index.html.heex:248
#: lib/mv_web/live/user_live/index.html.heex:72 #: lib/mv_web/live/user_live/index.html.heex:72
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure?" msgid "Are you sure?"
@ -28,19 +28,19 @@ msgid "Attempting to reconnect"
msgstr "Verbindung wird wiederhergestellt" msgstr "Verbindung wird wiederhergestellt"
#: lib/mv_web/live/member_live/form.ex:100 #: lib/mv_web/live/member_live/form.ex:100
#: lib/mv_web/live/member_live/index.html.heex:179 #: lib/mv_web/live/member_live/index.html.heex:184
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "City" msgid "City"
msgstr "Stadt" msgstr "Stadt"
#: lib/mv_web/live/member_live/index.html.heex:245 #: lib/mv_web/live/member_live/index.html.heex:250
#: lib/mv_web/live/user_live/index.html.heex:74 #: lib/mv_web/live/user_live/index.html.heex:74
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete" msgid "Delete"
msgstr "Löschen" msgstr "Löschen"
#: lib/mv_web/live/member_live/form.ex:241 #: lib/mv_web/live/member_live/form.ex:241
#: lib/mv_web/live/member_live/index.html.heex:237 #: lib/mv_web/live/member_live/index.html.heex:242
#: lib/mv_web/live/user_live/form.ex:265 #: lib/mv_web/live/user_live/form.ex:265
#: lib/mv_web/live/user_live/index.html.heex:66 #: lib/mv_web/live/user_live/index.html.heex:66
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -54,7 +54,7 @@ msgid "Edit Member"
msgstr "Mitglied bearbeiten" msgstr "Mitglied bearbeiten"
#: lib/mv_web/live/member_live/form.ex:106 #: lib/mv_web/live/member_live/form.ex:106
#: lib/mv_web/live/member_live/index.html.heex:107 #: lib/mv_web/live/member_live/index.html.heex:112
#: lib/mv_web/live/member_live/show.ex:75 #: lib/mv_web/live/member_live/show.ex:75
#: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/form.ex:46
#: lib/mv_web/live/user_live/index.html.heex:44 #: lib/mv_web/live/user_live/index.html.heex:44
@ -70,7 +70,7 @@ msgid "First Name"
msgstr "Vorname" msgstr "Vorname"
#: lib/mv_web/live/member_live/form.ex:117 #: lib/mv_web/live/member_live/form.ex:117
#: lib/mv_web/live/member_live/index.html.heex:215 #: lib/mv_web/live/member_live/index.html.heex:220
#: lib/mv_web/live/member_live/show.ex:93 #: lib/mv_web/live/member_live/show.ex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Join Date" msgid "Join Date"
@ -83,12 +83,12 @@ msgid "Last Name"
msgstr "Nachname" msgstr "Nachname"
#: lib/mv_web/live/member_live/form.ex:44 #: lib/mv_web/live/member_live/form.ex:44
#: lib/mv_web/live/member_live/index.html.heex:24 #: lib/mv_web/live/member_live/index.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Member" msgid "New Member"
msgstr "Neues Mitglied" msgstr "Neues Mitglied"
#: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index.html.heex:239
#: lib/mv_web/live/user_live/index.html.heex:63 #: lib/mv_web/live/user_live/index.html.heex:63
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show" msgid "Show"
@ -115,7 +115,7 @@ msgstr "schließen"
msgid "Exit Date" msgid "Exit Date"
msgstr "Austrittsdatum" msgstr "Austrittsdatum"
#: lib/mv_web/live/member_live/index.html.heex:143 #: lib/mv_web/live/member_live/index.html.heex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "House Number" msgid "House Number"
msgstr "Hausnummer" msgstr "Hausnummer"
@ -129,20 +129,20 @@ msgstr "Notizen"
#: lib/mv_web/live/components/payment_filter_component.ex:94 #: lib/mv_web/live/components/payment_filter_component.ex:94
#: lib/mv_web/live/components/payment_filter_component.ex:144 #: lib/mv_web/live/components/payment_filter_component.ex:144
#: lib/mv_web/live/member_live/form.ex:199 #: lib/mv_web/live/member_live/form.ex:199
#: lib/mv_web/live/member_live/index.html.heex:224 #: lib/mv_web/live/member_live/index.html.heex:229
#: lib/mv_web/live/member_live/show.ex:162 #: lib/mv_web/live/member_live/show.ex:162
#: lib/mv_web/live/member_live/show.ex:164 #: lib/mv_web/live/member_live/show.ex:164
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Paid" msgid "Paid"
msgstr "Bezahlt" msgstr "Bezahlt"
#: lib/mv_web/live/member_live/index.html.heex:197 #: lib/mv_web/live/member_live/index.html.heex:202
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Phone Number" msgid "Phone Number"
msgstr "Telefonnummer" msgstr "Telefonnummer"
#: lib/mv_web/live/member_live/form.ex:97 #: lib/mv_web/live/member_live/form.ex:97
#: lib/mv_web/live/member_live/index.html.heex:161 #: lib/mv_web/live/member_live/index.html.heex:166
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Postal Code" msgid "Postal Code"
msgstr "Postleitzahl" msgstr "Postleitzahl"
@ -163,12 +163,12 @@ msgid "Saving..."
msgstr "Speichern..." msgstr "Speichern..."
#: lib/mv_web/live/member_live/form.ex:91 #: lib/mv_web/live/member_live/form.ex:91
#: lib/mv_web/live/member_live/index.html.heex:125 #: lib/mv_web/live/member_live/index.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Street" msgid "Street"
msgstr "Straße" msgstr "Straße"
#: lib/mv_web/live/member_live/index.html.heex:229 #: lib/mv_web/live/member_live/index.html.heex:234
#: lib/mv_web/live/member_live/index/formatter.ex:61 #: lib/mv_web/live/member_live/index/formatter.ex:61
#: lib/mv_web/live/member_live/show.ex:303 #: lib/mv_web/live/member_live/show.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -180,7 +180,7 @@ msgstr "Nein"
msgid "Show Member" msgid "Show Member"
msgstr "Mitglied anzeigen" msgstr "Mitglied anzeigen"
#: lib/mv_web/live/member_live/index.html.heex:229 #: lib/mv_web/live/member_live/index.html.heex:234
#: lib/mv_web/live/member_live/index/formatter.ex:60 #: lib/mv_web/live/member_live/index/formatter.ex:60
#: lib/mv_web/live/member_live/show.ex:303 #: lib/mv_web/live/member_live/show.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -347,12 +347,12 @@ msgstr "Profil"
msgid "Required" msgid "Required"
msgstr "Erforderlich" msgstr "Erforderlich"
#: lib/mv_web/live/member_live/index.html.heex:63 #: lib/mv_web/live/member_live/index.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select all members" msgid "Select all members"
msgstr "Alle Mitglieder auswählen" msgstr "Alle Mitglieder auswählen"
#: lib/mv_web/live/member_live/index.html.heex:77 #: lib/mv_web/live/member_live/index.html.heex:82
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select member" msgid "Select member"
msgstr "Mitglied auswählen" msgstr "Mitglied auswählen"
@ -538,7 +538,7 @@ msgid "Toggle dark mode"
msgstr "Dunklen Modus umschalten" msgstr "Dunklen Modus umschalten"
#: lib/mv_web/live/components/search_bar_component.ex:15 #: lib/mv_web/live/components/search_bar_component.ex:15
#: lib/mv_web/live/member_live/index.html.heex:34 #: lib/mv_web/live/member_live/index.html.heex:39
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search..." msgid "Search..."
msgstr "Suchen..." msgstr "Suchen..."
@ -554,7 +554,7 @@ msgstr "Benutzer*innen"
msgid "Click to sort" msgid "Click to sort"
msgstr "Klicke um zu sortieren" msgstr "Klicke um zu sortieren"
#: lib/mv_web/live/member_live/index.html.heex:89 #: lib/mv_web/live/member_live/index.html.heex:94
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "First name" msgid "First name"
msgstr "Vorname" msgstr "Vorname"
@ -760,7 +760,7 @@ msgstr "Mitglied entverknüpfen"
msgid "Unlinking scheduled" msgid "Unlinking scheduled"
msgstr "Entverknüpfung geplant" msgstr "Entverknüpfung geplant"
#: lib/mv_web/live/member_live/index.ex:165 #: lib/mv_web/live/member_live/index.ex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Copied %{count} email address to clipboard" msgid "Copied %{count} email address to clipboard"
msgid_plural "Copied %{count} email addresses to clipboard" msgid_plural "Copied %{count} email addresses to clipboard"
@ -777,27 +777,27 @@ msgstr "E-Mail-Adressen der ausgewählten Mitglieder kopieren"
msgid "Copy emails" msgid "Copy emails"
msgstr "E-Mails kopieren" msgstr "E-Mails kopieren"
#: lib/mv_web/live/member_live/index.ex:154 #: lib/mv_web/live/member_live/index.ex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No email addresses found" msgid "No email addresses found"
msgstr "Keine E-Mail-Adressen gefunden" msgstr "Keine E-Mail-Adressen gefunden"
#: lib/mv_web/live/member_live/index.ex:151 #: lib/mv_web/live/member_live/index.ex:145
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No members selected" msgid "No members selected"
msgstr "Keine Mitglieder ausgewählt" msgstr "Keine Mitglieder ausgewählt"
#: lib/mv_web/live/member_live/index.html.heex:18 #: lib/mv_web/live/member_live/index.html.heex:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open email program with BCC recipients" msgid "Open email program with BCC recipients"
msgstr "E-Mail-Programm mit BCC-Empfänger*innen öffnen" msgstr "E-Mail-Programm mit BCC-Empfänger*innen öffnen"
#: lib/mv_web/live/member_live/index.html.heex:21 #: lib/mv_web/live/member_live/index.html.heex:26
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open in email program" msgid "Open in email program"
msgstr "Im E-Mail-Programm öffnen" msgstr "Im E-Mail-Programm öffnen"
#: lib/mv_web/live/member_live/index.ex:174 #: lib/mv_web/live/member_live/index.ex:168
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgid "Tip: Paste email addresses into the BCC field for privacy compliance"
msgstr "Tipp: E-Mail-Adressen ins BCC-Feld einfügen für Datenschutzkonformität" msgstr "Tipp: E-Mail-Adressen ins BCC-Feld einfügen für Datenschutzkonformität"
@ -923,29 +923,6 @@ msgstr "monatlich"
msgid "yearly" msgid "yearly"
msgstr "jährlich" msgstr "jährlich"
#~ #: lib/mv_web/live/member_live/form.ex:48
#~ #: lib/mv_web/live/member_live/show.ex:51
#~ #, elixir-autogen, elixir-format
#~ msgid "Birth Date"
#~ msgstr "Geburtsdatum"
#~ #: lib/mv_web/live/member_live/form.ex:58
#~ #: lib/mv_web/live/member_live/show.ex:77
#~ #, elixir-autogen, elixir-format
#~ msgid "Custom Field Values"
#~ msgstr "Benutzerdefinierte Feldwerte"
#~ #: lib/mv_web/live/member_live/form.ex:40
#~ #, elixir-autogen, elixir-format
#~ msgid "Fields marked with an asterisk (*) cannot be empty."
#~ msgstr "Felder, die mit einem Sternchen (*) markiert sind, dürfen nicht leer bleiben."
#~ #: lib/mv_web/live/member_live/form.ex:79
#~ #: lib/mv_web/live/member_live/show.ex:56
#~ #, elixir-autogen, elixir-format
#~ msgid "History"
#~ msgstr "Historie"
#~ #: lib/mv_web/live/member_live/show.ex:47 #~ #: lib/mv_web/live/member_live/show.ex:47
#~ #, elixir-autogen, elixir-format #~ #, elixir-autogen, elixir-format
#~ msgid "Id" #~ msgid "Id"

View file

@ -16,7 +16,7 @@ msgstr ""
msgid "Actions" msgid "Actions"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:243 #: lib/mv_web/live/member_live/index.html.heex:248
#: lib/mv_web/live/user_live/index.html.heex:72 #: lib/mv_web/live/user_live/index.html.heex:72
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure?" msgid "Are you sure?"
@ -29,19 +29,19 @@ msgid "Attempting to reconnect"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:100 #: lib/mv_web/live/member_live/form.ex:100
#: lib/mv_web/live/member_live/index.html.heex:179 #: lib/mv_web/live/member_live/index.html.heex:184
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "City" msgid "City"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:245 #: lib/mv_web/live/member_live/index.html.heex:250
#: lib/mv_web/live/user_live/index.html.heex:74 #: lib/mv_web/live/user_live/index.html.heex:74
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:241 #: lib/mv_web/live/member_live/form.ex:241
#: lib/mv_web/live/member_live/index.html.heex:237 #: lib/mv_web/live/member_live/index.html.heex:242
#: lib/mv_web/live/user_live/form.ex:265 #: lib/mv_web/live/user_live/form.ex:265
#: lib/mv_web/live/user_live/index.html.heex:66 #: lib/mv_web/live/user_live/index.html.heex:66
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -55,7 +55,7 @@ msgid "Edit Member"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:106 #: lib/mv_web/live/member_live/form.ex:106
#: lib/mv_web/live/member_live/index.html.heex:107 #: lib/mv_web/live/member_live/index.html.heex:112
#: lib/mv_web/live/member_live/show.ex:75 #: lib/mv_web/live/member_live/show.ex:75
#: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/form.ex:46
#: lib/mv_web/live/user_live/index.html.heex:44 #: lib/mv_web/live/user_live/index.html.heex:44
@ -71,7 +71,7 @@ msgid "First Name"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:117 #: lib/mv_web/live/member_live/form.ex:117
#: lib/mv_web/live/member_live/index.html.heex:215 #: lib/mv_web/live/member_live/index.html.heex:220
#: lib/mv_web/live/member_live/show.ex:93 #: lib/mv_web/live/member_live/show.ex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Join Date" msgid "Join Date"
@ -84,12 +84,12 @@ msgid "Last Name"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:44 #: lib/mv_web/live/member_live/form.ex:44
#: lib/mv_web/live/member_live/index.html.heex:24 #: lib/mv_web/live/member_live/index.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Member" msgid "New Member"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index.html.heex:239
#: lib/mv_web/live/user_live/index.html.heex:63 #: lib/mv_web/live/user_live/index.html.heex:63
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show" msgid "Show"
@ -116,7 +116,7 @@ msgstr ""
msgid "Exit Date" msgid "Exit Date"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:143 #: lib/mv_web/live/member_live/index.html.heex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "House Number" msgid "House Number"
msgstr "" msgstr ""
@ -130,20 +130,20 @@ msgstr ""
#: lib/mv_web/live/components/payment_filter_component.ex:94 #: lib/mv_web/live/components/payment_filter_component.ex:94
#: lib/mv_web/live/components/payment_filter_component.ex:144 #: lib/mv_web/live/components/payment_filter_component.ex:144
#: lib/mv_web/live/member_live/form.ex:199 #: lib/mv_web/live/member_live/form.ex:199
#: lib/mv_web/live/member_live/index.html.heex:224 #: lib/mv_web/live/member_live/index.html.heex:229
#: lib/mv_web/live/member_live/show.ex:162 #: lib/mv_web/live/member_live/show.ex:162
#: lib/mv_web/live/member_live/show.ex:164 #: lib/mv_web/live/member_live/show.ex:164
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Paid" msgid "Paid"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:197 #: lib/mv_web/live/member_live/index.html.heex:202
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Phone Number" msgid "Phone Number"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:97 #: lib/mv_web/live/member_live/form.ex:97
#: lib/mv_web/live/member_live/index.html.heex:161 #: lib/mv_web/live/member_live/index.html.heex:166
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Postal Code" msgid "Postal Code"
msgstr "" msgstr ""
@ -164,12 +164,12 @@ msgid "Saving..."
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:91 #: lib/mv_web/live/member_live/form.ex:91
#: lib/mv_web/live/member_live/index.html.heex:125 #: lib/mv_web/live/member_live/index.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Street" msgid "Street"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:229 #: lib/mv_web/live/member_live/index.html.heex:234
#: lib/mv_web/live/member_live/index/formatter.ex:61 #: lib/mv_web/live/member_live/index/formatter.ex:61
#: lib/mv_web/live/member_live/show.ex:303 #: lib/mv_web/live/member_live/show.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -181,7 +181,7 @@ msgstr ""
msgid "Show Member" msgid "Show Member"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:229 #: lib/mv_web/live/member_live/index.html.heex:234
#: lib/mv_web/live/member_live/index/formatter.ex:60 #: lib/mv_web/live/member_live/index/formatter.ex:60
#: lib/mv_web/live/member_live/show.ex:303 #: lib/mv_web/live/member_live/show.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -348,12 +348,12 @@ msgstr ""
msgid "Required" msgid "Required"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:63 #: lib/mv_web/live/member_live/index.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select all members" msgid "Select all members"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:77 #: lib/mv_web/live/member_live/index.html.heex:82
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select member" msgid "Select member"
msgstr "" msgstr ""
@ -539,7 +539,7 @@ msgid "Toggle dark mode"
msgstr "" msgstr ""
#: lib/mv_web/live/components/search_bar_component.ex:15 #: lib/mv_web/live/components/search_bar_component.ex:15
#: lib/mv_web/live/member_live/index.html.heex:34 #: lib/mv_web/live/member_live/index.html.heex:39
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search..." msgid "Search..."
msgstr "" msgstr ""
@ -555,7 +555,7 @@ msgstr ""
msgid "Click to sort" msgid "Click to sort"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:89 #: lib/mv_web/live/member_live/index.html.heex:94
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "First name" msgid "First name"
msgstr "" msgstr ""
@ -761,7 +761,7 @@ msgstr ""
msgid "Unlinking scheduled" msgid "Unlinking scheduled"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.ex:165 #: lib/mv_web/live/member_live/index.ex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Copied %{count} email address to clipboard" msgid "Copied %{count} email address to clipboard"
msgid_plural "Copied %{count} email addresses to clipboard" msgid_plural "Copied %{count} email addresses to clipboard"
@ -778,27 +778,27 @@ msgstr ""
msgid "Copy emails" msgid "Copy emails"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.ex:154 #: lib/mv_web/live/member_live/index.ex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No email addresses found" msgid "No email addresses found"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.ex:151 #: lib/mv_web/live/member_live/index.ex:145
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No members selected" msgid "No members selected"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:18 #: lib/mv_web/live/member_live/index.html.heex:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open email program with BCC recipients" msgid "Open email program with BCC recipients"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:21 #: lib/mv_web/live/member_live/index.html.heex:26
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open in email program" msgid "Open in email program"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.ex:174 #: lib/mv_web/live/member_live/index.ex:168
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgid "Tip: Paste email addresses into the BCC field for privacy compliance"
msgstr "" msgstr ""

View file

@ -16,7 +16,7 @@ msgstr ""
msgid "Actions" msgid "Actions"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:243 #: lib/mv_web/live/member_live/index.html.heex:248
#: lib/mv_web/live/user_live/index.html.heex:72 #: lib/mv_web/live/user_live/index.html.heex:72
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure?" msgid "Are you sure?"
@ -29,19 +29,19 @@ msgid "Attempting to reconnect"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:100 #: lib/mv_web/live/member_live/form.ex:100
#: lib/mv_web/live/member_live/index.html.heex:179 #: lib/mv_web/live/member_live/index.html.heex:184
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "City" msgid "City"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:245 #: lib/mv_web/live/member_live/index.html.heex:250
#: lib/mv_web/live/user_live/index.html.heex:74 #: lib/mv_web/live/user_live/index.html.heex:74
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:241 #: lib/mv_web/live/member_live/form.ex:241
#: lib/mv_web/live/member_live/index.html.heex:237 #: lib/mv_web/live/member_live/index.html.heex:242
#: lib/mv_web/live/user_live/form.ex:265 #: lib/mv_web/live/user_live/form.ex:265
#: lib/mv_web/live/user_live/index.html.heex:66 #: lib/mv_web/live/user_live/index.html.heex:66
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -55,7 +55,7 @@ msgid "Edit Member"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:106 #: lib/mv_web/live/member_live/form.ex:106
#: lib/mv_web/live/member_live/index.html.heex:107 #: lib/mv_web/live/member_live/index.html.heex:112
#: lib/mv_web/live/member_live/show.ex:75 #: lib/mv_web/live/member_live/show.ex:75
#: lib/mv_web/live/user_live/form.ex:46 #: lib/mv_web/live/user_live/form.ex:46
#: lib/mv_web/live/user_live/index.html.heex:44 #: lib/mv_web/live/user_live/index.html.heex:44
@ -71,7 +71,7 @@ msgid "First Name"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:117 #: lib/mv_web/live/member_live/form.ex:117
#: lib/mv_web/live/member_live/index.html.heex:215 #: lib/mv_web/live/member_live/index.html.heex:220
#: lib/mv_web/live/member_live/show.ex:93 #: lib/mv_web/live/member_live/show.ex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Join Date" msgid "Join Date"
@ -84,12 +84,12 @@ msgid "Last Name"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:44 #: lib/mv_web/live/member_live/form.ex:44
#: lib/mv_web/live/member_live/index.html.heex:24 #: lib/mv_web/live/member_live/index.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Member" msgid "New Member"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:234 #: lib/mv_web/live/member_live/index.html.heex:239
#: lib/mv_web/live/user_live/index.html.heex:63 #: lib/mv_web/live/user_live/index.html.heex:63
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show" msgid "Show"
@ -116,7 +116,7 @@ msgstr ""
msgid "Exit Date" msgid "Exit Date"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:143 #: lib/mv_web/live/member_live/index.html.heex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "House Number" msgid "House Number"
msgstr "" msgstr ""
@ -130,20 +130,20 @@ msgstr ""
#: lib/mv_web/live/components/payment_filter_component.ex:94 #: lib/mv_web/live/components/payment_filter_component.ex:94
#: lib/mv_web/live/components/payment_filter_component.ex:144 #: lib/mv_web/live/components/payment_filter_component.ex:144
#: lib/mv_web/live/member_live/form.ex:199 #: lib/mv_web/live/member_live/form.ex:199
#: lib/mv_web/live/member_live/index.html.heex:224 #: lib/mv_web/live/member_live/index.html.heex:229
#: lib/mv_web/live/member_live/show.ex:162 #: lib/mv_web/live/member_live/show.ex:162
#: lib/mv_web/live/member_live/show.ex:164 #: lib/mv_web/live/member_live/show.ex:164
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Paid" msgid "Paid"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:197 #: lib/mv_web/live/member_live/index.html.heex:202
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Phone Number" msgid "Phone Number"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:97 #: lib/mv_web/live/member_live/form.ex:97
#: lib/mv_web/live/member_live/index.html.heex:161 #: lib/mv_web/live/member_live/index.html.heex:166
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Postal Code" msgid "Postal Code"
msgstr "" msgstr ""
@ -164,12 +164,12 @@ msgid "Saving..."
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/form.ex:91 #: lib/mv_web/live/member_live/form.ex:91
#: lib/mv_web/live/member_live/index.html.heex:125 #: lib/mv_web/live/member_live/index.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Street" msgid "Street"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:229 #: lib/mv_web/live/member_live/index.html.heex:234
#: lib/mv_web/live/member_live/index/formatter.ex:61 #: lib/mv_web/live/member_live/index/formatter.ex:61
#: lib/mv_web/live/member_live/show.ex:303 #: lib/mv_web/live/member_live/show.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -181,7 +181,7 @@ msgstr ""
msgid "Show Member" msgid "Show Member"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:229 #: lib/mv_web/live/member_live/index.html.heex:234
#: lib/mv_web/live/member_live/index/formatter.ex:60 #: lib/mv_web/live/member_live/index/formatter.ex:60
#: lib/mv_web/live/member_live/show.ex:303 #: lib/mv_web/live/member_live/show.ex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -348,12 +348,12 @@ msgstr ""
msgid "Required" msgid "Required"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:63 #: lib/mv_web/live/member_live/index.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select all members" msgid "Select all members"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:77 #: lib/mv_web/live/member_live/index.html.heex:82
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Select member" msgid "Select member"
msgstr "" msgstr ""
@ -539,7 +539,7 @@ msgid "Toggle dark mode"
msgstr "" msgstr ""
#: lib/mv_web/live/components/search_bar_component.ex:15 #: lib/mv_web/live/components/search_bar_component.ex:15
#: lib/mv_web/live/member_live/index.html.heex:34 #: lib/mv_web/live/member_live/index.html.heex:39
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search..." msgid "Search..."
msgstr "" msgstr ""
@ -555,7 +555,7 @@ msgstr ""
msgid "Click to sort" msgid "Click to sort"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:89 #: lib/mv_web/live/member_live/index.html.heex:94
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "First name" msgid "First name"
msgstr "" msgstr ""
@ -761,7 +761,7 @@ msgstr ""
msgid "Unlinking scheduled" msgid "Unlinking scheduled"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.ex:165 #: lib/mv_web/live/member_live/index.ex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Copied %{count} email address to clipboard" msgid "Copied %{count} email address to clipboard"
msgid_plural "Copied %{count} email addresses to clipboard" msgid_plural "Copied %{count} email addresses to clipboard"
@ -778,27 +778,27 @@ msgstr ""
msgid "Copy emails" msgid "Copy emails"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.ex:154 #: lib/mv_web/live/member_live/index.ex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No email addresses found" msgid "No email addresses found"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.ex:151 #: lib/mv_web/live/member_live/index.ex:145
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No members selected" msgid "No members selected"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:18 #: lib/mv_web/live/member_live/index.html.heex:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open email program with BCC recipients" msgid "Open email program with BCC recipients"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:21 #: lib/mv_web/live/member_live/index.html.heex:26
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Open in email program" msgid "Open in email program"
msgstr "" msgstr ""
#: lib/mv_web/live/member_live/index.ex:174 #: lib/mv_web/live/member_live/index.ex:168
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tip: Paste email addresses into the BCC field for privacy compliance" msgid "Tip: Paste email addresses into the BCC field for privacy compliance"
msgstr "" msgstr ""
@ -924,39 +924,11 @@ msgstr ""
msgid "yearly" msgid "yearly"
msgstr "" msgstr ""
#~ #: lib/mv_web/live/member_live/form.ex:48
#~ #: lib/mv_web/live/member_live/show.ex:51
#~ #, elixir-autogen, elixir-format
#~ msgid "Birth Date"
#~ msgstr ""
#~ #: lib/mv_web/live/member_live/form.ex:58
#~ #: lib/mv_web/live/member_live/show.ex:77
#~ #, elixir-autogen, elixir-format
#~ msgid "Custom Field Values"
#~ msgstr ""
#~ #: lib/mv_web/live/member_live/form.ex:40
#~ #, elixir-autogen, elixir-format
#~ msgid "Fields marked with an asterisk (*) cannot be empty."
#~ msgstr ""
#~ #: lib/mv_web/live/member_live/form.ex:79
#~ #: lib/mv_web/live/member_live/show.ex:56
#~ #, elixir-autogen, elixir-format
#~ msgid "History"
#~ msgstr ""
#~ #: lib/mv_web/live/member_live/show.ex:47 #~ #: lib/mv_web/live/member_live/show.ex:47
#~ #, elixir-autogen, elixir-format #~ #, elixir-autogen, elixir-format
#~ msgid "Id" #~ msgid "Id"
#~ msgstr "" #~ msgstr ""
#~ #: lib/mv_web/live/member_live/show.ex:161
#~ #, elixir-autogen, elixir-format, fuzzy
#~ msgid "Paid at"
#~ msgstr ""
#~ #: lib/mv_web/live/member_live/show.ex:33 #~ #: lib/mv_web/live/member_live/show.ex:33
#~ #, elixir-autogen, elixir-format #~ #, elixir-autogen, elixir-format
#~ msgid "This is a member record from your database." #~ msgid "This is a member record from your database."