DESY

Sistema de Diseño del Gobierno de Aragón

Botón de radio

Formularios

Es un elemento que se utiliza cuando solo puede seleccionarse una opción en un listado de varias de ellas.

Radios

Por defecto

¿Quieres que te contactemos por correo electrónico?

Sólo puedes seleccionar un elemento.

Mostrar códigodel ejemplo: Por defecto

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "default",
  "name": "por defecto",
  "fieldset": {
    "legend": {
      "text": "¿Quieres que te contactemos por correo electrónico?"
    }
  },
  "hint": {
    "text": "Sólo puedes seleccionar un elemento."
  },
  "items": [
    {
      "value": "si",
      "text": "Si"
    },
    {
      "value": "no",
      "text": "No",
      "checked": true
    }
  ]
}) }}

En línea

¿Quieres que te contactemos por correo electrónico?

Sólo puedes seleccionar un elemento.

Mostrar códigodel ejemplo: En línea

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "inline",
  "classes": "flex",
  "name": "inline",
  "fieldset": {
    "legend": {
      "text": "¿Quieres que te contactemos por correo electrónico?"
    }
  },
  "hint": {
    "text": "Sólo puedes seleccionar un elemento."
  },
  "items": [
    {
      "value": "si",
      "text": "Si",
      "classes": "mr-sm"
    },
    {
      "value": "no",
      "text": "No",
      "classes": "mr-sm",
      "checked": true
    }
  ]
}) }}

Con deshabilitado

¿Quieres que te contactemos por correo electrónico?

Sólo puedes seleccionar un elemento.

Mostrar códigodel ejemplo: Con deshabilitado

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "example-disabled",
  "name": "example-disabled",
  "fieldset": {
    "legend": {
      "text": "¿Quieres que te contactemos por correo electrónico?"
    }
  },
  "hint": {
    "text": "Sólo puedes seleccionar un elemento."
  },
  "items": [
    {
      "value": "si",
      "text": "Si",
      "disabled": true,
      "checked": true
    },
    {
      "value": "no",
      "text": "No",
      "disabled": true
    }
  ]
}) }}

Con un legend como encabezado

Usa el parámetro 'heading' para añadir un encabezado asociado al componente. Usa el parámetro 'headingLevel' para establecer el nivel del encabezado. Por ejemplo: 'headingLevel': 3 creará un encabezado <h3>.

¿Cómo prefieres que te contactemos?

Selecciona una de las opciones.

Asegúrate de que nuestros correos no lleguen a la bandeja de spam.

Asegúrate de haber introducido correctamente tu dirección.

Mostrar códigodel ejemplo: Con un legend como encabezado

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "legend-as-page-heading",
  "name": "legend-as-page-heading",
  "fieldset": {
    "legend": {
      "text": "¿Cómo prefieres que te contactemos?",
      "classes": "c-h2",
      "isPageHeading": true
    },
    "headingLevel": 2
  },
  "hint": {
    "text": "Selecciona una de las opciones."
  },
  "items": [
    {
      "value": "part-2",
      "text": "Por correo electrónico",
      "hint": {
        "text": "Asegúrate de que nuestros correos no lleguen a la bandeja de spam."
      }
    },
    {
      "value": "part-3",
      "text": "Por correo postal",
      "hint": {
        "text": "Asegúrate de haber introducido correctamente tu dirección."
      }
    }
  ]
}) }}

Con un legend del tamaño de un encabezado h2

¿Cómo prefieres que te contactemos?

Selecciona una de las opciones.

Asegúrate de que nuestros correos no lleguen a la bandeja de spam.

Asegúrate de haber introducido correctamente tu dirección.

Mostrar códigodel ejemplo: Con un legend del tamaño de un encabezado h2

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "medium-legend",
  "name": "medium-legend",
  "fieldset": {
    "legend": {
      "text": "¿Cómo prefieres que te contactemos?",
      "classes": "c-h2"
    }
  },
  "hint": {
    "text": "Selecciona una de las opciones."
  },
  "items": [
    {
      "value": "part-2",
      "text": "Por correo electrónico",
      "hint": {
        "text": "Asegúrate de que nuestros correos no lleguen a la bandeja de spam."
      }
    },
    {
      "value": "part-3",
      "text": "Por correo postal",
      "hint": {
        "text": "Asegúrate de haber introducido correctamente tu dirección."
      }
    }
  ]
}) }}

Con un divisor

¿Cómo prefieres que te contactemos?

o bien

Mostrar códigodel ejemplo: Con un divisor

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "example-divider",
  "name": "example-divider",
  "fieldset": {
    "legend": {
      "text": "¿Cómo prefieres que te contactemos?"
    }
  },
  "items": [
    {
      "value": "correo-electronico",
      "text": "Correo electrónico"
    },
    {
      "value": "correo-postal",
      "text": "Correo postal"
    },
    {
      "divider": "o bien"
    },
    {
      "value": "telefono",
      "text": "Teléfono"
    }
  ]
}) }}

