desy-html 11.1.2 → 12.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 (134) hide show
  1. package/docs/_global.foot.njk +1 -1
  2. package/docs/_macro.example-render.njk +62 -18
  3. package/docs/ds/_ds.example.botones-primary-lg.njk +265 -0
  4. package/docs/ds/_ds.example.dropdowns-variaciones.njk +37 -0
  5. package/docs/ds/_ds.example.listbox-variaciones.njk +137 -0
  6. package/docs/ds/_ds.example.tabs.njk +44 -0
  7. package/docs/ds/_ds.example.textos.njk +5 -0
  8. package/docs/ds/_ds.section.botones.njk +5 -0
  9. package/docs/ds/_ds.section.textos.njk +11 -1
  10. package/docs/index.html +19 -0
  11. package/docs/pagina-prueba.html +2 -2
  12. package/package.json +3 -3
  13. package/src/css/component.text.css +33 -26
  14. package/src/js/aria/linksList.js +42 -0
  15. package/src/js/aria/treeitem.js +9 -2
  16. package/src/js/aria/utils.js +80 -15
  17. package/src/js/desy-html.js +249 -196
  18. package/src/js/filters/filter-caller.js +4 -2
  19. package/src/js/filters/filter-escape-ltgt.js +7 -0
  20. package/src/js/filters/filter-quotes.js +50 -0
  21. package/src/js/filters/filter-version.js +8 -0
  22. package/src/js/filters/index.js +7 -1
  23. package/src/js/index.js +2 -0
  24. package/src/templates/components/accordion/_examples.accordion.njk +107 -107
  25. package/src/templates/components/accordion/_template.accordion.njk +5 -5
  26. package/src/templates/components/accordion-history/_examples.accordion-history.njk +119 -119
  27. package/src/templates/components/accordion-history/_template.accordion-history.njk +11 -11
  28. package/src/templates/components/alert/_examples.alert.njk +2 -2
  29. package/src/templates/components/breadcrumbs/_examples.breadcrumbs.njk +4 -4
  30. package/src/templates/components/breadcrumbs/_template.breadcrumbs.njk +4 -4
  31. package/src/templates/components/button/_examples.button.njk +28 -21
  32. package/src/templates/components/button/_styles.button.css +7 -0
  33. package/src/templates/components/button/_template.button.njk +2 -2
  34. package/src/templates/components/button-loader/_examples.button-loader.njk +25 -18
  35. package/src/templates/components/button-loader/_styles.button-loader.css +6 -0
  36. package/src/templates/components/button-loader/_template.button-loader.njk +2 -2
  37. package/src/templates/components/card/_examples.card.njk +3 -3
  38. package/src/templates/components/card/_template.card.njk +4 -4
  39. package/src/templates/components/character-count/_examples.character-count.njk +2 -2
  40. package/src/templates/components/checkboxes/_examples.checkboxes.njk +6 -6
  41. package/src/templates/components/checkboxes/_template.checkboxes.njk +2 -2
  42. package/src/templates/components/collapsible/_examples.collapsible.njk +4 -4
  43. package/src/templates/components/collapsible/_template.collapsible.njk +1 -1
  44. package/src/templates/components/date-input/_template.date-input.njk +1 -1
  45. package/src/templates/components/datepicker/_examples.datepicker.njk +45 -62
  46. package/src/templates/components/datepicker/_styles.datepicker.css +4 -0
  47. package/src/templates/components/datepicker/_template.datepicker.njk +10 -2
  48. package/src/templates/components/description-list/_examples.description-list.njk +3 -3
  49. package/src/templates/components/description-list/_template.description-list.njk +2 -2
  50. package/src/templates/components/details/_examples.details.njk +3 -3
  51. package/src/templates/components/details/_template.details.njk +1 -1
  52. package/src/templates/components/dialog/_examples.dialog.njk +4 -4
  53. package/src/templates/components/dropdown/_examples.dropdown.njk +38 -16
  54. package/src/templates/components/dropdown/_styles.dropdown.css +7 -0
  55. package/src/templates/components/dropdown/_template.dropdown.njk +1 -1
  56. package/src/templates/components/error-message/_examples.error-message.njk +1 -1
  57. package/src/templates/components/error-message/_template.error-message.njk +1 -1
  58. package/src/templates/components/error-summary/_template.error-summary.njk +2 -2
  59. package/src/templates/components/fieldset/_examples.fieldset.njk +3 -3
  60. package/src/templates/components/fieldset/_template.fieldset.njk +7 -7
  61. package/src/templates/components/footer/_examples.footer.njk +32 -32
  62. package/src/templates/components/footer/_template.footer.njk +6 -6
  63. package/src/templates/components/header/_examples.header.njk +14 -8
  64. package/src/templates/components/header/_template.header.header__navigation.njk +2 -2
  65. package/src/templates/components/header/_template.header.header__offcanvasButton.njk +1 -1
  66. package/src/templates/components/header/_template.header.header__subnav.njk +1 -1
  67. package/src/templates/components/header/_template.header.njk +2 -2
  68. package/src/templates/components/header-advanced/_examples.header-advanced.njk +14 -8
  69. package/src/templates/components/header-advanced/_template.header-advanced.njk +3 -3
  70. package/src/templates/components/header-mini/_examples.header-mini.njk +3 -3
  71. package/src/templates/components/header-mini/_template.header-mini.njk +2 -2
  72. package/src/templates/components/hint/_examples.hint.njk +1 -1
  73. package/src/templates/components/hint/_template.hint.njk +1 -1
  74. package/src/templates/components/input/_examples.input.njk +7 -7
  75. package/src/templates/components/input-group/_examples.input-group.njk +1 -1
  76. package/src/templates/components/input-group/_template.input-group.njk +1 -1
  77. package/src/templates/components/item/_examples.item.njk +23 -23
  78. package/src/templates/components/item/_template.item.njk +9 -9
  79. package/src/templates/components/label/_examples.label.njk +2 -2
  80. package/src/templates/components/label/_template.label.njk +1 -1
  81. package/src/templates/components/links-list/_examples.links-list.njk +54 -34
  82. package/src/templates/components/links-list/_template.links-list.njk +15 -15
  83. package/src/templates/components/listbox/_examples.listbox.njk +52 -17
  84. package/src/templates/components/listbox/_styles.listbox.css +7 -0
  85. package/src/templates/components/listbox/_template.listbox.njk +5 -5
  86. package/src/templates/components/media-object/_examples.media-object.njk +5 -5
  87. package/src/templates/components/menu-horizontal/_examples.menu-horizontal.njk +16 -16
  88. package/src/templates/components/menu-horizontal/_template.menu-horizontal.njk +2 -2
  89. package/src/templates/components/menu-navigation/_examples.menu-navigation.njk +93 -9
  90. package/src/templates/components/menu-navigation/_styles.menu-navigation.css +7 -0
  91. package/src/templates/components/menu-navigation/_template.menu-navigation.njk +4 -4
  92. package/src/templates/components/menu-vertical/_examples.menu-vertical.njk +8 -8
  93. package/src/templates/components/menu-vertical/_template.menu-vertical.njk +9 -9
  94. package/src/templates/components/menubar/_examples.menubar.njk +169 -15
  95. package/src/templates/components/menubar/_styles.menubar.css +8 -1
  96. package/src/templates/components/menubar/_template.menubar.njk +7 -7
  97. package/src/templates/components/modal/_examples.modal.njk +18 -18
  98. package/src/templates/components/modal/_template.modal.njk +8 -8
  99. package/src/templates/components/nav/_examples.nav.njk +7 -7
  100. package/src/templates/components/nav/_template.nav.njk +2 -2
  101. package/src/templates/components/notification/_examples.notification.njk +9 -9
  102. package/src/templates/components/notification/_template.notification.njk +11 -11
  103. package/src/templates/components/pagination/_examples.pagination.njk +6 -6
  104. package/src/templates/components/pagination/_template.pagination.njk +3 -3
  105. package/src/templates/components/pill/_examples.pill.njk +8 -8
  106. package/src/templates/components/pill/_template.pill.njk +3 -3
  107. package/src/templates/components/radios/_examples.radios.njk +2 -2
  108. package/src/templates/components/radios/_template.radios.njk +1 -1
  109. package/src/templates/components/select/_examples.select.njk +1 -1
  110. package/src/templates/components/skip-link/_examples.skip-link.njk +1 -1
  111. package/src/templates/components/skip-link/_template.skip-link.njk +1 -1
  112. package/src/templates/components/status/_examples.status.njk +1 -1
  113. package/src/templates/components/status/_template.status.njk +1 -1
  114. package/src/templates/components/status-item/_examples.status-item.njk +15 -15
  115. package/src/templates/components/status-item/_template.status-item.njk +3 -3
  116. package/src/templates/components/table/_examples.table.njk +3 -3
  117. package/src/templates/components/table/_template.table.njk +2 -2
  118. package/src/templates/components/table-advanced/_examples.table-advanced.njk +96 -6
  119. package/src/templates/components/table-advanced/_template.table-advanced.njk +8 -8
  120. package/src/templates/components/table-advanced/params.table-advanced.yaml +4 -0
  121. package/src/templates/components/tabs/_examples.tabs.njk +57 -14
  122. package/src/templates/components/tabs/_styles.tabs.css +31 -8
  123. package/src/templates/components/tabs/_template.tabs.njk +8 -8
  124. package/src/templates/components/tabs/params.tabs.yaml +4 -0
  125. package/src/templates/components/textarea/_examples.textarea.njk +2 -2
  126. package/src/templates/components/toggle/_examples.toggle.njk +29 -29
  127. package/src/templates/components/toggle/_template.toggle.njk +2 -2
  128. package/src/templates/components/tooltip/_examples.tooltip.njk +11 -11
  129. package/src/templates/components/tooltip/_template.tooltip.njk +3 -3
  130. package/src/templates/components/tree/_examples.tree.njk +112 -47
  131. package/src/templates/components/tree/_template.tree.njk +6 -6
  132. package/src/templates/includes/_test-include.njk +2 -2
  133. package/src/templates/pages/_page.footer.njk +1 -1
  134. package/src/templates/pages/_template.logged-selector-subheader.njk +1 -1
