propTypes.jsEn lugar de definir PropTypes en línea dentro de la declaración .propTypes de cada componente, la aplicación web ProjectForge extrae formas compartidas en este módulo de utilidad. Los componentes importan validadores específicos (por ejemplo, buttonPropType) y los usan directamente. Esto es una forma del patrón "vocabulario de tipo compartido": reduce la desviación donde el mismo concepto (por ejemplo, un botón) obtiene PropTypes ligeramente diferentes en diferentes componentes.
menuItemPropType — forma mínima con una cadena title. Se usa en menús desplegables de navegación y componentes de menú lateral.
buttonPropType — forma completa de botón que cubre variantes de estilo Bootstrap (primary hasta link), id opcional, manejador de clic, un subtipo CHECKBOX y estado checked.
colorPropType — cadenas de color enumeradas que coinciden con los nombres de color de Bootstrap 4 más light.
selectProps — forma de entrada de selección con id requerido y arreglo options (que admite tanto arreglos de objetos {value, title} como arreglos planos de cadena/número), más etiqueta y color opcionales.
tableColumnsPropType — arreglo de descriptores de columna con id y title.
contentPropType — la forma fundamental para el sistema DynamicLayout: cada bloque de contenido requiere una cadena type (por ejemplo, INPUT, TABLE, LABEL) y una cadena key (identificador único dentro del diseño).
Una versión anterior de este archivo definía un dynamicTypePropType que enumeraba el conjunto de tipos DynamicLayout admitidos (CHECKBOX, COL, CUSTOMIZED, FIELDSET, INPUT, LABEL, ROW, SELECT, TABLE, TEXTAREA). Esto fue reemplazado posteriormente por un simple PropTypes.string.isRequired — una relajación deliberada que permite al motor de diseño del lado del servidor introducir nuevos tipos de contenido sin requerir una actualización de PropTypes en el frontend, siguiendo un principio de diseño abierto-cerrado.
| Commit | Qué cambió |
|---|---|
09fadca1c | Se añadió 'light' a la enumeración colorPropType. Esto fue necesario cuando la configuración del calendario comenzó a admitir una variante de color claro para los estilos de fuente de eventos, alineándose con la expansión de la paleta de colores de Bootstrap. |
4b945f64d | Se revirtió 30eea8132: se restauró el campo contentPropType.key a .isRequired. La reversión sugiere que la clave opcional estaba causando que las búsquedas de diseño fallaran silenciosamente — una clave requerida obliga al código consumidor a proporcionar siempre identificadores. |
30eea8132 | Se hizo opcional contentPropType.key (se eliminó .isRequired), presumiblemente para admitir bloques de contenido en línea que no necesitan identificadores de persistencia. Esto fue revertido posteriormente. |
3763871f8 | Se eliminó la enumeración dynamicTypePropType y se reemplazó contentPropType.type con un simple PropTypes.string.isRequired. Esto abrió el sistema DynamicLayout a tipos de contenido arbitrarios impulsados por el servidor sin cambios en el código del frontend. |
ae35f5cc0 | Se añadió TABLE a la enumeración dynamicTypePropType cuando la vista de lista se migró para usar el sistema de renderizado de tablas DynamicLayout en lugar de un componente de tabla hardcodeado. |
a8102b34e | Se añadió SELECT a la enumeración dynamicTypePropType y se introdujo la forma contentPropType. Este fue el commit fundamental que estableció el módulo PropTypes como un vocabulario compartido para el sistema DynamicLayout. |