Con pistas en los items

¿Cómo prefieres que te contactemos?

Asegúrate de que el correo no llega a la bandeja de spam.

Asegúrate de haber introducido la dirección postal correctamente.

Mostrar códigodel ejemplo: Con pistas en los items

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "hints-on-items",
  "name": "hints-on-items",
  "fieldset": {
    "legend": {
      "text": "¿Cómo prefieres que te contactemos?",
      "isPageHeading": true
    }
  },
  "items": [
    {
      "value": "correo-electronico",
      "text": "Correo electrónico",
      "hint": {
        "text": "Asegúrate de que el correo no llega a la bandeja de spam."
      }
    },
    {
      "value": "correo-postal",
      "text": "Correo postal",
      "hint": {
        "text": "Asegúrate de haber introducido la dirección postal correctamente."
      }
    }
  ]
}) }}

Con líneas divisorias

¿Cómo prefieres que te contactemos?

Sólo puedes elegir un elemento.

Asegúrate de que el correo no llega a la bandeja de spam.

Asegúrate de haber introducido la dirección postal correctamente.

Mostrar códigodel ejemplo: Con líneas divisorias

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "has-dividers",
  "name": "has-dividers",
  "fieldset": {
    "legend": {
      "text": "¿Cómo prefieres que te contactemos?"
    }
  },
  "hint": {
    "text": "Sólo puedes elegir un elemento."
  },
  "hasDividers": true,
  "items": [
    {
      "value": "correo-electronico",
      "text": "Correo electrónico",
      "classes": "font-normal",
      "hint": {
        "text": "Asegúrate de que el correo no llega a la bandeja de spam."
      }
    },
    {
      "value": "correo-postal",
      "text": "Correo postal",
      "hint": {
        "text": "Asegúrate de haber introducido la dirección postal correctamente."
      }
    }
  ]
}) }}

Con clases de css aplicadas

Los parámetros classes nos permiten aplicar clases de Tailwind CSS a nuestro componente.

¿Cómo prefieres que te contactemos?

Asegúrate de que el correo no llega a la bandeja de spam.

Asegúrate de haber introducido la dirección postal correctamente.

Mostrar códigodel ejemplo: Con clases de css aplicadas

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "classes",
  "name": "classes",
  "fieldset": {
    "legend": {
      "text": "¿Cómo prefieres que te contactemos?",
      "isPageHeading": true
    }
  },
  "items": [
    {
      "value": "correo-electronico",
      "text": "Correo electrónico",
      "hint": {
        "text": "Asegúrate de que el correo no llega a la bandeja de spam."
      },
      "classes": "bg-primary-light"
    },
    {
      "value": "correo-postal",
      "text": "Correo postal",
      "hint": {
        "text": "Asegúrate de haber introducido la dirección postal correctamente."
      },
      "classes": "bg-neutral-lighter"
    }
  ]
}) }}

Sin fieldset

Usa este ejemplo si vas a escribir tú mismo un fieldset, rodeándolo. Recuerda que el uso de fieldset es necesario por accesibilidad.

Mostrar códigodel ejemplo: Sin fieldset

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "without-fieldset",
  "name": "without-fieldset",
  "items": [
    {
      "value": "correo-electronico",
      "text": "Correo electrónico"
    },
    {
      "value": "correp-postal",
      "text": "Correo postal"
    },
    {
      "value": "telefono",
      "text": "Teléfono"
    }
  ]
}) }}

Con fieldset y mensaje de error

¿Quieres que te contactemos por correo electrónico?

Error:Tienes que seleccionar al menos una opción

Mostrar códigodel ejemplo: Con fieldset y mensaje de error

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "fieldset-and-error",
  "name": "fieldset-and-error",
  "errorMessage": {
    "text": "Tienes que seleccionar al menos una opción"
  },
  "fieldset": {
    "legend": {
      "text": "¿Quieres que te contactemos por correo electrónico?"
    }
  },
  "items": [
    {
      "value": "si",
      "text": "Si"
    },
    {
      "value": "no",
      "text": "No",
      "checked": true
    }
  ]
}) }}

Con un texto de item muy largo

Maecenas faucibus mollis interdum?

Nullam id dolor id nibh ultricies vehicula ut id elit.

Error:Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Mostrar códigodel ejemplo: Con un texto de item muy largo

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "very-long",
  "name": "very-long",
  "hint": {
    "text": "Nullam id dolor id nibh ultricies vehicula ut id elit."
  },
  "errorMessage": {
    "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
  },
  "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."
    }
  ]
}) }}