@@ -31,7 +31,7 @@
31
31
  },
32
32
  {
33
33
  "name": "Tipo enlace o botón con estado hover",
34
- "description": 'Simula activar la pseudoclase de CSS <code>:hover</code>',
34
+ "description": "Simula activar la pseudoclase de CSS <code>:hover</code>",
35
35
  "data": {
36
36
  "type": "button",
37
37
  "text": "Hover",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  {
42
42
  "name": "Tipo enlace o botón con estado focus",
43
- "description": 'Simula activar la pseudoclase de CSS <code>:focus</code>',
43
+ "description": "Simula activar la pseudoclase de CSS <code>:focus</code>",
44
44
  "data": {
45
45
  "type": "button",
46
46
  "text": "Focus",
@@ -59,7 +59,7 @@
59
59
  "name": "con icono a la derecha",
60
60
  "data": {
61
61
  "type": "button",
62
- "html": "Icono derecha pill <svg viewBox=\"0 0 140 140\" class=\" self-center ml-2 \" role=\" img \" aria-label=\"Eliminar\" width=\" .75em \" height=\" .75em \"><path fill=\"currentColor\" d=\"M85.91 71.77a2.5 2.5 0 010-3.54l46.16-46.16a10 10 0 10-14.14-14.14L71.77 54.09a2.5 2.5 0 01-3.54 0L22.07 7.93A10 10 0 007.93 22.07l46.16 46.16a2.5 2.5 0 010 3.54L7.93 117.93a10 10 0 0014.14 14.14l46.16-46.16a2.5 2.5 0 013.54 0l46.16 46.16a10 10 0 0014.14-14.14z\"/></svg>",
62
+ "html": "Icono derecha pill <svg viewBox='0 0 140 140' class='self-center ml-2' role='img' aria-label='Eliminar' width=' .75em ' height=' .75em '><path fill='currentColor' d='M85.91 71.77a2.5 2.5 0 010-3.54l46.16-46.16a10 10 0 10-14.14-14.14L71.77 54.09a2.5 2.5 0 01-3.54 0L22.07 7.93A10 10 0 007.93 22.07l46.16 46.16a2.5 2.5 0 010 3.54L7.93 117.93a10 10 0 0014.14 14.14l46.16-46.16a2.5 2.5 0 013.54 0l46.16 46.16a10 10 0 0014.14-14.14z'/></svg>",
63
63
  "classes": "cursor-pointer"
64
64
  }
65
65
  },
@@ -67,35 +67,35 @@
67
67
  "name": "con icono a la izquierda",
68
68
  "data": {
69
69
  "type": "button",
70
- "html": "<svg viewBox=\"0 0 140 140\" class=\" self-center mr-2 \" aria-hidden=\"true\" width=\" .75em \" height=\" .75em \"><path fill=\"currentColor\" d=\"M35 35a35 35 0 1070 0 35 35 0 10-70 0zM132.78 133.33a66.59 66.59 0 00-125.56 0 5 5 0 004.71 6.67h116.14a5 5 0 004.71-6.67z\" /></svg> Icono izquierda pill",
70
+ "html": "<svg viewBox='0 0 140 140' class=' self-center mr-2 ' aria-hidden='true' width=' .75em ' height=' .75em '><path fill='currentColor' d='M35 35a35 35 0 1070 0 35 35 0 10-70 0zM132.78 133.33a66.59 66.59 0 00-125.56 0 5 5 0 004.71 6.67h116.14a5 5 0 004.71-6.67z' /></svg> Icono izquierda pill",
71
71
  "classes": "cursor-pointer"
72
72
  }
73
73
  },
74
74
  {
75
75
  "name": "primario",
76
76
  "data": {
77
- "html": "<svg viewBox=\"0 0 140 140\" class=\" self-center mr-2 \" aria-hidden=\"true\" width=\" .75em \" height=\" .75em \"><path fill=\"currentColor\" d=\"M43.7 140a17.42 17.42 0 01-12.36-5.12L5.13 108.66a17.49 17.49 0 010-24.75l24.61-24.25a7.5 7.5 0 0110.52 10.68L15.69 94.56a2.5 2.5 0 000 3.49l26.21 26.22a2.51 2.51 0 003.54 0l24.22-24.53a7.5 7.5 0 1110.68 10.52l-24.21 24.57A17.53 17.53 0 0143.7 140zM99.66 80.26a7.49 7.49 0 01.08-10.6l24.57-24.22a2.5 2.5 0 000-3.49L98.06 15.73a2.51 2.51 0 00-3.54 0L70.34 40.26a7.5 7.5 0 01-10.68-10.52L83.87 5.17a17.52 17.52 0 0124.79 0l26.21 26.21a17.49 17.49 0 010 24.75l-24.61 24.21a7.49 7.49 0 01-10.6-.08z\"/><path fill=\"currentColor\" d=\"M55 92.5a7.5 7.5 0 01-5.3-12.8l30-30a7.5 7.5 0 1110.6 10.6l-30 30a7.44 7.44 0 01-5.3 2.2z\"/></svg> Primario",
77
+ "html": "<svg viewBox='0 0 140 140' class=' self-center mr-2 ' aria-hidden='true' width=' .75em ' height=' .75em '><path fill='currentColor' d='M43.7 140a17.42 17.42 0 01-12.36-5.12L5.13 108.66a17.49 17.49 0 010-24.75l24.61-24.25a7.5 7.5 0 0110.52 10.68L15.69 94.56a2.5 2.5 0 000 3.49l26.21 26.22a2.51 2.51 0 003.54 0l24.22-24.53a7.5 7.5 0 1110.68 10.52l-24.21 24.57A17.53 17.53 0 0143.7 140zM99.66 80.26a7.49 7.49 0 01.08-10.6l24.57-24.22a2.5 2.5 0 000-3.49L98.06 15.73a2.51 2.51 0 00-3.54 0L70.34 40.26a7.5 7.5 0 01-10.68-10.52L83.87 5.17a17.52 17.52 0 0124.79 0l26.21 26.21a17.49 17.49 0 010 24.75l-24.61 24.21a7.49 7.49 0 01-10.6-.08z'/><path fill='currentColor' d='M55 92.5a7.5 7.5 0 01-5.3-12.8l30-30a7.5 7.5 0 1110.6 10.6l-30 30a7.44 7.44 0 01-5.3 2.2z'/></svg> Primario",
78
78
  "classes": "c-pill--primary"
79
79
  }
80
80
  },
81
81
  {
82
82
  "name": "Aviso",
83
83
  "data": {
84
- "html": "<svg viewBox=\"0 0 140 140\" class=\" self-center mr-2 \" aria-hidden=\"true\" width=\" .75em \" height=\" .75em \"><path fill=\"currentColor\" 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\"/></svg> Aviso",
84
+ "html": "<svg viewBox='0 0 140 140' class=' self-center mr-2 ' aria-hidden='true' width=' .75em ' height=' .75em '><path fill='currentColor' 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'/></svg> Aviso",
85
85
  "classes": "c-pill--warning"
86
86
  }
87
87
  },
88
88
  {
89
89
  "name": "Éxito",
90
90
  "data": {
91
- "html": "<svg viewBox=\"0 0 140 140\" class=\" self-center mr-2 \" aria-hidden=\"true\" width=\" .75em \" height=\" .75em \"><path fill=\"currentColor\" d=\"M39.94 125a19.88 19.88 0 01-15.53-7.81L2.48 92.26a10 10 0 0115-13.2l20.55 23.39a2.5 2.5 0 003.68.08l81-84.42a10.002 10.002 0 1114.5 13.78l-82.02 86.33A19.41 19.41 0 0139.94 125z\"/></svg> Éxito",
91
+ "html": "<svg viewBox='0 0 140 140' class=' self-center mr-2 ' aria-hidden='true' width=' .75em ' height=' .75em '><path fill='currentColor' d='M39.94 125a19.88 19.88 0 01-15.53-7.81L2.48 92.26a10 10 0 0115-13.2l20.55 23.39a2.5 2.5 0 003.68.08l81-84.42a10.002 10.002 0 1114.5 13.78l-82.02 86.33A19.41 19.41 0 0139.94 125z'/></svg> Éxito",
92
92
  "classes": "c-pill--success"
93
93
  }
94
94
  },
95
95
  {
96
96
  "name": "alerta",
97
97
  "data": {
98
- "html": "<svg viewBox=\"0 0 140 140\" class=\" self-center mr-2 \" aria-hidden=\"true\" width=\" .75em \" height=\" .75em \"><path fill=\"currentColor\" d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zm-7.5 35a7.5 7.5 0 0115 0v30a7.5 7.5 0 01-15 0zm7.5 75a10 10 0 1110-10 10 10 0 01-10 10z\"/></svg> Alerta",
98
+ "html": "<svg viewBox='0 0 140 140' class=' self-center mr-2 ' aria-hidden='true' width=' .75em ' height=' .75em '><path fill='currentColor' d='M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zm-7.5 35a7.5 7.5 0 0115 0v30a7.5 7.5 0 01-15 0zm7.5 75a10 10 0 1110-10 10 10 0 01-10 10z'/></svg> Alerta",
99
99
  "classes": "c-pill--alert"
100
100
  }
101
101
  }
@@ -25,15 +25,15 @@
25
25
  <!-- pill -->
26
26
  {%- if element == 'a' %}
27
27
  <a href="{{ params.href }}" {{- buttonAttributes | safe }} {% if params.target %} target="{{ params.target }}"{% endif %}{{- commonAttributes | safe }}>
28
- {{- params.html | safe if params.html else params.text -}}
28
+ {{- params.html | filterquotes | safe if params.html else params.text -}}
29
29
  </a>
30
30
  {%- elseif element == 'button' %}
31
31
  <button {{- buttonAttributes | safe }} {{- commonAttributes | safe }}>
32
- {{- params.html | safe if params.html else params.text -}}
32
+ {{- params.html | filterquotes | safe if params.html else params.text -}}
33
33
  </button>
34
34
  {%- else %}
35
35
  <span {{- buttonAttributes | safe }} {{- commonAttributes | safe }}>
36
- {{- params.html | safe if params.html else params.text -}}
36
+ {{- params.html | filterquotes | safe if params.html else params.text -}}
37
37
  </span>
38
38
  {% endif %}
39
39
  <!-- /pill -->
@@ -167,7 +167,7 @@
167
167
  },
168
168
  {
169
169
  "name": "con un legend como encabezado",
170
- "description": 'Usa el parámetro <code>"heading"</code> para añadir un encabezado asociado al componente. 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>.',
170
+ "description": "Usa el parámetro <code>'heading'</code> para añadir un encabezado asociado al componente. 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>.",
171
171
  "data": {
172
172
  "idPrefix": "legend-as-page-heading",
173
173
  "name": "legend-as-page-heading",
@@ -325,7 +325,7 @@
325
325
  },
326
326
  {
327
327
  "name": "Con clases de CSS aplicadas",
328
- "description": 'Los parámetros <code>classes</code> nos permiten aplicar clases de Tailwind CSS a nuestro componente.',
328
+ "description": "Los parámetros <code>classes</code> nos permiten aplicar clases de Tailwind CSS a nuestro componente.",
329
329
  "data": {
330
330
  "idPrefix": "classes",
331
331
  "name": "classes",
@@ -100,7 +100,7 @@
100
100
  </div>
101
101
  {% if item.conditional.html %}
102
102
  <div class="mb-lg ml-5 pt-sm pb-base pl-6 origin-top-left border-l-2 border-primary-base c-radios__conditional-item" id="{{ conditionalId }}">
103
- {{ item.conditional.html | safe | indent(6) }}
103
+ {{ item.conditional.html | filterquotes | safe | indent(6) }}
104
104
  </div>
105
105
  {% endif %}
106
106
  {% endif %}
@@ -55,7 +55,7 @@
55
55
  },
56
56
  {
57
57
  "name": "placeholder",
58
- "description": 'Usa una combinación de los parámetros <code>"disabled": true</code>, <code>"selected": true</code> y <code>"hidden": true</code> para la primera opción y actúará como si fuera un placeholder visual.',
58
+ "description": "Usa una combinación de los parámetros <code>'disabled': true</code>, <code>'selected': true</code> y <code>'hidden': true</code> para la primera opción y actúará como si fuera un placeholder visual.",
59
59
  "data": {
60
60
  "id": "select-placeholder",
61
61
  "name": "select-placeholder",
@@ -10,7 +10,7 @@
10
10
  },
11
11
  {
12
12
  "name": "con estado focus",
13
- "description": 'Simula activar la pseudoclase de CSS <code>:focus</code>',
13
+ "description": "Simula activar la pseudoclase de CSS <code>:focus</code>",
14
14
  "data": {
15
15
  "classes": "ds-focus",
16
16
  "text": "Saltar al contenido principal",
@@ -1,5 +1,5 @@
1
1
  <!-- skip-link -->
2
2
  <a href="{{ params.href | default('#content') }}" class="c-skip-link sr-only active:not-sr-only focus:not-sr-only focus:outline-none focus:shadow-outline-focus block p-base bg-warning-base text-center text-black underline {%- if params.classes %} {{ params.classes }}{% endif -%}"{%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
3
- {{- params.html | safe if params.html else params.text -}}
3
+ {{- params.html | filterquotes | safe if params.html else params.text -}}
4
4
  </a>
5
5
  <!-- /skip-link -->
@@ -43,7 +43,7 @@
43
43
  "data": {
44
44
  "text": "Atención",
45
45
  "icon": {
46
- "html": '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 140" width="1em" height="1em" class="w-4 h-4 text-primary-base" aria-hidden="true" focusable="false"><path d="M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zm0 117.51a10 10 0 1110-10 10 10 0 01-10 10zm9.17-39.08a2.5 2.5 0 00-1.67 2.36v1.71a7.5 7.5 0 01-15 0v-10A7.5 7.5 0 0170 65a12.5 12.5 0 10-12.5-12.5 7.5 7.5 0 01-15 0 27.5 27.5 0 1136.67 25.93z" fill="currentColor"/></svg>'
46
+ "html": "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140' width='1em' height='1em' class='w-4 h-4 text-primary-base' aria-hidden='true' focusable='false'><path d='M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zm0 117.51a10 10 0 1110-10 10 10 0 01-10 10zm9.17-39.08a2.5 2.5 0 00-1.67 2.36v1.71a7.5 7.5 0 01-15 0v-10A7.5 7.5 0 0170 65a12.5 12.5 0 10-12.5-12.5 7.5 7.5 0 01-15 0 27.5 27.5 0 1136.67 25.93z' fill='currentColor'/></svg>"
47
47
  }
48
48
  }
49
49
  }
@@ -7,7 +7,7 @@
7
7
  <span class="inline-block ml-sm">
8
8
  {% if params.icon %}
9
9
  {% if params.icon.html %}
10
- {{ params.icon.html | safe }}
10
+ {{ params.icon.html | filterquotes | safe }}
11
11
  {% elseif params.icon.type == 'alert' %}
12
12
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 140" width="1em" height="1em" class="w-4 h-4 text-alert-base" aria-hidden="true" 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>
13
13
  {% elseif params.icon.type == 'loading' %}
@@ -7,7 +7,7 @@
7
7
  "title": {
8
8
  "text": "Título"
9
9
  },
10
- "caller": '<button class="c-button c-button--transparent">Modificar<span class="sr-only"> item del Título</span></button>'
10
+ "caller": "<button class='c-button c-button--transparent'>Modificar<span class='sr-only'> item del Título</span></button>"
11
11
  }
12
12
  },
13
13
  {
@@ -46,7 +46,7 @@
46
46
  "type": "success"
47
47
  }
48
48
  },
49
- "caller": '<button class="c-button c-button--transparent">Modificar<span class="sr-only"> los datos de término y definición y el resto</span></button>'
49
+ "caller": "<button class='c-button c-button--transparent'>Modificar<span class='sr-only'> los datos de término y definición y el resto</span></button>"
50
50
  }
51
51
  },
52
52
  {
@@ -54,9 +54,9 @@
54
54
  "data": {
55
55
  "id": "with-title-html",
56
56
  "title": {
57
- "html": 'Autorización para la consulta de datos de las personas de la unidad familiar. <span class="text-neutral-dark">(Documento condicionado)</span>'
57
+ "html": "Autorización para la consulta de datos de las personas de la unidad familiar. <span class='text-neutral-dark'>(Documento condicionado)</span>"
58
58
  },
59
- "caller": '<button class="c-button c-button--transparent">Aportar<span class="sr-only"> Autorización para la consulta de datos de las personas de la unidad familiar</span></button>'
59
+ "caller": "<button class='c-button c-button--transparent'>Aportar<span class='sr-only'> Autorización para la consulta de datos de las personas de la unidad familiar</span></button>"
60
60
  }
61
61
  },
62
62
  {
@@ -75,7 +75,7 @@
75
75
  "type": "success"
76
76
  }
77
77
  },
