desy-html 7.1.2 → 7.3.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 (147) hide show
  1. package/docs/_global.foot.njk +9 -9
  2. package/docs/_global.head.njk +1 -1
  3. package/docs/_include.template-header.njk +8 -0
  4. package/docs/_macro.example-render.njk +177 -147
  5. package/docs/_macro.render-caller.njk +1 -1
  6. package/docs/ds/_ds.example.border.njk +1 -1
  7. package/docs/ds/_ds.example.color-de-interaccion.njk +5 -5
  8. package/docs/ds/_ds.example.colores-cabecera.njk +7 -7
  9. package/docs/ds/_ds.example.colores-de-soporte.njk +72 -5
  10. package/docs/ds/_ds.example.colores-neutros.njk +12 -12
  11. package/docs/ds/_ds.example.layout.njk +2 -2
  12. package/docs/ds/_ds.example.typography.njk +1 -1
  13. package/docs/ds/_ds.macro.code-snippet.njk +28 -9
  14. package/docs/ds/_ds.section.color.njk +7 -65
  15. package/docs/ds/_ds.section.espaciado.njk +4 -295
  16. package/docs/ds/_ds.section.layout.njk +5 -5
  17. package/docs/ds/_ds.section.textos.njk +32 -54
  18. package/docs/ds/_ds.section.typography.njk +239 -236
  19. package/docs/index.html +12 -0
  20. package/docs/pagina-accesibilidad.html +104 -0
  21. package/docs/pagina-mapa-web.html +131 -0
  22. package/docs/pagina-prueba.html +95 -0
  23. package/docs/plantilla-con-header-advanced.html +7 -0
  24. package/docs/plantilla-editar-con-cabecera-fija-y-sidebar-sticky.html +147 -0
  25. package/docs/plantilla-editar-con-cabecera-fija.html +10 -0
  26. package/docs/plantilla-logueado-con-cabecera-fija-headroom.html +8 -0
  27. package/docs/plantilla-logueado-con-cabecera-fija.html +8 -0
  28. package/docs/plantilla-logueado-con-selector-de-app-y-sidebar.html +157 -0
  29. package/docs/plantilla-logueado-con-selector-de-app-y-subheader.html +9 -0
  30. package/docs/plantilla-logueado-con-selector-de-app.html +7 -0
  31. package/docs/plantilla-logueado-con-titulo-de-app.html +7 -0
  32. package/docs/plantilla-sin-loguear.html +7 -0
  33. package/docs/plantillas.html +88 -0
  34. package/docs/spinner-plantilla-con-header-advanced.html +2 -0
  35. package/docs/spinner-plantilla-editar-con-cabecera-fija.html +5 -0
  36. package/docs/spinner-plantilla-logueado-con-cabecera-fija.html +2 -0
  37. package/docs/spinner-plantilla-logueado-con-selector-de-app-y-subheader.html +4 -0
  38. package/docs/spinner-plantilla-logueado-con-titulo-de-app.html +2 -0
  39. package/docs/spinner-plantilla-sin-loguear.html +18 -0
  40. package/package.json +1 -1
  41. package/src/css/component.headroom.css +31 -0
  42. package/src/css/styles.css +1 -0
  43. package/src/js/aria/dataGrid.js +21 -6
  44. package/src/js/headroom.min.js +7 -0
  45. package/src/js/index.js +0 -7
  46. package/src/js/popper.min.js +6 -0
  47. package/src/js/prism/clipboard.min.js +7 -0
  48. package/src/js/prism/prism-copy-to-clipboard.min.js +1 -0
  49. package/src/js/prism/prism-normalize-whitespace.min.js +1 -0
  50. package/src/js/prism/prism-toolbar.min.js +1 -0
  51. package/src/js/prism/prism-twig.min.js +1 -0
  52. package/src/js/prism/prism-yaml.min.js +1 -0
  53. package/src/js/prism/prism.min.js +1 -0
  54. package/src/js/tippy-bundle.umd.min.js +2 -0
  55. package/src/templates/components/accordion/_template.accordion.njk +95 -84
  56. package/src/templates/components/accordion-history/_template.accordion-history.njk +134 -123
  57. package/src/templates/components/alert/_template.alert.njk +6 -6
  58. package/src/templates/components/breadcrumbs/_template.breadcrumbs.njk +15 -30
  59. package/src/templates/components/button/_template.button.njk +4 -0
  60. package/src/templates/components/button-loader/_template.button-loader.njk +11 -7
  61. package/src/templates/components/card/_examples.card.njk +76 -76
  62. package/src/templates/components/card/_template.card.njk +14 -14
  63. package/src/templates/components/character-count/_template.character-count.njk +3 -6
  64. package/src/templates/components/checkboxes/_examples.checkboxes.njk +49 -10
  65. package/src/templates/components/checkboxes/_template.checkboxes.njk +17 -11
  66. package/src/templates/components/collapsible/_template.collapsible.njk +4 -4
  67. package/src/templates/components/date-input/_template.date-input.njk +46 -40
  68. package/src/templates/components/dialog/_template.dialog.njk +2 -2
  69. package/src/templates/components/error-message/_template.error-message.njk +3 -3
  70. package/src/templates/components/error-summary/_template.error-summary.njk +18 -6
  71. package/src/templates/components/fieldset/_examples.fieldset.njk +32 -6
  72. package/src/templates/components/fieldset/_template.fieldset.njk +28 -16
  73. package/src/templates/components/footer/_examples.footer.njk +14 -9
  74. package/src/templates/components/footer/_template.footer.njk +62 -66
  75. package/src/templates/components/footer/params.footer.yaml +4 -26
  76. package/src/templates/components/header/_examples.header.njk +6 -4
  77. package/src/templates/components/header/_template.header.header__dropdown.njk +27 -22
  78. package/src/templates/components/header/_template.header.header__navigation.njk +4 -1
  79. package/src/templates/components/header/_template.header.header__offcanvas.njk +18 -16
  80. package/src/templates/components/header/_template.header.header__offcanvasButton.njk +2 -1
  81. package/src/templates/components/header/_template.header.header__subnav.njk +33 -29
  82. package/src/templates/components/header/_template.header.njk +70 -60
  83. package/src/templates/components/header-advanced/_examples.header-advanced.njk +46 -32
  84. package/src/templates/components/header-advanced/_template.header-advanced.njk +93 -90
  85. package/src/templates/components/header-mini/_examples.header-mini.njk +1 -1
  86. package/src/templates/components/hint/_examples.hint.njk +2 -2
  87. package/src/templates/components/hint/_template.hint.njk +1 -3
  88. package/src/templates/components/input-group/_template.input-group.njk +72 -68
  89. package/src/templates/components/item/_template.item.njk +23 -23
  90. package/src/templates/components/label/_template.label.njk +25 -14
  91. package/src/templates/components/links-list/_examples.links-list.njk +10 -12
  92. package/src/templates/components/links-list/_template.links-list.njk +35 -37
  93. package/src/templates/components/listbox/_template.listbox.njk +11 -11
  94. package/src/templates/components/menu-navigation/_template.menu-navigation.njk +62 -63
  95. package/src/templates/components/menu-vertical/_template.menu-vertical.njk +41 -41
  96. package/src/templates/components/menubar/_template.menubar.njk +91 -91
  97. package/src/templates/components/modal/_template.modal.njk +63 -53
  98. package/src/templates/components/nav/_template.nav.njk +13 -13
  99. package/src/templates/components/notification/_examples.notification.njk +0 -9
  100. package/src/templates/components/notification/_template.notification.njk +54 -44
  101. package/src/templates/components/pagination/_template.pagination.njk +37 -42
  102. package/src/templates/components/radios/_examples.radios.njk +49 -12
  103. package/src/templates/components/radios/_template.radios.njk +90 -84
  104. package/src/templates/components/searchbar/_template.searchbar.njk +6 -6
  105. package/src/templates/components/select/_template.select.njk +12 -12
  106. package/src/templates/components/status-item/_template.status-item.njk +23 -25
  107. package/src/templates/components/table/_template.table.njk +4 -4
  108. package/src/templates/components/table-advanced/_examples.table-advanced.njk +9 -9
  109. package/src/templates/components/table-advanced/_styles.table-advanced.css +3 -3
  110. package/src/templates/components/table-advanced/_template.table-advanced.njk +85 -83
  111. package/src/templates/components/tabs/_template.tabs.njk +39 -39
  112. package/src/templates/components/toggle/_template.toggle.njk +1 -2
  113. package/src/templates/components/tooltip/_template.tooltip.njk +19 -19
  114. package/src/templates/components/tree/_template.tree.njk +46 -42
  115. package/src/templates/includes/_abrir-notificaciones.njk +3 -0
  116. package/src/templates/includes/_acciones-de-cabecera.njk +28 -0
  117. package/src/templates/includes/_ejemplo-titulo-h2-parrafo.njk +5 -0
  118. package/src/templates/includes/_ejemplo-titulo-parrafo.njk +5 -0
  119. package/src/templates/includes/_loremipsum-large.njk +1 -0
  120. package/src/templates/includes/_test-include.njk +14 -0
  121. package/src/templates/pages/_page.foot-headroom.njk +32 -0
  122. package/src/templates/pages/_page.foot.njk +7 -0
  123. package/src/templates/pages/_page.footer.njk +20 -0
  124. package/src/templates/pages/_page.head.njk +13 -0
  125. package/src/templates/pages/_page.notification-edit-inner-content.njk +31 -0
  126. package/src/templates/pages/_page.notification-edit.njk +31 -0
  127. package/src/templates/pages/_page.notification-footer.njk +33 -0
  128. package/src/templates/pages/_page.notification-header-fixed.njk +31 -0
  129. package/src/templates/pages/_page.notification-header.njk +31 -0
  130. package/src/templates/pages/_page.sidebar-content.njk +21 -0
  131. package/src/templates/pages/_page.spinner-block.njk +15 -0
  132. package/src/templates/pages/_page.spinner-show.njk +16 -0
  133. package/src/templates/pages/_page.spinner.njk +16 -0
  134. package/src/templates/pages/_template.edit-fixed-with-sticky-sidebar.njk +36 -0
  135. package/src/templates/pages/_template.edit-fixed.njk +74 -0
  136. package/src/templates/pages/_template.home.njk +109 -0
  137. package/src/templates/pages/_template.logged-out.njk +53 -0
  138. package/src/templates/pages/_template.logged-selector-fixed-headroom.njk +195 -0
  139. package/src/templates/pages/_template.logged-selector-fixed.njk +192 -0
  140. package/src/templates/pages/_template.logged-selector-subheader.njk +80 -0
  141. package/src/templates/pages/_template.logged-selector-with-sidebar.njk +29 -0
  142. package/src/templates/pages/_template.logged-selector.njk +195 -0
  143. package/src/templates/pages/_template.logged.njk +138 -0
  144. package/src/templates/pages/_template.mfe-iframe-content.njk +31 -0
  145. package/src/templates/pages/_template.mfe.njk +80 -0
  146. package/src/templates/pages/_template.test.njk +45 -0
  147. package/src/templates/pages/_template.with-header-advanced.njk +130 -0
