Enterprise: Cuadrícula de datos: el marcador de posición se establece en NaN.000 después de hacer clic en el campo vacío

Creado en 6 jul. 2021  ·  3Comentarios  ·  Fuente: infor-design/enterprise

Describe el error
Datagrid: Palaceholder se establece en NaN.000 después de hacer clic en el campo vacío

Reproducir

Pasos para reproducir el comportamiento:

  1. Vaya a https://4530-beta0-enterprise.demo.design.infor.com/components/datagrid/example-placeholder.html
  2. En Fila ID 1 - Columna de precio con marcador de posición, haga clic dentro del campo y haga clic fuera (Ver error)
  3. En Row ID 1 - Action column, haga clic en el campo desplegable para abrir
  4. Seleccionar en blanco
  5. Abrir de nuevo con la tecla Enter
  6. Seleccione En espera (ver error)

Comportamiento esperado
El marcador de posición debe mostrar

Versión
4.530 - beta - IDS

Capturas de pantalla
image

Plataforma
Todos los principales navegadores y sistemas operativos

Contexto adicional
N / A

[2] good first issue type

Todos 3 comentarios

@ Jah25 Quizás debería

formateador: marcador de posición y editor: ingrese los números aquí:
https://github.com/infor-design/enterprise/blob/main/app/views/components/datagrid/example-placeholder.html#L71

Dado que este es un primer problema, creo que quizás sea un poco complejo para empezar (lo siento de mi parte). Pero puedo ver una solución que estaría en https://github.com/infor-design/enterprise/blob/main/src/components/datagrid/datagrid.js#L10434

La función coerveValue está intentando volver a poner los datos en el formato de origen fx (número en este caso). Creo que sería seguro excluir a NaN aquí. Entonces tal vez NaN solo se muestra en blanco

     // coerced value may be coerced to empty string, null, or 0
      if (coercedVal === undefined && Number.isNaN(value)) {
        coercedVal = value;
      }

Algo en ese sentido. Pero solo una pista. Me doy cuenta de que este ejemplo también es un poco extraño, así que tal vez arreglemos esto rápido y sigamos adelante.

HTH

@tmcconechy Hola Tim, acabo de ver esto. Sí, me tomó un poco de persecución para encontrarlo, pero también encontré que la coerción era el problema, aunque me encontré con esto aquí, donde la coerción se compara con el valor antiguo para determinar el tipo de datos que también debería forzar.

https://github.com/infor-design/enterprise/blob/main/src/components/datagrid/datagrid.js#L10372

mi solución iba a ser algo como esto
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 }

No creo que sea una protección perfecta, pero cubre algunos casos extremos más, ¿quieres seguir adelante con un cambio o la solución de ejemplo?

@ Jah25 parece que debería funcionar. Hagamos un intento

¿Fue útil esta página
0 / 5 - 0 calificaciones