78
- "caller": '<button class="c-button c-button--transparent">Modificar<span class="sr-only"> personas de la unidad familiar</span></button>'
78
+ "caller": "<button class='c-button c-button--transparent'>Modificar<span class='sr-only'> personas de la unidad familiar</span></button>"
79
79
  }
80
80
  },
81
81
  {
@@ -86,9 +86,9 @@
86
86
  "text": "Autorización para la consulta de datos de las personas de la unidad familiar"
87
87
  },
88
88
  "hint": {
89
- "html": '<a href="#" class="c-link"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 140" width="1em" height="1em" class="inline-block self-center w-4 h-4 mr-sm no-underline" role="img" aria-hidden="true"><path d="M100.3 52.2a7.49 7.49 0 00-10.6 0L77.5 64.39V7.5a7.5 7.5 0 00-15 0v56.89L50.3 52.2a7.5 7.5 0 10-10.6 10.6l25 25a7.49 7.49 0 0010.6 0l25-25a7.49 7.49 0 000-10.6zM130 95a10 10 0 00-10 10v12.5a2.5 2.5 0 01-2.5 2.5h-95a2.5 2.5 0 01-2.5-2.5V105a10 10 0 00-20 0v15a20 20 0 0020 20h100a20 20 0 0020-20v-15a10 10 0 00-10-10z" fill="currentColor"/></svg>Descargar modelo</a>'
89
+ "html": "<a href='#' class='c-link'><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140' width='1em' height='1em' class='inline-block self-center w-4 h-4 mr-sm no-underline' role='img' aria-hidden='true'><path d='M100.3 52.2a7.49 7.49 0 00-10.6 0L77.5 64.39V7.5a7.5 7.5 0 00-15 0v56.89L50.3 52.2a7.5 7.5 0 10-10.6 10.6l25 25a7.49 7.49 0 0010.6 0l25-25a7.49 7.49 0 000-10.6zM130 95a10 10 0 00-10 10v12.5a2.5 2.5 0 01-2.5 2.5h-95a2.5 2.5 0 01-2.5-2.5V105a10 10 0 00-20 0v15a20 20 0 0020 20h100a20 20 0 0020-20v-15a10 10 0 00-10-10z' fill='currentColor'/></svg>Descargar modelo</a>"
90
90
  },
