utn-cli 2.1.38 → 2.1.40
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.
- package/package.json +1 -1
- package/templates/backend/rutas/misc.js +14 -0
- package/templates/backend/servicios/Nucleo/Miscelaneas.js +125 -0
- package/templates/frontend/src/app/Componentes/Nucleo/calendario-publico/calendario-publico.component.css +236 -0
- package/templates/frontend/src/app/Componentes/Nucleo/calendario-publico/calendario-publico.component.html +172 -0
- package/templates/frontend/src/app/Componentes/Nucleo/calendario-publico/calendario-publico.component.ts +106 -0
- package/templates/frontend/src/app/Componentes/Nucleo/reordenar-menu/reordenar-menu.component.css +65 -0
- package/templates/frontend/src/app/Componentes/Nucleo/reordenar-menu/reordenar-menu.component.html +17 -0
- package/templates/frontend/src/app/Componentes/Nucleo/reordenar-menu/reordenar-menu.component.ts +41 -0
- package/templates/frontend/src/app/Paginas/Nucleo/accesibilidad/accesibilidad.component.css +239 -0
- package/templates/frontend/src/app/Paginas/Nucleo/accesibilidad/accesibilidad.component.html +289 -0
- package/templates/frontend/src/app/Paginas/Nucleo/accesibilidad/accesibilidad.component.ts +28 -0
- package/templates/frontend/src/app/Paginas/Nucleo/contenedor-componentes/contenedor-componentes.component.html +13 -12
- package/templates/frontend/src/app/Paginas/Nucleo/contenedor-componentes/contenedor-componentes.component.ts +102 -1
- package/templates/frontend/src/app/Paginas/Nucleo/declaracion-ia/declaracion-ia.component.css +149 -0
- package/templates/frontend/src/app/Paginas/Nucleo/declaracion-ia/declaracion-ia.component.html +69 -0
- package/templates/frontend/src/app/Paginas/Nucleo/declaracion-ia/declaracion-ia.component.ts +11 -0
- package/templates/frontend/src/app/app.routes.ts +8 -0
package/templates/frontend/src/app/Componentes/Nucleo/reordenar-menu/reordenar-menu.component.css
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
.instruccion {
|
|
2
|
+
font-size: 0.875rem;
|
|
3
|
+
color: #555;
|
|
4
|
+
margin: 0 0 1rem 0;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.lista-items {
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
gap: 0.5rem;
|
|
11
|
+
min-width: 280px;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.item {
|
|
15
|
+
display: flex;
|
|
16
|
+
align-items: center;
|
|
17
|
+
gap: 0.75rem;
|
|
18
|
+
padding: 0.75rem 1rem;
|
|
19
|
+
border-radius: 8px;
|
|
20
|
+
background: #f5f8ff;
|
|
21
|
+
border-left: 4px solid #1976d2;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.handle {
|
|
25
|
+
color: #999;
|
|
26
|
+
cursor: grab;
|
|
27
|
+
flex-shrink: 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.handle:active {
|
|
31
|
+
cursor: grabbing;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.item-icono {
|
|
35
|
+
color: #1976d2;
|
|
36
|
+
flex-shrink: 0;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.item-etiqueta {
|
|
40
|
+
flex: 1;
|
|
41
|
+
font-size: 0.95rem;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.cdk-drag-preview {
|
|
45
|
+
display: flex;
|
|
46
|
+
align-items: center;
|
|
47
|
+
gap: 0.75rem;
|
|
48
|
+
padding: 0.75rem 1rem;
|
|
49
|
+
border-radius: 8px;
|
|
50
|
+
background: white;
|
|
51
|
+
border-left: 4px solid #1976d2;
|
|
52
|
+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.cdk-drag-placeholder {
|
|
56
|
+
opacity: 0.3;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.cdk-drag-animating {
|
|
60
|
+
transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.lista-items.cdk-drop-list-dragging .item:not(.cdk-drag-placeholder) {
|
|
64
|
+
transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
|
|
65
|
+
}
|
package/templates/frontend/src/app/Componentes/Nucleo/reordenar-menu/reordenar-menu.component.html
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<h2 mat-dialog-title>Reordenar menú</h2>
|
|
2
|
+
<mat-dialog-content>
|
|
3
|
+
<p class="instruccion">Arrastrá los elementos para cambiar el orden.</p>
|
|
4
|
+
<div cdkDropList (cdkDropListDropped)="drop($event)" class="lista-items">
|
|
5
|
+
@for (item of items; track item.id) {
|
|
6
|
+
<div cdkDrag class="item">
|
|
7
|
+
<mat-icon cdkDragHandle class="handle">drag_indicator</mat-icon>
|
|
8
|
+
<mat-icon class="item-icono">{{ item.icono }}</mat-icon>
|
|
9
|
+
<span class="item-etiqueta">{{ item.etiqueta }}</span>
|
|
10
|
+
</div>
|
|
11
|
+
}
|
|
12
|
+
</div>
|
|
13
|
+
</mat-dialog-content>
|
|
14
|
+
<mat-dialog-actions>
|
|
15
|
+
<button mat-button (click)="cancelar()">Cancelar</button>
|
|
16
|
+
<button mat-flat-button color="primary" (click)="guardar()">Guardar</button>
|
|
17
|
+
</mat-dialog-actions>
|
package/templates/frontend/src/app/Componentes/Nucleo/reordenar-menu/reordenar-menu.component.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';
|
|
3
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
+
import { DragDropModule, CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';
|
|
6
|
+
|
|
7
|
+
export interface ItemDeMenuDialog {
|
|
8
|
+
id: string;
|
|
9
|
+
etiqueta: string;
|
|
10
|
+
icono: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@Component({
|
|
14
|
+
selector: 'app-reordenar-menu',
|
|
15
|
+
standalone: true,
|
|
16
|
+
imports: [MatDialogTitle, MatDialogContent, MatDialogActions, MatButtonModule, MatIconModule, DragDropModule],
|
|
17
|
+
templateUrl: './reordenar-menu.component.html',
|
|
18
|
+
styleUrl: './reordenar-menu.component.css'
|
|
19
|
+
})
|
|
20
|
+
export class ReordenarMenuComponent {
|
|
21
|
+
items: ItemDeMenuDialog[];
|
|
22
|
+
|
|
23
|
+
constructor(
|
|
24
|
+
@Inject(MAT_DIALOG_DATA) public data: { items: ItemDeMenuDialog[] },
|
|
25
|
+
private dialogRef: MatDialogRef<ReordenarMenuComponent>
|
|
26
|
+
) {
|
|
27
|
+
this.items = [...data.items];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
drop(event: CdkDragDrop<ItemDeMenuDialog[]>): void {
|
|
31
|
+
moveItemInArray(this.items, event.previousIndex, event.currentIndex);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
guardar(): void {
|
|
35
|
+
this.dialogRef.close(this.items);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
cancelar(): void {
|
|
39
|
+
this.dialogRef.close();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/* Layout */
|
|
2
|
+
.acc-layout {
|
|
3
|
+
display: flex;
|
|
4
|
+
gap: 0;
|
|
5
|
+
max-width: 1100px;
|
|
6
|
+
margin: 0 auto;
|
|
7
|
+
padding: 24px 16px;
|
|
8
|
+
font-family: 'Roboto', sans-serif;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/* Índice lateral */
|
|
12
|
+
.acc-toc {
|
|
13
|
+
width: 220px;
|
|
14
|
+
flex-shrink: 0;
|
|
15
|
+
position: sticky;
|
|
16
|
+
top: 16px;
|
|
17
|
+
align-self: flex-start;
|
|
18
|
+
background: #f4f7fb;
|
|
19
|
+
border-radius: 10px;
|
|
20
|
+
padding: 16px;
|
|
21
|
+
border: 1px solid #d0daea;
|
|
22
|
+
margin-right: 24px;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.toc-titulo {
|
|
26
|
+
font-weight: 700;
|
|
27
|
+
color: #002f6b;
|
|
28
|
+
font-size: 13px;
|
|
29
|
+
text-transform: uppercase;
|
|
30
|
+
letter-spacing: 0.05em;
|
|
31
|
+
margin: 0 0 10px 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.toc-lista {
|
|
35
|
+
list-style: none;
|
|
36
|
+
padding: 0;
|
|
37
|
+
margin: 0;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.toc-lista li {
|
|
41
|
+
margin-bottom: 4px;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.toc-enlace {
|
|
45
|
+
background: none;
|
|
46
|
+
border: none;
|
|
47
|
+
cursor: pointer;
|
|
48
|
+
color: #1976d2;
|
|
49
|
+
font-size: 13px;
|
|
50
|
+
text-align: left;
|
|
51
|
+
padding: 4px 6px;
|
|
52
|
+
border-radius: 5px;
|
|
53
|
+
width: 100%;
|
|
54
|
+
transition: background 0.15s, color 0.15s;
|
|
55
|
+
line-height: 1.4;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.toc-enlace:hover {
|
|
59
|
+
background: #dce8f8;
|
|
60
|
+
color: #0b4fce;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* Contenido principal */
|
|
64
|
+
.acc-main {
|
|
65
|
+
flex: 1;
|
|
66
|
+
min-width: 0;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* Encabezado */
|
|
70
|
+
.acc-encabezado {
|
|
71
|
+
display: flex;
|
|
72
|
+
align-items: flex-start;
|
|
73
|
+
gap: 14px;
|
|
74
|
+
padding: 20px 24px;
|
|
75
|
+
background: linear-gradient(135deg, #002f6b 0%, #1565c0 100%);
|
|
76
|
+
color: white;
|
|
77
|
+
border-radius: 12px;
|
|
78
|
+
margin-bottom: 28px;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.acc-icono-header {
|
|
82
|
+
font-size: 40px !important;
|
|
83
|
+
width: 40px !important;
|
|
84
|
+
height: 40px !important;
|
|
85
|
+
flex-shrink: 0;
|
|
86
|
+
margin-top: 4px;
|
|
87
|
+
opacity: 0.9;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.acc-encabezado h1 {
|
|
91
|
+
margin: 0 0 6px 0;
|
|
92
|
+
font-size: 22px;
|
|
93
|
+
font-weight: 700;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.acc-encabezado p {
|
|
97
|
+
margin: 0;
|
|
98
|
+
font-size: 14px;
|
|
99
|
+
opacity: 0.9;
|
|
100
|
+
line-height: 1.5;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* Secciones */
|
|
104
|
+
.acc-seccion {
|
|
105
|
+
margin-bottom: 36px;
|
|
106
|
+
scroll-margin-top: 16px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.acc-titulo-seccion {
|
|
110
|
+
display: flex;
|
|
111
|
+
align-items: center;
|
|
112
|
+
gap: 8px;
|
|
113
|
+
font-size: 18px;
|
|
114
|
+
font-weight: 700;
|
|
115
|
+
color: #002f6b;
|
|
116
|
+
border-bottom: 2px solid #002f6b;
|
|
117
|
+
padding-bottom: 8px;
|
|
118
|
+
margin-bottom: 16px;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.acc-titulo-seccion mat-icon {
|
|
122
|
+
font-size: 22px !important;
|
|
123
|
+
width: 22px !important;
|
|
124
|
+
height: 22px !important;
|
|
125
|
+
color: #1976d2;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.acc-subtitulo {
|
|
129
|
+
font-size: 15px;
|
|
130
|
+
font-weight: 600;
|
|
131
|
+
color: #1565c0;
|
|
132
|
+
margin: 20px 0 10px 0;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.acc-seccion > p {
|
|
136
|
+
color: #333;
|
|
137
|
+
line-height: 1.6;
|
|
138
|
+
margin: 0 0 14px 0;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* Tablas */
|
|
142
|
+
.acc-tabla {
|
|
143
|
+
width: 100%;
|
|
144
|
+
border-collapse: collapse;
|
|
145
|
+
font-size: 14px;
|
|
146
|
+
margin-bottom: 16px;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.acc-tabla th {
|
|
150
|
+
background-color: #002f6b;
|
|
151
|
+
color: white;
|
|
152
|
+
padding: 10px 14px;
|
|
153
|
+
text-align: left;
|
|
154
|
+
font-weight: 600;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.acc-tabla td {
|
|
158
|
+
padding: 9px 14px;
|
|
159
|
+
border-bottom: 1px solid #e0e7ef;
|
|
160
|
+
color: #333;
|
|
161
|
+
vertical-align: top;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.acc-tabla tr:nth-child(even) td {
|
|
165
|
+
background-color: #f4f7fb;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.acc-tabla tr:hover td {
|
|
169
|
+
background-color: #e8f0fb;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/* Teclas */
|
|
173
|
+
kbd {
|
|
174
|
+
display: inline-block;
|
|
175
|
+
background: #f0f4f8;
|
|
176
|
+
border: 1px solid #b0bec5;
|
|
177
|
+
border-radius: 4px;
|
|
178
|
+
padding: 2px 7px;
|
|
179
|
+
font-size: 12px;
|
|
180
|
+
font-family: 'Roboto Mono', monospace;
|
|
181
|
+
color: #002f6b;
|
|
182
|
+
box-shadow: 0 1px 2px rgba(0,0,0,0.15);
|
|
183
|
+
white-space: nowrap;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/* Listas */
|
|
187
|
+
.acc-lista {
|
|
188
|
+
padding-left: 20px;
|
|
189
|
+
margin: 0 0 16px 0;
|
|
190
|
+
line-height: 1.7;
|
|
191
|
+
color: #333;
|
|
192
|
+
font-size: 14px;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.acc-lista li {
|
|
196
|
+
margin-bottom: 6px;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* Nota informativa */
|
|
200
|
+
.acc-nota {
|
|
201
|
+
display: flex;
|
|
202
|
+
align-items: flex-start;
|
|
203
|
+
gap: 10px;
|
|
204
|
+
background: #e8f4fd;
|
|
205
|
+
border-left: 4px solid #1976d2;
|
|
206
|
+
border-radius: 6px;
|
|
207
|
+
padding: 12px 16px;
|
|
208
|
+
margin: 16px 0;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.acc-nota mat-icon {
|
|
212
|
+
font-size: 20px !important;
|
|
213
|
+
width: 20px !important;
|
|
214
|
+
height: 20px !important;
|
|
215
|
+
color: #1976d2;
|
|
216
|
+
flex-shrink: 0;
|
|
217
|
+
margin-top: 1px;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.acc-nota p {
|
|
221
|
+
margin: 0;
|
|
222
|
+
font-size: 13px;
|
|
223
|
+
color: #333;
|
|
224
|
+
line-height: 1.6;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/* Responsive */
|
|
228
|
+
@media (max-width: 768px) {
|
|
229
|
+
.acc-layout {
|
|
230
|
+
flex-direction: column;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.acc-toc {
|
|
234
|
+
width: auto;
|
|
235
|
+
position: static;
|
|
236
|
+
margin-right: 0;
|
|
237
|
+
margin-bottom: 20px;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
<div class="acc-layout">
|
|
2
|
+
|
|
3
|
+
<!-- Índice lateral -->
|
|
4
|
+
<aside class="acc-toc" aria-label="Índice de accesibilidad">
|
|
5
|
+
<p class="toc-titulo">Contenido</p>
|
|
6
|
+
<nav>
|
|
7
|
+
<ul class="toc-lista">
|
|
8
|
+
@for (seccion of secciones; track seccion.id) {
|
|
9
|
+
<li>
|
|
10
|
+
<button class="toc-enlace" (click)="irA(seccion.id)" [title]="seccion.titulo">
|
|
11
|
+
{{ seccion.titulo }}
|
|
12
|
+
</button>
|
|
13
|
+
</li>
|
|
14
|
+
}
|
|
15
|
+
</ul>
|
|
16
|
+
</nav>
|
|
17
|
+
</aside>
|
|
18
|
+
|
|
19
|
+
<!-- Contenido principal -->
|
|
20
|
+
<main class="acc-main" role="main" aria-label="Guía de accesibilidad mediante teclado">
|
|
21
|
+
|
|
22
|
+
<header class="acc-encabezado">
|
|
23
|
+
<mat-icon class="acc-icono-header">accessibility_new</mat-icon>
|
|
24
|
+
<div>
|
|
25
|
+
<h1>Accesibilidad mediante teclado</h1>
|
|
26
|
+
<p>Esta sección documenta cómo navegar el módulo usando únicamente el teclado, los atajos disponibles según su
|
|
27
|
+
navegador y sistema operativo, y cómo usar el widget de accesibilidad UserWay.</p>
|
|
28
|
+
</div>
|
|
29
|
+
</header>
|
|
30
|
+
|
|
31
|
+
<!-- Sección 1 -->
|
|
32
|
+
<section id="navegacion-teclado" class="acc-seccion" aria-labelledby="titulo-navegacion">
|
|
33
|
+
<h2 id="titulo-navegacion" class="acc-titulo-seccion">
|
|
34
|
+
<mat-icon>keyboard</mat-icon> Navegación con teclado
|
|
35
|
+
</h2>
|
|
36
|
+
<p>Puede recorrer todos los elementos interactivos del módulo sin usar el ratón. Las teclas básicas son:</p>
|
|
37
|
+
<table class="acc-tabla" aria-label="Teclas de navegación básica">
|
|
38
|
+
<thead>
|
|
39
|
+
<tr>
|
|
40
|
+
<th scope="col">Tecla</th>
|
|
41
|
+
<th scope="col">Acción</th>
|
|
42
|
+
</tr>
|
|
43
|
+
</thead>
|
|
44
|
+
<tbody>
|
|
45
|
+
<tr>
|
|
46
|
+
<td><kbd>Tab</kbd></td>
|
|
47
|
+
<td>Avanzar al siguiente elemento interactivo (botón, enlace, campo de texto)</td>
|
|
48
|
+
</tr>
|
|
49
|
+
<tr>
|
|
50
|
+
<td><kbd>Shift</kbd> + <kbd>Tab</kbd></td>
|
|
51
|
+
<td>Retroceder al elemento interactivo anterior</td>
|
|
52
|
+
</tr>
|
|
53
|
+
<tr>
|
|
54
|
+
<td><kbd>Enter</kbd></td>
|
|
55
|
+
<td>Activar el elemento con foco (botón, enlace, opción de menú)</td>
|
|
56
|
+
</tr>
|
|
57
|
+
<tr>
|
|
58
|
+
<td><kbd>Espacio</kbd></td>
|
|
59
|
+
<td>Activar botones y casillas de verificación; abrir menús desplegables</td>
|
|
60
|
+
</tr>
|
|
61
|
+
<tr>
|
|
62
|
+
<td><kbd>Escape</kbd></td>
|
|
63
|
+
<td>Cerrar diálogos, menús y paneles abiertos</td>
|
|
64
|
+
</tr>
|
|
65
|
+
<tr>
|
|
66
|
+
<td><kbd>↑</kbd> <kbd>↓</kbd></td>
|
|
67
|
+
<td>Navegar entre opciones de un menú desplegable o lista</td>
|
|
68
|
+
</tr>
|
|
69
|
+
<tr>
|
|
70
|
+
<td><kbd>←</kbd> <kbd>→</kbd></td>
|
|
71
|
+
<td>Navegar entre pestañas o controles de radio dentro de un grupo</td>
|
|
72
|
+
</tr>
|
|
73
|
+
<tr>
|
|
74
|
+
<td><kbd>Home</kbd></td>
|
|
75
|
+
<td>Ir al primer elemento de una lista o tabla</td>
|
|
76
|
+
</tr>
|
|
77
|
+
<tr>
|
|
78
|
+
<td><kbd>End</kbd></td>
|
|
79
|
+
<td>Ir al último elemento de una lista o tabla</td>
|
|
80
|
+
</tr>
|
|
81
|
+
</tbody>
|
|
82
|
+
</table>
|
|
83
|
+
</section>
|
|
84
|
+
|
|
85
|
+
<!-- Sección 2 -->
|
|
86
|
+
<section id="atajos-navegadores" class="acc-seccion" aria-labelledby="titulo-atajos">
|
|
87
|
+
<h2 id="titulo-atajos" class="acc-titulo-seccion">
|
|
88
|
+
<mat-icon>public</mat-icon> Atajos por navegador y sistema operativo
|
|
89
|
+
</h2>
|
|
90
|
+
<p>Los siguientes atajos son propios del navegador y del sistema operativo; no dependen del módulo.</p>
|
|
91
|
+
|
|
92
|
+
<h3 class="acc-subtitulo">Windows y Linux</h3>
|
|
93
|
+
<table class="acc-tabla" aria-label="Atajos de navegador en Windows y Linux">
|
|
94
|
+
<thead>
|
|
95
|
+
<tr>
|
|
96
|
+
<th scope="col">Atajo</th>
|
|
97
|
+
<th scope="col">Acción</th>
|
|
98
|
+
<th scope="col">Navegadores</th>
|
|
99
|
+
</tr>
|
|
100
|
+
</thead>
|
|
101
|
+
<tbody>
|
|
102
|
+
<tr>
|
|
103
|
+
<td><kbd>Alt</kbd> + <kbd>D</kbd></td>
|
|
104
|
+
<td>Mover el foco a la barra de direcciones</td>
|
|
105
|
+
<td>Chrome, Firefox, Edge</td>
|
|
106
|
+
</tr>
|
|
107
|
+
<tr>
|
|
108
|
+
<td><kbd>F6</kbd></td>
|
|
109
|
+
<td>Rotar el foco entre zonas principales de la ventana</td>
|
|
110
|
+
<td>Chrome, Edge</td>
|
|
111
|
+
</tr>
|
|
112
|
+
<tr>
|
|
113
|
+
<td><kbd>Ctrl</kbd> + <kbd>F</kbd></td>
|
|
114
|
+
<td>Abrir la búsqueda en página</td>
|
|
115
|
+
<td>Chrome, Firefox, Edge</td>
|
|
116
|
+
</tr>
|
|
117
|
+
<tr>
|
|
118
|
+
<td><kbd>Ctrl</kbd> + <kbd>L</kbd></td>
|
|
119
|
+
<td>Mover el foco a la barra de direcciones</td>
|
|
120
|
+
<td>Chrome, Firefox, Edge</td>
|
|
121
|
+
</tr>
|
|
122
|
+
<tr>
|
|
123
|
+
<td><kbd>F5</kbd> / <kbd>Ctrl</kbd> + <kbd>R</kbd></td>
|
|
124
|
+
<td>Recargar la página</td>
|
|
125
|
+
<td>Chrome, Firefox, Edge</td>
|
|
126
|
+
</tr>
|
|
127
|
+
<tr>
|
|
128
|
+
<td><kbd>Ctrl</kbd> + <kbd>+</kbd> / <kbd>-</kbd></td>
|
|
129
|
+
<td>Aumentar / disminuir el zoom de la página</td>
|
|
130
|
+
<td>Chrome, Firefox, Edge</td>
|
|
131
|
+
</tr>
|
|
132
|
+
<tr>
|
|
133
|
+
<td><kbd>Ctrl</kbd> + <kbd>0</kbd></td>
|
|
134
|
+
<td>Restablecer el zoom al 100 %</td>
|
|
135
|
+
<td>Chrome, Firefox, Edge</td>
|
|
136
|
+
</tr>
|
|
137
|
+
</tbody>
|
|
138
|
+
</table>
|
|
139
|
+
|
|
140
|
+
<h3 class="acc-subtitulo">macOS</h3>
|
|
141
|
+
<table class="acc-tabla" aria-label="Atajos de navegador en macOS">
|
|
142
|
+
<thead>
|
|
143
|
+
<tr>
|
|
144
|
+
<th scope="col">Atajo</th>
|
|
145
|
+
<th scope="col">Acción</th>
|
|
146
|
+
<th scope="col">Navegadores</th>
|
|
147
|
+
</tr>
|
|
148
|
+
</thead>
|
|
149
|
+
<tbody>
|
|
150
|
+
<tr>
|
|
151
|
+
<td><kbd>⌘</kbd> + <kbd>L</kbd></td>
|
|
152
|
+
<td>Mover el foco a la barra de direcciones</td>
|
|
153
|
+
<td>Chrome, Firefox, Safari, Edge</td>
|
|
154
|
+
</tr>
|
|
155
|
+
<tr>
|
|
156
|
+
<td><kbd>⌘</kbd> + <kbd>F</kbd></td>
|
|
157
|
+
<td>Abrir la búsqueda en página</td>
|
|
158
|
+
<td>Chrome, Firefox, Safari, Edge</td>
|
|
159
|
+
</tr>
|
|
160
|
+
<tr>
|
|
161
|
+
<td><kbd>⌘</kbd> + <kbd>R</kbd></td>
|
|
162
|
+
<td>Recargar la página</td>
|
|
163
|
+
<td>Chrome, Firefox, Safari, Edge</td>
|
|
164
|
+
</tr>
|
|
165
|
+
<tr>
|
|
166
|
+
<td><kbd>⌘</kbd> + <kbd>+</kbd> / <kbd>-</kbd></td>
|
|
167
|
+
<td>Aumentar / disminuir el zoom de la página</td>
|
|
168
|
+
<td>Chrome, Firefox, Safari, Edge</td>
|
|
169
|
+
</tr>
|
|
170
|
+
<tr>
|
|
171
|
+
<td><kbd>⌘</kbd> + <kbd>0</kbd></td>
|
|
172
|
+
<td>Restablecer el zoom al 100 %</td>
|
|
173
|
+
<td>Chrome, Firefox, Safari, Edge</td>
|
|
174
|
+
</tr>
|
|
175
|
+
</tbody>
|
|
176
|
+
</table>
|
|
177
|
+
|
|
178
|
+
<div class="acc-nota" role="note">
|
|
179
|
+
<mat-icon>info</mat-icon>
|
|
180
|
+
<p>En <strong>Safari (macOS)</strong>, la navegación con <kbd>Tab</kbd> entre todos los elementos interactivos
|
|
181
|
+
requiere activar <em>Acceso completo al teclado</em>: vaya a <strong>Preferencias del Sistema → Teclado →
|
|
182
|
+
Atajos</strong> y active la opción <em>"Todos los controles"</em> al pie de la ventana (o presione
|
|
183
|
+
<kbd>Ctrl</kbd> + <kbd>F7</kbd>).
|
|
184
|
+
</p>
|
|
185
|
+
</div>
|
|
186
|
+
</section>
|
|
187
|
+
|
|
188
|
+
<!-- Sección 3 -->
|
|
189
|
+
<section id="widget-userway" class="acc-seccion" aria-labelledby="titulo-userway">
|
|
190
|
+
<h2 id="titulo-userway" class="acc-titulo-seccion">
|
|
191
|
+
<mat-icon>accessibility</mat-icon> Widget de accesibilidad (UserWay)
|
|
192
|
+
</h2>
|
|
193
|
+
<p>Este módulo incorpora el widget <strong>UserWay</strong>, que ofrece herramientas adicionales de
|
|
194
|
+
accesibilidad sin necesidad de modificar la configuración del navegador.</p>
|
|
195
|
+
|
|
196
|
+
<h3 class="acc-subtitulo">Cómo abrir el widget</h3>
|
|
197
|
+
<table class="acc-tabla" aria-label="Atajos para abrir UserWay">
|
|
198
|
+
<thead>
|
|
199
|
+
<tr>
|
|
200
|
+
<th scope="col">Sistema operativo</th>
|
|
201
|
+
<th scope="col">Atajo de teclado</th>
|
|
202
|
+
</tr>
|
|
203
|
+
</thead>
|
|
204
|
+
<tbody>
|
|
205
|
+
<tr>
|
|
206
|
+
<td>Windows / Linux</td>
|
|
207
|
+
<td><kbd>Alt</kbd> + <kbd>9</kbd></td>
|
|
208
|
+
</tr>
|
|
209
|
+
<tr>
|
|
210
|
+
<td>macOS</td>
|
|
211
|
+
<td><kbd>Option (⌥)</kbd> + <kbd>9</kbd></td>
|
|
212
|
+
</tr>
|
|
213
|
+
</tbody>
|
|
214
|
+
</table>
|
|
215
|
+
|
|
216
|
+
<h3 class="acc-subtitulo">Funciones disponibles en el widget</h3>
|
|
217
|
+
<ul class="acc-lista">
|
|
218
|
+
<li><strong>Contraste alto</strong> — aumenta el contraste de colores para mejorar la legibilidad.</li>
|
|
219
|
+
<li><strong>Tamaño de texto</strong> — incrementa o reduce el tamaño de la fuente en toda la página.</li>
|
|
220
|
+
<li><strong>Espaciado de texto</strong> — amplía el espaciado entre líneas y letras.</li>
|
|
221
|
+
<li><strong>Cursor grande</strong> — agranda el puntero del ratón para facilitar su localización visual.</li>
|
|
222
|
+
<li><strong>Lectura de pantalla</strong> — convierte el texto en voz al pasar el cursor o enfocar elementos.</li>
|
|
223
|
+
<li><strong>Modo daltonismo</strong> — ajusta la paleta de colores según distintos tipos de daltonismo.</li>
|
|
224
|
+
<li><strong>Resaltar enlaces</strong> — subraya y resalta todos los hipervínculos de la página.</li>
|
|
225
|
+
<li><strong>Detener animaciones</strong> — pausa las animaciones y transiciones de la interfaz.</li>
|
|
226
|
+
</ul>
|
|
227
|
+
</section>
|
|
228
|
+
|
|
229
|
+
<!-- Sección 4 -->
|
|
230
|
+
<section id="teclas-rapidas" class="acc-seccion" aria-labelledby="titulo-teclas">
|
|
231
|
+
<h2 id="titulo-teclas" class="acc-titulo-seccion">
|
|
232
|
+
<mat-icon>tune</mat-icon> Programación de teclas rápidas
|
|
233
|
+
</h2>
|
|
234
|
+
<p>UserWay permite personalizar los atajos de teclado del widget desde su panel de configuración:</p>
|
|
235
|
+
<ol class="acc-lista">
|
|
236
|
+
<li>Abra el widget con <kbd>Alt</kbd> + <kbd>9</kbd> (Windows) u <kbd>⌥</kbd> + <kbd>9</kbd> (macOS).</li>
|
|
237
|
+
<li>Seleccione el ícono de <strong>Configuración</strong> (engranaje) dentro del panel.</li>
|
|
238
|
+
<li>En la sección <em>Atajos de teclado</em>, podrá asignar teclas personalizadas a las funciones del
|
|
239
|
+
widget.</li>
|
|
240
|
+
<li>Guarde los cambios; la nueva configuración se mantendrá en ese navegador.</li>
|
|
241
|
+
</ol>
|
|
242
|
+
|
|
243
|
+
<div class="acc-nota" role="note">
|
|
244
|
+
<mat-icon>info</mat-icon>
|
|
245
|
+
<p>La configuración de teclas rápidas de UserWay se almacena localmente en el navegador. Si utiliza un
|
|
246
|
+
dispositivo o navegador diferente, deberá volver a configurarlas.</p>
|
|
247
|
+
</div>
|
|
248
|
+
|
|
249
|
+
<h3 class="acc-subtitulo">Atajos del sistema operativo para lectores de pantalla</h3>
|
|
250
|
+
<table class="acc-tabla" aria-label="Atajos de lectores de pantalla por sistema operativo">
|
|
251
|
+
<thead>
|
|
252
|
+
<tr>
|
|
253
|
+
<th scope="col">Sistema operativo</th>
|
|
254
|
+
<th scope="col">Lector de pantalla</th>
|
|
255
|
+
<th scope="col">Activación</th>
|
|
256
|
+
</tr>
|
|
257
|
+
</thead>
|
|
258
|
+
<tbody>
|
|
259
|
+
<tr>
|
|
260
|
+
<td>Windows</td>
|
|
261
|
+
<td>NVDA (gratuito)</td>
|
|
262
|
+
<td><kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>N</kbd> (instalado)</td>
|
|
263
|
+
</tr>
|
|
264
|
+
<tr>
|
|
265
|
+
<td>Windows</td>
|
|
266
|
+
<td>Narrador (integrado)</td>
|
|
267
|
+
<td><kbd>Win</kbd> + <kbd>Ctrl</kbd> + <kbd>Enter</kbd></td>
|
|
268
|
+
</tr>
|
|
269
|
+
<tr>
|
|
270
|
+
<td>macOS</td>
|
|
271
|
+
<td>VoiceOver (integrado)</td>
|
|
272
|
+
<td><kbd>⌘</kbd> + <kbd>F5</kbd> o triple clic en Touch ID</td>
|
|
273
|
+
</tr>
|
|
274
|
+
<tr>
|
|
275
|
+
<td>iOS</td>
|
|
276
|
+
<td>VoiceOver (integrado)</td>
|
|
277
|
+
<td>Triple clic en el botón lateral</td>
|
|
278
|
+
</tr>
|
|
279
|
+
<tr>
|
|
280
|
+
<td>Android</td>
|
|
281
|
+
<td>TalkBack (integrado)</td>
|
|
282
|
+
<td>Configuración → Accesibilidad → TalkBack</td>
|
|
283
|
+
</tr>
|
|
284
|
+
</tbody>
|
|
285
|
+
</table>
|
|
286
|
+
</section>
|
|
287
|
+
|
|
288
|
+
</main>
|
|
289
|
+
</div>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
+
|
|
5
|
+
interface SeccionToc {
|
|
6
|
+
id: string;
|
|
7
|
+
titulo: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
@Component({
|
|
11
|
+
selector: 'app-accesibilidad',
|
|
12
|
+
standalone: true,
|
|
13
|
+
imports: [CommonModule, MatIconModule],
|
|
14
|
+
templateUrl: './accesibilidad.component.html',
|
|
15
|
+
styleUrl: './accesibilidad.component.css'
|
|
16
|
+
})
|
|
17
|
+
export class AccesibilidadComponent {
|
|
18
|
+
public secciones: SeccionToc[] = [
|
|
19
|
+
{ id: 'navegacion-teclado', titulo: 'Navegación con teclado' },
|
|
20
|
+
{ id: 'atajos-navegadores', titulo: 'Atajos por navegador y sistema operativo' },
|
|
21
|
+
{ id: 'widget-userway', titulo: 'Widget de accesibilidad (UserWay)' },
|
|
22
|
+
{ id: 'teclas-rapidas', titulo: 'Programación de teclas rápidas' },
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
irA(id: string): void {
|
|
26
|
+
document.getElementById(id)?.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
|
27
|
+
}
|
|
28
|
+
}
|