Con items condicionales

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.

¿Cómo quieres que te contactemos?
¿Cuál es tu número de teléfono móvil?
¿Cuál es tu número de teléfono fijo?
Mostrar códigodel ejemplo: Con items condicionales

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "conditional-items",
  "name": "conditional-items",
  "fieldset": {
    "legend": {
      "text": "¿Cómo quieres que te contactemos?"
    }
  },
  "items": [
    {
      "value": "correo-electronico",
      "text": "Correo electrónico",
      "conditional": {
        "html": "<!-- fieldset -->\n<fieldset>\n  <legend class=\"mb-sm sr-only\">\n    ¿Cuál es tu número de teléfono móvil?\n  </legend>\n      <div class=\"c-form-group\">\n      <!-- input -->\n  <div class=\"c-form-group\">\n    <!-- label -->\n    <label class=\"block\" for=\"mobile-1\">Número de teléfono móvil</label>\n    <!-- /label -->\n    <input class=\"c-input block mt-sm border-black rounded-sm font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base\" id=\"mobile-1\" name=\"mobile-name-1\" type=\"text\">\n  </div>\n  <!-- /input -->\n      </div>\n  </fieldset>\n<!-- /fieldset -->"
      }
    },
    {
      "value": "telefono",
      "text": "Teléfono",
      "checked": true,
      "conditional": {
        "html": "<!-- fieldset -->\n<fieldset>\n  <legend class=\"mb-sm sr-only\">\n    ¿Cuál es tu número de teléfono fijo?\n  </legend>\n      <div class=\"c-form-group\">\n      <!-- input -->\n  <div class=\"c-form-group\">\n    <!-- label -->\n    <label class=\"block\" for=\"telefono-2\">Número de teléfono fijo</label>\n    <!-- /label -->\n    <input class=\"c-input block mt-sm border-black rounded-sm font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base\" id=\"telefono-2\" name=\"telefono-name-2\" type=\"text\">\n  </div>\n  <!-- /input -->\n      </div>\n  </fieldset>\n<!-- /fieldset -->"
      }
    },
    {
      "value": "mensaje-SMS",
      "text": "Sin conditional"
    }
  ]
}) }}

Con item condicional seleccionado

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.

¿Cómo quieres que te contactemos?
¿Cuál es tu número de teléfono fijo?
¿Cuál es tu número de teléfono móvil?
¿Cuál es tu número de teléfono móvil?
Mostrar códigodel ejemplo: Con item condicional seleccionado

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "conditional-item-checked",
  "name": "conditional-item-checked",
  "fieldset": {
    "legend": {
      "text": "¿Cómo quieres que te contactemos?"
    }
  },
  "items": [
    {
      "value": "correo-electronico",
      "text": "Correo electrónico",
      "conditional": {
        "html": "<!-- fieldset -->\n<fieldset>\n  <legend class=\"mb-sm sr-only\">\n    ¿Cuál es tu número de teléfono fijo?\n  </legend>\n      <div class=\"c-form-group\">\n      <!-- input -->\n  <div class=\"c-form-group\">\n    <!-- label -->\n    <label class=\"block\" for=\"telefono-4\">Número de teléfono fijo</label>\n    <!-- /label -->\n    <input class=\"c-input block mt-sm border-black rounded-sm font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base\" id=\"telefono-4\" name=\"telefono-name-4\" type=\"text\">\n  </div>\n  <!-- /input -->\n      </div>\n  </fieldset>\n<!-- /fieldset -->"
      }
    },
    {
      "value": "telefono",
      "text": "Teléfono",
      "checked": true,
      "conditional": {
        "html": "<!-- fieldset -->\n<fieldset>\n  <legend class=\"mb-sm sr-only\">\n    ¿Cuál es tu número de teléfono móvil?\n  </legend>\n      <div class=\"c-form-group\">\n      <!-- input -->\n  <div class=\"c-form-group\">\n    <!-- label -->\n    <label class=\"block\" for=\"mobile-5\">Número de teléfono móvil</label>\n    <!-- /label -->\n    <input class=\"c-input block mt-sm border-black rounded-sm font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base\" id=\"mobile-5\" name=\"mobile-name-5\" type=\"text\">\n  </div>\n  <!-- /input -->\n      </div>\n  </fieldset>\n<!-- /fieldset -->"
      }
    },
    {
      "value": "mensaje-SMS",
      "text": "Mensaje SMS",
      "conditional": {
        "html": "<!-- fieldset -->\n<fieldset>\n  <legend class=\"mb-sm sr-only\">\n    ¿Cuál es tu número de teléfono móvil?\n  </legend>\n      <div class=\"c-form-group\">\n      <!-- input -->\n  <div class=\"c-form-group\">\n    <!-- label -->\n    <label class=\"block\" for=\"mobile-6\">Número de teléfono móvil</label>\n    <!-- /label -->\n    <input class=\"c-input block mt-sm border-black rounded-sm font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base\" id=\"mobile-6\" name=\"mobile-name-6\" type=\"text\">\n  </div>\n  <!-- /input -->\n      </div>\n  </fieldset>\n<!-- /fieldset -->"
      }
    }
  ]
}) }}

