|
| 1 | +--- |
| 2 | +'@object-ui/components': patch |
| 3 | +--- |
| 4 | + |
| 5 | +`FilterBuilder` shows the falsy values a row actually holds — a boolean `false` and a number `0` are values, not empty boxes. |
| 6 | + |
| 7 | +The value controls asked `!condition.value` and `String(condition.value || "")`, |
| 8 | +which folds `false` and `0` in with the rows nobody has filled in yet. Both rows |
| 9 | +saved, persisted and filtered by their value the whole time; only the control |
| 10 | +said otherwise: |
| 11 | + |
| 12 | +- a boolean column filtered `equals false` snapped back to the **Select value** |
| 13 | + placeholder the moment the user clicked **False**, while the row carried |
| 14 | + `value: false`; |
| 15 | +- a number column filtered `equals 0` showed an empty box — and typing `0` into |
| 16 | + one looked like the keystroke had never landed, because the row took the value |
| 17 | + and the very next render blanked the input; |
| 18 | +- a single-select whose option id is `0` showed the placeholder too, even though |
| 19 | + the same control's multi-select branch already drew that option as checked. |
| 20 | + |
| 21 | +"No value" is now one judgement (`undefined` / `null` / `''`), read by every |
| 22 | +value control and by the two helpers that already spelled it out correctly, so |
| 23 | +"not picked yet" and "picked False" stay two distinguishable states rather than |
| 24 | +trading places. |
| 25 | + |
| 26 | +The three keyed numeric paths — the token input's commit, a range bound, and the |
| 27 | +single value input — no longer read with `parseFloat(raw) || 0`, which takes half |
| 28 | +of `"42abc"` and turns `"acme"` into `0`: a filter the user never wrote. All |
| 29 | +three now use the same strict reading a field switch uses, so this component |
| 30 | +holds one answer to "is this string a number" instead of a strict one and a |
| 31 | +lenient one. An unreadable entry becomes an unfilled value, except in the token |
| 32 | +input, which declines the commit and leaves the text in the draft box to be |
| 33 | +fixed. No behaviour a user can reach today changes: those inputs are |
| 34 | +`<input type="number">`, which never hands a non-numeric string to the component |
| 35 | +in the first place — this closes the drift, before a text box, a formula or a |
| 36 | +paste path opens it. |
0 commit comments