Enterprise: Datagrid: заполнитель устанавливается на NaN.000 после щелчка в пустом поле.

Созданный на 6 июл. 2021  ·  3Комментарии  ·  Источник: infor-design/enterprise

Опишите ошибку
Datagrid: Palaceholder устанавливает значение NaN.000 после щелчка в пустом поле.

Воспроизводить

Шаги по воспроизведению поведения:

  1. Перейдите на https://4530-beta0-enterprise.demo.design.infor.com/components/datagrid/example-placeholder.html.
  2. В строке с идентификатором 1 - столбец цены с заполнителем щелкните внутри поля и щелкните снаружи (см. Ошибку)
  3. В столбце Row ID 1 - Action щелкните раскрывающееся поле, чтобы открыть
  4. Выберите пустой
  5. Снова открыть с помощью клавиши Enter
  6. Выберите "На удержании" (см. Ошибку)

Ожидаемое поведение
Заполнитель должен показывать

Версия
4.530 - бета - IDS

Скриншоты
image

Платформа
Все основные браузеры и ОС

Дополнительный контекст
Нет данных

[2] good first issue type

Все 3 Комментарий

@ Jah25 Может быть, следовало указать вам в нужном месте, так как datagrid немного сумасшедший. Но я думаю, проблема в том, что мы используем:

форматировщик: заполнитель и редактор: введите числа здесь:
https://github.com/infor-design/enterprise/blob/main/app/views/components/datagrid/example-placeholder.html#L71

Поскольку это первая проблема, я думаю, что это может быть немного сложно для начала (извините с моей стороны). Но я вижу исправление, которое будет в https://github.com/infor-design/enterprise/blob/main/src/components/datagrid/datagrid.js#L10434

Функция coerveValue пытается вернуть данные в исходный формат fx (в данном случае число). Я думаю, что здесь NaN было бы безопасно исключить. Так что, возможно, NaN просто показывает пустой

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

Что-то в этом роде. Но только намек. Я заметил, что этот пример тоже немного странный, так что, возможно, мы просто исправим это быстро и двинемся дальше.

HTH

@tmcconechy Привет, Тим, я только что это видел. Да, потребовалось немного погоняться, чтобы найти его, но я также обнаружил, что проблема была в принуждении, хотя я наткнулся на нее здесь, где принуждение проверяется на oldValue, чтобы определить тип данных, который он тоже должен принудительно

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

мое исправление должно было быть примерно таким
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 }

Я не думаю, что это идеальная защита, но она охватывает еще несколько крайних случаев. Вы хотите продвинуться вперед с изменением или примером исправления?

@ Jah25 , похоже, он должен работать. Давайте попробуем

Была ли эта страница полезной?
0 / 5 - 0 рейтинги