Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Request removeIssue API for v.rawCheck to manage dynamic validation errors #1061

Open
molvqingtai opened this issue Feb 18, 2025 · 3 comments
Assignees
Labels
question Further information is requested

Comments

@molvqingtai
Copy link

molvqingtai commented Feb 18, 2025

Description:
When using v.rawCheck for complex validation scenarios that require adding errors to multiple fields, there's currently no way to remove previously added errors when conditions change. This leads to persistent error states even after validation criteria are met.

Use Case Example:

v.pipe(
  v.object({/* ... */}),
  v.rawCheck(({ dataset, addIssue }) => {
    if (invalidCondition) {
      // Add errors to multiple fields
      addIssue({ path: [{ key: 'field1' }], message: 'Error' })
      addIssue({ path: [{ key: 'field2' }], message: 'Error' })
    } else {
      // No way to remove previous errors
      // Need removeIssue API here
    }
  })
)

Current Behavior:

  1. Errors added through addIssue persist even when validation conditions are resolved
  2. No mechanism to clear stale errors dynamically

Expected Behavior:

  1. Provide removeIssue method in v.rawCheck context:
v.rawCheck(({ removeIssue }) => {
  removeIssue({ path: [{ key: 'field1' }] })
})
  1. Allow granular error management when validation status changes

This feature would significantly improve complex form validation scenarios where error states need dynamic management based on interdependent fields.

http://valibot.dev/playground/?code=JYWwDg9gTgLgBAKjgQwM5wG5wGZQiOAcg2QBtgAjCGQgbgCh6BjCAO1XgHkKArAUyYwAykwAWfEMjgBeTADoIvATAAUAb3pw4E5MFIAueWGBg+KjHI5RgrAOYqAlABp5OvY+ea4Aaz4BPAEZDCysbe08tXz8AJmDLGGs7RycvKIBmONCkzwBfBwZmNg44EXFJGSMTMy9ufkFSnRStCyhkAHcAYXEmbxV1FAATAYBJVFQAVz4XAeQYND54PJkAPjgNLS1gbDgVGbnUBbkYP1MBhzWvDbgWdngbMHH4WT35mDkSUkmGK83tlQBCe6PORRAJwAA+4LggNYDzeUWiEKhMLhIP8aXO6x+WmQQ1GEzMWOxWhAfDGyFsfEMhAAgvBSHw0PA2Hw4BBtqCXAiXNAfOi4CBxsUKKywHgMMABnwBnJCE1iVowLNRIYANqXBUXTU-IEweXayL+amguUa7XQYC2GzUj6TU0GjbHUzU8asbysCBtVj2h2YMiTQy6tGBfWanKh7EAXQjGzy32JuJGY0m6jNP1J5Mp1LpcAZTLZrFZ7L5IZL0R5UBLaQFQvgIrgYogEqlMp9CqVMBVcHVDqJBt1MYVUWN-mibYNFqtrBt-r44+1TqpRFd7s93sHxNtS6D3LT2PDe420cPccPifxKb72IzqApS9p9MZxRZbI5-gCXNHFarNeFovFkrSrKG6KsqaqHlcV6agOEE-MORAIvOmqTtaRBbkhCqLi6boel6GGbrOgawsCu4Oge2rHgqp77topAHFqxIAPSMXAUASE2fAXnwaY5BqvFaHkKT5IwNzFGxEykE88i3tgfAAArIFABwqA0kguFibgGEQyAUEwAACfAAB7IOADJyCwIA+qC1IBNEaQACwAKwAGwAOxWaO1IeX4GREKap6FOwEBmaQED2OJ4yScJQAhttp://valibot.dev/playground/?code=JYWwDg9gTgLgBAKjgQwM5wG5wGZQiOAcg2QBtgAjCGQgbgCh6BjCAO1XgHkKArAUyYwAykwAWfEMjgBeTADoIvATAAUAb3pw4E5MFIAueWGBg+KjHI5RgrAOYqAlABp5OvY+ea4Aaz4BPAEZDCysbe08tXz8AJmDLGGs7RycvKIBmONCkzwBfBwZmNg44EXFJGSMTMy9ufkFSnRStCyhkAHcAYXEmbxV1FAATAYBJVFQAVz4XAeQYND54PJkAPjgNLS1gbDgVGbnUBbkYP1MBhzWvDbgWdngbMHH4WT35mDkSUkmGK83tlQBCe6PORRAJwAA+4LggNYDzeUWiEKhMLhIP8aXO6x+WmQQ1GEzMWOxWhAfDGyFsfEMhAAgvBSHw0PA2Hw4BBtqCXAiXNAfOi4CBxsUKKywHgMMABnwBnJCE1iVowLNRIYANqXBUXTU-IEweXayL+amguUa7XQYC2GzUj6TU0GjbHUzU8asbysCBtVj2h2YMiTQy6tGBfWanKh7EAXQjGzy32JuJGY0m6jNP1J5Mp1LpcAZTLZrFZ7L5IZL0R5UBLaQFQvgIrgYogEqlMp9CqVMBVcHVDqJBt1MYVUWN-mibYNFqtrBt-r44+1TqpRFd7s93sHxNtS6D3LT2PDe420cPccPifxKb72IzqApS9p9MZxRZbI5-gCXNHFarNeFovFkrSrKG6KsqaqHlcV6agOEE-MORAIvOmqTtaRBbkhCqLi6boel6GGbrOgawsCu4Oge2rHgqp77topAHFqxIAPSMXAUASE2fAXnwaY5BqvFaHkKT5IwNzFGxEykE88i3tgfAAArIFABwqA0kguFibgGEQyAUEwAACfAAB7IOADJyCwIA+qC1IBNEaQACwAKwAGwAOxWaO1IeX4GREKap6FOwEBmaQED2OJ4yScJQA

@molvqingtai molvqingtai changed the title Request removeIssue API for v.rawCheck to manage dynamic validation errors Request removeIssue API for v.rawCheck to manage dynamic validation errors Feb 18, 2025
@fabian-hiller
Copy link
Owner

Do you only want to remove issues that where previously added by the same rawCheck? If so I recommend collecting every issues in a local variable and submit them at the end all together. This allows you to add and remove issues within rawCheck.

@fabian-hiller fabian-hiller self-assigned this Feb 19, 2025
@fabian-hiller fabian-hiller added the question Further information is requested label Feb 19, 2025
@molvqingtai
Copy link
Author

molvqingtai commented Feb 19, 2025

Scenario:
I have a form with 3 independent input fields (phones, contacts, groups) that need coordinated validation:

  1. When all 3 fields are empty → Show error messages under all 3 fields
  2. When any 1 field has value → Remove error messages from all 3 fields

Whenever any field changes, the validation status must be updated immediately instead of waiting until submission to update it.

@fabian-hiller
Copy link
Owner

I am not sure I understand the problem. Why don't you add the issues only when necessary and re-run the validation whenever the input changes?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants