desy-html 13.0.1 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/docs/_include.template-header.njk +5 -0
  2. package/docs/_macro.example-render.njk +5 -0
  3. package/docs/componentes.html +3 -0
  4. package/docs/ds/_ds.example.checkboxes.njk +1 -1
  5. package/docs/ds/_ds.example.date-input.njk +3 -3
  6. package/docs/ds/_ds.example.file-upload.njk +1 -1
  7. package/docs/ds/_ds.example.input-group.njk +1 -1
  8. package/docs/ds/_ds.example.input.njk +5 -5
  9. package/docs/ds/_ds.example.radios.njk +1 -1
  10. package/docs/ds/_ds.example.searchbar.njk +1 -1
  11. package/docs/ds/_ds.example.select.njk +5 -5
  12. package/docs/ds/_ds.example.textarea.njk +7 -7
  13. package/docs/examples-treegrid.html +8 -0
  14. package/docs/index.html +8 -0
  15. package/gulpfile.js +15 -1
  16. package/package.json +2 -1
  17. package/src/css/styles.css +1 -0
  18. package/src/js/aria/MenuNavigation.js +12 -3
  19. package/src/js/aria/tree.js +320 -31
  20. package/src/js/aria/treegrid.js +508 -0
  21. package/src/js/aria/treeitem.js +25 -19
  22. package/src/js/desy-html.js +37 -31
  23. package/src/js/index.js +12 -10
  24. package/src/templates/components/character-count/_examples.character-count.njk +3 -15
  25. package/src/templates/components/checkboxes/_examples.checkboxes.njk +67 -86
  26. package/src/templates/components/date-input/_examples.date-input.njk +15 -15
  27. package/src/templates/components/datepicker/_examples.datepicker.njk +7 -6
  28. package/src/templates/components/datepicker/_template.datepicker.njk +0 -1
  29. package/src/templates/components/description-list/_examples.description-list.njk +2 -2
  30. package/src/templates/components/dialog/_examples.dialog.njk +2 -2
  31. package/src/templates/components/dropdown/_examples.dropdown.njk +3 -3
  32. package/src/templates/components/error-message/_examples.error-message.njk +4 -2
  33. package/src/templates/components/error-summary/params.error-summary.yaml +0 -3
  34. package/src/templates/components/fieldset/_examples.fieldset.njk +2 -29
  35. package/src/templates/components/file-upload/_examples.file-upload.njk +4 -15
  36. package/src/templates/components/header-advanced/_template.header-advanced.njk +1 -0
  37. package/src/templates/components/hint/params.hint.yaml +0 -14
  38. package/src/templates/components/input/_examples.input.njk +9 -45
  39. package/src/templates/components/input-group/_examples.input-group.njk +19 -18
  40. package/src/templates/components/item/_examples.item.njk +1 -0
  41. package/src/templates/components/media-object/_examples.media-object.njk +6 -5
  42. package/src/templates/components/menubar/_template.menubar.njk +2 -2
  43. package/src/templates/components/menubar/params.menubar.yaml +0 -10
  44. package/src/templates/components/modal/_examples.modal.njk +1 -1
  45. package/src/templates/components/notification/_examples.notification.njk +8 -2
  46. package/src/templates/components/pill/_examples.pill.njk +2 -1
  47. package/src/templates/components/radios/_examples.radios.njk +56 -91
  48. package/src/templates/components/searchbar/_examples.searchbar.njk +2 -1
  49. package/src/templates/components/select/_examples.select.njk +3 -29
  50. package/src/templates/components/status-item/_examples.status-item.njk +1 -0
  51. package/src/templates/components/table-advanced/params.table-advanced.yaml +1 -1
  52. package/src/templates/components/textarea/_examples.textarea.njk +3 -14
  53. package/src/templates/components/tree/_examples.tree.njk +157 -3
  54. package/src/templates/components/tree/_template.tree.njk +112 -101
  55. package/src/templates/components/tree/params.tree.yaml +4 -0
  56. package/src/templates/components/treegrid/_examples.treegrid.njk +1240 -0
  57. package/src/templates/components/treegrid/_macro.treegrid.njk +3 -0
  58. package/src/templates/components/treegrid/_styles.treegrid.css +39 -0
  59. package/src/templates/components/treegrid/_template.treegrid.njk +91 -0
  60. package/src/templates/components/treegrid/params.treegrid.yaml +132 -0
@@ -194,7 +194,7 @@
194
194
  "text": "Elige tus días disponibles"
195
195
  },
196
196
  "hint": {
197
- "html": "Usa el formato: <span aria-hidden='true'>DD-MM-AAAA (día-mes-año)</span><span class='sr-only'>día con dos dígitos, guión simple, mes con dos dígitos, guión simple y año con 4 dígitos.</span> Separa tus fechas con un espacio."
197
+ "html": "Para incluir las fechas en el campo de texto usa el formato de fecha <span aria-hidden='true'>DD-MM-AAAA (día-mes-año).</span><span class='sr-only'>día con dos dígitos, guión simple, mes con dos dígitos, guión simple y año con 4 dígitos.</span> Separa las fechas mediante un espacio. Para seleccionar varios días en el calendario, pulsa los días que quieres seleccionar."
198
198
  },
199
199
  "value": "10-01-2024 20-01-2024",
200
200
  "caller": calendarMultiExample | safe
@@ -206,10 +206,10 @@
206
206
  "id": "datepicker-range3",
207
207
  "name": "test-name",
208
208
  "label": {
209
- "text": "Elige tus días disponibles"
209
+ "text": "Elige tu rango de días disponibles"
210
210
  },