@@ -0,0 +1,28 @@
1
+ {% from "components/button/_macro.button.njk" import componentButton %}
2
+
3
+ <nav aria-labelledby="acciones-de-cabecera">
4
+ <p class="sr-only" id="acciones-de-cabecera">Menú de acciones</p>
5
+ <ul class="flex flex-wrap flex-column-reverse lg:flex-row-reverse gap-sm lg:items-center lg:ml-auto lg:pl-base">
6
+ <li>
7
+ {{ componentButton({
8
+ "text": "Guardar y salir",
9
+ "href": "#",
10
+ "classes": "c-button--primary c-button--sm"
11
+ }) }}
12
+ </li>
13
+ <li>
14
+ {{ componentButton({
15
+ "text": "Guardar",
16
+ "href": "#",
17
+ "classes": "c-button--sm"
18
+ }) }}
19
+ </li>
20
+ <li>
21
+ {{ componentButton({
22
+ "text": "Salir",
23
+ "href": "#",
24
+ "classes": "c-button--sm"
25
+ }) }}
26
+ </li>
27
+ </ul>
28
+ </nav>
@@ -0,0 +1,5 @@
1
+ <div class="pb-lg"></div>
2
+ <h2 class="c-h1">Título de página (h2)</h2>
3
+ <p class="c-paragraph-base">
4
+ Aqui un ejemplo de párrafo explicativo de la página. Lorem ipsum, dolor sit amet consectetur adipisicing elit. Illum, nobis quae amet esse! Accusamus, enim. Corrupti expedita officia perferendis quas dicta earum placeat voluptates, laudantium at, optio minus consequuntur pariatur.
5
+ </p>
@@ -0,0 +1,5 @@
1
+ <div class="pb-lg"></div>
2
+ <h1 class="c-h1">Título de página (h1)</h1>
3
+ <p class="c-paragraph-base">
4
+ Aqui un ejemplo de párrafo explicativo de la página. Lorem ipsum, dolor sit amet consectetur adipisicing elit. Illum, nobis quae amet esse! Accusamus, enim. Corrupti expedita officia perferendis quas dicta earum placeat voluptates, laudantium at, optio minus consequuntur pariatur.
5
+ </p>
@@ -0,0 +1 @@
1
+ <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Dicta quia recusandae quibusdam cum nam quaerat, reprehenderit, doloribus excepturi odit praesentium dolorum at aut cumque eius ullam reiciendis! Aspernatur, vero, doloremque! Quaerat veniam velit totam atque voluptatum facilis cupiditate aperiam a harum, voluptate sapiente repellendus natus culpa ipsum illum earum libero nostrum debitis cumque. Nihil explicabo dolorem nulla illo architecto ipsam. Tenetur minima nihil doloremque praesentium ullam, odio animi quisquam eaque aperiam suscipit porro voluptate repellendus itaque laudantium! Molestiae quos quae error corrupti minima hic eveniet quod reiciendis, consectetur suscipit quidem. Distinctio, in, assumenda nulla debitis obcaecati temporibus fuga provident excepturi vel, beatae sit reprehenderit harum unde, accusamus quod ipsa blanditiis ea aperiam quasi inventore. Beatae earum pariatur, eius officia vitae! Dolores explicabo tenetur rem illo, odio! Sint temporibus, explicabo cupiditate voluptate ex, possimus magni quibusdam, molestiae porro quidem molestias sed! Nam sit, deserunt quisquam in! Eum, nemo id nostrum illo. Officia omnis amet, officiis quia tempora reprehenderit ipsam praesentium nam at eum soluta labore impedit cum distinctio quo placeat. Est architecto omnis ducimus perspiciatis rem accusamus illum voluptatibus voluptates distinctio. Explicabo sapiente iure laboriosam hic, dignissimos ducimus inventore quaerat reiciendis iusto, sit corporis modi quam eligendi eum asperiores nihil accusantium nostrum voluptatibus sint, doloremque officiis voluptate deleniti recusandae. Impedit, consequuntur. Iusto tempora minus cumque debitis beatae itaque, aliquam corrupti quia natus, voluptas eligendi, facere voluptatum quam. Excepturi voluptatem, iste numquam tenetur corporis, adipisci similique est mollitia, nobis inventore, nemo harum. Quia ex accusantium impedit architecto quidem optio laudantium facere dolorum, minima autem eum repellendus fuga ullam praesentium cupiditate neque fugit hic quae incidunt illum accusamus, rerum, quod. Atque, consectetur, aut? Quod, in. Corrupti voluptatem natus ipsum, sunt et accusantium aliquam eum quidem dolore sint explicabo nemo neque debitis dicta necessitatibus provident dolores corporis, ut suscipit. Perferendis quo quos fuga, praesentium! Lorem, ipsum dolor sit amet consectetur adipisicing elit. Dicta quia recusandae quibusdam cum nam quaerat, reprehenderit, doloribus excepturi odit praesentium dolorum at aut cumque eius ullam reiciendis! Aspernatur, vero, doloremque! Quaerat veniam velit totam atque voluptatum facilis cupiditate aperiam a harum, voluptate sapiente repellendus natus culpa ipsum illum earum libero nostrum debitis cumque. Nihil explicabo dolorem nulla illo architecto ipsam. Tenetur minima nihil doloremque praesentium ullam, odio animi quisquam eaque aperiam suscipit porro voluptate repellendus itaque laudantium! Molestiae quos quae error corrupti minima hic eveniet quod reiciendis, consectetur suscipit quidem. Distinctio, in, assumenda nulla debitis obcaecati temporibus fuga provident excepturi vel, beatae sit reprehenderit harum unde, accusamus quod ipsa blanditiis ea aperiam quasi inventore. Beatae earum pariatur, eius officia vitae! Dolores explicabo tenetur rem illo, odio! Sint temporibus, explicabo cupiditate voluptate ex, possimus magni quibusdam, molestiae porro quidem molestias sed! Nam sit, deserunt quisquam in! Eum, nemo id nostrum illo. Officia omnis amet, officiis quia tempora reprehenderit ipsam praesentium nam at eum soluta labore impedit cum distinctio quo placeat. Est architecto omnis ducimus perspiciatis rem accusamus illum voluptatibus voluptates distinctio. Explicabo sapiente iure laboriosam hic, dignissimos ducimus inventore quaerat reiciendis iusto, sit corporis modi quam eligendi eum asperiores nihil accusantium nostrum voluptatibus sint, doloremque officiis voluptate deleniti recusandae. Impedit, consequuntur. Iusto tempora minus cumque debitis beatae itaque, aliquam corrupti quia natus, voluptas eligendi, facere voluptatum quam. Excepturi voluptatem, iste numquam tenetur corporis, adipisci similique est mollitia, nobis inventore, nemo harum. Quia ex accusantium impedit architecto quidem optio laudantium facere dolorum, minima autem eum repellendus fuga ullam praesentium cupiditate neque fugit hic quae incidunt illum accusamus, rerum, quod. Atque, consectetur, aut? Quod, in. Corrupti voluptatem natus ipsum, sunt et accusantium aliquam eum quidem dolore sint explicabo nemo neque debitis dicta necessitatibus provident dolores corporis, ut suscipit. Perferendis quo quos fuga, praesentium!</p>
@@ -0,0 +1,14 @@
1
+ {% from "components/test-component/_macro.test-component.njk" import componentTestComponent %}
2
+ {% from "components/test-component-caller/_macro.test-component-caller.njk" import componentTestComponentCaller %}
3
+
4
+ <div class="p-base border border-neutral-base">
5
+ <p>Este es un include de prueba</p>
6
+ {{ componentTestComponent({
7
+ "html": 'Este es <strong class="font-bold">un componente de prueba</strong>'
8
+ }) }}
9
+ {% call componentTestComponentCaller({
10
+ "html": 'Este es un componente <strong class="font-bold ">con caller</strong>'
11
+ }) %}
12
+ <div class="w-48 p-2"><div class=" border-4 border-dashed border-gray-200 rounded-lg h-40 "></div></div>
13
+ {% endcall %}
14
+ </div>
@@ -0,0 +1,32 @@
1
+ <!-- page.foot-headroom -->
2
+ <script src="js/headroom.min.js"></script>
3
+ <script>
4
+ const modules = document.querySelectorAll('[data-module]');
5
+ for (const item in modules) if (modules.hasOwnProperty(item)) {
6
+ const moduleValue = modules[item].getAttribute('data-module');
7
+
8
+ if (moduleValue == 'c-header'){
9
+ const options = {
10
+ // vertical offset in px before element is first unpinned
11
+ offset : 0,
12
+ // scroll tolerance in px before state changes
13
+ tolerance : {
14
+ up : 0,
15
+ down : 0
16
+ },
17
+ // callback when unpinned, `this` is headroom object
18
+ onUnpin : function() {
19
+ // oculta todos los dropdowns que hubiese abiertos en el header
20
+ }
21
+ };
22
+ const headroom = new Headroom(modules[item], options);
23
+ headroom.init();
24
+ }
25
+ }
26
+ </script>
27
+ <script src="js/popper.min.js"></script>
28
+ <script src="js/tippy-bundle.umd.min.js"></script>
29
+ <script type="module" src="js/index.js"></script>
30
+ </body>
31
+ </html>
32
+
@@ -0,0 +1,7 @@
1
+ <!-- page.foot -->
2
+ <script src="js/popper.min.js"></script>
3
+ <script src="js/tippy-bundle.umd.min.js"></script>
4
+ <script type="module" src="js/index.js"></script>
5
+ </body>
6
+ </html>
7
+
@@ -0,0 +1,20 @@
1
+ <!-- page.footer -->
2
+ {% from "components/footer/_macro.footer.njk" import componentFooter %}
3
+ {{ componentFooter({
4
+ "meta": {
5
+ "visuallyHiddenTitle": "Enlaces a pie de página",
6
+ "items": [
7
+ {
8
+ "href": "pagina-accesibilidad.html",
9
+ "text": "Accesibilidad"
10
+ },
11
+ {
12
+ "href": "pagina-mapa-web.html",
13
+ "text": "Mapa web"
14
+ }
15
+ ],
16
+ "html": 'Creado por <a href="https://sda.aragon.es/" class="c-link c-link--neutral">SDA Servicios Digitales de Aragón</a>'
17
+ },
18
+ "classes": "mt-lg lg:mt-48"
19
+ }) }}
20
+ <!-- /page.footer -->
@@ -0,0 +1,13 @@
1
+ <!doctype html>
2
+ <html lang="es">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>{{ title if title else "Project title" }}</title>
7
+ <link rel="icon" type="image/x-icon" href="https://aplicaciones.aragon.es/favicon.ico">
8
+ <link rel="preconnect" href="https://fonts.googleapis.com">
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
+ <link href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap" rel="stylesheet">
11
+ <link rel="stylesheet" href="css/styles.css">
12
+ </head>
13
+ <!-- /page.head -->
@@ -0,0 +1,31 @@
1
+ {% from "components/alert/_macro.alert.njk" import componentAlert %}
2
+ {% from "components/notification/_macro.notification.njk" import componentNotification %}
3
+ <!-- page.notification-edit-inner-content -->
4
+ <section id="notification-inner-content-container" aria-labelledby="notification-inner-content-heading" class="sticky top-base z-10 lg:top-28 w-full" aria-hidden="true"> {# aria-hidden must dissapear when a notification appears #}{# top-28 depends on the fixed heading height #}
5
+ <h2 id="notification-inner-content-heading" class="sr-only">Avisos importantes en contenido central</h2>
6
+ {% call componentAlert({
7
+ "button": {
8
+ "text": "Mostrar notificación",
9
+ "classes": "hidden",
10
+ "attributes": {
11
+ "onclick": "openAlert('notification-inner-content', this)"
12
+ }
13
+ },
14
+ "id": "notification-inner-content",
15
+ "attributes": {
16
+ "role": "alert",
17
+ "aria-live": "assertive"
18
+ }
19
+ }) %}
20
+ {{ componentNotification({
21
+ "title": {
22
+ "text": "El documento se ha cargado correctamente"
23
+ },
24
+ "type": "success",
25
+ "id": "type-success",
26
+ "isDismissible": true,
27
+ "classes": "c-notification--success mb-base"
28
+ }) }}
29
+ {% endcall %}
30
+ </section>
31
+ <!-- /page.notification-edit-inner-content -->
@@ -0,0 +1,31 @@
1
+ {% from "components/alert/_macro.alert.njk" import componentAlert %}
2
+ {% from "components/notification/_macro.notification.njk" import componentNotification %}
3
+ <!-- page.notification-edit -->
4
+ <section id="notification-header-container" aria-labelledby="notification-header-heading" class="sticky top-base z-10 lg:top-28 w-full" aria-hidden="true"> {# aria-hidden must dissapear when a notification appears #}{# top-28 depends on the fixed heading height #}
5
+ <h2 id="notification-header-heading" class="sr-only">Avisos importantes</h2>
6
+ {% call componentAlert({
7
+ "button": {
8
+ "text": "Mostrar notificación",
9
+ "classes": "hidden",
10
+ "attributes": {
11
+ "onclick": "openAlert('notification-header', this)"
12
+ }
13
+ },
14
+ "id": "notification-header",
15
+ "attributes": {
16
+ "role": "alert",
17
+ "aria-live": "assertive"
18
+ }
19
+ }) %}
20
+ {{ componentNotification({
21
+ "title": {
22
+ "text": "El documento se ha cargado correctamente"
23
+ },
24
+ "type": "success",
25
+ "id": "type-success",
26
+ "isDismissible": true,
27
+ "classes": "c-notification--success mt-base"
28
+ }) }}
29
+ {% endcall %}
30
+ </section>
31
+ <!-- /page.notification-edit -->
@@ -0,0 +1,33 @@
1
+ {% from "components/alert/_macro.alert.njk" import componentAlert %}
2
+ {% from "components/notification/_macro.notification.njk" import componentNotification %}
3
+ <!-- page.notification-footer -->
4
+ <section id="notification-footer-container" aria-labelledby="notification-footer-heading" class="fixed z-10 inset-x-0 bottom-base w-full" aria-hidden="true">{# aria-hidden must dissapear when a notification appears #}
5
+ <div class="container mx-auto px-base">
6
+ <h2 id="notification-footer-heading" class="sr-only">Avisos importantes a pie de página</h2>
7
+ {% call componentAlert({
8
+ "button": {
9
+ "text": "Mostrar notificación",
10
+ "classes": "hidden",
11
+ "attributes": {
12
+ "onclick": "openAlert('notification-footer', this)"
13
+ }
14
+ },
15
+ "id": "notification-footer",
16
+ "attributes": {
17
+ "role": "alert",
18
+ "aria-live": "assertive"
19
+ }
20
+ }) %}
21
+ {{ componentNotification({
22
+ "title": {
23
+ "text": "El documento se ha cargado correctamente"
24
+ },
25
+ "type": "success",
26
+ "id": "type-success",
27
+ "isDismissible": true,
28
+ "classes": "c-notification--success"
29
+ }) }}
30
+ {% endcall %}
31
+ </div>
32
+ </section>
33
+ <!-- /page.notification-footer -->
@@ -0,0 +1,31 @@
1
+ {% from "components/alert/_macro.alert.njk" import componentAlert %}
2
+ {% from "components/notification/_macro.notification.njk" import componentNotification %}
3
+ <!-- page.notification-header-fixed -->
4
+ <section id="notification-header-container" aria-labelledby="notification-header-heading" class="sticky z-10 top-base lg:top-2xl w-full" aria-hidden="true">{# aria-hidden must dissapear when a notification appears #}
5
+ <h2 id="notification-header-heading" class="sr-only">Avisos importantes</h2>
6
+ {% call componentAlert({
7
+ "button": {
8
+ "text": "Mostrar notificación",
9
+ "classes": "hidden",
10
+ "attributes": {
11
+ "onclick": "openAlert('notification-header', this)"
12
+ }
13
+ },
14
+ "id": "notification-header",
15
+ "attributes": {
16
+ "role": "alert",
17
+ "aria-live": "assertive"
18
+ }
19
+ }) %}
20
+ {{ componentNotification({
21
+ "title": {
22
+ "text": "El documento se ha cargado correctamente"
23
+ },
24
+ "type": "success",
25
+ "id": "type-success",
26
+ "isDismissible": true,
27
+ "classes": "c-notification--success mt-base"
28
+ }) }}
29
+ {% endcall %}
30
+ </section>
31
+ <!-- /page.notification-header-fixed -->
@@ -0,0 +1,31 @@
1
+ {% from "components/alert/_macro.alert.njk" import componentAlert %}
2
+ {% from "components/notification/_macro.notification.njk" import componentNotification %}
3
+ <!-- page.notification-header -->
4
+ <section id="notification-header-container" aria-labelledby="notification-header-heading" class="sticky z-10 top-base w-full" aria-hidden="true">{# aria-hidden must dissapear when a notification appears #}
5
+ <h2 id="notification-header-heading" class="sr-only">Avisos importantes</h2>
6
+ {% call componentAlert({
7
+ "button": {
8
+ "text": "Mostrar notificación",
9
+ "classes": "hidden",
10
+ "attributes": {
11
+ "onclick": "openAlert('notification-header', this)"
12
+ }
13
+ },
14
+ "id": "notification-header",
15
+ "attributes": {
16
+ "role": "alert",
17
+ "aria-live": "assertive"
18
+ }
19
+ }) %}
20
+ {{ componentNotification({
21
+ "title": {
22
+ "text": "El documento se ha cargado correctamente"
23
+ },
24
+ "type": "success",
25
+ "id": "type-success",
26
+ "isDismissible": true,
27
+ "classes": "c-notification--success mt-base"
28
+ }) }}
29
+ {% endcall %}
30
+ </section>
31
+ <!-- /page.notification-header -->
@@ -0,0 +1,21 @@
1
+ <!-- page.sidebar-content -->
2
+ <div class="grid grid-cols-2 lg:grid-cols-4 gap-xl">
3
+ <div class="col-span-2 lg:col-span-1">
4
+ <!-- sidebarBlock -->
5
+ {% block sidebarBlock %}
6
+ {% endblock %}
7
+ <!-- /sidebarBlock -->
8
+ </div>
9
+ <div class="col-span-2 lg:col-span-3">
10
+ <!-- notificationInnerContentBlock -->
11
+ {% block notificationInnerContentBlock %}
12
+ {% include "pages/_page.notification-edit-inner-content.njk" %}
13
+ {% endblock %}
14
+ <!-- /notificationInnerContentBlock -->
15
+ <!-- innerContentBlock -->
16
+ {% block innerContentBlock %}
17
+ {% endblock %}
18
+ <!-- /innerContentBlock -->
19
+ </div>
20
+ </div>
21
+ <!-- /page.sidebar-content -->
@@ -0,0 +1,15 @@
1
+ {% from "components/spinner/_macro.spinner.njk" import componentSpinner %}
2
+ <!-- page.spinner-block -->
3
+ <div class="relative pb-2xl lg:pb-0">
4
+ <p>
5
+ {{ componentSpinner({
6
+ "text": "Espera por favor, el contenido principal de la página se está cargando",
7
+ "classes": "absolute inset-0 z-50 h-full pt-2xl text-4xl text-neutral-base",
8
+ "attributes": {
9
+ "id": spinnerId if spinnerId else "spinner-block"
10
+ }
11
+ }) }}
12
+ </p>
13
+ {# This spinner must be visible for 5 seconds. When new content is loaded, the text must change to "Se ha cargado la página _título de la página_"... After 5 seconds the spinner must dissapear #}
14
+ </div>
15
+ <!-- /page.spinner-block -->
@@ -0,0 +1,16 @@
1
+ {% from "components/spinner/_macro.spinner.njk" import componentSpinner %}
2
+ <!-- page.spinner-show -->
3
+ <aside aria-labelledby="page-spinner">
4
+ <p>
5
+ {{ componentSpinner({
6
+ "text": "Espera por favor, el contenido principal de la página se está cargando",
7
+ "classes": "fixed inset-0 z-50 h-screen text-6xl text-neutral-base",
8
+ "attributes": {
9
+ "id": "page-spinner"
10
+ }
11
+ }) }}
12
+ </p>
13
+ {# This spinner must be visible for 5 seconds. When new content is loaded, the text must change to "Se ha cargado la página _título de la página_"... After 5 seconds the spinner must dissapear #}
14
+ {# Habría que validar una vez que se carga el contenido, qué anuncia el lector (si se ha previsto algún mensaje de “contenido principal cargado”) y qué elemento coge el foco (puesto que el usuario puede moverse por la página, no debería movérsele el foco). #}
15
+ </aside>
16
+ <!-- /page.spinner-show -->
@@ -0,0 +1,16 @@
1
+ {% from "components/spinner/_macro.spinner.njk" import componentSpinner %}
2
+ <!-- page.spinner -->
3
+ <aside aria-labelledby="page-spinner" aria-hidden="true">
4
+ <p>
5
+ {{ componentSpinner({
6
+ "text": "Espera por favor, la página se está cargando",
7
+ "classes": "hidden fixed inset-0 z-50 h-screen text-6xl text-neutral-base",
8
+ "attributes": {
9
+ "id": "page-spinner"
10
+ }
11
+ }) }}
12
+ </p>
13
+ {# aria-hidden and .hidden must dissapear when showing the spinner in page #}{# When new content is loaded, the text must change to "Se ha cargado la página _título de la página_"... #}
14
+ {# Habría que validar una vez que se carga el contenido: qué anuncia el lector (si se ha previsto algún mensaje de "página cargada") y qué elemento coge el foco (puesto que se está cargando la página entera, lo esperable sería el primer elemento, esto es, el botón Ir al contenido principal). #}
15
+ </aside>
16
+ <!-- /page.spinner -->
@@ -0,0 +1,36 @@
1
+ {% extends "pages/_template.edit-fixed.njk" %}
2
+
3
+ {% from "components/skip-link/_macro.skip-link.njk" import componentSkipLink %}
4
+
5
+ {% block headerSkipLinkBlock %}
6
+ <!-- headerSkipLinkBlock -->
7
+ {{ componentSkipLink({
8
+ "text": "Saltar al contenido principal",
9
+ "href": "#content-center"
10
+ }) }}
11
+ <!-- /headerSkipLinkBlock -->
12
+ {% endblock %}
13
+
14
+ {% block contentBlock %}
15
+ <!-- contentBlock -->
16
+ <div class="grid grid-cols-4 gap-x-lg">
17
+ <div class="sticky top-0 hidden lg:block lg:col-span-1 h-screen lg:-mt-2xl lg:pt-24 pb-lg overflow-y-auto">
18
+ <!-- sidebarBlock -->
19
+ {% block sidebarBlock %}
20
+ {% endblock %}
21
+ <!-- /sidebarBlock -->
22
+ </div>
23
+ <section id="content-center" class="col-span-4 lg:col-span-3 py-base lg:-mt-2xl lg:pt-28 lg:pl-lg" aria-label="Contenido central">
24
+ <!-- notificationInnerContentBlock -->
25
+ {% block notificationInnerContentBlock %}
26
+ {% include "pages/_page.notification-edit-inner-content.njk" %}
27
+ {% endblock %}
28
+ <!-- /notificationInnerContentBlock -->
29
+ <!-- innerContentBlock -->
30
+ {% block innerContentBlock %}
31
+ {% endblock %}
32
+ <!-- /innerContentBlock -->
33
+ </section>
34
+ </div>
35
+ <!-- /contentBlock -->
36
+ {% endblock %}
@@ -0,0 +1,74 @@
1
+ {% include "pages/_page.head.njk" %}
2
+
3
+ {% from "components/button/_macro.button.njk" import componentButton %}
4
+ {% from "components/skip-link/_macro.skip-link.njk" import componentSkipLink %}
5
+
6
+ <body>
7
+ <!-- pageSpinnerBlock -->
8
+ {% block pageSpinnerBlock %}
9
+ {% include "pages/_page.spinner.njk" %}
10
+ {% endblock %}
11
+ <!-- /pageSpinnerBlock -->
12
+ <header class="lg:fixed lg:inset-x-0 lg:top-0 z-40 bg-white border-b border-neutral-base">
13
+ <div class="container mx-auto px-base ">
14
+ <!-- headerSkipLinkBlock -->
15
+ {% block headerSkipLinkBlock %}
16
+ {{ componentSkipLink({
17
+ "text": "Saltar al contenido principal",
18
+ "href": "#content"
19
+ }) }}
20
+ {% endblock %}
21
+ <!-- /headerSkipLinkBlock -->
22
+ <div class="lg:flex lg:flex-wrap lg:w-full py-base">
23
+ <div class="w-full">
24
+ <!-- headerNavigationEditBlock -->
25
+ {% block headerNavigationEditBlock %}
26
+ {% endblock %}
27
+ <!-- /headerNavigationEditBlock -->
28
+ </div>
29
+ <div class="flex-1 mb-base lg:mb-0">
30
+ <!-- headerTitleEditBlock -->
31
+ {% block headerTitleEditBlock %}
32
+ <h1 class="uppercase">
33
+ Editando item
34
+ <span class="c-h3 block mt-xs normal-case">Título del item editado (h1)</span>
35
+ </h1>
36
+ {% endblock %}
37
+ <!-- /headerTitleEditBlock -->
38
+ </div>
39
+ <!-- headerActionsEditBlock -->
40
+ {% block headerActionsEditBlock %}
41
+ {% include "includes/_acciones-de-cabecera.njk" %}
42
+ {% endblock %}
43
+ <!-- /headerActionsEditBlock -->
44
+ </div>
45
+ </div>
46
+ </header>
47
+ <main id="content" class="relative container mx-auto px-base">
48
+ <div class="lg:pb-2xl"></div> {# This is to push the content to avoid overlapping with he fixed header. Customize this according to the header height #}
49
+ <!-- notificationHeaderBlock -->
50
+ {% block notificationHeaderBlock %}
51
+ {% include "pages/_page.notification-edit.njk" %}
52
+ {% endblock %}
53
+ <!-- /notificationHeaderBlock -->
54
+ <!-- contentBlock -->
55
+ {% block contentBlock %}
56
+ {% include "pages/_page.spinner-block.njk" %}
57
+ {% endblock %}
58
+ <!-- /contentBlock -->
59
+ <!-- notificationFooterBlock -->
60
+ {% block notificationFooterBlock %}
61
+ {% include "pages/_page.notification-footer.njk" %}
62
+ {% endblock %}
63
+ <!-- /notificationFooterBlock -->
64
+ </main>
65
+ <!-- footerBlock -->
66
+ {% block footerBlock %}
67
+ {% include "pages/_page.footer.njk" %}
68
+ {% endblock %}
69
+ <!-- /footerBlock -->
70
+ <!-- modalBlock -->
71
+ {% block modalBlock %}
72
+ {% endblock %}
73
+ <!-- /modalBlock -->
74
+ {% include "pages/_page.foot-headroom.njk" %}
@@ -0,0 +1,109 @@
1
+ {% include "pages/_page.head.njk" %}
2
+
3
+ {% from "components/header/_macro.header.njk" import componentHeader %}
4
+ {% from "components/nav/_macro.nav.njk" import componentNav %}
5
+ {% from "components/details/_macro.details.njk" import componentDetails %}
6
+ <!-- template.home -->
7
+ <body>
8
+ <!-- pageSpinnerBlock -->
9
+ {% block pageSpinnerBlock %}
10
+ {% include "pages/_page.spinner.njk" %}
11
+ {% endblock %}
12
+ <!-- /pageSpinnerBlock -->
13
+ <!-- headerBlock -->
14
+ {% block headerBlock %}
15
+ {% call componentHeader({
16
+ "homepageUrl": "index.html",
17
+ "mobileTitle": {
18
+ "text": "desy-html-starter"
19
+ },
20
+ "expandedLogo": true,
21
+ "navigation": {
22
+ "items": [
23
+ {
24
+ "href": "index.html",
25
+ "text": "Inicio",
26
+ "active": true
27
+ },
28
+ {
29
+ "href": "#plantillas",
30
+ "text": "Plantillas"
31
+ },
32
+ {
33
+ "href": "#spinners",
34
+ "text": "Spinners"
35
+ },
36
+ {
37
+ "href": "#paginas",
38
+ "text": "Páginas"
39
+ }
40
+ ]
41
+ },
42
+ "offcanvas": {
43
+ "text": "Menu",
44
+ "textClose": "Cerrar menu"
45
+ }
46
+ }) %}
47
+ <nav class="w-full p-2" aria-label="Menú móvil">
48
+ <h3 class="p-base text-base font-bold">Plantillas para desy-html</h3>
49
+ {{ componentNav({
50
+ "idPrefix": "nav-mobile-pages",
51
+ "hasNav": false,
52
+ "items": [
53
+ {
54
+ "href": "index.html",
55
+ "text": "Inicio",
56
+ "active": true
57
+ },
58
+ {
59
+ "href": "#plantillas",
60
+ "text": "Plantillas"
61
+ },
62
+ {
63
+ "href": "#spinners",
64
+ "text": "Spinners"
65
+ },
66
+ {
67
+ "href": "#paginas",
68
+ "text": "Páginas"
69
+ }
70
+ ],
71
+ "attributes": {
72
+ "aria-label": "Lista de páginas"
73
+ }
74
+ }) }}
75
+ </nav>
76
+ {% endcall %}
77
+ {% endblock %}
78
+ <!-- /headerBlock -->
79
+ <!-- subheaderBlock -->
80
+ {% block subheaderBlock %}
81
+ {% endblock %}
82
+ <!-- /subheaderBlock -->
83
+ <main id="content" class="relative container mx-auto px-base">
84
+ <!-- notificationHeaderBlock -->
85
+ {% block notificationHeaderBlock %}
86
+ {% include "pages/_page.notification-header.njk" %}
87
+ {% endblock %}
88
+ <!-- /notificationHeaderBlock -->
89
+ <!-- contentBlock -->
90
+ {% block contentBlock %}
91
+ {% include "pages/_page.spinner-block.njk" %}
92
+ {% endblock %}
93
+ <!-- /contentBlock -->
94
+ <!-- notificationFooterBlock -->
95
+ {% block notificationFooterBlock %}
96
+ {% include "pages/_page.notification-footer.njk" %}
97
+ {% endblock %}
98
+ <!-- /notificationFooterBlock -->
99
+ </main>
100
+ <!-- footerBlock -->
101
+ {% block footerBlock %}
102
+ {% include "pages/_page.footer.njk" %}
103
+ {% endblock %}
104
+ <!-- /footerBlock -->
105
+ <!-- modalBlock -->
106
+ {% block modalBlock %}
107
+ {% endblock %}
108
+ <!-- /modalBlock -->
109
+ {% include "pages/_page.foot.njk" %}