91
- "caller": '<button class="c-button c-button--transparent">Aportar<span class="sr-only"> Autorización para la consulta de datos de las personas de la unidad familiar</span></button>'
91
+ "caller": "<button class='c-button c-button--transparent'>Aportar<span class='sr-only'> Autorización para la consulta de datos de las personas de la unidad familiar</span></button>"
92
92
  }
93
93
  },
94
94
  {
@@ -101,7 +101,7 @@
101
101
  "status": {
102
102
  "text": "Iniciado"
103
103
  },
104
- "caller": '<button class="c-button c-button--transparent">Rellenar<span class="sr-only"> datos adicionales del solicitante</span></button>'
104
+ "caller": "<button class='c-button c-button--transparent'>Rellenar<span class='sr-only'> datos adicionales del solicitante</span></button>"
105
105
  }
106
106
  },
107
107
  {
@@ -117,7 +117,7 @@
117
117
  "type": "success"
118
118
  }
119
119
  },
120
- "caller": '<button class="c-button c-button--transparent">Modificar<span class="sr-only"> datos adicionales del solicitante</span></button>'
120
+ "caller": "<button class='c-button c-button--transparent'>Modificar<span class='sr-only'> datos adicionales del solicitante</span></button>"
121
121
  }
122
122
  },
123
123
  {
@@ -138,7 +138,7 @@
138
138
  },
