Enterprise: DataGrid: o espaço reservado é definido como NaN.000 após clicar no campo vazio

Criado em 6 jul. 2021  ·  3Comentários  ·  Fonte: infor-design/enterprise

Descreva o bug
DataGrid: Palaceholder é definido como NaN.000 após clicar no campo vazio

Reproduzir

Passos para reproduzir o comportamento:

  1. Acesse https://4530-beta0-enterprise.demo.design.infor.com/components/datagrid/example-placeholder.html
  2. Na linha ID 1 - coluna de preço com espaço reservado, clique dentro do campo e clique fora (veja o erro)
  3. Na linha ID 1 - coluna Ação, clique no campo suspenso para abrir
  4. Selecione em branco
  5. Abra novamente usando a tecla Enter
  6. Selecione Em espera (veja o erro)

Comportamento esperado
O marcador de posição deve mostrar

Versão
4.530 - beta - IDS

Capturas de tela
image

Plataforma
Todos os principais navegadores e sistemas operacionais

Contexto adicional
N / D

[2] good first issue type

Todos 3 comentários

@ Jah25 Talvez devesse ter apontado para o lugar certo, pois datagrid é meio maluco. Mas acho que o problema é que estamos usando:

formatador: marcador de posição e editor: insira os números aqui:
https://github.com/infor-design/enterprise/blob/main/app/views/components/datagrid/example-placeholder.html#L71

Como este é o primeiro problema, acho que talvez seja um pouco complexo para começar (desculpe da minha parte). Mas posso ver uma correção que seria em https://github.com/infor-design/enterprise/blob/main/src/components/datagrid/datagrid.js#L10434

A função coerveValue está tentando colocar os dados de volta no formato de origem fx (número neste caso). Acho que seria seguro excluir NaN aqui. Então, talvez NaN apenas mostre em branco

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

Algo nesse sentido. Mas apenas uma dica. Estou percebendo que este exemplo também é um pouco estranho, então talvez possamos consertar isso rápido e seguir em frente.

HTH

@tmcconechy Ei, Tim, acabei de ver isso. Sim, demorei um pouco para encontrá-lo, mas também descobri que a coerção era o problema, embora eu o encontrasse aqui, onde a coerção está verificando o valor antigo para determinar o tipo de dados que ela deve forçar também

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

minha correção seria algo assim
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 }

Não acho que seja uma proteção perfeita, mas cobre mais alguns casos extremos. Quer avançar com uma alteração ou correção de exemplo?

@ Jah25 parece que deve funcionar. Vamos tentar

Esta página foi útil?
0 / 5 - 0 avaliações