API ColumnDef
ColumnDef
Constructeur
Crée une colonne sans format et sans surcharge d'éditeur.
CellFormat
Méthodes
FormattedCell
CellAlign
CellValidator
Callback de validation par colonne. Utilisez CellValidator::new pour en créer un :
Voir Validation pour le guide complet.
ValidationRule
Règles déclaratives attachées à ColumnDef::rules, vérifiées dans
l'ordre, la première échec l'emporte, avant le validateur historique.
Sucre syntaxique sur ColumnDef
ColumnDef::validate_value
Exécute rules dans l'ordre, puis validator si toutes les règles ont
passé. Retourne le message du premier échec, le cas échéant.
Voir Validation pour InvalidEditMode et le
retour live à chaque frappe.
RowPredicate<T>
Wrapper de callback générique par ligne, qui porte EditablePredicate,
CellDecorator, et CellButtonsVisible ci-dessous — chacun est un alias de
type sur RowPredicate<T> pour un T différent, pas une implémentation
séparée. EditablePredicate et CellButtonsVisible sont tous deux
RowPredicate<bool>, donc c'est littéralement le même type (et affichent le
même texte Debug) ; CellDecorator est RowPredicate<Option<CellDecoration>>.
EditablePredicate
Une surcharge dynamique de l'éditabilité par cellule, attachée à
ColumnDef.editable_predicate. Reçoit l'index de ligne et le
GridModel complet, ce qui lui permet d'implémenter
une logique inter-colonnes (ex. verrouiller une cellule quand la valeur
d'une autre colonne est "locked") — pas seulement la valeur de sa propre
colonne.
Voir RowPredicate<T> ci-dessus pour new/evaluate.
Sucre syntaxique sur ColumnDef
ColumnDef::is_cell_editable
Résout si row est éditable dans cette colonne : false si le flag
statique editable est false (le prédicat n'est même pas appelé) ;
sinon le résultat du prédicat, ou true si aucun prédicat n'est défini.
Voir Verrouillage par cellule
pour le guide complet, incluant le curseur not-allowed et le style
thémé des cellules verrouillées.
CellDecoration
Une annotation visuelle persistante et au repos pour une seule cellule — une couleur de bordure et/ou une teinte de fond qui reste visible tant que la cellule est à l'écran, pas seulement pendant son édition. Purement cosmétique : contrairement à la validation, elle ne bloque jamais la validation d'une valeur, elle change seulement le rendu de la cellule.
border_color/background_tint sont en RGBA ([r, g, b, a]), fournies
directement par votre closure — pas lues depuis le
thème. Seule l'épaisseur de la bordure est
thémée (--rs-grid-decoration-border-width, 1.5px par défaut), car elle
est uniforme pour toutes les cellules décorées, quelle que soit la couleur
choisie.
message est réservé à une future infobulle native au survol — elle n'est
rendue nulle part pour l'instant.
CellDecoration est #[non_exhaustive] : construisez-en une à partir de
CellDecoration::default() enchaînée avec les méthodes ci-dessous plutôt
qu'avec une syntaxe littérale de struct :
CellDecorator
Un callback dynamique de décoration par cellule, attaché à
ColumnDef.decorator. Même famille RowPredicate<T>
qu'EditablePredicate (T différent) : reçoit l'index de ligne et le
GridModel complet, ce qui permet d'implémenter une
logique inter-colonnes — par ex. signaler une cellule quand une colonne
jumelle est incohérente.
Voir RowPredicate<T> ci-dessus pour new/evaluate.
Sucre syntaxique sur ColumnDef
ColumnDef::cell_decoration
Résout la décoration de cette cellule, s'il y en a une. Contrairement à
is_cell_editable, il n'y a pas de garde statique — une décoration est
purement cosmétique et n'est pas affectée par
ColumnDef::editable/GridModel::editable.
Voir Décoration par cellule pour le guide complet.
CellButtonsVisible
Une surcharge dynamique de visibilité par ligne pour
ColumnDef.cell_buttons, attachée à ColumnDef.cell_buttons_visible. Même
famille RowPredicate<T> qu'EditablePredicate/
CellDecorator — en fait exactement le même type concret
qu'EditablePredicate (RowPredicate<bool>) : reçoit l'index de ligne et
le GridModel complet, ce qui permet d'implémenter
une logique inter-colonnes — par ex. masquer un bouton quand une colonne
URL jumelle est vide.
Voir RowPredicate<T> ci-dessus pour new/evaluate.
Sucre syntaxique sur ColumnDef
ColumnDef::are_cell_buttons_visible
Résout si cell_buttons doit être dessiné pour row. Comme
cell_decoration, il n'y a pas de garde statique — true tant qu'aucun
prédicat n'est défini (comportement inchangé).
Voir Boutons de cellule pour le guide complet.