139
139
  "classes": "text-alert-base"
140
140
  },
141
- "caller": '<button class="c-button c-button--transparent">Modificar<span class="sr-only"> datos adicionales del solicitante</span></button>',
141
+ "caller": "<button class='c-button c-button--transparent'>Modificar<span class='sr-only'> datos adicionales del solicitante</span></button>",
142
142
  "classes": "border-l-4 border-alert-base"
143
143
  }
144
144
  },
@@ -155,7 +155,7 @@
155
155
  "type": "loading"
156
156
  }
157
157
  },
158
- "caller": '<button class="c-button c-button--transparent">Modificar<span class="sr-only"> datos adicionales del solicitante</span></button>'
158
+ "caller": "<button class='c-button c-button--transparent'>Modificar<span class='sr-only'> datos adicionales del solicitante</span></button>"
159
159
  }
160
160
  },
161
161
  {
@@ -176,7 +176,7 @@
176
176
  },
177
177
  "classes": "text-alert-base"
178
178
  },
179
- "caller": '<button class="c-button c-button--transparent">Ver<span class="sr-only"> datos adicionales del solicitante</span></button>',
179
+ "caller": "<button class='c-button c-button--transparent'>Ver<span class='sr-only'> datos adicionales del solicitante</span></button>",
180
180
  "classes": "border-l-4 border-alert-base"