211
211
  "hint": {
212
- "html": "Usa el formato: <span aria-hidden='true'>DD-MM-AAAA (día-mes-año)</span><span class='sr-only'>día con dos dígitos, guión simple, mes con dos dígitos, guión simple y año con 4 dígitos.</span> Separa la fecha inicial de la final con una barra /."
212
+ "html": "Para incluir el rango de fechas en el campo de texto usa el formato de fecha <span aria-hidden='true'>DD-MM-AAAA (día-mes-año).</span><span class='sr-only'>día con dos dígitos, guión simple, mes con dos dígitos, guión simple y año con 4 dígitos.</span> Separa la fecha inicial de la final con una barra /. Para seleccionar un rango de fechas en el calendario, pulsa el primer día del rango, desplázate hasta el último día del rango y púlsalo."
213
213
  },
214
214
  "value": "10-01-2024/20-01-2024",
215
215
  "caller": calendarRangeExample | safe
@@ -221,10 +221,10 @@
221
221
  "id": "datepicker-with-hint-text-and-year",
222
222
  "name": "test-name",
223
223
  "label": {
224
- "text": "Elige tus días disponibles"
224
+ "text": "Elige tu rango de días disponibles"
225
225
  },
226
226
  "hint": {
227
- "html": "Usa el formato: <span aria-hidden='true'>DD-MM-AAAA (día-mes-año)</span><span class='sr-only'>día con dos dígitos, guión simple, mes con dos dígitos, guión simple y año con 4 dígitos.</span> Separa la fecha inicial de la final con una /."
227
+ "html": "Para incluir el rango de fechas en el campo de texto usa el formato de fecha <span aria-hidden='true'>DD-MM-AAAA (día-mes-año).</span><span class='sr-only'>día con dos dígitos, guión simple, mes con dos dígitos, guión simple y año con 4 dígitos.</span> Separa la fecha inicial de la final con una barra /. Para seleccionar un rango de fechas en el calendario, pulsa el primer día del rango, desplázate hasta el último día del rango y púlsalo."
228
228
  },
229
229
  "value": "16-01-2024/04-02-2024",
230
230
  "caller": calendarRangeExample2('datepicker-with-hint-text-and-year') | safe
@@ -248,6 +248,7 @@
248
248
  },
