Enterprise: データグリッド:空のフィールドをクリックすると、プレースホルダーがNaN.000に設定されます

作成日 2021年07月06日  ·  3コメント  ·  ソース: infor-design/enterprise

バグを説明する
データグリッド:空のフィールドをクリックすると、PalaceholderがNaN.000に設定されます

再現するには

動作を再現する手順:

  1. https://4530-beta0-enterprise.demo.design.infor.com/components/datagrid/example-placeholder.htmlにアクセス
  2. 行ID1-プレースホルダーのある価格列で、フィールドの内側をクリックし、外側をクリックします(エラーを参照)
  3. [行ID1-アクション]列で、ドロップダウンフィールドをクリックして開きます
  4. 空白を選択
  5. Enterキーを使用して再度開きます
  6. 保留を選択します(エラーを参照)

予想される行動
プレースホルダーに表示する必要があります

バージョン
4.530-ベータ-IDS

スクリーンショット
image

プラットホーム
すべての主要なブラウザとOS

追加のコンテキスト
該当なし

[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 評価