181
181
  }
182
182
  },
@@ -190,7 +190,7 @@
190
190
  "text": "Acreditación"
191
191
  },
192
192
  "definition": {
193
- "html": 'Mediante archivo adjunto <a href="#" class="c-link inline-block">Modelo de solicitud (PDF, 200Kb)</a>'
193
+ "html": "Mediante archivo adjunto <a href='#' class='c-link inline-block'>Modelo de solicitud (PDF, 200Kb)</a>"
194
194
  }
195
195
  }
196
196
  ],
@@ -200,7 +200,7 @@
200
200
  "type": "success"
201
201
  }
202
202
  },
203
- "caller": '<button class="c-button c-button--transparent">Modificar<span class="sr-only"> acreditación</span></button>'
203
+ "caller": "<button class='c-button c-button--transparent'>Modificar<span class='sr-only'> acreditación</span></button>"
204
204
  }
205
205
  },
206
206
  {
@@ -239,7 +239,7 @@
239
239
  "type": "alert"
240
240
  }
241
241
  },
242
- "caller": '<button class="c-button c-button--transparent">Rellenar<span class="sr-only"> datos adicionales del solicitante</span></button>',
242
+ "caller": "<button class='c-button c-button--transparent'>Rellenar<span class='sr-only'> datos adicionales del solicitante</span></button>",
243
243
  "classes": "border-l-4 border-alert-base"
244
244
  }
245
245
  }
@@ -9,7 +9,7 @@
9
9
 
10
10
  {%- set commonHtml %}
11
11
  {% if params.title %}
12
- <p class="{% if params.title.classes %}{{ params.title.classes }}{% else %}my-sm{% endif %}">{{ params.title.html | safe if params.title.html else params.title.text }}</p>
12
+ <p class="{% if params.title.classes %}{{ params.title.classes }}{% else %}my-sm{% endif %}">{{ params.title.html | filterquotes | safe if params.title.html else params.title.text }}</p>
13
13
  {% endif %}
14
14
  {% if params.hint %}
15
15
  {% set hintId = params.id + '-hint' %}
@@ -45,11 +45,11 @@
45
45
  {%- for attribute, value in item.attributes %} {{attribute}}="{{value}}"{% endfor %}>
46
46
  <dt class="{% if item.term.classes %}{{ item.term.classes }}{% else %}w-1/2 my-sm{% endif %}"
47
47
  {%- for attribute, value in item.term.attributes %} {{attribute}}="{{value}}"{% endfor %}>
48
- {{ item.term.html | safe if item.term.html else item.term.text }}
48
+ {{ item.term.html | filterquotes | safe if item.term.html else item.term.text }}
49
49
  </dt>
50
50
  <dd class="{% if item.definition.classes %}{{ item.definition.classes }}{% else %}w-1/2 my-sm font-semibold{% endif %}"
51
51
  {%- for attribute, value in item.definition.attributes %} {{attribute}}="{{value}}"{% endfor %}>
52
- {{ item.definition.html | safe if item.definition.html else item.definition.text }}
52
+ {{ item.definition.html | filterquotes | safe if item.definition.html else item.definition.text }}
53
53
  </dd>
54
54
  </div>
55
55
  {% endfor %}
@@ -200,7 +200,7 @@
200
200
  },
