Enterprise: Datagrid: Placeholder disetel ke NaN.000 setelah mengklik di bidang kosong

Dibuat pada 6 Jul 2021  ·  3Komentar  ·  Sumber: infor-design/enterprise

Jelaskan bugnya
Datagrid: Palaceholder diatur ke NaN.000 setelah mengklik di bidang kosong

Untuk Mereproduksi

Langkah-langkah untuk mereproduksi perilaku:

  1. Buka https://4530-beta0-enterprise.demo.design.infor.com/components/datagrid/example-placeholder.html
  2. Di Baris ID 1 - kolom Harga dengan placeholder, klik di dalam bidang dan klik di luar (Lihat kesalahan)
  3. Di kolom ID Baris 1 - Tindakan, klik bidang tarik-turun untuk membuka
  4. Pilih Kosong
  5. Buka lagi menggunakan tombol Enter
  6. Pilih Ditahan (Lihat kesalahan)

Perilaku yang diharapkan
Placeholder harus menunjukkan

Versi: kapan
4.530 - beta - IDS

Tangkapan layar
image

Platform
Semua browser & OS utama

Konteks tambahan
T/a

[2] good first issue type

Semua 3 komentar

@ Jah25 Mungkin seharusnya mengarahkan Anda ke tempat yang tepat karena datagrid agak gila. Tapi saya pikir masalahnya adalah kita menggunakan:

formatter: placeholder dan editor: masukkan angka di sini:
https://github.com/infor-design/enterprise/blob/main/app/views/components/datagrid/example-placeholder.html#L71

Karena ini adalah masalah pertama, saya pikir ini mungkin sedikit rumit untuk memulai (maaf di pihak saya). Tetapi saya dapat melihat perbaikan yang ada di https://github.com/infor-design/enterprise/blob/main/src/components/datagrid/datagrid.js#L10434

Fungsi coerveValue mencoba mengembalikan data dalam format sumber fx (angka dalam kasus ini). Saya pikir akan aman untuk mengecualikan NaN di sini. Jadi mungkin NaN itu hanya menunjukkan kosong

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

Sesuatu di sepanjang garis itu. Tapi hanya sebuah petunjuk. Saya perhatikan contoh ini agak aneh juga jadi mungkin kita perbaiki ini dengan cepat dan lanjutkan.

HTH

@tmcconechy Hei Tim, saya baru saja melihat ini. Ya, butuh sedikit pengejaran untuk menemukannya, tetapi saya juga menemukan bahwa paksaan adalah masalahnya meskipun saya menemukannya di sini di mana paksaan itu memeriksa nilai lama untuk menentukan tipe data yang harus dipaksakan juga

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

perbaikan saya akan menjadi seperti ini
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 }

Saya tidak berpikir itu perlindungan yang sempurna tetapi mencakup beberapa kasus tepi lagi, apakah Anda ingin melanjutkan dengan perubahan atau contoh perbaikan?

@ Jah25 yang terdengar seperti itu harus bekerja. Mari kita coba

Apakah halaman ini membantu?
0 / 5 - 0 peringkat