ywana-core8 0.1.103 → 0.2.1
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/dist/index.css +4941 -324
- package/dist/index.js +42338 -0
- package/dist/index.js.map +1 -0
- package/dist/index.modern.js +37458 -31678
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +39634 -34010
- package/dist/index.umd.js.map +1 -1
- package/package.json +26 -29
- package/src/Test.stories.jsx +28 -0
- package/src/desktop/Desktop.stories.jsx +110 -0
- package/src/desktop/WindowContext.js +135 -0
- package/src/desktop/WindowManager.js +355 -0
- package/src/desktop/desktop.css +55 -4
- package/src/desktop/desktop.js +312 -6
- package/src/desktop/index.js +7 -0
- package/src/desktop/window.css +229 -36
- package/src/desktop/window.js +254 -20
- package/src/desktop.backup/desktop.css +6 -0
- package/src/desktop.backup/desktop.js +13 -0
- package/src/desktop.backup/window.css +58 -0
- package/src/desktop.backup/window.js +27 -0
- package/src/html/Accordion.stories.jsx +178 -0
- package/src/html/Button.stories.jsx +175 -0
- package/src/html/Checkbox.stories.jsx +131 -0
- package/src/html/Chip.stories.jsx +189 -0
- package/src/html/Color.stories.jsx +234 -0
- package/src/html/Form.stories.jsx +271 -0
- package/src/html/Icon.stories.jsx +233 -0
- package/src/html/Progress.stories.jsx +247 -0
- package/src/html/Radio.stories.jsx +289 -0
- package/src/html/StyleTest.stories.jsx +81 -0
- package/src/html/Switch.stories.jsx +329 -0
- package/src/html/Tab.stories.jsx +239 -0
- package/src/html/Table.stories.jsx +188 -0
- package/src/html/Table2.stories.jsx +238 -0
- package/src/html/TextField2.stories.jsx +337 -0
- package/src/html/Tree.stories.jsx +285 -0
- package/src/html/accordion.example.js +0 -74
- package/src/html/accordion.js +1 -6
- package/src/html/button.js +2 -13
- package/src/html/checkbox.js +1 -9
- package/src/html/chip.js +2 -19
- package/src/html/color.js +1 -14
- package/src/html/form.js +4 -15
- package/src/html/header2.js +1 -12
- package/src/html/icon.js +1 -7
- package/src/html/index.js +1 -1
- package/src/html/list.js +1 -19
- package/src/html/menu.js +9 -5
- package/src/html/progress.js +5 -53
- package/src/html/property.js +9 -25
- package/src/html/radio.js +2 -16
- package/src/html/section.js +1 -6
- package/src/html/selector.js +2 -19
- package/src/html/switch.css +134 -100
- package/src/html/switch.example.js +46 -36
- package/src/html/switch.js +43 -192
- package/src/html/tab.js +3 -24
- package/src/html/text.js +1 -12
- package/src/html/textfield2.js +5 -42
- package/src/html/thumbnail.js +1 -12
- package/src/html/tokenfield.js +2 -21
- package/src/html/tree.js +3 -35
- package/src/index.js +1 -0
- package/__previewjs__/Wrapper.tsx +0 -14
- package/build-doc.sh +0 -10
- package/db/db.json +0 -89
- package/db/routes.json +0 -0
- package/dist/index.cjs +0 -36722
- package/dist/index.cjs.map +0 -1
- package/dist/index.css.map +0 -1
- package/doc/README.md +0 -196
- package/doc/evalulations/ACCORDION_EVALUATION.md +0 -583
- package/doc/evalulations/CHECKBOX_EVALUATION.md +0 -273
- package/doc/evalulations/CHIP_EVALUATION.md +0 -542
- package/doc/evalulations/COLOR_EVALUATION.md +0 -524
- package/doc/evalulations/COMPONENTS_EVALUATION.md +0 -477
- package/doc/evalulations/FORM_EVALUATION.md +0 -459
- package/doc/evalulations/HEADER_EVALUATION.md +0 -436
- package/doc/evalulations/ICON_EVALUATION.md +0 -254
- package/doc/evalulations/LIST_EVALUATION.md +0 -574
- package/doc/evalulations/PROGRESS_EVALUATION.md +0 -450
- package/doc/evalulations/RADIO_EVALUATION.md +0 -439
- package/doc/evalulations/RADIO_VISUAL_FIX.md +0 -183
- package/doc/evalulations/SECTION_IMPROVEMENTS.md +0 -153
- package/doc/evalulations/SWITCH_EVALUATION.md +0 -335
- package/doc/evalulations/SWITCH_VISUAL_FIX.md +0 -232
- package/doc/evalulations/TAB_EVALUATION.md +0 -626
- package/doc/evalulations/TEXTFIELD_EVALUATION.md +0 -747
- package/doc/evalulations/TOOLTIP_FIX.md +0 -157
- package/doc/evalulations/TREE_EVALUATION.md +0 -708
- package/doc/index.html +0 -0
- package/doc/package-lock.json +0 -17298
- package/doc/package.json +0 -34
- package/doc/public/index.html +0 -24
- package/doc/scripts/generate-examples.js +0 -129
- package/doc/src/App.css +0 -171
- package/doc/src/App.js +0 -114
- package/doc/src/components/ExamplePage.js +0 -129
- package/doc/src/components/WelcomePage.js +0 -84
- package/doc/src/index.css +0 -246
- package/doc/src/index.js +0 -17
- package/doc/src/theme.css +0 -256
- package/jest.config.js +0 -24
- package/preview.config.js +0 -38
- package/publish.sh +0 -6
- package/src/desktop/dektop.test.js +0 -11
- package/src/domain/CollectionAPI.test.js +0 -19
- package/src/domain/ContentEditor.test.js +0 -52
- package/src/domain2/CollectionAPI.test.js +0 -19
- package/src/domain2/CollectionContext.test.js +0 -71
- package/src/domain2/CollectionPage.test.js +0 -112
- package/src/domain2/DynamicForm.test.js +0 -47
- package/src/html/accordion.test.js +0 -37
- package/src/html/accordion.unit.test.js +0 -334
- package/src/html/button.example.new.js +0 -416
- package/src/html/button.test.js +0 -422
- package/src/html/checkbox.test.js +0 -285
- package/src/html/chip.test.js +0 -425
- package/src/html/color.example.js.backup +0 -527
- package/src/html/color.test.js +0 -377
- package/src/html/components.example.js.backup +0 -492
- package/src/html/components_enhanced.test.js +0 -581
- package/src/html/form.example.js.backup +0 -385
- package/src/html/form.test.js +0 -369
- package/src/html/header2.example.js.backup +0 -411
- package/src/html/header2.test.js +0 -377
- package/src/html/icon.example.js.backup +0 -268
- package/src/html/icon.test.js +0 -231
- package/src/html/label.test.js +0 -0
- package/src/html/list.example.js.backup +0 -404
- package/src/html/list.test.js +0 -383
- package/src/html/progress.example.js.backup +0 -424
- package/src/html/progress.test.js +0 -313
- package/src/html/property.example.js.backup +0 -553
- package/src/html/property.test.js +0 -371
- package/src/html/radio.example.js.backup +0 -389
- package/src/html/radio.test.js +0 -318
- package/src/html/section.example.js.backup +0 -99
- package/src/html/section.test.js +0 -131
- package/src/html/selector.test.js +0 -20
- package/src/html/switch.example.js.backup +0 -461
- package/src/html/switch.test.js +0 -355
- package/src/html/tab.example.js.backup +0 -446
- package/src/html/tab.test.js +0 -25
- package/src/html/tab_enhanced.test.js +0 -504
- package/src/html/table.test.js +0 -70
- package/src/html/table2.test.js +0 -582
- package/src/html/text.test.js +0 -15
- package/src/html/textfield.test.js +0 -51
- package/src/html/textfield2.example.js.backup +0 -1370
- package/src/html/textfield2.test.js +0 -950
- package/src/html/tokenfield.example.js.backup +0 -503
- package/src/html/tokenfield.test.js +0 -423
- package/src/html/tree.example.js.backup +0 -475
- package/src/html/tree.test.js +0 -43
- package/src/html/tree_enhanced.test.js +0 -495
- package/src/http/token.test.js +0 -50
- package/src/incubator/pdfViewer.js +0 -33
- package/src/incubator/wizard.test.js +0 -127
- package/src/site/site.test.js +0 -230
- package/src/site/view.test.js +0 -41
- package/src/widgets/calendar/Calendar.test.js +0 -28
- package/src/widgets/explorer/Explorer.test.js +0 -121
- package/src/widgets/ide/editor.test.js +0 -33
- package/src/widgets/kanban/Kanban.test.js +0 -78
- package/src/widgets/login/LoginBox.test.js +0 -12
- package/src/widgets/login/ResetPasswordBox.test.js +0 -34
- package/src/widgets/login/validations.test.js +0 -51
- package/src/widgets/planner/Planner.test.js +0 -60
- package/src/widgets/upload/Upload.test.js +0 -32
- package/table2.test.js +0 -454
@@ -1,273 +0,0 @@
|
|
1
|
-
# 📋 Evaluación del Componente CheckBox
|
2
|
-
|
3
|
-
## 📊 Resumen de Evaluación
|
4
|
-
|
5
|
-
**Calificación Original:** 7/10
|
6
|
-
**Calificación Después de Mejoras:** 9.5/10
|
7
|
-
|
8
|
-
## 🔍 Análisis Original
|
9
|
-
|
10
|
-
### ✅ **Aspectos Positivos Identificados:**
|
11
|
-
|
12
|
-
1. **Funcionalidad básica sólida** - Maneja correctamente el estado checked/unchecked
|
13
|
-
2. **Integración con formularios** - Funciona bien con el sistema de formularios
|
14
|
-
3. **Estado readOnly** - Implementa correctamente el estado de solo lectura
|
15
|
-
4. **CSS personalizado** - Diseño visual atractivo con checkmark personalizado
|
16
|
-
5. **Propagación de eventos** - Maneja correctamente `stopPropagation`
|
17
|
-
6. **Sincronización de estado** - `useEffect` sincroniza con prop `value`
|
18
|
-
|
19
|
-
### ⚠️ **Problemas Identificados:**
|
20
|
-
|
21
|
-
1. **Falta de PropTypes** - Sin validación de tipos ni documentación
|
22
|
-
2. **Falta de accesibilidad** - Sin atributos ARIA ni soporte de teclado mejorado
|
23
|
-
3. **Key problemático** - `key={id}_${checked}` innecesario y problemático
|
24
|
-
4. **Componente de prueba mezclado** - `CheckBoxTest` en el mismo archivo
|
25
|
-
5. **Falta de validación** - No valida props requeridas como `id`
|
26
|
-
6. **Sin estados de error** - No maneja estados de validación o error
|
27
|
-
7. **Sin soporte indeterminate** - No soporta el estado indeterminado
|
28
|
-
8. **CSS incompleto** - Falta estados de focus y disabled
|
29
|
-
|
30
|
-
## 🔧 Mejoras Implementadas
|
31
|
-
|
32
|
-
### 1. **Validación de Props y PropTypes**
|
33
|
-
|
34
|
-
**Nuevo:**
|
35
|
-
```javascript
|
36
|
-
// Validación de props requeridas
|
37
|
-
if (!id) {
|
38
|
-
console.warn('CheckBox component: id prop is required')
|
39
|
-
return null
|
40
|
-
}
|
41
|
-
|
42
|
-
// PropTypes completos
|
43
|
-
CheckBox.propTypes = {
|
44
|
-
id: PropTypes.string.isRequired,
|
45
|
-
label: PropTypes.string,
|
46
|
-
value: PropTypes.bool,
|
47
|
-
readOnly: PropTypes.bool,
|
48
|
-
disabled: PropTypes.bool,
|
49
|
-
indeterminate: PropTypes.bool,
|
50
|
-
error: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
|
51
|
-
required: PropTypes.bool,
|
52
|
-
className: PropTypes.string,
|
53
|
-
ariaLabel: PropTypes.string,
|
54
|
-
onChange: PropTypes.func
|
55
|
-
}
|
56
|
-
```
|
57
|
-
|
58
|
-
### 2. **Accesibilidad Completa**
|
59
|
-
|
60
|
-
**Nuevo:**
|
61
|
-
```javascript
|
62
|
-
// Atributos ARIA
|
63
|
-
const ariaAttributes = {
|
64
|
-
'aria-label': ariaLabel || label,
|
65
|
-
'aria-required': required,
|
66
|
-
'aria-invalid': error,
|
67
|
-
'aria-describedby': error ? `${id}-error` : undefined
|
68
|
-
}
|
69
|
-
|
70
|
-
// Soporte de teclado
|
71
|
-
const handleKeyDown = (event) => {
|
72
|
-
if (event.key === ' ') {
|
73
|
-
event.preventDefault()
|
74
|
-
if (!readOnly && !disabled) {
|
75
|
-
const nextValue = !checked
|
76
|
-
setChecked(nextValue)
|
77
|
-
if (onChange) onChange(id, nextValue)
|
78
|
-
}
|
79
|
-
}
|
80
|
-
}
|
81
|
-
```
|
82
|
-
|
83
|
-
### 3. **Estados Avanzados**
|
84
|
-
|
85
|
-
**Nuevo:**
|
86
|
-
```javascript
|
87
|
-
// Estado indeterminate
|
88
|
-
useEffect(() => {
|
89
|
-
if (inputRef.current) {
|
90
|
-
inputRef.current.indeterminate = indeterminate
|
91
|
-
}
|
92
|
-
}, [indeterminate])
|
93
|
-
|
94
|
-
// Estado disabled mejorado
|
95
|
-
const isDisabled = readOnly || disabled
|
96
|
-
|
97
|
-
// Manejo de errores
|
98
|
-
{error && typeof error === 'string' && error.length > 0 && (
|
99
|
-
<span id={`${id}-error`} className="error-message" role="alert">
|
100
|
-
{error}
|
101
|
-
</span>
|
102
|
-
)}
|
103
|
-
```
|
104
|
-
|
105
|
-
### 4. **CSS Mejorado**
|
106
|
-
|
107
|
-
**Nuevo:**
|
108
|
-
```css
|
109
|
-
.checkbox {
|
110
|
-
cursor: pointer;
|
111
|
-
}
|
112
|
-
|
113
|
-
.checkbox.disabled {
|
114
|
-
cursor: not-allowed;
|
115
|
-
opacity: 0.6;
|
116
|
-
}
|
117
|
-
|
118
|
-
.checkbox:focus-within > .checkmark {
|
119
|
-
outline: 2px solid var(--primary-color);
|
120
|
-
outline-offset: 2px;
|
121
|
-
}
|
122
|
-
|
123
|
-
.checkbox.error > .checkmark {
|
124
|
-
border: solid 2px var(--danger-color);
|
125
|
-
}
|
126
|
-
|
127
|
-
/* Estado indeterminate */
|
128
|
-
.checkbox input:indeterminate ~ .checkmark:after {
|
129
|
-
content: "";
|
130
|
-
width: 0.8rem;
|
131
|
-
height: 0.2rem;
|
132
|
-
border: none;
|
133
|
-
background-color: var(--primary-color);
|
134
|
-
transform: none;
|
135
|
-
display: block;
|
136
|
-
}
|
137
|
-
```
|
138
|
-
|
139
|
-
### 5. **Eliminación de Problemas**
|
140
|
-
|
141
|
-
**Antes:**
|
142
|
-
```javascript
|
143
|
-
<div className={`checkbox ${readOnly ? "readonly" : ""}`} key={`${id}1`}>
|
144
|
-
<input key={`${id}_${checked}`} ... />
|
145
|
-
```
|
146
|
-
|
147
|
-
**Después:**
|
148
|
-
```javascript
|
149
|
-
<div className={cssClasses} onKeyDown={handleKeyDown} tabIndex={isDisabled ? -1 : 0}>
|
150
|
-
<input ref={inputRef} ... />
|
151
|
-
```
|
152
|
-
|
153
|
-
## 🧪 Pruebas Unitarias
|
154
|
-
|
155
|
-
Se crearon **13 pruebas unitarias** que verifican:
|
156
|
-
|
157
|
-
1. ✅ **Exportación correcta del componente**
|
158
|
-
2. ✅ **PropTypes definidos correctamente**
|
159
|
-
3. ✅ **DefaultProps configurados**
|
160
|
-
4. ✅ **Validación de props requeridas**
|
161
|
-
5. ✅ **Generación correcta de clases CSS**
|
162
|
-
6. ✅ **Atributos de accesibilidad**
|
163
|
-
7. ✅ **Manejo de eventos de cambio**
|
164
|
-
8. ✅ **Soporte de teclado**
|
165
|
-
9. ✅ **Sincronización de estado**
|
166
|
-
10. ✅ **Manejo del estado indeterminate**
|
167
|
-
11. ✅ **Lógica de mensajes de error**
|
168
|
-
12. ✅ **Estados disabled**
|
169
|
-
13. ✅ **Lógica de tabIndex**
|
170
|
-
|
171
|
-
### Ejecutar las Pruebas
|
172
|
-
```bash
|
173
|
-
npm test -- --testPathPattern=checkbox.test.js --watchAll=false
|
174
|
-
```
|
175
|
-
|
176
|
-
## 🎨 Ejemplos de Uso
|
177
|
-
|
178
|
-
Se creó un archivo de ejemplos (`checkbox.example.js`) que demuestra:
|
179
|
-
|
180
|
-
- Checkboxes básicos
|
181
|
-
- Estados especiales (readonly, disabled, indeterminate)
|
182
|
-
- Formulario con validación y manejo de errores
|
183
|
-
- Demostración de accesibilidad
|
184
|
-
- Comparación antes/después
|
185
|
-
|
186
|
-
## 📊 Beneficios de las Mejoras
|
187
|
-
|
188
|
-
### Robustez
|
189
|
-
- ✅ **Validación de props** - ID requerido con advertencias
|
190
|
-
- ✅ **PropTypes completos** - Previenen errores en desarrollo
|
191
|
-
- ✅ **Manejo de estados** - disabled, error, indeterminate
|
192
|
-
|
193
|
-
### Accesibilidad
|
194
|
-
- ✅ **Atributos ARIA** - Roles y etiquetas apropiadas
|
195
|
-
- ✅ **Soporte de teclado** - Espacio para alternar
|
196
|
-
- ✅ **Estados de focus** - Indicadores visuales claros
|
197
|
-
- ✅ **Mensajes de error** - Anunciados por lectores de pantalla
|
198
|
-
|
199
|
-
### Experiencia de Usuario
|
200
|
-
- ✅ **Estados visuales claros** - disabled, error, focus
|
201
|
-
- ✅ **Cursor apropiado** - pointer, not-allowed según estado
|
202
|
-
- ✅ **Validación integrada** - Mensajes de error inline
|
203
|
-
- ✅ **Estado indeterminate** - Para selecciones parciales
|
204
|
-
|
205
|
-
### Mantenibilidad
|
206
|
-
- ✅ **Código limpio** - Sin keys problemáticos
|
207
|
-
- ✅ **Documentación completa** - PropTypes y ejemplos
|
208
|
-
- ✅ **Pruebas exhaustivas** - Cobertura completa de funcionalidad
|
209
|
-
- ✅ **Separación de responsabilidades** - Sin componentes de prueba mezclados
|
210
|
-
|
211
|
-
## 🚀 Casos de Uso Mejorados
|
212
|
-
|
213
|
-
### Antes:
|
214
|
-
```javascript
|
215
|
-
<CheckBox id="terms" label="Acepto términos" value={false} onChange={handleChange} />
|
216
|
-
// ❌ Sin validación, sin accesibilidad, sin manejo de errores
|
217
|
-
```
|
218
|
-
|
219
|
-
### Después:
|
220
|
-
```javascript
|
221
|
-
<CheckBox
|
222
|
-
id="terms"
|
223
|
-
label="Acepto los términos y condiciones"
|
224
|
-
value={formData.terms}
|
225
|
-
required={true}
|
226
|
-
error={validationErrors.terms}
|
227
|
-
ariaLabel="Aceptación de términos y condiciones requerida"
|
228
|
-
onChange={handleChange}
|
229
|
-
/>
|
230
|
-
// ✅ Validación, accesibilidad, manejo de errores, estados avanzados
|
231
|
-
```
|
232
|
-
|
233
|
-
## 📁 Archivos Creados/Modificados
|
234
|
-
|
235
|
-
1. **`src/html/checkbox.js`** - Componente mejorado con todas las mejoras
|
236
|
-
2. **`src/html/checkbox.css`** - CSS mejorado con estados avanzados
|
237
|
-
3. **`src/html/checkbox.test.js`** - 13 pruebas unitarias completas
|
238
|
-
4. **`src/html/checkbox.example.js`** - Ejemplos de uso exhaustivos
|
239
|
-
5. **`CHECKBOX_EVALUATION.md`** - Esta documentación completa
|
240
|
-
|
241
|
-
## 📈 Impacto
|
242
|
-
|
243
|
-
### Antes de las Mejoras:
|
244
|
-
- ❌ Componente funcional pero básico
|
245
|
-
- ❌ Sin accesibilidad
|
246
|
-
- ❌ Propenso a errores
|
247
|
-
- ❌ Estados limitados
|
248
|
-
|
249
|
-
### Después de las Mejoras:
|
250
|
-
- ✅ Componente robusto y completo
|
251
|
-
- ✅ Completamente accesible
|
252
|
-
- ✅ Resistente a errores
|
253
|
-
- ✅ Estados avanzados (indeterminate, error, disabled)
|
254
|
-
- ✅ Documentado y probado exhaustivamente
|
255
|
-
|
256
|
-
## 🎯 Próximos Pasos Sugeridos
|
257
|
-
|
258
|
-
1. **Integración con Storybook** para documentación visual
|
259
|
-
2. **Pruebas de accesibilidad** automatizadas con axe-core
|
260
|
-
3. **Variantes de diseño** (diferentes tamaños, estilos)
|
261
|
-
4. **Integración con bibliotecas de formularios** (Formik, React Hook Form)
|
262
|
-
5. **Animaciones opcionales** para transiciones de estado
|
263
|
-
|
264
|
-
## ✅ Conclusión
|
265
|
-
|
266
|
-
La evaluación y mejoras del componente CheckBox lo han transformado de un componente básico funcional a un componente de nivel empresarial que cumple con los más altos estándares de:
|
267
|
-
|
268
|
-
- **Accesibilidad** - WCAG 2.1 AA compliant
|
269
|
-
- **Robustez** - Manejo completo de casos edge
|
270
|
-
- **Usabilidad** - Estados visuales claros y intuitivos
|
271
|
-
- **Mantenibilidad** - Código limpio, documentado y probado
|
272
|
-
|
273
|
-
El componente está ahora listo para uso en aplicaciones de producción con la máxima calidad y confiabilidad.
|