Con una sóla opción usando 'aria-describedby' en el input #
Por accesibilidad, los mensajes de error deben incluir la palabra "error", para que no recaiga tan sólo en el color el hecho de que es un mensaje de error.
Error:Por favor, debes aceptar los términos y condiciones. Soluciona el error.
Mostrar códigodel ejemplo: Con una sóla opción usando 'aria-describedby' en el input
Contenido
Nunjucks macro
{%from"components/checkboxes/_macro.checkboxes.njk" import componentCheckboxes %}{{ componentCheckboxes({
"idPrefix": "describedby",
"name": "describedby",
"errorMessage": {
"text": "Por favor, debes aceptar los términos y condiciones. Soluciona el error."
},
"items": [
{
"value": "acepto",
"html": "Acepto los <a href='#' target='_blank' class='c-link' title='Se abre en ventana nueva del navegador'>términos y condiciones</a>"
}
]
}) }}
HTML
<!-- checkboxes --><divclass="c-form-group c-form-group--error"><!-- error-message --><pid="describedby-error"class="block font-semibold text-alert-base"><spanclass="sr-only">Error:</span>Por favor, debes aceptar los términos y condiciones. Soluciona el error.
</p><!-- /error-message --><divclass="c-checkboxes"data-module="c-checkboxes"><divclass=" c-checkboxes__conditional-hidden"><divclass="relative flex items-start py-base"><divclass="flex items-center mx-sm"><inputclass="w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:outline-black focus:outline-1 focus:outline-offset-2 focus:ring-3 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-base disabled:border-neutral-base text-primary-base"id="describedby"name="describedby"type="checkbox"value="acepto"aria-invalid="true"></div><divclass="pt-0.5 leading-5"><!-- label --><labelclass="block"for="describedby">Acepto los <ahref="#"target="_blank"class="c-link"title="Se abre en ventana nueva del navegador">términos y condiciones</a></label><!-- /label --></div></div></div></div></div><!-- /checkboxes -->
Con una sóla opción (y pista) usando 'aria-describedby' en el input #
Por accesibilidad, los mensajes de error deben incluir la palabra "error", para que no recaiga tan sólo en el color el hecho de que es un mensaje de error.
Error:Por favor, debes aceptar los términos y condiciones. Soluciona el error.
Puedes visualizarlos en ventana nueva del navegador
Mostrar códigodel ejemplo: Con una sóla opción (y pista) usando 'aria-describedby' en el input
Contenido
Nunjucks macro
{%from"components/checkboxes/_macro.checkboxes.njk" import componentCheckboxes %}{{ componentCheckboxes({
"name": "t-and-c-with-hint",
"errorMessage": {
"text": "Por favor, debes aceptar los términos y condiciones. Soluciona el error."
},
"items": [
{
"value": "acepto",
"html": "Acepto los <a href='#' target='_blank' class='c-link' title='Se abre en ventana nueva del navegador'>términos y condiciones</a>",
"hint": {
"text": "Puedes visualizarlos en ventana nueva del navegador"
}
}
]
}) }}
HTML
<!-- checkboxes --><divclass="c-form-group c-form-group--error"><!-- error-message --><pid="t-and-c-with-hint-error"class="block font-semibold text-alert-base"><spanclass="sr-only">Error:</span>Por favor, debes aceptar los términos y condiciones. Soluciona el error.
</p><!-- /error-message --><divclass="c-checkboxes"data-module="c-checkboxes"><divclass=" c-checkboxes__conditional-hidden"><divclass="relative flex items-start py-base"><divclass="flex items-center mx-sm"><inputclass="w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:outline-black focus:outline-1 focus:outline-offset-2 focus:ring-3 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-base disabled:border-neutral-base text-primary-base"id="t-and-c-with-hint"name="t-and-c-with-hint"type="checkbox"value="acepto"aria-describedby="t-and-c-with-hint-item-hint"aria-invalid="true"></div><divclass="pt-0.5 leading-5"><!-- label --><labelclass="block"for="t-and-c-with-hint">Acepto los <ahref="#"target="_blank"class="c-link"title="Se abre en ventana nueva del navegador">términos y condiciones</a></label><!-- /label --><!-- hint --><pid="t-and-c-with-hint-item-hint"class="block text-neutral-dark">Puedes visualizarlos en ventana nueva del navegador</p><!-- /hint --></div></div></div></div></div><!-- /checkboxes -->
Por accesibilidad, los mensajes de error deben incluir la palabra "error", para que no recaiga tan sólo en el color el hecho de que es un mensaje de error.
Error:Tienes que seleccionar al menos una opción. Soluciona el error.
Mostrar códigodel ejemplo: Con fieldset y mensaje de error
Contenido
Nunjucks macro
{%from"components/checkboxes/_macro.checkboxes.njk" import componentCheckboxes %}{{ componentCheckboxes({
"name": "colours",
"errorMessage": {
"text": "Tienes que seleccionar al menos una opción. Soluciona el error."
},
"fieldset": {
"legend": {
"text": "¿Cómo prefieres que te contactemos?"
}
},
"items": [
{
"value": "correo-electronico",
"text": "Correo electrónico"
},
{
"value": "correo-postal",
"text": "Correo postal"
},
{
"value": "telefono",
"text": "Teléfono"
}
]
}) }}
Por accesibilidad, los mensajes de error deben incluir la palabra "error", para que no recaiga tan sólo en el color el hecho de que es un mensaje de error.
Error:Tienes que seleccionar al menos una opción. Soluciona el error.
Mostrar códigodel ejemplo: Con mensaje de error
Contenido
Nunjucks macro
{%from"components/checkboxes/_macro.checkboxes.njk" import componentCheckboxes %}{{ componentCheckboxes({
"idPrefix": "error-message",
"name": "error-message",
"errorMessage": {
"text": "Tienes que seleccionar al menos una opción. Soluciona el error."
},
"fieldset": {
"legend": {
"text": "¿Cómo prefieres que te contactemos?"
}
},
"items": [
{
"value": "correo-electronico",
"text": "Correo electrónico"
},
{
"value": "correp-postal",
"text": "Correo postal"
},
{
"value": "telefono",
"text": "Teléfono"
}
]
}) }}
Por accesibilidad, los mensajes de error deben incluir la palabra "error", para que no recaiga tan sólo en el color el hecho de que es un mensaje de error.
Error:Tienes que seleccionar al menos una opción. Soluciona el error.
Asegúrate de que nuestros correos no lleguen a la bandeja de spam.
Asegúrate de haber introducido correctamente tu dirección.
Sólo enviamos mensajes durante el día.
Mostrar códigodel ejemplo: Con mensaje de error y pistas en los items
Contenido
Nunjucks macro
{%from"components/checkboxes/_macro.checkboxes.njk" import componentCheckboxes %}{{ componentCheckboxes({
"idPrefix": "error-and-hints",
"name": "error-and-hints",
"errorMessage": {
"text": "Tienes que seleccionar al menos una opción. Soluciona el error."
},
"fieldset": {
"legend": {
"text": "¿Cómo prefieres que te contactemos?"
}
},
"items": [
{
"value": "correo-electronico",
"text": "Correo electrónico",
"hint": {
"text": "Asegúrate de que nuestros correos no lleguen a la bandeja de spam."
}
},
{
"value": "correo-postal",
"text": "Correo postal",
"hint": {
"text": "Asegúrate de haber introducido correctamente tu dirección."
}
},
{
"value": "telefono",
"text": "Teléfono",
"hint": {
"text": "Sólo enviamos mensajes durante el día."
}
}
]
}) }}
HTML
<!-- checkboxes --><divclass="c-form-group c-form-group--error"><!-- fieldset --><fieldsetaria-errormessage="error-and-hints-error"><legendclass="font-bold">
¿Cómo prefieres que te contactemos?
</legend><!-- error-message --><pid="error-and-hints-error"class="block font-semibold text-alert-base"><spanclass="sr-only">Error:</span>Tienes que seleccionar al menos una opción. Soluciona el error.
</p><!-- /error-message --><divclass="c-checkboxes"data-module="c-checkboxes"><divclass=" c-checkboxes__conditional-hidden"><divclass="relative flex items-start py-base"><divclass="flex items-center mx-sm"><inputclass="w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:outline-black focus:outline-1 focus:outline-offset-2 focus:ring-3 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-base disabled:border-neutral-base text-primary-base"id="error-and-hints"name="error-and-hints"type="checkbox"value="correo-electronico"aria-describedby="error-and-hints-item-hint"aria-invalid="true"></div><divclass="pt-0.5 leading-5"><!-- label --><labelclass="block"for="error-and-hints">Correo electrónico</label><!-- /label --><!-- hint --><pid="error-and-hints-item-hint"class="block text-neutral-dark">Asegúrate de que nuestros correos no lleguen a la bandeja de spam.</p><!-- /hint --></div></div></div><divclass=" c-checkboxes__conditional-hidden"><divclass="relative flex items-start py-base"><divclass="flex items-center mx-sm"><inputclass="w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:outline-black focus:outline-1 focus:outline-offset-2 focus:ring-3 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-base disabled:border-neutral-base text-primary-base"id="error-and-hints-2"name="error-and-hints"type="checkbox"value="correo-postal"aria-describedby="error-and-hints-2-item-hint"aria-invalid="true"></div><divclass="pt-0.5 leading-5"><!-- label --><labelclass="block"for="error-and-hints-2">Correo postal</label><!-- /label --><!-- hint --><pid="error-and-hints-2-item-hint"class="block text-neutral-dark">Asegúrate de haber introducido correctamente tu dirección.</p><!-- /hint --></div></div></div><divclass=" c-checkboxes__conditional-hidden"><divclass="relative flex items-start py-base"><divclass="flex items-center mx-sm"><inputclass="w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:outline-black focus:outline-1 focus:outline-offset-2 focus:ring-3 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-base disabled:border-neutral-base text-primary-base"id="error-and-hints-3"name="error-and-hints"type="checkbox"value="telefono"aria-describedby="error-and-hints-3-item-hint"aria-invalid="true"></div><divclass="pt-0.5 leading-5"><!-- label --><labelclass="block"for="error-and-hints-3">Teléfono</label><!-- /label --><!-- hint --><pid="error-and-hints-3-item-hint"class="block text-neutral-dark">Sólo enviamos mensajes durante el día.</p><!-- /hint --></div></div></div></div></fieldset><!-- /fieldset --></div><!-- /checkboxes -->
Por accesibilidad, los mensajes de error deben incluir la palabra "error", para que no recaiga tan sólo en el color el hecho de que es un mensaje de error.
Nullam id dolor id nibh ultricies vehicula ut id elit.
Error:Lorem ipsum dolor sit amet, consectetur adipiscing elit. Soluciona el error.
Mostrar códigodel ejemplo: Con un texto de item muy largo
Contenido
Nunjucks macro
{%from"components/checkboxes/_macro.checkboxes.njk" import componentCheckboxes %}{{ componentCheckboxes({
"idPrefix": "long-option",
"name": "long-option",
"hint": {
"text": "Nullam id dolor id nibh ultricies vehicula ut id elit."
},
"errorMessage": {
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Soluciona el error."
},
"fieldset": {
"legend": {
"text": "Maecenas faucibus mollis interdum?"
}
},
"items": [
{
"value": "nullam",
"text": "Nullam id dolor id nibh ultricies vehicula ut id elit. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Maecenas faucibus mollis interdum. Donec id elit non mi porta gravida at eget metus."
},
{
"value": "aenean",
"text": "Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Donec sed odio dui. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Cras mattis consectetur purus sit amet fermentum."
},
{
"value": "fusce",
"text": "Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. Sed posuere consectetur est at lobortis."
}
]
}) }}
HTML
<!-- checkboxes --><divclass="c-form-group c-form-group--error"><!-- fieldset --><fieldsetaria-describedby="long-option-hint"aria-errormessage="long-option-error"><legendclass="font-bold">
Maecenas faucibus mollis interdum?
</legend><!-- hint --><pid="long-option-hint"class="block text-neutral-dark">Nullam id dolor id nibh ultricies vehicula ut id elit.</p><!-- /hint --><!-- error-message --><pid="long-option-error"class="block font-semibold text-alert-base"><spanclass="sr-only">Error:</span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Soluciona el error.
</p><!-- /error-message --><divclass="c-checkboxes"data-module="c-checkboxes"><divclass=" c-checkboxes__conditional-hidden"><divclass="relative flex items-start py-base"><divclass="flex items-center mx-sm"><inputclass="w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:outline-black focus:outline-1 focus:outline-offset-2 focus:ring-3 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-base disabled:border-neutral-base text-primary-base"id="long-option"name="long-option"type="checkbox"value="nullam"aria-invalid="true"></div><divclass="pt-0.5 leading-5"><!-- label --><labelclass="block"for="long-option">Nullam id dolor id nibh ultricies vehicula ut id elit. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Maecenas faucibus mollis interdum. Donec id elit non mi porta gravida at eget metus.</label><!-- /label --></div></div></div><divclass=" c-checkboxes__conditional-hidden"><divclass="relative flex items-start py-base"><divclass="flex items-center mx-sm"><inputclass="w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:outline-black focus:outline-1 focus:outline-offset-2 focus:ring-3 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-base disabled:border-neutral-base text-primary-base"id="long-option-2"name="long-option"type="checkbox"value="aenean"aria-invalid="true"></div><divclass="pt-0.5 leading-5"><!-- label --><labelclass="block"for="long-option-2">Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Donec sed odio dui. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Cras mattis consectetur purus sit amet fermentum.</label><!-- /label --></div></div></div><divclass=" c-checkboxes__conditional-hidden"><divclass="relative flex items-start py-base"><divclass="flex items-center mx-sm"><inputclass="w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:outline-black focus:outline-1 focus:outline-offset-2 focus:ring-3 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-base disabled:border-neutral-base text-primary-base"id="long-option-3"name="long-option"type="checkbox"value="fusce"aria-invalid="true"></div><divclass="pt-0.5 leading-5"><!-- label --><labelclass="block"for="long-option-3">Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. Sed posuere consectetur est at lobortis.</label><!-- /label --></div></div></div></div></fieldset><!-- /fieldset --></div><!-- /checkboxes -->
El contenido de cada condicional es una agrupación, y como tal, se deben agrupar con una etiqueta <fieldset> o bien de una etiqueta <div> con role="group" que tenga un aria-label o aria-labelledby.
Mostrar códigodel ejemplo: Con items condicionales
Usa el parámetro 'checked': true para mostrar un item condicional seleccionado. El contenido de cada condicional es una agrupación, y como tal, se deben agrupar con una etiqueta <fieldset> o bien de una etiqueta <div> con role="group" que tenga un aria-label o aria-labelledby.
Mostrar códigodel ejemplo: Con item condicional seleccionado
Usando el parámetro 'isIndeterminate': true podemos crear un item del checkbox que tenga 3 estados: marcado, desmarcado o indeterminado. El estado indeterminado expresa que hay sólo algún item seleccionado pero no todos. Útil para selecciones múltiples.
Usando los parámetros 'isIndeterminate': true y 'indeterminateChecked': true podemos marcar como estado indeterminado un item que sea de tipo indeterminado.