Enterprise: Datagrid : l'espace réservé est défini sur NaN.000 après avoir cliqué dans le champ vide

Créé le 6 juil. 2021  ·  3Commentaires  ·  Source: infor-design/enterprise

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 :

  1. Accédez à https://4530-beta0-enterprise.demo.design.infor.com/components/datagrid/example-placeholder.html
  2. Dans l'ID de ligne 1 - Colonne de prix avec espace réservé, cliquez à l'intérieur du champ et cliquez à l'extérieur (voir erreur)
  3. Dans la colonne ID de ligne 1 - Action, cliquez sur le champ déroulant pour ouvrir
  4. Sélectionnez Vide
  5. Ouvrir à nouveau à l'aide de la touche Entrée
  6. Sélectionnez En attente (voir erreur)

Comportement prévisible
L'espace réservé doit s'afficher

Version
4.530 - bêta - IDS

Captures d'écran
image

Plate-forme
Tous les principaux navigateurs et systèmes d'exploitation

Contexte supplémentaire
N / A

[2] good first issue type

Tous les 3 commentaires

@ 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

Cette page vous a été utile?
0 / 5 - 0 notes