249
249
  {
250
250
  "name": "Con mensaje de error",
251
+ "description": "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.",
251
252
  "data": {
252
253
  "id": "datepicker-with-error-message",
253
254
  "name": "test-name",
@@ -258,7 +259,7 @@
258
259
  "html": "Usa el formato: <span aria-hidden='true'>DD-MM-AAAA (día-mes-año)</span><span class='sr-only'>día con dos dígitos, guión simple, mes con dos dígitos, guión simple y año con 4 dígitos.</span>"
259
260
  },
260
261
  "errorMessage": {
261
- "text": "Error: Esto es un mensaje de error",
262
+ "text": "Esto es un mensaje de error",
262
263
  "classes": "mt-xs"
263
264
  },
264
265
  "pattern": "(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))",
@@ -52,7 +52,6 @@
52
52
  {% if params.errorMessage %}
53
53
  {% if not params.errorId %}
54
54
  {% set errorId = params.id + '-error' %}
55
- {% set describedBy = describedBy + ' ' + errorId if describedBy else errorId %}
56
55
  {% endif %}
57
56
  {{ componentErrorMessage({
58
57
  id: errorId,
@@ -395,11 +395,11 @@
395
395
  "items": [
396
396
  {
397
397
  "term": {
398
- "html": "Expedientes abiertos &darr;",
398
+ "html": "Expedientes abiertos <span aria-hidden='true'>&darr;</span>",
399
399
  "classes": "mb-sm"
400
400
  },
401
401
  "definition": {
402
- "html": "<span class='font-bold text-4xl'>45</span> <svg class='inline-block align-baseline ml-sm' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140' width='1.6rem' height='1.6rem'><path d='M140 20a20 20 0 00-20-20H20A20 20 0 000 20v100a20 20 0 0020 20h70a10 10 0 007.07-2.93l40-40A10 10 0 00140 90zM20 22.5a2.5 2.5 0 012.5-2.5h95a2.5 2.5 0 012.5 2.5v55a2.5 2.5 0 01-2.5 2.5H95a15 15 0 00-15 15v22.5a2.5 2.5 0 01-2.5 2.5h-55a2.5 2.5 0 01-2.5-2.5z'/></svg><a href='/' class='c-link block mt-sm font-normal text-sm'>Ver todos</a>"
402
+ "html": "<span class='font-bold text-4xl'>45</span> <svg role='img' aria-label='expedientes' class='inline-block align-baseline ml-sm' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140' width='1.6rem' height='1.6rem'><path d='M140 20a20 20 0 00-20-20H20A20 20 0 000 20v100a20 20 0 0020 20h70a10 10 0 007.07-2.93l40-40A10 10 0 00140 90zM20 22.5a2.5 2.5 0 012.5-2.5h95a2.5 2.5 0 012.5 2.5v55a2.5 2.5 0 01-2.5 2.5H95a15 15 0 00-15 15v22.5a2.5 2.5 0 01-2.5 2.5h-55a2.5 2.5 0 01-2.5-2.5z'/></svg><a href='/' class='c-link block mt-sm font-normal text-sm'>Ver todos</a>"
403
403
  }
404
404
  }
405
405
  ],
@@ -29,7 +29,7 @@
29
29
  "text": "Editar servicio publicado"
30
30
  },
31
31
  "description": {
32
- "html": "Actualmente este servicio está publicado. <br>Los cambios realizados no serán visibles hasta que sean validados"
32
+ "text": "Actualmente este servicio está publicado. Los cambios realizados no serán visibles hasta que sean validados"
33
33
  },
34
34
  "itemsPrimary": [
35
35
  {
@@ -56,7 +56,7 @@
56
56
  "text": "Servicio publicado"
57
57
  },
58
58
  "description": {
59
- "html": "Actualmente este servicio está publicado. <br>Los cambios realizados no serán visibles hasta que sean validados"
59
+ "text": "Actualmente este servicio está publicado. Los cambios realizados no serán visibles hasta que sean validados"
60
60
  },
61
61
  "itemsSecondary": [
62
62
  {
@@ -116,8 +116,8 @@
116
116
  "data": {
117
117
  "text": "Dropdown anchura completa",
118
118
  "classes": "w-full justify-between",
119
- "classesTooltip": "w-max max-h-64 overflow-y-auto",
120
- "caller": "<div class=' p-2 '><div class=' border-4 border-dashed border-gray-200 rounded-lg h-64 '><div style=' width:900px '></div></div></div>"
119
+ "classesTooltip": "w-max max-h-40 overflow-y-auto",
120
+ "caller": "<div class=' p-2 '><div class=' border-4 border-dashed border-gray-200 rounded-lg h-64 '><div style=' width:120px '></div></div></div>"
121
121
  }
122
122
  },
123
123
  {
@@ -125,7 +125,7 @@
125
125
  "description": 'Usa los atributos <code>data-aria-haspopup="dialog" data-role="dialog" data-aria-modal="false" data-aria-label="Información adicional"</code> para abrir un desplegable que no contenga un menú, por ejemplo un panel informativo.',
126
126
  "data": {
127
127
  "text": "Marta Pérez",
128
- "caller": "<div class=\" w-48 p-2 \"><div class=\" border-4 border-dashed border-gray-200 rounded-lg h-40 \"></div></div>",
128
+ "caller": "<div class=' w-48 p-2 '><div class=' border-4 border-dashed border-gray-200 rounded-lg h-40 '></div></div>",
129
129
  "attributes": {
130
130
  "data-aria-haspopup": "dialog",
131
131
  "data-role": "dialog",
@@ -2,14 +2,16 @@
2
2
  {% set examples = [
3
3
  {
4
4
  "name": "por defecto",
5
+ "description": "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.",
5
6
  "data": {
6
- "text": "Error: esto es un mensaje de error"
7
+ "text": "Esto es un mensaje de error"
7
8
  }
8
9
  },
9
10
  {
10
11
  "name": "con HTML",
12
+ "description": "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.",
11
13
  "data": {
12
- "html": "Error: esto es un <em>mensaje de error con HTML</em>"
14
+ "html": "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140' width='1em' height='1em' class='w-4 h-4 mr-xs align-baseline text-alert-base inline-block' role='img' aria-label='Alerta'><path d='M138.42 118.29l-55-110a15 15 0 00-26.84 0l-55 110A15 15 0 0015 140h110a15 15 0 0013.42-21.71zM62.5 50a7.5 7.5 0 0115 0v30a7.5 7.5 0 01-15 0zm7.5 70a10 10 0 1110-10 10 10 0 01-10 10z' fill='currentColor' /></svg>Esto es un mensaje de error con HTML"
13
15
  }
14
16
  }
15
17
  ] %}
@@ -48,6 +48,3 @@ params:
48
48
  type: object
49
49
  required: false
50
50
  description: HTML attributes (for example data attributes) to add to the error-summary container.
51
-
52
- accessibilityCriteria: |
53
- - Must be focused when the page loads
@@ -18,7 +18,7 @@
18
18
  "id": "tel-error-id-" + id,
19
19
  "name": "tel-error-name-" + id,
20
20
  "errorMessage": {
21
- "text": "Error: Mensaje de error aqui"
21
+ "text": "Mensaje de error aqui"
22
22
  }
23
23
  }) }}
24
24
  {% endmacro %}
@@ -38,7 +38,7 @@
38
38
  },
39
39
  {
40
40
  "name": "con error",
41
- "description": "Mostrar código para visualizar el <code>aria-describedby</code>, el <code>aria-errormessage</code> y <code>aria-invalid='true'</code> aplicado en el HTML.",
41
+ "description": "Mostrar código para visualizar el <code>aria-describedby</code>, el <code>aria-errormessage</code> y <code>aria-invalid='true'</code> aplicado en el HTML. El <code>aria-errormessage</code> se asocia al fieldset, en vez de a un campo concreto, cuando el error hace referencia a los elementos en su conjunto. Debería apuntar al id de un mensaje de error que describa el problema general del fieldset.",
42
42
  "data": {
43
43
  "legend": {
44
44
  "text": "¿Cuál es tu número de teléfono?",
@@ -48,33 +48,6 @@
48
48
  "caller": callerErrorExample('1').val
49
49
  }
50
50
  },
51
- {
52
- "name": "con label como encabezado",
53
- "description": "Utiliza el parámetro <code>'isPageheading': true</code> para que el label esté dentro de un encabezado. Usa el parámetro <code>'headingLevel'</code> para establecer el nivel del encabezado. Por ejemplo: <code>'headingLevel': 3</code> creará un encabezado <code>&lt;h3&gt;</code>. Si no se establece un <code>'headingLevel'</code>, por defecto usará un <code>&lt;h1&gt;</code>.",
54
- "data": {
55
- "legend": {
56
- "text": "¿Cuál es tu número de teléfono?",
57
- "classes": "c-h1 mb-sm",
58
- "isPageHeading": true
59
- },
60
- "caller": callerExample('2').val
61
-
62
- }
63
- },
64
- {
65
- "name": "con label como encabezado con h3",
66
- "description": "Utiliza el parámetro <code>'isPageheading': true</code> para que el label esté dentro de un encabezado. Usa el parámetro <code>'headingLevel'</code> para establecer el nivel del encabezado. Por ejemplo: <code>'headingLevel': 3</code> creará un encabezado <code>&lt;h3&gt;</code>.",
67
- "data": {
68
- "legend": {
69
- "text": "¿Cuál es tu número de teléfono?",
70
- "classes": "c-h3 mb-sm",
71
- "isPageHeading": true
72
- },
73
- "headingLevel": 3,
74
- "caller": callerExample('3').val
75
-
76
- }
77
- },
78
51
  {
79
52
  "name": "con clases de css aplicadas",
80
53
  "data": {
@@ -20,13 +20,14 @@
20
20
  "text": "Sube una foto"
21
21
  },
22
22
  "hint": {
23
- "text": "Tu foto puede estar en tus Imágenes, Fotos, Descargas o el Escritorio. O en una aplicación como Fotos."
23
+ "text": "Formato de imágenes admitidas: jpg, jpeg, png, gif. Tamaño de archivo máximo admitido: 10 Mb."
24
24
  },
25
25
  "classes": "overflow-x-auto max-w-64 lg:w-full lg:max-w-none"
26
26
  }
27
27
  },
28
28
  {
29
29
  "name": "con mensaje de error",
30
+ "description": "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.",
30
31
  "data": {
31
32
  "id": "file-upload-3",
32
33
  "name": "file-upload-3",
@@ -34,10 +35,10 @@
34
35
  "text": "Sube un archivo"
35
36
  },
36
37
  "hint": {
37
- "text": "Tu foto puede estar en tus Imágenes, Fotos, Descargas o el Escritorio. O en una aplicación como Fotos."
38
+ "text": "Formato de imágenes admitidas: jpg, jpeg, png, gif. Tamaño de archivo máximo admitido: 10 Mb."
38
39
  },
39
40
  "errorMessage": {
40
- "text": "Error: esto es un mensaje de error"
41
+ "text": "Esto es un mensaje de error"
41
42
  },
42
43
  "classes": "overflow-x-auto max-w-64 lg:w-full lg:max-w-none"
43
44
  }
@@ -56,18 +57,6 @@
56
57
  "classes": "overflow-x-auto max-w-64 lg:w-full lg:max-w-none"
57
58
  }
58
59
  },
59
- {
60
- "name": "con label como encabezado",
61
- "data": {
62
- "id": "file-upload-5",
63
- "name": "file-upload-5",
64
- "label": {
65
- "text": "Sube un archivo",
66
- "isPageHeading": true
67
- },
68
- "classes": "overflow-x-auto max-w-64 lg:w-full lg:max-w-none"
69
- }
70
- },
71
60
  {
72
61
  "name": "con clases de form-group opcionales",
73
62
  "data": {
@@ -89,6 +89,7 @@
89
89
  idPrefix: "header-nav-item",
90
90
  items: params.navigation.items,
91
91
  attributes: {
92
+ "id": "header-nav-item",
92
93
  "aria-label": "Menú principal"
93
94
  }
94
95
  }) | trim | indent(14) }}
