propTypes.jsPlutôt que de définir les PropTypes en ligne dans la déclaration .propTypes de chaque composant, l'application web ProjectForge extrait les formes partagées dans ce module utilitaire. Les composants importent des validateurs spécifiques (par exemple buttonPropType) et les utilisent directement. Il s'agit d'une forme du modèle « vocabulaire de types partagé » — il réduit les dérives où le même concept (par exemple, un bouton) reçoit des PropTypes légèrement différents dans différents composants.
menuItemPropType — forme minimale avec une chaîne title. Utilisé dans les menus déroulants de navigation et les composants de menu latéral.
buttonPropType — forme complète de bouton couvrant les variantes de type Bootstrap (primary à link), id optionnel, gestionnaire de clic, un sous-type CHECKBOX et l'état checked.
colorPropType — chaînes de couleurs énumérées correspondant aux noms de couleurs Bootstrap 4 plus light.
selectProps — forme de sélection avec id requis et tableau options (prenant en charge les tableaux d'objets {value, title} et les tableaux plats de chaînes/nombres), plus une étiquette et une couleur optionnelles.
tableColumnsPropType — tableau de descripteurs de colonnes avec id et title.
contentPropType — la forme fondamentale du système DynamicLayout : chaque bloc de contenu nécessite une chaîne type (par exemple INPUT, TABLE, LABEL) et une chaîne key (identifiant unique dans la mise en page).
Une version antérieure de ce fichier définissait un dynamicTypePropType énumérant l'ensemble des types DynamicLayout pris en charge (CHECKBOX, COL, CUSTOMIZED, FIELDSET, INPUT, LABEL, ROW, SELECT, TABLE, TEXTAREA). Cela a ensuite été remplacé par un simple PropTypes.string.isRequired — un assouplissement délibéré qui permet au moteur de mise en page côté serveur d'introduire de nouveaux types de contenu sans nécessiter de mise à jour des PropTypes côté frontend, suivant un principe de conception ouvert-fermé.
| Commit | Ce qui a changé |
|---|---|
09fadca1c | Ajout de 'light' à l'énumération colorPropType. Cela était nécessaire lorsque la configuration du calendrier a commencé à prendre en charge une variante de couleur claire pour les styles de source d'événement, en s'alignant sur l'expansion de la palette de couleurs de Bootstrap. |
4b945f64d | Revert de 30eea8132 : rétablissement du champ contentPropType.key en .isRequired. Le revert suggère que la clé optionnelle provoquait des échecs silencieux de recherche de mise en page — une clé obligatoire force le code consommateur à toujours fournir des identifiants. |
30eea8132 | Rendu de contentPropType.key optionnel (suppression de .isRequired), probablement pour prendre en charge les blocs de contenu en ligne qui n'ont pas besoin d'identifiants de persistance. Cela a ensuite été annulé. |
3763871f8 | Suppression de l'énumération dynamicTypePropType et remplacement de contentPropType.type par un simple PropTypes.string.isRequired. Cela a ouvert le système DynamicLayout à des types de contenu arbitraires pilotés par le serveur sans modifications du code frontend. |
ae35f5cc0 | Ajout de TABLE à l'énumération dynamicTypePropType lorsque la vue liste a été migrée pour utiliser le système de rendu de tableau DynamicLayout au lieu d'un composant de tableau codé en dur. |
a8102b34e | Ajout de SELECT à l'énumération dynamicTypePropType et introduction de la forme contentPropType. Il s'agit du commit fondateur qui a établi le module PropTypes comme vocabulaire partagé pour le système DynamicLayout. |