201
201
  {
202
202
  "name": "tabla con wrapper",
203
- "description": 'Usa el parámetro <code>wrapper</code> para rodear la tabla con un <code>&lt;div&gt;</code> y poder añadir clases, normalmente para hacer scroll horizontal en la tabla en anchuras pequeñas.',
203
+ "description": "Usa el parámetro <code>wrapper</code> para rodear la tabla con un <code>&lt;div&gt;</code> y poder añadir clases, normalmente para hacer scroll horizontal en la tabla en anchuras pequeñas.",
204
204
  "data": {
205
205
  "caption": "Caption 1: Meses y pagos",
206
206
  "captionClasses": "sticky left-0 top-0 w-0 mb-base font-bold text-left text-lg lg:whitespace-nowrap",
@@ -395,7 +395,7 @@
395
395
  },
396
396
  {
397
397
  "name": "tabla no responsive",
398
- "description": 'Usa la clase modificadora <code>.c-table--no-responsive</code> junto al parámetro <code>wrapper</code> para tablas que usen rowspan o colspan o tablas que no queremos que muestren sus celdas apiladas en móvil.',
398
+ "description": "Usa la clase modificadora <code>.c-table--no-responsive</code> junto al parámetro <code>wrapper</code> para tablas que usen rowspan o colspan o tablas que no queremos que muestren sus celdas apiladas en móvil.",
399
399
  "data": {
400
400
  "classes": "c-table--no-responsive w-full",
401
401
  "caption": "Caption 1: Meses y pagos",
@@ -453,7 +453,7 @@
453
453
  },
454
454
  {
455
455
  "name": "table con columnas sticky",
456
- "description": 'En este ejemplo la primera y última columna se mantienen fijas y el resto hacen scroll horizontal si la anchura es pequeña.',
456
+ "description": "En este ejemplo la primera y última columna se mantienen fijas y el resto hacen scroll horizontal si la anchura es pequeña.",
457
457
  "data": {
458
458
  "caption": "Caption 1: Meses y pagos",
459
459
  "captionClasses": "sticky top-0 left-0 w-0 mb-base font-bold text-left text-lg",
@@ -32,11 +32,11 @@
32
32
  {% if loop.first and params.firstCellIsHeader %}
33
33
  <th scope="row" class="block lg:table-cell before:block before:text-neutral-dark before:lg:hidden before:content-[attr(data-label)] before:text-sm align-top px-base py-sm text-left font-normal text-sm text-neutral-dark{%- if cell.classes %} {{ cell.classes }}{% endif %}"
34
34
  {{- commonAttributes | safe -}}
35
- >{{ cell.html | safe if cell.html else cell.text }}</th>
35
+ >{{ cell.html | filterquotes | safe if cell.html else cell.text }}</th>
36
36
  {% else %}
37
37
  <td class="block lg:table-cell text-left before:block before:text-neutral-dark before:lg:hidden before:content-[attr(data-label)] before:text-sm px-base py-sm {%- if cell.classes %} {{ cell.classes }}{% endif %}"
38
38
  {{- commonAttributes | safe -}}
39
- >{{ cell.html | safe if cell.html else cell.text }}</td>
39
+ >{{ cell.html | filterquotes | safe if cell.html else cell.text }}</td>
40
40
  {% endif %}
41
41
  {% endfor %}
42
42
  </tr>
@@ -66,7 +66,7 @@
66
66
  {
67
67
  "name": "tabla con tfoot",
68
68
  "data": {
69
- "idPrefix": "table-default",
69
+ "idPrefix": "table-tfoot",
70
70
  "caption": "Caption de la tabla",
71
71
  "captionClasses": "sr-only mb-base font-bold text-left text-lg",
72
72
  "head": [
@@ -144,7 +144,7 @@
144
144
  },
145
145
  {
146
146
  "name": "tabla con caption visible",
147
- "description": 'También con <code>"firstCellIsHeader": true</code>',
147
+ "description": "También con <code>'firstCellIsHeader': true</code>",
148
148
  "data": {
149
149
  "idPrefix": "table-with-caption",
150
150
  "caption": "Caption 1: Meses y pagos",
@@ -209,7 +209,7 @@
209
209
  },
210
210
  {
211
211
  "name": "tabla con orderBy en columnas",
212
- "description": 'Con <code>"orderBy": none</code>, <code>asc</code>, <code>desc</code>',
212
+ "description": "Con <code>'orderBy': none</code>, <code>asc</code>, <code>desc</code>",
213
213
  "data": {
214
214
  "idPrefix": "table-with-orderby",
215
215
  "head": [
@@ -290,7 +290,7 @@
290
290
  },
291
291
  {
292
292
  "name": "tabla con head y filtros",
293
- "description": 'Con <code>"hasFilter": true</code> y clases <code>text-right</code> en columnas numéricas.',
293
+ "description": "Con <code>'hasFilter': true</code> y clases <code>text-right</code> en columnas numéricas.",
294
294
  "data": {
295
295
  "idPrefix": "table-with-head-and-filters",
296
296
  "head": [
@@ -353,9 +353,99 @@
353
353
  "classes": "min-w-full"
354
354
  }
355
355
  },
356
+ {
357
+ "name": "tabla con head y filtros con texto personalizado",
358
+ "description": "Con <code>'hasFilter': true</code>, con parámetro <code>'filterText'</code> personalizado y clases <code>text-right</code> en columnas numéricas.",
359
+ "data": {
360
+ "idPrefix": "table-with-head-and-filters-personalized",
361
+ "head": [
362
+ {
363
+ "text": "Mes de pago",
364
+ "select": {
365
+ "items": [
366
+ {
367
+ "value": "",
368
+ "text": "Selecciona mes...",
369
+ "disabled": true,
370
+ "selected": true,
371
+ "hidden": true
372
+ },
373
+ {
374
+ "value": 1,
375
+ "text": "Enero"
376
+ },
377
+ {
378
+ "value": 2,
379
+ "text": "Febrero"
380
+ },
381
+ {
382
+ "value": 3,
383
+ "text": "Marzo"
384
+ }
385
+ ]
386
+ },
387
+ "filterText": "Filtrar por mes"
388
+ },
389
+ {
390
+ "text": "Primer pago",
391
+ "classes": "text-right",
392
+ "hasFilter": true,
393
+ "filterText": "Filtrar por pago en esta columna"
394
+ },
395
+ {
396
+ "text": "Segundo pago",
397
+ "classes": "text-right",
398
+ "hasFilter": true,
399
+ "filterText": "Filtrar por pago en esta columna"
400
+ }
401
+ ],
402
+ "rows": [
403
+ [
404
+ {
405
+ "text": "Enero"
406
+ },
407
+ {
408
+ "text": "85€",
409
+ "classes": "text-right"
410
+ },
411
+ {
412
+ "text": "95€",
413
+ "classes": "text-right"
414
+ }
415
+ ],
416
+ [
417
+ {
418
+ "text": "Febrero"
419
+ },
420
+ {
421
+ "text": "75€",
422
+ "classes": "text-right"
423
+ },
424
+ {
425
+ "text": "55€",
426
+ "classes": "text-right"
427
+ }
428
+ ],
429
+ [
430
+ {
431
+ "text": "Marzo"
432
+ },
433
+ {
434
+ "text": "165€",
435
+ "classes": "text-right"
436
+ },
437
+ {
438
+ "text": "125€",
439
+ "classes": "text-right"
440
+ }
441
+ ]
442
+ ],
443
+ "classes": "min-w-full"
444
+ }
445
+ },
356
446
  {
357
447
  "name": "tabla con head y selectores",
358
- "description": 'Selectores y clases de <code>text-right</code> en columnas numéricas.',
448
+ "description": "Selectores y clases de <code>text-right</code> en columnas numéricas.",
359
449
  "data": {
360
450
  "idPrefix": "table-with-head-and-selects",
361
451
  "head": [
@@ -694,7 +784,7 @@
694
784
  },
695
785
  {
696
786
  "name": "tabla con columnas sticky",
697
- "description": 'Con <code>orderBy</code>, <code>hasCheckboxes</code>, <code>hasFilter</code> y <code>firstCellIsHeader</code>',
787
+ "description": "Con <code>orderBy</code>, <code>hasCheckboxes</code>, <code>hasFilter</code> y <code>firstCellIsHeader</code>",
698
788
  "data": {
699
789
  "idPrefix": "table-with-sticky-columns",
700
790
  "hasCheckboxes": true,
@@ -76,7 +76,7 @@
76
76
  "classes": "-mt-sm mb-0"
77
77
  },
78
78
  "label": {
79
- "text": "Filtrar por esta columna",
79
+ "text": item.filterText if item.filterText else "Filtrar en esta columna",
80
80
  "classes": "sr-only"
81
81
  },
82
82
  "id": item.select.id if item.select.id else idSelect,
@@ -97,12 +97,12 @@
97
97
  "classes": "mb-0"
98
98
  },
99
99
  "label": {
100
- "text": "Buscar en esta columna",
100
+ "text": item.filterText if item.filterText else "Filtrar en esta columna",
101
101
  "classes": "sr-only"
102
102
  },
103
103
  "id": idFilter,
104
104
  "name": idFilter,
105
- "placeholder": "Buscar",
105
+ "placeholder": item.filterText if item.filterText else "Filtrar",
106
106
  "classes": "c-input--sm " + item.filterClasses if item.filterClasses else "c-input--sm",
107
107
  "buttonClasses": "m-xs p-0.5 text-xs",
108
108
  "attributes": {
@@ -142,11 +142,11 @@
142
142
  {% if loop.first and params.firstCellIsHeader %}
143
143
  <th scope="row" class="px-base py-xs border-neutral-base border-b-0 border-r text-left font-normal text-sm text-neutral-dark{%- if cell.classes %} {{ cell.classes }}{% endif %}"
144
144
  {{- commonAttributes | safe -}}
145
- >{{ cell.html | safe if cell.html else cell.text }}</th>
145
+ >{{ cell.html | filterquotes | safe if cell.html else cell.text }}</th>
146
146
  {% else %}
147
147
  <td tabindex="-1" class="px-base py-sm {%- if cell.classes %} {{ cell.classes }}{% endif %}"
148
148
  {{- commonAttributes | safe -}}
149
- >{{ cell.html | safe if cell.html else cell.text }}</td>
149
+ >{{ cell.html | filterquotes | safe if cell.html else cell.text }}</td>
150
150
  {% endif %}
151
151
  {% endfor %}
152
152
  </tr>
@@ -155,7 +155,7 @@
155
155
  </tbody>
156
156
  <tfoot>
157
157
  {% for row in params.foot %}
158
- {%- set idCheckbox = idPrefix + "-checkbox-" + loop.index0 -%}
158
+ {%- set idCheckbox = idPrefix + "-tfoot-checkbox-" + loop.index0 -%}
159
159
  {% if row %}
160
160
  <tr class="border-t-2 border-b border-neutral-base hover:bg-neutral-lighter">
161
161
  {% if params.hasCheckboxes %}
@@ -182,11 +182,11 @@
182
182
  {% if loop.first and params.firstCellIsHeader %}
183
183
  <th scope="row" class="px-base py-xs border-neutral-base border-b-0 border-r text-left font-normal text-sm text-neutral-dark{%- if cell.classes %} {{ cell.classes }}{% endif %}"
184
184
  {{- commonAttributes | safe -}}
185
- >{{ cell.html | safe if cell.html else cell.text }}</th>
185
+ >{{ cell.html | filterquotes | safe if cell.html else cell.text }}</th>
186
186
  {% else %}
187
187
  <td tabindex="-1" class="px-base py-sm {%- if cell.classes %} {{ cell.classes }}{% endif %}"
188
188
  {{- commonAttributes | safe -}}
189
- >{{ cell.html | safe if cell.html else cell.text }}</td>
189
+ >{{ cell.html | filterquotes | safe if cell.html else cell.text }}</td>
190
190
  {% endif %}
191
191
  {% endfor %}
192
192
  </tr>
@@ -57,6 +57,10 @@ params:
57
57
  type: boolean
58
58
  required: false
59
59
  description: If `true`, shows a filter input in head cell.
60
+ - name: filterText
61
+ type: string
62
+ required: false
63
+ description: Text for sr-only labels and placeholder for filter input in head cell.
60
64
  - name: filterClasses
61
65
  type: string
62
66
  required: false