@@ -19,17 +19,3 @@ params:
19
19
  type: object
20
20
  required: false
21
21
  description: HTML attributes (for example data attributes) to add to the hint span tag.
22
-
23
- accessibilityCriteria: |
24
- When used with a single input, the hint MUST:
25
- - be announced by screen readers when the input is focussed
26
-
27
- When used with a group of multiple inputs (such as within a fieldset), the
28
- hint MUST:
29
- - be announced by screen readers when focussing the first input within the
30
- group (first in this case refers to the focus order, not the DOM - if the
31
- user is traversing backwards through the page then this would be the last
32
- input within the group in the DOM)
33
-
34
- When used with a group of multiple inputs, the hint SHOULD NOT:
35
- - be announced every time for each individual input
@@ -36,6 +36,7 @@
36
36
  },
37
37
  {
38
38
  "name": "con mensaje de error",
39
+ "description": "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.",
39
40
  "data": {
40
41
  "label": {
41
42
  "text": "Esto es un label"
@@ -46,12 +47,13 @@
46
47
  "id": "input-with-error-message-a",
47
48
  "name": "test-name",
48
49
  "errorMessage": {
49
- "text": "Error: esto es un mensaje de error"
50
+ "text": "Esto es un mensaje de error"
50
51
  }
51
52
  }
52
53
  },
53
54
  {
54
55
  "name": "con mensaje de error con id personalizado",
56
+ "description": "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.",
55
57
  "data": {
56
58
  "label": {
57
59
  "text": "Esto es un label"
@@ -63,7 +65,7 @@
63
65
  "name": "test-name",
64
66
  "errorId": "custom-error-id",
65
67
  "errorMessage": {
66
- "text": "Error: esto es un mensaje de error"
68
+ "text": "Esto es un mensaje de error"
67
69
  }
68
70
  }
69
71
  },
@@ -112,17 +114,6 @@
112
114
  "classes": "w-32"
113
115
  }
114
116
  },