Con clases opcionales del form-group mostrando un error del grupo

¿Cómo quieres que te contactemos?
¿Cuál es tu número de teléfono fijo?
¿Cuál es tu número de teléfono móvil?

Error:Este campo no puede estar vacío

¿Cuál es tu número de teléfono móvil?
Mostrar códigodel ejemplo: Con clases opcionales del form-group mostrando un error del grupo

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "classes-group-error",
  "name": "classes-group-error",
  "formGroup": {
    "classes": "c-form-group--error"
  },
  "fieldset": {
    "legend": {
      "text": "¿Cómo quieres que te contactemos?"
    }
  },
  "items": [
    {
      "value": "correo-electronico",
      "text": "Correo electrónico",
      "conditional": {
        "html": "<!-- fieldset -->\n<fieldset>\n  <legend class=\"mb-sm sr-only\">\n    ¿Cuál es tu número de teléfono fijo?\n  </legend>\n      <div class=\"c-form-group\">\n      <!-- input -->\n  <div class=\"c-form-group\">\n    <!-- label -->\n    <label class=\"block\" for=\"telefono-5\">Número de teléfono fijo</label>\n    <!-- /label -->\n    <input class=\"c-input block mt-sm border-black rounded-sm font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base\" id=\"telefono-5\" name=\"telefono-name-5\" type=\"text\">\n  </div>\n  <!-- /input -->\n      </div>\n  </fieldset>\n<!-- /fieldset -->"
      }
    },
    {
      "value": "telefono",
      "text": "Teléfono",
      "checked": true,
      "conditional": {
        "html": "<!-- fieldset -->\n<fieldset>\n  <legend class=\"mb-sm sr-only\">\n    ¿Cuál es tu número de teléfono móvil?\n  </legend>\n      <div class=\"c-form-group\">\n        <!-- input -->\n  <div class=\"c-form-group c-form-group--error\">\n    <!-- label -->\n    <label class=\"block\" for=\"input-with-error-message-1\">Número de teléfono móvil</label>\n    <!-- /label -->\n    <!-- error-message -->\n    <p id=\"input-with-error-message-1-error\" class=\"block font-semibold text-alert-base\">\n      <span class=\"sr-only\">Error:</span>Este campo no puede estar vacío\n    </p>\n    <!-- /error-message -->\n    <input class=\"c-input block mt-sm border-black rounded-sm font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base border-alert-base ring-2 ring-alert-base \" id=\"input-with-error-message-1\" name=\"test-name-1\" type=\"text\" aria-errormessage=\"input-with-error-message-1-error\" aria-invalid=\"true\">\n  </div>\n  <!-- /input -->\n      </div>\n  </fieldset>\n<!-- /fieldset -->"
      }
    },
    {
      "value": "mensaje-SMS",
      "text": "Mensaje SMS",
      "conditional": {
        "html": "<!-- fieldset -->\n<fieldset>\n  <legend class=\"mb-sm sr-only\">\n    ¿Cuál es tu número de teléfono móvil?\n  </legend>\n      <div class=\"c-form-group\">\n      <!-- input -->\n  <div class=\"c-form-group\">\n    <!-- label -->\n    <label class=\"block\" for=\"mobile-7\">Número de teléfono móvil</label>\n    <!-- /label -->\n    <input class=\"c-input block mt-sm border-black rounded-sm font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base\" id=\"mobile-7\" name=\"mobile-name-7\" type=\"text\">\n  </div>\n  <!-- /input -->\n      </div>\n  </fieldset>\n<!-- /fieldset -->"
      }
    }
  ]
}) }}

Peque

Mostrar códigodel ejemplo: Peque

Contenido

Nunjucks macro
{% from "components/radios/_macro.radios.njk" import componentRadios %}
{{ componentRadios({
  "idPrefix": "small",
  "name": "peque",
  "classes": "c-radios--sm",
  "items": [
    {
      "value": "si",
      "text": "Si",
      "classes": "-mt-base",
      "label": {
        "classes": "text-sm -mt-1"
      }
    },
    {
      "value": "no",
      "text": "No",
      "classes": "-mt-base",
      "label": {
        "classes": "text-sm -mt-1"
      }
    }
  ]
}) }}