Enterprise: 数据网格:在空白字段中单击后,占位符设置为 NaN.000

创建于 2021-07-06  ·  3评论  ·  资料来源: infor-design/enterprise

描述错误
Datagrid:Palaceholder 在空白字段中单击后设置为 NaN.000

再现

重现行为的步骤:

  1. 转到https://4530-beta0-enterprise.demo.design.infor.com/components/datagrid/example-placeholder.html
  2. 在行 ID 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嘿蒂姆我刚看到这个。 是的,我花了一点时间才找到它,但我也发现强制是问题所在,尽管我在这里遇到了强制检查旧值以确定它也应该强制的数据类型

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 等级