115
- {
116
- "name": "con label como encabezado",
117
- "data": {
118
- "label": {
119
- "text": "Esto es un label",
120
- "isPageHeading": true
121
- },
122
- "id": "input-with-page-heading",
123
- "name": "test-name"
124
- }
125
- },
126
117
  {
127
118
  "name": "con clases de form-group opcionales",
128
119
  "data": {
@@ -199,7 +190,7 @@
199
190
  "id": "classes-applied-b",
200
191
  "name": "classes-applied-b",
201
192
  "errorMessage": {
202
- "text": "Error: Esto es un mensaje de error",
193
+ "text": "Esto es un mensaje de error",
203
194
  "classes": "order-1 w-full pt-sm"
204
195
  },
205
196
  "classes": "lg:flex-1"
@@ -230,10 +221,14 @@
230
221
  },
231
222
  {
232
223
  "name": "placeholder",
224
+ "description": "El atributo <code>placeholder</code> proporciona un texto de ejemplo que se muestra en el campo de entrada cuando está vacío. Intenta usar la pista con el atributo <code>hint</code> en su lugar ya que es más accesible. El placeholder debe ser un apoyo a la pista, no un sustituto.",
233
225
  "data": {
234
226
  "label": {
235
227
  "text": "Esto es un label"
236
228
  },
229
+ "hint": {
230
+ "text": "Esto es una pista."
231
+ },
237
232
  "id": "con-placeholder",
238
233
  "name": "placeholder",
239
234
  "placeholder": "Esto es un placeholder"
@@ -264,37 +259,6 @@
264
259
  "describedBy": "input-example-a"
265
260
  }
266
261
  },
267
- {
268
- "name": "error con describedBy",
269
- "data": {
270
- "label": {
271
- "text": "Error con describedBy"
272
- },
273
- "id": "with-describedby-c",
274
- "name": "with-describedby-c",
275
- "describedBy": "input-example-a",
276
- "errorMessage": {
277
- "text": "Error: esto es un mensaje de error"
278
- }
279
- }
280
- },
281
- {
282
- "name": "con error, pista y describedBy",
283
- "data": {
284
- "label": {
285
- "text": "Esto es un label"
286
- },
287
- "hint": {
288
- "text": "Esto es una pista."
289
- },
290
- "id": "input-with-both",
291
- "name": "test-name",
292
- "describedBy": "input-example-a",
293
- "errorMessage": {
294
- "text": "Error: esto es un mensaje de error"
295
- }
296
- }
297
- },
298
262
  {
299
263
  "name": "inputmode",
300
264
  "description": "Este atributo proporciona información al navegador para que se pueda mostrar el teclado virtual apropiado, especialmente en dispositivos móviles. Este input tiene un <code>inputmode='email'</code>",
@@ -102,37 +102,38 @@
102
102
  }
103
103
  },
104
104
  "items": [
105
- {
106
- "divider": {
107
- "text": "Desde:",
108
- "classes": "self-end mb-xl mr-base"
109
- }
110
- },
111
105
  {
112
106
  "name": "num-doc-A",
113
- "classes": "w-full lg:w-64",
107
+ "classes": "w-full lg:w-64 lg:flex-1",
108
+ "formGroup": {
109
+ "classes": "lg:flex lg:flex-wrap lg:items-center lg:gap-x-base lg:mb-0"
110
+ },
114
111
  "label": {
115
112
  "text": "Desde:",
116
- "classes": "sr-only"
113
+ "classes": "lg:py-sm lg:mt-sm"
117
114
  },
118
115
  "placeholder": "Ej: 0"
119
116
  },
120
117
  {
121
118
  "divider": {
122
- "text": "hasta:",
123
- "classes": "self-end mb-xl mx-base"
119
+ "html": "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140' class='self-center ml-2' aria-hidden='true' focusable='false' width='1em' height='1em'><path d='M102.07 27.93l35 35a10 10 0 010 14.14l-35 35a10 10 0 01-14.14-14.14l13.66-13.66A2.5 2.5 0 0099.82 80H10a10 10 0 010-20h89.82a2.5 2.5 0 001.77-4.27L87.93 42.07a10 10 0 0114.14-14.14z' fill='currentColor'></path></svg>",
120
+ "classes": "hidden lg:block mt-sm"
124
121
  }
125
122
  },
126
123
  {
127
124
  "name": "num-doc-B",
128
- "classes": "w-full lg:w-64",
125
+ "classes": "w-full lg:w-64 lg:flex-1",
126
+ "formGroup": {
127
+ "classes": "lg:flex lg:flex-wrap lg:items-center lg:gap-x-base"
128
+ },
129
129
  "label": {
130
- "text": "hasta:",
131
- "classes": "sr-only"
130
+ "text": "Hasta:",
131
+ "classes": "lg:py-sm lg:mt-sm"
132
132
  },
133
133
  "placeholder": "Ej: 600"
134
134
  }
135
- ]
135
+ ],
136
+ "classes": "lg:flex lg:flex-wrap lg:items-center lg:gap-x-base"
136
137
  }
137
138
  },
138
139
  {
@@ -148,7 +149,7 @@
148
149
  "text": "Necesitamos tus datos para identificarte posteriormente."
149
150
  },
150
151
  "errorMessage": {
151
- "text": "Error: Estos campos no pueden estar vacíos"
152
+ "text": "El campo Nombre y el campo Apellidos no pueden estar vacíos."
152
153
  },
