From 94bfec81666633d190cb19f729209e048b543e8a Mon Sep 17 00:00:00 2001 From: Rajas Paranjpe <52586855+ChocolateLoverRaj@users.noreply.github.com> Date: Wed, 31 Aug 2022 13:32:52 -0700 Subject: [PATCH] Fix(@rjsf/antd): Check for errors.length (#2576) * Fix(@rjsf/antd): Check for errors.length * Update changelog * Move errors tests to `Array.test.js` and add validator prop * Move change to latest version in changelog * Fix formatting * Move errors tests out of describe Co-authored-by: Heath C <51679588+heath-freenome@users.noreply.github.com> --- CHANGELOG.md | 1 + .../antd/src/templates/FieldTemplate/index.js | 6 +- packages/antd/test/Array.test.js | 55 ++ .../test/__snapshots__/Array.test.js.snap | 468 ++++++++++++++++++ 4 files changed, 528 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 86c3d3974d..3375916d5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ should change the heading of the (upcoming) version to include a major version b - Added missing `children` property on the `FormProps` type for `Form` ## @rjsf/antd +- Do not show errors if `extraErrors` has `[]` (https://github.com/rjsf-team/react-jsonschema-form/pull/2576). - Added support for `schema.examples` in the material ui theme fixing (https://github.com/rjsf-team/react-jsonschema-form/issues/2368, https://github.com/rjsf-team/react-jsonschema-form/issues/2557) ## @rjsf/fluent-ui diff --git a/packages/antd/src/templates/FieldTemplate/index.js b/packages/antd/src/templates/FieldTemplate/index.js index 7674ada62e..83ce3504dd 100644 --- a/packages/antd/src/templates/FieldTemplate/index.js +++ b/packages/antd/src/templates/FieldTemplate/index.js @@ -66,13 +66,15 @@ const FieldTemplate = ({ colon={colon} extra={description} hasFeedback={schema.type !== "array" && schema.type !== "object"} - help={(!!rawHelp && help) || (!!rawErrors && renderFieldErrors())} + help={ + (!!rawHelp && help) || (!!rawErrors?.length && renderFieldErrors()) + } htmlFor={id} label={displayLabel && label} labelCol={labelCol} required={required} style={wrapperStyle} - validateStatus={rawErrors ? "error" : undefined} + validateStatus={rawErrors?.length ? "error" : undefined} wrapperCol={wrapperCol} > {children} diff --git a/packages/antd/test/Array.test.js b/packages/antd/test/Array.test.js index d55abdbe5f..6cc42ce7b3 100644 --- a/packages/antd/test/Array.test.js +++ b/packages/antd/test/Array.test.js @@ -75,4 +75,59 @@ describe("array fields", () => { .toJSON(); expect(tree).toMatchSnapshot(); }); + + test("has errors", () => { + const schema = { + type: "object", + properties: { + name: { + type: "string", + }, + }, + }; + const tree = renderer + .create( +
+ ) + .toJSON(); + expect(tree).toMatchSnapshot(); + }); + test("no errors", () => { + const schema = { + type: "object", + properties: { + name: { + type: "string", + }, + }, + }; + const tree = renderer + .create() + .toJSON(); + expect(tree).toMatchSnapshot(); + }); + test("empty errors array", () => { + const schema = { + type: "object", + properties: { + name: { + type: "string", + }, + }, + }; + const tree = renderer + .create( + + ) + .toJSON(); + expect(tree).toMatchSnapshot(); + }); }); diff --git a/packages/antd/test/__snapshots__/Array.test.js.snap b/packages/antd/test/__snapshots__/Array.test.js.snap index a8a895016f..ea173b9df5 100644 --- a/packages/antd/test/__snapshots__/Array.test.js.snap +++ b/packages/antd/test/__snapshots__/Array.test.js.snap @@ -728,6 +728,128 @@ exports[`array fields checkboxes 1`] = `
`; +exports[`array fields empty errors array 1`] = ` +
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+ + + + +
+
+
+ + + +
+
+
+
+
+
+
+
+
+ +
+`; + exports[`array fields fixed array 1`] = `
`; + +exports[`array fields has errors 1`] = ` +
+
+
+
+ Errors +
+
+
+
+
+
  • +
    +
    + + + +
    +
    + .name Bad input +
    +
    +
  • +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + + + + + + +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +`; + +exports[`array fields no errors 1`] = ` +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +`;