Décrivez le bogue
Datagrid : Palaceholder définit sur NaN.000 après avoir cliqué dans le champ vide
Reproduire
Étapes pour reproduire le comportement :
Comportement prévisible
L'espace réservé doit s'afficher
Version
4.530 - bêta - IDS
Captures d'écran
Plate-forme
Tous les principaux navigateurs et systèmes d'exploitation
Contexte supplémentaire
N / A
@ Jah25 Peut-être aurait-il dû vous pointer au bon endroit car la grille de données est un peu folle. Mais je pense que le problème est que nous utilisons:
formateur : espace réservé et éditeur : saisie sur les nombres ici :
https://github.com/infor-design/enterprise/blob/main/app/views/components/datagrid/example-placeholder.html#L71
Comme il s'agit d'un premier problème, je pense que c'est peut-être un peu complexe pour commencer (désolé de ma part). Mais je peux voir un correctif qui serait dans https://github.com/infor-design/enterprise/blob/main/src/components/datagrid/datagrid.js#L10434
La fonction coerveValue essaie de remettre les données au format source fx (nombre dans ce cas). Je pense qu'il serait prudent d'exclure NaN ici. Alors peut-être que NaN est juste vide
// coerced value may be coerced to empty string, null, or 0
if (coercedVal === undefined && Number.isNaN(value)) {
coercedVal = value;
}
Quelque chose dans ce sens. Mais juste un indice. Je remarque que cet exemple est également un peu étrange, alors peut-être que nous réparons cela rapidement et passons à autre chose.
HTH
@tmcconechy Hé Tim, je viens de voir ça. Oui, il a fallu un peu de recherche pour le trouver, mais j'ai également trouvé que la coercition était le problème, même si je l'ai rencontré ici où la coercition vérifie par rapport à l'oldValue pour déterminer le type de données qu'elle devrait également forcer
https://github.com/infor-design/enterprise/blob/main/src/components/datagrid/datagrid.js#L10372
ma solution allait être quelque chose comme ça
let isWord = /[A-Za-z!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]]/
...
else if (typeof oldVal === 'number' && value && isWord.test(value) ) {
newVal = Locale.parseNumber(value); // remove thousands sep , keep a number a number
}
Je ne pense pas que ce soit une protection parfaite, mais cela couvre quelques cas supplémentaires, voulez-vous aller de l'avant avec un changement ou l'exemple de correction ?
@ Jah25 cela semble fonctionner. Essayons