153
154
  "items": [
154
155
  {
@@ -217,7 +218,7 @@
217
218
  "text": "Necesitamos tus datos para identificarte posteriormente."
218
219
  },
219
220
  "errorMessage": {
220
- "text": "Error: Estos campos no pueden estar vacíos"
221
+ "text": "El campo Nombre no puede estar vacío."
221
222
  },
222
223
  "items": [
223
224
  {
@@ -281,7 +282,7 @@
281
282
  "text": "Necesitamos tus datos para identificarte posteriormente."
282
283
  },
283
284
  "errorMessage": {
284
- "text": "Error: Estos campos no pueden estar vacíos"
285
+ "text": "El campo Apellidos no puede esta vacío."
285
286
  },
286
287
  "items": [
287
288
  {
@@ -385,7 +386,7 @@
385
386
  },
386
387
  {
387
388
  "name": "con autocompletado",
388
- "description": "Usa el parámetro <code>autocomplete</code>",
389
+ "description": "Usa el parámetro <code>autocomplete</code> en los campos que piden datos del usuario para cumplir con las especificaciones de accesibilidad.",
389
390
  "data": {
390
391
  "id": "datos-autocomplete",
391
392
  "fieldset": {
@@ -2,6 +2,7 @@
2
2
  {% set examples = [
3
3
  {
4
4
  "name": "por defecto",
5
+ "description": "Recuerda que los pills, por accesibilidad, deben estar rodeados de una etiqueta semántica, normalmente un <code>&lt;li&gt;</code>.",
5
6
  "data": {
6
7
  "title": {
7
8
  "text": "Entidades locales de la Comunidad Autónoma de Aragón"
@@ -2,9 +2,10 @@
2
2
  {% set examples = [
3
3
  {
4
4
  "name": "por defecto",
5
+ "description": "Recuerda que este componente, por accesibilidad, debería esta rodeado de una etiqueta semántica, normalmente un <code>&lt;li&gt;</code> en caso de que haya varios seguidos. O bien, que el contenido contenga algún encabezado.",
5
6
  "data": {
6
7
  "figureHtml": "<div class=' w-20 h-20 '><div class=' h-full border-4 border-dashed border-gray-200 rounded-lg '></div></div>",
7
- "caller": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer maximus, elit et faucibus finibus, massa enim egestas leo, et lobortis lorem elit non enim. Nullam molestie nunc eget eleifend porttitor. Suspendisse ornare ligula erat, non dapibus nunc rhoncus at. Maecenas vitae urna viverra, semper mauris vitae, euismod ante. Sed finibus quam ut orci pellentesque, in tincidunt risus tristique. Vivamus efficitur purus urna, sed blandit lorem convallis vel. Mauris tincidunt tincidunt ipsum finibus euismod. Sed eget tincidunt mauris. Duis viverra commodo consectetur. Nullam viverra tincidunt nisl, sit amet dignissim lacus mattis imperdiet."
8
+ "caller": "<p class='c-paragraph-base'>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer maximus, elit et faucibus finibus, massa enim egestas leo, et lobortis lorem elit non enim. Nullam molestie nunc eget eleifend porttitor. Suspendisse ornare ligula erat, non dapibus nunc rhoncus at. Maecenas vitae urna viverra, semper mauris vitae, euismod ante. Sed finibus quam ut orci pellentesque, in tincidunt risus tristique. Vivamus efficitur purus urna, sed blandit lorem convallis vel. Mauris tincidunt tincidunt ipsum finibus euismod. Sed eget tincidunt mauris. Duis viverra commodo consectetur. Nullam viverra tincidunt nisl, sit amet dignissim lacus mattis imperdiet.</p>"
8
9
  }
9
10
  },
10
11
  {
@@ -12,7 +13,7 @@
12
13
  "data": {
13
14
  "reverse": true,
14
15
  "figureHtml": "<div class=' w-20 h-20 '><div class=' h-full border-4 border-dashed border-gray-200 rounded-lg '></div></div>",
15
- "caller": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer maximus, elit et faucibus finibus, massa enim egestas leo, et lobortis lorem elit non enim. Nullam molestie nunc eget eleifend porttitor. Suspendisse ornare ligula erat, non dapibus nunc rhoncus at. Maecenas vitae urna viverra, semper mauris vitae, euismod ante. Sed finibus quam ut orci pellentesque, in tincidunt risus tristique. Vivamus efficitur purus urna, sed blandit lorem convallis vel. Mauris tincidunt tincidunt ipsum finibus euismod. Sed eget tincidunt mauris. Duis viverra commodo consectetur. Nullam viverra tincidunt nisl, sit amet dignissim lacus mattis imperdiet."
16
+ "caller": "<p class='c-paragraph-base'>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer maximus, elit et faucibus finibus, massa enim egestas leo, et lobortis lorem elit non enim. Nullam molestie nunc eget eleifend porttitor. Suspendisse ornare ligula erat, non dapibus nunc rhoncus at. Maecenas vitae urna viverra, semper mauris vitae, euismod ante. Sed finibus quam ut orci pellentesque, in tincidunt risus tristique. Vivamus efficitur purus urna, sed blandit lorem convallis vel. Mauris tincidunt tincidunt ipsum finibus euismod. Sed eget tincidunt mauris. Duis viverra commodo consectetur. Nullam viverra tincidunt nisl, sit amet dignissim lacus mattis imperdiet.</p>"
16
17
  }
17
18
  },
18
19
  {
@@ -20,7 +21,7 @@
20
21
  "data": {
21
22
  "center": true,
22
23
  "figureHtml": "<div class=' w-20 h-20 '><div class=' h-full border-4 border-dashed border-gray-200 rounded-lg '></div></div>",
23
- "caller": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer maximus, elit et faucibus finibus, massa enim egestas leo, et lobortis lorem elit non enim. Nullam molestie nunc eget eleifend porttitor. Suspendisse ornare ligula erat, non dapibus nunc rhoncus at. Maecenas vitae urna viverra, semper mauris vitae, euismod ante. Sed finibus quam ut orci pellentesque, in tincidunt risus tristique. Vivamus efficitur purus urna, sed blandit lorem convallis vel. Mauris tincidunt tincidunt ipsum finibus euismod. Sed eget tincidunt mauris. Duis viverra commodo consectetur. Nullam viverra tincidunt nisl, sit amet dignissim lacus mattis imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer maximus, elit et faucibus finibus, massa enim egestas leo, et lobortis lorem elit non enim. Nullam molestie nunc eget eleifend porttitor. Suspendisse ornare ligula erat, non dapibus nunc rhoncus at. Maecenas vitae urna viverra, semper mauris vitae, euismod ante. Sed finibus quam ut orci pellentesque, in tincidunt risus tristique. Vivamus efficitur purus urna, sed blandit lorem convallis vel. Mauris tincidunt tincidunt ipsum finibus euismod. Sed eget tincidunt mauris. Duis viverra commodo consectetur. Nullam viverra tincidunt nisl, sit amet dignissim lacus mattis imperdiet."
24
+ "caller": "<p class='c-paragraph-base'>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer maximus, elit et faucibus finibus, massa enim egestas leo, et lobortis lorem elit non enim. Nullam molestie nunc eget eleifend porttitor. Suspendisse ornare ligula erat, non dapibus nunc rhoncus at. Maecenas vitae urna viverra, semper mauris vitae, euismod ante. Sed finibus quam ut orci pellentesque, in tincidunt risus tristique. Vivamus efficitur purus urna, sed blandit lorem convallis vel. Mauris tincidunt tincidunt ipsum finibus euismod. Sed eget tincidunt mauris. Duis viverra commodo consectetur. Nullam viverra tincidunt nisl, sit amet dignissim lacus mattis imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer maximus, elit et faucibus finibus, massa enim egestas leo, et lobortis lorem elit non enim. Nullam molestie nunc eget eleifend porttitor. Suspendisse ornare ligula erat, non dapibus nunc rhoncus at. Maecenas vitae urna viverra, semper mauris vitae, euismod ante. Sed finibus quam ut orci pellentesque, in tincidunt risus tristique. Vivamus efficitur purus urna, sed blandit lorem convallis vel. Mauris tincidunt tincidunt ipsum finibus euismod. Sed eget tincidunt mauris. Duis viverra commodo consectetur. Nullam viverra tincidunt nisl, sit amet dignissim lacus mattis imperdiet.</p>"
24
25
  }
25
26
  },
26
27
  {
@@ -30,7 +31,7 @@
30
31
  "figureHtml": "<div class=' w-20 h-20 '><div class=' h-full border-4 border-dashed border-gray-200 rounded-lg '></div></div>",
31
32
  "figureClasses": "mr-base",
32
33
  "contentClasses": "text-sm",
33
- "caller": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer maximus, elit et faucibus finibus, massa enim egestas leo, et lobortis lorem elit non enim. Nullam molestie nunc eget eleifend porttitor. Suspendisse ornare ligula erat, non dapibus nunc rhoncus at. Maecenas vitae urna viverra, semper mauris vitae, euismod ante. Sed finibus quam ut orci pellentesque, in tincidunt risus tristique. Vivamus efficitur purus urna, sed blandit lorem convallis vel. Mauris tincidunt tincidunt ipsum finibus euismod. Sed eget tincidunt mauris. Duis viverra commodo consectetur. Nullam viverra tincidunt nisl, sit amet dignissim lacus mattis imperdiet.",
34
+ "caller": "<p class='c-paragraph-base'>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer maximus, elit et faucibus finibus, massa enim egestas leo, et lobortis lorem elit non enim. Nullam molestie nunc eget eleifend porttitor. Suspendisse ornare ligula erat, non dapibus nunc rhoncus at. Maecenas vitae urna viverra, semper mauris vitae, euismod ante. Sed finibus quam ut orci pellentesque, in tincidunt risus tristique. Vivamus efficitur purus urna, sed blandit lorem convallis vel. Mauris tincidunt tincidunt ipsum finibus euismod. Sed eget tincidunt mauris. Duis viverra commodo consectetur. Nullam viverra tincidunt nisl, sit amet dignissim lacus mattis imperdiet.</p>",
34
35
  "classes": "mb-base"
35
36
  }
36
37
  },
@@ -42,7 +43,7 @@
42
43
  "figureHtml": "<div class=' w-20 h-20 '><div class=' h-full border-4 border-dashed border-gray-200 rounded-lg '></div></div>",
43
44
  "figureClasses": "ml-base",
44
45
  "contentClasses": "text-sm",
45
- "caller": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer maximus, elit et faucibus finibus, massa enim egestas leo, et lobortis lorem elit non enim. Nullam molestie nunc eget eleifend porttitor. Suspendisse ornare ligula erat, non dapibus nunc rhoncus at. Maecenas vitae urna viverra, semper mauris vitae, euismod ante. Sed finibus quam ut orci pellentesque, in tincidunt risus tristique. Vivamus efficitur purus urna, sed blandit lorem convallis vel. Mauris tincidunt tincidunt ipsum finibus euismod. Sed eget tincidunt mauris. Duis viverra commodo consectetur. Nullam viverra tincidunt nisl, sit amet dignissim lacus mattis imperdiet.",
46
+ "caller": "<p class='c-paragraph-base'>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer maximus, elit et faucibus finibus, massa enim egestas leo, et lobortis lorem elit non enim. Nullam molestie nunc eget eleifend porttitor. Suspendisse ornare ligula erat, non dapibus nunc rhoncus at. Maecenas vitae urna viverra, semper mauris vitae, euismod ante. Sed finibus quam ut orci pellentesque, in tincidunt risus tristique. Vivamus efficitur purus urna, sed blandit lorem convallis vel. Mauris tincidunt tincidunt ipsum finibus euismod. Sed eget tincidunt mauris. Duis viverra commodo consectetur. Nullam viverra tincidunt nisl, sit amet dignissim lacus mattis imperdiet.</p>",
46
47
  "classes": "mb-base"
47
48
  }
48
49
  }
@@ -11,7 +11,7 @@
11
11
 
12
12
  {#- Capture the HTML so we can optionally nest it in a fieldset -#}
13
13
  {% set innerHtml %}
14
- <ul data-module="c-menubar" id="{{ params.id }}-menubar" class="lg:flex lg:flex-wrap" role="menubar" aria-label="{{ params.ariaLabel }}" {%- if params.label %} aria-describedby="{{ params.id }}-label"{% endif %}>
14
+ <ul data-module="c-menubar" id="{{ params.id }}-menubar" class="lg:flex lg:flex-wrap" role="menubar" {%- if params.ariaLabel %} aria-label="{{ params.ariaLabel }}"{% endif %} {%- if params.label %} aria-describedby="{{ params.id }}-label"{% endif %}>
15
15
  {% for item in params.items %}
16
16
  {% if item %}
17
17
  {#- If the user explicitly sets an id, use this instead of the regular idPrefix -#}
@@ -38,7 +38,7 @@
38
38
  </a>
39
39
  {% endif %}
40
40
  {% if item.sub.items %}
41
- <ul role="menu" class="c-menubar__tooltip w-max max-w-64 hidden border border-neutral-base shadow-md bg-white text-sm {%- if item.sub.classes %} {{ item.sub.classes }}{% endif %}" aria-label="{{ item.ariaLabel }}" {%- for attribute, value in item.sub.attributes %} {{ attribute }}="{{ value }}"{% endfor -%}>
41
+ <ul role="menu" class="c-menubar__tooltip w-max max-w-64 hidden border border-neutral-base shadow-md bg-white text-sm {%- if item.sub.classes %} {{ item.sub.classes }}{% endif %}" {%- if item.ariaLabel %} aria-label="{{ item.ariaLabel }}"{% endif %} {%- for attribute, value in item.sub.attributes %} {{ attribute }}="{{ value }}"{% endfor -%}>
42
42
  {% for subitem in item.sub.items %}
43
43
  {% if subitem %}
44
44
  {#- If the user explicitly sets an id, use this instead of the regular idPrefix -#}
@@ -128,13 +128,3 @@ params:
128
128
  type: object
129
129
  required: false
130
130
  description: HTML attributes (for example data attributes) to add to the menubar container.
131
-
132
- accessibilityCriteria: |
133
- ## sub reveals
134
- Must:
135
- - be visible as static content if JavaScript is unavailable or fails
136
- - be hidden if JavaScript is available and is collapsed
137
- - indicate if content is expanded or collapsed
138
- - indicate that there is collapsed content to interact with
139
-
140
- Note that alphagov have known issues against this criteria: https://github.com/alphagov/govuk_elements/issues/575
@@ -332,7 +332,7 @@
332
332
  "classes": "c-h2 mt-base focus:outline-none focus:underline"
333
333
  },
334
334
  "description": {
335
- "html": "<p>Si el contenido de la modal es muy extenso, hay que alinear los textos a la izquierda para mejorar la accesibilidad.</p><p>Acabas de seleccionar una gran cantidad de archivos. Si ejecutas la acción, el proceso puede tardar varios minutos. Durante el proceso <strong>no cierres la ventana del navegador ni naveges a otra página</strong> en esta pestaña.</p><p>¿Estás seguro de iniciar el proceso ahora?</p>",
335
+ "html": "<p class='c-paragraph-base'>Si el contenido de la modal es muy extenso, hay que alinear los textos a la izquierda para mejorar la accesibilidad.</p><p class='c-paragraph-base'>Acabas de seleccionar una gran cantidad de archivos. Si ejecutas la acción, el proceso puede tardar varios minutos. Durante el proceso <strong>no cierres la ventana del navegador ni naveges a otra página</strong> en esta pestaña.</p><p>¿Estás seguro de iniciar el proceso ahora?</p>",
336
336
  "classes": "mb-lg text-left"
337
337
  },
338
338
  "itemsPrimary": [
@@ -2,6 +2,7 @@
2
2
  {% set examples = [
3
3
  {
4
4
  "name": "por defecto",
5
+ "description": "Este componente se suele mostrar con un componente Alert, que incluye un contenedor con los atributos <code>role=\"alert\"</code> y <code>aria-live=\"assertive\"</code>.",
5
6
  "data": {
6
7
  "title": {
7
8
  "text": "El documento se ha cargado correctamente"
@@ -141,7 +142,7 @@
141
142
  "text": "Acaba de publicarse la lista de admitidos y excluidos de la convocatoria publicado en el BOA"
142
143
  },
143
144
  "description":{
144
- "html": "<a class=' c-link break-all ' href=' # '>http://www.boa.aragon.es/cgi-bin/EBOA/BRSCGI?CMD=VEROBJ&MLKOB=1119520063030&type=pdf</a> "
145
+ "html": "<a class=' c-link break-all ' href=' # '>Lista de admitidos (PDF, 20Kb)</a> "
145
146
  },
146
147
  "icon": {
147
148
  "html": "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140' width='1em' height='1em' class='w-8 h-8' aria-label='Atención' focusable='false'><path d='M138.42 118.29l-55-110a15 15 0 00-26.84 0l-55 110A15 15 0 0015 140h110a15 15 0 0013.42-21.71zM62.5 50a7.5 7.5 0 0115 0v30a7.5 7.5 0 01-15 0zm7.5 70a10 10 0 1110-10 10 10 0 01-10 10z' fill='currentColor'/></svg>"
@@ -152,18 +153,23 @@
152
153
  },
153
154
  {
154
155
  "name": "Con encabezado",
155
- "description": "Usa el parámetro <code>'headingLevel'</code> para establecer el nivel del encabezado. En este ejemplo: <code>'headingLevel': 3</code> creará un encabezado <code>&lt;h3&gt;</code>.",
156
+ "description": "Usa el parámetro <code>'headingLevel'</code> para establecer el nivel del encabezado. En este ejemplo: <code>'headingLevel': 3</code> creará un encabezado <code>&lt;h3&gt;</code>. Recuerda que tras el encabezado debe ir una descripción ya que, por accesibilidad, un encabezado no puede estar solo sin que tras él haya algún texto.",
156
157
  "data": {
157
158
  "headingLevel": 3,
158
159
  "title": {
159
160
  "text": "Esto es un título con h3"
160
161
  },
162
+
163
+ "description":{
164
+ "text": "Y esto es una descripción necesaria tras el encabezado"
165
+ },
161
166
  "id": "headinglevel"
162
167
  }
163
168
  },
164
169
  {
165
170
  "name": "con parámetros mixtos",
166
171
  "data": {
172
+ "headingLevel": 3,
167
173
  "title":{
168
174
  "text": "No olvide adjuntar el registro de alta de la asociación",
169
175
  "classes": "font-bold"