forms icon indicating copy to clipboard operation
forms copied to clipboard

toggleForm validates rules of hidden items

Open TheLegs opened this issue 2 years ago • 0 comments

Version: 3.1.6

Bug Description

When there are toggle rules nested into elements which are in turn subjects of possible toggling, a specific situation may occur where, if a value was set while the item was displayed, but then the item is hidden, toggleForm() will continue to evaluate those rules against the hidden items. The consequence is that, for example, certain items keep being displayed when they should not be, or the user might not be able to submit a form due to a validation issue on an item that is hidden.

Steps To Reproduce

Set for example the following radio buttons:

  • item1 with a rule to toggle item2 on a certain value
  • item2 with a rule to toggle item3
  • item4 with a rule to toggle item3, and
  • item5 that has no toggle rules set

Then select item1 in order to toggle item2, then item2 in order to toggle item3. Lastly, select item5.

Expected Behavior

When selecting item5, you should no longer see item3.

Possible Solution

toggleForm() should only call toggleControl() on controls that currently displayed. Plus, I think the controls should be also reset when toggled out, to prevent data from being submitted unbeknownst to the user. https://github.com/nette/forms/blob/ffdffaa75c368871dfefb93aff8717380cf504c8/src/assets/netteForms.js#L611-L616

TheLegs avatar Apr 27 '22 18:04 TheLegs