Configurable member field "required" flag and Vereinfacht-required fields closes #440 #441
1 changed files with 18 additions and 0 deletions
|
|
@ -448,6 +448,8 @@ defmodule MvWeb.CoreComponents do
|
|||
end
|
||||
|
||||
def input(%{type: "select"} = assigns) do
|
||||
assigns = ensure_aria_required_for_input(assigns)
|
||||
|
||||
~H"""
|
||||
<fieldset class="mb-2 fieldset">
|
||||
<label>
|
||||
|
|
@ -475,6 +477,8 @@ defmodule MvWeb.CoreComponents do
|
|||
end
|
||||
|
||||
def input(%{type: "textarea"} = assigns) do
|
||||
assigns = ensure_aria_required_for_input(assigns)
|
||||
|
||||
~H"""
|
||||
<fieldset class="mb-2 fieldset">
|
||||
<label>
|
||||
|
|
@ -502,6 +506,8 @@ defmodule MvWeb.CoreComponents do
|
|||
|
||||
# All other inputs text, datetime-local, url, password, etc. are handled here...
|
||||
def input(assigns) do
|
||||
assigns = ensure_aria_required_for_input(assigns)
|
||||
|
||||
~H"""
|
||||
<fieldset class="mb-2 fieldset">
|
||||
<label>
|
||||
|
|
@ -529,6 +535,18 @@ defmodule MvWeb.CoreComponents do
|
|||
"""
|
||||
end
|
||||
|
||||
# WCAG 2.1: set aria-required when required is true so screen readers announce required state
|
||||
defp ensure_aria_required_for_input(assigns) do
|
||||
rest = assigns.rest || %{}
|
||||
|
||||
rest =
|
||||
if rest[:required],
|
||||
do: Map.put(rest, :aria_required, "true"),
|
||||
else: rest
|
||||
|
||||
assign(assigns, :rest, rest)
|
||||
end
|
||||
|
||||
# Helper used by inputs to generate form errors
|
||||
defp error(assigns) do
|
||||
~H"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue